Computer Architecture (No Starch Press)

Author: Charles Fox
Publisher: No Starch Press
Date: May 2024
Pages: 560
ISBN: 978-1718502864
Print: 1718502869
Kindle: B0BZH1LB1F
Audience: General
Rating: 4
Reviewer: Harry Fairhead
No, not architecture via a computer - the architecture OF computers.

Computer architecture is the fancy way of saying how computers work - or it can be. There are books on computer architecture that are about how you design a computer. This one is about explaining how computers work with a side order, a very big side order of history. If you where there while computers developed from tubes to transistors and beyond then you attitude towards the history might be different from a recently born innocent. You might enjoy it because you remember it and like a trip down memory lane or you might find it tedious or just pick holes in it - not as I remember it. As to how a computer works well that is both a long and a short story depending on how you tell it. The short version is about bits, binary, logic and how these can be used to create a computer. The long version is about all of these things but goes into details of how these things are implemented by tubes, transistors, integrated circuits and so on. This book gives you the long version complete with a big dollop of history. My guess is that if you aren't interested in the history you will find this book less than successful.

Banner

The book starts off with a look at Fundamental Concepts which starts with the history of precomputer computing and we get some very interesting descriptions of Babbage's machines. Then on to early mechanical and electronic machines and finally the latest stuff involving the internet and the cloud.

My biggest complaint is the use of the term Church computer. No not a computer that you use in a church but one that we would usually call a Turing equivalent. I don't know anyone who uses the term and neither did Gemini - until I provided chapter and verse.

Personally I understand "Church computer" as referring to the fact that Alonso Church proposed the idea of a universal computer at around the same time as Turing. But "Church computer" is not standard terminology and the reader needs to be told this to avoid future embarrassment. The book also presents a very fuzzy view of computing - it doesn't distinguish between analog and digital computation, for example. I was left fairly unsettled by the end of the chapter and this feeling continued for the rest of the book.

Next we move onto data representation. There's a good and detailed look at representation, but you will probably end up knowing more than you need to about number base systems. The final chapter in the section gives an outline of what a CPU based machine would look like. This would have been so much better if we had had some discussion of what a Turing machine is before hand. It is also worth mentioning at this early stage that the book doesn't avoid using mathematical notation at the drop of a hat.

Part II is called The Electronic Hierarchy which takes us though the recent history of electronic devices. It starts off with pre-electronic history with water values and works it way up to tubes, transistors and so on. The problem here is that you don't need to know the solid state physics explanations of how a semiconductor junction works to understand how a transistor behaves and is used. Nor do you need to know anything about a transistor to know how a logic gate works. The next chapter is on logic gates and relates the theory to the practice of using 74 TTL devices. This is used in the next chapter to build combinatory logic and clocked logic - better known as asynchronous and synchronous logic. This is in turn built on to show how a CPU can be implemented using the history of Machester's Baby computer as an example. Advanced CPU design comes next, but in this context advanced means the use of registers, addressing modes and so on.

We do get to pipelining and out-of order execution but not in depth. The penultimate chapter of the section is about I/O which is a way of discussing polling, interrupts and other such ideas. The final chapter is on memory and it includes caching, secondary storage and so on.

The final part of the book is about examples. The first chapter discuses retro architecture - the 6502 and then the 68000. These are nice cpus to discuss because they were much more logical than the 8080 type devices. Personally I'd have used the 6800 and then the 68000 - so logical that I still miss them both.

The next chapter is on embedded architectures and is really about real world interfaces - AtoD, DtoA and so on. The example is the ATmega based Arduino family. Next we have desktop architectures and of course this is all about th x86 family and it leaves out as much as it get in. This is a subject that could easily fill a book of its own. For example, the tiny section on segmented memory does mention that we don't use it any more but not much about why it was needed in the first place.  The chapter on smart architectures is really just about RISC as an alternative to CISC and RISC-V. A chapter on parallel architectures follows - SIMD, GPUs and so on. The book closes on a look at future architectures - optical computers, DNA computers, neural networks and quantum computers. All covered at a depth that simply means you know they exist rather than something deep about them.

Verdict:

This is a book that majors on a historical account of what happened and some of the ideas and technology behind it. While it follows a fairly routine course through the material - logic, gates, combinatorial logic, sequential logic, CPUs, memory and so on it uses history as its organizing principle and not principles of operation. There are much better books that will tell you about how computers work without the extras. However, if you want the extras, the history in particular, then you might well like this particular approach.

To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.

Banner


The Rust Programming Language, 2nd Ed

Author: Steve Klabnik and Carol Nichols
Publisher: No Starch Press
Date: June 2023
Pages: 560
ISBN: 978-1718503106
Print: 1718503105
Kindle: B0B7QTX8LL
Audience: Systems programmers
Rating: 4.8
Reviewer: Mike James

There's a new edition of what has become the standard text on Rust. Has it matured along with [ ... ]



Racket Programming the Fun Way

Author: James W. Stelly
Publisher: No Starch Press
Date: January 2021
Pages: 360
ISBN: 978-1718500822
Print: 1718500823
Kindle: B085BW4J16
Audience: Developers interested in Racket
Rating: 4
Reviewer: Mike James
If you have ever wanted to Lisp then try Racket.


More Reviews

Last Updated ( Wednesday, 11 December 2024 )