In digital systems, datapaths are digital circuits used to store and manipulate data. They’re used in conjunction with control paths to implement practical finite state machines in processors.

Datapath components include ALUs, registers, decoders, and multiplexers. In processors, registers may be used to store the result of a previous computation. Datapaths should be constructed in a way that makes it possible for all actions necessary to compute the results of an instruction. Most practical datapaths are multicycle, i.e., they take multiple clock cycles to execute a single instruction. This is because single-cycle datapaths mean each clock cycle has to be 1) really long and 2) long enough to accommodate the most complicated instruction. This means any optimisations are functionally a dead-end, because we’re bottlenecked by the longest instructino.

Example

The datapath below is able to store data into four registers, and either add or multiply then store that data. This is for a simple 8-bit processor.1

Footnotes

  1. From Prof Moshovos’ lecture notes.