Source: https://www.ece.ubc.ca/~aamodt/papers/tgrogers.micro2012.pdf