Michael Abrash
Encyclopedia
Michael Abrash is a technical writer
Technical writer
A technical writer is a professional writer who designs, creates, and maintains technical documentation...

 specializing in optimization and 80x86 assembly language
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...

 programming, a reputation cemented by his 1990 book Zen of Assembly Language Volume 1: Knowledge. The original 8086 processor, the focus of the book, was several generations behind the state of the art by the time the book was published. Related issues were covered in his later book Zen of Graphics Programming. He frequently begins a technical discussion with an anecdote that draws parallels between a real-life experience he has had, and the article's subject matter. His prose encourages readers to think outside the box and to approach solving technical problems in an innovative way.

Game programmer

Before getting into technical writing, Abrash was a game programmer
Game programmer
A game programmer is a software engineer, programmer, or computer scientist who primarily develops codebase for video games or related software, such as game development tools. Game programming has many specialized disciplines all of which fall under the umbrella term of "game programmer"...

, having written his first commercial game in 1982, Space Strike
Space Strike
Space Strike is a 1982 computer game for the IBM PC family of computers, created by Michael Abrash and published by Datamost. Space Strike is essentially a clone of the popular Space Invaders video game of the late 1970s....

for the IBM PC
Personal computer
A personal computer is any general-purpose computer whose size, capabilities, and original sales price make it useful for individuals, and which is intended to be operated directly by an end-user with no intervening computer operator...

. The game was a PC booter
PC booter
A PC booter, or booter, is a type of software for home computer era personal computers that was loaded and executed in the bootup of the computer, from a bootable floppy disk, rather than as a regular program; a booter thus bypassed any operating system that might be installed on the hard disk of...

. Other games he wrote were Cosmic Crusader
Cosmic Crusader
Cosmic Crusader is a 1982 computer game for the IBM PC family of computers, created by Michael Abrash and published by Funtastic....

(1982) and Big Top (1983) for the same system. After working at Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...

 on graphics and assembly code for Windows NT 3.1
Windows NT 3.1
Windows NT 3.1 is the first release of Microsoft's Windows NT line of server and business desktop operating systems, and was released to manufacturing on 27 July 1993. The version number was chosen to match the one of Windows 3.1, the then-latest operating environment from Microsoft, on account of...

, he returned to the game industry in the mid-1990s to work on Quake for id Software
Id Software
Id Software is an American video game development company with its headquarters in Richardson, Texas. The company was founded in 1991 by four members of the computer company Softdisk: programmers John Carmack and John Romero, game designer Tom Hall, and artist Adrian Carmack...

. Meantime, Abrash also worked on the popular game Doom. Some of the technology behind Quake is documented in Abrash's Ramblings in Realtime published on the Dr. Dobb's Journal
Dr. Dobb's Journal
Dr. Dobb's Journal was a monthly journal published in the United States by CMP Technology. It covered topics aimed at computer programmers. DDJ was the first regular periodical focused on microcomputer software, rather than hardware. It later became a monthly section within the periodical...

. After Quake was released, Abrash returned to Microsoft to work on natural language research, then moved to the Xbox
Xbox
The Xbox is a sixth-generation video game console manufactured by Microsoft. It was released on November 15, 2001 in North America, February 22, 2002 in Japan, and March 14, 2002 in Australia and Europe and is the predecessor to the Xbox 360. It was Microsoft's first foray into the gaming console...

 team, until 2001.

In 2002, Abrash went to work for RAD Game Tools
RAD Game Tools
RAD Game Tools is privately held company owned by Jeff Roberts and Mitch Soule based in Kirkland, Washington that develops video and computer game software technologies which are licensed primarily by video game companies. RAD Game Tools is somewhat unusual among middleware companies as they...

, where he co-wrote the Pixomatic software renderer
Software rendering
In the context of rendering , software rendering refers to a rendering process that is unaided by any specialized graphics hardware, such as a graphics card. The rendering takes place entirely in the CPU...

, which emulates the functionality of a DirectX 7-level graphics card and is used as the software renderer in such games as Unreal Tournament 2004
Unreal Tournament 2004
Unreal Tournament 2004, also known as UT2K4 and UT2004, is a futuristic first-person shooter computer game developed by Epic Games and Digital Extremes...

. At the end of 2005, Pixomatic was acquired by Intel. When developing Pixomatic, he and Mike Sartain designed a new architecture called Larrabee, which now is part of Intel's GPGPU
GPGPU
General-purpose computing on graphics processing units is the technique of using a GPU, which typically handles computation only for computer graphics, to perform computation in applications traditionally handled by the CPU...

 project.

Gabe Newell
Gabe Newell
Gabe Logan Newell is the co-founder and managing director of video game development and online distribution company Valve Corporation.-Work:...

, CEO of Valve
Valve Corporation
Valve Corporation is an American video game development and digital distribution company based in Bellevue, Washington, United States...

, has said that he has "been trying to hire Michael Abrash forever. [...] About once a quarter we go for dinner and I say 'are you ready to work here yet?'" In 2011 Abrash made the move to join Valve
Valve Corporation
Valve Corporation is an American video game development and digital distribution company based in Bellevue, Washington, United States...

.

Technical writer

Michael Abrash wrote in the 90s several influential books and other publications which gave him a reputation as good technical writer among the software engineering community. In his 1994 book Zen of Code Optimization: The Ultimate Guide to Writing Software That Pushes PCs to the Limit, Abrash presents principles and theory applicable to today's programmers. The key point of the book was that performance must always be measured, and the book included a measurement tool called the Zen Timer to check if theoretical code optimizations actually worked. The presentation of step-wise program refinement empirically demonstrated how algorithm re-design could improve performance up to a factor of 100. Assembly language re-coding, on the other hand, may only improve performance by a factor of 10. Abrash also showed how elusive performance improvement can be. Simply improving performance in one sub-routine would only expose bottlenecks in other routines and so on. Finally, he demonstrated processor-dependent assembly-based performance improvements by comparing assembly language optimizations across X86 family members.

Another lesson Abrash offered was how hard-earned performance rewards by such micro optimizations could disappear or even make the program execute slower. Abrash was able to gain performance by carefully counting clock cycles of each instruction and ordering instructions in such a way that they used a minimal number of clock cycles. However, the number of clock cycles per instruction changed with new implementations of the x86 architecture and, as a result, his performance gains were lost from one generation to the next. For example, the bit-oriented "XOR EAX, EAX" (example in Intel assembler syntax) instruction was the fastest way to set a register to zero in the early generations of the x86, but most code is generated by compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

s and compilers rarely generated XOR instructions, so the IA designers decided to move the frequently occurring compiler generated instructions up to the front of the combinational decode
Parsing
In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens , to determine its grammatical structure with respect to a given formal grammar...

 logic, making the literal
Value (computer science)
In computer science, a value is an expression which cannot be evaluated any further . The members of a type are the values of that type. For example, the expression "1 + 2" is not a value as it can be reduced to the expression "3"...

 "MOV EAX, 0" instruction execute faster than the XOR instruction. Still, carefully hand optimized assembler code will in general perform well on later x86 processors, even without retuning for the new architecture. The reason is that the optimization policies change only gradually between the architectures, so that many optimization assumptions valid for the original architecture still hold on the new architectures, for example "integer arithmetic is significant faster than floating point arithmetic" or "minimize memory accesses for maximum register usage".

In the year 1997 Abrash published the Graphics Programming Black Book, primarily based on his experiences and optimizations with the Quake 1 graphic subsystem.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK