วันอาทิตย์ที่ 12 เมษายน พ.ศ. 2552

CACHE cont

Write policy
เมื่อเกิดการแทนที่ line บนแคช ข้อมูลบนไลน์นั้นจะอาจจะมีการอัพเดทข้อมูลลงบนไลน์ไปก่อนหน้านี้ ดังนั้นเมื่อจะลบไลน์นั้นออกจากแคชจะต้องอัพเดทข้อมูลนี้ไปที่ main memory ก่อน ซึ่งมีวิธีการเขียนข้อมูลสองแบบด้วยกันคือ 1. Write through และ 2. Write back
Write through
เมื่อมีกาเปลี่ยนแปลงของข้อมูลบนไลน์นั้น ส่วนที่เปลี่ยนจะเป็น word นะ มันจะเขียนลง main memory ทันที ดังนั้นอาจจะมีการเขียนไปที่ main memory จำนวนมากในเวลาใกล้เคียงกัน
Write back
เมื่อมีการเปลี่ยนแปลงจะเขียนลงบน cache ก่อน และเมื่อไลน์ถูกแทนที่จะเขียนลง main memory แต่ปัญหาก็คือเราไม่ทราบว่าไลน์ไหนจะถูกแทนที่ก่อนและข้อมูลระหว่างบนแคชและบนหน่วยความจำหลักนั้นแตกต่างกัน จึงมีการสร้างโปรโตคอลMESI เพื่อขจัดปัญหาดังกล่าว ซึ่งเป็นวงจรที่ซับซ้อน

Block/Line Sizes
-ขนาดของข้อมูลที่ควรจะส่งไปยังแคชที่ตำแหน่งอ้างอิงเดียวควรเป็นเท่าไหร่
-ความสัมพันธ์ที่ซับซ้อนระหว่าง block size และ hit ratio เหมือนๆ กับการปฎิบัติการของบัสของตัวมันเอง
-เมื่อขนาดของบล็อกใหญ่ขึ้น ก็จะเพิ่มพื้นที่การจัดเก็บทำให้มี hit ratio ที่สูงขึ้นด้วย จำนวนของไลน์บนแคชจะลดลงทำให้มีพื้นในการวางน้อยค่อนข้างจำกัดซึ่งไม่เป็นผลดี ในขณะเดียวกันกันตำแหน่งอ้างอิงบนแคชก็จะน้อยลง ทำให้ hit ratio ต่ำลง ซึ่งไม่เป็นผลดี ซึ่งปัจจุบันได้ออกแบบแคชให้มีจำนวนไลน์สองแบบคือ 4 line และ 8 line จะนิยมตั้งค่าแบบสองยกกำลัง
จากการทำงานของคอมพิวเตอร์ในยุคปัจจุบันจะสนับสนุน multitasking โดยจะมีหลายๆ โปรแกรมที่กำลังรันอยู่ ซึ่งก็หมายถึงจะมีหลายๆ โปรแกรมอยู่บนแคช

Number of Caches
Single vs. 2-level
ซีพียูในปัจจุบันจะมีแคชติดอยู่กับตัวมันเรียกว่า L1 cache เช่น cpu 80486 -8KB, Pentium – 16KB หรือ PowerPC – มากถึง 64 KB เนื่องจาก L1 cache จะมีความสามารถประสิทธิภาพสูงสุดในด้านความเร็ว ส่วน L2 chip cache จะถูกติดตั้งในลักษณะ แยกออกมาอยู่บน mother board มีขนาดใหญ่กว่า L1 แต่ความเร็วยังสูงกว่า main memory อยู่มากทีเดียว และขนาดเล็กกว่า ส่วนใหญ่จะอยู่ที่ <= 512KB Unified vs split cache Unified cache จะเก็บ data และ instruction ไว้บนแคชเพียงตัวเดียว ซึ่งมีความยืดหยุ่นในการจัดเก็บ data และ instruction บนแคชทำให้ได้ hit rate ที่สูงขึ้น แต่ปัจจุบันการทำงานของซีพียูไม่ได้เป็นแบบเดิมโดยในปัจจุบันจะทำงานแบบ pipe line หมายถึง การ fetch decode execute และ write back จะทำงานขนานกันไป ไม่มีการรอขั้นตอนใดขั้นตอนหนึ่งให้เสียเวลา เป็นการเพิ่มประสิทธิภาพการทำงานของคอมพิวเตอร์ และ Unified cache ไม่สามารถสนับสนุนการทำงานแบบนี้ได้ Split cache จะใช้การแยกแคชออกเป็นสองตัวคือ data cache และ instruction cache ทำให้แคชแยกกันทำงาน เพราะขั้นตอนการทำงานต่างๆ มีดังนี้ คือ fetch เป็นอ่าน data or instruction มาที่ซีพียูผ่านบัส โดยส่วนที่เป็นคำสั่งจะทำเพียงขั้นตอนนี้ไม่ได้ทำในขั้นตอนถัดไป แต่ส่วนที่ต้องเขียนออกไปคือ data จะเขียนกลับไปที่หน่วยความจำหลักผ่านdata bus ทำให้ลดภาวะแย่งกันทำงานของแคช MESI Cache Coherency Protocol เป็นโปรโตคอลที่ใช้แก้ไข cache coherency ในเพนเทียม และเพาเวอร์พีซี ซึ่ง MESI ประกอบด้วย M: Modified หมายถึง ข้อมูลที่ level สูงกว่ามีค่าต่างจาก level ที่ต่ำกว่า 1 level E: Exclusive หมายถึง ค่าข้อมูลของ level ที่สูงกว่ากับ level ที่ต่ำกว่า 1 level มีค่าเท่ากัน S: Shared หมายถึง I: Invalid อินเทลจะมีแนวคิดในการเขียนข้อมูลลงบนแคชในขั้นเริ่มต้นคือเขียนบน L1 และ L2 พร้อมๆกัน ซึ่งทำให้ทั้งสอง level มีสถานะเหมือนกัน แต่สถานะของ L1 จะเป็น exclusive และ L2 เป็น Modified แต่ครั้งถัดมานั้นซีพียูจะเขียนลงบนเฉพาะที่ L1 สถานะจะเปลี่ยนเป็น modified แทน

ไม่มีความคิดเห็น:

แสดงความคิดเห็น