This is the best book I've found on self-learning computer organization. Typically references on this subject are unwieldy manuals, and not the best for students looking to gain a holistic understanding of what goes on under the hood of a computer. The few textbooks that exist for this subject seem to lack presenting the birds eye view as well. All in all, tackling this subject seemed to me almost hopeless without an instructor or a course to guide you along.
However, this book provides the much needed chronology so to serve both as a good self-learning and reference text. The book starts with high level understanding with appendices that dive into details of specific instruction sets. It takes a lot of patience to get through the topics, but the explanations are comprehensive. It starts at the very basics and doesn't assume a ton of knowledge.
I haven't tried many of the problems, so I can't speak for the exercises.