*3.1. Pre-IoT Age*

Task or computation-offloading theory emerged to respond with the need to speed up task processing in hardware. Task migration in a distributed system aims at balancing the load among available processors without a drastic increase in the communication overhead [21,22]. Two classes of algorithms have been devised: static and dynamic. Communication protocol plays a pivotal role in balancing the load among processors. Three types of control models have been articulated for load balancing: centralized, distributed, and hybrid [23].

In a multicore/multiprocessor system, task offloading has been used to speed up the execution of multitasks, given a process *P*<sup>1</sup> that can be decomposed into *n* independent processes, *P*1, *n* and *M* cores. Each process *k* requires an execution time *tk*,*<sup>m</sup>* on the mth core, such that *m* ∈ {1, . . . , *M*} and *k* ∈ {1, . . . , *n*} (see Appendix A). The energy dissipated by the mth core to run the kth process is *Ek*,*m*. The task offloading seeks an offloading algorithm that assigns tasks such that the execution time is met at the lowest possible energy consumption, i.e., the offloading should solve the following optimization problem.

$$\begin{aligned} \min \quad & \sum\_{m=1}^{M} \sum\_{i=1}^{n} \delta\_{i,m} E\_{i,m} \\ \text{s.t.} \quad & \sum\_{k=1}^{n} t\_{k,m} \le t\_{\prime \prime} \\ & n \le M \end{aligned} \tag{1}$$

where *δi*,*<sup>m</sup>* 1 if *P<sup>i</sup>* runs on processor *m* 0 else .

The authors of [24] devised an offloading strategy that moves the computationally demanding task from CPU to GPU. They further demonstrated this strategy by considering the implementation of a signature-matching intrusion detection system. This approach has been generalized to cover the multicore architecture with and without accelerators.

Offloading can be used to balance the load among cores or processors in a multiprocessor system. This is often regarded as task migration that aims at moving the task execution from one core/processor using a given performance metric: power consumption, thermal energy, and dark silicon [25]. Communication-driven task migration attempts to migrate tasks to adjacent cores.
