TW201333814A - 加速器及處理器系統 - Google Patents

加速器及處理器系統 Download PDF

Info

Publication number
TW201333814A
TW201333814A TW101140858A TW101140858A TW201333814A TW 201333814 A TW201333814 A TW 201333814A TW 101140858 A TW101140858 A TW 101140858A TW 101140858 A TW101140858 A TW 101140858A TW 201333814 A TW201333814 A TW 201333814A
Authority
TW
Taiwan
Prior art keywords
flag
processor
processing
area
accelerator
Prior art date
Application number
TW101140858A
Other languages
English (en)
Other versions
TWI597661B (zh
Inventor
Hironori Kasahara
Keiji Kimura
Original Assignee
Univ Waseda
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Univ Waseda filed Critical Univ Waseda
Publication of TW201333814A publication Critical patent/TW201333814A/zh
Application granted granted Critical
Publication of TWI597661B publication Critical patent/TWI597661B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data

Abstract

本發明未對於CPU(處理器)擴展ACC之命令集,且可對ACC確保足夠之資料供給能力,進而可降低ACC之控制負擔。本發明係一種處理器系統,其加速器依據記憶於命令區域之加速器處理命令列任務而動作,若確認表示處理器之處理完成之旗標被寫入同步旗標區域,則即使處理器正在執行其他處理,其仍開始與旗標對應之加速處理,並於加速處理完成後,將表示加速處理完成之旗標寫入同步旗標區域;若處理器確認表示加速處理完成之旗標被寫入同步旗標區域,則即使加速器正在執行其他處理,仍開始與旗標對應之處理。

Description

加速器及處理器系統
本發明係關於加速器及包含其之處理器系統。
為提高包含作為構成要素之處理器系統,特別係多核心處理器系統之計算機(電腦)之特定功能之處理能力並降低消耗電力,對處理器系統中組裝有稱作加速器(以下稱作「ACC」。)之硬體模組。所謂ACC係指例如用於使圖形顯示高速化之圖形處理器高性能繪圖處理器、用於高速化3D顯示之3D加速器等。
作為將如此之ACC連接於處理器系統之方式,先前有高耦合型連接方式與低耦合型連接方式。
所謂高耦合型連接方式係指使ACC與CPU(Central Processing Unit,通用處理器,以下稱作「處理器」)以一體化或近似一體化之狀態予以連接之方式。該高耦合型連接方式中,因ACC與處理器緊密聯繫而發揮作用,故具有用於啟動、控制ACC之負擔較低之優點。藉此,即使於短向量處理(處理資料量較少之加速度處理)等ACC執行時間較短之情形中,仍具有可有效利用ACC之優點。
但,該高耦合型連接方式於對處理器另行連接ACC之情形中有需相應連接之ACC擴展處理器之命令集之問題。該擴展之命令集例如有如非專利文獻1所揭示般之Streaming SIMD Extensions(SSE)等。
又,作為帰納於高耦合型連接方式之範疇之技術,例如 非專利文獻2中揭示有如共處理器般,與對處理器直接連接ACC之連接方式相關之技術。該方式雖無需進行命令集之擴展,但需每處理單位(加速器命令)地呼叫共處理器,因此,需較大之負擔,從而有妨礙全體運算速度提高之問題。
另一方面,所謂低耦合型連接方式係指例如如非專利文獻3所揭示般之如將ACC連接於處理器之外部匯流排之Graphics Processing Unit(CPU)般之方式,或如非專利文獻4所揭示般之如將ACC連接於處理器之內部匯流排之Open Multimedia Application Platform(OMAP)般之方式。該低耦合型連接方式中,因分開設置ACC與處理器,故雖有外部匯流排連接方式或內部匯流排連接方式之差,但因可有餘地地確保ACC用之運算器或記憶體,故有適用於相對龐大之資料之規則之運算處理之優點。
又,低耦合型連接方式亦無需進行命令集之擴展。
但,低耦合型連接方式中,需每處理單位(加速器命令)地呼叫ACC或進行資料傳送,因此,需較大之負擔,從而有無法提高全體運算速度之問題。因此,其並不適用於無規則之運算處理。
又,所謂上述多核心處理器系統係指由複數個處理器核心構成之處理器系統,各處理器核心具備處理器,及根據需要而具備上述ACC。
多核心處理器系統中,藉由由複數個處理器核心並行化處理,可降低消耗電力並且可提高運算處理能力。因此, 將僅可於包含一個處理器之處理器系統上進行動作之逐次處理程式轉換為可於包含複數個處理器核心之所謂多核心處理器上進行並行動作之並行處理程式之並行化編譯程式藉由解析逐次處理之輸入程式,自該輸入程式中抽出可並行動作之部分,並將該部分之運算處理分配給複數個處理器,較如上述般包含一個處理器之處理器系統,可提高處理能力。
作為與生成可於如此之多核心處理器系統、特別係具有複數個包含通用處理器與特定用途處理器(本申請之ACC等)之處理器核心之多核心處理器系統之體系結構及多核心處理器上進行並行動作之並行處理程式之並行化編譯程式有關之技術,已知有專利文獻1~4所揭示之技術等。
專利文獻1中所揭示之技術關於:於搭載有多種處理器核心之多核心處理器系統中,自成為處理對象之逐次處理之輸入程式自動地抽出具有並行性之任務,藉由相應各處理器核心之特性而分配該任務,可使該處理器核心有效地進行動作,進而,藉由估算該處理器核心之處理量,生成使動作頻率或電源電壓最佳化之編碼,可對目的程式附加編譯程式並使其最佳化。
專利文獻2中所揭示之技術為:於具備複數個命令集及構成相異之處理器單元(處理器等)之異質多核心處理器系統中,因防止特定處理器單元之資源不足,故可提高多核心處理器系統全體之處理能力。
專利文獻3中所揭示之技術為:於集積有多種處理器核 心之多核心處理器系統中,藉由使該處理器核心有效動作之程式之分配配置及利用生成控制編碼之複數種編譯程式協同程式並行化技術,可一面最大程度地發揮該處理器系統之性能,一面以低電力進行有效之處理。
專利文獻4中所揭示之技術為:於複數個處理器核心分別具備資料傳送機構之多核心處理器中,藉由降低處理器核心間之資料傳送之負擔(overhead),同時利用編譯程式容易地進行資料傳送之最佳化,可提高處理器全體之處理能力。
[先前技術文獻] [專利文獻]
[專利文獻1]日本專利特開2006-293768號公報
[專利文獻2]日本專利特開2007-328415號公報
[專利文獻3]日本專利特開2007-328416號公報
[專利文獻4]日本專利4476267號公報
[非專利文獻]
[非專利文獻1] S. Thakkar, T. Huff, 「The Internet Streaming SIMD Extensions」, Intel Technology Journal Q2, 1999。
[非專利文獻2] M. Awaga, H. Takahashi, 「The uVP 64-Bit Vector Coprocessor: A New Implementation of High Performance Numerical Computation」, IEEE Micro, Vol.13, No.5,October 1993。
[非專利文獻3] 「NVIDIA CUDA C Programing Guide Version 3.2」, 2010。
[非專利文獻4] 「OMAP-L137 Application Processor System Reference Guide」, Texas Instruments, March, 2010。
然而,上述異質多核心處理器由具有通用處理器核心之一個或複數個處理器核心與包含ACC等特定用途處理器之一個或複數個處理器核心構成。但,為較該異質多核心處理器而進一步降低消耗電力及提高運算處理能力,需使通用處理器與ACC等特定用途處理器並存於處理器核心中,從而構成具有複數個如此地構成之處理器核心之多核心處理器。
即使搭載於如此之多核心處理器系統之各處理器核心之內部或外部具備上述ACC之情形時,仍可採用上述高耦合型及低耦合型之任一種方式。
但,上述先前之高耦合型或低耦合型連接方式中,有如上述般需進行命令集之擴展,或伴隨資料傳送等之處理負擔增加等幾方面問題。
例如,上述高耦合連接方式中,於另行連接ACC時,需相應連接之ACC而擴展處理器之命令集(例如,Streaming SIMD Extensions等:单指令多数据流扩展等)。又,特別地,於處理器為RISC(Reduced Instruction Set Computer:精簡指令集電腦)型處理器之情形時,則難以進行命令長度受限之命令編碼。特別地,於另行擴展命令集之情形 中,需大幅擴展命令集與用於其之硬體(例如命令解讀部或處理器控制部等)。
又,高耦合連接方式中,因處理器與ACC一體化,故有無法對ACC確保用於對同時要求大量資料之ACC供給足夠量之資料之暫存器之問題。因此,無法連續對ACC供給資料,運算器之使用效率下降。
再者,如共處理器般直接連接於處理器之連接方式中,無需擴展處理器之命令集。然而,因每命令處理單位地呼叫共處理器,故控制負擔較大。
另一方面,上述低耦合連接方式中,因較高耦合連接方式,ACC與處理器之間之實際距離較遠,故ACC之控制負擔或對ACC進行資料傳送之負擔顯著增加。
本發明係考慮上述問題而完成者,其目的在於提供一種內外具有ACC及包含ACC之處理器核心之多核心處理器系統,其於將ACC另行連接於處理器時,無需對處理器擴展命令集,且可對ACC確保充分之資料供給能力,進而可降低ACC之控制負擔。
為解決上述問題,本發明採用例如專利申請範圍所揭示之構成。
雖本申請包含複數種解決上述問題之技術,但若列舉其之一例,則本發明係一種處理器系統,其特徵在於其係於半導體晶片上具備處理器核心者,該處理器核心包含進行運算處理之處理器、記憶體、及經由連結網路而連接於上述處理器及上述記憶體之加速器;上述記憶體包含:命令 區域,其預先記憶上述處理器及上述加速器所執行之任務;同步旗標區域,其記憶用於使上述處理器與上述加速器之間各動作同步之旗標;及資料區域,其存儲上述處理器及上述加速器於處理中使用之資料及處理後之資料;上述加速器依據記憶於上述命令區域之任務而動作,若確認表示上述處理器之特定處理完成之旗標被寫入上述同步旗標區域,則即使上述處理器正在執行其他處理,仍讀入被寫入上述資料區域之資料並執行與該旗標對應之任務,而開始加速處理;於上述加速處理完成後,將上述加速處理後之資料存儲於上述資料區域,進而將表示該加速處理完畢之旗標寫入上述同步旗標區域;上述處理器若確認表示上述加速處理完成之旗標被寫入上述同步旗標區域,則即使上述加速器正在執行其他處理,仍開始與該旗標對應之任務。
根據本發明之一實施態樣,因處理器與ACC無需費時於彼此之同步控制,且可各自自行地動作,故於另行連接ACC時可無需對處理器進行命令集之擴展,且可對ACC確保足夠之資料供給能力,進而,可降低ACC之控制負擔。
以下,參照圖式,對本發明之實施形態進行說明。
圖1係表示本發明之實施形態之多核心處理器系統(處理器系統)1之構成例的圖。
圖1所示之多核心處理器系統1具備:設置於1塊半導體 晶片2上之除通用處理器、DTU、記憶體之外尚包含ACC之複數個處理器核心10-1~10-n、ACC20、資料傳送單元(Data Transfer Unit:DTU)30、及晶載集中式共享記憶體40、半導體晶片2之外部之晶片外集中式共享記憶體50。各處理器核心10-1~10-n由共享匯流排等之處理器核心間連結網路(匯流排)連接。再者,亦可具備晶載集中式共享記憶體40與晶片外集中式共享記憶體50之任一者,或具備兩者。
本實施形態中表示各處理器核心10-1~10-n之構成相同之同質多核心處理器系統1之構成例。因此,僅對處理器核心10-1之構成進行說明,省略對其他處理器核心10-2~10-n之說明。再者,本發明不僅適用於同質多核心處理器系統,亦可適應於異質多核心處理器系統。
處理器核心10-1具備:處理器11、加速器(ACC)12、DTU13、分散式共享記憶體(Distributed Shared Memory:DSM)14、局部記憶體(Local Memory:LM)15、匯流排介面16、及FV暫存器(Frequency/Voltage control Register:FVR)17。
處理器11係執行各種運算處理之中央處理裝置。
ACC12係可高速並以低消耗電力處理特定功能之ACC。本實施形態之ACC12係即使無來自處理器11之指示,仍可自行地動作。對該ACC12之詳細內容將於後述。
DTU13係一種具有後述之執行同步旗標檢查之命令列及寫入同步旗標等功能之直接記憶體存取控制器(DMAC, Direct Memory Access Controller),係執行ACC12、DSM14、LM15或與其他處理器10-2~10-n之DSM14之間之資料傳送之資料傳送裝置。本實施形態之DTU13依據來自處理器11之單一指示而開始動作,其後自行地動作。對該DTU13之詳細內容亦予以後述。局部記憶體15存儲僅由一個處理器使用之資料;分散式共享記憶體14存儲由複數個處理器共享之資料。
DSM14係可自所有處理器核心10-1~10-n進行存取之分散式共享記憶體。處理器核心10-1~10-n具有之各DSM14配置於由所有處理器核心10-1~10-n共享之一個記憶體映射上,通過該記憶體映射,所有處理器10-1~10-n對各處理器核心10-1~10-n所具有之DSM14進行存取。該DSM14係為自身或其他處理器11或DTU13過渡計算結果而使用。該DSM14具備命令區域14-1、同步旗標區域14-2、及資料區域14-3。
又,例如,處理器核心10-1內之LM15係僅可由處理器核心10-1之處理器11、ACC12、DTU13存取而無法自其他處理器核心10-2~10-n存取之局部記憶體。該LM15具備命令區域15-1、同步旗標區域15-2、及資料區域15-3。
匯流排介面16係用於進行其他處理器核心10-2~10-n、ACC20、DTU30、晶載集中式共享記憶體40、晶片外集中式共享記憶體50之間之資料通訊之介面。
FVR17係用於執行決定相對處理器11之供給電壓或動作頻率之頻率及/或電源電壓控制之暫存器。
ACC20連接於各處理器核心10-1~10-n之處理器11之外部匯流排,係代行處理器11之處理之GPU等之加速器。
DTU30連接於各處理器核心10-1~10-n之處理器11之外部匯流排,係執行各處理器核心10-1~10-n之LM15與DSM14、其他處理器核心上之DSM14、晶載集中式共享記憶體40、晶片外集中式共享記憶體50之間之資料傳送及與各處理器核心10-1~10-n之DSM14、ACC20、晶載集中式共享記憶體40、晶片外集中式共享記憶體50之間之資料傳送之可選擇之資料傳送裝置。
晶載集中式共享記憶體40連接於各處理器核心10-1~10-n,係由所有處理器核心10-1~10-n共享之半導體晶片2上之記憶體。該晶載集中式共享記憶體40具有命令區域40-1、同步旗標區域40-2、資料區域40-3。晶載集中式共享記憶體40存儲無法存儲於DSM之共享資料或動態定序所需之任務等候列等資訊。
晶片外集中式共享記憶體50連接於各處理器核心10-1~10-n,係由所有處理器核心10-1~10-n共享之半導體晶片2外之記憶體。該晶片外集中式共享記憶體50根據需要亦可具有命令區域、同步旗標區域、及資料區域(皆未圖示)。且,晶片外集中式共享記憶體50與晶載集中式共享記憶體40、DSM14及其他多核心處理器系統(多處理器晶片)共存時,亦可以可自其他多核心處理器存取地構成。晶片外集中式共享記憶體50存儲無法收斂於晶載集中式共享記憶體40之資料。
以上所示之構成中,命令區域14-1、15-1、40-1中存儲有由後述之並行化編譯程式所生成之處理器11、ACC12、DTU13用之命令(程式)。ACC12用之命令係指例如如相對ACC12之加法、乘法般之各種運算命令、旗標設定命令、旗標檢查命令及基於旗標檢查之命令列執行開始命令。且,DTU13用之命令係指例如相對DTU13之資料傳送命令、旗標設定命令、旗標檢查命令及基於旗標檢查之命令列執行開始命令。
再者,處理器核心10-1所執行之命令原則上係配置於處理器核心10-1之命令區域14-1、15-1。但,於命令之尺寸較大之情形時,則配置於晶載集中式共享記憶體40之命令區域40-1。該情形中,處理器核心10-1讀入(載入)配置於命令區域40-1之命令。另一方面,ACC20、DTU30用之命令配置於晶載集中式共享記憶體40之命令區域40-1或晶片外集中式共享記憶體50之命令區域(未圖示)。
同樣地,同步區域14-2、15-2、40-2中存儲有並行化編譯程式所生成之供處理器11、ACC12、DTU13使用之同步旗標。同步旗標係處理器11、ACC12、DTU13為一面彼此保持同步一面協同地動作而使用之旗標(資料)。同步旗標區域14-2、15-2、40-2中配置有處理器10-1所執行之處理集合(例如任務)之同步旗標。若處理之集合為迴圈處理之情形時,亦可根據迴圈處理之迴轉次數配置附加有版本序號之同步旗標。其詳細內容將於後述。另一方面,供ACC20、DTU30使用之同步旗標配置於晶載集中式共享記 憶體40之同步旗標區域40-2或晶片外集中式共享記憶體50之同步旗標區域(未圖示)。
資料區域14-3、15-3、40-3中存儲有處理器11、ACC12、DTU13處理所使用之資料及處理後之資料。另一方面,ACC20、DTU30處理所使用之資料及處理後之資料存儲於晶載集中式共享記憶體40之資料區域40-3或晶片外集中式共享記憶體50之同步旗標區域(未圖示)。
如上,處理器核心10-1上之處理器11、ACC12、DTU13共享自身處理器核心10-1上之DSM14及LM15。
又,各處理器核心10-1~10-n上之處理器11、ACC12、DTU13共享各處理器核心10-1~10-n上之DSM14、晶載集中式共享記憶體40。
再者,多核心處理器系統1根據自身系統之用途,亦可僅具有DSM14、LM15、晶載集中式共享記憶體40、晶片外集中式共享記憶體50中之所需之記憶體。
又,多核心處理器系統1亦有僅包含一個處理器核心之情形;該情形中,無需ACC20、DTU30等。進而,亦有多核心處理器系統1之複數個處理器核心10-1~10-n中包含不具有ACC12之通用處理器核心之情形。
圖2係表示本發明之實施形態之ACC12之第1構成例及包含ACC12之處理器核心之構成例的圖。再者,以下,對與圖1相同之構成要素附加相同之符號,適當省略重複之說明。圖2中,黑色箭頭表示同步旗標之通訊。白色箭頭表示除同步旗標外之命令及用於傳送資料之通訊。各箭頭之 粗細表示通訊速度之快慢。
圖2中,ACC12具備ACC主體121、ACC暫存器/局部記憶體122(以下,僅稱作「ACC暫存器122」)、載入存儲單元123、控制暫存器檔案124、及FVR125,其經由處理器核心內連結網路(匯流排或轉換網路等)18連接於處理器11、LM15、DSM14、DTU13、及FVR17。
ACC主體121係使用存儲於LM15或DSM14之ACC命令列而僅執行特定處理之ACC主體。再者,ACC命令列係指由並行化編譯程式事先生成之供ACC12使用之程式(依序執行複數個命令列之程式)。
ACC暫存器122係用於對ACC主體121供給資料之暫存器等記憶部。特別地,於ACC為ACC20(GPU等,參照圖1)之情形時,ACC暫存器係指ACC20所獨有之局部記憶體。該ACC暫存器122僅可由ACC主體121及載入讀入單元123存取,無法自經由處理器核心內連結網路18而連接之處理器11等存取。再者,ACC暫存器122亦可由ACC12外之構成(例如DTU13)直接存取。
較佳為,該ACC暫存器122為高速對ACC主體121供給資料之矢量寄存器等高速暫存器。
載入存儲單元123係執行ACC暫存器122、DSM14、LM15之間之資料傳送之資料傳送裝置。該載入存儲單元123依據稱作矢量載入之命令,將LM15或DSM14內之連續資料讀入ACC暫存器122。且,其依據稱作矢量存儲之命令,將ACC暫存器122內之連續資料存儲(store)於LM15或 DSM14。該載入存儲單元123具備旗標寫入確認器123A。旗標寫入確認器123A係對LM15或DSM14等記憶體上之特定(任意)區域(位址空間)之位址(以下,稱作「特定位址」)寫入(設定)同步旗標或確認(檢查)寫入記憶體上之特定位址之同步旗標之功能部。
控制暫存器檔案124係由複數個控制暫存器構成之暫存器群。該控制暫存器檔案124包含用於控制ACC主體121之控制暫存器、及用於控制載入存儲單元123之控制暫存器。
FVR125係用於決定相對ACC主體121之供給電壓或時脈頻率且用於進行具有電源切斷功能之頻率、電源電壓(FV)控制之可選擇之暫存器。ACC12係於開始旗標檢查後,根據設定於FVR125之值,降低或切斷對ACC12之供給電壓或時脈頻率。藉此,可實現電力控制。
以上所示之構成之ACC12係與處理器11、DTU13協同而動作。對該協同動作進行簡單說明。
(ACC12與處理器11之協同動作)
首先,說明作為ACC12與處理器11之協同動作之一例之若載入存儲單元123對LM15或DSM14存儲資料則處理器11使用存儲之資料開始處理之動作。
載入存儲單元123將由ACC主體121存儲於ACC暫存器122之加速處理後之資料存儲於LM15之資料區域15-3或DSM14之資料區域14-3。於是,旗標讀入確認器123A將與該存儲處理對應之同步旗標(資料)讀入LM15或DSM14之特 定位址,即15-2或14-2。在同步旗標被讀入LM15或DSM14之特定位址前之期間,處理器11反復檢查分配給LM15或DSM14之同步旗標之特定位址(15-2或14-2)。若處理器11確認(檢測)被寫入之同步旗標,則使用存儲於15-3或14-3之資料,開始自身之處理。如此,ACC12與處理器11協同動作。
接著,作為ACC12與處理器11之協同動作之另一例,說明若處理器11對LM15或DSM14存儲資料,則載入存儲單元123開始對ACC暫存器122讀入存儲之資料之動作。
處理器11將處理後之資料存儲於LM15之資料區域15-3或DSM14之資料區域14-3。於是,處理器11將與該存儲處理對應之同步旗標(資料)讀入LM15或DSM14之特定位址,即15-2或14-2。在同步旗標被寫入LM15或DSM14之特定位址前之期間,旗標寫入確認器123A反復檢查分配給LM15或DSM14之同步旗標之特定位址(15-2或14-2)。旗標寫入確認器123A若確認(檢測)被寫入之同步旗標,則將存儲於15-3或14-3之資料存儲於ACC暫存器122。再者,ACC主體121使用存儲於ACC暫存器122之資料開始自身之處理。如此,ACC12與處理器11協同動作。
(ACC12與DTU13之協同動作)
首先,作為ACC12與DTU13之協同動作之一例,說明若DTU13結束對LM15或DSM14之資料傳送處理,則載入存儲單元123開始對ACC暫存器122讀入經傳送之資料之動作。
若DTU13(例如自晶載集中式共享記憶體40)結束對LM15之資料區域15-3之資料傳送,則將與該資料傳送處理對應之同步旗標寫入LM15或DSM14之特定位址或以命令指定之位址,即15-2或14-2。在同步旗標被寫入LM15或DSM14之特定位址前之期間,旗標寫入確認器123A反復檢查分配給LM15或DSM14之同步旗標之特定位址(15-2或14-2)。若旗標寫入確認器123A確認已寫入之同步旗標,則載入存儲單元123開始將傳送至LM15之資料區域15-3之資料讀入ACC暫存器122。其後,ACC主體121執行加速處理。具體而言,依序執行ACC12用之程式中所含之旗標檢查命令、資料載入命令、加速處理命令。如此,ACC12與DTU13協同動作。
接著,作為ACC12與DTU13之協同動作之另一例,說明若載入存儲單元123對LM15或DSM14存儲資料,則DTU13開始使用經存儲之資料進行處理之動作。
載入存儲單元123藉由ACC主體121將存儲於ACC暫存器122之加速處理後之資料存儲於LM15之資料區域15-3或DSM14之資料區域14-3。其後,旗標寫入確認器123A將與該存儲處理對應之同步旗標(資料)寫入LM15或DSM14之特定位址,即15-2或14-2。將同步旗標寫入LM15或DSM14之特定位址前之期間,DTU13反復檢查LM15或DSM14之分配給同步旗標之特定位址(15-2或14-2)。若DTU13確認(檢查)寫入之同步旗標,則使用存儲於15-3或14-3之資料,開始資料傳送處理。如此,ACC12與DTU13協同動作。
又,對處理器11與DTU13之協同動作進行說明。DTU13自其他處理器核心之分散式共享記憶體14、其他處理器核心之晶載集中式共享記憶體40或晶片外集中式共享記憶體50對自身處理器核心之局部記憶體15或分散式共享記憶體14讀入處理器核心處理所需之資料,或將存儲於自身處理器核心之局部記憶體15或分散式共享記憶體14之資料傳送至其他記憶體;其動作以於處理器11將最初之資料傳送指示賦予DTU13,自局部記憶體15等讀入DTU13之自行動作所需之程式而執行。對該資料傳送之處理器11與DTU13之協同動作,已於專利文獻4予以詳述。
如上所示,第1構成例之ACC12、處理器11、及DTU13藉由相對LM15或DSM14之旗標設定及檢查,保持同步而協同動作。
圖3係表示本發明之實施形態之ACC12之第2構成例及包含ACC12之處理器核心之構成例的圖。再者,以下,對與圖1及圖2相同之構成要素附加相同之符號,適當省略重複之說明。
圖3所示之ACC12不具有載入存儲單元,因此,就ACC主體121具備旗標寫入確認器121A(相當於圖2之123A)之方面而言,其與圖2所示之ACC12相異。再者,旗標寫入確認器121A係與旗標寫入確認器123A同樣地,具有對LM15或DSM14等記憶體上之特定位址寫入同步旗標或確認寫入記憶體上之特定位址之同步旗標之功能。且,藉由處理器11或DTU13對ACC暫存器122讀寫資料,其代替圖2之載入 存儲單元123之功能。
以上所示之構成之ACC12係與處理器11、DTU13協同動作。對該協同動作進行簡單說明。
(ACC12與處理器11之協同動作)
首先,說明作為ACC12與處理器11之協同動作之一例之若處理器11結束特定處理則ACC12開始處理之動作。
若處理器11結束特定處理,則將處理結果之資料存儲於ACC暫存器122。其後,處理器11將與該特定處理對應之同步旗標寫入LM15或DSM14之特定位址,即15-2或14-2。將同步旗標寫入LM15或DSM14之特定位址前之期間,旗標寫入確認器121A反復檢查LM15或DSM14之分配給同步旗標之特定位址(15-2或14-2)。若旗標寫入確認器121A確認寫入之同步旗標,則ACC主體121使用存儲於ACC暫存器122之處理器11之處理結果之資料,開始自身之處理。具體而言,依序執行供ACC12使用之程式所包含之旗標檢查命令、資料載入命令、加速處理命令。如此,ACC12與處理器11協同動作。
接著,說明作為ACC12與處理器11之協同動作之另一例之若ACC12結束特定處理則處理器11開始處理之動作。
若ACC主體121結束處理,則將處理結果之資料存儲於ACC暫存器122。其後,旗標寫入確認器121A將與該特定處理對應之同步旗標寫入LM15或DSM14之特定位址,即15-2或14-2。將同步旗標寫入LM15或DSM14之特定位址前之期間,處理器11反復檢查LM15或DSM14之分配給同步 旗標之特定位址(15-2或14-2)。若處理器11確認寫入之同步旗標,則讀入存儲於ACC暫存器122之處理結果之資料,開始自身之處理。如此,ACC12與處理器11協同動作。
(ACC12與DTU13之協同動作)
接著,說明作為ACC12與DTU13之協同動作之一例之若ACC主體121結束處理則DTU13開始資料傳送之動作。
若ACC主體121結束特定處理,則將處理結果之資料發送至ACC暫存器122。其後,旗標寫入確認器121A將與該特定處理對應之同步旗標寫入LM15或DSM14之特定位址,即15-2或14-2。將同步旗標寫入LM15或DSM14之特定位址前之期間,DTU13係於其他之資料傳送處理完畢後,反復檢查LM15或DSM14之分配給同步旗標之特定位址(15-2或14-2)。若DTU13確認寫入之同步旗標,則讀入存儲於ACC暫存器122之資料,開始對LM15或DSM14之傳送之處理。如此,ACC12與DTU13協同動作。
接著,說明作為ACC12與DTU13之協同動作之一例之若DTU13結束資料傳送則ACC主體121開始處理之動作。
DTU13藉由特定之資料傳送處理而對ACC暫存器122寫入資料。其後,DTU13將與該特定處理對應之同步旗標寫入LM15或DSM14之特定位址,即15-2或14-2。將同步旗標寫入LM15或DSM14之特定位址前之期間,旗標寫入確認器121A反復檢查LM15或DSM14之分配給同步旗標之特定位址(15-2或14-2)。若旗標寫入確認器121A確認寫入之同 步旗標,則ACC主體121使用寫入ACC暫存器122之資料,開始自身之處理。具體而言,依序執行ACC12用之程式所包含之旗標檢查命令、資料載入命令、加速處理命令。如此,ACC12與DTU13協同動作。
如以上所示,第2構成例之ACC12、處理器11、DTU13藉由相對LM15或DSM14之旗標設定及檢查,保持同步而協同動作。
圖4係表示本發明之實施形態之ACC12之第3構成例及包含ACC12之處理器核心之構成例的圖。再者,以下,對與圖1~圖3所示之構成要素相同之構成要素附加相同之符號,適當省略重複之說明。
圖4所示之ACC12具有具備旗標寫入確認器121A之ACC主體121及具備旗標寫入確認器123A之載入存儲單元123兩者。
以上所示之構成之ACC12中,ACC主體121與載入存儲單元123係各自自行且彼此協同地動作。且,ACC主體121、載入存儲單元123係與處理器11、DTU13共同協同地動作。對該協同動作進行簡單說明。
(ACC主體121與載入存儲單元123之協同動作)
首先,說明作為ACC主體121與載入存儲單元123之協同動作之第1例之若載入存儲單元123結束將LM15內之資料讀入ACC暫存器122之處理則ACC主體121開始處理之動作。
載入存儲單元123執行將LM15內之資料讀入ACC暫存器 122之處理。其後,旗標寫入確認器123A將與該載入處理對應之同步旗標寫入LM15或DSM14之特定位址。其間,旗標寫入確認器121A反復檢查是否對LM15或DSM14寫入同步旗標。其後,若旗標寫入確認器121A確認寫入之同步旗標,則ACC主體121使用存儲於ACC暫存器122之資料,開始自身之處理。如此,ACC主體121與載入存儲單元123協同動作。
(ACC主體121與載入存儲單元123之協同動作2)
接著,對作為ACC主體121與載入存儲單元123之協同動作之第2例之若ACC主體121結束處理則載入存儲單元123將處理後之資料存儲於LM15之動作進行說明。
若ACC主體121結束特定處理,則將處理結果之資料發送至ACC暫存器122。其後,旗標寫入確認器121A將與該特定處理對應之同步旗標寫入LM15或DSM14之特定位址。其間,旗標寫入確認器123A反復檢查是否對LM15或DSM14寫入同步旗標。若旗標寫入確認器123A確認寫入之同步旗標,則載入存儲單元123開始將存儲於ACC暫存器122之資料傳送至LM15或DSM14之處理。其後,旗標寫入確認器123A對命令指定之LM15、自身處理器核心或其他處理器核心上之DSM14之特定位址寫入同步旗標。如此,ACC主體121與載入存儲單元123協同動作。
如以上所示,第3構成例之ACC12中,ACC主體121與載入存儲單元123藉由經由LM15或DSM14之旗標設定及檢查,彼此保持同步而協同動作。當然,亦可與處理器11、 DTU13保持同步而協同動作。藉此,於ACC主體121正執行加速處理時,載入存儲單元123可讀入、存儲資料。又,亦可實現每處理器11、DTU13、ACC主體121、載入存儲單元123之獨立之頻率、電源控制(FV控制)。
圖5係表示本發明之實施形態之ACC12之第4構成例及包含ACC12之處理器核心之構成例的圖。再者,以下,對與圖4所示之構成要素相同之構成要素附加相同之符號,適當省略重複之說明。
圖5所示之ACC12自具有ACC內旗標授受暫存器126之方面而言與圖4所示之ACC12相異。
ACC內旗標授受暫存器126係旗標寫入確認器121A、123A用於設定及檢查同步旗標之ACC12內部之暫存器。
以上所示之構成之ACC12中,ACC主體121與載入存儲單元123係各自自行且彼此協同地動作。且,ACC主體121、載入存儲單元123亦與處理器11、DTU13協同地動作。對該協同動作進行簡單說明。
(ACC主體121與載入存儲單元123之協同動作1)
首先,說明作為ACC主體121與載入存儲單元123之協同動作之第1例之若載入存儲單元123結束將LM15內之資料讀入ACC暫存器122之處理則ACC主體121開始處理之動作。
載入存儲單元123執行將LM15內之資料讀入ACC暫存器122之處理。其後,旗標寫入確認器123A將與該載入處理對應之同步旗標寫入ACC內旗標授受暫存器126。其間, ACC主體121執行命令所指定之其他處理,若其他處理完畢則執行旗標檢查命令。具體而言,旗標寫入確認器121A反復檢查是否對ACC內旗標授受暫存器126寫入同步旗標。其後,若旗標寫入確認器121A確認寫入之同步旗標,則ACC主體121使用存儲於ACC暫存器122之資料,開始自身之處理。若自身之處理完畢,則將處理結果存儲於ACC暫存器122。其後,於執行旗標設定命令時將命令所指定之值寫入ACC內旗標授受暫存器126之命令所指定之位置(位址)。如此,ACC主體121與載入存儲單元123協同動作。
(ACC主體121與載入存儲單元123之協同動作2)
接著,說明作為ACC主體121與載入存儲單元123之協同動作之第2例之若ACC主體121結束處理則載入存儲單元123將處理後之資料存儲於LM15之動作。
若ACC主體121結束特定處理,則將處理結果之資料發送至ACC暫存器122。其後,旗標寫入確認器121A將與該特定處理對應之同步旗標寫入ACC內旗標授受暫存器126。其間,旗標寫入確認器123A反復檢查是否對ACC內旗標授受暫存器126寫入同步旗標。若旗標寫入確認器123A確認寫入之同步旗標,則載入存儲單元123開始將存儲於ACC暫存器122之資料傳送至LM15或DSM14之處理。如此,ACC主體121與載入存儲單元123協同動作。
如以上所示,第4構成例之ACC12中,ACC主體121與載入存儲單元123藉由經由ACC內旗標授受暫存器之旗標設 定及檢查,彼此保持同步而協同動作。因此,較上述第1~第3構成例之經由LM15或DSM14之旗標設定及檢查,可降低旗標設定及檢查之負擔。
圖6係表示本發明之實施形態之旗標寫入確認器121A(123A)之構成例的圖。如圖6所示,旗標寫入確認器121A具備位址暫存器21、旗標值暫存器22、匯流排介面23、條件值暫存器24、比較器25、26、及序列發生器27。
因該旗標寫入確認器121A(123A)之動作分為寫入同步旗標之動作(旗標設定)與確認同步旗標之動作(旗標檢查),故對該動作之各個進行說明。
(旗標設定)
旗標寫入確認器121A對LM15或DSM14等記憶體上之特定位址寫入同步旗標。具體而言,處理器11對旗標寫入確認器121A輸入旗標位址(應讀入同步旗標之記憶體上之位址)、旗標值(應寫入之同步旗標之值)、及旗標設定之指示,旗標寫入確認器121A依據該指示而動作。
如此,位址暫存器21、旗標值暫存器22中分別寫入旗標位址、旗標值。且,序列發生器27中寫入旗標設定之指示。匯流排介面23基於該等輸入之資料發出匯流排請求,對指定之記憶體上之位址寫入指定之同步旗標之值。
(旗標檢查)
另一方面,旗標寫入確認器121A確認設定於LM15或DSM14等記憶體上之特定位址之同步旗標。具體而言,首先,旗標寫入確認器121A輸入旗標位址(應確認之記憶體 上之位址)、旗標值(應確認之同步旗標之值)、及旗標檢查之指示。
如此,對位址暫存器21、旗標值暫存器22分別寫入旗標位址、旗標值。且,序列發生器27中寫入旗標檢查之指示。匯流排介面23基於該等輸入之資料中之旗標位址及旗標檢查指示,發出匯流排請求,讀取存儲於指定之記憶體上之位址之同步旗標之值。
由匯流排介面23讀取之旗標值(以下,稱作「讀取旗標值」)發送至比較器26。比較器26比較讀取旗標值與旗標值暫存器22之旗標值。於兩者一致之情形時,將一致之內容輸出至序列發生器27,於兩者不一致之情形時,將不一致之內容輸出至序列發生器27。序列發生器27係於比較器26之輸出結果為不一致時,要求匯流排介面23重新讀取。另一方面,於比較器26之輸出結果為一致之情形時,通知處理完成。
另一方面,於確認同步旗標之值與特定之條件值是否一致之情形時,處理器11再對旗標寫入確認器121A輸入同步旗標之條件值。藉由指定條件值,可通知特定處理之指示。所謂此處所述之特定處理係指同步旗標之值為條件值之情形時所執行之處理,例如為與圖2之控制暫存器檔案124之值相應之處理。如此,條件值暫存器24中寫入同步旗標之條件值。該情形下,由匯流排介面23讀取之讀取旗標值發送至比較器25。比較器25比較經讀取之旗標值與存儲於條件值暫存器24之條件值。於兩者一致之情形時,將 一致之內容輸出至序列發生器27。且,於兩者不一致之情形時,將不一致之內容輸出至序列發生器27。序列發生器27係於比較器25之輸出結果為不一致之情形時,要求匯流排介面23重新讀取。另一方面,於比較器25之輸出結果為一致之情形時,通知特定處理之指示。
補充之處為:旗標寫入確認器121A對LM15或DSM14等記憶體上之特定位址寫入同步旗標之情形中,藉由變更寫入之位址,可寫入大量之同步旗標。即,根據ACC12執行之處理之進行狀況,可將表示進行經過之相異之複數個旗標寫入(輸出至)同步旗標區域。各旗標與ACC12所執行之處理之後續之處理器11或DTU13所應執行之處理對應。藉此,例如,處理器11可於與由ACC12寫入同步旗標區域之旗標對應後開始應執行之處理。再者,處理器11或DTU13亦同樣地,可根據自身執行之處理之進行狀況,將表示進行經過之相異之複數個旗標寫入同步旗標區域。
圖7係表示本發明之實施形態之旗標寫入確認器121A(123A)之旗標設定及檢查之動作概要的圖。此處,分7個階段說明旗標設定及檢查之動作。
階段(0)係初始設定之階段。即,LM15之同步旗標區域15-2中確保有供旗標變量A、旗標變量B使用之記憶區域。旗標變量A、B之值以i(i=0)而預初始化。
階段(1)中,處理器11對旗標變量A之值寫入(i+1)。階段(2)中,承接階段(1),DUT13反復檢查旗標變量A之值是否變更為(i+1)。
階段(3)中,DTU13於旗標變量A之值變更為(i+1)之情形時,執行資料傳送。階段(4)中,若DTU13結束資料傳送,則對旗標變量值B之值寫入(i+1)。
階段(5)中,承接階段(4),ACC12反復檢查旗標變量B之值是否變更為(i+1)。階段(6)中,ACC12於旗標變量B之值變更為(i+1)時,執行自身應執行之加速處理。
如以上所示般,處理器11與DTU13經由旗標變量A而協同動作。同樣地,DTU13與ACC12經由旗標變量B而協同動作。即,處理器11、ACC12及DTU13經由存儲於LM15之同步旗標區域15-2之旗標變量A、B而協同動作。
再者,旗標變量A、B除LM15以外,亦可存儲於DSM14、晶載集中式共享記憶體40、晶片外集中式共享記憶體50。例如,處理器核心10-1之DTU13亦可對晶載集中式共享記憶體40之同步旗標區域40-2寫入同步旗標。該情形中,其他處理器核心10-2~10-n之DTU13確認寫入同步旗標區域40-2之同步旗標。藉此,相異之處理器核心10-1~10-n彼此經由旗標變量而協同動作。
圖8係表示本發明之實施形態之多核心處理器系統1所執行之程式之參考例的圖。此處,首先說明利用先前之技術執行之程式。
圖8所示之程式80中,外側for語句係DTU13用於讀入資料之及用於存儲內側for語句之處理結果資料之迴圈語句。另一方面,內側for語句係相對由外側for語句所讀入之資料ACC12用於執行加速處理之迴圈語句。
外側for語句內之DTU載入語句係DTU13用於將ACC12可處理之量之資料自晶載集中式共享記憶體50寫入LM15之命令語句。內側for語句內之加速器載入語句係ACC12用於將讀入LM5之資料之一部分讀入ACC暫存器122之命令語句。運算語句係ACC12用於使用由加速器載入語句讀入之資料進行運算的命令語句。加速器存儲語句係ACC12用於將運算語句之運算結果存儲於LM15之命令語句。下一循環之準備語句係用於下一迴圈之準備處理(下一資料之基位址計算、迴圈計數運算等)之命令語句。外側for語句內之DTU存儲語句係DTU13用於將存儲於LM15內之運算結果之資料存儲於晶載集中式共享記憶體50之命令語句。圖8之程式中,將LM15用作存儲ACC所應處理之資料及經ACC處理之資料之記憶體;當然,亦可代替LM15而使用DSM14。具體而言,具有LM15之處理器核心(例如處理器核心10-1)係於為局部所利用之資料之情形時使用LM15,於為與其他處理器核心10-1~10-n所共享之資料之情形時則使用DSM14。再者,LM15與DSM14根據編譯程式之情況而分開使用。
圖9係表示執行參考例之程式時之處理流程的圖。
首先,步驟901中,處理器11對DTU13發出驅動命令(901)。其後,步驟902中,DTU13開始驅動,將ACC12可處理之量之資料自晶載集中式共享記憶體50讀入LM15(902)。若DTU13結束載入處理,則將載入處理之結束通知至處理器11。
步驟903中,自DTU13接受該通知之處理器11對ACC12發出驅動命令(903)。其後,步驟904中,ACC12開始驅動,使用步驟902中所讀入之資料之一部分進行運算,並將運算結果存儲於LM15(904)。若ACC12結束一連串之處理,則將處理之結束通知至處理器11。
步驟905中,自ACC12接受該通知之處理器11執行下一循環處理之準備(905)。其後,步驟906中,對ACC12發出驅動命令(906)。其後,僅以內側for語句之迴圈次數重複步驟903~906之處理。
若結束內側for語句之迴圈處理,則步驟907中,處理器11對DTU13發出驅動命令(907)。如此,步驟908中,DTU13開始驅動,並將存儲於LM15之運算結果之資料存儲於晶載集中式共享記憶體50。其後,僅以外側for語句之迴圈次數重複步驟901~908之處理。
如以上說明般,根據先前之技術,處理器11之處理、DTU13之處理及ACC12之處理係並不重複地逐次執行。且,DTU13與ACC12之動作由處理器11控制。
圖10係表示本發明之實施形態之多核心處理器系統1所執行之程式之第1例的圖。
如圖10所示,第1例之程式包含由處理器11執行之程式100、由DTU13執行之程式101、103、及由ACC12執行之程式102。即,於將圖8所示之利用先前技術所執行之程式80轉換為供本發明之實施形態之處理器核心使用之(追加旗標設定語句、旗標檢查語句之)後,劃分為由處理器11 執行之程式100、由DTU13執行之程式101、103、及由ACC12執行之程式102。
再者,各程式100、101、102、103包含旗標設定語句及旗標檢查語句。旗標檢查語句係反復進行確認直至寫入LM15或DSM14等記憶體上之特定位址之同步旗標變量(例如A)之值與預設之比較值一致之命令語句。於同步旗標變量中寫入旗標之情形時,前進至與該旗標對應之後續之命令語句。另一方面,旗標設定語句係用於對LM15或DSM14等記憶體上之特定位址寫入旗標,具體而言,係用於對同步旗標變量寫入資料之(更新已寫入同步旗標變量之資料)命令語句。寫入旗標後,前進至後續之命令語句。
又,各程式100、101、102、103係由後述之並行化編譯程式預先生成,並配置於LM15、DSM14等記憶體上之特定位址即15-1、14-1等。
再者,DTU13及ACC12相應處理器11對控制暫存器檔案124之資料寫入或多核心處理器1之起動而起動。其後,獨立於處理器11而自行執行程式。例如,ACC12依據程式102,首先執行旗標檢查語句,若對旗標變量C寫入旗標,則執行與寫入之旗標對應之後續之命令語句。
圖11係表示執行第1例之程式時之處理流程的圖。
首先,步驟1101中,處理器11依據程式100而動作,進入外側for語句之迴圈,對旗標變量A寫入旗標(1101)。其後,步驟1102中,確認旗標變量B(1102)。
另一方面,步驟1103中,DTU13依據程式101而動作,確認旗標變量A(1103)。若步驟1101中對旗標變量A寫入旗標,則DTU13開始資料之讀入;若資料之讀入結束,則對旗標變量B寫入旗標(1104)。此時,寫入旗標變量A之旗標返回初始狀態(重置)。
步驟1105中,若於步驟1104中旗標被寫入旗標變量B,則處理器11確認該旗標值成為特定之值,進入內側for語句之迴圈,對旗標變量C寫入旗標(1105)。其後,執行下一循環之準備(1106),並確認旗標變量D(1107)。
另一方面,步驟1108中,ACC12依據程式102而動作,確認旗標變量C(1108)。若步驟1105中對旗標變量C寫入旗標,則ACC12確認該旗標值成為特定值,開始執行加速處理;若加速處理結束,則對旗標變量D寫入旗標(1109)。此時,使寫入旗標變量C之旗標返回初始狀態。
步驟1110中,若藉由步驟1109之處理對旗標變量D寫入旗標,則處理器11進入內側for語句之下一迴圈,對旗標變量C寫入旗標(1110)。此時,使寫入旗標變量D之旗標返回初始狀態。其後,反復進行步驟1106~1110之處理。
步驟1111中,當內側for語句之迴圈處理完畢,則處理器11對旗標變量E寫入旗標(1111)。其後,確認旗標變量F(1112)。另一方面,步驟1113中,DTU13依據程式103而動作,確認旗標變量E(1113)。若步驟1111中對旗標變量E寫入旗標,則開始資料之存儲;當資料之存儲結束,則對旗標變量F寫入旗標(1114)。此時,使寫入旗標變量E之旗 標返回初始狀態。
步驟1115中,若步驟1114中對旗標變量F寫入旗標,則處理器11進入外側for語句之下一迴圈,對旗標變量A寫入旗標(1115)。此時,使寫入旗標變量F之旗標返回初始狀態。其後,反復進行步驟1102~1115之處理。
如以上之處理所示,處理器11、ACC12及DTU13經由旗標設定及旗標檢查而彼此保持同步,並各自自律地動作。根據該第1例之程式,處理器11可於步驟1109所示之ACC12之處理期間執行步驟1106之處理。即,使處理器11之處理與ACC12之處理重疊。因此,可提前下一循環之準備(步驟1106之處理)之開始時間。即,可隱蔽處理器11之ACC12之控制負擔。
又,因ACC12依據存儲於LM15或DSM14之程式102而動作,故無需擴展命令集。即,可在不擴展命令集之情形下對任意處理器11追加任意ACC12。
再者,第1例之程式係可重複外側for語句及內側for語句之迴圈處理者。因此,亦可以每次重複迴圈處理時寫入與重複次數相應之旗標值地構成程式。例如,在內側for語句所表示之迴圈處理之第n次循環中,對同步旗標變量C、D寫入附加有序號n之旗標值(例如Cn、Dn)並予以確認。藉此,可降低使旗標值返回初始狀態之負擔。
又,執行旗標檢查語句時,根據設定於FVR124之值,經過特定時間前之期間係亦可以使時脈頻率變更為低頻或將其切斷地構成程式。藉此,可降低旗標檢查之消耗電 力。
圖12係表示執行第1例之程式時之處理流程的變化例。
此處,說明之處理為:作為圖11所示之處理流程之變化例之處理器11於滿足特定條件之情形時(條件分歧或迴圈次數達到一定次數之情形時),對旗標變量C'寫入旗標,而ACC12則執行與寫入旗標變量C'之旗標相應之動作。再者,用於執行如此之處理之供處理器11、ACC12使用之程式由後述之並行化編譯程式生成,並配置於LM15、DSM14等記憶體上之特定位址。
步驟1116中,處理器11執行內側for語句之迴圈處理期間,於滿足特定條件之情形時(條件分支或迴圈次數達到一定次數之情形時),對旗標變量C'寫入作為旗標之條件值(1116)。如上述般,條件值係通知特定處理之指示者。另一方面,ACC12確認旗標變量C'(1117)。若步驟1115中對旗標變量C'寫入條件值,則ACC12開始特殊之動作。特殊之動作係指例如讀取控制暫存器檔案124,執行讀取之值所表示之下一任務之動作。
如以上之處理所示,處理器11、ACC12及DTU13經由旗標設定及旗標檢查而彼此保持同步,並各自自行地動作。進而,根據該變化例之程式,即使ACC12正在執行加速處理,處理器11仍可在滿足特定條件之情形下,使ACC12進行特殊動作地進行變更。即,可實現動態之定序。
圖13係表示本發明之實施形態之多核心處理器系統1所執行之程式之第2例的圖。
如圖13所示,第2例之程式包含由處理器11執行之程式130、及由DTU13執行之程式131、133、由ACC12執行之程式132。即,將圖8所示之程式80轉換為供本發明之實施形態之處理器核心使用之(追加旗標設定語句、旗標檢查語句等之)後,劃分為由處理器11執行之程式130、由DTU13執行之程式131、133、及由ACC12執行之程式132。
再者,各程式130、131、132、133包含與圖10所示之形態相異之旗標設定語句及旗標檢查語句。即,處理器11之內側for語句之處理完畢(旗標設定(H))決定ACC12之加速處理執行之開始(旗標檢查(H))。另一方面,ACC12之加速處理之完畢(旗標設定(G))決定處理器11之內側for語句之處理執行之開始(旗標檢查(G))。
如此之各程式130、131、132、133由後述之並行化編譯程式預先生成,並配置於LM15、DSM14等記憶體上之特定位址。
圖14係表示執行第2例之程式時之處理流程的圖。
首先,步驟1401中,處理器11依據程式130而動作,進入外側for語句之迴圈,對旗標變量A寫入旗標(1401)。其後,步驟1402中,確認旗標變量B(1402)。
另一方面,步驟1403中,DTU13依據程式131而動作,檢查旗標變量A(1403)。若確認步驟1401中對旗標變量A寫入旗標,則DTU13開始資料之讀入;若資料讀入結束,則對旗標變量B寫入旗標(1404)。此時,使寫入旗標變量A之 旗標返回初始狀態(重置)。
處理器11係一旦步驟1404中對旗標變量B寫入旗標,則進入內側for語句之迴圈,確認旗標變量G(1405)。此處,設旗標變量G中寫入作為初始設定之旗標。其後,執行下一循環之準備(1406),並對旗標變量H寫入旗標(1407)。此時,使寫入旗標變量G之旗標返回初始狀態。其後,進行入外側for語句之下一迴圈,確認旗標變量G(1408)。其後,重複步驟1406~1408之處理。
另一方面,步驟1409中,ACC12依據程式132而動作,確認旗標變量B(1409)。若步驟1404中對旗標變量B寫入旗標,則確認旗標變量H(1410)。此處,設旗標變量H中寫入作為初始設定之旗標。其後,開始執行加速處理;若加速處理完畢,則對旗標變量G寫入旗標(1411)。此時,使寫入旗標變量H之旗標返回初始狀態。其後,重複步驟1410~1411之處理。
步驟1412中,若內側for語句之迴圈處理結束,則處理器11對旗標變量E寫入旗標(1412)。其後,確認旗標變量F(1413)。另一方面,步驟1414中,DTU13依據程式133而動作,確認旗標變量E(1414)。若步驟1412中對旗標變量E寫入旗標,則開始資料之存儲;若資料存儲完畢,則對旗標變量F寫入旗標(1415)。此時,使寫入旗標變量E之旗標返回初始狀態。
步驟1416中,處理器11係一旦步驟1415中對旗標變量F寫入旗標,則進入外側for語句之下一迴圈,對旗標變量A 寫入旗標(1416)。此時,使寫入旗標變量F、B之旗標返回初始狀態。其後,重複步驟1402~1416之處理。
如以上之處理所示,處理器11、ACC12及DTU13經由旗標設定及旗標檢查而彼此保持同步,並各自自行地動作。根據該第2例之程式,處理器11可於步驟1411所示之ACC12之處理期間,執行步驟1406之處理。即,處理器11之處理與ACC12之處理重疊。
又,根據步驟1407之處理,在ACC12執行步驟1417、1418之處理之前,可自處理器11啟動ACC12之控制。因此,可僅以處理器11之旗標設定及檢查之程度提前下一循環之準備(步驟1406)之開始時間。即,可隱藏處理器11之ACC12之控制負擔。
再者,第2例之程式係與第1例之程式同樣地,可重複外側for語句、內側for語句之迴圈處理者。因此,亦可以每次重複迴圈處理時寫入與重複次數相應之旗標值地構成程式。例如,內側for語句所表示之迴圈處理之第n次重複中,對同步旗標變量H寫入附加有序號n之旗標值(例如Hn)並予以確認。藉此,可降低使旗標值返回初始狀態之負擔。
又,執行旗標檢查語句時,根據設定於FVR124之值,經過特定時間前之期間係亦可以使時脈頻率變更為低頻或將其切斷等地構成程式。藉此,可降低旗標檢查之消耗電力。
圖15係表示本發明之形態之多核心處理器系統1所執行 之程式之第3例的圖。
如圖15所示,第3例之程式包含由處理器11執行之程式150、由DTU13執行之程式151、153、及由ACC12執行之程式152、154。即,於將圖8所示之程式80轉換為供本發明之實施形態之處理器核心使用之(追加旗標設定語句、旗標檢查語句等之)後,劃分為由處理器11執行之程式150、由DTU13執行之程式151、由DTU13執行之程式153、由ACC12執行之程式152及由ACC12執行之程式154。
又,自供處理器11使用之程式150係劃分為複數個內側for語句之方面(圖15中,外側for語句之第奇數次迴轉(第2n+1次迴轉;以下,僅稱作「第奇數次迴轉」)及第偶數次迴轉(第2n次迴轉;以下,僅稱作「第偶數次迴轉」)與圖10所示之程式100相異。
同樣地,供DTU13使用之程式亦劃分為複數個(圖15中為程式151及153)。程式151係用於存儲存儲於LM15之第偶數次迴轉之計算結果並將後續之第偶數次迴轉之計算用之資料讀入LM15之程式。另一方面,程式153係用於存儲存儲於LM15之第奇數次迴轉之計算結果並將後述之第奇數次迴轉之計算用之資料讀入LM15之程式。再者,於LM15中未存儲計算結果之情形時,則不執行計算結果之存儲。
又,供ACC12使用之程式亦劃分為複數個(圖15中為程式152、154)。程式152係用於執行第奇數次迴轉之加速處 理之程式。另一方面,程式154係用於執行第偶數次迴轉之加速處理之程式。
再者,各程式150、151、152、153、154包含與圖10所示之形態相異之旗標設定語句及旗標檢查語句。如此之各程式150、151、152、153、154係由後述之並行化編譯程式而預先生成,並配置於LM15、DSM14等記憶體上之特定位址。
圖16係表示執行第3例之程式時之處理流程的圖。
首先,步驟1601中,處理器11依據程式150而動作,進入外側for語句之迴圈,執行對旗標變量A1之旗標寫入及旗標變量B0之確認(1601)。
其後,步驟1602中,處理器11進入外側for語句之第奇數次迴轉(為便於說明,設為第1次迴轉)之迴圈,重複旗標變量G0之確認、下一循環之準備、及對旗標變量H0之旗標寫入(1602)。因該步驟1602之處理與圖14之步驟1405~1407之處理之循環相同,故此處省略說明。再者,使寫入旗標變量B0之旗標返回初始狀態(重置)。
另一方面,步驟1603中,DTU13依據程式151而動作,執行旗標變量A1之確認、資料之存儲、資料之讀入及對旗標變量B1之旗標寫入(1603)。該步驟1603之處理中,因不存在應存儲之資料,故DTU13將後續之第偶數次迴轉即第2次迴轉之加速處理(步驟1608)用之資料讀入LM15。
另一方面,步驟1604中,ACC12依據程式152而動作,執行旗標變量B0之確認、旗標變量H0之確認、及第1次迴 轉之加速處理(1604)。此時,使寫入旗標變量B0、H0之旗標返回初始狀態。
如以上之步驟1601~1604之處理所示,處理器11、ACC12與DTU13經由旗標設定及旗標檢查而彼此保持同步並各自自行地動作。特別地,於ACC12執行第1次迴轉之加速處理期間,DTU13可存儲上次加速處理(此處並不存在)之計算結果之資料,並讀入第2次迴轉之加速處理所使用之資料。即,可使處理器11之處理、ACC12之處理、及DTU13之處理重疊。
其後,步驟1605中,處理器11執行對旗標變量A0之旗標寫入及旗標變量B1之確認(1605)。
其後,步驟1606中,處理器11進入外側for語句之第2次迴轉之迴圈,重複旗標變量G1之確認、下一循環之準備、及對旗標變量H1之旗標寫入(1606)。因該步驟1606之處理亦與圖14之步驟1405~1407之處理之循環相同,故此處省略說明。再者,使寫入旗標變量B1之旗標返回初始狀態。其後,處理器11重複步驟1601、1602、1605及1606之處理。
另一方面,步驟1607中,DTU13依據程序153而動作,執行旗標變量A0之確認、資料之存儲、資料之讀入、及對旗標變量B0之旗標寫入(1607)。該步驟1606之處理中,將步驟1604所示之第1次迴轉之加速處理之計算結果存儲於LM15,且,將後續之第奇數次迴轉即第3次迴轉之加速處理用之資料讀入LM15。其後,DTU13重複步驟1603及 1607之處理。
又,步驟1608中,ACC12依據程式154而動作,執行旗標變量B1之確認、旗標變量H1之確認、及第2次迴轉之加速處理(1608)。該步驟1608之處理中,執行相對步驟1603中讀入之第2次迴轉之加速處理用之資料之加速處理。此時,使寫入旗標變量B1、H1之旗標返回初始狀態。其後,ACC12重複步驟1604及1608之處理。
如以上之步驟1605~1608之處理所示,處理器11、ACC12、及DTU13經由旗標設定及旗標檢查而彼此保持同步,並各自自行地動作。特別地,於ACC12執行第2次迴轉之加速處理期間,DTU13可存儲第1次迴轉之加速處理之計算結果之資料,且讀入第3次迴轉之加速處理所使用之資料。即,可使處理器11之處理、ACC12之處理、及DTU13之處理重疊。
如以上之處理所示,處理器11、ACC12、及DTU3經由旗標設定及旗標檢查而彼此保持同步,並各自自行地動作。根據該第3例之程式,於ACC12執行加速處理(例如第奇數次迴轉之處理)期間,DTU13可存儲前次加速處理(第偶數次迴轉之處理)之計算結果之資料,並可讀入下次加速處理(第偶數次迴轉之處理)所使用之資料。
又,藉由劃分為ACC12之處理用之資料區域、DTU13之資料存儲用之資料區域、及DTU13之資料載入用之資料區域(三重緩衝),並使處理器11之處理、ACC12之處理、DTU13之處理重疊,可隱蔽資料傳送之負擔,並使處理高 速化。且,於與上述第2例之程式相比之情形時,可僅以該資料傳送之負擔之程度進一步縮短計算時間。
再者,第3例之程式係與第1及第2例之程式同樣地重複外側for語句及內側for語句之迴圈處理者。因此,亦可以於每次重複迴圈處理時寫入與重複次數相應之旗標值地構成程式。例如,內側for語句所示之迴圈處理之第n次重複中,對旗標變量H0、H1寫入附加有序號n之旗標值(例如H0n、H1n)並予以確認。藉此,可降低使旗標值返回初始狀態之負擔。
又,執行旗標檢查語句時,根據設定於FVR124之值,經過特定時間前之期間係可以使時脈頻率變更為低頻或將其切斷等地構成程式。藉此,可降低旗標檢查之消耗電力。
圖17係表示執行本發明之實施形態之多核心處理器系統1所執行之程式之第4例時之處理流程的圖。
第4例之程式包含由處理器11執行之程式1701~1703、由DTU13執行之程式1704~1710及由ACC12執行之程式1711~1725。
再者,於考慮到LM15等記憶體尺寸而將多核心處理器核心1所執行之程式之一連串處理劃分為複數個迴圈處理之情形時,程式1701~1703係與各迴圈處理對應之處理器11用之程式。同樣地,程式1704~1710、程式1711~1725分別為上述情形之DTU13用之程式、ACC12用之程式。
該等程式1701~1725由後述之並行化編譯程式預先生 成,並配置於LM15、DSM14等記憶體上之特定位址。
再者,程式1701包含寫入用於協同程式1704之處理之旗標之程式、寫入用於協同程式1712之處理之旗標之程式、及處理器11自LM15、DSM14等讀入資料而進行運算處理之程式(即可與ACC12等並行動作之處理器11之程式)。同樣地,程式1702及1703包含寫入用於協同DTU13或ACC12之處理之旗標之程式。
程式1704係DTU13事先將程式1716中之ACC12之加速處理所使用之資料讀入(預載)至LM15或DSM14之程式。該程式1704將被後述之並行化編譯程式最佳化之尺寸之資料預載至LM15或DSM14。該程式1704包含讀入用於協同程式1715之處理之旗標之程式。
程式1705係確認程式1702之處理所寫入之旗標之程式。
程式1706係DTU13事先將程式1722中之ACC12之加速處理所使用之資料預載於LM15或DSM14之程式。該程式1706係與程式1704同樣地,將由後述之並行化編譯程式最佳化之尺寸之資料預載於LM15或DSM14。該程式包含寫入用於協同程式1721之處理之旗標之程式。
程式1707係將程式1713中之ACC12存儲於LM15或DSM14等記憶體之資料存儲(post存儲)於晶載集中式共享記憶體40或晶片外集中式共享記憶體50之程式。該程式1707包含確認寫入程式1713之旗標之程式。因程式1708~1710與程式1705~1707相同,故此處省略說明。
程式1711係確認程式1701之處理所寫入之旗標之程式。 程式1712係ACC12與處理器11協同且穩定地重複執行加速處理之程式。再者,為便於說明,此處,設執行加速處理時所使用之資料被事先預載。程式1713係將程式1712之加速處理之計算結果之資料存儲於LM15或DSM14等記憶體之程式。
程式1714係確認程式1704之處理所寫入之旗標之程式。程式1715係將程式1704之處理中之由DTU13預載於LM15或DSM14之資料讀入ACC暫存器122之程式。程式1716係ACC12對讀入ACC暫存器122之資料執行加速處理之程式。
因程式1717~1725與程式1711~1716相同,故此處省略說明。
如以上之處理所示,處理器11、ACC12及DTU13經由旗標設定及旗標檢查而彼此保持同步,並各自自行地動作。根據該第4例之程式,可於將ACC12之處理劃分為與DTU13協同(鏈鎖作用)而執行處理之部分(例如程式1716)及與處理器11協同而執行循環處理之部分(例如程式1718)後,執行處理。因此,例如,因與DTU13之間之協同處理係在不經由處理器11之情形下執行加速處理,故可隱蔽處理器11之控制負擔。
又,藉由預載處理,DTU13係於ACC12執行加速處理期間,將已被並行化編譯程式劃分為最恰當尺寸之ACC12之下次處理用之資料讀入LM15等。因此,可緊隨ACC12而供給資料。另一方面,藉由post存儲處理,DTU13可於 ACC12執行加速處理期間,自LM15等存儲ACC12之加速處理之計算結果之資料。
圖18係表示執行本發明之實施形態之多核心處理器系統1所執行之程式之第5例時之處理流程的圖。此處,說明複數個相異之處理器核心10-1、10-2上之DTU13-1、ACC12-1、DTU13-2經由旗標設定及檢查而協同之動作。
第5例之程式包含由處理器核心10-1之處理器11-1執行之程式1801、1802;由DTU13-1執行之程式1803、1804;及由ACC12-1執行之程式1805、1806。且,包含由處理器核心10-2之處理器11-2執行之程式1811、及由DTU13-2執行之程式1812、1813。
供處理器核心10-1使用之程式1801~1806由後續之並行化編譯程式預先生成,並配置於處理器核心10-1之LM15、DSM14等記憶體上之特定位址。另一方面,供處理器核心10-2使用之程式1807~1809配置於處理器核心10-2之LM15、DSM14等記憶體上之特定位址。
再者,程式1801係處理器11-1執行任務1之程式。該程式1801包含於執行任務1時將用於協同DTU13-1之程式1803之處理之旗標寫入處理器核心10-1之LM15等程式。程式1802係處理器11-1執行任務2之程式。
程式1803係確認處理器11-1之程式1801之處理所寫入旗標之程式。程式1804係DTU13-1將存儲於LM15或DSM14之處理器11-1之計算結果之資料存儲於晶片外集中式共享記憶體50之程式。該程式1804包含將用於協同DTU13-2之 程式1812之處理之旗標寫入處理器核心102-之DSM14之程式。
程式1805係ACC12-1確認DTU13-2之程式1812之處理所寫入之旗標之程式。程式1806係ACC121-對DTU13-2之程式1813所傳送之資料執行加速處理之程式。
程式1811係處理器11-2執行任務3之程式。程式1812係DTU13-2確認DTU13-1之程式1804之處理所寫入之旗標之程式。程式1813係DTU13-2將存儲於LM15或DSM14之處理器11-2之計算結果之資料存儲於處理器核心10-1之DSM14之程式。該程式1813包含將用於協同ACC12-1之程式1805之處理之旗標寫入處理器核心10-1之DSM14之程式。
如以上之處理所示,複數個相異之處理器核心10-1、10-2上之處理器11、ACC12及DTU13經由旗標設定及旗標檢查而彼此保持同步,並可各自自行地動作。
自與本發明相關之以上說明可知,不僅如處理器核心10-1、10-2般於2個處理器核心之間,所有處理器核心10-1~10-n(之處理器11、ACC12、及DTU13)皆可於並行執行並行化編譯程式自逐次處理程式生成之供各處理器核心使用之程式之情形中自行進行其處理之同步化。又,藉此,即使追加ACC12仍無需另行擴展命令集,且,藉由可大幅降低伴隨同步化之處理器11、ACC12、DTU13之參與即負擔,可執行有效之運算處理。
圖19係本發明之實施形態之並行化編譯程式所執行之處 理的流程圖。此處,說明自逐次處理程式生成之並行化編譯程式於計算機上執行包含本發明之實施形態之ACC之處理器系統上所執行處理之並行化程式。所謂編譯程式一般係指將編譯對象之來源程式轉換為所謂計算機可執行之程式(機器語言之程式等)之軟體,但本發明所述之並行化編譯程式如上述般係指自逐次處理程式之來源代碼生成並行化程式之編譯程式。
首先,並行化編譯程式解析來源程式之語句,解析程式之語法(1901)。再者,本實施形態中,雖由編譯化程式解析程式,但亦可由程式設計師(人)解析程式。且,製作程式時,亦可製作本實施形態所需程式之資訊。
接著,並行化編譯程式基於語法之解析結果,生成階段性任務,即生成程式之階段性之宏任務之表示(1902)。此處,生成包含供處理器11使用之任務、供ACC12使用之任務等之粗粒度任務(宏任務)。再者,於生成之宏任務可進行迴圈迭代層級之並行處理或逐次處理之情形中,考慮到LM15等之記憶體尺寸而劃分為相異之複數個宏任務(迴圈整合分解)。
其後,解析生成之任務間之依存關係(控制流程)(1903),解析任務間之資料依存(1904),解析各任務所存取之資料範圍(1905)。
其後,利用程式之解析結果,解析程式可最快執行之條件(1906),利用最快執行條件之解析結果,決定並行處理區間或分配有任務之處理器數量,生成宏任務旗標。
其後,執行決定各任務之執行順序之任務排程(1907)。此處所執行之任務排程執行記憶體管理任務排程、資料傳送排程、及低消耗電力排程。
所謂記憶體管理任務排程係指用於執行經由各處理器核心10-1~10-n之LM15之有效資料授受之排程。
所謂資料傳送排程係指如圖17之例所示之預載或post存儲般,用於實現各處理器核心10-1~10-n之資料傳送及多核心處理器核心1全體之資料傳送之最佳化之排程。
所謂低消耗電力排程係指於處理器11、ACC12、DTU13處於等待狀態之情形時,用於相應等待時間實現使時脈頻率變為低頻或切斷電源之電力控制之排程。
其後,基於步驟1907所執行之任務排程,生成多核心處理器系統1可執行之並行程式(1908)。該並行程式包含供處理器11使用之任務、供ACC12使用之任務、供DTU13使用之任務之命令語句。此處生成之並行程式中,對彼此依存之供處理器11使用之任務、供ACC12使用之任務及供DTU13使用之任務之命令語句插入旗標設定語句、旗標檢查語句。該等供ACC12使用之任務、供DTU13使用之任務之命令語句及旗標區域配置於DSM14、LM15、晶載集中式共享記憶體40、晶片外集中式共享記憶體50中之至少一個以上之記憶體。
再者,亦可使旗標之值對應特定之動作,指定旗標檢查後之動作。例如,於檢查之旗標之值為特定值之情形時,確認控制暫存器檔案124之值,執行處理器11所指定之命 令列(任務)而構成供ACC12使用之旗標檢查語句。
如以上所示,並行化編譯程式以各處理器11、ACC12、DTU13用地生成各自之程式。其後,並行化編譯程式將生成之程式存儲於各處理器核心10-1~10-n之LM15、DSM14、晶載集中式共享記憶體40、晶片外集中式共享記憶體50上之特定位址。
以上,雖已對本發明之實施形態予以說明,但上述實施形態係表示本發明之適用例之一例者,本發明之技術範圍並非限定於上述實施形態之具體構成。於不脫離本發明之要旨之範圍內可進行各種變更。
例如,本發明之實施形態中,雖已對處理器11、ACC12、DTU13經由旗標設定及檢查而彼此同步之動作予以說明,但並非局限於該情形。各裝置亦可利用旗標設定及檢查以外之方法,即藉由發出及確認表示自裝置之處理完成之通知而彼此同步。
1‧‧‧多核心處理器系統
2‧‧‧半導體晶片
10‧‧‧處理器核心
11‧‧‧處理器
12‧‧‧ACC(加速器)
13‧‧‧DTU(資料傳送裝置)
14‧‧‧DSM(分散式共享記憶體)
15‧‧‧LM(局部記憶體)
16‧‧‧匯流排介面
17‧‧‧FVR(FV暫存器)
18‧‧‧處理器核心內連結網路
20‧‧‧ACC(加速器)
21‧‧‧位址暫存器
22‧‧‧旗標值暫存器
23‧‧‧匯流排介面
24‧‧‧條件值暫存器
25‧‧‧比較器
26‧‧‧比較器
27‧‧‧序列發生器
30‧‧‧DTU(資料傳送裝置)
40‧‧‧晶載集中式共享記憶體
50‧‧‧晶片外集中式共享記憶體
121‧‧‧ACC主體(處理部)
121A‧‧‧旗標寫入確認器(處理部側旗標寫入確認器)
122‧‧‧ACC暫存器
123‧‧‧載入存儲單元
123A‧‧‧旗標寫入確認器(載入存儲單元側旗標寫入確認器)
124‧‧‧控制暫存器檔案
125‧‧‧FVR(FV暫存器)
126‧‧‧ACC內旗標授受暫存器
圖1係表示本發明之實施形態之多核心處理器系統之構成例的圖。
圖2係表示本發明之實施形態之ACC之第1構成例及包含ACC之處理器核心之構成例的圖。
圖3係表示本發明之實施形態之ACC之第2構成例及包含ACC之處理器核心之構成例的圖。
圖4係表示本發明之實施形態之ACC之第3構成例及包含ACC之處理器核心之構成例的圖。
圖5係表示本發明之實施形態之ACC之第4構成例及包含ACC之處理器核心之構成例的圖。
圖6係表示本發明之實施形態之旗標寫入確認器之構成例的圖。
圖7係表示本發明之實施形態之旗標寫入確認器之旗標設置、校對之動作之概要的圖。
圖8係表示本發明之實施形態之多核心處理器系統所執行之程式之參考例的圖。
圖9係表示執行參考例之程式時之處理流程的圖。
圖10係表示本發明之實施形態之多核心處理器系統所執行之程式之第1例的圖。
圖11係表示執行第1例之程式時之處理流程的圖。
圖12係表示執行第1例之程式時之處理流程之變化例的圖。
圖13係表示本發明之實施形態之多核心處理器系統所執行之程式之第2例的圖。
圖14係表示執行第2例之程式時之處理流程的圖。
圖15係表示本發明之實施形態之多核心處理系統所執行之程式之第3例的圖。
圖16係表示執行第3例之程式時之處理流程的圖。
圖17係表示執行本發明之實施形態之多核心處理器系統所執行之程式之第4例時之處理流程的圖。
圖18係表示執行本發明之實施形態之多核心處理器系統所執行之程式之第5例之處理流程的圖。
圖19係表示本發明之實施形態之並行化編譯程式所執行之處理的流程圖。
11‧‧‧處理器
12‧‧‧ACC(加速器)
13‧‧‧DTU
14‧‧‧DSM(ACC命令列、同步旗標)
15‧‧‧LM(ACC命令列、同步旗標)
17‧‧‧FVR
18‧‧‧處理器核心內連結網路
121‧‧‧ACC主體
122‧‧‧ACC暫存器/局部記憶體
123‧‧‧載入存儲單元
123A‧‧‧旗標寫入確認器
124‧‧‧控制暫存器檔案
125‧‧‧FVR

Claims (21)

  1. 一種處理器系統,其特徵在於,其係於半導體晶片上具備處理器核心者,該處理器核心包含進行運算處理之處理器、記憶體、及經由連結網路而連接於上述處理器及上述記憶體之加速器;上述記憶體包含:命令區域,其預先記憶上述處理器及上述加速器所執行之任務;同步旗標區域,其記憶用於使上述處理器與上述加速器之間之各動作同步之旗標;及資料區域,其存儲上述處理器及上述加速器於處理中使用之資料及處理後之資料;上述加速器依據記憶於上述命令區域之任務而動作;若確認表示上述處理器之特定處理完成之旗標被寫入上述同步旗標區域,則即使上述處理器正在執行其他處理,仍讀入被寫入上述資料區域之資料並執行與該旗標對應之任務,而開始加速處理;於上述加速處理完成後,將上述加速處理後之資料存儲於上述資料區域,進而將表示該加速處理完成之旗標寫入上述同步旗標區域;上述處理器若確認表示上述加速處理完成之旗標被寫入上述同步旗標區域,則即使上述加速器正在執行其他處理,仍開始與該旗標對應之任務。
  2. 如請求項1之處理器系統,其中上述加速器及上述處理器之各者根據自身所執行之處 理之進行狀況,將後續應執行之任務各自所對應之相異之複數個旗標寫入上述同步旗標區域,且由後續執行任務之上述加速器及上述處理器各自確認被寫入上述同步旗標區域之旗標,並執行上述對應之任務。
  3. 如請求項1或2之處理器系統,其中上述記憶體包含上述加速器及上述處理器可存取之局部記憶體、及其他處理器核心亦可存取之分散式共享記憶體之至少一者;上述處理器核心進而包含於上述記憶體間傳送資料之資料傳送單元;上述同步旗標區域包含記憶用於使資料傳送單元、處理器及加速器之間之各動作同步之旗標之區域;上述命令區域包含預先記憶由資料傳送單元執行之任務之區域;上述加速器若確認表示上述資料傳送單元之特定資料傳送處理完成之旗標被寫入上述同步旗標區域,則即使上述資料傳送單元正在執行其他資料傳送處理,仍讀入被寫入上述資料區域之資料並執行與該旗標對應之任務,而開始加速處理;上述加速處理完成後,將上述加速處理後之資料存儲於上述資料區域,進而將表示該加速處理完成之旗標寫入上述同步旗標區域;上述資料傳送單元若確認表示上述加速處理完成之旗 標被寫入上述同步旗標區域,則即使上述加速器正在執行其他處理,仍執行與該旗標對應之任務,而開始資料傳送處理。
  4. 一種處理器系統,其特徵在於,其係於半導體晶片上具備處理器核心者,該處理器核心包含作為構成要素之進行運算處理之處理器、記憶體、於上述記憶體間傳送資料之資料傳送單元、及經由連結網路而連接於上述處理器、上述記憶體及上述資料傳送單元之加速器;上述記憶體包含:命令區域,其預先記憶上述處理器、上述資料傳送單元及上述加速器之各構成要素所執行之任務;同步旗標區域,其記憶用於使上述各構成要素間之各動作同步之旗標;及資料區域,其存儲上述各構成要素於處理中使用之資料及處理後之資料;上述各構成要素依據記憶於上述命令區域之與上述各構成要素對應之任務而動作;若上述處理器、上述資料傳送單元及上述加速器中任一個構成要素完成特定之處理,則將處理後之資料存儲於上述資料區域,進而將表示該處理完成之旗標寫入上述同步旗標區域;若上述一構成要素以外之其他構成要素確認上述旗標被寫入,則即使上述一構成要素正在執行其他處理,上述其他構成要素仍讀入存儲於上述資料區域之上述處理後之資料,開始與該旗標對應之任務,且於與該旗標對應之任務完成後,將執行與上述該旗標對應之任務後之資料存儲於上述資料區域,進而將表示 與上述該旗標對應之任務完成之旗標寫入上述同步旗標區域;上述處理器、上述資料傳送單元及上述處理器中之上述其他構成要素以外之構成要素若確認表示與上述該旗標對應之任務完成之旗標被寫入上述同步旗標區域,則即使上述其他構成要素正在執行其他處理,仍開始執行與該旗標對應之任務。
  5. 如請求項1至4中任一項之處理器系統,其中上述各構成要素所執行之任務係參照由上述處理器系統執行之程式之解析所得之資訊而自上述程式所生成者;上述生成之任務係與上述旗標相關聯。
  6. 如請求項1至5中任一項之處理器系統,其中上述加速器包含執行加速處理之處理部、暫時存儲上述處理部所處理之資料之內部記憶區域、及於上述內部記憶區域與上述記憶體之間執行資料傳送之載入存儲單元;上述載入存儲單元具有載入存儲單元側旗標寫入確認器,其根據上述內部記憶區域與上述記憶體之間之資料傳送之執行狀況,對上述同步旗標區域寫入旗標及確認旗標已被寫入上述同步旗標區域。
  7. 如請求項1至5中任一項之處理器系統,其中上述加速器包含執行加速處理之處理部、及暫時存儲上述處理部所處理之資料之內部記憶區域;上述處理部包含處理部側旗標寫入確認器,其根據上 述內部記憶區域與上述處理部之間之資料傳送之執行狀況,對上述同步旗標區域寫入旗標及確認旗標已被寫入上述同步旗標區域。
  8. 如請求項1至5中任一項之處理器系統,其中上述加速器包含執行加速處理之處理部、暫時存儲由上述處理部處理之資料之內部記憶區域、及於上述內部記憶區域與上述記憶體之間執行資料傳送之載入存儲單元;上述處理部包含處理部側旗標寫入確認器,其根據該處理部執行處理之狀況,對上述同步旗標區域寫入旗標及確認對上述同步旗標區域之旗標寫入;且上述載入存儲單元具有載入存儲單元側旗標寫入確認器,其根據該載入存儲單元執行處理之狀況,對上述同步旗標區域寫入旗標及確認對上述同步旗標區域之旗標寫入。
  9. 如請求項1至5中任一項之處理器系統,其中上述加速器包含執行加速處理之處理部、暫時存儲上述處理部所處理之資料之內部記憶區域、執行上述內部記憶區域與上述記憶體之間之資料傳送之載入存儲單元、及記憶用於使上述處理部與上述載入存儲單元之動作同步之旗標之旗標授受暫存器;上述處理部包含處理部側旗標寫入確認器,其根據該處理部執行處理之狀況,對上述同步旗標區域或上述旗標授受暫存器寫入旗標,及確認旗標已被寫入上述同步 旗標區域或上述旗標授受暫存器;且上述載入存儲單元包含載入存儲單元側旗標寫入確認器,其根據該載入存儲單元執行處理之狀況,對上述同步旗標區域或上述旗標授受暫存器寫入旗標,及確認旗標已被寫入上述同步旗標區域或上述旗標授受暫存器。
  10. 如請求項1至5中任一項之處理器系統,其中上述處理器系統具備複數個上述處理器核心。
  11. 如請求項10之處理器系統,其中上述處理器系統具備由複數個上述處理器核心所共享之上述半導體晶片上之晶載集中式共享記憶體及由複數個上述處理器核心所共享之上述半導體晶片之外部之晶片外集中式共享記憶體中之至少一者。
  12. 如請求項1至6中任一項之處理器系統,其中上述加速器具備決定對該加速器之供給電壓或動作頻率,及用於控制電源之FV暫存器;且上述加速器於確認旗標已被寫入上述同步旗標區域後,根據設定於上述FV暫存器之值,執行該加速器之時脈頻率之增減、電源電壓之增減及電源入/切之至少一者。
  13. 如請求項3或4之處理器系統,其中上述記憶體進而包含設置於上述加速器內之記憶體及暫存器之至少一者;上述資料傳送單元若確認表示上述加速處理完成之旗標被寫入上述同步 旗標區域,則即使上述處理器或上述加速器正在執行其他處理,仍將上述加速器之加速處理之計算結果之資料自上述加速器存儲於上述記憶體;即使上述處理器或上述加速器正在執行其他處理,仍執行自上述記憶體事先對上述加速器讀入上述加速器在下次加速處理所使用之資料之載入處理;且將表示上述載入處理完成之旗標寫入上述同步旗標區域。
  14. 一種加速器,其特徵在於:其包含於處理器系統中者,該處理器系統包含進行運算處理之處理器、記憶資料之記憶體、及經由連結網路而連接之加速器構成;上述記憶體包含:命令區域,其事先記憶上述處理器及上述加速器所執行之任務;同步旗標區域,其記憶用於使上述處理器與上述加速器之間之各動作同步之旗標;及資料區域,其存儲上述處理器及上述加速器於處理中使用之資料及處理後之資料;上述加速器具備執行加速處理之處理部及暫時存儲由上述處理部處理之資料之內部記憶區域,且依據記憶於上述命令區域之任務而動作,若確認表示上述處理器之特定處理完成之旗標被寫入上述同步旗標區域,則即使上述處理器正在執行其他處理,仍由上述處理部執行與該旗標對應之任務,而開始加速處理;且 上述加速處理完成後,將上述加速處理之計算結果之資料寫入上述內部記憶區域,並將表示該加速處理完成之旗標寫入上述同步旗標區域。
  15. 如請求項14之加速器,其中上述處理器及上述加速器所執行之任務係參照上述處理器系統所執行之程式之解析所得之資訊而自上述程式生成者;上述生成之任務係與上述旗標相關聯。
  16. 如請求項14或15之加速器,其中上述加速器根據自身所執行之處理之進行狀況,將與後續應執行之任務分別對應之相異之複數個旗標寫入上述同步旗標區域。
  17. 如請求項13至16中任一項之加速器,其中上述加速器具備決定對該加速器之供給電壓或動作頻率及用於控制電源之FV暫存器;且上述加速器於確認旗標已被寫入上述同步旗標區域後,根據設定於上述FV暫存器之值,執行對該加速器之時脈頻率之增減、電源電壓之增減及電源入/切之至少一者。
  18. 如請求項13至17中任一項之加速器,其中上述加速器具備執行上述內部記憶區域與上述記憶體之間之資料傳送之載入存儲單元;且上述載入存儲單元包含載入存儲單元側旗標讀入確認器,其根據上述內部記憶區域與上述記憶體之間之資料傳送之執行狀況,對上述同步旗標區域寫入旗標及確認 旗標已被寫入上述同步旗標區域。
  19. 如請求項18之加速器,其中上述處理部包含處理部側旗標寫入確認器,其根據該處理部執行處理之狀況,對上述同步旗標區域寫入旗標及確認旗標已被寫入上述同步旗標區域。
  20. 如請求項19之加速器,其中上述加速器具備旗標授受暫存器,其記憶用於使上述處理部與上述載入存儲單元之動作同步之旗標;上述處理部側旗標寫入確認器根據該處理部執行處理之狀況,對上述旗標授受暫存器寫入旗標及確認旗標已被寫入上述旗標授受暫存器;且上述載入存儲單元側旗標寫入確認器根據該載入存儲單元執行處理之狀況,對上述旗標授受暫存器寫入旗標及確認旗標已被寫入上述旗標授受暫存器。
  21. 如請求項13至17中任一項之加速器,其中上述處理部包含處理部側旗標寫入確認器,其根據上述內部記憶區域與上述處理部之間之資料傳送之執行狀況,對上述同步旗標區域寫入旗標及確認旗標已被寫入上述同步旗標區域。
TW101140858A 2011-11-04 2012-11-02 Accelerator and processor system TWI597661B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011242824 2011-11-04

Publications (2)

Publication Number Publication Date
TW201333814A true TW201333814A (zh) 2013-08-16
TWI597661B TWI597661B (zh) 2017-09-01

Family

ID=48192033

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101140858A TWI597661B (zh) 2011-11-04 2012-11-02 Accelerator and processor system

Country Status (6)

Country Link
US (2) US9846673B2 (zh)
JP (2) JP6103647B2 (zh)
CN (1) CN104025045B (zh)
GB (1) GB2511672B (zh)
TW (1) TWI597661B (zh)
WO (1) WO2013065687A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI747933B (zh) * 2016-09-30 2021-12-01 美商英特爾股份有限公司 硬體加速器及用於卸載操作之方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015014833A (ja) * 2013-07-03 2015-01-22 スパンション エルエルシー 再構築可能なlsi
US9880935B2 (en) 2014-03-24 2018-01-30 Intel Corporation Efficient data transfer between a processor core and an accelerator
US11132203B2 (en) * 2014-08-14 2021-09-28 Texas Instruments Incorporated System and method for synchronizing instruction execution between a central processor and a coprocessor
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
EP3208712B1 (en) * 2016-02-22 2020-02-19 Karlsruher Institut für Technologie Computer system and method for parallel program code optimization and deployment
US10671361B2 (en) * 2016-10-25 2020-06-02 Paypal, Inc. Automatically determining data dependencies to facilitate code execution
KR102520017B1 (ko) * 2016-12-31 2023-04-11 인텔 코포레이션 이종 컴퓨팅을 위한 시스템들, 방법들, 및 장치들
KR102424962B1 (ko) * 2017-11-15 2022-07-25 삼성전자주식회사 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈
GB2575289B (en) 2018-07-04 2020-09-16 Graphcore Ltd Streaming engine
JP6797332B2 (ja) * 2018-07-30 2020-12-09 三菱電機株式会社 割り込み制御装置、割り込み制御方法および割り込み制御プログラム
US11515291B2 (en) 2018-08-28 2022-11-29 Adeia Semiconductor Inc. Integrated voltage regulator and passive components
US11397612B2 (en) * 2019-07-27 2022-07-26 Analog Devices International Unlimited Company Autonomous job queueing system for hardware accelerators
US11144290B2 (en) * 2019-09-13 2021-10-12 Huawei Technologies Co., Ltd. Method and apparatus for enabling autonomous acceleration of dataflow AI applications
US20220350638A1 (en) * 2019-10-10 2022-11-03 Nippon Telegraph And Telephone Corporation Secret multiple repetition calculation apparatus, method and program
KR20210094178A (ko) * 2020-01-20 2021-07-29 삼성전자주식회사 직렬로 연결된 전자 장치들 사이에서 컴플리션을 조기에 전송하기 위한 컴퓨팅 시스템
US11176043B2 (en) * 2020-04-02 2021-11-16 International Business Machines Corporation Distributed memory-augmented neural network architecture

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61134863A (ja) 1984-12-04 1986-06-21 Mitsubishi Electric Corp デ−タ処理装置
JP3137117B2 (ja) 1987-03-27 2001-02-19 将容 曽和 高速処理計算機
JPH1091603A (ja) * 1996-09-12 1998-04-10 Fujitsu Ltd デュアルcpuシステムにおける立ち上げ同期確立方法及び異常監視方法
US6044206A (en) * 1997-10-14 2000-03-28 C-Cube Microsystems Out of order instruction processing using dual memory banks
SE9902373D0 (sv) 1998-11-16 1999-06-22 Ericsson Telefon Ab L M A processing system and method
US6832305B2 (en) * 2001-03-14 2004-12-14 Samsung Electronics Co., Ltd. Method and apparatus for executing coprocessor instructions
JP4062441B2 (ja) * 2003-07-18 2008-03-19 日本電気株式会社 並列処理システム及び並列処理プログラム
JP4276028B2 (ja) * 2003-08-25 2009-06-10 株式会社日立製作所 マルチプロセッサシステムの同期方法
US7590823B1 (en) * 2004-08-06 2009-09-15 Xilinx, Inc. Method and system for handling an instruction not supported in a coprocessor formed using configurable logic
EP1647894A3 (en) 2004-10-12 2007-11-21 NEC Electronics Corporation Information processing apparatus with parallel DMA processes
JP4170330B2 (ja) 2004-10-12 2008-10-22 Necエレクトロニクス株式会社 情報処理装置
JP4082706B2 (ja) 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US7954114B2 (en) * 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
JP2007317152A (ja) 2006-05-29 2007-12-06 Yuundo:Kk 情報処理装置
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP4784827B2 (ja) 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
JP5137171B2 (ja) * 2006-07-24 2013-02-06 ルネサスエレクトロニクス株式会社 データ処理装置
JP4476267B2 (ja) 2006-10-06 2010-06-09 株式会社日立製作所 プロセッサ及びデータ転送ユニット
JP2009176116A (ja) * 2008-01-25 2009-08-06 Univ Waseda マルチプロセッサシステムおよびマルチプロセッサシステムの同期方法
JP2010003151A (ja) 2008-06-20 2010-01-07 Renesas Technology Corp データ処理装置
EP2278452A1 (en) * 2009-07-15 2011-01-26 Nxp B.V. Coprocessor programming

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI747933B (zh) * 2016-09-30 2021-12-01 美商英特爾股份有限公司 硬體加速器及用於卸載操作之方法

Also Published As

Publication number Publication date
JPWO2013065687A1 (ja) 2015-04-02
JP6103647B2 (ja) 2017-04-05
JP6525286B2 (ja) 2019-06-05
US9846673B2 (en) 2017-12-19
CN104025045A (zh) 2014-09-03
WO2013065687A1 (ja) 2013-05-10
TWI597661B (zh) 2017-09-01
GB2511672B (en) 2020-04-15
CN104025045B (zh) 2017-07-04
GB201409767D0 (en) 2014-07-16
US20180060275A1 (en) 2018-03-01
US20140304491A1 (en) 2014-10-09
JP2017091589A (ja) 2017-05-25
GB2511672A (en) 2014-09-10
US10095657B2 (en) 2018-10-09

Similar Documents

Publication Publication Date Title
TWI597661B (zh) Accelerator and processor system
US20130191817A1 (en) Optimisation of loops and data flow sections
Baudisch et al. Multithreaded code from synchronous programs: Extracting independent threads for OpenMP
JP2009524866A (ja) プログラムの並列実行のためのシステム及び方法
Noaje et al. Source-to-source code translator: OpenMP C to CUDA
CN108874727A (zh) 一种面向gpdsp的多核并行计算实现方法
Lisper Towards parallel programming models for predictability
US9665354B2 (en) Apparatus and method for translating multithread program code
Carle et al. Predicate-aware, makespan-preserving software pipelining of scheduling tables
CN103019774A (zh) 一种dsp处理器的动态重载方法
Zhang et al. GPU-TLS: An efficient runtime for speculative loop parallelization on gpus
Pereira et al. Extending OpenACC for efficient stencil code generation and execution by skeleton frameworks
US8694975B2 (en) Programming system in multi-core environment, and method and program of the same
Souyris et al. Automatic parallelization from Lustre models in avionics
Jääskeläinen et al. TCEMC: A co-design flow for application-specific multicores
Li et al. Gpu-s2s: a compiler for source-to-source translation on gpu
Agathos et al. Compiler-assisted, adaptive runtime system for the support of OpenMP in embedded multicores
Lupo et al. Enhancing regional ocean modeling simulation performance with the Xeon Phi architecture
Gao et al. swATOP: Automatically Optimizing Deep Learning Operators on SW26010 Many-Core Processor
Sohl Efficient Compilation for Application Specific Instruction set DSP Processors with Multi-bank Memories
Maximo et al. Unleashing the power of the playstation 3 to boost graphics programming
Larsen Multi-GPU Futhark Using Parallel Streams
Balevic Exploiting multi-level parallelism in streaming applications for heterogeneous platforms with GPUs
Garanina et al. Autotuning Parallel Programs by Model Checking
Middendorf Dynamic task scheduling and binding for many-core systems through stream rewriting