Research Article

Static Scheduling of Periodic Hardware Tasks with Precedence and Deadline Constraints on Reconfigurable Hardware Devices

Algorithm 4

Total and partial migration or addition of RZs.
(1) // Combination of overlapping execution intervals
(2) // Boolean controlling after migration whether RZ is no longer overloaded by
(3) // Load of the RZ corresponding to
(4) // The set of RZs helpful for partial migration
(5) // The set of tasks that might perform partial migration
(6) for  all   giving overloaded RZ  do
(7)    False
(8)   while  ( = False) and ( )  do
(9)    // Total migration of tasks
(10)   Select the interval from that gives the most heavy occupation rate and discard it from .
(11)   Check whether the iteration, corresponding to the execution interval of the selected task, is studied on another
       non-overload RZ and update the load of the overloaded RZ after the elimination of the selected task.
(12)    if     then
(13)      True
(14)    end  if
(15)   end  while
(16)  if     then
(17)   Reinitialize and with its tasks
(18)   
(19)   
(20)   // Partial migration of tasks
(21)   Omit the tasks from the overloaded RZ, corresponding to , that are also acceptable by another RZs ( ) and
   reduce their occupation rates from the loads of these RZs. These latter RZs with the overloaded RZ corresponding to
    are included in the set . The omitted tasks are included in
(22)   while     do
(23)    In set, start by the task that gives the best trade-off between least number of RZs in
    where it could migrate and heaviest occupation rate in the overloaded RZ.
(24)    During , within the selected task, choose the biggest execution sections that could be placed in RZs from the
     set without overloading them.
(25)    Update the load of RZs receiving execution sections from the selected task
(26)    if  Some execution sections of the selected task are not placed  then
(27)     Reinitialize the loads of RZs in to values before processing
(28)     Increment the number of RZ corresponding to up to , go to 6
(29)    else
(30)     Discard the selected task from .
(31)    end  if
(32)   end  while
(33)   // All the execution sections of tasks are placed
(34)   
(35)  end  if
(36) end  for