1 / 45

Chapter 4 Cache Memory

Computer Memory System Overview Cache Memory Principles Elements of Cache Design. Chapter 4 Cache Memory. ประเด็นสำคัญ.

Download Presentation

Chapter 4 Cache Memory

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computer Memory System Overview • Cache Memory Principles • Elements of Cache Design Chapter 4 Cache Memory

  2. ประเด็นสำคัญ • ในระดับโครงสร้างลำดับชั้นของหน่วยความจำ ถ้ามองลงมาสู่ระดับล่างพบ หน่วยความจำที่มีมูลค่าราคาต่อบิตต่ำลงมาเรื่อยๆ มีขนาดหน่วยความจำเพิ่มขึ้น แต่ใช้ระยะเวลาในการอ่านหรือบันทึกข้อมูลสูงขึ้น • ในความเป็นจริงเราไม่สามารถใช้หน่วยความจำระดับบนได้อย่างเดียวเพราะมีราคาสูงส่วนใหญ่จึงใช้วิธีการรอมชอม ด้วยการใช้หน่วยความจำระดับบนน้อย และใช้หน่วยความจำระดับล่างมากขึ้น เพื่อให้เกิดความสมดุลระหว่างประสิทธิภาพและราคา • โดยทั่วไปตำแหน่งการอ้างอิงข้อมูลในหน่วยความจำหลักโดยโปรเซสเซอร์นั้นมักจะเป็นตำแหน่งเดิม ดังนั้นหน่วยความจำ cache มักจะคัดลอกข้อมูลในหน่วยความจำหลัก ซึ่งถ้า Cache ได้รับการออกแบบเป็นอย่างดีแล้วเวลาส่วนใหญ่โปรเซสเซอร์ก็จะเรียกใช้ข้อมูลที่อยู่ใน Cache เป็นส่วนมาก

  3. 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 ณ หนึ่งหน่วยเวลา

  4. Characteristics ที่เกี่ยวกับComputer Memory System • Access methodเป็นวิธีการเข้าถึง Memory ด้วยวิธีต่างๆ เช่น • Sequential access(วิธีการเข้าถึง Mem แบบเรียงลำดับ)เช่น หน่วยบันทึกข้อมูลแบบเทปแม่เหล็ก • Direct access(เข้าถึงแบบตรง จะเปลี่ยนตำแหน่งจากตำแหน่งปัจจุบันไปเป็นตำแหน่งที่ต้องการ ทำให้ระยะเวลาที่ใช้ในการเข้าถึงหน่วยความจำแต่ละครั้งอาจจะแตกต่างกัน เช่น disk) • Random access การเข้าถึงหน่วยความจำแบบไม่มีลำดับ ระยะเวลาในการเข้าถึงเป็นอิสระ ดังนั้นจึงสามารถเลือกตำแหน่งใดๆ ในหน่วยความจำโดยไม่ต้องเรียงลำดับใด และสามารถเข้าถึงตำแหน่งนั้นได้โดยตรงเช่น Main Memory • Associativeหรือความเกี่ยวข้อง จัดว่าเป็นการเข้าถึงหน่วยความจำแบบ random access อย่างหนึ่งที่มีการเปรียบเทียบข้อมูลบิตจำนวนหนี่ง เช่น Cache Memory

  5. Characteristics ที่เกี่ยวกับComputer Memory System • Performance วิธีการวัดประสิทธิภาพ • Access timeระยะเวลาในการเข้าถึงหน่วยความจำ • Memory cycle time ระยะเวลาในการเข้าถึงหน่วยความจำรวมกับระยะเวลาอื่นๆ ที่จำเป็นต้องใช้ • Transfer rateอัตราการถ่ายเทข้อมูลเข้าหรือออกจากหน่วยความจำ

  6. Characteristics ที่เกี่ยวกับComputer Memory System • Physical type แบ่งออกตามลักษระทางกายภาพ - Semiconductor เช่น RAM - Magnetic เช่น Disk & Tape - Optical เช่น CD & DVD

  7. Memory Hierarchy (ลำดับของหน่วยความจำ) • Registers • In CPU • Internal or Main memory • May include one or more levels of cache • “RAM” • External memory • Backing store

  8. ปัจจัยที่เกี่ยวข้องกับหน่วยความจำปัจจัยที่เกี่ยวข้องกับหน่วยความจำ • How much? (Size) • Capacity • How fast? (Speed) • Time is money • How expensive? (Prize) องค์ประกอบที่สำคัญทั้ง 3 ประการคือ ราคา ปริมาณ และ ความเร็ว มีความสัมพันธ์กันดังนี้ - การเพิ่มความเร็วในการเข้าถึงข้อมูล จะทำให้หน่วยความจำราคาสูงขึ้น - ปริมาณหน่วยความจำเพิ่มขึ้น จะทำให้ราคาต่อหน่วยลดลง - ปริมาณหน่วยความจำเพิ่มขึ้น จะทำให้เสียเวลาในการเข้าถึงหน่วยความจำมากขึ้น

  9. Memory Hierarchy - Diagram

  10. ลำดับชั้นของ Memory (เรียงจากเร็วที่สุดไปช้าที่สุด) • Registers • L1 Cache • L2 Cache • Main memory จำพวก Ram , Rom • Disk cache - ระหว่าง main memory กับ Megnetic disk ควรมี Disk cache เพื่อที่จะทำงานเร็วขึ้น • Disk • Optical • Tape

  11. Cache • เนื่องจาก Main memory หรือ RAM (Random Access Memory) นั้นตามปกติจะมีความเร็วต่ำกว่า CPU อยู่มาก ดังนั้นถ้าใช้เฉพาะ Register กับ RAM ก็จะมีผลทำให้คอมพิวเตอร์ทำงานได้ช้า จึงมีการวางหน่วยความจำ Cache ซึ่งมีความเร็วกว่า RAM แต่ราคาแพงกว่า คั่นระหว่าง CPU กับ Main memory

  12. Cache • มีความจุต่ำแต่ความเร็วสูง • ทำงานอยู่ระหว่าง normal main memory and CPU • อาจจะสร้างภายในตัว CPU เองหรืออุปกรณ์ภายนอกที่มีความเร็วสูง

  13. ตัวอย่างของการมี cache • ความเร็ว cache = 10 ns • ความเร็ว memory = 100 ns • ถ้าไม่มี Cache ถ้า 1 คำสั่งใช้เวลา 100ns สมมุติมี 100 คำสั่งจะใช้เวลา 100 * 100ns = 10000ns • ถ้ามี Cache จะได้ (10 * 10ns(ความเร็ว cache)) + (10 * 100ns(ความเร็วของ Memory)) = 1100 ซึ่งจะเห็นว่าเร็วกว่ากันประมาณ 10 เท่า

  14. Cache operation (ขั้นตอนการทำงาน)- overview • CPU ต้องการข้อมูลใน Main Memory • Check ที่ cache ว่าข้อมูลที่ต้องการอยู่ใน cache หรือไม่ • If มี ก็ส่งข้อมูลให้ CPU • If ไม่มี, ก็ทำการอ่านข้อมูล จาก main memory ไปยัง cache(อ่านเป็น block) • Then deliver from cache to CPU

  15. 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 สูง มีผลทำให้คอมพิวเตอร์สามารถทำงานได้เร็วขึ้น

  16. 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

  17. Cache Design (ปัจจัยในการสร้าง Cache) • Size (ขนาดของ cache) • Mapping Function • Replacement Algorithm • Write Policy • Block Size • Number of Caches

  18. Size (ขนาดของ cache) • โดยทั่วไปนักออกแบบต้องการให้ cache มีขนาดเพียงพอที่จะทำให้ราคาเฉลี่ยต่อบิตนั้นใกล้เคียงกับราคาของหน่วยความจำหลัก • และต้องการให้มีขนาดใหญ่เพียงพอ เพื่อให้ค่าเฉลี่ยของเวลาในการเข้าถึงข้อมูลใกล้เคียงกับระยะเวลาในการเข้าถึงข้อมูลของ cache • ทำไมถึงไม่สร้าง cache ขนาดใหญ่ เพื่อความรวดเร็ว? คือขนาดที่ใหญ่ขึ้นของ Cache จะไปเพิ่มจำนวนของ gate ที่เกี่ยวข้องกับการค้นหาตำแหน่งข้อมูลใน Cache ทำให้ Cache ทำงานได้ช้าลง • เนื้อที่บนแผงวงจรก็เป็นส่วนหนึ่งที่บังคับขนาดของ Cache ให้มีขนาดจำกัด

  19. Mapping Function - Cache จะมีขนาดเล็กว่า main memory ดังนั้นจะต้องมีอัลกอริทึม ที่ต้อง map ข้อมูล จาก main memory ไปยัง cache - การ Mapping คือ การกำหนดตำแหน่งหน่วยความจำของของ Main Memory ไปยัง Cache - ซึ่งมีวิธีการอยู่สามแบบ Direct, Associative และ Set Associativeดังตัวอย่างต่อไปนี้ สำหรับคอมพิวเตอร์ตัวอย่างที่ใช้มี สรุป พูดง่ายๆ คือเป็นการกำหนดตำแหน่งหน่วยความจำไปยัง Cache Memory นั่นเอง เพราะถ้ากำหนดดี ประสิทธิภาพก็จะดีไปด้วย

  20. ตัวอย่างจากโจทย์มี • Cache มีขนาด 64kByte • Cache block มีขนาด 4 bytes • Main memory มีขนาด 16MBytes

  21. ขั้นตอนDirect Mapping • หา tag (เป็นตัวบอกตำแหน่งว่าเป็นกลุ่มไหนของ Main Memory) หาได้จาก เอาขนาดของ main memory/ขนาดของ cache memory ซึ่งจะได้ - 16 Mb/64Kb = 250 ตำแหน่งใน memory - จะได้ tag = 8 เนื่องจาก 28 อ้างได้ 256 ตำแหน่ง • หา จำนวนสายหรือ bit ที่ใช้ในการอ้างถึง ซึ่งจะได้ = 24 เส้นหรือ bit เนื่องจาก Main memory มีขนาด 16Mb เพราะฉะนั้นจะได้ 224= 16 Mb

  22. Tag Line or Slot Word 14 2 8 • จากนั้นนำมาเขียน Main Memory Address • หา Word จากโจทย์บอกว่าแต่ละ line ใน cache มีขนาด 4 byte เพราะฉะนั้น ในการอ้างว่าอยู่ byte ไหนจะใช้เพียง 2 bit คือ 00 01 10 11

  23. สุดท้าย หา line หรือ slot โดยหาได้ 2 วิธีคือ • โดยเอา 24-8-2 = 14bit • โดยเอา 64k/4byte = 16k แล้วดูว่า 2 ยกกำลังอะไรได้ 16k คือ = 14 นั่นเอง ก็จะได้ 14 bit 214 = 16 k ดังนั้นสามารถอ้างได้ 16k ของ cache หรือพูดง่ายๆ ว่า cache จะมีตำแหน่งอยู่ 16k ในแต่ละ line มีขนาด 4 byte ลองเอา 16k * 4 = 64 kb คือขนาดของ Cache จริงๆ (อ้างได้คือ 0000-3fff)

  24. Tag Line or Slot Word 14 2 8 • สมมุติว่าต้องการข้อมูลมาเก็บที่ Cache โดยข้อมูลที่เราต้องการคือ เอา Block ที่ 3 เอา Line ที่ 15 Byte ที่ 2 เราจะมีวิธีการอ้าง Main Memory Address เป็นเลขอะไร 0000 0011 00000000001111 10 จะได้เป็น 03003Eh เวลาต้องการใช้งานก็อาจจะเรียก Ld A,03003Eh ซึ่งก็หมายความว่าเป็นการเอาข้อมูลที่อยู่ใน Main Memory ใน Block ที่ 3 ของ Main Memory ในช่องที่ 15 และ Byte ที่ 2 นั่นเอง

  25. Cache Memory 3FFF 0000 4 byte • ในบางครั้ง ตำแหน่งของ Cache กับ Main Memory อาจจะมีการเลื่อน Bit เล็กน้อย เช่นจากตัวอย่างจะเป็นการเลื่อน 2 Bit (ซึ่งเป็นเหตุผลของทางบริษัท) สมมุติมีชุดคำสั่ง Load AC,8FFFC จะหมายความว่า ให้เอาข้อมูลที่อยู่ใน Cache memory ณ ตำแหน่ง 3FFF

  26. Direct MappingAddress Structure • 24 bit address • 2 bit word identifier (4 byte block) • 22 bit block identifier • 8 bit tag (=22-14) • 14 bit slot or line Tag s-r Line or Slot r Word w 14 2 8

  27. Direct Mapping Cache Organization

  28. Direct Mapping Example

  29. 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

  30. 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 ต่ำ

  31. Associative Mapping • วิธีนี้ Memory จะไม่แบ่งเป็น block ดังเช่นวิธี direct ซึ่งวิธีนี้ cache memory จะใช้หน่วยความจำส่วนไหนของ main memory ก็ได้ - ตัวอย่าง • Cache มีขนาด 64 kByte • Cache block มีขนาด 4 bytes • Main memory มีขนาด 16MBytes

  32. Word 2 bit Tag 22 bit วิธีการหา • หา tag (เป็นตัวบอกตำแหน่งว่าอยู่ตำแหน่งไหนของ Main Memory) หาได้จากขนาดของ Memory คือ 16 Mbyte = 224ซึ่งจะได้ main memory address คือ 24 bit จากนั้นได้คือ คือ 24 – 2 bit word = 22 bit • จาก 22 bit คือ 1111 1111 1111 1111 1111 1100 => FFFFFC ดังนั้น cache memory มีตำแหน่งทั้งหมด 000000  FFFFFC หรือ 000000 3FFFFF • จากนั้นนำมาเขียน Main Memory Address

  33. Fully Associative Cache Organization

  34. Associative Mapping Example

  35. 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 แต่จะใช้วงจรมากกว่า

  36. Set Associative Mapping • เป็นการนำเอาข้อดีของทั้งแบบ Direct และ Associative Mapping มารวมกันไว้ในวิธีนี้ - แบ่งหน่วยความจำ Cache ออกเป็น r sets - แต่ะละ set มี k slots (lines) ตัวอย่าง - Cache มีขนาด 64 kByte Cache block มีขนาด 4 bytes Main memory มีขนาด 16MBytes ให้เป็นแบบ Two-way Set Associative Mapping

  37. Two Way Set Associative Cache Organization (แบ่งเป็น 2 กลุ่ม)

  38. วิธีการหา • ดูโจทย์ว่าเป็นแบบไหน จากโจทย์บอกว่าเป็นแบบ 2-way set associative mapping แสดงว่าจะมี cache จำนวน 2 กลุ่ม ซึ่งจะได้ 8 k + 8 k (กลุ่มละ 8k ช่อง) • หา set จาก ขนาดของแต่ละกลุ่มของ cache คือ 213= 8 k เพราะฉะนั้น set จะมีขนาด 13 bit (Set ในที่นี้คือ Line นั่นเอง) • หา word จาก cache block size คือ 4 byte ดังนั้น word จะมีขนาด 2 bit

  39. วิธีการหา • หา tag ได้ 2 วิธี คือ ( Tag ในที่นี้คือ จำนวนกลุ่มใน Memory) 1. จาก ขนาด main memory คือ 16 M เพราะฉะนั้นจำนวน bit ทั้งหมด คือ 224 ซึ่งจะสามารถหา tag = จำนวน bit ทั้งหมด - set – word คือ 24-13-2 = 9 bit 2.จากขนาด main memory คือ 16 M และขนาดของ Cache มีขนาด 64k แต่โจทย์บอกว่าเป็นแบบ 2-way จะต้องเอา 64k/2 = 32k จากนั้น เอา ขนาดของ Memory/ขนาดของ Cache = 16M/32k = 500 จากนั้น 2 ยกกำลังอะไรได้ใกล้เคียงกับ 500 คือ 29 แสดงว่าจะใช้ทั้งหมด 9 Bit

  40. Word 2 bit Tag 9 bit Set 13 bit Set Associative MappingAddress Structure จะได้ Main Memory Address ดังนี้

  41. Two Way Set Associative Mapping Example

  42. 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

  43. Replacement Algorithms • เมื่อมีการอ่านข้อมูล Block ใหม่มาจาก Memory เข้ามาวางไว้ใน Cache ก็จะต้องมีการลบ Block เดิมทิ้งไป วิธีการเลือกที่จะลบ block เดิมมีหลายวิธีได้แก่ - Least-recently used (LRU) ลบข้อมูลที่ถูกใช้งานล่าสุดออกไป • First-in-first-out (FIFO) ลบข้อมูลที่เข้ามาก่อนออกไปก่อน • Least-frequency-used (LFU) ลบข้อมูลที่มีการใช้งานน้อยที่สุดออกไป • Random สุ่มเอา

  44. Write Policy นโยบายการบันทึกหน่วยความจำหลัก • ก่อนจะทำการลบข้อมูลใน block หรือก่อนที่จะถูกแทนที่ด้วยข้อมูลบล็อกใหม่ จำเป็นต้องตรวจสอบว่าข้อมูลบล็อกนั้นเปลี่ยนแปลงไปแล้วหรือไม่ ถ้ามีจะต้องมีการปรับปรุงข้อมูลจาก Cache ไปยัง Main Memory ก่อน • วิธีการที่ง่ายที่สุดเป็นการบันทึกข้อมูลลงในหน่วยความจำในทันทีหรือ Write Through ทุกครั้งที่มีการบันทึกข้อมูลลงใน cache ก็จะถูกบังคับให้เกิดการบันทึกลงในหน่วยความจำทันทีเพื่อเป็นการรับรองว่าข้อมูลใน cache และ Main Memory เท่ากันเสมอข้อเสียคือทำให้เกิดการส่งข้อมูลบ่อยครั้งทำให้เกิดปัญหาคอขวด • อีกวิธีคือ Write Back เป็นวิธีการบันทึกข้อมูลในภายหลังช่วยลดจำนวนครั้งในการบันทึกข้อมูลลงใน Main Memory ให้เหลือน้อยที่สุด

  45. 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

More Related