https://www.amazon.com/Digital-Design-Computer-Architecture-Harris/dp/0123944244
This book teaches you how to implement a 32-bits MIPS processor with single or multi-cycle design using verilog.
Is it still this way? I think I saw that modern curriculums were switching to RISC-V for educational purposes.
EDIT: using, e.g., this: https://www.amazon.de/Computer-Organization-Design-RISC-V-Architecture/dp/0128122757
I was confused too, it was in this book I read which is very informative about the hellish state of both 360 and PS3 CPU development;
​
https://www.amazon.co.uk/Race-New-Game-Machine-Playstation/dp/0806531010
There's a great book The Race for a New Games Machine from the IBM guys about this, Microsoft were able to get devkits out sooner than Sony because they released the CPU's from the factory straight into production hardware untested, unlike Sony who were more cautious. They also had the advantage of the ATi X800/PowerMac G5 combo they could give to devs to get started with, whereas the Nvidia and Cell combo wouldn't be ready until much later.
The Cell processor is incredibly powerful for certain types of operations, and the type of processing games require is not necesarilly one of them. The PS3 was really not designed for game developers, it was designed so that Sony could say it had the most powerful hardware on the market. DigitalFoundry actually goes over some of this history in their DF Retro on the Sony E3 conference the PS3 was revealed in, but basically there were many engineers at Sony thought fought against the idea of using this Cell processor in favor of something more developer friendly and ultimately failed.
Sony and Microsoft moved to x86 this past generation though because 1) it's way cheaper than paying for R&D on something totally new and different (Sony ate it big time during the PS3-gen for that, there's a couple of really great books about that time) and 2) video games have been designed for x86 processors for the past 2+ decades on PC so there is a wealth of resources available to designers and programmers.
There's a preview on Amazon that you can flip through: https://www.amazon.com/Game-Feel-Designers-Sensation-Kaufmann/dp/0123743281?asin=0123743281&revisionId=&format=4&depth=1
Arstechnicas "Inside the Machine" is an amazing book if you want to really learn how a CPU ticks.
Amazon link:
I would recommend the hardback variant.
The actual nuts and bolts of PC building and such is really simply enhanced through reading Wikipedia, really. Absorb specs and numbers and learn the history of things. Some of it will also only come with time and exposure and conversations about them.
Another great book (this is the RISC-V Edition, but you also have the classic MIPS edition) :
This is also a very very good book:
https://www.amazon.com/Inside-Machine-Introduction-Microprocessors-Architecture/dp/1593276680
I agree, particularly with the first paragraph.
Ben's CPU videos coupled with Harris and Harris https://www.amazon.co.uk/Digital-Design-Computer-Architecture-Harris/dp/0123944244 is a great way to get junior EEs started with FPGAs.
I would start from there (CPU), but you won't be missing or struggling with anything if you start from somewhere else, or jump around a bit.
To be fair, Ben Eater's 8-bit computer uses microcoded ROM for control of the processor, which is just one of many control schemes for a processor. Though, that's outside the scope of this comment.
OP, check out Digital Design and Computer Architecture for a good intro after you watch through some of Ben Eater's stuff. I'd HIGHLY recommend doing the questions at the end of each chapter to make sure you actually understand the stuff.
The book mostly covers question 3 (and I guess 4) above. 1 and 2 are, as others have stated, more VLSI questions.
On that front (again, briefly): the chip designers use hardware description languages (like Verilog and VHDL) to describe the functionality of the chip. They then use programs to convert it to an intermediary language called RTL (register transfer logic). They then "lay out" the chip - describe how they want things positioned with respect to one another) and the chip fabricator then uses libraries that they have to transfer the RTL to a series of photolithography masks… you know what. This process is too damned complex to go through right now. Sam Zeloof has a great series of videos on this. He built a chip fabrication set up in his folks' garage when he was in high school. He's insane.
Find it here on Amazon. It's actually a pretty good textbook and worth reading even if you're mostly a software developer.
https://smile.amazon.com/Computer-Organization-Design-RISC-V-Architecture/dp/0128122757
Just start writing the HDL. Put it on an FPGA.
Computer Organization and Design by Hennessy and Patterson is a very very good textbook on the subject.
These lectures from CMU are probably fine though I haven't watched them.
Hmm.. but then what is the point of __low_power_mode_off_on_exit() ? This goes counter to what I've read in https://www.amazon.com/MSP430-Microcontroller-Basics-John-Davies/dp/0750682760
(I'm trying it, and if it works, great, but I'm still confused :-/).
EDIT: Didn't work. The SR is pushed onto the stack when waking to service an interrupt then popped back--according to that book, anyway. so the device should go back to whatever mode it was in prior to servicing the interrupt. It seems like LPM0 isn't enabling interrupts. I'll try directly running the intrinsic to set the SR.
I also wouldn't hesitate to recommend Pong Chu's Verilog/VHDL books, which are very practical.
Digital Design and Computer Architecture, Second Edition is another book I recommend because it takes primitives and then successively builds components that are finally integrated to produce a RISC processor (bottom-up).
https://www.amazon.com/Digital-Design-Computer-Architecture-Second/dp/0123944244/
Other links you may want to check out:
https://www.reddit.com/r/ECE/comments/50tlkl/fpga_bookresource_reccomendations/d7c08i8/
You don't need architecture perse unless you want high performance. If you want high performance, you pretty much want to learn the equivalent of a class in computer organization and computer architecture. So if you aren't dealing with raw pointers directly, advanced multithreading, vector/simd math, HPC, 3d graphics, gpu cards, etc, you really don't need computer architecture. If any of those things interest you, you should probably learn it, and you can definitely learn it as you learn C++. If you are mainly dealing with C++ standard library and gui stuff, you will rarely encounter computer architecture topics.
The standard texts (and my favorites) are
http://www.amazon.com/Computer-Organization-Design-Fifth-Edition/dp/0124077269/ (Patterson and Hennesey).
http://www.amazon.com/Computer-Architecture-Fifth-Edition-Quantitative/dp/012383872X ( Computer Architecture, Fifth Edition: A Quantitative Approach, Hennesey)
Those are not referral links, and I recommend they be read in that order.
Some people might say those books are a bit rough for a beginner, so try to get a sample or borrow one to see if you like them. There are some other easier computer org /arch books out there but I'm not aware of any really good legally free ones off the top of my head.
I would like to thank you for the referral. It helped me a lot!
Would highly reccomend this: http://www.amazon.com/Inside-Machine-Introduction-Microprocessors-Architecture/dp/1593276680/ref=sr_1_2?ie=UTF8&qid=1444361271&sr=8-2&keywords=Inside+the+machine
I hope they do an updated version.
This is far and away your best introduction to the msp430:
http://www.amazon.com/MSP430-Microcontroller-Basics-John-Davies/dp/0750682760
TI's datasheets are quite good, and you will be able to understand them easily after reading the Davies book.
TI also provides example code in both C and assembly to demonstrate the basic using of just about every peripheral on every part. Those make for a great rosetta stone.
Sounds like cool stuff.
For Zynq specifics and great examples on using Vivado for Zynq SoC development, have you seen the Zynq Book? There is a lot of great information in there.
For bottom up courses on FPGAs I'm not super familiar with any. A great text book which simply covers introductory details on hardware design, FPGAs, and hardware description languages is Digital Design and Computer Architecture by Harris and Harris. Not all chapters of the book are relevant to what you're interested in, but some contain the introductory information I think you're looking for. If you're uninterested in paying for the book, it shouldn't be too difficult to find it online 😉.
Agree with Patterson & Hennesy and they also by chance wrote the graduate textbook as well:
Googling around, it seems that book is also available in Chinese as well. You can have them purchase that with the English version too so they can read at the same time and get the necessary vocabulary in English.
I really like Inside the Machine.
It has clear explanations, great pictures, and builds up the discussion in layers.
There is a very VERY interesting book called Game Feel
​
https://www.amazon.com/Game-Feel-Designers-Sensation-Kaufmann/dp/0123743281
​
This book talks about the term "kinesthesia" that basically means how the game feels.
A very important part of the game feel is the game control, so it does not mean fast or slow, it means the proper choices for the achieving of a particular kinestetic feeling that will enable the game experience to be controlled and adressed in the designed way.
​
So in summary i would say, is a mix, you need game designers who know what they are doing + a development team skilled enough to land those concepts into a solid gameplay.
"nand2tetris" has already been mentioned and I would start there. If you want to play with FPGA stuff to build hardware in software, have a look at https://www.amazon.com/Digital-Design-Computer-Architecture-Harris/dp/0123944244 as a supplementary resource.
A five-stage RISC-V pipeline with cache is a standard semester project for a group of 3-4 senior undergrad students. This is the standard textbook that walks through the course that typically accompanies the project. The course is typically called Computer Organization and Design as well.
​
The type of processor that AMD/Intel designs are incredibly complex in comparison. There is also a huge amount of work taking the design from synthesizable verilog that you run on FPGA to an actual ASIC. And verification, which is not typically done very well at the academic level. IMO, designing a simple core is a good, fundamental learning experience, but you'll learn much more from the "next steps" of adding advanced features, or adding the I/O and periphery that is expected of a processor.
You might want to get a good architecture book, like one of the Patterson and Hennesy books. It'll go through how things fit together at register level and even gives usable lock diagrams of various parts of the processor.
What an incredibly stupid and ignorant comment, The Race for a New Games Machine from the IBM guys who designed the Cell and the 360's Xenon, I'll give you a TLDR from memory,
circa 2000, IBM, Toshiba and Sony team up to design a new processor
circa 2002-2003, Microsoft rocks up to IBM and says hey I like that PPE you've got there that Sony just funded the development for, can I buy that
IBM and Sony have no exclusivity agreement so they say yeah sure
They (Microsoft/IBM/Toshiba) spend the next year and a half adding vectoring and some other stuff so that 3x PPE's from the Cell can be used in the 360 as it's CPU.
Without Sony & Ken Kutaragi, you'd have no Xbox 360 in it's current form in the first place.
I found the book Computer Organization and Design RISC-V Edition really nice for getting to know the inner workings. There is also a MIPS version of the book and I think I saw something about an ARM version as well.
Then if you are really going for it you could get a FPGA board from somewhere and implement your own mcu based on what you learned.