วันศุกร์ที่ 26 มีนาคม พ.ศ. 2553

หน่วยความจำแคชสำหรับดิสก์



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

ดิสก์แคช
1. เมื่อคุณโหลดโปรแกรมจัดการดิสก์แคชลงในหน่วยความจำ มันจะฝังตัวลงหน่วยความจำ จากนั้นก็จะจองพื้นที่หน่วยความจำแยกต่างหากไว้ส่วนหนึ่งสำหรับทำดิสก์แคช พื้นที่หน่วยความจำที่จองไว้นี้อาจจะเป็นพื้นที่หน่วยความจำธรรมดา (conventional) หน่วยความจำชนิดสลับขยาย (expanded memory) หรือเป็นหน่วยคำจำเกินพันไบต์แรก (expanded memory) ก็ได้โดยโปรแกรมบางตัวจะมีการจองพื้นที่ให้มากที่สุดเท่าที่จะมากได้ และจะคืนพื้นที่หน่วยความจำบางส่วน เวลาที่โปรแกรมอื่นต้องการใช้หน่วยความจำบ้าง ขณะที่บางโปรแกรมจะจองหน่วยความจำขนาดตายตัวไม่เปลี่ยนแปลง
2. เมื่อซอฟต์แวร์ของคุณสั่งให้ซีพียู (CPU) อ่านข้อมูลจากฮาร์ดดิสก์ โปรแกรมจัดการหน่วยความจำแคช ซึ่งได้ฝังตัวอยู่ในความจำเรียบร้อยแล้ว จะดักรับรู้คำสั่งดังกล่าวไว้ด้วย
3. โปรแกรมแคชอ่านข้อมูลที่ซีพียูต้องการจากดิสก์ บวกเพิ่มกับข้อมูลอื่นๆ ที่รอบข้างข้อมูลดังกล่าวเก็บลงหน่วยความจำที่จองไว้แล้ว จากนั้นส่งข้อมูลดังกล่าวให้ซีพียูไป
4. ระหว่างที่ซีพียูว่างงาน โปรแกรมแคชจะทำหน้าที่เก็บข้อมูลอื่น ของไฟล์ดังกล่าวที่อยู่ในคลัสเตอร์รอบข้าง หรือคนละคลัสเตอร์ เก็บลงหน่วยความจำที่จองไว้จนมากพอ สำหรับการค้นหาคลัสเตอร์ของไฟล์ที่อยู่แยกกันไม่ต่อกันเป็นแถวนั้น โปรแกรมแคชจะถูกโปรแกรมให้ชาญฉลาดพอที่จะค้นหาได้เอง ความสามารถในด้านนี้จึงมักจะเป็นตัววัดว่าโปรแกรมแคชตัวไหนดีกว่ากัน
5. เมื่อโปรแกรมต้องการข้อมูลจากไฟล์เดิมเพิ่มเติม โปรแกรมแคชจะดักรับรู้คำสั่งอ่านข้อมูลนั้นไว้ จากนั้นจะสำรวจว่าข้อมูลดังกล่าวได้อยู่ในแรมที่จองไว้แล้วหรือยัง ถ้ามีก็ทำการส่งข้อมูลจากแรมไปที่ซีพียูโดยตรง ไม่ผ่านการอ่านดิสก์เหมือนเดิมอีก ทำให้เวลาในการเรียกค้นข้อมูลเร็วขึ้น (เวลาในการอ่านจากดิสก์โดยตรงจะกินเวลาทำงานมากกว่าการอ่านจากแรมหลายสิบเท่า) สำหรับกรณีไม่มีข้อมูลที่ต้องการในแรม โปรแกรมแคชจะก๊อบปี้ข้อมูลในดิสก์ลงแรมที่จองไว้ก่อน จากนั้นจึงค่อยส่งข้อมูลดังกล่าวไปให้ซีพียู ซึ่งขั้นตอนจะเหมือนข้อ 3 และ 4 เช่นนี้ตลอดเวลา
6. เมื่อซอฟต์แวร์คุณสั่งให้เซฟหรือเก็บไฟล์ลงดิสก์ โปรแกรมแคชบางตัวจะรับคำสั่งดังหล่าวแล้วเริ่มทำงานเวลาที่ซีพียูว่าง ลักษณะนี้จะทำให้ความเร็วในการทำงานของคอมพิวเตอร์ดีขึ้น เพราะซีพียูไม่ต้องแบ่งเวลาในช่วงเดียวกันเพื่อทำการประมวลผลและเขียนดิสก์ไปพร้อมๆ กัน
7. การเขียนแก้ไฟล์จะกระทำที่แรมก่อน จากนั้นโปรแกรมแคชจะสำรวจว่าข้อมูลที่เขียนแก้ไขใหม่นั้นเป็นเฉพาะบางคลัสเตอร์หรือไม่ ถ้าใช่ มันก็จะก๊อบปี้เฉพาะคลัสเตอร์ที่มีการเปลี่ยนแปลงกลับลงดิสก์เท่านั้น ทั้งนี้เพื่อลดเวลาการเคลื่อนที่ของหัวอ่านดิสก์ให้มากที่สุด ซึ่งประหยัดเวลาการทำงานของคอมพิวเตอร์โดยรวมไปได้มาก

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

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