Speedup Compute shader memory access

Hello. I want to speed up my compute shader calculations. So i have a question, it will be appreciated if you will answer it.

When i write to SSBO from a thread, do my writings/readings somehow cached or not? Or they are written directly to VRAM? (i know it is very slow).
Maybe i can write to workgroup shared memory somehow? And then after compute shader computation transfer my data to VRAM just at once? (To speed things up)

Here is the example code:

writeonly buffer MyBuffer {
    float dataset[1024];
} ;
void main() {
    dataset[gl_LocalInvocationID.x] = 1;

How it will work on memory level?