ความหมายของ Memory Timing บนหน่วยความจำ

0
5518

SPD ในหน่วยความจำคืออะไร

SPD (Serial Presence Detect) เป็นคุณสมบัติอย่างหนึ่งซึ่งมีอยู่ในโมดูล DDR ทุกชนิด คุณสมบัติข้อนี้ใช้แก้ปัญหาเรื่องความคอมแพตทิเบิล และช่วยทำให้ไบออสปรับแต่งระบบเพื่อใช้ประโยชน์จากเมมโมรีได้อย่างเต็มที่ ได้โดยง่าย อุปกรณ์ SPD เป็นชิป EEPROM ติดตั้งอยู่บนเมมโมรีโมดูล โดยทำการจัดเก็บข้อมูลของโมดูล DIMM อาทิขนาด ความเร็ว ความกว้างข้อมูล โวลต์เตจและตัวแปรอื่นๆ ถ้าหากคุณปรับแต่งเมมโมรีเป็นแบบ SPD ไบออสจะทำการอ่านตัวแปรเหล่านี้ในช่วงรูทีน POST (บูตเครื่อง) จากนั้นก็จะทำการปรับแต่งค่าในไบออสให้สอดคล้องกับสเปคที่ผู้ผลิตกำหนดเอา ไว้

ถ้าหากไบออสไม่สามารถอ่านข้อมูล SPD ได้อย่างถูกต้อง เมนบอร์ด ไบออส และการตั้งค่าตัวแปรเป็น SPD หรือ Auto อาจจะส่งผลทำให้ไบออสกำหนดตัวแปรเป็น full-fast timings (เวลาที่ต่ำสุดเท่าที่เป็นไปได้) หรือ full-slow timings (เวลาที่สูงสุดเท่าที่เป็นไปได้) สถานการณ์แบบนี้เกิดขึ้นเมื่อโมดูลเมมโมรีบางอันไม่คอมแพตทิเบิลกัน ถ้าหากการอ่านข้อมูล SPD ไม่ถูกต้องแล้วไบออสไปใช้ memory timings เร็วกว่าโมดูลหรือระบบทั้งหมดจะทำให้บูตไม่ได้ก็มี ดังนั้นในกรณีนี้คุณควรลองเปลี่ยนโมดูลอันใหม่ แล้วกำหนดให้ไบออสยอมให้คุณตั้งค่าตัวแปรเอง จากนั้นคุณต้องกำหนดให้ timing เป็นค่าที่ปลอดภัยกว่า (สูงขึ้น) เพื่อช่วยให้การใช้เมมโมรีแบบผสมผสานใช้งานได้

การตรวจสอบค่า SPD

เราสามารถทำการตรวจสอบค่า SPD ได้อย่างง่ายดายโดยการใช้โปรแกรม CPU-Z ครับ

ความสำคัญของ Memory timings

แนวคิดทั่วไปเกี่ยวกับประสิทธิภาพของเมมโมรีก็คือ ความเร็วที่สูงกว่า (เป็น MHz) และความล่าช้าในการเข้าถึงข้อมูลที่ลดลง (latency) จะส่งผลทำให้มีแบนด์วิดท์ที่มากกว่า จะมีประสิทธิภาพที่ดีกว่า แต่สิ่งที่ผู้ใช้มักมองข้ามก็คือความล่าช้า (latency) ในขณะที่พยายามเพิ่มประสิทธิภาพของระบบ

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

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

ฟอร์แมตมาตรฐานสำหรับความล่าช้าของเมมโมรีใช้ตัวเลข 4 ชุดคั่นด้วยขีดจากซ้ายไปขวา อาทิ 2-2-2-6 (CAS-tRP-tRCD-tRAS) ตัวเลขเหล่านี้เป็นตัวแทนว่าความล่าช้าแต่ละแบบมีวงรอบสัญญาณนาฬิกามากน้อย ขนาดไหน แต่ไม่ได้เรียงลำดับของการเกิดตัวเลขชุดนี้ไบออสแต่ละชนิดจะแสดงตัวเลขชุด นี้แตกต่างกันได้ รวมทั้งอาจจะมีความล่าช้าแบบอื่นๆ เพิ่มเข้ามาด้วย

Timings แต่ละชนิดมีความหมายว่าอย่างไร

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

command rate ความล่าช้านี้ (เป็นวงรอบสัญญาณนาฬิกา) เป็นช่วงเวลาระหว่างการยืนยันการเลือกชิป (อาทิเช่นการเลือก RAM) และคำสั่ง (อาทิ Activate Row) ที่ส่งไปให้ RAM ค่าปกติก็คือ 1T (หนึ่งรอบสัญญาณนาฬิกา) และ 2T (สองรอบสัญญาณนาฬิกา)

CAS (Column Address Strobe หรือ Column Address Select) คือจำนวนวงรอบสัญญาณนาฬิกา (หรือ Ticks ซึ่งย่อเป็น T) ระหว่างการส่งคำสั่ง READ จนถึงเมื่อข้อมูลส่งมาถึงบัสข้อมูล เราอาจมองว่าเมมโมรีเป็นตารางตำแหน่งของเซลล์ และความล่าช้า CAS จะเกิดขึ้นทุกครั้งที่มีการเปลี่ยนแปลงคอลัมน์ ซึ่งเกิดขึ้นบ่อยกว่าการเปลี่ยนแถว

tRP (RAS Precharge Delay) เป็นความเร็วหรือช่วงเวลาที่ DRAM ใช้สำหรับการยกเลิกการติดต่อกับข้อมูลแถวหนึ่งแล้วไปเริ่มแถวใหม่ หรือพูดง่ายๆ ก็คือการเปลี่ยนเมมโมรีแบงก์นั่นเอง

tRCD (ความล่าช้าจาก RAS (Row Access Strobe) ถึง CAS) หมายถึงช่วงเวลาระหว่างการติดต่อกับ RAS และ CAS นั่นเอง อาทิเช่นความล่าช้าระหว่างการเรียกใช้เมมโมรีแบงก์ชุดหนึ่งไปจนถึงเมื่อมีคำ สั่งอ่านหรือเขียนส่งไปยังแบงก์นั้น คุณต้องนึกถึงสเปรดชีต Excel ที่มีตัวเลขอยู่ด้านบนและด้านซ้ายเอาไว้ โดยตัวเลขด้านซ้ายเป็นตัวแทนของ Rows และตัวเลขด้านบนเป็นตัวแทนของ Column ตัวอย่างเช่นเวลาที่คุณใช้เลื่อนตำแหน่งไปยัง Row 20 และย้ายไปถึง Column 20 ก็คือ RAS ไปถึง CAS นั่นเอง

tRAS (Active to precharge หรือ Active Precharge Delay) ใช้ควบคุมความล่าช้าระหว่างคำสั่งเริ่มทำงานและ precharge ซึ่งโดยพื้นฐานแล้วก็คือต้องใช้เวลามากน้อยขนาดไหนกว่าที่คำสั่งเริ่มต้นทำ งานจะเริ่มกันได้ใหม่อีกครั้งหนึ่ง เรื่องนี้มีผลกระทบต่อเวลาในการเริ่มต้นทำงานของแถวที่คุณต้องให้ความสำคัญ เมื่อเมมโมรีไปถึงคอลัมน์สุดท้ายของแถวใดแถวหนึ่ง หรือเมื่อมีการเรียกใช้ตำแหน่งเมมโมรีที่ต่างออกไปจากเดิมโดยสิ้นเชิง

tRC (Row Cycle และ tRFC (Row Refresh Cycle) -tRC เป็นช่วงเวลาต่ำสุดระหว่างคำสั่งใหม่ที่มาแทนของเก่าในแบงก์เดียวกัน

timings หรือความล่าช้านี้เกิดขึ้นเรียงลำดับเฉพาะ ถ้าหากมีการอ่านข้อมูลจากเมมโมรีแถวหนึ่งจะมีความล่าช้าเกิดขึ้นก่อนที่เรา จะเรียกใช้ข้อมูลในแถวนั้นได้ ความล่าช้านี้คือ tRCD (RAS to CAS) ถ้าหากแถวนั้นพร้อมที่จะทำงานแล้ว คำสั่งอ่านข้อมูลก็จะส่งออกไป และความล่าช้าก่อนที่จะเริ่มต้นข้อมูลจริงก็คือ CAS (Column Access Strobe) ถ้าหากอ่านข้อมูลเสร็จแล้ว ระบบต้องหยุดการทำงานของข้อมูลแถวนั้น ซึ่งทำให้มีความล่าช้าเกิดขึ้นเช่นกันในชื่อ tRP ก่อนที่ข้อมูลแถวใหม่จะเริ่มต้นทำงานได้ ตัวเลขสุดท้ายก็คือ tRAS ซึ่งเป็นตัวเลขต่ำสุดของความล่าช้า Active to Precharge ถ้าหากมีข้อมูลแถวใหม่พร้อมที่จะทำงานแล้ว เราไม่อาจยกเลิกการทำงานจนกว่าความล่าช้าของ tRAS จะจบเสียก่อน

จำเป็นต้องมีการปรับแต่งตัวแปรเหล่านี้หรือไม่

ถ้าหากคุณต้องการได้ประสิทธิภาพสูงสุดจากเมมโมรี คุณต้องเข้าไปปรับแต่งในไบออส ซึ่งโดยปกติแล้วจะมีการตั้งค่าตัวแปรของ Master Memory หรือถ้าหากเรียกให้ถูกต้องก็คือ Memory Timing หรือ Interface ซึ่งมีตัวเลือกให้คุณกำหนด timings ของเมมโมรีเป็น SPD หรือ Auto, Optimal ซึ่งเป็นการตั้งค่าตัวแปรเอาไว้แล้ว หรือ Aggressive (เทอร์โบ หรืออุลตรา) และท้ายสุดก็คือการตั้งค่าตัวแปรแบบ Expert หรือ Manual ซึ่งยอมให้คุณแก้ไข memory timing แต่ละชนิดในแบบที่คุณชอบได้

การปรับแต่ง memory timing จนออกมาอย่างสมบูรณ์แบบคุ้มค่ามากกว่าการตั้งค่าตัวแปรแบบอัตโนมัติหรือไม่? ถ้าหากคุณต้องการความเร็วที่ดีระดับพอประมาณ และคุณต้องการเสถียรภาพที่ดีที่สุดแล้ว คำตอบก็คือไม่ควร คุณควรเลือกตัวแปรและ SPD หรือ Auto จะดีกว่า ซึ่งโดยปกติแล้วคุณไม่มีทางเลือกถ้าหากต้องการทำโอเวอร์คล็อกหรือต้องการดึง ประสิทธิภาพจากระบบมากขึ้น

ถ้าต้องการปรับแต่งตัวแปรของ timings ต้องทำอะไรบ้าง?

ถ้าหากต้องการปรับแต่งความเร็วของเมมโมรี ขั้นแรกคุณจำเป็นต้องปิดขั้นตอนการปรับแต่ง RAM แบบอัตโนมัติ SPD หรือ Auto เสียก่อน ถ้าหากเปิดการทำงานของฟังก์ชันนี้ไว้ เมนบอร์ดจะอ่านข้อมูลจากชิป SPD (จะอธิบายในหัวข้อต่อไป) ในเมมโมรีโมดูลเพื่อดูข้อมูลเกี่ยวกับ timings และความเร็วสัญญาณนาฬิกา แล้วตั้งค่าตัวแปรให้เหมาะสมตามนั้น

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

กฎทั่วไปก็คือ ตัวเลขที่น้อยกว่า (หรือ timing) จะทำให้ประสิทธิภาพดีขึ้น เนื่องจากมันใช้วงรอบสัญญาณนาฬิกาน้อยลงเพื่อทำงานอย่างใดอย่างหนึ่งจนเสร็จ ดังนั้นมันจึงทำงานได้มากขึ้นภายในเวลา X ที่กำหนด คุณอาจถามว่าทำไมเราจึงไม่ใช้ 1 หรือ 0 สำหรับการตั้งเวลา timing เสียเลย JEDEC กำหนดว่าเทคโนโลยี DRAM ในปัจจุบันยังไม่อาจทำงานในสภาพดังกล่าวได้ คุณอาจจะปรับตัวเลขเป็น 1 ในการตั้ง timings บางแบบได้ขึ้นอยู่กับเมนบอร์ดแต่ละรุ่น แต่วิธีการนี้อาจทำให้เมมโมรีทำงานผิดพลาดหรือไม่มีเสถียรภาพได้ และแม้ว่าไม่มีปัญหานี้ก็ตาม แต่ก็ไม่ได้ทำให้ประสิทธิภาพดีขึ้นแต่อย่างใด

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

ข้อความต่อไปนี้ก็คือคำแนะนำสำหรับการปรับแต่งความเร็วเมมโมรี

ตัวเลขที่น้อยลง = ประสิทธิภาพที่ดีขึ้น แต่ทำให้ความสามารถในการทำโอเวอร์คล็อกลดลง และอาจทำให้เสถียรภาพลดลงด้วย

ตัวเลขที่สูงขึ้น = ประสิทธิภาพที่ลดลง แต่ความสามารถในการทำโอเวอร์คล็อกเพิ่มขึ้น และมีเสถียรภาพมากขึ้นในบางระดับ

tRCD และ tRP โดยปกติมีตัวเลขอยู่ระหว่าง 2 ถึง 4 ถ้าหากต้องการเพิ่มความสามารถในการทำโอเวอร์คล็อก ให้ลดตัวเลข tRCD ก่อน

CAS ไม่ใช่การกำหนด timings ที่มีความสำคัญสูงสุด ซึ่งต่างจากสิ่งที่พวกเราเคยเรียนรู้มา

โดยปกติแล้วความสำคัญของ CAS จะน้อยมากเมื่อเทียบกับ tRP และ tRCD การลดตัวเลขของ CAS มีผลน้อยมากเมื่อเทียบกับประสิทธิภาพของเมมโมรี ในขณะที่การลดตัวเลข tRP และ tRCD จะได้ประสิทธิภาพมากกว่า ถ้าหากคุณเลือกได้ คุณควรกำหนดเป็น 3-3-2.5 มากกว่าที่จะเป็น 4-4-2.0 (tRCD-tRP-CAS)

CAS น่าจะมีตัวเลขอยู่ระหว่าง 2.0 หรือ 2.5 พีซีส่วนมาก โดยเฉพาะอย่างยิ่ง nForce 2 ไม่สามารถบูตได้ถ้าหากกำหนดเป็น 3.0 หรือมีปัญหาเรื่องเสถียรภาพ

tRAS ไม่ควรมีตัวเลขต่ำกว่าผลรวมของ CAS และ tRCD (อ่านข้อความด้านล่าง)

tRC ไม่ควรต่ำกว่าผลรวมของ tRAS และ tRP ถ้าหากคุณกำหนดให้ tRAS = 11 และ tRP = 2 ดังนั้น tRC ควรเท่ากับ 13 ส่วน tRFC ควรเท่ากับ tRC+2

tRAS มีลักษณะเฉพาะตัว การลดตัวเลขนี้จะก่อให้เกิดปัญหาและประสิทธิภาพที่ลดลงได้

tRAS เป็นการตั้ง timing เพียงแบบเดียวที่ไม่ส่งผลกระทบต่อประสิทธิภาพจริง ถ้าหากเราปรับแต่งตัวแปรอย่างที่ควรจะเป็น แม้ว่าตัวเลข tRAS ที่ตั้งเอาไว้สูงๆ ในชิปเซต nForce 2 แสดงให้เห็นว่าผลการทดสอบประสิทธิภาพดีขึ้นก็ตาม แต่ประสิทธิภาพของการใช้งานจริงยังคงเหมือนเดิม แม้ว่าเราจะตั้งค่าตัวแปร tRAS เป็นแบบอื่น ตราบเท่าที่ tRAS เท่ากับผลรวมของ tRCD และ CAS การลดผลรวมนี้จะส่งผลกระทบที่เป็นลบต่อประสิทธิภาพของระบบ

ตัวอย่าง

ถ้าหากคุณใช้ tRCD = 2 และ CAS = 2 ใน RAM ของคุณ ดังนั้นคุณควรกำหนด tRAS =6 การตั้งค่าตัวเลขที่ต่ำกว่าอาจส่งผลเสียอย่างรุนแรงต่อความถูกต้องของข้อมูล อาทิข้อมูลหาย หรือข้อมูลเสียในฮาร์ดดิสก์เป็นต้น เนื่องจากวงรอบหรือขั้นตอนการทำงานควรจะเสร็จก่อนที่ช่วงเวลานี้จะหมดไป การตั้ง timings ของเมมโมรีส่งผลกระทบต่อฮาร์ดดิสก์ได้อย่างไร? ถ้าหากมีการชัตดาวน์หรือปิดโปรแกรมแล้ว ข้อมูลจริงซึ่งอยู่ใน RAM อาจเกิดเสียหายแล้วบันทึกลงไปฮาร์ดดิสก์ได้ ดังนั้นคุณจงไม่ควรลืมว่า ระบบปฏิบัติการต้องแปลงข้อมูลจริงที่อยู่ใน RAM ไปเป็นเวอร์ชวลเมมโมรีในฮาร์ดดิสก์อีกด้วย

สิ่งสำคัญก็คือการรับฟังความเห็นของผู้เชี่ยวชาญ แต่การทดสอบของคุณเองก็เป็นสิ่งที่มีค่าเช่นกัน เช่นคอมพิวเตอร์ของคุณสามารถทำงานอย่างมีเสถียรภาพโดยการกำหนด timings เป็น 2-2-2-5 และอาจจะมีประสิทธิภาพดีขึ้นเมื่อเทียบกับการตั้งตัวแปรในทางทฤษฎีที่เป็น 2-2-2-6 สิ่งสำคัญของการลองทำอะไรก็ตาม ก็คือจงมีใจที่เปิดกว้างเอาไว้ และจงอย่าเลิกความพยายามกลางคัน ถ้าหากคุณทดสอบอย่างหนักแล้ว คุณจะมองออกเองว่าการตั้งค่าตัวแปรแบบใดที่ดีกว่า



บทความก่อนหน้านี้ยกเลิกการแจ้งเตือน Disk Cleanup ในรีจิสตรี
บทความถัดไปทำไงดีล่ะ! โดนไมโครซอฟต์จับได้ว่าวินโดวส์ไม่ใช่ของแท้
varietypc
ส่วนตัวชื่นชอบการเขียน, พัฒนาซอร์สโค้ดเว็บไซต์เป็นชีวิตจิตใจ ตลอดจนถึงอัพเดตเนื้อหาทริค, เทคนิคคอมพิวเตอร์ และข่าวสารเทคโนโลยีทุกอย่าง นอกเหนือจากการเคลียร์งานหลักเสร็จเรียบร้อย ก็จะมาทิ้งชีวิตให้กับ VarietyPC.net กันต่อแทบทุกวัน แต่บางครั้งอาจจะไม่ได้อัพเดตเนื้อหา เพราะต้องพัฒนาระบบการจัดการ Backend หลังบ้านไปด้วยและมีคนทำเพียงคนเดียว แม้จะไม่ได้รับผลตอบแทนจากแหล่งใดๆก็ตาม ตอนนี้เว็บไซต์เล็กๆแห่งนี้ก็ใกล้ย่างเข้าปีที่ 13 แล้วครับ และจะยังคงอยู่แชร์ความรู้กับพี่น้อง เพื่อนๆคนไทย และทั่วโลกตลอดไปครับ

คุณคิดเห็นอย่างไรกับข่าว/บทความนี้

กรุณาใส่ความคิดเห็นของคุณ!
กรุณาใส่ชื่อของคุณที่นี่