Introduction To RAM: Random-Access Memory RAM
Introduction To RAM: Random-Access Memory RAM
1
Picture of memory
• You can think of computer memory as being one Address Data
big array of data. 00000000
– The address serves as an array index. 00000001
– Each address refers to one word of data. 00000002
• 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. .
.
.
.
.
.
.
FFFFFFFD
FFFFFFFE
FFFFFFFF
2
Block diagram of RAM
2k x n memory
CS WR Memory operation
k n
ADRS OUT 0 x None
n
DATA 1 0 Read selected word
CS 1 1 Write selected word
WR
3
Memory sizes
• We refer to this as a 2k x n memory.
– There are k address lines, which can specify one of 2k addresses.
– Each address contains an n-bit word.
2k x n memory
k n
ADRS OUT
n
DATA
CS
WR
• For example
a 224 x 16 RAM contains 224 = 16M words, each 16 bits long.
– The RAM would need 24 address lines.
– The total storage capacity is 224 x 16 = 228 bits.
4
Size matters!
• Memory sizes are usually specified in numbers of bytes (8 bits).
• The 228-bit memory on the previous page translates into:
5
Typical memory sizes
• Some typical memory capacities: Address Data
– PCs usually come with 128-256MB RAM. 00000000
• Many operating systems implement virtual memory, 00000001
which makes the memory seem larger than it really is. 00000002
– 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. .
.
.
.
FFFFFFFD
FFFFFFFE
FFFFFFFF
6
Reading RAM
• To read from this RAM, the controlling circuit must:
– Enable the chip by ensuring CS = 1.
– Select the read operation, by setting WR = 0.
– Send the desired address to the ADRS input.
– The contents of that address appear on OUT after a little while.
• Notice that the DATA input is unused for read operations.
2k x n memory
k n
ADRS OUT
n
DATA
CS
WR
7
Writing RAM
• To write to this RAM, you need to:
– Enable the chip by setting CS = 1.
– Select the write operation, by setting WR = 1.
– Send the desired address to the ADRS input.
– Send the word to store to the DATA input.
• The output OUT is not needed for memory write operations.
2k x n memory
k n
ADRS OUT
n
DATA
CS
WR
8
My first RAM
• We can use these cells
to make a 4 x 1 RAM.
• Since there are four
words, ADRS is two bits.
• Each word is only one
bit, so DATA and OUT
are one bit each.
• Word selection is done
with a decoder attached
to the CS inputs of the
RAM cells. Only one cell
can be read or written
at a time.
• Notice that the outputs
are connected together
with a single line!
9
Those funny triangles
• The triangle represents a three-state buffer.
• Unlike regular logic gates, the output can be one of three different
possibilities, as shown in the table.
EN IN OUT
0 x Disconnected
1 0 0
1 1 1
10
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.
11
Bigger and better
• Here is the 4 x 1 RAM once
again.
• How can we make a “wider”
memory with more bits per
word, like maybe a 4 x 4
RAM?
• Duplicate the stuff in the
blue box!
12
A 4 x 4 RAM
• DATA and OUT are now each four bits long, so you can read and write
four-bit words.
13
Bigger RAMs from smaller RAMs
• We can use small RAMs as building blocks for making larger memories,
by following the same principles as in the previous examples.
• Example
suppose we have some 64K x 8 RAMs to start with:
– 64K = 26 x 210 = 216 there are 16 address lines.
– There are 8 data lines.
16
8 8
14
Making a larger memory
8
Example
Design a 256K x 8 memory, given that 16
you have 64K x 8 chips
Solution
• For 256K words, we need 18 address
lines.
– The two most significant address
lines go to the decoder, which selects
one of the four 64K x 8 RAM chips.
– The other 16 address lines are
shared by the 64K x 8 chips.
• The 64K x 8 chips also share WR and
DATA inputs.
• This assumes the 64K x 8 chips have 8
three-state outputs.
15
Analyzing the 256K x 8 RAM
• There are 256K words of memory,
spread out among the four smaller 8
64K x 8 RAM chips.
• When the two most significant bits 16
16
Address ranges
17
Making a wider memory
• You can also combine smaller chips to make wider memories, with the
same number of addresses but more bits per word.
• Example
Design a 64K x 16 RAM, using two 64K x 8 chips.
– The left chip contains the most significant 8 bits of the data.
– The right chip contains the lower 8 bits of the data.
8 8
16
8 8
18
Dynamic memory
• Dynamic memory is built with capacitors.
– A stored charge on the capacitor represents a logical 1.
– No charge represents a logic 0.
• However, capacitors lose their charge after a few milliseconds. The
memory requires constant refreshing to recharge the capacitors.
(That’s what’s “dynamic” about it.)
• Dynamic RAMs tend to be physically smaller than static RAMs.
– A single bit of data can be stored with just one capacitor and one
transistor, while static RAM cells typically require 4-6 transistors.
– This means dynamic RAM is cheaper and denser—more bits can be
stored in the same physical area.
19
Synchronous DRAM
• Memory chips are organized into “modules” that are
connected to the CPU via a 64-bit (8-byte) bus.
• Speeds are rated in megahertz: PC66, PC100 and PC133
memory run at 66MHz, 100MHz and 133MHz respectively.
• Memory bandwidth = # of transfers/sec X size of each transfer
– PC100 can transfer up to 800MB/sec (100MHz x 8 bytes/cycle).
Example
Given an SDRAM with bus speed of 100MHz and bus
width of 8-bytes, then Find the memory bandwidth?
Memory bandwidth = 100MHz x 8 bytes/cycle
= 800MB/sec
20
Double Data Rate RAM
• Similar to regular SDRAM, except data can be
transferred on both the positive and negative clock
edges.
• For 100-133MHz buses, the effective memory speeds
appear to be 200-266MHz.
• DDR-RAM has lower power consumption, using 2.5V
instead of 3.3V like SDRAM. This makes it good for
notebooks and other mobile devices.
21
Example
22
RDRAM
• Another new type of memory called RDRAM is used in the
Playstation 2 as well as some Pentium 4 computers.
• The data bus is only 16 bits wide.
• But the memory runs at 400MHz, and data can be
transferred on both the positive and negative clock edges.
– That works out to a maximum transfer rate of 1.6GB per
second.
– You can also implement two “channels” of memory,
resulting in up to 3.2GB/s of bandwidth.
(from amazon.com)
23
Dynamic vs. static memory
24
Read-only memory
2k x n ROM
k n
ADRS OUT
CS
25
Memories and functions
• ROMs are actually combinational devices, not Address Data
sequential ones! A2A1A0 V2V1V0
– You can’t store arbitrary data into a ROM, 000 000
so the same address will always contain the 001 100
same data. 010 110
• A ROM table is basically just a truth table. 011 100
– The table shows what data is stored at each 100 101
ROM address. 101 000
– You can generate that data combinationally, 110 011
using the address as the input. 111 011
26
Decoders
• We can already convert truth tables to circuits easily, with decoders.
X Y Z C S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
• For example, you can think of this old circuit as a memory that “stores”
the sum and carry outputs from the truth table on the right.
27
ROM setup
• ROMs are based on this decoder implementation of functions.
– A blank ROM just provides a decoder and several OR gates.
– The connections between the decoder and the OR gates are
“programmable,” so different functions can be implemented.
• To program a ROM, you just make the desired connections between the
decoder outputs and the OR gate inputs.
28
ROM example
• Here are three functions, V2V1V0, implemented with an 8 x 3 ROM.
• Blue crosses (X) indicate connections between decoder outputs and OR
gates. Otherwise there is no connection.
A
2
A1
A
0
29
The same example again
• Here is an alternative presentation of the same 8 x 3 ROM, using
“abbreviated” OR gates to make the diagram neater.
A
2
A1
A
0
V2 = m(1,2,3,4)
V1 = m(2,6,7)
V0 = m(4,6,7)
V2 V1 V0
30
Why is this a “memory”?
• This combinational circuit can be considered a read-only memory.
– It stores eight words of data, each consisting of three bits.
– The decoder inputs form an address, which refers to one of the
eight available words.
– So every input combination corresponds to an address, which is
“read” to produce a 3-bit data output.
Address Data
A2A1A0 V2V1V0
000 000
A 001 100
2 010 110
A1
A 011 100
0 100 101
101 000
110 011
111 011
V2 V1 V0
31
Programmable logic arrays
• A ROM is potentially inefficient because it uses a decoder, which
generates all possible minterms. No circuit minimization is done.
• Using a ROM to implement an n-input function requires
– An n-to-2n decoder, with n inverters and 2n n-input AND gates.
– An OR gate with up to 2n inputs.
– The number of gates roughly doubles for each additional ROM
input.
• A programmable logic array , makes the decoder part of the ROM
“programmable” too. Instead of generating all minterms, you can
choose which products (not necessarily minterms) to generate.
32
A blank 3 x 4 x 3 PLA
• This is a 3 x 4 x 3 PLA Inputs
(3 inputs, up to 4
product terms, and 3
outputs), ready to be
programmed.
OR array
• The left part of the
diagram replaces the
decoder used in a ROM.
• Connections can be made
in the “AND array” to
produce four arbitrary
products, instead of 8
minterms as with a ROM.
• Those products can then
be summed together in AND array
the “OR array.”
Outputs
33
Regular K-map minimization
• The normal K-map approach is to minimize the number of product terms
for each individual function.
• For our three functions, this would result in a total of six different
product terms.
V2 V1 V0
Y Y Y
0 1 1 1 0 0 0 1 0 0 0 0
X 1 0 0 0 X 0 0 1 1 X 1 0 1 1
Z Z Z
V2 = m(1,2,3,4)
V1 = m(2,6,7)
V0 = m(4,6,7)
34
PLA minimization
• For a PLA, we should minimize the number of product terms for all
functions together.
• We could express V2, V1 and V0 with just four total products:
V2 = m(1,2,3,4)
V1 = m(2,6,7)
V0 = m(4,6,7)
35
PLA example
• So we can implement these three functions using a 3 x 4 x 3 PLA:
A2 A1 A0
xy’z’
xy
x’z
x’yz’