האם ICS יודע לנצל את המעבדים עם ליבה כפולה?
-
menger
-
- חבר פעיל מאוד

- תגובות: 185
- הצטרף: ינואר 2009
- מיקום: מודיעין
- נתן תודות: 35 פעמים
- קיבל תודות: 11 פעמים
כבר מזמן קיימים בשוק הסמארטפונים מכשירים עם ליבות כפולות.
נתקלתי באתר כלשהוא שמערכת ההפעלה אנדרואיד אינו יודע לנצל את יתרונותיו של מעבדים כפולי ליבה. לא היה שם הסבר מעמיק על כך.
האם משהו מכיר את המגבלה?
אם המגבלה אכן קיימת, האם ב- ICS המתכנתים הצליחו להדביק את הפער עם החומרה?
אגב, ראיתי שסמארטפון הראשון עם 4 ליבות מתוכננת להשקה בעוד קצת יותר מחודש ע"י HTC. הדבר עדיין בגדר שמועות, כי אסטרטגיה השיווקית האחרונה של HTC לא לפרסם את המכשירים לפני ההשקה.
נתקלתי באתר כלשהוא שמערכת ההפעלה אנדרואיד אינו יודע לנצל את יתרונותיו של מעבדים כפולי ליבה. לא היה שם הסבר מעמיק על כך.
האם משהו מכיר את המגבלה?
אם המגבלה אכן קיימת, האם ב- ICS המתכנתים הצליחו להדביק את הפער עם החומרה?
אגב, ראיתי שסמארטפון הראשון עם 4 ליבות מתוכננת להשקה בעוד קצת יותר מחודש ע"י HTC. הדבר עדיין בגדר שמועות, כי אסטרטגיה השיווקית האחרונה של HTC לא לפרסם את המכשירים לפני ההשקה.
רשמתי את זה בפורום אחר, אני העתיק את ההודעה שלי גם לכאן:
אני אנסה לעשות קצת סדר בכל הנושא הזה שקיבל איזה מעטפת סודית בחודשים האחרונים לגבי תמיכה או אי תמיכה בהרצת מערכת האנדרואיד מעל מספר ליבות:
עד גירסת 3.0 לא הייתה תמיכה מלאה בריבוי ליבות על מערכת האנדרואיד. לצורך תמיכה בריבוי ליבות יש צורך לבנות (לקמפל) את הלינוקס קרנל לאנדרואיד במוד שנקרא SMP-ראשי תיבות Symmetric multiprocessing. המוד הזה מאפשר למערכת שהיא עם ארכיטקטורה בעל מספר מעבדים (או ליבות), עם זיכרון משותף לרוץ במקביל מעל מערכת הפעלה אחת.
כידוע, הלינוקס קרנל מזה שנים תומך באופן מלא במוד הזה, אבל האנדרואיד עד גירסה 2.3 כולל, לא קומפל באופן רשמי עם הדגל הזה (SMB). אם מישהו שואל את עצמו, מה הבעייה לקחת את קוד המקור (הפתוח והחופשי) של האנדרואיד בגירסאות 2.2 ו 2.3 ולקמפל אותו מחדש עם הדגל הזה ולהתקין את התוצר על מכשיר אנדרואיד ולקבל כמעט בחינם תמיכה במספר ליבות, אז התשובה היא שיש צורך לעשות\לממש עוד מספר פעולות\'ספריות מערכת' לא פשוטות לפני שהעסק יעבוד בצורה תקינה.
אני לא אכנס פה לעומק לבעיות שיש להתמודד איתן בתיכנות מתקדם מקבילי של ספריות מעל מספר תהליכים בו זמנית, אני רק אומר שבמקרה של האנדרואיד, היה צורך להוסיף תמיכה בעבודה כזאת במספר מרכיבי מערכת מרכזיים (כגון שיכתוב ספריות C שיתמכו בהרצה מקבילית וכמובן ה Dalvik VM).
על פי דיווחים של מפתחים מגוגל שעובדים על פרוייקט האנדרואיד עצמו. קיבלנו את המידע שהם כן ניסו להוסיף את התמיכה הזאת כבר לגירסה 2.3, אבל הם לא הספיקו לעשות זאת. לכן, על פי דיווח שלהם זה נכנס על ידם לגירסת 3.0 שיצאה ברבעון הראשון השנה למכשירי טאבלט.
עוד כדאי להזכיר שגירסת ה Honeycomb יצאה לשוק בצורה מהירה ודי לא מסודרת ולכן גוגל לא שיחררה אף פעם לעולם את קוד המקור של המערכת הזאת בטוענה שהקוד "לא מוכן" להגיע לקהילה (הם טענו שזה קשור לחוסר הרצון שלהם שהמפתחים יקחו את הקוד ויריצו אותו על מכשירי סמארטפון וככה יהרסו את החוויה למשתמש). מאז המתמיד נאמר על ידם שגירסת האנדרואיד הבאה (4.0) היא גם זאת שתעשה את הסדר בקוד גם כמובן קוד הפרוייקט ישוחרר לקהילה הפתוחה
זה נכון שבשום מקום לא הבליטו את היכולת הזאת בגירסה 3.0 (ועכשיו בגירסה 4.0), אבל הסיבה לכך לדעתי היא שיווקית גרידא. גוגל, לא רוצה להבליט את העובדה שהתמיכה בגירסאות אנדרואיד עד גירסה 3.0 לא תומכות באופן מלא בעבודה מעל מספר ליבות
נקווה....שזה עושה קצת סדר בבלגן
אגב, יכולת חשובה לא פחות שהוכנסה גם ל ICS זה תמיכה עמוקה יותר בעבודה אל מול ה GPU (מעבד הגרפי). זה לבד צריך להביא שיפור בביצועים (הממשק חלק ומהיר יותר, סוללה טובה יותר)
אני אנסה לעשות קצת סדר בכל הנושא הזה שקיבל איזה מעטפת סודית בחודשים האחרונים לגבי תמיכה או אי תמיכה בהרצת מערכת האנדרואיד מעל מספר ליבות:
עד גירסת 3.0 לא הייתה תמיכה מלאה בריבוי ליבות על מערכת האנדרואיד. לצורך תמיכה בריבוי ליבות יש צורך לבנות (לקמפל) את הלינוקס קרנל לאנדרואיד במוד שנקרא SMP-ראשי תיבות Symmetric multiprocessing. המוד הזה מאפשר למערכת שהיא עם ארכיטקטורה בעל מספר מעבדים (או ליבות), עם זיכרון משותף לרוץ במקביל מעל מערכת הפעלה אחת.
כידוע, הלינוקס קרנל מזה שנים תומך באופן מלא במוד הזה, אבל האנדרואיד עד גירסה 2.3 כולל, לא קומפל באופן רשמי עם הדגל הזה (SMB). אם מישהו שואל את עצמו, מה הבעייה לקחת את קוד המקור (הפתוח והחופשי) של האנדרואיד בגירסאות 2.2 ו 2.3 ולקמפל אותו מחדש עם הדגל הזה ולהתקין את התוצר על מכשיר אנדרואיד ולקבל כמעט בחינם תמיכה במספר ליבות, אז התשובה היא שיש צורך לעשות\לממש עוד מספר פעולות\'ספריות מערכת' לא פשוטות לפני שהעסק יעבוד בצורה תקינה.
אני לא אכנס פה לעומק לבעיות שיש להתמודד איתן בתיכנות מתקדם מקבילי של ספריות מעל מספר תהליכים בו זמנית, אני רק אומר שבמקרה של האנדרואיד, היה צורך להוסיף תמיכה בעבודה כזאת במספר מרכיבי מערכת מרכזיים (כגון שיכתוב ספריות C שיתמכו בהרצה מקבילית וכמובן ה Dalvik VM).
על פי דיווחים של מפתחים מגוגל שעובדים על פרוייקט האנדרואיד עצמו. קיבלנו את המידע שהם כן ניסו להוסיף את התמיכה הזאת כבר לגירסה 2.3, אבל הם לא הספיקו לעשות זאת. לכן, על פי דיווח שלהם זה נכנס על ידם לגירסת 3.0 שיצאה ברבעון הראשון השנה למכשירי טאבלט.
עוד כדאי להזכיר שגירסת ה Honeycomb יצאה לשוק בצורה מהירה ודי לא מסודרת ולכן גוגל לא שיחררה אף פעם לעולם את קוד המקור של המערכת הזאת בטוענה שהקוד "לא מוכן" להגיע לקהילה (הם טענו שזה קשור לחוסר הרצון שלהם שהמפתחים יקחו את הקוד ויריצו אותו על מכשירי סמארטפון וככה יהרסו את החוויה למשתמש). מאז המתמיד נאמר על ידם שגירסת האנדרואיד הבאה (4.0) היא גם זאת שתעשה את הסדר בקוד גם כמובן קוד הפרוייקט ישוחרר לקהילה הפתוחה
זה נכון שבשום מקום לא הבליטו את היכולת הזאת בגירסה 3.0 (ועכשיו בגירסה 4.0), אבל הסיבה לכך לדעתי היא שיווקית גרידא. גוגל, לא רוצה להבליט את העובדה שהתמיכה בגירסאות אנדרואיד עד גירסה 3.0 לא תומכות באופן מלא בעבודה מעל מספר ליבות
נקווה....שזה עושה קצת סדר בבלגן
אגב, יכולת חשובה לא פחות שהוכנסה גם ל ICS זה תמיכה עמוקה יותר בעבודה אל מול ה GPU (מעבד הגרפי). זה לבד צריך להביא שיפור בביצועים (הממשק חלק ומהיר יותר, סוללה טובה יותר)
מסכים.
סתם לדוגמא מעולם הPC, כמשתמש MATLAB, לקח הרבה זמן עד שכמות מהותית של פקודות מאטלב בסיסיות אך תובעניות באמת תמכו בריבוי ליבות.
עדיין רוב התוכנות על המחשב שלכם משתמשות ב32ביט, ורובן עד לפני שנה-שנתיים גם לא יודעות לעבוד באופן מיטבי עם ריבוי ליבות.
סתם לדוגמא מעולם הPC, כמשתמש MATLAB, לקח הרבה זמן עד שכמות מהותית של פקודות מאטלב בסיסיות אך תובעניות באמת תמכו בריבוי ליבות.
עדיין רוב התוכנות על המחשב שלכם משתמשות ב32ביט, ורובן עד לפני שנה-שנתיים גם לא יודעות לעבוד באופן מיטבי עם ריבוי ליבות.

