Автор: Charles Fox
Издательство: No Starch Press
Год: 2024
Страниц: 499
Язык: английский
Формат: pdf (true)
Размер: 30.8 MB
Not since the 1980s has computer architecture been so exciting! This book captures the moment, mining the history of computing to teach key concepts in modern hardware design and introduce the neural and quantum architectures of the future.
Computer Architecture is an in-depth exploration of the principles and designs that have shaped computer hardware through the ages, from counting devices like the abacus, to Babbage’s Difference Engine, to modern GPUs and the frontiers of quantum computing.
This engaging blend of history, theory, hands-on exercises, and real-world examples is sure to make for an insightful romp through a fast-changing world. You won’t just read about computer architecture, you’ll also gain the understanding to touch, build, and program it. You’ll explore the basic structures of a CPU by learning to program a Victorian Analytical Engine. You’ll extend electronic machines to 8-bit and 16-bit retro gaming computers, learning to program a Commodore 64 and an Amiga. You’ll delve into x86 and RISC-V architectures, cloud and supercomputers, and ideas for future technologies.
Programming today is quite different. In most application-level programming, there are many levels of software hierarchy insulating the programmer from the hardware. You might program in a language whose types bear little relation to those of the processor and memory. Those types spare you from thinking in terms of memory addresses—or at least they sit on an operating system that replaces physical with virtual memory addresses and prohibits access to programs stored in hardware other than via some abstracted interface of system calls. As a result, when programmers from the 8-bit era see today’s reconstructed Android and jаvascript versions of their games, they can find them inauthentic. The games have lost the intimate connection to the hardware that inspired and constrained them.
Some people, systems programmers, design and maintain the stack of tools mediating between hardware and software, but everyone else sits on top of that stack. Nevertheless, those tools still connect you to the underlying hardware, albeit indirectly, and if you understand the hardware’s structure, you can often make more effective use of the tools at all levels. You can also take better measurements of how the tools are performing and use that information to make smarter choices in your programs. You might use a more efficient algorithm or change how some process is implemented.
Programmers who really care about high performance, such as writers of game engines and science and financial simulations, can benefit from cutting through some of the layers of the stack and talking directly to the “bare metal” hardware. This kind of programming, known as assembly programming, is rare today, since optimizing compilers can generally beat most handwritten assembly attempts; still, some programmers like to move closer to the metal. They might do this by switching from a memory-managed language to a pointer-based one, or from a language using symbolic types to languages using the machine’s own types. For many decades, the lower-level language of choice has been C, though new contenders, such as Rust, are always emerging.
You’ll also learn:
• How to represent data with different coding schemes and build digital logic gates
• The basics of machine and assembly language programming
• How pipelining, out-of-order execution, and parallelism work, in context
• The power and promise of neural networks, DNA, photonics, and quantum computing
Who Is This Book For?
Computer architecture is one of a few subjects that separate full-blown computer scientists from mere programmers. If you’re an undergraduate Computer Science student, it’s probably a requirement for your degree. If you’re a self-taught programmer or hacker, it may be a subject you wish to learn more about, both to make your programs run more harmoniously with your hardware and as a badge of professionalism that many employers look for. This book assumes you know some basic high school programming, math, and physics, but otherwise is self-contained. It can serve as a textbook for the hardware requirements of an undergraduate computer architecture degree or as a first resource for independent learners.
Contents:
Скачать Computer Architecture: From the Stone Age to the Quantum Age