cs 230: computer organization and assembly language

33
C M L C M L CS 230: Computer Organization and Assembly Language Aviral Shrivastava Department of Computer Science and Engineering School of Computing and Informatics Arizona State University Slides courtesy: Prof. Yann Hang Lee, ASU, Prof. Mary Jane Irwin, PSU, Ande Carle, UCB

Upload: cecilia-anthony

Post on 03-Jan-2016

13 views

Category:

Documents


0 download

DESCRIPTION

CS 230: Computer Organization and Assembly Language. Aviral Shrivastava. Department of Computer Science and Engineering School of Computing and Informatics Arizona State University. Slides courtesy: Prof. Yann Hang Lee, ASU, Prof. Mary Jane Irwin, PSU, Ande Carle, UCB. Announcements. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CS 230: Computer Organization and Assembly Language

CMLCML

CS 230: Computer Organization and

Assembly LanguageAviral

ShrivastavaDepartment of Computer Science and

EngineeringSchool of Computing and Informatics

Arizona State University

Slides courtesy: Prof. Yann Hang Lee, ASU, Prof. Mary Jane Irwin, PSU, Ande Carle, UCB

Page 2: CS 230: Computer Organization and Assembly Language

CMLCML

Announcements• This Lecture: Caches

• Next Lecture: More Caches, Virtual Memory

• Finals– Tuesday, Dec 08, 2009– Please come on time (You’ll need all the time)– Open book, notes, and internet– No communication with any other human

Page 3: CS 230: Computer Organization and Assembly Language

CMLCML

Time, Time, Time• Making a Single Cycle Implementation is very easy

– Difficulty and excitement is in making it fast• Two fundamental methods to make Computers fast

– Pipelining– Caches

Address Instruction

InstructionMemory

Write Data

Reg Addr

Reg Addr

Reg Addr

Register

File ALU

DataMemory

Address

Write Data

Read DataPC

Read Data

Read Data

Page 4: CS 230: Computer Organization and Assembly Language

CMLCML

Kinds of Memory

CPU Registers 100s Bytes <10s ns

SRAM K Bytes 10-20 ns $.00003/bit

DRAM M Bytes 50ns-100ns $.00001/bit

Disk G Bytes ms 10-6 cents

Tape infinite sec-min

Flipflops

SRAM

DRAM

Disk

Tape

faster

larger

Page 5: CS 230: Computer Organization and Assembly Language

CMLCML

Memory Hierarchy: Insights

• Temporal Locality (Locality in Time):=> Keep most recently accessed data items closer to

the processor• Spatial Locality (Locality in Space):

=> Move blocks consists of contiguous words to the upper levels

Lower LevelMemoryUpper Level

MemoryTo Processor

From ProcessorBlk X

Blk Y

Page 6: CS 230: Computer Organization and Assembly Language

CMLCML

Memory Hierarchy: Terminology

• Hit: data appears in some block in the upper level (Block X) – Hit Rate: fraction of memory accesses 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 a block in the upper level

+ Time to deliver the block the processor

– Hit Time << Miss Penalty

Lower LevelMemoryUpper Level

MemoryTo Processor

From ProcessorBlk X

Blk Y

Page 7: CS 230: Computer Organization and Assembly Language

CMLCML

Memory Hierarchy: Show me numbers

• Consider application− 30% instructions are load/stores− Suppose memory latency = 100 cycles

− Time to execute 100 instructions = 70*1 + 30*100 = 3070 cycles

• Add a cache with latency 2 cycle− Suppose hit rate is 90%

− Time to execute 100 instructions= 70*1 + 27*2 + 3*100 = 70+54+300 = 424 cycles

Page 8: CS 230: Computer Organization and Assembly Language

CMLCML

Direct-Mapped Cache (1/2)

• In a direct-mapped cache, each memory address is associated with one possible block within the cache– Therefore, we only need to look in a

single location in the cache for the data if it exists in the cache

– Block is the unit of transfer between cache and memory

Page 9: CS 230: Computer Organization and Assembly Language

CMLCML

Direct-Mapped Cache (2/2)

Cache Location 0 can be occupied by data from:

– Memory location 0, 4, 8, ... – 4 blocks => any memory

location that is multiple of 4

MemoryMemory Address

0123456789ABCDEF

4 Byte Direct Mapped Cache

Cache Index

0123

Page 10: CS 230: Computer Organization and Assembly Language

CMLCML

Addressing in Direct-Mapped Cache

• Since multiple memory addresses map to same cache index, how do we tell which one is in there?

• What if we have a block size > 1 byte?• Answer: divide memory address into three

fields

ttttttttttttttttt iiiiiiiiii oooo

tag index byteto check to offsetif have selectwithincorrect block block block

Page 11: CS 230: Computer Organization and Assembly Language

CMLCML

Direct-Mapped Cache Terminology

• All fields are read as unsigned integers.

• Index: specifies the cache index (which “row” of the cache we should look in)

• Offset: once we’ve found correct block, specifies which byte within the block we want

• Tag: the remaining bits after offset and index are determined; these are used to distinguish between all the memory addresses that map to the same location

Page 12: CS 230: Computer Organization and Assembly Language

CMLCML

Direct-Mapped Cache Example (1/3)

• Suppose we have a 16KB of data in a direct-mapped cache with 4 word blocks

• Determine the size of the tag, index and offset fields if we’re using a 32-bit architecture

• Offset– need to specify correct byte within a block– block contains 4 words

= 16 bytes = 24 bytes

– need 4 bits to specify correct byte

Page 13: CS 230: Computer Organization and Assembly Language

CMLCML

Direct-Mapped Cache Example (2/3)

• Index: (~index into an “array of blocks”)– need to specify correct row in cache– cache contains 16 KB = 214 bytes– block contains 24 bytes (4 words)– # blocks/cache

= bytes/cachebytes/block

= 214 bytes/cache 24 bytes/block

= 210 blocks/cache– need 10 bits to specify this many rows

Page 14: CS 230: Computer Organization and Assembly Language

CMLCML

Direct-Mapped Cache Example (3/3)

• Tag: use remaining bits as tag– tag length = addr length – offset - index

= 32 - 4 - 10 bits = 18 bits

– so tag is leftmost 18 bits of memory address

• Why not full 32 bit address as tag?– All bytes within block need same address (4b)– Index must be same for every address within a block, so

it’s redundant in tag check, thus can leave off to save memory (here 10 bits)

Page 15: CS 230: Computer Organization and Assembly Language

CMLCML

TIO

AREA (cache size, B)= HEIGHT (# of blocks) * WIDTH (size of one block, B/block)

WIDTH (size of one block, B/block)

HEIGHT(# of blocks)

AREA(cache size, B)

2(H+W) = 2H * 2W

Tag Index Offset

Page 16: CS 230: Computer Organization and Assembly Language

CMLCML

Accessing data in a direct mapped cache

• Ex.: 16KB of data, direct-mapped, 4 word blocks

• Read 4 addresses1. 0x000000142. 0x0000001C3. 0x000000344. 0x00008014

• Memory values on right:

– only cache/ memory level of hierarchy

Address (hex)Value of WordMemory

0000001000000014000000180000001C

abcd

... ...

0000003000000034000000380000003C

efgh

0000801000008014000080180000801C

ijkl

... ...

... ...

... ...

Page 17: CS 230: Computer Organization and Assembly Language

CMLCML

Accessing data in a direct mapped cache

• 4 Addresses:–0x00000014, 0x0000001C, 0x00000034, 0x00008014

• 4 Addresses divided (for convenience) into Tag, Index, Byte Offset fields

000000000000000000 0000000001 0100

000000000000000000 0000000001 1100

000000000000000000 0000000011 0100

000000000000000010 0000000001 0100

Tag Index Offset

Page 18: CS 230: Computer Organization and Assembly Language

CMLCML

16 KB Direct Mapped Cache, 16B blocks

• Valid bit: determines whether anything is stored in that row (when computer initially turned on, all entries invalid)

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

Index00000000

00

Page 19: CS 230: Computer Organization and Assembly Language

CMLCML

1. Read 0x00000014

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

• 000000000000000000 0000000001 0100

Index

Tag field Index field Offset

00000000

00

Page 20: CS 230: Computer Organization and Assembly Language

CMLCML

So we read block 1 (0000000001)

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

• 000000000000000000 0000000001 0100

Index

Tag field Index field Offset

00000000

00

Page 21: CS 230: Computer Organization and Assembly Language

CMLCML

No valid data

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

• 000000000000000000 0000000001 0100

Index

Tag field Index field Offset

00000000

00

Page 22: CS 230: Computer Organization and Assembly Language

CMLCML

Load data into cache, setting tag & valid

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

1 0 a b c d

• 000000000000000000 0000000001 0100

Index

Tag field Index field Offset

0

000000

00

Page 23: CS 230: Computer Organization and Assembly Language

CMLCML

Read from cache at offset, return word b

• 000000000000000000 0000000001 0100

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

1 0 a b c d

Index

Tag field Index field Offset

0

000000

00

Page 24: CS 230: Computer Organization and Assembly Language

CMLCML

2. Read 0x0000001C = 0…00 0..001 1100

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

1 0 a b c d

• 000000000000000000 0000000001 1100

Index

Tag field Index field Offset

0

000000

00

Page 25: CS 230: Computer Organization and Assembly Language

CMLCML

Index is Valid

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

1 0 a b c d

• 000000000000000000 0000000001 1100

Index

Tag field Index field Offset

0

000000

00

Page 26: CS 230: Computer Organization and Assembly Language

CMLCML

Index valid, Tag Matches

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

1 0 a b c d

• 000000000000000000 0000000001 1100

Index

Tag field Index field Offset

0

000000

00

Page 27: CS 230: Computer Organization and Assembly Language

CMLCML

Index Valid, Tag Matches, return d

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

1 0 a b c d

• 000000000000000000 0000000001 1100

Index

Tag field Index field Offset

0

000000

00

Page 28: CS 230: Computer Organization and Assembly Language

CMLCML

3. Read 0x00000034 = 0…00 0..011 0100

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

1 0 a b c d

• 000000000000000000 0000000011 0100

Index

Tag field Index field Offset

0

000000

00

Page 29: CS 230: Computer Organization and Assembly Language

CMLCML

So read block 3

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

1 0 a b c d

• 000000000000000000 0000000011 0100

Index

Tag field Index field Offset

0

000000

00

Page 30: CS 230: Computer Organization and Assembly Language

CMLCML

No valid data

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

1 0 a b c d

• 000000000000000000 0000000011 0100

Index

Tag field Index field Offset

0

000000

00

Page 31: CS 230: Computer Organization and Assembly Language

CMLCML

Load that cache block, return word f

...

ValidTag 0x0-3 0x4-7 0x8-b 0xc-f

01234567

10221023

...

1 0 a b c d

• 000000000000000000 0000000011 0100

1 0 e f g h

Index

Tag field Index field Offset

0

0

0000

00

Page 32: CS 230: Computer Organization and Assembly Language

CMLCML

A Direct Mapped Cache for MIPS

• What is the block size– 32-bits, 4 bytes

• How many blocks in cache– 1024

• How long is index– 10-bits

• How many blocks in memory– 2^32/4 = 2^30

• How many memory blocks map to the same cache block– 2^30/1024 =

2^20• How long is tag

– 20-bits

Page 33: CS 230: Computer Organization and Assembly Language

CMLCML

Yoda says…

You will find only what you bring in