• No results found

Si bien los riodos del grafo no han ofrecido ninguna dificultad dentro del ámbito conceptual, el conjunto de aristas si que tiene unas caracteristicas esenciales que lo diferencian de otras propuestas distintas.

La primera consideración seria el hecho de que este conjunto de aristas se ha escogido de tal forma que el grato resultante siempre sea conexo y aciclico. Ambas condiciones son interesantes y se adaptan bien a las caracteristicas de los problemas que se van a tratar.

La condición de grafo conexo reside en el hecho de que todas las tareas han de estar conectadas entre sí, ya sea por dependencias de datos (los datos de entrada de unas tareas son los resultados producidos por otras) o por dependencias de control (una tarea no puede comenzar hasta que acabe otra, debido a la unicidad de recursos con el procesador de la parte software). En caso contrario, en el que existirian dos subgrafos no conectados, se darla a entender que parte del sistema es totalmente autónomo respecto del resto. Esta consideración no es muy razonable dentro del marca de este trabajo, debido fundamentalmente al siguiente

motivo.

Según se comentó en fa estructura de la arquitectura escogida, os datos entre particiones se intercambian mediante el modelo de memoria compartida. De esta manera, todas y cada una de las tareas hardware han de estar conectadas, o bien a otra tarea hardware que genere sus datos de entrada, o directamente a una tarea software que le pase datos iniciales o generados.

Por otra parte, todas las tareas software han de estar conectadas, ya que al haber un único procesador, la ejecución ha de ser secuencial, y por lo

Capitulo 4. Estimación de tiempo y coste en un entorno Macroscópico.

tanto existe una dependencia de control. De los párrafos anteriores se concluye que todas las tareas deben estar relacionadas entre si, o dicho de otra manera, que el grafo ha de ser conexo.

Para la consideración de grafo acíclico, se ha tenido en cuenta el conjunto de problemas a los que va destinada la presente aproximación. Estos problemas se podrían encuadrar dentro de las llamadas arquEtecturas de flujo de datos, en los que dichos datos van atravesando distintas etapas de transformación hasta llegar al resultado final, sin que haya realimentaciones de ellos en ningún punto hacia tareas anteriores.

De esta manera, los bucles y demás estructuras repetitivas deberian estar contenidas dentro de los nodos de Codiseño, por lo que las dependencias de datos realímentadas no cruzarían nunca el umbral de la tarea.

Figura 4.1

Grafo de dependencias de datos

Figura4.2 Grato de Codiseño

La consideración de grafo aciclico que se ha hecho en esta aproximación no significa que sea imposible tratar problemas con realimentacián de datos. Habria una complicación añadida en saber a priori el camino exacto que seguirla la información dentro de la arquitectura, para lo que se necesitarían técnicas de muestreo sobre cargas de datos características, pero la esencia de la metodologla seria básicamente la misma.

Por lo tanto, es preciso dejar claro que la simplificación hecha acerca del flujo de datos del problema va dirigida hacia una mayor claridad en la explicac¡ón de la teoría macroscópica, y nunca en una limitación a la hora de abordar otros problemas igualmente tratables.

Realizadas estas consideraciones, es necesario delimitar ahora los distintos tipos de aristas introducidas para unir los nodos del grafo, lo que se ilustrará con un ejemplo. Primeramente, hay que realizar un estudio de las dependencias de datos, como se muestra en la Figura 4.1. La partición

software viene representada por los nados blancos, y la hardware por los

nodos sombreados. Los dígitos que aparecen constituyen los tiempos de comunicación existentes entre los dos subsistemas.

Poster¡ormente, se crea el grafo de Codiseño, proveniente del grafo de dependencias ofrecido. Con estas premisas, el conjunto de aristas creado, que se refleja gráficamente en la Figura 4.2, viene catalogado por los siguientes tipos:

a) Dependencias de datos y control software: Estas aristas marcan el orden de ejecución de las tareas planificadas en software, que como se ha comentado anteriormente ha de ser secuencial debido a la consideración de que se tiene un único procesador. Por lo tanto, estas aristas formarán una cadena unidireccional de nados a través de las cuates fluirá la información. Está claro que el orden de los nados ha de respetar las dependencias de datos: las tareas se deberán ejecutar

E2BLIOTE OA

Cap ¡tufo 4. EstimacIón de tiempo y coste en un entorno Macroscópico.

después de la finalización de todas aquellas que producen algunos de sus operandos. Aparte de estos, puede existir un conjunto de nodos sin ningún tipo de dependencias entre si, y por lo tanto intercambiables dentro de la cadena software. Todas las variaciones producidas de esta manera darían grafos válidos, pero es preciso determinar un orden claro e inequívoco para evitar ambiguedades dentro de la representación. Para ello, en el caso mencionado anteriormente, se fija el arden dado por el compilador del sistema6, creando una dependencia de control entre los nodos implicados que les fuerza a una ejecución secuencial. b) Dependencias de datos hardware: Las aristas que conforman este

conjunto delimitan claramente la estructura jerárquica de las tareas hardware respecto a sus datos. Estas aristas no introducen ninguna dificultad conceptual, ya que se derivan directamente de la propia especificación inicial del problema. De esta manera, tareas que se ejecutan de una forma lineal en software, pasan a tener una dependencia arbórea al ser movidas a hardware, estructura que es producida por el conjunto de dependencias de datos. Mi, nados que tienen algún tipo de dependencia han de ser ejecutados de una manera secuencia?, mientras que aquellos que no la tienen pueden ser ejecutados en paralelo, aprovechando esta característica intrinseca al hardware.

e) Dependencias de control forzadas en hardware: Está claro que el

conjunto de aristas anteriores delimita qué tareas hardware pueden ejecutarse en paralelo, debido a la ausencia de dependencias. Sin embargo, el hecho de que dos nodos puedan ejecutarse en paralelo no

Dadala especificación inicial en la que todas las tareas están en software, el compilador del sistema ha de generar una ordenación en ellas, que es la que sigue el procesador para ejecutadas. Por supuesto este arden ha de cumplir Tas dependencias de datos.

significa que deban hacerla, sólo que existe esa posibilidad. AsI, se puede elegir bajo ciertas circuristanc¡as tratar de minimizar el coste del sistema, y por lo tanto incrementar al máximo las posibihdades de reuso. De esta manera, lo que conviene es reducir el grado de paralelismo del sistema, aun en las tareas que intrinsecamente son independientes. Para expresar el significado de esta idea, he introducido este conjunto de aristas forzadas, denominado formalmente E~ Así, dichas aristas introducen dependencias que no existen, o dicho de otra manera, que son ficticias, pero bajo ciertos requerimientos indican al sistema la necesidad de obtener una secuencialidad forzada. Estos enlaces, que como toda la solución parcial son generados por el particionador, constituyen un elemento para explorar eficientemente el equilibrio entre paralelismo y reuso hardware del sistema, como se explicará en su momento.

d> Dependencias de datos entre el hardware y el software: Es obvio que

entre las das particiones del sistema existe un paralelismo natural que siempre conviene explotar. No hay ninguna ventaja en la ejecución secuencial, como ocurria dentro de la partic¡án hardware, por lo tanto, la única limitación o dependencia entre estos dos subsistemas es la debida estrictamente a los datos. Dicho de otra manera, las tareas en hardware y software han de transmitirse información, para que los resultados de unas de ellas pasen a ser los operandos de otras. Este intercambio de datos se realiza, como se explicó previamente, mediante el modelo de memoria compartida a través del bus del sistema. Una característica fundamental de esta comunicación de datos es el alto tiempo que se consume en su realización, por lo que constituye uno de los cuellos de botella del sistema. Como se verá posteriormente, una de las tareas claves del particionamiento reside en la distribución adecuada

u’

iii

ji’

iii

iii

Related documents