Aaron C. Lindsay
Summary
- I am a software engineer and processor architect with 12 years of professional experience distilling challenging problems down to their core and developing the best solutions within given constraints.
- I methodically debug elusive problems, chasing them across language and project boundaries.
- I am a skilled communicator, which I use to ensure my solutions address the needs of others.
- I don’t like repeating myself - I am liable to automate anything worthwhile.
Related Experience
- Ampere Principal Senior Architect - August 2018 to present
- Modeled performance of next-generation CPU designs, allowing accurate performance projections
- Uncovered/prevented performance and functional defects through performance validation of RTL/verilog design and (micro)architectural study
- Proposed and studied feasibility and efficiency of potential CPU microarchitectural features
- Designed and implemented methodology to collect workloads for processor performance model using QEMU, also contributing to upstream development of its plugin interface
- Conceived of and implemented technology to collect identical sections of workload execution in different formats to allow performance validation across simulation platforms
- Qualcomm Senior Engineer - August 2012 to August 2018
- Developed lightweight containers, Python workloads API, and ptrace-based tools to accelerate data-gathering and analysis for software and hardware optimization by enabling automated profiling across arbitrary workloads
- Maintained in-house Linux distribution, authoring kernel patches and custom packaging to support modeling
- Debugged Linux kernel and application functionality and performance at all levels – from high-level software using gdb to custom model instruction traces and processor pipeline interactions
- Supported mapping performance data from software processor models to benchmark source code symbols by adding semihosting support for perf events in the Linux kernel
- Influenced next-generation processor design via micro-benchmarks and innovative workload sampling methods, reducing the required performance model runtime over 1000x
- Pioneered basic block vector-based validation for model workloads, ensuring trusted results for critical microarchitectural decisions – achieved correlation error of only 1% between software models and silicon
- Adapted open-source software to speed up workload creation and contributed changes upstream, including emulated ARM PMUv3 (performance monitor) for QEMU
- Real-time Linux Systems Research at Virginia Tech - August 2010 to May 2012
- Formulated and empirically evaluated cache-aware real-time scheduling algorithms and partitioning schemes
- Researched and implemented techniques for quickly communicating kernel scheduling decisions to user space
- Qualcomm Software Development Engineer - Summer 2011
- Developed and supported snapshot/restore mechanism for next-generation mobile processor simulator
- Co-developed 'fast-forwarding' for the same processor performance model
- Virtual Environments Research in Computer Science - Spring 2010
- Conducted user studies testing the effects of interaction fidelity on procedure memorization
- Developed test environment using Blender, Python, and interfaced with VR hardware using C++
- IBM Emerging Technologies (jStart Team) - January 2009 to February 2010
- Architected, programmed, tested, and presented new distributed mashup technology utilizing XMPP, custom Java server, MySQL, HTML5, JavaScript, and CSS
- Granted patent US20110161833 for "Distributed Multi-User Mashups"
Technical Hobbies
- Develop open-source software – recently personal finance/accounting software in python, Go, and ReactJS
- Administer web services for family/friends using Ansible, including email, wiki, personal cloud, and git
Expertise
Languages:
Assembly (ARM), (Ba)sh, C, C++, Go, HTML/CSS, JavaScript, make, Python, (reading) verilog
Skills:
Design/develop/debug applications, libraries, and operating system kernels (Linux), optimize for performance (from processor microarchitecture to assembly to web applications), construct software CPU models, debug complex multi-system problems, Linux/Unix administration, automation, data analysis
Education
Virginia Polytechnic Institute and State University (Virginia Tech), Blacksburg, VA- M.S. Computer Science and Applications (3.95/4.0 GPA) - June 2012
- B.S. Computer Science / Math Minor (Summa Cum Laude - 3.90/4.0 GPA) - December 2010