CPU caches are generally managed entirely by hardware, other caches are managed by a different kinds of software. The operating system usually manages a "page cache" in main memory. Users outside computer science usually call this cache virtual memory. It is managed by the kernel of the operating system. 