Transcript Document
Cache 1 หน่วยความจาในระบบคอมพิวเตอร์ หน่วยความจาในระบบคอมพิวเตอร์ มีการจัดโครงสร้างเป็ นลาดับชั้นดังนี้ รี จิสเตอร์ภายในโปรเซสเซอร์ : ระดับชั้นสูงสุ ด (อยูใ่ กล้โปรเซสเซอร์มากที่สุด) หน่วยความจา cache หนึ่งหรื อสองระดับ ซึ่งถ้ามีหลายระดับมักจะเรี ยกว่า cache ระดับ L1, L2, … หน่วยความหลัก : มักสร้างมาจาก DRAM(Dynamic Random Access Memory) โดยทัว่ ไปตาแหน่งการอ้างอิงข้อมูลในหน่วยความจาหลักโดยโปรเซสเซอร์ น้ นั มักจะเป็ นตาแหน่งเดิม ดังนั้นหน่วยความจา cache มักจะคัดลอกข้อมูลใน หน่วยความจาหลักที่เคยถูกอ้างอิงไปแล้วเอาไว้ ซึ่ งถ้าการทางานของ cache ได้รับการออกแบบเป็ นอย่างดีแล้ว เวลาส่ วนใหญ่โปรเซสเซอร์ กจ็ ะเรี ยกใช้ขอ้ มูลที่ อยูใ่ น cache เป็ นส่ วนมาก 2 คุณลักษณะของระบบหน่วยความจา ความซับซ้อนของระบบหน่วยความจาสามารถทาให้เข้าใจได้ง่ายขึ้น ด้วยการอธิบาย คุณลักษณะที่สาคัญของระบบหน่วยความจา ดังตารางด้านล่าง Location Processor Internal (main) External (secondary) Capacity Word size Number of words Unit of Transfer Word Block Access Method Sequential Direct Random Associative Performance Access time Cycle time Transfer rate Physical Type Semiconductor Magnetic Optical Magneto-optical Physical Characteristics Volatile/nonvolatile Erasable/nonerasable Organization 3 คุณลักษณะของระบบหน่วยความจา 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 บิต 4 คุณลักษณะของระบบหน่วยความจา Access method(วิธีการเข้าถึงหน่วยความจา) มีรายละเอียดดังนี้ Sequential access: การเข้าถึงหน่วยความจาแบบเรี ยงลาดับ ใช้สาหรับ หน่วยความจาที่มีโครงสร้างประกอบด้วยหน่วยต่าง ๆ ซึ่งเรี ยกว่า record การเข้า ไปอ่านหรื อบันทึกข้อมูลจะต้องกระทาเรี ยงตามลาดับ ข้อมูลเกี่ยวกับตาแหน่งที่อยูถ่ กู นามาใช้ในการแยกตาแหน่งแต่ละ record ออกจากกัน และช่วยในการ กระบวนการอ่านข้อมูล ตัวอย่างการเข้าถึงหน่วยความจาแบบนี้ได้แก่ เทปแม่เหล็ก Direct access: การเข้าถึงหน่วยความจาแบบตรง กระบวนการนี้สามารถ เปลี่ยนตาแหน่งที่อยูใ่ นปั จจุบนั ไปเป็ นตาแหน่งที่ตอ้ งการ โดยข้ามระเบียนข้อมูลที่อยู่ ระหว่างกลางไป ตัวอย่างได้แก่ ดิสก์ 5 คุณลักษณะของระบบหน่วยความจา Random access: การเข้าถึงหน่วยความจาแบบไม่มีลาดับ แต่ละตาแหน่งใน หน่วยความจาจะต้องมีกลไกในการกาหนดตาแหน่งเฉพาะที่ไม่มีการซ้ ากัน ระยะเวลาที่ ใช้ในการเข้าถึงแต่ละหน่วยนั้นเป็ นอิสระจากลาดับการเข้าถึงหน่วยความจาที่เกิดขึ้นก่อน หน้านี้ และใช้ระยะเวลาเท่ากันเสมอ ดังนั้นจึงสามารถเลือกตาแหน่งใดๆ ใน หน่วยความจาได้โดยไม่ตอ้ งเรี ยงลาดับใด และสามารถเข้าถึงตาแหน่งนั้นได้โดยตรง ตัวอย่างคือ หน่วยความจาหลัก(main memory) Associative: หรื อความเกี่ยวข้อง จัดว่าเป็ นการเข้าถึงหน่วยความจาแบบ random access อย่างหนึ่งที่มีการเปรี ยบเทียบข้อมูลบิตจานวนหนึ่ง(ที่กาหนด ตาแหน่งไว้ล่วงหน้า) กับ word ที่เป็ นตัวเลือกจานวนหนึ่ง (กาหนดไว้ล่วงหน้า เช่นกัน) เพื่อค้นหาตาแหน่งที่สอดคล้องกัน ดังนั้น word ที่ได้รับจึงเกิดขึ้นจากการ ค้นหาข้อมูลใน word แทนที่จะเป็ นตาแหน่งของ word นั้น ๆ การทางานอื่นมี ลักษณะแบบเดียวกับ random access คือเวลาที่ใช้ในการเข้าถึงข้อมูลนั้นคงที่ และไม่ข้ ึนอยูก่ บั การเข้าถึงข้อมูลในครั้งก่อนหน้า ตัวอย่างคือ หน่วยความจา cache6 คุณลักษณะของระบบหน่วยความจา Performance: ประสิ ทธิ ภาพ ซึ่ งแบ่งการวัดเป็ นสามเรื่ อง ดังนี้ Access time (latency): สาหรับหน่วยความจาแบบ random access memory ระยะเวลาในการเข้าถึงหน่วยความจา หมายถึง ระเวลาที่ใช้ใน การอ่านหรื อบันทึกข้อมูลคือ ระยะเวลานับตั้งแต่ที่ตาแหน่งข้อมูลได้ถูกส่ งมาถึง หน่วยความจา จนกระทัง่ ข้อมูลได้ถูกบันทึก สาหรับหน่วยความจาแบบอืน่ ที่ไม่ใช่ random access memory จะหมายถึง ระยะเวลาที่เคลื่อนย้ายกลไกในการ อ่านหรื อบันทึกข้อมูลไปยังตาแหน่งข้อมูลที่ตอ้ งการ Memory cycle time: ใช้กบั หน่วยความจาแบบ random access memory ระยะเวลาวงรอบหน่วยความจาประกอบด้วย ระยะเวลาในการเข้าถึง หน่วยความจา (access time) รวมกับระยะเวลาอื่น ๆ ที่จาเป็ นต้องใช้ จนถึงเวลา ที่จะเกิดการอ่านหรื อบันทึกข้อมูลในครั้งต่อไป ระยะเวลาอื่นที่ตอ้ งใช้เช่น ระยะเวลาที่รอ ให้สญ ั ญาณต่าง ๆ เข้าสู่สถานะเสถียร และระยะเวลาที่ตอ้ งรอให้สญ ั ญาณเดิมหายไป (สายสัญญาณเข้าสู่สถานะว่าง หรื อ idle) 7 คุณลักษณะของระบบหน่วยความจา Transfer rate: อัตราการถ่ายเทข้อมูล หมายถึง อัตราที่ขอ้ มูลถูกถ่ายทอดเข้า สู่หรื อออกจากหน่วยความจา สาหรับหน่วยความจาแบบ random access memory ระยะเวลานี้เท่ากับ 1/cycle time สาหรับหน่วยความจาแบบ อื่นระยะเวลานี้จะเท่ากับ TN = TA + (N/R) TN = ระยะเวลาโดยเฉลี่ยในการอ่านหรื อบันทึกข้อมูล N บิต TA = ระยะเวลาเข้าถึงข้อมูลโดยเฉลี่ย N = จานวนบิตข้อมูล R = อัตราการถ่ายเทข้อมูล มีหน่วยเป็ นบิตต่อวินาที 8 คุณลักษณะของระบบหน่วยความจา Physical type: หน่วยความจาอาจแบ่งออกตามลักษณะทางกายภายได้แก่ หน่วยความจาเซมิคอนดักเตอร์(semiconductor), หน่วยความจาแบบผิว ฉาบด้วยสารแม่เหล็ก(magnetic surface memory) ซึ่ งใช้ดิสก์ และเทปมาเป็ นหน่วยความจา, การใช้อุปกรณ์ optic และ magnetooptic มาเป็ นหน่วยความจา Physical characteristic: คุณสมบัติทางกายภาพของอุปกรณ์บนั ทึก ข้อมูลนั้นมีความสาคัญต่อการใช้งานอย่างมาก ในหน่วยความจาที่เป็ นแบบไม่ ถาวร(volatile) นั้นจะสู ญเสี ยข้อมูลที่บนั ทึกอยูใ่ นทันทีที่ถกู ตัดพลังงานไฟฟ้ า ส่ วนหน่วยความจาแบบถาวร(non-volatile) จะสามารถบันทึกข้อมูลไว้ได้ ตลอดเวลา หน่วยความจาแบบผิวฉาบสารแม่เหล็กเป็ นตัวอย่างของ nonvolatile ส่ วนเซมิคอนดักเตอร์ น้ นั เป็ นได้ท้ งั volatile และ nonvolatile ขึ้นอยูก่ บั วัตถุประสงค์ในตอนผลิต 9 โครงสร้างลาดับชั้นของหน่วยความจา เงื่อนไขสาคัญของการออกแบบหน่วยความจา คือ ราคา ปริ มาณ และเวลาการเข้าถึง หน่วยความจา ซึ่ งเงื่อนไขทั้งสามประการนี้มีความสัมพันธ์กนั ดังนี้ การเพิ่มความเร็ วในการเข้าถึงข้อมูล จะทาให้หน่วยความจามีราคาสูงขึ้น ปริ มาณหน่วยความจาเพิ่มขึ้น จะทาให้ราคาต่อหน่วยลดลง ปริ มาณหน่วยความจาเพิ่มขึ้น จะทาให้เสี ยเวลาในการเข้าถึงข้อมูลในหน่วยความจามาก ขึ้น หนทางในการแก้ปัญหาความซับซ้อนนี้ สามารถทาได้โดยการใช้เทคโนโลยี หน่วยความจาหลายแบบมาผสมกันเป็ นโครงสร้างลาดับชั้นของหน่วยความจา ดัง โครงสร้างดังรู ปหน้าถัดไป เมื่อพิจารณาหน่วยความจาที่อยูใ่ นระดับบนลงล่างจะพบว่า (a) มีราคาต่อบิตต่าลง (c) ใช้เวลาในการเข้าถึงข้อมูลนานขึ้น (b) มีปริ มาณมากขึ้น (d) มีการติดต่อกับโปรเซสเซอร์ลดลง 10 โครงสร้างลาดับชั้นของหน่วยความจา จากรู ปโครงสร้างจะเห็นได้วา่ หน่วยความจาราคาแพงซึ่ งมีความเร็ วสู งใน ระดับบนจะถูกแทนที่ดว้ ยหน่วยความจาราคาถูก ปริ มาณมาก และทางานได้ชา้ ลง ในระดับล่าง กุญแจสาคัญของความสาเร็ จของโครงสร้างลาดับชั้นนี้คือ คุณสมบัติ ในข้อ (d) นัน่ คือการลดการติดต่อกับหน่วยความจาในระดับล่างให้เหลือน้อย ที่สุด 11 โครงสร้างลาดับชั้นของหน่วยความจา Average access time T1 + T2 Inboard memory Outboard storage Off-Line storage Registers Cache Main memory T2 T1 0 1 Fraction of accesses involving only level 1 (hit ratio) Magnetic disk CD-ROM CD-RW DVD-RW DVD-RAM ประสิ ทธิภาพของหน่วยความจา 2 ระดับ Magnetic tape 12 โครงสร้างลาดับชั้นของหน่วยความจา สมมติวา่ โปรเซสเซอร์ สามารถอ้างอิงถึงหน่วยความจาสองระดับ ระดับที่ 1 ประกอบด้วยหน่วยความจาจานวน 1000 words ซึ่ งมีระยะเวลาในการเข้าถึง ข้อมูล 0.01 ไมโครวินาที หน่วยความจาระดับที่ 2 ประกอบด้วยหน่วยความจา จานวน 100000 words ซึ่ งมีระยะเวลาในการเข้าถึงข้อมูล 0.1 ไมโครวินาที ถ้าโปรเซสเซอร์ ตอ้ งการข้อมูล 1 word จากหน่วยความจาในระดับที่ 1 ก็สามารถ ทาได้ทนั ที แต่ถา้ ข้อมูลนั้นอยูใ่ นหน่วยความจาระดับที่ 2 ข้อมูลนั้นจะต้องถูกคัดลอก ไปไว้ที่หน่วยความจาระดับที่ 1 ก่อน จากนั้นโปรเซสเซอร์ จึงจะนาข้อมูลไปใช้ได้ จากกราฟแสดงให้เห็นถึงความสัมพันธ์ของเหตุการณ์ที่สมมุติข้ ึนมานี้ ในรู ปเป็ น ระยะเวลาโดยเฉลี่ยของการเข้าถึงหน่วยความจา (average access time) ในรู ปฟังก์ชนั ของอัตราการอ้างอิงข้อมูลในหน่วยความจาระดับที่ 1 (hit ratio) โดยที่ 13 โครงสร้างลาดับชั้นของหน่วยความจา H = สัดส่ วนของการอ้างอิงหน่วยความจา ที่สามารถพบข้อมูลที่ตอ้ งการใน หน่วยความจาระดับที่ 1 T1 = ระยะเวลาในการเข้าถึงข้อมูลที่หน่วยความจาระดับที่ 1 T2 = ระยะเวลาในการเข้าถึงข้อมูลที่หน่วยความจาระดับที่ 2 จะเห็นได้วา่ ถ้าการอ้างอิงหน่วยความจาในระดับที่ 1 มีเปอร์เซ็นต์สูงขึ้น ค่าเฉลี่ย โดยรวมของระยะเวลาในการอ้างอิงหน่วยความจา จะมีค่าใกล้เคียงกับระยะเวลาที่ใช้ใน การอ้างอิงหน่วยความจาระดับที่ 1 จากตัวอย่างที่สมมติข้ ึน ถ้า 95% ของการอ้างอิงทั้งหมด เกิดขึ้นในหน่วยความจา ระดับที่ 1 แล้ว ค่าเฉลี่ยของระยะเวลาในการอ้างอิงข้อมูลจะเป็ น (0.95)(0.01s) + (0.05)(0.1 s+0.01s) = 0.0095+0.0055 = 0.015 s 14 โครงสร้างลาดับชั้นของหน่วยความจา ในตัวอย่างข้างต้น ค่าเฉลี่ยในการเข้าถึงหน่วยความจามีค่าใกล้เคียงกับ 0.01 s มากกว่า 0.1 s ตามที่ตอ้ งการ การใช้หน่วยความจาสองระดับ ช่วยลดระยะเวลาในการเข้าถึงหน่วยความจาได้ ในทางพื้นฐานเมื่อเงื่อนไข (a) ถึง (d) เป็ นจริ ง การทาเทคโนโลยีต่าง ๆ มา ประยุกต์ใช้จะทาให้เกิดความหลากหลายที่จะทาให้เงื่อนไข (a) ถึง (c) เป็ นจริ ง ส่ วนเงื่อนไข (d) นั้นมักจะเป็ นจริ งได้โดยอัตโนมัติ ั ระบบที่มีหน่วยความจาหลายระดับ ความสัมพันธ์น้ ี สามารถนาไปใช้ได้กบ หน่วยความจาที่ทางานเร็ วที่สุด มีขนาดเล็กที่สุด และมีราคาแพงทีส่ ุ ดก็คือ รี จิสเตอร์ ซึ่ งอยูใ่ นตัวโปรเซสเซอร์ โดยทัว่ ไปโปรเซสเซอร์ จะมีรีจิสเตอร์ ประมาณ 20-30 ตัว ในขณะที่บางเครื่ องอาจมีมากนับร้อยตัวก็ได้ 15 โครงสร้างลาดับชั้นของหน่วยความจา เลื่อนลงมาสองระดับจะเป็ นหน่วยความจาหลัก(main memory) ซึ่ งเป็ น หน่วยความจาที่ถกู นามาใช้งานทัว่ ไปในเครื่ องคอมพิวเตอร์ ข้อมูลแต่ละตาแหน่ง ในหน่วยความจาหลักจะมี address เฉพาะเป็ นของตัวเอง หน่วยความจาหลัก มักจะเชื่อมต่อเข้ากับหน่วยความจาขนาดเล็ก ที่มีความเร็ วสู งกว่ามากเรี ยกว่า หน่วยความจา cache หน่วยความจา cache มักจะเป็ นส่ วนที่ถกู ซ่ อนเอาไว้จากผูเ้ ขียนโปรแกรม หรื อ แม้กระทัง่ ตัวโปรเซสเซอร์ เอง คือจะทางานโดยอัตโนมัติ แต่จะสั่งการให้ทางาน ตามที่ตอ้ งการโดยตรงไม่ได้ หน่วยความจา cache ทาหน้าที่เป็ นเสมือน buffer เล็ก ๆ ระหว่าง หน่วยความจาหลักกับรี จิสเตอร์ ในโปรเซสเซอร์ ซึ่ งมีวตั ถุประสงค์เพื่อเพิ่ม ประสิ ทธิ ภาพการทางานของหน่วยความจาหลักโดยตรง 16 ลักษณะพื้นฐานของหน่วยความจา Cache หน่วยความจา cache สร้างขึ้นมาด้วยวัตถุประสงค์ที่จะให้เป็ นหน่วยความจาที่ ทางานได้เร็ วที่สุดเท่าที่เทคโนโลยีดีที่สุดในขณะนั้นจะทาได้ ในเวลาเดียวกันก็ ต้องการให้มีขนาดใหญ่ที่สุดในราคาที่ไม่แพงจนเกินไปนัก ดังแสดงในรูปด้านล่าง ในเครื่ องคอมพิวเตอร์ มีหน่วยความจาหลักที่มีความเร็ วต่า (เมื่อเปรี ยบเทียบกับ ความเร็ วของซี พีย)ู มีปริ มาณมาก โดยปกติหน่วยความจา cache จะเก็บสาเนาของข้อมูลบางส่ วนในหน่วยความจา หลักเอาไว้ เมื่อโปรเซสเซอร์ ตอ้ งการอ่านข้อมูลจานวนหนึ่ ง word ใน หน่วยความจา ข้อมูลส่ วนนั้นจะถูกตรวจสอบว่ามีอยูใ่ น cache หรื อไม่ ถ้ามีอยูก่ ็ จะนาข้อมูลใน cache ไปใช้ ถ้าไม่มีกจ็ ะเกิดการคัดลอกสาเนาข้อมูลหนึ่งบล็อก จากหน่วยความจาหลักมายัง cache แล้วจึงนา word ที่ตอ้ งการส่ งต่อไปให้ โปรเซสเซอร์ในภายหลัง 17 ลักษณะพื้นฐานของหน่วยความจา Cache Word transfer CPU Block transfer Cache Main memory หน่ วยความจา cache และหน่ วยความจาหลัก 18 ลักษณะพื้นฐานของหน่วยความจา Cache เนื่องจากปรากฏการณ์การอ้างอิงในพื้นที่เดียวกัน (locality of reference) จะทาให้การอ้างอิงข้อมูลในหน่วยความจาครั้งต่อๆไป เป็ นการอ้างอิงที่เดิม หรื อที่ ตาแหน่งใกล้เคียงจุดเดิม ดังนั้นการคัดลอกข้อมูลหนึ่งบล็อกจากหน่วยความจาหลักมายัง cache จะสามารถ ถูกนามาใช้งานได้ในระยะหนึ่ ง ก่อนที่จะมีการคัดลอกข้อมูลในครั้งต่อไป รู ปด้านล่างแสดงโครงสร้างของหน่วยความจา cache และหน่วยความจาหลัก หน่วยความจาหลักประกอบด้วย ที่เก็บข้อมูลจานวน 2n words ที่สามารถถูก อ้างอิงได้ โดยที่แต่ละ word จะมีหลายเลขที่อยูเ่ ป็ นเลขฐานสองจานวน n-bit เป็ นหมายเลขเฉพาะของตัวเอง 19 ลักษณะพื้นฐานของหน่วยความจา Cache Line number 0 1 2 Tag Block Memory address 0 1 2 . . . . Block (K words) 3 . . . . C-1 Block length (K words) (a) Cache Block โครงสร้ างของหน่ วยความจา cache และหน่ วยความจาหลัก 2n -1 Word length (b) Main memory 20 ลักษณะพื้นฐานของหน่วยความจา Cache กล่าวอีกนัยหนึ่ง คือ หน่วยความจาหลักประกอบด้วยบล็อกที่เก็บข้อมูลขนาด Kword จานวนหนึ่งนัน่ คือมีจานวนบล็อก(M) เท่ากับ M = 2n/K บล็อกนัน่ เอง ส่ วน cache นั้นประกอบด้วยช่องสัญญาณจานวน C ช่องโดยที่แต่ละช่องมี ขนาด K words และจานวนช่องสายสัญญาณนั้น น้อยกว่าจานวนบล็อกใน หน่วยความจาหลักเป็ นอย่างมา (C < M) ในเวลาใดก็ตามข้อมูลจานวนหลายบล็อกจากหน่วยความจาหลัก จะถูกคัดลอกสาเนา มาเก็บไว้ที่ช่องสัญญาณใน cache ถ้าข้อมูลใน word ของบล็อกหนึ่งถูก เรี ยกใช้โดยโปรเซสเซอร์ ข้อมูลทั้งบล็อกนั้นจะถูกถ่ายโอนมาไว้ที่ cache เนื่องจากหน่วยความจาหลักมีจานวนบล็อกมากกว่าช่องสัญญาณใน cache ช่องสัญญาณแต่ละช่องจึงไม่ได้กาหนดไว้สาหรับบล็อกใด ทาให้ช่องสัญญาณแต่ละ ช่องต้องมีป้ายบอกว่าข้อมูลมาจากบล็อกใด 21 ลักษณะพื้นฐานของหน่วยความจา Cache รู ป (a) แสดงขั้นตอนในกระบวนการอ่านข้อมูล โปรเซสเซอร์ สร้างตาแหน่งที่ อยูข่ องข้อมูลที่ตอ้ งการอ่าน เรี ยกว่า RA ถ้าข้อมูล word นั้นมีอยูใ่ น cache อยูแ่ ล้ว ก็จะถูกนาส่ งโปรเซสเซอร์ ทาการประมวลผลต่อไป มิฉะนั้น บล็อกในหน่วยความจาหลักที่มีขอ้ มูล word นี้อยูก่ จ็ ะถูกคัดลอกสาเนาเข้ามา ใส่ ไว้ใน cache และถูกนาส่ งโปรเซสเซอร์ ต่อไป จากรู ปแสงให้เห็นขั้นตอน ต่าง ๆ ที่เกิดขึ้น เป็ นโครงสร้างของส่ วนประกอบภายใน รู ป (b) เป็ นโครงสร้างที่ใช้กบั cache ที่มีใช้งานทัว่ ไป ในโครงสร้างนี้ cache เชื่อมต่อกับโปรเซสเซอร์ ผา่ นสาย data bus, address bus, control bus สาย data bus และ สาย address bus จะเชื่อมต่อเข้ากับบัฟเฟอร์ ซึ่ งเชื่อมต่อเข้ากับสายบัสหลักของระบบที่นาไปสู่ หน่วยความจาหลัก 22 ลักษณะพื้นฐานของหน่วยความจา Cache START (a) การอ่ านข้ อมูลจากหน่ วยความจา cache Receive address RA from CPU Is block containing RA in cache? No Access main memory for block containing RA Yes Fetch RA word and deliver To CPU Allocate cache line for main memory block Load main memory block into cache line Deliver RA word to CPU DONE 23 ลักษณะพื้นฐานของหน่วยความจา Cache Address Control Processor Control Cache System bus Address buffer Data buffer Data โครงสร้ างหน่ วยความจา cache โดยทัว่ ไป 24 ลักษณะพื้นฐานของหน่วยความจา Cache เมื่อสามารถค้นพบข้อมูลที่ตอ้ งการใน cache (cache hits) บัฟเฟอร์ สาหรับข้อมูลและตาแหน่งข้อมูลจะถูกสั่งไม่ให้ทางาน(disable) และการสื่ อสาร จะเกิดขึ้นระหว่างโปรเซสเซอร์ กบั cache โดยไม่มีการใช้บสั หลักด้วย แต่ถา้ ไม่สามารถหาข้อมูลใน cache ได้(cache miss) ตาแหน่งข้อมูลที่ ต้องการจะถูกส่ งเข้าไปในบัสหลัก ข้อมูลในหน่วยความจาหลักจะถูกส่ งมาที่บฟั เฟอร์ และจากบัฟเฟอร์ ส่งไปยังโปรเซสเซอร์ และส่ งเข้าไปเก็บไว้ใน cache ในบางโครงสร้าง cache จะถูกวางคัน่ กลางไว้ระหว่างโปรเซสเซอร์ และ หน่วยความจาหลัก ซึ่ งจะวางทับ data bus, address bus, control bus ไว้ท้ งั หมด ดังนั้นเมื่อเกิดกรณี cache miss ข้อมูลจากหน่วยความจา หลักจะถูกส่ งมาที่ cache ก่อน แล้วจึงถูกส่ งต่อไปยังโปรเซสเซอร์ ในลาดับหลัง 25 องค์ประกอบในการออกแบบ Cache ต้องมีขนาดเล็กเพียงพอที่จะทาให้ราคาเฉลี่ยต่อบิตนั้นใกล้เคียงกับราคาของ หน่วยความจาหลัก และต้องมีขนาดใหญ่เพียงพอ เพื่อให้ค่าเฉลี่ยของเวลาในการเข้าถึงข้อมูลใกล้เคียง กับระยะเวลาในการเข้าถึงข้อมูลของ cache ขนาดที่ใหญ่ข้ ึนของ cache จะไปเพิม่ จานวนของ gates ที่เกี่ยวข้องกับการ ค้นหาตาแหน่งข้อมูลใน cache ผลที่เกิดขึ้นทาให้ cache มีขนาดใหญ่ข้ ึน ซึ่ งจะทาให้ cache ทางานได้ชา้ ลง เนื้อที่บนแผงวงจรก็เป็ นส่ วนหนึ่ งที่บงั คับขนาดของ cache ให้มีขนาดที่จากัด ขนาดของ cache บนคอมพิวเตอร์ ชนิดต่าง ๆ จึงต้องสัมพันธ์กบั การใช้งานกับ โปรเซสเซอร์ ชนิดต่าง ๆ ด้วย 26 ขนาดของ cache ในโปรเซสเซอร์ชนิดต่าง ๆ Processor Type Year L1 cache L2 cache L3 cache IBM 360/85 Mainframe 1968 16 to 32 KB N N PDP-11/70 Minicomputer 1975 1 KB N N VAX 11/780 Minicomputer 1978 16 KB N N IBM 3033 Mainframe 1978 64 KB N N IBM 3090 Mainframe 1985 128 to 256 KB N N Intel 80486 PC 1989 8 KB N N Pentium PC 1993 8 KB 256 to 512 KB N PowerPC G4 PC/Server 1999 32 KB 256 KB to 1 MB 2 MB Itanium PC/Server 2001 16 KB 96 KB 4 MB 27 องค์ประกอบในการออกแบบ Cache Cache Size Mapping Function Direct Associative Set associative Replacement Algorithm Least recently used (LRU) First in first out (FIFO) Least frequently used (LFU) Random Write Policy Write through Write back Line Size Number of caches Single or two level Unified or split 28 Mapping Function เนื่องจาก cache มีช่องสัญญาณน้อยกว่าจานวนบล็อกในหน่วยความจา จึง จาเป็ นต้องมีอลั กอริ ทึม สาหรับการกาหนดตาแหน่งหน่วยความจาของแต่ละบล็อก ไปยังช่องสัญญาณใน cache เรี ยกว่า Mapping นอกจากนี้ ยงั ต้องมีวธิ ี การสาหรับการตรวจสอบว่าบล็อกใดที่ยงั คงถูกเก็บไว้ใน ช่องสัญญาณ cache วิธีการกาหนดตาแหน่งหน่วยความจาไว้ในช่องสัญญาณ cache หรื อ Mapping จะเป็ นสิ่ งที่บอกให้ทราบถึงวิธีการวางโครงสร้างภายใน cache ซึ่ งนิยมใช้สามวิธีคือ Direct mapping Associative mapping Set associative mapping 29 Mapping Function เพื่อเป็ นการเปรี ยบเทียบการทางานของโครงสร้างทั้งสามแบบจึงกาหนด ตัวอย่าง ดังนี้ ขนาดของ cache เป็ น 64 Kbytes การถ่ายเทข้อมูลระหว่างหน่วยความจาหลักกับ cache กระทาครั้งละหนึ่ ง บล็อก ซึ่ งมีขนาด 4 bytes หมายความว่า จานวนช่องสัญญาณใน cache นั้นเท่ากับ 16K ช่อง (16K x 4 = 64 Kbytes) หน่วยความจาหลักมีขนาด 16 Mbytes ซึ่ งใช้วธิ ี การกาหนดตาแหน่งข้อมูล โดยใช้เลขฐานสองขนาด 24 บิต (224 = 16M) ดังนั้นเพื่อการกาหนด ตาแหน่งบล็อกข้อมูลไปยัง cache จึงถือว่าหน่วยความจาหลักมีขนาด 16M บล็อก บล็อกละ 4 bytes 30 Direct Mapping การจัดโครงสร้างภายใน cache แบบที่ง่ายที่สุดเป็ นแบบ Direct mapping ซึ่ งจะกาหนดตาแหน่งของแต่ละบล็อกไว้ที่ตาแหน่งช่องสัญญาณ cache ที่เดิมเสมอ ไม่มีการเปลี่ยนแปลง รู ป direct mapping แสดงกลไก การทางานทัว่ ไป ซึ่ งสามารถอธิ บายด้วยรู ปแบบฟังก์ชนั ทางคณิ ตศาสตร์ ดังนี้ i = j modulo m เมื่อ i คือ หมายเลขช่องสัญญาณ cache j คือ หมายเลขบล็อก m คือ จานวนช่องสัญญาณของ cache 31 Direct Mapping s+w Cache Memory address Tag Tag s-r Line r Data W0 Word W1 W2 L0 w s-r Compare Main memory X (Hit in cache) W3 . . . . . . . . Li w B0 X s w W4j W(4j + 1) W(4j + 2) Bj W(4j + 3) . . . . . . . . Lm-1 (Miss in cache) โครงสร้างหน่วยความจา cache แบบ direct-mapping 32 Direct Mapping การคานวณให้พิจารณาว่า ตาแหน่งของข้อมูลในหน่วยความจาประกอบขึ้นด้วย 3 ส่ วน บิตด้านขวามือสุ ด (เริ่ มจากบิตที่มีค่าน้อยสุ ด) จานวน w บิต ใช้ในการการ อ้างอิง word แต่ละ word ที่อยูภ่ ายในบล็อกหนึ่ง ที่เหลืออีกจานวน s บิต หมายถึงตาแหน่งหรื อหมายเลขของบล็อกจากจานวน ทั้งหมด 2s บล็อก หน่วยความจา cache จะแบ่งข้อมูล s บิตนี้ออกเป็ น สองส่ วน คือ เป็ นบิตที่ใช้บอกหมายเลขช่องสัญญาณ cache จานวน r บิต (แสดงว่ามีจานวนช่องสัญญาณทั้งสิ้ น 2r ช่อง) และที่เหลืออีก s - r บิต ใช้เป็ น tag หรื อป้ ายบอกตาแหน่งการใช้งานของบล็อกนั้น (อยูใ่ น cache หรื อไม่) ดังนั้น 33 Direct Mapping ความยาวของหมายเลขที่อยู่ = (s + w) บิต ปริ มาณหน่วยความจาที่สามารถอ้างอิงได้ท้ งั หมด = 2s+w words หรื อ bytes จานวนบล็อกทั้งหมด = 2w words หรื อ bytes 2s w s จานวนบล็อกในหน่วยความจาหลัก = บล็ อก 2 w 2 จานวนช่องสัญญาณ cache = 2r = m ช่อง ขนาดของป้ ายบอกตาแหน่ง = (s – r) บิต 34 Direct Mapping ผลของการกาหนดความสัมพันธ์ของตาแหน่งข้อมูลในหน่วยความจาหลักกับช่องสัญญาณ cache เป็ นดังนี้ หมายเลขช่ องสั ญญาณ Cache หมายเลขบล็อกในหน่ วยความจาหลัก 0 0, m, 2m, …, 2s - m 1 1, m +1, 2m +1, …, 2s – m + 1 . . m-1 m – 1, 2m -1, 3m – 1, …, 2s - 1 การนาตัวเลขบางส่ วนของหมายเลขที่อยูม่ าใช้เป็ นหมายเลขช่องสัญญาณ cache ทาให้ เกิดการแปลงตาแหน่งแต่ละบล็อกในหน่วยความจาหลักมายัง cache เป็ นค่าเฉพาะที่ไม่ ซ้ ากัน เมื่อมีการอ่านข้อมูลจากบล็อกในหน่วยความจาหลักมาไว้ที่ cache ตามตาแหน่ง ที่กาหนด ก็จะต้องเปลี่ยนค่าของป้ ายบอกตาแหน่งของข้อมูลให้สอดคล้องกันด้วย เพื่อจะได้ สามารถแยกความแตกต่างออกจากบล็อกที่ยงั ไม่เกิดการอ่านได้ ข้อมูล s-r บิตแรกจะถูก นามาใช้เป็ นป้ ายบอกตาแหน่งข้อมูลนี้ 35 Line + word Tag 0000 0004 Direct Mapping Data 13579246 ตัวอย่างโครงสร้างหน่วยความจา cache แบบ direct-mapping 00 FFF8 FFFC . . . Tag Data Line number 00 16 13579246 11235813 0000 0001 339C F E D C B A 9 8 16 FEDCBA98 0CE7 FFFC 1 2 3 4 5 6 7 8 FF 16 11223344 12345678 3FFF 3FFF 0000 0004 16 77777777 11235813 . . . 8 Bits 32 Bits 0000 0004 FF FFF8 1 1 2 2 3 3 4 4 FFFC 2 4 6 8 2 4 6 8 Tag Main memory address = 8 Line 14 Word 2 32 Bits 16-Mbyte main memory 36 Direct Mapping รู ปด้านบนแสดงตัวอย่างการใช้วธิ ี direct mapping ซึ่งกาหนดให้ m = 16K = 214 และ i = j mod 214 การแปลงที่อยูจ่ ะได้ผลลัพธ์ดงั นี้ หมายเลขช่ องสั ญญาณ cache หมายเลขทีอ่ ยู่เริ่มต้ นของบล็อก 0 000000, 010000, …, FF0000 1 000004, 010004, …, FF0004 ……………… ………………… 214 - 1 00FFFC, 01FFFC, …, FFFFFC สังเกตว่า จะไม่มีบล็อกใด ๆ ที่ถูกแปลงที่อยูเ่ ป็ นหมายเลขช่องสัญญาณ cache เดียวกัน แล้วมีหมายเลขป้ ายบอกตาแหน่งเหมือนกันเลย เช่น บล็อกที่เริ่ มต้นด้วยหมายเลขที่อยู่ 000000, 010000, …, FF0000 จะมีค่าของป้ ายเลขบอกตาแหน่งเป็ น 00, 01, …, FF ตามลาดับ 37 Direct Mapping สังเกตว่าจะไม่มีบล็อกใด ๆ ที่ถกู แปลงที่อยูเ่ ป็ นหมายเลขช่องสัญญาณ cache เดียวกัน แล้วมีหมายเลขบอกตาแหน่งป้ ายเหมือนกันเลย เช่น บล็อกที่เริ่ มต้นด้วย หมายเลขที่อยู่ 000000, 010000, …, FF0000 จะมีค่าของป้ ายบอก ตาแหน่งเป็ น 00, 01, …, FF ตามลาดับ กระบวนการอ่านข้อมูลจากหน่วยความจาหลักทางาน ดังนี้ ข้อมูลตาแหน่งที่อยูข่ นาด 24 บิต ถูกส่ งมาที่ระบบหน่วยความจา cache ข้อมูล ช่องสัญญาณ cache ขนาด 14 บิต (line number) ถูกนาไปใช้ในการ ค้นหาตาแหน่งช่องสัญญาณ cache ต่อไป ข้อมูลป้ ายบอกตาแหน่ง 8 บิตแรก (tag) จะถูกนาไปเปรี ยบเทียบกับหมายเลขของ ป้ ายบอกตาแหน่งที่เก็บอยูใ่ นตาแหน่งช่องสัญญาณ cache ที่พบนั้น ซึ่งถ้าตรงกันก็ แสดงว่าข้อมูลบล็อกที่ตอ้ งการนั้นอยูใ่ น cache จึงนาข้อมูลสองบิตสุ ดท้าย (word) มาใช้เลือกข้อมูล (หนึ่งใน 4 ไบท์) ในบล็อกนั้น 38 Direct Mapping แต่ถา้ ข้อมูลป้ ายบอกตาแหน่งมีค่าไม่เท่ากัน แสดงว่าข้อมูลในบล็อกนั้น ยังไม่ถูกคัดลอก สาเนาจากหน่วยความจาหลักมาเก็บไว้ใน cache ก็จะนาข้อมูลป้ ายบอกตาแหน่ง รวมทั้งข้อมูลช่องสัญญาณ cache จานวน 22 บิตมารวมกัน กลายเป็ นตาแหน่ง บล็อกข้อมูลในหน่วยความจาหลัก แล้วคัดลอกสาเนามาเก็บไว้ใน cache หมายเลขที่อยูจ่ ริ ง ๆ ในหน่วยความจาหลักนั้นมาจากข้อมูล 22 บิต และต่อท้ายด้วย 00 ทาให้กลายเป็ นหมายเลขที่อยูเ่ ริ่ มต้นของข้อมูลในแต่บล็อกขนาด 24 บิต ที่เก็บอยู่ ในหน่วยความจาหลัก ข้อดีของ Direct mapping คือ เป็ นวิธีที่ง่ายสร้างขึ้นมาใช้งานโดยใช้ตน้ ทุนต่า ส่ วนข้อเสี ยคือ การเปลี่ยนตาแหน่งบล็อกข้อมูลจากหน่วยความจาหลักมาที่ cache นั้นเป็ นการกาหนดตาแหน่งคงที่ ดังนั้นถ้าในโปรแกรมเกิดมีการอ้างอิงถึงข้อมูลจากสอง บล็อกหรื อมากกว่า ข้อมูลทั้งสองบล็อกนั้นจะต้องสลับเปลี่ยนกันถูกคัดลอกเข้ามาไว้ใน cache ที่ตาแหน่งเดียวกันเสมอ ทั้ง ๆ ที่ cache ส่ วนอื่นอาจไม่มีขอ้ มูลอยูเ่ ลยก็ได้ ปรากฏการณ์แบบนี้เรี ยกว่า “trashing” 39 Associative Mapping วิธีน้ ีแก้ปัญหาของ Direct mapping โดยการยินยอมให้หน่วยความจาแต่ละ บล็อก สามารถูกอ่านเข้ามาใน cache ช่องใดก็ได้ ในกรณี น้ ี การแปลงตาแหน่งที่อยูจ่ ะแบ่งออกเป็ นเพียงสองส่ วนคือ ป้ ายบอกตาแหน่ง (tag) และ ตาแหน่งของ word ป้ ายบอกตาแหน่งใช้ในการบอกหมายเลขบล็อกของหน่วยความจาหลัก การตรวจสอบ ว่าบล็อกนั้นอยูใ่ น cache หรื อไม่ ยังคงใช้วธิ ี เดิม คือ การเปรี ยบเทียบค่าของป้ าย บอกตาแหน่งที่มากับข้อมูล กับค่าของป้ ายบอกตาแหน่งที่เก็บอยูใ่ น cache รู ป ด้านล่างแสดงการทางานของ Associative mapping สังเกตว่าไม่มีส่วนใด ของตาแหน่งที่อยูข่ อ้ มูลเป็ นส่ วนที่บอกตาแหน่งใน cache (line number) ดังนั้นจึงไม่มีการตรวจสอบหมายเลขช่องสัญญาณใน cache 40 Associative Mapping s+w Cache Memory address Tag Tag s Main memory Data W0 Word W1 W2 L0 w W3 . . . . ... Compare X . . . . Li X w s w (Hit in cache) B0 W4j W(4j + 1) W(4j + 2) Bj W(4j + 3) . . . . . . . . s Lm-1 (Miss in cache) โครงสร้างหน่วยความจา cache แบบ fully associative 41 Associative Mapping ค่าต่าง ๆ ในรู ปแสดงได้ดงั นี้ ความยาวของหมายเลขตาแหน่ งที่อยู่ (address length) = (s+w) บิต s+w จานวน word (หรื อ byte) ในหน่ วยความจาหลัก = 2 words w words (หรื อ byte) ขนาดของบล็อก = 2 sw 2 s จานวนบล็อกในหน่ วยความจาหลัก = 2 w 2 จานวนช่องสัญญาณใน cache = ไม่มีการกาหนดตายตัว ขนาดของป้ ายบอกตาแหน่ง = s บิต 42 Associative Mapping รู ปด้านล่างแสดงการใช้ Associative Mapping ที่อยูใ่ นหน่วยความจาหลัก (memory address) ประกอบขึ้นจาก ป้ ายบอกตาแหน่งขนาด 22 บิต และ เลขบอกตาแหน่งไบต์ขนาด 2 บิต รวมเป็ น 24 บิต ป้ ายบอกตาแหน่งทั้ง 22 บิต (เริ่ มจากบิตซ้ายสุ ด) จะต้องใช้ในการเก็บข้อมูลบล็อกละ 32 บิต สาหรับแต่ละ ช่องสัญญาณใน cache เช่น Memory address Tag(leftmost 22 bits) 0001 0110 0011 0011 1001 1100 (binary 24 bits) 1 6 3 3 9 C (hexadecimal) 00 0 0101 1000 1100 1110 0111 (binary 22 bits) 5 8 C E 7 (hexadecimal) นั่นคือทีอ่ ยู่ทอี่ ้ างอิงในหน่ วยความจาหลัก 16339C จะมีหมายเลข tag เป็ น 058CE7 ข้อเสี ย ของวิธีน้ ีคือ ความซับซ้อนที่เกิดขึ้นในระหว่างการตรวจสอบป้ ายบอกตาแหน่งข้อมูลใน cache 43 ที่จะต้องทาการตรวจสอบพร้อมกันทุกตาแหน่ง Associative Mapping Address Data 000000 000004 โครงสร้างหน่วยความจา cache แบบ associative 13579246 Tag Data Line number 3FFFFE 058CE7 11223344 FEDCBA98 0000 0001 3FFFFD 000000 3FFFFF 33333333 13579246 24682468 3FFD 3FFE 3FFF 163398 16339C F E D C B A 9 8 1633A0 22 bits FFFFF4 FFFFF8 FFFFFC 33333333 11223344 24682468 32 bits 16-Mbyte main memory 32 bits 16-Kword cache Main memory address = Tag Word 22 2 44 Set Associative Mapping เป็ นวิธีการผสมที่ได้นาข้อดีของทั้งแบบ direct และ associative มาใช้ ในขณะที่พยายามลดข้อด้อยให้มีผลกระทบน้อยลง ในกรณี น้ ี หน่วยความจา cache จะถูกแบ่งออกเป็ นเซ็ตจานวน v เซ็ต แต่ละเซ็ตประกอบด้วยช่องสัญญาณจานวน k ช่อง สรุ ปความสัมพันธ์ได้ ดังนี้ m=vxk i = j modulo v เมื่อ i = หมายเลขเซ็ตใน cache j = หมายเลขบล็อกในหน่วยความจาหลัก m = จานวนช่องสัญญาณใน chche 45 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 46 Set Associative Mapping s+w Cache Memory address Tag Tag Set s-d d Main memory Word Data B0 F0 B1 w F1 . . . . . . . Set 0 Fk-1 ... Compare Fk X s+w Bj X . . (Hit in cache) . . . . Fk+i . . F2k-1 Set 1 . . (Miss in cache) โครงสร้างหน่วยความจา cache แบบ k-way set associative 47 Set Associative Mapping แต่ k-way set associative จะมีขนาดของป้ ายบอกตาแหน่งที่เล็กกว่ามาก ซึ่ง จะทาการเปรี ยบเทียบช่องสัญญาณเพียง k ช่องในเซ็ตหนึ่ง ๆ เท่านั้น สรุ ปความสัมพันธ์ได้ ดังนี้ ความยาวของตาแหน่ งข้อมูล (address length) = s + w บิต s+w words หรื อ bytes ขนาดหน่ วยความจาทั้งหมด = 2 w words or bytes ขนาดของบล็อก = 2 sw 2 จานวนบล็อกในหน่ วยความจาหลัก = บล็อก s 2 w 2 จานวนช่องสัญญาณในแต่ละเซ็ต = k จานวนเซ็ต = 2d = v เซ็ต จานวนช่องสัญญาณทั้งหมดใน cache = kv = k x 2d ขนาดของป้ ายบอกตาแหน่ง = (s – d) บิต 48 Set Associative Mapping รู ปด้านล่างแสดงตัวอย่างการทางานของ set associative ที่แต่ละเซ็ต ประกอบด้วย 2 ช่องสัญญาณ(2-way set associative) หมายเลขเซ็ตขนาด 13 บิตใช้ระบุหมายเลขเซ็ต และหมายเลขบล็อกในหน่วยความจา หลัก ดังนั้นบล็อกหมายเลข 000000,008000, …, FF8000 ของ หน่วยความจาหลักจะถูกแปลงให้ไปอยูใ่ นเซ็ต 0 ใน cache แต่ละบล็อกสามารถถูกอ่านเข้าไปเก็บไว้ในช่องสัญญาณใดของเซ็ต 0 ก็ได้ แต่จะไม่ สามารถเก็บไว้ที่ช่องสัญญาณเดียวกันในเซ็ตเดียวกันได้ จากนั้นค่าของป้ ายบอกตาแหน่ง ที่ตาแหน่งข้อมูลที่ถกู อ้างอิงจะถูกนามาเปรี ยบเทียบกับ ค่าของป้ ายบอกตาแหน่งที่เก็บอยูใ่ น cache พร้อมกันทั้งสองช่องสัญญาณ เพื่อ ค้นหาบล็อกข้อมูลที่ตอ้ งการ 49 Set Associative Mapping Set + word Tag 0000 0004 Data ตัวอย่างโครงสร้างหน่วยความจา cache แบบ 2-way set associative 13579246 000 7FF8 7FFC . . . Data Line number 000 02C 13579246 11235813 0000 0001 339C F E D C B A 9 8 02C FEDCBA98 0CE7 7FFC 1 2 3 4 5 6 7 8 1FF 02C 11223344 12345678 1FFF 1FFF 0000 0004 02C 77777777 11235813 . . . 0000 0004 Tag 9 Bits 32 Bits Data Tag 02C 77777777 1FF 24682468 9 Bits 32 Bits 16-Kword cache 1FF 7FF8 1 1 2 2 3 3 4 4 7FFC 2 4 6 8 2 4 6 8 Tag 32 Bits 16-Mbyte main memory Main memory address = 9 Line 13 Word 2 50 Set Associative Mapping ในกรณี ที่ v=m และ k=1 จะทาให้วธิ ี น้ ีกลายเป็ น direct mapping และถ้า v=1 และ k=m ก็จะกลายเป็ นวิธี associative mapping การกาหนดให้แต่ละเซ็ตมีสองช่องสัญญาณ(v=m/2 และ k=2) เป็ นวิธีการที่ นิยมใช้กนั โดยทัว่ ไป ซึ่ งสามารถเพิ่มประสิ ทธิ ภาพของอัตราการค้นพบข้อมูลใน cache ได้ดีกว่าวิธี direct mapping และถ้าการกาหนดให้แต่ละเซ็ตมี สี่ ช่องสัญญาณ (v=m/4 และ k=4) ซึ่ งเรี ยกว่า 4-way set associative ก็จะเพิ่มประสิ ทธิ ภาพให้ดียงิ่ ขึ้นไปอีก โดยที่มีค่าใช้จ่ายเพิ่มขึ้น เพียงเล็กน้อย แต่ถา้ เพิ่มจานวนช่องสัญญาณต่อเซ็นให้สูงกว่านี้ แล้ว ประสิ ทธิภาพที่ได้รับจะ เพิม่ ขึ้นเพียงเล็กน้อยเท่านั้น ซึ่ งไม่คุม้ ค่ากับค่าใช้จ่ายที่เพิม่ สู งขึ้น 51 Replacement Algorithm เมื่อข้อมูลบล็อกใหม่ถกู อ่านขึ้นมาจากหน่วยความจา หนึ่งในบล็อกเดิมที่ถกู อ่าน เข้ามาไว้ใน cache จะต้องถูกแทนที่ดว้ ยบล็อกใหม่ สาหรับ direct mapping จะมีช่องสัญญาณเพียงช่องเดียวเท่านั้นที่จะเป็ น ที่อยูใ่ น cache สาหรับข้อมูลแต่ละบล็อก จึงไม่จาเป็ นต้องคิดหาวิธีการแทนที่ ใด ๆ สาหรับ associative และ set associative จะต้องนาวิธีการ สาหรับการแทนที่ (replacement) มาใช้งาน เพื่อตอบสนองความรวดเร็ ว ในการทางาน วิธีการดังกล่าวจะต้องถูกสร้างขึ้นด้วยฮาร์ ดแวร์ วิธีการที่นิยม นามาใช้กนั โดยทัว่ ไปมี 4 วิธี วิธีที่นิยมกันมากที่สุด คือ Least recently used; LRU 52 Replacement Algorithm LRU (Least recently used) : จะนาบล็อกใหม่มาแทนที่บล็อก เก่าที่ถกู เก็บไว้ใน cache เป็ นเวลานานที่สุด โดยที่มีการนาไปใช้งานน้อยที่สุด สาหรับ 2-way set associative สามารถสร้างขึ้นมาใช้งานได้ง่ายมาก แต่ละช่องสัญญาณในเซ็ตจะมีบิตพิเศษเรี ยกว่า USE บิต เมื่อมีการอ้างอิงถึง ช่องสัญญาณหนึ่งก็จะเปลี่ยนค่า USE ให้เป็ น “1” และ กาหนดให้ USE บิตของอีกช่องสัญญาณให้เป็ น “0” เมื่อต้องการนาข้อมูลบล็อกใหม่เข้ามาในเซ็ต นั้น ก็จะเลือกให้ช่องสัญญาณที่มีค่า USE เป็ น “0” ทั้งนี้แนวความคิดนี้ คาดว่า ข้อมูลที่ถกู อ้างอิงถึงในลาดับหลัง มีโอกาสที่จะถูกอ้างอิงมากกว่าข้อมูลที่ไม่ถกู อ้างอิงมาเป็ นเวลานานกว่า 53 Replacement Algorithm FIFO (First-in-First-out) : จะทดแทนบล็อกที่ถกู อ่านขึ้นมานาน มากที่สุด LFU (Lease frequently used) : จะทาการทดแทนบล็อกที่ถกู อ้างอิงเป็ นจานวนครั้งน้อยที่สุด การสร้างขึ้นมาใช้งานจาเป็ นจะต้องมีตวั นับการใช้ งานข้อมูลแต่ละช่องสัญญาณ เพื่อหาช่องสัญญาณที่มีการนามาใช้งานน้อยที่สุด Random : ทาโดยสุ่ มหมายเลขช่องสัญญาณขึ้นมาในแต่ละครั้งที่มีความ ต้องการเกิดขึ้น ผลจากการสร้างระบบจาลองทดสอบการทางานพบว่า วิธีสุ่มนี้มี ประสิ ทธิ ภาพด้อยกว่าวิธีการที่นาข้อมูลเกี่ยวกับกานใช้งานมาพิจารณา 54 Write Policy ก่อนที่บล็อกข้อมูลใน cache จะถูกแทนที่ดว้ ยข้อมูลบล็อกใหม่ จาเป็ นจะต้อง ตรวจสอบว่าข้อมูลในบล็อกนั้นถูกแก้ไขเปลี่ยนแปลงไปบ้างแล้วหรื อไม่ ถ้าไม่มีการแก้ไขเกิดขึ้นก็สามารถบันทึกข้อมูลบล็อกใหม่แทนทีไ่ ด้เลย แต่ถา้ มีการ แก้ไขข้อมูลจะต้องมีการบันทึกข้อมูล (write operation) เกิดขึ้นอย่าง น้อยหนึ่งครั้งกับข้อมูลนั้น ทาให้จะต้องมีการปรับปรุ งข้อมูลในหน่วยความจาหลัก ให้เหมือนกับข้อมูลใน cache ่ ลายวิธี ยกตัวอย่างเช่น Write policy มีอยูห Write through Write back 55 Write Policy Write through : เป็ นวิธีที่ง่ายที่สุดในการบันทึกข้อมูลลงหน่วยความจา ในทันที ทุกครั้งที่มีการบันทึกข้อมูลลงใน cache ก็จะถูกบังคับให้เกิดการบันทึก ลงในหน่วยความจาหลักในทันที เพื่อเป็ นการรับประกันว่า ข้อมูลทั้งที่อยูใ่ น หน่วยความจาหลักและที่อยูใ่ นทุกส่ วนของ cache นั้นมีค่าเท่ากับเสมอ ข้อเสี ย ของวิธีน้ ี คือ เป็ นวิธีที่ทาให้เกิดการส่ งข้อมูลผ่านบัส โดยเฉพาะส่ วนที่เชื่อมต่อกับ หน่วยความจาหลักเป็ นอย่างมาก ซึ่ งอาจทาให้เกิดเป็ นจุดปั ญหาคอขวดของระบบ ขึ้นมาได้ 56 Write Policy Write back : เป็ นการบันทึกข้อมูลในภายหลัง ซึ่ งช่วยลดจานวนครั้งในการ บันทึกข้อมูลลงหน่วยความจาหลักให้เหลือน้อยที่สุด วิธีน้ ีจะปล่อยให้มีการ ปรับปรุ งแก้ไขข้อมูลเกิดขึ้นใน cache เท่านั้น ซึ่ งจะไปกาหนดค่าของบิตพิเศษ เรี ยกว่า UPDATE บิต เมื่อมีการแก้ไขเกิดขึ้นจริ ง ถ้าข้อมูลในบล็อกนั้น จะต้องถูกแทนที่ดว้ ยข้อมูลบล็อกใหม่ ระบบก็จะตรวจสอบ UPDATE บิต และจะทาการบันทึกข้อมูลลงในหน่วยความจาหลัก ก็ต่อเมื่อบิตนี้มีค่าเปลี่ยนแปลง ไปจากเดิมเท่านั้น 57 Line Size ขนาดของบล็อกใน cache (line size) : เมื่อเกิดการอ่านข้อมูลมาจาก หน่วยความจาหลัก และใส่ เข้าไปใน cache นั้น นอกเหนือจาก word m ต้องการแล้วยังได้รับข้อมูลอื่นที่อยูต่ ิดกับ word นั้น ๆ มาด้วยอีกจานวนหนึ่ง ถ้าบล็อกมีขนาดใหญ่ข้ ึนอัตราการพบข้อมูลใน cache จะเพิม ่ ขึ้นเป็ นระยะเวลา หนึ่ง เนื่องจากกฎการอ้างอิงพื้นที่ใกล้เคียง (locality of reference) ซึ่ ง กล่าวว่าการอ้างอิงข้อมูลในครั้งต่อๆ ไปจะอ้างอิงข้อมูลเดิมหรื อข้อมูลที่อยูใ่ กล้เคียง กับที่เดิม ดังนั้นบล็อกที่มีขนาดใหญ่ข้ ึนจึงสามารถนาข้อมูลที่เป็ นประโยชน์เข้ามาสู่ cache ได้มากขึ้น อย่างไรก็ตามถ้าบล็อกมีขนาดใหญ่ข้ ึนเรื่ อย ๆ โอกาสที่จะพบข้อมูลที่ ต้องการใน cache จะลดลง ถ้าบล็อกมีขนาดใหญ่ข้ ึนไปอีก โอกาสที่จะใช้ขอ้ มูล ในบล็อกใหม่ที่พ่ งึ จะอ่านขึ้นมานั้น กลับน้อยกว่าโอกาสที่จะใช้ขอ้ มูลจากบล็อกเก่าที่ ถูกแทนที่ไปแล้ว ซึ่ งสรุ ปความสัมพันธ์ได้วา่ 58 Line Size บล็อกทีมีขนาดใหญ่จะลดจานวนบล็อกที่จะสามารถอ่านเข้ามาเก็บไว้ใน cache เนื่องจากบล็อกใหม่ที่อ่านเข้ามาจะถูกบันทึกแทนที่บล็อกข้อมูลเก่าที่มีอยูก่ ่อนหน้า ดังนั้นยิง่ มีจานวนบล็อกน้อยลงก็จะยิง่ ทาให้บล็อกเก่าถูกลบทิ้งเร็ วขึ้น ถ้าบล็อกมีขนาดใหญ่ข้ ึน ข้อมูลที่อ่านเข้ามาเพิ่มขึ้นนั้นจะยิง่ อยูใ่ นตาแหน่งที่ห่างไกล จากตาแหน่งข้อมูลที่กาลังถูกเรี ยกใช้งานมากยิง่ ขึ้น ซึ่งเป็ นการขัดต่อกฎการอ้างอิง พื้นที่ใกล้เคียง ดังนั้นจึงมีโอกาสที่จะถูกนามาใช้งาน้อยลง ความสัมพันธ์ระหว่างขนาดของบล็อก และอัตราการค้นพบข้อมูลที่ตอ้ งการใน cache (hit ratio) นั้นมีความซับซ้อนมาก ซึ่งขึ้นอยูก่ บั ลักษณะการทางาน ของแต่ละโปรแกรมเป็ นหลัก และไม่มีผใู้ ดสามารถให้นิยามของความพอดีได้ อย่างไรก็ตาม บล็อกขนาด 8 ถึง 32 bytes นั้นเป็ นค่าที่ดีสาหรับงานทัว่ ไป และบล็อกขนาด 64 ถึง 128 bytes นั้นเหมาะสมกับเครื่ องคอมพิวเตอร์ ความสามารถสูงสาหนับใช้ในงานวิจยั ขั้นสูง 59 Number of caches ในตอนที่ cache ถูกนามาใช้งานเป็ นครั้งแรก ระบบคอมพิวเตอร์ ทวั่ ไปจะมี cache เพียงระดับเดียว เมื่อไม่นานมานี้ cache หลายระดับได้รับความนิยม นามาใช้งานทัว่ ไป การออกแบบ cache หลายระดับมีมุมมองที่สาคัญสองด้านคือ จานวนระดับ ของ cache ที่นามาใช้ และการใช้ cache แบบรวมเป็ นหนึ่งเดียวหรื อแบบ แยกส่ วน 60 Number of caches Cache แบบหลายระดับ : เทคโนโลยีที่กา้ วหน้าขึ้น ทาให้สามารถใส่ cache เข้าไปเป็ นส่ วนหนึ่งของชิพโปรเซสเซอร์ ได้ ซึ่ งเรี ยกว่า on-chip cache เมื่อเปรี ยบเทียบกับ cache ภายนอกซึ่ งจะต้องติดต่อผ่านบัส onchip cache ช่วยลดงานของโปรเซสเซอร์ ในการใช้บสั ให้นอ้ ยลง จึงช่วย เพิม่ ความเร็ วในการประมวลผลของโปรเซสเซอร์ ในระบบที่มี on-chip cache นั้นไม่ได้บงั คับให้มีหรื อไม่มี cache ภายนอกใช้งาน แต่โดยทัว่ ไปโดยเฉพาะเครื่ องรุ่ นใหม่ ๆ มีการนา cache ทั้ง สองชนิดมาใช้งานร่ วมกัน และเรี ยกโครงสร้างประเภทนี้วา่ cache 2 ระดับ โดย cache ระดับที่ 1(L1) หมายถึง on-chip cache และระดับที่ 2(L2) หมายถึง cache ภายนอก 61 Number of caches เหตุผลที่ตอ้ งมี L2 cache เนื่องจากถ้าไม่มี L2 cache แล้วในทุกครั้งที่ โปรเซสเซอร์ ไม่สามารถหาข้อมูลได้ L1 cache ก็จะเกิดการอ้างอิงไปที่ หน่วยความจาหลัก ผ่านบัสหลักของระบบคอมพิวเตอร์ ซึ่ งโดยปกติจะทาให้เสี ย เวลานานมาก และทาให้ท้ งั ระบบมีประสิ ทธิ ภาพการทางานลดลง แต่ถา้ ทีการนา L2 cache มาใช้ขอ้ มูลส่ วนหนึ่งจะถูกพบที่นี่ ซึ่ งช่วยให้การเข้าถึงข้อมูลนั้น รวดเร็ วมากกว่าการเข้าถึงหน่วยความจาหลักโดยตรง 62 Number of caches Cache แบบ Unified : คือ cache ที่สามารถเก็บได้ท้ งั ข้อมูลและ คาสั่งปนกัน มีขอ้ ดีสองประการคือ สาหรับ cache จานวนหนึ่ง unified cache มีอตั ราการค้นพบข้อมูลที่ ต้องการมากกว่า split cache เนื่องจากสามารถรักษาสมดุลระหว่างการเรี ยกใช้ คาสัง่ และข้อมูลได้โดยอัตโนมัติ นัน่ คือถ้าการอ้างอิงมีแนวโน้มในการเรี ยกใช้คาสัง่ มากกว่าข้อมูล cache ก็จะถูกบันทึกไว้ดว้ ยคาสัง่ ในปริ มาณที่มากกว่าข้อมูล และ ในทางกลับกัน cache จะมีขอ้ มูลมากกว่าคาสัง่ ถ้าโปรแกรมที่กาลังทางานอยูน่ ้ นั อ้างอิงข้อมูลจานวนมากโดยใช้คาสัง่ ซ้ า ๆ การออกแบบและสร้างจะง่ายกว่าเพราะไม่ตอ้ งแยกชนิดของ cache 63 Number of caches Split cache : สาหรับเก็บข้อมูลและคาสัง่ แยกออกจากกัน มักใช้ในเครื่ อง คอมพิวเตอร์ประสิ ทธิภาพสูงประเภท superscalar machine เช่น Pentium และ PowerPC ซึ่ งเน้นการประมวลผลแบบขนาน และการดึง คาสัง่ ล่วงหน้า สาหรับคาสัง่ ที่คาดว่าจะถูกนามาประมวลผลในลาดับต่อไป ข้อดีประการหนึ่งของการใช้ split cache คือวิธีน้ ีช่วยกาจัดความคับคัง่ ของ cache ระหว่างหน่วยที่ดึง และแปลความหมายคาสัง่ (instruction prefetcher) และหน่วยที่ทาการประมวลผล(execution unit) ซึ่ ง เป็ นสิ่ งสาคัญมากในการออกแบบ pipeline 64