̺

 

**דרייסטון'** (באנגלית **Dhrystone**) הוא שמה של תוכנה להשוואת ביצועים של מעבדי מחשבים ומהדרים ונחשבת לאמת מידה לביצועי המעבד. ביצועי המעבד נמדדים במספר מחזורי הריצה של התוכנה, שהמחשב מבצע בשנייה אחת. ציון הביצועים ניתן ביחידות של דרייסטון לשנייה. לעיתים קרובות נעשה שימוש ביחידת Dhrystone MIPS או בקיצור DMIPS, כאשר DMIPS משתמש כקנה מידה, בכוח בעיבוד של מחשב VAX 11/780. מעבד זה השיג ציון של 1757 דרייסטון לשנייה, ציון זה הוגדר כ DMIPS 1, היינו ‎1757 Dhrystone = 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

חסרונות
-------

לשימוש בדרייסטון כאמת מידה יש חסרונות:

* הקוד של דרייסטון כולל שימוש באוסף פעולות בסיסי שאינו מייצג בדרך כלל תכוניות מודרניות בחיים האמתיים. למשל, הוא לא יכול להשוות ביצועים בין מעבדים הכוללים מנגנונים שנועדו לשפר את ביצועי המעבד בעת ביצוע משימות מסוימות הנפוצות באפליקציות מודרניות כגון הצפנה, תקשורת מרובה או וירטואליזציה.

* דרייסטון רגיש לאופטימיזציות מהדר. לדוגמה, הקוד שלו מבצע העתקה מרובה של מחרוזות בעלות אורך קבוע וידוע מראש ושגבולותיהם מיושרים לכתובות נוחות. שני מאפיינים אלו אינם קיימים בדרך כלל בתוכניות אמתיות. מהדרים יכולים להשתמש בתכונות אלו כדי ליצר עבור העתקות המחרוזות, רצף של פקודות מכונה המותאם לגודל המחרוזת וללא לולאות. קוד זה מתבצע במהירות רבה יותר מקוד המשתמש בלולאות. הדבר יכול לגרום להטיה, שיכולה לעלות על 30%, בהערכת ביצועי המעבד .

* הקוד של דרייסטון הוא קטן מאוד ויכול להיטען בשלמותו למטמון ההוראות של מעבדים מודרניים, כך שביצועי אחזור ההוראות מהזיכרון אינם נבדקים כראוי. באופן דומה, הנתונים המשמשים את דרייסטון עשויים להתאים לחלוטין לגודל מטמון הנתונים, וביצועי המעבד, במקרה שקריאת הנתונים "מחטיאה" את המטמון, לא נמדדים. שנת 1988 פותחה אמת המידה SPECint כדי להתמודד עם בעיית התאמה למטמון. אמת מידה זו כוללת חבילה של מספר תכוניות גדולות בהרבה (כולל מהדר) שלא יוכלו להתאים לגודל ממטמון L1 או L2 של אותה תקופה.

ראה גם
------

* Standard Performance Evaluation 
 Corporation(SPEC)
* BogoMips
* Geekbench
* Integer programming

̈

הערות שוליים
------------

1. ↑  ציון הביצועים של מעבד ספציפי יהיה ː(MIPS למגה הרץ לליבה)**x**(תדר השעון של המעבד)**x**(מספר הליבות)
2. ↑  במילה Dhrystone הוספה האות-h לאחרצהאות-D כדי ליצור יחס דומה ליחס שיש בין המילים Wet Stone ו Whetstone
3. ↑  Reinhold P. Weicker, An Overview of Common Benchmarks, **computer**, 12 23, United State: IEEE, 1990
4. 1 2  Alan R. Weiss, Dhrystone Benchmarkː History, Analysis, "Scores" and Recommendations, EEMBC, ‏1 באוקטובר 2001
5. ↑  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.