01.12.2014 Views

CMPUT 329 Memory Technologies Memory classes

CMPUT 329 Memory Technologies Memory classes

CMPUT 329 Memory Technologies Memory classes

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>CMPUT</strong> <strong>329</strong><br />

<strong>Memory</strong> <strong>Technologies</strong><br />

José Nelson Amaral<br />

1<br />

<strong>Memory</strong> <strong>classes</strong><br />

Read only memory (ROM) - non-volatile<br />

PROM<br />

EPROM<br />

EEPROM (flash)<br />

Random access memory (RAM) - volatile<br />

Static RAM (SRAM)<br />

Dynamic RAM (DRAM)<br />

Synchronized DRAM (SDRAM)<br />

Double data rate (DDR) SDRAM<br />

2<br />

1


Static RAM Cell<br />

3<br />

Dynamic <strong>Memory</strong> Cell<br />

An SRAM cell has a bi-stable latch that requires from<br />

four to six transistors to be built.<br />

To deliver the higher memory density required for<br />

computer systems, a single transistor memory cell<br />

was developed.<br />

bit line<br />

word line<br />

1-bit DRAM cell<br />

4<br />

2


Writing 1 in a Dynamic<br />

Memories<br />

bit line<br />

word line<br />

1-bit DRAM cell<br />

To store a 1 in this cell, a HIGH voltage is placed on<br />

the bit line, causing the capacitor to charge through<br />

the on transistor.<br />

5<br />

Writing 0 in a Dynamic<br />

Memories<br />

bit line<br />

word line<br />

1-bit DRAM cell<br />

To store a 0 in this cell, a LOW voltage is placed on<br />

the bit line, causing the capacitor to discharge through<br />

the on transistor.<br />

6<br />

3


Destructive Reads<br />

bit line<br />

word line<br />

1-bit DRAM cell<br />

To read the DRAM cell, the bit line is precharged to<br />

a voltage halfway between HIGH and LOW, and<br />

then the word line is set HIGH.<br />

Depending on the charge in the capacitor, the precharged<br />

bit line is pulled slightly higher or lower.<br />

A sense amplifier detects this small change and<br />

recovers a 1 or a 0.<br />

7<br />

Recovering from<br />

Destructive Reads<br />

bit line<br />

word line<br />

1-bit DRAM cell<br />

The read operation discharges the capacitor.<br />

Therefore a read operation in a dynamic memory must<br />

be immediately followed by a write operation of the same<br />

value read to restore the capacitor charges.<br />

8<br />

4


Forgetful Memories<br />

bit line<br />

word line<br />

1-bit DRAM cell<br />

The problem with this cell is that it is not bi-stable:<br />

only the state 0 can be kept indefinitely, when the<br />

cell is in state 1, the charge stored in the capacitor<br />

slowly dissipates and the data is lost.<br />

9<br />

Accesses to SRAM<br />

Read An address is placed on the address inputs while<br />

CS and OE are asserted. The latch outputs for the<br />

selected memory locations are delivered to DOUT.<br />

Write An address is placed on the address inputs and<br />

a data word is placed on DIN; then CS and WE are<br />

asserted. The latches in the selected memory<br />

location open, and the input word is stored.<br />

10<br />

5


0 A2<br />

1 A1<br />

1 A0<br />

3-to-8<br />

decoder<br />

1<br />

2<br />

1<br />

0<br />

WE_L<br />

CS_L<br />

OE_L<br />

0<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

WR_L<br />

IOE_L<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN2<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN1<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN0<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DOUT3 DOUT2 DOUT1 DOUT0<br />

0 A2<br />

1 A1<br />

1 A0<br />

3-to-8<br />

decoder<br />

1<br />

2<br />

1<br />

0<br />

WE_L<br />

CS_L<br />

OE_L<br />

0<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

WR_L<br />

IOE_L<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DOUT3 DOUT3 DOUT3 DOUT3<br />

6


0 A2<br />

1 A1<br />

1 A0<br />

3-to-8<br />

decoder<br />

1<br />

2<br />

1<br />

0<br />

WE_L<br />

CS_L<br />

OE_L<br />

0<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

WR_L<br />

IOE_L<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DOUT3 DOUT3 DOUT3 DOUT3<br />

0 A2<br />

1 A1<br />

1 A0<br />

3-to-8<br />

decoder<br />

1<br />

2<br />

1<br />

0<br />

WE_L<br />

CS_L<br />

OE_L<br />

0<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

WR_L<br />

IOE_L<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIN3<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DOUT3 DOUT3 DOUT3 DOUT3<br />

7


SRAM with Bi-directional<br />

Data Bus<br />

microprocessor<br />

WE_L<br />

CS_L<br />

OE_L<br />

WR_L<br />

IOE_L<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

IN OUT<br />

SEL<br />

WR<br />

DIO3 DIO2 DIO1 DIO0<br />

15<br />

Internal Address Decoding<br />

The SRAM shown in the previous slides had 3 address<br />

lines and stored 8 words, requiring a 3-to-8 internal<br />

decoder.<br />

Such a decoder requires eight AND gates, with<br />

three inputs each, and three invertors.<br />

Consider the HM628512 SRAM that has 19 address<br />

lines and stores 512K words. What size internal<br />

decoder this chip requires?<br />

A 19-to-512K decoder with 524288 AND gates, each<br />

with 19 inputs?<br />

16<br />

8


HM628512<br />

17<br />

Internal Address Decoding<br />

To avoid such a complexity in the decoding logic,<br />

all memories (EPROMs, SRAMs, and DRAMs) use<br />

two-dimensional decoding which reduces the<br />

decoder size to approximately the square root<br />

of the number of addresses.<br />

The memory cells are organized in a two-dimensional<br />

array. Some address lines are used to select a row<br />

and the others are used to select a column. The<br />

cell selected by the whole address is at the intersection<br />

of the row and the column.<br />

18<br />

9


Address Decoding: 16x1 DRAM<br />

19<br />

20<br />

10


Internal Structure of a<br />

64K × 1 DRAM<br />

Row<br />

decoder<br />

256 × 256<br />

array<br />

A0-A7<br />

RAS_L<br />

CAS_L<br />

WE_L<br />

row<br />

address<br />

control<br />

column<br />

address<br />

Column latches,<br />

multiplexers,<br />

and demultiplexers<br />

latch, mux, and<br />

dmux control<br />

DOUT<br />

DIN<br />

21<br />

Two Dimensional Decoding<br />

Row and column address lines are shared by<br />

the “temporal multiplexing” technique.<br />

RAS (row address strobe) and CAS (column<br />

address strobe) signals determine what address<br />

lines specify.<br />

Access time is further reduced when memory is<br />

read sequentially.<br />

The 2D decoding method also minimizes the<br />

length of the longest wire in the decoder.<br />

22<br />

11


Micron MT48lC128MA2<br />

512 Mbits<br />

Can work as:<br />

128 M x 4<br />

64 M x 8<br />

32 M x 16<br />

Pin Assignment<br />

Address lines: A0-A12<br />

Data lines: DQ0 - DQ15<br />

23<br />

24<br />

12


25<br />

26<br />

13


External Address Decoding<br />

microprocessor<br />

A0<br />

A0<br />

A1<br />

A1<br />

•<br />

A19<br />

A19<br />

A0<br />

27256<br />

A0<br />

A1<br />

A1<br />

•<br />

A14<br />

A14<br />

CS<br />

OE<br />

O0<br />

O1<br />

O7<br />

D0<br />

D1<br />

•<br />

D7<br />

A0<br />

A0<br />

A1<br />

A1<br />

•<br />

A14<br />

A14<br />

CS<br />

OE<br />

27256 27256 27256<br />

A0<br />

A0<br />

A0<br />

A0<br />

A1<br />

A1<br />

A1<br />

A1<br />

O0<br />

O1<br />

O7<br />

D0<br />

D1<br />

•<br />

D7<br />

•<br />

A14<br />

A14<br />

CS<br />

OE<br />

O0<br />

O1<br />

O7<br />

D0<br />

D1<br />

•<br />

D7<br />

•<br />

A14<br />

A14<br />

CS<br />

OE<br />

O0<br />

O1<br />

O7<br />

D0<br />

D1<br />

•<br />

D7<br />

D0<br />

D1<br />

D0<br />

D1<br />

•<br />

D7<br />

D7<br />

READ<br />

WRITE<br />

A19<br />

A18<br />

A17<br />

A15<br />

A16<br />

74x139<br />

HIMEN_L<br />

SE0000_L<br />

1G 1Y0<br />

SE8000_L<br />

1Y1<br />

SF0000_L<br />

1A 1Y2<br />

SF8000_L<br />

1B 1Y3<br />

27<br />

Improved DRAMs<br />

Central Idea: Each read to a DRAM actually<br />

reads a complete row of bits or word line from<br />

the DRAM core into an array of sense amps.<br />

A traditional asynchronous DRAM interface<br />

then selects a small number of these bits to be<br />

delivered to the cache/microprocessor.<br />

All the other bits already extracted from the DRAM<br />

cells into the sense amps are wasted.<br />

28<br />

14


Fast Page Mode DRAMs<br />

In a DRAM with Fast Page Mode, a page is defined as<br />

all memory addresses that have the same row address.<br />

To read in fast page mode, all the steps for row access<br />

in a standard read cycle are performed.<br />

Then OE and CAS are switched high, but RAS remains<br />

low.<br />

Then the last steps for providing a new column address,<br />

asserting CAS and OE, are performed for each new<br />

memory location to be read.<br />

29<br />

Write Cycle on an Asynchronous DRAM<br />

15


A Fast Page Mode Read Cycle on an Asynchronous DRAM<br />

Enhanced Data Output<br />

RAMs (EDO-RAM)<br />

The process to read multiple locations in an EDO-RAM<br />

is very similar to the Fast Page Mode.<br />

The difference is that the output drivers are not disabled<br />

when CAS goes high.<br />

This distinction allows the data from the current read cycle<br />

to be present at the outputs while the next cycle<br />

begins.<br />

As a result, faster read cycle times are allowed.<br />

32<br />

16


An Enhanced Data Output Read Cycle on an Asynchronous DRAM<br />

Synchronous DRAMs<br />

(SDRAM)<br />

A Synchronous DRAM (SDRAM) has a clock input. It operates<br />

in a similar fashion as the fast page mode and EDO DRAM.<br />

However the consecutive data is output synchronously on the<br />

falling/rising edge of the clock, instead of on command by<br />

CAS.<br />

How many data elements will be output (the length of<br />

the burst) is programmable up to the maximum size of<br />

the row.<br />

SDRAM also uses multiple “banks” of memory to interleave<br />

RAS/CAS activation and data transfer.<br />

34<br />

17


DDR SDRAM<br />

A Double Data Rate (DDR) SDRAM is an SDRAM<br />

that allows data transfers both on the rising and<br />

falling edge of the clock.<br />

Thus the effective data transfer rate of a DDR<br />

SDRAM is two times the data transfer rate of<br />

a standard SDRAM with the same clock frequency.<br />

35<br />

References<br />

Randy H. Katz & Gaetano Borriello,<br />

“Contemporary Logic Design”, 2/E,<br />

Pearson / Prentice Hall, 2005. (ISBN 0-201-30857-6)<br />

section 10.4<br />

John F. Wakerly, "Digital Design, Principles<br />

and Practices", 3/E, Pearson / Prentice Hall, 2001.<br />

(ISBN 0-13-089896-1) sections 10.1-10.4<br />

36<br />

18

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!