NVIDIA
NVIDIA is seeking a highly skilled and creative Senior System Software Engineer to join our memory management team as part of the kernel SW org. As a system software engineer, you will work with a team of very hardworking software and hardware engineers involving a wide variety of technologies for both upcoming GPUs and SOCs. The work you do will be an integral part of building platforms that power data centers and client computing systems across the globe. If you are passionate about computer architecture and eager to develop groundbreaking GPU/SOC architectures from specification through implementation, we want to hear from you!
What You Will Be Doing:
Develop SW architecture and micro-architecture to advance the state-of-the-art in GPU/SOC memory management, optimizing for performance, complexity, effort, and schedule.
Design and implement kernel drivers and embedded software for NVIDIA's products, ensuring optimal performance and feature set on Linux and Windows-based operating systems.
Participate in performance simulation and analysis to improve memory access efficiency and overall system performance.
Implement and maintain high-level functional and performance models, and debug performance and functional issues with high-level models, emulation and silicon bringup.
Work closely with global teams across software, hardware, architecture, and OEM support, contributing to the development of future products and features.
Create architectural specifications and customer-facing documents, collaborating with industry partners to ensure comprehensive specifications that account for software interfaces to the GPU.
What We Need to See:
Master’s degree in Electrical Engineering, Computer Science, Computer Engineering, or related field (or equivalent experience).
8+ years of meaningful work experience in GPU or SOC Architecture and development, specifically in the area of SMMU, ATS, cache coherency
Strong expertise in low-level device drivers, operating system internals, and various device driver models.
Proficiency in C and C++ programming, with experience in solving complex problems and optimizing system performance.
Detailed knowledge of computer system architecture, including microprocessors, memory controllers, caches, buses, and DMA.
Strong communication and interpersonal skills, with a proven ability to work in a dynamic, product-oriented, distributed team environment.
Ways to Stand Out from the Crowd:
Experience with hardware memory management units, prefetching, memory coherency, and multi-core systems.
Deep understanding of SOC memory management, SMMU, ATS, cache coherency
Practical experience with Linux kernel development and contribution to the upstream community
Familiarity with system-level security concepts and embedded system software development.
A history of successfully mentoring junior engineers and interns, contributing to team growth and development.
You will also be eligible for equity and benefits. NVIDIA accepts applications on an ongoing basis.