Kosynteza oraz przydział nieprzewidzianych zadań w procesie
projektowania systemów wbudowanych
W niniejszej pracy zaprezentowane zostały dwa algorytmy programowania genetycznego do kosyntezy rozproszonych systemów wbudowanych: konstrukcyjny oraz rafinacyjny. W opisanych algorytmach, w przeciwieństwie do istniejących rozwiązań, ewolucji podlega nie architektura systemu wbudowanego bezpośrednio, lecz sposób jej otrzymania. Algorytm konstrukcyjny buduje genotyp podejmując decyzje dla każdego zadania osobno. Algorytm rafinacyjny startuje od suboptymalnego rozwiązania, a następnie poprzez lokalne zmiany, takie jak alokacja/dealokacja zasobów czy przemieszczenie zadań pomiędzy zasobami, polepsza jakość rozwiązania. Następne pokolenia tworzone są poprzez zastosowanie operatorów genetycznych: klonowania, mutacji oraz krzyżowania. Algorytmy kończą działanie, jeśli w e kolejnych pokoleniach nie zostanie otrzymane lepsze rozwiązanie. W pracy zostały również zaprezentowane dwa algorytmy przydziału nieprzewidzianych zadań w procesie projektowania systemów wbudowanych: dla przypadku szczególnego oraz ogólnego. W przypadku szczególnym nieprzewidziane zadania pojawiają się po wykonaniu wszystkich zadań przewidzianych przez projektanta systemu wbudowanego. W przypadku ogólnym nieprzewidziane zadania mogą pojawić się w dowolnym momencie działania systemu. Opracowane algorytmy pozwalają na zareagowanie w nieprzewidzianych sytuacjach bez konieczności całkowitego przeprojektowania istniejącej architektury co znacznie obniża koszt projektowanego systemu.
In this work two genetic programming algorithms for hardware/software cosynthesis of distributed embedded systems are presented: constructive and iterative improvement. In presented algorithms, unlike existing methods, the way of obtaining the target system is evolving, not the architecture directly. Constructive algorithm builds genotype by making decisions for each task separately. Iterative improvement algorithm starts from sub-optimal solution and improves the system quality by making local changes like allocation/deallocation of resources or reassignment of tasks. New populations of individuals are created using genetic operators: cloning, mutation and crossover. Algorithms stops if in e next generations better solution was not found. In the work also two algorithms for assignment of unexpected tasks are presented: in special and general case. In a special case unexpected tasks appears after execution of all the tasks predicted by a designer of embedded system. In a general case unexpected tasks can appear in every moment of an operation process of the system. Presented algorithms allow to react in many unexpected situation without a necessity of redesigning of all the system. Therefore the final cost of the system is very reduced.