Modern digital designs end up being highly parallel. The parallelism requires a lot of fast storage to keep intermediate results. While register files can be used, this is very inefficient. Memories are necessary for large scale storage. Memories are specialized CMOS circuits. The obsession of memories is achieving very high density and very high speed. But high density and high speed are fundamentally contradictory requirements. Thus memories have to pull some tricks that would be unthinkable for random CMOS logic.