graduate computer architecture i

41
Lecture 5: Memory Hierarchy Young Cho Graduate Computer Architecture I

Upload: xantha-hopkins

Post on 01-Jan-2016

39 views

Category:

Documents


0 download

DESCRIPTION

Graduate Computer Architecture I. Lecture 5: Memory Hierarchy Young Cho. Branch Prediction. Not Having Branch Prediction are Expensive As pipelines get deeper and more complex Issuing and executing multiple instructions Branch History Table N-bits for loop accuracy Correlation - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Graduate Computer Architecture I

Lecture 5: Memory Hierarchy

Young Cho

Graduate Computer Architecture I

Page 2: Graduate Computer Architecture I

2 - CSE/ESE 560M – Graduate Computer Architecture I

Branch Prediction

• Not Having Branch Prediction are Expensive– As pipelines get deeper and more complex– Issuing and executing multiple instructions

• Branch History Table– N-bits for loop accuracy

• Correlation– Local N-bits History Table– Global Branch History

• Tournament Predictor– Two prediction method to choose better one– For example one local branch predictor and one global

• No Branch Prediction– Predicated Execution– Ability to execute or NOP during runtime– Hardware Support needed

Page 3: Graduate Computer Architecture I

3 - CSE/ESE 560M – Graduate Computer Architecture I

Instruction Memory

Register File ALU

Data Memory

PC Control

IF/ID ID/EX EX/MEM MEM/WB

Five-Stage Pipelined Processor

Page 4: Graduate Computer Architecture I

4 - CSE/ESE 560M – Graduate Computer Architecture I

µProc60%/yr.(2X/1.5yr)

DRAM9%/yr.(2X/10 yrs)1

10

100

1000

1980

1981

1983

1984

1985

1986

1987

1988

1989

1990

1991

1992

1993

1994

1995

1996

1997

1998

1999

2000

DRAM

CPU19

82

Processor-MemoryPerformance Gap:(grows 50% / year)

Per

form

ance

Time

“Moore’s Law”

Processor-DRAM Memory Gap (latency)

Why Memory Hierarchy

Page 5: Graduate Computer Architecture I

5 - CSE/ESE 560M – Graduate Computer Architecture I

Levels of the Memory Hierarchy

CPU Registers100s Bytes<< 1s ns

Cache10s-100s K Bytes~1 ns$1s/ MByte

Main MemoryM Bytes100ns- 300ns$< 1/ MByte

Disk10s G Bytes, 10 ms (10,000,000 ns)$0.001/ MByte

CapacityAccess TimeCost

Tapeinfinitesec-min$0.0014/ MByte

Registers

Cache

Memory

Disk

Tape

Instr. Operands

Blocks

Pages

Files

StagingXfer Unit

prog./compiler1-8 bytes

cache cntl8-128 bytes

OS512-4K bytes

user/operatorMbytes

Upper Level

Lower Level

faster

Larger

Page 6: Graduate Computer Architecture I

6 - CSE/ESE 560M – Graduate Computer Architecture I

P MEM$

Locality

• The Principle of Locality:– Program access a relatively small portion of the address space at

any instant of time.• Two Different Types of Locality:

– Temporal Locality (Locality in Time): If an item is referenced, it will tend to be referenced again soon (e.g., loops, reuse)

– Spatial Locality (Locality in Space): If an item is referenced, items whose addresses are close by tend to be referenced soon (e.g., straightline code, array access)

• Last 30 years, HW relied on locality for speed

Page 7: Graduate Computer Architecture I

7 - CSE/ESE 560M – Graduate Computer Architecture I

Role of Memory

• Modern microprocessors are almost all cache

Page 8: Graduate Computer Architecture I

8 - CSE/ESE 560M – Graduate Computer Architecture I

Lower Level

MemoryUpper Level

MemoryTo Processor

From ProcessorBlk X

Blk Y

Terminology• Hit: Data appears in some block in the upper level (example: Block X)

– Hit Rate• The fraction of memory access found in the upper level

– Hit Time• Time to access the upper level which consists of RAM access time + Time to determine

hit/miss• Miss: Data needs to be retrieve from a block in the lower level (Block Y)

– Miss Rate• 1 - (Hit Rate)

– Miss Penalty• Time to replace an upper level block + Time to deliver the block the processor

• Hit Time << Miss Penalty (500 instructions on 21264!)

Page 9: Graduate Computer Architecture I

9 - CSE/ESE 560M – Graduate Computer Architecture I

Cache Measures

• Hit rate– Fraction found in that level– So high that usually talk about Miss rate– Miss rate fallacy: as MIPS to CPU performance,

miss rate to average memory access time in memory • Average Memory-Access Time

– Hit time + Miss rate x Miss penalty (ns or clocks)• Miss penalty

– Time to replace a block from lower level– Access time: Time to get to the lower level– Transfer time: Time to transfer block (depends on BW)

Page 10: Graduate Computer Architecture I

10 - CSE/ESE 560M – Graduate Computer Architecture I

Associativity

Cache Size

Block Size

Cache Design

• Several interacting dimensions– cache size– block size– associativity– replacement policy– write-through vs write-back

• The optimal choice is a compromise– depends on access characteristics

• workload• use (I-cache, D-cache, TLB)

– depends on technology / cost• Simplicity often wins

Page 11: Graduate Computer Architecture I

11 - CSE/ESE 560M – Graduate Computer Architecture I

Simplest Cache: Direct Mapped

Memory

4 Byte Direct Mapped CacheAddress

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

Cache Index

0

1

2

3

• Location 0 can be occupied by data from:– Memory location 0, 4, 8, ... etc.– In general: any memory location

whose 2 LSBs of the address are 0s– Address<1:0> => cache index

• Which one should we place in the cache?• How can we tell which one is in the cache?

Page 12: Graduate Computer Architecture I

12 - CSE/ESE 560M – Graduate Computer Architecture I

1 KB Direct Mapped Cache, 32B blocks

Cache Index

0

1

2

3

:

Cache Data

Byte 0

0431

:

Cache Tag Example: 0x50

Ex: 0x01

0x50

Stored as partof the cache “state”

Valid Bit

:

31

Byte 1Byte 31 :

Byte 32Byte 33Byte 63 :Byte 992Byte 1023 :

Cache Tag

Byte Select

Ex: 0x00

9

• For a 2 ** N byte cache:– The uppermost (32 - N) bits are always the Cache Tag– The lowest M bits are the Byte Select (Block Size = 2 ** M)

Page 13: Graduate Computer Architecture I

13 - CSE/ESE 560M – Graduate Computer Architecture I

Cache Data

Cache Block 0

Cache TagValid

:: :

Cache Data

Cache Block 0

Cache Tag Valid

: ::

Cache Index

Mux 01Sel1 Sel0

Cache Block

CompareAdr Tag

Compare

OR

Hit

N-way Set Associative Cache• N entries for each Cache Index

– N direct mapped caches operates in parallel (N typically 2 to 4)• Example: Two-way set associative cache

– Cache Index selects a “set” from the cache– The two tags in the set are compared in parallel– Data is selected based on the tag result

Page 14: Graduate Computer Architecture I

14 - CSE/ESE 560M – Graduate Computer Architecture I

Disadvantage of Set Associative

• N comparators vs. 1• Extra MUX delay for the data• Data comes AFTER Hit/Miss• In a direct mapped cache, Cache Block is

available BEFORE Hit/Miss:– Possible to assume a hit and continue.

Recover later if miss.

Page 15: Graduate Computer Architecture I

15 - CSE/ESE 560M – Graduate Computer Architecture I

• Index identifies set of possibilities• Tag on each block

–No need to check index or block offset• Increasing associativity shrinks index,

expands tag

BlockOffset

Block Address

IndexTag

Cache size = Associativity * 2index_size * 2offest_size

Finding Block

Page 16: Graduate Computer Architecture I

16 - CSE/ESE 560M – Graduate Computer Architecture I

Replacing Block

• Direct Mapped– No option as to which block to replace

• Set Associative or Fully Associative:– Least Recently Used– Random– FIFO

Page 17: Graduate Computer Architecture I

17 - CSE/ESE 560M – Graduate Computer Architecture I

Storing Back to Memory

• Write through– Written to both the cache block and the lower-level

memory– Write buffers usually there for immediate response

• Write back– Written only to the block in the cache– When replacing a block, only the “dirty” blocks are

written back to the main memory• Cache Write Miss

– Write Allocate: Read from Memory to Cache then Write• Usually Associated with Write-back

– Write No Allocate: Write Directly to Main Memory• Usually Associated with Write-through

Page 18: Graduate Computer Architecture I

18 - CSE/ESE 560M – Graduate Computer Architecture I

• A Write Buffer is needed between the Cache and Memory– Processor: writes data into the cache and the write buffer– Memory controller: write contents of the buffer to memory

• Write buffer is just a FIFO:– Typical number of entries: 4– Works fine if Store frequency (w.r.t. time) << 1 / DRAM write

cycle

ProcessorCache

Write Buffer

DRAM

Write Buffer for Write Through

Page 19: Graduate Computer Architecture I

19 - CSE/ESE 560M – Graduate Computer Architecture I

Cache Performance• Ideal Processor (No Misses)

– Clock Rate = 200 MHz (5 ns per cycle)– CPI = 1.1 – 50% arith/logic, 30% ld/st, 20% control

• Cache Misses– Suppose Miss Penalty of 50 cycles– 10% of LD/ST has Cache Misses– 1% of Reading Instructions has Cache Misses

• Cycles Per Instruction– CPI = ideal CPI + average stalls per instruction = 1.1 + [ 0.30 (DataMemOp/ins) x 0.10 (miss/DataMemOp) x 50 (cycle/miss)]

+ [ 1 (InstMemOp/ins) x 0.01 (miss/InstMemOp) x 50 (cycle/miss)]

= (1.1 + 1.5 + .5) cycle/ins = 3.1 • 65% of the time the CPU is stalled waiting for memory• Average Memory Access Time – AMAT (in cycles/access)

– Separate Measure the Memory Access Time – AMAT = InstMemAcc Rate x ( Hit Latency + InstMemMiss Rate x Penalty) + DataMemAcc Rate x ( Hit Latency + DataMemMiss Rate x Penalty)– 0.77 x (1 + 0.01 x 50) + 0.23 x (1 + 0.1 x 50) = 2.54 cycles/access

Page 20: Graduate Computer Architecture I

20 - CSE/ESE 560M – Graduate Computer Architecture I

ProcI-Cache-1

Proc

UnifiedCache-1

UnifiedCache-2

D-Cache-1

Proc

UnifiedCache-2

Harvard Architecture• Unified vs Separate I&D (Harvard)

• Statistics (given in H&P):– 16KB I&D: Inst miss rate=0.64%, Data miss rate=6.47%– 32KB unified: Aggregate miss rate=1.99%

• Which is better?– Assume 33% data ops 75% accesses from instructions (1.0/1.33)– hit time=1, miss time=50

• AMATHarvard=75%x(1+0.64%x50)+25%x(1+6.47%x50) = 2.05– Access are Separate– Assumption is I and D Caches usually don’t fight for Unified Cache-2

• AMATUnified=75%x(1+1.99%x50)+25%x(1+1+1.99%x50)= 2.24– Data hit has 1 stall for unified cache (only one port)

Page 21: Graduate Computer Architecture I

21 - CSE/ESE 560M – Graduate Computer Architecture I

Improving Cache Performance

CPUtime IC CPIExecution

Memory accesses

InstructionMiss rateMiss penalty

Clock cycle time

1. Reduce the miss rate, 2. Reduce the miss penalty, or3. Reduce the time to hit in the cache.

Page 22: Graduate Computer Architecture I

22 - CSE/ESE 560M – Graduate Computer Architecture I

Reducing Misses• Classifying Misses: 3 Cs

– Compulsory—The first access to a block is not in the cache, so the block must be brought into the cache. Also called cold start misses or first reference misses.(Misses in even an Infinite Cache)

– Capacity—If the cache cannot contain all the blocks needed during execution of a program, capacity misses will occur due to blocks being discarded and later retrieved.(Misses in Fully Associative Size X Cache)

– Conflict—If block-placement strategy is set associative or direct mapped, conflict misses (in addition to compulsory & capacity misses) will occur because a block can be discarded and later retrieved if too many blocks map to its set. Also called collision misses or interference misses.(Misses in N-way Associative, Size X Cache)

• More recent, 4th “C”:– Coherence - Misses caused by cache coherence.

Page 23: Graduate Computer Architecture I

23 - CSE/ESE 560M – Graduate Computer Architecture I

Cache Size (KB)

Mis

s R

ate

per

Typ

e

0

0.02

0.04

0.06

0.08

0.1

0.12

0.141 2 4 8

16

32

64

12

8

1-way

2-way

4-way

8-way

Capacity

Compulsory

3Cs Absolute Miss Rate (SPEC92)

Conflict

Compulsory vanishinglysmall

Page 24: Graduate Computer Architecture I

24 - CSE/ESE 560M – Graduate Computer Architecture I

Cache Size (KB)

Mis

s R

ate

per

Typ

e

0

0.02

0.04

0.06

0.08

0.1

0.12

0.141 2 4 8

16

32

64

12

8

1-way

2-way

4-way

8-way

Capacity

Compulsory

Conflict

miss rate 1-way associative cache size X ~= miss rate 2-way associative cache size X/2

2:1 Cache Rule

Page 25: Graduate Computer Architecture I

25 - CSE/ESE 560M – Graduate Computer Architecture I

3Cs Relative Miss Rate

Cache Size (KB)

Mis

s R

ate

per

Typ

e

0%

20%

40%

60%

80%

100%1 2 4 8

16

32

64

12

8

1-way

2-way4-way

8-way

Capacity

Compulsory

Conflict

Caveat: fixed block size

Page 26: Graduate Computer Architecture I

26 - CSE/ESE 560M – Graduate Computer Architecture I

How Can Reduce Misses?

• 3 Cs: Compulsory, Capacity, Conflict• In all cases, assume total cache size not changed:• What happens if:1) Change Block Size:

Which of 3Cs is obviously affected?

2) Change Associativity: Which of 3Cs is obviously affected?

3) Change Algorithm / Compiler: Which of 3Cs is obviously affected?

Page 27: Graduate Computer Architecture I

27 - CSE/ESE 560M – Graduate Computer Architecture I

Block Size (bytes)

Miss Rate

0%

5%

10%

15%

20%

25%

16

32

64

12

8

25

6

1K

4K

16K

64K

256K

1. Reduce Misses via Larger Block Size

-Compulsory+Conflict & +Capacity+Miss Penalty

Page 28: Graduate Computer Architecture I

28 - CSE/ESE 560M – Graduate Computer Architecture I

2. Higher Associativity

• 2:1 Cache Rule: – Miss Rate DM cache size N ~ Miss Rate 2-way

cache size N/2– Holds for < 128KB

• 8 Way as effective as Fully SA• Execution time is only final measure!

– Will Clock Cycle time increase?– external cache +10%, – internal + 2%

Page 29: Graduate Computer Architecture I

29 - CSE/ESE 560M – Graduate Computer Architecture I

• Combine fast hit time of direct mapped while avoiding conflict misses

• Add buffer (small fully SA Cache) to place data discarded from cache (Victim)

• Jouppi [1990]: 4-entry victim cache removed 20% to 95% of conflicts for a 4 KB direct mapped data cache

• Used in Alpha, HP machines To Next Lower Level In

Hierarchy

DATATAGS

One Cache line of DataTag and Comparator

One Cache line of DataTag and Comparator

One Cache line of DataTag and Comparator

One Cache line of DataTag and Comparator

3. “Victim Cache”

Page 30: Graduate Computer Architecture I

30 - CSE/ESE 560M – Graduate Computer Architecture I

Hit Time

Pseudo Hit Time Miss Penalty

Time

4. “Pseudo-Associativity”• Combine fast hit time of Direct Mapped and have

the lower conflict misses of 2-way SA cache • Divide cache: on a miss, check other half of cache

to see if there, if so have a pseudo-hit (slow hit)

• Drawback: CPU pipeline is hard if hit takes 1 or 2 cycles– Better for caches not tied directly to processor (L2)– Used in MIPS R1000 L2 cache, similar in UltraSPARC

Page 31: Graduate Computer Architecture I

31 - CSE/ESE 560M – Graduate Computer Architecture I

5. Hardware Prefetching

• E.g., Instruction Prefetching– Alpha 21064 fetches 2 blocks on a miss– Extra block placed in “stream buffer”– On miss check stream buffer

• Works with data blocks too:– Jouppi [1990] 1 data stream buffer got 25% misses

from 4KB cache; 4 streams got 43%– Palacharla & Kessler [1994] for scientific programs for 8

streams got 50% to 70% of misses from 2 64KB, 4-way set associative caches

• Prefetching relies on having extra memory bandwidth that can be used without penalty

Page 32: Graduate Computer Architecture I

32 - CSE/ESE 560M – Graduate Computer Architecture I

6. Software Prefetching

• Data Prefetch– Load data into register (HP PA-RISC loads)– Cache Prefetch: load into cache

(MIPS IV, PowerPC, SPARC v. 9)– Special prefetching instructions cannot cause

faults; a form of speculative execution• Issuing Prefetch Instructions takes time

– Is cost of prefetch issues < savings in reduced misses?

– Higher superscalar reduces difficulty of issue bandwidth

Page 33: Graduate Computer Architecture I

33 - CSE/ESE 560M – Graduate Computer Architecture I

7. Compiler Optimizations

• McFarling [1989] reduced caches misses by 75% on 8KB direct mapped cache, 4 byte blocks in software

• Instructions– Reorder procedures in memory so as to reduce conflict misses– Profiling to look at conflicts(using tools they developed)

• Data– Merging Arrays: improve spatial locality by single array of

compound elements vs. 2 arrays– Loop Interchange: change nesting of loops to access data in order

stored in memory– Loop Fusion: Combine 2 independent loops that have same

looping and some variables overlap– Blocking: Improve temporal locality by accessing “blocks” of data

repeatedly vs. going down whole columns or rows

Page 34: Graduate Computer Architecture I

34 - CSE/ESE 560M – Graduate Computer Architecture I

Merging Arrays Example

/* Before: 2 sequential arrays */int val[SIZE];int key[SIZE];

/* After: 1 array of stuctures */struct merge {

int val;int key;

};struct merge merged_array[SIZE];

Reducing conflicts between val & key; improve spatial locality

Page 35: Graduate Computer Architecture I

35 - CSE/ESE 560M – Graduate Computer Architecture I

Loop Interchange Example

/* Before */for (k = 0; k < 100; k = k+1)

for (j = 0; j < 100; j = j+1)for (i = 0; i < 5000; i = i+1)

x[i][j] = 2 * x[i][j];/* After */for (k = 0; k < 100; k = k+1)

for (i = 0; i < 5000; i = i+1)for (j = 0; j < 100; j = j+1)

x[i][j] = 2 * x[i][j];

Sequential accesses instead of striding through memory every 100 words; improved spatial locality

Page 36: Graduate Computer Architecture I

36 - CSE/ESE 560M – Graduate Computer Architecture I

/* Before */for (i = 0; i < N; i = i+1)

for (j = 0; j < N; j = j+1)a[i][j] = 1/b[i][j] * c[i][j];

for (i = 0; i < N; i = i+1)for (j = 0; j < N; j = j+1)

d[i][j] = a[i][j] + c[i][j];/* After */for (i = 0; i < N; i = i+1)

for (j = 0; j < N; j = j+1){ a[i][j] = 1/b[i][j] * c[i][j];

d[i][j] = a[i][j] + c[i][j];}

2 misses per access to a & c vs. one miss per access; improve spatial locality

Loop Fusion Example

Page 37: Graduate Computer Architecture I

37 - CSE/ESE 560M – Graduate Computer Architecture I

/* Before */for (i = 0; i < N; i = i+1) for (j = 0; j < N; j = j+1){ r = 0; for (k = 0; k < N; k = k+1){ r = r + y[i][k]*z[k][j]; } x[i][j] = r; }

• Two Inner Loops:– Read all NxN elements of z[]– Read N elements of 1 row of y[] repeatedly– Write N elements of 1 row of x[]

• Capacity Misses a function of N & Cache Size:– 2N3 + N2 => (assuming no conflict; otherwise …)

• Idea: compute on BxB submatrix that fits

Blocking Example

Page 38: Graduate Computer Architecture I

38 - CSE/ESE 560M – Graduate Computer Architecture I

/* After */for (jj = 0; jj < N; jj = jj+B) for (kk = 0; kk < N; kk = kk+B) for (i = 0; i < N; i = i+1) for (j = jj; j < min(jj+B-1,N); j = j+1) { r = 0; for (k = kk; k < min(kk+B-1,N); k = k+1) { r = r + y[i][k]*z[k][j]; } x[i][j] = x[i][j] + r; }

• B called Blocking Factor• Capacity Misses from 2N3 + N2 to 2N3/B +N2

• Conflict Misses Too?

Blocking Example

Page 39: Graduate Computer Architecture I

39 - CSE/ESE 560M – Graduate Computer Architecture I

Performance Improvement

1 1.5 2 2.5 3

compress

cholesky(nasa7)

spice

mxm (nasa7)

btrix (nasa7)

tomcatv

gmty (nasa7)

vpenta (nasa7)

mergedarrays

loopinterchange

loop fusion blocking

Compiler Optimizations

Page 40: Graduate Computer Architecture I

40 - CSE/ESE 560M – Graduate Computer Architecture I

Impact of Memory Hierarchy on Algorithms

• Today CPU time is a function of (ops, cache misses) vs. just f(ops): What does this mean to Compilers, Data structures, Algorithms?

• “The Influence of Caches on the Performance of Sorting” by A. LaMarca and R.E. Ladner. Proceedings of the Eighth Annual ACM-SIAM Symposium on Discrete Algorithms, January, 1997, 370-379.– Quicksort: fastest comparison based sorting algorithm

when all keys fit in memory– Radix sort: also called “linear time” sort because for keys

of fixed length and fixed radix a constant number of passes over the data is sufficient independent of the number of keys

Page 41: Graduate Computer Architecture I

41 - CSE/ESE 560M – Graduate Computer Architecture I

Summary

• 3 Cs: Compulsory, Capacity, Conflict1. Reduce Misses via Larger Block Size2. Reduce Misses via Higher Associativity3. Reducing Misses via Victim Cache4. Reducing Misses via Pseudo-Associativity5. Reducing Misses by HW Prefetching Instr, Data6. Reducing Misses by SW Prefetching Data7. Reducing Misses by Compiler Optimizations

• Remember danger of concentrating on just one parameter when evaluating performance

CPUtime IC CPIExecution

Memory accesses

InstructionMiss rateMiss penalty

Clock cycle time