John W. Haskins, Jr.
In December 2002, I became a full research staff member at IDA CCS. In April 2007, I left IDA CCS to join NVIDIA's CUDA (Compute Unified Device Architecture) group. In January 2009, I joined Qualcomm as an optimization engineer on the Linux team. In March 2013, I joined NetApp as a member of the Advanced Technology Group. And in July 2016, I returned to Qualcomm as a member of the microprocessor Research and Development team.
My resume (PDF document) may be viewed here.
My grand research vision is to quantitatively characterize computing
efficiency along several axes: power, instruction throughput,
and resource utilization. Much research has been done to produce
faster microprocessors, and trail-blazing work at Transmeta,
ARM, Intel, etc., have produced CPUs that consume less power. I would like
to combine the subdisciplines of microarchitecture, compilers, and
operating systems to develop maximally efficient computing machines.
Other than prediction hints and predication, what more can a compiler offer to make branch prediction more accurate? Better yet, can the hardware branch predictor be done away with in toto? What other than page coloring can the operating system contribute to cache efficiency? We microarchitects have built ever wider pipelines, capable of keeping more instructions in-flight, while juggling the order of their dispatch and execution among several (sometimes redundent) functional units, with caches several times more capacious than all of main memory in my first 8088! But did we ever fully realize the potential of simpler, less resource-hungry designs?
My hypothesis is no, but once I have adequately defined and characterized
computing efficiency, I believe we will, and will achieve performance
(i.e., speed of computation) similar to less efficient contemporary
designs for a fraction of their cost.
About Me Personally
When I'm not doing research I like to work out
(max bench press ever is 345 pounds; current max is 310 pounds... I gotta get
back in shape), and watch
my favorite movies: Predator, Tombstone, Heat,
New Jack City, The Incredibles, Hulk,
The Incredible Hulk, Cloverfield, etc. More than all
those passe-temps, however, I enjoy time with my wife Latitia
and my daughters Jasmine, Jade, and Jinjer; often, a simple trip to the
pizza parlor is a warm time of laughter, sharing, and restoration.
I like to read a LOT. Here is a list of tomes that I have recently completed (as well as a handful that I finished a good while ago). I may eventually get around to highlighting my favorites and possibly even reviewing them. Through reading, I have discovered a profound interest in history, law, and economics; I have always enjoyed (auto)biographies, thrillers, and science fiction. A few of my favorite books include: The Founding Brothers, John Marshall: Definer of a Nation, Free to Choose: A Personal Statement, The Rise of Theodore Roosevelt, Hannibal, and Altered Carbon. (My recreational reading has slowed WAY down since I started law school. The crushing preponderance of my reading is now in my casebooks.)
My sports of choice are weight lifting and tennis. And, as of December 2013, jogging (which helped me to drop 20 pounds in 6 months).
Yo hago estudiar español. Cada día, me gusta leer
Entiendo mucho cuando escucho o leo, pero no puedo hablar o escribir
muy bien, aún. Puedo leer algunos portugués y francés,
I like to study advanced mathematics
(although, I never found the topology text that I could follow...
but I'm still looking),
and reading about interesting microarchitectures, my favorite of which
is the IBM PowerPC 970.
Other curious architectures that I enjoyed learning about include
Transmeta's Crusoe, Intel's Itanium 2, Fujitsu's SPARC64 V, and the
venerable Alpha 21264 and Motorola 68060.
My favorite OS is Linux. I have also taken a liking to Professor Tanenbaum's Minix 3 microkernel operating system; it is cleanly, and elegantly designed, and easy to grasp as a user, an administrator, and a kernel developer.
My favorite programming languages are C and assembly: pure, low-level,
no-safety-net, I-know-what-I'm-doing, don't-need-a-language-to-hold-my-hand,
hard-core coding. Among assembly languages, I am most proficient in
x86 and ARM,
familiar with SPARC, MIPS, 680x0, and need to learn PowerPC. (How hard
could it be?) Python is excellent, as well;
it's an object-oriented programming language done right... and I don't
much like object-oriented programming; ditto for Scheme and functional
Software I Have Written