Design and optimization of cache systems for small cell networks