วันพฤหัสบดีที่ 26 สิงหาคม พ.ศ. 2553

1.หน่วยคำนวณและตรรกะ

หน่วยคำนวณและตรรกะ (Arithmetic & Logical Unit : ALU)          
         หน่วยคำนวณตรรกะ ทำหน้าที่เหมือนกับเครื่องคำนวณอยู่ในเครื่องคอมพิวเตอร์โดยทำงานเกี่ยวข้องกับ การคำนวณทางคณิตศาสตร์ เช่น บวก ลบ คูณ หาร นอกจากนี้หน่วยคำนวณและตรรกะของคอมพิวเตอร์ ยังมีความสามารถอีกอย่างหนึ่งที่เครื่องคำนวณธรรมดาไม่มี คือ ความสามารถในเชิงตรรกะศาสตร์ หมายถึง ความสามารถในการเปรียบเทียบตามเงื่อนไข และกฎเกณฑ์ทางคณิตศาสตร์ เพื่อให้ได้คำตอบออกมาว่าเงื่อนไข นั้นเป็น จริง หรือ เท็จ เช่น เปรียบเทียบมากว่า น้อยกว่า เท่ากัน ไม่เท่ากัน ของจำนวน 2 จำนวน เป็นต้น ซึ่งการเปรียบเทียบนี้มักจะใช้ในการเลือกทำงานของเครื่องคอมพิวเตอร์ จะทำตามคำสั่งใดของโปรแกรมเป็น คำสั่งต่อไป
         ส่วนคำนวณเป็นส่วนประมวลผล ซึ่งนับว่าเป็นส่วนที่สำคัญที่สุด หรือ "หัวใจ" ของเครื่องคอมพิวเตอร์ ส่วนคำนวณทำหน้าที่ใหญ่ ๆ สองประการ คือ ประการแรกทำการบวก ลบ คูณ และหาร ประการที่สองคือ ทำหน้าที่ตัดสินใจว่าข้อมูลส่วนใหญ่หรือเล็กกว่าอีกข้อมูลหนึ่ง หน้าที่ทั้งสองประการนี้สามารถปฎิบัติการเป็นผลสำเร็จได้โดยอาศัยวงจรตรรกอันเป็นวงจรอิเล็กทรอนิกส์ จึงทำให้ส่วนคำนวณนี้มีชื่อเรียกอีกอย่างหนึ่งว่า ส่วนคำนวณตรรกะ (arithmetic logic unit; ALU) นอกจากนี้ ส่วนคำนวณสามารถเลื่อนข้อมูลไปทางซ้าย หรือทางขวา เก็บหรือย้ายข้อมูลไปยังส่วนอื่น ๆ ของส่วนควบคุมกลางได้ วงจรตรรกะ (logic circuits) เป็นวงจรทางอิเล็กทรอนิกส์ที่ใช้ส่วนประกอบ เช่น ตัวความต้านทาน ตัวเก็บประจุ ไดโอด ทรานซิสเตอร์ ฯลฯ มาจัดให้สามารถทำงานแทนการคำนวณทางตรรกะได้ โดยใช้ "การมีสัญญาณไฟฟ้า" และ "ไม่มีสัญญาณไฟฟ้า" แทนสภาวะตรรกะ "จริง" และ "เท็จ" หรือ "1" กับ "0" ทำให้สามารถสร้างวงจรขึ้นได้ 2 ชนิดใหญ่ ๆ คือ

1.วงจรตรรกะจัดหมู่ (combination logic) เป็นวงจรที่ให้สัญญาณผลลัพธ์ขึ้นอยู่กับสภาวะของสัญญาณป้อนเข้าเท่านั้น วงจรนี้จึงไม่สามารถเก็บสัญญาณไว้ได้ หรือ วงจรนี้ไม่มีความจำ เช่น วงจรอินเวอร์เทอร์ หรืออินเวอร์เทอร์เกต (inverter circuit หรือ inverter gate) คือ วงจรที่ทำหน้าที่กลับสภาวะตรรกะ "1" ให้เป็น "0" หรือจาก "0" ให้เป็น "1"
เกต "หรือ" (Or gate) เป็นวงจรที่ทำหน้าที่แทนปฏิบัติการทางตรรกะ "หรือ" วงจรนี้มีสัญญาณเข้า (input) ตั้งแต่สองจุดขึ้นไป แต่มีสัญญาณออก (output) หนึ่งจุด
เกต "และ" (And gate) เป็นวงจรที่ทำหน้าที่แทนปฏิบัติการทางตรรกะ "และ" วงจรนี้มีสัญญาณเข้าตั้งแต่สองจุดขึ้นไป และมีสัญญาณออกหนึ่งจุด


2.วงจรตรรกะจัดลำดับ (sequential logic) เป็นวงจรที่มีสัญญาณผลลัพธ์ขึ้นอยู่กับสัญญาณป้อนเข้า และขึ้นอยู่กับสภาวะเดิมของสัญญาณผลลัพธ์ด้วย วงจรนี้มีคุณสมบัติที่สามารถเก็บสัญญาณ หรือความจำไว้ได้ แต่เมื่อเลิกทำงาน ปิดไฟฟ้าที่ไปเลี้ยงวงจรเหล่านี้ สัญญาณหรือความจำจะสูญหายไป เช่น วงจรฟลิปฟล็อป (flip-flop) วงจรนับ (counter) วงจรชิฟต์รีจิสเตอร์ (shift register)
วงจรบวก คือวงจรที่ทำหน้าที่บวกเลขฐานสอง โดยอาศัยวงจรตรรกะเข้ามาประกอบเป็นวงจรบวกครึ่ง (half adder; H.A.) ซึ่งจะให้ผลบวก S และการทดออก Co ดังตาราง เมื่อนำเอาวงจรบวกครึ่งสองวงจรกับเกต "หรือ" หนึ่งวงจรมารวมกันเป็นวงจรบวกเต็ม โดยมีการทดเข้า ทดออก และผลบวก
วงจรลบ เป็นวงจรที่ทำหน้าที่คล้ายวงจรบวก โดยใช้วงจรอินเวอร์เทอร์เข้าเปลี่ยนเลขตัวลบให้เป็นตัวประสม 1 (1's complement) คือเปลี่ยนเลข "0" เป็น "1" หรือ "0" เป็น "0" แล้วนำเข้าบวกกับตัวตั้ง เราก็จะได้ผลลบตามต้องการ
วงจรคูณและหาร การคูณสามารถทำได้ด้วยการบวกซ้ำ ๆ กัน และการหารสามารถทำได้ด้วยการลบซ้ำ ๆ กัน ดังนั้น การคูณก็คือ การจัดให้วงจรบวกทำการบวกซ้ำ ๆ กัน ส่วนการหารก็คือการจัดให้วงจรลบทำการลบซ้ำ นอกจากหลักการดังกล่าวแล้ว อาจจะใช้อีกหลักการหนึ่งคือ การคูณหารบางประเภทสามารถทำได้โดยการเลื่อนจุดไปทางซ้ายหรือขวา เช่น 256.741 X 100 = 25674.1 หรือ 256.741 / 100 =2.56741 เป็นต้น ส่วนเลขฐานสองที่คอมพิวเตอร์ใช้ก็ทำได้ในทำนองเดียวกัน

«-- ..•.¸¸•´¯`•.¸¸•´¯`•.¸¸•´¯`•.¸¸•´¯`•.¸¸•´¯`•.¸¸•´¯`•.¸¸.•´¯`•.¸•.>>--»
(ต่อ)

วันพุธที่ 18 สิงหาคม พ.ศ. 2553

2.การปฏิบัติงานและคำนวณทางคณิตศาสตร์(ALU)

การปฏิบัติงานของหน่วยคำนวณทางคณิตศาสตร์และตรรกวิทยา (ALU)

ขั้นตอน
– ข้อมูลถูกนำเข้ามาจากหน่วยความจำหลัก ตำแหน่งตาม Address Register นำไปเก็บไว้ที่ Storage Register
– ส่งไปยังวงจรคำนวณหรือวงจรตรรกวิทยา
– ผลลัพธ์ถูกส่งกลับมายัง Accumulator Register
– ส่งต่อไปยังหน่วยความจำหลัก















ที่เก็บข้อมูลชั่วคราว
– Storage Register เก็บข้อมูลที่จะถูกใช้ในการคำนวณและเปรียบเทียบ
– Accumulator Register เก็บผลลัพธ์จากการคำนวณ

การเปลี่ยนเป็นค่าตรงข้ามใช้ sign-and-magnitude
      +21 = 00010101
      -21  = 10010101 sign-and-magnitude

การเปลี่ยนเป็นค่าตรงข้ามใช้ 2’s complement
     +21  = 00010101 2’s complement
             = 11101010  กลับค่าแต่ละบิต
              +              1
     -21   = 11101011

 
 การบวกและการลบ

ใช้ 2’s complement
- ใช้หลัก a-b = a+(-b)
- ไม่คิดตัวทด และค่าสูงสุดไม่เกินของจำนวนบิต
ใช้ 1’s complement
- ถ้ามีตัวทดเกิดขึ้น จะนำไปบวกเข้ากับค่าผลลัพธ์ที่ได้




การคูณจำนวนเต็มไม่มีเครื่องหมาย

- ตั้งตัวคูณให้ตำแหน่งขวาสุดตรงกับตัวตั้ง
- ผลคูณย่อยที่เกิดขึ้นตำแหน่งขวาสุดให้ตรงตัวคูณ
- นำผลคูณย่อยมารวมกัน










การหารจำนวนเต็มไม่มีเครื่องหมาย

 











Haft Adder และ Full Adder













ตารางค่าความจริงของการบวกเลข 2 บิต และวงจรสำหรับการบวกเลข 2 บิต

Haft Adder และ Full Adder












ตารางค่าความจริงการบวกเลข 3 บิต (2 บิตและมีตัวทด) และสัญลักษณ์ Full Adder

Full Subtractor










ตารางค่าความจริงและสัญลักษณ์ของ Full Subtractor

Haft Adder และ Full Adder
วงจร Full Adder ที่เกิดจาก Haft Adder 2 ตัว

Ripple-Carry Adder
- Ripple-Carry Adder (ขนาด 4 บิต)
- ตัวบวกขนาด 16 บิตที่เกิดจากการเรียงต่อกันของ Ripple-Carry Adder 4 ตัว

Ripple-Borrow Subtractor
- Ripple-Borrow Subtractor (ขนาด 4 บิต)
- ตัวลบขนาด 16 บิตที่เกิดจากการเรียงต่อกันของ Ripple-Borrow Subtractor 4 ตัว 

«-- ..•.¸¸•´¯`•.¸¸•´¯`•.¸¸•´¯`•.¸¸•´¯`•.¸¸•´¯`•.¸¸•´¯`•.¸¸.•´¯`•.¸•.>>--»
(จบ)