global memory and device memory are just different names of same memory.
shared memory is on-chip (not part of global memory). textures and constant memory reside in global memory space.
constant cache is exatly what it claims to be: constant cache =) It allows for fast access to commonly used constant values. It’s size is 8Kb per multiprocessor if I remember correctly. From programmer’s point of view there’s no difference between constant cache and constant memory: you may use only constant memory and accessed values are cached automatically. Size of constant memory is 64Kb.