ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยReinhardt Böhmer ได้เปลี่ยน 6 ปีที่แล้ว
1
Chapter 12 Microprocessor without Interlocked Pipeline Stages (MIPS)
Not to be confused with Millions of instructions per second
3
Computer Architecture
4
เปิดเผยแค่ instruction set ให้บริษัทอื่นทำแข่งได้ ไม่เปิดเผย architecture ข้างใน
5
Instruction set ของ MIPS ดูผ่านๆ ก็พอ
22
Ford Assembly Line
25
อาจจะมี hardware มากกว่า 1 ชิ้นก็ได้ ก็จะรับผ้าได้ทีละหลายๆ ถัง
ทำ pipeline ได้
26
A B C D E1 A B C D E2 A B C D E3
27
(A1 + B1) * (C1+D1) / E1 (A1 + B1) * (C1+D1) E1 (LATCH) (A2 + B2) * (C2+D2) E2 (A2 + B2) (C2 + D2) (LATCH) A B C D E3
34
เริ่มอ่าน register ในเวลาครึ่งหลัง
Data ที่จะเขียนมาในครึ่งแรก (แต่เขียนเมื่อจบ cycle)
35
IM / IF = instruction memory / fetch Reg = register (read)
ALU = arithmetic logic unit DM = data memory Reg = register (writer)
40
LATCH Data Dependency OK
41
อันนี้ก็ต้อง forward ด้วย !!!
Forwarding
42
Forwarding
44
ต้อง forward จาก Reg ไม่ใช่ LATCH
ทำไม่ได้
45
ไม่มีรายละเอียดเหมือนในรูปก่อนหน้า ว่า forward จากไหน
46
Stall เพราะไม่รู้ว่าจะ taken หรือไม่
49
Execution Out of Order Instructions ใน pipeline ไม่วิ่งแซงกัน วิ่งแซงกันไม่ได้ ทำหลายๆ instruction ไปพร้อมๆ กันได้ใน processor (core) เดียว เรียกว่า “Superscalar” ต้องมีฮาร์ดแวร์สำหรับทำ IF, ID, EX, MEM, WB หลายชุด Scoreboard Tomasulo’s algorithm ใช้ hardware หาคำสั่งที่ไม่ dependent กัน คำสั่งไหน execute ได้ก็ทำไปเลย วิ่งแซงได้ แบบนี้ออกแบบ hardware ยากมาก ในความเป็นจริง instruction จะรอ cache และ I/O นานมาก instruction ที่มาทีหลังอาจจะแซงไปได้
50
Very Long Instruction Word (VLIW)
ใช้ compiler หาคำสั่งที่ไม่ dependent กัน ให้ execute ไปพร้อมกัน แบบนี้ compiler ต้องฉลาดมากๆ hardware ไม่ซับซ้อน ใช้ OS ที่คอมไพล์มาสำหรับ ITANIUM
51
Clock rate สูง ไม่ใช่ perf ดี
Intel Itanium i7 X86 (32 บิต), X64 (64 บิต) Itanium Benchmark สำหรับการคำนวณ integer และ floating point number น่าจะใช้แค่ 1 core แอพ + เกม คณิต + วิทย์ Clock rate สูง ไม่ใช่ perf ดี 8.73 10.42 ต้อง normalize ด้วย clock rate 10.76 11.64 Itanium เกิดคอขวด (bottleneck) ที่ memory ต้องใช้ cache ใหญ่มาก หา instructions มา execute พร้อมกันทีละมากๆ ไม่ได้ compiler ทำดีที่สุดแล้ว สมรรถนะสู้ i7 ไม่ได้ ดังนั้นไม่พัฒนา Itanium ต่อ ไปทำ multicore ดีกว่า
52
สาเหตุที่ VLIW ใช้ cache ใหญ่มาก (อ คิดเองนะ ไม่ยืนยันว่าถูก)
VLIW ไม่สามารถ tradeoff ขนาด cache ได้ เนื่องจาก compiler กำหนดมาแล้ว ว่าต้อง execute คำสั่งอะไรบ้าง ถ้า cache ไม่พอ performance จะตกลงอย่างรวดเร็ว จึงต้องให้ cache มาก Superscalar ยืดหยุ่นกว่าเพราะ execute เมื่อมี hardware resource ว่าง (ไม่ได้กำหนดไว้ล่วงหน้าว่าจะต้อง execute คำสั่งไหนพร้อมกัน) เมื่อใช้ cache มากขึ้น ก็จะ stall และ execute ให้ช้าลงอัตโนมัติ (ไม่ fetch คำสั่งใหม่เข้าไป) หรือพูดอีกอย่างคือ compiler มันไม่ได้คิดถึงเรื่อง cache effect VLIW เลยได้ performance เท่ากับ Superscalar (ต้อง normalize clock rate) แต่ VLIW ใช้ cache มากกว่าถึง 4 เท่า !!!
53
16 cores ที่จริงแสดง #multi-threads หรือ logical processor
55
สำหรับเครื่องพิมพ์แบบ dot matrix
Grey Scale Image B&W Image 0 Black 255 White 1 – 254 Grey 0 Black 1 White สำหรับเครื่องพิมพ์แบบ dot matrix
56
Thread n + 1 ต้องไม่วิ่งแซง Thread n (มีเครื่องมือให้ใช้ lock)
อธิบายย่อๆ 1 thread คือ มีฟังก์ชัน main 1 อัน 2 thread คือ มีฟังก์ชัน main 2 อัน … แต่ละ thread execute พร้อมกัน
57
เวลารวมทั้งหมดทุกๆ อย่างที่ใช้รันโปรแกรม (บางทีจะวัดเฉพาะ CPU time)
จะได้ประโยชน์จาก multi-core โปรแกรมเกอร์ต้องออกแรงเขียนโปรแกรม CPU ไม่ทำให้อัตโนมัติ Applications ที่ใช้ต้องเขียนมาสำหรับ multi-core ถึงจะได้สมรรถนะที่ดีขึ้น ปัจจุบัน OS และ Apps เขียนมาสำหรับ multi-core แล้ว ใช้ notebook ที่มี 2 cores
60
Billion Transistors on a Chip
2010
62
The Knights Ferry die, Aubrey Isle
The Knights Ferry die, Aubrey Isle. Die size on KNF, at 45nm, was rumored to be roughly 700mm sq. 32 cores.
64
Multi-threading (in one page)
1 physical processor (core) Registers 1 ชุด PC 1 ตัว PC 1 ตัว 1 logical processor (core) 1 logical processor (core) รอ I/O รอ I/O HW ที่ช่วย switch ระหว่างโปรแกรม หรือ thread ใน 1 clock cycle รอ I/O 2 cores (no multi-thread) ได้สมรรถนะดีกว่า เร็วขึ้น 2 เท่า เทียบกับ 1 core 1 core (multi-thread, 2 threads) เร็วขึ้น 30% เทียบกับ 1 threads รอ I/O Support แค่ 2 threads ถึงมี thread อื่นพร้อมก็ทำไม่ได้
65
มี 2 threads คือ Main() และ RunMe() ถ้ามี 1 core ก็ทำทีละ thread ถ้ามี 2 core ก็ทำพร้อมกัน 2 threads ได้
66
Java ใช้ synchronized
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.