winter 2002cse 141 - cache improving memory with caches cpu on-chip cache off-chip cache dram memory...

28
Winter 2002 CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

Upload: paul-jones

Post on 29-Dec-2015

243 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

Winter 2002 CSE 141 - Cache

Improving memory with caches

CPU

On-chipcache

Off-chipcache

DRAMmemory

Disk memory

Page 2: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache2

The five components

Computer

Memory

Datapath

Control

Output

Input

Page 3: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache3

Memory technologies• SRAM

– access time: 3-10 ns. (on-processor SRAM can be 1-2 ns.)

– cost: $100 per MByte (??).

• DRAM – access times: 30 - 60 ns

– cost: $0.50 per MByte.

• Disk– access times: 5 to 20 million ns

– cost of $0.01 per MByte.

We want SRAM’s access time and disk’s capacity.

Disclaimer: Access times and prices are approximate and

constantly changing. (2/2002)

Page 4: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache4

The problem with memory• It’s expensive (and perhaps impossible) to

build a large, fast memory– “fast” meaning “low latency”

• why is low latency important?

• To access data quickly:– it must be physically close

– there can’t be too many layers of logic

• Solution: Move data you are about to access to a nearby, smaller, memory cache– Assuming you can make good guesses about what

you will access soon.

Page 5: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache5

A typical memory hierarchy

CPU

SRAMmemory

SRAMmemory

DRAMmemory

Disk memory

on-chip “level 1” cache

off-chip “level 2” cache

main memory

disk

small, fast

big, slower,cheaper/bit

huge,very slow,very cheap

Page 6: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache6

Cache basics• In running program, main memory is data’s

“home location”.– Addresses refer to location in main memory.

– “Virtual memory” allows disk to extend DRAM• We’ll study virtual memory later

• When data is accessed, it is automatically moved into cache– Processor (or smaller cache) uses cache’s copy

– Data in main memory may (temporarily) get out-of-date

• But hardware must keep everything consistent.

– Unlike registers, cache is not part of ISA• Different models can have totally different cache design

Page 7: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache7

The principle of locality

Memory hierarchies take advantage of memory locality. – The principle that future memory accesses are near past

accesses.

Two types of locality (the following are “fuzzy” terms):– Temporal locality - near in time: we will often access the

same data again very soon

– Spatial locality - near in space/distance: our next access is often very close to recent accesses.

This sequence of addresses has both types of locality

1, 2, 3, 1, 2, 3, 8, 8, 47, 9, 10, 8, 8 ...spatial temporal non-local

Page 8: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache8

How does HW decide what to cache?

Taking advantage of temporal locality:bring data into cache whenever its referencedkick out something that hasn’t been used recently

Taking advantage of spatial locality:

bring in a block of contiguous data (cacheline), not just the requested data.

Some processors have instructions that let software influence cache:

Prefetch instruction (“bring location x into cache”)

“Never cache x” or “keep x in cache” instructions

This font (Helvetica italics) means “won’t be on test”

Page 9: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache9

Cache Vocabulary• cache hit: an access where data is already in cache • cache miss: an access where data isn’t in cache• cache block size or cache line size: the amount of

data that gets transferred on a cache miss.• instruction cache (I-cache): cache that

can only hold instructions.• data cache (D-cache): cache that can only

hold data.• unified cache: cache that holds both data &

instructions.

A typical processor today has separate “Level 1” I- and D-caches onthe same chip as the processor (and possibly a larger, unified “L2” on-chip cache), and larger L2 (or L3) unified cache on a separate chip.

like the multi-cycle design

like the single cycle and pipelined

designs

Page 10: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache10

Cache IssuesOn a memory access -

• How does hardware know if it is a hit or miss?

On a cache miss -

• where to put the new data?

• what data to throw out?

• how to remember what data is where?

Page 11: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache11

A simple cache

• Fully associative: any line of data can go anywhere in cache

• LRU replacement strategy: make room by throwing out the least recently used data.

tag datathe tag identifiesthe addresses of the cached data

the tag identifiesthe addresses of the cached data

A very small cache:4 entries, each holds a four-byteword, any entry can hold any word.

time since last reference

We’ll use this fieldto help decide what

entry to replace

Page 12: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache12

Simple cache in action

tag data

Sequence of memory references: 24, 20, 04, 12, 20, 44, 04, 24, 44

time since last reference

24 - 27 - data - 3

20 - 23 - more data - 2

04 - 07 - etc- 1

12 - 15 - etc - 0

The first four reference are all misses – they fill up cache.

24 - 27 - data - 3

20 - 23 - more data - 0

04 - 07 - etc- 2

12 - 15 - etc - 1

The next reference (“20”) is a hit. Times are updated.

“44” is a miss – oldest data (24-27) is replaced.

44 - 47 - new data - 0

20 - 23 - more data - 1

04 - 07 - etc- 3

12 - 15 - etc - 2

44 - 47 - new data - 0

20 - 23 - more data - 1

04 - 07 - etc- 3

12 - 15 - etc - 2

Now what happens ??

Page 13: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache13

An even simpler cache

• Keeping track of when cache entries were last used (for LRU replacement) in big cache needs lots of hardware and can be slow.

• In a direct mapped cache, each memory location is assigned a single location in cache. – Usually* done by using a few bits of the address

– We’ll let bits 2 and 3 (counting from LSB = “0”) of the address be the index * Some machines use a pseudo-random hash of the address

Page 14: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache14

Direct mapped cache in action

tag dataSequence of memory references: 24, 20, 04, 12, 20, 44, 04, 24, 44

- -

20 - 23 data

24 - 27 data

- -

24 = 0110002 ; so index is 10.

20 = 0101002 ; so index is 01.

(remember: index is bits 2-3 of address)

index00

01

10

11

- -

04 - 08 data

24 - 27 data

- -

04 = 0001002 ; so index is 01.

(kicks 20-23 out of the cache)

00

01

10

11

- -

04 - 08 data

24 - 27 data

12 - 15 data

12 = 0011002 ; so index is 11.00

01

10

11

- -

04 - 08 data

24 - 27 data

12 - 15 data

00

01

10

11

your turn ...20 = 0101002

44 = 1011002

04 = 0001002

Page 15: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache15

A Better Cache Design• Direct mapped caches are simpler

– Less hardware; possibly faster

• Fully associative caches usually have fewer misses.• Set associative caches try to get best of both.

– An index is computed from the address– In a “k-way set associative cache”, the index specifies a

set of k cache locations where the data can be kept.• k=1 is direct mapped. • k=cache size (in lines) is fully associative.

– Use LRU replacement (or something else) within the set.

index0

1

2

3

...

tag data tag data2-way set associative cache Two places to look for

data with index “0”

Page 16: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache16

2-way set associative cache in action

Sequence of memory references: 24, 20, 04, 12, 20, 44, 04, 24, 44

24 = 0110002 ; index is 0.

20 = 0101002 ; index is 1.(index is bit 2 of address)

your turn ...20 = 0101002

44 = 1011002

04 = 0001002

24 - 27 data - -

20 – 23 data - -

index0

1

tag data tag data

04 = 0001002 ; index is 1.(goes in 2nd slot of “01” set)

24 - 27 data - -

20 – 23 data 04 – 07 data

0

1

12 = 0011002 ; index is 1.(kicks out older item in “01” set)

24 - 27 data - -

12 – 15 data 04 – 07 data

0

1

24 - 27 data - -

12 – 15 data 04 – 07 data

0

1

Page 17: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache17

Cache AssociativityAn observation (?):4-way cache has about the same hit rate as a direct-mapped cache oftwice the size

Page 18: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache18

Longer Cache Blocks

• Large cache blocks take advantage of spatial locality.

• Less tag space is needed (for a given capacity cache)

• Too large block size can waste cache space.

• Large blocks require longer transfer times.

Good design requires compromise!

tag data (room for big block)

Page 19: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache19

Larger block size in actionSequence of memory references: 24, 20, 28, 12, 20, 08, 44, 04, ...

24 = 0110002 ; index is 1.(index is bit 3 of address)

your turn ...12 = 0011002

08 = 0010002

44 = 1011002

- -

24 – 31 data

index0

1

tag 8 Bytes of data

20 = 0101002 ; index is 0.(notice that line is Bytes 16-23 –line starts with multiple of length)

28 = 0111002 ; index is 1.

A hit - even though we haven’treferenced 28 before!

16 - 23 data

24 – 31 data

0

1

16 - 23 data

24 – 31 data

0

1

Page 20: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache20

Block Size and Miss Rate

Rule of thumb: block size should be less than square root of cache size.

Page 21: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache21

Cache Parameters

Cache size = Number of sets * block size * associativity

128 blocks, 32-byte blocks, direct mapped, size = ?

128 KB cache, 64-byte blocks, 512 sets, associativity = ?

Page 22: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache22

Details

• What bits should we use for the index?

• How do we know if a cache entry is empty?

• Are stores and loads treated the same?

• What if a word overlaps two cache lines??

• How does this all work, anyway???

Page 23: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache23

Choosing bits for the index

If line length is n Bytes, the low-order log2n bits of a Byte-address give the offset of address within a line.

The next group of bits is the index -- this ensures that if the cache holds X bytes, then any block of X contiguous Byte addresses can co-reside in the cache.

(Provided the block starts on a cache line boundary.)

The remaining bits are the tag.

Anatomy of an address:

tag index offset

Page 24: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache24

Is a cache entry empty?

• Problem: when a program starts up, cache is empty.– It might contain stuff left from previous user.

– How do you make sure you don’t match an invalid tag?

• Solution: an extra “valid” bit per cacheline– Entire cache can be marked “invalid” on

context switch.

Page 25: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache25

Putting it all together64 KB cache, direct-mapped, 32-byte cache block

31 30 29 28 27 ........... 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0tag index

valid tag data

64 KB

/ 32 bytes =

2 K cache blocks/sets

11

=

256

32

16

hit/miss

012

...

...

...

...204520462047

word offset

Page 26: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache26

A set associative cache32 KB cache, 2-way set-associative, 16-byte blocks

31 30 29 28 27 ........... 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0tag index

valid tag data

32 KB

/ 16 bytes / 2 =

1 K cache sets

10

=

18

hit/miss

012

...

...

...

...102110221023

word offset

tag datavalid

= This picture doesn’t showthe “most recent” bit(need one bit per set)

Page 27: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache27

Key Points

• Caches give illusion of a large, cheap memory with the access time of a fast, expensive memory.

• Caches take advantage of memory locality, specifically temporal locality and spatial locality.

• Cache design presents many options (block size, cache size, associativity) that an architect must combine to minimize miss rate and access time to maximize performance.

Page 28: Winter 2002CSE 141 - Cache Improving memory with caches CPU On-chip cache Off-chip cache DRAM memory Disk memory

CSE 141 - Cache28

Computer of the Day• Integrated Circuits (IC’s)

– Single chip has transistors, resistors, “wires”.

– Invented in 1958 at Texas Instruments,

– used in “third generation” computers of late 60’s; (1st = tubes, 2nd = transistors).

Some computers using IC technology ...

• Apollo guidance system (first computer on the moon)– ~5000 IC’s: each with 3 transistors, 4 resistors.

• Illiac IV – “The most infamous computer” (at that time) – designed late 60’s, built in early 70’s, actually used 1976-82

– Plan: 1000 MFLOP/s. Reality: 15 MFLOP/s (200 MIPS). Cost: $31M

– First “massively parallel” computer: • four groups of 64 processors, • Each group is “SIMD” (Single Instruction, Multiple Data)