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