Latest News

פתרון בעיית הזיכרון בתכן יחידת מיקרו-בקר (MCU) המבוססת על ממשק משתמש גרפי

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

לשימוש ביחידות MCU בתכן של גרפיקה משובצת יש יתרונות רבים בהשוואה לשימוש בארכיטקטורת יחידות מיקרו מעבד (MPU). ארכיטקטורת MPU הכרחית בצורה מוחלטת ברמות מסוימות של ממשק משתמש גרפי GUI)), אולם יישומים רבים יכולים להפיק מצגי ממשק משתמש מעניינים חזותיים ואפקטיביים מבלי להתחייב בהוצאה העודפת ובהכשרה הנדרשים כדי לממש את המעבר. היתרון המרשים ביותר, זו ככול הנראה, רמת התכלול המוצעת על ידי יחידת מיקרו-בקר (MCU) רגיל. בתוך זה נכללים, בחירת גודל הזיכרון הנדיף (SRAM) כמו גם גודל הזיכרון הלא-נדיף (שבבי), המהירות הספציפית של הליבה ושל השעון, ממשקי תקשורת ומחברי קלט/פלט והתקנים היקפיים אנלוגיים. בנוסף, השוק מציע טווח אינסופי של התקנים שמתאימים למרבית המאפיינים המשובצים. אולם כאשר יישום משובץ מחייב, למען הפשטות, שימוש בממשק משתמש גרפי GUI)), חסכון בשטח אחסון ובעלויות נעשה מסובך יותר למשתמשי יחידת מיקרו-בקר (MCU). כאשר מוצג צורך מעין זה, מתכננים רבים של מערכות משובצות מתמודדים עם השאלה האם יחידת מיקרו-בקר (MCU) תוכל לעמוד בדרישות או שעליהם לבחור במעבר ליחידת מיקרו מעבד MPU)), מעבר שהוא פוטנציאלית יקר ומסובך יותר.

 שיקול 1: כיצד תונע הגרפיקה?

השיקול הראשון בתכן גרפי הוא כיצד הגרפיקה מונעת. ככלל, בתכן של גרפיקה משובצת אנו מבחינים בשלושה תפקודים: תיצוג rendering)), הנעה (driving) ואחסון. תיצוג מתייחס לאופן שבו תמונה נוצרת ומטופללת (manipulated). תכן ברמה-בסיסית ישתמש ביחידת העיבוד המרכזית (CPU) של המיקרו-בקר כדי לבצע את התיצוג. ביחידות מיקרו-בקר ברמה גבוהה יותר הנבנות לייעוד מוגדר תשולב יחידת עיבוד גרפית (GPU) משלהן שאמורות להפחית את העומס שיוצרים תפקודי התיצוג, כמו למשל, שרטוט ומילוי של קווים ומלבנים, העברת צורות וטפלול רבדים המכונה בליץ. תפקודי ההנעה מתייחסים לאופן שבו התמונה מועברת למרקע. ניתן לבצע פעולה זו באמצעות יחידת גישה ישירה לזיכרון (DMA) המקושרת למיקרו-בקר במחבר מקביל חיצוני, או באמצעות בקר גרפי ייעודי. הבקר הגרפי מוסיף יכולות, כגון ריבוד וסיבוב וכך מאפשר להפיק עיצוב גמר משופר. בספו של דבר האחסון הוא המקום שבו נשמר המידע המפרט את אשר יש להציג. זוהי הנקודה שבה מתמקד מאמר זה.

שיקול 2: היכן תאחסן את התכן של ממשק משתמש גרפי (GUI)?

בימים אלה, זיכרונות נדיפים (SRAM) זמינים המתוכללים במרבית יחידות המיקרו-בקר בשיווק המוני בתחום המחירים הגבוה של השוק, מוגבלים בגודל של 512KB בקירוב. גודל זה אמור להספיק להנעת ממשק משתמש גרפי פשוט וסטטי שדורש מאגר בגודל של מסגרת אחת, ממשקי משתמש גרפיים המשתמשים רק בשמונה סיביות לבחירת צבע של פיקסל ובמסכים קטנים. אבל, המגמה שאנו מזהים בשוק היא שמשתמשי הקצה מבקשים ליהנות בממשק ההתקן המשובץ מחוויה דומה לזו שהייתה להם ביישומונים האהובים בטלפון החכם. בנוסף, החברות מבקשות שממשק המשתמש הגרפי ייצג נכונה ובמדויק את המיתוג שלהן באופן שמדרבן את ההזדהות עם המותג ואת הנאמנות אליו. הנעה של ממשק משתמש גרפי חלק ועשיר עשויה לחייב שימוש במספר מאגרי מסגרות, ריבוד במספר שכבות ועומק צבע גדול יותר. עומק הצבע חשוב במיוחד כאשר הגרפיקה של יישום חייבת ליצור תמונת צילום מציאותית או להתאים בצורה מדויקת לצבע מותג מוגדר.

איור 1 מציג שתי דוגמאות של יישומי ממשק משתמש גרפי (GUI) שמעורבים בהן רבים מהשיפורים האלה. הדוגמה היא במידה רבה הדגמת העיוות בתמונת צילום מציאות שגודל הזיכרון הלא-נדיף שהיא תופסת בזמן ריצה הוא 12MB בקירוב. יישום אחר, ממשק משתמש גרפי (GUI) של יצרן קפה ניצל כמה אייקונים גרפיים קטנים יותר, אבל שילב גם ריבוד במספר שכבות ותנועה. גודל הזיכרון של תמונה זו בזמן ריצה היה 3MB לערך.

 שיקול 3: האם לשמור ממשק משתמש גרפי (GUI) בזיכרון חיצוני?

זכרו, זיכרונות נדיפים (SRAM) המתוכללים ביחידות מיקרו-בקר טיפוסיות בתחום המחירים הגבוה של השוק, מוגבלים בגודל של 512KB בקירוב. ברור מאליו ששני היישומים האלה גלשו אל מעבר למהירות הזיכרון המתוכלל של כמעט כול יחידת מיקרו-בקר (MCU) בשוק. כך נוצר הצורך להשתמש בזיכרון נוסף מחוץ למיקרו-בקר (MCU). זיכרון כזה חייב להיות בדחיסות גבוהה, בעל ביצועים גבוהים ובזמינות גבוהה. אפשרות אחת לשימוש בזיכרון חיצוני ביישומי גרפיקה עם מיקרו-בקר (MCU) היא להשתמש בזיכרון נדיף (SRAM) אסינכרוני. זיכרון נדיף (SRAM) חיצוני מספק האצת זיכרון, בדחיסות של 8MB וקל, יחסית לתכנן אותו, עם קווי כתובת לא מרובבים וחיבורי פינים ידידותיים למחברים מקביליים בדגמי מיקרו-בקר רבים. הפשרה בשימוש בזיכרון נדיף (SRAM) חיצוני באה לידי ביטוי בדחיסות (8MB זה גדול, אבל לא גדול מספיק כדי לענות על הדרישות של יישומים עתירי גרפיקה), עלות (המחיר של יחידה בודדת עם מפלגים מקוונים גבוה לעתים ממחיר יחידת מיקרו-בקר (MCU) עצמה) וכן שטח לוח.

ביחידות מיקרו-בקר רבות המצויות כיום בשוק שולב ממשק SDRAM במיקרו-בקרים שבו ניתן להשתמש לאחסון נתונים גרפיים. הנקודה החשובה לענייננו היא שהדחיסויות הנתמכות בצורה הזו של זיכרון חיצוני הן 8MB ו-16MB. קל יותר יחסית, להשיג זיכרונות SDRAM ויחס עלות תועלת שלהם טוב לאין ערוך מזה של זיכרונות נדיפים SRAM. כפי שנאמר לעיל, זיכרון בגודל 8MB ייחשב כגבול תחתון, כאשר יישומי ממשק משתמש גרפי (GUI) ספורים (כגון זה המוצג בהדגמת עיוות התמונה) חורגים מגבול זה. שימוש בזיכרון SDRAM מחייב גם שיקולים הכרחיים בתכן הלוח. השילוב של פסים המגיעים עד 120MHz מחייב אכיפה של דרישות תכן מיוחדות. לדוגמה, יישומים מסוימים ממליצים שכול לוחות המעגלים המודפסים (PCB) שכוללים תכן זיכרון SDRAM מקצה לקצה יורכבו משש שכבות. פירוש הדבר הוא שזיכרון חיצוני בעל ביצועים גבוהים יכול להוסיף עד ארבע שכבות לתכן של מעגל מודפס (PCB) משובץ, בתוספת של מספר דולרים לעלות הכוללת של החומרים בעץ המוצר.

נושא נוסף הראוי לעיון בהקשר השימוש בזיכרון SDRAM הוא סוגיית הביצועים. פסים טיפוסיים עם 16 סיביות בתדר 100MHz, מאפשרים קצב העברת נתונים מרבי תאורטי של 200MB לשנייה. צג WVGA עם הפרדה של 800×480, קצב ריענון 60MHz ועומק צבע של 16 סיביות לפיקסל דורש ספיקת נתונים של 46MB לשנייה. בכול מקרה, כאשר טפלול התמונה מבוצע ביחידת העיבוד המרכזית (CPU) או ביחידת עיבוד גרפית, כמו גם התמיכה בשכבות מרובדות שהופכת להיות תקנית במיקרו-בקרים של גרפיקה משובצת, התכן אמור להגיע עד ביצועי המילה הממשיים של מערכת מבוססת זיכרון SDRAM, או אף מעבר להם. במילים אחרות, הביצועים של זיכרון SDRAM עלולים להוות חסם ביישומי גרפיקה באיכות גבוהה. זוכרים את המגמות שאוזכרו קודם? משתמשי הקצה רוצים שכול האינטראקציות שלהם עם התקנים אלקטרוניים ייראו דומים לאלו של הטלפונים החכמים ושל היישומים האהובים ויספקו חוויה זהה. מסיבה זו, הלחץ על הביצועים אמור לגדול ככול שנתקדם. לכן, מה שדרוש לנו זו טכנולוגיה חדשה להשגת ביצועים גבוהים בדחיסות גבוהה.

שיקול 4: האם יש בנמצא זיכרון פנימי עבור יישומי ממשק משתמש גרפי (GUI)?

הטכנולוגיה האחרונה שנשקול היא DDR2 SDRAM. טכנולוגיה זו מעמידה לרשות המפתח את היתרונות של דחיסויות גבוהות יותר (עד 128MB) מאלו שזמינות בזיכרון SDRAM. יתרון נוסף הנובע משימוש בזיכרונות DDR2 SDRAM הוא הביצועים. מהירויות השעון בממשק עם זיכרון DDR2 לפחות כפולות מאלו של זיכרון SDRAM. בנוסף, DDR פירושו “קצב נתונים כפול” Double Data Rate)), כלומר נתונים מועברים אל הזיכרון וממנו פעמיים בכול מחזור. התוצאה היא טכנולוגיית זיכרון שמהירותה כפולה פי ארבעה לפחות מזו של זיכרונות SDRAM הנפוצים בשוק.

רתימת הביצועים של זיכרון DDR2 היא אחד החסרונות העיקריים של השימוש בטכנולוגיה זו. בהינתן פס ממשק שמתחיל בתדר 200MHz ובהעברת נתונים המתרחשת אחת לכול חצי מחזור, יש לקחת בחשבון שיקולים מיוחדים מעל ומעבר לאלה הנדרשים עבור זיכרונות SDRAM, וזאת כדי לוודא כלילות נאותה של האות תוך שמירה על בידוד מהרכיבים האחרים בלוח. תכן של זיכרון DDR מחייב תשומת לב מיוחדת למפרטים אחרים, כגון סבולת הדוקה בפנייה, מתח מקור ומתח הפסקה, ניתוק רכיבים נאות, שיקולי פריסה, כגון רוחב עקבה, מרווח בתוך צמד, מרווח בין צמדים וניתוב עקבה.

ככול שיישומי גרפיקה משובצת הולכים ונעשים גדולים ועמוקים יותר, וככול שהן נעשים מורכבים יותר, ילך ויגדל הצורך בזיכרון גדול ובספיקת נתונים גבוהה שמאפשרים לנו זיכרונות DDR2. מתכנני מערכות משובצות שהתקינו לפני שנים ספורות יחידות מיקרו-בקר (MCU) בתדר של 150MHz לכול היותר מתמודדים כיום עם הצורך להשתמש ביחידות מיקרו-בקר שמהירותם כפולה, עם ממשקי זיכרון שמתאימים למהירות השעון הפנימי של המיקרו- בקר. מרבית היצרנים של יחידות מיקרו-בקר (MCU) יכולים ואף מציעים צורות שונות של סיוע בתכן של מוצריהם.

אבל, האם לא יהיה זה טוב יותר אם תהיה לנו גישה לזיכרונות בדחיסות ומהירות גבוהות המתוכללים במיקרו-בקר (MCU) מהיר המאופשר לגרפיקה, ללא צורך בהוספת שכבות יקרות למעגל המודפס (PCB), שמייקרות במספר דולרים את העלות הכוללת של הרכיבים בעץ המוצר, ומחייבות להשקיע מאמץ מיוחד בדבר שיכול להיות עמדת זינוק תחילית לתכן של פס DDR2 בתדר 200MHz ויותר. המיקרו-בקר PIC32MZ DA מתוצרת Microchip הוא אחד המיקרו-בקרים המעטים בשוק שיכול להתממשק עם זיכרונות DDR2. משפחת המיקרו-בקרים PIC32MZ DA מייתרת את הצורך בתכן לחוץ של זיכרון חיצוני באמצעות שילוב הזיכרון הגרפי בשבב של הבקר. במיקרו-בקר PIC32MZ DA נעשה שימוש בתכן בטכניקת זיכרון מוערם, והוא כולל 32MB של זיכרון DDR2 DRAM פנימי, כך שאין צורך בזיכרון חיצוני (איור 2). בשבב של ההתקן משולבים בקר גרפי תלת שכבתי ויחידת עיבוד גרפי בכושר ביצוע גבוה, המספקים רמת תכלול וביצועים ללא הקבלה בשוק יחידות מיקרו-בקר מונעות גרפיקה.

איור 2 – תרשים מלבנים PIC32MZ DA

מסקנות

הצורך בתכן משובץ שיכול להתמודד עם היופי והמורכבות של ממשקי משתמש גרפיים ימשיך ויגדל במהירות. בימים אלה מוצעים בשוק טכנולוגיות זיכרון אחדות שנועדו לסייע בפתרון אחת המגבלות העיקריות שמאפיינות את הארכיטקטורות של יחידות מיקרו-בקר (MCU) – אחסון בזיכרון, כשלכול אחת מהן יתרונות וחסרונות ייחודיים. במאמר זה נידונו היתרונות והחסרונות של כול ארכיטקטורה. תכן ממשק משתמש גרפי (GUI) לא יעבור מן העולם ובעוד מגבלות זיכרון עלולות ליצור כאבי ראש למתכננים, אין סיבה שהדבר יגביל גם את יכולתכם לעצב עבור לקוחותיכם יישומים נהדרים שימושיים ויעילים.

תגובות סגורות