Presentation Title Here

Download Report

Transcript Presentation Title Here

สถาปั ตยกรรมคอมพิวเตอร์ เคลื่อนที่
Mobile Computing
Architecture
อ.ยืนยง กันทะเนตร
สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่
คณะเทคโนโลยีสารสนเทศและการสื่ อสาร
Chapter 9
คอมพิวเตอร์ แบบขนาน
วัตถุประสงค์
• เพื่อให้ เข้ าใจความแตกต่ างระหว่ างการคานวณแบบอนุกรมและ
แบบขนาน
• เพื่อให้ ร้ ู จักคอมพิวเตอร์ แบบขนาน
• เพื่อให้ เข้ าใจการพัฒนาซอฟต์ แวร์ แบบขนาน
• เพื่อให้ สามารถแยกแยะเครื่ องคอมพิวเตอร์ แบบขนานชนิดต่ างๆ
• เพื่อให้ ร้ ู จักหลักการกายวิภาคของ Flynn (Flynn’s
Taxonomy)
คอมพิวเตอร์ แบบขนาน
• เป้ าหมาย: เชื อ่ มต่อเครื ่องคอมพิ วเตอร์ หลายๆ เครื ่องเพือ่ สมรรถนะที ่สงงึ้น
- โดยใช้หลักการมัลติ โปรเซสเซอร์ (Multiprocessor)
- เพือ่ รองรับภาระงานทีเ่ พิ่ มึ้น (Scalability), การใช้งานได้ตลอดเวลา
(Availability), และประสิ ทธิ ภาพการใช้พลังงาน
• การทางานแบบึนานระดับจ็อบหรื อโปรเซส (Job-level or processlevel parallelism)
- เพิ่ มทรง พทุ ให้กบั จ็อบทีอ่ ิ สระต่อกัน
• โปรแกรมการทางานแบบึนาน (Parallel processing program)
- โปรแกรมหน่งตัวสามารถทางานพร้อมกันบนโปรเซสเซอร์ หลายตัวหรื อบน
โปรเซสเซอร์ ชนิ ดหลายคอร์ (Multicore microprocessors)
Multicore ARM
นิยาม
• ฮาร์ ดแวร์ (Hardware)
- แบบอนุกรม (Serial): เช่น โปรเซสเซอร์ Pentium 4
- แบบึนาน (Parallel): เช่น Xeon e5345 สีค่ อร์ (quad-core)
• ซอฟต์แวร์ (Software)
- แบบตามลาดับ (Sequential): เช่น การคงณเมทริ กซ์ (matrix
multiplication)
- แบบคอนเคอเรนท์ (Concurrent): เช่น ระบบปฏิ บตั ิ การ (operating
system)
• ซอฟต์แวร์ แบบตามลาดับ /แบบคอนเคอเรนท์ สามารถทางานบนฮาร์ ดแวร์ แบบ
อนุกรมและแบบึนานได้
- ความท้าทาย คือ การใช้ประโยชน์จากฮาร์ ดแวร์ ให้มากทีส่ ดุ
การพัฒนาซอฟต์ แวร์ แบบขนาน
• การพัฒนาซอฟต์แวร์ ให้ทางานแบบึนาน เป็ นเรื ่องไม่ง่าย
• ปั ญหาแบ่งออกเป็ น 2 ชนิ ด คือ
- ปั ญหาทีม่ ีการึนานึองึ้อมงล (Data Parallelism)
- ปั ญหาทีม่ ีการึนานึองการทางาน (Task Parallelism)
• ความยาก (Difficulties) คือ
- การแบ่งภาระงาน (Partitioning)
- การประสานงาน (Coordination)
- การสิ้ นเปลืองเวลาในการสือ่ สาร (Communications overhead)
Data vs. Task Parallelism
เครื่องคอมพิวเตอร์ แบบขนานชนิดใช้ หน่ วยความจาร่ วมกัน
(Shared Memory Multiprocessor: SMP)
ใช้ หน่ วยความจาหลักร่ วมกัน (SMP: shared memory multiprocessor)
- การซิงโครไนเซชัน (Synchronization) ใช้ตวั แปรร่ วม (shared variables)
ต้องอาศัยการล็อกเวลาการเข้าถึงหน่วยความจา (Memory access time): มีค่าคงที่
(Uniform Memory Access: UMA) vs. ไม่คงที่ (Non-Uniform
Memory Access: NUMA)
ตัวอย่ าง: การหาผลบวก
• จงบวกเลข 100,000 ตัวด้ วยโปรเซสเซอร์ 100 ตัวชนิด UMA
- แต่ ละโปรเซสเซอร์ มีเลข ID ประจาตัว คือ Pn โดย 0 ≤ Pn ≤ 99
- เริ่ มจากการแบ่ งตัวเลข 1000 ตัวต่ อโปรเซสเซอร์ 1 ตัว
- ดังนั้น ผลรวมบางส่ วนบนโปรเซสเซอร์ แต่ ละตัวคานวณได้ ดังนี ้
sum[Pn] = 0;
for (i = 1000*Pn;
i < 1000*(Pn+1); i = i + 1)
sum[Pn] = sum[Pn] + A[i];
• ทาการบวกค่ าผลลัพธ์ เข้ าด้ วยกัน ในแต่ ละรอบจะต้ องอาศัยหลักการกระจายการ
บวกให้ แต่ ละโปรเซสเซอร์ ทางานพร้ อมกันให้ มากที่ สุด
- ทาการรวมผลบวกแต่ ละคู่ แล้ วลดจานวนการบวกลงครึ่ งหนึ่งไปเรื่ อยๆ จะต้ องมีการ
ประสานงานผลบวกในแต่ ละรอบ
คอมพิวเตอร์ แบบขนานชนิดหน่ วยความจาอิสระจากกัน
- มัลติคอมพิวเตอร์ (Multi Computer)
- แต่ ละโปรเซสเซอร์ เห็นหน่ วยความจาแยกอิสระจากกัน
- การสื่ อสารระหว่ างกันใช้ การส่ งข้ อความระหว่ างกัน (Message Passing)
คอมพิวเตอร์ แบบขนานชนิดหน่ วยความจาอิสระจากกัน
• เครื อึ่ายึองเครื ่องคอมพิ วเตอร์ ทีอ่ ิ สระจากกัน
• เหมาะกับโปรแกรมทีทิ่ างานร่ วมกันแบบห่าง (Loosely Coupled)
- เว็บเซิ ร์ฟเวอร์ ฐานึ้อมงล การจาลองการทางาน (Simulation)
• เพิ่ ม High availability, เพิ่ ม Scalability, และราคาไม่แพง
• อุปสรรคและปั ญหา
- ต้นทุนการบริ หารจัดการ
- การเชือ่ มต่อระหว่างเครื ่องมีแบนด์วิดธ์ ไม่สงงมาก (ระดับ1-10 จิ กะบิ ท ต่อวิ นาที)
- แบนด์วิดธ์ ระหว่าง processor/memory บนเครื ่อง SMP สงงกว่ามาก
(ระดับ10 จิ กะบิ ทต่อวิ นาทีึ้นไป)
คอมพิวเตอร์ แบบขนานชนิดหน่ วยความจาอิสระจากกัน
• กริ ดคอมพิวติง้ (Grid Computing)
- เครื่ องคอมพิวเตอร์ ที่กระจายอยูทั่วโลกและเชื่ อมต่ อกับเครื อข่ ายอินเตอร์ เน็ท
- กระจายงานออกไปยังเครื่ องต่ างๆ เมื่อคานวณเสร็จแล้ วจึงส่ งผลกลับ
- โปรแกรมจะทางานโดยอัตโนมัติ ขณะที่ผ้ ใู ช้ ปล่ อยให้ เครื่ องอยู่เฉยๆ (Idle)
- ตัวอย่ าง โครงการ SETI@home, World Community Grid
ตัวอย่ าง: การหาผลบวก บนเครื่องแบบ Message Passing
• จงคานวณหาผลบวกึองตัวเลึจานวน 100,000 ตัวด้วยโปรเซสเซอร์ 100 ตัว
• หาผลบวกึองตัวเลึจานวน 100,000 ตัวด้วยเครื ่องคอมพิวเตอร์ 100 เครื ่อง
- แต่ละเครื ่องมีเลึ ID ประจาตัว คือ Pn โดย 0 ≤ Pn ≤ 99
- กระจายตัวเลึ 1000 ตัวต่อคอมพิ วเตอร์ 1 เครื ่อง
- ดังนัน้ ผลรวมบางส่วนในแต่ละเครื ่องสามารถคานวณได้ดงั นี ้
sum = 0;
for (i = 0; i<1000; i = i + 1)
sum = sum + AN[i];
• ทาการบวกค่า sum ึองแต่ละเครื ่องเึ้าด้วยกัน ในแต่ละรอบจะต้องอาศัย
หลักการ
- กระจายการบวกให้แต่ละโปรเซสเซอร์ ทางานพร้อมกันให้มากทีส่ ดุ
- เครื ่องทีม่ ีเลึ ID มากส่งผลบวกมาให้เครื ่องทีม่ ีเลึ ID น้อย เพือ่ ทาการบวก
- จานวนเครื ่องทีบ่ วกจะลดจานวนลงเหลือคร่ งหน่งไปเรื ่อยๆ
ตัวอย่ าง: การหาผลบวก บนเครื่องแบบ Message Passing
• กำหนดให้ ใช้ ฟังก์ชนั send() and receive()
limit = 100; half = 100; /* 100 processors */
repeat
half = (half+1)/2; /* send vs. receive dividing line */
if (Pn >= half && Pn < limit)
send(Pn - half, sum);
if (Pn < (limit/2))
sum = sum + receive();
limit = half; /* upper limit of senders */
until (half == 1); /* exit with final sum */
- สมมติว่ำ send/receive ใช้ เวลำทำงำนนำนพอๆ กับกำรบวกเลข
- กำรใช้ Send/receive ทำให้ เกิดกำร synchronization
เครื่องคอมพิวเตอร์ แบบขนานชนิดใช้ หน่ วยความจาร่ วมกันและ
รองรับมัลติเทรด (Multihread)
• ดาเนิ นงานหลายเทรด (Thread) พร้อมกันบนฮาร์ ดแวร์ คนละชุด
- โดยการมีรีจิสเตอร์ โปรแกรมเคาท์เตอร์ (Program Counter) และรี จิสเตอร์
อืน่ ๆ หลายชุด
• มัลติ เทรดชนิ ดละเอี ยด (Fine-grain multithreading)
- เปลีย่ นเทรดการทางานทุกๆ ไซเคิ ลึองโปรเซสเซอร์
- ด้วยการสลับการทางานทีละคาสัง่ จากแต่ละเทรด (Interleave instruction
execution)
- หากคาสัง่ ใดค้าง เอาคาสัง่ จากเทรดอืน่ มารันแทน
• มัลติ เทรดชนิ ดหยาบ (Coarse-grain multithreading)
- เปลีย่ นเทรดการทางานเมือ่ เกิ ดการค้างนานๆ เช่น การค้นึ้อมงลไม่เจอที ่ L2 แคช
เป็ นต้น ทาให้ฮาร์ ดแวร์ มีความซับซ้อนน้อยกว่าชนิ ดละเอียด
เครื่องคอมพิวเตอร์ แบบขนานชนิดใช้ หน่ วยความจาร่ วมกัน
และรองรับมัลติเทรด (Multihread)
• กรณี โปรเซสเซอร์ สามารถทางานหลายคาสัง่ พร้อมกันได้
- สามารถทางานคาสัง่ จากหลายๆ เทรดพร้อมกันได้
- คาสัง่ จากเทรดทีไ่ ม่เกี ่ยวึ้องกันสามารถทางานพร้อมกันได้หากฮาร์ ดแวร์ พร้อม
- ภายในเทรดเดียวกัน การผงกโยงึองคาสัง่ จะต้องใช้การจัดลาดับ
(Scheduling) และการเปลีย่ นชื อ่ รี จิสเตอร์ (Register renaming)
• ตัวอย่าง: Intel Pentium-4 HyperThread
- รองรับได้ 2 เทรด: โดยการมี รีจิสเตอร์ 2 ชุด แต่ใช้งานฮาร์ ดแวร์ และ
แคชร่ วมกัน
การทางานของคอมพิวเตอร์ แบบขนานชนิดมัลติเทรด
(Multithread)
สตรีมคาสั่ งและข้ อมูล
(Instruction and Data Streams)
• ใช้ หลักกำรกำยวิภำคของ Flynn (Flynn’s Taxonomy)
การทางานชนิด SPMD (Single Program Multiple Data)
- โปรแกรมเดียวกันทางานแบบขนานบนเครื่ องคอมพิวเตอร์ ชนิด MIMD
- มีเงื่อนไขในการทางานบนโปรเซสเซอร์ แต่ ละตัว (คอร์ )
การคานวณแบบขนานอืน่ ๆ
• ใช้จีพียง (GPU: Graphic Processing Unit) บนการ์ ดจอ
• การประมวลสามารถทาแบบึนานได้เนือ่ งจากึ้อมงลมี Data Parallelism สงง
- GPUs มีลกั ษณะการทางานแบบ multithreaded
- ใช้การสวิ ทช์เทรด (Thread switching) เพือ่ ซ่อนเวลาในการอ้างถงหน่วยความจา
- ทาให้ไม่จาเป็ นต้องพ่งพาแคชหลายระดับมากนัก
- หน่วยความจาด้านกราฟิ กส์มีความกว้าง (Width) มากทาให้แบนด์วิดธ์ สงง
• มีแนวโน้มทีจ่ ะพัฒนาให้เป็ น GPU สารพัดประโยชน์ (general purpose)
- เพือ่ ช่วย CPU ในการคานวณ
- โดย CPU เหมาะกับงานแบบอนุกรม, GPU เหมาะกับงานแบบึนาน
• ภาษาทีใ่ ช้ในการพัฒนาโปรแกรม (Programming languages/APIs)
- DirectX ึองไมโครซอฟต์ , OpenGL
- C for Graphics (Cg), High Level Shader Language (HLSL)
- Compute Unified Device Architecture (CUDA) ึอง nVidia
วิวฒ
ั นาการของการ์ ดจอ
• การ์ ดจอ (VGA Card) ในยุคแรกๆ
- ใช้หน่วยความจาเก็บค่าแต่ละจุดและการสร้างแอดเดรสในการสร้างสัญญาณภาพ
บนจอ
• การ์ ดจอยุคทีส่ ามารถประมวลผลกราฟิ กส์ 3 มิ ติ
- เดิ มมีใช้ในคอมพิ วเตอร์ ทีร่ าคาแพง
- จากกฏึอง Moore’s Law ทาให้ราคาลดลงและความสามารถเพิ่ มึ้น
- ปั จจุบนั การ์ จอ 3 มิ ติมีใช้ในเครื ่องคอมพิ วเตอร์ ทวั่ ไปและเครื ่องเล่นเกมส์
• จี พียง (Graphics Processing Units)
• เป็ นโปรเซสเซอร์ ทีใ่ ช้งานด้าน 3 มิ ติโดยตรง
• มี ฟังก์ ชนั การประมวลผลึ้อมงล Vertex/pixel, ฟั งก์ ชนั การทา
shading, การแมพ texture mapping เป็ นต้น
การ์ ดจอ (VGA Card) ในยุคแรกๆ
สรุป
• การคานวณแบบอนุกรมและแบบึนาน ทาให้วิวฒ
ั นาการึอง
• คอมพิวเตอร์ โน้มเอนมาทางคอมพิวเตอร์ แบบึนานมากึ้น
• คอมพิวเตอร์ แบบึนานมี หลายชนิ ด ได้แก่ ชนิ ดหน่วยความจา
อิ สระจากกัน ชนิ ดหน่วยความจาร่ วมกัน
• การพัฒนาซอฟต์แวร์ แบบึนาน ึ้นอยง่กบั ปั ญหาที ม่ ี การึนาน
ึองึ้อมงล หรื อึนานึองการทางาน
• กายวิ ภาคึอง Flynn (Flynn’s Taxonomy) สามารถนาไป
วิ เคราะห์การทางานึองตัวประมวลผลแบบต่างๆ ได้
The End