Memory hierarchy is the hierarchy of memory and storage devices found in a computer. Often visualized as a triangle, the bottom of the triangle represents larger, cheaper and slower storage devices, while the top of the triangle represents smaller, more expensive and faster storage devices. This is often used in computation theory and design, so programmers know how to manage the different memory systems when building a computer. By knowing how to manipulate this hierarchy, programmers can build faster computers.
The memory hierarchy triangle is a visualization technique that helps consumers and programmers understand how memory works. At the bottom, there are cheap storage devices with large amounts of memory, like the hard drive or magnetic tape. Higher up, there is random access memory (RAM), which has medium capacity and speed. At the top rests cache and processors, both of which are very fast but have small capacities. The triangle is primarily organized by response time, but there is also a correlation between factors such as size, memory capacity and price.
When building a computer, the programmer must keep the memory hierarchy triangle in mind. While parts of the triangle can be manipulated, moving sections around is strictly against the rules. For example, a programmer could switch the role of the hard drive to the role of RAM. If this happens, the computer would be very slow when loading immediate information such as files and websites, and would be able to hold little data for long-term storage, making the computer nearly useless. Switching parts of the triangle is not the correct way to maximizing a computer’s potential.
Manipulating the triangle the right way is how programmers increase a computer’s efficiency. For example, if the storage units are made to be very simple, with less size and complexity, the memory hierarchy works better. Also, if programmers can make it so information can be processed in higher sections of the hierarchy, for example, using the processor instead of RAM, then the computer moves faster. This doesn’t move the sections around, it only optimizes them.
While visualizing memory hierarchy is very simple, and memory can be manipulated to go in different sections, it is difficult to know exactly where memory will be stored or used. Programmers must estimate this factor, because several different units will generally process the memory at once, or the memory can go from one section to another. Well-made programs will typically be able to anticipate where the memory will be stored or processed, but there is a random factor for which programmers cannot always account, which is why memory hierarchy is much more fluid than the triangle visualization makes it seem.