While many good books deal with CPU architecture in detail, for instance, Computer Architecture: A Quantitative Approach by Patterson et al., and also some books deal with the hardware/software interface (CPU and the Operating Systems), for instance, Computer Organization and Design: The Hardware/Software Interface by Patterson et al. and Operating System books like the OSTEP by Remzi et al.
The books mentioned above, quite nicely and in good depth, cover the CPU architecture, page tables (the hardware and software contract), context switching, etc. But I don't know any book which deals with the same for GPUs.
Recently I was reading a research paper GPUvm: GPU Virtualization at the Hypervisor by Yusuke Suzuki et al., where the authors were mentioning about GPU page tables, GPU contexts, GPU channels, PCIe BARs, MMIO (how CPU communicates with the GPU using MMIO and when it uses DMA).
They also talk about Unified Memory, how it works (in detail at the hardware level), and how things go hand in hand with the GPU driver, for instance, the open-source driver for Nvidia GPUs (Nouveau).
I am very eager to know about the GPU architecture in detail. Especially the hardware/software interface, which explains the whys and hows I currently have in mind.
Any help shall be highly appreciated.

