ตัวแปร หลัก ที่ใช้ในการออกแบบ ระบบ หน่วยความจำ ของคอมพิวเตอร์


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

ความรู้ทั่วไปเกี่ยวกับหน่วยความจำในคอมพิวเตอร์

1. คุณลักษณะทั่วไปของหน่วยความจำ

   1.1 ตำแหน่งที่ตั้งของหน่วยความจำ 

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

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

หน่วยความจำภายนอก หมายถึง หน่วยความจำสำรอง ซึ่งจัดเก็บแยกจากวงจรหลัก การจัดเก็บข้อมูลเหล่านี้จะถูกควบคุมโดยหน่วยควบคุมไอโอ

 1.2 ความจุ

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

             1.3 หน่วยของการขนย้ายข้อมูล

หน่วยการขนย้ายข้อมูลหรือรับส่งข้อมูล หน่วยความจำหลักจะหมายถึงจำนวนบิตที่มีการอ่าน/เขียนข้อมูลแต่ละครั้ง จะเท่ากับจำนวนของเส้นทางข้อมูลที่เข้าออกจากหน่วยความจำหลัก ซึ่งโดยปกติจะมีขนาดเท่ากับเวิร์ด ดังนั้นการขนย้ายข้อมูลจึงมีหน่วยเป็น เวิร์ด ส่วนหน่วยความจำภายนอกมีการรับส่งข้อมูลครั้งละจำนวนมากหลายๆคำเรียกว่า บล็อก

            1.4 วิธีการเข้าถึงข้อมูล

การเข้าถึงหน่วยข้อมูลในหน่วยความจำมีหลายวิธี โดยการเข้าถึงจะเข้าทีละ ระเบียบ จะไม่มีการกระโดดข้ามระเบียบก่อนหน้านั้นไป เวลาที่ใช้ในการเข้าถึงมีค่าไม่แน่นอน แปรผันตามขนาดและจำนวนระเบียบข้อมูลที่อยู่ก่อนหน้านั้น

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

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

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

            1.5 ประสิทธิภาพ

ผู้ใช้มักมองหน่วยความจำในเชิงราคาและประสิทธิภาพมากกว่าอย่างอื่น การพิจารณาประสิทธิภาพของหน่วยความจำ มักจะพิจารณาจากปัจจัยต่อไปนี้

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

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

เวลาส่งถ่ายข้อมูลหรือเป็นเวลาการรับ-ส่ง ข้อมูล เป็นเวลาในเชิงของอัตราส่วนที่ข้อมูลถูกนำออกมา – นำเข้าไปบันทึกในหน่วยความจำจนเสร็จสิ้น กรณีการเข้าถึงแบบสุ่มเวลาส่วนนี้เท่ากับ 1 วัฏจักร

          1.6 ชนิดของหน่วยความจำในเชิงกายภาพ หากจัดแบ่งโดยสังเขปก็จะได้แก่ประเภทของสารกึ่งตัวนำ หน่วยความจำประเภทนี้ใช้สารกึ่งตัวนำมาใช้เป็นเทคโนโลยีในการบันทึกข้อมูล สำหรับการผลิตใช้เทคโนโลยีการผลิดวงจรแบบ LSI และเทคโนโลยีVLSI ประเภทใช้แม่เหล็ก หน่วยความจำประเภทนี้ใช้

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

            1.7 คุณลักษณะเชิงกายภาพ

หน่วยความจำจัดแบ่งตามคุณลักษณะทางกายภาพได้ดังนี้

หน่วยความจำชั่วคราว หากขาดกระแสไฟฟ้ามาหล่อเลี้ยง ข้อมูลจะถูกลบเลือนไปไม่สามารถจดจำข้อมูลได้

หน่วยความจำถาวร สามารถจัดเก็บรักษาข้อมูลไว้ได้เป็นระยะเวลานานๆมาก

นอกจากนี้ยังแบ่งหน่วยความจำเป็นแบบ หน่วยความจำแบบลบได้ สามารถเขียนบันทึกลงไปได้หลายๆครั้ง และหน่วยความจำแบบลบไม่ได้ เมื่อบันทึกลงไปแล้วสามารถอ่านขึ้นมาได้เพียงอย่างเดียวเท่านั้น เรียกหน่วยความจำประเภทนี้ว่า รอม

2. ลำดับชั้นของหน่วยความจำ


(ก) เป็นการแยกลำดับชั้นออกเป็นสองระดับคือ หน่วยความจำหลักและรอง

(ข),(ค) แยกลำดับชั้นออกเป็น 3และ 4 ระดับ ตามลำดับ

ขนาดความจุของหน่วยความจำ โดยแบ่งเป็นกลุ่ม

ตามปกติแล้วระบบจะให้หน่วยความจำที่มีความเร็วสูงไว้ข้างบน ใกล้ ๆ กับ CPU ซึ่งขนาดของหน่วยความจำนี้ไม่จำเป็นต้องใหญ่มากนัก แต่จะมีความเร็วในการ access หรือการเข้าถึงสูง เพราะใช้อัตราความเร็วในการ access หรือใช้ clock rate เดียวกับ CPU  เมื่อมีการเรียกใช้คำสั่งหรือที่เรียกว่าworking setชุดหนึ่ง เราจะเอากลุ่มคำสั่งเหล่านี้ไปไว้ในหน่วยความจำที่มีความเร็วสูงที่อยู่ติดกับ CPUรวมทั้งเอาหน่วยความจำตำแหน่งที่ใกล้ ๆ กับตำแหน่งของ working set ในหน่วยความจำไปเก็บไว้ในหน่วยความจำที่มีความเร็วสูงนี้ด้วย โดยอาศัยหลักการของ Locality of Reference คือโปรแกรมต่าง ๆ ไม่ว่าจะเขียนด้วยภาษาอะไรก็ตาม จะมีคุณสมบัติที่ว่าเมื่อมีการเรียกใช้คำสั่งใดในโปรแกรมแล้วการเรียกใช้ซ้ำอีกครั้งหนึ่งนั้นจะเกิดขึ้นอีกเสมอ  ดังนั้นเมื่อมีการเรียกใช้คำสั่งนั้นซ้ำอีกครั้งก็จะสามารถหาคำสั่งนี้ได้จากหน่วยความจำที่มีความเร็วสูงนี้เอง โดยไม่ต้องไปหาที่หน่วยความจำหลักหรือ RAM ซึ่งมีการเข้าถึงที่ช้ากว่า หน่วยความจำที่มีขนาดเล็ก อยู่ใกล้กับ CPU และมีความเร็วในการเข้าถึงสูงนี้ เรารู้จักกันในชื่อของ Cache ซึ่งCache ที่อยู่ติดกับตัว CPU เราจะเรียกว่าเป็น Cache Level1 หรือ L1  ส่วน Cacheที่อยู่นอก CPU จะเรียกว่าCache Level2 หรือ L2

หน่วยความจำแบบสารกึ่งตัวนำ

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

การจำแนกประเภทหน่วยความจำแบบสารกึ่งตัวนำ

หน่วยความจำหลัก (RAM) แรม

RAM ย่อมาจาก (Random Access Memory) เป็นหน่วยความจำหลักที่จำเป็น หน่วยความจำ ชนิดนี้จะสามารถเก็บข้อมูลได้ เฉพาะเวลาที่มีกระแสไฟฟ้าหล่อเลี้ยงเท่านั้นเมื่อใดก็ตามที่ไม่มีกระแสไฟฟ้า มาเลี้ยง ข้อมูลที่อยู่ภายในหน่วยความจำชนิดจะหายไปทันที หน่วยความจำแรม ทำหน้าที่เก็บชุดคำสั่งและข้อมูลที่ระบบคอมพิวเตอร์กำลังทำงานอยู่ด้วย ไม่ว่าจะเป็นการนำเข้าข้อมูล (Input) หรือ การนำออกข้อมูล (Output) โดยที่เนื้อที่ของหน่วยความจำหลักแบบแรมนี้ถูกแบ่งออกเป็น 4 ส่วน คือ

     1. Input Storage Area ป็นส่วนที่เก็บข้อมูลนำเข้าที่ได้รับมาจากหน่วยรับข้อมูลเข้าโดย ข้อมูลนี้จะถูกนำไปใช้ในการประมวลผลต่อไป

     2. Working Storage Area เป็นส่วนที่เก็บข้อมูลที่อยู่ในระหว่างการประมวลผล

     3. Output Storage Area เป็นส่วนที่เก็บผลลัพธ์ที่ได้จากการประมวลผล ตามความต้องการของผู้ใช้ เพื่อรอที่จะถูกส่งไปแสดงออก ยังหน่วยแสดงผลอื่นที่ผู้ใช้ต้องการ

     4. Program Storage Area เป็นส่วนที่ใช้เก็บชุดคำสั่ง หรือโปรแกรมที่ผู้ใช้ต้องการจะส่งเข้ามา เพื่อใช้คอมพิวเตอร์ปฏิบัติตามคำสั่ง ชุดดังกล่าว หน่วยควบคุมจะทำหน้าที่ดึงคำสั่งจากส่วน นี้ไปที่ละคำสั่งเพื่อทำการแปลความหมาย ว่าคำสั่งนั้นสั่งให้ทำอะไร จากนั้นหน่วยควบคุม จะไปควบคุมฮาร์ดแวร์ที่ต้องการทำงานดังกล่าวให้ทำงานตามคำสั่งนั้นๆ

ชนิดและความแตกต่างของ RAM

Dynamic Random Access Memory (DRAM)

     DRAM จะทำการเก็บข้อมูลในตัวเก็บประจุ (Capacitors) ซึ่งจำเป็นต้องมีการ refresh เพื่อ เก็บข้อมูล ให้คงอยู่โดยการ refresh นี้ทำให้เกิดการหน่วงเวลาขึ้นในการเข้าถึงข้อมูล และก็เนื่องจากที่มันต้อง refresh ตัวเองอยู่ตลอดเวลานี้เองจึงเป็นเหตุให้ได้ชื่อว่า Dynamic RAM

Static Random Access Memory (SRAM)

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

Fast Page Mode DRAM (FPM DRAM)

     FPM นั้น ก็เหมือนกับ DRAM เพียงแต่ว่า มันลดช่วงการหน่วงเวลาขณะเข้าถึงข้อมูลลง ทำให้ มันมีความเร็วในการเข้าถึงข้อมูล สูงกว่า DRAM ปกติ ซึ่งโดยที่สัญญาณนาฬิกาในการเข้าถึงข้อมูล จะเป็น 6-3-3-3 (Latency เริ่มต้นที่ 3 clock พร้อมด้วย 3 clock สำหรับการเข้าถึง page) และสำหรับ ระบบแบบ 32 bitจะมีอัตราการส่งถ่ายข้อมูลสูงสุด 100 MB ต่อวินาที ส่วนระบบแบ 64 bit จะมีอัตรา การส่งถ่ายข้อมูลที่ 200 MB ต่อวินาที เช่นกัน ปัจจุบันนี้ RAM ชนิดนี้แทบจะหมดไปจากตลาดแล้วแต่ ยังคงมีให้เห็นบ้าง และมักมีราคา ที่ค่อนข้างแพงเมื่อเทียบกับ RAM รุ่นใหม่ ๆ เนื่องจากที่ว่าปริมาณใน ท้องตลาดมีน้อยมาก ทั้ง ๆ ที่ยังมีคนต้องการใช้แรมชนิดนี้อยู่

Extended-Data Output (EDO) DRAM

     หรือเรียกอีกชื่อหนึ่งก็คือ Hyper-Page Mode DRAM ซึ่งพัฒนาขึ้นอีกระดับหนึ่ง โดยการที่มันจะอ้างอิง ตำแหน่งที่อ่านข้อมูล จากครั้งก่อนไว้ด้วย ปกติแล้วการดึงข้อมูลจาก RAM ณ ตำแหน่งใด ๆ มักจะดึงข้อมูล ณ ตำแหน่งที่อยู่ใกล้ ๆ จากการดึงก่อนหน้านี้ เพราะฉะนั้น ถ้ามีการอ้างอิง ตำแหน่งเก่าไว้ก่อน ก็จะทำให้ เสียเวลาในการเข้าถึงตำแหน่งน้อยลง และอีกทั้งมันยังลดช่วงเวลาของ CAS latency ลงด้วย และด้วย ความสามารถนี้ ทำให้การเข้าถึงข้อมูลดีขึ้นกว่าเดิมกว่า 40% เลยทีเดียว และมีความสามารถโดยรวมสูงกว่า FPMกว่า 15% EDO จะทำงานได้ดีที่ 66 MHzด้วย timing 5-2-2-2 และก็ยังทำงานได้ดีเช่นกัน แม้จะใช้งานที่ 83 MHz ด้วย Timing นี้และหากว่า chip EDO นี้ มีความเร็วที่สูงมากพอ (มากว่า 50ns) มันจะ สามารถใช้งานได้ ณ 100 MHz ที่ Taming 6-3-3-3 ได้อย่างสบาย อัตราการส่งถ่ายข้อมูลสูงสุด ของ DRAM ชนิดนี้อยู่ที่264 MB ต่อวินาที EDO RAM ในปัจจุบันนี้ไม่เป็นที่นิยมใช้แล้ว

Burst EDO (BEDO) DRAM

     BEDO ได้เพิ่มความสามารถขึ้นมาจาก EDO เดิม คือ Burst Mode โดยหลังจากที่มันได้ address ที่ ต้องการ address แรกแล้วมันก็จะทำการ generate อีก 3 address ขึ้นทันที ภายใน 1 สัญญาณนาฬิกา ดังนั้น จึงตัดช่วงเวลาในการรับ address ต่อไป เพราะฉะนั้น Timing ของมันจึงเป็น 5-1-1-1  66 MHz BEDO ไม่เป็นที่แพร่หลาย และได้รับความนิยมเพียงระยะเวลาสั้น ๆ เนื่องจากว่าทาง Intel ตัดสินใจใช้ SDRAM แทนEDO และไม่ได้ใช้ BEDO เป็นส่วนประกอบในการพัฒนา chipset ของตน ทำให้บริษัทผู้ผลิต ต่าง ๆ หันมาพัฒนา SDRAM แทน

Synchronous DRAM (SDRAM) SDRAM

     จะต่างจาก DRAM เดิมตรงที่มันจะทำงานสอดคล้องกับสัญญาณนาฬิกา สำหรับ DRAM เดิมจะ ทราบตำแหน่งที่อ่าน ก็ต่อเมื่อเกิดทั้ง RAS และCAS ขึ้น แล้วจึงทำการไปอ่านข้อมูลโดยมีช่วงเวลาในการ เข้าถึงข้อมูล ตามที่เรามักจะได้เห็นบนตัว chip ของตัว RAM เลย เช่น -50, -60, -80 โดย -50 หมายถึง ช่วงเวลาเข้าถึง ใช้เวลา 50 นาโนวินาทีเป็นต้น แต่ว่า SDRAM จะใช้สัญญาณนาฬิกาเป็นตัวกำหนดการ ทำงานโดยจะใช้ความถี่ของสัญญาณเป็นตัวระบุ SDRAM จะทำงานตามสัญญาณนาฬิกาขาขึ้นเพื่อรอรับ ตำแหน่งข้อมูลที่ต้องการให้มันอ่าน แล้วจากนั้นมันก็จะไปค้นหาให้ และให้ผลลัพธ์ออกมาหลังจากได้รับ ตำแหน่งแล้ว เท่ากับค่าของ CAS เช่น CAS 2 ก็คือ หลังจากรับตำแหน่งที่อ่านแล้วมันจะให้ผลลัพธ์ออกมา ภายใน 2 ลูกของสัญญาณนาฬิกา SDRAM จะมี Timing เป็น 5-1-1-1 ซึ่งแน่ มันเร็วพอ ๆ กันกับ BEDO RAM เลยที่เดียว แต่ว่ามันสามารถทำงานได้ ณ 100 MHz หรือมากว่า และมีอัตราการส่งถ่าย ข้อมูลสูงสุดที่ 528 MBต่อวินาที 

DDR SDRAM (หรือ SDRAM II)

     DDR RAM นี้แยกออกมาจาก SDRAM โดยจุดที่ต่างกันหลัก ๆ ของทั้งสองชนิดนี้คือ DDR SDRAM นี้สามารถที่จะใช้งานได้ทั้งขาขึ้น และขาลง ของสัญญาณนาฬิกาเพื่อส่งถ่ายข้อมูล นั่นก็ทำให้อัตราส่งถ่าย เพิ่มขึ้นได้ถึงเท่าตัว ซึ่งมีอัตราการส่งถ่ายข้อมูลสูสุดถึง 1 G ต่อวินาทีเลยทีเดียว

Rambus DRAM (RDRAM)

     ชื่อของ RAMBUS เป็นเครื่องหมายการค้าของบริษัท RAMBUS Inc. ซึ่งตั้งมาตั้งแต่ยุค 80 แล้ว เพราะฉะนั้นชื่อนี้ ก็ไม่ได้เป็นชื่อที่ ใหม่อะไรนัก โดยปัจจุบันได้เอาหลักการของ RAMBUS มาพัฒนาใหม่ โดยการลด pin รวม static buffer และทำการปรับแต่งทาง interface ใหม่ DRAM ชนิดนี้ จะสามารถ ทำงานได้ทั้งขอบขาขึ้น และลงของสัญญาณนาฬิกา และเพียงช่องสัญญาณเดียว ของหน่วยความจำ แบบ RAMBUSนี้ มี Performance มากกว่าเป็น 3 เท่า จาก SDRAM 100 MHz แล้ว และเพียงแค่ช่อง สัญญาณเดียวนี้ก็มีอัตราการส่งถ่ายข้องมูลสูงถึง 1.6 G ต่อวินาที ถึงแม้ว่าเวลาในการเข้าถึงข้อมูลแบบ สุ่มของ RAM ชนิดนี้จะช้า แต่การเข้าถึงข้อมูลแบบต่อเนื่องจะเร็วมาก ๆ ซึ่งกาว่า RDRAM นี้มีการพัฒนา Interface และมี PCB (Printed Circuit Board) ที่ดี ๆ แล้วละก็รวมถึง Controller ของ Interface ให้ สามารถใช้งานได้ถึง 2 ช่องสัญญาณแล้วมันจะมีอัตราการส่งถ่ายข้อมูลเพิ่มเป็น 3.2 G ต่อวินาที และหากว่าสามารถใช้ได้ถึง 4 ช่องสัญญาณก็จะสามารถเพิ่มไปถึง 6.4 G ต่อวินาที

Synchronous Graphic RAM (SGRAM)

     SGRAM นี้ก็แยกออกมาจาก SDRAM เช่นกันโดยมันถูกปรับแต่งมาสำหรับงานด้าน Graphics เป็นพิเศษแต่โดยโครงสร้างของ Hardware แล้ว แทบไม่มีอะไรต่างจาก SDRAM เลย เราจะเห็นจากบางGraphic Card ที่เป็นรุ่นเดียวกัน แต่ใช้ SDRAM ก็มี SGRAM ก็มี เช่น Matrix G200 แต่จุดที่ต่างกัน ก็คือ ฟังก์ชัน ที่ใช้โดย Page Register ซึ่ง SG สามารถทำการเขียนข้อมูลได้หลาย ๆ ตำแหน่ง ในสัญญาณนาฬิกาเดียว ในจุดนี้ทำให้ความเร็วในการแสดงผล และ Clear Screen ทำได้เร็วมาก และยังสามารถ เขียนแค่ บางbit ในการ word ได้ (คือไม่ต้องเขียนข้อมูลใหม่ทั้งหมดเขียนเพียงข้อมูลที่เปลี่ยนแปลง เท่านั้น) โดยใช้bitmask ในการเลือก bit ที่จะเขียนใหม่สำหรับงานโดยปกติแล้ว SGRAM แทบจะไม่ ให้ผลที่ต่างจากSDRAM เลย มันเหมาะกับงานด้าน Graphics มากกว่า เพราะความสามารถที่ แสดงผลเร็วและ Clear Screen ได้เร็วมันจึงเหมาะกับใช้บน Graphics Card มากกว่า ที่จะใช้บน System

Video RAM (VRAM)

     VRAM ชื่อก็บอกแล้วว่าทำงานเกี่ยวกับ Video เพราะมันถูกออกแบบมาใช้บน Display Card โดยVRAM นี้ก็มีพื้นฐานมาจาก DRAM เช่นกัน แต่ที่ทำให้มันต่างกันก็ด้วยกลไกการทำงานบางอย่าง ที่เพิ่มเข้ามา โดยที่ VRAM นั้น จะมี serial port พิเศษเพิ่มขึ้นมาอีก 1หรือ 2 port ทำให้เรามองว่ามันเป็น RAM แบบ พอร์ทคู่ (Dual-Port) หรือ ไตรพอร์ท (Triple-Port) Parallel Port ซึ่งเป็น Standard Interface ของมัน จะถูกใช้ในการติดต่อกับ Host Processor เพื่อสั่งการให้ ทำการ refresh ภาพขึ้นมาใหม่ และ Serial Port ที่เพิ่มขึ้นมา จะใช้ในการส่งข้อมูลภาพออกสู่ Display

Windows RAM (WRAM)

     WRAM นี้ ดู ๆ ไปแล้วเหมือนกับว่า ถูกพัฒนาโดย Matrix เพราะแทบจะเป็นผู้เดียวที่ใช้ RAM ชนิดนี้ บน Graphics Card ของตน (card ตระกูล Millennium และ Millennium II แต่ไม่รวม Millennium G200 ซึ่งเป็น ซึ่งใช้ SGRAM ) แต่ในปัจจุบันก็เห็นมีของ Number 9 ที่ใช้ WRAM เช่นกัน ในรุ่น Number 9 Revolution IV ที่ใช้ WRAM 8M บน Card WRAM นี้โดยรวมแล้วก็เหมือน ๆ กับ VRAM จะต่างกันก็ตรงที่ มันรองรับ Bandwidth ที่สูงกว่า อีกทั้งยังใช้ระบบ Double-Buffer อีกด้วย จึงทำให้มันเร็วกว่า VRAM อีกมากทีเดียว

DRAM

คือ เมโมรี่แบบธรรมดาที่สุด ซึ่งความเร็วขึ้นอยู่กับค่า Access Time หรือเวลาที่ใช้ในการเอาข้อมูลในตำแหน่งที่เราต้องการออกมาให้ มีค่าอยู่ในระดับนาโนวินาที (ns) ยิ่งน้อยยิ่งดี เช่น ชนิด 60 นาโนวินาที เร็วกว่าชนิด 70 นาโนวินาที เป็นต้น รูปร่างของ DRAM เป็น SIMM 8 บิต (Single-in-line Memory Modules) มี 30 ขา DRAM ย่อมาจาก Dynamic Random Access Memory

Fast Page DRAM

ปกติแล้วข้อมูลใน DRAM จึงถูกเก็บเป็นชุด ๆ แต่ละชุดเรียกว่า Page ถ้าเป็นFast Page DRAM จะเข้าถึงข้อมูลได้เร็วกว่าปกติสองเท่าถ้าข้อมูลที่เข้าถึงครั้งที่แล้ว เป็นข้อมูลที่อยู่ใน Page เดียวกัน Fast Page DRAM เป็นเมโมรี่ SIMM 32 บิตมี 72ขา (Pentium มีดาต้าบัสกว้าง 64 บิตดังนั้นจึงต้องใส่ SIMM ทีละสองแถวเสมอ)

EDO RAM

EDO Ram นำข้อมูลขึ้นมาเก็บไว้ใน Buffer ด้วย เพื่อว่า ถ้าการขอข้อมูลครั้งต่อไป เป็นข้อมูลในไบต์ถัดไป จะให้เราได้ทันที EDO RAM จึงเร็วกว่า Fast Page DRAM ประมาณ 10 % ทั้งที่มี Access Time เท่ากัน เพราะโอกาสที่เราจะเอาข้อมูลติด ๆกัน มีค่อนข้างสูง EDO มีทั้งแบบ SIMM 32 บิตมี 72 ขา และDIMM 64 บิตมี 144 ขา คำว่า EDO ย่อมาจาก Extended Data Out

SDRAM

เป็นเมโมรี่แบบใหม่ที่เร็วกว่า EDO ประมาณ 25 % เพราะสามารถเรียกข้อมูลที่ต้องการขึ้นมาได้ทันที โดยที่ไม่ต้องรอให้เวลาผ่านไปเท่ากับ Access Timeก่อน หรือเรียกได้ว่า ไม่มี Wait State นั่นเอง ความเร็วของ SDRAM จึงไม่ดูที่Access Time อีกต่อไป แต่ดูจากสัญญาณนาฬิกาที่ โปรเซสเซอร์ติดต่อกับRam เช่น 66, 100 หรือ 133 MHz เป็นต้น SDRAM เป็นแบบ DIMM 64 บิต มี168 ขา เวลาซื้อต้องดูด้วยว่า MHz ตรงกับเครื่องที่เราใช้หรือไม่ SDRAM ย่อมาจาก Synchronous DRAM เพราะทำงาน "sync" กับสัญญาณนาฬิกาบนเมนบอร์ด

SDRAM II (DDR)

DDR (Double Data Rate) SDRAM มีขา 184 ขา มีอัตราการส่งข้อมูลเป็น 2เท่าของความเร็ว FSB ของตัว RAM คือ มี 2 ทิศทางในการรับส่งข้อมูล และมีความเร็วมากกว่า SDRAM เช่น ความเร็ว 133 MHz คูณ 2 Pipeline เท่ากับ 266 MHz

RDRAM

RDRAM หรือที่นิยมเรียกว่า RAMBUS มีขา 184 ขา ทำมาเพื่อให้ใช้กับPentium4 โดยเฉพาะ(เคยใช้กับ PentiumIII และ Chipset i820 ของ Intel แต่ไม่ประสบผลสำเร็จเนื่องจากมีปัญหาเรื่องระบบไฟจึงยกเลิกไป) มีอัตราการส่งข้อมูลเป็น 4 เท่าของความเร็ว FSB ของตัว RAM คือ มี 4 ทิศทางในการรับส่งข้อมูล เช่น RAM มีความเร็ว BUS = 100 MHz คูณกับ 4 pipeline จะเท่ากับ400 MHz เป็นเมโมรี่แบบใหม่ที่มีความเร็วสูงมาก คิดค้นโดยบริษัท Rambus, Inc. จึงเรียกว่า Rambus DRAM หรือ RDRAM อาศัยช่องทางที่แคบ แต่มีแบนด์วิทด์สูงในการส่งข้อมูลไปยังโปรเซสเซอร์ ทำให้ความเร็วในการทำงานสูงกว่า SDRAM เป็นสิบเท่า RDRAM เป็นทางเลือกทางเดียวสำหรับเมนบอร์ดที่เร็วระดับหลายร้อย MHz มีแรมอีกชนิดหนึ่งที่ออกมาแข่งกับ RDRAM มีชื่อว่าSyncline DRAM ที่เพิ่มความเร็วของ SDRAM ด้วยการเพิ่มจำนวน bank เป็น16 banks แทนที่จะเป็นแค่ 4 banks

หน่วยความจำรอม

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

        1. เอ็มรอม (MROM) เป็นหน่วยความจำรอมชนิดโปรแกรมได้เพียงครั้งเดียว จึงไม่สามารถโปรแกรมโดยผู้ใช้งานได้ มักจะโปรแกรมมาจากบริษัทผู้ผลิต โครงสร้างของเอ็มรอมแสดงในรูปที่ 12.3 เป็นตัวอย่างของไบโพลาร์เอ็มรอม แต่ละเซลล์ที่เก็บข้อมูลจะเป็น ไบโพลาร์ทรานซิสเตอร์ เมื่อมีการโปรแกรมข้อมูลลงไปเก็บในแต่ละเซลล์ของเอ็มรอม จะเกิดความแตกต่างที่เบสของทรานซิสเตอร์ กล่าวคือ เมื่อข้อมูลที่เซลล์เป็น " 1 " เบสจะปิด และเมื่อข้อมูลที่เซลล์เป็น " 0 " ที่เบสจะเปิด เมื่อต้องการกำหนดแอดเดรสที่แสดงตำแหน่งของข้อมูลทำได้ โดยกำหนดที่ขา A  - A  โดยขา EN เป็นขาควบคุมการอ่านข้อมูล รอมตัวนี้เป็นขนาด (- D) คือ 1010 เป็นต้น การทำงานของเอ็มรอมแสดงในตารางรูปที่ 12.3   4 x 4 บิตเวิร์ด ขาข้อมูลออกคือ  เมื่อเลือกแอดเดรส  A  = 0 ,A   = 0 ข้อมูลที่เก็บไว้ในแถวที่ 0 จะออกไปที่เอาต์พุต (D   - D  ) คือ1010

รูปที่ 1 แสดงโครงสร้างและตารางการทำงานของเอ็มรอม

    เมื่อกำหนดแอดเดรสในการอ่านข้อมูลตามตารางสำหรับขา EN เมื่อต้องการให้เอ็มรอมทำงานได้ EN = " 0 " และเมื่อไม่ต้องการอ่านข้อมูลจากเอ็มรอมต้องให้  EN  = " 1 "

        2. หน่วยความจำพรอม เป็นหน่วยความจำที่ผู้ใช้สามารถนำมาโปรแกรมได้เองโดยอาศัย เครื่องโปรแกรม เพื่อทำให้แต่ละบิตของหน่วยความจำเป็นลอจิก " 1 " หรือ " 0 " ตามที่ต้องการ โดยทั่วไปเทคโนโลยีการผลิตมี 2 อย่าง คือ ฟิวลิงค์ (Fuse Link) และเอม (AIM :Avalanche - Indnced - Migvation )ซึ่งมีโครงสร้างแสดงดังรูปที่ 2 และ 3 ตามลำดับ

รูปที่ 2  แสดงการต่อสายระหว่างสายคอลัมน์และแถวของแมทริกซ์ 7

         จากรูปที่ 2 ระหว่างสายคอลัมน์และแถวของแมทริกซ์ จะต่อฟิวส์อนุกรมกับไดโอดไว้ ถ้าในโปรแกรมต้องการทำให้ฟิวลิงค์แถว E   บิตที่ 2 และ 3 ขาด เพื่อให้บิตนี้มีลอจิก " 1 " ตลอดไปทำได้โดยป้อน E   เป็นลอจิก " 0 " และป้อนพัลส์ไฟฟ้าบวก ซึ่งมีแรงดันสูงกว่าปกติ ซึ่งเรียกว่าแรงดันโปรแกรมเข้าทางสายคอลัมน์ 2 และ 3 จะทำให้ฟิวส์ลิงค์ที่ต่ออยู่กับไดโอดขาด เมื่อทำการอ่านข้อมูลจากบิต 2 และ 3 นี้จะได้ข้อมูลเป็นลอจิก " 1 " เสมอ ดังนั้นข้อมูลที่อ่านได้จากแถว E   เป็น 011 เพราะคอลัมน์ที่ 1 หรือบิตแรกที่ฟิวส์ต่ออยู่กับไดโอดจึงให้ข้อมูลเป็นลอจิก " 0 "

รูปที่ 3  แสดงการต่อสายระหว่างสายคอลัมน์กับแถวของแมทริกซ์

          จากรูปที่ 3 ระหว่างสายคอลัมน์กับแถวของแมทริกซ์ ถูกต่อไว้ด้วยขาอิมิตเตอร์และ คอลเลคเตอร์ของทรานซิสเตอร์ การโปรแกรมให้บิตใดนำกระแสโดยอาศัยหลักการ Avalanche Effect เพื่อทำให้ความต้านทานระหว่างขาเบสกับอิมิตเตอร์ ต่ำเหมือนกับมีสายต่อเชื่อมกัน ความต้านทานบิตนั้นจะมีค่าความต้านทานต่ำลงมาอยู่ในช่วงประมาณ 200 Ω ทำให้บิตนั้นมีสถานะเป็นลอจิก " 0 " ส่วนบิตใดที่ไม่ถูกโปรแกรม ความต้านทานระหว่างเบสกับอิมิตเตอร์จะสูงกว่า 100 กิโลโอห์ม (kΩทำให้บิตนั้นมีสถานะภาพเป็นลอจิก " 1 "

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

รูปที่ 4 แสดงวงจรพื้นฐานของอีพรอม

        จากรูปที่ 4 จะเห็นว่ามีเอ็นมอส 2 ตัว ต่ออนุกรมกันอยู่ตัวแรกจะถูกไบอัสให้นำกระแสโดยใช้สายเลือกแอดเดรสทางแกน X ส่วนเอ็นมอสตัวที่ 2 เป็นชนิดเกตลอย เอ็นมอสตัวที่ 2 หากถูกโปรแกรมให้นำกระแสไว้แล้วก็เหมือนกับสวิตช์ปิด แต่ถ้ายังไม่ถูกโปรแกรมให้นำกระแสก็เหมือน สวิตช์เปิด ซึ่งจะทำให้สถานะของลอจิกเป็น " 0 " หรือ " 1 " แตกต่างกันได้แม้สายอ่าน ข้อมูลจะแอคตีฟด้วยลอจิกเดียวกันก็ตาม ทรานซิสเตอร์มอสเกตลอยตัวนี้เรียกว่า FAMOS (Floating Gate Avalance Injection Metal Oxide Semiconductor) ซึ่งมีโครงสร้างดังรูปที่ 5

รูปที่ 5 แสดงโครงสร้างของ FAMOS

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

        4. หน่วยความจำอีอีพรอม (EEPROM) เป็นพรอมที่พัฒนาขึ้นมาใหม่ในปี 1980 เพื่อให้ใช้แทนอีพรอม มีความสะดวกกว่าในการลบข้อมูลออกจากหน่วยความจำ กล่าวคือ สามารถใช้สัญญาณไฟฟ้าลบข้อมูล (Electrically Erasable) แทนการใช้รังสีอัลตราไวโอเลตที่ใช้กับอีพรอม เวลาที่อีอีพรอมใช้ในการลบข้อมูลออกจากหน่วยความจำประมาณ 10 mS (ในขณะที่ อีพรอมใช้แสงอัลตราไวโอเลตลบข้อมูลในเวลา 30นาที) และในการเขียนข้อมูลในโหมดโปรแกรม อีอีพรอมที่นิยมใช้กันอย่างแพร่หลายมีหลายเบอร์ เช่น อินเทล 2816 เป็นอีพรอมขนาดความจุ 2k x 8 บิตเวิร์ด มีเวลาในการทำงาน 250 nS และเบอร์ 2864 มีความจุ 8k x 8 บิตเวิร์ด ดังแสดงในรูปที่ 12.8 มีแอดเดรส 13 อินพุต (A    - A  ) และมีขาข้อมูลเข้าและออกขนาดบิต (I/O  - I/O  ) มีขาควบคุม 3 ขาคือ OE ทำหน้าที่ควบคุมข้อมูลออกทางเอาต์พุตโหมดการอ่าน ขา  CE ทำหน้าที่ควบคุมการทำงานของอีอีพรอม เมื่อ CE = " 0 " อีอีพรอมจะทำงานได้ 2 โหมด คือ อ่านและเขียน แต่เมื่อ CE = " 1 " อีอีพรอมจะทำงานในโหมด Standby เอาต์พุต

จะเท่ากับอิมพีแดนซ์สูง ขา WE ใช้ควบคุมการอ่านและเขียน เมื่อให้  CE = " 0 " และ OE  = " 0 ", WE = " 1 " จะทำงานให้โหมดการอ่านข้อมูลออกทาง (I/O  - I/O  ) และเมื่อ CE = " 0 ", OE = " 1 " และ WE = " 0 "จะทำงานในโหมดการเขียนข้อมูลลงในอีอีพรอม

 เทคนิคการแก้ไขความผิดพลาดของข้อมูล

1. ใช้พาริตี้บิตตรวจสอบข้อมูล

การตรวจสอบความผิดพลาด

        การตรวจสอบความผิดพลาดของข้อมูลในการสื่อสารข้อมูลดิจิตอลแบบอะซิงโครนัส เราสามารถ

ตรวจสอบได้จากพาริตี้บิต ซึ่งแบ่งเป็นพาริตี้คี่ (Odd) และพาริตี้คู่ (Even) เช่น ถ้าเราส่งข้อมูลเป็น

พาริตี้คู่ นั่นคือถ้ารวมบิตของอักระทั้งหมดที่เป็น “1” กับพาริตี้บิต แล้วจะไดเป็นจำนวนคู่ ซึ่งเมื่อเครื่อง

รับได้รับเฟรมข้อมูลไปแล้ว ถ้ารวมบิตของ “1” ทั้งหมดได้เป็นจำนวนเลขคี่แล้วแสดงว่าข้อมูลที่รับมามี

ความผิดพลาดเกิดขึ้นแต่ในกรณีที่มีความผิดพลาดเกิดขึ้น แต่นับบิต “1” ทั้งหมดได้จำนวนคู่เช่นกัน เรา

ก็ไม่สามารถตรวจความผิดพลาดได้

      วิธีการตรวจสอบความผิดพลาดในการส่งข้อมูลแบบอะซิงโครนัสดังที่ได้กล่าวมาเราเรียกว่า

การตรวจสอบพาริตี้ (Parity Check)

อัตราความผิดพลาด (Error Rate)

     การวัดอัตราความผิดพลาดจองข้อมูล เราจะนับจากจำนวนบิตที่เกิดความผิดพลาดไม่เป็นไปตาม

ข้อมูลจริงคือจำนวนบิตทั้งหมดในช่วงเวลา 1/100 วินาที ดังนั้นยิ่งมีการส่งข้อมูลด้วยอัตราเร็วมาก

เท่าใด ถ้ามีความผิดพลาดเกิดขึ้นอัตราความผิดพลาดก็จะยิ่งมีมากขึ้นเท่านั้น โดยทั่วไปอัตราความผิด

พลาดที่ยอมรับได้จะอยู่ประมาณ 1 บิต ต่อ 100,000 บิต จะสังเกตได้ว่าค่าอัตราความผิดพลาดเป็น

ค่าทางสถิติเท่านั้น

     ถ้าความผิดพลาดเกิดขึ้นเฉพาะทีละบิต และข้อมูลที่ถูกส่งออกไปส่งเป็นบล็อกข้อมูลจะส่งด้วย

อัตราเร็วสูง อัตราการเกิดความผิดพลาดย่อมจะสูง และความผิดพลาดสามารถเกิดขึ้นได้ทุกบล็อก

ข้อมูลแต่ถ้าความผิดพลาดที่เกิดขึ้นนั้นเกิดขึ้นกับกลุ่มข้อมูล ข้อมูลบางบล็อกอาจจะไม่มีความผิดพลาด

เลยก็ได้ ดังนั้นถ้าในการส่ง-รับข้อมูลที่มีอัตราความผิดพลาดสูง การส่ง-รับข้อมูลเป็นบล็อกเล็กๆ จะทำ

ให้ถูกรบกวนได้น้อยกว่า แต่ความเร็วหรือประสิทธิภาพในการส่ง-รับข้อมูลก็จะลดลงด้วยเช่นกันความ

ผิดพลาดในการส่ง-รับข้อมูล (Data Transmission Error)

       สาเหตุของการเกิดความผิดพลาดได้แก่ สัญญาณรบกวน (Noise) และลักษณะของช่องทาง

หรือสายสื่อสาร สัญญาณรบกวนที่เกิดขึ้นที่สำคัญ ได้แก่ สัญญาณรบกวนแบบพัลส์ (Noise Pulse)

และสัญญาณรบกวนแบบเบิรสต์ (Noise Burst) หรือกลุ่มสัญญาณรบกวน ซึ่งมักจะเกิดในช่วงเวลา

ประมาณ 1/100 วินาที สัญญาณรบกวนที่เกิดขึ้นจากการเปิด-ปิดสวิตช์ไฟฟ้า ฝนตกฟ้าคะนอง

ฯลฯ เหตุการณ์เหล่านี้เป็นลักษณะของสัญญาณรบกวนแบบเบิรสต์ ส่วนการผิดเพี้ยนของสัญญาณซึ่ง

อาจจะเกิดจากกการเปลี่ยนรูปแบบการส่งของสัญญาณ เช่น จากอนาล็อกเป็นดิจิตอล หรือจากดิจิตอล

เป็นอนาล็อก และการสะท้อนกลับของสัญญาณ (Echo) เป็นสัญญาณรบกวนแบบพัลส์เช่นกัน

โดยมากแล้วสัญญาณรบกวนที่เกิดขึ้นระหว่างการส่ง-รับข้อมูลมักจะเป็นสัญญาณรบกวนเป็น

กลุ่มหรือเบิรสต์มากกว่าแบบพัลส์

       ในกรณีทีมีความผิดพลาดเกิดขึ้นกับบิตข้อมูลโดยตรง การแก้ไขสามารถทำได้โดยอาศัย

เทคนิคการส่งข้อมูลเพิ่มเป็นข้อมูลซ้ำซ้อน (Redundant) เข้าไปข้อมูลด้วย เพื่อให้เครื่องรับ

สามารถตรวจจับ และแก้ไขความผิดพลาดที่เกิดขึ้นกับบิตข้อมูล โดยมีวัตถุประสงค์ 2 ประการคือ

1. เพื่อให้ผู้รับสามารถรูและแก้ไขข้อผิดพลาดได้ถ้าหากมีความผิดพลาดเกิดขึ้น

2. เพื่อให้ผู้รับสามารถรู้ได้เฉพาะความผิดพลาดที่เกิดขึ้นเท่านั้น แต่ไม่สามารถแก้ไขความผิด

พลาดได้ ผู้รับต้องร้องขอให้ผู้ส่งทำการส่งข้อมูลมาใหม่

     จำนวนบิตของข้อมูลซ้ำซ้อน หรือเรียกว่า บิตตรวจสอบ (Check Bits) นั้นคำนวณได้จากสูตร                                                                             M+R+1 < 2R

โดยที่ M = จำนวนบิตของ

R = จำนวนบิตตรวจสอบที่น้อยที่สุด

       พื้นฐานของการตรวจจับข้อผิดพลาดและการแก้ไขข้อผิดพลาดในฮาร์ดดิสก์ ประกอบด้วยบิตข้อมูล

ที่เกินมาจะเป็นตัวบ่งบอก ใช้อุปกรณ์ฮาร์ดแวร์หรือซอร์ฟแวร์พิเศษเข้ามาช่วยในการทำงาน ในแต่ละบล็อกข้อมูล (Sector data) ของฮาร์ดดิสก์บรรจุได้ 512 ไบต์ หรือ 4,096 บิต ไว้สำหรับให้ผู้ใช้ทำการบันทึกข้อมูลบิตที่เพิ่มเข้าเหล่านี้ เป็นการเพิ่มจำนวนบิตที่ได้ถูกเพิ่มเข้าไปในแต่ละบล็อกข้อมูล (Sector data) สำหรับช่วยสนับสนุนการทำงานของรหัสแก้ไขข้อผิดพลาด ECC (Error correction code) (บางครั้งก็อาจจะเรียกว่า Error correction code หรือ Error correcting circuits) โดยบิตรหัสแก้ไขข้อผิดพลาดเหล่านี้ไม่ได้อยู่ในข้อมูล แต่จะอยู่ข้างๆ นั่นเอง บิตรหัสแก้ไขข้อผิดพลาดจะเป็นตัวช่วยบอกว่าข้อมูลที่ได้มาสามารถนำไปใช้ได้ หรือถูกต้องไหม และถ้าเกิดข้อผิดพลาดขึ้นก็จะแก้ไขเพื่อที่จะให้ได้ข้อมูลที่แท้จริง

ความสามารถในการแก้ไขข้อผิดพลาดของข้อมูลด้วยรหัส Reed-Solomon ECC ขึ้นอยู่กับจำนวน

ของบิต ECC ที่ได้เพิ่มหรือเขียนลงไป ซึ่งจำนวนบิต ECC ที่เพิ่มหรือเขียนลงไปมีหลายบิตก็เท่ากับมีจำนวนข้อมูลมากขึ้นตามด้วย และขึ้นอยู่กับว่าจะสามารถยอมรับข้อผิดพลาดที่เกิดขึ้นได้มากเท่าไหร นั่นก็คือทำการแบ่งออกเป็นหลายๆ ส่วนเพื่อเป็นส่วนช่วยในการตัดสินใจเลือกใช้ ECC ขนาดกี่บิต จำนวนบิต ECCต่อหนึ่งบล็อกข้อมูล (Sector data) มีขนาดมากก็ทำให้ข้อมูลที่ได้มีความสมบรูณ์ดี และถ้าเกิดข้อผิดพลาดขึ้นก็สามารถที่จะตรวจจับได้แล้วทำการแก้ไขข้อผิดพลาดนั้นได้ แต่ก็หมายความว่าจะสามารถใส่จำนวนบล็อกข้อมูลได้สองถึงสามบล็อกในแต่ละแทร็ก (Track) พบว่าแทร็กจะเพิ่มขึ้นเป็นเชิงเส้นกับระยะทางเมื่อไม่มีบิตของข้อมูล ถ้าจะทำให้ระบบมีความสามารถเพิ่มขึ้นโดยสามารถตรวจจับและแก้ไขข้อผิดพลาดได้ดี ก็ทำได้โดยการเพิ่มความจุต่อหนึ่งหน่วยพื้นที่ หรือทำการปรับปรุงสมรรถนะการทำงานตัวอื่นๆ ซึ่งก็จะทำให้ได้การลงทุนที่คุ้มค่ากับการเพิ่มบิต ECC เป็นต้น ตัวพารามิเตอร์ตัวอื่นๆ ที่จะสามารถทำให้การเพิ่มบิต ECCได้ก็อย่างเช่น กำลังงานที่ให้ในระบบตัวควบคุมของวิธีการ Reed-Solomon วิศวกรคนไหนที่ทำหน้าที่ในการออกแบบฮาร์ดดิสก์ต้องมีข้อมูลตัวแปรหรือพารามิเตอร์ในการช่วยตัดสินใจว่าจะใช้จำนวน ECC ขนาดกี่บิตที่จะเขียนหรือบันทึกลงไปในแต่ละบล็อกข้อมูล (Sector data)

หน่วยความจำแคช

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

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

รูปที่ 1 แสดงถึงสถาปัตยกรรมหน่วยความจำภายในคอมพิวเตอร์ในปัจจุบัน

2. ลักษณะพื้นฐานของหน่วยความจำแคช (Cache)

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

รูปที่ 2 แสดงหน่วยความจำ Cache และหน่วยความจำหลัก

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

รูปที่ 3 แสดงการอ่านข้อมูลจากหน่วยความจำ Cache

รูปที่ 4 แสดงโครงสร้างหน่วยความจำ Cache โดยทั่วไป

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

เทคโนโลยีหน่วยความจำ DRAM

DRAM แบบไดนามิกหรือเรียกสั้น ๆ ว่า DRAM เป็นหน่วยความจำที่ถูกนำมาใช้ผลิต

แรมเพื่อใช้ติดตั้งลงในเครื่องคอมพิวเตอร์ ซึ่งหน่วยความจำนี้ได้รับความนิยมสูง อันเนื่องมาจากมีความจุสูง กินไฟน้อยและราคาถูกกว่าหน่วยความจำ SRAM แต่ข้อเสียก็คือมีความยุ่งยากในการออกแบบเพื่อการนำไปใช้งาน เนื่องจาก DRAM จะทำการเก็บข้อมูลไว้ในตัวเก็บประจุ (Capacitors) ซึ่งจำเป็นจะต้องมีการ refresh ข้อมูลอยู่ตลอดตามระยะเวลาที่กำหนดไว้เพื่อเก็บข้อมูลให้คงอยู่ไม่ให้ข้อมูลสูญหายไปและเป็นการเติมไฟฟ้าเข้าไปเพื่อให้ข้อมูลที่กำลังจางหายไปมีความเข้มขึ้น โดยการ refresh นี้ทำให้เกิดช่วงเวลาขึ้นในการเข้าถึงข้อมูล และที่ต้อง refresh ตัวเองอยู่ตลอดเวลาจึงเป็นเหตุให้ได้ชื่อว่า Dynamic Random Access Memory

Fast Page Mode DRAM (FPM DRAM)

   FPM เหมือนกับ DRAM เพียงแต่ว่า มันลดช่วงการหน่วงเวลาขณะเข้าถึงข้อมูลลง ทำให้ มันมีความเร็วในการเข้าถึงข้อมูล สูงกว่า DRAM ปกติ ซึ่งโดยที่สัญญาณนาฬิกาในการเข้าถึงข้อมูล จะเป็น 6-3-3-3 (Latencyเริ่มต้นที่ 3 clock พร้อมด้วย 3 clock สำหรับการเข้าถึง page) และสำหรับ ระบบแบบ 32 bit จะมีอัตราการส่งถ่ายข้อมูลสูงสุด 100 MB ต่อวินาที ส่วนระบบแบ 64 bit จะมีอัตรา การส่งถ่ายข้อมูลที่ 200 MB ต่อวินาที เช่นกัน ปัจจุบันนี้ RAM ชนิดนี้เกือบไม่พบในตลาดแล้ว แต่ยังมีให้เห็นบ้าง และราคาค่อนข้างแพงเมื่อเทียบกับ RAM รุ่นใหม่ ๆ เนื่องจากที่ว่าปริมาณในท้องตลาดมีน้อยมาก ทั้ง ๆ ที่ยังมีคนต้องการใช้แรมชนิดนี้อยู่

Extended-Data Output (EDO) DRAM

   คือ Hyper-Page Mode DRAM ซึ่งพัฒนาขึ้นอีกระดับหนึ่ง โดยจะอ้างอิงตำแหน่งที่อ่านข้อมูลจากครั้งก่อนไว้ด้วย ปกติแล้วการดึงข้อมูลจาก RAM ณ ตำแหน่งใด ๆ มักจะดึงข้อมูล ณ ตำแหน่งที่อยู่ใกล้ ๆ จากการดึงก่อนหน้านี้ เพราะฉะนั้น ถ้ามีการอ้างอิง ณ ตำแหน่งเก่าไว้ก่อน ก็จะทำให้เสียเวลาในการเข้าถึงตำแหน่งน้อยลง และยังลดช่วงเวลาของ CAS latency ลงด้วย และด้วยความสามารถนี้ทำให้การเข้าถึงข้อมูลดีขึ้นกว่าเดิมกว่า 40% เลยทีเดียว และมีความสามารถโดยรวมสูงกว่า FPM กว่า 15% EDO จะทำงานได้ดีที่ 66 MHz ด้วย timing 5-2-2-2 และก็ยังทำงานได้ดี แม้จะใช้งานที่ 83 MHz ด้วย Timing นี้และหากว่าchip EDO นี้ มีความเร็วที่สูงมากพอ (มากกว่า 50ns) มันจะสามารถใช้งานได้ ณ 100 MHz ที่ Timing 6-3-3-3 อัตราการส่งถ่ายข้อมูลสูงสุด ของ DRAM ชนิดนี้อยู่ที่ 264 MB ต่อวินาที EDO RAM ในปัจจุบันนี้ไม่เป็นที่นิยมใช้แล้ว

Burst EDO (BEDO) DRAM

   BEDO ได้เพิ่มความสามารถขึ้นมาจาก EDO เดิม คือ Burst Mode โดยหลังจากได้ address ที่ต้องการaddress แรกแล้วมันก็จะทำการ generate อีก 3 address ขึ้นทันที ภายใน 1 สัญญาณนาฬิกา ดังนั้น จึงตัดช่วงเวลาในการรับ address ต่อไป เพราะฉะนั้น Timing ของมันจึงเป็น 5-1-1-1  66 MHz BEDO ไม่เป็นที่แพร่หลาย และได้รับความนิยมเพียงระยะเวลาสั้น ๆ เนื่องจากว่าทาง Intel ตัดสินใจใช้ SDRAM แทน EDOและไม่ได้ใช้ BEDO เป็นส่วนประกอบในการพัฒนา chipset ของตน ทำให้บริษัทผู้ผลิต ต่าง ๆ หันมาพัฒนา SDRAM แทน

Synchronous DRAM (SDRAM) SDRAM

   ต่างจาก DRAM เดิมตรงที่มันจะทำงานสอดคล้องกับสัญญาณนาฬิกา สำหรับ DRAM เดิมจะทราบตำแหน่งที่อ่านก็ต่อเมื่อเกิดทั้ง RAS และ CAS ขึ้น แล้วจึงทำการไปอ่านข้อมูลโดยมีช่วงเวลาในการเข้าถึงข้อมูลตามที่เรามักจะได้เห็นบนตัว chip ของตัว RAM เช่น -50, -60, -80 โดย -50 หมายถึง ช่วงเวลาเข้าถึง ใช้เวลา 50 นาโนวินาทีเป็นต้น แต่ SDRAM จะใช้สัญญาณนาฬิกาเป็นตัวกำหนดการทำงานโดยจะใช้ความถี่ของสัญญาณเป็นตัวระบุ SDRAM จะทำงานตามสัญญาณนาฬิกาขาขึ้นเพื่อรอรับตำแหน่งข้อมูล ที่ต้องการให้มันอ่าน แล้วจากนั้นมันก็จะไปค้นหาให้และให้ผลลัพธ์ออกมาหลังจากได้รับตำแหน่งแล้ว เท่ากับค่าของ CAS เช่น CAS 2 ก็คือ หลังจากรับตำแหน่งที่อ่านแล้วมันจะให้ผลลัพธ์ออกมา ภายใน 2 ลูกของสัญญาณนาฬิกา SDRAM จะมี Timing เป็น 5-1-1-1 ซึ่งเร็วพอ ๆ กันกับ BEDO RAM เลยที่เดียว แต่ว่ามันสามารถทำงานได้ ณ 100 MHz หรือมากกว่า และมีอัตราการส่งถ่ายข้อมูลสูงสุดที่ 528 MB ต่อวินาที

DDR SDRAM (หรือ SDRAM II)

   DDR RAM นี้แยกออกมาจาก SDRAM โดยจุดที่ต่างกันหลัก ๆ ของทั้งสองชนิดนี้คือ DDR SDRAM นี้สามารถที่จะใช้งานได้ทั้งขาขึ้น และขาลง ของสัญญาณนาฬิกาเพื่อส่งถ่ายข้อมูล นั่นก็ทำให้อัตราส่งถ่าย เพิ่มขึ้นได้ถึงเท่าตัว ซึ่งมีอัตราการส่งถ่ายข้อมูลสูงสุดถึง 1 G ต่อวินาที

Rambus DRAM (RDRAM)

   RAMBUS เป็นเครื่องหมายการค้าของบริษัท RAMBUS Inc. ซึ่งตั้งมาตั้งแต่ยุค 80 แล้ว โดยปัจจุบันได้เอาหลักการของ RAMBUS มาพัฒนาใหม่ โดยการลด pin รวม static buffer และทำการปรับแต่งทาง interfaceใหม่ DRAM ชนิดนี้ จะสามารถทำงานได้ทั้งขอบขาขึ้น และลงของสัญญาณนาฬิกา และเพียงช่องสัญญาณเดียว ของหน่วยความจำแบบ RAMBUS นี้ มี Performance มากกว่าเป็น 3 เท่า จาก SDRAM 100 MHz แล้ว และเพียงแค่ช่องสัญญาณเดียวนี้ก็มีอัตราการส่งถ่ายข้อมูลสูงถึง 1.6 G ต่อวินาที ถึงแม้ว่าเวลาในการเข้าถึงข้อมูลแบบ สุ่มของ RAM ชนิดนี้จะช้า แต่การเข้าถึงข้อมูลแบบต่อเนื่องจะเร็วมาก ๆ ซึ่ง RDRAM นี้มีการพัฒนา Interface และมี PCB (Printed Circuit Board) ที่ดี และรวมถึง Controller ของ Interface ให้ สามารถใช้งานได้ถึง 2 ช่องสัญญาณแล้วมันจะมีอัตราการส่งถ่ายข้อมูลเพิ่มเป็น 3.2 G ต่อวินาที และหากว่าสามารถใช้ได้ถึง 4 ช่องสัญญาณก็จะสามารถเพิ่มไปถึง 6.4 G ต่อวินาที

Toplist

โพสต์ล่าสุด

แท็ก