The elements of computing systems building a modern computer from first principles - Nisan, Noam (MIT Press, 2005)