What's the difference between L1 cache and the shared memory

There might be some additional latency when using L1 due to the need to translate the global address you are accessing to a cache location, however I haven’t run any microbenchmarks to check that.

As to why the 64 kB can’t be assigned to all shared memory or all L1, I’m also not sure. I was genuinely surprised that NVIDIA gave us the option to configure the L1/shared memory ratio at all, given that every feature adds complexity and engineering time.