I am an aspiring CG programmer and would like to know what some of the more nuanced aspects of computer architecture are.
I have already taken several introductory arch courses where we've covered things like cache levels, basic multi-staged piplined datapaths, and memory structures (NUMA, Von Neumann), etc. I have also spent time understanding the basics of CUDA programming and SIMT work distribution models.
Is there any special aspect of architecture that you only learned outside of the classroom/in the real world that comes in handy when writing graphics applications?
Edit: some people think my phrasing is too broad. When I say CG programmer, I mean someone who writes their own Vulkan/D3D application from scratch. I do not mean someone who writes games in Unity and wants to improve their performance based on platform architecture.
To be even more specific, I should mention that I'm asking because of a presentation on architecture that I'm supposed to give that's coming up. I'm supposed to present on a topic related to architecture, but I'm kinda sick of going over the same old things. This is my third course on the subject and am a little sick of learning how caches work. A good example of something that I'm looking for is hyperthreading. I'd never heard about this until someone presented on it earlier in the semester.
Edit 2 I think I've found my own answer. This CMU lecture series has a bunch of slides talking about modern parallel architecture and algorithms. These slides on heterogeneous systems is particularly interesting to me.