15-01-2013, 02:22 PM
Random access memory
Random access.ppt (Size: 478.5 KB / Downloads: 64)
Sequential circuits all depend upon the presence of memory.
A flip-flop can store one bit of information.
A register can store a single “word,” typically 32-64 bits.
Random access memory, or RAM, allows us to store even larger amounts of data. Today we’ll see:
The basic interface to memory.
How you can implement static RAM chips hierarchically.
This is the last piece we need to put together a computer!
Introduction to RAM
Random-access memory, or RAM, provides large quantities of temporary storage in a computer system.
Remember the basic capabilities of a memory:
It should be able to store a value.
You should be able to read the value that was saved.
You should be able to change the stored value.
A RAM is similar, except that it can store many values.
An address will specify which memory value we’re interested in.
Each value can be a multiple-bit word (e.g., 32 bits).
We’ll refine the memory properties as follows:
Picture of memory
You can think of computer memory as being one big array of data.
The address serves as an array index.
Each address refers to one word of data.
You can read or modify the data at any given memory address, just like you can read or modify the contents of an array at any given index.
If you’ve worked with pointers in C or C++, then you’ve already worked with memory addresses.
Typical memory sizes
Some typical memory capacities:
PCs usually come with 512MB – 2GB RAM.
PDAs have 16-64MB of memory.
Digital cameras and MP3 players can have 32MB-8GB or more of onboard storage.
Many operating systems implement virtual memory, which makes the memory seem larger than it really is.
Most systems allow up to 32-bit addresses. This works out to 232, or about four billion, different possible addresses.
With a data size of one byte, the result is apparently a 4GB memory!
The operating system uses hard disk space as a substitute for “real” memory.
Connecting three-state buffers together
You can connect several three-state buffer outputs together if you can guarantee that only one of them is enabled at any time.
The easiest way to do this is to use a decoder!
If the decoder is disabled, then all the three-state buffers will appear to be disconnected, and OUT will also appear disconnected.
If the decoder is enabled, then exactly one of its outputs will be true, so only one of the tri-state buffers will be connected and produce an output.
The net result is we can save some wire and gate costs. We also get a little more flexibility in putting circuits together.