1. A computer-implemented apparatus for designing a digital memory system, said computer-implemented apparatus comprising: a memory for storing computer executable instructions; and a computer processor coupled to the memory and configured to execute the instructions stored in the memory to: receive a set of desired memory system performance characteristics via a data input system; generate a plurality of possible memory designs that meet said desired memory system performance characteristics, at least one of said possible memory designs comprising: at least one memory controller implementing a memory algorithm to select a storage location in an internally addressable memory space that is larger than an externally addressable memory space, and at least one memory circuit for providing the internally addressable memory space; optimize said plurality of possible memory designs; and select a subset of said plurality of possible memory designs to output, said subset of said plurality of possible memory designs optimized for a set of optimization parameters.