วันพฤหัสบดีที่ 21 พฤศจิกายน พ.ศ. 2556

ชนิดของ แรม รอม และรีจิสเตอร์ (Register)

ประเภทของแรม
RAM โดยทั่วไปแบ่งออกได้เป็น 2 ประเภท คือ
1. Static Random Access Memory ( SRAM )
            คือ RAM ซึ่งเก็บรักษาข้อมูลบิตไว้ในหน่วยความจำของมันตราบเท่าที่ยังมีกระแสไฟฟ้าหล่อเลี้ยงอยู่ ไม่เหมือนกับดีแรม (DRAM) ที่เก็บข้อมูลไว้ในเซลซึ่งประกอบขึ้นด้วยตัวเก็บประจุหรือคาปาซิเตอร์(Capacitor) และทรานซิสเตอร์ (Transistor) 
2. Dynamic Random Access Memory ( DRAM )
            คือ RAM หรือ หน่วยความจำชนิดปกติสำหรับเครื่องคอมพิวเตอร์พีซีและเครื่องเวิร์คสเตชั่น(Workstation) ลักษณะของ DRAM จะเป็นคล้ายกับเครือข่ายของประจุไฟฟ้าที่เครื่องคอมพิวเตอร์ใช้เก็บข้อมูลในรูปของ "0" และ "1" ที่สามารถเข้าถึงได้ง่ายๆ         ประเภทของ DRAM ในท้องตลาดแบ่งได้เป็น 4 ประเภทหลัก 
                        2.1)  FPM DRAM
                                    เป็น RAM ชนิดที่ใช้กับ PC ในยุคเริ่มต้น โดยมีรูปแบบคือ SIMM (Single Inline Memory Modules)ปกติจะมีแบบ SIMM ละ 2, 4, 8, 16 และ 32 MB โดยมีค่า refresh rate ของวงจรอยู่ที่ 60 และ 70 nana sec.โดยค่า refresh ที่น้อยกว่าจะความเร็วมากกว่า
                        2.2)  EDO DRAM
                                    เป็นชนิดที่ปรับปรุงมาจาก FPM โดยมีการปรับปรุงเรื่องการอ่านข้อมูล โดยทั่วไปแล้วการอ่านข้อมูลจาก RAM จะต้องระบุตำแหน่งแนวตั้ง และแนวนอนให้แก่วงจร RAM ถ้าเป็นชนิด FPM แล้วต้องระบุแนวใดแนวหนึ่งให้เสร็จเสียก่อน แล้วจึงระบุอีกแนวหนึ่ง แต่ EDO สามารถระบุค่าตำแหน่งในแนวตั้ง (CAS) และแนวนอน(RAS) ได้ในเวลาที่ใกล้เคียงกัน หรือพร้อมกันได้
                        2.3)  SDRAM
                        เป็น RAM ชนิดที่ได้รับความนิยมมากที่สุดในปัจจุบัน โดย 1 DIMMs จะมี 168 ขา และส่งข้อมูลได้ทีละ 64 บิต ทำให้ SDRAM แผงเดียวก็สามารถทำงานได้ เวลาในการเข้าถึงข้อมูลของ SDRAM จะมีค่าประมาณ6-12 n Sec. ปัจจุบัน SDRAM สามารถทำงานได้ที่ความถี่ 66, 100 และ 133 MHz
                        2.4)  RAMBUS
                        พัฒนามาจาก DRAM แต่มีการออกแบบสถาปัตยกรรมภายในใหม่ทั้งหมด มีการเปลี่ยนแปลงระบบการเข้าถึงข้อมูลภายใน RAM ให้มีประสิทธิภาพมากขึ้น โดยใช้หลักการ “Pre-fetch” หรืออ่านข้อมูลล่วงหน้าโดยระหว่างนั้น CPU สามารถทำงานอื่นไปพร้อม  กันด้วย packet ของ RAMBUS จะเรียกว่า RIMMs (Rambus Inline Memory Modules) ซึ่งมี 184 ขา
                                    RAMBUS ทำงานกับไฟกระแสตรง 2.5 V ภายใน 1 RIMMs (Rambus Inline Memory Modules)จะมีวงจรสำหรับควบคุมการหยุดจ่ายไฟแก่แผงวงจรหน่วยความจำย่อยของ RAMBUS ซึ่งยังไม่ถูกใช้งานขณะนั้น เพื่อช่วยให้ความร้อนของ RAMBUS ลดลง และวงจรดังกล่าวจะทำหน้าที่ลดความเร็วของ RAMBUS ลงหากพบว่าความร้อนของ RAMBUS ขณะนั้นสูงเกินไป
            แผงวงจรหน่วยความจำย่อยของ RAMBUS 1 แผงจะรับ-ส่งข้อมูลทีละ 16 บิต โดยใช้ความถี่ 800MHz ซึ่งเกิดจากความถี่ 400 MHz แต่ทำงานแบบ DDR (Double Data Rate) ทำให้ได้ bandwidth ถึง 1.6GB/Sec. และจะมี bandwidth สูงถึง 6.4 GB/Sec. ถ้าใช้แผงวงจรย่อย 4 แผง

RAM โดยทั่วไปแบ่งออกได้เป็น 2 ประเภท คือ

1. Static Random Access Memory ( SRAM )
            คือ RAM ซึ่งเก็บรักษาข้อมูลบิตไว้ในหน่วยความจำของมันตราบเท่าที่ยังมีกระแสไฟฟ้าหล่อเลี้ยงอยู่ ไม่เหมือนกับดีแรม (DRAM) ที่เก็บข้อมูลไว้ในเซลซึ่งประกอบขึ้นด้วยตัวเก็บประจุหรือคาปาซิเตอร์(Capacitor) และทรานซิสเตอร์ (Transistor)
2. Dynamic Random Access Memory ( DRAM )
            คือ RAM หรือ หน่วยความจำชนิดปกติสำหรับเครื่องคอมพิวเตอร์พีซีและเครื่องเวิร์คสเตชั่น(Workstation) ลักษณะของ DRAM จะเป็นคล้ายกับเครือข่ายของประจุไฟฟ้าที่เครื่องคอมพิวเตอร์ใช้เก็บข้อมูลในรูปของ "0" และ "1" ที่สามารถเข้าถึงได้ง่ายๆ         ประเภทของ DRAM ในท้องตลาดแบ่งได้เป็น 4 ประเภทหลัก 
                        2.1)  FPM DRAM
                                    เป็น RAM ชนิดที่ใช้กับ PC ในยุคเริ่มต้น โดยมีรูปแบบคือ SIMM (Single Inline Memory Modules)ปกติจะมีแบบ SIMM ละ 2, 4, 8, 16 และ 32 MB โดยมีค่า refresh rate ของวงจรอยู่ที่ 60 และ 70 nana sec.โดยค่า refresh ที่น้อยกว่าจะความเร็วมากกว่า
                        2.2)  EDO DRAM
                                    เป็นชนิดที่ปรับปรุงมาจาก FPM โดยมีการปรับปรุงเรื่องการอ่านข้อมูล โดยทั่วไปแล้วการอ่านข้อมูลจาก RAM จะต้องระบุตำแหน่งแนวตั้ง และแนวนอนให้แก่วงจร RAM ถ้าเป็นชนิด FPM แล้วต้องระบุแนวใดแนวหนึ่งให้เสร็จเสียก่อน แล้วจึงระบุอีกแนวหนึ่ง แต่ EDO สามารถระบุค่าตำแหน่งในแนวตั้ง (CAS) และแนวนอน(RAS) ได้ในเวลาที่ใกล้เคียงกัน หรือพร้อมกันได้
                        2.3)  SDRAM
                        เป็น RAM ชนิดที่ได้รับความนิยมมากที่สุดในปัจจุบัน โดย 1 DIMMs จะมี 168 ขา และส่งข้อมูลได้ทีละ 64 บิต ทำให้ SDRAM แผงเดียวก็สามารถทำงานได้ เวลาในการเข้าถึงข้อมูลของ SDRAM จะมีค่าประมาณ6-12 n Sec. ปัจจุบัน SDRAM สามารถทำงานได้ที่ความถี่ 66, 100 และ 133 MHz
                        2.4)  RAMBUS
                        พัฒนามาจาก DRAM แต่มีการออกแบบสถาปัตยกรรมภายในใหม่ทั้งหมด มีการเปลี่ยนแปลงระบบการเข้าถึงข้อมูลภายใน RAM ให้มีประสิทธิภาพมากขึ้น โดยใช้หลักการ “Pre-fetch” หรืออ่านข้อมูลล่วงหน้าโดยระหว่างนั้น CPU สามารถทำงานอื่นไปพร้อม  กันด้วย packet ของ RAMBUS จะเรียกว่า RIMMs (Rambus Inline Memory Modules) ซึ่งมี 184 ขา
                                    RAMBUS ทำงานกับไฟกระแสตรง 2.5 V ภายใน 1 RIMMs (Rambus Inline Memory Modules)จะมีวงจรสำหรับควบคุมการหยุดจ่ายไฟแก่แผงวงจรหน่วยความจำย่อยของ RAMBUS ซึ่งยังไม่ถูกใช้งานขณะนั้น เพื่อช่วยให้ความร้อนของ RAMBUS ลดลง และวงจรดังกล่าวจะทำหน้าที่ลดความเร็วของ RAMBUS ลงหากพบว่าความร้อนของ RAMBUS ขณะนั้นสูงเกินไป
            แผงวงจรหน่วยความจำย่อยของ RAMBUS 1 แผงจะรับ-ส่งข้อมูลทีละ 16 บิต โดยใช้ความถี่ 800MHz ซึ่งเกิดจากความถี่ 400 MHz แต่ทำงานแบบ DDR (Double Data Rate) ทำให้ได้ bandwidth ถึง 1.6GB/Sec. และจะมี bandwidth สูงถึง 6.4 GB/Sec. ถ้าใช้แผงวงจรย่อย 4 แผง


ประเภทของรอม
 คือหน่วยความจำชนิดหนึ่ง ที่มีโปรแกรม หรือข้อมูลอยู่แล้ว และพร้อมที่จะนำมาต่อกับ ไมโครโปรเซสเซอร์ได้โดยตรง ซึ่งโปรแกรม หรือข้อมูลนั้นจะไม่สูญหายไป
แม้ว่าจะไม่มีการจ่ายไฟเลี้ยงให้แก่ระบบ ข้อมูลที่เก็บอยู่ใน ROM จะสามารถอ่านออกมาได้แต่ไม่สามารถเขียนข้อมูลเข้าไปได้ เว้นแต่จะใช้วิธีการพิเศษซึ่งขึ้นกับชนิดของ ROM
ชนิดของROM
·                     Manual ROM ROM (READ-ONLY MEMORY) ข้อมูลทั้งหมดที่อยู่ใน ROM จะถูกโปรแกรม โดยผู้ผลิต (โปรแกรม มาจากโรงงาน) เราจะใช้ ROM ชนิดนี้ เมื่อข้อมูลนั้น ไม่มีการเปลี่ยนแปลง และมีความต้องการใช้งาน เป็นจำนวนมาก ผู้ใช้ไม่สามารถ เปลี่ยนแปลงข้อมูลภายใน ROM ได้ 
โดย
 ROM จะมีการใช้ technology ที่แตกต่างกันตัวอย่างเช่น BIPOLAR, CMOS, NMOS, PMOS
·                     PROM (Programmable ROM) PROM (PROGRAMMABLE READ-ONLY MEMORY) ข้อมูลที่ต้องการโปรแกรมจะถูกโปรแกรมโดยผู้ใช้เอง โดยป้อนพัลส์แรงดันสูง (HIGH VOLTAGE PULSED) ทำให้ METAL STRIPS หรือPOLYCRYSTALINE SILICON ที่อยู่ในตัว IC ขาดออกจากกัน ทำให้เกิดเป็นลอจิก “1” หรือ “0” ตามตำแหน่ง ที่กำหนดในหน่วยความจำนั้นๆ เมื่อPROM ถูกโปรแกรมแล้ว ข้อมูลภายใน จะไม่สามารถเปลี่ยนแปลงได้อีก หน่วยความจำชนิดนี้ จะใช้ในงานที่ใช้ความเร็วสูง ซึ่งความเร็วสูงกว่า หน่วยความจำ ที่โปรแกรมได้ชนิดอื่นๆ
·                     EPROM (Erasable Programmable ROM) EPROM (ERASABLE PROGRAMMABLE READ-ONLY MEMORY) ข้อมูลจะถูกโปรแกรม โดยผู้ใช้โดยการให้สัญญาณ ที่มีแรงดันสูง (HIGH VOLTAGE SIGNAL) ผ่านเข้าไปในตัว EPROM ซึ่งเป็นวิธีเดียวกับที่ใช้ใน PROM แต่ข้อมูลที่อยู่ใน EPROM เปลี่ยนแปลงได้ โดยการลบข้อมูลเดิมที่อยู่ใน EPROM ออกก่อน แล้วค่อยโปรแกรมเข้าไปใหม่ การลบข้อมูลนี้ทำได้ด้วย การฉายแสง อุลตร้าไวโอเลตเข้าไปในตัว IC โดยผ่าน ทางกระจกใส ที่อยู่บนตัว IC เมื่อฉายแสง ครู่หนึ่ง (ประมาณ 5-10 นาที) ข้อมูลที่อยู่ภายใน ก็จะถูกลบทิ้ง ซึ่งช่วงเวลา ที่ฉายแสงนี้ สามารถดูได้จากข้อมูล ที่กำหนด (DATA SHEET) มากับตัว EPROM และ มีความเหมาะสม ที่จะใช้ เมื่องานของระบบ มีโอกาส ที่จะปรับปรุงแก้ไขข้อมูลใหม่
·                     EAROM (Electrically Alterable ROM) EAROM (ELECTRICALLY ALTERABLE READ-ONLY MEMORY) 
EAROM
 หรืออีกชื่อหนึ่งว่า EEPROM (ELECTRICAL ERASABLE EPROM) เนื่องจากมีการใช้ไฟฟ้าในการลบข้อมูลใน ROM เพื่อเขียนใหม่ ซึ่งใช้เวลาสั้นกว่าของ EPROM 
การลบขึ้นอยู่กับพื้นฐานการใช้เทคโนโลยีที่แตกต่างกัน ดังนั้น
 EAROM (ELECTRICAL ALTERABLE ROM) จะอยู่บนพื้นฐานของเทคโนโลยีแบบ NMOS ข้อมูลจะถูกโปรแกรมโดยผู้ใช้เหมือนใน EPROM แต่สิ่งที่แตกต่างก็คือ ข้อมูลของ EAROM สามารถลบได้โดยทางไฟฟ้าไม่ใช่โดยการฉายแสงแบบ EPROM
โดยทั่วไปจะใช้ EPROM เพราะเราสามารถหามาใช้ และทดลองได้ง่าย มีราคาถูก วงจรต่อง่าย ไม่ยุ่งยาก และสามารถเปลี่ยนแปลงโปรแกรมได้ นอกจากระบบ ที่ทำเป็นการค้าจำนวนมาก จึงจะใช้ ROM ประเภทโปรแกรมสำเร็จ
จากรูปแสดงให้เห็นส่วนประกอบพื้นฐานของ ROM ซึ่งจะมีสัญญาณต่างๆ ที่เกี่ยวข้องกับROM และทุกชิปที่อยู่ใน ROM มักมีการจัดแบ่งแยกหน้าที่เสมอ เช่น ขาแอดเดรสของ ROMเป็นอินพุต ส่วนขาข้อมูลจะเป็นเอาต์พุต โดยหลักการแล้ว ขาข้อมูลจะต่อเข้ากับบัสข้อมูลซึ่งเป็นบัส 2 ทาง ดังนั้นเอาต์พุตของ ROM ในส่วนขาข้อมูลนี้มักจะเป็นลอจิก 3 สถานะ ซึ่งถ้าไม่ใช้ก็จะอยู่ในสถานะ ที่มีอิมพีแดนซ์สูง (High Impedence) 
ลักษณะโครงสร้างภายในของข้อมูลในหน่วยความจำ สามารถดูได้จาก Data Sheet ของROM นั้นๆ เช่น ROM ที่ระบุเป็น 1024 8 ,2048 8 หรือ 4096 8 ตัวเลขชุดแรก (1024 ,2048หรือ 4096) จะบอกจำนวนตำแหน่ง ที่ใช้เก็บข้อมูลภายใน ส่วนตัวเลขชุดที่สอง (8) เป็นตัวบอกจำนวนบิตของข้อมูลแบบขนาน ที่อ่านจาก ROM 
ในการกำหนดจำนวนเส้นของบัสแอดเดรสที่ใช้กับ ROM เราสามารถรู้ได้ด้วยสูตร
รีจิสเตอร์ (Register) 
ความหมาย (Meaning)
#1 เป็นส่วนประกอบหนึ่งใน Microprocessor ทำหน้าที่ในการเก็บข้อมูลชั่วคราว
#2 หน่วยความจำขนายย่อยที่เก็บผลจากการคำนวณ โดยแยกพื้นที่ส่วนหนึ่งของหน่วยความจำภายในไมโครโปรเซสเซอร์มาใช้ นั่นคือ Register เป็นหน่วยความจำส่วนหนึ่งใน CPU
แนะนำเว็บ (Web Guides)
- Assembly turorial : http://www.xs4all.nl/~smit/asm01001.htm
http://www.school.net.th/library/snet1/hardware/z8086/cpu8086.html

1.            Register แบ่งได้ 4 กลุ่ม
1. รีจิสเตอร์ทั่วไป (General Register)
2. รีจิสเตอร์เซกเมนต์ (Segment Register)
3. รีจิสเตอร์ Pointer และ Index (Pointer and Index Register)
4. รีจิสเตอร์แฟลก (Flag Register)
2.            รีจิสเตอร์ที่ควรรู้จักตัวแรก ๆ มีอะไรบ้าง
แต่ละรีจิสเตอร์มีขนาด 1 word หรือ 1 word = 2 byte
จากตัวอย่างนี้จะแสดง Register 4 ตัวแรก คือ รีจิสเตอร์ทั่วไป (general purpose Register) กลุ่มข้อมูล อันประกอบด้วย AX, BX, CX และ DX โดยรีจิสเตอร์ที่เหลือคือ SP, BP, SI, DI, DS, ES, SS, CS และ IP ซึ่งเรียกรีจิสเตอร์เหล่านี้ว่า รีจิสเตอร์เฉพาะ(Special Register)
รีจิสเตอร์แต่ละตัวเก็บตัวเลขได้ 4 หลัก ทำให้เก็บค่าเลขในแต่ละตัวได้สูงสุดเพียง 65536 หรือ 256 * 256 นั่นเอง และ 256 ก็คือ เลขฐาน 16 จำนวน 2 หลัก ดังนั้น 0000 จึงสามารถเก็บได้ตั้งแต่ 0 ถึง 65536 หรือ 64 KB นั่นเอง
http://www.ik.ku.lt/lessons/konspekt/kti/12_files/Assembler%20Tutorial.htm
1. รีจิสเตอร์ทั่วไป (General Register)       
มีหน้าที่เก็บข้อมูล หรือผลลัพธ์จากการคำนวณ
  AX : Accumulator Register (สำหรับการอ้างอิงแบบ 16 Bit)
  BX : Base Register
  CX : Counting Register
  DX : Data Register
  ถ้าเป็น EAX, EBX, ECX, EDX จะเป็น Register สำหรับ 32 Bit

2. รีจิสเตอร์เซกเมนต์ (Segment Register)
มีหน้าที่อ้างอิงตำแหน่งในหน่วยความจำเมื่อต้องการอ่าน หรือเขียนข้อมูล
  CS : Code Segment Register
  DS : Data Segment Register
  ES : Extra Segment Register
  SS : Stack segment Register

3. รีจิสเตอร์ Pointer และ Index (Pointer and Index Register)
มีหน้าที่ในการชี้ตำแหน่งต่าง ๆ ในหน่วยความจำที่ต้องการติดต่อ
  BP : Base Pointers Register
  SP : Stack Pointer Register
  SI : Source Index Register
  DI : Destination Index Register

4. รีจิสเตอร์แฟลก (Flag Register)
ทำหน้าที่เก็บสถานะการประมวลผลจากบางคำสั่ง เช่น CMP, TEST เป็นต้น
ส่วน IP คือ Instruction Pointer Register

3.            อะไรคือ เซกเมนต์(Segment) : ออฟเซต(Offset)
เซกเมนต์เก็บอยู่ใน CS(Code segment) ส่วนออฟเซตเก็บใน IP(Instruction pointer)
เพราะคอมพิวเตอร์มีหน่วยความจำมากกว่า 64 KB เมื่อใช้ debug และกดปุ่ม d ทุกครั้งจะกระทำการกับพื้นที่ในหน่วยความจำที่แตกต่างกัน จึงต้องใช้ เซกเมนต์และออฟเซต อ้างถึงหน่วยความจำโดยใช้ Register 2 ตัวนี้ เป็นผลให้อ้างอิงข้อมูลในหน่วยความจำได้สูงสุดถึง 4 GB หรือ (256*256)*(256*256) นั่นเอง จากตัวอย่างเมื่อใช้โปรแกรม debug ท่านจะเห็นเลข 119B และ 0100 นั่นคือ Register 2 ตัว โดย CS คือ Segment และ IP คือ Offset นั่นเอง เมื่อท่านออกจากโปรแกรม Debug ค่าของ segment จะเปลี่ยนไป แต่ IP ยังเริ่มต้นที่ 0100 เท่าเดิม
4.            อะไรคือ ความแตกต่างของ AX, AH และ AL
เมื่อ AX ประกอบด้วย 1 word หรือ 2 byte แต่การแบ่งนั้นยังแบ่งได้อีกว่า 1 byte แรกของ AX ให้เรียกว่า AH(high byte) และ 1 byte หลังเรียกว่า AL(Low byte) ทดสอบเรื่อง AH และ AL ด้วยการใช้โปรแกรม debug เพิ่มค่า AL เข้าไปใน AH ค่าเริ่มต้น AX = 1234 นั่นคือ AH = 12 และ AL = 34 ผลการบวกจะทำให้ AH = 46 หรือ AX = 4634 นั่นเอง
5.            การคูณ และหารจะเกี่ยวกับ DX อย่างไร
MUL BX หมายถึง นำ AX คูณกับ BX หลักการนี้เหมือน DIV
นำ AX คูณ BX เก็บ 16 Bit บนใน DX และ 16 Bit ล่างใน AX เช่น AX มีค่า 9001 และ BX มีค่า 0002 ผลการคูณจะได้ 00012002 จึงเก็บ 0001 ไว้ที่ DX และ 2002 ไว้ที่ AX
6.            SP, BP, SI, DI และ IP คืออะไร
รีจิสเตอร์ทั่วไปเหมือน AX, BX, CX และ DX แต่อยู่ในกลุ่มตัวชี้ และอินเด็กซ์
SP : Stack pointer
BP : Base pointer
SI : Source index
DI : Destination index
IP : Instruction pointer
7.            CS, DS, SS และ ES คืออะไร
รีจิสเตอร์กำหนดเซกเมนต์ เพราะโปรแกรมหนึ่ง ๆ จะประกอบด้วยส่วนสำคัญ 4 ส่วน แต่ละส่วนแยกออกจากกันอย่างชัดเจน แต่โปรแกรมทุกโปรแกรมมิได้ใช้ทุก segment เสมอไป
CS : Code segment
DS : Data segment
SS : Stack segment
ES : Extra segment

2 ความคิดเห็น: