三個(gè)功能集成到一個(gè)芯片上來,形成相對簡單但兼具獨(dú)立計(jì)算和存儲(chǔ)功能的單元,并使大量此類單元之間形成密集的通訊網(wǎng)絡(luò),以此實(shí)現(xiàn)數(shù)據(jù)廣播/群發(fā)功能和能夠大規(guī)模平行傳輸數(shù)據(jù)的內(nèi)部網(wǎng)絡(luò),便能開發(fā)出一種與人腦存在相似之處的計(jì)算架構(gòu),這相當(dāng)于把大量的微型計(jì)算機(jī)做在一個(gè)芯片上。
[0051]為此,本發(fā)明技術(shù)方案提供一種與人腦結(jié)構(gòu)相似的計(jì)算架構(gòu)(本發(fā)明技術(shù)方案中將其稱為“細(xì)胞陣列計(jì)算系統(tǒng)”),該計(jì)算架構(gòu)由眾多結(jié)構(gòu)相對簡單,兼具存儲(chǔ)和計(jì)算功能,又有著密集網(wǎng)絡(luò)連接的單元(本發(fā)明技術(shù)方案中將其稱為“細(xì)胞”)組成。這種新計(jì)算架構(gòu)將在大型計(jì)算、大數(shù)據(jù)處理、人工智能等領(lǐng)域中得到廣泛的應(yīng)用。
[0052]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖對本發(fā)明的具體實(shí)施例作詳細(xì)的說明。
[0053]如圖2所示,本發(fā)明實(shí)施例提供的細(xì)胞陣列計(jì)算系統(tǒng)包括:主控CPU、細(xì)胞陣列和細(xì)胞陣列總線;所述細(xì)胞陣列是所述細(xì)胞陣列計(jì)算系統(tǒng)中的主體,它是由一個(gè)以上兼具計(jì)算和存儲(chǔ)功能的細(xì)胞組成的二維陣列,其中每一個(gè)細(xì)胞包括微處理器(MPU)和非易失隨機(jī)存儲(chǔ)器(圖2中以MRAM為例);所述非易失隨機(jī)存儲(chǔ)器用于所述微處理器計(jì)算時(shí)所涉及數(shù)據(jù)的隨機(jī)存取,還用于存儲(chǔ)軟件的指令代碼和需要永久保存的數(shù)據(jù);每一個(gè)細(xì)胞儲(chǔ)存各自在所述細(xì)胞陣列中的位置作為ID以供細(xì)胞中的軟件或硬件讀??;所述主控CPU通過所述細(xì)胞陣列總線與所述細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行通信;所述細(xì)胞陣列中的相鄰細(xì)胞之間有通信接口,能相互發(fā)送數(shù)據(jù)。
[0054]需要說明的是,在本實(shí)施例中,所述非易失隨機(jī)存儲(chǔ)器是以MRAM為例進(jìn)行說明。在其他實(shí)施例中,隨著非易失隨機(jī)存儲(chǔ)技術(shù)的進(jìn)一步發(fā)展與成熟,所述非易失隨機(jī)存儲(chǔ)器也可以采用另外幾種有潛力的技術(shù)實(shí)現(xiàn),例如:相變隨機(jī)存儲(chǔ)器(PCRAM,Phase ChangeRandom Access Memory)、阻變式隨機(jī)存儲(chǔ)器(Resistive Random Access Memory)、鐵電隨機(jī)存儲(chǔ)器(FeRAM,F(xiàn)erroelectric Random Access Memory)、鐵電動(dòng)態(tài)隨機(jī)存儲(chǔ)器(FEDRAM,F(xiàn)erroelectric Dynamic Random Access Memory)等等。
[0055]MRAM是一種新的內(nèi)存和存儲(chǔ)技術(shù),可以像SRAM/DRAM —樣快速隨機(jī)讀寫,并且比DRAM快;還可以像閃存一樣在斷電后永久保留數(shù)據(jù),并且不像NAND閃存,MRAM可以不限次地擦寫,使用壽命較長。此外,MRAM的經(jīng)濟(jì)性想當(dāng)?shù)睾茫瑔挝蝗萘空加玫墓杵娣e比SRAM (通常作為CPU的緩存)有很大的優(yōu)勢,有望接近DRAM的水平。它的性能也相當(dāng)好,讀寫時(shí)延接近最好的SRAM,功耗則在各種內(nèi)存和存儲(chǔ)技術(shù)最好。而且MRAM不像DRAM以及Flash那樣與標(biāo)準(zhǔn)CMOS半導(dǎo)體工藝不兼容,MRAM可以和邏輯電路集成到一個(gè)芯片中。通過采用MRAM技術(shù),就可以把內(nèi)存、存儲(chǔ)、計(jì)算三個(gè)功能集成到一個(gè)芯片上來,使所述細(xì)胞陣列計(jì)算系統(tǒng)的實(shí)現(xiàn)便能成為可能。
[0056]本實(shí)施例中,所述微處理器具有通常CPU的功能,還可以根據(jù)具體的應(yīng)用場景添加浮點(diǎn)計(jì)算處理器(FPU,F(xiàn)loat Point Unit)、圖像處理器等單元,因此,所述微處理器中可以集成有浮點(diǎn)計(jì)算處理器和圖像處理器中的至少一種。
[0057]在實(shí)際實(shí)施時(shí),所述主控CPU與所述細(xì)胞陣列和所述細(xì)胞陣列總線可以集成于一個(gè)芯片中,所述主控CPU也可以作為獨(dú)立的芯片,通過標(biāo)準(zhǔn)的內(nèi)存接口與由所述細(xì)胞陣列和所述細(xì)胞陣列總線組成的芯片進(jìn)行通信。當(dāng)所述主控CPU與所述細(xì)胞陣列之間采用標(biāo)準(zhǔn)的內(nèi)存接口進(jìn)行通信時(shí),則主控CPU可以采用通用的CPU芯片實(shí)現(xiàn),更易于所述細(xì)胞陣列計(jì)算系統(tǒng)的實(shí)施。
[0058]本實(shí)施例中,每一個(gè)細(xì)胞儲(chǔ)存各自在細(xì)胞陣列中的位置作為ID,所述位置可以采用平面直角坐標(biāo)系中第一象限的坐標(biāo)表示方式,若(x,y)表示某個(gè)細(xì)胞在細(xì)胞陣列中的位置,則(X,y)可以作為ID存儲(chǔ)在該細(xì)胞中,細(xì)胞中的軟件和硬件可以讀取這個(gè)ID,在具體的操作中使用。
[0059]本實(shí)施例中,所述主控CPU通過所述細(xì)胞陣列總線與所述細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行的通信包括以下情況:
[0060]按地址讀寫所述細(xì)胞陣列中任一細(xì)胞的非易失隨機(jī)存儲(chǔ)器;
[0061]將數(shù)據(jù)廣播到所述細(xì)胞陣列中目標(biāo)區(qū)域內(nèi)每一個(gè)細(xì)胞的非易失隨機(jī)存儲(chǔ)器,并寫入該目標(biāo)區(qū)域內(nèi)每一個(gè)細(xì)胞的非易失隨機(jī)存儲(chǔ)器中相同的相對地址;
[0062]給所述細(xì)胞陣列中任一細(xì)胞的微處理器發(fā)送指令(包括開始、暫停)、發(fā)送數(shù)據(jù)或讀取狀態(tài);
[0063]給目標(biāo)區(qū)域內(nèi)所有細(xì)胞的微處理器廣播指令。
[0064]當(dāng)然,在其他實(shí)施例中,所述主控CPU通過所述細(xì)胞陣列總線與所述細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行的通信也可以是上述情況中的一種或多種組合。
[0065]需要說明的是,本發(fā)明實(shí)施例中的“目標(biāo)區(qū)域”是指由所述主控CPU或所述細(xì)胞陣列中的任一細(xì)胞選擇一個(gè)以上存在相鄰關(guān)系的細(xì)胞所構(gòu)成的區(qū)域,該區(qū)域內(nèi)的細(xì)胞是主控CPU或細(xì)胞陣列中的任一細(xì)胞廣播/群發(fā)數(shù)據(jù)或指令的對象。本實(shí)施例中,所述目標(biāo)區(qū)域具體以矩形區(qū)域(a < X < b,c < y < d,其中a、b分別是該矩形區(qū)域在平面直角坐標(biāo)系中x軸方向的邊界坐標(biāo),c、d分別是該矩形區(qū)域在平面直角坐標(biāo)系中y軸方向的邊界坐標(biāo))為例進(jìn)行說明。在其他實(shí)施例中,所述目標(biāo)區(qū)域也可以是其他形狀構(gòu)成的區(qū)域,例如菱形區(qū)域、三角形區(qū)域、六邊形區(qū)域等等。
[0066]此外,本發(fā)明實(shí)施例中“廣播”的概念不同于“群發(fā)”的概念,前者可以是發(fā)一遍數(shù)據(jù)或指令使得所有的對象都能接收到,而后者則可以是分很多遍發(fā)給不同的對象。
[0067]除了通過主控CPU對所述細(xì)胞陣列中任一細(xì)胞(包括細(xì)胞中的微處理器或非易失隨機(jī)存儲(chǔ)器)進(jìn)行廣播,在所述細(xì)胞陣列內(nèi),還有一個(gè)通信網(wǎng)絡(luò),該通信網(wǎng)絡(luò)能夠使得一個(gè)細(xì)胞可以在其MPU的控制下,向與它相鄰的細(xì)胞發(fā)送數(shù)據(jù)。如圖3所示,在一平面中,任一細(xì)胞可以與其上、下、左、右四個(gè)方向的相鄰細(xì)胞進(jìn)行通信。當(dāng)然,相鄰細(xì)胞之間通信方式的概念并不僅僅局限于“上、下、左、右四個(gè)方向”,在線路布局能夠支持的情況下,也可以是“上、下、左、右、左上、右上、左下、右下八個(gè)方向”,如圖4所示,任一細(xì)胞可以與其上、下、左、右、左上、右上、左下、右下八個(gè)方向的相鄰細(xì)胞進(jìn)行通信。
[0068]如圖5所示,在本實(shí)施例中,所述細(xì)胞陣列中的細(xì)胞具體還可以包括總線控制器和細(xì)胞內(nèi)部總線,所述總線控制器與所述細(xì)胞陣列總線、微處理器以及細(xì)胞內(nèi)部總線相連,所述總線控制器用于識別所述主控CPU與本細(xì)胞之間進(jìn)行的通信,連接所述微處理器以傳遞所述主控CPU發(fā)送的指令或數(shù)據(jù)、狀態(tài)讀取,或者通過所述細(xì)胞內(nèi)部總線連接所述非易失隨機(jī)存儲(chǔ)器進(jìn)行數(shù)據(jù)的讀寫操作。
[0069]本領(lǐng)域技術(shù)人員知曉,一個(gè)比較簡單而性能很好的CPU,如ARM Cotex MO,只有5萬個(gè)左右的MOS管,即使適度增加FPU功能,也比頂級CPU的上億個(gè)MOS管小得多,提升CPU性能帶來的面積(成本)增加是不成比例的。把一個(gè)大CPU用許多小CPU替換,在總成本一樣的情況下,總計(jì)算能力一定提高很多倍。然而傳統(tǒng)計(jì)算機(jī)架構(gòu)受制于通信瓶頸,使用大量CPU內(nèi)核帶來的實(shí)際性能提升非常有限。
[0070]而本發(fā)明技術(shù)方案提供的細(xì)胞陣列計(jì)算系統(tǒng)通過數(shù)據(jù)廣播/群發(fā)和內(nèi)部網(wǎng)絡(luò),解決了通信瓶頸的問題,從而提升計(jì)算系統(tǒng)的整體性能,并能使費(fèi)效比較佳,對此將在后續(xù)的應(yīng)用實(shí)例中更清楚地看到這一點(diǎn)。
[0071]初步的研究表明,如果使用類似于Cortex MO的MPU,配合32KB的內(nèi)存,組成一個(gè)細(xì)胞。使用40納米的工藝,可以把3000個(gè)這樣的細(xì)胞做在一個(gè)芯片上,這是非常強(qiáng)大的計(jì)算能力。進(jìn)一步的研究表明,使用這種方法,可以在同樣的硅片面積上超越當(dāng)代頂級CPU的計(jì)算能力(一般用每秒浮點(diǎn)運(yùn)算次數(shù)(FLOPS,floating-point operat1ns per second)測量)。由于本發(fā)明技術(shù)方案的細(xì)胞陣列計(jì)算系統(tǒng)不再面臨與內(nèi)存接口的瓶頸,在解決很多實(shí)際問題中,表現(xiàn)的會(huì)更好。
[0072]基于上述細(xì)胞陣列計(jì)算系統(tǒng),本發(fā)明實(shí)施例還提供一種上述細(xì)胞陣列計(jì)算系統(tǒng)中的通信方法,包括:主控CPU讀寫非易失隨機(jī)存儲(chǔ)器的操作、主控CPU與微處理器之間的通信操作、主控CPU的廣播操作以及細(xì)胞陣列內(nèi)相鄰細(xì)胞之間的通信操作;
[0073]所述主控CPU讀寫非易失隨機(jī)存儲(chǔ)器的操作具體包括:所述細(xì)胞陣列中的任一細(xì)胞接收所述主控CPU在所述細(xì)胞陣列總線上廣播的目標(biāo)地址,若判斷出所述目標(biāo)地址在本細(xì)胞中,則連接該細(xì)胞的非易失隨機(jī)存儲(chǔ)器以使所述主控CPU進(jìn)行數(shù)據(jù)的讀寫操作。
[0074]所述主控CPU與微處理器之間的通信操作具體包括:在系統(tǒng)地址空間中預(yù)留第一特殊地址段用于所述主控CPU與微處理器之間的通信并存儲(chǔ)目標(biāo)細(xì)胞的ID,若所述細(xì)胞陣列中任一細(xì)胞接收所述第一特殊地址段時(shí)識別出是與本細(xì)胞的微處理器的通信,則連接該細(xì)胞的微處理器完成后續(xù)的指令接收、數(shù)據(jù)接收和狀態(tài)讀取操作。
[0075]需要說明的是,所述系統(tǒng)地址空間并不僅僅局限于由細(xì)胞陣列的各個(gè)細(xì)胞中包含的非易失隨機(jī)存儲(chǔ)器組成的地址空間總和,因?yàn)檫B接細(xì)胞陣列總線的存儲(chǔ)器可能不止是細(xì)胞陣列的各個(gè)細(xì)胞中包含的非易失隨機(jī)存儲(chǔ)器,完全可能還存在其他類型的存儲(chǔ)器與細(xì)胞陣列總線相連,供所述主控CPU訪問。因此,所述主控CPU需要根據(jù)細(xì)胞的ID去標(biāo)識其準(zhǔn)備訪問的細(xì)胞(此時(shí)該細(xì)胞在本實(shí)施例中稱為“目標(biāo)細(xì)胞”)。
[0076]所述主控CPU的廣播操作具體包括:在系統(tǒng)地址空間中預(yù)留第二特殊地址段用于所述主控CPU廣播指令,所述第二特殊地址段存有能幫助確定所述細(xì)胞陣列中目標(biāo)區(qū)域的范圍的各個(gè)細(xì)胞的ID,若所述細(xì)胞陣列中任一細(xì)胞接收所述第二特殊地址段后識別出本細(xì)胞在所述目標(biāo)區(qū)域中,則連接該細(xì)胞的微處理器以傳遞所述主控CPU發(fā)送的指令或數(shù)據(jù)、狀態(tài)讀取,或者通過連接該細(xì)胞的非易失隨機(jī)存儲(chǔ)器進(jìn)行數(shù)據(jù)的讀寫操作。
[0077]下面以所述目標(biāo)區(qū)域具體是矩形區(qū)域?yàn)槔龑λ鲋骺谻PU的廣播操作舉例說明。在系統(tǒng)地址空間中預(yù)留一段用做廣播指令,這個(gè)地址中的一段用于存儲(chǔ)目標(biāo)矩形區(qū)域中起點(diǎn)細(xì)胞的ID。所述起點(diǎn)細(xì)胞是該目標(biāo)矩形區(qū)域中首個(gè)被主控CPU訪問的細(xì)胞,該細(xì)胞中的總線控制器接收這個(gè)特殊地址后,接收后面的一個(gè)字(word)的數(shù)據(jù),這個(gè)數(shù)據(jù)包括目標(biāo)矩形區(qū)域中與起點(diǎn)細(xì)胞對角的細(xì)胞的ID??偩€控制器判斷本細(xì)胞在該區(qū)域中,接收第二個(gè)字的數(shù)據(jù)。第二個(gè)字標(biāo)明是給MPU的指令或數(shù)據(jù),還是從非易失隨機(jī)存儲(chǔ)器中某一個(gè)相對地址開始寫入。如果是前者,連接MPU,如果是后者,連接非易失隨機(jī)存儲(chǔ)器完成后面的操作。
[0078]需要說明的是,在所述第二特殊地址段的存儲(chǔ)空間較為有限的情況下,其存儲(chǔ)的細(xì)胞ID并不一定能完全據(jù)此確定目標(biāo)區(qū)域的范圍,此時(shí)接收所述第二特殊地址段之后,還需要接收后續(xù)的數(shù)據(jù)以配合所述第二特殊地址段中所存儲(chǔ)的細(xì)胞ID共同確定目標(biāo)區(qū)域的范圍。
[0079]細(xì)胞陣列內(nèi)相鄰細(xì)胞之間的通信操作包括:所述細(xì)胞陣列中的任一細(xì)胞在其微處理器的控制下向相鄰細(xì)胞發(fā)送數(shù)據(jù)。
[0080]本實(shí)施例中,每個(gè)細(xì)胞設(shè)置有一個(gè)總線控制器,與細(xì)胞陣列總線連接。細(xì)胞內(nèi)部設(shè)置細(xì)胞內(nèi)部總線,所述非易失隨機(jī)存儲(chǔ)器是該細(xì)胞內(nèi)部總線的從設(shè)備(Slave),所述總線控制器和微處理器是主設(shè)備(Master)。
[0081]上述細(xì)胞陣列計(jì)算系統(tǒng)中的通信方法中涉及的“所述細(xì)胞陣列中的任一細(xì)胞判斷所述目標(biāo)地址是否在本細(xì)胞中”,“識別是否與本細(xì)胞的微處理器的通信”,“識別本細(xì)胞是否在所述目標(biāo)區(qū)域中”,以及“連接非易失隨機(jī)存儲(chǔ)器或微處理器”均是由所述總線控制器完成的,所述總線控制器通過所述細(xì)胞內(nèi)部總線連接所述非易失隨機(jī)存儲(chǔ)器。
[0082]在具體實(shí)施時(shí),所述主控CPU對于所述細(xì)胞陣列中任一細(xì)胞的非易失隨機(jī)存儲(chǔ)器的讀寫操作的優(yōu)先級高于該細(xì)胞內(nèi)的微處理器對于相應(yīng)的非易失隨機(jī)存儲(chǔ)器的讀寫操作。也就是說,如果某個(gè)細(xì)胞中的微處理器需要讀寫該細(xì)胞中的非易失隨機(jī)存儲(chǔ)器,須等主控(PU對于該細(xì)胞的非易失隨機(jī)存儲(chǔ)器的讀寫操作完成之后才能進(jìn)行。
[0083]所述細(xì)胞陣列計(jì)算系統(tǒng)中的通信方法的具體實(shí)施也可以參考上述細(xì)胞陣列計(jì)算系統(tǒng)的實(shí)施,此處不再贅述。
[0084]此外,本發(fā)明實(shí)施例還提供一種應(yīng)用上述細(xì)胞陣列計(jì)算系統(tǒng)計(jì)算Monte Carlo積分的方法。Monte Carlo積分是對隨機(jī)數(shù)的求和,是在科學(xué)和工程常用到的大計(jì)算,其原理相對簡單,計(jì)算過程參考如下公式。
[0085]s — Σ Random(x)F (X1, X2,.....,Xn)
[0086]下面將以對于這個(gè)問題的解決方法進(jìn)一步