מעבדי אותות דיגיטליים (DSPs) הם מיקרומעבדים מיוחדים האדריכלים עבור חישובים נומרניים במהירות גבוהה, במיוחד אודיו בזמן אמת, תקשורת, מכ"ם ומערכות עיבוד תמונות שלהם, צוותי ביצוע מקבילים, ורטיארכיטים זיכרון דורשים גישה שונה ל debugging ו profiling בהשוואה ל- CPUs למטרות כלליות.Achiiv אופטימלי ביצועים על DSP דורש רק קודים מאובטחים, אך ורק פרופילים יעילים של פרופילים.

הבנת אדריכלות DSP עבור דיון יעיל

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

זיכרון Hierarchy ו- Access Patterns

DSPs בדרך כלל יש זיכרון קטן, מהיר על שבב (לעתים קרובות SRAM או cache) וזיכרון גדול יותר מחוץ לעומס. Access לאזורים זיכרון שונים יכול להיות בעל נטייה שונה באופן דרסטי (לדוגמה, DSP עשוי להיות מרווחי זיכרון נפרדים עבור תוכנית ונתונים, ובזיכרון, ייתכן גם שיש מספר בנקים (למשל, X וזיכרון Y) שניתן לגשת בו זמנית עבור דו-חמצני וסכסוכים מתאימים לזיכרון (MAD) או להורדת גישה ישירה של אבטחה ישירה של אבטחה ישירה של תאים קריטיים.

פישוט ומקבילות

צינורות DSP יכולים להיות עמוקים (עד 10+ שלבים) ולעתים קרובות כוללים מספר רב של חריצים עבור מקבילה ברמת ההוראה.ב מודרני VLIW (הרבה זמן הוראה Word) DSPs, המדור אורז פעולות מרובות (למשל, MAC, עומס, וחנות) לתוך הדרכה ארוכה אחת. כי השלבים אינם גלויים למתכנתים, באגים דקים בתוכנות לא מרתיעות או למנוע אפקטים ברורים של צינורות.

אסטרטגיות לקוד DSP

השתמש בחומרים Debuggers ו Emulators

(הופנה מהדף DSP) הוא עם ניתוח חומרה המתחבר ל-S השבבים באמצעות JTAG או ממשק דומה.כלי כמו FLT:0TI Code Composer StudioFLT 1 עם כתובת XDS, אשר מבוצעת על ידי מעבד XDS:2Analog התקנים CrossCore Embedded StudioFLT 3, או FLTs (מספקים) של מערכת הפעלה אחת של זיכרון (DV)

2.Leverage On-Chip Debugging

DSPs מודרניים משלבים חומרה ייעודית של debug כגון:

  • (FLT:0) ניגודי רפורמות (Performance AgainstsFLT:1) - מספרי ספירה, מפספסי זיכרון, מטמון נתונים מפספסים, דוכני צינורות, וטענות מענף.קראת הדלפקים האלה בנקודות אסטרטגיות בקוד יכול לכמת צווארי בקבוק.
  • (FLT:0)Trace buffirerFLT:1 - מספר מוגדר של כתובות הוראה או נתונים אחרונים כותב.
  • (FLT:0) רישומים דיאגנוסטיים (Diagnostic Registers) 1 (ראה מצב של פיסקים פנימיים, ערוצי בקר DMA ויחידות הגנה על זיכרון (MPU) שחיתות בשל פיזור יתר של זרימה או שגיאות תצורה MPU ניתן לתפוס מוקדם על ידי סקר של רישומים אלה.
  • (FLT:0)Watchdog ו- Event גלאיsFLT:1, תוכנית DSP כדי ליצור הפרעה באירועים ספציפיים (למשל, כתובת נתונים, ערימה מעל פני השטח) ולאחר מכן להשתמש במגרש כדי לבדוק את ההקשר ברגע של ההפרעה.

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

3.התמדה של תוכנה ושילוב

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

4.המלכודות הנפוצות ל-Deug

  • (FLT:0 Data יישור:0) ,DSPs רבים דורשים נתונים להיות תואמים על גבולות 2- או 4byte עבור עומסים / חנויות יעילים. גישה משוחדת יכול לגרום חריגים או עונשי ביצועים חמורים.
  • (FLT:0)Circular buffer עקיף את ההרחבה 1 (DSPs) תומך בחומרה מעגלית לטיפול במסננים FIR ו- FFTs. Incorrect ההתקנה של כתובת ה-buffer או אורך יכול להוביל לקרוא נתוני אשפה.
  • (FLT:0 וריאציות של נדיבות (interrupt latency Varis) 1 (אם שגרתית שירות מפריעה (ISR) אינה כתובה בקפידה (למשל, הפרעה מפריעה במשך זמן רב מדי), המערכת עשויה להחמיץ מועדים בזמן אמת.
  • (ב) [ה]ב]: [ה], [ה], [ה], [ה],] כאשר ה-[[הקוד] ה-[[המאה ה-20]], ה[[המאה ה-20]], ה[[המאה ה-20]],]], [[המאה ה-20]],]], [[המאה ה-20]]]],]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]

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

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

1.מחזור-תיקון פרופ'לינג עם הדלפקים

(ה) רוב ספק (FLT:0) ,מעגל נגד ההרחבה של כל מחזור שעון מעבד.על ידי קריאת הדלפק הזה בנקודות אסטרטגיות והבדלים מחשוב, ניתן להשיג ספירות מחזוריות עבור אזורי קוד - מדד מדויק הרבה יותר מאשר טיים מבוססי הסתברות, למשל, על ידי בניית מחסנים של C6000 DSP, את פרטי ה-FLT2 (FLT2 (FCLRE) לקריאה: 3.

2.מערכת הזיכרון

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

  • (FLT:0)Cache מתגעגעים ל- 1:1 - גם L1 וגם L2 cache מתגעגע לשיעור.שיעור פספס גבוה מצביע על איכות נתונים ירודה.אסטרטגיות כמו חסימת מטמון, חסימה נתונים, והתאמה של תצורה של cache (אם מותר) יכול לשפר את הביצועים.
  • (FLT:0)DRAM התנגשויות בנק ייצוב: ב-DSPs עם בנקים מרובים SDRAM, גישה רציפה לאותו בנק גורמת לעיכובים הפעלה שורות.
  • (FLT:0) העברת חופפים FLT:1 - ניצול האוטובוס של מנוע DMA יכול לחשוף אם המעבד הוא דוכן מחכה להעברת נתונים להשלים.כלי כמו TI'sFLT:2DMA Performance AnalyzeruaFLT 3) ויזואליזציה בקשות העברה ואירועי השלמה.

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

3.Pipeline Stall Analysis

DSP מפיץ לעתים קרובות לספק דוח משוב המציג ניצול צינורות, סכסוכים משאבים, וסטטוס צינורות תוכנה.לדוגמה, סטודיו הקוד Composer של TI יכול ליצור FLT:0software צינורות kernel ViewFLT:1 כי תצוגות צינורות הם תפוסים על ידי אילו הוראות. a מלא תוכנה-פלאין צריך להיות "מבולים" (idle) למעט מחזורי ההסתברות) למנוע בדיקות מקבילות:

  • (ב) כאשר הפחתת ה[[המאה ה-1]], כאשר ה[[המאה ה-20]], ה[[1924]], [[1924]], [[1924]],]]
  • (ב) [ה]:0] לחץ רגולטורי (Register StressveFLT:1] – רישום בלתי אפשרי לשפוך כוח / קוד נאמנות לזיכרון, שובר המשכיות צינור.
  • (ב) [ה]החוקה של מקור: [ה]: 2 הוראות מנסה להשתמש באותה יחידת הוצאה להורג (למשל, שניהם זקוקים ליחידת ה- MAC באותה מחזור).

4.כוח פרופ'

(ב) ליישומים DSP בעלי עוצמה נמוכה (למשל, לבישים, IoT, מכשירי שמיעה), אופטימיזציה של ביצועים חייבים גם לשקול צריכת אנרגיה.רבים DSPs יש FLT:0 כלי estimationtureFLT:1 אשר משתמשים בסימולציה או על שבב חיישנים הנוכחיים כדי להעריך את כוח ה-DSPIFmarking לאורך מחזור מסייע לזהות את רוב שגרה אנרגיה-Fware מציעה לעתים קרובות חסכון:

טכניקות אופטימיזציה מתוגמות על ידי פרופ'ילינג

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

1. Loop Unrolling ותוכנות פירעון

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

2.מידע על פעילות וחבילה

(ה) וודא כי מערךים ו buffers מתאימים לגבולות זיכרון טבעי (למשל, היערכות 8-byte עבור עומסי 64 סיביות) שימוש בהוראות של מאגד כגון FLT:1 (TI) או FLT:2 (GCC) בנוסף, לארוז מספר אלמנטים נתונים לתוך רישום יחיד באמצעות SIMD Intrinsicsics.

שימוש ב-Intrinsics מיוחדים ו-Build-in Functions

Intrinsicssssss מאפשר גישה ישירה לתכונות החומרה DSP ללא כתיבת אסיפה מקוונת.

  • (ב) ,0) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ויקרא י"ד: "בְּבְהַבְתֶּם" (בראשית כ"ד, ט"ז)
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

אינטרינואידים אלה אינם רק מהירים יותר מקוד C שווה ערך, אלא גם נותנים את המידע לתזמון טוב יותר.

ניהול זיכרון ו DMA

להעביר לעתים קרובות נתונים לזיכרון שבב (למשל, RAM תוכנית או cache) כדי להפחית את הסבלנות גישה. השתמש DMA כדי להדוף נתונים לתוך cache או ישירות לתוך רישומים לפני ה- CPU צריך את זה. Double-buing (ping-pong buffers) עם DMA מאפשר מעבד לעבוד על אחד חיץ, בעוד DMA ממלא את ה-DMAs הבא, מסתתר זיכרון זה צריך לעבור זמן קצר יותר מאשר עיבוד עבור מעבד.

המלצות כלי ואינטגרציה

הבחירה של כלי פיזור ופרופיל היא ספציפית למוכר, אבל להלן הם בשימוש נרחב בתעשייה:

  • (FLT:0)Texas InstrumentsFLT:1 - Code Composer Studio with XDS, System Analyzer (profiling), UIA (מערכת Analyzer עבור עקבות בזמן אמת).
  • (FLT:0) אנרכא מכשירים חשמליים 1:1 - CrossCore Embedded Studio, ICE-1000/2000 אדמדנים, Real-Time Data Exchange (RTDX) עבור נתוני הזרמת מידע.
  • (FLT:0 NXPigmLT:1) - MCUXpresso IDE, SEGGER J-Link Researchs ו-Competation.
  • (FLT:0)ARM DSPIRFLT:1 - ARM Development Studio with DS-5/Streamline, ו- Open-source Tool כמו Perf ו- gprof (עבור יישומי DSP מבוססי לינוקס).

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

שיטות טובות לקוד דסקיר ו-DSP

  • (ב) [13] ל"הבנה ארכיטקטונית ברורה של הבנה ברורה של אדריכלות: מיפוי אזורי זיכרון, פריפריה והפרעה סדרי עדיפויות לפני כתיבת קוד.
  • (FLT:0) נקודות של חומרה מוקדמותFLT:1; הם תופסים שגיאות לוגיות ללא שינוי קוד.רק להשתמש ב-תוכנות breakpoints (אשר הוראות חתומות יתר) כאשר נקודות חומרה אינן מספיקות.
  • (ב) ,0) לפני ⁇ FLT:1 - להימנע אופטימיזציה מוקדמת של מחזורי כדי להקים קו בסיס, ולאחר מכן ליישם שינוי אחד בזמן ולהעריך את ההשפעה.
  • (FLT:0) דוחי ה-Enalyze, מפיץ 1 (FLT:1) - רוב ה-DSP מפיץ מידע מפורט על הלולאה, רישום ההקצאה והשימוש בזיכרון.
  • (FLT:0) בדרגות אופטימיזציה שונות (FLT:1), באג שמופיע רק ברמת אופטימיזציה O2 (או גבוה יותר) הוא לעתים קרובות בשל משתנה תנודתי להיות מותאם או מצב גזע הנחשף על ידי תיקון מחדש.
  • (FLT:0) סימולציה / סימולציה על המארח לבדיקה אלגוריתמית 1:1 - ספקים רבים מספקים סימולטורים תיקון הוראה כי פועל על מחשב. בעוד סימולציה היא איטי יותר מאשר חומרה, זה מאפשר חשיפה מלאה למצב צינורות וגישה זיכרון ללא השפעה על מערכת בזמן אמת.
  • (ב) [ה]הדגשה: [ה] כל כלי ההקדשה [ה] [ה]] [ה]], [ה], [ה], [ה], [ה]]], [ה], [ה], [ה], [ה],], [ה],], [ה'], [ה']],], [ה'], [ה']']']']']']']''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

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