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

Computer Architecture  

Lecture Computer Architecture ก่อนกลางภาค By B@NK

Read more
Read more
Similar to
Popular now
Just for you