Yan Vainter, Freescale
עם הגידול בדרישות העומדות בפני התקני מולטימדיה לווידיאו באיכות גבוהה, כדוגמת איכות 1080i/p, האתגר הכרוך בעיבוד וידיאו ספרתי הולך וגדל במהירות. הדרך המסורתית של שימוש במעבד DSP לצורך עיבוד בתוכנה, שהוא בעל יתרון שבא לידי ביטוי בתמיכה במגוון רחב של תבניות וידיאו, נתון בלחץ כבד של מחשוב עיבודי וידיאו במהירות גבוהה בהרבה יותר. הארכיטקטורה המתחרה, יחידת עיבוד וידיאו בהאצת חומרה, מציגה את היתרונות שלה, לא רק בהיותה בעלת דרישות נמוכות מבחינת העמסת היע”מ (CPU), אלא גם בעובדה שהיא עומדת בדרישות ההספק הנמוך של התקני מולטימדיה ניידים, עובדה שהיא קריטית להטמעה מסחרית.
דוגמה אופיינית לארכיטקטורה של עיבוד וידיאו בהאצת חומרה מודגמת על ידי מעבד היישומים i.MX53 מבית Freescale. יחידת VPU המשובצת תומכת באופן מלא בתבניות H.264 של גרסאות , VC–1 גרסאות , MPEG-4 גרסאות , , , Spark של חברת Sorenson ו–RV–8/9/10. קיימת תמיכה בפענוח קידוד של תמונה בגודל של עד (1920×1088) וקיימת תמיכה בקידוד של תמונה בגודל של עד (1280×720). יחידת VPU תומכת בו בזמן בפענוח קידוד מרובה ובשיחות של ריבוי משתתפים בדופלקס מלא.
ארכיטקטורה אופיינית של יחידת VPU בהאצת חומרה
שלא כמו יחידות VPU הנפוצות בהאצת חומרה, יחידת VPU המשובצת במעבד i.MX53 מספקת יכולת ניתנת לתכנות, גמישות וקלות של שדרוג בתחום פענוח הקידוד והקידוד או בתחום הממשק המארח, מאחר שכל הבקרות של תהליך פענוח הקידוד והקידוד והבקרות של הממשק המארח ממומשות כקושחה (firmware) במעבד DSP ניתן לתכנות שנקרא BIT. קל לשלב את יחידת VPU בתוך המערכת מאחר שהממשק שלה מורכב מאפיק AXI/APB.
המשאבים הנדרשים מהיע”מ המארח לבקרה של יחידת VPU מועטים ביותר, ומהווים לא יותר מאשר 1 MIPS, מאחר שכל הפונקציות שלה – כגון בקרת קצב, FMO, ASO, בקרת דחיסה/ פריסה (codec) של הווידיאו ועמידות לשגיאות – ממומשות במעבד BIT. החלק העיקרי של יחידות המשנה ביחידת VPU נמצאות בשיתוף אופטימלי, עובדה המאפשרת להשתמש בהספק נמוך ביותר ולממש במספר שערים קטן.
יחידת VPU כוללת בעיקר שני רכיבים: מעבד IP המשמש לעיבוד דחיסה ופריסת וידיאו ויחידת תאום ל-VPU. מעבד IP המשמש לעיבוד דחיסה ופריסת ווידיאו הוא הלב של יחידת VPU והוא האחראי לפעולות הקידוד ופענוח הקידוד. הוא מורכב בעיקר ממעבד BIT משובץ ל- 16 סיביות, חומרת דחיסה ופריסה של וידיאו וממשק / בורר (arbiter) אפיק. יחידת התאום ל-VPU אחראית על המרת אפיק APB3 בארכיטקטורת AMBA לאפיק IP Sky Blue.
תהליך עיבוד הוידיאו
יחידת VPU יכולה לטפל בו בזמן ב–4 תהליכים בו זמנית. כל תהליך יכול לטפל בתבנית שונה, למשל ב– MPEG-4,MPEG-2, H.264 או ב–VC-
כל תהליך פענוח קידוד מורכב משלושה סיווגים:
יצירת תהליכים: התוכנה יוצרת תהליכים ומבצעת בהם קונפיגורציה
הפעלת תהליכים: בנקודת הזמן המתאימה התוכנה תתחיל בתהליך מסוים. המשמעות של נקודת הזמן המתאימה היא הנקודה שבה פענוח הקידוד נמצא במצב סרק וזרימת הסיביות, שאת הקידוד שלה יש לפענח, מוכנה בזיכרון החיצוני.
יציאה מתהליכים: התוכנה יכולה לצאת מתהליך מסוים
אם קיים יותר מתהליך אחד שנמצא במצב פעולה, לכל אחד מהתהליכים יש צורך להקצות זיהוי תהליך (ID) שונה – RunIndex – שיהיה בטווח שבין “0” לבין “3”. באופן בסיסי הזיהוי ID מוקצה בהתבסס על סדר היצירה. לדוגמה, כאשר תהליך פענוח קידוד MPEG-4 אחד, ועוד תהליך פענוח קידוד H.264 אחד, ועוד תהליך פענוח קידוד MPEG-2 אחד, ועוד תהליך פענוח קידוד VC1 אחד פועלים ביחד בו זמנית, לתהליך הפענוח MPEG-4 יוקצה אינדקס תהליך “0”, לתהליך פענוח הקידוד H.264 יוקצה אינדקס תהליך “1”, לתהליך פענוח הקידוד MPEG-2 יוקצה אינדקס תהליך “2” ולתהליך פענוח הקידוד VC1 יוקצה אינדקס תהליך “3”.
לתהליכים אלו אין סדר עדיפות ביצוע, כלל וכלל. לאחר יצירת כל התהליכים בשלב האתחול, המעבד המארח מאפשר למעבד BIT לבצע את התהליך המוגדר באינדקס RunIndex. כל התהליכים מבוצעים במנגנון דמוי חלוקת זמנים, ולאחר שבאחד התהליכים הסתיים פענוח הקידוד של המסגרת, אפשר לבצע תהליך נוסף.
איור 2 מציג זרימת תהליכים, למשל עבור פענוח קידוד של רצף סיביות בתבנית H.264, ובו זמנית פענוח קידוד של רצף סיביות בתבנית MPEG-4. בתחילה נוצרים ומאותחלים שני תהליכי פענוח הקידוד. לאחר מכן, כל אחד מהתהליכים מבוצע לסירוגין עם פקודת הפעלה.
רצף הפעולה מורכב מהשלבים הבאים:
1. אתחול יחידת VPU, לרבות:
הורדת קוד BIT: העלאת קושחת מעבד BIT לזיכרון
קביעת פרמטרי אתחול: ביצוע קונפיגורציה כללית של מעבד BIT, הגדרת הכתובת הבסיסית של מאגר זיכרון העבודה, כתובת זיכרון קוד BIT, בקרת מאגר הזיכרון של רצף הסיביות, וכך הלאה.
התחלת פעולת מעבד BIT: הפעלת מעבד BIT כדי לאתחל את יחידת VPU.
2. יצירה ואתחול של תהליך פענוח קידוד
ביצוע קונפיגורציה: ביצוע קונפיגורציה של כתובת בסיס, של גודל מאגר הזיכרון לרצף הסיביות, של כתובת הבסיס ומאגרי זיכרון למסגרות, וכך הלאה.
אתחול תהליך פענוח: אתחול תהליך פענוח הקידוד בתבנית H.264
ביצוע פעולות דומות: ביצוע פעולות דומות עבור תהליך פענוח הקידוד בתבנית MPG-4
3. הפעלת תהליך פענוח הקידוד בתבנית H.264
קונפיגורציה: ביצוע קונפיגורציה של כתובת היעד של המסגרות
פענוח: התחלת תהליך פענוח הקידוד בתבנית H.264
המתנה: המתנה עד אשר המעבד BIT ישלים תהליך של מסגרת אחת. את המסגרת שהקידוד שלה פוענח אפשר לשלוח ליחידת עיבוד התמונות לצורך ביצוע התהליך שלאחר עיבוד, ולאחר מכן לתצוגה.
פעולות דומות: ביצוע פעולות דומות עבור תהליך פענוח הקידוד בתבנית MPEG-4 וחזרה על שלב זה, עד אשר יטופלו כל המסגרות.
4 עצירת תהליכי פענוח הקידוד
סיום: סיום של כל התהליכים ושחרור כל משאבי הזיכרון
ניהול הזיכרון קריטי לשימוש ביחידת VPU
ניהול הזיכרון הוא קריטי ביותר עבור יחידת VPU, מפני שלמשימות כדוגמת פענוח קידוד של 1080i/p יש צורך ברוחב פס גבוה ביותר של זיכרון. רוחב הפס של הזיכרון הופך לעתים להיות בלתי מספיק, במיוחד אם מתייחסים לעובדה שרוב מערכות ההפעלה כיום הן מערכות מוכוונות ריבוי משימות. מצב כזה יגרום לבעיות של ווידיאו לא רציף או אפילו לשגיאות בפענוח הקידוד. זו הסיבה שיש לנהל בקפדנות את רוחב הפס של הזיכרון.
ליחידת VPU יש גישה מלאה לזיכרון החיצוני כולו. היא משתמשת בזיכרון חיצוני כדי לטעון או לשמור מסגרות של תמונה, רצף סיביות, תוכנית ונתונים עבור מעבד BIT. הדרישה לגבי גודל מאגר הזיכרון תלויה בתקן וביישום הסופי. לדוגמה, פענוח קידוד בתבנית H.264 משתמש בריבוי של מסגרות ייחוס, עד כדי 16 מסגרות. פענוח קידוד בתבנית MPEG-4 ובתבנית H.263 משתמש במסגרת ייחוס אחת בלבד. כמו כן לכל תקן יש צורך בגודל שונה של זיכרון זמני, כאשר הוא מעבד ביטול חלוקה לבלוקים (de-blocking) או מבצע סינון של החלקת חפיפה (overlap–smoothing).
באופן בסיסי, יחידת VPU משתמשת בשישה סוגים של מאגרי זיכרון, כפי שמתואר בהמשך:
מאגר זיכרון למסגרות: משמש לצורך מיון של מסגרות תמונה.
זיכרון התוכנית של מעבד BIT: מיועד עבור קוד האתחול והקושחה.
מאגר זיכרון לעבודה: עבור נתוני ביניים ממעבד BIT ומחומרת פענוח קידוד הווידיאו.
מאגר זיכרון לרצף הסיביות: מיועד לצורך טעינת רצף הסיביות.
מאגר זיכרון של פרמטרים: עבור ארגומנטים בביצוע הפקודות של מעבד BIT ועבור נתונים חוזרים.
זיכרון RAM לחיפוש: מיועד עבור השימוש במודול ME והקטנת עומס האפיק של זיכרון SDRAM.
המעבד המארח צריך להקצות מאגרי זיכרון עבור רצפי סיביות על בסיס כל מופע. אם יחידת VPU מטפלת בו–זמנית בכמות של N רצפי סיביות ביישום אחד, על המעבד המארח להקצות N מאגרי זיכרון לרצפי הסיביות ולהגדיר את כתובת הבסיס ואת הגודל. מאגר הזיכרון החיצוני של רצף הסיביות הוא מסוג “מאגר זיכרון טבעתי”. המעבד המארח חייב לרשום את כתובת ההתחלה של מאגר זיכרון טבעתי ואת גודל מאגר הזיכרון עבור מעבד BIT. כתובות הקריאה והכתיבה הנוכחיות של מאגר הזיכרון הטבעתי מועברות בגלישה חזרה (wrap around) באופן אוטומטי על ידי הקושחה.
במקרה של פענוח קידוד, המעבד המארח שומר את רצף הסיביות שאת הקידוד שלו יש לפענח, ולאחר מכן מעבד BIT קורא את רצף הסיביות. במקרה זה, עלולה להתרחש דריסה (overwrite) או חמיקה (underflow) – ואם מצב כזה מתרחש, פענוח הקידוד ייכשל.
על מנת למנוע דריסה או חמיקה, יש להעביר את המצביעים הנוכחיים של הקריאה והכתיבה של רצף הסיביות בין המעבד המארח ומעבד BIT. מעבד BIT כותב את מצביע הקריאה הנוכחי של מאגר הזיכרון הטבעתי באוגר (register) פנימי. מעבד BIT בודק את מצב ריקון מאגר זיכרון הסיביות (מצב חמיקה) על ידי השוואה בין מצביע הקריאה הנוכחי ומצביע הכתיבה הנוכחי. אם אין נתוני רצף סיביות נוספים לצורך פענוח קידוד (מצב ריקון מאגר זיכרון), מעבד BIT מפסיק את פענוח קידוד רצף הסיביות, על מנת למנוע קריאה שגויה של רצף הסיביות וממתין עד אשר המעבד המארח יכתוב נתוני רצף סיביות נוספים ויעדכן את מצביע הכתיבה. המעבד המארח חייב לבדוק את מצביע הקריאה הנוכחי ואת מצביע הכתיבה הנוכחי לפני שהוא כותב נתוני רצף סיביות נוספים במאגר הזיכרון הטבעתי, על מנת למנוע דריסה של נתוני רצף סיביות.
מסקנות
בניתוח שמתואר לעיל, אפשר לראות שהשימוש ביחידת VPU פשוט ביותר. השילוב של הטיפול בפענוח קידוד או בקידוד בתוך יחידת VPU, למעשה מסתיר את מורכבות התהליך, ובכך הופך את תהליך יצירת הווידיאו לפעולה פשוטה. אין כל ספק שזהו אחד היתרונות הגדולים ביותר של יחידת VPU בהאצת חומרה. שוק התקני המולטימדיה כיום הופך להיות תחרותי יותר ויותר, עובדה המאלצת את יצרני המערכות לפעול בצורה הטובה ביותר שהם יכולים במטרה לקצר את זמן פיתוח המוצר. בנוגע לפתרון של הטיפול בווידיאו –יצרני היישומים צריכים לוודא שהתכנונים שלהם לייחוס ידידותיים מבחינת יצרני המערכות, על ידי כך שיספקו ממשקי API פשוטים, פונקציונליות שהיכולות שלה נבדקו באופן מלא וביצועי זמן אמת יציבים. אין כל ספק שתכנון מערכות המבוסס על יחידות VPU בהאצת חומרה היא אפשרות בחירה אטרקטיבית ביותר המאפשרת עמידה בדרישות.