相關(guān)申請(qǐng)
本申請(qǐng)是2015年10月9日提交的題目為“methodandapparatusfordesigningandimplementingaconvolutionneuralnetaccelerator”的共同未決美國(guó)申請(qǐng)?zhí)?4/879,928的部分繼續(xù)并且根據(jù)標(biāo)題35、美國(guó)法典第120節(jié)要求其權(quán)益。本申請(qǐng)還要求2015年10月7日提交的題目為“methodandapparatusfordesigningandimplementingstandardandfully-connectedconvolutionlayersonaconvolutionalneuralnetworkaccelerator”的臨時(shí)美國(guó)專利申請(qǐng)?zhí)?2/238,598的權(quán)益和優(yōu)先權(quán),其全部并且完整的主題通過(guò)引用明確地整體并入于此。
本發(fā)明的實(shí)施例涉及用于設(shè)計(jì)目標(biāo)設(shè)備上的系統(tǒng)的工具。更具體地,本發(fā)明的實(shí)施例涉及用于實(shí)施卷積神經(jīng)網(wǎng)絡(luò)加速器上的層的方法和裝置。
背景技術(shù):
由于圖像和視頻在因特網(wǎng)上已經(jīng)變得越來(lái)越普遍,產(chǎn)生了對(duì)有能力針對(duì)包括搜索和概括在內(nèi)的各種應(yīng)用高效地分析其語(yǔ)義內(nèi)容的算法的需要。卷積神經(jīng)網(wǎng)絡(luò)(cnn)已經(jīng)顯示出是用于執(zhí)行圖像識(shí)別、檢測(cè)、以及檢索的有效工具。cnn可以被擴(kuò)大規(guī)模并且被配置為支持學(xué)習(xí)過(guò)程所需要的大標(biāo)記(largelabeled)數(shù)據(jù)集。在這些條件下,發(fā)現(xiàn)cnn在學(xué)習(xí)復(fù)雜并且魯棒的圖像特征方面是成功的。
cnn是前饋人工神經(jīng)網(wǎng)絡(luò)的類型的,其中單獨(dú)的神經(jīng)元以如下方式拼接,使得它們響應(yīng)于視場(chǎng)中的重疊區(qū)域。cnn是受到了生物體內(nèi)的視神經(jīng)的行為的啟發(fā)。cnn使用多層神經(jīng)元連接來(lái)處理數(shù)據(jù),以在圖像識(shí)別中實(shí)現(xiàn)高準(zhǔn)確度。多層cnn的發(fā)展導(dǎo)致了復(fù)雜識(shí)別任務(wù)(諸如大類別圖像分類、自動(dòng)語(yǔ)音識(shí)別、以及其它數(shù)據(jù)分類/識(shí)別任務(wù))的準(zhǔn)確度的改善。
單個(gè)處理器的計(jì)算功率上的限制導(dǎo)致了對(duì)其它計(jì)算配置的探索,以滿足對(duì)于支持cnn的需要。在這些探索領(lǐng)域中,對(duì)cnn加速器進(jìn)行了研究,其利用圖形處理單元上的通用計(jì)算(gpgpu)、多核處理器、現(xiàn)場(chǎng)可編程門陣列(fpga)、以及專用集成電路(asic)形式的硬件專用性。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)本發(fā)明的實(shí)施例,公開了用于設(shè)計(jì)和實(shí)施卷積神經(jīng)網(wǎng)絡(luò)(cnn)加速器的方法。該方法利用電子設(shè)計(jì)自動(dòng)化(eda)工具,eda工具響應(yīng)于cnn加速器的特征(其可以包括由用戶指定的cnn加速器的特性和參數(shù))和由用戶選擇的目標(biāo)上的可用資源,來(lái)生成用于cnn加速器的設(shè)計(jì)。目標(biāo)可以包括一個(gè)或者多個(gè)類型的一個(gè)或者多個(gè)目標(biāo)設(shè)備。eda工具分配用于實(shí)施cnn加速器的目標(biāo)上的資源以實(shí)現(xiàn)高性能。例如,分配目標(biāo)上的資源以實(shí)施尺寸適當(dāng)?shù)木彌_器以處理要由cnn加速器處理的圖像的類型和尺寸。還分配目標(biāo)上的資源以實(shí)施適當(dāng)類型和數(shù)目的計(jì)算單元(諸如處理元件)以支持由cnn加速器應(yīng)用的過(guò)濾器和層的類型。eda工具還生成定序單元,該定序單元被編程為將數(shù)據(jù)的傳輸協(xié)調(diào)到適當(dāng)?shù)挠?jì)算單元以便時(shí)分復(fù)用計(jì)算單元上的計(jì)算。
根據(jù)本發(fā)明的實(shí)施例,某一范圍的特性可以由用戶指定,以允許cnn加速器執(zhí)行多個(gè)cnn算法。在這一實(shí)施例中,實(shí)施一個(gè)或者多個(gè)可配置狀態(tài)寄存器(csr),以便在cnn加速器在目標(biāo)上被編程之后,允許用戶在運(yùn)行時(shí)對(duì)目標(biāo)進(jìn)行配置以支持用于執(zhí)行多個(gè)cnn算法中的一個(gè)cnn算法所需要的指定特性。當(dāng)在現(xiàn)場(chǎng)可編程門陣列(fpga)上實(shí)施時(shí),csr有效地允許對(duì)cnn加速器的運(yùn)行時(shí)配置。這便于以cnn應(yīng)用為目的的fpga覆蓋。
根據(jù)本發(fā)明的實(shí)施例,用于在目標(biāo)上實(shí)施cnn加速器的方法包括標(biāo)識(shí)要在cnn加速器上執(zhí)行的cnn算法。標(biāo)識(shí)支持cnn算法的執(zhí)行的cnn加速器的變化。cnn的變化可以包括特定數(shù)目或者類型的卷積層、池化層、過(guò)濾器尺寸、和/或過(guò)濾器系數(shù)。目標(biāo)設(shè)備上的csr可以被設(shè)置為支持期望的變化。當(dāng)期望在目標(biāo)設(shè)備上執(zhí)行不同cnn算法時(shí),可以標(biāo)識(shí)支持不同cnn算法的cnn加速器的不同變化。目標(biāo)設(shè)備上的csr可以被設(shè)置為支持cnn加速器的不同變化。
根據(jù)本發(fā)明的實(shí)施例,用于在目標(biāo)上實(shí)施cnn加速器的方法包括利用一個(gè)或者多個(gè)處理元件實(shí)施標(biāo)準(zhǔn)卷積層。修改cnn加速器的配置以改變cnn加速器上的部件之間的數(shù)據(jù)流。響應(yīng)于數(shù)據(jù)流的改變,利用該一個(gè)或者多個(gè)處理元件實(shí)施完全連接層。
根據(jù)本發(fā)明的實(shí)施例,在目標(biāo)上實(shí)施的cnn加速器包括定序單元,該定序單元在第一配置期間協(xié)調(diào)目標(biāo)上的部件之間的第一數(shù)據(jù)流并且在第二配置期間協(xié)調(diào)目標(biāo)上的部件之間的第二數(shù)據(jù)流。cnn加速器還包括多個(gè)處理元件,該多個(gè)處理元件在第一配置期間實(shí)施標(biāo)準(zhǔn)卷積層,并且在第二配置期間實(shí)施完全連接層。
附圖說(shuō)明
本發(fā)明的實(shí)施例的特征和優(yōu)勢(shì)通過(guò)示例的方式圖示并且不旨在將本發(fā)明的實(shí)施例的范圍限制于所示的特定實(shí)施例。
圖1是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于設(shè)計(jì)和實(shí)施卷積神經(jīng)網(wǎng)絡(luò)(cnn)加速器的方法的流程圖。
圖2是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于標(biāo)識(shí)cnn加速器的特征的方法的流程圖。
圖3圖示了通過(guò)本發(fā)明的示例性實(shí)施例實(shí)施的標(biāo)準(zhǔn)卷積層的示例。
圖4圖示了通過(guò)本發(fā)明的示例性實(shí)施例實(shí)施的完全連接層的示例。
圖5是圖示了根據(jù)本發(fā)明的實(shí)施例的用于生成用于cnn加速器的設(shè)計(jì)的方法的流程圖。
圖6是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于編譯用于cnn的設(shè)計(jì)的方法的流程圖。
圖7是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于配置目標(biāo)上的cnn加速器的方法的流程圖。
圖8圖示了根據(jù)本發(fā)明的示例性實(shí)施例的示例性cnn。
圖9是根據(jù)本發(fā)明的示例性實(shí)施例的cnn加速器的框圖。
圖10是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的處理元件的框圖。
圖11是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于利用一個(gè)或者多個(gè)處理元件實(shí)施標(biāo)準(zhǔn)卷積層和完全連接層的方法的流程圖。
圖12是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于管理cnn加速器上的數(shù)據(jù)輸入和輸出以利用一個(gè)或者多個(gè)處理元件實(shí)施標(biāo)準(zhǔn)卷積層的方法的流程圖。
圖13是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于管理cnn加速器上的數(shù)據(jù)輸入和輸出以利用一個(gè)或者多個(gè)處理元件實(shí)施完全連接層的方法的流程圖。
圖14圖示了根據(jù)本發(fā)明的示例性實(shí)施例的實(shí)施電子設(shè)計(jì)自動(dòng)化工具和cnn加速器配置工具的計(jì)算機(jī)系統(tǒng)的框圖。
圖15是根據(jù)本發(fā)明的示例性實(shí)施例的電子設(shè)計(jì)自動(dòng)化工具的框圖。
圖16圖示了根據(jù)本發(fā)明的示例性實(shí)施例的cnn加速器配置工具的框圖。
圖17圖示了根據(jù)本發(fā)明的實(shí)施例的示例性目標(biāo)設(shè)備。
具體實(shí)施方式
在以下描述中,出于解釋的目的,陳述特定的術(shù)語(yǔ)以提供對(duì)本發(fā)明的實(shí)施例的透徹理解。對(duì)本領(lǐng)域技術(shù)人員而言將顯而易見(jiàn)的是,實(shí)踐本發(fā)明的實(shí)施例可以不需要描述中的特定細(xì)節(jié)。在其它實(shí)例中,熟知的電路、設(shè)備、過(guò)程、以及程序被以框圖的形式示出,以避免不必要地模糊本發(fā)明的實(shí)施例。
圖1是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于設(shè)計(jì)和實(shí)施卷積神經(jīng)網(wǎng)絡(luò)(cnn)加速器的方法的流程圖。圖1中描述的過(guò)程可以由計(jì)算機(jī)系統(tǒng)上的電子設(shè)計(jì)自動(dòng)化(eda)工具和cnn加速器配置工具執(zhí)行。所描述的過(guò)程還可以與其它工具或者系統(tǒng)組合執(zhí)行。在101處,標(biāo)識(shí)用于cnn加速器的設(shè)計(jì)的特征。根據(jù)本發(fā)明的實(shí)施例,標(biāo)識(shí)該設(shè)計(jì)的特征包括標(biāo)識(shí)用于cnn加速器的特性和參數(shù),以及在實(shí)施cnn加速器的目標(biāo)上可用的資源。應(yīng)該領(lǐng)會(huì)的是,當(dāng)期望cnn加速器支持不止一個(gè)cnn算法時(shí),可以標(biāo)識(shí)多個(gè)或者某一范圍的特性和參數(shù)。根據(jù)本發(fā)明的實(shí)施例,可以以諸如opencl之類的高級(jí)設(shè)計(jì)語(yǔ)言或者其它設(shè)計(jì)語(yǔ)言來(lái)提供用于cnn加速器的設(shè)計(jì)的特征。
在102處,生成用于cnn加速器的設(shè)計(jì)。根據(jù)本發(fā)明的實(shí)施例,響應(yīng)于cnn加速器的特征,生成對(duì)用于cnn加速器的設(shè)計(jì)的架構(gòu)描述??梢葬槍?duì)實(shí)施cnn加速器的目標(biāo)來(lái)優(yōu)化用于cnn加速器的設(shè)計(jì)。根據(jù)本發(fā)明的實(shí)施例,可以以高級(jí)設(shè)計(jì)語(yǔ)言或者硬件描述語(yǔ)言生成用于cnn加速器的設(shè)計(jì)。
在103處,針對(duì)目標(biāo)來(lái)編譯用于cnn加速器的設(shè)計(jì)。根據(jù)本發(fā)明的實(shí)施例,編譯包含在該設(shè)計(jì)的硬件描述語(yǔ)言上執(zhí)行綜合、放置、路由、以及定時(shí)分析過(guò)程。用于cnn加速器的編譯設(shè)計(jì)支持某一范圍的cnn變體。
在104處,在目標(biāo)上配置cnn加速器。根據(jù)本發(fā)明的實(shí)施例,使用cnn加速器的編譯設(shè)計(jì)對(duì)目標(biāo)編程。目標(biāo)進(jìn)一步被配置為實(shí)施對(duì)cnn加速器的變化以支持對(duì)期望的cnn算法的執(zhí)行。在運(yùn)行時(shí)間期間,可以應(yīng)用其它配置以實(shí)施對(duì)cnn加速器的其它變化,以支持對(duì)其它c(diǎn)nn算法的執(zhí)行。
圖2是圖示了根據(jù)本發(fā)明的實(shí)施例的用于標(biāo)識(shí)用于cnn加速器的設(shè)計(jì)特征的方法的流程圖。在圖2中描述的過(guò)程可以被用于實(shí)施圖1中的過(guò)程101,并且可以由在計(jì)算機(jī)系統(tǒng)上執(zhí)行的eda工具執(zhí)行。在201處,標(biāo)識(shí)cnn加速器的特性。根據(jù)本發(fā)明的實(shí)施例,標(biāo)識(shí)cnn加速器的特性可以包括標(biāo)識(shí)期望cnn加速器支持的一個(gè)或者多個(gè)cnn算法的特性。cnn算法的特性可以包括若干和一系列階段的層,諸如卷積(標(biāo)準(zhǔn)卷積)和噪聲過(guò)濾層。噪聲過(guò)濾層可以包括例如池化、歸一化、以及整流線性(relu)層。cnn算法的特性還可以包括過(guò)濾器的尺寸和系數(shù)、和要處理的圖像的尺寸、步幅、以及填補(bǔ)。根據(jù)本發(fā)明的實(shí)施例,圖像的步幅對(duì)應(yīng)于當(dāng)執(zhí)行卷積時(shí)在輸入中可以被跳過(guò)的像素的數(shù)目,并且可以被用于調(diào)節(jié)輸出結(jié)果的數(shù)目。圖像的填補(bǔ)涉及添加到圖像的周長(zhǎng)的值,并且可以被用于匹配輸入和輸出圖像。應(yīng)該領(lǐng)會(huì)的是,還可以標(biāo)識(shí)其它特性。
圖3圖示了由本發(fā)明的示例性實(shí)施例實(shí)施的標(biāo)準(zhǔn)卷積層的示例。標(biāo)準(zhǔn)卷積層可以是在201處標(biāo)識(shí)(參照?qǐng)D2描述)的層之一。標(biāo)準(zhǔn)卷積層接收來(lái)自輸入特征圖310的輸入特征。標(biāo)準(zhǔn)卷積層還接收通過(guò)對(duì)卷積層的訓(xùn)練生成的系數(shù)321至323的集合。系數(shù)321至323應(yīng)用權(quán)重,該權(quán)重用公式表示用于卷積層的過(guò)濾器。標(biāo)準(zhǔn)卷積層執(zhí)行在輸入特征310內(nèi)限定的區(qū)域330和系數(shù)321至323之間的三維點(diǎn)積。每個(gè)卷積運(yùn)算的結(jié)果是輸出平面341至343內(nèi)的相同(x,y)水平和豎直坐標(biāo)處的輸出。在不同的特征區(qū)域上應(yīng)用相同的系數(shù)集合在每個(gè)輸出平面341至343上產(chǎn)生不同的(x,y)輸出。因此,為了產(chǎn)生整個(gè)(x,y)輸出平面,標(biāo)準(zhǔn)卷積層接收不同輸入特征(feature)的流,同時(shí)應(yīng)用系數(shù)(coef)321至323的相同集合。根據(jù)本發(fā)明的實(shí)施例,由k×k×d輸入?yún)^(qū)域330之上的單個(gè)標(biāo)準(zhǔn)卷積生成的單個(gè)(x,y)輸出(output)可以使用以下關(guān)系表示。
在上面的關(guān)系中,d表示輸入深度,而k表示輸入特征圖中的區(qū)域的高度和寬度。不同的k×k×d系數(shù)數(shù)據(jù)被用于計(jì)算每個(gè)卷積層的每個(gè)(x,y)輸出平面。因此,例如,如果卷積層具有h個(gè)輸出平面,則針對(duì)這一卷積層一共需要h×k×k×d個(gè)系數(shù)數(shù)據(jù)。然而,當(dāng)處理不同圖像時(shí),相同的h×k×k×d系數(shù)數(shù)據(jù)被用在相同的卷積層中。
圖4圖示了由本發(fā)明的示例性實(shí)施例實(shí)施的完全連接層的示例。完全連接層接收表示來(lái)自輸入特征圖的所有特征數(shù)據(jù)的輸入特征410。完全連接層還接收通過(guò)對(duì)完全連接層的訓(xùn)練生成的系數(shù)421至423的集合。系數(shù)421至423應(yīng)用權(quán)重,該權(quán)重用公式表示用于完全連接層的過(guò)濾器。完全連接層采用輸入特征410和系數(shù)421至423的集合之間的一維點(diǎn)積。該運(yùn)算的結(jié)果是形成輸出特征圖的輸出431至433。如果輸出尺寸為z,并且輸入尺寸為n,則系數(shù)的總尺寸為z×n,即系數(shù)數(shù)據(jù)的總尺寸大于特征的尺寸。因此,為了計(jì)算整個(gè)輸出特征圖,完全連接層接收不同系數(shù)的流,同時(shí)應(yīng)用相同圖像的相同輸入特征410。根據(jù)本發(fā)明的實(shí)施例,單個(gè)輸出z可以使用以下關(guān)系表示。
在上面的關(guān)系中,n表示輸入特征圖的尺寸而z表示所計(jì)算的輸出特征的索引,其中輸出特征圖的總尺寸為z。不同的系數(shù)數(shù)據(jù)被用于計(jì)算不同的完全連接層的輸出特征。然而,當(dāng)處理不同的圖像時(shí),在相同的完全連接層中使用相同的z×n系數(shù)數(shù)據(jù)。
參照回到圖2,在202處,標(biāo)識(shí)cnn加速器的參數(shù)。根據(jù)本發(fā)明的實(shí)施例,標(biāo)識(shí)用于cnn加速器的參數(shù)可以包括標(biāo)識(shí)用于期望cnn加速器支持的一個(gè)或者多個(gè)cnn算法的參數(shù)。cnn算法的參數(shù)可以包括針對(duì)所標(biāo)識(shí)的每個(gè)層實(shí)例化的若干處理元件,和針對(duì)內(nèi)核的每個(gè)周期執(zhí)行的若干乘法。應(yīng)該領(lǐng)會(huì)的是,還可以標(biāo)識(shí)其它參數(shù)。
在203處,標(biāo)識(shí)目標(biāo)上用于實(shí)施cnn加速器的可用資源。根據(jù)本發(fā)明的實(shí)施例,目標(biāo)可以包括一個(gè)或者多個(gè)目標(biāo)設(shè)備類型的一個(gè)或者多個(gè)目標(biāo)設(shè)備。所標(biāo)識(shí)的資源可以包括若干和某一類型的存儲(chǔ)器塊、數(shù)字信號(hào)處理器(dsp)、以及目標(biāo)設(shè)備上的其它部件和處理單元。根據(jù)本發(fā)明的實(shí)施例,cnn的特征可以從由用戶提供的輸入標(biāo)識(shí)或者從其它源標(biāo)識(shí)。
圖5是圖示了根據(jù)本發(fā)明的實(shí)施例的用于生成用于cnn加速器的設(shè)計(jì)的方法的流程圖。圖5中描述的過(guò)程可以被用于實(shí)施圖1中的過(guò)程102,并且可以由在計(jì)算機(jī)系統(tǒng)上執(zhí)行的eda工具執(zhí)行。在501處,向cnn加速器上的緩沖器分配適當(dāng)?shù)某叽缫灾С忠蒫nn加速器處理的圖像的尺寸。根據(jù)本發(fā)明的實(shí)施例,用于cnn加速器架構(gòu)的設(shè)計(jì)被結(jié)構(gòu)化,使得對(duì)于每個(gè)緩沖器而言,有一個(gè)讀取端口和一個(gè)寫入端口。這保證了不需要仲裁以訪問(wèn)緩沖器中的數(shù)據(jù)的高效率實(shí)施方式。根據(jù)一個(gè)實(shí)施例,支持雙緩沖以允許來(lái)自卷積階段的新中間結(jié)果的寫入,同時(shí)讀取緩沖器中的不同位置處的來(lái)自之前階段的結(jié)果。
在502處,生成計(jì)算單元以支持要由cnn加速器執(zhí)行的cnn算法。根據(jù)本發(fā)明的實(shí)施例,計(jì)算單元包括執(zhí)行卷積和噪聲過(guò)濾的內(nèi)核??梢陨捎?jì)算單元以利用實(shí)施cnn加速器的目標(biāo)上的可用資源將性能最大化。目標(biāo)上的可以利用的可用資源可以包括dsp塊、存儲(chǔ)器塊、移位寄存器、以及加法器。在一個(gè)實(shí)施例中,組織由內(nèi)核執(zhí)行的點(diǎn)積計(jì)算,以利用目標(biāo)上的可重新配置dsp塊所支持的矢量模式。在另一實(shí)施例中,池化層利用目標(biāo)上可用的移位寄存器資源。
在503處,生成定序單元。定序單元在適當(dāng)?shù)臅r(shí)刻將數(shù)據(jù)的傳輸協(xié)調(diào)到cnn加速器上的適當(dāng)處理元件,以便時(shí)分復(fù)用處理元件上的計(jì)算。根據(jù)本發(fā)明的實(shí)施例,定序單元被編程為執(zhí)行支持由cnn加速器執(zhí)行的算法所需要的協(xié)調(diào)。定序單元可以使用目標(biāo)設(shè)備上可用的邏輯陣列塊、寄存器、和/或硬或者軟處理單元來(lái)生成。
在504處,生成對(duì)設(shè)計(jì)的描述。根據(jù)本發(fā)明的實(shí)施例,對(duì)設(shè)計(jì)的描述可以具有硬件描述語(yǔ)言(hdl)格式或者其它格式。
圖6是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于編譯用于目標(biāo)上的cnn加速器的設(shè)計(jì)的方法的流程圖。目標(biāo)可以是一個(gè)或者多個(gè)現(xiàn)場(chǎng)可編程門陣列(fpga)、專用集成電路(asic)、結(jié)構(gòu)化asic、或者其它可編程設(shè)備。在圖6中描述的過(guò)程被稱為編譯流程。該過(guò)程可以被用于實(shí)施圖1中的過(guò)程103,并且可以由在計(jì)算機(jī)系統(tǒng)上執(zhí)行的eda工具執(zhí)行。
在601處,用于cnn加速器的設(shè)計(jì)被綜合。綜合包括生成要由目標(biāo)實(shí)施的系統(tǒng)的邏輯設(shè)計(jì)。根據(jù)本發(fā)明的實(shí)施例,綜合根據(jù)hdl設(shè)計(jì)限定來(lái)生成對(duì)系統(tǒng)的優(yōu)化邏輯表示。對(duì)系統(tǒng)的優(yōu)化邏輯表示可以包括具有系統(tǒng)所需要的最小化數(shù)目的功能塊(諸如邏輯門、邏輯元件、以及寄存器)的表示。綜合還包括映射優(yōu)化邏輯表示。映射包括確定如何使用目標(biāo)上可用的資源類型或者類別來(lái)實(shí)施優(yōu)化邏輯表示中的邏輯門和邏輯元件。目標(biāo)上可用的資源可以被稱為“單元”或者“部件”,并且可以包括邏輯陣列塊、寄存器、存儲(chǔ)器、dsp塊、輸入-輸出元件、以及其它部件。根據(jù)本發(fā)明的實(shí)施例,從映射生成網(wǎng)表。這一網(wǎng)表可以是從hdl生成的優(yōu)化技術(shù)映射網(wǎng)表。
在602處,放置系統(tǒng)。根據(jù)本發(fā)明的實(shí)施例,放置包含將技術(shù)映射邏輯系統(tǒng)設(shè)計(jì)放置在目標(biāo)上。放置包括通過(guò)確定目標(biāo)上的哪些特定資源將要被分配到在綜合期間確定的技術(shù)映射網(wǎng)表并且由該技術(shù)映射網(wǎng)表實(shí)施,在目標(biāo)上適配系統(tǒng)。放置可以包括聚類,其包含將邏輯元件分組在一起以形成存在于目標(biāo)上的邏輯簇。
在603處,對(duì)放置的設(shè)計(jì)路由。在路由期間,分派目標(biāo)上的路由資源,以提供目標(biāo)設(shè)備上的邏輯門、邏輯元件、以及其它部件之間的互連。還可以在放置的邏輯設(shè)計(jì)上執(zhí)行路由能力優(yōu)化。根據(jù)本發(fā)明的實(shí)施例,路由能力優(yōu)化的目標(biāo)是減少用于連接放置的邏輯設(shè)計(jì)中的部件的接線的量。路由能力優(yōu)化可以包括執(zhí)行扇出分割、邏輯復(fù)制、邏輯再接線、或者其它過(guò)程。應(yīng)該領(lǐng)會(huì)的是,過(guò)程中的一個(gè)或者多個(gè)可以在放置的邏輯設(shè)計(jì)上執(zhí)行。
在604處,對(duì)系統(tǒng)的設(shè)計(jì)執(zhí)行定時(shí)分析。根據(jù)本發(fā)明的實(shí)施例,定時(shí)分析確定系統(tǒng)的定時(shí)約束是否被滿足。根據(jù)本發(fā)明的實(shí)施例,定時(shí)分析建立用于系統(tǒng)中的每個(gè)路徑的長(zhǎng)度以及用于系統(tǒng)中的每個(gè)路徑的遲滯。遲滯可以被限定為在其變得重要前可以被添加到路徑的延遲的量、或者信號(hào)到達(dá)所需要的時(shí)間減去信號(hào)到達(dá)的實(shí)際時(shí)間。
在605處,執(zhí)行組裝。組裝過(guò)程包含創(chuàng)建配置文件,配置文件包括由在601至604處描述的過(guò)程確定的信息。配置文件可以是位流,其可以被用于對(duì)目標(biāo)編程以實(shí)施cnn加速器。對(duì)目標(biāo)編程在物理上將目標(biāo)上的可編程資源變換為cnn加速器的設(shè)計(jì)。
圖7是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于配置目標(biāo)上的cnn加速器的方法的流程圖。在圖7中圖示的過(guò)程可以被用于實(shí)施圖1中的過(guò)程104,并且由計(jì)算機(jī)系統(tǒng)上的cnn加速器配置工具執(zhí)行。在701處,目標(biāo)被編程以實(shí)施cnn加速器。根據(jù)本發(fā)明的實(shí)施例,對(duì)目標(biāo)編程包含在物理上將一個(gè)或者多個(gè)目標(biāo)設(shè)備變換為cnn加速器的設(shè)計(jì)的、使用配置文件對(duì)一個(gè)或者多個(gè)目標(biāo)設(shè)備編程。
在702處,標(biāo)識(shí)要由cnn加速器執(zhí)行的cnn算法。根據(jù)本發(fā)明的實(shí)施例,要執(zhí)行的cnn算法可以從用戶輸入或者從另一源標(biāo)識(shí)。
在703處,標(biāo)識(shí)支持要執(zhí)行的cnn算法的cnn加速器的適當(dāng)變化。根據(jù)本發(fā)明的實(shí)施例,cnn加速器的適當(dāng)變化可以從用戶輸入或者從另一源標(biāo)識(shí)。
在704處,一個(gè)或者多個(gè)可配置狀態(tài)寄存器被設(shè)置為支持cnn加速器的變化。根據(jù)本發(fā)明的實(shí)施例,設(shè)置可配置狀態(tài)寄存器可以添加或者減去cnn加速器上的卷積層,添加或者減去一個(gè)或者多個(gè)噪聲過(guò)濾層,或者改變過(guò)濾器的尺寸。
在705處,關(guān)于是否要由cnn加速器執(zhí)行新的cnn算法做出確定。根據(jù)本發(fā)明的實(shí)施例,該確定可以響應(yīng)于用戶輸入而做出。如果做出新的cnn算法要由cnn加速器執(zhí)行的確定,則控制繼續(xù)進(jìn)行到702。如果做出新的cnn算法將不是要由cnn加速器執(zhí)行的確定,則控制返回到705。
圖1至圖2以及圖5至圖7是圖示了本發(fā)明的實(shí)施例的流程圖。在這些圖中描述的過(guò)程可以由一個(gè)或者多個(gè)計(jì)算機(jī)系統(tǒng)實(shí)施的eda工具和cnn加速器配置工具執(zhí)行。所圖示的技術(shù)中的一些可以按順序地、并行地、或者以除了所描述的順序之外的順序執(zhí)行,并且所描述的過(guò)程可以被重復(fù)。要領(lǐng)會(huì)的是,不是所有描述的技術(shù)都需要被執(zhí)行,可以添加附加的技術(shù),以及所圖示的技術(shù)中的一些技術(shù)可以使用其它技術(shù)替換。
圖8圖示了可以根據(jù)本發(fā)明的示例性實(shí)施例實(shí)施的示例性cnn算法800的概念性視圖。cnn800包括多個(gè)層,其中每個(gè)層通過(guò)可微分函數(shù)將一個(gè)體積的激活(activation)變換為另一體積。cnn800包括五個(gè)卷積層811至815。卷積層計(jì)算連接到輸入中的局部區(qū)域的神經(jīng)元的輸出。卷積層計(jì)算其系數(shù)(權(quán)重)和輸入體積中的其連接到的區(qū)域之間的點(diǎn)積。根據(jù)本發(fā)明的實(shí)施例,卷積層811至815中的每個(gè)卷積層都可以執(zhí)行參照在圖3中描述的標(biāo)準(zhǔn)卷積層描述的運(yùn)算。
cnn800包括三個(gè)最大池化層821至823。池化層沿著空間維度執(zhí)行下采樣操作。池化層通過(guò)計(jì)算特定特征在圖像的區(qū)域之上的最大值或者平均值來(lái)減少方差(variance)。這保證了即使當(dāng)圖像特征具有小的平移時(shí)也將獲得相同的結(jié)果。這一操作可以被用于對(duì)象分類和檢測(cè)。
cnn800包括三個(gè)完全連接層831至833。完全連接層831至833執(zhí)行高級(jí)推理。完全連接層831至833取用來(lái)自之前的層的所有神經(jīng)元并且將它們連接到其層中的每個(gè)神經(jīng)元。根據(jù)本發(fā)明的實(shí)施例,完全連接層831至833中的每個(gè)完全連接層可以執(zhí)行參照在圖4中描述的完全連接層描述的運(yùn)算。
應(yīng)該領(lǐng)會(huì)的是,cnn可以包括其它層。例如,一個(gè)或者多個(gè)relu層可以被用于應(yīng)用諸如max(0,x)之類的元件方面的激活功能。relu層增加決策函數(shù)的非線性性質(zhì)和整個(gè)cnn的非線性性質(zhì),而不影響卷積層的接受域。
圖9是根據(jù)本發(fā)明的實(shí)施例的可以被用于實(shí)施cnn的示例性cnn加速器900的框圖。cnn加速器900允許對(duì)卷積層和其它層的前向傳播的高效率計(jì)算。cnn加速器900接受輸入圖像(特征圖)并且可以連續(xù)應(yīng)用多個(gè)卷積層和其它層。
輸入圖像像素被傳輸?shù)教幚碓?pe)陣列901至904中,處理元件(pe)陣列901至904可以在卷積過(guò)程中執(zhí)行獨(dú)立的點(diǎn)積運(yùn)算。pe陣列901表示第一pe陣列,并且pe陣列904表示第n個(gè)pe陣列,其中n可以被伸縮到任何數(shù)目。根據(jù)本發(fā)明的實(shí)施例,每個(gè)pe陣列包括支持諸如卷積層、relu層、歸一化層、以及池化層之類的層的硬件部件。
定序單元920將數(shù)據(jù)的定序、尋址、以及遞送編排到pe陣列901至904中的每個(gè)pe陣列、pe陣列901至904中的每個(gè)pe陣列中的內(nèi)核、以及每個(gè)內(nèi)核中的部件。定序單元920將數(shù)據(jù)的傳輸協(xié)調(diào)到適當(dāng)?shù)膒e陣列901至904,以便時(shí)分復(fù)用pe陣列901至904上的計(jì)算。來(lái)自pe陣列901至904的累積結(jié)果可以被傳輸?shù)骄彌_器951至954中的一個(gè)緩沖器,該一個(gè)緩沖器將所計(jì)算的輸出層傳輸回pe陣列901至904中的內(nèi)核和部件以用于下一輪的層計(jì)算。緩沖器951至954駐留在實(shí)施cnn加速器900的目標(biāo)設(shè)備上,并且可以被稱為片上緩沖器。
cnn加速器900包括可配置狀態(tài)寄存器(csr)960。csr960在運(yùn)行時(shí)間期間可由用戶編程,以修改cnn加速器900的各種方面。例如,csr960可以被設(shè)置為添加或者減去cnn加速器900所使用的若干卷積層,添加或者減去cnn加速器900所使用的一個(gè)或者多個(gè)池化層、relu層、或者其它層,和/或改變cnn加速器900所支持的過(guò)濾器的尺寸。csr960可以耦合到pe陣列901至904的每個(gè)部件。
根據(jù)本發(fā)明的實(shí)施例,pe陣列901至904中的每個(gè)pe陣列包括第一內(nèi)核911至914(其支持卷積層)、第二內(nèi)核921至924(其支持relu層)、第三內(nèi)核931至934(其支持歸一化層)、以及第四內(nèi)核941至944(其支持池化層)。第四內(nèi)核941至944的輸出被傳輸?shù)骄彌_器951至954,輸出可以從緩沖器951至954被饋送回到第一內(nèi)核911至914中以用于下一卷積階段。根據(jù)本發(fā)明的實(shí)施例,單個(gè)內(nèi)核可以支持歸一化層。在這一實(shí)施例中,單個(gè)歸一化內(nèi)核將連接到支持relu層的內(nèi)核921至924。應(yīng)該領(lǐng)會(huì)的是,pe陣列901至904中的每個(gè)pe陣列可以包括實(shí)施除了在圖9中圖示的層之外的層(諸如完全連接層)的內(nèi)核。根據(jù)本發(fā)明的實(shí)施例,第一內(nèi)核911至914可以被用于實(shí)施卷積層和完全連接層兩者。
雖然緩沖器951至954被示出為連接到pe陣列904至904中的第四內(nèi)核941至944,應(yīng)該領(lǐng)會(huì)的是,緩沖器951至954可以直接連接到pe陣列901至904中的任何內(nèi)核。根據(jù)本發(fā)明的實(shí)施例,pe陣列901至904中的第一內(nèi)核911至914直接連接到緩沖器951至954,并且可以將數(shù)據(jù)存儲(chǔ)在緩沖器951至954中而不將數(shù)據(jù)路由通過(guò)任何其它內(nèi)核。
圖10是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的示例性處理元件1000的框圖。處理元件1000可以被用于實(shí)施圖9中圖示的支持卷積層的第一內(nèi)核911至914中的任一內(nèi)核。應(yīng)該領(lǐng)會(huì)的是,處理元件1000還可以被用于支持完全連接層。根據(jù)本發(fā)明的實(shí)施例,處理元件1000包括用于存儲(chǔ)再循環(huán)、重復(fù)數(shù)據(jù)的高速緩存1010。高速緩存1010可以使用目標(biāo)設(shè)備上的存儲(chǔ)器塊來(lái)實(shí)施。處理元件1000包括每個(gè)時(shí)鐘周期計(jì)算n個(gè)浮點(diǎn)數(shù)點(diǎn)積的點(diǎn)積單元1020。根據(jù)本發(fā)明的實(shí)施例,n在202處配置。點(diǎn)積單元1020接收流式、非重復(fù)數(shù)據(jù)、以及再循環(huán)、重復(fù)數(shù)據(jù)。點(diǎn)積單元1020可以使用目標(biāo)上的一個(gè)或者多個(gè)dsp塊來(lái)實(shí)施。處理元件1000包括累加器單元1030。累加器單元1030累加點(diǎn)積結(jié)果作為部分和,直到整個(gè)計(jì)算完成。累加器單元1030可以使用邏輯陣列塊來(lái)實(shí)施。
一個(gè)或者多個(gè)處理元件可以與片外存儲(chǔ)器接口、片上緩沖器、以及控制邏輯一起使用,以將數(shù)據(jù)路由到一個(gè)或者多個(gè)處理元件中并且從一個(gè)或者多個(gè)處理元件路由出來(lái),以支持由多種算法執(zhí)行的計(jì)算。這些計(jì)算包括矩陣乘法,以及1d/2d/3d卷積。一個(gè)或者多個(gè)處理元件還可以被用于在不同的時(shí)間實(shí)例下實(shí)施標(biāo)準(zhǔn)卷積層和完全連接層兩者。可以調(diào)節(jié)處理元件的數(shù)目和其配置以匹配cnn算法的性能和資源需求。
處理元件1000的第一輸入可以被用于流式傳輸進(jìn)非重復(fù)數(shù)據(jù)。處理單元1000的第二輸入被用于流式傳輸進(jìn)使用不止一次的重復(fù)數(shù)據(jù)。非重復(fù)數(shù)據(jù)可以被存儲(chǔ)在片上緩沖器中并且被直接流式傳輸?shù)近c(diǎn)積單元1020中。重復(fù)數(shù)據(jù)可以從外部存儲(chǔ)器讀取并且被存儲(chǔ)在高速緩存1010中??梢岳酶咚倬彺?010,以利用重復(fù)數(shù)據(jù)的時(shí)間局部性。
當(dāng)使用處理元件中的一個(gè)或者多個(gè)處理元件實(shí)施標(biāo)準(zhǔn)卷積層時(shí),特征圖數(shù)據(jù)被作為非重復(fù)數(shù)據(jù)對(duì)待并且被存儲(chǔ)在片上緩沖器951至954中。一個(gè)卷積層的輸出被流式傳輸?shù)较乱痪矸e層中。每個(gè)處理元件每個(gè)周期接收屬于相同圖像的相同流式特征數(shù)據(jù),以計(jì)算處于不同輸出平面內(nèi)的相同(x,y)輸出坐標(biāo)的輸出。系數(shù)數(shù)據(jù)被作為重復(fù)數(shù)據(jù)對(duì)待,因?yàn)橥幌禂?shù)集合被用于計(jì)算相同(x,y)輸出平面內(nèi)的不同輸出特征圖。系數(shù)數(shù)據(jù)被讀取到處理元件1000的高速緩存1010中。不同的高速緩存存儲(chǔ)處理不同的輸出平面所需要的不同系數(shù)數(shù)據(jù)。系數(shù)數(shù)據(jù)可以從外部存儲(chǔ)器被讀取到高速緩存1010中,但是不能被寫回來(lái)。利用高速緩存1010減少了所需要的對(duì)外部存儲(chǔ)器的訪問(wèn)。
當(dāng)使用處理元件中的一個(gè)或者多個(gè)處理元件實(shí)施完全連接層時(shí),系數(shù)數(shù)據(jù)被作為非重復(fù)數(shù)據(jù)對(duì)待并且被存儲(chǔ)在片上緩沖器951至954中。系數(shù)數(shù)據(jù)被作為非重復(fù)數(shù)據(jù)對(duì)待,因?yàn)椴煌南禂?shù)數(shù)據(jù)集合被用于計(jì)算每個(gè)圖像的不同輸出特征。系數(shù)數(shù)據(jù)集合一次性地被從外部存儲(chǔ)器讀取、存儲(chǔ)在片上緩沖器上、并且流式傳輸?shù)教幚碓小溥x地,系數(shù)數(shù)據(jù)還可以直接從ddr流式傳輸,而不存儲(chǔ)在片上緩沖器上。使用批處理模式計(jì)算完全連接層;同時(shí)處理若干圖像,因?yàn)槊總€(gè)處理元件針對(duì)不同圖像應(yīng)用相同的完全連接層。因?yàn)橄嗤南禂?shù)數(shù)據(jù)被用于不同的圖像,每個(gè)處理元件每個(gè)周期接收相同的系數(shù)數(shù)據(jù),以應(yīng)用到屬于不同圖像的不同特征數(shù)據(jù)并且計(jì)算不同圖像的不同輸出特征。特征數(shù)據(jù)被作為重復(fù)數(shù)據(jù)對(duì)待。輸入特征從外部存儲(chǔ)器被讀取到高速緩存1010中。不同處理元件中的高速緩存存儲(chǔ)針對(duì)不同圖像的特征數(shù)據(jù)。輸入特征數(shù)據(jù)被作為重復(fù)數(shù)據(jù)對(duì)待,因?yàn)橄嗤妮斎胩卣鲾?shù)據(jù)被用于計(jì)算相同圖像的不同輸出特征。所計(jì)算的最終輸出特征圖被存儲(chǔ)在外部存儲(chǔ)器中。
圖11是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于利用一個(gè)或者多個(gè)處理元件實(shí)施標(biāo)準(zhǔn)卷積層和完全連接層的方法的流程圖。圖11中圖示的方法可以由定序單元(諸如在圖9中圖示的定序單元920)執(zhí)行。在1101處,標(biāo)識(shí)要在cnn加速器上實(shí)施的層。根據(jù)本發(fā)明的實(shí)施例,可以通過(guò)cnn加速器的特性并且跟蹤其中數(shù)據(jù)由cnn加速器處理的階段,來(lái)標(biāo)識(shí)要實(shí)施的層。
在1102處,確定要實(shí)施的層是否是標(biāo)準(zhǔn)卷積層。如果要實(shí)施的層是標(biāo)準(zhǔn)卷積層,則控制繼續(xù)到1103。如果要實(shí)施的層不是標(biāo)準(zhǔn)卷積層,則控制繼續(xù)到1104。
在1103處,協(xié)調(diào)數(shù)據(jù)流以實(shí)施標(biāo)準(zhǔn)卷積層。協(xié)調(diào)的數(shù)據(jù)流包括輸入到一個(gè)或者多個(gè)處理元件以及駐留和不駐留在cnn加速器上的部件的數(shù)據(jù)以及從一個(gè)或者多個(gè)處理元件和所述部件輸出的數(shù)據(jù)。
在1104處,協(xié)調(diào)數(shù)據(jù)流以實(shí)施完全連接層。協(xié)調(diào)的數(shù)據(jù)流包括輸入到一個(gè)或者多個(gè)處理元件以及駐留和不駐留在cnn加速器上的部件的數(shù)據(jù)以及從一個(gè)或者多個(gè)處理元件和所述部件輸出的數(shù)據(jù)。應(yīng)該領(lǐng)會(huì)的是,圖11中圖示的過(guò)程可以重復(fù),使得在過(guò)程1103或者1104完成之后,控制返回到過(guò)程1101。
圖12是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于管理cnn加速器上的數(shù)據(jù)輸入和輸出以利用一個(gè)或者多個(gè)處理元件實(shí)施標(biāo)準(zhǔn)卷積層的方法的流程圖。圖12中描述的方法可以被用于實(shí)施圖11中圖示的過(guò)程1103。在1201處,輸入特征圖被存儲(chǔ)在片上緩沖器上。
在1202處,來(lái)自輸入特征圖的數(shù)據(jù)從片上緩沖器被流式傳輸?shù)教幚碓小?/p>
在1203處,系數(shù)數(shù)據(jù)被存儲(chǔ)在處理元件的高速緩存中。流式傳輸?shù)教幚碓械妮斎胩卣鲌D和存儲(chǔ)在處理元件的高速緩存中的系數(shù)數(shù)據(jù)可以以參照?qǐng)D3描述的方式由處理元件處理以生成輸出特征圖。
在1204處,確定當(dāng)前的標(biāo)準(zhǔn)卷積層是否是用于處理特征圖而要實(shí)施的最后標(biāo)準(zhǔn)層。如果當(dāng)前標(biāo)準(zhǔn)卷積層不是要實(shí)施的最后標(biāo)準(zhǔn)卷積層,則控制繼續(xù)到1205。如果當(dāng)前標(biāo)準(zhǔn)卷積層是要實(shí)施的最后標(biāo)準(zhǔn)層,則控制繼續(xù)到1206。
在1205處,生成的輸出特征圖被存儲(chǔ)在片上緩沖器上。控制返回到1202。
在1206處,生成的輸出特征圖被存儲(chǔ)在外部存儲(chǔ)器中。外部存儲(chǔ)器可以不駐留在實(shí)施cnn加速器的目標(biāo)上??刂评^續(xù)到1207,過(guò)程在這里終止。
圖13是圖示了根據(jù)本發(fā)明的示例性實(shí)施例的用于管理cnn加速器上的數(shù)據(jù)輸入和輸出以利用一個(gè)或者多個(gè)處理元件實(shí)施完全連接層的方法的流程圖。圖13中描述的方法可以被用于實(shí)施圖11中圖示的過(guò)程1104。在1301處,輸入特征圖被存儲(chǔ)在處理元件的高速緩存中。
在1302處,系數(shù)數(shù)據(jù)被存儲(chǔ)在片上緩沖器上。
在1303處,系數(shù)數(shù)據(jù)從片上緩沖器被流式傳輸?shù)教幚碓小4鎯?chǔ)在處理元件的高速緩存中的輸入特征圖和從片上緩沖器流式傳輸?shù)南禂?shù)數(shù)據(jù)可以以參照?qǐng)D4描述的方式由處理元件處理以生成輸出特征圖。
在1304處,確定當(dāng)前的完全連接層是否是用于處理特征圖而要實(shí)施的最后完全連接層。如果當(dāng)前完全連接層不是要實(shí)施的最后完全連接層,則控制繼續(xù)到1305。如果當(dāng)前完全連接層是要實(shí)施的最后完全連接層,則控制繼續(xù)到1306。
在1305處,生成的輸出特征圖被存儲(chǔ)在高速緩存中??刂品祷氐?302。
在1306處,生成的輸出特征圖被存儲(chǔ)在外部存儲(chǔ)器中。外部存儲(chǔ)器可以不駐留在實(shí)施cnn加速器的目標(biāo)上??刂评^續(xù)到1307,過(guò)程在這里終止。
圖11至圖13是圖示了本發(fā)明的實(shí)施例的流程圖。這些圖中描述的過(guò)程可以由(由cnn加速器實(shí)施的)定序單元執(zhí)行,并且可以被用于如參照?qǐng)D5中的503描述那樣對(duì)定序單元編程。所圖示的技術(shù)中的一些可以按順序地、并行地、或者以除了所描述的順序之外的順序執(zhí)行,并且所描述的過(guò)程可以被重復(fù)。要領(lǐng)會(huì)的是,不是所有描述的技術(shù)都需要被執(zhí)行,可以添加附加的技術(shù),以及所圖示的技術(shù)中的一些技術(shù)可以使用其它技術(shù)替換。
圖14圖示了根據(jù)本發(fā)明的實(shí)施例的實(shí)施系統(tǒng)設(shè)計(jì)器的計(jì)算機(jī)系統(tǒng)1400的框圖。計(jì)算機(jī)系統(tǒng)1400包括處理數(shù)據(jù)信號(hào)的處理器1410。處理器1410耦合到總線1401或者在處理器1410和計(jì)算機(jī)系統(tǒng)1400中的其它部件之間傳輸數(shù)據(jù)信號(hào)的其它交換結(jié)構(gòu)(switchfabric)。計(jì)算機(jī)系統(tǒng)1400包括存儲(chǔ)器1420。存儲(chǔ)器1420可以存儲(chǔ)可以由處理器1410執(zhí)行的由數(shù)據(jù)信號(hào)表示的指令和代碼。數(shù)據(jù)存儲(chǔ)設(shè)備1430也耦合到總線1401。
網(wǎng)絡(luò)控制器1440耦合到總線1401。網(wǎng)絡(luò)控制器1440可以將計(jì)算機(jī)系統(tǒng)1400鏈接到計(jì)算機(jī)的網(wǎng)絡(luò)(未示出)并且支持機(jī)器之間的通信。顯示設(shè)備控制器1450耦合到總線1401。顯示設(shè)備控制器1450允許顯示設(shè)備(未示出)到計(jì)算機(jī)系統(tǒng)1400的耦合并且充當(dāng)顯示設(shè)備和計(jì)算機(jī)系統(tǒng)1400之間的接口。輸入接口1460耦合到總線1401。輸入接口1460允許輸入設(shè)備(未示出)到計(jì)算機(jī)系統(tǒng)1400的耦合并且將數(shù)據(jù)信號(hào)從輸入設(shè)備傳輸?shù)接?jì)算機(jī)系統(tǒng)1400。
eda工具1421可以駐留在存儲(chǔ)器1420中并且由處理器1410執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,eda工具1421操作以標(biāo)識(shí)cnn加速器的特征,這些特征包括cnn加速器的特性和參數(shù),以及要在其上實(shí)施cnn加速器的目標(biāo)的資源。eda工具1421響應(yīng)于cnn加速器的特征和目標(biāo)的資源而生成用于cnn加速器的設(shè)計(jì)。
cnn加速器配置工具1422可以駐留在存儲(chǔ)器1420中并且由處理器1410執(zhí)行。根據(jù)本發(fā)明的實(shí)施例,cnn加速器配置工具1422標(biāo)識(shí)在cnn加速器上要執(zhí)行的cnn算法,標(biāo)識(shí)支持cnn算法的執(zhí)行的cnn加速器的變化,并且設(shè)置目標(biāo)上的可配置狀態(tài)寄存器以支持cnn加速器的變化。
圖15圖示了根據(jù)本發(fā)明的實(shí)施例的eda工具1500。eda工具1500可以被用于實(shí)施圖14中圖示的eda工具1421。eda工具1500可以被用于設(shè)計(jì)諸如一個(gè)或者多個(gè)目標(biāo)設(shè)備(諸如fpga、asic、結(jié)構(gòu)化asic、或者其它電路)上的cnn加速器之類的系統(tǒng)。圖15圖示了實(shí)施eda工具1500的實(shí)施例的模塊。根據(jù)一個(gè)實(shí)施例,模塊表示軟件模塊,并且設(shè)計(jì)cnn加速器可以由諸如圖14中圖示的計(jì)算機(jī)系統(tǒng)之類的計(jì)算機(jī)系統(tǒng)執(zhí)行,該計(jì)算機(jī)系統(tǒng)執(zhí)行由圖15中示出的模塊表示的指令序列。如將在此后描述的,指令序列的執(zhí)行使得計(jì)算機(jī)系統(tǒng)支持系統(tǒng)設(shè)計(jì)。在備選實(shí)施例中,硬接線電路可以代替軟件指令或者與軟件指令組合使用以實(shí)施本發(fā)明的實(shí)施例。因此,本發(fā)明的實(shí)施例不限于硬件電路和軟件的任何特定組合。
eda工具1500包括eda工具管理器1510。eda工具管理器1510連接到eda工具1500的其它部件并且在eda工具1500的其它部件之間傳輸數(shù)據(jù)。eda工具管理器1510提供允許用戶(諸如設(shè)計(jì)者)將數(shù)據(jù)輸入到eda工具1500中的接口。
eda工具1500包括cnn加速器特征標(biāo)識(shí)單元1520。根據(jù)本發(fā)明的實(shí)施例,cnn加速器特征標(biāo)識(shí)單元1520標(biāo)識(shí)cnn加速器的特性(通過(guò)標(biāo)識(shí)期望cnn加速器支持的一個(gè)或者多個(gè)cnn算法的特性)。cnn算法的特性可以包括若干和一系列階段的層,諸如卷積層和噪聲過(guò)濾層。噪聲過(guò)濾層可以包括例如池化層、歸一化層、以及relu層。cnn算法的特性還可以包括過(guò)濾器的尺寸和系數(shù)、以及要處理的圖像的尺寸和步幅。cnn特征標(biāo)識(shí)單元1520還標(biāo)識(shí)cnn加速器的參數(shù)(通過(guò)標(biāo)識(shí)用于期望cnn加速器支持的一個(gè)或者多個(gè)cnn算法的參數(shù))。cnn算法的參數(shù)可以包括針對(duì)所標(biāo)識(shí)的每個(gè)層要實(shí)例化的若干內(nèi)核,以及針對(duì)內(nèi)核的每個(gè)周期要執(zhí)行的若干乘法,以及其它參數(shù)。cnn特征標(biāo)識(shí)單元1520還標(biāo)識(shí)用于實(shí)施cnn加速器的目標(biāo)上的可用資源。可用資源可以包括若干和某一類型的存儲(chǔ)器塊、dsp塊、以及目標(biāo)上的其它部件和處理單元。根據(jù)其中期望在cnn加速器上執(zhí)行多個(gè)cnn算法的本發(fā)明的實(shí)施例,對(duì)于cnn加速器而言可以標(biāo)識(shí)某一范圍的或者多個(gè)特性和參數(shù)。
eda工具1500包括緩沖器分派單元1530。根據(jù)本發(fā)明的實(shí)施例,緩沖器分派單元1530以適當(dāng)尺寸將緩沖器分配給cnn加速器以便支持要由cnn加速器處理的圖像的尺寸。
eda工具1500包括計(jì)算單元生成單元1540。計(jì)算單元生成單元1540生成諸如處理元件陣列之類的計(jì)算單元以支持要由cnn加速器執(zhí)行的cnn算法。根據(jù)本發(fā)明的實(shí)施例,處理元件陣列包括執(zhí)行卷積和噪聲過(guò)濾的內(nèi)核??梢陨商幚碓嚵幸员憷帽挥糜趯?shí)施cnn加速器的目標(biāo)上的可用資源來(lái)優(yōu)化性能。
eda工具1500包括定序器生成單元1550。定序器生成單元1550生成定序單元并且對(duì)定序單元編程,該定序單元協(xié)調(diào)數(shù)據(jù)在適當(dāng)時(shí)刻向cnn加速器上的適當(dāng)處理元件陣列、處理元件陣列中的內(nèi)核、以及內(nèi)核中的部件的傳輸,以便時(shí)分復(fù)用處理元件陣列上的計(jì)算。根據(jù)本發(fā)明的實(shí)施例,可以對(duì)定序單元編程以執(zhí)行參照?qǐng)D11至圖13圖示的過(guò)程。
根據(jù)本發(fā)明的實(shí)施例,來(lái)自緩沖器分派單元1530、計(jì)算單元生成單元1540、以及定序器生成單元1550的信息被用于生成對(duì)cnn加速器的設(shè)計(jì)的描述。對(duì)設(shè)計(jì)的描述可以具有hdl格式或者其它格式。
eda工具1500包括hdl編譯單元1560。hdl編譯單元1560針對(duì)目標(biāo)編譯對(duì)用于cnn加速器的設(shè)計(jì)的描述。根據(jù)本發(fā)明的實(shí)施例,編譯包含對(duì)設(shè)計(jì)的hdl描述執(zhí)行綜合、放置、路由、以及定時(shí)分析過(guò)程。所編譯的用于cnn加速器的設(shè)計(jì)可以支持某一范圍的cnn變體。應(yīng)該領(lǐng)會(huì)的是,eda工具1500可以執(zhí)行參照?qǐng)D1至圖4描述的過(guò)程。
圖16圖示了根據(jù)本發(fā)明的實(shí)施例的cnn加速器配置工具1600。cnn加速器配置工具1600可以被用于實(shí)施圖14中圖示的配置工具1422。cnn加速器配置工具1600可以被用于配置諸如一個(gè)或者多個(gè)目標(biāo)設(shè)備(諸如fpga、asic、結(jié)構(gòu)化asic、或者其它電路)上的cnn加速器之類的系統(tǒng)。圖16圖示了實(shí)施cnn加速器配置工具1600的實(shí)施例的模塊。根據(jù)一個(gè)實(shí)施例,模塊表示軟件模塊,并且配置cnn加速器可以由諸如圖14中圖示的計(jì)算機(jī)系統(tǒng)之類的計(jì)算機(jī)系統(tǒng)執(zhí)行,該計(jì)算機(jī)系統(tǒng)執(zhí)行由圖16中示出的模塊表示的指令序列。如將在此后描述的,指令序列的執(zhí)行使得計(jì)算機(jī)系統(tǒng)支持對(duì)cnn加速器的配置。在備選實(shí)施例中,硬接線電路可以代替軟件指令或者與軟件指令組合使用以實(shí)施本發(fā)明的實(shí)施例。因此,本發(fā)明的實(shí)施例不限于硬件電路和軟件的任何特定組合。
cnn加速器配置工具1600包括配置工具管理器1610。配置工具管理器1610連接到配置工具管理器1600的其它部件并且在配置工具管理器1600的其它部件之間傳輸數(shù)據(jù)。配置工具管理器1610提供允許用戶將數(shù)據(jù)輸入到配置工具1600中的接口。
cnn加速器配置工具1600包括目標(biāo)編程器單元1620。目標(biāo)編程器單元1620對(duì)用于實(shí)施cnn加速器的目標(biāo)編程。根據(jù)本發(fā)明的實(shí)施例,對(duì)目標(biāo)編程包含使用在物理上將一個(gè)或者多個(gè)目標(biāo)設(shè)備變換為cnn加速器的設(shè)計(jì)的配置文件對(duì)一個(gè)或者多個(gè)目標(biāo)設(shè)備編程。
cnn加速器配置工具1600包括cnn算法標(biāo)識(shí)單元1630。cnn算法標(biāo)識(shí)單元1630標(biāo)識(shí)要由cnn加速器執(zhí)行的cnn算法。根據(jù)本發(fā)明的實(shí)施例,要執(zhí)行的cnn算法可以從用戶輸入或者從另一源標(biāo)識(shí)。
cnn加速器配置工具1600包括cnn加速器變化標(biāo)識(shí)單元1640。cnn加速器變化標(biāo)識(shí)單元1640標(biāo)識(shí)支持要執(zhí)行的cnn算法的cnn加速器的適當(dāng)變化。根據(jù)本發(fā)明的實(shí)施例,cnn加速器的適當(dāng)變化可以從用戶輸入或者從另一源標(biāo)識(shí)。
cnn加速器配置工具1600包括可配置狀態(tài)寄存器單元1650??膳渲脿顟B(tài)寄存器單元1650設(shè)置一個(gè)或者多個(gè)可配置狀態(tài)寄存器以支持所標(biāo)識(shí)的cnn加速器的變化。根據(jù)本發(fā)明的實(shí)施例,設(shè)置可配置狀態(tài)寄存器可以添加或者減去在cnn加速器上的卷積層,添加或者減去一個(gè)或者多個(gè)池化層,或者改變過(guò)濾器的尺寸。
應(yīng)該領(lǐng)會(huì)的是,cnn算法標(biāo)識(shí)單元1630可以關(guān)于新的cnn算法是否要由cnn加速器執(zhí)行做出確定。如果做出新的cnn算法要由cnn加速器執(zhí)行的確定,則適當(dāng)?shù)腸nn加速器變化可以由配置加速器變化標(biāo)識(shí)單元1640標(biāo)識(shí),并且可配置狀態(tài)寄存器可以由可配置狀態(tài)寄存器單元1650設(shè)置以支持cnn加速器變化。應(yīng)該領(lǐng)會(huì)的是,cnn加速器配置工具1600可以執(zhí)行參照?qǐng)D5描述的過(guò)程。
應(yīng)該領(lǐng)會(huì)的是,本發(fā)明的實(shí)施例可以被提供為可以包括具有指令的計(jì)算機(jī)可讀或者機(jī)器可讀介質(zhì)的計(jì)算機(jī)程序產(chǎn)品或者軟件。計(jì)算機(jī)可讀或者機(jī)器可讀介質(zhì)上的指令可以被用于對(duì)計(jì)算機(jī)系統(tǒng)或者其它電子設(shè)備編程。機(jī)器可讀介質(zhì)可以包括但不限于軟盤、光盤、cd-rom、以及磁光盤或者適合用于存儲(chǔ)電子指令的其它類型的介質(zhì)/機(jī)器可讀介質(zhì)。本文中描述的技術(shù)不限于任何特定軟件配置。它們可以適用于任何計(jì)算或者處理環(huán)境。本文中使用的術(shù)語(yǔ)“計(jì)算機(jī)可讀介質(zhì)”或者“機(jī)器可讀介質(zhì)”應(yīng)該包括能夠存儲(chǔ)或者編碼用于由計(jì)算機(jī)執(zhí)行并且使得計(jì)算機(jī)執(zhí)行本文中描述的任一方法的指令序列的任何介質(zhì)。此外,本領(lǐng)域中通常將軟件(具有一種形式或者另一形式(例如程序、過(guò)程、處理、應(yīng)用、模塊、單元、邏輯等))描述為采取行動(dòng)或者引起結(jié)果。這種表達(dá)僅是陳述處理系統(tǒng)對(duì)軟件的執(zhí)行使得處理器執(zhí)行動(dòng)作以產(chǎn)生結(jié)果的速記方式。
圖17圖示了根據(jù)本發(fā)明的實(shí)施例的可以被用于實(shí)施目標(biāo)設(shè)備的設(shè)備1700。設(shè)備1700是包括多個(gè)邏輯陣列塊(lab)的現(xiàn)場(chǎng)可編程門陣列(fpga)。每個(gè)lab可以由多個(gè)邏輯塊、進(jìn)位鏈、lab控制信號(hào)、查找表(lut)鏈、以及寄存器鏈連接線、以及其它部件和互連形成。邏輯塊是提供用戶邏輯功能的高效實(shí)施方式的邏輯小單元。邏輯塊包括一個(gè)或者多個(gè)組合單元,其中每個(gè)組合單元具有單個(gè)輸出、以及寄存器。根據(jù)本發(fā)明的一個(gè)實(shí)施例,邏輯塊可以與邏輯元件(le)(諸如由
設(shè)備1700包括存儲(chǔ)器塊。存儲(chǔ)器塊可以是例如提供在高達(dá)各種頻率處高達(dá)各種位寬的專用真雙端口、簡(jiǎn)易雙端口、或者單端口存儲(chǔ)器的雙端口隨機(jī)訪問(wèn)存儲(chǔ)器(ram)塊。可以將存儲(chǔ)器塊分組到跨設(shè)備的所選擇的lab之間的或者單獨(dú)定位的或者在設(shè)備1700內(nèi)成對(duì)的列中。存儲(chǔ)器塊的列被示出為1721至1724。根據(jù)本發(fā)明的實(shí)施例,csr可以由列1721至1724中的存儲(chǔ)器塊中的一個(gè)或者多個(gè)存儲(chǔ)器塊來(lái)實(shí)施。csr可以被用于向內(nèi)核提供狀態(tài),以便根據(jù)cnn的期望特征來(lái)配置cnn加速器。這允許由目標(biāo)設(shè)備1700實(shí)施的cnn加速器在運(yùn)行時(shí)間期間被配置。
設(shè)備1700包括數(shù)字信號(hào)處理(dsp)塊。dsp塊可以被用于實(shí)施具有加法或者減法特征的各種配置的乘法器。dsp塊包括移位寄存器、乘法器、加法器、以及累加器??梢詫sp塊分組到跨設(shè)備1700的列中,并且被示出為1731。
設(shè)備1700包括多個(gè)輸入/輸出元件(ioe)1740。每個(gè)ioe對(duì)設(shè)備1700上的io引腳(未示出)進(jìn)行饋送。ioe1740位于圍繞設(shè)備1700外圍的lab行和列的端部處。每個(gè)ioe可以包括雙向io緩沖器和用于寄存輸入、輸出、以及輸出使能信號(hào)的多個(gè)寄存器。
設(shè)備1700可以包括路由資源,諸如lab局部互連線、行互連線(“h型接線”)、以及列互連線(“v型接線”)(未示出),以在目標(biāo)設(shè)備上的部件之間路由信號(hào)。
在以上說(shuō)明中,參照本發(fā)明的特定示例性實(shí)施例描述了本發(fā)明的實(shí)施例。然而,將明顯的是,可以對(duì)實(shí)施例作出各種修改和改變而不脫離本發(fā)明的實(shí)施例的更寬泛的精神和范圍。相應(yīng)地,說(shuō)明書和附圖要在說(shuō)明性而非限制性意義上來(lái)看待。