Multi-Level Main Memory Systems: Technology Choices, Design Considerations, and Trade-off Analysis