340 likes | 483 Views
Elimination Trees and the Construction of Pools and Stacks. Presented by: Aya Elhanan. תוכן עניינים. הקדמה Elimination Tree מימוש Pool מימוש Stack-like Pool סיכום. Pool. טיפוס התומך בפעולות האבסטרקטיות:
E N D
Elimination Treesand the Construction of Pools and Stacks Presented by: Aya Elhanan
תוכן עניינים הקדמה Elimination Tree מימוש Pool מימוש Stack-like Pool סיכום
Pool • טיפוס התומך בפעולות האבסטרקטיות: • enqueue(e) אשר מוסיפה את אלמנט e ל-poolDequeue אשר מוחקת ומחזירה אלמנט e כלשהו מה-pool. • אין שמירה על סדר מסוים שלהערכים ב-pool. • שתי דרישות: • 1. פעולת הכנסה תמיד מצליחה. • 2. פעולת הוצאה מצליחה אם ה-pool אינו ריק. 3
(המשך)Pool Pool מאפשר את התיאום הנדרש בין מעבדים בבעיות בהן יש לבצע מספר משימות במקביל. דוגמא: מערכת מעקב של חיישנים ומבצעים, כאשר המבצעים צריכים להגיב מאוד מהר למשימות שמקצים להם החישנים. Enq(eat, location1) ? Deq(eat,location1) Enq(eat,location2) Deq(eat,location2) 4
מימושיPoolקיימים • פיתרונות המבוססים על queue-lock • טובים ברמות פעילות נמוכות, אך לא במצבים של עומס גבוה. • אלגוריתמים המבוססים על load-balanced local pools • טובים דווקא תחת עומס גבוה, אך לא ברמות פעילות נמוכות. • Diffracting Trees • פיתרון בעל זמן תגובה ממוצע טוב גם ברמות פעילות נמוכות יחסית וגם תחת עומס. 5
Diffracting Trees עץ בינארי מאוזן שהצמתים שלו הם אלמנטים מסוג- one-input two-output הנקראים מאזנים. מנתב דרך הענפים שלו טוקנים שמייצגים פעולות שיש לבצע. המאזן מפצל את הטוקנים שמאלה וימינה כך שיתחלקו באופן שווה בין המעבדים. 6
Diffracting Trees שאלה: איך אפשר לממש מאזן? תשובה: המאזן יכול להיות מורכב מביט בודד, עם החוק שטוקניםהופכים את הביט והולכים לקו הפלט 0 או 1 בהתאם לערך הישן שלו. 1 0 1 0 1 0 8
תוכן עניינים הקדמה Elimination Tree מימוש Pool מימוש Stack-like Pool סיכום
Elimination Trees עץ בינארי מאוזן שהצמתים שלו הם אלמנטים מסוג- one-input two-output הנקראים מאזנים. מנתב דרך הענפים שלו טוקנים ואנטי-טוקנים שמייצגים פעולות בעלות סמנטיקה הפוכה. מאזן מפצל את הטוקנים והאנטי-טוקנים שמאלה וימינה כך שיתחלקו באופן שווה בין המעבדים. שאלה: איך ניתן להגדיר את המאזן כך שיטפל גם באנטי-טוקנים? תשובה: המאזן יכול להיות מורכב משני ביטים: אחד עבור טוקנים והשני עבור אנטי-טוקנים. 10
Elimination Trees 0 1 0 1 0 1 0 1 0 1 0 1 11
שאלה: מה יכול להיות בעייתי במימוש? • תשובה: הביט בשורש העץ יהיה hot-spot. 12
הפיתרון: הצבתמערך מנסרה לפני הביט בתוך כל מאזן. מנסרה = מבנה מערך המאפשר לזוגות של טוקנים להתנגש בתוך התאים שלו. אם אירעה התנגשות, אזי הטוקנים מסכימים ביניהם שאחד מהם צריך להיות מוטה שמאלה והשני ימינה. 0 0 0 שאלה: האם נוצרת בעיה כיוון שטוקנים שהתנגשו לא הופכים את הביט בעת המעבר ב-balancer? תשובה: לא. 13
התנגשות טוקן/אנטי-טוקן שאלה:כיצד תתבצע התנגשות של טוקן ואנטי-טוקן? (רמז: המבנה שלנו נקרא (elimination tree תשובה:כתוצאה מהתנגשות בין טוקן לאנטי-טוקן ניתן להחזיר את ערך הטוקן. הטוקנים ישלימו את פעולתם מבלי שיצטרכו להמשיך לחצות את העץ. num 14
Elimination Balancer properties המאזן חייב לקיים 3 תכונות: Quiescence- לאחר שהמאזן קיבל כקלט מספר סופי של טוקנים ואנטי-טוקנים, הוא יגיע למצב שבו כל החציות של הטוקנים והאנטי-טוקנים הושלמו והוא נמצא במצב מנוחה. Pairing- בכל מצב מנוחה, יש התאמה מושלמת בין טוקנים שחוסלו לאנטי-טוקנים שחוסלו, כך שהערך המוחזר ע"י אנטי-טוקן שחוסל תואם לערך המוחזק ע"י הטוקן שחוסל המתאים לו. Pool Balancing – בכל מצב מנוחה, אם מספר הטוקנים שהתקבלו עד כה גדול או שווה למספר האנטי-טוקנים שהתקבלו עד כה, אז לכל אחד מקווי הפלט בעץ, מספר הטוקנים גדול או שווה למספר האנטי-הטוקנים. 15
Elimination Balancer טוקנים ואנטי-טוקנים שמחזיקים בערכים מגיעים לקו הקלט של המאזן, ומנותבים כפלט בקווי הפלט שלו. בכל פעם שטוקן פוגש באנטי-טוקן במאזן, הוא מעביר את הערך לאנטי-טוקן ושניהם מחוסלים ולא יוצאים כפלט מהמאזן. באופן פורמאלי: מאזן הוא אובייקט משותף המאפשר למעבדים לבצע פעולות TokenTraverse(TokenType, v) המקבלות כקלט את סוג הטוקן ואת ערך הקלט שלו v. כל פעולה כזו מחזירה 0 או 1, תלוי באיזה מקווי הפלט, y0 או y1 הטוקן צריך להמשיך או את הזוג (eliminated, v) אם אירעה התנגשות מחסלת. 16
תוכן עניינים הקדמה Elimination Tree מימוש Pool מימוש Stack-like Pool סיכום
TokenTraversel code (cont) ,<b, mytype, value>, • שאלה: האם חסר משהו בקוד? • תשובה: כן! ערכי קלט וקוד עבור החלפת הערכים בין טוקן לאנטי-טוקן בהתנגשויות מחסלות.
TokenTraversel code ,<b, mytype, value>, ,<b, mytype, value>, ,<b, his_type, value>, ,<his_b, his_type, value>, ,<b, his_type, value>, ,<b, mytype, value>, <0, ELIMINATED, value> value ,<b, mytype, value>, <0, ELIMINATED, value>
תוכן עניינים הקדמה Elimination Tree מימוש Pool מימוש Stack-like Pool סיכום
Pool vs. Stack-like Pool נתאים את המימוש ל-pool כדי לקבל התנהגות של מחסנית. כלומר, שמירה על סדר LIFO כך שהפעולה האחרונה שנכנסה לעץ היא הראשונה שתבוצע עליה פעולת אנטי-טוקן ע"י אחד המעבדים. שאלה: איזו תועלת יכולה להיות בשמירה על סדר LIFO? תשובה: למנוע ממעבדים לנסות להוציא ולבצע משימה אשר תלויה בתוצאות של משימות אחרות שטרם בוצעו. 0 1 0 1 0 1 0 1 0 1 0 1 24
שאלה: נרצה להשיג התנהגות של מחסנית, כלומר פעולת אנטי-טוקן תישלח לביצוע למעבד שאליו נשלחה פעולת הטוקן האחרונה. איך נגדיר את המאזן? תשובה: המאזן יכול להיות מורכב מביט בודד, עם החוק שטוקנים הופכים את הביט והולכים לקו הפלט 0 או 1 בהתאם לערך הישן שלו, בעוד שאנטי-טוקנים הופכים את הביט והולכים שמאלה או ימינה בהתאם לערך החדש שלו. 1 0 1 0 1 0 25
Gap Elimination Balancer אלמנט בעל קו קלט אחד x ושני קווי פלט yo ו-y1. טוקנים ואנטי-טוקנים שמחזיקים בערכים מגיעים לקו הקלט של המאזן, ומנותבים כפלט בקווי הפלט שלו. בכל פעם שטוקן פוגש באנטי-טוקן במאזן, הוא מעביר את הערך לאנטי-טוקן ושניהם מחוסלים ולא יוצאים כפלט מהמאזן. באופן פורמאלי: מאזן הוא אובייקט משותף המאפשר למעבדים לבצע פעולות TokenTraverse(TokenType, v) המקבלות כקלט את סוג הטוקן ואת ערך הקלט שלו v. כל פעולה כזו מחזירה 0 או 1, תלוי באיזה מקווי הפלט, y0 או y1 הטוקן צריך להמשיך או את הזוג (eliminated, v) אם אירעה התנגשות מחסלת. 26
Elimination Balancer properties המאזן חייב לקיים 3 תכונות: Quiescence- לאחר שהמאזן קיבל כקלט מספר סופי של טוקנים ואנטי-טוקנים, הוא יגיע למצב שבו כל החציות של הטוקנים והאנטי-טוקנים הושלמו והוא נמצא במצב מנוחה. Pairing- בכל מצב מנוחה, יש התאמה מושלמת בין טוקנים שחוסלו לאנטי-טוקנים שחוסלו, כך שהערך המוחזר ע"י אנטי-טוקן שחוסל תואם לערך המוחזק ע"י הטוקן שחוסל המתאים לו. Gap Step Property -מאזן את ההפרש בין מספר הטוקנים והאנטי-טוקנים בקווי הפלט שלו. 27
Gap Step Property עודף הטוקנים על פני אנטי-טוקנים על קווי הפלט של המאזנים מחולק כך שיש פער של לא יותר מטוקן אחד על קו 0 בהשוואה לקו 1 בכל מצב מנוחה. שאלה: האם נשמרת התכונה pool balancing property? (תזכורת: בכל מצב מנוחה, אם מספר הטוקנים שהתקבלו עד כה גדול או שווה למספר האנטי-טוקנים שהתקבלו עד כה, אז לכל אחד מקווי הפלט בעץ, מספר הטוקנים גדול או שווה למספר האנטי-הטוקנים). תשובה: ה-gap step property מביאה לקיום התכונהpool balancing property על קווי הפלט של המאזנים. 28
(כמעט) ליניאריזביליות • נגדיר פעולה שאינה ליניאריזבילית כפעולת הוצאה מהסוגe(x)->e(y)->d(x) בלי d(y) או ש- e(x)->e(y)->d(x)->d(y). • ה-stack-like pool היא כמעט ליניאריזבילית: • במקרים של תזמונים מאוד קיצוניים שחלק מהתהליכים איטיים ואחרים מהירים ואז תופר הליניאריזביליות. • בהתנהגות שכיחה בה הפעולות מתבצעות פחות או יותר באותה מהירות, הליניאריזביליות תישמר. סיימתי לאכול ולמחזר! עדיין אוכל... סיימתי לאכול ולמחזר! 31
תוכן עניינים הקדמה Elimination Tree מימוש Pool מימוש Stack-like Pool סיכום
הכרנו מבנה נתונים מקבילי חדש Elimination tree. המבנה מתבסס עלdiffracting tree ומגדיר מושג חדש:אנטי-טוקנים. המפתח להצלחה של מבנה זה הוא האבחנה שעבור מבני נתונים שיש להם פעולות משלימות ניתן להרוויח זמן יקר בביצוע ע"י החזקת מנסרה אחת עבור טוקנים ואנטי-טוקנים. טוקן ואנטי-טוקן לבצע פעולה של התנגשות מחסלת וחוסכים את הצורך להגיע לעלים. השתמשנו ברעיון של עץ אלימינציה על מנת לבנות pool ו-stack-like pool. 33