Sistemas de Tiempo Real Multitarea/Multiprocesadores Integrados: Diagramación con Precedencias Duras Rodrigo Santos Dep. Ing. Eléctrica y Comp. Universidad Nacional del Sur CONICET {[email protected]} Ariel Fernandez Dep. Electrónica-FRBB Universidad Tecnológica Nacional {[email protected]} Jorge Santos Dep. Ing. Eléctrica y Comp. Universidad Nacional del Sur {[email protected]} Abstract En este trabajo se presenta un algoritmo para la diagramación de tareas en tiempo real sobre sistemas multiprocesador. A diferencia de otros esquemas, en este caso los procesadores son heterogeneos y se encuentran integrados en un mismo dispositivo por lo que no hay retardos impuestos por comunicaciones entre tareas que operan en distintos procesadores. El esquema propuesto permite diagramar sistemas con un alto factor de utilización. En el trabajo se presenta una evaluación experimental y se compara la performance del algoritmo contra otras soluciones presentes en la bilbiografía. 1. Introducción En la actualidad, se ha incrementado de manera importante la utilización de sistemas embebidos para el control de dispositivos. Las principales razones para ello se encuentran en la reducción de costos en el hardware y el alto nivel de integración que se ha alcanzado. La aparición de microcontroladores con capacidades de conversión de señales analógicas a digitales y digitales a análogicas, comunicación via un puerto serie, implementación de Modulación por Ancho de Pulso (Pulse Width Modulation, PWM), etc., hace de estos integrados una herramienta eficaz para el control de sistemas. El aumento de las aplicaciones que se controlan mediante sistemas embebidos impulsa a la industria a producir nuevos circuitos integrados con mayor cantidad de funciones incorporadas de modo de satisfacer los requerimientos en un solo integrado. La utilización de Arreglos Programables de Compuertas (Field Programmable Gate Arrays, FPGA) permite incrementar las funciones prácticamente a medida del diseñador del sistema. Sin embargo, esta tecnología está limitada en ciertos aspectos como pueden ser el costo del sistema por unidad, la velocidad de operación, el consumo de energía, la cantidad de pines externos necesarios para montar el sistema, etc. En los microcontroladores tradicionales se puede recurrir al uso de memorias caches, mayor cantidad de niveles de pipeline o simplemente aumento de la velocidad de procesamiento para lograr una mayor performance del sistema. Sin embargo, estas alternativas tienen algunos inconvenientes cuando son utilizadas en sistemas embebidos que deben operar en tiempo real: por una parte el manejo de la memoria cache o los niveles de pipeline suelen ocasionar dificultades en el cálculo del peor tiempo de ejecución; por otra parte, el incremento de la velocidad de procesamiento está asociado a un mayor consumo del circuito integrado que obliga a redimensionar la fuente de alimentación. La utilización de procesadores con arquitecturas del tipo Palabras de Instrucción Muy Largas (Very Large Instruction Word, VLIW), que realizan procesamiento en paralelo mediante varias unidades aritmético lógicas, utilización de memoria de datos y de programa, requiere integrados grandes y de código de programación generalmente más extenso que el de los procesadores normales. En otro nivel de integración, aparecen dispositivos con varios procesadores integrados de modo de satisfacer demandas específicas. A menudo, estas demandas consisten en la ejecución de sistemas de tareas de tiempo real, en los cuales los resultados deben ser correctos no sólo desde un punto de vista aritmético-lógico, sino producirse antes de un cierto instante denominado vencimiento. Un sistema de m tareas queda completamente especificado como !#"$"#"% & ' . En cada terna, , , denotan respectivamente el tiempo de ejecución, el periodo y el vencimiento de la ) . tarea i, simbolizada ( . En muchas aplicaciones Un sistema se dice diagramable cuando no se pierde ningún vencimiento. La diagramación puede ejecutarse con distintas disciplinas de prioridades, por ejemplo: Períodos Monotónicos Crecientes (Rate Montonic, RM), Menor Tiempo al Vencimiento (Earliest Deadline First, EDF), Vencimientos Monotónicos Crecientes (Deadline Monotonic, DM), aplicable * . cuando Para este tipo de aplicaciones es común la integración de microporcesadores de propósito general (General Purpose Processor, GPP) con microprocesadores auxiliares de propósito dedicado, por ejemplo Procesadores de Señales Digitales (Digital Signals Processors, DSP). Estas arquitecturas buscan beneficiarse con el paralelismo proveniente de la utilización de dos procesadores en simultáneo. Las tareas que conforman la aplicación tienen entonces diferentes subtareas que corren en el procesador principal o en el procesador auxiliar. Esta estructura genera subtareas con relaciones de precedencia duras entre la subtarea predecesora y su sucesora, con lo cual todas las subtareas deben finalizar antes del vencimiento de la tarea. Ejemplos de estas arquitecturas en la actualidad se pueden encontrar en el sistema Janus, desarrollado por ST Microelectronics en conjunto con Parades [10], para el control de marcha de motores de combustión interna en vehículos. Otras companías han desarrollado dispositivos similares destinados a aplicaciones más generales como pueden ser transmisión de video o audio. Por ejemplo Texas Instruments, desarrolló el SMJ320C80 con un Computador de Conjunto Reducido de Instrucciones (Reduced Instruction Set Computer, RISC) de 32 bits como GPP y 4 DSPs paralelos, también de 32 bits, todos acoplados internamente sobre un canal que provee acceso a una memoria RAM compartida [2, 3]. Dadas las características de las tareas que corren sobre los DSP, el modo natural de ejecutarlas es sin apropiaciones, en el sentido de que cuando una tarea comienza su ejecución, no puede ser desalojada del procesador por otra tarea. Esto produce una diagramación asimétrica, ya que en el GPP las tareas son apropiables y en el DSP no. En la bibliografia hay varios análisis al respecto. Por ejemplo, en [4, 5] Rajkumar aborda este problema mediante dos algoritmos, Protocolo Techo de Prioridades Múltiples (Multiple Priority Ceiling Protocol, MPCP) y Protocolo Techo de Prioridades Distribuidas (Distributed Priority Ceiling Protocol, DPCP) que permiten compartir recursos en sistemas genéricos multiprocesador. Esta aproximación es muy pesimista ya que se basa en principios muy generales que no toman en cuenta las características particulares de cada sistema. Otra aproximación denominada co-diagramación se presenta en [6]. Alli, varias tareas comparten múltiples recursos de procesamiento. La idea básica consiste en dividir las tareas en partes y asignarles vencimientos individuales tales que hagan al sistema diagramable. En el trabajo original el esquema era utilizado para diagramar al procesador y la controladora de disco. Con este esquema, el análisis de la diagramabilidad puede realizarse considerando el tiempo de ejecución en el DSP como una zona crítica de la tarea principal que corre en el GPP. En [1], los autores mejoran el análisis de Rajkumar y establecen un tiempo de bloqueo para cada tarea siguiendo un ordenamiento RM. El test de diagramabilidad utiliza la cota hiperbólica [7]. En lo que sigue este método será denominado GAB (Gai, Abeni, Butazzo). En el presente trabajo se plantea un modelo de análisis similar al de la co-diagramación. Básicamente cada tarea es analizada como un proceso en el cual hay subtareas que se ejecutan en distintos procesadores. Se ajustan entonces vencimientos y tiempos de activación de cada subtarea de modo que el sistema sea coherente. La diagramación en el GPP se hace por EDF y en el DSP por DM. El resto del trabajo se organiza de la siguiente manera: en la Sección 2 se presenta el modelo del sistema y en la 3 se analizan algunas de las soluciones previas. En la Sección 4 se formaliza el algoritmo propuesto y en la Seccion 5 se evalúa, mediante simulaciones, la performance respecto de la propuesta realizada en [1]. Finalmente en la última sección se sacan las conclusiones y se plantean trabajos futuros. 2. Modelo del sistema Se considera una arquitectura en la cual un GPP y un DSP se encuentran integrados en un mismo chip y comparten las memorias RAM y ROM, como así también el espacio de entrada/salida. Una arquitectura comercial de características similares se presenta en Janus [10]. Las comunicaciones entre las dos unidades de procesamiento no imponen un retardo adicional ya que están integradas en el mismo chip. Debido a que la ejecución de tareas en el DSP es no apropiable, podría ocurrir que una tarea debiera esperar por su uso. Las tareas que se ejecutan en el DSP son invocadas desde el procesador principal mediante un paradigma de Llamada a Procedimiento Remoto (Remote Procedure Call, RPC). El kernel de tiempo real en el procesador principal es el encargado de impedir que una tarea realice un RPC cuando el DSP está ocupado respondiendo a otro. Las tareas se consideran periódicas e independientes. Cada una de ellas puede ser dividida en tres subtareas ordenadas por relaciones de precedencia, de las cuales la primera y la tercera se ejecutan en el GPP y la segunda en el DSP. En general, entonces, se puede describir al sistema a partir de un conjunto con tuplas ordenadas. + ,&.-/ &1023&546'7 3 &98 indica el peor tiempo de ejecución de la subtarea j de la tarea i. En este caso, j puede tomar únicamente los valores :50;=< , 1, 2, ó 3. Cualquiera de las subtareas puede tener tiempo de ejecución igual a cero. En el caso particular en que se dice que la tarea es regular porque no realiza ningún RPC al DSP y podrá ejecutarse de principio a fin sin ser bloqueada. 10?> < , se dice que es una tarea DSP. Si Los factores de utilización del GPP, y del DSP se calculan como: @ACBDB FG E &J- KL M14 5HI- @NOB PG E & 1 0 5HQ- En la figura 1, se muestra la arquitectura del sistema y las relaciones de precedencia de las mismas. En el grafo, los nodos indican las subtareas, notadas precedencia. ( 98 (subtarea j de la tarea i), mientras que los arcos simbolizan la relación de Fig.1 3. Trabajos previos En la evolución temporal del sistema, cuando una tarea accede al DSP y comienza a ejecutarse, libera el GPP abriendo la posibilidad de que una tarea regular u otra tarea DSP comience o continue su ejecución. Sin embargo, la asignación de ese tiempo de procesador resulta dificultosa porque al haber relaciones de precedencia y un multiprocesamiento, disciplinas como RM o EDF no siempre producen la mejor diagramación del sistema. El sistema tal cual es planteado en este trabajo puede ser analizado como un caso particular del modelo general expuesto por Rajkumar en [4, 5]. En este caso, el test de diagramabilidad debería satisfacer: R I #"$"#"S UT'K 84 KV 8 0 K .- KV 1 4 KL 10 KVX -Z '[ G 83- V W 8 ' Y 8 HI- X: simboliza el mayor tiempo de bloqueo que puede sufrir ( l ' acbed j80/&K G _ 8!m 80 nWopeorqtsDocu7opevjowwx X ]\^ fSghf#i : fSgSkfSi < nto6peowqWsDoyu7o6pevjo]pev$z,qt{o6p ^` donde y se calcula de la siguiente manera: Esta aproximación tiene el inconveniente de que el tiempo de ejecución del DSP es contado para todas las tareas, aún para aquéllas que no hacen uso del DSP. En [1], se mejora esta propuesta al considerar dos colas de tareas, una para las tareas regulares y otra para las tareas de DSP. Los pedidos de uso del DSP se implementan mediante una primitiva de bloqueo que suspende la tarea que hace el requerimiento y la coloca en una cola de espera para ser reactivada cuando el DSP quede libre. De esa manera, las tareas regulares pueden ejecutarse siempre que estén listas y tengan la prioridad suficiente como para apropiarse del GPP sin que importe si el DSP está siendo usado por una tarea de mayor o menor prioridad. De esta manera, las tareas que utilizan el DSP son bloqueadas únicamente por otras tareas que también lo usan. Por lo tanto, al determinar el bloqueo que debe tolerar una tarea, hay que tener en cuenta la duración máxima de la tarea de DSP de menor prioridad y además X| la interferencia que puedan provocar las l tareas de mayor prioridad que utilicen también el DSP. De este modo, será: 10 K c a bed j 10 &K G W8!m 80 nWopeorqtsDocu7opev}o~wx X:]_ \^ fSg h!f#i fSg k!f#i < nto6peowqWsDo?u7opevjo]pev$zq{Uop ^` Determinado el tiempo de bloqueo se puede verificar la diagramabilidad a partir del test tradicional de Liu y Layland [8], o por medio de la cota hiperbólica [7], o por los métodos exáctos [Lehozcky, Santos], que son más costoso en tiempo. Esta aproximación mejora mucho la capacidad de decisión sobre la factibilidad de los sistemas y en caso de utilizar la cota hiperbólica permite decidir sobre un mayor número de sistemas en tiempo O(n). La utilización del método exacto resulta costosa si se debe realizar el test en linea. Si en cambio puede ejecutarse fuera de línea, como es el caso de sistemas completamente definidos en su inicialización, sus resultados son mejores que los producidos por los otros métodos. Dado que el bloqueo del DSP sólo se considera sobre las tareas que hacen uso del mismo, el algoritmo tiene una mejor performance que el DPCP con una complejidad computacional similar. 4. El Algoritmo Propuesto El modelo divide a cada tarea en tres subtareas ordenadas por relaciones de precedencia. Por ello se reasignan vencimientos y tiempos de activación a cada subtarea a fin de poder analizarlas y diagramarlas en forma individual, % como si se tratara de tareas independientes. El primer paso consiste entonces en transformar el conjunto ( , M J ; 5 | 0 5 j 4 3 8 9 8 en el conjunto hay que definir para cada ( un vencimiento y un tiempo de ( ( ( . En }p 98 , de modo que se cumpla: p =p J-:* J - Y p 50r* 50 Y p 14?* 1 4 Y activación Se dice entonces que el sistema es coherente. La primera y tercera subtareas se ejecutan en el GPP mientras que la segunda en el DSP. Por lo tanto, habrá dos sistemas diferentes, uno en cada procesador, por lo que hay que analizar la diagramabilidad de cada uno por separado. El GPP se diagramará con EDF y el DSP con DM. Al igual que en GAB, una tarea DSP se bloquea y pasa a una cola de espera si no tiene acceso al DSP. Cuando la tarea que se está ejecutando en el DSP concluye, activa a la tarea de mayor prioridad (vencimiento relativo menor) que se encuentra presente en la cola de espera. Como no es apropiable, hay que acotar el tiempo que una tarea de prioridad alta puede permanecer en la cola de espera aguardando que una tarea de menor prioridad libere al DSP. Para establecer la diagramabilidad del DSP se utiliza el siguiente teorema: U7'6 !#"$"#"% de tareas periódicas, independientes y no apropiTeorema 1: Un sistema TD- l u G menor u# u K HCac j &K 8 W 8!m 5Qbe-d 8 HQ- ables es diagramable por DM si y sólo si: R I !#"$"#" La demostración puede encontrarse en http://www.ingelec.uns.edu.ar/rts. Para poder aplicar el teorema y asi determinar la factibilidad del DSP es necesario establecer para cada subtarea un vencimiento adecuado. Dado que en el GPP las tareas se ejecutan por EDF, el momento más tardío en que puede terminar la subtarea que corre en el DSP y aún dejar tiempo suficiente para la tercera subtarea es: [ 50:= &54 (1) Determinados los vencimientos de todas las subtareas que se ejecutan en el DSP, se las ordena por DM y se realiza el test de diagramabilidad de acuerdo al Teorema 1. Si el DSP resulta diagramable entonces se puede seguir analizando la factibilidad del GPP. Para ello se utiliza un resultado demostrado formalmente en [9] que establece las condiciones suficientes para la diagramabilidad de un sistema operando bajo EDF cuando las tareas tienen vencimientos y tiempos de activación no sincrónicos con los períodos: S(m) es diagramable bajo EDF si R $"#"$"S , R $"#"$"# ,| p} Y p 8 , Y 8 , Y 8 [ }p j i $ g G La aplicación del resultado anterior a las subtareas del GPP permite determinar la factibilidad del sistema. Para ello hay que determinar tanto los tiempos de activación de las subtareas, 54 y . peJ- y p$14 , como así también los sus vencimientos, J- El vencimiento de la tercer subtarea es sencillo de determinar y coincide con el de la tarea general. Para calcular el vencimiento de la primer subtarea, hay que determinar el instante más tardío en el que puede comenzar a ejecutarse la segunda subtarea. El mismo surge de la condición de diagramabilidad para cada una de las subtareas del DSP: R I !#"#"$"S TDl J-+ 10 [ v}sDjp&u# u=&10&K CH 5aQ-b/d j 0e&K G 80 u 8!m 8QH E (2) A cada subtarea se le asigna el tiempo más temprano de activación que puede tener. En el caso de la primera subtarea, coincide con la activación de la tarea general. Para el resto se calcula siguiendo el siguiente esquema: R Q #"$"#"S R p$98p$98ST'-&KV&98ST'- (3) Establecidos entonces los valores de los tiempos de activación y de los vencimientos parciales podemos considerar un nuevo sistema en el cual las tareas son independientes y tienen esos tiempos de activación con esos vencimientos. p}3& 3 I #"$"#"n Teorema 2: Sea ( , y un ordenamiento parcial en S. Sea #"$"#"nC un conjunto de tareas independientes tales que, para todo Y Y n , ¡ ¢& , y &¡+ ( ¡ p2¡ r ¡ ¡ ¡ y p2¡ están dados por las fórmulas (1), (2) y (3), S es diagramable si y sólo si S* es diagramable. La demostración formal del teorema puede encontrarse en http://www.ingelec.uns.edu.ar/rts En consecuencia, sólo queda establecer la condición suficiente de diagramabilidad. =¢ ( p 3 + #"$"#"nC , y un ordenamiento parcial en S. Para todo Corolario 1: Sea Y Y n , ¡ y p2 ¡ R! $"#"$"SUn , R $"#"$"SUn , tales que ,p ¡ Y p28 ¡ , ¡ Y 8 ¡ , se dados por las fórmulas (1), (2) y (3), S es diagramable si verifica: G Y 8 [ p }7i $ g El Teorema 1 y el Corolario 1 dan las condiciones suficientes de diagramabilidad para el sistema que estamos anal- izando. La complejidad del cálculo para determinar la diagramabilidad en el DSP es £ p es la cantidad de tareas que quedan luego de la transformación. U~ . En el GPP es £ ¤nt , donde E 5. Evaluación experimental Para validar el método se realizaron dos grupos diferentes de simulaciones. Ellos son: en el primero se repitieron las condiciones establecidas en [1] aunque manteniendo el número de tareas en 10: ¥ Los períodos de las tareas se eligieron aleatoriamente entre 10 y 1000. ¥ Los tiempos de ejecución de las tareas fueron elegidos de modo tal que el factor de utilización total del sistema, GPP+DSP variara entre 0.01 y 0.99. ¥ ¥ Las tareas que utilizan el DSP son en promedio el 80% del número total de tareas. ¥ El tiempo de ejecución de la tarea en el DSP se calculó de modo que variara entre el 10% y el 80% del tiempo de ejecución total. Se determina el porcentaje de sistemas diagramables referido al total de sistemas ensayados en la simulación. Con estas condiciones se generaron <¦ sistemas que fueron evaluados mediante el método GAB por un lado, y con el método propuesto en el presente trabajo por el otro. Se midió luego la diferencia entre los porcentajes de los sistemas diagramables por uno y otro método. La figura 2 representa los resultados de este experimento. NOB ACBDB Fig. 2 U yU indican el factor de utilización del DSP y del GPP respectivamente. En abcisas se representa su suma y en ordenadas la diferencia entre los porcentajes de sistemas diagramables por cada uno de los métodos. En la figura se observa claramente que hasta un factor de utilización total de 0.3, los dos métodos brindan resultados similares. Entre 0.3 y 0.75, los sistemas son diagramados mejor con el método GAB y cuando el factor de utilización total es mayor que 0.75, con el método propuesto en este trabajo. Los resultados anteriores sin embargo, se obtienen en condiciones de simulación bastante restrictivas. De hecho con dos procesadores, se puede esperar un factor de utilización total bastante mayor que 1. Se realizó entonces un segundo conjunto de simulaciones. En ellas, se varió el factor de utilización del GPP entre 0.01 y 0.99 y para cada uno de los puntos anteriores se varió el factor de utilización del DSP entre 0.01 y 0.99. Para cada par de factores de utilización, se generaron 100 sistemas aleatorios con períodos comprendidos entre 10 y 1000. En la figura 3, se graficó, para cada par, la diferencia en los porcentajes de los sistemas que resultaron diagramables por cada uno de los métodos. Fig. 3 En el eje vertical se representa la diferencia entre los porcentajes de sistemas diagramables (%método propuesto-%método GAB). Se puede apreciar que cuando el factor de utilización del GPP es cercano a 1 y el factor de utilización del DSP cercano a 0, el número de sistemas que resultan diagramables por medio del método propuesto aqui es sustancialmente mayor. Sin embargo, a medida que el factor de utilización del DSP aumenta y supera 0.5, la diferencia entre las dos propuestas se hace muy pequeña. 6. Conclusiones En este trabajo se presentó un nuevo algoritmo destinado a la diagramación de sistemas multiprocesadores heterogéneos integrados en un solo dispositivo. Uno de los procesadores es de propósito general (GPP) y el otro de propósito dedicado, por ejemplo un procesador de señales digitales (DSP). Las tareas se analizan con relaciones de precedencia operando bajo dos disciplinas de prioridades diferentes: EDF y DM para el GPP y el DSP respectivamente. Las simulaciones muestran que para determinadas combinaciones de factores de utilización de los dos procesadores el método presentado aqui es mejor que el propuesto en [1] (GAB) y en otros casos tienen una performance parecida. Por ejemplo, cuando el factor de utilización en el GPP es elevado y en el DSP es bajo, el método supera al GAB. Esto es natural ya que con EDF se pueden diagramar sistemas que con prioridades fijas no. A medida que el factor del utilización del DSP aumenta no hay diferencia entre los métodos ya que en la mayor parte de los casos los sistemas con tan elevados factores de utilización no resultan factibles. Al descender la utilización del GPP se puede elevar mas la utilización del DSP. En estos casos nuevamente el método propuesto tiene una mejor performance. Finalmente con bajos factores de utilización del GPP los dos métodos encuentran factibles los mismos sistemas, por lo que no hay diferencias. Es por ello, que al momento del diseño del sistema y de realizar el análisis de factibilidad, será preciso evaluar la demanda real sobre los dos procesadores. En caso de que la misma sea baja será mejor implementar la disciplina RM en ambos procesadores. Si en cambio, el GPP tiene un factor de utilización elevado, será mejor el manejo mediante EDF con relaciones de precedencia. En el futuro se evaluará la factibilidad de este algoritmo en el caso de que haya varios procesadores y que las tareas deban ejecutar diferentes funciones en cada uno de ellos. Agradecimiento: Los autores agradecen a un revisor anónimo importantes observaciones que contribuyeron a mejorar la presentación del trabajo. References [1] Gai, P., L. Abeni, G. Butazzo, “Multiprocessor DSP Scheduling in System-on-a-chip Architectures”, Proc. 14th Euromicro Conference on Real Time Systems, pp. 231-238, Viena, 2002. [2] Texas Instruments, “Military semiconductor products fact sheet SM320C80/SMJ20C80/5962-9679101 SGYV006C”, Agosto 2000. [3] K. K. P. Research, “Increasing functionality in set-top boxes”, Proc. IIC-Korea, Seul, 2001. [4] Rajkumar, R., L. Sha, J. P. Lehoczky, “Real time synchronization protocols for multiprocessors”, Proc. IEEE Real Time Systems Symposium, 1988. [5] Rajkumar, R. “Synchronization in Real Time Systems: A priority inheritance approach”, Kluwer Academic Publishers, 1991. [6] Saewong, S., R. Rajkumar, “Cooperative scheduling of multiple resources”, Proc. IEEE Real-Time Systems Symposium, Diciembre 1999. [7] Bini, E., G. Buttazzo, G. Buttazzo, “A hyperbolic bound for the rate monotonic algorithm”, Proc. 13th Euromicro Conference on Real-Time Systems, junio, 2001. [8] C. L. Liu & J. W. Layland, Scheduling Algorithms for Multiprogramming in a Hard Real-Time Environment, Journal ACM, 20 (1), 1973, 46-61. [9] Chetto, H., M. Silly-Chetto, T. Bouchentouf, “Dynamic scheduling of real-time tasks under precedence constraints”, The Journal of Real-Time Systems, 2, 181-194, 1990. [10] Ferrari, A., S. Garue, M. Peri, S. Pezzini, L. Valsecchi, F. Andreatta, W. Nesci, “The design and implementation of a dual-core platform for power-train systems”, Convergence 2000, Detroit, Octubre 2000.