A storage system that includes non-volatile main memory; non-volatile read
cache; non-volatile write cache; and a data path operably coupled between
the non-volatile write cache and the non-volatile read cache, wherein the
storage system does not include any volatile cache and methods for
retrieving and writing data throughout this memory hierarchy system.