Você está na página 1de 13

Conceptos y Caractersticas del Paralelismo a Nivel de Instruccin

Stuart Prez Universidad de Costa Rica, Escuela de Computacin e Informtica San Jos, Costa Rica, 2010 jstuartp@gmail.com y Pablo Blanco Universidad de Costa Rica, Escuela de Computacin e Informtica San Jos, Costa Rica, 2010 pablitobs@gmail.com

Abstract:. This paper is presented as an exhaustive investigation about the different concepts that brings the ILP (instruction level parallelism) to light. Some historical data about its creation is presented, along with knowledge about parallelism and compilers at a basic level. Different ILPs construction techniques are presented too, and so the vary of paradigms implemented in time; also, the most newly tendencies on this field of study. Examples and presentation of different processor and compilers are given as tools to understand deeper the vast concepts presented along the paper.

Resumen: En este documento se investiga arduamente acerca de los conceptos que dieron origen al ILP (instruction level paralelism), se presentan los datos histricos de su creacin, as como un trasfondo de conocimientos sobre paralelismo y compiladores, necesarios para la comprensin del resto de la investigacin. Se estudia el caso de diferentes tcnicas de construccin de ILPs y los varios paradigmas que se han implementado a travs de los aos como tambin las ms novedosas tendencias en este campo. Con ejemplos de funcionamiento de diferentes procesadores y compiladores, se ilustran los conceptos expuestos y se concluyen nuevas anotaciones que enriquecern los conocimientos hasta ahora adquiridos. Keywords: ILP, RISC, paralelismo, compiladores, multiprocesamiento, EPIC.

Introduccin

ILP (instruction level paralelism) o su traduccin paralelismo a nivel de instruccin, es una tcnica desarrollada en el principio de los aos 60s que permiti un aumento en la velocidad de procesamiento, as como un mejor aprovechamiento de los recursos del procesador. Desde entonces hasta ahora, el ILP ha sido sujeto de una inmensidad de estudios guiados a perfeccionar su funcionamiento y crear nuevos conceptos o paradigmas en el desarrollo del mismo. El nacimiento del ILP dio paso a los conceptos de multitareas, que mas tarde, junto con la evolucin de los procesadores hacia los mltiples ncleos de memoria compartida, crearon las bases de lo que conocemos como la programacin concurrente; dicho tema nos dara suficiente material para escribir varios libros, sin embargo, en este documento son tratados sus principales conceptos y se da un leve vistazo a sus caractersticas. Se espera, claro est, que el lector est familiarizado con las bases de programacin y conocimientos de ciencias de la computacin, aunque no necesariamente a un nivel avanzado Muchos conceptos y tcnicas se han creado y perfeccionado con el tiempo hasta nuestra fecha, la multitarea resulta ser en nuestros das una materia vista y aprobada, pero con muchas ramificaciones a futuro que no dejan de inquietar el cambiante mundo de la computacin. El texto se organiza buscando tener una curva de aprendizaje logartmica, presentando en los primeros apartados los conceptos bsicos y las generalidades que provocaron la creacin del ILP, as como caractersticas breves y superficiales de las tcnicas utilizadas y los paradigmas implementados. Ms adelante el lector se encontrar con estudios especficos de procesadores y compiladores quienes hacen uso de las herramientas de ILP para mejorar su funcionamiento y desempeo. Se presenta tambin el concepto de EPIC (Explicit Pararel Instruction Computing), as como el de procesamiento vectorial, estos como novedosas tcnicas y aplicaciones del paralelismo en diferentes niveles de las ciencias de la computacin. Finalmente se dan una serie de conclusiones o conceptualizaciones de los diferentes temas tratados alrededor del artculo, funcionando como una resea o un anlisis valioso de la informacin contenida dentro de esta investigacin.

Conceptosbsicos:Paralelismo

El mundo de la computacin se ha sumido en una vigorosa competencia, creando procesadores cada vez ms pequeos y ms rpidos, cada ao, ms y ms transistores son puestos en el mismo espacio, pero sus velocidades de reloj no se pueden ampliar sin

sobrecalentamiento. Por este motivo, los fabricantes han puesto sus miradas en las arquitecturas multinucleo, con varios ncleos comunicndose directamente con caches compartidos(Shavit 2008). De este modo nace el concepto de programacin en paralelo, o paralelismo, el cual se define como una forma de computacin en la cual varios clculos pueden realizarse de manera simultnea(Gottlieb 1990). Una compleja maraa de nuevos conceptos y paradigmas de programacin aparecen junto con la tendencia al paralelismo, explicar cada uno de estos tomara libros completos y se salen de los alcances de este documento, no obstante, se analizaran conceptos bsicos y muy relevantes para comprender el tema Dividir los problemas puede resultar una solucin simple y muy practica, sin embargo en ocasiones resulta necesario hacer uso de espacios compartidos para llevar a cabo las operaciones. Es aqu donde las tcnicas de programacin concurrente toman sentido. Pensemos en el caso de dos individuos que se topan en un pasillo, ambos caminan por el lado derecho del mismo (derecho para uno, izquierdo para el otro), al prever la futura colisin, el individuo A decide tomar el lado izquierdo, justo en el momento que su compaero decide tomar el derecho. Considerando el pasillo como el espacio compartido ambos individuos (procesos) estn tratando de hacer uso del mismo sin comunicarse previamente, lo que causa una colisin o conflicto. As pues, existen varios conceptos de comunicacin entre procesos para asegurar la disminucin de los conflictos en las situaciones que requieran espacios compartidos Exclusin Mutua: Sucede cuando ambos procesos que requieren del espacio compartidos son excluidos de este, con lo cual se asegura que no hay dos procesos haciendo uso del espacio al mismo tiempo. Esta propiedad cumple con la restriccin de no colisionar dos procesos en un espacio, no obstante no brinda certeza de que alguno de los dos procesos utilice el espacio. Libertad de deadlock Un deadlock o bloqueo ocurre cuando un proceso es bloqueado para utilizar un rea compartida mientras que otro proceso se condiciona de solo utilizar el rea hasta que el proceso anterior la desocupe, el resultado es claro, ninguno de los dos procesos utiliza el rea y ninguno permite al otro utilizarla. La libertad de bloqueo asegura que, si dos procesos cualesquiera desean hacer uso de un espacio compartido, al menos uno de ellos tendr xito (Shavit 2008)

Libertar de Inanicin: La propiedad vista anteriormente nos demuestra que al menos un proceso podr estar en uso del espacio, sin embargo este proceso podra ser siempre el mismo, y tener as, otro relegado a un bloqueo de por vida. Si un proceso se bloquea infinitamente se dice que padece de inanicin. La propiedad de libertad de inanicin est pensada para asegurar que ningn proceso se quede sin hacer uso de los recursos que necesita para continuar con vida. Espera: La propiedad de espera se define para uno de los procesos, el cual es asignado a esperar hasta que el otro proceso desocupe el espacio. Esta propiedad entra en conflicto cuando, por alguna buena razn o no, el proceso inicial se atrasa, provocando as que el proceso que debe esperar, no pueda hacer uso del espacio aunque no exista ninguna buena razn para esto.

ConceptosBsicosCompiladores

Un compilador es un software que puede leer un programa escrito en un lenguaje y traducirlo, produciendo as, otro programa escrito en un lenguaje diferente (Aho 2008). Para realizar esta traduccin resultan necesarias varias etapas de procesamiento, a saber, anlisis lxico, sintctico, semntico, generacin de cdigo intermedio, generacin de cdigo objetivo. Muy brevemente se explican estos conceptos: Anlisis Lxico: Se lee la entrada del programa fuente y se descompone en secuencias con significado comn conocidas como lexemas, para cada lexema se produce un token que se enva a la fase de anlisis sintctico (Aho 2008). Anlisis Sintctico: Este analizador utiliza los tokens generados en la etapa previa y construye un rbol de anlisis sintctico (Aho 2008). Es el encargado de verificar la correcta sintaxis de la entrada, la forma previamente definida por una gramtica. Anlisis Semntico: Toma el rbol de anlisis sintctico y la informacin contenida en la tabla de smbolos para hacer un chequeo de tipo y de consistencia semntica con las definiciones de programa (Aho 2008). Generacin de Cdigo Intermedio: Un sistema de ayuda del cual se sostiene el compilador es generando un cdigo intermedio previo a la generacin del cdigo objeto. Debe tener dos importantes caractersticas, ser fciles de producir y deben ser fciles de traducir en cdigo objetivo (Aho 2008). Generacin de Cdigo Objetivo: Toma como entrada el cdigo generado en la etapa anterior y lo mapea directamente para escribir el cdigo objetivo (Aho 2008).

4 4.1

ILPPerspectivaHistricaysusCaractersticas PerspectivaHistrica

En 1947 el mundo se maravilla con la invencin del transistor y del circuito integrado a principios de la dcada de los 60; desde entonces la cantidad de transistores que caben en un chip ha tenido un crecimiento exponencial. En 1965 e cientfico Gordon E. Moore en la conocida ley de Moore, afirm que "el nmero de transistores de un circuito integrado se dobla, aproximadamente, cada 18 meses", dicha ley sigue siendo vlida hasta la actualidad. As, los transistores integrados en un nico chip pasaron de 2 a principios de los aos 60 a ms de 20 millones de la actualidad. Este crecimiento permiti que ya en los aos 60s, se produjeran procesadores donde caban ms puertas lgicas que las estrictamente necesarias para construir un procesador de propsito general, es entonces cuando se aprovecha esta disponibilidad de espacio para la implementacin de formas limitadas de ILP (lvarez 1998). En el ao de 1963, la Control Data Corporation empez a trabajar en el CDC6600, cuya caracterstica principal eran diez unidades funcionales. Cada una de las cuales poda comenzar a ejecutar una instruccin sin que otra instruccin anterior hubiera acabado en otra unidad funcional, siempre y cuando ambas instrucciones fueran independientes. La decisin de qu operacin se lanzaba en un ciclo determinado era tomada por el hardware (lvarez 1998).

Durante 1966 IBM lanzaba el IBM 360/91. La cual resulto una mquina, basada parcialmente en el procesador experimental de IBM Stretch, dicho computador ofreca ms ILP que el CDC6600, aunque su rendimiento no era comparable pues tena menos unidades funcionales. Nacieron con estos computadores nuevas ideas para mantener las unidades funcionales ocupadas (el algoritmo de Tomasulo (Tomasulo 1967)) las cuales siguen siendo bsicas en los actuales sistemas superes calares. Estas ideas dieron como resultado la aparicin de la filosofa RISC (Reduced Instruction Set Code) que resulta fundamental para la explotacin del ILP. Estos procesadores RISC disponen de pocas instrucciones, sencillas y generales, que facilitan una rpida interpretacin y ejecucin. Provocan

adems, una planificacin hardware es ms sencilla debido a que cada instruccin ocupa menos recursos. El lenguaje RISC ya estaba presente en el IBM Stretch y en los primeros computadores de Seymour Cray (diseador del CDC6600 y CDC7600 y posteriormente fundador de Cray Research, la cual introdujo el CRAY-I en 1976)(lvarez 1998). Las ideas y detalles del RISC acabaron de definirse en proyectos de dos universidades, el Berkeley RISC project y el Stanford MIPS project. Todas las tendencias de fabricacin de los procesadores de ltima generacin demarcan el gran avance que significo el ILP y su uso a largo plazo en el futuro.

4.2

CaractersticasyConceptosBsicos

Paralelismo no siempre significa mltiple procesamiento; una parte importante del procesamiento en paralelo se presenta a nivel de instrucciones de procesador. La creacin y aplicacin del pipeline revoluciono el mundo de los procesadores, permitiendo la ejecucin de varias instrucciones por ciclo reloj, dentro de un procesador de solo un ncleo. Pipeline se puede definir como una grupo de elementos procesadores de datos conectados en serie (Shavit 2008), en otras palabras, una lnea de procesamientos en serie, la cual permite, con el debido uso de tcnicas de sincronizacin, que varias instrucciones se ejecuten en paralelo o en un mismo ciclo reloj. Tanto el sistema operativo, como los programas definidos por el usuario, generan instrucciones que el procesador se encarga de interpretar, las mismas, pasan a alinearse en el pipeline para su interpretacin y posterior ejecucin. El constante nacimiento de estas operaciones activa la lnea de procesamiento; en el pipeline una instruccin de maquina est siendo leda, mientras otra se encuentra en proceso de interpretacin, a su vez que una tercera puede estar siendo ejecutada, todo en el mismo ciclo reloj y sin interferir en la calidad del procesamiento. Existen dos soportes o implementaciones para facilitar el uso de pipelines dentro de un procesador, estas son (Aho 2008): Por Software: VLIW (Very-Long-Instruction-Word, Palabra de Instruccin Larga) Poseen palabras de instrucciones ms grandes de lo normal. Esto permite que sean codificadas para ser emitidas en un solo ciclo de reloj. El compilador decide qu

operaciones se van a emitir en paralelo y codifica explcitamente la informacin en cdigo de mquina. Por Hardware: Mquinas Superescalares. Poseen un conjunto de instrucciones regular, con una semntica de ejecucin secuencial ordinaria. Detectan de manera automtica las dependencias entre las instrucciones y las emiten a medida que sus operandos se encuentran disponibles. Existen procesadores con ambas capacidades de administracin. De las anteriores, la ms comnmente utilizada es la de Hardware.As pues, se pone en prctica el paralelismo a nivel de instruccin como un mtodo comn y muy eficiente para el procesamiento de instrucciones dentro de los procesadores.

ProcesamientoVectorial

Una arquitectura vectorial dispone de instrucciones en alto nivel que trabajan sobre vectores. Una tpica operacin vectorial sera sumar dos vectores de 64 elementos en coma flotante, dejando el resultado en un tercer vector; todo ello se realizara en una nica instruccin. Las ventajas de un procesador vectorial se centran en su rapidez, debida a: El decremento de instrucciones a ejecutar: una nica instruccin substituye a varias, de manera que nos ahorra el tiempo de fetch y decodificacin de las instrucciones substituidas. Al ejecutar varias iteraciones escalares mediante una iteracin vectorial reducimos el nmero de instrucciones ejecutadas debidas al control del bucle (incremento de ndices, saltos, etc.). Si una operacin es vectorial, se puede lanzar sin tener que controlar los riesgos dinmicamente, ya que esta informacin la provee el compilador o directamente el programador. Al acceder a memoria con patrones conocidos (se sabe a priori cual ser el siguiente elemento de memoria al que se acceder), el tiempo de acceso se reduce. Los costes de un procesador vectorial van asociados a sus ventajas: se requiere un hardware costoso para implementar las unidades funcionales vectoriales, as como el banco de registros y, sobre todo, el subsistema de memoria, que debe ser capaz de desarrollar suficiente velocidad para impedir que las unidades funcionales queden paradas a media operacin. A nivel del compilador, ste debe detectar los riesgos de dependencias. Los primeros procesadores vectoriales fueron el CDC STAR-100(Tate

1972) y el TI ASC (Watson 1972), aunque el primer vectorial de xito comercial fue el CRAY-1 (Rusell 1978) de Cray Research.

ExplicitlyParallelInstructionComputing(EPIC)

EPIC es un estilo de arquitectura para soportar el desarrollo de aplicaciones multiprogramadas, nace como una evolucin de VLIW, que ha adsorbido muchas de las mejores ideas de los procesadores superescalares. No obstante, EPIC no es tanto una arquitectura como una filosofa de cmo construir un procesador ILP junto con un grupo de caractersticas que la sostienen. En este sentido EPIC es parecido a RISC, denota una clase de arquitecturas que estn directamente unidas a una filosofa comn (Rau 2000)

Tal y como se pueden encontrar diferentes arquitecturas RISC, pueden existir ms de un set de instrucciones dentro del folder EPIC. Dependiendo de cual caracterstica se escoja, el repertorio de caractersticas de EPIC, as como su set de instrucciones, puede optimizarse para dominios tan distintos como computadores de propsito general o especificas. El estudio de EPIC se inicio alrededor de 1989 (pero no fue hasta 1997 que se decidi darle este nombre), mientras los procesadores Superescalares ganaban favoritismo cuando lograban implementar ILP. Los desarrolladores de EPIC sintieron la importancia de mirar de 5 a 10 aos en el futuro para entender los obstculos tecnolgicos y las oportunidades que existiran en ese momento; en esta inspeccin hacia el futuro, encontraron dos conclusiones, una obvia y otra un poco controversial en su momento. Primero, resultaba muy evidente, gracias a la ley de Moore, que para 1998 sera posible meter un procesador ILP con un alto nivel de paralelismo, en un simple encapsulado. Segundo, se considero que al crecer la complejidad de los superescalares, se vendra abajo la velocidad del ciclo reloj, provocando as un decaimiento en la velocidad de los procesadores (Rau 2000). Particularmente la intencin inicial fue evitar el uso de la ejecucin fuera de orden, una tcnica elegante pero complicada para alcanzar el ILP, la cual fue implementada inicialmente por IBM y utilizada universalmente luego por todos los procesadores superescalares de ltima generacin. El estilo de la arquitectura VLIW cumpla el cometido de alcanzar grandes niveles de ILP con poco nivel de complejidad en

el hardware, no obstante, estos procesadores fueron especializados para cmputos numricos y tenan poco uso con respecto a las aplicaciones de los superescalares. Resulto claro entonces, que el nuevo concepto en arquitectura debera ser verdaderamente dedicado al multipropsito, capaz de alcanzar grandes niveles de ILP tanto en aplicaciones numricas como escalables.

Casodeestudio:IntelItaniumIA64

IA 64 es una nueva arquitectura definida y desarrollada a finales de los aos 90 por Intel y HP. Este nuevo diseo implementa VLIW empleando instrucciones RISC y caractersticas OOO: EPIC (visto en el apartado anterior); lo cual permite de muy buena manera solucionar los problemas de incompatibilidad entre las diferentes implementaciones HW asociados tradicionalmente a las arquitecturas VLIW. Una de sus caractersticas es como aborda de forma innovadora las principales limitaciones de las arquitecturas RISC. En resumen, la IA-64 cuenta con paralelismo explcito, predicacin, especulacin, recursos masivos, gran cach interna, compatibilidad IA-32 y direccionamiento de 64bits Itanium es una nueva familia de procesadores Intel de 64 bits que implementa la arquitectura IA-64; La arquitectura IA-64 traslada el trabajo de extraccin de paralelismo al compilador liberando recursos del Hardware que son aprovechados para implementar cachs de gran tamao (6M on-die en Madison) y posibilita el uso de un nmero elevado de registros, tiene la ventaja de soportar mltiples sistemas operativos y de ser compatible con cdigo x86 (Pentium) y PA-RISC El uso del Itanium IA-64 se puede justificar de diferentes maneras, entre ellas se cita que el rendimiento RISC est llegando a su lmite y tiende a ser obsoleto, adems, la arquitectura IA-64 permite resolver muchas de las limitaciones RISC. Tambin el Itanium presenta una arquitectura de 64-bit, la cual soporta mltiples OS y permite una migracin simple como se dijo en el prrafo anterior No obstante, existen otros factores de ventaja de este procesador, por ejemplo permite una arquitectura comn desde el PC a los grandes servidores multiprocesador y representa una gran oportunidad para los ISV. El volumen de Intel permite mantener unos costes de fabricacin menores que los RISC propietarios. Ms especficamente, podemos decir que IA-64 define 4 tipos de instrucciones:

I-type destinada a la unidad de tratamiento de enteros: desplazamientos variables de bits, movimientos entre registros, bit testing, etc. M-type destinada a las unidades de acceso a memoria: cargas y almacenamientos en memoria A-type pueden ir tanto a las unidades de tratamiento de enteros como a las de memoria: operaciones aritmticas de enteros, lgica, multimedia, comparaciones enteros. Es la suma de un subconjunto de las I y las M F-type destinada a las unidades de tratamiento de coma flotante B-type desplazamientos (condicionales o no), calls, returns, etc Adems, este procesador define 24 bundles posibles donde cada bundle es una combinacin de tres instrucciones; el tipo de bundle se especifica en el template del mismo; el template adems, cualifica cada una de las instrucciones y determinados bundles contienen STOPs implcitos. STOPs implcitos y explcitos (subtitulo) El compilador genera la secuencia de instrucciones independientes y paralela ms ptima posibles; Adems el final de un grupo de instrucciones paralelas, se indica con una marca de stop en el bundle (STOP implcito). El mismo Harware durante el runtime del cdigo puede generar STOPs (explcitos) cuando: Ocurre un salto dentro del bundle Los recursos estn agotados: no hay unidades ejecutivas suficientes para ejecutar todas las instrucciones en paralelo

7.1

Itanium:direccionamientodememoria

El Itanium utiliza 2 ^ 64 bytes de memoria virtual, junto con 2 ^ 50 (Itanium2) bytes de memoria fsica, lo cual le permite soportar punteros de 64 y 32 bits: HP-UX admite binarios de 64 y 32 bits. Tambin cuenta con modos Big-endian o Little-endian: HP-UX trabaja en modo bigendian y Linux / Windows en modo Little-endian; los tamaos de pagina son variables y van entre 4KB y 4GB. El direccionamiento en IA-64 es plano (no existen instrucciones

para el indexado) y slo existen operaciones de post-incremento de punteros. El objetivo es mantener las unidades de acceso a memoria tan eficaces como sea posible.

Tcnicasyconceptosinnovadores

En la nueva tendencia de ILP se han creado tres tcnicas que han renovado y mejorado el desempeo notablemente, estas se explican a continuacin.

8.1

ParalelismoExplcito

Inicialmente, en las arquitecturas tradicionales, no exista un correcto direccionamiento del cdigo, ya que el encargado de la organizacin era lento y muchas veces no conoca a donde debera direccionar los segmentos; provocando as un sobre trabajo y reduciendo notablemente la eficiencia. En el paralelismo explcito, el compilador organiza eficientemente el cdigo y hace explcito el pedido para que de esta manera el procesador pueda enfocarse en la ejecucin de las instrucciones de manera ms efectiva.

8.2

Predicacin

Comnmente, un compilador cambia una expresin del cdigo fuente (como un IF-THEN-ELSE) en bloques alternados de cdigo de mquina, arreglados como un flujo secuencial. Dependiendo del resultado de la ramificacin, el CPU ejecutara uno de los bloques bsico saltndose los otros. Predicacin es un mtodo que maneja ramificaciones condicionales. La idea principal del mtodo es lograr que el compilador planifique ambos caminos posibles de la ramificacin para que sea ejecutada en el procesador simultneamente. Las ramificaciones representan una decisin entre dos sets de instrucciones. Las arquitecturas de hoy usan un mtodo prediccin de ramificaciones, el cual predice que set de instrucciones cargar. Cuando las ramificaciones son predecidas mal, la cola completa sufre una demora. Actualmente las arquitecturas solo predicen mal un 5% o 10% de las veces, las penalidades pueden disminuir el procesamiento en 30% o 40%. Las ramificaciones inhiben la eficiencia del compilador y sub-utilizan las habilidades del microprocesador. Las nuevas tecnologas utilizan el concepto de predicacin, el cual permite que ambos sets de instrucciones sean ejecutados, pero solo los necesitados sean utilizados. Mas tcnicamente hablando, cuando un compilador encuentra una expresin de ramificacin en el cdigo fuente, marca todas las instrucciones que representan cada camino de la ramificacin con un identificador nico llamado predicado. Cada instruccin tiene un campo de predicado para eso. Cuando el CPU encuentra en tiempo de ejecucin

una ramificacin predicada, comenzara a ejecutar el cdigo de los dos destinos de la ramificacin. Pero no guardara el resultado mientras que los valores de los registros del predicado no estn definidos. Una vez que la condicin sea evaluada, el procesador guardara un 1 en el registro del predicado el cual corresponde a "destino verdadero" y 0 en los otros. Antes de guardar los resultados, el CPU chequea cada registro del predicado de cada instruccin. Si el registro contiene un 1, la instruccin es vlida, as que el CPU retirara la instruccin y almacena el resultado. Si el registro contiene un 0, la instruccin es invlida, as que el CPU descarta el resultado.

8.3

Especulacin

El tiempo de retorno de los datos desde la memoria, es otra de las limitaciones de las arquitecturas tradicionales. El proceso de llamado a memoria retrasa al procesador, dejndolo inactivo hasta que lleguen los nuevos datos desde la memoria. Debido a esto, no se conserva la velocidad del procesador, las cargas (la obtencin de los datos desde la memoria) necesitan ser inicializadas ms temprano para asegurar que los datos lleguen a tiempo para su uso. Las nuevas tecnologas usan la especulacin, un mtodo que permite al procesador iniciar la carga anticipadamente, incluso antes de que se conozca que va a ser utilizada. Las cargas de memoria son inicializadas por adelantado para asegurar que los datos estarn disponibles para su uso. Como resultado, el compilador planifica la carga de memoria sin retrasar al procesador o bajar el rendimiento del mismo.

Conclusiones

A lo largo de la investigacin se han estudiado los diferentes conceptos que dieron origen al ILP, as como sus principales implementaciones y las variaciones que estas han sufrido con el paso del tiempo. Los conceptos de paralelismo y de compiladores han servido para reforzar el conocimiento en estos campos, as como para presentar una introduccin a la relacin importante que presentan los compiladores con la ILP en las pocas modernas. El paralelismo ha sido un paradigma creciente en las ltimas dcadas, impulsado con mucha fuerza por los fabricantes de microprocesadores; esta ola tendenciosa ha servido para la concepcin de diferentes teoras y la aplicacin de tcnicas muy variadas, tanto en la programacin a alto nivel, como en la construccin de herramientas cercanas al cdigo de maquina como los compiladores. El planeta de las ciencias de la computacin se mueve hacia un norte comn, pero bien podramos decir que se mueve hacia ese norte desde mltiples caminos, Divide et vinces dijo Julio Cesar, como anticipndose unos miles de aos a la tendencia computacional del momento.

Muchas herramientas a nivel de software y especialmente de hardware han sido construidas con el fin nico de facilitar la ejecucin de programas concurrentes, en un futuro no muy lejano, esperamos que la humanidad aun recuerde las ILPs y su introduccin al multiprocesamiento, como uno de los primeros conceptos aplicados que se desarrollo.

10

Bibliografa

Aho,A.V.L.,MonicaS.;Seti,Ravi&Ullman,JeffreyD(2008).Compiladores: Principios,tcnicasyherramientas.Mexico,AddisonWesley. lvarez,D.L.(1998).Recursosanchos:unatcnicadebajocosteparaexplotar paralelismoagresivoencdigosnumricosInformticaUPC. Gottlieb,G.S.A.a.A.(1990)."Highlyparallelcomputing",IBMCorp.29:165 166. Rau,S.M.R.(2000).EPIC:AnArchitecturefor InstructionLevelParallelProcessors.PaloAlto,HPLaboratories. Rusell,R.M.(1978)."TheCRAY1processorsystem."InComm.oftheACM(21): 6372. Shavit,M.H.N.(2008).TheArtofMultiprocessorProgramming.Burlington,MA 01803,USA,MorganKaufmann. Tate,R.G.H.a.D.P.(1972).ControlDataSTAR100processordesign. Tomasulo(1967)."AnEfficientAlgorithmforExploitingMultipleArithmetic Units."IBMJournalofResearchandDevelopment11(1):25. Watson,W.J.(1972).Ahighlymodularandflexiblesuperprocessorarchitecture, AFIPSFallJointComp.

Você também pode gostar