BogoMips

מתוך ויקיפדיה, האנציקלופדיה החופשית

BogoMips (הלחם מילים של "Bogus" ו-"MIPS"; בתרגום חופשי: מיליוני פקודות מזויפות בשנייה) הוא מדד גס למהירות המעבד המרכזי, המחושב על ידי ליבת לינוקס בעת אתחול מערכת המחשב, על מנת לכייל לולאת המתנה פעילה פנימית[1]. הפונקציה udelayמשתמשת בלולאה זו כדי לבצע המתנה פעילה מדויקת בלי תלות במהירות המעבד.

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

לעיתים קרובות מקובל לצטט בהומור את ההגדרה הבאה למונח "מספר הפעמים בשנייה, בכפולות של מיליון, שמעבד יכול לא לעשות דבר"[2][3].

היסטוריה[עריכת קוד מקור | עריכה]

לארס ויצניוס, ששימש כעוזר הוראה במחלקה למדעי המחשב באוניברסיטת הלסינקי פרסם בשנת 1993 בקובצת הדיון[4] comp.os.linux את ההודעה הבאה המסבירה מדוע הדבר נחוץ בליבת לינוקס:

MIPS הוא קיצור של מיליוני הוראות לשנייה. זהו מדד למהירות החישוב של מעבד. כמו רוב המדדים האלו, משתמשים בו לרעה באופן תכוף.( קשה מאוד לבצע השוואה נכונה של ה-MIPS בן סוגים שונים של מחשבים ).
ה-BogoMips הומצא על ידי לינוס עצמו עבור גרסת ליבת לינוקס 0.99.11 (מיום 11 ביולי 1993). בגרסה זו, התעורר הצורך בלולאת תזמון המבצעת "המתנה פעילה" למדידת זמנים קצרים מאוד או מדידת זמן מדויקת יותר מאשר משיטות המתנה אחרות. את לולאת התזמון, היה צורך לכייל בהתאם למהירות המעבד.
כדי לעשות זאת, ליבת מערכת ההפעלה, בזמן האתחול, מדדה את זמן הביצוע של לולאת המתנה פעילה מסוימת. BogoMips נותן אינדיקציה מסוימת למהירות המעבד. אינדיקציה זו איננה מדעית כך שראוי לקרוא לה זיוף. ומכאן בא השם BogoMips כשאר "Bogo" נגזר מ Bogus שמשמעותו היא זיוף.
הסיבות (יש שתיים) שהמדד מודפס במהלך האתחול הםː
א) הדבר שימושי ברמה מסוימת לצורך ניפוי באגים ולבדיקה שהמטמון וכפתור הטורבו של המחשב עובדים.
ב) לינוס אוהב לצחקק כשהוא רואה אנשים מבולבלים מהחדשות.

דרוג BogoMips[עריכת קוד מקור | עריכה]

ניתן להשתמש בטבלה הבאה כדי להעריך מראש, באופן משוער, את מדד ה-BogoMips.

הדירוג הוא עבור מעבד מסוים המריץ גרסת לינוקס עכשווית.

האינדקס משמש למטרות השוואה. הוא מיצג את היחס, עבוד מהירות מעבד מסוימת, למדד של מעד אינטל 386DX CPU.

מעבד/מערכת דרוג אינדקס
Intel 8088 clock × 0.004 0.02
Intel/AMD 386SX clock × 0.14 0.8
Intel/AMD 386DX clock × 0.18 1 (definition)
Motorola 68030 clock × 0.25 1.4
Cyrix/IBM 486 clock × 0.34 1.8
Intel Pentium clock × 0.40 2.2
Intel 486 clock × 0.50 2.8
AMD 5x86 clock × 0.50 2.8
MIPS R4000/R4400 clock × 0.50 2.8
ARM9 clock × 0.50 2.8
Motorola 68040 clock × 0.67 3.7
PowerPC 603 clock × 0.67 3.7
Intel StrongARM clock × 0.66 3.7
NexGen Nx586 clock × 0.75 4.2
PowerPC 601 clock × 0.84 4.7
Alpha 21064/21064A clock × 0.99 5.5
Alpha 21066/21066A clock × 0.99 5.5
Alpha 21164/21164A clock × 0.99 5.5
Intel Pentium Pro clock × 0.99 5.5
Cyrix 5x86/6x86 clock × 1.00 5.6
Intel Pentium II/III clock × 1.00 5.6
AMD K7/Athlon clock × 1.00 5.6
Intel Celeron clock × 1.00 5.6
Intel Itanium clock × 1.00 5.6
R4600 clock × 1.00 5.6
Hitachi SH-4 clock × 1.00 5.6
Raspberry Pi (Model B) clock × 1.00 5.6
Intel Itanium 2 clock × 1.49 8.3
Alpha 21264 clock × 1.99 11.1
VIA Centaur clock × 1.99 11.1
AMD K5/K6/K6-2/K6-III clock × 2.00 11.1
AMD Duron/Athlon XP clock × 2.00 11.1
AMD Sempron clock × 2.00 11.1
UltraSparc II clock × 2.00 11.1
Intel Pentium MMX clock × 2.00 11.1
Intel Pentium 4 clock × 2.00 11.1
Intel Pentium M clock × 2.00 11.1
Intel Core Duo clock × 2.00 11.1
Intel Core 2 Duo clock × 2.00 11.1
Intel Atom N455 clock × 2.00 11.1
Centaur C6-2 clock × 2.00 11.1
PowerPC 604/604e/750 clock × 2.00 11.1
Intel Pentium III Coppermine clock × 2.00 11.1
Intel Pentium III Xeon clock × 2.00 11.1
Motorola 68060 clock × 2.00 11.1
Intel Xeon MP (32-bit) (hyper-threading) clock × 3.97 22.1
IBM S390 not enough data (yet)
ARM not enough data (yet)

במערכת ההפעלה לינוקס ערך ה-BogoMips מופיע בקובץ cpuinfo :[5]

ניתן למצוא את הערך על ידי שימוש בפקודת החיפושː

$ grep -i bogomips /proc/cpuinfo

המתנה מבוססת טיימר[עריכת קוד מקור | עריכה]

בגרסת הליבה 2.6, BogoMIPS מיושם על ידי חישוב הפרמטר loops_per_jiffy השמש את פונקציות ההמתנה הפעילה udelay ו- ndelay המשמשות למדידת זמן מדויקת.

בשנת 2012, חברת ARM תרמה מימוש udelay חדש המאפשר להשתמש בטיימר המערכת המובנה ברבים ממעבדי ARMv7 במקום בלולאת המתנה פעילה. מימוש זה שוחרר בגרסה 3.6 של ליבת לינוקס.[6] המתנה מבוססת טיימר יציבה יותר במערכות המשתמשות בהתאמה דינמית של תדר השעון כדי להתאים באופן דינמי את מהירות המעבד בזמן ריצה, מכיוון שערכי loops_per_jiffies לא בהכרח משתנים באופן ליניארי. כמו כן, מכיוון שתדר הטיימר ידוע מראש, אין צורך בכיול בזמן האתחול.

קישורים חיצוניים[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ Van Dorst, Wim (בינואר 1996). "The Quintessential Linux Benchmark". Linux Journal. נבדק ב-2008-08-22. {{cite journal}}: (עזרה)
  2. ^ Eric S Raymond, and Geoff Mackenzie, published on the Internet in the early 1990s, untraceable origin.
  3. ^ Raymond, Eric S. "Hackers Jargon File".
  4. ^ Wirzenius, Lars. "Re: printing & BogoMips".
  5. ^ "BogoMips mini-Howto".
  6. ^ Deacon, Will. "ARM: 7452/1: delay: allow timer-based delay implementation to be selected".