Apple
22 Bishopsgate, London
Over 6 months, I have been helping the Power Team mostly with “Power Triaging”, which involves going through RTL simulations, identifying power saving opportunities, and then providing solutions to the RTL and micro-architecture if possible. We work on certain parts of the GPU IP that integrates into the SoC for the iPhones, iPads, and MacBooks. All power optimisations are done in RTL, and therefore nearly all power savings are dynamic power. I have been working both with the US and UK teams, which are separately responsible for different IP's within the GPU.
My main role has been developing my ability to efficiently and quickly identify power saving opportunities, and how to evaluate the ROI (return on investment) on these changes if they end up affecting other areas of concern such as timing, area and/or performance. Sometimes I have been required to discuss changes with other teams such as the performance team or the physical design teams to describe the savings from my changes at the cost of performance or timing or area, and gain approval from them. Within the IP's of concern, it is important to start with parts of the IP that consume the most power, as changes there are likely to bring the biggest power savings. This is usually where the largest/intensive arithmetic units are, as well as active large memory structures.
The two most important skills are a very good understanding of computer architecture and understanding what RTL actually synthesises into, in terms of gates/latches/flops. For example, I did a lot of work in the shared caches within the GPU cores, and knowledge of the parts of the cache and coherency protocols helped with me working out what parts of the RTL corresponded to the function of a cache. During the placement, I was also able to learn about the graphics pipeline within the GPU cores. This required a very basic graphics knowledge which I didn't have but was able to learn very quickly through micro-architecutural videos that are shared within the company. I greatly improved my knowledge of arbitration protocols and how they're implemented in RTL and what they synthesise to. My skill at both understanding and writing RTL has benefited from this.
The ability to convey your side of the argument is important to make sure your changes are approved by other teams who might be affected by your changes. Sometimes, the ROI on a power change is not worth the timing/area/performance impact and therefore cannot be put into the current generation of the GPU, so you can try to approach the problem in a different way.