Chapter 4 Cache Memory
-
Upload
jameson-dickerson -
Category
Documents
-
view
85 -
download
5
description
Transcript of Chapter 4 Cache Memory
Chapter 4
Cache Memory
- Computer Memory System Overview- Cache Memory Principles- Elements of Cache Design
ประเด็นสำคัญ• ในระดับโครงสรา้งลำาดับชัน้ของหน่วยความจำา ถ้ามองลงมาสูร่ะดับ
ล่างพบ หน่วยความจำาท่ีมมูีลค่าราคาต่อบติตำ่าลงมาเรื่อยๆ มขีนาด หน่วยความจำาเพิม่ขึ้น แต่ใชร้ะยะเวลาในการอ่านหรอืบนัทึกขอ้มูล
สงูขึ้น• ในความเป็นจรงิเราไมส่ามารถใชห้น่วยความจำาระดับบนได้อยา่ง
เดียวเพราะมรีาคาสงูสว่นใหญ่จงึใชว้ธิกีารรอมชอม ด้วยการใช้ หน่วยความจำาระดับบนน้อย และใชห้น่วยความจำาระดับล่างมากขึ้น
เพื่อให้เกิดควมสมดลุระหว่งประสทิธภิพและรค• โดยทัว่ไปตำาแหน่งการอ้างอิงขอ้มูลในหน่วยความจำาหลักโดย
โปรเซสเซอรนั์น้มกัจะเป็นตำาแหน่งเดิม ดังนัน้หน่วยความจำาcache มกัจะคัดลอกขอ้มูลในหน่วยความจำาหลัก ซึ่งถ้า Cache ได้รบัการออกแบบเป็นอยา่งดีแล้วเวลาสว่นใหญ่โปรเซสเซอรก์็จะ
เรยีกใชข้อ้มูลท่ีอยูใ่น Cache เป็นสว่นมาก
Characteristics ท่ีเก่ียวกับ Computer Memory System• Location (สถานที่ท่ีหน่วยความจำาอยู)่- Internal (main) (หน่วยความจำาภายในเครื่องคอมพวิเตอร)์ เชน่จำาพวก
Register , Main Memory,Cache- External(secondary) ( ติดต่อโดยผ่านหน่วยความคมุ I/O) เชน่จำาพวก
Harddisk, FFD
• Capacity ( หน่วยความจำาภายในมกัใชห้น่วยเป็น Bit หรอื Word)- Word size เป็นขนาดของหน่วยความจำา โดยทัว่ไปถ้าภายในเป็น bit ถ้า
ภายนอกเป็น byte โดยปกติ 1 word มขีนาด 8 ,16 หรอื32- Number of words
• Unit of transfer จำานวนของ bit ท่ี อ่านหรอืเขยีนใน memory ณหนึ่งหน่วยเวลา
Characteristics ท่ีเก่ียวกับ Computer Memory System• Access method เป็นวธิกีารเขา้ถึง Memory ด้วยวธิต่ีางๆ
เชน่- Sequential access(วธิกีารเขา้ถึง Mem แบบเรยีงลำาดับ) เชน่
หน่วยบนัทึกขอ้มูลแบบเทปแมเ่หล็ก- Direct access( เขา้ถึงแบบตรง จะเปล่ียนตำาแหน่งจากตำาแหน่ง
ปัจจุบนัไปเป็นตำาแหน่งท่ีต้องการ ทำาใหร้ะยะเวลาท่ีใชใ้นการเขา้ถึง หน่วยความจำาแต่ละครัง้อาจจะแตกต่างกัน เชน่ disk)
- Random access การเขา้ถึงหน่วยความจำาแบบไมม่ลีำาดับ ระยะ เวลาในการเขา้ถึงเป็นอิสระ ดังนัน้จงึสามารถเลือกตำาแหน่งใดๆ ใน
หน่วยความจำาโดยไมต้่องเรยีงลำาดับใด และสามารถเขา้ถึงตำาแหน่ง นัน้ได้โดยตรงเชน่ Main Memory
- Associative หรอืความเกี่ยวขอ้ง จดัวา่เป็นการเขา้ถึงหน่วย ความจำาแบบ random access อยา่งหนึ่งท่ีมกีารเปรยีบเทียบ
ขอ้มูลบติจำานวนหนี่ง เชน่ Cache Memory
Characteristics ท่ีเก่ียวกับ Computer Memory System
• Performance วธิกีารวดัประสทิธภิาพ- Access time ระยะเวลาในการเขา้ถึงหน่วยความจำา- Memory cycle time ระยะเวลาในการเขา้ถึงหน่วยความ
จำารวมกับระยะเวลาอ่ืนๆ ท่ีจำาเป็นต้องใช้- Transfer rate อัตราการถ่ายเทขอ้มูลเขา้หรอืออกจากหน่วย
ความจำา
• Physical type แบง่ออกตามลักษระทางกายภาพ- Semiconductor เชน่ RAM- Magnetic เชน่ Disk & Tape- Optical เชน่ CD & DVD
Characteristics ท่ีเก่ียวกับ Computer Memory System
Memory Hierarchy (ลำดับของหน่วยควมจำ)• Registers
—In CPU• Internal or Main memory
—May include one or more levels of cache—“RAM”
• External memory—Backing store
ปัจจยัท่ีเก่ียวขอ้งกับหน่วยควมจำ• How much? (Size)
—Capacity• How fast? (Speed)
—Time is money• How expensive? (Prize)
องค์ประกอบท่ีสำคัญทั้ง 3 ประกรคือ รค ปรมิณ และ ควมเรว็ มคีวมสมัพนัธกั์นดังนี้
- การเพิม่ความเรว็ในการเขา้ถึงขอ้มูล จะทำาใหห้น่วยความจำาราคาสงูขึ้น- ปรมิาณหน่วยความจำาเพิม่ขึ้น จะทำาใหร้าคาต่อหน่วยลดลง
- ปรมิาณหน่วยความจำาเพิม่ขึ้น จะทำาใหเ้สยีเวลาในการเขา้ถึงหน่วยความจำามากขึ้น
Memory Hierarchy - Diagram
ลำดับชัน้ของ Memory (เรยีงจกเรว็ท่ีสดุไปช้ท่ีสดุ)• Registers• L1 Cache• L2 Cache
• Main memory จำาพวก Ram , Rom
• Disk cache - ระหวา่ง main memory กับ Megnetic disk ควรมี Disk cache เพื่อท่ีจะทำางานเรว็ขึ้น
• Disk• Optical• Tape
Cache• เน่ืองจาก Main memory หรอื RAM (Random
Access Memory) นัน้ตามปกติจะมคีวามเรว็ตำ่ากวา่CPU อยูม่าก ดังนัน้ถ้าใชเ้ฉพาะ Register กับ RAM ก็
จะมผีลทำาใหค้อมพวิเตอรท์ำางานได้ชา้ จงึมกีารวางหน่วย ความจำา Cache ซึ่งมคีวามเรว็กวา่ RAM แต่ราคาแพง กวา่ คัน่ระหวา่ง CPU กับ Main memory
CPU
C ache
M ain m em ory
W ord transfer
B lock transfer
Cache• ม ีความจุตำ่าแต่ความเรว็สงู• ทำางานอยูร่ะหวา่ง normal main memory and
CPU• อาจจะสรา้งภายในตัว CPU เองหรอือุปกรณ์ภายนอกท่ีมี
ความเรว็สงู
ตัวอยา่งของการมี cache• ความเรว็ cache = 10 ns• ความเรว็ memory = 100 ns
- ถ้าไมม่ี Cache ถ้า 1 คำาสัง่ใชเ้วลา100ns สมมุติมี 100 คำาสัง่จะใชเ้วลา100 * 100ns
= 10000ns
- ถ้ามี Cache จะได้ (10 * 10ns( ความเรว็ cache)) + (10 * 100ns( ความเรว็ของ Memory)) = 1100
ซึ่งจะเหน็วา่เรว็กวา่กันประมาณ 10 เท่า
Cache operation (ขัน้ตอนกรทำงน)- overview• CPU ต้องการขอ้มูลใน Main Memory
• Check ท่ี cache วา่ขอ้มูลท่ีต้องการอยูใ่น cache หรอืไม่
• If มี ก็สง่ขอ้มูลให้ CPU
• If ไมม่,ี ก็ทำาการอ่านขอ้มูล จาก main memory ไปยงั cache ( อ่านเป็น block)
• Then deliver from cache to CPU
Cache operation (ขัน้ตอนกรทำงน)- สรุป• โดยในระหวา่งการทำางานของคอมพวิเตอรจ์ะมกีารอ่านโปรแกรมและขอ้มูลบางสว่นจาก Main memory มาเก็บไว้ใน Cache เมื่อ CPU อ่านบาง word จาก Memory ก็จะมีการตรวจสอบวา่ word ท่ีต้องการนัน้อยูใ่น Cache หรอืไม ่
ถ้าอยูก็่สามารถอ่านไปได้อยา่งรวดเรว็ แต่ถ้าไมม่ก็ีจะมกีารอ่านทัง้ Block ท่ีม ีword ท่ีต้องการนัน้จาก Main memory เขา้มาวางไวใ้น Cache และสง่ Word นัน้ให ้CPU โดยคาด
วา่ต่อไป CPU น่าจะอ่าน word อ่ืน ๆ ใน Block เดียวกันนัน้ • อัตรกรท่ี CPU สมรถพบ word ท่ีต้องกรพบใน
Cache เรยีกว่ Hit Rate หรอื Cache Hit • อัตรกรท่ี CPU ไมส่มรถพบเรยีกว่ Miss Rate
หรอื Cache Miss • ดังนัน้คอมพวิเตอรท่ี์ออกแบบระบบ Cache ดีก็จะทำาใหม้ ีHit
Rate สงู มผีลทำาใหค้อมพวิเตอรส์ามารถทำางานได้เรว็ขึ้น
Size• Cost ราคา
—More cache is expensive• Speed ความเรว็
—More cache is faster (up to a point)—Checking cache for data takes time
- ถ้ใช ้Cache ขนดเล็ก รคก็จะถกูและควมเรว็สงูกว่ แต่จะได้อัตร Cache
hit ตำ่ - ถ้ใช ้Cache ขนดใหญ่จะได้อัตร
Cache hit สงูแต่วงจรจะช้และรคแพง - โดยท่ัวไปถือว่ขนดท่ีพอดีอยูร่ะหว่ง
1 K – 512 KWords
Cache Design (ปัจจยัในกรสร้ง Cache)
• Size ( ขนาดของ cache)• Mapping Function• Replacement Algorithm• Write Policy• Block Size• Number of Caches
Size (ขนาดของ cache)• โดยทัว่ไปนักออกแบบต้องการให้ cache มขีนาดเพยีง
พอท่ีจะทำาใหร้าคาเฉล่ียต่อบตินัน้ใกล้เคียงกับราคาของ หน่วยความจำาหลัก
• และต้องการใหม้ขีนาดใหญ่เพยีงพอ เพื่อใหค่้าเฉล่ียของเวลาในการเขา้ถึงขอ้มูลใกล้เคียงกับระยะเวลาในการเขา้
ถึงขอ้มูลของ cache• ทำาไมถึงไมส่รา้ง cache ขนาดใหญ่ เพื่อความรวดเรว็?
คือขนาดท่ีใหญ่ขึ้นของ Cache จะไปเพิม่จำานวนของgate ท่ีเก่ียวขอ้งกับการค้นหาตำาแหน่งขอ้มูลใน
Cache ทำาให้ Cache ทำางานได้ชา้ลง• เนื้อท่ีบนแผงวงจรก็เป็นสว่นหนึ่งท่ีบงัคับขนาดของ
Cache ใหม้ขีนาดจำากัด
Mapping Function - Cache จะมขีนดเล็กว่ main memory ดังนัน้จะต้องมอัีลกอรทึิม ท่ีต้อง map ขอ้มูล จก main memory ไปยงั
cache - กร Mapping คือ กรกำหนด
ตำแหน่งหน่วยควมจำของของ Main Memory ไปยงั Cache
- ซึง่มวีธิกีรอยูส่มแบบ Direct, Associative และ Set Associative ดัง
ตัวอย่งต่อไปน้ี สำหรบัคอมพวิเตอรตั์วอย่งท่ีใช้ม ี
สรุป พูดง่ยๆ คือเป็นกรกำหนดตำแหน่งหน่วยควมจำไปยงั Cache Memory นัน่เอง
เพระถ้กำหนดดี ประสทิธภิพก็จะดีไปด้วย
ตัวอย่งจกโจทยม์ี
• Cache มขีนาด 64kByte
• Cache block มขีนาด 4 bytes
• Main memory มขีนาด 16MBytes
ขัน้ตอน Direct Mapping• หา tag ( เป็นตัวบอกตำาแหน่งวา่เป็นกลุ่มไหนของ Main
Memory) หาได้จาก เอาขนาดของ main memory/ ขนาดของ cache memory ซึ่งจะได้- 16Mb/64Kb = 250 ตำาแหน่งใน memory- จะได้ tag = 8 เนื่องจาก 28 อ้างได้ 256ตำาแหน่ง
• หา จำานวนสายหรอื bit ท่ีใชใ้นการอ้างถึง ซึ่งจะได้ = 24 เสน้หรอื bit เนื่องจาก Main memory มี
ขนาด16Mb เพราะฉะนัน้จะได้224 = 16Mb
• จากนัน้นำามาเขยีน Main Memory Address
• หา Word จากโจทยบ์อกวา่แต่ละ line ใน cache มี ขนาด 4 byte เพราะฉะนัน้ ในการอ้างวา่อยู่ byte ไหน
จะใชเ้พยีง 2 bit คือ 00011011
Tag Line or Slot Word
8 14 2
• สดุท้าย หา line หรอื slot โดยหาได้ 2 วธิคืีอ1. โดยเอา - - 2482 = 14 bit2. โดยเอา64k/4byte = 16k แล้วดวูา่ 2 ยก
กำาลังอะไรได้16k คือ = 14 นัน่เอง ก็จะได้ 14bit
214 = 16 k ดังนัน้สามารถอ้างได้16k ของ cache หรอืพูดง่ายๆ วา่ cache จะมตีำาแหน่งอยู่
16k ในแต่ละ line มขีนาด 4 byte ลองเอา16 k * 4 = 64 kb คือขนาดของ Cache จรงิๆ (อ้า
งได้คือ -00003fff)
• สมมุติวา่ต้องการขอ้มูลมาเก็บท่ี Cache โดยขอ้มูลท่ีเราต้องการ คือ เอา Block ท่ี 3 เอา Line ท่ี 15 Byte ท่ี 2 เราจะมวีธิี
การอ้าง Main Memory Address เป็นเลขอะไร
00000011 00000000001111 10
จะได้เป็น 03003Eh เวลาต้องการใชง้านก็อาจจะเรยีก Ld A,03003Eh ซึ่งก็หมายความวา่เป็นการเอาขอ้มูลที่อยูใ่น Main
Memory ใน Block ท่ี 3 ของ Main Memory ในชอ่งที่ 15 และ Byte ท่ี 2 นัน่เอง
Tag Line or Slot Word
8 14 2
• ในบางครัง้ ตำาแหน่งของ Cache กับ Main Memory อาจ จะมกีารเล่ือน Bit เล็กน้อย เชน่จากตัวอยา่งจะเป็นการเล่ือน
2 Bit (ซึ่งเป็นเหตผุลของทางบรษัิท)Cache Memory
0000
3FFF
4 byte
สมมุติมชุีดคำาสัง่ Load AC,8FFFC จะหมายความวา่ ใหเ้อาขอ้มูลท่ีอยูใ่น Cache
memory ณ ตำาแหน่ง 3 FFF
Direct MappingAddress Structure
Tag s-r Line or Slot r Word w
8 14 2
• 24 bit address• 2 bit word identifier (4 byte block)• 22 bit block identifier
—8 bit tag (=22-14)—14 bit slot or line
Direct Mapping Cache Organization
Direct Mapping Example
Direct Mapping Summary• Address length = (s + w) bits• Number of addressable units = 2s+w words or
bytes• Block size = line size = 2w words or bytes• Number of blocks in main memory = 2s+ w/2w = 2s
• Number of lines in cache = m = 2r
• Size of tag = (s – r) bits
Direct Mapping Summary• Simple• Inexpensive• Fixed location for given block
—If a program accesses 2 blocks that map to the same line repeatedly, cache misses are very high
วธิกีร Direct mapping มรีคถกูและวงจรง่ย แต่ก็มขีอ้เสยีคือเป็นกร fix cache location สำหรบัแต่ะละ
block ดังนัน้ถ้เกิดมกีรอ่นขอ้มูลจก 2 block ท่ีบงัเอิญ map มท่ี slot
เดียวกันก็จะมกีรเปล่ียนขอ้มูลใน slot นัน้อยูต่ลอดเวล มผีลทำให้ให้ค่ Hit Rate
ตำ่
Associative Mapping• วธินีี้ Memory จะไมแ่บง่เป็น block ดังเชน่วธิี direct
ซึ่งวธินีี้ cache memory จะใชห้น่วยความจำาสว่นไหน ของ main memory ก็ได้
- ตัวอย่ง• Cache มขีนาด 64 kByte
• Cache block มขีนาด 4 bytes
• Main memory มขีนาด 16MBytes
วธิกีรห• หา tag ( เป็นตัวบอกตำาแหน่งวา่อยูต่ำาแหน่งไหนของ Main
Memory) หาได้จากขนาดของ Memory คือ 16Mbyte = 224 ซึ่งจะได้ main memory address คือ
24 bit จากนัน้ได้คือ คือ 2 242 bit word = 22 bit
• จาก 22 bit คือ 11111111 1111111111111100 => FFFFFC ดังนัน้ cache memory มตีำาแหน่งทัง้หมด 000000 FFFFFC หรอื 000000 3 FFFFF
• จากนัน้นำามาเขยีน Main Memory AddressTag 22 bitWord2 bit
Fully Associative Cache Organization
Associative Mapping Example
Associative Mapping Summary• Address length = (s + w) bits• Number of addressable units = 2s+w words or
bytes• Block size = line size = 2w words or bytes• Number of blocks in main memory = 2s+ w/2w = 2s
• Number of lines in cache = undetermined• Size of tag = s bitsวธินีี้จะใชส้ว่นไหนก็ได้ใน memory จน cache จะเต็มหมดซึ่งก็มขีอ้ดีในการอ่าน block ใหมเ่ขา้มาไวใ้น cache แต่จะใชว้งจรมากกวา่
Set Associative Mapping
• เป็นการนำาเอาขอ้ดีของทัง้แบบ Direct และ Associative Mapping มารวมกันไวใ้นวธินีี้
- แบง่หน่วยความจำา Cache ออกเป็น r sets- แต่ะละ set มี k slots (lines)
ตัวอยา่ง
- Cache มขีนาด 64 kByteCache block มขีนาด 4 bytes
Main memory มขีนาด 16MBytes ใหเ้ป็นแบบ - Two way Set Associative
Mapping
Two Way Set Associative Cache Organization ( แบง่เป็น 2 กลุ่ม)
วธิกีรห- ดโูจทยว์า่เป็นแบบไหน จากโจทยบ์อกวา่เป็น
แบบ 2-way set associative mapping แสดงวา่จะม ีcache จำานวน 2 กลุ่ม ซึ่งจะได้ 8 k + 8 k (กลุ่มละ 8 k ชอ่ง)
- หา set จาก ขนาดของแต่ละกลุ่มของ cache คือ 213 = 8 k เพราะฉะนัน้ set จะมขีนาด
13 bit (Set ในท่ีนี้คือ Line นัน่เอง)- หา word จาก cache block size คือ 4
byte ดังนัน้ word จะมขีนาด 2 bit
วธิกีรห- หา tag ได้ 2 วธิ ีคือ ( Tag ในท่ีนี้คือ จำานวนกลุ่มใน
Memory)1. จาก ขนาด main memory คือ 16M เพราะ
ฉะนัน้จำานวน bit ทัง้หมด คือ 224 ซึ่งจะสามารถหา tag = จำานวน bit ทัง้หมด - set – word คือ
- - 24132 = 9 bit
2. จากขนาด main memory คือ 16M และขนาดของ Cache มขีนาด 64k แต่โจทยบ์อกวา่เป็นแบบ -2 way จะต้องเอา 64k/2 = 32k จากนัน้ เอา
ขนาดของ Memory/ขนาดของ Cache = 16M/32k = 500 จากนัน้ 2 ยกกำาลังอะไรได้ใกล้เคียงกับ 50
0 คือ 29 แสดงวา่จะใชทั้ง้หมด 9 Bit
Set Associative MappingAddress Structure
Tag 9 bit Set 13 bitWord2 bit
จะได้ Main Memory Address ดังนี้
Two Way Set Associative Mapping Example
Set Associative Mapping Summary• Address length = (s + w) bits• Number of addressable units = 2s+w words or
bytes• Block size = line size = 2w words or bytes• Number of blocks in main memory = 2d
• Number of lines in set = k• Number of sets = v = 2d
• Number of lines in cache = kv = k * 2d
• Size of tag = (s – d) bits
Replacement Algorithms• เมื่อมกีารอ่านขอ้มูล Block ใหมม่าจาก Memory เขา้
มาวางไวใ้น Cache ก็จะต้องมกีารลบ Block เดิมท้ิงไป วธิกีารเลือกท่ีจะลบ block เดิมมหีลายวธิไีด้แก่
- - Least recently used (LRU) ลบขอ้มูลท่ีถกูใชง้านล่าสดุออกไป
- - - - First in first out (FIFO) ลบขอ้มูลท่ีเขา้มาก่อนออกไปก่อน
- - - Least frequency used (LFU) ลบขอ้มูลท่ีมกีารใช้งานน้อยท่ีสดุออกไป
- Random สุม่เอา
Write Policy นโยบายการบนัทึกหน่วยความจำาหลัก• ก่อนจะทำาการลบขอ้มูลใน block หรอืก่อนท่ีจะถกูแทนท่ีด้วย
ขอ้มูลบล็อกใหม่ จำาเป็นต้องตรวจสอบวา่ขอ้มูลบล็อกนัน้ เปล่ียนแปลงไปแล้วหรอืไม่ ถ้ามจีะต้องมกีารปรบัปรุงขอ้มูลจาก
Cache ไปยงั Main Memory ก่อน• วธิกีารท่ีง่ายท่ีสดุเป็นการบนัทึกขอ้มูลลงในหน่วยความจำาในทันที
หรอื Write Through ทกุครัง้ท่ีมกีารบนัทึกขอ้มูลลงใน cache ก็จะถกูบงัคับใหเ้กิดการบนัทึกลงในหน่วยความจำาทันทีเพื่อเป็นการ
รบัรองวา่ขอ้มูลใน cache และ Main Memory เท่ากันเสมอขอ้เสยีคือทำาใหเ้กิดการสง่ขอ้มูลบอ่ยครัง้ทำาใหเ้กิดปัญหาคอขวด
• อีกวธิคืีอ Write Back เป็นวธิกีารบนัทึกขอ้มูลในภายหลังชว่ยลดจำานวนครัง้ในการบนัทึกขอ้มูลลงใน Main Memory ใหเ้หลือ
น้อยท่ีสดุ
Pentium 4 Cache• 80386 – no on chip cache• 80486 – 8k using 16 byte lines and four way set
associative organization• Pentium (all versions) – two on chip L1 caches
—Data & instructions• Pentium 4 – L1 caches
—8k bytes—64 byte lines—four way set associative
• L2 cache —Feeding both L1 caches—256k—128 byte lines—8 way set associative