התנופה המניעה את הקישוריות המשובצת החכמה ממשיכה לגדול בקצב בלתי נתפס. טכנולוגיות הופכות להיות מקושרות בין ריבוי התקנים ופלטפורמות לרשתות, כשהן יוצרות בכך רשת של תקשורת שמרחיבה את הדרך שבה אנו פועלים באופן הדדי עם הנוף הספרתי. צורת תקשורת זו, שידועה בשם האינטרנט של הדברים – IoT – משנה את הדרך שבה אנו פועלים באינטראקציה עם הסביבה שלנו, הקהיליות שלנו, הבתים שלנו ואפילו עם הגוף שלנו. על פי ההערכות, מספר ההתקנים האלחוטיים המחוברים יגיע ליותר מ-50 מיליארד עד לשנת 2020. על מנת להגיע למספר המדהים הזה, מבחר יישומי IoT יתרחב ויתפתח, וישמש החל מהתקנים לבישים מורכבים ומתוחכמים המשמשים לניטור פעילות גופנית, ועד למכשירים ביתיים חכמים בעלי יכולת שיפור אופטימלי של נצילות אנרגיה. על מנת לתמוך בגידול ובמבחר כאלו, הטכנולוגיה המשובצת שתומכת ב-IoT תצטרך לעמוד בפני כמה אתגרים. האתגרים הניצבים בפני מתכנני התקנים משובצים, מתגברים והולכים בקביעות מתוך קצב הגידול המהיר של ה-IoT. ברשת זו של קישוריות מתרחבת, מהנדסים נתקלים בפני דרישות מתרחבות ומשתנות. כמה מהן אפשר לראות באיור 1 שבהמשך. מתכננים עובדים קשה כדי לקצר את זמן היציאה שלהם לשוק, ולכן יוכיחו את עצמם במקטעים המתפתחים של ה-IoT. בראש כל אלו, ניצבות הדרישות הגדלות של ציפיותיו של משתמש הקצה. ככל שיישומים אלו ב-IoT מתרחבים, מוצרי הקצה חייבים למצוא את האיזון הנכון שבין יכולת עיבוד וצריכת הספק. כמובן, כל זה אינו מהווה אתגר חדש עבור מפתחי החומרה, אך יש לו בהחלט חשיבות מיוחדת בתחום המשובץ. בנוסף, יישומי קצה צריכים להיות בעלי יכולת התאמה, הם צריכים להיות מסוגלים להשתנות ולהתרחב ככל שמגיעים עדכוני תוכנה. וכמו כן, קיימת גם הציפייה שהתקני הקצה יהיו מאובטחים מפני התקפות זדוניות, שמובילה לדרישות רבות יותר בנוגע לאבטחה, על מנת להבטיח שהתקנים אלו יפעלו כצפוי.
משפחת הליבות ARM Cortex-M
ארכיטקטורה מובילה עבור בקרים משובצים, היא משפחת הליבות Cortex-M של ARM. יחידות עיבוד מרכזי (CPU) אלו מספקות את העיבוד הנדרש לכמויות אדירות של יישומי IoT. קו הייצור של משפחת הליבות הניתנות לשדרוג מתפרש על תחום רחב, החל בפתרונות הספק נמוך במיוחד ובעלות נמוכה ביותר, עד לליבת ARM Cortex-M7 שמאפשרת הגדרת תצורה ברמה גבוהה ולביצועים הטובים ביותר. כל הליבות במשפחת Cortex-M של ARM מותאמות כדי לעמוד באתגרי ה-IoT, עם תאימות כלפי מעלה של קבוצת הפקודות ועם יעילות ביצועים המותאמת למקרי שימוש שונים של IoT. מעל החומרה הזו פועלת פלטפורמת מערכת הפעלה שהוכרזה לאחרונה mbedTM OS ותקן ממשק תוכנה למיקרובקרי Cortex-M (CMSIS – Cortex-M Microcontroller Software Interface Standard), שהוא שכבת הפשטת חומרה (HAL) שאינה תלויה ביצרן, עבור סדרת ליבות Cortex-M. המשמעות של תאימות זו לתוכנה ושל המערכת הסביבתית התומכת של מפתחים ותמיכה היא, שליבות Cortex-M של ARM הן הבחירה האמינה עבור טווח של שווקים משובצים, לרבות תחום ה-IoT.
תת-המשפחה האחרונה שהצטרפה למשפחת הליבות Cortex-M היא ARM Cortex-M7. הליבה של Cortex-M7 החדשה מציעה יכולות שבהן אפשר להשתמש כדי לתמוך בצרכים של הטכנולוגיה המשובצת החדשה, שתומכת בהתרחבות של IoT. הליבה מתוכננת עבור יישומים שדורשים ביצועי עיבוד גבוהים, יכולת תגובה בזמן אמת ונצילות אנרגיה גבוהה.
במבט על, הליבה ARM Cortex-M7 כוללת את התכונות העיקריות הבאות:
צינור נתונים (pipeline) ב-6 דרגות, לביצועים גבוהים, עם הפקת פקודה כפולה, אשר מאפשר לו לבצע עד שתי פקודות בכל מחזור שעון
ממשק אפיק מערכת AXI ביט
זיכרון מטמון אופציונלי לפקודות (4 עד 64KB) וזיכרון מטמון אופציונלי לנתונים (4 עד 64KB), עם תמיכה בקוד תיקון שגיאות (ECC) אופציונלי עבור כל אחד מזיכרונות המטמון
זיכרון פקודות בצימוד הדוק (ITCM) אופציונלי, ברוחב 64 ביט וזיכרון TCM כפול לנתונים
Data TCM ({}) אופציונלי ברוחב 32 ביט, עם תמיכה במימוש קוד ECC על ידי הלקוח עבור כל אחד ממערכי זיכרונות TCM
ממשק אפיק להתקנים היקפיים AHB לזמן אחזור (latency) קצר אופציונלי מאפשר גישה דטרמיניסטית מהירה להתקנים היקפיים ביישומי זמן אמת
את הליבה ARM Cortex-M7 אפשר להגדיר בקונפיגורציה ברמה גבוהה, והיא מאפשרת למתכנני השבבים להעמיד את הליבה בקו אחד עם משימות היישומים הייחודיים. כך המהנדסים והמפתחים זוכים בגמישות, ומתקבל טווח של פתרונות שתואם את האתגרים המיוחדים שהוצגו לעיל עבור יישומי IoT.
אפשרויות לתצורות ליבת ARM Cortex-M7
המיקרו-ארכיטקטורה של הליבה Cortex-M7 שונה מזו של ליבות אחרות במשפחת ה- Cortex-M. בעזרת מימוש צינור נתונים במבנה סופר-סקלאר ב- 6 דרגות, המיקרו-ארכיטקטורה של Cortex-M7 מספקת שיפור משמעותי לביצועי המערכת, באמצעות ביצועי ארכיטקטורה משופרים (פחות מחזורים לכל פעולה) ועלייה בתדירות הפעולה. על מנת לתמוך בדרישות של רוחב פס גדול יותר עבור פקודות ונתונים, שאותן מעמיד תכנון במבנה סופר-סקלאר, מתוכננים ממשקי הזיכרון החשובים ברוחב 64bit. אפיק המערכת AXI וממשקי ITCM שפועלים במחזור יחיד, הם ברוחב 64bit והממשק D-TCN הכפול ברוחב 32bit יכול לטפל בשתי העברות נתונים של 32bit או בהעברת נתונים אחת של 64bit במחזור יחיד. טבלה 1 שבעמוד הבא מסכמת את האפיקים שבמיקרו-ארכיטקטורה של ליבת Cortex-M7, תוך כדי הדגשה של הממשקים החדשים בהשוואה לממשקים של ליבות קודמות ממשפחת Cortex-M.
ממשק AXI master הינו מאפיין מכריע לתמיכה ביכולת ההתרחבות של הזיכרון הנדרשת ליישומי IoT רבים. בשעה שמודלי שימוש חדשים נבנים מנתונים שנאספים ומנותחים ברציפות, היכולת להשתמש בזיכרונות חיצוניים כדי להוסיף פונקציונליות, היא תכונה חשובה. בנוסף לממשק AXI master, ממשקי TCM מספקים את הממשק האופטימלי הפועל במחזור יחיד לצורך ביצוע פעולות בזמן אמת, הנדרשות לבקרה. לזיכרון ולממשקי האפיק בעלי הביצועים הגבוהים יש חשיבות מכרעת לתמיכה ברמת הביצועים הגבוהה מ-5CoreMarks®/MHz של הליבה.
כאשר באים להחליט באילו אפיקים להשתמש במערכת על שבב (SoC) ובאיזו אופן הם ישמשו, יש כמה תחומים חשובים שאותם כדאי לקחת בחשבון, כולל:
לאילו מבין ההתקנים ההיקפיים יש צורך בחיבור אל אפיק ההתקנים ההיקפיים AHB שבליבת Cortex-M7, לקבלת גישה עם זמן אחזור קצר?
לאילו מבין ההתקנים ההיקפיים צריך לגשת באמצעות בקר DMA?
מהן הצורות הנדרשות של בקרת גישה והגנת זיכרון?
בתכנון פשוט ביותר, למשל, יכולה להיות מערכת זיכרון שמחוברת לממשק TCM, כאשר ההתקנים ההיקפיים מחוברים לממשק ההתקנים ההיקפיים AHB, כפי שמוצג באיור 4. תצורה זו מאפשרת ל-SoC לנצל את הביצועים הניתנים לשדרוג של ליבת ARM Cortex-M7 ועדיין לעמוד באתגרים הקשורים בעלות ובגודל. לדוגמה, מערך מסוים זה יכול היה לאפשר תכנון של צומת בקרת קצה (control edge node) שנדרשים לו ביצועי זמן אמת נתמכים על ידי זיכרון SRAM שמחובר לממשקי TCM.
אפשרות לתצורה אחרת היא ביצוע חיבור של הזיכרון המשובץ ו/או הזיכרון החיצוני אל ממשק AXI, ושימוש בזיכרונות מטמון כדי לאפשר ביצועים טובים יותר. רוב יישומי המיקרובקרים מכילים לולאות בקרה קטנות רבות, ועל כן יש בהן ביצוע פקודות קושחה (firmware) עם מספר נמוך ביותר של החטאות זיכרון מטמון. בתכנון מבוסס זיכרון מטמון, ייתכן שהמערכת תפעל באופן פחות דטרמיניסטי בעת ביצוע התוכניות מתוך מערכת אפיק AXI. עם זאת, אפשר להציב את טבלת וקטור החריגים ומטפלי הפסיקות בתוך זיכרון SRAM שמחובר לממשק ITCM, ולאפשר בכך צורות התנהגות דטרמיניסטיות בעת ביצוע מטפלי הפסיקות.
ליתרונות של יכולת הרחבת הזיכרון, הביצועים והיעילות של הממשק AXI ושל זיכרונות המטמון, יש תפקיד חשוב בעמידה בדרישות של היישומים. סוגי תצורה אלו מציעים מספר יתרונות שמותאמים ליישומי IoT כגון תמיכה בעדכוני קושחה אלחוטיים ובצורכי אחסון נתונים, אשר משתמשים בזיכרונות חיצוניים גדולים. עם זאת, לא בכל מקרי היישומים יש צורך בכל אפשרות, ולכן נדרש לשקול את האתגרים הקשורים בעלות גודל והספק.
מערכת הזיכרון מתוכננת באופן כזה, שתוכל להציע מגוון אפשרויות שונות של יכולת הגדרת הקונפיגורציה. קיימים תחומים וגורמים רבים שאותם יש לשקול, בהם נכללים:
ביצוע פקודות מתוך ממשק AXI או מתוך ממשק TCM
גודל זיכרון מטמון (אם משתמשים בממשק AXI)
השיטות המשמשות להאצת הגישה לזיכרון הבזק המשובץ והרוחב של זיכרון ההבזק
תמיכה אופציונלית בתיקון ECC
ההחלטות יכולות להיות מושפעות מגורמים רבים ושונים, כגון מהירות הגישה לקריאה, זיכרון ההבזק המשובץ, דרישות המהירות של אות השעון והגודל האופייני של היישומים המיועדים והתנהגויות התנהלות התוכנית בתוכם.
אם מהירות הגישה לזיכרון ההבזק המשובץ קרובה למהירות הנדרשת מהליבה, אפשר לחבר את זיכרון ההבזק המשובץ אל ממשק ITCM, עם כמה אפשרויות האצה של הגישה לזיכרון הבזק. במקרים אחרים, השימוש בממשק AXI עם זיכרונות מטמון יכול להיות מתאים יותר.
אם היישום צריך לבצע תוכניות מתוך בקר זיכרון חיצוני, בדרך כלל, בקר הזיכרון יצטרך להתחבר לממשק AXI ותהיה דרישה לתמיכה בזיכרון מטמון לפקודות ובזיכרון מטמון לנתונים. במקרים מסוימים, יכול להיות שיידרש ליישום שימוש בזיכרון החיצוני לצורך אחסון נתונים בלבד. במקרים אלו לא יהיה צורך בזיכרון מטמון לפקודות.
בחירת גודל זיכרון המטמון תלויה במידה רבה במאפיינים של קוד היישום. בעת הפעלה של קוד תוכנית מזיכרון הבזק משובץ, משתמשים בזיכרון המטמון לפקודות וגם בזיכרון המטמון לנתונים, מפני שתמונת התוכנית כוללת בדרך כלל נתונים מפורשים, טבלאות חיפוש או קבועים לקריאה בלבד, במקביל לפקודות.
בתכניות היישומים יש בדרך-כלל מילות פקודה רבות יותר מאשר נתונים או קבועים. ככל שהתוכנית גדלה, הדרישה לזיכרון מטמון גדלה אף היא, ואין זה בלתי רגיל למצוא זיכרון מטמון לפקודות שהוא גדול יותר מזיכרון המטמון לנתונים.
בניגוד לכך, ייתכן שבכמה יישומים נמצא לולאות בקרה קטנות או לולאות עיבוד DSP קטנות, וייתכן שתהיה להם כמות גדולה של נתונים עבור מקדמי חישובים. במקרים אלו, הביצועים של המערכת יכולים לזכות ביתרון אם יהיה להם זיכרון מטמון גדול יותר לנתונים מאשר אם יהיה להם זיכרון מטמון גדול לפקודות.
כמובן, בעת ביצוע אופטימיזציה לביצועים, רצוי להגדיל את זיכרון המטמון למקסימום, על מנת להבטיח את זמן האחזור הקצר ביותר עבור ערכי גודל גדולים יותר של קוד ונתונים. ואולם, בהפעלת זיכרון מטמון גדול במהירות זהה לזו של הליבה, החיפוש בזיכרון המטמון יכול לצרוך כמויות משמעותיות של הספק, בתלות בגורמים נוספים. בנוסף, ברוב היישומים, העקומות של יחס ההחטאות בזיכרון מטמון מתקרבות לאפס ככל שהגודל גדל, והמשמעות היא שעלייה נוספת בגודל זיכרון המטמון לא תשפר את הביצועים. למרבה המזל, יכולת הגדרת הקונפיגורציה של ליבת ARM Cortex-M7 מאפשרת למתכנני SoC לשלב טווח של גודלי זיכרון מטמון, החל במצב שבו לא משתמשים כלל בזיכרון מטמון ועד 64KB של זיכרון מטמון לפקודות ו-64KB של זיכרון מטמון לנתונים. עם גמישות כזו, המתכננים יכולים לכוון את ה-SoC באופן כזה שהיא תוכל לעמוד בדרישות של היישום המיועד.
מלבד אפשרויות הארכיטקטורה, בליבת Cortex-M7 קיימות תכונות נוספות רבות שאפשר להגדירן בתצורת הליבה. למשל, את התכונה של יחידת הנקודה הצפה (FPU) ב-SoC אפשר להגדיר בתצורה, כך שלא תהיה כלל יחידת FPU, שתהיה יחידת FPU עם פעולות בנקודה צפה בדיוק יחיד (single-precision) לפי IEEE®-754 או שתהיה יחידת FPU עם פעולות בנקודה צפה בדיוק יחיד וגם בדיוק כפול (double-precision), לפי IEEE®-754.
תכונות נוספות שניתן להגדיר בתצורה כוללות:
מספר הפסיקות ומספר דרגות העדיפות בבקר NVIC
הגדרת תצורה של יחידת הגנת הזיכרון (MPU)
תכונות של ניפוי שגיאות ועקיבה
תכונות שקשורות לבטיחות פונקציונלית
(ECC, בליבה כפולה)
האצת החומרה עבור פעולות בנקודה צפה מציעה כמה יתרונות. ברור שהביצועים של פעולות הנקודה הצפה מואצים אם קיימת יחידת נקודה צפה בחומרה. בנוסף, המקום בזיכרון משתפר מאחר שהתמיכה בחומרה מקטינה את מספר ספריות התוכנה המשמשות לביצוע פעולות של נקודה צפה, ואת הגודל הקשור אליהן. ההקטנה של הזמן הנדרש לעיבוד ועקבת התכנית בזיכרון, בסופו של דבר, משפרות את נצילות האנרגיה של היישום, מקלה את הדרך לביצוע פונקציות, אשר באופן מסורתי זקוקות למערכות משובצות מורכבות יותר. היתרון יכול להיות משמעותי מבחינת נצילות האנרגיה, מפני שפעולות בנקודה צפה עבור מסנני DSP יכולות להיות מהירות פי 20. העובדה שיש אפשרויות של יכולת נקודה צפה בדיוק יחיד ובדיוק כפול משפרת עוד את יכולת השדרוג של הליבה החדשה.
ככל שהטכנולוגיה ממשיכה להתרחב על ידי מגמות IoT, מתעורר צורך גובר והולך לעמוד באתגר של אבטחה ושלמות של יישומים משובצים. בנוסף על תכונות חריגה כתוצאה מתקלה (fault exception) ויחידת ההגנה על הזיכרון (MPU), כפי שקיים בליבות Cortex-M אחרות, הליבה Cortex-M7 כוללת גם תמיכה אופציונלית בקוד תיקון שגיאות (ECC – Error Correction Code) עבור זיכרונות TCM וזיכרונות מטמון. תמיכה זו מאפשרת תיקון אוטומטי תוך כדי פעולה של שגיאות ביט יחיד בזיכרון ואיתור שגיאות ביט כפול.
Kinetis KV5x – משפחת מיקרובקרים מבית Freescale המבוססת ARM Cortex-M7
אחת הדוגמאות לאפשרויות המימוש של ליבת Cortex-M7 היא משפחת המיקרובקרים Kinetis KV5x שהוכרזה לאחרונה. משפחת המיקרובקרים Kinetis KV5x היא תת-המשפחה האחרונה שהצטרפה לסדרת V של Kinetis, סדרת מיקרובקרים המוכוונים ליישומים של בקרת מנועים והמרת הספקים ספרתית. המיקרובקרים בסדרה Kinetis V כוללים ליבות Cortex-M עם ההתקנים ההיקפיים והיכולת הנדרשים כדי לספק דרך לכל מתכנני המערכות המשובצות, על מנת להפיק פתרונות בקרה במהירות. בסדרה Kinetis V נכללות מערכות על שבב (SoC) שמשתמשות בליבות
Cortex-M0+, Cortex-M4 ועתה גם בליבה Cortex-M7. תוספת זו לסדרה Kinetis V מתוכננת לעמוד באתגר של תמיכה הן בבקרת זמן אמת וגם בקישוריות Ethernet בעזרת SoC יחיד. התכונות העיקריות של התקן זה הן Ethernet MAC תומך ב-IEEE-1588, ארבעה ממירים אנלוגי לספרתי של 5 מגה-דגימות בשנייה, בלוקי בקרת PWM מרובים עם רזולוציה של פיקו-שניות והאצה בחומרה עבור פעולות הצפנה.
כמה מבין אפשרויות הגדרת התצורה שנבחרו עבור ליבת ARM Cortex-M7 SoC זה כוללות את האינטגרציה של 16KB של זיכרון מטמון לפקודות ו-8KB של זיכרון מטמון לנתונים. SoC זה משתמש באפיק AXI של 64bit כבשער גישה לזיכרון הבזק משובץ. זיכרון מטמון לפקודות וזיכרון מטמון לנתונים מבטיחים שתוכנת הבקרה שנמצאת בזיכרון המשובץ תהיה מואצת לתמיכה ברמות הביצועים הנדרשות למקרה השימוש של הבקרה התעשייתית המחוברת. בנוסף לזיכרונות המטמון, משפחת המיקרובקרים Kinetis KV5x משלבת 64KB של זיכרון SRAM המחוברים לממשק ITCM ו-128KB של זיכרון SRAM המחוברים לממשק DTCM. כל אלו מספקים את זיכרון האחסון המקומי במעבד הנדרש על מנת לתמוך בפעולות בקרה בזמן אמת עם הזיכרון בעל זמן האחזור הקצר ביותר.
התצורה של המיקרובקרים Kinetis KV5x היא רק אחת הדוגמאות לדרך שבה SoC יכול להיבנות כדי להתאים ליישום מסוים שמתמקד בבקרה מחוברת. ככל שהזמן עובר ומספר היישומים המחוברים גדל ועמו גם המגוון שלהם, אין ספק שיעשו התאמות לתכנונים של SoCs, שישתמשו בטווח רחב יותר של תצורות של ליבת cortex-M7. הגידול לרמות ביצועים שיהיו יותר מפי שניים מרמות הביצועים שמציעים פתרונות Cortex-M4 המקבילים יוביל בוודאות לחידושים משובצים. עם יכולת השדרוג, הביצועים ותכונות ההתרחבות שלה, לליבה ARM Cortex-M7 הניתנת להתאמה, יהיה תפקיד משמעותי בתמיכה באינטרנט של המחר.