טוב, הנושא הזה חם עכשיו כמו דירת גג בדימונה ללא מזגן (חם אש !).
יש פה הרבה נפשות הפועלות בתחום, חלקן ביחד וחלקן לחוד, חשבתי לפתוח דיון של brainstorming (בעברית סיעור מוחות לא ?).
אני מתנצל מראש עם האשכול הזה יהפוך (חלק מזה בגללי) למאתגר טכנית.
מה מטרת האשכול ?
לנסות ולהבין מה הן הבעיות התוכנתיות של מקור מבוסס מחשב ואיך ניתן לפתור אותן (אם ניתן לפתור אותן).
השרשור הזה בעיקר מוקדש למערכת ההפעלה כי כמו שזה נראה כרגע זהו הבלוק הכי משמעותי והכי קריטי וכמו שאני רואה את זה, יש לטפל בו תחילה.
אני אתחיל עם מה שאני יודע ורואה (חלק מזה מבוסס על התאוריות שהועלו ע"י מפתחי תוכנות High end לאחרונה).
1. הבעיה העיקרית היא jitter שנוצר כתוצאה מהצורה שבה תוכנה ומערכת הפעלה מודרנית מתנהלת: ריבוי תהליכים ושירותים (אותם services של המערכת הפעלה הנסתרים מעיניכם) המתחרים על סט משאבים סופי/מצומצם שכתוצאה מזה מערכת ההפעלה נאלצת לבצע "context switch/task switch" בתדירות גבוהה שהיא פעולה הגוזלת לא מעט מחזורי שעון מהמערכת (אם לוקחים גם בחשבון גישות לזיכרון/IO וכו).
כל זה גורם להזרמה לא עיקבית של המידע מהמחשב (על שלל מכלוליו) אל ההתקן שאחראי להוציא את האות הדיגיטילי ל DAC.
2. תוצאה משנית של זה היא גם קליקים ופופים שיכולים לצוץ מידי פעם שהם מעצבנים ומתרידים כאחד.
3. קצת חלק חומרתי (אבל יכול להיות קשור לצורה שבה מערכת ההפעלה מיישמת את ה handlerים שלה) מנגנוני חיסכון חשמל שדואגים להכניס את המעבד ל C3/C6/C7 או להקטין/להגדיל את תדר העבודה של המעבד יכולים לגרום ל Jitter שהוזכר בסעיף 1 ו/או לקליקם/פופים שהוזכרו בסעיף 2.
סעיף 1 די מכליל הרבה בעיות בתוכו אבל כולן בסופו של דבר מתנקזות לאותה בעיה.
לדעתי ללא חומרה ייעודית בסגנון DDC יהיה קשה מאד עד בלתי אפשרי לפתור את כל הבעיות הנ"ל.
כמו שאני רואה את זה מכשיר בסגנון DDC יכול לכאורה לבטל עצמו מכל אותן בעיות שהוזכרו ע"י איחסון המידע בבאפשר ושליחתו ללא שום קשר לפעולות המתבצעות מול המחשב.
למראות כל זאת, אני חושב שיש דרכים בהן ניתן למזער את הבעיות הנ"ל, עיקר הרעיון שלי הוא:
בעזרת הפצה מצוצמצת ודי ערומה של Linux שלא מכילה ממשק גראפי (CLI בלבד) שאולי אפילו כוללת איזה קרנל מצומצם ביותר.
השליטה תעשה מרחוק ע"י UPNP/סרבר קליינט HTTP או כל פתרון בסגנון.
ניתם גם לבצע הזרמה של התוכן (סטייל Squeezebox).
בנוסף לכך, במערכות מרובות ליבות (לא כולל HT כי זה לא ליבה מלאה), כדאי להקצות ליבה פיזית אחת ולבטל אליה כל גישה של כל יישום כולל שירותים של מערכת ההפעלה ולאפשר גיישה אקסלוסיבית ליישום המזרים/מנגן את המידע ע"מ לצמצם את ה Context Switching למינימום.
זה עדיין לא מבטיח עבודה רציפה לחלוטין כי קוד שרץ על ליבה אחרת יכול
בתאוריה לנעול את הגישה ל Busים חיצוניים שליבות אחרות יצתרכו גישה אליהן.
זהו בגדול, אשמח לשמוע את דעתכם ואת הרעיונות שלכם בנושא.
לילה טוב