Computer Architecture

Page 1


ผศ.ดร. สุรินทร กิตติธรกุล สาขาวิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร สถาบันเทคโนโลยีพระจอมเกลาเจาคุณทหารลาดกระบัง

!  เพื่อใหทราบถึงชนิดของเครื่องคอมพิวเตอร !  เพื่อใหเขาใจโครงสรางของเครื่องคอมพิวเตอร !  เพื่อใหเขาใจการแปลงภาษาระดับสูงเปนภาษาแอสเซมบลี

และภาษาเครื่อง !  เพื่อใหเขาใจขั้นตอนการผลิตไมโครโปรเซสเซอร !  เพื่อใหเขาใจสมการเวลาซีพียู (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


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.