Senior, Software Simulation Engineer
Are you a Software Engineer with C++ and Python experience seeking a chance to to help enhance and maintain our gem5 infrastructure?
This is an opportunity to join ARM Research in Cambridge. We are seeking a highly motivated software engineer to join the ARM Research team to work on enhancing and maintaining our simulation infrastructure. In addition to maintaining existing simulation solutions, you will assist researchers in bringing up new workloads (for example Android, ChromeOS, and Linux). You will have a central software engineering function, working across multiple groups in ARM Research. These groups work on a wide set of topics including memory systems and interconnects, architecture and microarchitecture, and servers and high-performance computing.
ARM has invested considerable effort in creating an ARM-based system-simulation environment, built on the gem5 framework. The simulation environment is seeing wide-spread adoption across ARM, the ARM partnership, academia and wider industry--we aggressivly push our work upstream to improve the general state of simulation. We are looking for a motivated software engineer to help enhance and maintain our gem5 infrastructure.
Candidates must have strong C++ and Python skills, as well as previous experience with large software code-bases and OS-level work. Previous open source contributions, knowledge about architecture and micro-architecture, and experience bringing up Linux/BSD systems from scratch are a plus. An ideal candidate will be self-motivating and has experience interacting with open-source projects.
The software engineer will work in ARM Research to maintain simulation infrastructure as needed to enable the Research's wider mission. This includes:
- Maintaining existing gem5 and other simulation infrastructure.
- Assisting researchers in workload bringup. For example, building and maintaining new Android releases for use within ARM Research.
- Implementing and maintaining models of ARM System IP. For example, implementing a new interrupt controller model.
- Interacting with the external gem5 open source community.
- Planning and prioritising feature infrastructure work.
Based on the candidate's experience, the role can offer significant freedom to enhance and extend the simulation infrastructure and drive improvements in tools that are heavily relied-upon by the Research group.
Education & Qualifications
Bachelor degree in Computer Science, Computer Engineering, or equivalent experience. A Master degree is preferred. Additional relevant experience, such as prior open source contributions, is a plus.
- Excellent C++ knowledge (including some C++11 experience)
- Excellent Python knowledge
- Excellent debugging & problem solving skills
- Excellent software engineering skills including knowledge about data structure and algorithms
- Some simulation experience
- Express ideas and communicate effectively
- Listen to, understand, and clarify feature requests
- Schedule own workload and plan tasks independently
- Good inter-personal skills
- Willingness to be flexible and accept new challenges
- Knowledge of architecture and micro-architecture concepts such as pipelines, caching, coherence, and interconnects
- Experience with computer architecture simulators
- ARM Architecture knowledge (ARM Assembler)
- Shell programming
- Knowledge of distributed version control systems
- Experience interacting with open source projects
What are the desired behaviours for this role?
At ARM, we are proud to have a set of behaviours that reflect our unique culture and guide our decisions, defining how we work together to defy ordinary and shape extraordinary. These behaviours are assessed as part of the recruitment process:
- Partner and customer focus - Your tendency to put your partners and customers first in all that you do by understanding their needs and striving to achieve win-win solutions.
- Collaboration and communication - Your ability to forge lasting relationships which are built upon mutual trust, open communication and sharing of information and success.
- Creativity and innovation - Possessing a passion for driving continuous improvement through spotting opportunities and seeking the views of others.
- Team and personal development - You take time to drive your own development, whilst also encouraging team members and partners to do the same.
- Impact and influence - You listen to different perspectives, evaluate, persuade and carefully shape your work to deliver truly impactful results.
- Deliver on your promises - You demonstrate a can-do attitude and you drive to overcome obstacles, acting with a sense of urgency.