作者:James Li---Multi-core DSP / FAE,TI公司 摘要 OpenEM 的全稱是 Open Event Machine。是 TI 針對嵌入式應用開發的 multicore runtime system library。OpenEM 可以在多核上有效的調度,分發任務。它把任務調度給負載輕的核,進而實現動態的負載平衡。OpenEM 是基于 TI Keystone 系列芯片的 multicore Navigator 構建的,具有開銷小,效率高的特點。本文首先對 OpenEM 的原理做了簡單的介紹。然后結合一個大矩陣乘的演示用例詳細介紹了 OpenEM 的使用。最后通過量化分析這個演示用例的執行cycle 數,總結了 OpenEM 的效率和局限。希望本文能成為學習 OpenEM 的讀者的一個有用的參考。 1、OpenEM 簡介 OpenEM 的全稱是 Open Event Machine。它是 TI 開發的可應用于 Keystone 多核 DSP 的multicore runtime system library。OpenEM 的目的是在多核上有效的調度,分發任務,實現動態的負載平衡; OpenEM,用戶可以很容易的把原來的單核應用移植到 Keystone 多核芯片。需要注意的是 OpenEM 目前只能把任務調度分發到同一個 DSP 的多個核上,不能跨 DSP 調度分發。 OpenEM不依賴于 BIOS。它可以在芯片上裸跑,代碼精簡,效率高。而且,OpenEM不同于業界已經有 OpenMP 和 OpenCL 等開放式的 multi-core runtime systems。它是針對嵌入式系統的設計,更能滿足嵌入式設計的實時性要求。TI 的 keystone 架構多核芯片中有 Multicore Navigator。它由 Queue Manager(簡稱為 QMSS)和一系列 Packet DMA engine 構成。OpenEM就是基于這套硬件系統構建的。例如,OpenEM 的 scheduler 是運行在 QMSS 的 PDSP(QMSS內部的 RISC 處理器)上的。OpenEM的 preload 功能是通過 QMSS 的 packet DMA 實現的。熟悉QMSS 的編程對學習 OpenEM 很有幫助。OpenEM 是 MCSDK 的一個組件。它還在不斷的發展改進中。本文對 OpenEM 的介紹以及演示用例都是基于 BIOS MCSDK 2.01.02 的 OpenEM 1.0.0.2。 下載全文: ![]() |