1 / 64

Cache

Cache. หน่วยความจำในระบบคอมพิวเตอร์. หน่วยความจำในระบบคอมพิวเตอร์มีการจัดโครงสร้างเป็นลำดับชั้นดังนี้ รีจิสเตอร์ภายในโปรเซสเซอร์ : ระดับชั้นสูงสุด (อยู่ใกล้โปรเซสเซอร์มากที่สุด) หน่วยความจำ cache หนึ่งหรือสองระดับ ซึ่งถ้ามีหลายระดับมักจะเรียกว่า cache ระดับ L1, L2, …

Download Presentation

Cache

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

  2. หน่วยความจำในระบบคอมพิวเตอร์หน่วยความจำในระบบคอมพิวเตอร์ • หน่วยความจำในระบบคอมพิวเตอร์มีการจัดโครงสร้างเป็นลำดับชั้นดังนี้ • รีจิสเตอร์ภายในโปรเซสเซอร์ : ระดับชั้นสูงสุด (อยู่ใกล้โปรเซสเซอร์มากที่สุด) • หน่วยความจำ cache หนึ่งหรือสองระดับ ซึ่งถ้ามีหลายระดับมักจะเรียกว่า cache ระดับ L1, L2, … • หน่วยความหลัก : มักสร้างมาจาก DRAM(Dynamic Random Access Memory) • โดยทั่วไปตำแหน่งการอ้างอิงข้อมูลในหน่วยความจำหลักโดยโปรเซสเซอร์นั้น มักจะเป็นตำแหน่งเดิม ดังนั้นหน่วยความจำ cache มักจะคัดลอกข้อมูลในหน่วยความจำหลักที่เคยถูกอ้างอิงไปแล้วเอาไว้ ซึ่งถ้าการทำงานของ cache ได้รับการออกแบบเป็นอย่างดีแล้ว เวลาส่วนใหญ่โปรเซสเซอร์ก็จะเรียกใช้ข้อมูลที่อยู่ใน cache เป็นส่วนมาก

  3. คุณลักษณะของระบบหน่วยความจำคุณลักษณะของระบบหน่วยความจำ • ความซับซ้อนของระบบหน่วยความจำสามารถทำให้เข้าใจได้ง่ายขึ้น ด้วยการอธิบายคุณลักษณะที่สำคัญของระบบหน่วยความจำ ดังตารางด้านล่าง LocationPerformance Processor Access time Internal (main) Cycle time External (secondary) Transfer rate CapacityPhysical Type Word size Semiconductor Number of words Magnetic Unit of Transfer Optical Word Magneto-optical Block Physical Characteristics Access Method Volatile/nonvolatile Sequential Erasable/nonerasable Direct Organization Random Associative

  4. คุณลักษณะของระบบหน่วยความจำคุณลักษณะของระบบหน่วยความจำ • Location(สถานที่) : หมายความถึงสถานที่ที่หน่วยความจำอยู่ นั่นคืออยู่ภายในหรือภายนอกเครื่องคอมพิวเตอร์ internal memory หมายถึงหน่วยความจำหลัก(main memory), cache นอกจากนี้ก็ยังมี register ซึ่งอยู่ภายในโปรเซสเซอร์ ส่วน external memory คือหน่วยความจำภายนอก เช่น ดิสก์, เทป • Capacity(ความจุ) : สำหรับหน่วยความจำภายใน ความจุจะใช้หน่วยเป็น byte หรือ word โดยปกติ 1 word มีขนาด 8, 16, 32 bit ส่วนหน่วยความจำภายนอกนิยมแสดงความจุในหน่วยของ byte • Unit of transfer(หน่วยในการถ่ายข้อมูล) : สำหรับหน่วยความจำภายใน หน่วยในการถ่ายข้อมูลเท่ากับ จำนวนสายสัญญาณข้อมูลเข้าสู่และออกจากหน่วยความจำ โดยปกติจะมีขนาดเท่ากับความยาวของ word แต่อาจจะมีขนาดใหญ่กว่าก็ได้เช่น 64,128,256 บิต

  5. คุณลักษณะของระบบหน่วยความจำคุณลักษณะของระบบหน่วยความจำ • Access method(วิธีการเข้าถึงหน่วยความจำ)มีรายละเอียดดังนี้ • Sequential access: การเข้าถึงหน่วยความจำแบบเรียงลำดับ ใช้สำหรับ หน่วยความจำที่มีโครงสร้างประกอบด้วยหน่วยต่าง ๆ ซึ่งเรียกว่า record การเข้าไปอ่านหรือบันทึกข้อมูลจะต้องกระทำเรียงตามลำดับ ข้อมูลเกี่ยวกับตำแหน่งที่อยู่ถูกนำมาใช้ในการแยกตำแหน่งแต่ละ record ออกจากกัน และช่วยในการกระบวนการอ่านข้อมูล ตัวอย่างการเข้าถึงหน่วยความจำแบบนี้ได้แก่ เทปแม่เหล็ก • Direct access: การเข้าถึงหน่วยความจำแบบตรงกระบวนการนี้สามารถเปลี่ยนตำแหน่งที่อยู่ในปัจจุบันไปเป็นตำแหน่งที่ต้องการ โดยข้ามระเบียนข้อมูลที่อยู่ระหว่างกลางไป ตัวอย่างได้แก่ ดิสก์

  6. คุณลักษณะของระบบหน่วยความจำคุณลักษณะของระบบหน่วยความจำ • Random access: การเข้าถึงหน่วยความจำแบบไม่มีลำดับแต่ละตำแหน่งในหน่วยความจำจะต้องมีกลไกในการกำหนดตำแหน่งเฉพาะที่ไม่มีการซ้ำกัน ระยะเวลาที่ใช้ในการเข้าถึงแต่ละหน่วยนั้นเป็นอิสระจากลำดับการเข้าถึงหน่วยความจำที่เกิดขึ้นก่อนหน้านี้ และใช้ระยะเวลาเท่ากันเสมอ ดังนั้นจึงสามารถเลือกตำแหน่งใดๆ ในหน่วยความจำได้โดยไม่ต้องเรียงลำดับใด และสามารถเข้าถึงตำแหน่งนั้นได้โดยตรง ตัวอย่างคือ หน่วยความจำหลัก(main memory) • Associative: หรือความเกี่ยวข้อง จัดว่าเป็นการเข้าถึงหน่วยความจำแบบ random access อย่างหนึ่งที่มีการเปรียบเทียบข้อมูลบิตจำนวนหนึ่ง(ที่กำหนดตำแหน่งไว้ล่วงหน้า) กับ word ที่เป็นตัวเลือกจำนวนหนึ่ง (กำหนดไว้ล่วงหน้าเช่นกัน) เพื่อค้นหาตำแหน่งที่สอดคล้องกัน ดังนั้น word ที่ได้รับจึงเกิดขึ้นจากการค้นหาข้อมูลใน word แทนที่จะเป็นตำแหน่งของ word นั้น ๆ การทำงานอื่นมีลักษณะแบบเดียวกับ random access คือเวลาที่ใช้ในการเข้าถึงข้อมูลนั้นคงที่และไม่ขึ้นอยู่กับการเข้าถึงข้อมูลในครั้งก่อนหน้า ตัวอย่างคือ หน่วยความจำ cache

  7. คุณลักษณะของระบบหน่วยความจำคุณลักษณะของระบบหน่วยความจำ • Performance: ประสิทธิภาพ ซึ่งแบ่งการวัดเป็นสามเรื่อง ดังนี้ • Access time (latency):สำหรับหน่วยความจำแบบ random access memory ระยะเวลาในการเข้าถึงหน่วยความจำ หมายถึง ระเวลาที่ใช้ในการอ่านหรือบันทึกข้อมูลคือ ระยะเวลานับตั้งแต่ที่ตำแหน่งข้อมูลได้ถูกส่งมาถึงหน่วยความจำ จนกระทั่งข้อมูลได้ถูกบันทึก สำหรับหน่วยความจำแบบอื่นที่ไม่ใช่ random access memory จะหมายถึง ระยะเวลาที่เคลื่อนย้ายกลไกในการอ่านหรือบันทึกข้อมูลไปยังตำแหน่งข้อมูลที่ต้องการ • Memory cycle time: ใช้กับหน่วยความจำแบบ random access memory ระยะเวลาวงรอบหน่วยความจำประกอบด้วย ระยะเวลาในการเข้าถึงหน่วยความจำ (access time) รวมกับระยะเวลาอื่น ๆ ที่จำเป็นต้องใช้ จนถึงเวลาที่จะเกิดการอ่านหรือบันทึกข้อมูลในครั้งต่อไป ระยะเวลาอื่นที่ต้องใช้เช่น ระยะเวลาที่รอให้สัญญาณต่าง ๆ เข้าสู่สถานะเสถียร และระยะเวลาที่ต้องรอให้สัญญาณเดิมหายไป(สายสัญญาณเข้าสู่สถานะว่างหรือ idle)

  8. คุณลักษณะของระบบหน่วยความจำคุณลักษณะของระบบหน่วยความจำ • Transfer rate: อัตราการถ่ายเทข้อมูล หมายถึง อัตราที่ข้อมูลถูกถ่ายทอดเข้าสู่หรือออกจากหน่วยความจำ สำหรับหน่วยความจำแบบ random access memory ระยะเวลานี้เท่ากับ 1/cycle time สำหรับหน่วยความจำแบบอื่นระยะเวลานี้จะเท่ากับ TN = TA + (N/R) TN = ระยะเวลาโดยเฉลี่ยในการอ่านหรือบันทึกข้อมูล N บิต TA = ระยะเวลาเข้าถึงข้อมูลโดยเฉลี่ย N = จำนวนบิตข้อมูล R = อัตราการถ่ายเทข้อมูล มีหน่วยเป็นบิตต่อวินาที

  9. คุณลักษณะของระบบหน่วยความจำคุณลักษณะของระบบหน่วยความจำ • Physical type: หน่วยความจำอาจแบ่งออกตามลักษณะทางกายภายได้แก่ หน่วยความจำเซมิคอนดักเตอร์(semiconductor), หน่วยความจำแบบผิวฉาบด้วยสารแม่เหล็ก(magnetic surface memory) ซึ่งใช้ดิสก์และเทปมาเป็นหน่วยความจำ, การใช้อุปกรณ์ optic และ magneto-optic มาเป็นหน่วยความจำ • Physical characteristic: คุณสมบัติทางกายภาพของอุปกรณ์บันทึกข้อมูลนั้นมีความสำคัญต่อการใช้งานอย่างมาก ในหน่วยความจำที่เป็นแบบไม่ถาวร(volatile) นั้นจะสูญเสียข้อมูลที่บันทึกอยู่ในทันทีที่ถูกตัดพลังงานไฟฟ้า ส่วนหน่วยความจำแบบถาวร(non-volatile) จะสามารถบันทึกข้อมูลไว้ได้ตลอดเวลา หน่วยความจำแบบผิวฉาบสารแม่เหล็กเป็นตัวอย่างของ non-volatile ส่วนเซมิคอนดักเตอร์นั้นเป็นได้ทั้ง volatile และ non-volatile ขึ้นอยู่กับวัตถุประสงค์ในตอนผลิต

  10. โครงสร้างลำดับชั้นของหน่วยความจำโครงสร้างลำดับชั้นของหน่วยความจำ • เงื่อนไขสำคัญของการออกแบบหน่วยความจำ คือ ราคา ปริมาณ และเวลาการเข้าถึงหน่วยความจำ ซึ่งเงื่อนไขทั้งสามประการนี้มีความสัมพันธ์กัน ดังนี้ • การเพิ่มความเร็วในการเข้าถึงข้อมูล จะทำให้หน่วยความจำมีราคาสูงขึ้น • ปริมาณหน่วยความจำเพิ่มขึ้น จะทำให้ราคาต่อหน่วยลดลง • ปริมาณหน่วยความจำเพิ่มขึ้น จะทำให้เสียเวลาในการเข้าถึงข้อมูลในหน่วยความจำมากขึ้น • หนทางในการแก้ปัญหาความซับซ้อนนี้ สามารถทำได้โดยการใช้เทคโนโลยีหน่วยความจำหลายแบบมาผสมกันเป็นโครงสร้างลำดับชั้นของหน่วยความจำ ดังโครงสร้างดังรูปหน้าถัดไป เมื่อพิจารณาหน่วยความจำที่อยู่ในระดับบนลงล่างจะพบว่า (a) มีราคาต่อบิตต่ำลง (b) มีปริมาณมากขึ้น (c) ใช้เวลาในการเข้าถึงข้อมูลนานขึ้น (d) มีการติดต่อกับโปรเซสเซอร์ลดลง

  11. โครงสร้างลำดับชั้นของหน่วยความจำโครงสร้างลำดับชั้นของหน่วยความจำ • จากรูปโครงสร้างจะเห็นได้ว่า หน่วยความจำราคาแพงซึ่งมีความเร็วสูงในระดับบนจะถูกแทนที่ด้วยหน่วยความจำราคาถูก ปริมาณมาก และทำงานได้ช้าลงในระดับล่าง กุญแจสำคัญของความสำเร็จของโครงสร้างลำดับชั้นนี้คือ คุณสมบัติในข้อ (d) นั่นคือการลดการติดต่อกับหน่วยความจำในระดับล่างให้เหลือน้อยที่สุด

  12. โครงสร้างลำดับชั้นของหน่วยความจำโครงสร้างลำดับชั้นของหน่วยความจำ ประสิทธิภาพของหน่วยความจำ 2 ระดับ

  13. โครงสร้างลำดับชั้นของหน่วยความจำโครงสร้างลำดับชั้นของหน่วยความจำ • สมมติว่าโปรเซสเซอร์สามารถอ้างอิงถึงหน่วยความจำสองระดับ ระดับที่ 1 ประกอบด้วยหน่วยความจำจำนวน 1000words ซึ่งมีระยะเวลาในการเข้าถึงข้อมูล 0.01 ไมโครวินาที หน่วยความจำระดับที่ 2 ประกอบด้วยหน่วยความจำจำนวน 100000 words ซึ่งมีระยะเวลาในการเข้าถึงข้อมูล 0.1 ไมโครวินาที • ถ้าโปรเซสเซอร์ต้องการข้อมูล 1 word จากหน่วยความจำในระดับที่ 1 ก็สามารถทำได้ทันที แต่ถ้าข้อมูลนั้นอยู่ในหน่วยความจำระดับที่ 2 ข้อมูลนั้นจะต้องถูกคัดลอกไปไว้ที่หน่วยความจำระดับที่ 1 ก่อน จากนั้นโปรเซสเซอร์จึงจะนำข้อมูลไปใช้ได้ • จากกราฟแสดงให้เห็นถึงความสัมพันธ์ของเหตุการณ์ที่สมมุติขึ้นมานี้ ในรูปเป็นระยะเวลาโดยเฉลี่ยของการเข้าถึงหน่วยความจำ (average access time) ในรูปฟังก์ชันของอัตราการอ้างอิงข้อมูลในหน่วยความจำระดับที่ 1 (hit ratio) โดยที่

  14. โครงสร้างลำดับชั้นของหน่วยความจำโครงสร้างลำดับชั้นของหน่วยความจำ H = สัดส่วนของการอ้างอิงหน่วยความจำ ที่สามารถพบข้อมูลที่ต้องการใน หน่วยความจำระดับที่ 1T1 = ระยะเวลาในการเข้าถึงข้อมูลที่หน่วยความจำระดับที่ 1 T2 = ระยะเวลาในการเข้าถึงข้อมูลที่หน่วยความจำระดับที่ 2 • จะเห็นได้ว่าถ้าการอ้างอิงหน่วยความจำในระดับที่ 1 มีเปอร์เซ็นต์สูงขึ้น ค่าเฉลี่ยโดยรวมของระยะเวลาในการอ้างอิงหน่วยความจำ จะมีค่าใกล้เคียงกับระยะเวลาที่ใช้ในการอ้างอิงหน่วยความจำระดับที่ 1 • จากตัวอย่างที่สมมติขึ้น ถ้า 95% ของการอ้างอิงทั้งหมด เกิดขึ้นในหน่วยความจำระดับที่ 1 แล้ว ค่าเฉลี่ยของระยะเวลาในการอ้างอิงข้อมูลจะเป็น (0.95)(0.01s) + (0.05)(0.1 s+0.01s) = 0.0095+0.0055 = 0.015 s

  15. โครงสร้างลำดับชั้นของหน่วยความจำโครงสร้างลำดับชั้นของหน่วยความจำ • ในตัวอย่างข้างต้น ค่าเฉลี่ยในการเข้าถึงหน่วยความจำมีค่าใกล้เคียงกับ 0.01 sมากกว่า 0.1sตามที่ต้องการ • การใช้หน่วยความจำสองระดับ ช่วยลดระยะเวลาในการเข้าถึงหน่วยความจำได้ ในทางพื้นฐานเมื่อเงื่อนไข (a) ถึง (d) เป็นจริง การทำเทคโนโลยีต่าง ๆ มาประยุกต์ใช้จะทำให้เกิดความหลากหลายที่จะทำให้เงื่อนไข (a) ถึง (c) เป็นจริง ส่วนเงื่อนไข (d) นั้นมักจะเป็นจริงได้โดยอัตโนมัติ • ความสัมพันธ์นี้ สามารถนำไปใช้ได้กับระบบที่มีหน่วยความจำหลายระดับ หน่วยความจำที่ทำงานเร็วที่สุด มีขนาดเล็กที่สุด และมีราคาแพงที่สุดก็คือ รีจิสเตอร์ ซึ่งอยู่ในตัวโปรเซสเซอร์ โดยทั่วไปโปรเซสเซอร์จะมีรีจิสเตอร์ประมาณ 20-30 ตัว ในขณะที่บางเครื่องอาจมีมากนับร้อยตัวก็ได้

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

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

  18. ลักษณะพื้นฐานของหน่วยความจำ Cache หน่วยความจำ cache และหน่วยความจำหลัก

  19. ลักษณะพื้นฐานของหน่วยความจำ Cache • เนื่องจากปรากฏการณ์การอ้างอิงในพื้นที่เดียวกัน (locality of reference) จะทำให้การอ้างอิงข้อมูลในหน่วยความจำครั้งต่อๆไป เป็นการอ้างอิงที่เดิม หรือที่ตำแหน่งใกล้เคียงจุดเดิม • ดังนั้นการคัดลอกข้อมูลหนึ่งบล็อกจากหน่วยความจำหลักมายัง cache จะสามารถถูกนำมาใช้งานได้ในระยะหนึ่ง ก่อนที่จะมีการคัดลอกข้อมูลในครั้งต่อไป • รูปด้านล่างแสดงโครงสร้างของหน่วยความจำ cache และหน่วยความจำหลัก หน่วยความจำหลักประกอบด้วย ที่เก็บข้อมูลจำนวน 2n words ที่สามารถถูกอ้างอิงได้ โดยที่แต่ละ word จะมีหลายเลขที่อยู่เป็นเลขฐานสองจำนวน n-bit เป็นหมายเลขเฉพาะของตัวเอง

  20. ลักษณะพื้นฐานของหน่วยความจำ Cache โครงสร้างของหน่วยความจำ cache และหน่วยความจำหลัก

  21. ลักษณะพื้นฐานของหน่วยความจำ Cache • กล่าวอีกนัยหนึ่ง คือ หน่วยความจำหลักประกอบด้วยบล็อกที่เก็บข้อมูลขนาด K-word จำนวนหนึ่งนั่นคือมีจำนวนบล็อก(M) เท่ากับ M = 2n/K บล็อกนั่นเอง • ส่วน cache นั้นประกอบด้วยช่องสัญญาณจำนวน C ช่องโดยที่แต่ละช่องมีขนาด K words และจำนวนช่องสายสัญญาณนั้น น้อยกว่าจำนวนบล็อกในหน่วยความจำหลักเป็นอย่างมา (C < M) • ในเวลาใดก็ตามข้อมูลจำนวนหลายบล็อกจากหน่วยความจำหลัก จะถูกคัดลอกสำเนามาเก็บไว้ที่ช่องสัญญาณใน cache ถ้าข้อมูลใน word ของบล็อกหนึ่งถูกเรียกใช้โดยโปรเซสเซอร์ ข้อมูลทั้งบล็อกนั้นจะถูกถ่ายโอนมาไว้ที่ cache เนื่องจากหน่วยความจำหลักมีจำนวนบล็อกมากกว่าช่องสัญญาณใน cache ช่องสัญญาณแต่ละช่องจึงไม่ได้กำหนดไว้สำหรับบล็อกใด ทำให้ช่องสัญญาณแต่ละช่องต้องมีป้ายบอกว่าข้อมูลมาจากบล็อกใด

  22. ลักษณะพื้นฐานของหน่วยความจำ Cache • รูป (a)แสดงขั้นตอนในกระบวนการอ่านข้อมูล โปรเซสเซอร์สร้างตำแหน่งที่อยู่ของข้อมูลที่ต้องการอ่าน เรียกว่า RA ถ้าข้อมูล word นั้นมีอยู่ใน cache อยู่แล้ว ก็จะถูกนำส่งโปรเซสเซอร์ทำการประมวลผลต่อไป มิฉะนั้นบล็อกในหน่วยความจำหลักที่มีข้อมูล word นี้อยู่ก็จะถูกคัดลอกสำเนาเข้ามาใส่ไว้ใน cache และถูกนำส่งโปรเซสเซอร์ต่อไป จากรูปแสงให้เห็นขั้นตอนต่าง ๆ ที่เกิดขึ้น เป็นโครงสร้างของส่วนประกอบภายใน รูป (b) เป็นโครงสร้างที่ใช้กับ cache ที่มีใช้งานทั่วไป ในโครงสร้างนี้ cache เชื่อมต่อกับโปรเซสเซอร์ผ่านสาย data bus, address bus, control bus สาย data bus และ สาย address bus จะเชื่อมต่อเข้ากับบัฟเฟอร์ ซึ่งเชื่อมต่อเข้ากับสายบัสหลักของระบบที่นำไปสู่หน่วยความจำหลัก

  23. ลักษณะพื้นฐานของหน่วยความจำ Cache • การอ่านข้อมูลจากหน่วยความจำ • cache

  24. ลักษณะพื้นฐานของหน่วยความจำ Cache โครงสร้างหน่วยความจำ cache โดยทั่วไป

  25. ลักษณะพื้นฐานของหน่วยความจำ Cache • เมื่อสามารถค้นพบข้อมูลที่ต้องการใน cache (cache hits) บัฟเฟอร์สำหรับข้อมูลและตำแหน่งข้อมูลจะถูกสั่งไม่ให้ทำงาน(disable) และการสื่อสารจะเกิดขึ้นระหว่างโปรเซสเซอร์กับ cache โดยไม่มีการใช้บัสหลักด้วย • แต่ถ้าไม่สามารถหาข้อมูลใน cache ได้(cache miss) ตำแหน่งข้อมูลที่ต้องการจะถูกส่งเข้าไปในบัสหลัก ข้อมูลในหน่วยความจำหลักจะถูกส่งมาที่บัฟเฟอร์ และจากบัฟเฟอร์ส่งไปยังโปรเซสเซอร์และส่งเข้าไปเก็บไว้ใน cache • ในบางโครงสร้าง cache จะถูกวางคั่นกลางไว้ระหว่างโปรเซสเซอร์ และหน่วยความจำหลัก ซึ่งจะวางทับ data bus, address bus, control bus ไว้ทั้งหมด ดังนั้นเมื่อเกิดกรณี cache miss ข้อมูลจากหน่วยความจำหลักจะถูกส่งมาที่ cache ก่อน แล้วจึงถูกส่งต่อไปยังโปรเซสเซอร์ในลำดับหลัง

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

  27. ขนาดของ cache ในโปรเซสเซอร์ชนิดต่าง ๆ

  28. องค์ประกอบในการออกแบบ Cache Cache SizeWrite Policy Mapping Function Write through Direct Write back Associative Set associative Line Size Replacement AlgorithmNumber of caches Least recently used (LRU) Single or two level First in first out (FIFO) Unified or split Least frequently used (LFU) Random

  29. Mapping Function • เนื่องจาก cache มีช่องสัญญาณน้อยกว่าจำนวนบล็อกในหน่วยความจำ จึงจำเป็นต้องมีอัลกอริทึม สำหรับการกำหนดตำแหน่งหน่วยความจำของแต่ละบล็อกไปยังช่องสัญญาณใน cache เรียกว่า Mapping • นอกจากนี้ยังต้องมีวิธีการสำหรับการตรวจสอบว่าบล็อกใดที่ยังคงถูกเก็บไว้ในช่องสัญญาณ cache • วิธีการกำหนดตำแหน่งหน่วยความจำไว้ในช่องสัญญาณ cache หรือ Mapping จะเป็นสิ่งที่บอกให้ทราบถึงวิธีการวางโครงสร้างภายใน cache ซึ่งนิยมใช้สามวิธีคือ • Direct mapping • Associative mapping • Set associative mapping

  30. Mapping Function • เพื่อเป็นการเปรียบเทียบการทำงานของโครงสร้างทั้งสามแบบจึงกำหนด ตัวอย่างดังนี้ • ขนาดของ cache เป็น 64 Kbytes • การถ่ายเทข้อมูลระหว่างหน่วยความจำหลักกับ cache กระทำครั้งละหนึ่งบล็อก ซึ่งมีขนาด 4 bytes หมายความว่า จำนวนช่องสัญญาณใน cache นั้นเท่ากับ 16K ช่อง (16K x 4 = 64 Kbytes) • หน่วยความจำหลักมีขนาด 16 Mbytes ซึ่งใช้วิธีการกำหนดตำแหน่งข้อมูลโดยใช้เลขฐานสองขนาด 24 บิต (224 = 16M) ดังนั้นเพื่อการกำหนดตำแหน่งบล็อกข้อมูลไปยัง cache จึงถือว่าหน่วยความจำหลักมีขนาด 16M บล็อก บล็อกละ 4bytes

  31. Direct Mapping • การจัดโครงสร้างภายใน cache แบบที่ง่ายที่สุดเป็นแบบ Direct mapping ซึ่งจะกำหนดตำแหน่งของแต่ละบล็อกไว้ที่ตำแหน่งช่องสัญญาณ cache ที่เดิมเสมอ ไม่มีการเปลี่ยนแปลง รูป direct mapping แสดงกลไกการทำงานทั่วไป ซึ่งสามารถอธิบายด้วยรูปแบบฟังก์ชันทางคณิตศาสตร์ ดังนี้ i = j modulo m เมื่อ i คือ หมายเลขช่องสัญญาณ cache j คือ หมายเลขบล็อก m คือ จำนวนช่องสัญญาณของ cache

  32. Direct Mapping โครงสร้างหน่วยความจำ cache แบบ direct-mapping

  33. Direct Mapping • การคำนวณให้พิจารณาว่า ตำแหน่งของข้อมูลในหน่วยความจำประกอบขึ้นด้วย3 ส่วน • บิตด้านขวามือสุด (เริ่มจากบิตที่มีค่าน้อยสุด) จำนวน w บิต ใช้ในการการอ้างอิง word แต่ละ word ที่อยู่ภายในบล็อกหนึ่ง • ที่เหลืออีกจำนวน s บิต หมายถึงตำแหน่งหรือหมายเลขของบล็อกจากจำนวนทั้งหมด 2s บล็อก หน่วยความจำ cache จะแบ่งข้อมูล s บิตนี้ออกเป็นสองส่วน คือ เป็นบิตที่ใช้บอกหมายเลขช่องสัญญาณ cache จำนวน r บิต (แสดงว่ามีจำนวนช่องสัญญาณทั้งสิ้น 2rช่อง) และที่เหลืออีก s - r บิต ใช้เป็น tag หรือป้ายบอกตำแหน่งการใช้งานของบล็อกนั้น (อยู่ใน cache หรือไม่) ดังนั้น

  34. Direct Mapping • ความยาวของหมายเลขที่อยู่ = (s + w) บิต • ปริมาณหน่วยความจำที่สามารถอ้างอิงได้ทั้งหมด = 2s+w words หรือ bytes • จำนวนบล็อกทั้งหมด = 2w words หรือ bytes • จำนวนบล็อกในหน่วยความจำหลัก = บล็อก • จำนวนช่องสัญญาณ cache = 2r = m ช่อง • ขนาดของป้ายบอกตำแหน่ง =(s – r) บิต

  35. Direct Mapping • ผลของการกำหนดความสัมพันธ์ของตำแหน่งข้อมูลในหน่วยความจำหลักกับช่องสัญญาณ cache เป็นดังนี้ • การนำตัวเลขบางส่วนของหมายเลขที่อยู่มาใช้เป็นหมายเลขช่องสัญญาณ cache ทำให้เกิดการแปลงตำแหน่งแต่ละบล็อกในหน่วยความจำหลักมายัง cache เป็นค่าเฉพาะที่ไม่ซ้ำกัน เมื่อมีการอ่านข้อมูลจากบล็อกในหน่วยความจำหลักมาไว้ที่ cache ตามตำแหน่งที่กำหนด ก็จะต้องเปลี่ยนค่าของป้ายบอกตำแหน่งของข้อมูลให้สอดคล้องกันด้วย เพื่อจะได้สามารถแยกความแตกต่างออกจากบล็อกที่ยังไม่เกิดการอ่านได้ ข้อมูล s-r บิตแรกจะถูกนำมาใช้เป็นป้ายบอกตำแหน่งข้อมูลนี้

  36. Direct Mapping ตัวอย่างโครงสร้างหน่วยความจำ cache แบบ direct-mapping

  37. Direct Mapping • รูปด้านบนแสดงตัวอย่างการใช้วิธี direct mapping ซึ่งกำหนดให้ m = 16K = 214และ i = j mod 214การแปลงที่อยู่จะได้ผลลัพธ์ดังนี้ • สังเกตว่า จะไม่มีบล็อกใด ๆ ที่ถูกแปลงที่อยู่เป็นหมายเลขช่องสัญญาณ cache เดียวกันแล้วมีหมายเลขป้ายบอกตำแหน่งเหมือนกันเลย เช่น บล็อกที่เริ่มต้นด้วยหมายเลขที่อยู่ 000000, 010000, …, FF0000 จะมีค่าของป้ายเลขบอกตำแหน่งเป็น 00, 01, …, FF ตามลำดับ

  38. Direct Mapping • สังเกตว่าจะไม่มีบล็อกใด ๆ ที่ถูกแปลงที่อยู่เป็นหมายเลขช่องสัญญาณ cache เดียวกัน แล้วมีหมายเลขบอกตำแหน่งป้ายเหมือนกันเลย เช่น บล็อกที่เริ่มต้นด้วยหมายเลขที่อยู่ 000000, 010000, …, FF0000 จะมีค่าของป้ายบอกตำแหน่งเป็น 00, 01, …, FF ตามลำดับ • กระบวนการอ่านข้อมูลจากหน่วยความจำหลักทำงาน ดังนี้ • ข้อมูลตำแหน่งที่อยู่ขนาด 24 บิต ถูกส่งมาที่ระบบหน่วยความจำ cache ข้อมูลช่องสัญญาณ cache ขนาด 14 บิต (line number) ถูกนำไปใช้ในการค้นหาตำแหน่งช่องสัญญาณ cache ต่อไป • ข้อมูลป้ายบอกตำแหน่ง 8 บิตแรก (tag) จะถูกนำไปเปรียบเทียบกับหมายเลขของป้ายบอกตำแหน่งที่เก็บอยู่ในตำแหน่งช่องสัญญาณ cache ที่พบนั้น ซึ่งถ้าตรงกันก็แสดงว่าข้อมูลบล็อกที่ต้องการนั้นอยู่ใน cache จึงนำข้อมูลสองบิตสุดท้าย (word) มาใช้เลือกข้อมูล (หนึ่งใน 4 ไบท์) ในบล็อกนั้น

  39. Direct Mapping • แต่ถ้าข้อมูลป้ายบอกตำแหน่งมีค่าไม่เท่ากัน แสดงว่าข้อมูลในบล็อกนั้น ยังไม่ถูกคัดลอกสำเนาจากหน่วยความจำหลักมาเก็บไว้ใน cache ก็จะนำข้อมูลป้ายบอกตำแหน่งรวมทั้งข้อมูลช่องสัญญาณ cache จำนวน 22 บิตมารวมกัน กลายเป็นตำแหน่งบล็อกข้อมูลในหน่วยความจำหลัก แล้วคัดลอกสำเนามาเก็บไว้ใน cache • หมายเลขที่อยู่จริง ๆ ในหน่วยความจำหลักนั้นมาจากข้อมูล 22 บิต และต่อท้ายด้วย 00 ทำให้กลายเป็นหมายเลขที่อยู่เริ่มต้นของข้อมูลในแต่บล็อกขนาด 24 บิต ที่เก็บอยู่ในหน่วยความจำหลัก • ข้อดีของ Direct mapping คือ เป็นวิธีที่ง่ายสร้างขึ้นมาใช้งานโดยใช้ต้นทุนต่ำ • ส่วนข้อเสียคือ การเปลี่ยนตำแหน่งบล็อกข้อมูลจากหน่วยความจำหลักมาที่ cache นั้นเป็นการกำหนดตำแหน่งคงที่ ดังนั้นถ้าในโปรแกรมเกิดมีการอ้างอิงถึงข้อมูลจากสองบล็อกหรือมากกว่า ข้อมูลทั้งสองบล็อกนั้นจะต้องสลับเปลี่ยนกันถูกคัดลอกเข้ามาไว้ใน cache ที่ตำแหน่งเดียวกันเสมอ ทั้ง ๆ ที่ cache ส่วนอื่นอาจไม่มีข้อมูลอยู่เลยก็ได้ ปรากฏการณ์แบบนี้เรียกว่า “trashing”

  40. Associative Mapping • วิธีนี้แก้ปัญหาของ Direct mapping โดยการยินยอมให้หน่วยความจำแต่ละบล็อก สามารถูกอ่านเข้ามาใน cache ช่องใดก็ได้ • ในกรณีนี้การแปลงตำแหน่งที่อยู่จะแบ่งออกเป็นเพียงสองส่วนคือ ป้ายบอกตำแหน่ง (tag) และ ตำแหน่งของ word • ป้ายบอกตำแหน่งใช้ในการบอกหมายเลขบล็อกของหน่วยความจำหลัก การตรวจสอบว่าบล็อกนั้นอยู่ใน cache หรือไม่ ยังคงใช้วิธีเดิม คือ การเปรียบเทียบค่าของป้ายบอกตำแหน่งที่มากับข้อมูล กับค่าของป้ายบอกตำแหน่งที่เก็บอยู่ใน cache รูปด้านล่างแสดงการทำงานของ Associative mapping สังเกตว่าไม่มีส่วนใดของตำแหน่งที่อยู่ข้อมูลเป็นส่วนที่บอกตำแหน่งใน cache (line number) ดังนั้นจึงไม่มีการตรวจสอบหมายเลขช่องสัญญาณใน cache

  41. Associative Mapping โครงสร้างหน่วยความจำ cache แบบ fully associative

  42. Associative Mapping • ค่าต่าง ๆ ในรูปแสดงได้ดังนี้ • ความยาวของหมายเลขตำแหน่งที่อยู่ (address length) = (s+w) บิต • จำนวน word (หรือ byte) ในหน่วยความจำหลัก = 2s+wwords • ขนาดของบล็อก = 2w words (หรือ byte) • จำนวนบล็อกในหน่วยความจำหลัก = • จำนวนช่องสัญญาณใน cache = ไม่มีการกำหนดตายตัว • ขนาดของป้ายบอกตำแหน่ง = s บิต

  43. Associative Mapping • รูปด้านล่างแสดงการใช้ Associative Mapping ที่อยู่ในหน่วยความจำหลัก(memory address) ประกอบขึ้นจาก ป้ายบอกตำแหน่งขนาด 22 บิต และเลขบอกตำแหน่งไบต์ขนาด 2 บิต รวมเป็น 24 บิต ป้ายบอกตำแหน่งทั้ง 22 บิต (เริ่มจากบิตซ้ายสุด) จะต้องใช้ในการเก็บข้อมูลบล็อกละ 32 บิต สำหรับแต่ละช่องสัญญาณใน cache เช่น Memory address 0001 0110 0011 0011 1001 1100 (binary24 bits) 1 6 3 3 9 C (hexadecimal) Tag(leftmost 22 bits) 00 0101 1000 1100 1110 0111 (binary 22bits) 0 5 8 C E 7(hexadecimal) นั่นคือที่อยู่ที่อ้างอิงในหน่วยความจำหลัก 16339C จะมีหมายเลข tag เป็น 058CE7 ข้อเสีย ของวิธีนี้คือ ความซับซ้อนที่เกิดขึ้นในระหว่างการตรวจสอบป้ายบอกตำแหน่งข้อมูลใน cache ที่จะต้องทำการตรวจสอบพร้อมกันทุกตำแหน่ง

  44. Associative Mapping โครงสร้างหน่วยความจำ cache แบบ associative

  45. Set Associative Mapping • เป็นวิธีการผสมที่ได้นำข้อดีของทั้งแบบ direct และ associative มาใช้ • ในขณะที่พยายามลดข้อด้อยให้มีผลกระทบน้อยลง ในกรณีนี้ หน่วยความจำ cache จะถูกแบ่งออกเป็นเซ็ตจำนวน v เซ็ต แต่ละเซ็ตประกอบด้วยช่องสัญญาณจำนวน k ช่อง สรุปความสัมพันธ์ได้ ดังนี้ m = v x k i = j modulo v เมื่อ • i = หมายเลขเซ็ตใน cache • j = หมายเลขบล็อกในหน่วยความจำหลัก • m = จำนวนช่องสัญญาณใน chche

  46. Set Associative Mapping • ความสัมพันธ์ด้านบนนั้น เรียกเป็นชื่อเฉพาะว่า “k-way set associative mapping” • วิธีการนี้จะแปลงที่อยู่ของบล็อก Bjให้ไปอยู่ในช่องสัญญาณใดก็ได้ในเซ็ต i ของหน่วยความจำ cache โครงสร้างของหมายเลขที่อยู่ประกอบด้วยสามส่วนคือ ป้ายบอกตำแหน่ง(tag), หมายเลขเซ็ตและตำแหน่งใน word • หมายเลขเซ็ตมีขนาด d บิต (v = 2d set) ใช้ในการกำหนดเซ็ตที่ต้องใช้ใน cache ส่วนป้ายบอกตำแหน่งขนาด s บิต และข้อมูลในเซ็ต จะนำมาใช้บอกตำแหน่งบล็อกข้อมูลในหน่วยความจำ • รูปด้านล่างแสดงการทำงานของ set associative กรณีพิเศษกรณีหนึ่งเรียกว่า fully associative mapping มีขนาดของป้ายบอกตำแหน่งมาก จนต้องทำการเปรียบเทียบกับทุกช่องสัญญาณใน cache

  47. Set Associative Mapping โครงสร้างหน่วยความจำ cache แบบ k-way set associative

  48. Set Associative Mapping • แต่ k-way set associative จะมีขนาดของป้ายบอกตำแหน่งที่เล็กกว่ามาก ซึ่งจะทำการเปรียบเทียบช่องสัญญาณเพียง k ช่องในเซ็ตหนึ่ง ๆ เท่านั้น สรุปความสัมพันธ์ได้ดังนี้ • ความยาวของตำแหน่งข้อมูล (address length) = s + w บิต • ขนาดหน่วยความจำทั้งหมด = 2s+w words หรือ bytes • ขนาดของบล็อก = 2w words or bytes • จำนวนบล็อกในหน่วยความจำหลัก = บล็อก • จำนวนช่องสัญญาณในแต่ละเซ็ต = k • จำนวนเซ็ต = 2d = v เซ็ต • จำนวนช่องสัญญาณทั้งหมดใน cache = kv = k x 2d • ขนาดของป้ายบอกตำแหน่ง = (s – d) บิต

  49. Set Associative Mapping • รูปด้านล่างแสดงตัวอย่างการทำงานของ set associative ที่แต่ละเซ็ตประกอบด้วย 2 ช่องสัญญาณ(2-way set associative) • หมายเลขเซ็ตขนาด 13 บิตใช้ระบุหมายเลขเซ็ต และหมายเลขบล็อกในหน่วยความจำหลัก ดังนั้นบล็อกหมายเลข 000000,008000, …, FF8000 ของหน่วยความจำหลักจะถูกแปลงให้ไปอยู่ในเซ็ต 0 ใน cache • แต่ละบล็อกสามารถถูกอ่านเข้าไปเก็บไว้ในช่องสัญญาณใดของเซ็ต 0 ก็ได้ แต่จะไม่สามารถเก็บไว้ที่ช่องสัญญาณเดียวกันในเซ็ตเดียวกันได้ • จากนั้นค่าของป้ายบอกตำแหน่ง ที่ตำแหน่งข้อมูลที่ถูกอ้างอิงจะถูกนำมาเปรียบเทียบกับค่าของป้ายบอกตำแหน่งที่เก็บอยู่ใน cache พร้อมกันทั้งสองช่องสัญญาณ เพื่อค้นหาบล็อกข้อมูลที่ต้องการ

  50. Set Associative Mapping ตัวอย่างโครงสร้างหน่วยความจำ cache แบบ 2-wayset associative

More Related