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

วันเสาร์ที่ 28 พฤศจิกายน พ.ศ. 2558

บทที่ 9 โครงสร้างหน้าที่ของซีพียู

โครงสร้างหน้าที่ของซีพียู
          ด้วยเครื่องคอมพิวเตอร์มีความซับซ้อน มาก และ ยังประกอบด้วย ชิ้นส่วนอิเลคทรอนิกส์ ย่อย อีก นับ จำนวน หลายล้านชิ้น ดังนั้น การทำความเข้าใจ การทำงานของคอมพิวเตอร์ ให้ ชัดเจนนั้น จึงต้อง เข้าใจ โครงสร้างในระดับ ชั้น ก่อน แล้ว จึง ไล่ ลงไปจนถึงระดับล่าง
        หน้าที่การทำงาน
          โครงสร้างโดยพื้นฐาน แล้ว ประกอบไปด้วยพื้นฐาน สี่ส่วนคือ
-Data processing facility
-Data storage facility
-Data movement apparatus
-Control mechanism
-Data processing facility
         เครื่องคอมพิวเตอร์ต้องมีความสามารถในการประมวลผล และ ข้อมูลที่จะนำมาประมวลผลนั้นต้องประมวลผลได้หลากหลายรูปแบบได้
-Data storage facility
          เครื่องคอมพิวเตอร์ต้องมีความสามารถในการ จัดเก็บข้อมูล ในระยะสั้น และ ในระยะ ยาว
-Data movement apparatus
        เครื่องคอมพิวเตอร์สามารถเคลื่อนย้าย ข้อมูลจากภายในเครื่อง ไปยัง ส่วนอุปกรณ์อื่น ๆ ได้ กระบวนการนี้ส่วนใหญ่ถูกเรียกว่า (Input/Output หรือ I/O),อุปกรณ์ต่อพ่วงจะเรียก (Peripherals) และ ถ้าข้อมูลถูกเคลื่อนย้ายไประยะไกลเรียก (Data Communication)
-Control mechanism
     เครื่องคอมพิวเตอร์มีความสามารถ ในการ ควบคุม โดยเฉพาะ การควบคุม ในส่วนที่กล่าวมาข้างต้นทั้ง สามอย่าง
ภาพองค์ประกอบเครื่องคอมพิวเตอร์แบ่งตามหน้าที่การทำงาน


ลักษณะการทำงานของคอมพิวเตอร์

ลักษณะการทำงานของคอมพิวเตอร์

          โครงสร้างโดยปกติแล้วอุปกรณ์ที่ติดต่อหรือต่อพ่วงกับอุปกรณ์ภายนอกทั้งหมด ถูกเรียกว่า (peripherals) หรือ สายสื่อสาร (Communicaition lines) ในระดับบนสุดของคอมพิวเตอร์ จะประกอบด้วย 4 องค์ประกอบใหญ่ๆ คือ
                             -(CPU : Central Processing Unit)
                             -main memory
                             -(I/O : Input/Output)
                             -(system interconnection)
                             ส่วนประกอบในระดับบนสุด



ส่วนประกอบของหน่วยประมวลผลกลาง




-(Control unit) ควบคุมการทำงานของ CPU
             -(ALU: Arithmetic and Logic unit) ประมวลผล  
   คำสั่งคณิตศาสตร์และคำสั่งตรรกะ
- (register) หน่วยบันทึกข้อมูลภายใน CPU
- (CPU interconnection) ส่วนที่ช่วยให้
  ส่วนประกอบ  ทั้งสามส่วนสามารถสื่อสาร  ระหว่างกันได้
ลักษณะการประมวลผลของคอมพิวเตอร์
             คอมพิวเตอร์ในปัจจุบันแทบทุกเครื่องออกแบบ ตามแนวคิด
พื้นฐานของ John von Neumann ของ Institute for Advanced Studies
มหาวิทยาลัย Princeton อเมริกา โดย มีพื้นฐานสามประการดังนี้
-  ข้อมูลและคำสั่งต้องถูกเก็บไว้ในหน่วยความจำที่สามารถเข้าถึงได้
- สิ่งที่เก็บอยู่ในหน่วยความจำสามารถเข้าถึงโดยใช้ตำแหน่งอ้างอิง
- การประมวลผลเกิดขึ้นตามลำดับโดยอัตโนมัติ ยกเว้น กำหนดลำดับให้เป็นอย่างอื่น
แนวทางปฏิบัติของฮาร์ดแวร์และซอฟต์แวร์
              ในภาพ (a) programming in hardware   คือมีการสร้างกลุ่ม function การคำนวณ และ ตรรกะขึ้นมาและ ออกแบบ Hardware ให้ทำหน้าที่โดยเฉพาะ ระบบ เพียงรับข้อมูลมา และสร้างผลลัพธ์ออกไป โดยไม่ต้องการสัญญาณ ควบคุม ในการประมวลผลคำสั่ง ของ Hardware
แนวทางปฏิบัติของฮาร์ดแวร์และซอฟต์แวร์


แนวทางปฏิบัติของฮาร์ดแวร์และซอฟต์แวร์
              ในภาพ (b) programming in software   ระบบจะรับข้อมูลมาพร้อมกับสัญญาณ ควบคุม แล้ว จึงสร้างผลลัพธ์ ออกมา แตกต่างจาก ภาพ (a) คือ ไม่จำเป็นต้องออกแบบ hardware หรือ วงจรใหม่ เพียงแต่ผู้เขียนโปรแกรม เขียนโปรแกรมเพื่อ ควบคุมสัญญาณควบคุมอีกที โดยสัญญานควบคุมพื้นฐาน จะมี Code ที่เป็นสัญลักษณ์ เฉพาะตัว จึงเพียงเขียนโปรแกรม เพื่อควบคุมสัญญาน โดยดูความสอดคล้องวัตถุประสงค์ของโปรแกรมใหม่ ตัวแปลความ จะแปลความ ส่วนโปรแกรมที่เราเขียน และสร้างสัญญาน ควบคุมอันใหม่ให้ ทำให้ ได้ ผลลัพธ์ ในแบบที่ต้องการได้

แนวทางปฏิบัติของฮาร์ดแวร์และซอฟต์แวร์

                  จากลักษณะสองอย่างที่สำคัญของระบบที่กล่าวมา คือ ตัวแปลคำสั่ง (instruction interpreter) และ หน่วยประมวลผลทั่วไปสำหรับคำสั่งทางคณิตศาสตร์และตรรกะ ซึ่งรวมกันเป็น CPU แต่ยังมีหน่วยย่อยที่สำคัญกับระบบคือ หน่วยรับข้อมูล (input module) ซึ่งเป็นส่วนพื้นฐานในการับข้อมูลเข้าของระบบ และ หน่วยย่อยที่สำคัญอีกชนิดหนึ่งคือ หน่วยแสดงผลลัพธ์ เรียก หน่วยแสดงผลข้อมูล (output module) ทั้งสองหน่วยย่อยรวมกันเรียกว่า หน่วยไอโอ (I/O component) แต่ในบางครั้งการประมวลผลจะไม่เป็นลำดับ หรืออาจมีการนำข้อมูลจากส่วนอื่นนำมาประกอบจึงจำเป็นต้อง มีที่ เก็บข้อมูลดังกล่าวไว้ จึงมีหน่วยพักข้อมูลเกิดขึ้นเพื่อรองรับข้อมูลไว้ เรียก หน่วยความจำหลัก (main memory)
           ภาพระดับบนสุดของโครงสร้างส่วนประกอบของคอมพิวเตอร์
จะแสดงให้เห็นถึงส่วนประกอบหลักในมุมมองระดับ บนสุดของระบบคอมพิวเตอร์ และ แสดงความสัมพันธ์ของอุปกรณ์ ในหน่วยย่อยต่างๆที่สัมพันธ์กัน ซึ่งจะมี สี่ส่วน คือ
- CPU
-I/O module
-main memory
-system bus
ภาพระดับบนสุดของโครงสร้างส่วนประกอบของคอมพิวเตอร์

ส่วนประกอบในการประมวลผลโปรแกรม
              การประมวลผลโปรแกรมนั้นตัวโปรแกรมจะบรรจุไปด้วยข้อมูลและคำสั่ง CPU จะประมวลผลทีละคำสั่งเมื่อได้ทำการอ่านคำสั่งที่อยู่ในโปรแกรมเข้ามา การที่ CPU อ่านคำสั่งเข้ามาประมวลผลเรียก การดึงคำสั่ง(Instruction fetch) จะอ่านเข้ามาที่ละคำสั่ง  ในวงรอบการประมวลผล (Instruction cycle) แบบง่ายจะมี 2 ขั้นตอน คือ
-วงรอบการดึงคำสั่ง (fetch cycle)
-วงรอบการประมวลผล (execution cycle)   
              การประมวลผลจะหยุดลงเมื่อ คอมพิวเตอร์ถูกปิด หรือ เกิดความผิดปกติในโปรแกรม  หรือ  พบคำสั่งหยุดการทำงานในโปรแกรม            

ส่วนประกอบในการประมวลผลโปรแกรม

ตัวอย่างการประมวลผลโปรแกรม

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





ประเภทของ Interrupt (การขัดจังหวะ)
ประเภทของสัญญาณ Interrupts นั้นจะแบ่งตามลักษณะการถูกใช้งานโดยแบ่งได้เป็น 4 ชนิดด้วยกันคือ
- Program : เกิดจากโปรแกรม
-Timer : เกิดจากสัญญาณนาฬิกาในส่วนของ Processor
-I/O : เกิดจาก I/O controller
-Hardware Failure : เกิดจากความผิดปกติของการทำงานในส่วน Hardware
แสดงการควบคุมกรณี ไม่มี สัญญาณ Interrupt


แสดงการควบคุมกรณี มีการใช้ สัญญาณ Interrupt และมีการรอสัญญาณ I/O เล็กน้อย

แสดงการควบคุมกรณี มีการใช้ สัญญาณ Interrupt และมีการรอสัญญาณ I/O นาน

การเพิ่มประสิทธิภาพในการทำงานของการ Interrupt
              ในการเพิ่มประสิทธิภาพในการ Interrupt  นั้นได้เพิ่มวงรอบของสัญญาณ Interrupt (Interrupt circle) เข้าไปและให้ Processor คอยตรวจเช็คสัญญาณ Interrupt ตลอดเวลา กรณี มีสัญญาณ Interrupt เกิดขึ้นจะมีการทำงานดังภาพด้านล่าง

การเพิ่มประสิทธิภาพในการทำงานของการ Interrupt


การเพิ่มประสิทธิภาพในการทำงานของการ Interrupt เพิ่มการตรวจเช็ค


ตารางเวลาการทำงานของโปรแกรมมีการรอ I/O เล็กน้อย




  



การซ้อนกันของ Interrupt

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

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

                                             ลำดับเวลาที่เกิดขึ้นกับการขัดจังหวะซ้อน



 ที่มา:csit.psru.ac.th/~atthaphorn/architecture/interrupt.ppt

วันศุกร์ที่ 27 พฤศจิกายน พ.ศ. 2558

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

รูปแบบของคำสั่งและการบ่งตำแหน่งที่อยู่
       รหัสที่ใช้แทนอักขระ    
        ตัวอักษร ตัวเลขและสัญลักษณ์ หรือที่เรียกว่าอักขระในไมโครคอมพิวเตอร์จะแทนด้วยรหัสไบนารี ทุกครั้งที่เรากดแป้นพิมพ์ เช่น ปุ่มอักษร A ระบบก็จะรับอักษร A เข้าไปและแปลงเป็นรหัสไบนารี (เข้ารหัส) 1 ไบต์ เป็นต้น ในตารางที่ 8.1 แสดงมาตรฐานการใช้รหัสไบนารีแทนอักขระที่นิยมแพร่หลายในระบบไมโครคอมพิวเตอร์เรียกว่ารหัสASCII (อ่านว่า แอสกี้) ย่อมาจาก American Standard Code for Interchange จะใช้แทนทั้งสระ พยัญชนะ ตัวเลข สัญลักษณ์ ทั่วไป และอักษรที่ใช้ควบคุม เช่น LF คือ Line Feed หมายถึงให้เลื่อนไปบรรทัดถัดไป เป็นต้น จากตารางที่ 8.1 จะสังเกตเห็นว่าอักษรหรือสัญลักษณ์ 1 ตัวแทนได้ด้วยไบนารี 7 บิต แต่เนื่องจากระบบไมโครคอมพิวเตอร์จะใช้ 8 บิต (หรือ 1 ไบต์) เป็นมาตรฐาน ทำให้บิตเหลืออีก 1 บิต เป็นบิตสูงสุด (หมายถึงบิตซ้ายมือสุด) ซึ่งเราอาจให้บิตนี้เป็น 0 หรือ 1 ก็ได้
        รูปแบบคำสั่ง
         ไมโครโปรเซสเซอร์ไม่ว่าจะผลิตจากบริษัทไหนก็แล้วแต่ จะมีชุดคำสั่งประจำไมโคร-โปรเซสเซอร์เบอร์นั้น เช่น 8080 ของบริษัทอินเทลก็จะมีชุดคำสั่งเฉพาะของ 8080 ขณะที่ 6800 ของ โมโตโรลาก็จะมีชุดคำสั่งเฉพาะของ 6800 เป็นต้น คำสั่ง 8080 จะมาใช้กับ 6800 ไม่ได้และในทางกลับกัน คำสั่งของ 6800 จะใช้กับ 8080 ก็ไม่ได้ อย่างไรก็ดี ไม่ว่าจะเป็นคำสั่งของไมโครโปรเซสเซอร์เบอร์ใด พื้นฐานก็คือคำสั่งจะอยู่ในลักษณะไบนารี คำสั่งหนึ่งคำสั่งอาจประกอบด้วยไบต์เดียว สองไบต์ สามไบต์ หรือสี่ไบต์แล้วแต่กรณี ไบต์แรกของคำสั่งเรียกว่า โอเปอเรชันโค้ด (operation code)

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

        ที่อยู่อ้างอิงในคำสั่งเครื่อง
        วิธีการหนึ่งที่นิยมใช้ในการอธิบายสถาปัตยกรรมของเครื่องคอมพิวเตอร์ คือ การอธิบายจำนวนของ ที่อยู่อ้างอิงในคำสั่งเครื่องแต่ละคำสั่ง วิธีการนี้ได้รับความนิยมน้อยลงเมื่อการออกแบบซีพียูมีความสลับซับซ้อนมากขึ้น อย่างไรก็ตาม ก็ยังคงเป็นวิธีการที่มีประโยชน์สำหรับการวิเคราะห์ความแตกต่างของซีพียู
คำสั่งเครื่องแต่ละคำสั่ง มีความจำเป็นต้องอ้างอิงที่อยู่เป็นจำนวนเท่าใด คำสั่งเกี่ยวกับคณิตศาสตร์และตรรกะ มักจะต้องการการอ้างอิงที่อยู่ของตัวถูกดำเนินการ (Operand) มากกว่าคำสั่งชนิดอื่น โดยทั่วไปคำสั่งในกลุ่มนี้จะเป็นคำสั่งประเภท unary (ต้องการตัวถูกดำเนินการเพียงตัวเดียว) หรือ binary (ต้องการตัวถูกดำเนินการสองตัว) ดังนั้นจึงต้องการอ้างอิงถึงที่อยู่ของตัวถูกดำเนินการสูงสุดสองตัว ผลลัพธ์ที่ได้จากการคำนวณจะต้องถูกนำไปเก็บไว้ในหน่วยความจำ จึงอาจต้องการอ้างอิงที่อยู่แห่งที่สามในแต่ละคำสั่งนั้น ประการสุดท้ายเมื่อการประมวลผลคำสั่งนั้นสิ้นสุดลง ก็มีความจำเป็นจะต้องอ้างอิงที่อยู่ของคำสั่งในลำดับต่อไป
ด้วยเหตุผลดังกล่าว ทำให้น่าเชื่อว่าคำสั่งแต่ละคำสั่งจะต้องการการอ้างอิงที่อยู่สี่แห่งด้วยกัน(ที่อยู่สำหรับตัวถูกดำเนินการสองตัว ที่อยู่สำหรับเก็บผลลัพธ์ และที่อยู่สำหรับคำสั่งต่อไป) ในทางปฏิบัติแทบจะไม่มีคอมพิวเตอร์เครื่องใดที่มีการอ้างอิงที่อยู่มากถึงสี่แห่ง คำสั่งส่วนใหญ่จะอ้างอิงที่อยู่จำนวนระหว่างหนึ่งถึงสามที่อยู่ต่อคำสั่ง และนำที่อยู่ของคำสั่งต่อไปใส่ไว้ในรีจิสเตอร์แยกต่างหาก (เรียกว่า Program counter) ซึ่งแยกออกจากรีจิสเตอร์ที่ใช้ในคำสั่งเครื่อง
       ชนิดของตัวถูกดำเนินการ
       คำสั่งเครื่องทำงานกับข้อมูลซึ่งสามารถแบ่งออกตามชนิดหรือประเภทได้ดังนี้
- ตำแหน่งที่อยู่ (address)
- ตัวเลข (Number)
- ตัวอักษร (Character)
- ข้อมูลตรรกะ (Logical data)


          อันที่จริงตำแหน่งที่อยู่ก็เป็นข้อมูลชนิดหนึ่ง ในหลายกรณีมีการคำนวณเกิดขึ้นกับตัวถูกกระทำที่ถูกอ้างอิงในคำสั่งเครื่อง เพื่อกำหนดตำแหน่งที่อยู่ในหน่วยความจำหลัก หรือในหน่วยความจำเสมือน ในกรณีเช่นนี้ ตำแหน่งที่อยู่จะถูกคำนวณในลักษณะเดียวกันกับเลขแบบไม่มีเครื่องหมาย
ข้อมูลชนิดอื่นได้แก่ ตัวเลข ตัวอักษร และข้อมูลตรรกะ ซึ่งจะอธิบายถึงรายละเอียดในลำดับต่อไป นอกจากนี้แล้ว คอมพิวเตอร์บางเครื่องยังได้กำหนดข้อมูลหรือโครงสร้างข้อมูลชนิดพิเศษขึ้นใช้งาน เช่น ข้อมูลชนิดที่สามารถทำงานกับตัวถูกกระทำที่เป็นกลุ่มตัวอักษร (string) ได้โดยตรง
         ข้อมูลตัวเลข
          ภาษาเครื่องทุกชนิดจะมีข้อมูลชนิดตัวเลขไว้ใช้งาน แม้กระทั่งงานที่ไม่เกี่ยวข้องกับตัวเลขก็ยังมีความจำเป็นจะต้องใช้ตัวเลขมาช่วยในการนับ บอกความกว้างหรือขนาดของข้อมูล และอื่น ๆ ความแตกต่างที่สำคัญระหว่างตัวเลขที่ใช้ในทางคณิตศาสตร์ทั่วไป กับตัวเลขที่เก็บอยู่ในเครื่องคอมพิวเตอร์คือ ตัวเลขคอมพิวเตอร์มีขนาดที่จำกัดเนื่องจากเหตุผลสองประการคือ ประการแรก ตัวเลขที่เก็บอยู่ในคอมพิวเตอร์นั้นถูกจำกัดขนาดด้วยรูปแบบที่ใช้อยู่ในเครื่องนั้น ประการที่สอง ในกรณีของเลขจำนวนจริงก็ถูกจำกัดขนาดด้วยระดับความเที่ยงตรงที่ต้องการนักพัฒนาโปรแกรมจึงต้องทำความเข้าใจในผลที่เกิดขึ้นจากการปัดเศษ การ overflow และการ underflow
          ข้อมูลชนิดตัวเลขมักจะแบ่งออกเป็นสามชนิด คือ
         - เลขจำนวนเต็ม (Integer of fixed point)
         - เลขจำนวนจริง (Floating point)
         - เลขฐานสิบ (Decimal point)
           โดยธรรมชาติแล้วการทำงานภายในเครื่องคอมพิวเตอร์นั้นใช้เลขฐานทั้งหมด แต่ส่วนที่ต้องติดต่อกับผู้ใช้ที่เป็นมนุษย์นั้นจะจำเป็นจะต้องใช้เลขฐานสิบ ดังนั้นจึงมีความจำเป็นที่จะต้อง
           ข้อมูลตัวอักษร
             รูปแบบข้อมูลที่ใช้งานทั่วไปคือตัวอักษร (text) หรือข้อความ (character string) ข้อมูลที่เป็นข้อความนั้น เป็นรูปแบบที่สะดวกสบายต่อคน แต่ในเวลาเดียวกันก็เป็นรูปแบบที่ไม่สามารถเก็บไว้ในคอมพิวเตอร์ หรือนำไปประมวลผลได้โดยง่าย เนื่องจากระบบดังกล่าวถูกออกแบบมาให้ทำงานกับเลขฐานสองเท่านั้น ดังนั้นจึงได้มีการประดิษฐ์รหัสสำหรับการเก็บข้อมูลตัวอักษรไว้ในคอมพิวเตอร์ รหัสแบบแรกที่ได้รับการออกแบบนำมาใช้งานคือ รหัสมอส (Morse code) ในปัจจุบันโค้ดรหัสที่ถูกนำมาใช้อย่างแพร่หลายเรียกว่า International Reference Alphabet (IRA) ซึ่งมีชื่อเรียกในประเทศสหรัฐอเมริกาว่า รหัสแอสกี้ (ASCII) ดังแสดงตัวอย่างในตาราง 8.1 รหัส IRA ได้รับความนิยมนำไปใช้งานทั่วโลก ตัวอักษรแต่ละตัวในรหัสนี้ถูกแทนด้วยเลขฐานสองจำนวน 7 บิต ทำให้สามารถกำหนดสัญลักษณ์ได้ 128 แบบ ซึ่งเป็นจำนวนที่มากเกินพอสำหรับตัวอักษรที่สามารถพิมพ์ออกทางเครื่องพิมพ์ได้ รหัสส่วนหนึ่งจึงถูกนำไปใช้เป็นหรัสควบคุม (control characters) รหัสควบคุมบางส่วนถูกนำมาใช้ในการควบคุมลักษณะการพิมพ์ในแบบต่าง ๆ ในขณะที่รหัสที่เหลือถูกนำไปใช้ในการสื่อสารข้อมูล รหัส IRA จะถูกเก็บและเรียกใช้เป็นข้อมูลขนาด 8 บิตต่อตัวอักษรเสมอ โดยบิตที่ 8

         ข้อมูลตรรกะ
         โดยปกติข้อมูลแต่ละเวิร์ด หรือแต่ละหน่วยที่สามารถอ้างอิงได้ (เช่น ไบต์ halfword, และอื่น ๆ ) จะถือเสมือนหนึ่งว่าเป็นข้อมูลหน่วยเดียว แต่ในบางครั้งก็มีความจำเป็นจะต้องพิจารณาข้อมูลในแต่ละหน่วยนั้นครั้งละ 1 บิต ซึ่งจะมีค่าเป็น “0” หรือ “1” เมื่อข้อมูลถูกมองในลักษณะนี้เรียกว่าเป็นข้อมูลแบบตรรกะ
การมองข้อมูลครั้งละ 1 บิตมีประโยชน์สองประการ ประการแรก บางครั้งก็มีความจำเป็นจะต้องเก็บข้อมูลอาร์เรย์แบบบูลลีน หรือข้อมูลที่เป็นเลขฐานสองโดยตรง ซึ่งข้อมูลแต่ละตัวจะกินเนื้อที่เพียง 1 บิตเท่านั้น การเก็บข้อมูลแบบตรรกะจึงถูกนำมาใช้ในงานประเภทนี้ได้อย่างมีประสิทธิภาพ ประการที่สอง ในบางครั้งก็มีความจำเป็นจะต้องจัดการกับข้อมูลธรรมดาครั้งละ 1 บิต ตัวอย่างเช่น ในการทำงานกับเลขจำนวนจริงโดยใช้ซอฟต์แวร์ จะต้องมีการเลื่อนตำแหน่งบิตข้อมูลเกิดขึ้น หรือในการแปลงเลขจากรหัส IRC เป็นรหัส BCD ก็ต้องอาศัยการเลื่อนบิตเช่นกัน
สังเกตว่าจากตัวอย่างทั้งสองที่ยกมานั้น ข้อมูลเดียวกันบางครั้งจะต้องอยู่ในรูปแบบตรรกะ บางครั้งก็อยู่ในรูปแบบของตัวเลข หรือตัวอักษร ชนิดของข้อมูลของหน่วยข้อมูลใด ๆ จะถูกกำหนดโดยชนิดของการกระทำที่เกิดขึ้นกับข้อมูลหน่วยนั้น ซึ่งจะไม่เกิดขึ้นในการทำงานของคำสั่งภาษาคอมพิวเตอร์ระดับสูง
          การบ่งตำแหน่งที่อยู่
           เมื่อ ซีพียู จะทำงานตามคำสั่ง ที่เขียนไว้ในหน่วยความจำ จะต้องนำคำสั่งจากหน่วยความจำถ่ายลงสู่ ซีพียูแล้วจึงจะประมวลผลตามวัฏจักรดังได้กล่าวมาแล้ว แต่ละคำสั่งจะมี ออปโค้ด เป็นไบต์แรก แล้วตามด้วยข้อมูลหรือตำแหน่งข้อมูลในไบต์ที่สองและสาม เมื่อซีพียู แปลรหัสออปโค้ดแล้วจะทราบว่า จะต้องไปนำข้อมูลจากที่ใดมาปฏิบัติต่อ เพื่อให้คำสั่งนั้นแล้วเสร็จ ในหัวข้อนี้จะกล่าวถึงวิธีต่าง ๆ ที่ซีพียูไปนำข้อมูลมาจากหน่วยความจำวิธีดังกล่าวนี้เรียกว่า การแบ่งตำแหน่งที่อยู่หรือ แอดเดรสซิงโหมด (Addressing mode)
       การบ่งตำแหน่งทันที
       การบ่งตำแหน่งทันที (immediate mode) เป็น รูปแบบของการบ่งตำแหน่งที่ง่ายที่สุดคือ ตัวถูกกระทำจะปรากฏอยู่ ในคำสั่งนั้น หรือค่าของตัวถูกกระทำปรากฏอยู่กับคำสั่ง หรือค่าของตัวถูกกระทำจะเขียนตามหลังคำสั่งตำแหน่งที่ติดต่อกัน ซึ่งหมายความว่า เราสามารถที่จะดึงตัวถูกกระทำจากหน่วยความจำได้ ในเวลาเดียวกันกับที่ดึงคำสั่ง (Instruction fetch) ขึ้นมาทำงาน ดังนั้นจึงประหยัดวงรอบของการของการอ้างอิงหน่วยความจำไปได้หนึ่งรอบ ข้อด้อยวิธีการนี้คือ ขนาด ตัวเลขถูกจำกัดโดยขนาดของฟิลด์ที่อยู่ (Address field ) ซึ่งในคำสั่งส่วนใหญ่มักจะ มีขนาดเล็ก (เช่น20 บิต) เมื่อเทียบกับข้อมูล ขนาดหนึ่ง เวิร์ด (ปกติยาว 32 บิต)
        การบ่งตำแหน่งโดยตรง
         รูปแบบที่จัดว่าง่ายอีกวิธีหนึ่งคือ การบ่งตำแหน่งโดยตรง (direct addressing) ซึ่งเขตข้อมูลตำแหน่งที่อยู่จะบรรจุตำแหน่งจริงของตัวถูกกระทำเอาไว้ดังนี้
EA (Effective Address) = A
วิธีการนี้ได้รับความนิยมในการใช้งานกับคอมพิวเตอร์รุ่นแรก ๆ แต่ไม่เป็นที่นิยมใช้ในปัจจุบัน การประมวลผลจะต้องใช้วงรอบการอ้างอิงหน่วยความจำเพิ่มขึ้นอีกหนึ่งรอบ โดยที่ไม่ต้องมีการคำนวณเพิ่มเติม ข้อด้อยประการสำคัญคือ ขอบเขตที่จำกัดในการอ้างอิงตำแหน่งข้อมูลในหน่วยความจำ
       
การบ่งตำแหน่งทางอ้อม
          เนื่องจากวิธีการอ้างอิงโดยตรงนั้น ความยาวของเขตข้อมูลตำแหน่งที่อยู่มักจะมีขนาดสั้นกว่าความยาวของหนึ่งเวิร์ดจึงทำให้ขอบเขตในการอ้างอิงข้อมูลลดลง การแก้ปัญหานี้ทำได้โดยการใช้ขอบเขตข้อมูลตำแหน่งที่อยู่ในการอ้างอิงถึงตำแหน่งเวิร์ดในหน่วยความจำที่เก็บตำแหน่งที่แท้จริงของข้อมูลเอาไว้ วิธีการนี้เรียกว่า การอ้างอิงทางอ้อม (indirect addressing) มีรูปแบบดังนี้
EA = (A)  เครื่องหมายวงเล็บในที่นี้ใช้ในความหมายว่า ค่าที่เก็บอยู่ในตำแหน่งที่อ้างถึงโดย A (เขตข้อมูลตำแหน่งที่อยู่ในคำสั่ง)ข้อดีของวิธีการนี้คือ ถ้าเวิร์ดในหน่วยความจำมีขนาด N บิต จะทำให้ผู้ใช้สามารถอ้างอิงข้อมูลได้มากถึง 2N เวิร์ด ข้อเสียคือ คำสั่งประเภทนี้จะต้องอ้างอิงหน่วยความจำเพิ่มขึ้นอีก 2 วงรอบ จึงจะสามารถอ่านค่าตัวถูกกระทำและประมวลผลได้ นั่นคือหนึ่งวงรอบสำหรับอ่านเวิร์ดที่อ้างอิงถึงโดย A และอีกหนึ่งวงรอบสำหรับอ่านค่าข้อมูลที่แท้จริงที่เก็บอยู่ในตำแหน่งเวิร์ดที่ถูกระบุโดย A นั้น
           การบ่งตำแหน่งผ่านรีจีสเตอร์
          การอ้างอิงผ่านรีจีสเตอร์โดยตรง (register addressing) มีความคล้ายคลึงกับการอ้างอิงโดยตรง สิ่งที่แตกต่างกันก็คือ เขตข้อมูลตำแหน่งที่อยู่ในคำสั่งเครื่องจะบรรจุหมายเลขของ รีจีสเตอร์ที่อ้างอิง แทนการกำหนดตำแหน่งที่อยู่ในหน่วยความจำ  EA = R  โดยปกติเขตข้อมูลตำแหน่งที่อยู่ที่กำหนดหมายเลขของรีจีสเตอร์นั้น จะมีขนาดระหว่าง 3 ถึง 5 บิต ทำให้สามารถอ้างอิงรีจีสเตอร์ได้ตั้งแต่ 8 ถึง 32 ตัว
ข้อได้เปรียบของการอ้างอิงรีจีสเตอร์โดยตรงได้แก่
(1) คำสั่งเครื่องต้องการพื้นที่ขนาดเล็กมากสำหรับการอ้างอิงหมายเลขรีจีสเตอร์ และ
(2) ไม่ต้องเสียเวลาในการอ้างอิงหน่วยความจำเพื่ออ่านข้อมูลตัวถูกกระทำ เวลาที่ใช้ในการอ้างอิงข้อมูลในรีจีสเตอร์ที่เก็บอยู่ภายในตัวซีพียูนั้น น้อยกว่าเวลาที่ใช้อ้างอิงข้อมูลในหน่วยความจำมาก อย่างไรก็ตาม ข้อจำกัดของวิธีการนี้คือมีพื้นที่สำหรับเก็บข้อมูลขนาดจำกัดมาก