On unified memory architectures (like Apple Silicon or modern APUs), CPU and GPU share the same physical RAM, so there isn't really a physical transfer over a PCIe bus. However, the OS and graphics API still enforce memory domain/mapping restrictions.
If you are using APIs like DirectX 12, Vulkan, or Metal, you can create staging buffers/resources flagged with host-visible (or CPU-accessible) memory properties. This lets the CPU write or read directly using mapped memory pointers without requiring an explicit copy command, though cache coherence rules still apply depending on the architecture.
What graphics API or OS framework are you using for your project?