Introduction: Parallel & Distributed Simulation
Systems
หลักการทำงานพื้นฐานของระบบ
Simulation
Simulation คือ
การนำเสนอหรือการจำลองลักษณะของระบบอื่นๆตลอดช่วงเวลาที่สนใจ
ซึ่งในกรณีที่กล่าวถึง Computer simulation จะหมายถึงโปรแกรมคอมพิวเตอร์ที่จำลองการทำงานของระบบที่สนใจ
Computer
Simulation Fundamental
1)
Computer Simulation คือ
โปรแกรมคอมพิวเตอร์ที่จำลองลักษณะการทำงานของโปรแกรมที่สนใจตลอดเวลาหรือเฉพาะช่วงเวลาที่ให้ความสนใจ
2)
Program variables หรือ State
variables เป็นตัวแปรซึ่งใช้เป็นสื่อกลางในการแสดงถึงสถานะปัจจุบันของระบบที่จำลอง
3)
Simulation Program จะปรับเปลี่ยนค่าของ
state variable เพื่อที่จะพัฒนาแบบจำลองไปตามช่วงเวลาที่เปลี่ยนแปลงไปเรื่อยๆ
4)
รูปแบบของเวลาที่มีการใช้งานในระบบ Simulation
·
เวลาที่ระบบต้นแบบใช้ในการทำงาน ( Physical
Time ) คือ เวลาที่ระบบต้นแบบหรือระบบจริงใช้ในการทำงานดังกล่าวที่จะนำมาทำเป็นแบบจำลองจริง
เช่น การทำแบบจำลองเพื่อแสดงการขึ้น-ลงของเครื่องบินตั้งแต่เวลาเที่ยงวันที่ 14
มกราคม 2545 จนกระทั่งถึงเวลาเที่ยงของวันที่ 15
มกราคม 2545 จะได้ว่า
ช่วงเวลาตั้งแต่เวลาเที่ยงวันที่ 14 มกราคม 2545 จนกระทั่งถึงเวลาเที่ยงของวันที่ 15 มกราคม 2545
เป็นเวลาของ Physical Time
·
เวลาที่เลื่อนไปในแบบจำลอง ( Simulation
Time ) คือ เวลาที่แบบจำลองใช้ในการทำงานเพื่อจำลองระบบ
ซึ่งเวลาดังกล่าวจะมีความสัมพันธ์กับเวลาที่ระบบต้นแบบใช้ในการทำงานจริง ( Physical
Time ) เช่น เวลาในแบบจำลองเป็น 9.0 จะหมายถึงเวลา 9.00 น.
ในระบบจริง และหนึ่งหน่วย ( 1.0 )
ของเวลาที่เลื่อนไปในแบบจำลองจะหมายถึงเวลา 1 ชั่วโมงที่เลื่อนไปในระบบจริง
·
เวลาที่เลื่อนไปในความเป็นจริง ( Wallclock
Time ) คือ เวลาที่เลื่อนไปในความเป็นจริง (
เหมือนกับเวลาที่แสดงโดยนาฬิกา ) ในระหว่างที่แบบจำลองมีกำลังทำงาน เช่น
แบบจำลองเริ่มต้นทำงานที่เวลา 10.00 น.
จนกระทั่งถึงเวลา 12.00 น. ในวันที่ 10
มกราคม 2545
5)
ลักษณะการทำงานของระบบ Simulation
เมื่อแบ่งตามเวลาในการทำงาน จะมี 3 รูปแบบ คือ
·
As-fast-as-possible execution คือ การทำงานของแบบจำลองจะทำงานไปด้วยความเร็วสูงสุดเท่าที่จะเป็นไปได้โดยไม่สัมพันธ์เวลาที่เลื่อนไปในโลกของความเป็นจริง
หรือ การทำงานจะไม่ขึ้นกับเวลาที่ใช้ในการทำงาน (
แต่ยังคงสัมพันธ์กับเวลาที่ระบบต้นแบบใช้ในการทำงาน )
·
Real time execution คือ
การทำงานของแบบจำลองจะมีความสัมพันธ์กับเวลาจริงที่ใช้ในการทำงานของแบบจำลอง เช่น
โปรแกรมหรือแบบจำลองใช้เวลาในการทำงานตามความเป็นจริงไปเป็นเวลา 15 นาที ดังนั้นเวลาที่เลื่อนไปในแบบจำลองก็จะเท่ากับ 15 นาทีด้วย
·
Scalable real-time
execution คือ การทำงานจะมีความสัมพันธ์กับเวลาจริงที่ใช้ในการทำงานในลักษณะที่เป็นอัตราส่วนต่อกัน
ในกรณีที่อัตราส่วนมีค่ามากกว่าหนึ่ง แบบจำลองก็จะทำงานได้เร็วกว่าระบบจริง ,
ในกรณีที่อัตราส่วนมีค่าน้อยกว่าหนึ่ง ( อัตราส่วนจะไม่ต่ำกว่า 0
) แบบจำลองจะทำงานได้ช้ากว่าระบบจริง
และในกรณีที่อัตราส่วนเท่ากับหนึ่งระบบจะทำงานแบบ Real-time
execution เช่น อัตราส่วนในการทำงานเท่ากับ 2 ดังนั้นเมื่อแบบจำลองทำงานไปเป็นเวลา
15 นาที เวลาที่ถูกเลื่อนไปในแบบจำลองก็จะเท่ากับ 2 x
15 หรือ 30 นาที เป็นต้น
Computer Simulation
Taxonomy
Computer Simulation Taxonomy เป็นการกล่าวถึงลักษณะการทำงานของ Computer Simulation ซึ่งสามารถที่จะแบ่งการทำงานออกมาเป็นลักษณะหรือวิธีการทำงานย่อยได้ดังรูป
รูปที่
2 แผนภาพ Computer Simulation Taxonomy [2]
จากรูป
วิธีการหรือลักษณะการทำงานของ Computer Simulation สามารถที่จะอธิบายได้ดังนี้คือ
1)
Continuous time simulation เป็นระบบที่จำลองโดยการให้ความสนใจการเปลี่ยนแปลงในแบบจำลองตลอดเวลาตั้งแต่เริ่มต้นทำงานจนสิ้นสุดการทำงาน
ไม่ว่าระหว่างการทำงานของแบบจำลองจะมีการเปลี่ยนแปลงหรือไม่มีการเปลี่ยนแปลงใดๆเกิดขึ้นก็ตาม
ซึ่งลักษณะของแบบจำลองที่ได้มักจะขึ้นกับสมการที่จะนำมาใช้ในการอธิบายแบบจำลอง
แบบจำลองที่เหมาะสมกับการทำงานแบบนี้มักจะเป็นแบบจำลองที่ต้องการความต่อเนื่องในการทำงาน
เช่น แบบจำลองของเครื่องบินที่ใช้แสดงการบินของเครื่องบิน
2)
Discrete time simulation เป็นระบบที่การจำลองโดยการให้ความสนใจการเปลี่ยนแปลงในลักษณะเป็นช่วงของเวลาที่ไม่ต่อเนื่อง
คือไม่ต้องเก็บข้อมูลตลอดเวลาที่จำลองการทำงาน ซึ่งสามารถแบ่งเป็นรูปแบบย่อยๆได้ 2
รูปแบบ คือ
·
Event stepped เป็นแบบจำลองที่จะสนใจต่อเหตุการณ์ที่มีการเปลี่ยนแปลงไป ดังนั้นการเลื่อนไปของเวลาที่ใช้ในแบบจำลองจะขึ้นอยู่กับการเกิดเหตุการณ์ต่างๆ หากมีเหตุการณ์ใดเหตุการณ์หนึ่งเกิดขึ้นจึงจะมีการเลื่อนไปของเวลา แบบจำลองที่มีความเหมาะสม เช่น แบบจำลองของสนามบินอย่างง่ายซึ่งจะสนใจการขึ้นและลงของเครื่องบิน นั้นคือจะมีการเปลี่ยนแปลงเมื่อเครื่องบันมีการบินขึ้นและบินลงในสนามบิน
Event stepped เป็นแบบจำลองที่จะสนใจต่อเหตุการณ์ที่มีการเปลี่ยนแปลงไป ดังนั้นการเลื่อนไปของเวลาที่ใช้ในแบบจำลองจะขึ้นอยู่กับการเกิดเหตุการณ์ต่างๆ หากมีเหตุการณ์ใดเหตุการณ์หนึ่งเกิดขึ้นจึงจะมีการเลื่อนไปของเวลา แบบจำลองที่มีความเหมาะสม เช่น แบบจำลองของสนามบินอย่างง่ายซึ่งจะสนใจการขึ้นและลงของเครื่องบิน นั้นคือจะมีการเปลี่ยนแปลงเมื่อเครื่องบันมีการบินขึ้นและบินลงในสนามบิน
·
Time stepped เป็นแบบจำลองที่จะเก็บข้อมูลเป็นช่วงๆของเวลา
ดังนั้นเวลาที่จะใช้ในการทำงานจะมีการเลื่อนไปด้วยอัตราคงที่ ซึ่งจะขึ้นอยู่กับการกำหนดของแบบจำลอง
เช่น แบบจำลองการเปลี่ยนแปลงระดับน้ำของทะเล
ซึ่งจะเก็บการเปลี่ยนแปลงทุกๆครึ่งชั่วโมง
Parallel
/ Distributed Simulation
Parallel/Distributed
Simulation คือ
เทคโนโลยีที่ทำให้สามารถที่จะสร้างแบบจำลองเพื่อที่จะนำมาทำงานโดยใช้ระบบ Multiprocessors
หรือการใช้หน่วยประมวลผลหลายตัวมาทำงานร่วมกันได้
ซึ่งการทำงานในรูปแบบนี้สามารถแบ่งได้เป็น 2 ลักษณะคือ
1)
Tightly Coupled Multiprocessors System เป็นระบบที่ทำงานแบบ Parallel Simulation ซึ่งจะมีการเชื่อมต่อกันของหน่วยประมวลผลอย่างใกล้ชิดกัน
การทำงานในรูปแบบนี้สามารถที่จะแบ่งแยกเป็น 2 รูปแบบย่อยๆ
ตามลักษณะการเชื่อมต่อกับหน่วยความจำได้ดังนี้คือ
·
Share Memory Multiprocessors เป็นระบบที่จะแบ่งส่วนของ
memory มาเพื่อใช้งานร่วมกันโดยหน่วยประมวลผลหลายตัว
ดังนั้นส่วนของ memory จึงเป็นทรัพยากรของส่วนกลางที่จะนำมาแบ่งใช้งานร่วมกัน
ไม่ได้เป็นของหน่วยประมวลผลตัวใดตัวหนึ่งโดยเฉพาะ
·
Distributed Memory Muticomputers เป็นระบบที่จะแบ่งการทำงานไปให้หน่วยประมวลผลต่างๆช่วยกันทำงานโดยที่หน่วยประมวลผลแต่ละตัวจะมี
memory เป็นของตัวเอง ไม่ได้แบ่งกันใช้งานร่วมกัน
แต่ว่าหน่วยประมวลผลตัวอื่นๆก็ยังสามารถที่จะเข้ามาขอข้อมูลที่ถูกเก็บไว้ใน memory
ได้โดยการขอข้อมูลผ่านหน่วยประมวลผลได้เช่นกัน
2)
Loosely Coupled Multiprocessors System เป็นระบบที่ทำงานแบบ Distributed Simulation ซึ่งจะมีการเชื่อมต่อของหน่วยประมวลผลที่สามารถตั้งอยู่ในที่ต่างๆกระจายกันได้
โดยจะเชื่อมต่อกันผ่านระบบ Network เช่น Internet เป็นต้น
การเปรียบเทียบลักษณะทางกายภาพของ
Parallel กับ Distributed Simulation
ลักษณะทางกายภาพของระบบ Parallel และ
Distributed Simulation มีความแตกต่างกันดังนี้ คือ
·
สำหรับ Parallel Simulation มีพื้นที่ในการทำงานเป็นแบบ Machine Room คือ
สามารถทำงานได้เฉพาะในห้องที่ติดตั้งระบบ
ซึ่งระบบทั้งหมดจะต้องติดตั้งในห้องเดียวกัน
ดังนั้นจึงมีพื้นที่ในการทำงานที่แคบและจำกัด
เนื่องจากความสามารถของระบบเชื่อมต่อที่ใช้งาน
·
สำหรับ Distributed
Simulation มีพื้นที่ในการทำงานเป็นแบบ Global คือ สามารถทำงานได้ในบริเวณที่กว้างขวาง
เนื่องจากเครื่องคอมพิวเตอร์ที่นำมาใช้งานสามารถแยกกระจายกันอยู่ได้
โดยใช้ระบบเชื่อมต่อที่รองรับการทำงานในระยะไกล
ดังนั้นจึงสามารถทำงานได้แม้ว่าจะห่างไกลกันมากแค่ไหนก็ตาม
2) Processors หรือหน่วยประมวลผลที่นำมาใช้งาน
·
สำหรับ Parallel Simulation มีหน่วยประมวลผลเป็นแบบ Homogenous คือ
หน่วยประมวลผลที่นำมาใช้งานร่วมกันจะต้องเป็นหน่วยประมวลผลที่มีคุณสมบัติเหมือนกันทุกประการ
นั้นคือต้องเป็นหน่วยประมวลรุ่นเดียวกันทั้งหมดในการทำงาน
·
สำหรับ Distributed
Simulation มีหน่วยประมวลผลเป็นแบบ Heterogeneous คือ หน่วยประมวลผลที่นำมาใช้งานสามารถมีความแตกต่างกันได้
ไม่จำเป็นต้องเป็นรุ่นเดียว หรือผลิตจากบริษัทเดียวกัน
3) Communication Network หรือตัวกลางในการเชื่อมต่อระบบ
·
สำหรับ Parallel Simulation ใช้ตัวกลางในการเชื่อมต่อแบบ Custom switch คือ Switch
ที่ผลิตขึ้นมาเพื่อใช้งานโดยเฉพาะ สำหรับระบบคอมพิวเตอร์นั้นๆ
·
สำหรับ Distributed
Simulation ใช้ตัวกลางในการเชื่อมต่อแบบ Commercial LAN/WAN คือ
สามารถที่จะนำมาใช้งานได้โดยระบบเน็ตเวิร์คที่มีการใช้งานอยู่โดยทั่วไป
4) Communication
Latency หรือเวลาที่สูญเสียไปเพื่อใช้ในการติดต่อระหว่างกัน
·
สำหรับ Parallel Simulation ใช้เวลาในการติดต่อน้อยมากเนื่องการการเชื่อมต่อของหน่วยประมวลผลอยู่ในพื้นที่จำกัด
ดังนั้นเวลาที่ใช้ในการติดต่อจะอยู่ในระดับไม่กี่มิลลิวินาทีจนถึงระดับสิบมิลลิวินาที
·
สำหรับ Distributed
Simulation ใช้เวลาในการติดต่อนานซึ่งจะอยู่ในระดับตั้งแต่หลายร้อยมิลลิวินาทีจนถึงระดับวินาที
เนื่องจากการติดต่อจะมีระยะทางที่ห่างไกลกัน (
สาเหตุที่ถือว่าใช้เวลานานเนื่องจากหน่วยประมวลผลมีความรวดเร็วในการทำงานสูงดังนั้นเวลาเพียงเล็กน้อยก็สามารถที่จะทำงานได้มาก
)
ความจำเป็นที่จะต้องนำระบบ
Distributed Simulation มาใช้งาน
ความจำเป็นที่จะต้องนำระบบ
Distributed Simulation มาใช้งานเนื่องจากเหตุผลต่างๆดังนี้
คือ
1)
ลดเวลาที่ใช้ในการคำนวณ ( Reduce
model execution time )
เนื่องจากสามารถที่จะแบ่งย่อยงานไปให้หน่วยประมวลผลหลายๆตัวช่วยกันทำงาน
ซึ่งจากการศึกษาพบว่าสามารถลดลงได้ถึง N เท่า
สำหรับการใช้งานหน่วยประมวลผล N ตัว
2)
มีประสิทธิภาพที่ดีในเรื่องของขนาดของงาน
( Scalable Performance )
คือสามารถที่จะทำงานได้ด้วยความเร็วในระดับที่คงที่ถึงแม้ว่างานที่ทำจะมีขนาดที่ใหญ่ขึ้นเนื่องจากสามารถที่จะแบ่งย่อยงานไปให้หน่วยประมวลผลหลายๆตัวช่วยกันทำงานได้
( เพิ่มจำนวนของหน่วยประมวลผลที่จะนำมาใช้งาน )
3)
สามารถที่จะใช้งานทรัพยากรต่างๆหรือทำงานร่วมกับผู้ใช้งานอื่นๆในสถานที่ที่ห่างไกลกันได้ในเวลาเดียวกัน
เนื่องจากสามารถที่จะกระจายการทำงานไปยังสถานที่ต่างๆได้โดยไม่จำกัด
ถ้าสถานที่นั้นเชื่อมต่อระบบเน็ตเวิร์คได้
4)
สามารถที่นำมาใช้งานบน Platform
ของ OS ที่แตกต่างกันได้
ทำให้เกิดความสะดวกเนื่องจากไม่ต้องนำข้อมูลมาเปลี่ยนแปลงรูปแบบของ Platform
ใหม่เพื่อให้สามารถทำงานร่วมกันได้
5)
มีระบบในการป้องกันความเสียหาย ( Fault
Tolerance ) ซึ่งทำให้สามารถที่จะทำงานต่อได้ถึงแม้ว่าจะมีเครื่องใดเครื่องหนึ่งที่ทำงานร่วมกันเกิดความเสียหาย
ไม่มีความคิดเห็น:
แสดงความคิดเห็น