




Bill Buzbee
The important stuff: married, with three kids and two dogs in a very
noisy house. Grew up in Kansas and moved to Silicon Valley in 1984.
Currently living in Half Moon Bay, a coastal town south of San Francisco.
For the last 20+ years, I've worked as a compiler and language tool software
engineer. Most of that was for Hewlett-Packard - the rest was a four-year
stint at a fun startup called Transmeta.
For the last ten years or so, I've specialized in dynamic translation,
instrumentation and optimization.
Currently, I have the very cool title of "Senior Research Scientist" at
Hewlett-Packard Laboratories in Palo Alto. Sadly, the title does not come
with a white lab smock and the mandate to create mutant superheroes (something
my six-year-old son suggested). Still, I do get to play with some very
cool secret stuff.
Computers are actually a second career for me. I grew up in and around
small daily newspapers. I began delivering papers at age 11 and became a
part-time sports writer at 13. By the time I went to college in the
mid-70's to get my journalism degree I was the assistant sports editor for the
local paper - responsible for stories, layout and headlines for the inside
sports pages.
I continued with journalism, eventually becoming the managing editor of the
Parsons (Kansas) Sun. During the late 70's and early 80's, small daily
newspapers were early adopters of computer technology. Excited by the
possibilities of using computers for information delivery, I quit my job and
headed back to school to learn about computers. My intent was to apply
what I'd learned to newspapers - but at the university I became fascinated with
computer language and never made it back to the newspaper business.
My homebrewcpu project has gotten vastly more attention that I've ever
imagined a silly nerd hobby project could get. It also enabled me to
finally impress the teen-age daughter. Not for doing my own computer, but
for getting a magazine article about me. I was the featured geek in the
summer 2005 issue of ExtremeTech Magazine (a PC Magazine spin-off):
ExtremeTech Interview
And finally, here's a recent resume:
William B. Buzbee
Twenty years of experience in compiler and
language tools. Past experience divided between production code development
(high-speed x86 interpreter, PA-RISC code generation, Ada debugger port,
run-time libraries) and research (hybrid x86 interpreter/fast translator,
optimized code debugging, dynamic translation, dynamic optimization). Named
sole or joint inventor on 26 US patents, two of which were featured in
Microprocessor Report’s Patent Watch column.
Was the technical architect of Hewlett-Packard’s
strategy to seamlessly support old PA-RISC applications on IA-64 using dynamic
translation. Acted as technology evangelist in applying dynamic translation
techniques to runtime optimization and application profiling. Successfully
proposed and helped staff two spin-off product efforts based on dynamic
translation , Carbon Fire and what continues today as HP's Caliper. Author of
Dr. Pat, a dynamic instrumentation toolkit used widely within HP for profiling
and research.
Hewlett-Packard Laboratories – Palo Alto, CA
10/03 to Present: Senior
Research Scientist (Printing and Imaging Research Lab)
·
Exploring applications of compiler
and computer system technologies to printing system problems.
Hewlett-Packard – Cupertino, CA
3/02 to 10/03: Software
Architect (Developer Resources Organization)
·
Lead technical investigator for
developer tool push into adaptive management. Led teams building SDK extensions
using Eclipse and Visual Studio frameworks.
Transmeta Corporation - Santa Clara, CA
9/98 to 3/02: Senior
Software Engineer, Code Morphing Software Section
·
Developed the x86 interpreter that
serves as the profiling engine and correctness safety net for the optimizing
translator component of Transmeta’s second generation microprocessor
(Efficeon). The interpreter has a novel design taking advantage of specially
developed hardware assists.
·
Joint developer of an experimental
FORTH-like hybrid x86 translator/interpreter intended to function as a “second
gear” between interpretation and heavyweight optimized translations.
Hewlett-Packard - Cupertino, CA
11/96 to 9/98: Dynamic
Optimization Architect – Performance Delivery Section
·
Provided the initial vision (and
name) for the “Carbon Fire” project, which sought to convert HP’s dynamic
translation and optimization expertise into a performance advantage (and market
differentiation) on IA-32 and IA-64 systems.
·
Developed “Helium Flame,” a
prototype PA-RISC to PA-RISC dynamic optimizer to demonstrate post-link
optimization of native code. It worked.
3/95 to 11/96: Object
Code Translation Architect – Software Migration Project
·
Created a dynamic translation tool
framework, Dr. Pat. (Dynamic Recompilation Program Analysis Toolkit). Dr. Pat
supported arbitrary user probe insertion, and the ability for probes to query
and modify machine state with full resumption. Dr. Pat was used in diverse
projects within HP, including several efforts at HP Labs.
·
In March of 1995, built a special
version of the toolkit to highlight the possibility of dynamic optimization.
Demonstrated a 6% speedup on a toy benchmark.
·
Designed, prototyped, demonstrated
and patented technique of “burst profiling” an application in which execution
alternated between unfettered native execution and execution under the control
of a dynamic translator.
·
Wrote a vision paper describing
the potential of dynamic translation when applied to run-time and profile-based
optimization. Paper widely read within HP, and led to the creation of the
Carbon Fire projects.
9/93 to 3/95: Lead
Software Engineer – Software Migration Project
·
First engineer assigned to the new
software migration project After studying the situation, concluded that the
plan of record, static object code translation, was the wrong approach, and
proposed a model based on dynamic translation. Designed and developed a dynamic
translation prototype to prove the viability. Convinced the skeptics, and
dynamic translation plan adopted.
8/84 to 9/93:
Language Tool Software Engineer – Various projects
·
Defined and implemented techniques
for debugging optimized code, worked on port of Ada compiler to PA-RISC, and
developed decimal and block move/compare support in PA-RISC code generator..
Education
 | 5,133,072 - RISC Code
Generation: Millicode |
 | 5,713,010 - Debugging
Optimized Code: Source Line Tracking |
 | 5,764,962 - Dynamic
Translation: Asynchronous Signal Handling |
 | 5,815,720 - Dynamic
Translation: Profile-Based Optimization |
 | 5,838,810 - Dynamic
Translation: Signal Hack |
 | 5,838,978 - Dynamic
Optimization: Profile Maturation |
 | 5,909,578 - Static &
Dynamic Optimization: Burst Profiling |
 | 5,911,073 - Dynamic
Optimization & Debugging: Parasite Injection Control |
 | 5,933,622 - Dynamic
Translation: Lightweight Asynchronous Signal Handling |
 | 6,052,530 - Dynamic
Translation: Retranslation to Recover Simulated Machine State |
 | 6,112,280 - Dynamic
Translation: Translation Cache Management |
 | 6,115,809 - Dynamic
Translation: Code Placement by Branch Prediction Class |
 | 6,148,437 - Dynamic
Translation: Region selection |
 | 6,164,841 - Dynamic
Optimization System |
 | 6,189,141 - Dynamic
Optimization: Hot Trace Selection |
 | 6,199,202 - Code
Migration: Cross-architecture Interoperability |
 | 6,205,545 - Dynamic
Optimization: Use of static branch prediction hints |
 | 6,219,832 - Dynamic
Translation: Signal Hack #2 |
 | 6,223,339 - Dynamic
Translation: Code placement to maximize fast branches |
 | 6,247,172 - Dynamic
Optimization: Optimizing across exception boundaries |
 | 6,275,981 - Debugging
Optimized Code: Tracking source line numbers during optimization
|
 | 6,314,560 - Dynamic
Optimization: More optimizing across exception boundaries |
 | 6,327,704 - Dynamic
Translation: Multi-branch Backpatching |
 | 6,330,691 - Debugging:
Using Dynamic Translation for Breakpoints |