TWI386814B - 具動態工作管理能力之多處理器界面及其程式載卸方法 - Google Patents
具動態工作管理能力之多處理器界面及其程式載卸方法 Download PDFInfo
- Publication number
- TWI386814B TWI386814B TW96151511A TW96151511A TWI386814B TW I386814 B TWI386814 B TW I386814B TW 96151511 A TW96151511 A TW 96151511A TW 96151511 A TW96151511 A TW 96151511A TW I386814 B TWI386814 B TW I386814B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- data
- thread
- execution unit
- work
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 39
- 238000004891 communication Methods 0.000 claims description 75
- 239000000872 buffer Substances 0.000 claims description 71
- 238000012545 processing Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 3
- 230000000903 blocking effect Effects 0.000 claims 1
- 230000000007 visual effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 17
- 230000006835 compression Effects 0.000 description 14
- 238000007906 compression Methods 0.000 description 11
- 238000002474 experimental method Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Description
本發明揭露一種具動態工作管理能力之多處理器界面及其程式載卸方法。
由於通訊及多媒體應用蓬勃發展,市面上各項電子產品所支援的工作趨於多樣化,因此也造成電子產品在處理這些工作時,其運算的複雜度大幅增加。以目前最普遍的手機為例,除了基本的通訊功能外,還包括整合了數位相機、多媒體播放,甚至全球衛星定位系統(Global Positioning System,GPS)等功能。
為了能夠應付這樣的高運算需求,並同時保有一定的產品升級彈性,雙(多)核心異質整合處理器(dual-core or multi-core heterogeneous processor)已被普遍接受為一個有效的解決方案。像是常見的雙核心處理器,一方面利用一顆控制導向的微處理器單元(Micro Processor Unit,MPU)來處理像是使用者界面、中斷處理等工作;另一方面則搭配一顆數位訊號處理器(Digital Signal Processor,DSP)來負責即時、低功耗高效能、具規律運算特性的工作,像是快速傅立葉轉換(FFT),矩陣乘法等等。
這種異質多處理器核心平台(heterogeneous multi-core platform)結合MPU、DSP等不同處理器優點,可提供遠優於單一處理器的運算效率,並提供以軟體進行產品差異化的高度設計彈性。然而,由於缺乏相關的開發工具及相對應的軟體抽象化概念,早期開發異質多處理器核心平台之應用系統時均是針對各個處理器採取各自突破的方法。舉例來說,設計師可能先進行DSP應用模組設計(例如開發一個以DSP為基的影音編解碼器(codec)),撰寫並驗證DSP軟體後,將此模組視作一個封閉的子系統,接著再以MPU存取週邊裝置(如硬體編解碼器、加速器等)的方式與其相互溝通,然而處理器彼此間沒有直接的互動。
此外,為了因應應用程式的日漸多工(multi-task)及多執行緒(multithreaded)化,多個不同的工作或執行緒同時分享DSP運算資源的機會越來越高;另外,為提升運算效能、降低DSP運算之儲存資源(例如高速暫存記憶體(scratchpad SRAM)或快取記憶體(cache))需求,或降低非先佔式(non-preemptive)系統之優先序倒置(priority inversion)時間,DSP系統傾向於將其運算進一步分割(task slicing)。
以上幾個因素使得DSP程式開發進一步抽象化(abstraction),並加入動態工作載入/卸載(task loading/offloading)、記憶體管理、多工處理及動態工作排程、中斷處理(interrupt handler)等傳統MPU子系統的軟體抽象層次。但要將DSP程式開發進一步抽象化並不是那麼容易,譬如說DSP不適合處理控制導向的工作,其環境切換(context switch)的代價極高等因素。因此,一般希望能夠在MPU與DSP之間發展一種特殊溝通界面,以取代單純地使用DSP的抽象化軟體層次,同時能提供MPU完全相同的界面。
目前市面常見的相關產品多數採用信箱(mailbox)抽象化之中斷驅動(interrupt-driven)的處理器間通訊(Inter-Processor Communications),以及μ-核心(μ-kernel)抽象化的DSP軟體層級。像是德州儀器(Texas Instruments)的達文西(DaVinci)與開放式多媒體應用平台(Open Multimedia Applications Platform,OMAP),是以DSP Gateway或DSP/BIOS連結完整包覆的IPC機制、DSP/BIOS、DSP μ-kernel及DSP演算法互通性標準(eXpress DSP Algorithm Interoperability Standard,xDAIS)的應用程式界面(Application Program Interface,API)規格。
上述的軟體架構大致可以目前發展中的開放軟體架構表示。圖1所繪示為習知的開放軟體架構。請參照圖1,此開放軟體架構係將MPU 110的軟體抽象層次搬移到DSP 120,並採用中斷驅動之處理器間通訊,然此舉將嚴重影響DSP子系統的效能。以德州儀器的軟體framework為例,其應用手冊(application notes)中所揭露之編解碼器的效能數據(包括常見的H.264、MPEG-2、AAC、MP3、G.71x等)與其最佳化(hand-optimized)的版本之間仍存在不小的落差(大於50%),其原因可以歸納如下:1. DSP架構設計已針對重複性高、可預測的運算進行最佳化,但對一般DSP的程序控制與中斷處理而言,代價都不小。
2. DSP為了處理大量的資料流,置放了相對多的暫存器(registers),但其內建的資料記憶體(data memory)為求執行預測性,多無快取(cache)的抽象化層次,如此的設計架構將導致其環境切換(context switch)的代價大幅提高。
3. DSP通常具有特殊用途之功能模組,例如位元處理操作單元(bit-manipulation unit)、伽羅瓦域運算單元(Galois-field arithmetic unit)等,以此高成本的處理器執行μ-kernel中簡單的邏輯運算相對浪費。
針對以上問題,現已發展一些初步的解決方案,例如亞德諾(Analog Devices)公司與英特爾(Intel)公司共同研發的一種具備增強程序控制及中斷處理機置的Blackfin DSP架構,即宣稱在低成本系統中甚至可取代MPU成為系統唯一的處理器核心。然而,此種架構不是與MPU投資重複的硬體資源,以強化其程序控制及中斷處理,就是投資重複的軟體資源,例如移植原MPU的ARM/MIPS、X86 MPU之系統軟體、驅動程式及legacy等應用軟體,均需花費不少的成本。
此使,有一種方式是利用編譯器技術分析應用程式,僅容許其執行單元在處於相對小的環境時先行搶占(preemption);另一種方式則是則採用多組描述符(descriptor),以降低DSP上環境切換的開支(overheads)。然而,上述方法的缺點為需要大量的靜態分析,同時對程式控制的複雜度也增加不少。
菲利浦(Philips)公司的DSP是提供兩組指令集,一組為正常(normal)指令集,另一組為小巧(compact)指令集。小巧指令集只允許存取DSP中部份的資源,像是少數幾個暫存器,當中斷發生後,如果中斷服務程序(interrupt service routine,ISR)只用到小巧指令集的指令,則需要做環境切換的情況將會大幅降低。然而,因為小巧指令集的指令長度短,只能存取DSP的部分資源,相對的也會影響執行的效能。
超微(AMD)公司則是保留一組暫存器用在不會被中斷的程式區段(例如中斷服務程序)中,如果在中斷服務程序中會用到其他的暫存器時,則可把值先存到保留的暫存器中,而在處理完ISR後再將此值存回原本的暫存器,如此便可以降低環境切換的時間。然而,此種方式的缺點則是需要多花費一組暫存器的成本。
有鑑於此,本發明提供一種具動態工作管理能力之多處理器界面的程式載卸方法,藉由找尋數位訊號處理器中閒置的執行單元,並依序分派工作供其執行,以提升處理器間的溝通效能。
本發明提供一種具動態工作管理能力之多處理器界面,藉由獨立運作的控制器動態管理分派給DSP運算處理的工作,可節省硬體資源。
為達上述或其他目的,本發明提出一種具動態工作管理能力之多處理器界面的程式載卸方法,適於利用配置於第一處理器與第二處理器間之溝通界面,動態管理第一處理器指派給第二處理器處理之工作。此方法包括先搜尋第二處理器中閒置的執行單元,再將上述工作的多個執行緒其中之一排定給執行單元,最後則將執行單元啟動以執行執行緒。
在本發明之一實施範例中,上述之程式載卸方法更包括重複上述步驟,以排定上述工作的其他執行緒給第二處理器中閒置的其他執行單元執行,直到上述工作的所有執行緒均執行完畢為止。
在本發明之一實施範例中,上述在搜尋第二處理器中閒置之執行單元的步驟之前,更包括接收第一處理器指派第二處理器處理之工作,而將此工作分解為多個執行緒,並依照這些執行緒之優先權,將這些執行緒排序並記錄於工作序列。其中,此工件序列包括記錄各個執行緒執行所需之工作控制區塊(Task Control Block,TCB)資料,而此工作控制區塊資料則包括記錄各執行緒之種類(type)、目標(destination)、標頭(head)指標、結尾(tail)指標及程式位址(program address)。
在本發明之一實施範例中,上述搜尋第二處理器中閒置之執行單元的步驟包括讀取執行緒分派表(dispatch table),以查看目前第二處理器中各個執行單元之工作狀態,而找出工作狀態為閒置狀態之執行單元。
在本發明之一實施範例中,上述之執行緒分派表包括記錄第二處理器中各個執行單元的工作狀態,以及各個執行單元執行執行緒所需之工作控制區塊資料的位址。
在本發明之一實施範例中,上述將執行緒排定給執行單元的步驟包括讀取上述之工作序列,以找尋目前未處理且排序在前之執行緒,再將此執行緒排定給執行單元。此外,此步驟更包括將執行執行緒所需之工作控制區塊資料的位址記錄於執行緒分派表。
在本發明之一實施範例中,上述啟動執行單元以執行執行緒的步驟包括將對應於此執行單元的執行單元起始訊號致能,而由執行單元開始依序累加一指令計數器,以開始執行執行緒。
在本發明之一實施範例中,上述執行單元執行執行緒的步驟包括由執行單元要求溝通界面提供一工作空間,然後才執行執行緒,並將執行緒運算完成的資料存放至此工作空間,最後再將存放此執行緒運算所需資料的工作空間釋放。其中,若溝通界面沒有空閒的工作空間,則結束執行緒之執行動作。
在本發明之一實施範例中,上述在執行單元要求溝通界面提供工作空間的步驟之後,更包括指示溝通界面更新工作序列,以指向此執行緒之下一筆待處理資料,以及在執行緒執行完成時,再度指示溝通界面更新工作序列,以指示此執行緒之目標執行緒又增加一筆可處理資料,此可處理資料即為上述執行緒處理完成的資料。
在本發明之一實施範例中,上述在執行單元要求溝通界面提供工作空間的步驟之後,更包括將執行緒解鎖,以繼續分配給第二處理器中閒置之執行單元執行。
本發明提出一種具動態工作管理能力之多處理器界面,其係配置於第一處理器與第二處理器之間,而包括第一處理器控制器、第二處理器控制器及工作控制器。其中,第一處理器控制器係耦接至第一處理器,用以接收第一處理器的命令,而接收第一處理器指派給第二處理器處理的工作。第二處理器控制器係耦接至第一處理器控制器及第二處理器,用以接收第二處理器的命令,而搜尋第二處理器中閒置的執行單元。工作控制器則耦接至第二處理器控制器,用以接收第二處理器控制器的命令,而排定工作之多個執行緒其中之一給執行單元,並命令第二處理器控制器將執行單元啟動以執行執行緒。
在本發明之一實施範例中,上述之溝通界面更包括兩個輸入緩衝器、兩個輸出緩衝器及狀態暫存器。其中,輸入緩衝器係用以接收並儲存第一處理器輸入的資料,而提供給第二處理器運算。輸出緩衝器係用以接收並儲存第二處理器運算後的資料,而提供給第一處理器。狀態暫存器則用以指示上述輸入緩衝器及輸出緩衝器的狀態。
在本發明之一實施範例中,上述之第一處理器控制器包括接收代表第一處理器已將資料搬進輸入緩衝器的第一資料搬入命令,以更新狀態暫存器,而指示已搬入資料之輸入緩衝器的狀態為滿載(full),並指示第一處理器下次將資料搬進另一個輸入緩衝器;此外,第一處理器控制器更包括接收代表第一處理器已將資料從輸出緩衝器取出的第一資料取出命令,以更新狀態暫存器,而指示已取出資料之輸出緩衝器的狀態為空(empty),並指示第一處理器下次從另一個輸出緩衝器取出資料。
在本發明之一實施範例中,上述之第二處理器控制器包括接收代表第二處理器已將資料從輸入緩衝器取出的第二資料取出命令,以及代表第二處理器已將資料搬進輸出緩衝器的第二資料搬入命令,而將此第二資料取出命令及第二資料搬入命令傳送給第一處理器控制器執行。
在本發明之一實施範例中,上述之第一處理器控制器包括接收第二資料取出命令,以更新狀態暫存器,而指示第二處理器下次從另一個輸入緩衝器取出資料,並指示已取出資料之輸入緩衝器的狀態為空;此外,第一處理器控制器更包括接收第二資料搬入命令,以更新狀態暫存器,而指示第二處理器下次將資料搬進另一個輸出緩衝器,並指示已搬入資料之輸出緩衝器的狀態為滿載。
在本發明之一實施範例中,上述之第二處理器控制器包括接收記憶體取得命令,以找尋工作空間來儲存執行緒運算完成的資料;以及接收記憶體釋放命令,以釋放用以儲存執行緒運算所需資料的工作空間。
在本發明之一實施範例中,上述之第二處理器控制器包括接收工作解鎖命令,以解鎖執行緒的狀態,而提供給工作控制器檢查是否能夠分派給第二處理器運算。
在本發明之一實施範例中,上述之第二處理器控制器包括接收執行單元終止命令,以設置第二處理器中對應之執行單元的執行單元起始訊號,而停止執行單元累加指令計數器。同時亦傳送執行單元閒置命令給工作控制器,以告知工作控制器有閒置的執行單元可再被排程工作。
在本發明之一實施範例中,上述之工作控制器在接收到執行單元閒置命令時,包括讀取工作序列,以找尋目前未處理且排序在前之執行緒,而將此執行緒之工作控制區塊資料的位址寫入執行緒分派表,其中所述的工作序列包括記錄各個執行緒執行所需之工作控制區塊資料。同時亦傳送執行單元起始命令給第二處理器控制器,以致能第二處理器的執行單元起始訊號,而控制第二處理器之執行單元開始累加指令計數器,以執行執行緒。
在本發明之一實施範例中,上述之工作控制器包括接收解序列命令,以更新工作序列中執行緒之工作控制區塊資料的結尾指標,以指到該執行緒之下一筆待處理資料;此外,工作控制器更包括接收制序列命令,以更新該執行緒的目標執行緒之工作控制區塊資料的標頭指標,以指示目標執行緒又增加一筆可處理資料,而此可處理資料為執行緒處理完成的資料。
在本發明之一實施範例中,上述之第一處理器包括微處理器單元(Micro Processor Unit,MPU),而第二處理器則包括數位訊號處理器(Digital Signal Processor,DSP)。
本發明採用在微處理器與數位訊號處理器之間配置溝通界面的結構,藉由獨立的溝通界面分派微處理器要求DSP處理的工作,並管理提供給DSP進行運算及儲存資料的資源,可大幅節省DSP花費在環境切換(context switch)的時間,且可節省硬體成本。
為讓本發明之上述和其他目的、特徵和優點能更明顯易懂,下文特舉較佳實施範例,並配合所附圖式,作詳細說明如下。
為了能夠有效地幫助雙(多)核心處理器間的溝通,包括資料的傳遞、工作的分派,且能夠動態管理微處理器單元(Micro Processor Unit,MPU)分派給數位訊號處理器(Digital Signal Processor,DSP)的工作,本發明提出一種特殊的溝通界面及使用此溝通界面的程式載卸方法,以求達到上述的功能。為了使本發明之內容更為明瞭,以下特舉實施範例作為本發明確實能夠據以實施的範例。
圖2是依照本發明一實施範例所繪示之具動態工作管理能力之多處理器界面的示意圖。請參照圖2,本實施範例之溝通界面200係配置在微處理器單元(MPU)210與數位訊號處理器(DSP)220之間,利用在DSP 220的資料記憶體230中配置雙倍的輸入緩衝器231及輸出緩衝器231來增加資料傳輸的效率。其中,當MPU 210欲傳送資料給DSP 220時,會先去查看狀態暫存器233,此狀態暫存器233會告訴MPU 210目前可以將資料傳送到資料記憶體230的哪一個輸入緩衝器中,然後MPU 210就可以進行資料的搬移。相對地,一旦完成資料搬移後,MPU 210會寫一個相對應的命令(command)給溝通界面200,然後溝通界面200就會設定相對應的狀態暫存器233來表示已接收到資料,同時會指示下次MPU 210應該將資料傳送到另外一個輸入緩衝器。
當DSP 220完成工作而需要將處理完的資料傳送給MPU 210時,溝通界面200就會利用一個信箱(mailbox),以中斷(interrupt)的方式通知MPU 210來將資料取回,而當MPU 210取完資料後,會寫一個命令給溝通界面200以告知它已完成資料的搬移。換句話說,當MPU 210欲輸入資料給DSP 220時,只需自己讀取狀態暫存器233後,即可馬上進行資料的搬移,毋需等待DSP 220的回應或中斷DSP 220的運算;此外,當資料完成運算後,溝通界面200也會即時的告知MPU 210,如此一來便能大幅地增加資料傳輸的效率,毋須浪費時間在互相等待。
另一方面,本實施範例更包括定義一組系統控制變數,以控制DSP 220執行工作,其中包括利用工作控制區塊(Task Control Block,TCB)資料來記錄每個執行緒狀態,並利用工作序列(Queue)來記錄每個執行緒運算時的來源資料是放在資料記憶體的哪個位址。
上述之TCB資料中包含了許多資訊:種類(type)說明此執行緒的工作型態,可為輸入、輸出或一般工作;目標(destination)代表該工作的下一個工作名稱,譬如說色彩空間轉換(Color Space Transformation,CST)的下一個工作即為離散餘弦轉換(Discrete Cosine Transformation,DCT);標頭(head)、結尾(tail)指標則表示目前工作序列中資料使用的情形。其中,結尾指標所指的資料即為最近需要被運算的資料,而標頭指標則是指向最近由上一個工作完成所傳送過來的資料。藉由標頭及結尾指標就可判斷有哪些資料等待被運算,而哪些資料已經運算完畢;程式位址(program address,ptr)則是指出執行緒的程式碼是存放在指令記憶體的哪個位址(起始位址)。
除了TCB資料及工作序列以外,系統控制變數還包括一個執行緒分派表(dispatch table),裡面存放的資訊可表示各個執行單元目前所運算之執行緒的TCB資料是存放在記憶體的那個位址。當執行單元開始執行各個執行緒時,就可利用執行緒分派表所記錄的位址去查看相對應執行緒的TCB資料。
值得注意的是,本發明包括將MPU指派的工作依其性質分解為多個執行緒,而對於所要管理的每個執行緒,溝通界面會賦予每個執行緒一個”單一且固定”的優先權,此優先權關係就會決定之後這些工作之TCB資料存放的順序。
當系統啟動之後,溝通界面就會開始進行動態的工作管理,主要的動作有工作排程(task scheduling)及工作載入(task loading),圖3是依照本發明一實施範例所繪示之具動態工作管理能力之多處理器界面的程式載卸方法的流程圖。請參照圖3,本實施範例適於利用配置於第一處理器與第二處理器間的溝通界面,動態管理第一處理器指派給第二處理器處理之工作。在本實施範例中,第一處理器係以微處理器單元(MPU)為例,而第二處理器則是以數位訊號處理器(DSP)為例來說明。
首先,當系統啟動時,溝通界面會去監視執行緒分派表(dispatch table),查看目前DSP中各個執行單元的工作狀態,以找出閒置的執行單元(步驟S310)。此執行緒分派表除了記錄DSP中各個執行單元的工作狀態之外,還包括記錄各個執行單元執行執行緒所需之工作控制區塊資料的位址。
如果發現任何一個空閒的執行單元時,它就會去讀取工作序列,以找尋目前未處理且排序在前的執行緒,而將此執行緒排定給執行單元(步驟S320)。詳細地說,溝通界面包括查看工作序列,並從最高優先權的工作開始檢查,如果這些執行緒之TCB資料中的標頭及結尾指標指出還有尚未處理的資料,則溝通界面就會將最高優先權的執行緒排進執行單元執行,否則就繼續查看下一階優先權的執行緒。
當溝通界面找到可以排程的執行緒後,再來就是要進行工作載入(task loading),以啟動執行單元執行此執行緒(步驟S330)。其中,溝通界面包括將對應此執行單元的執行單元起始訊號致能(例如設為1),此時執行單元就會開始累加指令計數器,以開始執行執行緒,以下則再舉一實施範例詳細說明DSP執行執行緒的詳細流程。
在介紹DSP執行工作的方法之前,先以一實施範例說明DSP之資料記憶體的配置情形。圖4是依照本發明一實施範例所繪示之DSP資料記憶體在MPU定址空間之記憶體對應的示意圖。請參照圖4,本實施範例之資料記憶體400除了DSP的程式區410以及保留區430外,更包括一塊保留給溝通界面使用的狀態暫存器420。
此外,本實施範例還包括將資料記憶體400切割成若干個固定大小的使用者,頁(user page)440(包括使用者頁0~使用者頁13),而由溝通界面動態分配給DSP的各個執行單元做為工作空間(working space),以存放DSP運算的來源資料或者是運算結果。
系統控制變數區450則包括記錄系統的整體資料(global data)451,以及上述的TCB資料452、工作序列453及執行緒分派表454。此外,資料記憶體400中還包括配置雙倍的輸入緩衝器460、470及輸出緩衝器480、490,以增加資料傳輸的效率。
圖5是依照本發明一實施範例所繪示之DSP執行工作的方法流程圖。請參照圖5,本實施範例包括利用DSP的指令記憶體與資料記憶體,以及溝通界面的暫存器與所記錄的系統控制變數,據以控制DSP執行工作。
當溝通界面將執行緒排程及載入DSP之執行單元進行運算時,首先會先執行get_free_page()API,也就是跟溝通界面要求一塊使用者頁當成工作空間(步驟S510),以存放運算完成的資料。此時溝通界面即會檢視資料記憶體中是否還有空閒的使用者頁可用(步驟S520)。
如果已經沒有空閒的使用者頁可用的話,則執行unlock()API,以告知溝通界面此工作可以再度的被排程運算(步驟S530),然後執行terminate()API,以終止執行單元執行工作(步驟S590);反之,如果成功的要到使用者頁,下一步則會執行de-queue()API,也就是通知溝通界面將TCB中的結尾指標更新,以指到下一筆待處理的資料(步驟S540)。
接著就可以執行unlock()API,也就是告知溝通界面此工作可以再度的被排程運算,而繼續將下一個待處理的執行緒分配給DSP中其他閒置的執行單元執行(步驟S550),而在完成上述這些動作後就,DSP就可以開始執行真正的運算工作(步驟S560)。
在運算完成後,再執行en-queue()API,也就是告知溝通界面將此執行緒之目標執行緒之TCB資料中的標頭指標作更新,以指示目標執行緒又增加一筆可處理資料(步驟S570)。
最後則執行page_release()API,也就是將剛剛存放運算資料來源(inputdata)所佔用的使用者頁給釋放掉(步驟S580),並執行terminate()API,以終止執行單元執行工作(步驟S590)。在此需強調的是,這裡所指的使用者頁並不是一開始執行時用get_free_page()API所取得的使用者頁,而是指一開始存放運算資料來源的使用者頁,也就是說,用get_free_page()API所取得的使用者頁將會成為下一個工作存放運算資料來源的使用者頁。
為了讓上述溝通界面與其程式載卸方法的內容更為清楚明瞭,以下將以多媒體應用中常見的(Joint Photographic Coding Expert Group,JPEG)影像壓縮應用為例,說明本發明之溝通界面如何幫助MPU及DSP進行溝通及動態工作管理。
圖6是依照本發明一實施範例所繪示之JPEG影像壓縮程序的示意圖。請參照圖6,本實施範例係將JPEG的影像壓縮程序分解成色彩空間轉換610(Color Space Transformation,CST)、離散餘弦轉換620(Discrete Cosine Transformation,DCT)、量化630(Quantization)及可變長度編碼640(Variable Length Coding,VLC)四個執行緒。
圖7是依照本發明一實施範例所繪示之JPEG影像壓縮的工作序列。請參照圖7,溝通界面在接收到MPU分派的JPEG影像壓縮工作時,即會將此JPEG影像壓縮工作分解為上述CST、Q、DCT及VLC等執行緒,並給予各個執行緒一個單一且固定的優先權,以作為工作排程的依據。而在JPEG影像壓縮中,VLC具有最高優先權,接著是Q、DCT,最後為CST。
工作序列700係根據優先權排定各個執行緒的執行順序,其第一列記錄輸出(Output)的TCB資料(TCB[0]),此工作係傳送DSP運算完成資料給MPU;第二列則記錄VLC工作的TCB資料(TCB[1]),而由其目標欄位可知,其係接收前面量化(Q)的資料,並經由程式位址&VLC所指向的記憶體位址,讀取VLC程式以進行VLC運算。以此類推,工作序列700的其他列分別記錄Q、DCT、CST及輸入等工作的TCB資料。
而在執行工作序列700中的各個執行緒時,溝通界面則會去讀取執行緒分派表,以找尋空閒的執行單元來分派工作序列700中的執行緒。圖8是依照本發明一實施範例所繪示之JPEG影像壓縮的執行緒分派表。請先參照圖8(a),本實施範例假設DSP僅有4個執行單元,而由執行緒分派表810中的致能(enable)欄位可知,目前僅有執行單元2正在執行運算,而由其工作(task)欄位可知,執行單元2所執行的是TCB[5]的資料。再參照圖7的工作序列700即可得知,執行單元2所執行的是輸入(input)的運算。
值得注意的是,由工作序列700中的序列指標可知,Q的標頭指標為1,但其結尾指標為0,此即代表此Q尚未執行,而等待排入執行緒分派表810中執行。此時由執行緒分派表810可知,執行單元0為閒置狀態,因此可將Q分派給執行單元0執行,而執行緒分派表810也更新為圖8(b)的執行緒分派表820。
同理,工作序列700中DCT的標頭指標為2,但其結尾指標為1,此亦代表DCT尚未執行,而等待排入執行緒分派表820中執行。此時由執行緒分派表820可知,執行單元1為閒置狀態,因此可將DCT分派給執行單元1執行,而執行緒分派表820也更新為圖8(c)的執行緒分派表830。
最後,當Q及輸入的運算完成後,執行單元0及執行單元2即回復到空閒狀態,而執行緒分派表830也更新為圖8(d)的執行緒分派表840。以此類推,本發明之溝通界面即藉由參照如上所述的工作序列及執行緒分派表,重覆執行分派工作、啟動執行單元進行運算等步驟,直到工作序列中的所有執行緒均運算完畢為止。
根據以上所述之溝通界面概念及其程式載卸方法,本發明亦提供其可能實現的硬體架構。圖9是依照本發明一實施範例所繪示之具動態工作管理能力之多處理器界面的方塊圖。請參照圖9,本實施範例之溝通界面930包括利用三個可交互作用的控制器(interactive controller),即MPU控制器931、DSP控制器932及工作控制器933,來實現DSP與MPU之溝通及動態工作管理的功能。其中,這三個控制器之間是利用命令儲列(command queue)來互相傳遞命令。
這三個控制器可分別用三個簡單的狀態機(state machine)來實現其功能。圖10是依照本發明一實施範例所繪示之MPU控制器931、DSP控制器932及工作控制器933的狀態機示意圖。請先參照圖10(a),其代表MPU控制器931的狀態機1110,當系統開機後,MPU控制器931就處在待命(StandBy)狀態,這時可能會接收來自於MPU 910的命令,或是DSP控制器932的命令。來自MPU 910的命令包含了(1)MPU已將資料搬進輸入緩衝器的資料搬入命令,以及(2)MPU已將資料從輸出緩衝區取出的資料取出命令;來自DSP控制器932的命令有(1)DSP已將資料從輸入緩衝器取出的資料取出命令,以及(2)DSP已將要傳送給MPU的資料放在輸出緩衝器的資料搬入命令。
當MPU 910將資料搬進輸入緩衝器時,MPU控制器931會將狀態暫存器改成指示MPU 910下一次必須將資料搬進另外一個輸入緩衝器,同時將剛剛填入資料的資料緩衝器狀態設為滿載(full)。當MPU 910已將資料從輸出緩衝器取出時,則會將狀態暫存器改成指示MPU 910下次從另外一個輸出緩衝器取回資料,同時將剛剛搬走資料的輸出緩衝器狀態改為空的(empty)。
另一方面,當DSP 920已將資料從輸入緩衝器取出時,MPU控制器931會將狀態暫存器改為指示下次DSP 920要從另一個輸入緩衝器取得資料,同時將剛剛取出資料的輸入緩衝器狀態改為空的。最後,當DSP 920已將要傳送MPU的資料放在輸出緩衝器時,會將要輸出的那個輸出緩衝器藉由信箱而以中斷的方式傳送告知MPU 610。此外,當MPU控制器931完成來自DSP控制器932的命令後,還會回應一個訊息給DSP控制器932,而DSP控制器932在收到這個回應後,才會繼續的執行。
舉例來說,圖11是依照本發明一實施範例所繪示之輸出輸入緩衝器的運作示意圖。其中,圖11(a)及圖11(b)分別表示輸入緩衝器與輸出緩衝器的運作情形。MPUptr代表MPU 910根據狀態暫存器的指示,所指向之輸入緩衝器或輸出緩衝器的位址,而DSPptr則代表DSP 920根據狀態暫存器的指示,所指向之輸入緩衝器或輸出緩衝器的位址。由圖11(a)及圖11(b)可知,本發明之溝通界面提供雙倍的輸入緩衝器或輸出緩衝器給MPU 910及DSP 920交互使用,以增加資料傳輸的效率。
接著,圖10(b)所繪示為DSP控制器932的狀態機1120,當DSP控制器932處在待命狀態時,可能會接收來自DSP 920的命令,或是MPU控制器931或工作控制器933的命令。其中來自DSP 920的命令有八個,包括:(1)記憶體釋放命令、(2)記憶體取得命令、(3)解序列(de-queue)命令、(4)制序列(en-queue)命令、(5)工作解鎖(unlock)命令、(6)執行單元終止命令、(7)DSP已將資料從輸入緩衝器取出的資料取出命令,以及(8)DSP已將要傳送給MPU的資料放在輸出緩衝器的資料搬入命令。
其中,上述解序列及制序列命令會直接傳給工作控制器933做處理,而”DSP 920已將資料從輸入緩衝器取出”的資料取出命令與”DSP已將要傳送給MPU的資料放在輸出緩衝器”的資料搬入命令則會直接傳給MPU控制器931做處理。
DSP控制器932在執行記憶體取得命令時,會去資料記憶體找一塊閒置的使用者頁給DSP 920做為工作空間,同時將此使用者頁的狀態設成忙碌(busy);反之,在執行記憶體釋放命令時,則會將DSP 920所要釋放的使用者頁設為閒置;在收到工作解鎖命令時,DSP控制器932會將執行緒的狀態由上鎖(lock)改成解鎖(unlock),代表該執行緒可以再度被工作控制器933檢查是否能夠分派給DSP 920的執行單元運算;此外,在收到執行單元終止命令時,DSP控制器932會將執行單元的執行單元起始訊號設成0,也就是停止該執行單元之指令計數器的累加,並同時傳送一個執行單元閒置命令告知工作控制器933有閒置的執行單元可再被排程工作。最後,當傳送給MPU控制器931或工作控制器933的命令處理完畢後,也會有命令回來通知完成處理。
圖10(c)則為工作控制器933的狀態機1130,其包括接收來自DSP控制器932的三個命令,分別為(1)執行單元閒置命令,(2)解序列命令及(3)制序列命令,其中命令(2)或(3)的處理優先權則高於命令(1)。當要處理執行單元閒置命令時,工作控制器會去讀取最高優先權之執行緒的TCB資料,並確認是否有尚未處理的資料。如果有的話,就將該執行緒之TCB資料寫到執行緒分派表,並且發送執行單元起始命令給DSP控制器932,以致能DSP控制器932的執行單元起始訊號,此時執行單元的指令計數器就會開始累加;反之,如果最高優先權的執行緒並無待處理的資料,或是為上鎖(lock)狀態的話,則繼續找下一個優先權的執行緒,直到找到一個可排程的執行緒或是全部的執行緒都找過一次為止。
此外,在收到解序列命令時,工作控制器933會將該執行單元所運算之執行緒的TCB資料中的結尾指標更新,也就是指到執行緒的下一筆待處理資料;而在收到制序列命令時,則是將此執行緒之目標執行緒之工作控制區塊資料的標頭指標更新,以指示目標執行緒多增加一筆待處理資料。
以下則藉由實驗來評估本案所提出之溝通界面的效能。圖12為依照本發明一實施範例所繪示之圖9溝通界面的微架構(micro-architecture)及輸出輸入腳位示意圖。請參照圖12,本實施範例之實驗包括連結MPU控制器1210、DSP控制器1220及工作控制器1230,以形成溝通界面1200,其括號中的數字代表訊號寬度(bit-width),本實施範例之目的在於測試在雙核心處理器之間加入溝通界面後,MPU及DSP兩者溝通效能的提升狀況,本實施範例是直接以DSP的使用率(DSP utilization)來評估各種方法的效能。
本實施範例係以安謀國際(ARM)公司的Versatile做為發展平台進行實驗,利用板子上的MPU搭配一個配置了8個硬體執行單元的DSP執行工作,而這兩個處理器之間則是以先進微控制器匯流排架構(Advanced Microcontroller Bus Architecture,AMBA)的匯流排連接。
本實施範例係以多媒體應用中常見的JPEG影像壓縮應用說明本發明之溝通界面如何幫助MPU及DSP進行溝通及動態工作管理。其中包括將JPEG影像壓縮分成色彩空間轉換(CST)、離散餘弦轉換(DCT)、量化(Q)及可變長度編碼(VLC)四個執行緒。溝通界面會給予各個執行緒一個單一且固定的優先權,以作為工作排程的依據。以JPEG影像壓縮為例,VLC具有最高優先權,接著是Q、DCT,最後為CST。
本實施範例包括三項實驗:第一項實驗是將本發明之溝通界面的功能利用MPU以軟體的方式完成,也就是說所有動態工作管理都交由MPU來負責,DSP只會接收MPU的命令開始運算,並在結束後中斷MPU以告知完成工作。第二項實驗一樣是以軟體的方式實現動態工作管理,只是這次是用DSP中一個特定的執行單元來進行動態工作管理,其餘7個執行單元則用於一般的運算。第三項實驗則是利用額外配置的硬體來實現本發明之溝通界面。
初步的實驗指出,在第一項實驗中,DSP的使用率(DSP真正執行有效指令的週期(cycle)數/全部JPEG的執行週期數)大約有55.5%,第二項實驗則提高到66.7%,而本發明所提出之溝通界面則可將DSP的使用率提高至93.4%。
綜上所述,本發明之具動態工作管理能力之多處理器界面除了可以協調MPU/DSP,提升溝通效能外,更具動態工作管理的能力。加上客製化的設計,可以最少的硬體資源完成一般使用龐大厚重的作業系統搭配數位訊號處理器所完成的軟體抽象層次,並且提供MPU跟原本相同的界面,程式開發者無需再花費相當的努力在修改原本已開發的應用程式上。而初步的實驗顯示,本發明之溝通界面可以幫助雙核心處理器中DSP的使用率提高將近達93.4%,而所花的硬體代價(silicon area)則只有DSP面積的1.56%。雖然本發明已以較佳實施範例揭露如上,然其並非用以限定本發明,任何熟習此技藝者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
110、210、610、910...微處理器單元(MPU)
120、220、620、920...數位訊號處理器(DSP)
200、630、930、1200...溝通界面
230、400...資料記憶體
410...程式
420...狀態暫存器
430...保留區
440...使用者頁
450...系統控制變數
451...整體資料
452...TCB資料
453...工作序列
454...執行緒分派表
460、470...輸入緩衝器
480、490...輸出緩衝器
610...色彩空間轉換
620...離散餘弦轉換
630...量化
640...可變長度編碼
700...工作序列
810、820、830、840...執行緒分派表
931、1210...MPU控制器
932、1220...DSP控制器
933、1230...工作控制器
1110、1120、1130...狀態機
S310~S330...本發明一實施範例之具動態工作管理能力之多處理器界面的程式載卸方法之各步驟
S510~S590...本發明一實施範例之DSP執行工作的方法之各步驟
圖1所繪示為習知的開放軟體架構。
圖2是依照本發明一實施範例所繪示之具動態工作管理能力之多處理器界面的示意圖。
圖3是依照本發明一實施範例所繪示之具動態工作管理能力之多處理器界面的程式載卸方法的流程圖。
圖4是依照本發明一實施範例所繪示之DSP資料記憶體在MPU定址空間之記憶體對應的示意圖。
圖5是依照本發明一實施範例所繪示之DSP執行工作的方法流程圖。
圖6是依照本發明一實施範例所繪示之JPEG影像壓縮程序的示意圖。
圖7是依照本發明一實施範例所繪示之JPEG影像壓縮的工作序列。
圖8是依照本發明一實施範例所繪示之JPEG影像壓縮的執行緒分派表。
圖9是依照本發明一實施範例所繪示之具動態工作管理能力之多處理器界面的方塊圖。
圖10是依照本發明一實施範例所繪示之MPU控制器631、DSP控制器632及工作控制器633的狀態機示意圖。
圖11是依照本發明一實施範例所繪示之輸出輸入緩衝器的運作示意圖。
圖12為依照本發明一實施範例所繪示之圖6溝通界面的微架構及輸出輸入腳位示意圖。
910...微處理器單元(MPU)
920...數位訊號處理器(DSP)
930...溝通界面
931...MPU控制器
932...DSP控制器
933...工作控制器
Claims (23)
- 一種具動態工作管理能力之多處理器界面的程式載卸方法,包含利用配置於一第一處理器與一第二處理器間之一溝通界面,用以動態管理該第一處理器指派該第二處理器處理之一工作,該方法包括下列步驟:接收該第一處理器指派該第二處理器處理之該工作;分解該工作為至少一個執行緒;依照該些執行緒之一優先權排序該些執行緒,並記錄於一工作序列,其中該工作序列包括記錄各該些執行緒執行所需之一工作控制區塊(Task Control Block,TCB)資料;搜尋該第二處理器閒置之一執行單元;排定該工作之該些執行緒其中之一給該執行單元;啟動該執行單元以執行該執行緒;以及重複上述步驟,以排定該工作的其他執行緒給該第二處理器中閒置的其他執行單元執行,直到該工作的所有執行緒均執行完畢為止。
- 如申請專利範圍第1項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中搜尋該第二處理器中閒置之該執行單元的步驟包括:讀取一執行緒分派表(dispatch table),以查看目前該第二處理器中各該些執行單元之一工作狀態,而找出該工作狀態為閒置狀態之該執行單元。
- 如申請專利範圍第2項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中該執行緒分派表包括記錄該第二處理器中各該些執行單元的該工作狀態,以及各該些執行單元執行該執行緒所需之該工作控制區塊資料的位址。
- 如申請專利範圍第1項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中排定該執行緒給該執行單元的步驟包括:讀取該工作序列,找尋目前未處理且排序在前之該執行緒,而排定該執行緒給該執行單元。
- 如申請專利範圍第4項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中排定該執行緒給該執行單元的步驟更包括:記錄執行該執行緒所需之該工作控制區塊資料的位址於該執行緒分派表。
- 如申請專利範圍第1項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中啟動該執行單元以執行該執行緒的步驟包括:致能對應於該執行單元之一執行單元起始(thread enable)訊號;以及該執行單元開始依序累加一指令計數器,以開始執行該執行緒。
- 如申請專利範圍第6項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中該執行單元執行該執行緒的步驟包括:該執行單元要求該溝通界面提供一工作空間;執行該執行緒,並將該執行緒運算完成的資料存放至該工作空間;釋放存放該執行緒運算所需資料的該工作空間。
- 如申請專利範圍第7項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中在該執行單元要求該溝通界面提供該工作空間的步驟中,若該溝通界面沒有空閒的該工作空間,則結束該執行緒之執行動作。
- 如申請專利範圍第7項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中在該執行單元要求該溝通界面提供該工作空間的步驟之後,更包括:指示該溝通界面更新該工作序列,以指向下一筆待處理之資料;以及在該執行緒執行完成時,指示該溝通界面更新該工作序列,以指示該執行緒之一目標執行緒又增加一可處理資料,該可處理資料為該執行緒處理完成的資料。
- 如申請專利範圍第7項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中在該執行單元要求該溝通界面提供該工作空間的步驟之後,更包括:解鎖(unlock)該執行緒,以繼續分配該執行緒給該第二處理器中閒置之該執行單元執行。
- 如申請專利範圍第1項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中工作控制區塊資料包括記錄各該些執行緒之種類(type)、目標(destination)、標頭(head)指標、結尾(tail)指標及程式位址(program address)。
- 如申請專利範圍第1項所述之具動態工作管理能力之多處理器界面的程式載卸方法,其中該第一處理器包括微處理器單元(Micro Processor Unit,MPU),而該第二處理器包括數位訊號處理器(Digital Signal Processor,DSP)。
- 一種具動態工作管理能力之多處理器界面,配置於一第一處理器與一第二處理器之間,包括:一第一處理器控制器,耦接至該第一處理器,用以接收該第一處理器的命令,而接收該第一處理器指派給該第二處理器處理之一工作;一第二處理器控制器,耦接至該第一處理器控制器及該第二處理器,用以接收該第二處理器的命令,而搜尋該第二處理器中閒置之一執行單元;以及一工作控制器,耦接至該第二處理器控制器,用以接收該第二處理器控制器的命令,而排定該工作之多個執行緒其中之一給該執行單元,並命令該第二處理器控制器啟動該執行單元以執行該執行緒。
- 如申請專利範圍第13項所述之具動態工作管理能力之多處理器界面,更包括:兩個輸入緩衝器,用以接收並儲存該第一處理器輸入的資料,而提供給該第二處理器運算;兩個輸出緩衝器,用以接收並儲存該第二處理器運算後的資料,而提供給該第一處理器;以及一狀態暫存器,用以指示該些輸入緩衝器及該些輸出緩衝器的狀態。
- 如申請專利範圍第14項所述之具動態工作管理能力之多處理器界面,其中該第一處理器控制器包括:接收代表該第一處理器已將資料搬進該輸入緩衝器的一第一資料搬入命令,以更新該狀態暫存器,而指示已搬入資料之該輸入緩衝器的狀態為滿載(full),並指示該第一處理器下次將資料搬進另一個輸入緩衝器;以及接收代表該第一處理器已將資料從該輸出緩衝器取出的一第一資料取出命令,以更新該狀態暫存器,而指示已取出資料之該輸出緩衝器的狀態為空(empty),並指示該第一處理器下次從另一個輸出緩衝器取出資料。
- 如申請專利範圍第14項所述之具動態工作管理能力之多處理器界面,其中該第二處理器控制器包括:接收代表該第二處理器已將資料從該輸入緩衝器取出的一第二資料取出命令,以及代表該第二處理器已將資料搬進該輸出緩衝器的一第二資料搬入命令;以及傳送該第二資料取出命令及該第二資料搬入命令給該第一處理器控制器執行。
- 如申請專利範圍第16項所述之具動態工作管理能力之多處理器界面,其中該第一處理器控制器包括:接收該第二資料取出命令,以更新該狀態暫存器,而指示該第二處理器下次從另一個輸入緩衝器取出資料,並指示已取出資料之該輸入緩衝器的狀態為空;以及接收該第二資料搬入命令,以更新該狀態暫存器,而指示該第二處理器下次將資料搬進另一個輸出緩衝器,並指示已搬入資料之該輸出緩衝器的狀態為滿載。
- 如申請專利範圍第13項所述之具動態工作管理能力之多處理器界面,其中該第二處理器控制器包括:接收一記憶體取得命令,以找尋一工作空間來儲存該執行緒運算完成的資料;以及接收一記憶體釋放命令,以釋放用以儲存該執行緒運算所需資料的該工作空間。
- 如申請專利範圍第13項所述之具動態工作管理能力之多處理器界面,其中該第二處理器控制器包括:接收一工作解鎖命令,以解鎖該執行緒的狀態,而提供給該工作控制器檢查是否能夠分派給該第二處理器運算。
- 如申請專利範圍第13項所述之具動態工作管理能力之多處理器界面,其中該第二處理器控制器包括:接收一執行單元終止命令,以設置該第二處理器中對應之該執行單元的一執行單元起始訊號,而停止該執行單元累加一指令計數器;以及傳送一執行單元閒置命令給該工作控制器,以告知該工作控制器有閒置的該執行單元可再被排程工作。
- 如申請專利範圍第20項所述之具動態工作管理能力之多處理器界面,其中該工作控制器在接收到該執行單元閒置命令時,包括:讀取一工作序列,以找尋目前未處理且排序在前之該執行緒,而將該執行緒之一工作控制區塊資料的位址寫入一執行緒分派表,其中該工作序列包括記錄各該些執行緒執行所需之該工作控制區塊資料;以及傳送一執行單元起始命令給該第二處理器控制器,以致能該第二處理器之該執行單元起始訊號,而控制該第二處理器之該執行單元開始累加該指令計數器,以執行該執行緒。
- 如申請專利範圍第21項所述之具動態工作管理能力之多處理器界面,其中該工作控制器包括:接收一解序列命令,以更新該工作序列中該執行緒之該工作控制區塊資料的一結尾指標,以指到該執行緒之下一筆待處理的資料;以及接收一制序列命令,以更新該執行緒之一目標執行緒之該工作控制區塊資料的一標頭指標,以指示該目操執行緒又增加一可處理資料,該可處理資料為該執行緒處理完成的資料。
- 如申請專利範圍第13項所述之具動態工作管理能力之多處理器界面,其中該第一處理器包括微處理器單元,而該第二處理器包括數位訊號處理器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW96151511A TWI386814B (zh) | 2007-12-31 | 2007-12-31 | 具動態工作管理能力之多處理器界面及其程式載卸方法 |
US12/107,082 US8972699B2 (en) | 2007-12-31 | 2008-04-22 | Multicore interface with dynamic task management capability and task loading and offloading method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW96151511A TWI386814B (zh) | 2007-12-31 | 2007-12-31 | 具動態工作管理能力之多處理器界面及其程式載卸方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200928774A TW200928774A (en) | 2009-07-01 |
TWI386814B true TWI386814B (zh) | 2013-02-21 |
Family
ID=40800313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW96151511A TWI386814B (zh) | 2007-12-31 | 2007-12-31 | 具動態工作管理能力之多處理器界面及其程式載卸方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8972699B2 (zh) |
TW (1) | TWI386814B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101403982B (zh) * | 2008-11-03 | 2011-07-20 | 华为技术有限公司 | 一种多核处理器的任务分配方法和系统 |
TWI425359B (zh) * | 2010-03-05 | 2014-02-01 | Asustek Comp Inc | 電腦系統之中央處理器開核裝置 |
CN101859261B (zh) * | 2010-06-09 | 2015-05-13 | 中兴通讯股份有限公司 | 一种释放内存的控制方法及控制设备 |
US9411636B1 (en) * | 2011-07-07 | 2016-08-09 | Emc Corporation | Multi-tasking real-time kernel threads used in multi-threaded network processing |
US9936329B2 (en) | 2012-03-09 | 2018-04-03 | Nokia Technologies Oy | Methods, apparatuses, and computer program products for operational routing between proximate devices |
EP2831720A4 (en) * | 2012-03-30 | 2015-12-09 | Intel Corp | PREFERRING MEDIA DEVICES WITH DETERMINED FUNCTIONS |
US9858115B2 (en) * | 2013-10-30 | 2018-01-02 | Mediatek Inc. | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium |
WO2015194133A1 (ja) * | 2014-06-19 | 2015-12-23 | 日本電気株式会社 | 演算装置、演算装置の制御方法、及び、演算装置の制御プログラムが記録された記憶媒体 |
KR102147679B1 (ko) * | 2014-08-13 | 2020-08-25 | 삼성전자 주식회사 | 압축 후 전달 기법을 사용하는 릴레이 무선 통신 시스템에서 복합 자동 재전송 방법 및 장치 |
CN104866283B (zh) * | 2015-06-17 | 2018-07-20 | 成都前锋电子仪器有限责任公司 | 一种手持仪器的数字处理方法 |
US10691502B2 (en) | 2016-06-03 | 2020-06-23 | International Business Machines Corporation | Task queuing and dispatching mechanisms in a computational device |
US11029998B2 (en) | 2016-06-03 | 2021-06-08 | International Business Machines Corporation | Grouping of tasks for distribution among processing entities |
US10185593B2 (en) | 2016-06-03 | 2019-01-22 | International Business Machines Corporation | Balancing categorized task queues in a plurality of processing entities of a computational device |
US20180039519A1 (en) * | 2016-08-08 | 2018-02-08 | Qualcomm Incorporated | Systems and methods for managing processing load |
US11150944B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Balancing mechanisms in ordered lists of dispatch queues in a computational device |
US10599441B2 (en) * | 2017-09-04 | 2020-03-24 | Mellanox Technologies, Ltd. | Code sequencer that, in response to a primary processing unit encountering a trigger instruction, receives a thread identifier, executes predefined instruction sequences, and offloads computations to at least one accelerator |
KR102442921B1 (ko) * | 2017-12-11 | 2022-09-13 | 삼성전자주식회사 | 디지털 시그널 프로세서(dsp)의 태스크 관리 효율을 높일 수 있는 전자 장치 |
TWI701554B (zh) * | 2018-12-13 | 2020-08-11 | 英屬維京群島商鯨鏈先進股份有限公司 | 適用於雜湊演算法的電路系統 |
US11397612B2 (en) * | 2019-07-27 | 2022-07-26 | Analog Devices International Unlimited Company | Autonomous job queueing system for hardware accelerators |
US11966785B2 (en) * | 2020-07-30 | 2024-04-23 | Arm Limited | Hardware resource configuration for processing system |
CN112131008B (zh) * | 2020-09-28 | 2024-04-19 | 芯瞳半导体技术(山东)有限公司 | 一种调度线程束warp的方法、处理器及计算机存储介质 |
US11775043B2 (en) | 2021-09-24 | 2023-10-03 | Advanced Micro Devices, Inc. | Power saving through delayed message processing |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5841763A (en) * | 1995-06-13 | 1998-11-24 | Multilink, Inc. | Audio-video conferencing system |
US20030177295A1 (en) * | 2002-03-15 | 2003-09-18 | Fu-Chou Hsu | Apparatus and method of asynchronous FIFO control |
TWI235953B (en) * | 2002-09-19 | 2005-07-11 | Ibm | Method and apparatus for handling threads in a data processing system |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0621535B1 (en) | 1993-04-23 | 2000-03-15 | Advanced Micro Devices, Inc. | Interrupt handling |
US5664095A (en) * | 1993-12-08 | 1997-09-02 | Intel Corporation | Dynamic scaling of CPU cycle consumption in a computer system |
US5748468A (en) * | 1995-05-04 | 1998-05-05 | Microsoft Corporation | Prioritized co-processor resource manager and method |
US5778244A (en) * | 1996-10-07 | 1998-07-07 | Timeplex, Inc. | Digital signal processing unit using digital signal processor array with recirculation |
EP1368732B1 (en) | 2000-10-18 | 2008-01-23 | Koninklijke Philips Electronics N.V. | Digital signal processing apparatus |
KR100583635B1 (ko) | 2003-01-24 | 2006-05-26 | 삼성전자주식회사 | 다수의 동작 모드들을 지원하는 암호화 장치 |
US7685409B2 (en) * | 2007-02-21 | 2010-03-23 | Qualcomm Incorporated | On-demand multi-thread multimedia processor |
-
2007
- 2007-12-31 TW TW96151511A patent/TWI386814B/zh active
-
2008
- 2008-04-22 US US12/107,082 patent/US8972699B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5841763A (en) * | 1995-06-13 | 1998-11-24 | Multilink, Inc. | Audio-video conferencing system |
US20030177295A1 (en) * | 2002-03-15 | 2003-09-18 | Fu-Chou Hsu | Apparatus and method of asynchronous FIFO control |
TWI235953B (en) * | 2002-09-19 | 2005-07-11 | Ibm | Method and apparatus for handling threads in a data processing system |
Also Published As
Publication number | Publication date |
---|---|
TW200928774A (en) | 2009-07-01 |
US20090172683A1 (en) | 2009-07-02 |
US8972699B2 (en) | 2015-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI386814B (zh) | 具動態工作管理能力之多處理器界面及其程式載卸方法 | |
Chen et al. | GFlink: An in-memory computing architecture on heterogeneous CPU-GPU clusters for big data | |
Wang et al. | Blasx: A high performance level-3 blas library for heterogeneous multi-gpu computing | |
US7137116B2 (en) | Method and system for performing a task on a computer | |
KR101759266B1 (ko) | 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법 | |
JP4987882B2 (ja) | スレッドに最適化されたマルチプロセッサアーキテクチャ | |
CA2074633C (en) | Real-time, concurrent, multifunction digital signal processor subsystem for personal computers | |
EP2187316B1 (en) | Gated storage system and synchronization controller and method for multiple multi-threaded processors | |
US20160026574A1 (en) | General purpose digital data processor, systems and methods | |
US6944850B2 (en) | Hop method for stepping parallel hardware threads | |
EP1846820B1 (en) | Methods and apparatus for instruction set emulation | |
WO2017053488A1 (en) | On-chip atomic transaction engine | |
CN109983440A (zh) | 数据处理 | |
HU219533B (hu) | Multimédia számítógéprendszer, valamint eljárás multimédia számítógéprendszer működésének vezérlésére | |
TWI221250B (en) | Multi-processor system | |
CN101499020B (zh) | 具有动态工作管理能力的多处理器界面及其程序加载或卸载方法 | |
Bertolotti et al. | Real-time embedded systems: open-source operating systems perspective | |
Govindarajan et al. | Design and performance evaluation of a multithreaded architecture | |
JP3981238B2 (ja) | 情報処理装置 | |
US8706923B2 (en) | Methods and systems for direct memory access (DMA) in-flight status | |
Tomoutzoglou et al. | Efficient Job Offloading in Heterogeneous Systems Through Hardware-Assisted Packet-Based Dispatching and User-Level Runtime Infrastructure | |
CN117501254A (zh) | 使用近存储器计算为复杂操作提供原子性 | |
Li et al. | XeFlow: Streamlining inter-processor pipeline execution for the discrete CPU-GPU platform | |
Tomoutzoglou et al. | Efficient communication in heterogeneous SoCs with unified address space | |
CN113076189A (zh) | 具有多数据通路的数据处理系统及用多数据通路构建虚拟电子设备 |