หลักการทำงานของคอมพิวเตอ

Download Report

Transcript หลักการทำงานของคอมพิวเตอ

หลักการทางานของคอมพิวเตอร์
3 พฤษภาคม 2547
8:00-12:00
ระบบคอมพิวเตอร์ (computer system)
• PEOPLEWARE
• HARDWARE
• SOFTWARE
PEOPLEWARE
•
•
•
•
User
Data Entry Operator
Computer Operator
Programmer (Application Programmer, System
Programmer)
• System Analyst
• Administrator (System, Network, Database)
• EDP Manager
HARDWARE
CPU
Control Unit
Arithmetic/logic Unit
Input
device
Memory
Output
device
CPU (Central Processing Unit)
• หน่วยประมวลผลกลาง ประกอบด้วย หน่วยคานวณและตรรกะ (arithmetic and
logic unit) ทาหน้าที่คานวณทางคณิ ตศาสตร์ และทดสอบทางตรรกะ กับหน่วย
ควบคุม (control unit) ทาหน้าที่ควบคุณส่ วนอื่น ๆ หน่วยประมวลผลกลางมี
ส่ วนประกอบที่สาคัญซึ่ งใช้ประมวลผล คือ เรจิสเตอร์ (registers) ใช้เพื่อเก็บข้อมูล
ต่าง ๆ แบ่งออกเป็ น 2 ประเภท คือ
• เรจิสเตอร์อเนกประสงค์ (general purpose registers) ผูเ้ ขียนโปรแกรม
สามารถอ้างถึงเรจิสเตอร์ อเนกประสงค์ เพื่ออ่านหรื อเขียนข้อมูลได้
• เรจิสเตอร์ เฉพาะกิจ (special purpose registers) เป็ นเรจิสเตอร์ที่
นามาใช้ทางานเฉพาะกิจ เช่น PC (Program Counter) ทาหน้าที่เก็บ
ตาแหน่งของคาสั่งถัดไปที่จะนามาประมวลผล, IR (Instruction Register)
บรรจุคาสัง่ ปั จจุบนั ที่จะประมวลผล, MAR (Memory Address
Register) เก็บตาแหน่งของหน่วยความจาที่จะไปอ่านหรื อเขียนข้อมูลใน
หน่วยความจา, PSW (Program Status Word Register) เก็บ
สถานะต่าง ๆ ในขณะที่ประมวลผล เป็ นต้น
INPUT DEVICE
ตัวอยา่ ง keyboard, mouse,
disk drive, tape drive,
microphone, joystick
OUTPUT DEVICE
ตัวอยา่ ง จอภาพ, printer,
disk drive, tape drive,
plotter, speaker
MEMORY
address
0
1
2
bit = binary digit
byte = 8 bits
1K = 210 bytes
1M = 220 bytes
1G = 230 bytes
หมายเหตุ s = จานวน
2s -1
RAM (Random Access Memory)
ROM (Read-Only Memory)
bit ที่ใช้กาหนด
address เช่น s = 3
จะมี address 0-7 เป็ น
ต้น
SOFTWARE
• System Software
- System Management Programs:
Operating Systems
- System Development Programs:
Compiler, Interpreter, Editor
- System Support Programs:
utility, performance monitor, security monitor
• Application Software
- General-purpose Programs:
e.g. word processing, spreadsheet
- Application-Specific Programs:
e.g. airline reservation, banking
COMPUTER LANGUAGE
• Low-level Language
- Machine language
- Assembly Language
• High-level Language
e.g. C, Pascal, FORTRAN
ASSEMBLER
source program
assembly language
assembler
object program
machine language
COMPILE TIME
COMPILER
source program
high-level language
compiler
object program
machine language
COMPILE TIME
RUN TIME
input
data
machine language
output
INTERPRETER
source program
input
data
interpreter
COMPILE and RUN TIME
output
ตัวอย่ างโปรแกรมภาษา C
#include <stdio.h>
main()
{
int i,j;
scanf(“%d”,&i);
j=2*i+5/10-3;
printf(“%d %d\n”,i,j);
}
ตัวอย่างโปรแกรมภาษา assembly
.386
.data
i dd ?
j dd ?
.code
mov i,10
mov ax,i
add ax,5
mov j,ax
end
MACHINE LANGUAGE
• DATA
• INSTRUCTION
DATA REPRESENTATION
•
•
•
•
CHARACTER
INTEGER
FLOATING POINT
Binary Code Decimal (BCD)
CHARACTER
• ASCII (8 bits) เริ่ มต้นใช้ 7 บิตเป็ นรหัสของอักขระและ 1 บิต
เป็ น parity บิต
• EBCDIC (8 bits)
• UNICODE (16 bits)
INTEGER
• UNSIGNED INTEGER
• SIGNED INTEGER
UNSIGNED INTEGER
ถ้าใช้จานวนบิต n บิต จะแทนเลขจานวนเต็ม
n
ไม่มีเครื่ องหมายได้ ตั้งแต่ 0 ถึง 2 -1 เช่น n
= 16 จะแทนเลขจานวนเต็มได้ต้ งั แต่ 0 ถึง
65535 เป็ นต้น
n=1
binary decimal
0
0
1
1
n=2
binary
00
01
10
11
decimal
0
1
2
3
n=3
binary
000
001
010
0113
100
101
1106
1117
decimal
0
1
2
4
5
SIGNED INTEGER
• SIGNED MAGNITUDE
• ONE COMPLEMENT
• TWO COMPLEMENT
SIGNED MAGNITUDE
ใช้บิตซ้ายสุ ดแทนเครื่ องหมาย โดยใช้ 0 แทน บวก และ 1 แทน
ลบ บิตที่เหลือใช้แทนขนาดของตัวเลข
เช่น สมมุติวา่ ใช้ จานวนบิต 8 บิต แทนเลขจานวน +5 และ –5
ได้เป็ น 00000101 และ 10000101 เป็ นต้น
ถ้าใช้จานวน n บิต จะแทนเลขจานวนเต็มแบบมีเครื่ องหมาย
ได้ต้ งั แต่
– (2n-1 – 1) ถึง +(2n-1- 1)
n=2
binary
00
01
10
11
decimal
+0
+1
-0
-1
n=3
binary
000
001
010
011+3
100
101
110-2
111-3
decimal
+0
+1
+2
-0
-1
ONE COMPLEMENT
ใช้บิตซ้ายสุ ด แทนเครื่ องหมาย โดยใช้ 0 แทน บวก และ 1 แทน
ลบ การแทนเลขบวก จะเหมือนกับแบบ sign magnitude แต่
การแทนตัวเลขลบ จะต่างกัน
แบบ one complement จะแทนตัวเลขลบโดยการ ทา
complement (เปลี่ยนจากเลข 0 เป็ น 1 และ เปลี่ยนจากเลข 1
เป็ น 0) กับ magnitude เช่น สมมุติวา่ ใช้ จานวนบิต 8 บิต แทน
เลขจานวน +5 และ –5 ได้เป็ น 00000101 และ 11111010 เป็ นต้น
ถ้าใช้จานวน n บิต จะแทนเลขจานวนเต็มแบบมีเครื่ องหมาย ได้
ตั้งแต่ – (2n-1 – 1) ถึง +(2n-1- 1)
n=2
binary
00
01
10
11
decimal
+0
+1
-1
-0
n=3
binary
000
001
010
011+3
100
101
110-1
111-0
decimal
+0
+1
+2
-3
-2
TWO COMPLEMENT
ใช้บิตซ้ายสุ ดแทนเครื่ องหมาย โดยใช้ 0 แทน บวก และ 1 แทน
ลบ การแทนเลขบวก จะเหมือนกับแบบ sign magnitude แต่
การแทนตัวเลขลบ จะต่างกัน
แบบ two complement จะแทนตัวเลขลบโดยการ ทา
complement (เปลี่ยนจากเลข 0 เป็ น 1 และ เปลี่ยนจากเลข 1
เป็ น 0) กับ magnitude แล้วบวกด้วยหนึ่ง เช่น สมมุติวา่ ใช้
จานวนบิต 8 บิต แทนเลขจานวน +5 และ –5 ได้เป็ น 00000101 และ
11111011 เป็ นต้น
ถ้าใช้จานวน n บิต จะแทนเลขจานวนเต็มแบบมีเครื่ องหมาย ได้
ตั้งแต่ – (2n-1) ถึง +(2n-1- 1)
n=2
binary
00
01
10
11
decimal
+0
+1
-2
-1
n=3
binary
000
001
010
011+3
100
101
110-2
111-1
decimal
+0
+1
+2
-4
-3
FLOATING POINT
สามารถแทนตัวเลขที่มีขนาดใหญ่ เช่น 1.234x1085 หรื อขนาดเล็กเช่น
1.234x10 –85 ได้ ตัวเลขประกอบด้วย ส่ วน mantissa หรื อ
fractional part กับ ส่ วน exponent ในกรณี น้ ี ฐานยกกาลัง
(base exponent) คือ 10 เช่น 1.234X1035 มี 1.234 เป็ นส่ วน
mantissa และ 35 เป็ นส่ วน exponent มีฐานยกกาลัง 10
ในการแทนสามารถเก็บเฉพาะ mantissa และ exponent โดย
ไม่จาเป็ นต้องเก็บเลขฐานยกกาลัง เนื่องจากสามารถกาหนดตายตัวได้วา่ เลขฐาน
ยกกาลังเป็ นอะไร สาหรับคอมพิวเตอร์ซ่ ึงเก็บข้อมูลในรู ปเลขฐานสอง ปรกติ
แล้ว จะใช้ฐานยกกาลัง เป็ น 2, 4, 8, หรื อ 16 จะไม่ใช้ฐานยกกาลังเป็ น 10 และ
เพื่อให้มีความแม่ยาสูงสุ ด คอมพิวเตอร์ส่วนใหญ่จะเก็บ mantissa แบบ
normalized คือ ให้จุดไปอยูห่ น้า เลขนัยสาคัญตัวแรกของ
mantissa (ในกรณี เลข 0 จะแทนในรู ปแบบพิเศษ เช่น mantissa
และ exponent เป็ น 0 ทั้งคู่)
ตัวอย่าง
(0.00173)10 สามารถแทนได้เป็ น 0.000173x101 ,
0.001730x100, 0.017300x10-1, หรื อ
0.173000x10-2 แบบหลังสุ ดจะเป็ นแบบ
normalized
(103.5)10 เก็บแบบ normalized คือ
0.1035x103
IEEE standard
IEEE standard
IEEE standard
กรณี พิเศษ
biased exponent mantissa
all 0
all 0
all 0
nonzero
all 1
all 0
all 1
nonzero
special meaning
floating point zero
denormalized
infinity
NaN (Not a Number)
ตัวอย่าง
decimal 10.0 เก็บเป็ น binary แบบ IEEE standard,
short real ดังนี้
0100 0001 0010 0000 0000 0000 0000 0000
Binary Code Decimal (BCD)
• Packed BCD
• Unpacked BCD
BCD
ใช้ binary 4 ตัว แทน decimal หนึ่งตัว ดังนี้
BCD
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
decimal
0
1
2
3
4
5
6
7
8
9
Unpacked BCD
ประกอบด้วยสี่ บิตซ้ายซึ่งเป็ น 0000 และสี่ บิตขวาซึ่ง
เป็ น BCD หนึ่งตัว เช่น decimal 1234 แทน
แบบ Unpacked BCD ดังนี้ 0000 0001
0000 0010 0000 0011 0000 0100
Packed BCD
ประกอบด้วยสี่ บิตซ้ายซึ่งเป็ น BCD หนึ่งตัว และ
สี่ บิตขวาซึ่งเป็ น BCD อีกหนึ่งตัว เช่น
decimal 1234 แทนแบบ Packed BCD
ดังนี้ 0001 0010 0011 0100 กรณี ที่ไม่ครบไบต์ จะ
เติมศูนย์ขา้ งหน้า เช่น decimal 234 แทนแบบ
Packed BCD ดังนี้ 0000 0010 0011 0100
สรุ ป data representation
data
character
integer
floating point
BCD
ASCII
unsigned
packed
EBCDIC
signed
unpacked
signed magnitude
UNICODE
one complement
two complement
INSTRUCTION
รู ปแบบคาสั่ งภาษาเครื่อง
CPU สามารถประมวลผลได้เฉพาะคาสัง่
ภาษาเครื่ อง (machine language) เท่านั้น
คาสัง่ ภาษาเครื่ องมีรหัสเป็ นเลขฐานสอง ประกอบด้วย
ส่ วนที่สาคัญสองส่ วน คือ รหัสดาเนินการ
(operation code) ซึ่งต้องมี และ ตัวถูก
ดาเนินการ (operands) ซึ่ งอาจจะไม่มี หรื อมีหนึ่ง
ถึงสามตัว
INSTRUCTION
รหัสดาเนินการ เช่น บวก, ลบ, คูณ, หรื อ หาร
เป็ นต้น บอกให้รู้วา่ จะทาอะไร ส่ วนตัวถูก
ดาเนินการ เป็ นข้อมูลที่จะนามาดาเนินการ ซึ่งอาจจะ
เป็ นข้อมูลที่อยูใ่ นคาสัง่ เรี ยกว่า immediate
operand เช่น ค่าคงที่ต่าง ๆ หรื ออาจเป็ นข้อมูล
ในเรจิสเตอร์ เรี ยกว่า register operand
หรื อ อาจเป็ นการอ้างถึงตาแหน่งของหน่วยความจา
หลักที่เก็บข้อมูล
INSTRUCTION
ข้อตกลง
เพื่อความเข้าใจ จะเขียนคาสัง่ ภาษาเครื่ องในรู ปภาษา
สัญลักษณ์แทน เช่น
ภาษาเครื่ อง
ภาษาสัญลักษณ์
011 100 101 ADD A,B
INSTRUCTION
CPU สามารถคานวณทางคณิ ตศาสตร์ ทดสอบทางตรรกะ และ
ทางานขั้นพื้นฐานอื่น ๆ ดังนั้น การคานวณมาก ๆ เช่น คาสัง่ ของภาษา
ระดับสูง X = (A*B)+(C/D)-10 ไม่สามารถเขียนเป็ นคาสัง่
ภาษาเครื่ องเพียงคาสัง่ เดียวได้ จาเป็ นต้องแบ่งออกเป็ นคาสัง่ พื้นฐาน
หลายคาสัง่ คือ
T1=A*B
T2=C/D
T3=T1+T2
X=T3-10
INSTRUCTION
คาสัง่ ภาษาเครื่ องอาจแบ่งกลุ่มออกได้ ตามชนิดของ
การดาเนินการ เช่น คาสัง่ เกี่ยวกับการคานวณทาง
คณิ ตศาสตร์, คาสัง่ เกี่ยวกับการทดสอบทางตรรกะ และ
คาสัง่ เกี่ยวกับการสาเนาข้อมูล เป็ นต้น หรื อ อาจแบ่งตาม
จานวนตัวถูกดาเนินการ ดังนี้
INSTRUCTION
มีตัวถูกดาเนินการสามตัว
เป็ นคาสัง่ ที่มีตวั ถูกดาเนินการ 3 ตัว เช่น
คาสัง่
ความหมาย
ADD X,Y,T
SUB X,Y,T
MUL X,Y,T
DIV X,Y,T
T=X+Y
T=X-Y
T=X*Y
T=X/Y
ตัวอย่าง
X = (A*B)+(C/D)-10 สามารถเขียนเป็ นคาสัง่ ภาษาเครื่ องได้
ดังนี้
MUL A,B,T1
DIV C,D,T2
ADD T1,T2,T3
SUB T3,10,X
INSTRUCTION
มีตวั ดาเนินการสองตัว
เป็ นคาสั่งที่มีตวั ถูกดาเนิ นการ 2 ตัว เช่น
คาสั่ง
ความหมาย
ADD X,Y
X=X+Y
SUB X,Y
X=X-Y
MUL X,Y
X=X*Y
DIV X,Y
X=X/Y
MOV X,Y
X=Y
CMP X,Y
เปรี ยบเทียบ X กับ Y และกาหนดให้
FLAG เป็ น EQ, GT, หรื อ LT
INSTRUCTION
มีตวั ถูกดาเนินการหนึ่งตัว
เป็ นคาสัง่ ที่มีตวั ถูกดาเนินการ 1 ตัว เช่น
JEQ X
กระโดดไปที่ตาแหน่ง X ถ้า FLAG เป็ น EQ
JLT X
กระโดดไปที่ตาแหน่ง X ถ้า FLAG เป็ น LT
JGT X
กระโดดไปที่ตาแหน่ง X ถ้า FLAG เป็ น GT
JMP X
กระโดดไปที่ตาแหน่ง X โดยไม่มีเงื่อนไข
ไม่มีตวั ถูกดาเนินการ
เป็ นคาสัง่ ที่ไม่มีตวั ถูกดาเนินการ
ตัวอย่าง
X = (A*B)+(C/D)-10 สามารถเขียนเป็ นคาสัง่ ภาษาเครื่ องได้
ดังนี้
MUL A,B
DIV C,D
ADD A,C
SUB A,10
MOV X,A
ตัวอย่าง
if (A = = B) then A=A+1;
else B=B-1
เขียนเป็ นคาสัง่ ภาษาเครื่ องได้ ดังนี้
CMPA,B
JEQ L1
SUB B,1
JMP L3
L1: ADD A,1
L3:
ตัวอย่าง
SUM=0;
FOR I=1 TO 100 DO
SUM=SUM+I;
เขียนเป็ นภาษาเครื่ องได้ ดังนี้
MOV SUM,0
MOV I,1
L1: CMP I,100
JGT L2
ADD SUM,I
ADD I,1
JMP L1
L2:
ขั้นตอนการประมวลผลด้ วย CPU
fetch คาสั่ งมาจาก memory
ที่ address ซึ่งเก็บอยู่ใน Program Counter
บวก Program Counter ด้ วยความยาวของคาสั่ ง
เพือ่ ให้ Program Counter เก็บ address ของคาสั่ งถัดไป
execute ตามคาสั่ งนั้น
โดยการ decode ส่ วน operation code
แล้วทาตามคาสั่ งนั้น