欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

目標(biāo)為可編程集成電路的異構(gòu)型多處理器程序編譯的制作方法

文檔序號(hào):11450571閱讀:395來(lái)源:國(guó)知局
目標(biāo)為可編程集成電路的異構(gòu)型多處理器程序編譯的制造方法與工藝

本公開涉及集成電路(ic),并且更具體涉及將可編程ic并入到異構(gòu)型多處理器設(shè)計(jì)中。



背景技術(shù):

異構(gòu)型多處理器框架提供跨平臺(tái)的標(biāo)準(zhǔn),并支持現(xiàn)代處理器、服務(wù)器、手持/嵌入式設(shè)備等的并行編程。開放計(jì)算語(yǔ)言(opencomputinglanguage,簡(jiǎn)稱opencl)是用于編寫可跨異構(gòu)型計(jì)算平臺(tái)執(zhí)行的程序的異構(gòu)型多處理器框架的示例。異構(gòu)型計(jì)算平臺(tái)可以包括中央處理單元(cpu)、圖形處理單元(gpu)、或數(shù)字信號(hào)處理器(dsp)等。

異構(gòu)型多處理器程序(例如,opencl程序)包括在主機(jī)系統(tǒng)上執(zhí)行的部分和在設(shè)備上執(zhí)行的一個(gè)或多個(gè)其他部分。通常,主機(jī)系統(tǒng)包括cpu,而設(shè)備可以為gpu、dsp等。在設(shè)備上執(zhí)行的可以被稱為內(nèi)核的部分可以是用opencl,openclc或另一適用于異構(gòu)型多處理器框架或opencl語(yǔ)言的高級(jí)編程語(yǔ)言編寫的。在主機(jī)上執(zhí)行的部分可以用例如c或c++編程,并且控制跨各種設(shè)備的異構(gòu)型多處理器環(huán)境。

雖然上述環(huán)境本質(zhì)上是異構(gòu)型的,但是每個(gè)特定設(shè)備(無(wú)論是dsp還是gpu)都具有靜態(tài)架構(gòu)。相比之下,諸如現(xiàn)場(chǎng)可編程門陣列(fpga)的可編程ic具有非常靈活的硬件架構(gòu),其可用于硬件加速。然而,為了使用可編程ic作為設(shè)備,在可編程ic內(nèi)實(shí)現(xiàn)的電路必須能夠與主機(jī)交互并在異構(gòu)型多處理器環(huán)境的場(chǎng)景中操作。



技術(shù)實(shí)現(xiàn)要素:

一種方法包括:使用處理器來(lái)生成異構(gòu)型多處理器設(shè)計(jì)的第一內(nèi)核的寄存器傳輸級(jí)(rtl)描述,將所述的第一內(nèi)核的rtl描述與在可編程集成電路(ic)內(nèi)提供靜態(tài)區(qū)域的基礎(chǔ)平臺(tái)電路設(shè)計(jì)集成,所述可編程集成電路向所述異構(gòu)型多處理器設(shè)計(jì)的主機(jī)提供接口,并且使用處理器并從所述的第一內(nèi)核的rtl描述生成指定第一內(nèi)核的硬件實(shí)現(xiàn)的第一配置比特流和所述配置比特流的支持?jǐn)?shù)據(jù)。所述方法還包括在二進(jìn)制容器內(nèi)包含第一配置比特流和支持?jǐn)?shù)據(jù)。

一種方法包括:使用處理器來(lái)生成異構(gòu)型多處理器設(shè)計(jì)的第一內(nèi)核的rtl描述,將所述的第一內(nèi)核的rtl描述與基礎(chǔ)平臺(tái)電路設(shè)計(jì)集成,所述基礎(chǔ)平臺(tái)電路設(shè)計(jì)在可編程ic內(nèi)提供靜態(tài)接口給異構(gòu)型多處理器設(shè)計(jì)的主機(jī),并且使用處理器并從所述的第一內(nèi)核的rtl描述生成所述第一內(nèi)核的rtl描述的支持?jǐn)?shù)據(jù)。該方法還包括在二進(jìn)制容器內(nèi)包含所述第一內(nèi)核的rtl描述和支持?jǐn)?shù)據(jù)。

一種系統(tǒng)可以包括被編程以啟動(dòng)可執(zhí)行操作的處理器。所述可執(zhí)行操作包括:生成異構(gòu)型多處理器設(shè)計(jì)的第一內(nèi)核的rtl描述,將所述的第一內(nèi)核的rtl描述與在可編程ic內(nèi)提供靜態(tài)區(qū)域的基礎(chǔ)平臺(tái)電路設(shè)計(jì)集成,所述可編程ic向所述異構(gòu)型多處理器設(shè)計(jì)的主機(jī)提供接口,從所述第一內(nèi)核的rtl描述生成指定第一內(nèi)核的硬件實(shí)現(xiàn)的第一配置比特流以及用于所述配置比特流的支持?jǐn)?shù)據(jù)。該方法還可以包括將所述第一配置比特流和支持?jǐn)?shù)據(jù)包含在二進(jìn)制容器內(nèi)。

本發(fā)明內(nèi)容部分僅用于介紹某些概念,而不是確認(rèn)所要求保護(hù)的主題的任何關(guān)鍵或基本特征。本發(fā)明的布置的其他特征將從附圖和下面的詳細(xì)描述中被認(rèn)識(shí)。

附圖說(shuō)明

本發(fā)明的裝置在附圖中以舉例的方式示出。然而,附圖不應(yīng)被解釋為將本發(fā)明的裝置限制在僅僅是所示的具體實(shí)施方式中。通過(guò)閱讀以下詳細(xì)描述并參照附圖,各方面和優(yōu)點(diǎn)將變得顯而易見。

圖1是示出用于集成電路(ic)的示例性架構(gòu)的框圖;

圖2是示出示例性數(shù)據(jù)處理系統(tǒng)(系統(tǒng))的框圖;

圖3是示出圖2的目標(biāo)平臺(tái)的示例性架構(gòu)的框圖;

圖4是示出包括圖2和圖3的目標(biāo)平臺(tái)的異構(gòu)型多處理器運(yùn)行時(shí)系統(tǒng)的示例性層的框圖;

圖5是示出在圖3的ic內(nèi)實(shí)現(xiàn)的示例性電路的框圖;

圖6是示出內(nèi)核區(qū)域的實(shí)施例的框圖;

圖7是示出實(shí)現(xiàn)異構(gòu)型多處理器設(shè)計(jì)的內(nèi)核的示例性方法的流程圖;

圖8是示出用于在可編程ic內(nèi)實(shí)現(xiàn)異構(gòu)型多處理器設(shè)計(jì)的內(nèi)核的示例性過(guò)程的塊流程圖;

圖9是示出處理在可編程ic內(nèi)實(shí)現(xiàn)的用異構(gòu)型多處理器計(jì)算語(yǔ)言指定的內(nèi)核的示例性方法的流程圖;

圖10是示出以異構(gòu)型多處理器計(jì)算語(yǔ)言指定的內(nèi)核的示例性處理的框圖;

圖11是示出以異構(gòu)型多處理器計(jì)算語(yǔ)言指定的內(nèi)核的示例性處理的框圖;

圖12是示出以異構(gòu)型多處理器計(jì)算語(yǔ)言指定的內(nèi)核的示例性處理的框圖;

圖13-1和13-2總體上示出了以異構(gòu)型多處理器計(jì)算語(yǔ)言指定的內(nèi)核的處理;

圖14是示出在異構(gòu)型多處理器計(jì)算語(yǔ)言中指定的內(nèi)核的示例性處理的框圖;

圖15是示例性目錄結(jié)構(gòu);

圖16是示出內(nèi)核執(zhí)行的示例性方法的流程圖。

具體實(shí)施方式

盡管本公開用定義新穎的特征的權(quán)利要求進(jìn)行了歸納,但是從結(jié)合附圖的描述來(lái)考慮將更好地理解所述各種特征。本文所述的方法、機(jī)器、制造和其任何變型僅僅用于示例。本說(shuō)明書中公開的具體結(jié)構(gòu)和功能細(xì)節(jié)不應(yīng)被解釋為限制,而僅僅是作為權(quán)利要求的基礎(chǔ),以及作為教導(dǎo)本領(lǐng)域技術(shù)人員使用實(shí)際上任何適當(dāng)詳細(xì)的結(jié)構(gòu)的典型基礎(chǔ)。此外,本文中使用的術(shù)語(yǔ)和短語(yǔ)不旨在限制,而是提供對(duì)所描述的特征的可理解的描述。

本公開涉及集成電路(ic),更具體地,涉及將可編程ic并入異構(gòu)型多處理器系統(tǒng)。根據(jù)本公開內(nèi)容中描述的本發(fā)明的布置,可以在異構(gòu)型多處理器設(shè)計(jì)中使用可編程ic來(lái)實(shí)現(xiàn)一個(gè)或多個(gè)內(nèi)核。異構(gòu)型多處理器的一個(gè)或多個(gè)內(nèi)核可以被編譯并轉(zhuǎn)換成使用可編程ic的可編程電路來(lái)實(shí)現(xiàn)的硬件。在這方面,使用可編程ic實(shí)現(xiàn)的內(nèi)核是硬件加速的,這是因?yàn)樵搩?nèi)核使用電路來(lái)實(shí)現(xiàn),而不是被實(shí)現(xiàn)為用于除中央處理單元(cpu)之外的處理器執(zhí)行的被卸載的可執(zhí)行程序代碼。被綜合為硬件的異構(gòu)型多處理器設(shè)計(jì)的內(nèi)核部分,與異構(gòu)型多處理器設(shè)計(jì)的主機(jī)協(xié)同工作。

在一個(gè)方面,可編程ic可以提供基礎(chǔ)平臺(tái)。內(nèi)核可以在基礎(chǔ)平臺(tái)上和/或與所述基礎(chǔ)平臺(tái)協(xié)同實(shí)現(xiàn)。所述基礎(chǔ)平臺(tái)提供了所述內(nèi)核與可編程ic耦合到的目標(biāo)平臺(tái)和主機(jī)進(jìn)行通信所需的基礎(chǔ)架構(gòu)。例如,所述基礎(chǔ)平臺(tái)可以由目標(biāo)平臺(tái)的供應(yīng)商來(lái)實(shí)現(xiàn)或決定。因此,所述基礎(chǔ)平臺(tái)可以根據(jù)所使用的可編程ic的特定型號(hào)或類型以及與可編程ic一起使用的目標(biāo)平臺(tái)的型號(hào)或類型而變化。

本文描述的本發(fā)明的布置可以被實(shí)現(xiàn)為由數(shù)據(jù)處理系統(tǒng)執(zhí)行的方法或過(guò)程。在一個(gè)示例中,該方法可以針對(duì)異構(gòu)型多處理器設(shè)計(jì)的實(shí)現(xiàn),其中在可編程ic的可編程電路中實(shí)現(xiàn)了一個(gè)或多個(gè)內(nèi)核。在另一示例中,該方法可以針對(duì)包括使用可編程ic實(shí)現(xiàn)的內(nèi)核的異構(gòu)型多處理器系統(tǒng)的操作,例如運(yùn)行時(shí)操作(runtimeoperation)。

在另一個(gè)方面,本發(fā)明的布置可以被實(shí)現(xiàn)為具有cpu的數(shù)據(jù)處理系統(tǒng)。所述數(shù)據(jù)處理系統(tǒng)可以執(zhí)行針對(duì)異構(gòu)型多處理器設(shè)計(jì)(例如編譯時(shí)間方法(compiletimemethod))的實(shí)施的方法,其中在可編程ic的可編程電路中實(shí)現(xiàn)一個(gè)或多個(gè)內(nèi)核。所述數(shù)據(jù)處理系統(tǒng)還可以包括可編程ic。在這種情況下,所述數(shù)據(jù)處理系統(tǒng)可以執(zhí)行包括使用可編程ic實(shí)現(xiàn)的內(nèi)核的異構(gòu)型多處理器設(shè)計(jì)的操作(例如,運(yùn)行時(shí)操作)的方法。

在另一個(gè)方面,本發(fā)明的布置可以被實(shí)現(xiàn)為ic。所述ic可以包括基礎(chǔ)平臺(tái)。所述ic還可以被配置為包括在其中實(shí)現(xiàn)的一個(gè)或多個(gè)與基礎(chǔ)平臺(tái)協(xié)作操作的內(nèi)核。所述ic可以實(shí)現(xiàn)涉及在所述ic內(nèi)實(shí)現(xiàn)的內(nèi)核和/或各種主機(jī)交互的操作的運(yùn)行時(shí)方法。

在另一個(gè)方面,本發(fā)明的布置可以被實(shí)現(xiàn)為存儲(chǔ)程序代碼的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序代碼在執(zhí)行時(shí)使處理器和/或系統(tǒng)執(zhí)行和/或啟動(dòng)在此描述的各種方法和/或流程。

為了說(shuō)明的簡(jiǎn)單和清楚,附圖中所示的元件不一定按比例繪制。例如,為了清楚起見,相對(duì)于其它元件,某些元件的尺寸可能被放大。此外,在認(rèn)為適當(dāng)?shù)那闆r下,在附圖中重復(fù)參考數(shù)字以指示相應(yīng)的,可比的或類似的特征。

圖1是示出用于ic的示例性架構(gòu)100的框圖。在一個(gè)方面,架構(gòu)100在現(xiàn)場(chǎng)可編程門陣列(fpga)類型的ic中實(shí)現(xiàn)。在架構(gòu)100包括處理器的情況下,架構(gòu)100也表示soc類型的ic。soc是包括執(zhí)行程序代碼的處理器和一個(gè)或多個(gè)其他電路系統(tǒng)的ic。所述電路系統(tǒng)在與處理器在同一襯底中實(shí)現(xiàn)。所述電路系統(tǒng)可以彼此協(xié)同工作以及與處理器協(xié)同工作。

如圖所示,架構(gòu)100包括幾種不同類型的可編程電路,例如邏輯,塊。例如,架構(gòu)100可以包括大量不同的可編程單元塊(tile),包括多千兆比特收發(fā)器(mgt)101、可配置邏輯塊(clb)102、隨機(jī)存取存儲(chǔ)器塊(bram)103、輸入/輸出塊(iob)104、配置和時(shí)鐘邏輯(config/clocks)105、數(shù)字信號(hào)處理塊(dsp)106、專用i/o塊107(例如,配置端口和時(shí)鐘端口)以及其他可編程邏輯108,諸如數(shù)字時(shí)鐘管理器、模擬數(shù)字轉(zhuǎn)換器、系統(tǒng)監(jiān)控邏輯等。

在一些ic中,每個(gè)可編程單元塊包括可編程互連元件(int)111,其具有去到和來(lái)自每個(gè)相鄰單元塊中對(duì)應(yīng)的int111的標(biāo)準(zhǔn)化連接。因此,int111合起來(lái)實(shí)現(xiàn)了所示ic的可編程互連結(jié)構(gòu)。每個(gè)int111還包括去到和來(lái)自同一單元塊內(nèi)的可編程邏輯元件的連接,如圖1頂部的示例所示。

例如,clb102可以包括可被編程為實(shí)現(xiàn)用戶邏輯加上單個(gè)int111的可配置邏輯元件(cle)112。除了一個(gè)或多個(gè)int之外,bram103還可以包括bram邏輯元件(brl)113。通常,包含在單元塊中的int111的數(shù)量取決于單元塊的高度。如圖所示,bram單元塊具有與五個(gè)clb相同的高度,但是也可以使用其他數(shù)字(例如,四個(gè))。除了適當(dāng)數(shù)量的int111之外,dsp單元塊106可以包括dsp邏輯元件(dspl)114。除了int111的一個(gè)實(shí)例,iob104還可以包括例如i/o邏輯元件(iol)115的兩個(gè)實(shí)例。對(duì)于本領(lǐng)域技術(shù)人員將清楚,連接到例如iol115的實(shí)際i/o焊盤通常不限于iol115的區(qū)域。

在圖1所示的例子中,例如由區(qū)域105,107和108形成的管芯中心附近的柱狀區(qū)域可用于配置、時(shí)鐘和其他控制邏輯。從該列延伸的水平區(qū)域109被用來(lái)分布跨在可編程ic的寬度上的時(shí)鐘和配置信號(hào)。

利用圖1所示的架構(gòu)的一些ic包含了附加邏輯塊,其打斷了構(gòu)成ic大部分的常規(guī)柱狀結(jié)構(gòu)的附加邏輯塊。附加邏輯塊可以是可編程塊和/或?qū)S秒娐?。例如,描繪為proc110的可選處理器塊跨越多列clb和bram。

在一個(gè)方面,proc110被實(shí)現(xiàn)為專用電路,例如作為硬接線處理器,其被制造為實(shí)現(xiàn)ic的可編程電路的管芯(die)的一部分。proc110可以表示各種不同處理器類型和/或系統(tǒng),在復(fù)雜程度上包括從單個(gè)處理器(例如,能夠執(zhí)行程序代碼的單個(gè)內(nèi)核)到具有一個(gè)或多個(gè)內(nèi)核、塊、協(xié)處理器、接口等的整個(gè)處理器系統(tǒng)的范圍。

在另一個(gè)方面,在架構(gòu)100中省略了proc110,并且其被所描述的可編程塊的其他變體中的一個(gè)或多個(gè)替代。此外,這種塊可以用于形成“軟處理器”,因?yàn)榭梢允褂酶鞣N可編程電路的塊來(lái)形成如proc110的情況一樣的可以執(zhí)行程序代碼的處理器。

短語(yǔ)“可編程電路”是指ic內(nèi)的可編程電路元件,例如本文所述的各種可編程或可配置電路塊或單元塊,以及互連電路,其根據(jù)加載到ic中的配置數(shù)據(jù)選擇性地耦合各種電路塊,單元塊和/或元件。例如,在圖1中所示的諸如clb102和bram103之類的在proc110之外的部分被認(rèn)為是ic的可編程電路。

通常,直到配置數(shù)據(jù)被加載到ic中之后才可以確定可編程電路的功能。一組配置位可用于對(duì)諸如fpga的ic的可編程電路進(jìn)行編程。所述配置位通常被稱為“配置比特流”。通常,可編程電路在沒(méi)有先將配置比特流加載到ic中的情況下是不可操作的或可用的。所述配置比特流有效地實(shí)現(xiàn)或?qū)嵗删幊屉娐穬?nèi)的特定電路設(shè)計(jì)。所述電路設(shè)計(jì)指定,例如,可編程電路塊的功能方面和各種可編程電路塊之間的物理連接。

“硬連線”或“硬化”(即不可編程)的電路被制造為ic的一部分。與可編程電路不同,硬連線電路或電路塊不是在ic制造之后通過(guò)加載配置比特流實(shí)現(xiàn)的。硬連線電路通常被認(rèn)為具有專用電路塊和互連,例如其在沒(méi)有先將配置比特流加載到ic中的情況下是可用的,例如proc110。

在一些情況下,硬連線電路可以具有一個(gè)或多個(gè)操作模式,其可以根據(jù)存儲(chǔ)在ic內(nèi)的一個(gè)或多個(gè)存儲(chǔ)器元件中的寄存器設(shè)置或值來(lái)設(shè)置或選擇。所述操作模式可以,例如,通過(guò)將配置比特流加載到ic來(lái)設(shè)置。盡管有這種能力,但是硬連線電路不被認(rèn)為是可編程電路,因?yàn)橛步泳€電路在作為ic的一部分被制造時(shí)是可操作的并且具有特定的功能。

在soc的情況下,所述配置比特流可以指定要在可編程電路內(nèi)實(shí)現(xiàn)的電路和要由proc110或軟處理器執(zhí)行的程序代碼。在一些情況下,架構(gòu)100包括將配置比特流加載到適當(dāng)?shù)呐渲么鎯?chǔ)器和/或處理器存儲(chǔ)器的專用配置處理器。與可能包含的proc110不同,配置處理器不執(zhí)行用戶程序代碼。在其他情況下,架構(gòu)100可以利用proc110來(lái)接收配置比特流,將配置比特流加載到適當(dāng)?shù)呐渲么鎯?chǔ)器中,和/或提取用于執(zhí)行的程序代碼。

圖1旨在說(shuō)明可用于實(shí)現(xiàn)包括可編程電路(例如可編程結(jié)構(gòu)(programmablefabric))的ic的示例性架構(gòu)。例如,列中的邏輯塊的數(shù)量,列的相對(duì)寬度,列的數(shù)量和順序,列中包括的邏輯塊的類型,邏輯塊的相對(duì)大小以及包括在圖1的頂部的互連/邏輯實(shí)現(xiàn)純粹是示范性的。在實(shí)際的ic中,例如,通常在clb出現(xiàn)的任何地方包括多于一個(gè)相鄰列的clb,以便有效地實(shí)現(xiàn)用戶電路設(shè)計(jì)。然而,相鄰clb列的數(shù)量可隨ic的總體尺寸而變化。此外,ic內(nèi)的諸如proc110的塊的大小和/或位置僅僅是為了說(shuō)明的目的,并不意圖作為限制。

圖2是示出示例性數(shù)據(jù)處理系統(tǒng)(系統(tǒng))200的框圖。在一個(gè)方面,系統(tǒng)200可以表示編譯時(shí)(compile-time)系統(tǒng),其可以作為可編程ic內(nèi)的電路被編程為實(shí)現(xiàn)異構(gòu)型多處理器設(shè)計(jì)(例如程序)的內(nèi)核。如本文所定義的,“異構(gòu)型多處理器設(shè)計(jì)”是包括在主機(jī)系統(tǒng)上執(zhí)行的部分和在不同設(shè)備或處理器上執(zhí)行的稱為內(nèi)核的至少一個(gè)附加部分的程序。異構(gòu)型多處理器設(shè)計(jì)的一個(gè)例子是opencl程序或設(shè)計(jì)。在一個(gè)示例中,在主機(jī)上執(zhí)行的部分可以以與在不同設(shè)備或處理器上執(zhí)行的部分不同的編程語(yǔ)言來(lái)指定??删幊蘨c可以具有參考圖1所描述的架構(gòu)。

在另一個(gè)方面,系統(tǒng)200可以表示運(yùn)行時(shí)異構(gòu)型多處理器系統(tǒng),其中處理器用作主機(jī),并且可編程ic實(shí)現(xiàn)一個(gè)或多個(gè)內(nèi)核。如本文所定義的,“異構(gòu)型多處理器系統(tǒng)”是包括兩個(gè)或多個(gè)處理器的計(jì)算系統(tǒng)。兩個(gè)或多個(gè)處理器可以是不同類型的處理器。例如,異構(gòu)型多處理器系統(tǒng)可以包括中央處理單元(cpu),圖形處理單元(gpu),數(shù)字信號(hào)處理器(dsp),諸如fpga的可編程ic等。異構(gòu)型多處理器系統(tǒng)可以是opencl系統(tǒng)。

如圖所示,系統(tǒng)200包括通過(guò)系統(tǒng)總線215或其他合適的電路耦合到存儲(chǔ)器元件210的至少一個(gè)處理器205,例如,中央處理單元(cpu)。系統(tǒng)200將程序代碼存儲(chǔ)在存儲(chǔ)器元件210內(nèi)。處理器205執(zhí)行經(jīng)由系統(tǒng)總線215從存儲(chǔ)器元件210取得的程序代碼。在一個(gè)方面,系統(tǒng)200被實(shí)現(xiàn)為計(jì)算機(jī)或其他適于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)。然而,應(yīng)當(dāng)理解,系統(tǒng)200可以以包括能夠執(zhí)行本公開所描述的功能的處理器和存儲(chǔ)器的任何系統(tǒng)的形式來(lái)實(shí)現(xiàn)。此外,系統(tǒng)200可以被實(shí)現(xiàn)為一個(gè)或多個(gè)聯(lián)網(wǎng)的數(shù)據(jù)處理系統(tǒng),例如服務(wù)器。

存儲(chǔ)器元件210包括一個(gè)或多個(gè)物理存儲(chǔ)器設(shè)備,例如本地存儲(chǔ)器220和一個(gè)或多個(gè)大容量存儲(chǔ)設(shè)備225。本地存儲(chǔ)器220指的是隨機(jī)存取存儲(chǔ)器(ram)或其他非持久存儲(chǔ)器件,一般在實(shí)際執(zhí)行程序代碼時(shí)使用。大容量存儲(chǔ)設(shè)備225可以被實(shí)現(xiàn)為硬盤驅(qū)動(dòng)器(hdd),固態(tài)驅(qū)動(dòng)器(ssd)或其他持久數(shù)據(jù)存儲(chǔ)設(shè)備。系統(tǒng)200還可以包括一個(gè)或多個(gè)高速緩存存儲(chǔ)器(未示出),其提供至少一些程序代碼的臨時(shí)存儲(chǔ),以便減少在執(zhí)行期間必須從大容量存儲(chǔ)設(shè)備225獲取程序代碼的次數(shù)。

輸入/輸出(i/o)設(shè)備(例如鍵盤230,顯示設(shè)備235和點(diǎn)擊設(shè)備240)可選地可以耦合到系統(tǒng)200。i/o設(shè)備可以直接或通過(guò)中間的i/o控制器耦合到系統(tǒng)200。還可以耦合網(wǎng)絡(luò)適配器245到系統(tǒng)200,以使系統(tǒng)200能夠通過(guò)中間的私有或公共網(wǎng)絡(luò)與其他系統(tǒng)、計(jì)算機(jī)系統(tǒng)、遠(yuǎn)程打印機(jī)、遠(yuǎn)程存儲(chǔ)設(shè)備和/或目標(biāo)平臺(tái)260耦合。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器、以太網(wǎng)卡和無(wú)線收發(fā)器是可以與系統(tǒng)200一起使用的不同類型的網(wǎng)絡(luò)適配器245的示例。通信端口250(例如通用串行總線端口,火線端口,外圍組件互連(pci)和/或pciexpress(pcie)端口等)也可以耦合到系統(tǒng)200以允許系統(tǒng)200耦合到另一個(gè)系統(tǒng),例如包括目標(biāo)平臺(tái)260的上述系統(tǒng)中的任何一個(gè)。

在一個(gè)方面,存儲(chǔ)器元件210存儲(chǔ)電子設(shè)計(jì)自動(dòng)化(eda)應(yīng)用程序255。eda應(yīng)用程序255可以被存儲(chǔ)在例如系統(tǒng)200表示編譯時(shí)系統(tǒng)的實(shí)現(xiàn)中。eda應(yīng)用程序255可以包括一個(gè)或多個(gè)不同的組件或模塊。以可執(zhí)行程序代碼的形式實(shí)現(xiàn)的eda應(yīng)用程序255由系統(tǒng)200執(zhí)行。因此,eda應(yīng)用程序255被認(rèn)為是系統(tǒng)200的集成部分。eda應(yīng)用程序255以及當(dāng)執(zhí)行eda應(yīng)用程序255時(shí)系統(tǒng)200使用、生成和/或操作的任何數(shù)據(jù)項(xiàng)均屬于功能數(shù)據(jù)結(jié)構(gòu),其當(dāng)被用作系統(tǒng)200的一部分時(shí)賦予功能性。作為編譯時(shí)系統(tǒng),主機(jī)應(yīng)用程序258可以從系統(tǒng)200中排除。

在編譯時(shí)系統(tǒng)的情況下,用戶通過(guò)系統(tǒng)200操作、執(zhí)行eda應(yīng)用程序255。系統(tǒng)200可以接收作為輸入的異構(gòu)型多處理器設(shè)計(jì)275并將異構(gòu)型多處理器設(shè)計(jì)275的一個(gè)或多個(gè)內(nèi)核綜合為可以在ic270內(nèi)實(shí)現(xiàn)的電路。系統(tǒng)200可以生成并輸出二進(jìn)制容器(binarycontainer)280。在一個(gè)方面,二進(jìn)制容器280可以包括其中的內(nèi)容的描述和一個(gè)或多個(gè)配置比特流,不管是部分的還是完整的。在另一個(gè)方面,二進(jìn)制容器280可以包括其中的內(nèi)容的描述、一個(gè)或多個(gè)可執(zhí)行模擬文件和/或一個(gè)或多個(gè)寄存器傳輸級(jí)(rtl)文件,其可以在rtl或硬件描述語(yǔ)言模擬器中進(jìn)行模擬。在這種情況下,二進(jìn)制容器280除了可執(zhí)行模擬文件和/或rtl文件之外還可以包括一個(gè)或多個(gè)配置比特流,不管是部分的還是完整的。二進(jìn)制容器280可以被存儲(chǔ)在存儲(chǔ)器元件210中和/或通過(guò)網(wǎng)絡(luò)適配器245和/或通信端口250提供給另一個(gè)系統(tǒng)。

在另一個(gè)方面,存儲(chǔ)器元件210存儲(chǔ)主機(jī)應(yīng)用程序258。主機(jī)應(yīng)用程序258可以被存儲(chǔ)在例如系統(tǒng)200表示異構(gòu)型多處理器運(yùn)行時(shí)系統(tǒng)的實(shí)現(xiàn)中。主機(jī)應(yīng)用程序258可以包括一個(gè)或多個(gè)不同的組件或模塊。以可執(zhí)行程序代碼的形式實(shí)現(xiàn)的主機(jī)應(yīng)用程序258由系統(tǒng)200執(zhí)行。因此,主機(jī)應(yīng)用程序258被認(rèn)為是系統(tǒng)200的集成部分。主機(jī)應(yīng)用程序258以及當(dāng)執(zhí)行主機(jī)應(yīng)用程序258時(shí)系統(tǒng)200使用、生成和/或操作的任何數(shù)據(jù)項(xiàng)屬于功能數(shù)據(jù)結(jié)構(gòu),其當(dāng)被用作系統(tǒng)200的一部分時(shí)賦予功能性。作為運(yùn)行時(shí)系統(tǒng),可以從系統(tǒng)200中排除eda應(yīng)用程序255。

系統(tǒng)200可以通過(guò)通信鏈接265耦合到目標(biāo)平臺(tái)260。在實(shí)施運(yùn)行時(shí)系統(tǒng)的情況下,目標(biāo)平臺(tái)260耦合到系統(tǒng)200或被認(rèn)為是系統(tǒng)200的一部分。因此,應(yīng)當(dāng)理解,在編譯時(shí)系統(tǒng)情況下可以排除目標(biāo)平臺(tái)260。從目標(biāo)平臺(tái)260延續(xù),通信鏈接265可以被實(shí)現(xiàn)為可操作為耦合到通信端口250和/或網(wǎng)絡(luò)適配器245的各種不同的有線和/或無(wú)線連接中的任何一種。

目標(biāo)平臺(tái)260可以被實(shí)現(xiàn)為電路板,例如具有在其上實(shí)施的電路的印刷電路板。目標(biāo)平臺(tái)可以被實(shí)現(xiàn)為卡,其可以被插入用于通信端口250的機(jī)械連接器(例如,在系統(tǒng)200內(nèi)或系統(tǒng)200外部)。目標(biāo)平臺(tái)260可以包括耦合到通信鏈接265的連接器。所述連接器可以使用目標(biāo)平臺(tái)260的電路耦合到ic270。

ic270可以使用插孔、插座、另一種安裝技術(shù)(例如將ic270直接焊接到目標(biāo)平臺(tái)260)或諸如此類而被耦合到目標(biāo)平臺(tái)260。ic270通過(guò)目標(biāo)平臺(tái)260耦合到通信鏈接265。在一個(gè)方面,ic270是可編程ic。例如,可以使用參考圖1描述的架構(gòu)來(lái)實(shí)現(xiàn)ic270。在另一個(gè)方面,ic270可以被實(shí)現(xiàn)為soc。ic270可以實(shí)現(xiàn)異構(gòu)型多處理器設(shè)計(jì)的一個(gè)或多個(gè)內(nèi)核作為電路。異構(gòu)型多處理器設(shè)計(jì)可以是opencl設(shè)計(jì)。

在運(yùn)行時(shí)系統(tǒng)的情況下,處理器205可以作為主機(jī)操作。異構(gòu)型多處理器設(shè)計(jì)的一個(gè)或多個(gè)內(nèi)核可以在ic270內(nèi)實(shí)現(xiàn)。在操作期間,根據(jù)需要可以在ic270內(nèi)實(shí)現(xiàn)新的和/或不同的內(nèi)核,因?yàn)閕c270可以在運(yùn)行中被配置或視情況而動(dòng)態(tài)地重新配置,而不會(huì)導(dǎo)致未被配置或視情況而重新配置的ic270的其它部分中斷。

圖3是示出圖2的目標(biāo)平臺(tái)260的示例性架構(gòu)的框圖。如圖所示,ic270和ram345耦合到目標(biāo)平臺(tái)260。目標(biāo)平臺(tái)260還包括耦合到ic270的連接器350。盡管被示為卡邊緣類型的連接器,但是應(yīng)當(dāng)理解,連接器350可以實(shí)現(xiàn)為各種不同的連接器類型。此外,目標(biāo)平臺(tái)260可以包括一個(gè)或多個(gè)附加部件(未示出)。所述附加組件例如可以耦合在連接器350和ic270之間。

ic270包括靜態(tài)區(qū)域335和內(nèi)核區(qū)域340。在一個(gè)方面,靜態(tài)區(qū)域335包括支持異構(gòu)型多處理器編程模型所需的基礎(chǔ)設(shè)施ip。在一個(gè)示例中,異構(gòu)型多處理器編程模型是opencl模型。靜態(tài)區(qū)域335,例如,在運(yùn)行時(shí)期間將內(nèi)核區(qū)域340與位于目標(biāo)平臺(tái)260上的其他組件(例如ram345和/或其他系統(tǒng),例如主機(jī),例如處理器205)進(jìn)行通信地鏈接。靜態(tài)區(qū)域335,例如,可以實(shí)現(xiàn)用于與主機(jī)通信的軟件接口。在一個(gè)方面,靜態(tài)區(qū)域335可以是由目標(biāo)平臺(tái)260的供應(yīng)商和/或制造商提供的電路實(shí)現(xiàn)的。

內(nèi)核區(qū)域340表示實(shí)現(xiàn)ic330內(nèi)核的部分。在一個(gè)方面,內(nèi)核區(qū)域340可以具有與靜態(tài)區(qū)域335的存儲(chǔ)器映射接口。與靜態(tài)區(qū)域335不同,內(nèi)核區(qū)域340可以被動(dòng)態(tài)生成并與靜態(tài)區(qū)域335集成。例如,不同的內(nèi)核和不同內(nèi)核的組合可以在運(yùn)行期間的不同時(shí)間實(shí)現(xiàn)于內(nèi)核區(qū)域340內(nèi)。

圖4是示出包括目標(biāo)平臺(tái)260的異構(gòu)型多處理器運(yùn)行時(shí)系統(tǒng)的示例性層的框圖。在一個(gè)示例中,異構(gòu)型多處理器運(yùn)行時(shí)系統(tǒng)是opencl系統(tǒng)。如圖所示,該主機(jī)執(zhí)行在主機(jī)應(yīng)用程序內(nèi)實(shí)現(xiàn)的運(yùn)行時(shí)層405。如所討論的,所述主機(jī)可以被實(shí)現(xiàn)為參考圖1描述的系統(tǒng)200的處理器205。目標(biāo)平臺(tái)軟件層415在目標(biāo)平臺(tái)電路內(nèi)實(shí)現(xiàn)。運(yùn)行時(shí)層405通過(guò)公共低級(jí)驅(qū)動(dòng)器接口410與目標(biāo)平臺(tái)軟件層415進(jìn)行通信。例如,運(yùn)行時(shí)層405使用在公共低級(jí)驅(qū)動(dòng)器410中定義的,標(biāo)準(zhǔn)的文件記錄的應(yīng)用編程接口(api)來(lái)與目標(biāo)平臺(tái)軟件層415進(jìn)行通信。目標(biāo)平臺(tái)軟件層415,例如,可以被實(shí)現(xiàn)為內(nèi)核驅(qū)動(dòng)程序。

目標(biāo)平臺(tái)軟件層415,在目標(biāo)平臺(tái)的電路260中執(zhí)行,通過(guò)目標(biāo)平臺(tái)專用編程接口420(例如,硬件編程接口)與靜態(tài)區(qū)域335通信。靜態(tài)區(qū)域335為內(nèi)核區(qū)域340提供時(shí)鐘和復(fù)位信號(hào)430。靜態(tài)區(qū)域335還通過(guò)耦合到控制寄存器(未示出)的存儲(chǔ)器映射從接口440向內(nèi)核區(qū)域340提供信息。內(nèi)核區(qū)域340通過(guò)耦合到ram345的存儲(chǔ)器映射總線主接口435向靜態(tài)區(qū)域335提供信息。

圖5是示出在圖3的ic270內(nèi)實(shí)現(xiàn)的示例性電路的框圖。更具體地,圖5示出了可以用于實(shí)現(xiàn)靜態(tài)區(qū)域335的示例性架構(gòu)???05、510、515、520和525中的每一個(gè)表示電路塊。作為靜態(tài)區(qū)域335的一部分的塊505-525和內(nèi)核區(qū)域340中的每一個(gè)可以在ic270的可編程電路內(nèi)實(shí)現(xiàn)。

如圖所示,靜態(tài)區(qū)域335可以包括耦合到總線直接存儲(chǔ)器訪問(wèn)(dma)控制器510的總線端點(diǎn)505??偩€dma控制器510耦合到互連515?;ミB515耦合到互連520和內(nèi)核區(qū)域340?;ミB520耦合到內(nèi)核區(qū)域340和存儲(chǔ)器控制器525。存儲(chǔ)器控制器525耦合到實(shí)現(xiàn)在芯片ic270外的ram345。

總線端點(diǎn)505被配置為通過(guò)總線與異構(gòu)型多處理器設(shè)計(jì)的主機(jī)進(jìn)行通信。可以包括總線dma控制器510以支持主機(jī)ram(例如本地存儲(chǔ)器220)和目標(biāo)平臺(tái)260上的ram345之間的dma功能。在一個(gè)方面,總線dma控制器510包括主接口530?;ミB515可以包括從接口535和主接口540和545。如圖所示,從接口535耦合到主接口530。內(nèi)核區(qū)域340包括從接口550和主接口555。互連515的主接口545耦合到內(nèi)核區(qū)域340的從接口550。

互連520包括從接口560和565以及主接口570。存儲(chǔ)器控制器525包括從接口575。如圖所示,互連515的主接口540耦合到互連520的從接口560。內(nèi)核區(qū)域340的主接口555耦合到互連520的從接口565。

互連515和520是被配置為將兩個(gè)或更多個(gè)其他電路塊耦合在一起的電路塊。在一個(gè)方面,互連515和520可以被實(shí)現(xiàn)為將一個(gè)或多個(gè)存儲(chǔ)器映射的主設(shè)備與一個(gè)或多個(gè)存儲(chǔ)器映射的從設(shè)備耦合的電路塊?;ミB電路塊實(shí)現(xiàn)的示例是符合英國(guó)劍橋的有限公司的axi第4版規(guī)范的實(shí)例。然而,應(yīng)當(dāng)理解,可以使用其他互連類型和/或技術(shù)來(lái)實(shí)現(xiàn)互連515和520。本公開不被提供的示例性互連電路塊限制。

如圖5的架構(gòu)所示,總線dma控制器510和內(nèi)核區(qū)域340用作存儲(chǔ)器控制器525的主控?;ミB515允許主機(jī),例如,通過(guò)總線讀取和寫入ram345?;ミB520支持為存儲(chǔ)器控制器525創(chuàng)建兩個(gè)總線主控,即總線dma控制器510和內(nèi)核區(qū)域340。

內(nèi)核區(qū)域340最初可以被實(shí)現(xiàn)為用于編譯的異構(gòu)型多處理器設(shè)計(jì)內(nèi)核的容器。在一個(gè)方面,內(nèi)核區(qū)域340可以被實(shí)現(xiàn)為用于編譯內(nèi)核的具有占位符的分級(jí)ip。內(nèi)核區(qū)域340中可以包括一個(gè)或多個(gè)內(nèi)核。在一個(gè)示例中,在內(nèi)核區(qū)域340中可以包括多達(dá)16個(gè)內(nèi)核。來(lái)自主機(jī)的命令可以通過(guò)從接口550接收。內(nèi)核區(qū)域340可以通過(guò)主接口555向存儲(chǔ)器控制器525提供命令。時(shí)鐘和復(fù)位信號(hào)通過(guò)主接口545和從接口550之間的連接提供給內(nèi)核區(qū)域340和在其中實(shí)現(xiàn)的任何內(nèi)核。

圖6是示出內(nèi)核區(qū)域340的實(shí)施例的框圖。如圖所示,內(nèi)核區(qū)域340包括附加互連605和615?;ミB605包括耦合到互連515的主接口545的從接口550?;ミB605還包括耦合到內(nèi)核電路610-1的從接口630的主接口625。主接口625還可以耦合到一個(gè)或多個(gè)其他內(nèi)核電路610-n,其中n是整數(shù)值。

統(tǒng)一標(biāo)示為內(nèi)核電路610-1至610-n的內(nèi)核電路610可以表示相同內(nèi)核電路的多個(gè)實(shí)例,并且因此表示相同內(nèi)核的多個(gè)實(shí)例。在另一示例中,內(nèi)核電路610可以表示兩個(gè)或多個(gè)不同的內(nèi)核電路。在另一個(gè)示例中,內(nèi)核電路610可以表示第一內(nèi)核電路和一個(gè)或多個(gè)附加的不同內(nèi)核電路的一個(gè)或多個(gè)實(shí)例。互連615具有耦合到每個(gè)內(nèi)核電路610的主接口640和645的從接口650?;ミB615包括耦合到互連520的從接口565的主接口555。

在一個(gè)方面,互連605和615可以支持多達(dá)16個(gè)不同的內(nèi)核電路實(shí)例,16個(gè)不同的內(nèi)核電路或不超過(guò)16個(gè)的它們的組合。如所討論的,所提供的可以在內(nèi)核區(qū)域340內(nèi)實(shí)現(xiàn)的內(nèi)核和/或內(nèi)核實(shí)例的特定數(shù)量的目的是為了說(shuō)明而不是限制。

在異構(gòu)型多處理器框架(如opencl)中,并行內(nèi)核調(diào)用可以被描述為稱為ndrange的1,2或3維索引空間。ndrange被細(xì)分為工作組。工作組包括多個(gè)工作項(xiàng)。例如,ndrange中的每個(gè)點(diǎn)都稱為工作項(xiàng)。

異構(gòu)型多處理器設(shè)計(jì)的內(nèi)核被編譯成一個(gè)或多個(gè)計(jì)算單元。系統(tǒng)設(shè)計(jì)者,例如用戶,為給定內(nèi)核確定要并行實(shí)現(xiàn)的計(jì)算單元的數(shù)量。在一個(gè)方面,內(nèi)核的計(jì)算單元的數(shù)量表示在內(nèi)核區(qū)域340內(nèi)實(shí)現(xiàn)并且并行操作的內(nèi)核電路的實(shí)例數(shù)。每個(gè)計(jì)算單元能夠處理由主機(jī)確定和提供的一個(gè)工作組。

在圖6的示例中,每個(gè)內(nèi)核電路塊610-1至610-n表示工作單元的電路。內(nèi)核電路塊610-1至610-n可以表示相同內(nèi)核的工作單元(例如并行操作的多個(gè)實(shí)例)或并行操作的兩個(gè)或多個(gè)內(nèi)核的工作單元,其中所述內(nèi)核中的一個(gè)或多個(gè)在具有多個(gè)實(shí)例的內(nèi)核區(qū)域340內(nèi)實(shí)施。

圖7是示出實(shí)施異構(gòu)型多處理器設(shè)計(jì)的內(nèi)核的示例性方法700的流程圖。在一個(gè)示例中,異構(gòu)型多處理器設(shè)計(jì)可以是opencl設(shè)計(jì)。方法700可以由編譯時(shí)系統(tǒng)執(zhí)行,例如參考圖2描述的系統(tǒng)。方法700可以開始于其中異構(gòu)型多處理器設(shè)計(jì)包括內(nèi)核的狀態(tài),該內(nèi)核在c,c++,opencl,openclc,opencl兼容的高級(jí)編程語(yǔ)言或其他高級(jí)編程語(yǔ)言中指定。在一個(gè)方面,可以使用各種高級(jí)編程語(yǔ)言中的任一種來(lái)指定內(nèi)核。在另一個(gè)方面,用于指定內(nèi)核的高級(jí)編程語(yǔ)言可以是支持并行或并行操作的顯式規(guī)范或符號(hào)的高級(jí)編程語(yǔ)言。系統(tǒng)可以訪問(wèn)內(nèi)核。

在框705中,系統(tǒng)生成內(nèi)核的rtl描述。所述rtl描述可以使用硬件描述語(yǔ)言(hdl)來(lái)指定。如本文所定義的,術(shù)語(yǔ)“硬件描述語(yǔ)言”或“hdl”是便于諸如集成電路的數(shù)字系統(tǒng)的文檔化、設(shè)計(jì)和制造的計(jì)算機(jī)語(yǔ)言。hdl將程序驗(yàn)證技術(shù)與專家系統(tǒng)設(shè)計(jì)方法相結(jié)合。例如,使用hdl,用戶可以設(shè)計(jì)和指定電子電路,描述電路的操作,并創(chuàng)建測(cè)試以驗(yàn)證電路的操作。hdl包括正在建模的電子系統(tǒng)的空間和時(shí)間結(jié)構(gòu)以及行為的標(biāo)準(zhǔn)的基于文本的表達(dá)。hdl語(yǔ)法和語(yǔ)義包括用于表示并發(fā)的顯式符號(hào)。與大多數(shù)高級(jí)編程語(yǔ)言相反,hdl還包括明確的時(shí)間概念,這是數(shù)字系統(tǒng)的主要屬性。

在框710中,系統(tǒng)將內(nèi)核的rtl描述與基礎(chǔ)平臺(tái)集成。在一個(gè)方面,基礎(chǔ)平臺(tái)可以與在靜態(tài)區(qū)域335內(nèi)實(shí)現(xiàn)的并且參考圖4和/或5描述的電路設(shè)計(jì)類似或相同。

在框715中,系統(tǒng)生成配置比特流和支持?jǐn)?shù)據(jù)。所述配置比特流指定內(nèi)核的硬件實(shí)現(xiàn),例如參考圖6所描述的計(jì)算單元。在一個(gè)方面,例如,所述配置比特流可以是部分比特流,例如其僅指定內(nèi)核或一個(gè)或多個(gè)內(nèi)核。在另一個(gè)方面,所述配置比特流可以是完整比特流,其指定內(nèi)核或者根據(jù)情況可以是多內(nèi)核,以及基礎(chǔ)平臺(tái)。

所述支持?jǐn)?shù)據(jù)描述所述配置比特流和/或所述配置比特流的內(nèi)容。在一個(gè)方面,所述支持?jǐn)?shù)據(jù)可以指定內(nèi)核實(shí)現(xiàn)中包括的ip塊和/或內(nèi)核的列表。在另一個(gè)方面,所述支持?jǐn)?shù)據(jù)可以指定可編程ic內(nèi)的二維坐標(biāo)位置,當(dāng)指定為部分配置比特流時(shí),該內(nèi)核的硬件實(shí)現(xiàn)將在所述位置被實(shí)現(xiàn)。

在框720中,所述系統(tǒng)包括二進(jìn)制容器內(nèi)的所述配置比特流和所述支持?jǐn)?shù)據(jù)。在一個(gè)方面,所述二進(jìn)制容器可以包括多個(gè)單獨(dú)的文件。例如,二進(jìn)制容器可以包括一個(gè)或多個(gè)配置比特流和一個(gè)或多個(gè)支持?jǐn)?shù)據(jù)文件。

在另一個(gè)方面,內(nèi)核的rtl描述可以被包括在二進(jìn)制容器內(nèi)。然后可以將rtl描述與rtl模擬器一起使用,以便將內(nèi)核實(shí)現(xiàn)作為整體異構(gòu)型多處理器設(shè)計(jì)仿真的一部分進(jìn)行測(cè)試。例如,在異構(gòu)型多處理器設(shè)計(jì)的運(yùn)行時(shí)模擬期間,主機(jī)可以向rtl模擬器提供包含rtl描述的二進(jìn)制容器。rtl模擬器可以訪問(wèn)二進(jìn)制容器中的rtl描述。在另一個(gè)方面,內(nèi)核的可執(zhí)行版本可以被包含在可以使用用于測(cè)試和/或模擬目的的處理器來(lái)執(zhí)行的二進(jìn)制容器中。例如,在異構(gòu)型多處理器設(shè)計(jì)的運(yùn)行時(shí)模擬期間,主機(jī)可以將包含可執(zhí)行版本的內(nèi)核的二進(jìn)制容器提供給模擬器。應(yīng)當(dāng)理解,內(nèi)核的可執(zhí)行版本可以是內(nèi)核的硬件實(shí)現(xiàn)的可執(zhí)行模型。模擬器可以從二進(jìn)制容器訪問(wèn)內(nèi)核的可執(zhí)行版本。因此,二進(jìn)制容器支持多個(gè)不同的內(nèi)核實(shí)現(xiàn),無(wú)論是用于具有可編程ic的運(yùn)行時(shí)間的配置比特流,還是用于在數(shù)據(jù)處理系統(tǒng)上進(jìn)行仿真的可執(zhí)行版本和/或用于使用rtl模擬器進(jìn)行仿真的rtl版本。

所述二進(jìn)制容器可以包括僅有配置比特流;僅有內(nèi)核的可執(zhí)行版本;僅有內(nèi)核的rtl版本;配置比特流和內(nèi)核的rtl版本;配置比特流和內(nèi)核的可執(zhí)行版本;內(nèi)核的可執(zhí)行和rtl版本;或配置比特流,內(nèi)核的可執(zhí)行版本和內(nèi)核的rtl版本。對(duì)于在二進(jìn)制容器內(nèi)實(shí)現(xiàn)的內(nèi)核版本的任何前述組合,也可以包括支持?jǐn)?shù)據(jù)。cpu和/或gpu供應(yīng)商在異構(gòu)型多處理器設(shè)計(jì)中使用的現(xiàn)有容器,特別是opencl設(shè)計(jì),與“內(nèi)存(inmemory)”和地址映射對(duì)象一起使用。這樣的容器不支持同一容器內(nèi)的內(nèi)核或多個(gè)不同內(nèi)核類型的仿真版本。

雖然所使用的二進(jìn)制容器可以支持多種不同類型的內(nèi)核實(shí)現(xiàn),但是在一個(gè)方面,第一容器可以包括第一類型的內(nèi)核實(shí)現(xiàn),例如配置比特流,rtl描述或可執(zhí)行的,而第二二進(jìn)制容器可以包括不同類型的內(nèi)核實(shí)現(xiàn)。在另一個(gè)方面,第一容器可以包括指定第一內(nèi)核的部分配置比特流,而第二容器可以包括指定第二和不同內(nèi)核的部分配置比特流。

用于異構(gòu)型多處理器計(jì)算語(yǔ)言(例如,用于主機(jī)和內(nèi)核之間的通信的opencl)的標(biāo)準(zhǔn)api僅支持二進(jìn)制對(duì)象文件。由系統(tǒng)生成的二進(jìn)制容器符合這個(gè)二進(jìn)制要求,即所有預(yù)編譯的內(nèi)核都可以通過(guò)自包含的對(duì)象訪問(wèn)。在框720中生成的二進(jìn)制容器可以被主機(jī)用來(lái)在運(yùn)行時(shí)間內(nèi)在可編程ic內(nèi)實(shí)現(xiàn)內(nèi)核電路,例如計(jì)算單元。

圖8是示出用于在可編程ic內(nèi)實(shí)現(xiàn)異構(gòu)型多處理器設(shè)計(jì)的內(nèi)核的示例性過(guò)程800的塊流程圖。在一個(gè)示例中,異構(gòu)型多處理器設(shè)計(jì)可以是opencl設(shè)計(jì)。過(guò)程800可以由諸如參考圖2描述的執(zhí)行eda應(yīng)用程序255的系統(tǒng)執(zhí)行。在一個(gè)方面,eda應(yīng)用程序255可以被實(shí)現(xiàn)為opencl編譯器工具。過(guò)程800示出了示例性的編譯時(shí)(compile-time)系統(tǒng)實(shí)現(xiàn)。

如圖所示,異構(gòu)型多處理器設(shè)計(jì)275(例如也稱為異構(gòu)型多處理器應(yīng)用,opencl設(shè)計(jì)或opencl應(yīng)用)可以包括主機(jī)代碼805和內(nèi)核815。應(yīng)當(dāng)理解,雖然圖示為一個(gè)內(nèi)核,但是異構(gòu)型多處理器設(shè)計(jì)275也可以包括可以通過(guò)過(guò)程800實(shí)現(xiàn)的多于一個(gè)的內(nèi)核。主機(jī)代碼805是在主機(jī)中執(zhí)行的異構(gòu)型多處理器設(shè)計(jì)275的一部分。主機(jī)代碼805可以用諸如c,c++等的高級(jí)編程語(yǔ)言來(lái)指定。

如本文所定義,術(shù)語(yǔ)“高級(jí)編程語(yǔ)言”是指用于對(duì)數(shù)據(jù)處理系統(tǒng)進(jìn)行編程的編程語(yǔ)言或指令集,其中指令具有來(lái)自數(shù)據(jù)處理系統(tǒng)的細(xì)節(jié)(例如機(jī)器語(yǔ)言)的強(qiáng)抽象。例如,高級(jí)編程語(yǔ)言可以自動(dòng)化或隱藏諸如存儲(chǔ)器管理的數(shù)據(jù)處理系統(tǒng)的操作的方面。抽象的數(shù)量通常定義了編程語(yǔ)言有多么的“高級(jí)”。當(dāng)使用高級(jí)編程語(yǔ)言時(shí),用戶不需要面對(duì)高級(jí)編程語(yǔ)言將執(zhí)行的數(shù)據(jù)處理系統(tǒng)的寄存器、存儲(chǔ)器地址等困難。在這方面,高級(jí)編程語(yǔ)言包括很少或根本沒(méi)有在一對(duì)一的基礎(chǔ)上直接翻譯成數(shù)據(jù)處理系統(tǒng)的本地操作碼的指令。高級(jí)編程語(yǔ)言的示例包括但不限于c,c++,systemc等。

主機(jī)代碼805被提供給c編譯器840或其他高級(jí)語(yǔ)言編譯器。c編譯器840生成主機(jī)代碼805的目標(biāo)代碼版本(圖示為app.o860)。鏈接器885接收異構(gòu)型多處理器運(yùn)行時(shí)庫(kù)875app.o860,并且生成主機(jī)應(yīng)用程序894。異構(gòu)型多處理器運(yùn)行時(shí)庫(kù)875可以包括用于與目標(biāo)平臺(tái)通信的公共低級(jí)驅(qū)動(dòng)程序。主機(jī)應(yīng)用程序894由運(yùn)行時(shí)異構(gòu)型多處理器系統(tǒng)的cpu執(zhí)行。

異構(gòu)型多處理器高級(jí)綜合塊890接收內(nèi)核815并生成kernel.hdl892。kernel.hdl892是內(nèi)核815的rtl版本。系統(tǒng)匯編器850接收kernel.hdl892和基礎(chǔ)平臺(tái)描述825。在一個(gè)方面,基礎(chǔ)平臺(tái)描述825可以是描述實(shí)際基礎(chǔ)平臺(tái)的多方面的元數(shù)據(jù)文件。如上所述,所述基礎(chǔ)平臺(tái)是在可編程ic270的靜態(tài)區(qū)域335內(nèi)實(shí)現(xiàn)的電路。

例如,由基礎(chǔ)平臺(tái)描述825,系統(tǒng)匯編器850確定目標(biāo)平臺(tái)和用于內(nèi)核實(shí)現(xiàn)的可編程ic的特定類型。例如,系統(tǒng)匯編器850可以標(biāo)識(shí)目錄,該目錄指定關(guān)于基礎(chǔ)平臺(tái)的實(shí)施細(xì)節(jié)以及用于主機(jī)與目標(biāo)平臺(tái)和基礎(chǔ)平臺(tái)通信所需的低級(jí)驅(qū)動(dòng)程序。所識(shí)別的目錄可以包括基礎(chǔ)平臺(tái)的一個(gè)或多個(gè)打包的ip。系統(tǒng)匯編器850可以檢索基礎(chǔ)平臺(tái)的打包的ip,包括將基礎(chǔ)平臺(tái)與內(nèi)核耦合的互連ip。例如,互連ip可以指定將kernel.hdl892集成或并入基礎(chǔ)平臺(tái)的封裝ip所需的各種互連電路塊。系統(tǒng)匯編器850生成二進(jìn)制容器280。系統(tǒng)匯編器850可以生成指定與包含在二進(jìn)制容器280中的基礎(chǔ)平臺(tái)集成的內(nèi)核815的硬件實(shí)現(xiàn)的配置比特流。

例如,包含在二進(jìn)制容器280中的每個(gè)配置比特流可以實(shí)現(xiàn)從內(nèi)核815或kernel.hdl892確定的一個(gè)或多個(gè)計(jì)算單元(視具體情況而定)。如所討論的,系統(tǒng)設(shè)計(jì)者確定要為給定內(nèi)核并行實(shí)現(xiàn)的計(jì)算單元的數(shù)量。

根據(jù)用戶偏好,系統(tǒng)匯編器850可以在如之前所描述的二進(jìn)制容器280內(nèi)包括kernel.hdl892,例如,用于rtl仿真的內(nèi)核815的rtl版本和/或用于模擬的內(nèi)核815的可執(zhí)行的例如目標(biāo)代碼版本280。系統(tǒng)匯編器850還包括二進(jìn)制容器280內(nèi)的支持?jǐn)?shù)據(jù)(未示出)。

在一個(gè)方面,系統(tǒng)匯編器850將內(nèi)核815與基礎(chǔ)平臺(tái)集成。例如,具有在基礎(chǔ)平臺(tái)描述825和kernel.hdl892中指定的信息的系統(tǒng)匯編器850可以通過(guò)執(zhí)行諸如技術(shù)映射、布局、布線等功能來(lái)將內(nèi)核815與基礎(chǔ)平臺(tái)集成,從而產(chǎn)生配置比特流。所述配置比特流可以是指定基礎(chǔ)平臺(tái)和內(nèi)核兩者的完整配置比特流或僅指定內(nèi)核的部分配置比特流。在任何情況下,系統(tǒng)匯編器850使用指定的互連ip將基礎(chǔ)平臺(tái)與內(nèi)核耦合。

在另一個(gè)方面,系統(tǒng)匯編器850可以生成二進(jìn)制容器280,以包括除配置比特流之外的文件。例如,如上所述,內(nèi)核815可以被提供給異構(gòu)型多處理器編譯器,其產(chǎn)生內(nèi)核815的處理器可執(zhí)行的版本(例如目標(biāo)代碼)。內(nèi)核815的可執(zhí)行版本,例如內(nèi)核815的硬件實(shí)現(xiàn)的可執(zhí)行模型,可以被提供給系統(tǒng)匯編器850。系統(tǒng)匯編器850可以包括二進(jìn)制容器280內(nèi)的內(nèi)核815的可執(zhí)行版本代替配置比特流。在另一示例中,系統(tǒng)匯編器850可以包括二進(jìn)制容器280內(nèi)的kernel.hdl892代替配置比特流。

圖9是示出處理在ic270內(nèi)實(shí)現(xiàn)的用異構(gòu)型多處理器計(jì)算語(yǔ)言指定的內(nèi)核的示例性方法900的流程圖。在一個(gè)示例中,異構(gòu)型多處理器計(jì)算語(yǔ)言可以是opencl。方法900可以由編譯時(shí)系統(tǒng)執(zhí)行,例如參考圖2描述的系統(tǒng)。在一個(gè)方面,方法900示出了在內(nèi)核的rtl描述的生成期間執(zhí)行的各種操作,所述內(nèi)核初始時(shí)用openclc,c,c++,另一高級(jí)編程語(yǔ)言,或者在本公開內(nèi)容中指出的一種語(yǔ)言的衍生物和/或變體所指定。

在框905中,該系統(tǒng)識(shí)別并且映射所述內(nèi)核的存儲(chǔ)器訪問(wèn)。所述異構(gòu)型多處理器全局存儲(chǔ)器可以被映射到主存儲(chǔ)器總線。例如,opencl全局存儲(chǔ)器可能被映射到axi主存儲(chǔ)器總線。內(nèi)核參數(shù)可以映射到從控制總線。例如,內(nèi)核參數(shù)可以映射到axi從控制總線。

在框910中,該系統(tǒng)識(shí)別由內(nèi)核使用的參數(shù),并且包括用于ic內(nèi)核的硬件實(shí)現(xiàn)的存儲(chǔ)器映射內(nèi)的參數(shù)。在框915中,該系統(tǒng)將變量與ic的存儲(chǔ)器結(jié)構(gòu)相關(guān)聯(lián),作為內(nèi)核的專用存儲(chǔ)器。在框920中,該系統(tǒng)將本地存儲(chǔ)器指令與ic的存儲(chǔ)器結(jié)構(gòu)相關(guān)聯(lián),作為內(nèi)核的本地存儲(chǔ)器。

在框925中,該系統(tǒng)為所述內(nèi)核生成控制流程圖。在一個(gè)方面,系該統(tǒng)將內(nèi)核轉(zhuǎn)換為llvm中間表示(ir)格式。由llvmir格式,該系統(tǒng)通過(guò)識(shí)別其中的數(shù)據(jù)流來(lái)生成控制流程圖。在框930中,該系統(tǒng)使用所述控制流程圖來(lái)識(shí)別內(nèi)核的并行區(qū)域。該并行區(qū)域可以在控制流程圖中被隔離。例如,對(duì)于控制流程圖中的每個(gè)并行區(qū)域,該區(qū)域?qū)⒕哂羞M(jìn)入?yún)^(qū)域的一個(gè)控制邊緣和離開該區(qū)域的一個(gè)控制邊緣。

在框935中,該系統(tǒng)可選地圍繞每個(gè)并行區(qū)域構(gòu)建“for”循環(huán)。識(shí)別并行區(qū)域并將每個(gè)區(qū)域表示為“for”循環(huán)允許將作為數(shù)據(jù)并行實(shí)現(xiàn)的內(nèi)核表示為諸如c,c++等的連續(xù)高級(jí)編程語(yǔ)言。在框940中,該系統(tǒng)使用流水線生成電路描述。例如,通過(guò)將并行區(qū)域表示為“for”循環(huán),系統(tǒng)可以將該區(qū)域綜合為將被綜合的高級(jí)編程語(yǔ)言,例如c,c++等。

圖10是示出異構(gòu)型多處理器系統(tǒng)的示例性存儲(chǔ)器架構(gòu)1000的框圖。在一個(gè)示例中,異構(gòu)型多處理器系統(tǒng)是opencl系統(tǒng)。如圖所示,主機(jī)1005包括主機(jī)存儲(chǔ)器1010。主機(jī)1005可以被實(shí)現(xiàn)為處理器205,而主機(jī)存儲(chǔ)器1010可被實(shí)現(xiàn)為存儲(chǔ)器元件210。主機(jī)1005耦合到目標(biāo)平臺(tái)260以及全局存儲(chǔ)器和常量存儲(chǔ)器(constantmemory)1015。如所討論的,可以由存儲(chǔ)器控制器(未示出)提供對(duì)全局存儲(chǔ)器和常量存儲(chǔ)器1015的訪問(wèn)。全局存儲(chǔ)器和常量存儲(chǔ)器1015可以被實(shí)現(xiàn)為ram345,其中存儲(chǔ)器控制器被實(shí)現(xiàn)在ic270內(nèi)。然而應(yīng)當(dāng)理解,存儲(chǔ)器控制器可被實(shí)現(xiàn)為在ic270外部的目標(biāo)平臺(tái)260上的存儲(chǔ)器控制器,但其被配置為與ic270通信。

ic270包括計(jì)算單元1020和1025。雖然在ic270中示出了兩個(gè)計(jì)算單元,但是應(yīng)當(dāng)理解,ic270可以包括少于或多于兩個(gè)計(jì)算單元。此外,特定計(jì)算單元和在ic270內(nèi)實(shí)現(xiàn)的計(jì)算單元的特定數(shù)量可以在運(yùn)行時(shí)期間改變。計(jì)算單元1020和1025被實(shí)現(xiàn)為內(nèi)核區(qū)域340的一部分。出于說(shuō)明的目的,未示出靜態(tài)區(qū)域335。

如圖所示,計(jì)算單元1020包括本地存儲(chǔ)器1030,處理元件1040和1045以及專用存儲(chǔ)器1060和1065。本地存儲(chǔ)器1030由處理元件1040和1045共享。處理單元1040和1045中的每一個(gè)均耦合到專用存儲(chǔ)器1060和1065的單獨(dú)的未共享的一個(gè)。計(jì)算單元1025包括本地存儲(chǔ)器1035,處理元件1050和1055以及專用存儲(chǔ)器1070和1075。本地存儲(chǔ)器1035由處理元件1050和1055共享。處理單元1050和1055中的每一個(gè)均耦合到專用存儲(chǔ)器1070和1075中的單獨(dú)的未共享的一個(gè)。計(jì)算單元1020和1025都可以訪問(wèn)全局存儲(chǔ)器和常量存儲(chǔ)器1020。

在一個(gè)實(shí)施例中,可以使用目標(biāo)平臺(tái)上的ram、主機(jī)ram和/或主機(jī)的一個(gè)或多個(gè)高速緩存存儲(chǔ)器來(lái)實(shí)現(xiàn)主機(jī)存儲(chǔ)器1010和全局存儲(chǔ)器和經(jīng)常存儲(chǔ)器1020。例如,本地存儲(chǔ)器1030和1035可以使用一個(gè)或多個(gè)bram103在ic270內(nèi)實(shí)現(xiàn)??梢允褂胏lb102內(nèi)包括的查找表ram來(lái)實(shí)現(xiàn)專用存儲(chǔ)器1060、1056、1070和1075。

提供將ic270的存儲(chǔ)器結(jié)構(gòu)分配到圖10的存儲(chǔ)器架構(gòu)1000的存儲(chǔ)器僅僅為了說(shuō)明的目的。應(yīng)當(dāng)理解,在綜合期間,根據(jù)ic270的存儲(chǔ)器結(jié)構(gòu)的可用性和所需的存儲(chǔ)器的量,可以使用ic270的一個(gè)或多個(gè)其他存儲(chǔ)器結(jié)構(gòu)來(lái)實(shí)現(xiàn)專用存儲(chǔ)器和/或本地存儲(chǔ)器。

圖11是示出以異構(gòu)型多處理器計(jì)算語(yǔ)言指定的內(nèi)核的示例性處理的框圖。盡管圖11以opencl為示例,但是應(yīng)當(dāng)理解,可以以除opencl之外的高級(jí)編程語(yǔ)言來(lái)指定內(nèi)核,并且本公開內(nèi)容中描述的本發(fā)明的布置不限于所提供的示例。在一個(gè)方面,圖11示出了在圖9的框905中執(zhí)行的處理。如圖所示,該系統(tǒng)識(shí)別內(nèi)核中的“globalint”指令?!癵lobalint”指令指示從主機(jī)傳遞到內(nèi)核的特定緩沖區(qū)。該系統(tǒng)將存儲(chǔ)器訪問(wèn)映射為互連上的事務(wù)(transaction)。

在另一個(gè)方面,圖11示出了在圖9的框910中執(zhí)行的處理。在圖11的例子中,該系統(tǒng)確定所使用的標(biāo)識(shí)符(id),如由“get_local_id(0)”函數(shù)所示。例如,從主機(jī)傳入內(nèi)核的指針被指定在實(shí)現(xiàn)于內(nèi)核中的寄存器映射。諸如所述id之類的數(shù)據(jù)被主機(jī)寫入內(nèi)核,例如由在運(yùn)行時(shí)期間在主機(jī)中執(zhí)行的主機(jī)應(yīng)用程序?qū)懭搿@?,主機(jī)可以將任何必需的數(shù)據(jù)(諸如id之類)寫入到內(nèi)核電路610的寄存器映射的適當(dāng)?shù)募拇嫫髦小?/p>

該系統(tǒng)進(jìn)一步從對(duì)內(nèi)核程序代碼的分析識(shí)別內(nèi)核使用的任何隱式參數(shù)??赡苄枰獜闹鳈C(jī)提供給內(nèi)核的隱式參數(shù)的示例包括但不限于nd范圍的大小、工作組的大小等。在某些情況下,隱式參數(shù)可能不會(huì)通過(guò)主機(jī)和內(nèi)核之間的接口傳遞。然而,這些參數(shù)可以通過(guò)寄存器映射傳遞。

圖12是示出以異構(gòu)型多處理器計(jì)算語(yǔ)言指定內(nèi)核的示例性處理的框圖。雖然圖12以opencl為示例,應(yīng)當(dāng)理解,可以以除opencl之外的高級(jí)編程語(yǔ)言來(lái)指定內(nèi)核,并且在本公開內(nèi)描述的本發(fā)明的布置不限于所提供的示例。在一個(gè)方面,圖12示出了在圖9的框920和925中執(zhí)行的處理。在圖12的示例中,參考框920,諸如“id”之類的變量與實(shí)現(xiàn)內(nèi)核的專用存儲(chǔ)器1060的存儲(chǔ)器結(jié)構(gòu)相關(guān)聯(lián)。專用存儲(chǔ)器的示例可以包括流水線寄存器,小陣列,bram,查找表ram等。參考框925,該系統(tǒng)將每個(gè)“l(fā)ocalint”存儲(chǔ)器指令與內(nèi)核中的本地存儲(chǔ)器1030(諸如bram)相關(guān)聯(lián)。

圖13-1和13-2(作為集體統(tǒng)稱為圖13)展示了用異構(gòu)型多處理器計(jì)算語(yǔ)言指定內(nèi)核的處理。在一個(gè)方面,圖13示出了在圖9的框930和935中執(zhí)行的處理。參考圖13-1,其示出了用于內(nèi)核1300的示例性openclc源代碼。盡管圖13以opencl為示例,但是應(yīng)當(dāng)理解,可以以opencl之外的高級(jí)編程語(yǔ)言來(lái)指定內(nèi)核,并且本公開內(nèi)描述的本發(fā)明的布置不限于所提供的示例。

該系統(tǒng)將內(nèi)核1300的并行區(qū)域識(shí)別為區(qū)域1305、1310和1315。作為在框930中識(shí)別并行性的一部分,該系統(tǒng)可以識(shí)別控制并行性的特定指令和/或構(gòu)造。該系統(tǒng)可以識(shí)別內(nèi)核1300內(nèi)的“屏障(barrier)”指令的實(shí)例。例如,“屏障”指令指示在任何工作項(xiàng)目可以超過(guò)屏障指令之前,所有工作項(xiàng)目必須到達(dá)屏障指令。所述屏障指令可以用作存儲(chǔ)器柵欄或同步機(jī)制。該系統(tǒng)可以標(biāo)識(shí)“async_work_group_copy()”指令(在本文中稱為“async”)的實(shí)例。所述“async”指令指定所有工作項(xiàng)目必須使用相同的參數(shù)到達(dá)副本。因此,在一個(gè)方面,該系統(tǒng)通過(guò)識(shí)別內(nèi)核1300內(nèi)的控制并行性的指令來(lái)識(shí)別內(nèi)核1300的并行區(qū)域。

所述異構(gòu)型多處理器執(zhí)行和存儲(chǔ)器模型保證區(qū)域1305、1310和1315中的每一個(gè)可以完全并行、完全依次或以不同的組合來(lái)實(shí)現(xiàn)。必須遵守的序列化伴隨著直接影響并行性的指令和/或構(gòu)造(例如屏障和/或async指令)而出現(xiàn)。

圖13-2示出了用于內(nèi)核1300的框925的數(shù)據(jù)流程圖的生成。指示了并行區(qū)域1305、1310和1315。對(duì)應(yīng)于包含在區(qū)域1305中的“for”部分的結(jié)束或返回,包括了第四并行區(qū)域1305-1。

圖14是示出用異構(gòu)型多處理器計(jì)算語(yǔ)言指定內(nèi)核的示例性處理的框圖。在一個(gè)示例中,異構(gòu)型多處理器計(jì)算語(yǔ)言可以是opencl。在一個(gè)方面,圖14示出了在圖9的框935和940中執(zhí)行的處理。在圖14的例子中,示出了對(duì)應(yīng)于灰度轉(zhuǎn)換的區(qū)域1310的處理。每個(gè)循環(huán)迭代處理一個(gè)工作項(xiàng)。整個(gè)循環(huán)處理一個(gè)工作組。所述循環(huán)可以被實(shí)現(xiàn)為流水線,每個(gè)時(shí)鐘周期將一個(gè)新工作項(xiàng)引入該流水線。如圖所示,該系統(tǒng)在并行區(qū)域1310附近創(chuàng)建“for”循環(huán)結(jié)構(gòu)。所述電路描述使用如圖所示的流水線生成,其中每列工作項(xiàng)對(duì)應(yīng)于內(nèi)核的一個(gè)流水線階段。每行工作項(xiàng)對(duì)應(yīng)于一個(gè)循環(huán)。

內(nèi)核的示例性寄存器映射展示如下。

//0x00:controlsignals

//bit0-ap_start(read/write/coh)

//bit1-ap_done(read/cor)

//bit2-ap_idle(read)

//bit3-ap_ready(read)

//bit7-auto_restart(read/write)

//others-reserved

//0x04:globalinterruptenableregister

//bit0-globalinterruptenable(read/write)

//others-reserved

//0x08:ipinterruptenableregister(read/write)

//bit0-channel0(ap_done)

//bit1-channel1(ap_ready)

//others-reserved

//0x0c:ipinterruptstatusregister(read/tow)

//bit0-channel0(ap_done)

//bit1-channel1(ap_ready)

//others-reserved

//0x10:datasignalofgroup_id_x

//bit31~0-group_id_x[31:0](read/write)

//0x14:reserved

//0x18:datasignalofgroup_id_y

//bit31~0-group_id_y[31:0](read/write)

//0x1c:reserved

//0x20:datasignalofgroup_id_z

//bit31~0-group_id_z[31:0](read/write)

//0x24:reserved

//0x28:datasignalofglobal_offset_x

//bit31~0-global_offset_x[31:0](read/write)

//0x2c:reserved

//0x30:datasignalofglobal_offset_y

//bit31~0-global_offset_y[31:0](read/write)

//0x34:reserved

//0x38:datasignalofglobal_offset_z

//bit31~0-global_offset_z[31:0](read/write)

//0x3c:reserved

//0x40:datasignalofmatrix

//bit31~0-matrix[31:0](read/write)

//0x44:reserved

//0x48:datasignalofmaxindex

//bit31~0-maxindex[31:0](read/write)

//0x4c:reserved

//0x50:datasignalofs1

//bit31~0-s1[31:0](read/write)

//0x54:reserved

//0x58:datasignalofs2

//bit31~0-s2[31:0](read/write)

//0x5c:reserved

//(sc=selfclear,cor=clearonread,tow=toggleonwrite,

coh=clearonhandshake)

異構(gòu)型多處理器hls890,如參考圖8所述,為每個(gè)編譯成rtl的內(nèi)核生成如上所示的自定義寄存器映射。所述主機(jī)可以使用寄存器映射將位于目標(biāo)平臺(tái)上的設(shè)備存儲(chǔ)器中的緩沖器(例如,opencl緩沖器)的地址、標(biāo)量參數(shù)傳遞到內(nèi)核,以及控制信號(hào)以控制內(nèi)核。所述主機(jī)也可以使用寄存器映射將opencl規(guī)范要求的組id和組偏移量傳遞給內(nèi)核。在一個(gè)方面,寄存器映射可以被包括在生成的二進(jìn)制容器中。例如,寄存器映射可以是并入先前描述的二進(jìn)制容器中的支持?jǐn)?shù)據(jù)的一部分。

示例性平臺(tái)元數(shù)據(jù)文件展示如下。

在一個(gè)方面,上面所示的平臺(tái)元數(shù)據(jù)文件是參考圖8所描述并且提供給系統(tǒng)鏈接器830的基礎(chǔ)平臺(tái)描述825的實(shí)現(xiàn)。如圖所示,所述平臺(tái)元數(shù)據(jù)文件指定了可編程ic耦合到的目標(biāo)平臺(tái)或板的類型。此外,所述平臺(tái)元數(shù)據(jù)文件指示了板上可編程ic的特定特征,例如模型和/或類型以及特定區(qū)域(例如,靜態(tài)區(qū)域)的時(shí)鐘頻率。鏈接器830可以從所述平臺(tái)元數(shù)據(jù)文件識(shí)別目標(biāo)平臺(tái),并訪問(wèn)為平臺(tái)元數(shù)據(jù)文件中指定的為目標(biāo)平臺(tái)命名的目錄結(jié)構(gòu)。

圖15是示例性目錄結(jié)構(gòu)1500。所指示的頂級(jí)目錄使用與可由系統(tǒng)鏈接器830從平臺(tái)元數(shù)據(jù)文件讀取的目標(biāo)平臺(tái)相同的名稱。在這個(gè)例子中,所述頂層目錄叫做“boardname”。然而,參考上面提供的示例性平臺(tái)元數(shù)據(jù)文件,所述頂級(jí)目錄可以被指定為“vc690”或其派生詞。在任何情況下,系統(tǒng)鏈接器830使用圖15的目錄結(jié)構(gòu)來(lái)獲得平臺(tái)fpga845。為展示的目的,圖15中的目錄為粗體字。例如,“boardname”,“driver”,“ipi”和“l(fā)ocal_lib”是目錄。列出的其余項(xiàng)是文件和/或軟件包。

通過(guò)正確打包并添加到系統(tǒng)的指定平臺(tái)目錄中的文件,該系統(tǒng)可以自動(dòng)定位任何新添加的目標(biāo)平臺(tái)。在所示的示例中,“driver_file.so”是主機(jī)通過(guò)總線與目標(biāo)平臺(tái)通信的低級(jí)驅(qū)動(dòng)程序。如圖所示,driver_file.so位于“driver”目錄中。所述的平臺(tái)元數(shù)據(jù)文件,在圖15的示例中被稱為“platform.xml”,被放在根目錄下。如參考圖3、4和5所述的在ic的靜態(tài)區(qū)域中使用的任何封裝的ip,可以存儲(chǔ)在“l(fā)ocal_lib”目錄中。名為“bp.tcl”的基礎(chǔ)平臺(tái)框圖表tcl文件和靜態(tài)區(qū)域電路設(shè)計(jì)中的任何頂級(jí)設(shè)計(jì)約束文件(例如時(shí)序和/或物理約束)包含在“ipi”目錄中。

在圖15中描繪為“driver_file.so”的公共低級(jí)驅(qū)動(dòng)程序可以包括具有多個(gè)功能的api。所述的公共低級(jí)驅(qū)動(dòng)程序api(以下簡(jiǎn)稱“驅(qū)動(dòng)程序api”)允許在主機(jī)中執(zhí)行異構(gòu)型多處理器運(yùn)行時(shí)程序代碼以與目標(biāo)平臺(tái)進(jìn)行通信。例如,驅(qū)動(dòng)程序api支持將配置比特流下載到可編程ic中,分配和/或解除分配緩沖區(qū),將緩沖區(qū)從主機(jī)存儲(chǔ)器遷移到目標(biāo)平臺(tái)存儲(chǔ)器,將目標(biāo)平臺(tái)存儲(chǔ)器遷移到主機(jī)存儲(chǔ)器,以及通過(guò)內(nèi)核的控制端口和如在可編程ic內(nèi)實(shí)現(xiàn)的內(nèi)核進(jìn)行通信。

所述的驅(qū)動(dòng)程序api還支持地址空間。所述地址空間可用于訪問(wèn)目標(biāo)平臺(tái)的外圍設(shè)備。例如,目標(biāo)平臺(tái)的每個(gè)外圍設(shè)備可能具有地址空間的其自己的存儲(chǔ)器映射范圍。目標(biāo)平臺(tái)可選擇地具有可用于尋址目標(biāo)平臺(tái)的所有外圍設(shè)備的平面存儲(chǔ)器空間(flatmemoryspace)。

所述的driver_file.so可以支持各種數(shù)量,例如可以在目標(biāo)平臺(tái)上讀取或?qū)懭氲木彌_器(例如dma緩沖器)的最小尺寸。此外,可以支持稱為“enums”的一個(gè)或多個(gè)枚舉的地址空間。存儲(chǔ)器操作可以使用平面尋址或相對(duì)尋址。示例性的枚舉可以包括但不限于,xcl_addr_space_device_flat,xcl_addr_space_device_ram,xcl_addr_kernel_ctrl和xcl_addr_space_max。

所述驅(qū)動(dòng)程序api支持多種設(shè)備訪問(wèn)操作,包括但不限于:

●xcldevicehandlexclopen(constchar*devicename)

●voidxclclose(xcldevicehandlehandle)

●intxclgetdeviceinfo(xcldevicehandlehandle,xcldeviceinfo*info)(xcldevicehandlehandle)

所述驅(qū)動(dòng)程序api通過(guò)操作“intxclloadbitstream(xcldevicehandlehandle,constchar*filename)”來(lái)支持配置比特流的加載操作。因此,主機(jī)可以啟動(dòng)將配置比特流(無(wú)論是完整的還是部分的)加載到ic中,以在運(yùn)行時(shí)期間根據(jù)需要在硬件中實(shí)現(xiàn)一個(gè)或多個(gè)不同的內(nèi)核。

所述驅(qū)動(dòng)程序api提供用于管理目標(biāo)平臺(tái)存儲(chǔ)器的各種操作。例如,目標(biāo)平臺(tái)的供應(yīng)商需要使用以下api來(lái)提供內(nèi)存管理:

●uint64_txclallocdevicebuffer(xcldevicehandlehandle,size_tsize)

操作“xclallocdevicebuffer”在目標(biāo)平臺(tái)上分配指定大小的緩沖區(qū),并返回目標(biāo)平臺(tái)ram中分配的緩沖區(qū)的偏移量作為返回值。該偏移作為緩沖區(qū)句柄。opencl運(yùn)行時(shí)(runtime)隨后將返回的句柄傳遞給opencl內(nèi)核。opencl內(nèi)核將使用返回的句柄對(duì)目標(biāo)平臺(tái)ram中分配的緩沖區(qū)執(zhí)行總線主控讀取和/或?qū)懭氩僮?。主機(jī)不直接對(duì)目標(biāo)平臺(tái)ram寫入。在沒(méi)有空閑塊的情況下,該函數(shù)應(yīng)返回-1。

●voidxclfreedevicebuffer(xcldevicehandlehandle,uint64_tbuf)

操作“xclfreedevicebuffer”釋放先前由xclallocdevicebuffer分配的內(nèi)存。釋放的內(nèi)存稍后可能會(huì)因?yàn)閷?duì)xclallocdevicebuffer的另一次調(diào)用而被重用。傳遞以前未被xclallocdevicebuffer分配的緩沖區(qū)句柄將導(dǎo)致錯(cuò)誤狀況。

●size_txclcopybufferhost2device(xcldevicehandlehandle,uint64_tdest,constvoid*src,size_tsize,size_tseek)

操作“xclcopybufferhost2device”將主機(jī)緩沖區(qū)的內(nèi)容復(fù)制到駐留在目標(biāo)平臺(tái)上的目標(biāo)緩沖區(qū)中。src單元是指主機(jī)緩沖區(qū)指針,dest是指設(shè)備緩沖區(qū)句柄。傳遞先前未由xclallocdevicebuffer分配的dest句柄將導(dǎo)致錯(cuò)誤。seek單元指定dest句柄中的偏移量。在size加上seek大于先前分配的設(shè)備緩沖區(qū)的尺寸時(shí)傳遞size將導(dǎo)致錯(cuò)誤。在提供的示例中,pciedma用于遷移緩沖區(qū)。

●size_txclcopybufferdevice2host(xcldevicehandlehandle,void*dest,uint64_tsrc,size_tsize,size_tskip)

操作xclcopybufferdevice2host將內(nèi)容從目標(biāo)平臺(tái)駐留緩沖區(qū)復(fù)制到主機(jī)緩沖區(qū)。srs單元指的是設(shè)備緩沖區(qū)句柄,dest單元指的是主機(jī)緩沖區(qū)指針。錯(cuò)誤將導(dǎo)致傳遞先前未由xclallocdevicebuffer分配的src句柄。skip單元指定src句柄中的偏移量。在size加上skip大于先前分配的設(shè)備緩沖區(qū)的尺寸時(shí)傳遞size將導(dǎo)致錯(cuò)誤。在提供的示例中,pciedma用于遷移緩沖區(qū)。

●size_txclwrite(xcldevicehandlehandle,xcladdressspacespace,uint64_toffset,constvoid*hostbuf,size_tsize)

操作xclwrite將主機(jī)緩沖區(qū)hostbuf的內(nèi)容復(fù)制到目標(biāo)平臺(tái)地址映射中的特定位置。所述的hostbuf的內(nèi)容用于對(duì)目標(biāo)平臺(tái)的外設(shè)進(jìn)行編程。例如,在主機(jī)中執(zhí)行的opencl運(yùn)行時(shí)使用此操作將參數(shù)發(fā)送到可編程ic內(nèi)的內(nèi)核。所述偏移量與地址空間相關(guān)。

●size_txclread(xcldevicehandlehandle,xcladdressspacespace,uint64_toffset,void*hostbuf,size_tsize)

操作xclread將數(shù)據(jù)從目標(biāo)平臺(tái)地址映射中的特定位置復(fù)制到主機(jī)緩沖區(qū)hostbuf。該操作用于讀取目標(biāo)平臺(tái)外圍設(shè)備的狀態(tài)。例如,opencl運(yùn)行時(shí)程序庫(kù)使用此操作來(lái)確定內(nèi)核是否已完成運(yùn)行。所述偏移量與地址空間相關(guān)。

主機(jī)的操作系統(tǒng)需要內(nèi)核dma驅(qū)動(dòng)程序以與目標(biāo)平臺(tái)進(jìn)行通信。在一個(gè)方面,公共低級(jí)驅(qū)動(dòng)程序api可以分層在內(nèi)核dma驅(qū)動(dòng)器的頂部,以使opencl運(yùn)行時(shí)與驅(qū)動(dòng)程序的細(xì)節(jié)隔離。所述驅(qū)動(dòng)程序應(yīng)是多線程安全的。opencl運(yùn)行時(shí)可選地使用多于一個(gè)線程同時(shí)讀取和寫入設(shè)備。

在另一個(gè)方面,驅(qū)動(dòng)程序api可以包括中斷功能。例如,內(nèi)核的寄存器映射可以包括一個(gè)或多個(gè)存儲(chǔ)器位置,其中內(nèi)核可能存儲(chǔ)標(biāo)志在所述位置。在寄存器映射的指定存儲(chǔ)器位置檢測(cè)到標(biāo)志可能會(huì)導(dǎo)致靜態(tài)區(qū)域通過(guò)作為驅(qū)動(dòng)程序api一部分提供的功能來(lái)觸發(fā)對(duì)主機(jī)的中斷。

盡管上面示出的示例針對(duì)opencl實(shí)現(xiàn),但是應(yīng)當(dāng)理解,可以使用任何異構(gòu)型多處理器計(jì)算語(yǔ)言,并且可以相應(yīng)地調(diào)整作為api的一部分描述的各種操作。

圖16是示出內(nèi)核執(zhí)行的示例性方法1600的流程圖。方法1600開始于內(nèi)核在可編程ic內(nèi)實(shí)現(xiàn)并且目標(biāo)平臺(tái)與主機(jī)通信地鏈接的狀態(tài)。例如,主機(jī)可以包括一個(gè)或多個(gè)二進(jìn)制容器或者可以訪問(wèn)一個(gè)或多個(gè)二進(jìn)制容器。主機(jī)訪問(wèn)二進(jìn)制容器,并將配置比特流文件從二進(jìn)制容器提供給ic,例如到ram345。主機(jī)可以啟動(dòng)作為驅(qū)動(dòng)程序api的部分而被描述的配置比特流加載操作,從而使ic加載配置比特流并實(shí)現(xiàn)由配置比特流指定的內(nèi)核。如所討論的,主機(jī)可以導(dǎo)致一個(gè)或多個(gè)不同的配置比特流(無(wú)論是部分的還是完整的)在運(yùn)行時(shí)的不同時(shí)間被加載以實(shí)現(xiàn)ic內(nèi)的一個(gè)或多個(gè)不同的內(nèi)核。

在框1605中,主機(jī)應(yīng)用程序被初始化。所述主機(jī)應(yīng)用程序包括如圖8所示的異構(gòu)型多處理器運(yùn)行時(shí)程序庫(kù)。在框1610中,主機(jī)應(yīng)用程序在主機(jī)存儲(chǔ)器中分配緩沖區(qū)。在框1615中,主機(jī)應(yīng)用程序發(fā)起傳送,將緩沖器內(nèi)容從主機(jī)存儲(chǔ)器發(fā)送到目標(biāo)平臺(tái)存儲(chǔ)器。

在框1620中,主機(jī)應(yīng)用程序通過(guò)從接口向內(nèi)核發(fā)信號(hào)開始運(yùn)行。在框1625中,主機(jī)應(yīng)用程序可選地開始輪詢目標(biāo)平臺(tái)以監(jiān)視完成的信號(hào)(donesignal)。在框1630中,所述內(nèi)核(即內(nèi)核的硬件實(shí)現(xiàn))執(zhí)行或開始運(yùn)行。所述內(nèi)核加載并存儲(chǔ)來(lái)自目標(biāo)平臺(tái)存儲(chǔ)器的數(shù)據(jù)。在框1635中,內(nèi)核響應(yīng)于完成處理而將存儲(chǔ)器映射寄存器中的狀態(tài)改變?yōu)橥瓿?,或產(chǎn)生中斷。在框1640中,主機(jī)應(yīng)用程序?qū)⒛繕?biāo)平臺(tái)存儲(chǔ)器的更新的緩沖器內(nèi)容(即結(jié)果)傳送到主機(jī)存儲(chǔ)器。在框1645中,異構(gòu)型多處理器運(yùn)行時(shí)(例如在主機(jī)或主機(jī)應(yīng)用程序中執(zhí)行的)從主機(jī)存儲(chǔ)器讀取緩沖器。

為了說(shuō)明的目的,闡述了具體的術(shù)語(yǔ)的含義以提供對(duì)本文公開的各種發(fā)明構(gòu)思的透徹理解。然而,這里使用的術(shù)語(yǔ)僅用于描述本發(fā)明的具體方面,而不是限制性的。

如在本公開內(nèi)容中所定義的,術(shù)語(yǔ)“一(個(gè))”和“一(種)”表示一個(gè)或多于一個(gè)。如本文所定義的術(shù)語(yǔ)“多個(gè)”是指兩個(gè)或多于兩個(gè)。如本文所定義的術(shù)語(yǔ)“另一個(gè)”是指至少第二個(gè)或更多個(gè)。除非另有說(shuō)明,本文所定義的術(shù)語(yǔ)“耦合”是指連接,無(wú)論是直接地沒(méi)有任何中間元件,還是間接地連接一個(gè)或多個(gè)中間元件。兩個(gè)元件也可以通過(guò)通信信道、路徑、網(wǎng)絡(luò)或系統(tǒng)機(jī)械地、電氣地或通信地耦合。

如本文所定義,術(shù)語(yǔ)“自動(dòng)”意味著沒(méi)有用戶干預(yù)。如本文所定義,術(shù)語(yǔ)“用戶”是指人。本文定義的術(shù)語(yǔ)“和/或”是指一個(gè)或多個(gè)相關(guān)列出的項(xiàng)目的任何和所有可能的組合。當(dāng)在本公開中使用時(shí),術(shù)語(yǔ)“包括”和/或“包含”是指所述特征,整數(shù),步驟,操作,元件和/或組件的存在,但不排除存在或添加一個(gè)或多個(gè)其他特征,整數(shù),步驟,操作,元件,組件和/或其組合。盡管這里可以使用術(shù)語(yǔ)“第一”,“第二”等來(lái)描述各種元素,但是這些元素不應(yīng)該被這些術(shù)語(yǔ)限制,因?yàn)檫@些術(shù)語(yǔ)僅用于將一個(gè)元素與另一個(gè)元素區(qū)分開,除非上下文另有說(shuō)明。

如本文所定義,術(shù)語(yǔ)“如果”是指“當(dāng)?shù)臅r(shí)候”,“一旦”,“響應(yīng)于確定”,“響應(yīng)于檢測(cè)”,“應(yīng)答于確定”或“應(yīng)答于檢測(cè)”,取決于上下文語(yǔ)境。類似地,短語(yǔ)“如果被確定”或短語(yǔ)“如果(所述情況或事件)被檢測(cè)到”,如本文所定義的,是指“一旦確定”,“響應(yīng)于確定”,“應(yīng)答于確定”,“一旦檢測(cè)到(所述情況或事件)”,“響應(yīng)于檢測(cè)到(所述情況或事件)”或“應(yīng)答于檢測(cè)到(所述情況或事件)”,根據(jù)上下文語(yǔ)境。

在本公開內(nèi)容中,相同的附圖標(biāo)記用于表示終端、信號(hào)線、導(dǎo)線及其對(duì)應(yīng)的信號(hào)。在這方面,在本公開內(nèi)容中,術(shù)語(yǔ)“信號(hào)”、“線”、“連接”、“端子”和“引腳”可能有時(shí)互換使用。還應(yīng)當(dāng)理解,術(shù)語(yǔ)“信號(hào)”、“線”等可以表示一個(gè)或多個(gè)信號(hào),例如通過(guò)單根導(dǎo)線傳送單個(gè)位或通過(guò)多個(gè)并行導(dǎo)線傳送多個(gè)并行位。此外,每個(gè)線或信號(hào)可以表示由信號(hào)或線連接的兩個(gè)或更多個(gè)組件之間的雙向通信(視情況而定)。

本公開內(nèi)容描述的一個(gè)或多個(gè)方面可以硬件或硬件和軟件的組合來(lái)實(shí)現(xiàn)。一個(gè)或多個(gè)方面可以在一個(gè)系統(tǒng)中以集中方式實(shí)現(xiàn),或者以分布式方式實(shí)現(xiàn),其中不同的元素分布在多個(gè)互連的系統(tǒng)中。任何種類的數(shù)據(jù)處理系統(tǒng)或適用于執(zhí)行本文描述的方法的至少一部分的其他設(shè)備都是適合的。

一個(gè)或多個(gè)方面還可以嵌入到計(jì)算機(jī)程序產(chǎn)品中,該計(jì)算機(jī)程序產(chǎn)品包括能夠?qū)崿F(xiàn)本文描述的方法的所有特征。計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)。如本文所定義,短語(yǔ)“計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)”是指包含或存儲(chǔ)由指令執(zhí)行系統(tǒng),裝置或設(shè)備使用或與指令執(zhí)行系統(tǒng),設(shè)備或設(shè)備結(jié)合使用的程序代碼的存儲(chǔ)介質(zhì)。如本文所定義的,“計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)”是非暫態(tài)的,因此本身不是暫時(shí)傳播信號(hào)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例可以包括但不限于光介質(zhì),磁介質(zhì),磁光介質(zhì),諸如ram的計(jì)算機(jī)存儲(chǔ)器,大容量存儲(chǔ)設(shè)備(例如,硬盤)等。

附圖中的流程圖和框圖示出了根據(jù)本文公開的本發(fā)明設(shè)備的各個(gè)方面的系統(tǒng),方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的架構(gòu),功能和操作。在這方面,流程圖或框圖中的每個(gè)塊可以表示代碼的模塊、段或部分,其包括用于實(shí)現(xiàn)指定功能的一個(gè)或多個(gè)可執(zhí)行指令。還將注意到,框圖和/或流程圖的每個(gè)塊和方框圖和/或流程圖說(shuō)明中的塊的組合可以由執(zhí)行指定功能或動(dòng)作的專用的基于硬件的系統(tǒng)、或?qū)S糜布陀?jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。

在一個(gè)方面,流程圖示例中的塊可以以對(duì)應(yīng)于各個(gè)塊中數(shù)字的增加的數(shù)字順序來(lái)執(zhí)行。在其他方面,塊可以以與塊中的數(shù)字不同或變化的順序執(zhí)行。例如,可以基本上同時(shí)執(zhí)行連續(xù)示出的兩個(gè)或更多個(gè)塊。在其他情況下,有時(shí)可能以相反的順序執(zhí)行兩個(gè)或多個(gè)塊,這取決于所涉及的功能。在其他情況下,可以以不同的順序執(zhí)行一個(gè)或多個(gè)塊,結(jié)果被存儲(chǔ)并用于后續(xù)或其他不立即跟隨的塊中。

在本文中,術(shù)語(yǔ)“計(jì)算機(jī)程序”,“軟件”,“應(yīng)用程序”,“計(jì)算機(jī)可用程序代碼”,“程序代碼”,“可執(zhí)行代碼”,衍生物和/或其組合意味著旨在使數(shù)據(jù)處理系統(tǒng)直接或以下面的任一或兩者執(zhí)行特定功能的一組指令的任何語(yǔ)言,代碼或符號(hào):a)轉(zhuǎn)換為另一種語(yǔ)言,代碼或符號(hào);b)以不同的物質(zhì)形式復(fù)制。例如,程序代碼可以包括但不限于子例程,函數(shù),過(guò)程,對(duì)象方法,對(duì)象實(shí)現(xiàn),可執(zhí)行應(yīng)用,小應(yīng)用程序,小服務(wù)程序,源代碼,目標(biāo)代碼,共享庫(kù)/動(dòng)態(tài)加載庫(kù)和/或設(shè)計(jì)用于在計(jì)算機(jī)系統(tǒng)上執(zhí)行的其他指令序列。

因此,在本公開中,使用諸如“處理”或“運(yùn)算”或“計(jì)算”或“確定”或“顯示”等術(shù)語(yǔ)的陳述指的是數(shù)據(jù)處理系統(tǒng)的動(dòng)作和處理,例如計(jì)算機(jī)系統(tǒng)或類似的電子計(jì)算設(shè)備,其將表示為計(jì)算機(jī)系統(tǒng)的寄存器和/或存儲(chǔ)器內(nèi)的物理(電子)量的數(shù)據(jù)操作和變換為類似地表示為計(jì)算機(jī)系統(tǒng)存儲(chǔ)器和/或寄存器或其他此類信息存儲(chǔ),傳輸或顯示設(shè)備中作為物理量的其他數(shù)據(jù)。

所附權(quán)利要求書中的所有方法或步驟加功能元件的相應(yīng)結(jié)構(gòu),物質(zhì),作用和等同物旨在包括與特別要求保護(hù)的其它要求保護(hù)的元件相組合地執(zhí)行該功能的任何結(jié)構(gòu),物質(zhì)或作用。

一種方法包括:使用處理器來(lái)生成異構(gòu)型多處理器設(shè)計(jì)的第一內(nèi)核的rtl描述;將第一內(nèi)核的rtl描述與提供可編程ic內(nèi)的靜態(tài)區(qū)域的基礎(chǔ)平臺(tái)電路設(shè)計(jì)集成,所述可編程ic向所述異構(gòu)型多處理器設(shè)計(jì)的主機(jī)提供接口;從第一內(nèi)核的rtl描述并使用所述處理器生成指定第一內(nèi)核的硬件實(shí)現(xiàn)的第一配置比特流以及支持配置比特流的數(shù)據(jù)。該方法還包括在二進(jìn)制容器內(nèi)包含所述第一配置比特流和支持?jǐn)?shù)據(jù)。

在一個(gè)示例中,所述異構(gòu)型多處理器設(shè)計(jì)是opencl設(shè)計(jì),所述第一內(nèi)核用opencl指定。

在一個(gè)方面,所述支持?jǐn)?shù)據(jù)包括在所述可編程ic內(nèi)實(shí)現(xiàn)的第一內(nèi)核的硬件實(shí)現(xiàn)的二維位置。

該方法可以包括加載所述第一內(nèi)核的配置比特流,該配置比特流在異構(gòu)型多處理器設(shè)計(jì)的運(yùn)行時(shí)在可編程ic內(nèi)創(chuàng)建第一內(nèi)核的硬件實(shí)現(xiàn)的一個(gè)實(shí)例。

該方法還可以包括加載所述第一內(nèi)核的配置比特流,該配置比特流在異構(gòu)型多處理器設(shè)計(jì)的運(yùn)行時(shí)在可編程ic內(nèi)創(chuàng)建第一內(nèi)核的硬件實(shí)現(xiàn)的多個(gè)實(shí)例。

該方法還可以包括將指定異構(gòu)型多處理器設(shè)計(jì)的第二內(nèi)核的硬件實(shí)現(xiàn)的第二配置比特流包括在第二二進(jìn)制容器內(nèi)。所述第二內(nèi)核的硬件實(shí)現(xiàn)的至少一個(gè)實(shí)例可以在可編程ic內(nèi)創(chuàng)建。

在一個(gè)方面,生成第一配置比特流可以包括生成第一配置比特流作為指定內(nèi)核電路的部分配置比特流。在另一個(gè)方面,生成第一配置比特流可以包括生成第一配置比特流作為指定內(nèi)核電路和基礎(chǔ)平臺(tái)電路的完整配置比特流。

一種方法包括:使用處理器來(lái)生成異構(gòu)型多處理器設(shè)計(jì)的第一內(nèi)核的rtl描述;將第一內(nèi)核的rtl描述與基礎(chǔ)平臺(tái)電路設(shè)計(jì)集成,該基礎(chǔ)平臺(tái)電路設(shè)計(jì)提供可編程ic內(nèi)的靜態(tài)區(qū)域給異構(gòu)型多處理器設(shè)計(jì)的主機(jī);使用所述處理器并從第一內(nèi)核的rtl描述生成第一內(nèi)核的rtl描述的支持?jǐn)?shù)據(jù)。該方法還包括在二進(jìn)制容器內(nèi)包含所述第一內(nèi)核的rtl描述和支持?jǐn)?shù)據(jù)。

在一個(gè)示例中,所述異構(gòu)型多處理器設(shè)計(jì)是opencl設(shè)計(jì),第一內(nèi)核用opencl指定。

該方法可以包括生成內(nèi)核的可執(zhí)行版本并且在二進(jìn)制容器內(nèi)包括所述內(nèi)核的可執(zhí)行版本。

該方法還可以包括,主機(jī)在運(yùn)行時(shí)將rtl描述從二進(jìn)制容器提供給rtl模擬器并且在rtl模擬器中模擬內(nèi)核的rtl描述。

該方法還可以包括在第二二進(jìn)制容器內(nèi)包括異構(gòu)型多處理器設(shè)計(jì)的第二內(nèi)核的rtl描述。

一種系統(tǒng),可以包括被編程以啟動(dòng)可執(zhí)行操作的處理器。所述可執(zhí)行操作包括,生成異構(gòu)型多處理器設(shè)計(jì)的第一內(nèi)核的rtl描述;將所述第一內(nèi)核的rtl描述與提供可編程ic內(nèi)的靜態(tài)區(qū)域的基礎(chǔ)平臺(tái)電路設(shè)計(jì)集成,所述可編程ic向所述異構(gòu)型多處理器設(shè)計(jì)的主機(jī)提供接口;使用所述處理器并從第一內(nèi)核的rtl描述生成指定第一內(nèi)核的硬件實(shí)現(xiàn)的第一配置比特流和配置比特流的支持?jǐn)?shù)據(jù)。該方法還包括在二進(jìn)制容器內(nèi)包含所述第一配置比特流和支持?jǐn)?shù)據(jù)。

在一個(gè)示例中,所述異構(gòu)型多處理器設(shè)計(jì)是opencl設(shè)計(jì),第一內(nèi)核在opencl中指定。

所述支持?jǐn)?shù)據(jù)可以包括在可編程ic內(nèi)實(shí)現(xiàn)的第一內(nèi)核的硬件實(shí)現(xiàn)的二維位置。

所述可執(zhí)行操作可以包括加載所述第一內(nèi)核的配置比特流,該配置比特流在異構(gòu)型多處理器設(shè)計(jì)的運(yùn)行期間創(chuàng)建在可編程ic內(nèi)的第一內(nèi)核的硬件實(shí)現(xiàn)的一個(gè)實(shí)例。

所述可執(zhí)行操作還可以包括加載所述第一內(nèi)核的配置比特流,該配置比特流在異構(gòu)型多處理器設(shè)計(jì)的運(yùn)行期間創(chuàng)建在可編程ic內(nèi)的第一內(nèi)核的硬件實(shí)現(xiàn)的多個(gè)實(shí)例。

所述可執(zhí)行操作還可以包括將指定異構(gòu)型多處理器設(shè)計(jì)的第二內(nèi)核的硬件實(shí)現(xiàn)的第二配置比特流包括在第二二進(jìn)制容器內(nèi)。所述可執(zhí)行操作可以包括在可編程ic內(nèi)創(chuàng)建第二內(nèi)核的硬件實(shí)現(xiàn)的至少一個(gè)實(shí)例。

在一個(gè)方面,生成第一配置比特流可以包括生成第一配置比特流作為指定內(nèi)核電路的部分配置比特流。在另一個(gè)方面,生成第一配置比特流可以包括生成第一配置比特流作為指定內(nèi)核電路和基礎(chǔ)平臺(tái)電路的完整配置比特流。

在另一示例中,ic包括靜態(tài)的并且在ic和主機(jī)處理器之間提供接口的第一區(qū)域。所述第一區(qū)域包括具有第一主接口的第一互連電路塊和具有第一從接口的第二互連電路塊。所述ic包括耦合到所述第一區(qū)域的第二區(qū)域。所述第二區(qū)域?qū)崿F(xiàn)異構(gòu)型多處理器設(shè)計(jì)的內(nèi)核,并且包括耦合到第一互連電路塊的第一主接口并被配置為從主機(jī)處理器接收命令的從接口。所述第二區(qū)域還包括耦合第二互連電路塊的第一從接口的主接口,其中所述第二區(qū)域的所述主接口是用于存儲(chǔ)器控制器的主控。

在一個(gè)示例中,異構(gòu)型多處理器設(shè)計(jì)是opencl設(shè)計(jì)。

在一個(gè)方面,第二區(qū)域可以在運(yùn)行時(shí)動(dòng)態(tài)地重新配置以在主機(jī)處理器的控制下實(shí)現(xiàn)不同的內(nèi)核。在另一個(gè)方面,第二區(qū)域可以在運(yùn)行時(shí)期間被動(dòng)態(tài)地重新配置,以在主機(jī)處理器的控制下實(shí)現(xiàn)不同的內(nèi)核,同時(shí)保持第一區(qū)域完整。

第一區(qū)域可以包括總線端點(diǎn)和耦合到總線端點(diǎn)的dma控制器。所述第一區(qū)域可以包括耦合到第一互連電路塊的從接口的主接口。所述第一互連電路塊可以包括第二主接口。第二互連電路塊可以包括耦合到第一互連電路塊的第二主接口的第二從接口。

第一區(qū)域還可以包括存儲(chǔ)器控制器。所述存儲(chǔ)器控制器可以包括耦合到第二互連電路塊的主接口的從接口。

第一互連電路塊和第二互連電路塊可以被實(shí)現(xiàn)為axi互連電路塊。

ic還可以耦合到主機(jī)處理器,用異構(gòu)型多處理器設(shè)計(jì)的主機(jī)程序代碼進(jìn)行編程。

dma控制器可以被配置為存儲(chǔ)器控制器的主控。

第一區(qū)域可以被配置為通過(guò)第一互連電路塊向第二區(qū)域提供時(shí)鐘信號(hào)和復(fù)位信號(hào)。

第二區(qū)域可以包括耦合到第一互連電路塊的存儲(chǔ)器映射寄存器。

在一個(gè)方面,第二區(qū)域包括第三互連電路塊,其具有耦合到第一互連電路塊的第一主接口的第二區(qū)域的從接口和耦合到第一內(nèi)核電路塊610-1的輸入的主接口。第二區(qū)域還可以包括第四互連電路塊,其具有耦合到第一內(nèi)核電路塊610-1的輸出的從接口和耦合到第二接口電路塊的第一從接口的主接口。

第二區(qū)域還可以包括具有耦合到第三互連電路塊的主接口的輸入和耦合到第四互連電路塊的從接口的輸出的第二內(nèi)核電路塊。

在另一示例中,一種方法包括在ic內(nèi)提供靜態(tài)的實(shí)現(xiàn)ic和主機(jī)處理器之間的接口的第一區(qū)域,在第一區(qū)域內(nèi)包含具有第一主接口的第一互連電路塊和具有第一從接口的第二互連電路塊,并且提供耦合到第一區(qū)域的第二區(qū)域。該方法還可以包括在第二區(qū)域內(nèi)實(shí)現(xiàn)異構(gòu)型多處理器設(shè)計(jì)的內(nèi)核,并且在第二區(qū)域內(nèi)包含耦合到第一互連電路塊的第一主接口的從接口。所述內(nèi)核被配置為從主機(jī)處理器接收命令。該方法還包括在第二區(qū)域內(nèi)包含耦合第二互連電路塊的第一從接口的主接口,其中第二區(qū)域的主接口是用于存儲(chǔ)器控制器的主控。

在一個(gè)示例中,所述異構(gòu)型多處理器設(shè)計(jì)是opencl設(shè)計(jì)。

在一個(gè)方面,所述方法可以包括在ic的運(yùn)行時(shí)期間動(dòng)態(tài)地重新配置第二區(qū)域,以在主機(jī)處理器的控制下實(shí)現(xiàn)不同的內(nèi)核。在另一個(gè)方面,該方法可以包括在運(yùn)行時(shí)動(dòng)態(tài)地重新配置第二區(qū)域,以在主機(jī)處理器的控制下實(shí)現(xiàn)不同的內(nèi)核,同時(shí)保持第一區(qū)域完整。

該方法可以包括在第一區(qū)域內(nèi)提供總線端點(diǎn)并且在第一區(qū)域內(nèi)提供耦合到總線端點(diǎn)的dma控制器,并且包括耦合到第一互連電路塊的從接口的主接口。第一互連電路塊可以包括第二主接口。第二互連電路塊可以包括耦合到第一互連電路塊的第二主接口的第二從接口。

該方法還可以包括在第一區(qū)域內(nèi)提供具有耦合到第二互連電路塊的主接口的從接口的存儲(chǔ)器控制器。

該方法還可以包括向主機(jī)處理器提供異構(gòu)型多處理器設(shè)計(jì)的主機(jī)程序代碼。

該方法還可以包括在第二區(qū)域內(nèi)提供第三互連電路塊,其具有耦合到第一互連電路塊的第一主接口的第二區(qū)域的從接口和耦合到第一內(nèi)核電路塊的輸入的主接口。可以在第二區(qū)域內(nèi)提供第四互連電路塊。第四互連電路塊可以包括耦合到第一內(nèi)核電路塊的輸出的從接口和耦合到第二接口電路塊的第一從接口的主接口。

該方法還可以包括在第二區(qū)域內(nèi)提供第二內(nèi)核電路塊,其具有耦合到第三互連電路塊的主接口的輸入和耦合到第四互連電路塊的從接口的輸出。

在不脫離本公開的精神或基本屬性的情況下,本公開內(nèi)容中描述的特征可以以其他形式實(shí)施。因此,應(yīng)參考所附的權(quán)利要求而不是上述公開內(nèi)容,來(lái)確定這些特征和實(shí)施方式的范圍。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
神木县| 旅游| 榆中县| 阳江市| 兴隆县| 宜良县| 电白县| 益阳市| 潞城市| 大田县| 玉林市| 陈巴尔虎旗| 肇庆市| 巩留县| 贵港市| 高清| 旌德县| 中宁县| 舞阳县| 福安市| 卫辉市| 仁怀市| 威远县| 永安市| 九寨沟县| 富蕴县| 清水县| 濮阳县| 贵德县| 共和县| 科尔| 临夏市| 北海市| 南郑县| 义马市| 三门县| 邯郸市| 闽清县| 阿克| 马公市| 丰县|