computer memory computer memory types volatile ram dram sram historical williamskilburn tube 194647 delay line memory 1947 mellon optical memory 1951 selectron tube 1952 dekatron tram 2009 zram 20022010 nonvolatile rom mask rom prom eprom eeprom flash memory nvram reram early stage nvram feram mram pcm magnetic magnetic tape hard disk drive optical optical disc in development cbram racetrack memory nram millipede memory fjg ram historical paper data storage 1725 drum memory 1932 magneticcore memory 1949 plated wire memory 1957 core rope memory 1960s thinfilm memory 1962 disk pack 1962 twistor memory 1968 bubble memory 1970 floppy disk 1971 vte in computing memory refers to the computer hardware integrated circuits that store information for immediate use in a computer it is synonymous with the term primary storage computer memory operates at a high speed for example randomaccess memory ram as a distinction from storage that provides slowtoaccess information but offers higher capacities if needed contents of the computer memory can be transferred to secondary storage a very common way of doing this is through a memory management technique called virtual memory an archaic synonym for memory is store the term memory meaning primary storage or main memory is often associated with addressable semiconductor memory ie integrated circuits consisting of siliconbased transistors used for example as primary storage but also other purposes in computers and other digital electronic devices there are two main kinds of semiconductor memory volatile and nonvolatile examples of nonvolatile memory are flash memory used as secondary memory and rom prom eprom and eeprom memory used for storing firmware such as bios examples of volatile memory are primary storage which is typically dynamic randomaccess memory dram and fast cpu cache memory which is typically static randomaccess memory sram that is fast but energyconsuming offering lower memory areal density than dram most semiconductor memory is organized into memory cells or bistable flipflops each storing one bit 0 or 1 flash memory organization includes both one bit per memory cell and multiple bits per cell called mlc multiple level cell the memory cells are grouped into words of fixed word length for example 1 2 4 8 16 32 64 or 128 bit each word can be accessed by a binary address of n bit making it possible to store 2 raised by n words in the memory this implies that processor registers normally are not considered as memory since they only store one word and do not include an addressing mechanism typical secondary storage devices are hard disk drives and solidstate drives modern ddr4 sdram module usually found in desktop computers history detail of the back of a section of eniac showing vacuum tubes in the early 1940s memory technology often permitted a capacity of a few bytes the first electronic programmable digital computer the eniac using thousands of octalbase radio vacuum tubes could perform simple calculations involving 20 numbers of ten decimal digits which were held in the vacuum tube accumulators the next significant advance in computer memory came with acoustic delay line memory developed by j presper eckert in the early 1940s through the construction of a glass tube filled with mercury and plugged at each end with a quartz crystal delay lines could store bits of information in the form of sound waves propagating through mercury with the quartz crystals acting as transducers to read and write bits delay line memory would be limited to a capacity of up to a few hundred thousand bits to remain efficient two alternatives to the delay line the williams tube and selectron tube originated in 1946 both using electron beams in glass tubes as means of storage using cathode ray tubes fred williams would invent the williams tube which would be the first randomaccess computer memory the williams tube would prove more capacious than the selectron tube the selectron was limited to 256 bits while the williams tube could store thousands and less expensive the williams tube would nevertheless prove to be frustratingly sensitive to environmental disturbances efforts began in the late 1940s to find nonvolatile memory jay forrester jan a rajchman and an wang developed magneticcore memory which allowed for recall of memory after power loss magnetic core memory would become the dominant form of memory until the development of transistorbased memory in the late 1960s developments in technology and economies of scale have made possible socalled very large memory vlm computers the term memory when used with reference to computers generally refers to randomaccess memory ram volatile memory various memory modules containing different types of dram from top to bottom ddr sdram sdram edo dram and fpm dram volatile memory volatile memory is computer memory that requires power to maintain the stored information most modern semiconductor volatile memory is either static ram sram or dynamic ram dram sram retains its contents as long as the power is connected and is easy for interfacing but uses six transistors per bit dynamic ram is more complicated for interfacing and control needing regular refresh cycles to prevent losing its contents but uses only one transistor and one capacitor per bit allowing it to reach much higher densities and much cheaper perbit costs sram is not worthwhile for desktop system memory where dram dominates but is used for their cache memories sram is commonplace in small embedded systems which might only need tens of kilobytes or less forthcoming volatile memory technologies that aim at replacing or competing with sram and dram include zram and aram nonvolatile memory solidstate drives are one example of nonvolatile memory nonvolatile memory nonvolatile memory is computer memory that can retain the stored information even when not powered examples of nonvolatile memory include readonly memory see rom flash memory most types of magnetic computer storage devices eg hard disk drives floppy disks and magnetic tape optical discs and early computer storage methods such as paper tape and punched cards forthcoming nonvolatile memory technologies include feram cbram pram sttram sonos rram racetrack memory nram 3d xpoint and millipede memory semivolatile memory a third category of memory is semivolatile the term is used to describe a memory which has some limited nonvolatile duration after power is removed but then data is ultimately lost a typical goal when using a semivolatile memory is to provide high performancedurabilityetc associated with volatile memories while providing some benefits of a true nonvolatile memory for example some nonvolatile memory types can wear out where a worn cell has increased volatility but otherwise continues to work data locations which are written frequently can thus be directed to use worn circuits as long as the location is updated within some known retention time the data stays valid if the retention time expires without an update then the value is copied to a lessworn circuit with longer retention writing first to the worn area allows a high write rate while avoiding wear on the notworn circuits as a second example an sttram can be made nonvolatile by building large cells but the cost per bit and write power go up while the write speed goes down using small cells improves cost power and speed but leads to semivolatile behavior in some applications the increased volatility can be managed to provide many benefits of a nonvolatile memory for example by removing power but forcing a wakeup before data is lost or by caching readonly data and discarding the cached data if the poweroff time exceeds the nonvolatile threshold the term semivolatile is also used to describe semivolatile behavior constructed from other memory types for example a volatile and a nonvolatile memory may be combined where an external signal copies data from the volatile memory to the nonvolatile memory but if power is removed without copying the data is lost or a batterybacked volatile memory and if external power is lost there is some known period where the battery can continue to power the volatile memory but if power is off for an extended time the battery runs down and data is lost management memory management proper management of memory is vital for a computer system to operate properly modern operating systems have complex systems to properly manage memory failure to do so can lead to bugs slow performance and at worst case takeover by viruses and malicious software nearly everything computer programmers do requires them to consider how to manage memory even storing a number in memory requires the programmer to specify how the memory should store it bugs improper management of memory is a common cause of bugs including the following types in an arithmetic overflow a calculation results in a number larger than the allocated memory permits for example a signed 8bit integer allows the numbers 128 to 127 if its value is 127 and it is instructed to add one the computer can not store the number 128 in that space such a case will result in undesired operation such as changing the numbers value to 128 instead of 128 a memory leak occurs when a program requests memory from the operating system and never returns the memory when its done with it a program with this bug will gradually require more and more memory until the program fails as it runs out a segmentation fault results when a program tries to access memory that it does not have permission to access generally a program doing so will be terminated by the operating system a buffer overflow means that a program writes data to the end of its allocated space and then continues to write data to memory that has been allocated for other purposes this may result in erratic program behavior including memory access errors incorrect results a crash or a breach of system security they are thus the basis of many software vulnerabilities and can be maliciously exploited early computer systems in early computer systems programs typically specified the location to write memory and what data to put there this location was a physical location on the actual memory hardware the slow processing of such computers did not allow for the complex memory management systems used today also as most such systems were singletask sophisticated systems were not required as much this approach has its pitfalls if the location specified is incorrect this will cause the computer to write the data to some other part of the program the results of an error like this are unpredictable in some cases the incorrect data might overwrite memory used by the operating system computer crackers can take advantage of this to create viruses and malware virtual memory virtual memory virtual memory is a system where all physical memory is controlled by the operating system when a program needs memory it requests it from the operating system the operating system then decides what physical location to place the memory in this offers several advantages computer programmers no longer need to worry about where the memory is physically stored or whether the users computer will have enough memory it also allows multiple types of memory to be used for example some memory can be stored in physical ram chips while other memory is stored on a hard drive eg in a swapfile functioning as an extension of the cache hierarchy this drastically increases the amount of memory available to programs the operating system will place actively used memory in physical ram which is much faster than hard disks when the amount of ram is not sufficient to run all the current programs it can result in a situation where the computer spends more time moving memory from ram to disk and back than it does accomplishing tasks this is known as thrashing virtual memory systems usually include protected memory but this is not always the case protected memory memory protection protected memory is a system where each program is given an area of memory to use and is not permitted to go outside that range use of protected memory greatly enhances both the reliability and security of a computer system without protected memory it is possible that a bug in one program will alter the memory used by another program this will cause that other program to run off of corrupted memory with unpredictable results if the operating systems memory is corrupted the entire computer system may crash and need to be rebooted at times programs intentionally alter the memory used by other programs this is done by viruses and malware to take over computers it may also be used benignly by desirable programs which are intended to modify other programs in the modern age this is generally considered bad programming practice for application programs but it may be used by system development tools such as debuggers for example to insert breakpoints or hooks protected memory assigns programs their own areas of memory if the operating system detects that a program has tried to alter memory that does not belong to it the program is terminated or otherwise restricted or redirected this way only the offending program crashes and other programs are not affected by the misbehavior whether accidental or intentional protected memory systems almost always include virtual memory as well wikimedia commons has media related to computer memory semiconductor memory memory geometry memory hierarchy miller stephen w 1977 memory and storage technology montvale afips press memory and storage technology alexandria virginia time life books 1988 authority control gnd 41592190 