กลับไปหน้าบทความ

อ่าน 3 นาที

ตัวควบคุมหน่วยความจำแฟลช

เปลี่ยนทางจากชื่ออื่น

ตัวควบคุมหน่วยความจำแฟลช (หรือตัวควบคุมแฟลช ) ทำหน้าที่จัดการข้อมูลที่จัดเก็บไว้ในหน่วยความจำแฟลช (โดยปกติคือ NAND flash )

ตัวควบคุมหน่วยความจำแฟลช

หน่วยความจำแฟลช Lexar USB 8 GB - ชิป Silicon Motion SM3253L - ตัวควบคุมแฟลชแบบช่องสัญญาณเดียว USB 2.0

ตัวควบคุมหน่วยความจำแฟลช (หรือตัวควบคุมแฟลช ) ทำหน้าที่จัดการข้อมูลที่จัดเก็บไว้ในหน่วยความจำแฟลช (โดยปกติคือ NAND flash ) และสื่อสารกับคอมพิวเตอร์หรืออุปกรณ์อิเล็กทรอนิกส์ตัวควบคุมหน่วยความจำแฟลชสามารถออกแบบมาเพื่อใช้งานใน สภาพแวดล้อม ที่มีรอบการทำงาน ต่ำ เช่นการ์ดหน่วยความจำหรือสื่อ อื่นๆ ที่คล้ายกัน สำหรับใช้ในPDAโทรศัพท์มือถือฯลฯแฟลชไดรฟ์ USBใช้ตัวควบคุมหน่วยความจำแฟลชที่ออกแบบมาเพื่อสื่อสารกับคอมพิวเตอร์ส่วนบุคคลผ่านพอร์ต USBที่มีรอบการทำงานต่ำ ตัวควบคุมแฟลชยังสามารถออกแบบมาเพื่อใช้งานในสภาพแวดล้อมที่มีรอบการทำงานสูงขึ้น เช่นไดรฟ์โซลิดสเตท (SSD) ที่ใช้เป็นที่เก็บข้อมูลสำหรับ ระบบคอมพิวเตอร์ แล็ปท็อปไปจนถึงอาร์เรย์จัดเก็บข้อมูล ระดับ องค์กรที่สำคัญ[ 1 ]

การตั้งค่าเริ่มต้น

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

การอ่าน การเขียน และการลบ

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

การปรับระดับการสึกหรอและการเลือกบล็อก

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

เลเยอร์การแปลแฟลช (FTL) และการแมป

โดยปกติแล้ว ตัวควบคุมหน่วยความจำแฟลชจะรวมถึง "เลเยอร์การแปลแฟลช" (FTL) ซึ่งเป็นเลเยอร์ที่อยู่ต่ำกว่าระบบไฟล์ ทำหน้าที่แมปที่อยู่บล็อกเชิงตรรกะ (LBA) ฝั่งโฮสต์หรือระบบไฟล์ไปยังที่อยู่ทางกายภาพของหน่วยความจำแฟลช (การแมปเชิงตรรกะไปยังทางกายภาพ) LBA หมายถึงหมายเลขเซกเตอร์และหน่วยการแมปขนาด 512 ไบต์ LBA ทั้งหมดที่แสดงขนาดเชิงตรรกะที่ระบบไฟล์มองเห็นและจัดการได้ จะถูกแมปไปยังตำแหน่งทางกายภาพ (รหัสบล็อก รหัสหน้า และรหัสเซกเตอร์) ของหน่วยความจำแฟลช ในส่วนของการปรับสมดุลการสึกหรอและอัลกอริธึมการจัดการแฟลชอื่นๆ (การจัดการบล็อกเสีย การจัดการการรบกวนการอ่าน การจัดการแฟลชอย่างปลอดภัย ฯลฯ) ตำแหน่งทางกายภาพของ LBA อาจเปลี่ยนแปลงบ่อยครั้ง หน่วยการแมปของ FTL สามารถแตกต่างกันได้ เพื่อให้ LBA ถูกแมปตามบล็อก หน้า หรือแม้แต่หน้าย่อย ขึ้นอยู่กับรูปแบบการใช้งาน ความละเอียดของการแมปที่ละเอียดขึ้นสามารถลดการสึกหรอของแฟลชได้อย่างมากและเพิ่มความทนทานของสื่อจัดเก็บข้อมูลแบบแฟลชให้สูงสุด[ 3 ] [ 4 ] [ 5 ]ฟังก์ชันการลบข้อมูลซ้ำซ้อนเพื่อกำจัดข้อมูลที่ซ้ำซ้อนและการเขียนซ้ำซ้อนก็ถูกเพิ่มเข้ามาใน FTL ด้วย[ 6 ]

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

FTL อาจมีสามประเภท ได้แก่ การแมปหน้า (page mapping), การแมปบล็อก (block mapping) และการแมปแบบผสม (hybrid mapping) การแมปหน้ามีประสิทธิภาพสูงกว่า แต่มีขนาดเมตาเดตา FTL ที่ใหญ่กว่าและต้นทุนสูงกว่า และมักใช้กับไดรฟ์โซลิดสเตท (SSD ) การแมปบล็อกมีขนาดเมตาเดตาที่เล็กกว่าและต้นทุนต่ำกว่า แต่มีประสิทธิภาพต่ำกว่า และมักใช้กับแฟลชไดรฟ์ USBในการใช้งาน FTL แบบแมปหน้า อัตราส่วนของขนาดเมตาเดตา FTL และความจุในการจัดเก็บมักเป็น 1:1000 ตัวอย่างเช่น อุปกรณ์จัดเก็บข้อมูลแฟลชขนาด 1TB อาจมีเมตาเดตา FTL ขนาด 1GB

โดยปกติ FTL จะถูกใช้งานโดยเฟิร์มแวร์ที่ทำงานบนตัวควบคุมหน่วยความจำแฟลชที่สร้างขึ้นในอุปกรณ์จัดเก็บข้อมูล (เช่น SSD เกือบทั้งหมด, eMMC, การ์ด SD, แฟลชไดรฟ์ USB เป็นต้น) อย่างไรก็ตาม บางระบบเชื่อมต่อโปรเซสเซอร์โฮสต์โดยตรงกับชิปแฟลชดิบโดยไม่มีตัวควบคุมหน่วยความจำแฟลชฮาร์ดแวร์ระดับกลาง และจัดการการจัดการบล็อกเสียและการปรับระดับการสึกหรอด้วยซอฟต์แวร์ที่ทำงานบนโปรเซสเซอร์โฮสต์แทน[ 7 ]

การเก็บขยะ

เมื่อเขียนข้อมูลลงในบล็อกทุกบล็อกของอุปกรณ์จัดเก็บข้อมูลแบบโซลิดสเตทครบหนึ่งครั้งแล้ว ตัวควบคุมแฟลชจะต้องกลับไปยังบล็อกเริ่มต้นบางส่วนที่ไม่มีข้อมูลปัจจุบันอีกต่อไป (เรียกอีกอย่างว่าบล็อกที่ล้าสมัย) ข้อมูลในบล็อกเหล่านี้ถูกแทนที่ด้วยบล็อกที่เขียนใหม่ และตอนนี้กำลังรอการลบเพื่อให้สามารถเขียนข้อมูลใหม่ลงไปได้ กระบวนการนี้เรียกว่าการเก็บขยะ (GC) SSD, การ์ด CF และอุปกรณ์จัดเก็บข้อมูลแฟลชอื่นๆ ทั้งหมดจะมีการเก็บขยะในระดับหนึ่ง ความเร็วที่ตัวควบคุมแฟลชจะดำเนินการนี้อาจแตกต่างกันไป[ 8 ]

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Flash_memory_controller&oldid=1322050714 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ตัวควบคุมหน่วยความจำแฟลช

ตัวควบคุมหน่วยความจำแฟลช (หรือตัวควบคุมแฟลช ) ทำหน้าที่จัดการข้อมูลที่จัดเก็บไว้ในหน่วยความจำแฟลช (โดยปกติคือ NAND flash )

การตั้งค่าเริ่มต้น

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

การอ่าน การเขียน และการลบ

เมื่อระบบหรืออุปกรณ์ต้องการอ่านข้อมูลจากหรือเขียนข้อมูลไปยังหน่วยความจำแฟลช มันจะสื่อสารกับตัวควบคุมหน่วยความจำแฟลช อุปกรณ์ที่เรียบง่ายกว่า เช่น การ์ด SD และแฟลชไดรฟ์ USB มักจะมีชิปหน่วยความจำแฟลชจำนวนน้อยที่เชื่อมต่อพร้อมกัน...

การปรับระดับการสึกหรอและการเลือกบล็อก

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