It's so great that you have come to this.
As they say, from the beginning learn the alphabet, and then for c++ start.
1. Charles Petzold "C. O. D. E."
A must-read. Very well chewed, all these bits, bit and .TD.
In the process of reading You, along with the author gradually building a computer, and simultaneously mastering the necessary background.
From the beginning understand the approaches to information encoding, not encryption, and the principles of presenting information in zeros and ones. Then understand the number system, then some of the chemistry and physics that would present as current flows through the wires. Then understand how to operate the relay, followed by the first logical elements on relays. Then together with the author collect different components, like memory, CPU based on a previously designed logic elements. In General, this is all going on while you are in the end not to build a computer and learn several basic assembler commands, simultaneously examining how to count in different number systems, a brief history of the development of the computer technology and all logic elements.
2. Andrew Tannenbaum's "Structured Computer Organization"
The idea is that you can even just start with this book, but all of those fundamental things that chew Petzold here will be mentioned in passing, but then goes more serious things to say about architecture. It will address the levels of modern processors, memory, assembler, interrupts, etc. etc. etc. to List all makes no sense, because the list is sooooo big. This is the most complete and detailed book about the architecture of computers. In principle, read it from cover to cover you'll be well enough to understand the architecture of the computers themselves.
3. J. Hennessy, D. Patterson "Computer Architecture A Quantitative Approach"
This not yet read, but judging by the content can be a great addition after Tannenbaum. Although, it can be quite a self-contained book on a level with the above-mentioned book.
Judging by the Preface and the contents in it in addition to examines Tannenbaum, a lot of attention is paid to concurrency, cloud, sharing resources, etc.
Can take it like this:
If you value time, then start immediately with Tannenbaum, but if it is difficult, then close and start read Petzold.
If time enough, then immediately read the Petzold, then Tannenbaum :) And this is the best option. IMHO)
Petzold very easy to read and interesting. I read it in one breath, but with Tannenbaum it's not so easy)
About relevance. True)
2 and 3 dismantled modern ARM-Cortex A8 and i7 processors, Nvidia Fermi, CUDA, etc.
Well, in the first book and this is not necessary)