John W. Haskins, Jr.

E-mail: predator@cs.virginia.edu


Professional Biographical Sketch

I earned my Bachelor of Science in computer science from Georgia Tech in 1997. Between the conclusion of my undergraduate studies and the beginning of my graduate studies, I worked as an adjunct research staff member at the Institute for Defense Analyses Center for Computing Sciences. In 2003, I received my Ph.D. in computer science from the University of Virginia. My doctoral advisor was Professor Kevin Skadron, head of the LAVA research group. In 2017, I received my J.D. from the North Carolina Central University School of Law.

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.

Research Interests

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 neighborhood 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 BBCMundo.com. Entiendo mucho cuando escucho o leo, pero no puedo hablar o escribir muy bien, aún. Puedo leer algunos portugués y francés, también.

My Geekiness

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 programming.

Software I Have Written

Publications

Personal Goals (Long- and Short-term)


Latest version: May 2017