ผศ.ดร. สุรินทร กิตติธรกุล สาขาวิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร สถาบันเทคโนโลยีพระจอมเกลาเจาคุณทหารลาดกระบัง
! เพื่อใหทราบถึงชนิดของเครื่องคอมพิวเตอร ! เพื่อใหเขาใจโครงสรางของเครื่องคอมพิวเตอร ! เพื่อใหเขาใจการแปลงภาษาระดับสูงเปนภาษาแอสเซมบลี
และภาษาเครื่อง ! เพื่อใหเขาใจขั้นตอนการผลิตไมโครโปรเซสเซอร ! เพื่อใหเขาใจสมการเวลาซีพียู (CPU Time) สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
2
คอมพิวเตอรตั้งโตะ (Desktop computers) ◦ ใชงานไดหลากหลาย มีซอฟตแวรรองรับที่หลากหลาย (variety of software) ◦ ออนไหวตอราคา/สมรรถนะ (Subject to cost/performance tradeoff) ! คอมพิวเตอรเซิรฟเวอรหรือแมขาย (Server computers) ◦ เชื่อมตอกับเครือขายตลอดเวลา มีความจุ สมรรถนะ และความเชื่อมั่นสูง ! คอมพิวเตอรพกพา (Portable Computers) ◦ มีขนาดเล็กและพกพกงาย ใชกำลังไฟจากแบตเตอรีเปนหลัก ◦ คอมพิวเตอรโนตบุค แทบเล็ท โทรศัพทเคลื่อนที่อัจฉริยะ (Smart Phone) ! คอมพิวเตอรฝงตัว (Embedded computers) ◦ เปนสมองกลที่ซอนอยูในระบบ เชน รถยนต เครื่องบิน ทีวี ตูเย็น ฯลฯ ◦ อยูใตเงื่อนไขของกำลังไฟ/สมรรถนะ/ราคาที่เขมงวด (Stringent power/ performance/cost constraints) !
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
! ! !
3
โปรเซสเซอร หนวยความจำ อุปกรณอินพุท/เอาทพุท ไดแก ◦ อุปกรณเชื่อมตอกับผูใช (User-interface devices) ! จอแสดงผล, คียบอรด, เมาส, หนาจอ สัมผัส ◦ อุปกรณสำรองขอมูล (Storage devices) ! ฮารดดิสค, ซีด/ี ดีวีด,ี แฟลชไดรว ◦ อุปกรณเชื่อมตอเครือขาย (Network adapters) ! มีสาย (Wired) และไรสาย (Wireless) สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
4
!
!
windows , macos
! office , photoshop
ซอฟตแวรประยุกต (Application software) ◦ เขียนดวยภาษาระดับสูง (High-level language) ซอฟตแวรระบบ (System software) ◦ คอมไพเลอร: แปลซอรสโคดภาษาสูงเปนภาษาเครื่อง ◦ ระบบปฏิบัติการ (Operating System) ! ดำเนินการดานอินพุทและเอาทพุท ! บริหารจัดการหนวยความจำและหนวยสำรองขอมูล ! จัดลำดับการทำงานและการใชงานทรัพยากรของ โปรแกรม ฮารดแวร (Hardware) ◦ โปรเซสเซอร หนวยความจำ อินพุทเอาทพุท
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
!
c , c++ , java
ARM , Intel
5
โปรแกรมเมอรใชคำสั่งภาษาแอสเซมบลี (Assembly Language) หรือเรียกอยางเปน ทางการวา สถาปตยกรรมชุดคำสั่ง หรือ Instruction Set Architecture (ISA) ในการ สั่งงานฮารดแวรของเครื่องคอมพิวเตอร
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
6
!
ภาษาระดับสูง (High-level language)
◦ มีความใกลเคียงกับโจทยหรือปญหา ◦ โปรแกรมเมอรสามารถเขียนโปรแกรมไดงาย และสรางสรรคผลงานไดงายกวา
!
( Silicon Graphic Machin )
ภาษาแอสเซมบลี (Assembly language) ◦ คำสั่งภาษาเครื่องในรูปของตัวหนังสือ (Textual representation of instructions)
!
ขอมูลและคำสั่งในระดับฮารดแวร (Hardware representation)
◦ เลขฐานสองในรูปของระดับโวลเตจ หรือ ที่เรา เรียกวา บิท สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
7
Application Operating System Compiler Memory system
Firmware
Instr. Set Proc.
I/O system
Instruction Set Architecture
Datapath & Control Digital Design Circuit Design Semicoron Matherial
การประสานงานระหวางชั้นการทำงานตางๆ โดยมีรอยเชื่อมแบงออกเปนชั้นๆ ! ชั้นแบงระหวาง ฮารดแวรและซอฟตแวร คือ ISA หรือ Instruction Set Architecture ซึ่งก็คือ คำสั่งภาษาแอสเซมบลี ที่คนยังสามารถอานเขาใจ !
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
8
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
!
! !
9
CPU Apple A6 Dual-core 1.2 GHz GPU PowerVR SGX 543MP3 (triple-core graphics) หนวยความจำ 1 GB RAM และหนวยสำรองขอมูล (Storage) 16/32/64 GB อุปกรณอินพุท/เอาทพุท ◦ Network: 2G/3G/4G LTE ! Wi-Fi 802.11 a/b/g/n, Bluetooth v4.0 ◦ Sensors: ! Accelerometer, gyro, proximity, Compass ◦ Display ! LED-backlit IPS LCD, 16M colors, 640 x 1136 pixels สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
10
1.3 GHz ARMv7 based dual-core CPU ! integrated triple-core PowerVR SGX 543MP3 graphics processing unit (GPU ! 1GB of LPDDR2-1066 RAM ! L1 cache 32/32 kB & L2 cache 1 MB ! Manufacturer: Samsung Electronics ! 32 nm process !
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
!
11
ยีลด (Yield): สัดสวนของดายส (dies) ที่ทำงานไดตอเวเฟอร (wafer) สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
12
AMD X2: เสนผาศูนยกลาง 300 มิลลิเมตร หรือ 12 นิ้ว, สามารถบรรจุ ชิป 117 ชิ้น, โดยใชเทคโนโลยีการ ผลิต 90 นาโนเมตร (nm) ! X4: ใชเทคโนโลยีการผลิต 45 นาโน เมตร (nm) !
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
13
CPU Time = CPU Clock Cycles × Clock Cycle Time = !
!
CPU Clock Cycles = IC x CPI / Clock Rate Clock Rate
เพื่อเพิ่มความสามารถ (Performance) เราสามารถลด CPU Time โดย ◦ ลดจำนวน CPU clock cycles หนวยเปน ไซเคิล (Cycle) หรือพัลซ (Pulse) ◦ เพิ่มความถึ่สัญญาณนากา clock rate หนวยเปน 1 GHz = 1,000 MHz = 1 พันลานเฮิรทซ คาบเวลาของสัญญาณนากา Clock Cycle Time = 1/Clock Rate ◦ คาบเวลา 1 นาโนวินาที มาจากสัญญาณนากาความถึ่ 1 GHz ◦ คาบเวลา 1 นาโนวินาที = 1/10 ยกกำลัง 9 IC = Instruction Count (จํานวนคําสั่งที่ใช้ ต่อ 1 วินาที)
CPI = Cycle Per Instruction (ใช้เวลาเท่าไหรต่อ 1 คําสัง่ ) สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
14
! !
!
เครื่องคอมพิวเตอร A: ความถึ่สัญญาณนากา 2GHz, ใชเวลาทำงาน หรือ CPU time = 10 sec จงออกแบบเครื่องคอมพิวเตอร B ใหทำงานชิ้นเดียวกันโดยใชเวลา CPU time = 6 sec ◦ แตจำนวนไซเคิลเพิ่มเปน 1.2 เทาของคอมพิวเตอร A จงหาความถึ่สัญญาณนากาของเครื่องคอมพิวเตอร B?
Clock RateB =
Clock CyclesB 1.2 × Clock CyclesA = CPU TimeB 6s
Clock CyclesA = CPU Time A × Clock Rate A = 10s × 2GHz = 20 × 10 9 1.2 × 20 × 10 9 24 × 10 9 Clock RateB = = = 4GHz 6s 6s สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
15
ระบบ A: คาบเวลา (Cycle Time) = 250 ps (10-12), CPI = 2.0 ! ระบบ B: คาบเวลา (Cycle Time) = 500 ps (10-12), CPI = 1.2 ! ใชสถาปตยกรรมชุดคำสั่งเดียวกัน (Same Instruction Set Architecture) ! ระบบใดชากวาหรือเร็วกวากันเทาไหร !
CPU Time
A
= Instruction Count × CPI × Cycle Time A A = I × 2.0 × 250ps = I × 500ps A is faster…
CPU Time = Instruction Count × CPI × Cycle Time B B B = I × 1.2 × 500ps = I × 600ps CPU Time B = I × 600ps = 1.2 CPU Time I × 500ps A
…by this much สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
16
! การทำงานจะตองใชคำสั่ง
(instruction) หลายประเภท (Class) ซึ่งใชจำนวนคล็อกไซเคิลไมเทากัน ดังนั้น n
Clock Cycles = ∑ (CPIi × Instruction Count i ) i=1
!
คาเฉลี่ยถวงน้ำหนัก CPI คำนวณไดจาก
n Clock Cycles Instructio n Count i $ ' CPI = = ∑ % CPIi × " Instructio n Count i=1 & Instructio n Count #
ความถี่สัมพัทธ์ (Relative frequency)
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
!
Class
A
B
C
CPI for class
1
2
3
IC in sequence 1
2
1
2
IC in sequence 2
4
1
1
Sequence 1: IC = 5 !
!
Clock Cycles = 2×1 + 1×2 + 2×3 = 10 Avg. CPI = 10/5 = 2.0
!
17
Sequence 2: IC = 6 !
!
Clock Cycles = 4×1 + 1×2 + 1×3 = 9 Avg. CPI = 9/6 = 1.5
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
18
Instructions Clock cycles Seconds CPU Time= × × Program Instruction Clock cycle !
เวลาซีพียู (CPU Time) จะมากหรือนอย ขึ้นอยูกับ ◦ อัลกอริทึม (Algorithm): มีผลตอคาของ IC (Instruction Count) และ CPI (Cycle Per Instruction) ◦ ภาษาที่ใชพัฒนาโปรแกรม (Programming language): มีผลตอคาของ IC และ CPI ◦ คอมไพเลอร (Compiler): มีผลตอคาของ IC, CPI ◦ สถาปตยกรรมชุดคำสั่ง (Instruction Set Architecture): มีผลตอคาของ IC, CPI, Tc (Cycle Time) สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
19
ถูกจํากัดโดย กําลังไฟฟ้า ความเร็วของหน่วยความจําหลัก และ instruction-level parallelism
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
20
โปรเซสเซอรชนิดมัลติคอรมีจำนวนคอรมากกวาหนึ่งตอชิป ! การพัฒนาตองใชการเขียนโปรแกรมแบบขนาน (Parallel Programming) ◦ เมื่อเปรียบเทียบกับการคำนวณแบบขนานระดับคำสั่ง (Instruction level parallelism) ! ฮารดแวรเปนตัวจัดการ โปรแกรมเมอรไมไดรับรูวาเกิดคำนวณแบบขนาน ◦ เปนเรื่องที่ทาทาย ! เพื่อสมรรถนะที่เพิ่มขึ้น ! เพิ่มการกระจายโหลด (Load Balancing) ! จะตองคำนึงถึงการสื่อสารระหวางคอรและการซิงโครไนเซชัน (communication and synchronization) !
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
21
ซอฟตแวรประยุกต (Application software) ◦ Written in high-level language ! ซอฟตแวรระบบ (System software) ◦ คอมไพเลอร: แปลซอรสโคดภาษาสูงเปนภาษาเครื่อง ◦ ระบบปฏิบัติการ (Operating System) ! ดำเนินการดานอินพุทและเอาทพุท ! บริหารจัดการหนวยความจำและหนวยสำรองขอมูล ! จัดลำดับการทำงานและการใชงานทรัพยากรของโปรแกรม ! ฮารดแวร (Hardware) ◦ โปรเซสเซอร หนวยความจำ อินพุทเอาทพุท !
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
22
! เหตุใดเครื่องคอมพิวเตอรโนตบุคจึงชากวาเครื่องคอมพิวเตอรตั้งโตะ
! เหตุใดเราจึงนำเครื่องคอมพิวเตอรตั้งโตะมาพกพาไมได ! เหตุใดโทรศัพทเคลื่อนสมารทโฟนจึงมีความสามารถเพิ่มสูงขึ้น ! เครื่องคอมพิวเตอรนี้ทำงานไดชาหรือเร็วใชปจจัยใดเปนตัวบงชี้
สังเกตุ
จากการคำนวณเวลาซีพียู ! Storage หรือหนวยความจำสำรอง ตางจากหนวยความจำชนิด RAM อยางไร
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
23
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
24
ผศ.ดร. สุรินทร กิตติธรกุล สาขาวิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร สถาบันเทคโนโลยีพระจอมเกลาเจาคุณทหารลาดกระบัง
! เพื่อใหเขาใจถึงเลขจำนวนเต็มชนิด
ไมมีเครื่องหมาย และ มีเครื่องหมาย (Integers: Unsigned and Signed) ในเครื่องคอมพิวเตอร และการบวก ลบ คูณ ! เพื่อใหเขาใจถึงเลขจำนวนจริงชนิดปรับจุดทศนิยม (Floating-point real numbers) และการบวก ลบ คูณ
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
2!
! เลขจำนวนเต็ม:
ไมมีเครื่องหมาย และ มีเครื่องหมาย (Integers: Unsigned and Signed) ◦ การบวกและลบ ◦ การคูณและหาร ◦ การจัดการกับโอเวอรโฟลว ! เลขจำนวนจริงชนิดปรับจุดทศนิยม (Floating-point real numbers) ◦ รูปแบบ (Representation) ◦ การบวกและลบ ◦ การคูณและหาร
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
! กำหนดใหตัวเลขมีขนาด
3!
n บิท
x = x n−1 2n−1 + x n−2 2n−2 + + x1 21 + x 0 20
! !
!
คาของเลขในฐานสิบอยูในชวง 0 ถึง +2n – 1 ตัวอยาง ! 0000 0000 0000 0000 0000 0000 0000 10112 = 0 + … + 1×23 + 0×22 +1×21 +1×20 = 0 + … + 8 + 0 + 2 + 1 = 1110 เมื่อ n = 32 บิท ! เลขจำนวนเต็มจะมีคาฐานสิบ อยูในชวง 0 to +4,294,967,295 สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
4!
!
!
Example: 7 + 6
เกิด Overflow เมื่อผลลัพธ์เกินค่าสูงสุด หรือ ต่ําสุด ! บวกเลข +ve สองตัวเข้าด้วยกัน ! เกิด Overflow เมื่อบิทที่ทดออกเป็น 1
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
! กำหนดใหตัวเลขมีขนาด
5!
n บิท
x = − x n−1 2n−1 + x n−2 2n−2 + + x1 21 + x 0 20 ! !
!
คาของเลขในฐานสิบอยูในชวง -2n ถึง +2n – 1 ตัวอยาง ! 1111 1111 1111 1111 1111 1111 1111 11002 = –1×231 + 1×230 + … + 1×22 +0×21 +0×20 = –2,147,483,648 + 2,147,483,644 = –410 เมื่อ n = 32 บิท ! เลขจำนวนเต็มจะมีคาฐานสิบ อยูในชวง –2,147,483,648 to +2,147,483,647 -1
-1
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
6!
!
Negate
-23 = -(23 - 1) =
1011 and add a 1 1010 complement all the bits !
Note: negate and invert are different!
23
- 1 =
2’complement
Decimal value
1000
-8
1001
-7
1010
-6
1011
-5
1100
-4
1101
-3
1110
-2
1111
-1
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7 สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
7
! ตัวอยาง:
7 – 6 = 7 + (–6) +7: 0000 0000 … 0000 01112 –6: 1111 1111 … 1111 10102 +1: 0000 0000 … 0000 00012 ! เกิด Overflow เมื่อผลลัพธมีคาออกนอกยานที่เปนไปได ◦ การลบเลขบวกทั้งสองจำนวน และการลบเลขที่เปนลบทั้งสองจำนวน ไมเกิด Overflow ◦ เกิด เมื่อ cn XOR cn-1 = 1 เมื่อ n คือจำนวนบิทของเลข 2Complement สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
8!
ตัวตั้ง! multiplicand multiplier! ตัวคูณ
ผลคูณ product
1000 × 1001 1000 0000 0000 1000 1001000
1000
01000
001000
1001000
1000000
000000
00000
1000
1001
0100
0010
0001
ความยาว (บิท) ของผลคูณ จะเท่ากับความยาวของตัว ตั้ง บวกกับ ความยาวของ ตัวคูณ!
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
! !
ผลหาร! quotient
9!
ตรวจว่าตัวหารเป็นศูนย์หรือไม่ ใช้วิธีการหารยาว ! ◦ ถ้าตัวหาร ≤ บางส่วนของตัวตั้ง !
! ผลลัพธ์เป็น 1, ลบตัวหารออกจากตัวตั้ง
ตัวตั้ง dividend
1001 1000 1001010 ตัวหาร! -1000 divisor 10 101 1010 -1000 เศษ 10
◦ หากตัวหาร > บางส่วนของตัวตั้ง ! ผลลัพท์เป็น 0, ดึงบิทถัดไปลงมา
!
การหารแบบมีเครื่องหมาย!
◦ แปลงให้เป็นเลขบวกก่อนแล้วจึงหาร! ◦ ปรับเครื่องหมายของผลหารและเศษให้ เหมาะสม !
remainder
ตัวตั้งความยาว n บิท ให้ผลลัพธ์หรือเศษ ความ ยาวสูงสุด n บิท เช่นกัน ! สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
10!
! กราฟกสและมัลติมีเดียใชขอมูลชนิดเว็คเตอร
ขนาด 8, 16, 32, 64 จนถึง
128 บิท ◦ ใชการทำงานชนิด SIMD (single-instruction, multiple-data) มาเสริม ! คณิตศาสตรแบบอิ่มตัว
(Saturation Arithmetic)
◦ เมื่อเกิดโอเวอรโฟลว คำตอบจะเปนเลขที่สูงที่สุด หรือ ต่ำที่สุด ที่สามารถนำเสนอ ได ◦ เชน สัญญาณเสียง ภาพ เปนตน
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
11!
x.y = x n−12n−1 + x n−2 2n−2 ++ x121 + x 0 20 + y1 2-1 +...+ ym 2-m !
ใช้สําหรับข้อมูลที่ไม่ใช่เลขจํานวนเต็ม ! ◦ เช่น เลขทศนิยม!
!
เขียนในรูปของเลขฐานสอง ได้ดังนี้ ◦ xxxx.yyy2
แบ่งเป็น 2 ส่วน คือ เลขจํานวนเต็ม กับ เลขทศนิยม ! ไม่เป็นที่นิยมแต่เป็นพื้นฐานในการศึกษาเลขทศนิยม แบบ Floating-Point !
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
12!
! จงแปลงเลขฐานสิบตอไปนี้เปนเลขฐานสอง ◦ 0.75 = 0.112
Fixed-Point
◦ 3.00 = 11.002 ◦ 3.75 = 11.112 ! จงแปลงเลขฐานสอง Fixed-Pointตอไปนี้เปนเลขฐานสิบ ◦ 0.11112 = 0.5+0.25+0.125+0.0675 = ◦ 0.111112 = 0.5+0.25+0.125+0.0675+0.03275 = ◦ 0.1111112 = 0.5+0.25+0.125+0.0675+0.03275+..=> 0.999 สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
!
!
!
!
13!
ใช้สําหรับข้อมูลที่ไม่ใช่เลขจํานวนเต็ม ! ◦ เช่น เลขทศนิยม เลขที่น้อยมาก หรือ สูงมาก ! มีลักษณะคล้ายเลขทางวิทยาศาสตร์ ! normalized ◦ –2.34 × 1056 ◦ +0.002 × 10–4 not normalized ◦ +987.02 × 109 แต่เขียนในรูปของเลขฐานสอง ได้ดังนี้ ◦ ±1.xxxxxxx2 × 2yyyy ตรงกับตัวแปรชนิด float และ double in ภาษา C, C++ เป็นต้น สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
14!
กำหนดโดย IEEE Std 754 ในป คศ 1985 ! เพื่อใหโปรแกรมสามารถรันบนเครื่องที่ใชซีพียูใดๆ ก็ได แลวใหผลลัพธเดียวกัน ! ปจจุบันนี้ไดรับการยอมรับอยางแพรหลาย ! มีสองรูปแบบ คือ ◦ ชนิด Single precision (32-bit) คือตัวแปรชนิด float ◦ ชนิด Double precision (64-bit) คือตัวแปรชนิด double !
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
single: 8 บิท double: 11 บิท
S Exponent
15!
single: 23 บิท double: 52 บิท
Fraction
x = (−1)S × (1+ Fraction) × 2(Exponent−Bias) !
! ! !
S: บิทเครื่องหมาย (Sign bit) ◦ 0 ⇒ มากกว่าหรือเท่ากับศูนย์ (non-negative), ◦ 1 ⇒ น้อยกว่าศูนย์ (negative) เลขนัยสําคัญ (significand = 1+Fraction): 1.0 ≤ |significand| < 2.0 ◦ จะต้องขึ้นต้นด้วยบิทข้อมูลที่เป็น 1 เสมอ เลขยกกําลัง (Exponent) = Actual Exponent+Bias ◦ เพื่อปรับให้ Exponent เป็นเลขที่ไม่มีเครื่องหมาย (unsigned) ◦ Single: Bias = 127; Double: Bias = 1203 สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
16!
!
การถอดรหัสจะได้ค่าของเลขเป็น (-1)sign x (1+Fraction) x 2E-bias Single Precision
Double Precision
Object Represented
E (8)
F (23)
E (11)
F (52)
0
0
0
0
0
nonzero
0
nonzero
± denormalized number
± 1-254
anything
± 1-2046
anything
± floating point number
± 255
0
± 2047
0
255
nonzero
2047
nonzero
true zero (0)
± infinity not a number (NaN)
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
! เลขยกกำลังต่ำสุดไมใช ! คาที่ต่ำสุดคือ
17!
00000000 และสูงสุดไมใช 11111111 Bias
◦ เลขยกกำลัง: 00000001 ⇒ actual exponent = 1 – 127 = –126 ◦ Fraction: 000…00 ⇒ เลขนัยสำคัญ = 1.0 ◦ ±1.0 × 2–126 ≈ ±1.2 × 10–38 ! คาที่สูงสุดคือ
Bias
◦ เลขยกกำลัง: 11111110 ⇒ actual exponent = 254 – 127 = +127 ◦ Fraction: 111…11 ⇒ เลขนัยสำคัญ ≈ 2.0 ◦ ±2.0 × 2+127 ≈ ±3.4 × 10+38 สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
18!
เลขยกกำลังต่ำสุดไมใช 000000000000 และสูงสุดไมใช 11111111 1111 ! คาที่ต่ำสุดคือ ◦ เลขยกกำลัง: 00000000001 ⇒ actual exponent = 1 – 1023 = –1022 ◦ Fraction: 000…00 ⇒ significand = 1.0 ◦ ±1.0 × 2–1022 ≈ ±2.2 × 10–308 ! คาที่สูงสุดคือ ◦ เลขยกกำลัง: 11111111110 ⇒ actual exponent = 2046 – 1023 = +1023 ◦ Fraction: 111…11 ⇒ significand ≈ 2.0 ◦ ±2.0 × 2+1023 ≈ ±1.8 × 10+308 !
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
19!
เลขฐานสิบ –0.75 ◦ –0.75 = (–1)1 × 0.112 ◦ –0.75 = (–1)1 × 1.12 × 2–1 ◦ S = 1 ◦ Fraction = 1000…002 ◦ Exponent = –1 + Bias ! Single (8 บิท) : –1 + 127 = 126 = 011111102 ! Double(8 บิท): –1 + 1023 = 1022 = 011111111102 ! Single: 1011111101000…00 ! Double: 1011111111101000…00 !
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
20!
! เลข
single-precision ตอไปนี้ มีคาเทาไรในฐานสิบ 11000000101000…00 ◦ S = 1 ◦ Fraction = 01000…002 ◦ Exponent = 100000012 = 129
! x
= (–1)1 × (1 + .012) × 2(129 – 127) = (–1) × 1.25 × 22 = –5.0
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
21!
! Exponent
= 111...1, Fraction = 000...0 ◦ ±Infinity ◦ (±)111111110000000000...0 (single-precision) ◦ สามารถใชคำนวณได และตรวจเช็คการเกิดโอเวอรโฟลว ! Exponent = 111...1, Fraction ≠ 000...0 ◦ ไมใชตัวเลข หรือ Not-a-Number (NaN) ◦ ระบุการกระทำที่ไมถูกตองหรือคาที่ไมสามารถแสดงได เชน ! 0.0 / 0.0 ◦ สามารถใชคำนวณตอได สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
22!
! สมมติวามีเลขฐานสิบขนาด 4 หลัก ◦ 9.999 × 101 + 1.610 × 10–1
(4-digit)
! 1.
ปรับจุดทศนิยมใหตรงกันโดยเลื่อนตำแหนงเลขที่มีคานอยกวา ◦ 9.999 × 101 + 0.016 × 101 ! 2. บวกคา significands ที่เลื่อนตำแหนงแลว ◦ 9.999 × 101 + 0.016 × 101 = 10.015 × 101 ! 3. Normalize คาผลลัพธ และตรวจเช็ค over/underflow ◦ 1.0015 × 102 ! 4. ปดคาใหเหลือ 4 หลักและอาจตอง normalize เมื่อจำเปน ◦ 1.002 × 102 สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
23!
! สมมติวามีเลขฐานสองขนาด 4 บิท (4-bit) ◦ 1.0002 × 2–1 + –1.1102 × 2–2 (0.5 + –0.4375) ! 1. ปรับจุดทศนิยมใหตรงกันโดยเลื่อนตำแหนงเลขที่มีคานอยกวา ◦ 1.0002 × 2–1 + –0.1112 × 2–1 ! 2. บวกคา significands ที่เลื่อนตำแหนงแลว ◦ 1.0002 × 2–1 + –0.1112 × 2–1 = 0.0012 × 2–1 ! 3. Normalize คาผลลัพธ และตรวจเช็ค over/underflow ◦ 1.0002 × 2–4, with no over/underflow ! 4. ปดคาใหเหลือ 4 บิทและอาจตอง normalize เมื่อจำเปน ◦ 1.0002 × 2–4 (no change) = 0.0625 สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
24!
Step 1
Step 2
Step 3 Step 4
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
25!
สมมติวามีเลขฐานสิบขนาด 4 หลัก (4-digit) โดย Exponent มีการ Bias ดวย 5 ◦ 1.110 × 1010 × 9.200 × 10–5 ! 1. บวก exponents เขาดวยกัน ◦ คา exponent ใหม = 10 + –5 = 5 ! 2. คูณคา significands เขาดวยกัน ◦ 1.110 × 9.200 = 10.212 ⇒ 10.212 × 105 ! 3. Normalize คาผลลัพธ และตรวจเช็ค over/underflow ◦ 1.0212 × 106 ! 4. ปดคาใหเหลือ 4 หลักและอาจตอง normalize เมื่อจำเปน ◦ 1.021 × 106 ! 5. ปรับเครื่องหมายของผลลัพธใหถูกตองจากตัวตั้งและตัวคูณ ◦ +1.021 × 106 !
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
26!
สมมติวามีเลขฐานสองขนาด 4 บิท (4-bit) โดย Exponent มีการ Bias ดวย 127 ◦ 1.0002 × 2–1 × –1.1102 × 2–2 (0.5 × –0.4375) ! 1. บวก exponents เขาดวยกัน ◦ Unbiased: –1 + –2 = –3 ◦ Biased: (–1 + 127) + (–2 + 127) = –3 + 254 – 127 = –3 + 127 ! 2. 2. คูณคา significands เขาดวยกัน ◦ 1.0002 × 1.1102 = 1.1102 ⇒ 1.1102 × 2–3 ! 3. Normalize คาผลลัพธ และตรวจเช็ค over/underflow ◦ 1.1102 × 2–3 (no change) with no over/underflow ! 4. ปดคาใหเหลือ 4 หลักและอาจตอง normalize เมื่อจำเปน ◦ 1.1102 × 2–3 (no change) ! 5. ปรับเครื่องหมายของผลลัพธใหถูกตองจากตัวตั้งและตัวคูณ ◦ –1.1102 × 2–3 = –0.21875 = -0.04875 !
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
! เลขจำนวนเต็มชนิดมีเครื่องหมาย
27!
จำเปนตองตรวจจับการเกิดโอเวอร
โฟลว ! เลขจำนวนจริงชนิดปรับจุดทศนิยม (Floating-point numbers) จำเปน ตองตรวจจับการเกิดโอเวอรโฟลว และ อันเดอรโฟลว ! การบวก/ลบ การคูณ/หารเลขจำนวนเต็มมีความซับซอนนอยกวา เลข Floating Point
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
28!
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
29!
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)!
30!
ผศ.ดร. สุรินทร กิตติธรกุล สาขาวิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร สถาบันเทคโนโลยีพระจอมเกลาเจาคุณทหารลาดกระบัง
! เขาใจโครงสรางพื้นฐานของเครื่องคอมพิวเตอร ! เขาใจและเชื่อมโยงการทำงานในระดับภาษาสูง
ภาษาแอสเซมบลี
และภาษาเครื่องได ! เขาใจสถาปตยกรรมภาษาเครื่องของ ARM ! เขาใจรูปแบบคำสั่งประเภทตางๆ ของ ARM ! เขาใจการเรียกใชฟงกชันและการรีเทิรนกลับโดยใชคำสั่งของ ARM สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
2
! ตัวประมวลผล
(CPU) ! หนวยความจำหลัก (Main Memory: RAM ! หนวยสำรองขอมูล/ โปรแกรม (Secondary Storage) ไดแก ฮารดดิสค, หนวยความจำ แฟลช เปนตน สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
3
! คำสั่งระดับภาษาเครื่องเขียนอยูในรูป
ของเลขฐาน 2 เหมือนขอมูล และจัด เก็บอยูในหนวยสำรองขอมูล (Secondary Storage) ! ระบบปฏิบัติการจะโหลดหรืออานคำ สั่งและขอมูลจากหนวยสำรองเขาไป บรรจุในหนวยความจำหลัก ! โปรเซสเซอรจะอานคำสั่งระดับภาษา เครื่องและขอมูลที่บรรจุอยูในหนวย ความจำหลักไปแปลความหมายและ ทำงาน
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
4
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
5
เปนหนวยความจำความเร็วสูงอยูภายในโปรเซสเซอร แตละตัวมี ความยาว 32 บิท ! รีจิสเตอรสำหรับเก็บขอมูล 16 ตัว ! รีจิสเตอรสำหรับเก็บสถานะของโปรเซสเซอร (processor status register) จำนวน 2 ตัว ! r13 เปน stack pointer (sp) เก็บแอดเดรสตำแหนงบนสุดของ สแต็ก ! r14 เปน Link Register (LR) ใชเก็บแอดเดรสตำแหนงที่จะรีเทิรนก ลับ ประกอบกับคำสั่ง Branch with Link (BL) ! r15 เปน Program Counter (PC) เก็บแอดเดรสตำแหนงของคำสั่ง ที่จะประมวลผลตอ !
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
6
! เท็กซหรือโคดเซ็กเมนต
(Text or Code
Segment) ◦ เก็บโปรแกรมในรูปภาษาเครื่อง ! ดาตาเซ็กเมนท (Data Segment) แบงเปน ◦ สแตติคดาตา (Static data): ตัวแปรชนิด โกลบอล (global variables) คาคงที่ เปนตน ◦ ไดนามิคดาตา (Dynamic data): เชน ฮีพ (Heap) สำหรับคำสั่ง malloc ในภาษา C, คำสั่ง new ในภาษา C++ มีทิศทาง การใชงานจากแอดเดรสมากไปน อย น้อยไปมาก ! สแต็กเซ็กเมนท (Stack Segment): พื้นที่ใน หนวยความจำสำหรับการสรางสแต็ก มี ทิศทางการใชงานจากแอดเดรสมากไปนอย
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
! เปนโปรเซสเซอรในเครื่องคอมพิวเตอรชนิดฝงตัว
7
ที่ไดรับความ
นิยมมากที่สุดในโลก ! คำสั่งยาว 32 บิท และบางเวอรชัน 16 บิท ! ในป คศ 2008 มีการใชงานจำนวน 4 พันลานตัว ! ไดสวนแบงทางการตลาดของระบบฝงตัว ◦ ไดแก โทรศัพทเคลื่อนที่ ทีวี อุปกรณเครือขายและบันทึกขอมูล กลอง พรินเตอร เปนตน สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
8
! คณิ่ตศาสตรและประมวลผล
(Data Processing: DP) ! โอนถายขอมูลระหวางหนวยความจำ (Data Transfer: DT) ! คำสั่งกระโดดหรือแยกออก (Branch: BR) ! อื่นๆ
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
! การบวกและลบเลขในคำสั่งภาษาแอสเซมบลี
9
จะตองใชองคประกอบ 3
ตัว คือ ตัวตั้ง ตัวลบ และ ผลลัพธ ADD a, b, c ; a <= b + c ! การกระทำทางคณิตศาสตรทั้งหมด จะเขียนในรูปนี้ ! หลักการออกแบบขอที่ 1: Simplicity favors regularity แปลไดวา ความไมซับซอนทำใหเกิดความเปนระเบีย หรือในทางกลับกัน เมื่อทุกคำ สั่งเขียนในรูปแบบเดียวกัน การออกแบบจึ่งมีความเปนระเบียบและทำให วงจรไมมีความซับซอน สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
10
f = (g + h) - (i + j); ! เมื่อแปลให้เป็นภาษาแอสเซมบลีของ ARM: !
ADD t0, g, h ; temp t0 = g + h ADD t1, i, j ; temp t1 = i + j SUB f, t0, t1 ; f = t0 - t1
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
11
! คำสั่งทางคณิตศาสตร
จะตองอานขอมูลจากหนวยความจำเขาเก็บใน รีจิสเตอร แลวจึงอานขอมูลจากรีจิสเตอรไปคำนวณเทานั้น ! ARM มีรีจิสเตอรขนาด 32-บิท จำนวน 16 ตัวเรียงซอนกัน เรียกวา Register File ◦ ใชเก็บขอมูลที่เปนตวเลขสำหรับคำสั่งทางคณิตศาสตร ◦ รีจิสเตอรแตละตัวมีเลขประจำตัว ตั้งแต 0 ถึง15 (เราเรียกรีจิสเตอรวา r0 ถึง r15) ◦ เราเรียก ขอมูลขนาด 32-บิทที่เก็บในรีจิสเตอรวา word
! หลักการออกแบบขอที่
2 : เล็กกวายอมมีความเร็วสูงกวา สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
12
! รีจิสเตอรมีความเร็วในการอานเขียนสูงกวาหนวยความจำ
(RAM) ! การอานเขียนขอมูลจากหนวยความจำ ตองอาศัยคำสั่ง LOAD และ STORE ! คอมไพเลอรจะตองใชงานขอมูลที่โหลดจากหนวยความจำมาเก็บ ในรีจิสเตอรใหมากที่สุด โดย ◦ ใชรีจิสเตอรที่มีอยูจำกัดเก็บขอมูลที่ใชงานบอยๆ ◦ สวนขอมูลที่นานๆ ใช ใหโหลดจากในหนวยความจำมาเก็บเพื่อใชงาน แลวจึงสโตรกลับในหนวยความจำ เพื่อปลอยใหรีจิสเตอรวาง
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
!
!
13
f = (g + h) - (i + j); ◦ ค่าของตัวแปล f, …, j อยู่ในรีจิสเตอร์ r0, …,r4 ◦ รีจิสเตอร์ r5 และ r6 เก็บค่าผลลัพธ์ชั่วคราว เมื่อแปลให้เป็นภาษาแอสเซมบลีของ ARM: ADD r5,r0,r1 ; r5 เก็บค่า g + h ADD r6,r2,r3 ; r6 เก็บค่า i + j SUB r4,r5,r6 ; r4 เก็บค่า r5-r6
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
14
g = h + A[8]; ◦ r1 เก็บค่า g, r2 เก็บค่า h, r3 เก็บค่าแอดเดรสเริ่มต้น (base address) ขอ งอะเรย์ A ◦ r5 เป็นรีจิสเตอร์สําหรับเก็บค่าชั่วคราว ! เมื่อคอมไพล์ด้วยภาษาของ ARM: ◦ Index 8 requires offset of 32 ! 4 bytes per word LDR r5,[r3,#32] ; r5 เก็บค่าที่โหลดจาก A[8] ADD r1, r2, r5 ; g = h + A[8] base register
offset สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
! คาคงที่สามารถระบุในคำสั่งไดโดยตรง
15
เชน
ADD r3,r3,#4 ; r3 = r3 + 4 ! หลักการออกแบบขอที่
3: ทำส่ิงที่เกิดขึ้นบอยใหเร็ว
◦ โปรแกรมเมอรนิยมใชคาคงที่ขนาดเล็ก เพื่อสะดวกตอการเขียน ◦ คำสั่งทางคณิตศาสตรของ ARM สามารถบรรจุคาคงที่ขนาดเล็ก ได โดยทำใหสะดวกและคำนวณไดทันทีทันใด ทำใหเราเรียกคา คงที่เหลานี้วา Immediate operand สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
16
! คำสั่งภาษาเครื่อง
(Machine Instruction หรือ Machine Code) มีลักษณะเปนเลขฐานสอง โดยแปลงใหเปนคำสั่งภาษา แอสเซมบลี เพื่อใหคนอานเขาใจงาย ! คำสั่งภาษาเครื่องของ ARM
◦ มีความยาว 32 บิทและบางคำสั่งยาว 16 บิท ◦ แตละคำสั่งประกอบดวย operation code (opcode), เลขรีจิสเตอร (register number), …
! เลขรีจิสเตอร
มีคาตั้งแต 0 ถึง 15 หมายถึงรีจิสเตอร– r0 to r15 สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
Cond 4 bits
F
I
Opcode
S
2 bits
1 bits
4 bits
1 bits
Rn
Rd
4 bits 4 bits
17
Operand2 12 bits
ออพโคด OpCode : (Operation Code) รหัสของการทำงาน ! เลขรีจิสเตอร Rd: (destination register) รีจิสเตอรปลายทางที่เก็บผลลัพธ ! เลขรีจิสเตอร Rn: (source register) รีจิสเตอรตนทาง ! ตัวตั้ง Operand2: ตัวตั้งที่สอง (second source operand) ! บิท I :Immediate. ถา I=0, ตัวตั้งที่สองคือเลขรีจิสเตอร, !
ถา I=1, ตัวตั้งที่สองคือ คาคงที่ขนาด 12 บิท (12-bit immediate.)
บิท S: Set Condition Code ! บิท Cond: Condition ! บิท F: Instruction Format. !
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
18
Cond 4 bits
F
I
Opcode
S
2 bits
1 bits
4 bits
1 bits
Rn
Rd
Operand2
4 bits 4 bits
12 bits
ADD r5,r1,r2 ; r5 = r1 + r2 14 4 bits
0
0
4
0
1
2 bits
1 bits
4 bits
1 bits
5
4 bits 4 bits
2 12 bits
1110 00 0 0100 0 0001 0101 0000000000102 1110 0000 1000 0001 0101 0000 0000 00102 E 0 8 1 5 0 0 216 สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
19
20
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
Operation
C
Java
ARM
Shift left
<<
<<
LSL
Shift right
>>
>>>
LSR
Bitwise AND
&
&
AND
Bitwise OR
|
|
ORR
Bitwise NOT
~
~
MVN
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
21
22
! ใชสำหรับเลือกกระทำตอบิทที่ตองการ
AND r5, r1, r2 ; reg r5 = reg r1 & reg r2
r2
0000 0000 0000 0000 0000 1101 1100 0000
r1
0000 0000 0000 0000 0011 1100 0000 0000
r5
0000 0000 0000 0000 0000 1100 0000 0000
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
! ใชสำหรับ
23
รวมบิทในรีจิสเตอรเขาดวยกัน
ORR r5, r1, r2
; reg r5 = reg r1 | reg r2
r2
0000 0000 0000 0000 0000 1101 1100 0000
r1
0000 0000 0000 0000 0011 1100 0000 0000
r5
0000 0000 0000 0000 0011 1101 1100 0000
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
24
! ใชสำหรับอินเวอรตบิททั้งหมดในรีจิสเตอร ! คำสั่ง
Move Not (MVN)
MVN r5, r1 ;
reg r5 = ~ reg r1
r1
0000 0000 0000 0000 0011 1100 0000 0000
r5
1111 1111 1111 1111 1100 0011 1111 1111
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
Cond 4 bits
F
Opcode
Rn
Rd
Offset12
2 bits
6 bits
4 bits
4 bits
12 bits
25
LDR r5, [r3, #32] ; Temporary reg r5 gets A[8] 14 4 bits
1
24
3
5
32
2 bits
6 bits
4 bits
4 bits
12 bits
โหลด คือ อานคาจากหนวยความจำมาเก็บในรีจิสเตอร r5 ตาม แอดเดรสที่กำหนดอยูในรีจิสเตอร r3 + 32 โดย r3 เปนแอดเดรสเริ่ม ตนของอะเรย A และตำแหนงที่ A[8] หางจากตำแหนง A[0] เทากับ 8*4 = 32 ไบท สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
26
! ใชในการควบคุมการทำงานของโปรแกรม
เชน ประโยคเงื่อนไข
การวนลูป การเรียกใชฟงกชัน ! ใชควบคูกับการเปรียบเทียบดวยคำสั่ง CMP (Compare) รีจิส เตอร จำนวน 2 ตัว
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
!
ภาษา C:
!
if (i==j) f = g+h; else f = g-h; ◦ f, g,h,i,j ถูกโหลดค่าเข้ามาเก็บในรีจิสเตอร์ r0, r1,..r4 เมื่อคอมไพล์เป็นแอสเซมบลีของ ARM:
27
Assembler จะคํานวณแอดเดรสของ Else CMP r3,r4 BNE Else ; go to Else if i != j ADD r0,r1,r2 ; f = g + h (skipped if i != j) B Exit Assembler จะคํานวณแอดเดรสของ Exit Else: SUB r0,r1,r2 ; f = g - h (skipped if i = j) Exit:
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
28
!
ขั้นตอนการเรียกใชฟงกชัน ประกอบดวย 1. สงผานคาไปยังฟงกชันลงในรีจิสเตอร 2. สงผานการทำงานไปยังฟงกชัน นั่นคือ คาของ PC จะถูกเปลี่ยนใหชี้ไปยังแอดเดรสเริ่มตนของฟงกชันนนั้น 3. จองหนวยความจำที่ตองการบนสแต็ก 4. เริ่มตนทำงานคำสั่งที่เปนบอดี้ของฟงกชันนั้น 5. สงคาผลลัพธที่คำนวณเสร็จเรียบรอยผานทางรีจิสเตอรไปยังผูเรียก 6. รีเทิรนกลับไปยังฟงกชันผูเรียก โดย PC <= LR สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
29
• คลายกับคำสั่ง Branch (B) แต คำสั่ง BL จะเก็บคา PC ซึ่งชี้ไปยัง แอดเดรสของคำสั่งถัดไป ในรีจิสเตอร LR (Link Return) เพื่อใชรีเทิร นกลับหลังจากที่ทำงานคำสั่งตางๆ ใน subroutine (function) เสร็จ สิ้นแลว สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
30
void sort (int v[], int n) { int i, j; for (i = 0; i < n; i += 1) { for (j = i – 1; j >= 0 && v[j] > v[j + 1]; j -= 1) ! ! !{ swap(v,j); } } }
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
! ทำการสลับคาในอะเรย
31
v ณ ตำแหนง k
void swap(int v[], int k) { int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
32
Register allocation v RN 0 n RN 1 i RN 2 j RN 3 vjAddr RN 12 vj RN 4 vj1 RN 5 vcopy RN 6
; 1st argument address of v ; 2nd argument index n ; local variable i ; local variable j ; to hold address of v[j] ; to hold a copy of v[j] ; to hold a copy of v[j+1] ; to hold a copy of v
ncopy
; to hold a copy of n
RN 7
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
33
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
34
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
35
Assembler directive v
RN 0
; 1st argument address of v
k
RN 1
; 2nd argument index k
temp
RN 2
; local variable
temp2
RN 3
; temporary variable for v[k+1]
vkAddr
RN 12
; to hold address of v[k]
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
36
! โครงสรางพื้นฐานของเครื่องคอมพิวเตอร
ประกอบดวย ! ภาษาสูงจะทำงานไดตองแปลงใหเปนภาษาแอสเซมบลี และภาษา เครื่องซึ่งเปนเลขฐานสอง เพื่อใหโปรเซสเซอรเขาใจ ! สถาปตยกรรมภาษาเครื่องของ ARM มีลักษณธงาย ! รูปแบบคำสั่งของ ARM แบงเปนคำสั่งประมวลผลขอมูล ถายโอน ขอมูล เปนตน ! การเรียกใชฟงกชันและการรีเทิรนกลับโดยใชคำสั่งของ ARM ตอง ใชคำสั่ง BL, รีจิสเตอร LR SP และ PC สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
37
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
38
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
39
ผศ.ดร. สุรินทร กิตติธรกุล สาขาวิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร สถาบันเทคโนโลยีพระจอมเกลาเจาคุณทหารลาดกระบัง
! เพื่อใหรูถึงพัฒนาการของสถาปตยกรรมชุดคำสั่งและโครงสรางของ
ARM
! เพื่อใหเขาใจถึงขบวนการทำงานของ
ARM แบบพื้นฐาน ! เพื่อใหเขาใจถึงขบวนการทำงานของ ARM แบบไปปไลน (Pipeline) ! เพื่อใหเขาใจถึงประสิทธิภาพการทำงานแบบไปปไลน ! เพื่อใหเขาใจถึงพิษ (Hazard) ที่เกิดขึ้นเนื่องจากการทำงานแบบไปปไลน ! เพื่อใหรูถึงประสิทธิภาพพลังงาน (Power Efficiency) ของ ARM เวอรชัน ตางๆ
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
2
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
3
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
4
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
5
! ประกอบดวยชิป
ซึ่งมี ARM core หนวยความจำแคชแบบรวม (Unified Cache) ซึ่งเก็บขอมูลและคำสั่งดวยกัน ! หนวยความจำไดนามิค (DRAM) แยก โดยเชื่อมตอกับชิป ARM ดวยบัส AMBA ! ARM core สามารถขยายดูจะมีลักษณะคลายกับรูปดานบนขวา ซึ่งจะ อธิบายในหัวขอถัดไป ! บัส AMBA ซึ่งประกอบดวยสายสัญญาณขอมูล (Data) สายแอดเดรส (Address) และสัญญาณควบคุมอื่นๆ สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
6
! ทำหนาที่เก็บคำสั่งและขอมูลโดย
อิสระจากกัน ! เปนหนวยความจำชนิดสแตติก (SRAM) ซึ่งมีความเร็วสูง สามารถเขา ถึงคำสั่งหรือขอมูลไดในเวลา ไมเกิน 10 นาโนวินาที
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
r0-r15 ! บาเรลชิฟเตอร ! ALU: Arithmetic Logic Unit ! แมค (MAC: Multiply Accumulator)
7
! รีจิสเตอร
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
8
! เปนหนวยความจำความเร็วสูงอยูภายในโปรเซสเซอร
แตละตัวมี
ความยาว 32 บิท ! รีจิสเตอรสำหรับเก็บขอมูล 16 ตัว ! รีจิสเตอรสำหรับเก็บสถานะของโปรเซสเซอร (processor status register) จำนวน 2 ตัว ! r13 เปน stack pointer (sp) เก็บแอดเดรสตำแหนงบนสุดของ สแต็ก ! r14 เปน Link Register (LR) ใชเก็บแอดเดรสตำแหนงที่จะรีเทิร นกลับ ประกอบกับคำสั่ง Branch with Link (BL) ! r15 เปน Program Counter (PC) เก็บแอดเดรสตำแหนงของ คำสั่งที่จะประมวลผลตอ สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
9
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
10
! ARM
core ในรูปนี้มีลักษณะคลายกับรูปกอนหนา โดยมีรายละเอียดที่ มากกวา ! สัญลักษณสี่เหลี่ยมคางหมู คือ มัลติเพล็กเซอร (Multiplexor) หรือซีเล็ค เตอร (Selector) ทำหนาที่เชื่อมตอขาอินพุทเสนใดเสนหนึ่งเขากับขาเอา ทพุทเขาดวยกัน ณ เวลาใดๆ โดยสามารถเลือกจากขาสัญญาณควบคุม ! การทำงานของ ARM core จะขึ้นอยูกับคำสั่ง (Instruction) ที่อานมาได จากหนวยความจำ ! ยกตัวอยางการทำงานของคำสั่ง ณ หนวยความจำ ดังนี้
! Address ! ……….. . ! 00EE0016 ! ……….. . ! 00FF0016 ! 00FF0416 ! 00FF0816 ! ……….. .
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
11
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
12
Instruction ……………. ……………. ……………. add r1,r2, r3 ldr r1,r2, #32 BL 00EE0016 …………….
PC = 00FF0016 add r1,r2, r3
r15 = 00FF0016 2, 3
r2+r3
r2 r3
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
13
PC = 00FF0416 ldr r1,r2, #32
00FF0C16
r15 = 00FF0416 2
Mem[r2+32] r2 32
32
Mem[r2+32]
Mem[r2+32]
r2+32 Mem[r2+32] สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
14
PC = 00FF0816 BL 00EE0016
00FF0C16
r15 = 00EE0016 r14 = 00FF0C16
00EE0016 00EE0016
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
!
! !
15
ซัก/อบ/รีด/พับเก็บ
เมื่อซัก 4 รอบ: Speedup = 8/3.5 = 2.3 หากซักตอเนื่องไป n รอบ: Speedup = 2n/0.5n + 1.5 ≈ 4 = จำนวนของไปปไลนสเตจ (number of pipeline stages) สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
16
! Fetch/Decode/Execute ! Fetch:
สงแอดเดรสของคำสั่งไป ยังหนวยความจำคำสั่ง รอรับคำ สั่งที่แอดเดรสนั้น ! Decode: ถอดรหัสคำสั่ง และ อานคาจากรีจิสเตอร จากการ Fetch กอนหนา ! Execute: ปฏิบัติตามคำสั่งที่ได จากการ Decode กอนหนา สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
17
! แตละสเตจใชเวลาทำงาน
1 คาบสัญญาณนากา (Clock Cycle Time) ! หนึ่งคำสั่งใชเวลา 3 ไซเคิล ! คำสั่งทำงานไมพรอมกัน แตมีชวงเวลาที่คาบเกี่ยวกัน
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
18
!
!
!
!
!
!
Fetch/Decode/Execute/Buffer-Data/ Writeback Fetch: สงแอดเดรสของคำสั่งไปยังหนวยความ จำคำสั่ง รอรับคำสั่งที่แอดเดรสนั้น Decode: ถอดรหัสคำสั่ง และอานคาจากรีจิส เตอร จากการ Fetch กอนหนา Execute: ปฏิบัติตามคำสั่งทางคณิตศาสตรที่ได จากการ Decode กอนหนา Buffer-Data: อานหรือเขียนขอมูลในหนวย ความจำขอมูล Writeback: เขียนขอมูลที่อานไดไปเก็บในรีจิส เตอร r0 - r15 สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
19
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
20
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
21
! Fetch/Decode/Issue/Execute/Writeback ! ไปปไลนที่ยาวที่สุดเกี่ยวของกับตัวเลขแบบ
Floating-Point ! Execute ใชจำนวนคล็อกไมเทากัน ขึ้นอยูกับชนิดของคำสั่งและขอมูล ! ทำงานในลักษณะ In-Order คือ ทำงานตามลำดับของโปรแกรม สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
22
! Fetch/Decode/Issue
(Queue)/Execute/Writeback ! Execute ใชจำนวนคล็อกไมเทากัน ขึ้นอยูกับชนิดของคำสั่งและขอมูล ! ทำงานแบบ Out-of-Order คือ ทำงานเสร็จกอนหลังตามความยากงายของ ขอมูล ดวยการทำ Register Renaming ! ทำงานแบบ Multiple Issue คือ ทำงานหลายคำสั่งพรอมกัน สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
23
! ในโปรเซสเซอรที่ทำงานแบบไปปไลน
สถานการณที่ปองกันไมใหคำสั่งถัด ไปเริ่มทำงานในสัญญาณคล็อกถัดไปได แบงเปน ! พิษจากโครงสราง (Structure Hazard) เนื่องจากฮารดแวรที่ตองการ กำลังทำงานอื่น ทำใหไปปไลนหยุดการทงานชั่วคราว ! พิษจากขอมูล (Data Hazard) เนื่องจากขอมูลที่จำเปนยังไมพรอม ! พิษจากการควบคุม (Control Hazard) เนื่องจากเงื่อนไขการทำงาน เชน คำสั่ง CMP รีจิสเตอร เชื่อมโยงกับคำสั่ง B(เงื่อนไข) ที่จะขึ้นอยูกับผลการ เปรียบเทียบของคำสั่ง CMP กอนหนา
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
24
!
ยกตัวอย่างเช่น คําสั่งที่ต่อเนื่องกันดังต่อไปนี้ ◦ Add sub
r0, r0, r1 r2, r0, r3
;r0 = r0 + r1 ;r2 = r0 – r3
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
25
! ขึ้นกับจำนวนสเตจ
หากจำนวนสเตจมากเกินไป ประสิทธิภาพอาจลดลง ! ความขึ้นตอกัน (Dependence) ระหวางคำสั่ง ! พิษ (Hazards) ทำใหประสิทธิภาพลดลง นักออกแบบตองหาทางแกพิษ ตางๆ ดังนี้ ◦ เพ่ิมฮารดแวรเพื่อแกจากโครงสราง (Structure Hazard) ◦ เพิ่มเสนทางการสงตอขอมูล (Data Forwarding) เพื่อแกพิษจากขอมูล (Data Hazard) และ ◦ เพิ่มตัวทำนายเงื่อนไข เพื่อแกพิษการควบคุม (Control Hazard) สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
26
!
การสิ้นเปลืองพลังงานมากหรือนอยวัดจากคา mW/MHz ซึ่งเกิดจาก ◦ จำนวนสถานีไปปไลน (Pipeline stages), ขนาดของแคช, สมรรถนะการ ทำงานซึ่งวัดจาก MIPS/MHz สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
27
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
28
สถาปตยกรรมชุดคำสั่งและโครงสรางของ ARM มีการพัฒนาอยางตอเนื่องเพื่อ รองรับการใชงานที่หลากหลายมาก ! ขบวนการทำงานของ ARM มีลักษณะเขาใจงาย ไมซับซอน เหมาะกับการ ทำงานที่ใชพลังงานต่ำ ! ขบวนการทำงานของ ARM แบบไปปไลน (Pipeline) ชวยเพ่ิมประสิทธิภาพแต ตองใชพลังงานเพิ่มขึ้น ! ประสิทธิภาพการทำงานแบบไปปไลน ขึ้นอยูกับหลายปจจัยรวมถึงพิษ (Hazard) ชนิดตางๆ ทำใหประสิทธิภาพไมเปนไปตามทฤษฎี ! ประสิทธิภาพพลังงาน (Power Efficiency) ของ ARM เวอรชั่นตางๆ ขึ้นอยูกับ การใชงาน ความถี่สูงสุด และจำนวนสเตจของไปปไลน !
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
29
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
30
สถาปตยกรรมคอมพิวเตอร (Computer Architecture)
31