Title: I&#x27;ve been learning about computer architecture [1] and I&#x27;ve become comfortable with my understanding of how a processor communicates with main memory - be it directly, with the presence of caches or even virtual memory - and I&#x2F;O peripherals.<p>But something that seems weirdly absent from the courses I took and what I have found online is how the CPU communicates with other processing units, such as GPUs - not only that, but an in-depth description of interconnecting different systems with buses (by in-depth I mean an RTL example&#x2F;description).<p>I understand that as you add more hardware to a machine, complexity increases and software must intervene - so a generalistic answer won&#x27;t exist and the answer will depend on the implementation being talked about. That&#x27;s fine by me.<p>What I&#x27;m looking for is a description of how a CPU tells a GPU to start executing a program. Through what means do they communicate - a bus? How does such a communication instance look like?<p>I&#x27;d love get pointers to resources such as books and lectures that are more hands-on&#x2F;implementation aware.<p>[1] Just so that my background knowledge is clear: I&#x27;ve concluded NAND2TETRIS, watched and concluded Berkeley&#x27;s 2020 CS61C and have read a good chunk of H&amp;P (both Computer Architecture: A Quantitative Approach and Computer Organization and Design: RISC-V edition), and now am moving on to Onur Mutlu&#x27;s lectures on advanced computer architecture.
Upvote: