Table of Contents

מדוע ביצועים בזמן אמת חשובים ב- Modern Robotics

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

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

מה הם הרישום ומדוע הם חשובים?

המרשם הוא מוקדי האחסון המהירים ביותר במעבד מחשב.הם בנויים ישירות אל הליבה של CPU ופועלים באותה מהירות השעון כמו המעבד עצמו.בניגוד לזיכרון הראשי (RAM), אשר עשוי לקחת עשרות או מאות מחזורי שעון לגישה, רישומים מספקים נתונים במחזור יחיד.

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

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

תפקיד המרשם בזכרון היראארכי

כדי להעריך באופן מלא את ההשפעה של רישומים על ביצועים בזמן אמת, זה עוזר להבין היכן הם מתאימים בהיררכיה הזיכרון.ההיררכיה, מהמהירות להאט ביותר, היא:

  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ⁇ :0)ache (L1, L2, L3):FLT 1 על שבב או קרוב מאוד, כמה מחזורים של עצלות גישה, יכולת גדולה יותר (מתאים למגבתים).
  • (ב) [הזיכרון]: [הזיכרון] [הזיכרון]: [ה] [ה] [ה]] [ב]] [ה]], [ה] [ב]]]], [ה[[1924]],]
  • (FLT:0 Secondary Storage (פלאש, SSD, HDDig): FLT:1 Off-chip, מיליוני מחזורי עצלות, יכולת מסיבית (terabytes).

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

קביעת ההשפעה של רשומות

ההבדל בין גישה לזיכרון של רישום הוא מזעזע.עבור מיקרובקר טיפוסי רץ ב 100 MHz:

  • גישה לרישום: מחזור שעון אחד (10 ננו שניות).
  • גישה ל-L1 cache: 2 עד ארבעה מחזורי שעון (20-40 ננו שניות).
  • גישה לזיכרון: 20-50 מחזורי שעון (200-500 ננו השניות).

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

סוגים של רשומות בשימוש ב- Robotics

כללי-Purpose Registers

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

רישום מיוחד

רוב המעבדים כוללים רישומים עם פונקציות ייעודיות רלוונטיות ישירות לשליטה רובוטית בזמן אמת:

  • (FLT:0)Program Counter (PC): "FLT:1" מחזיק את הכתובת של ההוראות הבאות. במערכות בזמן אמת, להפריע מטפלים לשנות את המחשב להגיב לאירועים קריטיים בזמן אמת.
  • (SP): נקודות מספר 1 (FLT:0) לחלק העליון של ערימה השיחה. מערכות בזמן אמת צריכות לנהל את הערימה בזהירות כדי להימנע מזרימה במהלך הפרעות מקונן.
  • (FLT:0)Status Register (SR): FLT:1 מכיל דגלי מצב (אפס, לשאת, overflow, להפריע, מאפשר). קוד בקרה בזמן אמת בודק לעתים קרובות את הדגלים האלה כדי לקבל החלטות מפוצלות שניות.
  • (FLT:0)Link Register (LR): FLT:1 באדריכלות ARM, מחזיק בכתובת החזרה לשיחות פונקציה.טיפול מהיר להפריע תלוי בשימוש יעיל של LR.

רשומות לזיכרון עבור פריפראל

רובוטיים משובצים, חומרים היקפיים רבים (זמן, ADCs, PWM גנרטורים, קודקודים) נשלטים באמצעות רישומים ממופת זיכרון.אלה כתובות מיוחדות ש, כאשר הם קוראים או נכתבו, מתקשרים ישירות עם חומרה. Accessing אלה הוא מהיר כמו גישה זיכרון, אך לעתים קרובות מהר יותר מאשר לעבור ערימה של נהג.

אסטרטגיות לרישום יעיל של שליטה רובוטית בזמן אמת

זיהוי ועדיפות של נתונים עתיריים

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

  • חיישנים קוראים מקודמים, IMUs, חיישנים כוח ומצלמות.
  • נקודות ומסילות התייחסות עבור הבקר.
  • תנאי שגיאות ואקומולטורים בלתי-אינטגראליים בלולאות PID.
  • משתנים המדינה במסננים קאלמן או אלגוריתמים אחרים.
  • נקודות buffer תקשורת עבור פרוטוקולים בזמן אמת כמו EtherCAT או CAN FD.

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

פונקציות באינטרנט ולהפחית את הפונקציה Call Overhead

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

השתמש אופטימיזציה Compiler באופן חכם

העולים המודרניים קיבלו אישור רישום מתוחכם.דגלים כמו FLT:0 ו-FLT:1 מאפשרים אופטימיזציה אגרסיבית, אך הם יכולים גם להציג התנהגות לא-קבועת אם המארגן מסדר מחדש הוראות בדרכים המפרות את מגבלות התזמון.עבור קוד בזמן אמת קשה, לשקול שימוש ב-FLT:2 (התמתאים לגודל) עם הקצאה ידנית זהירה באמצעות מילת המפתח של LTF:3 (אשר הוא סימן לכך הוא לא ערובה) או לא מאובטח לנתיבים חמים יותר).

המונחים: Interrupt Handlers

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

רישום ידני עם האסיפה Inline

כאשר הקצאת רישום מגובשת אינה מספיקה עבור ערבויות בזמן אמת, הרכבה ידנית מעניקה למהנדסים שליטה מלאה.לדוגמה, על ARM Cortex-M4 ביצוע חישוב PID 32 סיביות, ניתן לקשור את מונח השגיאה ל- R0, המונח האינטגראלי ל-R1, ואת המונח הנגזר ל-R2, ולבצע את החישוב כולו ללא כל עומס זיכרון או חנות.טכניקה זו נפוצה ב-Tertter-S.

מחקר מעשי: אופטימיזציה לרישום רובוט Quadruped

שקול רובוט מכובש ביצוע זעזועים דינמיים ב 3 מ"מ / של כל רגל יש שלושה מפרקים, ואת מערכת הבקרה חייב ליישר kinematics הפוכה, מומנטים משותפים, וכוחות תגובה קרקעיים ב 500 . .ה תהליכי הלולאה הבקרה 12 מפרקים, כל אחד הדורש עדכון PID, גבול מומנט, ופקד נוכחי.

בגרסה הלא-אופטימה, כל המשתנים מאוחסנים ב- RAM.הלאה הבקרה לוקחת 520 מיקרו-שניות, משאירה רק 480 מיקרו-שניות לקריאת חיישן ותקשורת במחזור 1 kHz.זה לא משאיר שולי לשגיאה, וכל מטמון מפספס או מפריע גורם לולאה לרסן.

לאחר אופטימיזציה לרישום:

  • כל התקני PID ומשתנה המדינה עבור כל מפרק ממופים למערך ייעודי של רישומים, מעודכנים בכל מחזור.
  • פעולות מתמטיות קריטיות (Sine/cosine for kinematics) משתמשות באפליקציית חיזוי מהירה שפועלת לחלוטין ברישום.
  • הרכבה Inline משמשת ללחיצתה הפנימית של פעולות המטריקס.
  • הפונקציה העיקרית של הבקרה היא inlined, ביטול שיחת הפונקציה overhead.

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

מלכודות נפוצות ברישום מערכות בזמן אמת

Over-Reliance on Compiler Optimization

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

Starvation in Complex Loops

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

התעלמות מאפקטים של קוצר רוח

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

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

כלים וטכניקות לניתוח רישום

ניתוח Output Analysis

רוב המשווקים יכולים להפיק רשומות איסוף עם הקצאת רישום אנטנות.עבור GCC, להשתמש ב-FLT:4 כדי לראות אילו משתנים מוקצה למי נרשם.זוהי הדרך הישירה ביותר לאמת כי משתנים קריטיים נשארים ברישום לאורך כל לולאת הבקרה.

סימולטורים מעגליים

כלים כמו QEMU או סימולטורים ספציפיים של ספקים (למשל, ARM Fast Models) יכולים לספור מחזורים לחשוף אירועים לשפוך הרשמה. להפעיל את הלולאה הבקרה בסימולטור עם רישום profiling ניתן לזהות בדיוק מתי ומדוע רישומים נשכים לזיכרון.

ה-Hardware Performance Counters

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

מגמות עתידיות: קבצים רשומים ו-Time Robotics

קבצים גדולים יותר

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

Windows for Fast Context Switching

כמה ארכיטקטורות, כמו SPARC ו- RISC-V עם הרחבה 'Zcmp', תמיכה חלונות לרשום. אלה מאפשרים שיחות מרובות פונקציה להשתמש ברשומות טריות ללא תשלום מפורש / חנות, צמצום פני השטח בקוד בזמן אמתי עמוק.זה שימושי במיוחד עבור צינורות היתוך כי קורא פונקציות קטנות רבות ברצף.

AI-Assisted Register Allocation

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

אופטימיזציה של רישום לתוך זרימת העבודה לפיתוח

אופטימיזציה לרישום לא צריכה להיות מחשבה על עיצוב מערכת רובוטית.זה צריך להשתלב בזרימת העבודה של פיתוח מההתחלה:

  1. (ב) [15] , [13] לפני כתיבת קוד מותאם אישית, למדוד את תזמון הלולאה הבסיסית וזיהוי צווארי זיכרון.
  2. (ב) ,0) ,העברת נתיבים חמים: ⁇ 1 (ד') אשר נתיבי קוד מבצעים כל מחזור בקרה ואשר נתונים נגישים לכל גלגול.
  3. (FLT:0) כלול לרשום באופן ידני:FLT:1 עבור הנתיבים החמים ביותר, להשתמש באסיפה קוית או רישום ספציפי של מפרש המחייבת להבטיח גישה מהירה.
  4. (FLT:0)Verify קביעת הדטרמיניזם: FLT:1hil השתמש בדלפק מחזורי ובניתוח הגרוע ביותר של ביצוע (WCET) כדי לאשר כי קוד הרשום עומד בערבויות בזמן אמת בכל התנאים.
  5. (ב) שימוש ברישום:0) ברישום: FLT:1, שמור תיעוד ברור של אילו רישומים שמורים עבור אילו מטרות, במיוחד אם הקוד יישמר על ידי מהנדסים מרובים.

מסקנה

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

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

לקריאה נוספת בנושא זה, לשקול לחקור משאבים על עיצוב מערכות משובצות עבור רובוטים, כגון:0 (FLT:0) מדריך קשור לרישום הקצאה במערכות בזמן אמת למערכות משובצות 1, הסיומת FLT:2ARM אדריכלות תיעוד לשימוש ב-Cortex-M מעבדים של Cortex-MLT 3, ואת מערכות הרובוטיות של FLTD-V ספציפיות להתאמה אישית להתאמה אישית ל-F5 לתובנות טכנולוגיות רלוונטיות: