הוספת מאיצי חומרה מקטינה את ההספק במערכות משובצות

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

חוק האצבע בתכנון מערכות משובצות אמר שהוספת חומרה מעלה את דרישות ההספק. אולם, השימוש הזהיר במאיצי חומרה (hardware accelerators) הופך את החוק: הוספת חומרה עשויה להקטין את ההספק. בעזרת ניתוח אלגוריתמים ומימוש מאיצים מתאימים בלוגיקה מתוכנתת, המפתחים יכולים לשפר את ביצועי התכנון תוך הקטנת צריכת ההספק במערכת מחשוב משובצת. תוצאות בדיקה מראות שמאיצים מגדילים את אופציות החליפין החל משיפור פי-200 בביצועים עבור הספק זהה ועד לביצועים זהים תוך הפחתה של 90% בצריכת ההספק.

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

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

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

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

דוגמת Mandelbrot 

כדי להדגים את סוג החיסכון בהספק שהמתכנן יכול להשיג, פותחה דוגמה של תכנון זול מבוסס FPGA תוך שימוש ב- 50 EP3C25F324מגה-הרץ  של  Alteraעם 25K מרכיבים לוגיים (LEs),  66 יחידות זיכרון 0.6Mbits)) M9K, 16 יחידות מכפיל 18×18, וארבעה PLLs. התכנון ביצע את אלגוריתם Mandelbrot לחישוב פרקטלים (fractals), תוך שימוש בתור קו בסיס במעבד המשובץ Nios®II של Altera®. למרות הממדים הקטנים יחסית של ה-FPGA שנבחר, המיקרו-מעבד תפס רק חלק ממשאבי ה-FPGA. זה השאיר מקום למימוש חומרה נוספת כדי להאיץ את ביצוע האלגוריתם (במוצג באיור 1).

 

איור 1. דיאגרמה מלבנית טיפוסית של מערכת מעבד

 

הבדיקות העריכו את המעבד בלבד ואת המעבד עם עד חמישה מאיצי חומרה. נציגים גדולים יותר של משפחות המוצרים Cyclone®III ו-Stratix®III , בעלי יכולת התקני הבדיקה של ההתקן פי כמה יותר גדולה, היו מספקים הזדמנויות חליפין אפילו יותר נרחבות.

 

בדיקות קו-בסיס העלו שהמעבד Nios II הפועל לבד דרש 435 מיליון מחזורי שעון כדי להשלים את החישובים עבור מסגרת Mandelbrot אחת. הוספה של מאיץ יחיד שינתה את דרישת הביצוע עד 4.9 מיליון מחזורים – שיפור כמעט פי 90 בביצועים (איור 2, משמאל)- ללא עלייה ניתנת למדידה בדרישת ההספק. הוספת ארבע מאיצים נוספים גרמה לשיפורים של עד פי 435 מהביצועים של המעבד בלבד. ההספק הנצרך על-ידי המאיצים הנוספים היה רק ב-90%  גדול יותר מאשר ה-CPU בלבד (איור 2, מימין).

 

איור 2. התוצאה של הוספת מאיצי חומרה על ביצועי המערכת (משמאל) וצריכת ההספק (מימין)

 

הפחתת תדר השעון של המערכת

 

עלייה של פי 435 בביצועים יוצרת מרחב מחשוב עשיר שניתן להמיר כנגד הספק נמוך יותר. דרך אחת לטפל בהקטנה זו היא להאט את השעון בכל התכנון. כפי שמציג איור 3, אפילו עם מאיץ אחד, כל התכנון יכול לרוץ ב-1 מגה-הרץ ולהשיג עדיין ביצועים טובים יותר מאשר CPU לבד הרץ ב-80 מגה-הרץ.

 

איור 3. תוצאות של הפחתת תדר השעון של המערכת

 

בינתיים, החיסכון בהספק משמעותי. התכנון עם CPU ומאיץ אחד הרץ ב-1 מגה-הרץ ניצל רק 12 מילי-ואט בהשוואה ל-132 מילי-ואט עבור ה-CPU לבדו הרץ ב-80 מגה-הרץ, בעודו משיג עדיין ביצועים כמעט כפולים. אם מעיינים בתכנון עם 3 מאיצים, ההספק יורד לפחות מחמישית עם CPU בלבד והביצועים עולים במעל פי חמש. 

 

הפחתת תדר שעון המאיץ

 

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

 

המפתחים יכולים להעריך את השפעת המהירויות השונות של השעון על יחידות חומרה שונות על ביצועים והספק. ה-FPGAs אשר שימשו בתכנון זה מאפשרים מישורי שעון מרובים, כך שה-CPU וחומרת התאוצה שלו יכולים לפעול כל אחד במהירות המיטבית שלו. על-ידי כיוונון נפרד של מהירויות מישור השעון, המפתחים יכולים לקבוע בנקל את ההספק המזערי הדרוש תוך שמירה על הביצועים הרצויים.

 

נדון במקרה שמתכנן מערכות משובצות רוצה שהמעבד יבצע קוד ב-80 מגה-הרץ תוך כדי הורדת האלגוריתם החישובי הכבד לחומרה הרצה בתדר שעון נמוך יותר. במקרה הנדון המעבד המשובץ המריץ קוד יישומים ב-80 מגה-הרץ עם חמישה מאיצי חומרה הרצים ב-1 מגה-הרץ יגדיל את ביצועי המערכת פי שישה תוך כדי הפחתת ההספק ב-55% (איור 4).

 

איור 4. השפעות של הקטנת תדר שעון המאיץ

 

פיתוח מאיצי חומרה

 

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

 

יצירת מאיצי חומרה, שהיא משימה מוכרת עבור מפתחי חומרה, עשויה להציב משימה מפחידה עבור מפתחי תוכנה היוצרים אלגוריתמים ב-C. היכולת לתרגם אלגוריתמי ANSI C ללוגיקה התואמת היא אלמנט מפתח ביצירת חומרת תאוצה יעילה (איור 5).

 

איור 5. תזרים תכנון מאיץ חומרה

 

היישום שבדוגמה היה אפשרי תוך שימוש במערך כלים מתקדם, הכולל את ה-C ב-Hardware Acceleration Compiler (C2H) עבור המעבד המשובץ וכלי פיתוח המערכות SOPC Builder, כאשר את שניהם ניתן למצוא בתוכנת התכנון Quartus®II של Altera. הכלים המירו אוטומטית את קוד המעבד המשובץ C למאיץ חומרה המיושם ב-HDL.

 

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

לנצל את המקבילות

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

סיכום

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

מידע נוסף: 

■ AN 351: Reducing Power with Hardware Accelerators:

www.altera.com/literature/an/an531.pdf

■ Nios II Low Power Design Example:

www.altera.com/literature/an/power.zip

 

הבעת תודה 

■ Rodney Frazer, Embedded Specialist FAE, Sales, Altera Corporation

 

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