Single-level storage (SLS) or single-level memory is a computer storage term which has had two meanings. The two meanings are related in that in both, pages of memory may be in primary storage (RAM) or in secondary storage (disk); however, the current actual physical location of a page is unimportant to a process.
It now usually refers to the organization of a computing system in which there are no files, only persistent objects (sometimes called segments), which are mapped into processes' address spaces (which consist entirely of a collection of mapped objects). The entire storage of the computer is thought of as a single two-dimensional plane of addresses (segment, and address within segment).
The persistent object concept was first introduced by Multics in the mid-1960s, in a project shared by MIT, General Electric and Bell Labs. It also was implemented as virtual memory, with the actual physical implementation including a number of levels of storage types. (Multics, for instance, had three levels: originally, main memory, a high-speed drum, and disks.)
SLS is now most often associated with IBM i (formerly known as i5/OS or OS/400), the operating system of the IBM System i, although IBM first implemented SLS in 1978 in the System/38 and its Control Program Facility (CPF) operating system, the predecessor to IBM i.
With a single-level storage the entire storage of a computer is thought of as a single two-dimensional plane of addresses, pointing to pages. Pages may be in primary storage (RAM) or in secondary storage (disk); however, the current location of an address is unimportant to a process. The operating system takes on the responsibility of locating pages and making them available for processing. If a page is in primary storage, it is immediately available. If a page is on disk, a page fault occurs and the operating system brings the page into primary storage. No explicit I/O to secondary storage is done by processes: instead, reads from secondary storage are done as the result of page faults; writes to secondary storage are done when pages that have been modified since being read from secondary storage into primary storage are written back to their location in secondary storage.
IBM's design of the single-level storage was originally conceived and pioneered by Frank Soltis and Glenn Henry in the late 1970s as a way to build a transitional implementation to computers with 100% solid state memory. The thinking at the time was that disk drives would become obsolete, and would be replaced entirely with some form of solid state memory. System/38 was designed to be independent of the form of hardware memory used for secondary storage. This has not come to be, however, because while solid state memory has become exponentially cheaper, disk drives have also become similarly cheaper; thus, the price ratio in favour of disk drives continues: very much higher capacities than solid state memory, very much slower to access, and much less expensive.
In IBM i, the operating system believes it has access to an almost unlimited storage array of 'real memory' (i.e., primary storage). An address translator maps the available real memory to physical memory, residing on disk drives (either 'spinning' or solid-state), or on a SAN server (such as the V7000). The operating system simply places an object at an address in its memory space. The OS "doesn't know" (or care) if the object is physically in memory or on a slower disk-storage device. The Licensed Internal Code, atop which the OS runs, handles page faults on object pages not in physical memory, reading the page into an available page frame in primary storage.
With the IBM i implementation of single-level storage, page faults are divided into two categories. These are database faults and non-database faults. Database faults occur when a page associated with a relational database object like a table, view or index is not currently in primary storage. Non-database faults occur when any other type of object is not currently in primary storage.
IBM i treats all secondary storage as a single pool of data, rather than as a collection of multiple pools (file systems), as is usually done on other operating systems such as systems like Unix-like systems and Microsoft Windows. It intentionally scatters the pages of all objects across all disks so that the objects can be stored and retrieved much more rapidly. As a result, an IBM i server rarely becomes disk bound. Single-level storage operating systems also allow CPU, memory and disk resources to be freely substituted for each other at run time to smooth out performance bottlenecks.