Welcome to the SAFAS, Secure and Fast FPGA-based Hardware Scheduler for Accelerating Task Scheduling in Multi-core Systems.
The concept of a hardware scheduler involves separating the task scheduling unit from the Operating System (OS) and delegating it to a dedicated hardware unit in real-time connected embedded systems. The hardware scheduler has direct access to processing units and can perform parallel control on each unit, making it more efficient in managing hardware resources than the OS in multi-core systems.
The main objective of this project was to develop hardware for task scheduling that takes into account security concerns. With the increasing use of embedded systems in IoT technology, these systems have become vulnerable to security breaches. The SAFAS (Security Aware Flexible Architecture for Scheduling) is designed to schedule high-security, safety-critical tasks and their replicas to meet their deadlines and remain safe from schedule-based attacks.
In this project, Verilog hardware description language was used to develop the hardware, with an emphasis on using minimal hardware resources. The code in this repository has been simplified as much as possible and is available for research purposes to everyone.
If you use SAFAS in your research, we would appreciate the following citation in any publications to which it has contributed:
Get in touch with me by [email protected]
The main structure of SAFAS is as follows:
- The operating system is responsible for checking the accuracy of the information of each task immediately and sending it to the hardware scheduler.
- The main queue that has the task of receiving the maximum number of characteristics of real-time tasks.
- Main hardware scheduler that is responsible for receiving tasks and dispatching them to processing cores.
- Network on the chip that is responsible for executing tasks (this part is outside the scope of the project).
The project consists of two parts:
- Verilog code that requires software such as xilinx vivado for synthesis and simulation.
- c++ code that requires the c++ compiler or visual studio software for compiling c++ code that produces a sequence of real-time task characteristics To be able to test the hardware schedule.