|
|
|
Abrash dropped off the radar screen to pursue his career at Microsoft and then ID Software about the time Pentium sales were really ramping up, and no one emerged to take his place -- until now. Software engineer Rick Booth, a 17-year veteran of the video game and digital video industries, has delivered the most interesting and astute treatise on performance programming that I've read in many years. The Intel Pentium, and its hideously complex and barely-deterministic successor the Pentium Pro, have met their match in Inner Loops.
The first section of the book, entitled "Theory," focuses on the Intel 32-bit architecture and the mechanics of 32-bit assembly language programming. A quick introduction to the instruction set and MASM 6's structured syntax is followed by an overview of C code generation and detailed chapters on specific optimization issues for the 486, Pentium, Pentium Pro, and MMX. There is much precious information here that I have never seen spelled out clearly anywhere else, presented in a format that makes it straightforward to compare one processor's idiosyncracies against the others.
The second part of Inner Loops, entitled "Practice," consists of short chapters exploring a number of different optimization scenarios: moving memory, generating random numbers, hashing, binary tree searching, sorting, Huffman compression, matrix multiplication, and JPEG image decompression. Booth makes these topics sparkle with an easy writing style, a willingness to experiment, a rich reservoir of practical experience, an intimate familarity with the CPU architecture, and a comfortable relationship with the underlying mathematics.
When superscalar microprocessors first appeared, pundits predicted that assembly language programming would become totally irrelevant as an optimization tool -- only a compiler would be able to perform the code rearrangements that would wring maximum performance out of the new generation of CPUs. After reading Booth's book and marveling over his examples of coiled loops, tandem loops, cache-specific move subroutines, and other exotica, I see that the situation is exactly otherwise -- having a creative, persistent human mind in the picture is more important than ever.
-- Ray Duncan (duncan@cerf.net)
| Readability |
|
| Originality |
|
| Organization |
|
| Accuracy |
|
| Consistency |
|
| Depth |
|
| Timeliness |
|
| Editing |
|
| Design |
|
| Overall Value |
|
Explanation of ERCB rating scale: No stars = unacceptable, 1 Star = marginal, 2 Stars = average, 3 Stars = above average, 4 Stars = exceptional.