A Processor Extension for Cycle-Accurate Real-Time Software
Certain hard real-time tasks demand precise timing of events, but the usual software solution of periodic interrupts driving a scheduler only provides precision in the millisecond range. NOP-insertion can provide higher precision, but is tedious to do manually, requires predictable instruction timing, and works best with simple algorithms. To achieve high-precision timing in software, the authors propose instruction-level access to cycle-accurate timers. They add an instruction that waits for a timer to expire then reloads it synchronously. Among other things, this provides a way to exactly specify the period of a loop. To validate the approach, they implemented a simple RISC processor with the extension on an FPGA and programmed it to behave like a video controller and an asynchronous serial receiver.