Dhrystone

Dhrystone (בעבריתː דרייסטון) הוא שמה של תוכנה להשוואת ביצועים של מעבדי מחשבים ומהדרים ונחשבת לאמת מידה לביצועי המעבד. ביצועי המעבד נמדדים במספר מחזורי הריצה של התוכנה, שהמחשב מבצע בשנייה אחת. ציון הביצועים ניתן ביחידות של דרייסטון לשנייה. לעיתים קרובות נעשה שימוש ביחידת Dhrystone MIPS או בקיצור DMIPS, כאשר DMIPS משתמש כקנה מידה, בכוח העיבוד של מחשב VAX 11/780. מעבד זה השיג ציון של 1757 דרייסטון לשנייה, ציון זה הוגדר כ 1 DMIPS. היינו, 1757 Dhtystone = 1 DMIPS. דרך נוספת להציג את ביצועי מעבד מדגם מסוים היא, להציג את הנתון MIPS/MHz לליבה בודדת. הדבר מאפשר להשוות ביצעים בין מעבדים המופעלים בתדר שעון שונה ומעבדים מרובי ליבות בעלי מספר שונה של ליבות. התוכנה פותחה בשנת 1984 על ידי ריינהולד פ. ויקר חוקר בחטיבת מערכות המידע של חברת סימנס. כוונתו הייתה שקוד התוכנה ייצג תוכנית מחשב אופיינית המבוצעת במערכות מחשב ומשתמשת במספרים שלמים (Integers) בלבד. לאחר פרסומו הפך הדרייסטון לאמת מידה מקובלת להערכת ביצועים של מעבדי מחשב כלליים. תוכנת הדרייסטון אינה מכילה פעולות נקודה צפה וזאת בניגוד לתוכנת השוואת הביצועים "אבן משחזת" (באנגלית Whetstone). "אבן משחזת" הייתה תוכנת השוואת הביצועים הסינתטית היחידה שהייתה קיימת אז והיא כללה גם פעולות בנקודה צפה, דבר המשקף את האוריינטציה המוטית חישובים מתמטיים, של שימושי המחשב בשנות ה-60. השם Dhrystone הוא משחק מילים הנגזר משמה באנגלית של אמת המידה "אבן משחזרת". המילה Whetstone נשמעת כמו "Wet stone" (בעברית ː "אבן רטובה"), ולכן לאמת המידה החדשה נבחר שם שישמע כבעל משמעות מנוגדת לו, "Dry stone" (בעבריתː "אבן יבשה") ומזה נגזר השם Dhrystone. אמת המידה דרייסטון פותחה על פי אותם עקרונות ששימשו לפיתוח "אבן משחזת". שתיהם תוכנות מדידה "סינתטיות", כלומר הן תוכנות שנכתבו רק לצורך השוואת ביצועים ואינם מבצעות כל חישוב שימושי. הן תוכננו בקפידה כדי לחקות סטטיסטית, את השימוש במעבד של קבוצה נפוצה של תוכניות. אבן משחזת, שפותחה ב-1972, נכתבה במקור בשפת ALGOL 60 ושאפה לחקות תוכנות טיפוסיות כפי שעלה מניתוחי תוכניות ALGOL 60 שנעשו בשנת 1970. בסופו של דבר "אבן משחזת" הפכה לפופולרית ביותר, דווקא בגרסת ה-Fortran שלה. השם "אבן משחזרת" נלקח משמו של מהדר ALGOL 60 שהיה בשימוש נפוץ מאוד אז, בעיקר בתוכניות שביצעו חישובים נומריים. ניתוח תוצאות שפת הביניים שלו שימשו לצורך איסוף נתונים סטטיסטיים על שימוש בפקודות לצורך פיתוח תוכנת "אבן משחזת" הבסיס לפיתוח תוכנת הדרייסטון הוא סקר של ספרות על התפלגות התכונות של קוד מקור שלא שימש לחישובים נומריים, כגון קוד מערכות הפעלה, מהדרים, ותוכנות עריכת טקסט. תוכנות אלו, בהשוואה לתוכנות לחישובים נומריים, מאופיינות בשימוש בטיפוסי נתונים מסוג מספרים שלמים, שימש מופחת בלולאות, חישובים פשוטים יותר, שימוש רב בפקודות תנאי ובקריאה לפרוצדורות. גרסת התוכנה הראשונה, גרסה 1.0, של דרייסטון נכתבה בשפת ADA ,תוך שימוש רק באוסף הפקודות התואמות לשפת פסקל כדי להקל על התרגום הקוד לשפות פסקל ו-C. היא כללה 101 פעולות שהם תמהיל של פעולות אופניות כפי שעלו מאיסוף הנתונים שנעשה. התוכנית מכילה 12 פרוצדורות, מספר לולאות, פקודות תנאי, פעולות אריתמטיות, העתקת מחרוזות תוך שימשו בפונקציות ספריה, ומספר קריאות למערכת הפעלה UNIX. ריק ריצ'רדסון תרגם את התוכנה לשפת C ופרסם אותה כגרסה 1.1, מה שתרם רבות לפופולריות שלה. גם ויקר פרסם גרסה משלו של התוכנה בשפת C. החשיבות שקיבלה אמת המידה דרייסטון גרמה למפתחי מהדרים מסחריים לאמץ טכניקות שונות של ניתוח קוד סטטי כדי ליעל את ביצועי התוכנה (כגון ביטול קוד שאינו משפיע על הפלט) דבר שיכול לפגוע באמינות של השימוש בתוכנה סינתטית להשוואת ביצועים. בגרסה 2.0 של התוכנה, שפורסמה על ידי ויקר וריצ'רדסון במרץ 1988, נעשו מספר שינויים. מטרתם הייתה, ליצור לתוכנה גרסה אחידה בשפת C, ולסכל מגוון של טכניקות שיכולת לשמש מהדרים לשיפר מלאכותי של ציון הביצועים הניתן על ידי דרייסטון. עם זאת, בתוכנה בגרסה זו עוצבה בקפידה כדי לא לשנות את אמת המידה הבסיסית. המאמץ לסכל את שיפורי המהדרים הצליח רק בחלקו. גרסת 2.1 של תוכנת דרייסטון ששוחררה במאי של אותה שנה, כללה מספר תיקונים ושינויים קלים וזאת הגרסה האחרונה של התוכנה שפורסמה עד כה. תוכנת הדרייסטון היא קצרה, פשוטה, קלה להבנה וניתנת בקלות לניוד לסוגי מעבדים שונים בארכיטקטורות שונות. כמו כן היא נותנת לביצועי המעבד ציון בודד פשוט וחד משמעי. תכונות אלו הפכו את אמת המידה דרייסטון למאוד פופולרית ובמשך שנים ארוכות השתמשו יצרי מעבדים באמת מידה זו, כדי להציג את ביצועי המעבדים שלהם. נכון לשנת 2023 אמת מידה זו עדיין בשימוש אבל הפופולריות שלה בירידה. ישנם תוכנות אחרות למדידת ביצועים הנמצאות בשימוש בכללם אמות מידה המותאמות לסוגים מסוימים של משימות כגון עבור אפליקציות עתירות גישה לזיכרון או עתירות תקשורת TCP/IP. לשימוש בדרייסטון כאמת מידה ישנם מספר חסרונות: דרייסטון אינו מתמודד עם ההתפתחות והשינויים שחלו בארכיטקטורות המעבדים או עם סוגי משימות שהפכו נפוצות בתוכנות מודרניות. למשל, הוא לא יכול להשוות ביצועים בין מעבדים שחלקם יכולים לכלול מנגנונים שנועדו לשפר את ביצועי המעבד, כגון מעבדי "סופר סקלאר" המסוגלים לעבד מספר פקודות בלתי תלויות במקביל או מעבדים המסוגלים לבצע במקביל פקודה אחת על נתונים רבים – Single instruction, multiple data ‏(SIMD). הוא גם לא מתמודד עם מעבדים הנדרשים לבצע משימות מסוימות הנפוצות באפליקציות מודרניות כגון הצפנה, תקשורת מרובה או וירטואליזציה, מה גם, שמעבדים שונים יכולים להכיל מנגנונים לשיפור הביצועים בביצוע משימות מעין אלו. דרייסטון רגיש למיטובים הנעשים על ידי המהדר. לדוגמה, הקוד שלו מבצע העתקה מרובה של מחרוזות בעלות אורך קבוע וידוע מראש ושגבולותיהם מיושרים לכתובות נוחות. שני מאפיינים אלו אינם קיימים בדרך כלל בתוכניות אמתיות. מהדרים יכולים להשתמש בתכונות אלו כדי ליצר עבור העתקות המחרוזות, רצף של פקודות מכונה המותאם לגודל המחרוזת וללא לולאות או אפילו ליצר קוד המשתמש ב-SIMD. קוד זה מתבצע במהירות רבה יותר מקוד המשתמש בלולאות. הדבר יכול לגרום להטיה, שיכולה לעלות על 30%, בהערכת ביצועי המעבד. הקוד של דרייסטון הוא קטן מאוד ויכול להיטען בשלמותו למטמון ההוראות של מעבדים מודרניים, כך שביצועי אחזור ההוראות מהזיכרון אינם נבדקים כראוי. באופן דומה, הנתונים המשמשים את דרייסטון עשויים להתאים לחלוטין לגודל מטמון הנתונים, וביצועי המעבד, במקרה שקריאת הנתונים "מחטיאה" את המטמון, לא נמדדים. שנת 1988 פותחה אמת המידה SPECint כדי להתמודד עם בעיית התאמה למטמון. אמת מידה זו כוללת חבילה של מספר תכוניות גדולות בהרבה (כולל מהדר) שלא יוכלו להתאים לגודל ממטמון L1 או L2 של אותה תקופה. BogoMips קוד המקור של Dhrystone בשפת C באתר GitHub Standard Performance Evaluation Corporation (SPEC) Geekbench Integer programming ציון הביצועים של מעבד ספציפי יהיה ː(MIPS למגה הרץ לליבה)x(תדר השעון של המעבד)x(מספר הליבות) במילה Dhrystone הוספה האות-h לאחר האות-D כדי ליצור יחס דומה ליחס שיש בין המילים Wet Stone ו Whetstone Reinhold P. Weicker, An Overview of Common Benchmarks, computer, 12 23, United State: IEEE, 1990 Alan R. Weiss, Dhrystone Benchmarkː History, Analysis, "Scores" and Recommendations, EEMBC, ‏1 October 2001 Franco Zappa (2017). Microcontrollers: Hardware and Firmware for 8-bit and 32-bit devices. Società Editrice Esculapio. p. 66. ISBN 978-88-9385-022-3.