รูปแบบคำสั่งและการบ่งตำแหน่งที่อยู่

รูปแบบคำสั่งและการบ่งตำแหน่งที่อยู่

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

1. รหัสที่ใช้แทนอักขระ

            1) รหัสแอสกี
                รหัสแอสกี (ASCII)   เป็นเป็นรหัสที่กำหนดขึ้นโดยหน่วยงานกำหนดมาตรฐานของสหรัฐอเมริกา ย่อมาจาก American Standard Code for Information Interchange  เป็นรหัส 8 บิต ใช้แทนสัญลักษณ์ต่าง ๆ ได้ 256 ตัว นิยม ใช้กันแพร่หลายกับระบบคอมพิวเตอร์ทั่วไปและระบบสื่อสารข้อมูล
จากหลักการของระบบเลขฐานสอง แต่ละบิตสามารแทนค่าได้ 2 แบบ คือ เลข 0 หรือเลข 1 ถ้าเราเขียนเลขฐานสอง เรียงกัน 2 บิต ในการแทนอักขระ เราจะมีรูปแบบในการแทนอักขระได้ 2 หรือ 4 รุปแบบคือ 00 ,01 ,10 ,11 ดังนั้นในการใช้รหัสแอสกีซึ่งมี 8 บิต ในการแทนอักขระแล้ว เราจะมีรูปแบบที่ใช้แทนถึง 28 หรือ 256 รูปแบบ ซึ่งเมื่อใช้แทนตัวอักษรภาษาอังกฤษแล้ว ยังมีเหลืออยู่ สำนักงานมาตรฐานผลิตภัณฑ์อุตสาหกรรม หรือ สมอ.จึงได้กำหนดรหัสภาษาไทยเพิ่มลงไปเพื่อให้ใช้งานร่วมกัน



          2) รหัสเอ็บซีดิก
              รหัสเอ็บซีดิก (EBCDIC) เป็นคำย่อมาจาก Extended Binary Coded Decimal Interchange Code พัฒนาและใช้งาน โดยบริษัทไอบีเอ็ม เครื่องคอมพิวเตอร์เมนเฟรมของไอบีเอ็มยังคงใช้รหัสนี้ การกำหนดรหัสจะใช้ 8 บิต หรือ 1 ไบต์ ต่อหนึ่งอักขระ เหมือนกับรหัสแอสกี แต่รูปแบบของรหัสที่กำหนดจะแตกต่างกัน
 โครงสร้างรหัสเอ็บซีดิก มีดังนี้
                               บิตที่                    รหัส                               ประเภทของตัวอักขระ
                               0 - 1                      01                                     สัญลักษณ์ต่าง ๆ
                                                            10                                     ตัวหนังสือภาษาอังกฤษแบบพิมพ์ตัวเล็ก
                                                            11                          ตัวหนังสือภาษาอังกฤษแบบพิมพ์ตัวใหญ่และตัวเลข
                               2 - 3                      00                                      A - I
                                                            01                                      J - R
                                                            10                                      S - Z
                                                            11                                      ตัวเลข
                               4 - 7                                                               รหัสแทนอักขระแต่ละตัวในกลุ่ม

              3) รหัสยูนิโค้ด
                  รหัสยูนิโค้ด (Unicode) เป็นรหัสที่สร้างขึ้นมาในระยะหลังที่มีการสร้างแบบตัวอักษรของภาษาต่าง ๆ รหัสยูนิโค้ด เป็นรหัสที่ต่างจาก 2 ชนิด ที่ได้กล่าวมา คือใช้เลขฐานสอง 16 บิต ในการแทนตัวอักษร เนื่องจากที่มาของการคิดค้นรหัสชนิดนี้ คือ เมื่อมีการใช้งานคอมพิวเตอร์ในหลายประเทศและมีการสร้างแบบตัวอักษร (font) ของภาษาต่าง ๆ ทั่วโลกในบางภาษา เช่น ภาษาจีน และภาษาญี่ปุ่น เป็นภาษาที่เรียกว่าภาษารูปภาพ ซึ่งมีตัวอักษรเป็นหมื่นตัว หากใช้รหัสที่เป็นเลขฐานสอง 8 บิต เราสามารถแทนรูปแบบตัวอักษรได้เพียง 256 รูปแบบซึ่งไม่สามารถแทนตัวอักษรได้ครบ จึงสร้างรหัสใหม่ขึ้นมาที่สามารถ แทนตัวอักขระได้ถึง 65,536 ตัว ซึ่งมากพอและสามารถแทนสัญลักษณ์กราฟิกและสัญลักษณ์ทางคณิตศาสตร์ได้อีกด้วย

2.  รูปแบบคำสั่ง

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

องค์ประกอบของคำสั่งภาษาเครื่อง

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

ชนิดของคำสั่ง

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

         1. อ่านข้อมูลที่เก็บอยู่ที่ตำแหน่ง 513 เข้ามาไว้ในรีจิสเตอร์
         2. นำค่าที่เก็บอยู่ใน 514 มาบวกเข้ากับรีจิสเตอร์
         3. นำผลลัพธ์ในรีจิสเตอร์ไปบันทึกไว้ที่ตำแหน่ง 513

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

ที่อยู่อ้าอิงในคำสั่งเครื่อง

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

3. ชนิดของตัวถูกดำเนินการ

     คำสั่งเครื่องทำงานกับข้อมูลซึ่งสามารถแบ่งออกตามชนิดหรือประเภทได้ดังนี้
            1. ตำเหน่งที่อยู่
            2. ตัวเลข
            3. ตัวอักษร
            4. ข้อมูลภาพ

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

ข้อมูลตัวเลข

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

ข้อมูลตัวอักษร

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

ข้อมูลตรรกะ

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

4. การบ่งตำแหน่งที่อยู่

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

            การบ่งตำแหน่งทันที

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

            การบ่งตำแหน่งโดยตรง

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

            การบ่งตำแหน่งทางอ้อม

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



ที่มา : http://neung.kaengkhoi.ac.th/mdata/rsdata4.html

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

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