程序內(nèi)存),或是它們的組合。在一些示例中,內(nèi)存122可具有多體交叉內(nèi)存結(jié)構(gòu),使得內(nèi)存122包括內(nèi)存組Ml-Mn,其中η是內(nèi)存122的內(nèi)存組的總數(shù)量。在示例中,內(nèi)存122是隨機(jī)存取內(nèi)存,例如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)RAM(DRAM)、只讀存儲(chǔ)器(R0M)、閃存或其它適當(dāng)?shù)膬?nèi)存技術(shù)。在示例中,一個(gè)或多個(gè)內(nèi)存組M是單獨(dú)的RAM??商娲兀瑑?nèi)存122可以代表多層內(nèi)存結(jié)構(gòu),例如包括快速LI內(nèi)存、中間L2內(nèi)存和慢速主存,其中每個(gè)內(nèi)存的大小和成本可能與內(nèi)存的存取速度成反比。在又一示例中,內(nèi)存122可包括高速緩存或任何其它合適類(lèi)型的內(nèi)存。在一些情況下,直接內(nèi)存存取(DMA)控制器可被提供以使能從DSP核100到內(nèi)存122的DMA操作。
[0031]通過(guò)示例的方式,三條總線(xiàn)170被示出。如貫穿本說(shuō)明書(shū)使用的,"總線(xiàn)"包括任何互連線(xiàn)、網(wǎng)絡(luò)、連接、捆綁、單總線(xiàn)、多總線(xiàn)、交叉開(kāi)關(guān)網(wǎng)絡(luò)、單級(jí)網(wǎng)絡(luò)、多級(jí)網(wǎng)絡(luò)或其它操作以在計(jì)算設(shè)備各部分間或各計(jì)算設(shè)備間傳輸數(shù)據(jù)的傳導(dǎo)介質(zhì)。在必要或合適的情況下,總線(xiàn)170還可以包括合適的控制器,例如內(nèi)存管理單元(MMU)等。在這個(gè)示例中,主系統(tǒng)總線(xiàn)170-1被提供用于通信耦合DSP核100到其它系統(tǒng)組件,如在圖2中通過(guò)更詳細(xì)的示例方式所討論的。計(jì)算總線(xiàn)170-2通信親合計(jì)算陣列130到控制單元110。內(nèi)存總線(xiàn)170-3通信耦合處理元件PE到內(nèi)存122。應(yīng)當(dāng)指出的是,這些使用僅通過(guò)非限制性的示例展現(xiàn),并且一些實(shí)施方案可以省略一個(gè)或多個(gè)前述的總線(xiàn),而其它的可以采用附加的或不同的總線(xiàn)。
[0032]控制單元110可以經(jīng)由計(jì)算總線(xiàn)170-2發(fā)出指令和數(shù)據(jù)地址以給計(jì)算陣列130。計(jì)算總線(xiàn)170-2為指令和數(shù)據(jù)傳送地址到計(jì)算陣列130不同的處理元件PE。內(nèi)存總線(xiàn)170-3可以傳送來(lái)自?xún)?nèi)存(例如內(nèi)存122、程序內(nèi)存11 6、其它內(nèi)存或者它們的組合)的數(shù)據(jù)和/或指令,使得DSP核100的任何寄存器的內(nèi)容可被傳送到其它任何寄存器或任何內(nèi)存位置,并且內(nèi)存122可提供數(shù)據(jù)操作數(shù)(值)給計(jì)算陣列130。
[0033]在所示的示例中,計(jì)算陣列130包括四個(gè)處理元件PE1-PE4。在其它實(shí)施方案中,計(jì)算陣列130可以包括零個(gè)或多個(gè)分離的處理元件。處理元件PE執(zhí)行數(shù)值處理,且在示例中可以包括用于執(zhí)行特定類(lèi)型計(jì)算如DSP算法的專(zhuān)用硬件。處理元件PE可獨(dú)立操作、并行操作或作為SHffi引擎。在本示例中,每個(gè)處理元件PE可以作為向量處理器??商娲?,處理元件PE可以是標(biāo)量處理器,或是標(biāo)量處理器和向量處理器的組合。
[0034]每個(gè)處理元件PE包括各自的計(jì)算單元(⑶)152。雖然本公開(kāi)考慮的實(shí)施方案,其中計(jì)算單元152是不相同的,但是在描繪的實(shí)施方案中,計(jì)算單元152是可以相同的。本公開(kāi)還考慮了結(jié)構(gòu),其中一個(gè)或多個(gè)處理元件PE不包括計(jì)算單元152。在本示例中,每一個(gè)計(jì)算單元152包括算術(shù)邏輯單元(ALU)、乘法器-累加器(MAC),移位器,其它計(jì)算單元或它們的組合。ALU可以執(zhí)行算術(shù)和邏輯運(yùn)算,如加、減、否定、遞增、遞減、絕對(duì)值、邏輯與運(yùn)算、邏輯或運(yùn)算、邏輯異或運(yùn)算、邏輯非運(yùn)算、數(shù)據(jù)元素除法,其它算術(shù)運(yùn)算、其它邏輯運(yùn)算或它們的組合。示例MAC可以執(zhí)行乘法運(yùn)算以及乘法和累加運(yùn)算,如單周期乘法、乘/加、乘/減、其它操作或它們的組合。移位器可以執(zhí)行邏輯和算術(shù)移位、位操作、規(guī)范化、反規(guī)范化、派生-指數(shù)運(yùn)算、其它運(yùn)算或它們的組合。各個(gè)算術(shù)運(yùn)算、邏輯運(yùn)算以及其它運(yùn)算可以同時(shí)在定點(diǎn)和浮點(diǎn)格式上執(zhí)行。在各種實(shí)施方案中,ALU、MAC、與/或移位器包括與其相關(guān)聯(lián)的寄存器。
[0035]處理元件PE還可以各自包括相應(yīng)的寄存器堆154。雖然本公開(kāi)考慮的實(shí)施方案,其中寄存器堆154是不相同的,但是在描繪的實(shí)施方案中寄存器堆154是可以相同的。本公開(kāi)還考慮了結(jié)構(gòu),其中一個(gè)或多個(gè)處理元件PE不包括寄存器堆154。寄存器堆154包括寄存器,其用于在處理元件PE和內(nèi)存總線(xiàn)170-3之間傳送數(shù)據(jù)和存儲(chǔ)結(jié)果。在本示例中,寄存器堆154可包括相應(yīng)的通用寄存器組155,其包括具有取決于DSP核100的設(shè)計(jì)要求寬度的通用寄存器,例如32位通用寄存器、40位通用寄存器、64位通用寄存器、128位通用寄存器、其它寬度通用寄存器或它們的組合。為了下面的討論,通用寄存器155包括32位通用寄存器。在本示例中,每一個(gè)寄存器堆154包括通用寄存器155和專(zhuān)用寄存器158,其可以包括用于執(zhí)行如本文所述的路預(yù)測(cè)所需的任何寄存器。根據(jù)上下文,在某些架構(gòu)中,任何通用寄存器155或?qū)S眉拇嫫?58可被用作圖4任何指定目的寄存器,如地址寄存器410、偏移寄存器430和數(shù)據(jù)寄存器480。在其它示例中,專(zhuān)用寄存器158內(nèi)的某些寄存器可以被特別指定為一個(gè)或多個(gè)地址寄存器410、偏移寄存器430,和/或數(shù)據(jù)寄存器480。
[0036]DSP核100可以執(zhí)行不同的并行操作。例如,在單個(gè)周期內(nèi),處理元件PE可訪問(wèn)指令(經(jīng)由互連網(wǎng)絡(luò)142)和訪問(wèn)來(lái)自?xún)?nèi)存的N個(gè)數(shù)據(jù)操作數(shù)(經(jīng)由內(nèi)存總線(xiàn)170-3)用于同步處理。在Sn?模式下,DSP核loo可以并行處理多個(gè)數(shù)據(jù)流。例如,當(dāng)在Sn?模式時(shí),DSP核100在單個(gè)周期內(nèi)可經(jīng)由計(jì)算總線(xiàn)170-2調(diào)度單條指令到每個(gè)或多個(gè)處理元件PE ;經(jīng)由內(nèi)存總線(xiàn)170-3加載N個(gè)來(lái)自?xún)?nèi)存(內(nèi)存122、程序內(nèi)存116、其它內(nèi)存或它們的組合)的數(shù)據(jù)集,用于每個(gè)處理元件PE的一個(gè)數(shù)據(jù)集(在示例中,每個(gè)數(shù)據(jù)集可以包括兩個(gè)數(shù)據(jù)操作數(shù));在處理元件PE上同步執(zhí)行單一指令;并存儲(chǔ)來(lái)自?xún)?nèi)存122中的同步執(zhí)行的數(shù)據(jù)結(jié)果。
[0037]圖2是根據(jù)本說(shuō)明書(shū)的一個(gè)或多個(gè)示例的計(jì)算設(shè)備200的框圖。如參考圖1所描述的,計(jì)算設(shè)備200包括通信耦合到系統(tǒng)總線(xiàn)170-1和內(nèi)存總線(xiàn)170-3的DSP核100。內(nèi)存總線(xiàn)170-3通信耦合DSP核100到內(nèi)存122,其已經(jīng)加載,其中操作系統(tǒng)122為應(yīng)用軟件提供低層次的服務(wù)。然而本說(shuō)明書(shū)考慮的實(shí)施方案,其中傳統(tǒng)操作系統(tǒng)122可以是不必要的,如在嵌入式系統(tǒng)或控制器中,其中應(yīng)用程序可以運(yùn)行在"裸機(jī)"。
[0038]存儲(chǔ)器240可以經(jīng)由系統(tǒng)總線(xiàn)170-1通信耦合到DSP核100。存儲(chǔ)器240可以是一種內(nèi)存122。在一些實(shí)施方案中,內(nèi)存122和存儲(chǔ)器240可以是單獨(dú)的設(shè)備,內(nèi)存122是相對(duì)低延遲易失性?xún)?nèi)存設(shè)備且存儲(chǔ)器240是相對(duì)高延遲非易失性?xún)?nèi)存設(shè)備。存儲(chǔ)器240還可以是另一種設(shè)備,例如硬盤(pán)驅(qū)動(dòng)器、固態(tài)驅(qū)動(dòng)器、外部存儲(chǔ)器、獨(dú)立磁盤(pán)冗余陣列(RAID)、網(wǎng)絡(luò)附加存儲(chǔ)器、光存儲(chǔ)器、磁帶驅(qū)動(dòng)器、備份系統(tǒng)、云存儲(chǔ)器或任何前述的組合。存儲(chǔ)器240可以是,或可包括在其中,存儲(chǔ)在其它結(jié)構(gòu)上的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)或數(shù)據(jù)。許多其它的結(jié)構(gòu)也是可能的,并旨在被涵蓋在本說(shuō)明書(shū)的廣泛的適用范圍內(nèi)。在示例中,程序執(zhí)行包括從存儲(chǔ)器240加載指令到內(nèi)存122。然后指令被取到DSP核100用于執(zhí)行。數(shù)據(jù)也可以在程序執(zhí)行期間從存儲(chǔ)器240被加載到內(nèi)存122,用于供應(yīng)到DSP核100。
[0039]網(wǎng)絡(luò)接口 270可通信耦合到DSP核100,且可操作以通信耦合DSP核100到網(wǎng)絡(luò)。在本說(shuō)明書(shū)中,"網(wǎng)絡(luò)"包括任何通信平臺(tái),其可操作以在計(jì)算設(shè)備內(nèi)或計(jì)算設(shè)備之間交換數(shù)據(jù)或信息,通過(guò)非限制性示例的方式,包括自組織本地網(wǎng)絡(luò)、提供具有電子交互能力的計(jì)算設(shè)備的互聯(lián)網(wǎng)架構(gòu)、普通老式電話(huà)系統(tǒng)(POTS),其計(jì)算設(shè)備可用于執(zhí)行交易,其中它們可通過(guò)人工操作或手動(dòng)將數(shù)據(jù)輸入電話(huà)或其它合適的電子設(shè)備來(lái)被協(xié)助、任何在系統(tǒng)中任意兩個(gè)節(jié)點(diǎn)之間提供通信接口或交換的分組數(shù)據(jù)網(wǎng)絡(luò)(TON),或者任何局域網(wǎng)(LAN)、城域網(wǎng)(MAN)、廣域網(wǎng)(WAN)、無(wú)線(xiàn)局域網(wǎng)絡(luò)(WLAN)、虛擬專(zhuān)用網(wǎng)(VPN)、內(nèi)聯(lián)網(wǎng),或任何其它適當(dāng)?shù)慕Y(jié)構(gòu)或系統(tǒng),促進(jìn)在網(wǎng)絡(luò)或電話(huà)環(huán)境中通信。
[0040]外圍接口 250經(jīng)由系統(tǒng)總線(xiàn)170-1通信耦合到DSP核100,并可操作以通信耦合DSP核100到一個(gè)或多個(gè)外圍設(shè)備。如在說(shuō)明書(shū)中使用的,"外圍設(shè)備"包括任何連接到計(jì)算設(shè)備200但不必是計(jì)算設(shè)備200核心架構(gòu)一部分的輔助設(shè)備。外圍設(shè)備可被操作以提供擴(kuò)展功能給計(jì)算設(shè)備200,并可能會(huì)或可能不會(huì)完全依賴(lài)于計(jì)算設(shè)備200。在某些情況下,外圍設(shè)備本身可以是計(jì)算設(shè)備。外圍設(shè)備可包括輸入和輸出設(shè)備,如顯示器、終端、打印機(jī)、鍵盤(pán)、鼠標(biāo)、調(diào)制解調(diào)器、網(wǎng)絡(luò)控制器、傳感器、致動(dòng)器、執(zhí)行器,控制器、數(shù)據(jù)采集總線(xiàn)、攝像頭、麥克風(fēng)、揚(yáng)聲器或通過(guò)非限制性示例的外部存儲(chǔ)器。
[0041]應(yīng)當(dāng)指出的是,在圖2中所描述的組件僅通過(guò)示例的方式被提供,且不旨在限制計(jì)算設(shè)備200為示出的具體的結(jié)構(gòu)。圖2的任何組件可以在適當(dāng)?shù)那闆r下省略,而在其它適當(dāng)?shù)那闆r下,任何組件可以根據(jù)需要重復(fù),或與其它組件組合。例如,在一些情況下,網(wǎng)絡(luò)接口 270可被用來(lái)提供連接到某些外圍設(shè)備,使外設(shè)接口 250的功能包含在其中。因此,應(yīng)當(dāng)理解的是,本文中組件之間的劃分不旨在表示必要或嚴(yán)格的物理劃分。相反,組件根據(jù)邏輯功能劃分,并在適當(dāng)情況下,單一的設(shè)備可以執(zhí)行多個(gè)功能。在一個(gè)示例中,計(jì)算設(shè)備200可以被提供,其全部,作為系統(tǒng)級(jí)芯片(SoC),其中本文展示的一些或全部功能可以由單個(gè)單片半導(dǎo)體設(shè)備提供。
[0042]圖3A和3B是根據(jù)本說(shuō)明書(shū)的一個(gè)或多個(gè)示例的高速緩存的框圖。在圖3A中展示了直接映射高速緩存120-1。高速緩存控制器310被提供以尋址直接映射高速緩存120-1。高速緩存控制器310接收地址用于內(nèi)存位置訪問(wèn),并使用該地址來(lái)訪問(wèn)直接映射高速緩存120-1。
[0043]在這個(gè)示例中,直接映射高速緩存120-1包括多個(gè)位、字節(jié)、字符、字或適合應(yīng)用程序的其它內(nèi)存部分。貫穿本說(shuō)明書(shū),字通過(guò)非限制性示例的方式被用來(lái)說(shuō)明本文展示的方法和結(jié)構(gòu)。然而,應(yīng)當(dāng)理解的是,從高速緩存120或內(nèi)存122讀出的任何數(shù)據(jù)"字"的引用旨在廣泛地涵蓋任何合適的內(nèi)存元件或部分。
[0044]直接映射高速緩存(其可以被認(rèn)為包括多個(gè)組,其中每個(gè)組僅包括單條路)120-1在這個(gè)示例中包括八個(gè)獨(dú)立的組。每個(gè)高速緩存組合被配置以使得主存122的每個(gè)值可被映射到唯一的一組。例如,這可以基于,從內(nèi)存122的地址的最低位的部分。應(yīng)當(dāng)指出的是,這僅通過(guò)示例的方式被提供,且有許多方法,其中內(nèi)存可在高速緩存子系統(tǒng)300中被尋址和管理。在該示例中,內(nèi)存地址基于從O到7的值被映射,其可以在RAM中的地址的第3至第5位被編碼。因此,索引0x0和索引0x40只能存儲(chǔ)在組O中,索引0x8和索引0x48只能存儲(chǔ)在組I中,索引0x10和索引0x50只能存儲(chǔ)在組2中,依此類(lèi)推。
[0045]盡管該結(jié)構(gòu)在速度和復(fù)雜性上具有優(yōu)點(diǎn),但是它在存儲(chǔ)靈活性上面臨一些限制。例如,如果程序以這種方式被寫(xiě)入使它需要重復(fù)輪流訪問(wèn)索引0x0和索引0X40,那么在每個(gè)負(fù)載指令上,緩存將在每下一次的讀取中被填充,高速緩存未命中的現(xiàn)象會(huì)發(fā)生,因?yàn)樗饕?x40不會(huì)也不能在同一時(shí)間作為索引0x0被存儲(chǔ)在直接映射緩存