Yaron Doweck Yael Einziger Supervisor: Mike Sumszyk 1
* הצגת הבעיה * פלטפורמה * CorePac overview * KeyStone overview * Evaluation Board * Code Composer Studio * שלבי העבודה * לוח זמנים 2
* הפרויקט עוסק במימוש אלגוריתם בזמן אמת על מעבד עיבוד אותות מסוג TI C6678. * מימוש מקבילי על מספר ליבות. * ניצול יכולת העברת מידע באופן יעיל ע " י רכיב DMA. * שימוש באפשרויות הזיכרון הרבות – SRAM L1 and L2, CACHE configuration, Shared L2, DDR3 MEMORY 3
* חומרה : TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor כרטיס ה DSP המתקדם ביותר של חברת TI. * תוכנה : Code Composer Studio v5 with BIOS MCSDK 2.0 סביבת פיתוח של TI הכוללת סימולטור של כל רכיבי הכרטיס. 4
* 8 C66x CorePac DSP’s * Based on TI’s Keystone Multicore Architecture * 320 GMAC/ GHz * 32KB L1P, 32KB L1D, 512KB L2 Per Core * 4MB Shared L2 * 64-Bit DDR3 Interface (DDR3-1600) 5
6 * Fixed-Point and Floating point DSP. * L1 Program Memory, configurable as Cache\SRAM. * L1 Data Memory, configurable as Cache\SRAM. * L2 Memory, configurable as Cache\SRAM. * Internal DMA (Data transfer within the CorePac). * External Memory Controller, a bridge from the CorePac to the rest of the device. * Interrupt Controller (redirection due to interrupts or exceptions).
7 The KeyStone includes: * Up to 8 cores. * MultiCore Shared Memory (L2 SRAM). * External Memory (DDR 3) interface. * Virtual Address space for each core. * High Speed inter-core communication. C66x device family is based on the KeyStone MultiCore Architechture
8 הפרויקט יתבצע על כרטיס TMDXEVM6678L, הצפוי להגיע ביוני. הכרטיס מכיל : * TI C6678 Processor * 512MB DDR3 Memory * 128MB FLASH Memory * Ethernet port * LEDs and DIP switches * Onboard JTAG emulation with USB interface
C66xC67xC64xCore Fixed and Floating-PointFloating-PointFixed-PointData type GHz MHz MHzSpeed GMAC/core GFLOPS/core 32KB L1P+32KB L1D32KB L1 Cache 512KB + 4MB shared-1MBL2 Cache (8 cores) (1 core) (1 core) Board Power 9
סביבת פיתוח למערכות Embedded של TI. התוכנה מכילה קומפיילר של רכיבי TI ומספר כלי עזר נוספים : * Debugger. * סימולטור של הכרטיס. * Profiler המאפשר ניתוח מפורט של זמני הריצה. בנוסף, לסביבת העבודה של CCS יש להוסיף את חבילת הפיתוח המורחבת BIOS MCSDK 2.0 המאפשרת פיתוח תוכנה במעבדים מרובי ליבות של TI. 10
BIOS MultiCore Software Development Kit מכילה את אבני הבניין הבסיסיות לפיתוח תוכנה על מעבדים מרובי ליבות של TI: * SYS\BIOS – מערכת הפעלה פשוטה לכרטיס. * Chip-Support Library – ספריה המאפשרת ממשק לרכיבי המעבד השונים (Cache,DMA, etc.) * DSPLIB – ספריה המכילה פונקציות רבות הקשורות לעיבוד אותות. * IMGLIB – ספריה המכילה פונקציות רבות לעיבוד תמונה. * מספר דוגמאות קוד בסיסיות. 11
סביבת הפיתוח כוללת סימולטור מתקדם המאפשר לדמות את הרכיבים הבאים : * 8 ליבות המעבד. * מנגנון Cache. * מנגנון ניהול זכרון משותף. * זכרון DDR3. * Inter-processor communication. * Enhanced-DMA. * ועוד. 12
1. לימוד סביבת העבודה (CCS) * הגדרת הכרטיס. * שימוש בסימולטור. 2. לימוד יכולות הכרטיס ותצורות העבודה השונות * מימוש תוכנית פשוטה שתעבוד בצורה מקבילית. * ניהול L1,L2 באופן עצמאי כזכרון SRAM ללא מנגנון Cache. * שימוש במנגנון DMA ופסיקות על מנת לחסוך זמן CPU. 13
3. מימוש אלגוריתם בעיבוד תמונה תוך ניצול כל יכולות הכרטיס * חלוקת התכנית ליחידות ביצוע בלתי תלויות על מנת לאפשר מקביליות מירבית. * ניהול הזכרון באופן אופטימלי תוך שימוש בתעבורת DMA. 4. הערכת ביצועים * עמידה בדרישות זמן אמת. * בדיקת שיפור זמני הריצה ללא שימוש במנגנון ניהול הזכרון של הכרטיס. * בדיקת שיפור זמני הריצה ע " י שימוש ב DMA. 14
1. לימוד סביבת העבודה (CCS) 2. לימוד יכולות הכרטיס ותצורות העבודה השונות 3. מימוש אלגוריתם בעיבוד תמונה תוך ניצול כל יכולות הכרטיס 4. הערכת ביצועים 15
First part: Learning the fundamentals 1. Code composer studio basics, profiling and performance analysis capabilities (1 week) 2. Memory configuration and allocation, DMAs, Interrupts (3 weeks) 3. Fixed and Floating point Libraries (DSPlib,VLib,...) (1 week) 4. Multicore configurations (DSP/BIOS operating system, parallel and pipeline processing) (2 weeks) 16
Second part: Implementation of an algorithm in image processing using DMAs/Libs/multicore 1. Implementation of a bidirectional data flow between DDRIII and L1, possibly through L2. (3 weeks) 2. Performance analysis (throughput, latency and accuracy) when using floating point versus fixed point libraries. (2 weeks) 3. Usage of hardware semaphores for parallel data access and Multicore Navigator for enabling messages communication between different cores. (4 weeks) 17