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