Michael Abrash

Michael Abrash

Michael Abrash is a technical writer specializing in optimization and 80x86 assembly language programming, a reputation cemented by his 1990 book Zen of Assembly Language Volume 1: Knowledge.[1] 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.[2] 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.

Contents

Game programmer

Before getting into technical writing, Abrash was a game programmer, having written his first commercial game in 1982, Space Strike for the IBM PC. The game was a PC booter. Other games he wrote were Cosmic Crusader (1982) and Big Top (1983) for the same system. After working at Microsoft on graphics and assembly code for Windows NT 3.1, he returned to the game industry in the mid-1990s to work on Quake for id Software. 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.[3] After Quake was released, Abrash returned to Microsoft to work on natural language research, then moved to the Xbox team, until 2001.

In 2002, Abrash went to work for RAD Game Tools, where he co-wrote the Pixomatic software renderer, 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. 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 project.[4]

Gabe Newell, CEO of Valve, 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?'"[5] In 2011 Abrash made the move to join Valve.[6]

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.[7][8] In his 1994 book Zen of Code Optimization: The Ultimate Guide to Writing Software That Pushes PCs to the Limit,[9] 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 compilers 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 logic, making the literal "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,[10][11] primarily based on his experiences and optimizations with the Quake 1 graphic subsystem.

References

  1. ^ Abrash, Michael (January 1990). Zen of Assembly Language: Knowledge. Scott Foresman Trade. ISBN 0673386023. 
  2. ^ Abrash, Michael (1994-01-15). Zen of Graphics Programming: The Ultimate Guide to Writing Fast PC Graphics. Coriolis Group; Bk&Disk edition. ISBN 188357708X. 
  3. ^ Abrash, Michael (1996-02-01). "Ramblings in Realtime". www.drdobbs.com. http://www.drdobbs.com/184410037. Retrieved 2010-07-10. 
  4. ^ Abrash, Michael (2009-04-01). "A First Look at the Larrabee New Instructions (LRBni)". www.drdobbs.com/architecture-and-design. http://www.drdobbs.com/architecture-and-design/216402188. Retrieved 2010-07-10. 
  5. ^ Walker, John (2007-11-21). "RPS Exclusive: Gabe Newell Interview". Rock, Paper, Shotgun. http://www.rockpapershotgun.com/2007/11/21/rps-exclusive-gabe-newell-interview/. Retrieved 22 January 2010. 
  6. ^ Crossley, Rob (2011-05-13). "Valve hires world-class development trio". Develop. http://www.develop-online.net/news/37665/Valve-hires-world-class-development-trio. Retrieved 16 May 2011. 
  7. ^ Hague, James (2008-02-18). "Five Memorable Books About Programming". prog21.dadgum.com. http://prog21.dadgum.com/19.html. Retrieved 2010-07-10. 
  8. ^ Atwood, Jeff (2008-02-19). "There Ain't No Such Thing as the Fastest Code". www.codinghorror.com. http://www.codinghorror.com/blog/2008/02/there-aint-no-such-thing-as-the-fastest-code.html. Retrieved 2010-07-10. 
  9. ^ Abrash, Michael (1994-12-08). Zen of Code Optimization: The Ultimate Guide to Writing Software That Pushes PCs to the Limit. Coriolis Group Books. ISBN 1883577039. 
  10. ^ Abrash, Michael (July 1997). Graphics Programming Black Book. Coriolis Group Books. ISBN 1576101746. 
  11. ^ Abrash, Michael (2001-11-01). "Graphics Programming Black Book". www.drdobbs.com/high-performance-computing. http://www.drdobbs.com/high-performance-computing/184404919. Retrieved 2010-07-10. 

External links


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Look at other dictionaries:

  • Абраш, Майкл — Майкл Абраш  программист и технический писатель, специализирующийся на оптимизации кода, программировании на ассемблере под архитектуру 80x86. Репутация специалиста закрепилась за ним после появления в 1990 году его книги Zen of Assembly… …   Википедия

  • Mode X — is an alternative video graphics display mode of the IBM VGA graphics hardware that was popularized by Michael Abrash, first published in July 1991 in Dr. Dobb s Journal, republished in chapters 47 49 of Abrash s Graphics Programming Black Book… …   Wikipedia

  • Funtastic — was a small software design company that operated in the early 1980s. Funtastic produced and published games mainly for the Apple II and IBM PC platforms. It operated from the Drexel Hill, Pennsylvania home of founder Dan Illowsky (previously of… …   Wikipedia

  • John Bridges (software developer) — John Bridges is the co author of the software program PCPaint and primary developer of the program GRASP for Microtex Industries with Doug Wolfgram. He is also the sole author of GLPro and AfterGRASP. His article entitled Differential Image… …   Wikipedia

  • Mode X — Le Mode X est un mode non documenté du VGA de résolution 320 × 240 × 8 (256 couleurs). Il fut découvert par de nombreux programmeurs, mais le premier à l avoir popularisé, en le documentant et le nommant, est Michael Abrash dans les colonnes du… …   Wikipédia en Français

  • Quake — Infobox VG |title = Quake developer = id Software Midway Games (N64) Lobotomy Software (SS) Pulse Interactive (mobile) publisher=GT Interactive (PC) PXL computers (Amiga) MacSoft (Macintosh) Midway Games (N64) Sega (SS) Pulse Interactive (mobile) …   Wikipedia

  • Texture mapping — Texture maps redirects here. For the 2003 ambient album, see Texture Maps: The Lost Pieces Vol. 3. 1 = 3D model without textures 2 = 3D model with textures Texture mapping is a method for adding detail, surface texture (a bitmap or raster image) …   Wikipedia

  • Software rendering — In the context of rendering (computer graphics), software rendering refers to a rendering process that is unaided by any specialized hardware, such as a graphics card. The rendering takes place entirely in the CPU.IntroductionRendering everything …   Wikipedia

  • Cosmic Crusader — Developer(s) Michael Abrash Publisher(s) Funtastic …   Wikipedia

  • Big Top (video game) — Infobox VG| title = Big Top developer = Michael Abrash publisher = Funtastic designer = engine = released = 1983 genre = Arcade modes = Single player ratings = N/A platforms = IBM PC media = 5 frac14; disk requirements = input = Keyboard Big Top… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”