DSPs do that, Atari Jaguar, Sony PS2 and PS3 did, all the GPUs manually manage cache.
More than one task and you start a fight over resources, have to manage hierarchies, priorities, all the stuff that now happens automagically.
Or you could just use the AMD isa.
"what every programmer should know about memory" https://github.com/Ty-Chen/Reading-List/blob/master/What%20e...
Here’s a clean version: https://people.freebsd.org/~lstewart/articles/cpumemory.pdf
Link for the ELI5 version?
SEriously, I don't understand it (yet) lol.
Regardless, my point was the the article is about vram.
However, there is one situation when vram access itself uses the bar, to be fair. When you do P2P dma, code (kernel, either the inbuilt version or the one in the nvidia driver) running on the cpu sets up the DMA engines's GART to contain the BAR1s of the other.