While the hardware cache mostly serves as a buffer between different storage media, the software cache often holds work results from "expensive" (= slow) subprocesses of the software. These can be, for example, results from complex calculations or extensive queries of a database. Now instead of executing the slow process with each access again, the result is stored after the first determination in the cache and the following accesses receive up to the next update of the cache only this.
Software caching can be very efficient, but it must be well thought out. Of particular interest is the question of how long the results in the cache are valid and, consequently, when they have to be updated in order not to falsify the result.