Richard Gorton
161 Temple St.
Framingham, MA
01701
(508) 820-7672
http://gorton-machine.org/rick/professional/resume.html
General goals:Positions utilizing my technical and
creative abilities to convert blue sky ideas into usable tools and
products.
March, 2007 to present: AMD
Oct, 2001 to March, 2007: Cisco Systems, Inc. (formerly Okena, Inc.) Aug, 2000 to Aug, 2001: API NetWorks, Inc
May, 1992 to July, 2000: Compaq Computer Corp
(Digital Equipment Corp.) Dynamic binary optimization project initiator &
leader: StrongARM 1500 GNU tools project leader &
developer: GCC developer: Ported the sound driver subsytem from Linux/x86
to Linux/Alpha (kernel 1.3.57)
Supervised five
developers doing advanced development for a year. The StrongARM
projects were collaborative efforts with a corporate research group
in Palo Alto, my group, and various developers in the UK. The
Linux/Alpha platform development work was done jointly with
developers in the UK. The projects supervised were: GCC/StrongARM enhancement for
the StrongARM 1500 (FPU support)
Java JIT/JVM on
StrongARM development.
Linux/Alpha platform
development work.
Profile-directed
binary translation research.
Ongoing support for
two binary translator products.
JavaOS/StrongARM
proof of concept, through early development.
JavaOS/Alpha proof of concept. SunOS to OSF/1 binary translator co-initiator &
V1.0 project leader (FreePort Express) Prototype big-endian to little-endian binary
translator project leader and developer. Project goals were two
fold: an investigative effort to determine feasibility of
endian-converting binary translators, and to create a porting tool
for a single application for a customer. A working, usable tool was
delivered to the customer ahead of schedule, and enabled them to run their
application on Alpha systems.
MIPS Ultrix to DEC OSF/1 binary translator
developer and project leader (mx). Developer on a small team:
debugged and extended the translator and runtime; implemented and
ran test suites; performed performance analysis; implemented
performance improvements; and packaged the software using Digital's
installation tool. Project leader for V1.1, and V1.2 (current).
Translated benchmarks exceeded native performance at the initial
release of OSF/1 systems.
Oct, 1985 to May, 1992: Liant Software Corp. -
http://www.liant.com
Project leader for PL/I, FORTRAN, BASIC, and Pascal
compilers.
Jan, 1985 to September, 1985: Boston Systems
Office
Worked as part of a team writing a new generation of
VAX to 68K cross development tools.
May, 1983: B. Sc. Applied Computer Science,
University of Wisconsin Parkside
Patents, Publications & advisories:
Skills: Interception and manipulation of
system semantics at the instruction, library interface, and system
call levels, both inside the kernel and in user space. Specifically,
binary translators, binary optimizers, compilers, interpreters, and
behavior-based security systems. C,C++ and various assembly languages.
Executive Summary:
Over the years, I have built and shipped a lot of products which are either first-of-their-kind,
or very early (in terms of the overall industry). Lots of advanced product development work.
I have no particular desire to spend a lot of time working on minor changes/enhancements to
a mature software product. Generally, I get hired to design and implement significant
subsystems (mostly in user-space runtimes) where correctness requirements are very high,
because the code is being used for all applications on the system.
Experience:
With the cancellation of the DynOpt project, was transferred into the
GPU Developer tools group, to help with an in-flight OpenCL Debugger.
Learning OpenCL, wrote a from-scratch OpenCL app,
contributed to adding cpu-side image support to AMD's implementation of OpenCL.
Converted a customer provided CUDA benchmark to OpenCL.
Lots of focus on using Visual Studio and learning a lot more C++
Working on "the back end" (internals) of an OpenCL kernel debugger,
primarily focused on automated testing thereof. Conceptually, this is
a patch-the-IL-and-resubmit-to-lower-level-compilers approach, and is
not an interpreter or hardware-level debugger.
Wrote a test sequencer which works via api interposition, and is transparent
to application code (that is, arbitrary applications can be caused to
become tests, without requiring recompilation).
Wrote build environment for Linux (scons), hooked it (and automated unit
testing for the "back end") into Jenkins (Continuous Integration system).
First in the industry: A debugger capable of operating on OpenCL kernels.
Developer for a cancelled Dynamic Binary Optimizer product.
Utilizes on-chip performance counters to determine and optimize "hot" regions
of application code. Runs on 64-bit Linux systems, and various Windows systems.
Technically, it was an out-of-process, non-persistent DBO.
Architected & implemented various subsystems: code cache, inter-component
messaging and block patcher (for experimental code replacements) in the server;
most of the agent code (injected as an additional thread at process startup);
wrote the User Guide. Also initiated & managed our source migration to
a central source server and subsequent off-shore creation of a Windows
installer.
The runtime agent code had statistical data collection and primitive logging
facilities, performed code patching, jacketing/interposition of various
system APIs relevant to our dynamic optimizer on both Linux and Windows.
Researched and developed a dynamic whole program path profiler (as a
PIN tool to help validate our region
selection.
Various other utility tasks such as benchmarking, patching
binary-only applications (PovRay) so that it would work in our benchmark
harness; extending our build environment (scons), etc.
A significant amount of research and investigative prototyping was
required by all of the team members.
Early in industry: A whole program path profiler, capable of collecting
and storing the complete i-stream trace of significant applications (upwards of
10^12 instructions) with minimal slowdowns and without requiring enormous system
resources to collect and store the trace.
Previous mechanisms are largely unpublished (as in trade-secret or research) efforts
used by processor researchers at semiconductor corporations.
Early in industry: There are still no known instances of product
grade stand-alone DBO systems shipping.
Early in industry: There was a 1999 paper published about the taxonomy of
Host Intrusion Prevention systems; it is believed that Okena was the first to ship
such a software product. A large portion of my work was the design and development
of various components for the Solaris and Linux versions of the product.
Developer and Manager in an
advanced development group attached to Digital's Semiconductor
organization. Initially focused on constructing migration tools for
Alpha, then extended to building prototypes and enabler tools for
the StrongARM architecture as well.
Various projects included:
Research the feasibility and value of dynamic binary
optimization. Objective is to determine how to build a system which
will transparently, automatically, and dynamically improve
performance of arbitrary binary applications, through architectural,
micro-architectural, and value specialization optimizations. Wrote
initial concept white paper, defined goals, devised and implemented
experiments to determine feasibility, practicality, and various
technical aspects of a dynamic binary optimization system. The
proof-of-concept system was demonstrated in September, 1998 at a
corporate analysts briefing, and showed a speedup of 8%. The work
resulted in being an invited speaker at HotChips 11.
First in the industry: An attempt at a product grade DBO.
Modify the GNU tools (gcc and gas) to support the
coprocessor instructions on the SA1500, and to generate code
sequences using these instructions. Modified GCC 2.8.1 to generate
the coprocessor instructions and was a mentor for the developer
modifying the assembler. The modified tools were delivered ahead of
business schedule, prior to the availability of functioning silicon.
The tools were further modified to work around pass 1 processor
bugs. The delivered tools enabled the bootstrapping of a prototype
board featuring NetBSD, Dolby AC-3, and MPEG-2 decoding.. Also wrote
multiple articles about using the GNU tools for a customer
newsletter.
Benchmarked, analyzed, and
modified egcs on Alpha, resulting in a 5% SPECint95 performance
improvement under Digital UNIX.
Co-authored the initial
technical and business opportunity proposals; co-developed the
proof-of-concept prototype; and was the technical project leader up
to the release of version 1.0. FreePort Express was a freely
available (over the web) compiler-like tool which converts SunOS 4
(aka Solaris 1.x) applications into Digital UNIX executables. At the
peak of staffing, my development team consisted of 16 engineers,
including some in a clean-room environment.
First in the industry: An endian-converting binary translator
capable of handling generic executables as input.
First at Digital: The first software product at Digital made
available solely on the internet.
First in the industry: An endian-converting binary translator
First in the industry: an automatic (not requiring
expert knowledge of the application) binary translator for *IX source
and targets.
First at Digital: The binary translators our group worked on were
the first software products given away freely at Digital.
Completed 3 of the "4 Ports of the Apocalypse" as a member of the
porting group: Initial port of a compiler to a new platform,
Initial port of the Debugger, a port of RPG II, and porting
the compilers/debugger to a foreign language machine. As in all
of the output from all the utilities is in a language other than English.
HotChips 11 (Aug,
1999) Wiggins/Redstone: an online program
specializer
An associated (presumed dead as of 2010) patent application: computing
path profiles
Security advisory: discoverer of CERT-2006-1174 (useradd)
Dynamic Whole Program Profiling: dynamic whole program [path] profiling. Also at http://developer.amd.com/documentation/articles/assets/gorton_profiling.pdf
Isometric Paths: some notes about Isometric Paths. Also in
ODF format.
Other:
Director, Gorton Studios, Inc. Eagan, Minnesota
Endowment founder: Gorton Endowment for the Sciences, The Prairie School, Racine, WI
Endowment founder: CS2100 Endowment (Computer Science) University of Wisconsin Parkside, Kenosha, WI