วันอาทิตย์ที่ 25 ตุลาคม พ.ศ. 2558

องค์ประกอบของระบบคอมพิวเตอร์

องค์ประกอบของระบบคอมพิวเตอร์

องค์ประกอบของระบบคอมพิวเตอร์
คอมพิวเตอร์ประกอบด้วยส่วนสำคัญ 5 ส่วนด้วยกัน คือ
1. ฮาร์ดแวร์ (Hardware) หมายถึง สิ่งที่มองเห็นและจับต้องสัมผัสได้ทั้งหมดที่เกี่ยวข้องกับคอมพิวเตอร์ ไม่ว่าจะเป็นตัวเครื่องคอมพิวเตอร์ (Case) เมนบอร์ด (Mainboard) และอุปกรณ์ต่อพ่วงรอบข้าง (Peripheral) ที่เกี่ยวข้อง เช่น ฮาร์ดดิสก์ แป้นพิมพ์ เม้าส์ หน่วยประมวลผลกลาง จอภาพ เครื่องพิมพ์ และอุปกรณ์อื่น ๆ ฮาร์ดแวร์จะไม่สามารถทำงานด้วยตัวเองเดี่ยว ๆ ได้ จะต้องนำมาต่อเชื่อมเพื่อทำงานร่วมกันเป็นระบบที่เรียกว่า "ระบบคอมพิวเตอร์ (Computer System)" ที่มีโครงสร้างของระบบจะทำงานตามโปรแกรมหรือซอฟต์แวร์ที่เขียนขึ้น
2. ซอฟต์แวร์ (Software) หมายถึง โปรแกรม (Program) หรือชุดคำสั่งที่ควบคุมให้เครื่องคอมพิวเตอร์ทำงานให้ได้ผลลัพธ์ตามที่ต้องการ ซึ่งคอมพิวเตอร์ฮาร์ดแวร์ที่ประกอบออกมาจากโรงงานจะยังไม่สามารถทำงานได้ในทันที ต้องมีซอฟต์แวร์ซึ่งเป็นโปรแกรมหรือชุดคำสั่งที่สั่งให้ฮาร์ดแวร์ทำงานตามต้องการได้ โดยโปรแกรมหรือชุดคำสั่งนั้นจะเขียนจากภาษาต่าง ๆ ที่มนุษย์สร้างขึ้น เรียกว่า ภาษาคอมพิวเตอร์ (Programming Language) ภาษาใดภาษาหนึ่ง และมีโปรแกรมเมอร์ (Programmer) หรือนักเขียนโปรแกรมเป็นผู้ใช้ภาษาคอมพิวเตอร์เหล่านั้นเขียนซอฟต์แวร์แบบต่าง ๆ ขึ้นมา
ซอฟต์แวร์ สามารถแบ่งออกเป็น 2 ประเภทใหญ่ ๆ คือ
            2.1ซอฟต์แวร์ระบบ (System Software) เป็นซอฟต์แวร์ที่ทำหน้าที่จัดการและควบคุม ทรัพยากรต่าง ๆ ของคอมพิวเตอร์ และอำนวยความสะดวกด้านเครื่องมือสำหรับการทำงานพื้นฐานต่าง ๆ ตั้งแต่ผู้ใช้เริ่มเปิดเครื่องคอมพิวเตอร์ การทำงานจะเป็นไปตามชุดคำสั่งที่เขียนขึ้น ตลอดจนควบคุมการสื่อสารข้อมูลในระบบเครือข่ายคอมพิวเตอร์
            2.2 ซอฟต์แวร์ประยุกต์ (Application Software) หมายถึง ซอฟต์แวร์ที่สร้างหรือพัฒนาขึ้น เพื่อใช้งานด้านใดด้านหนึ่งโดยเฉพาะตามที่ผู้ใช้ต้องการ เช่น งานด้านการจัดทำเอกสาร การทำบัญชี การจัดเก็บข้อมูลข่าวสาร ตลอดจนงานด้านอื่น ๆ ตามแต่ผู้ใช้ต้องการ
3. ข้อมูล/สารสนเทศ (Data/Information) คือ ข้อมูลต่างๆ ที่เรานำมาให้คอมพิวเตอร์ทำการประมวลผลคำนวณ หรือกระทำการอย่างใดอย่างหนึ่งให้ได้มาเป็นผลลัพธ์ที่เราต้องการ ยกตัวอย่างเช่น ข้อมูลบุคลากรเกี่ยวกับรายละเอียดประวัติส่วนตัว ประวัติการศึกษาหรือ ประวัติการทำงาน ซึ่งอาจนำมาจำแนกเป็นรายงานต่างๆ เกี่ยวกับบุคลากรในหน่วยงานได้ หรือข้อมูลเกี่ยวกับตัวเลขมาตรๆ ไฟฟ้าของบ้านแต่ละหลัง ก็ใช้สำหรับคำนวณเป็นปริมาณไฟฟ้า ที่ใช้ในแต่ละเดือน แล้วคิดเป็นเงิน ที่จะต้องชำระให้กับการไฟฟ้าฯ
4. บุคคลากร (Peopleware) คือ เจ้าหน้าที่ปฏิบัติงานต่างๆ และผู้ใช้เครื่องคอมพิวเตอร์ในหน่วยงานนั้นๆ บุคลากรด้านคอมพิวเตอร์นั้น มีความสำคัญมาก เพราะการใช้เครื่องคอมพิวเตอร์ทำงานต่างๆ นั้นจะต้องมีการจัดเตรียมเปลี่ยนระบบ จัดเตรียมโปรแกรมดำเนินการต่างๆ หลายอย่าง ซึ่งไม่สามารถทำด้วยตัวเองได้ ถ้าหากไม่ใช่ผู้ที่รู้เรื่องคอมพิวเตอร์มากนัก เราจึงถือว่าบุคลากร เป็นส่วนประกอบที่สำคัญของ ระบบคอมพิวเตอร์ด้วย ซึ่งสามารถสรุปเป็นประเภทใหญ่ ๆ ได้ดังนี้
- เจ้าหน้าที่ปฏิบัติการ (Operator)
- บุคลากรที่เกี่ยวข้องกับระบบ (System)
- ผู้จัดการศูนย์ประมวลผลคอมพิวเตอร์ (Electronic Data Processing Manager)
- ผู้ใช้คอมพิวเตอร์ (Computer user)
5. กระบวนการทำงาน (Documentation/Procedure) เป็นขั้นตอนการทำงานเพื่อให้ได้ ผลลัพธ์หรือข้อสนเทศจากคอมพิวเตอร์ ในการทำงานกับคอมพิวเตอร์จำเป็นที่จะต้องให้ผู้ใช้เข้าใจขั้นตอนการทำงาน ต้องมีระเบียบปฏิบัติให้เป็นแบบเดียวกัน มีการจัดทำคู่มือการใช้คอมพิวเตอร์ให้ทุกคนเรียนรู้และใช้อ้างอิงได้นอกจากนั้นเมื่อการใช้มาตรฐาน ช่วยให้การประสานงาน ระหว่างหน่วยงานย่อยๆ ราบรื่น การจัดซื้อจัดหา ตลอดจนการบำรุงรักษาเครื่องคอมพิวเตอร์ และซอฟต์แวร์ก็จะง่ายขึ้นเพราะทุกหน่วยงานใช้มาตรฐานเดียวกัน



สรุป
        องค์ประกอบของคอมพิวเตอร์จะมีอยู่ 5 ส่วนคือ ฮาร์ดแวร์  ซอฟต์แวร์   ข้อมูล/สารสนเทศ
บุคคลากร  กระบวนการทำงาน ซึ่ง 5 องค์ประกอบหลักนี้ จะทำงานไปพร้อมๆกันกับ



                          ที่มา http://www.comsimple.com/
                           1 /10/ 2558
หลักการคำนวณทางคณิตศาตร์

หลักการคำนวณทางคณิตศาตร์

หลักการคำนวณทางคณิตศาตร์

            การคำนวณในระบบคอมพิวเตอร์ จะรับข้อมูลจากผู้ใช้ระบบผ่านทาง Input Device เข้ามา ทำการประมวลผล (Process) เช่น การบวก การลบ การคูณ การหาร เปรียบเทียบ เสร็จแล้วนำผลที่ได้ออกแสดงผล (Output)  ดังรูป

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

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

หลักการคำนวณในระบบคอมพิวเตอร์ 

การคำนวณในระบบคอมพิวเตอร์ เครื่องคอมพิวเตอร์จะเรียงอันดับความสำคัญของเครื่องหมาย (Operator) ต่างๆ ก่อนว่าเครื่องหมายใดควรถูกกระทำก่อน – หลัง ซึ่งสามารถเรียงอันดับเครื่องหมายที่มีความสำคัญจากมากไปหาเครื่องหมายที่มีความสำคัญน้อย ดังนี้

ลำดับความสำคัญ
เครื่องหมาย
การคำนวณ
หลักการให้ความสำคัญ
1.
2.

3.
     ^   หรือ  *   *
     *
     /
     +
     -
ยกกำลัง
คูณ
หาร
บวก
ลบ
มีความสำคัญมากที่สุด
เครื่องหมายใดมาก่อนถูกประมวลผลก่อน   เช่น 4 / 2 * 3 = (4/2) * 3 = 2 x 3 = 6
เครื่องหมายใดมาก่อนถูกประมวลผลก่อน   เช่น 8 – 2 + 3 = (8 - 2) + 3 = 6+3 = 9
ข้อสังเกต  หลักการคำนวณในระบบคอมพิวเตอร์

1.  ถ้านิพจน์ใดมีวงเล็บให้สนใจทำการคำนวณเลขที่อยู่ในวงเล็บเป็นอันดับแรก

2.  เครื่องหมาย ^ (ยกกำลัง)  จะถูกประมวลผลก่อนเครื่องหมายอื่นๆ  เสมอ  เพราะมีความสำคัญมากที่สุด  ยกเว้นเครื่องหมายวงเล็บ

3.  เครื่องหมาย  *  กับ  /  มีระดับความสำคัญเท่ากัน  ดังนั้น  เครื่องหมายที่มาก่อน  (เครื่องหมายที่อยู่ทางซ้ายมือสุด)  จะถูกประมวลผลก่อน

4.  เครื่องมาย  +  กับ  -  มีระดับความสำคัญเท่ากัน  ดังนั้นระดับการประมวลผลจึงถูกประมวลผลเครื่องมือที่ทางด้านซ้ายสุดเป็นอันดับแรก

ตัวอย่าง  จงแสดงลำดับความสำคัญ  พร้อมหาคำตอบ

ตัวอย่าง   จาก  5 x 2 + (9 - 4)   จงหาคำตอบ

การคำนวณเลขฐานสิบ   

ตัวดำเนินการ (Operator) คือ ตัวดำเนินการที่ใช้ในการคำนวณค่าต่างๆ  ทางคณิตศาสตร์ และตัวดำเนินการตามหลักคณิตศาสตร์ในระบบคอมพิวเตอร์ โดยตัวดำเนินการชนิดนี้จะกระทำกับข้อมูลที่เป็นตัวเลข คือ จำนวนจริงหรือจำนวนเต็ม ผลลัพธ์ของการกระทำโดยตัวดำเนินการคณิตศาสตร์นี้จะเป็นข้อมูลชนิดตัวเลขเท่านั้น

ในการใช้ตัวดำเนินการคณิตศาสตร์ จะต้องกระทำกับค่า 2 ค่า ซึ่งจะอยู่สองข้างตัวดำเนินการเราเรียกค่า 2 ค่านี้ว่า ตัวโอเปอแรนด์ (Operand)

ตารางแสดงตัวอย่างตัวดำเนินการ (Operator) และตัวถูกดำเนินการ (Operand)
 นิพจน์ทางคณิตศาสตร์
ตัวดำเนินการ
ตัวถูกดำเนินการ
A  +  B
A  x  B  +  C  /  2
9  x  5  -  4
6  -  4  /  2  x  9  +  3^2
+
x ,  /  ,  +
x  ,  -
^  ,  /  ,  x  ,  -  ,  +
A  ,  B
A  ,  B  , C 
9  ,  5  ,  4
6  ,  4  ,  2  ,  9  ,  3

ตารางแสดงตัวอย่างตัวดำเนินการทางคณิตศาสตร์ที่นำไปใช้ในระบบคอมพิวเตอร์
 ตัวดำเนินการ
ความหมาย
ชนิดข้อมูลของโอเปอร์แรนด์
+
-
*
/
Div
mod
การบวก
การลบ
การคูณ
การหารจำนวนจริง
การหารจำนวนเต็ม
การหารจำนวนเต็มเอาเศษ
จำนวนเต็ม  ,  จำนวนจริง
จำนวนเต็ม  ,  จำนวนจริง
จำนวนเต็ม  ,  จำนวนจริง
จำนวนเต็ม  ,  จำนวนจริง
จำนวนเต็ม 
จำนวนเต็ม

ข้อสังเกต

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

·       ถ้านิพจน์นั้นเกิดมีเลขจำนวนจริงเพียงจำนวนเดียว หรือมีเครื่องหมาย  /  เพียงตัวเดียว  ผลลัพธ์ของนิพจน์นั้นจะเป็นตัวเลขจำนวนจริง เช่น 2 *  9  /  3  =  6.0  หรือ  5 + 4.0 = 9.0

ลำดับการทำงานของตัวดำเนินการ

                ในนิพจน์ทางคณิตศาสตร์ที่ใช้กันส่วนใหญ่จะมีเครื่องหมายหรือตัวดำเนินการหลายๆ ตัวในนิพจน์เดียวกัน เช่น a + b * c จากนิพจน์นี้เครื่องคอมพิวเตอร์ทำการประมวลผลโดยวิธีการคูณก่อนบวก ถ้าหากอยากให้ทำการบวกก่อนจะต้องใส่วงเล็บให้นิพจน์ (a + b) * c ดังนั้นเพื่อขจัดปัญหาความเข้าใจที่แตกต่างกัน จึงได้มีกฎการเรียงลำดับการทำงานของตัวดำเนินการต่างๆ ดังต่อไปนี้

1. นิพจน์ย่อยที่อยู่ในวงเล็บทั้งหมดจะถูกทำการประมวลหรือทำการคำนวณก่อน

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

3.   ตัวดำเนินการในนิพจน์เดียวกันจะถูกเรียงลำดับการทำงานโดยเรียงจากความสำคัญจากมากไปหาน้อยเครื่องหมายที่มีความสำคัญมากจะถูกคำนวณก่อนดังนี้

ก.      เครื่องหมาย  ^  (ยกกำลัง)  จะถูกดำเนินการก่อน

ข.      เครื่องหมาย  *  ,  /  ,  div  ,  mod

ค.      เครื่องหมาย  +  ,  -  จะถูกทำทีหลัง

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

ตารางแสดงลำดับการทำงานของตัวดำเนินการต่างๆ

ลำดับ
ตัวดำเนินการ
1
2
3
4
( )
^
*,  /  , mod , div
+  ,  -


เลขฐานสอง (อังกฤษ: binary numeral system) หมายถึง ระบบเลขที่มีสัญลักษณ์เพียงสองตัวคือ 0 (ศูนย์) กับ 1 (หนึ่ง) บางครั้งอาจหมายถึงการที่มีโอกาสเลือกได้เพียง 2 ทาง เช่น ปิดกับเปิด, ไม่ใช่กับใช่, เท็จกับจริง, ซ้ายกับขวา เป็นต้น

ถ้าแปลงค่าเลขฐานสิบ มาเป็นเลขฐานสอง จะได้ดังนี้

0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
10(A) = 1010
11(B) = 1011
12(C) = 1100
13(D) = 1101
14(E) = 1110
15(F) = 1111
ในปัจจุบันเลขฐานสองเป็นพื้นฐานในการทำงานของคอมพิวเตอร์ โดยนำเอาหลักการของเลขฐานสอง (สถานะไม่มีไฟฟ้า และ สถานะมีไฟฟ้า) มาใช้ในการสร้างไมโครโปรเซสเซอร์ที่มีหน่วยประมวลผลแบบ 32 หรือ 64 บิต หรือมากกว่านั้น ซึ่งสามารถเรียกได้ว่าเป็นการประมวลผลแบบดิจิทัล

                      ที่มา https://sites.google.com/site/30251commath/bth-reiyn/-4
                                                         25/10/2558

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

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

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

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

รหัสที่ใช้แทนอักขระ
          ตัวอักษร ตัวเลขและสัญลักษณ์ หรือที่เรียกว่าอักขระในไมโครคอมพิวเตอร์จะแทนด้วยรหัสไบนารี ทุกครั้งที่เรากดแป้นพิมพ์ เช่น ปุ่มอักษร A ระบบก็จะรับอักษร A เข้าไปและแปลงเป็นรหัสไบนารี (เข้ารหัส) 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) ไม่ต้องเสียเวลาในการอ้างอิงหน่วยความจำเพื่ออ่านข้อมูลตัวถูกกระทำ เวลาที่ใช้ในการอ้างอิงข้อมูลในรีจีสเตอร์ที่เก็บอยู่ภายในตัวซีพียูนั้น น้อยกว่าเวลาที่ใช้อ้างอิงข้อมูลในหน่วยความจำมาก อย่างไรก็ตาม ข้อจำกัดของวิธีการนี้คือมีพื้นที่สำหรับเก็บข้อมูลขนาดจำกัดมาก


ที่มา http://dol-kalon.blogspot.com/2009/03/8.html
25/10/2558

สรุป

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

โครงสร้างและหน้าที่ของ CPU

โครงสร้างและหน้าที่ของซีพียู

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

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

รีจีสเตอร์ส่วนที่ผู้ใช้มองเห็น
         รีจีสเตอร์ส่วนที่ผู้ใช้สามารถมองเห็นได้นั้น หมายถึง รีจีสเตอร์ที่สามารถใช้คำสั่งภาษาเครื่องควบคุมและใช้งานได้ผ่านการประมวลผล
โดยซีพียู รีจีสเตอร์กลุ่มนี้แบ่งออกเป็นประเภทดังนี้
- รีจีสเตอร์ใช้งานทั่วไป สามารถนำไปใช้งานได้หลายหน้าที่ตามที่ผู้พัฒนาโปรแกรมต้องการ แต่อาจมีรีจีสเตอร์บางตัวถูกกำหนด
ไว้ใช้งานกับเลขจำนวนจริงหรือเป็นตัวชี้ตำแหน่งในสแต๊ก ในบางกรณีรีจีสเตอร์ใช้งานทั่วไปสามารถนำไปใช้งานในการกำหนดที่อยู่
เช่น การอ้างอิงที่อยู่แบบรีจีสเตอร์ทางอ้อมหรือแบบดีสเพลชเมนต์ ตัวอย่าง รีจีสเตอร์ใช้งานทั่วไป ได้แก่ รีจีสเตอร์เก็บข้อมูลของซีพียู
8086 (AX, BX, CX, และ DX) เป็นต้น
- รีจีสเตอร์สำหรับเก็บตำแหน่งที่อยู่ อาจเป็นรีจีสเตอร์สำหรับใช้งานทั่วไป หรือเป็นรีจีสเตอร์ที่กำหนดให้ใช้การอ้างอิงเกี่ยวกับตำแหน่ง
ที่อยู่โดยตรง ตัวอย่าง รีจีสเตอร์เหล่านี้ ได้แก่
- ตัวชี้ตำแหน่งเซ็กเมนต์ (segment pointers) : ในเครื่องที่ใช้วิธีกำหนดตำแหน่งที่อยู่แบบเซ็กเมนต์ จะมีรีจีสเตอร์เซ็กเมนต์
(segment register) ในบางกรณีอาจมีการใช้รีจีสเตอร์มากกว่าหนึ่งตัว เช่น ตัวหนึ่งใช้สำหรับระบบปฏิบัติการและอีกหนึ่งใช้สำหรับ
โปรเซสที่กำลังถูกประมวลผล
- ตัวชี้ตำแหน่งดรรชนี (index registers) : รีจีสเตอร์ในกลุ่มนี้ใช้สำหรับการกำหนดตำแหน่งที่อยู่แบบ indexed
addressing และอาจเป็นชนิด autoindexing ก็ได้
- ตัวชี้ตำแหน่งในสแต็ก (stack pointer) : ถ้าคอมพิวเตอร์นั้นใช้ระบบ user-visible stack addressing
สแต็กที่นำมาใช้งานจะะเก็บอยู่ในหน่วยความจำและจะมีจีสเตอร์ตัวหนึ่งที่ใช้ในการชี้ตำแหน่งข้อมูลตัวบนสุดในสแต็กนั้น
วิธีการนี้ช่วยให้สามารถอ้างอิงตำแหน่งข้อมูลโดยนัยได้ นั่นคือการใช้คำสั่ง PUSH, POP และคำสั่งอื่น ๆ ที่เกี่ยวกับสแต็กก็ไม่มีความ จำเป็นจะต้องบอกตำแหน่งตัวถูกกระทำที่เก็บอยู่ในสแต็กนั้น
- รีจีสเตอร์สำหรับเก็บเงื่อนไขการทำงาน การเก็บเงื่อนไขการทำงานจะมีกลุ่มรีจีสเตอร์ที่ถูกกำหนดค่าขึ้นมาให้สอดคล้องกับผลการ
ประมวลผลของซีพียู เช่น การคำนวณทางคณิตศาสตร์ อาจทำให้ผลลัพธ์มีค่าเป็นจำนวนบวก จำนวนลบ เป็นศูนย์หรือ โอเวอร์โพลว์ก็ได้
กลุ่มบิตเหล่านี้ มักจะเรียกว่า "แฟล็ก” (Flags) ซึ่งจะแสดงไปพร้อม ๆ กับผลลัพธ์ที่คำนวณได้ และถูกเก็บไว้ในตำแหน่งที่
เก็บผลลัพธ์แล้ว บิตพิเศษกลุ่มนี้จะกำหนดค่าขึ้นมาให้สอดคล้องกับผลลัพธ์ที่ประมวลได้ เพื่อนำไปใช้ทดสอบค่าตามเงื่อนไขต่าง ๆ ที่ต้องการ

รีจีสเตอร์ควบคุมและแสดงสถานะ
          เป็นกลุ่มรีจีสเตอร์ที่ส่วนใหญ่จะไม่ยินยอมให้ผู้ใช้มองเห็น บางส่วนอาจยินยอมให้ใช้คำสั่งเครื่องในการประมวลผลได้
แต่ต้องกระทำในฐานะของระบบปฏิบัติการเท่านั้น ซีพียูแต่ละรุ่นจะมีการจัดองค์ประกอบของรีจีสเตอร์แตกต่างกัน
ส่วนใหญ่จะแบ่งรีจีสเตอร์สำหรับควบคุมและแสดงสถานะออกเป็นสี่ประเภทดังนี้
- PC (Program counter) เป็นรีจีสเตอร์ที่เก็บที่อยู่ของคำสั่งที่จะถูกประมวลผลในลำดับต่อไป
- IR (Instruction register) เป็นรีจีสเตอร์ที่เก็บคำสั่งเครื่องที่ถูกอ่านจากหน่วยความจำหลักเข้ามาเก็บ
- MAR (Memory address register) ใช้เก็บตำแหน่งที่อยู่อ้างอิงในหน่วยความจำหลัก
- MBR (Memory buffer register) ใช้เก็บข้อมูลขนาด 1 เวิร์ด ล่าสุดที่ถูกอ่านเข้ามาในซีพียูหรือ
ใช้เก็บข้อมูลเพื่อเตรียมบันทึกลงในหน่วยความจำหลัก
โดยทั่วไป ซีพียูจะปรับปรุงค่าในรีจีสเตอร์ PC ทันทีภายหลังจากที่ได้อ่านคำสั่งเข้ามา เพื่อให้รีจีสเตอร์ PC นี้ชี้ตำแหน่ง
คำสั่งที่จะถูกอ่านเข้ามาในลำดับต่อไปเสมอ คำสั่งประเภท branch หรือ skip ทำให้เกิดการเปลี่ยนแปลงค่าในรีจีสเตอร์
นี้ได้ คำสั่งที่ถูกอ่านเข้ามาจะถูกนำไปเก็บไว้ที่รีจีสเตอร์ IR ซึ่งจะถูกวิเคราะห์รหัสดำเนินงาน และตัวกำหนดค่าตัวถูกกระทำ

             การออกแบบซีพียูจะต้องกล่าวถึงรีจีสเตอร์ตัวหนึ่ง หรือกลุ่มหนึ่งที่เรียกว่า Program status word (PSW)
ซึ่งใช้เก็บข้อมูลสถานะการทำงานของซีพียูดังต่อไปนี้
- Sign : ใช้เก็บบิตเครื่องหมายของผลลัพธ์ที่เกิดขึ้นจากการประมวลผลคำสั่งทางคณิตศาสตร์ครั้งล่าสุด
- Zero : บิตนี้จะมีค่าเป็น “1” ถ้าผลลัพธ์ที่เกิดขึ้นจากการประมวลผลคำสั่งทางคณิตศาสตร์ครั้งล่าสุดมีค่าเป็น “0”
- Carry : บิตนี้จะมีค่าเป็น “1” ถ้าผลลัพธ์ที่เกิดขึ้นจากการประมวลผลคำสั่งทางคณิตศาสตร์ครั้งล่าสุดเกิดการยืมเลขจาก
หลักที่สูงกว่า หรือมีการทดเลขบิตที่มีค่าเกินบิตสูงสุด
- Equal : บิตนี้จะมีค่าเป็น “1” ถ้าผลการเปรียบเทียบทางตรรกะมีค่าเท่ากัน
- Overflow : ใช้สำหรับบอกให้ทราบว่า ผลลัพธ์ที่เกิดขึ้นจากการประมวลผลคำสั่งทางคณิตศาสตร์ครั้งล่าสุดเกิด overflow
- Interrupt enable/disable : ใช้ในการสั่งให้กระบวนการอินเทอร์รัพท์ทำงานหรือหยุดทำงาน
- Supervisor : ใช้ในการบอกสถานะ การทำงานของซีพียูว่า ในขณะนั้นมีสถานะเป็น user หรือ supervisor
คำสั่งเครื่องบางส่วนที่เป็นคำสั่งสงวน จะสามารถประมวลผลได้ และเนื้อที่หน่วยความจำบางส่วนจะสามารถอ้างอิงถึงได้ก็ต่อเมื่อซีพียูอยู่ในสถานะ supervisor เท่านั้น

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

ที่มา http://dol-kalon.blogspot.com/2009/03/9.html
25/10/2558

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

ระบบบัส

ระบบบัส

ระบบบัส(Bus) คืออะไร เกี่ยวข้องกับการทำงานของคอมพิวเตอร์อย่างไร


   ปัจจุบันนี้ ระบบคอมพิวเตอร์และสถาปัตยกรรมคอมพิวเตอร์ได้พัฒนาไปอย่างรวดเร็วและเป็นการพัฒนาไปในทางที่สวนกระแสกันด้วย กล่าวคือ คอมพิวเตอร์ได้รับการพัฒนาให้มีความสามารถมากขึ้น ทำงานได้เร็วขึ้นกว่าสมัยแรกๆมาก แต่ราคากลับถูกลงมากเช่นกัน
           การทำงานที่ดีขึ้นและเร็วขึ้นของคอมพิวเตอร์มาจากหลายสาเหตุด้วยกัน และส่วนหนึ่งที่ทำให้การสื่อสารภายในเครื่องคอมพิวเตอร์ทำงานได้เร็วขึ้น ก็คือเส้นทางในการลำเลียงข้อมูลไปยังส่วนต่างๆ ระหว่างหน่วยประมวลผลกลาง (CPU) กับอุปกรณ์รอบข้างต่างๆ ไม่ว่าจะเป็นหน่วยความจำหลัก (Main memory)หรือ อุปกรณ์ต่อพ่วงอื่นๆที่เชื่อมโยงกับคอมพิวเตอร์โดยตรง (I/O) ซึ่งเส้นทางดังกล่าว ก็คือ ระบบบัส (System Bus) หรือที่เรามักเรียกกันสั้นๆ ว่า “บัส” นั่นเอง

ระบบบัส (System Bus)
             เป็นเครื่องมือในการติดต่อสื่อสารและขนถ่ายข้อมูลระหว่างหน่วยประมวลผล (CPU) กับอุปกรณ์อื่นๆ โดยระบบบัสจะทำหน้าที่เป็นเส้นทางหลักของคอมพิวเตอร์ในการเชื่อมโยงอุปกรณ์ต่างๆ ไปยังหน่วยประมวลผลกลาง (CPU) เปรียบเสมือนเป็นถนนที่มีหลายช่องทางจราจร ที่ยิ่งมีช่องทางจราจรมาก ก็ยิ่งระบายรถได้มากและหมดเร็ว ซึ่งในหน่วยประมวลผลกลาง (CPU) จะมีบัสต่างๆ ดังนี้
– บัสข้อมูล (DATA BUS) เป็นบัสที่หน่วยประมวลผลกลาง (CPU) ใช้เป็นเส้นทางผ่านในการควบคมุการส่งถ่ายข้อมูลจากหน่วยประมวลผลกลาง (CPU) ไปยังอุปกรณ์อุปกรณ์ภายนอกหรือรับข้อมูลจากอุปกรณ์ภายนอก เพื่อทำการประมวลผลที่หน่วยประมวลผลกลาง (CPU)
 – บัสรองรับข้อมูล (ADDRESS BUS คือบัสที่หน่วยประมวลผลกลาง (CPU) เลือกว่าจะส่งข้อมูลหรือรับข้อมูลจากอุปกรณ์ไหนไปที่ใด โดยจะต้องส่งสัญญาณเลือกออกมาทาง ADDRESS BUS
 – บัสควบคุม (CONTROL BUS) เป็นบัสที่รับสัญญาณการควบคุมจากหน่วยประมวลผลกลาง (CPU) เพื่อบังคับว่าจะอ่านข้อมูลเข้ามา หรือจะส่งข้อมูลออกไป จากหน่วยประมวลผลกลาง (CPU) โดยระบบภายนอกจะตอบรับต่อสัญญาณควบคุมนั้น
              การออกแบบระบบบัส (System Bus) ของระบบคอมพิวเตอร์นั้น ได้รับการออกแบบให้ทำงานในรูปแบบของการแข่งขันเพื่อแย่งใช้ทรัพยากร นั่นคือในเวลาหนึ่งๆ สามารถมีการแย่งเพื่อขอใช้บัสได้จากอุปกรณ์หลายๆ ตัว แต่ทว่าจะมีเพียงอุปกรณ์หนึ่งตัวเท่านั้นที่สามารถใช้งานได้ ดังนั้น ถ้ามีอุปกรณ์จำนวนมากเชื่อมต่อเข้ากับบัส ก็จะทำให้ประสิทธิภาพการทำงานของบัสลดต่ำลง เนื่องจากจะทำให้บัสมีความยาวมากขึ้น ซึ่งก็จะทำให้การสื่อสารในบัสใช้ระยะเวลาหน่วงนานมากขึ้น และเมื่อมีความต้องการใช้งานบัสของอุปกรณ์ต่างๆ เพิ่มมากขึ้นจนถึงจุดอิ่มตัวในการให้บริการของบัสแล้ว ก็อาจจะส่งผลให้บัสเกิดปัญหากลายเป็นจุดคอขวดในการสื่อสารได้
ด้วยเหตุนี้ ทำให้ทั้ง Intel และ AMD ต่างก็ได้พยายามคิดค้นนวัตกรรมเกี่ยวกับเทคโนโลยีบัสใหม่ๆ ขึ้นมาเพื่อรองรับปัญหาต่างๆ ที่อาจจะเกิดขึ้นตามมาในอนาคตนั่นเอง
           บัส (bus) จากที่เคยได้กล่าวว่า คอมพิวเตอร์ทำการประมวลผลและเก็บข้อมูลเป็นชุดของบิท
 (มีค่า 0 กับ 1) นั้น ชุดของบิทจะถูกส่งไปในวงจรไฟฟ้าตามช่องทางต่างๆ ซึ่งแต่ละช่องทางนั้น เราเรียกว่า บัส ซึ่งเป็นเส้นทางที่ทำให้อุปกรณ์ต่างๆ ทั้งภายนอก ภายใน สามารถติดต่อสื่อสารข้อมูลกันได้ คล้ายกับเป็นถนนให้รถวิ่งจากจุดหนึ่งไปยังเป้าหมายได้ นั่นก็คือ บิทวิ่งไปตามบัสนั่นเอง บัสจะส่งข้อมูลจากอุปกรณ์รับเข้าไปยังหน่วยความจำ จากห่วยความจำไปยังหน่วยประมวลผล จากหย่วนประมวลผลไปยังหน่วยความจำ และจากหน่วยความจำไปยังอุปกรณ์ส่งออก หรือ หน่วยความจำสำรอง เช่น ฮาร์ดดิสก์
บัสประกอบด้วย ส่วน คือ บัสข้อมูลและบัสที่อยู่ บัสข้อมูลจะส่งข้อมูลจริงๆ ส่วนบัสที่อยู่จะส่งข้อมูลเกี่ยวกับตำแหน่งที่ข้อมูลควรจะอยู่ในหน่วยความจำ

   ขนาดของบัส สามารถวัดได้เป็นความกว้างบัส ซึ่งเป็นตัวระบุจำนวนบิทที่คอมพิวเตอร์สามารถส่งได้ในแต่ละครั้ง เช่น บัสที่มีขนาด 32 บิท (32-bit bus) จะสามารถส่งข้อมูลได้ 32 บิท หรือ 4 ไบท์ในแต่ละครั้ง ถ้าเราต้องการส่งข้อมูล 8 บิท โดยใช้บัสขนาดนี้ ก็จะต้องแบ่งส่ง 2 ครั้งด้วยกัน แต่ถ้าเราใช้บัสที่มีขนาด64 บิท ก็จะสามารถส่งข้อมูลได้ทั้งหมดภายในครั้งเดียว
           บัสจะมีสัญญาณนาฬิกาเช่นเดียวกับหน่วยประมวลผล ซึ่งผู้ผลิตกำหนดให้ีสัญญาณนาฬิกามีความถี่เป็นเฮิร์ต (hertz หรือ Hz) คำว่าเมกะเฮิร์ต (MHz) คือสัญญาณนาฬิกา (ติ๊ก) ล้านครั้งใน วินาที ในปัจจุบันส่วนใหญ่ หน่วยประมวลจะมีสัญญาณนาฬิกา ประมาณ 400, 533, 800 MHz ยิ่งค่าสัญญาณนาฬิกาสูงเท่าไหร่ ความเร็วในการส่งข็อมูลก็มากเท่านั้น

           บัสระบบ (system bus) เป็นส่วนหนึ่งเมนบอร์ด หรือแผงวงจรหลัก บัสระบบทำหน้าที่เป็นเส้นทางต่อระหว่างหน่วยประมวลผลกับหน่วยความจำ ส่วนบัสเสริมเป็นบัสที่ทำให้หน่วยประมวลสามารถติดต่อสื่อสารกับอุปกรณ์ต่อพ่วงอื่นๆ ได้ ส่วนใหญ่ที่มีการอ้างถึง บัส เฉยๆ จะหมายถึง บัสระบบ
          บัสเสริม (expansion bus) จะทำให้อุปกรณ์ภายนอกระบบสามารถติดต่อกับหน่วยประมวลผลได้ อุปกรณ์ต่อพ่วงจะต่อเข้ากับพอร์ต ซึ่งพอร์ตจะต่ออยู่บน ช่องเสริม (expansion slot) ซึ่งช่องเสริมนี้จะต่อกับ บัสเสริมเพื่อส่งข้อมูลไปยังหน่วยประมวลผล รูปข้างล่างนี้เป็นรูปของการส่งข้อมูลระหว่างหน่วยประมวลผล หน่วยความจำ อุปกรณ์ต่อพ่วงต่างๆ ผ่านทางบัสระบบ และบัสเสริม บัสเสริมบนเมนบอร์ดมีหลายชนิด แต่ละชนิดบ่งบอกถึงชนิดของการ์ดที่ต่างๆ ที่ต่ออย่บนคอมพิวเตอร์ ได้แก่ บัส ISA, บัส PCI, บัส AGP, บัสUSB และบัสไฟร์ไวร์
          บัสท้องถิ่น (local bus) เป็นบัสเสริมที่มีความเร็วสูง จะต่อกับอุปกรณ์ที่มีการทำงานเร็วๆ เช่น ฮาร์ดดิสก์ บัสท้องถิ่นที่ควรรู้จักได้แก่ VESA local bus (Video Electronics Standards Association local bus)ซึ่งส่วนใหญ่ใช้กับการ์ดวิดีโอเท่านั้น และบัส PCI เป็นบัสที่ใช้กับอุปกรณ์ต่างๆ ได้หลากหลายกว่า VESA lacal bus มาก และมีความเร็วในการส่งข้อมูลเป็น เท่าของบัส ISA 



 25/10/2558

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