The elements of computing systems building a modern computer from first principles - Nisan, Noam; Schocken, Shimon (Cambridge London MIT Press, 2008)