Huawei Technologies Research & Development (UK) Ltd
Jul 2024 - Present
2 years 3 months3 roles
CPU Researcher
ContractorActiveCambridge, England, United KingdomMay 2026 - Present5 monthsMay 2026 - Present
5 months
IndustryPart-timeHybridSkills:Computer ArchitectureCPU DesignAI WorkloadsPerformance OptimizationResearching CPU architecture optimizations for AI agentic workloads.
CPU Architect
InternCambridge, England, United KingdomOct 2024 - Apr 20261 year 6 monthsOct 2024 - Apr 2026
1 year 6 months
IndustryPart-timeHybridSkills:Computer ArchitectureCPU DesignVirtualizationPage TablesMemory ManagementHardware-Software Co-designLinux KernelQEMULeveraged the 128-bit extended PTEs developed during my internship to accelerate virtualized address translation. Designed and implemented a novel approach that fuses guest PTEs with host PTEs by securely relocating host translation metadata into the extended PTE space, achieving shadow page table performance levels without compromising security isolation. This work resulted in SagePTE, accepted at MICRO 2026. Additionally, developed extensive codebase and specifications exploring other applications of the additional 64-bit metadata space, including memory protection extensions, cache hints, and memory tiering annotations.
CPU Architect
InternEdinburgh, Scotland, United KingdomJul 2024 - Oct 20243 monthsJul 2024 - Oct 2024
3 months
IndustryFull-timeOn-siteSkills:Linux KernelQEMUARM64 AssemblyPage TablesComputer ArchitectureVirtualizationExtended Linux kernel page table entries (Level 3 entries) to 128-bit and modified QEMU to support this feature. QEMU modifications: fixed two-stage address translation issues, resolved address translation during page table walk, added configurable 128-bit PTE toggle. Linux kernel modifications: fixed early page table issues before transitioning to C code, resolved stack pointer overlapping with page table due to increased size during early boot, fixed early boot device mapping (map_fdt), resolved page table allocation/deallocation during boot, fixed kmem_cache indexing issues, addressed SLUB allocator randomization issues, added PTE setter/getter functions exported for kernel code, added syscalls to set/get PTEs from user space, implemented configurable 128-bit PTE support option. Developed test cases: kernel module tests for PTE modifications, user space performance tests, syscall tests for PTE set/get operations.
