BogoMips

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

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

לעיתים קרובות מקובל לצטט בהומור את ההגדרה הבאה למונח "מספר הפעמים בשנייה, בכפולות של מיליון, שמעבד יכול לא לעשות דבר"Eric S Raymond, and Geoff Mackenzie, published on the Internet in the early 1990s, untraceable origin..

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

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

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

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

האינדקס משמש למטרות השוואה. הוא מיצג את היחס, עבוד מהירות מעבד מסוימת, למדד של מעד אינטל 386DX CPU.
מעבד/מערכתדירוגאינדקסIntel 8088clock × 0.0040.02Intel/AMD 386SXclock × 0.140.8Intel/AMD 386DXclock × 0.181 (definition)Motorola 68030clock × 0.251.4Cyrix/IBM 486clock × 0.341.8Intel Pentiumclock × 0.402.2Intel 486clock × 0.502.8AMD 5x86clock × 0.502.8MIPS R4000/R4400clock × 0.502.8ARM9clock × 0.502.8Motorola 68040clock × 0.673.7PowerPC 603clock × 0.673.7Intel StrongARMclock × 0.663.7NexGen Nx586clock × 0.754.2PowerPC 601clock × 0.844.7Alpha 21064/21064Aclock × 0.995.5Alpha 21066/21066Aclock × 0.995.5Alpha 21164/21164Aclock × 0.995.5Intel Pentium Proclock × 0.995.5Cyrix 5x86/6x86clock × 1.005.6Intel Pentium II/IIIclock × 1.005.6AMD K7/Athlonclock × 1.005.6Intel Celeronclock × 1.005.6Intel Itaniumclock × 1.005.6R4600clock × 1.005.6Hitachi SH-4clock × 1.005.6Raspberry Pi (Model B)clock × 1.005.6Intel Itanium 2clock × 1.498.3Alpha 21264clock × 1.9911.1VIA Centaurclock × 1.9911.1AMD K5/K6/K6-2/K6-IIIclock × 2.0011.1AMD Duron/Athlon XPclock × 2.0011.1AMD Sempronclock × 2.0011.1UltraSparc IIclock × 2.0011.1Intel Pentium MMXclock × 2.0011.1Intel Pentium 4clock × 2.0011.1Intel Pentium Mclock × 2.0011.1Intel Core Duoclock × 2.0011.1Intel Core 2 Duoclock × 2.0011.1Intel Atom N455clock × 2.0011.1Centaur C6-2clock × 2.0011.1PowerPC 604/604e/750clock × 2.0011.1Intel Pentium III Coppermineclock × 2.0011.1Intel Pentium III Xeonclock × 2.0011.1Motorola 68060clock × 2.0011.1Intel Xeon MP (32-bit) (hyper-threading)clock × 3.9722.1IBM S390not enough data (yet)ARMnot enough data (yet)
במערכת ההפעלה לינוקס ערך ה-BogoMips מופיע בקובץ cpuinfo :

ניתן למצוא את הערך על ידי שימוש בפקודת החיפושː$ grep -i bogomips /proc/cpuinfo

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

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

 קישורים חיצוניים 
 BogoMips Mini-Howto, V38

 הערות שוליים 

קטגוריה:לינוקס