本發(fā)明涉及計(jì)算機(jī)及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,特別涉及一種細(xì)胞陣列計(jì)算系統(tǒng)。
背景技術(shù):
通常來說,一臺(tái)計(jì)算機(jī)主要包括三個(gè)核心部分:中央處理器(cpu,centralprocessingunit)、內(nèi)存和存儲(chǔ)。
經(jīng)過一些世界頂級(jí)公司的不懈努力,cpu已經(jīng)演變成極度復(fù)雜的半導(dǎo)體芯片。頂級(jí)的cpu內(nèi)核內(nèi)部的mos管數(shù)目可以超過一億個(gè)。目前的產(chǎn)業(yè)趨勢(shì)是受制于功耗,cpu的運(yùn)行頻率已經(jīng)很難再提高。已經(jīng)極度復(fù)雜的現(xiàn)代cpu,運(yùn)行效率同樣很難再提高。新的cpu產(chǎn)品,越來越多地朝多核方向演進(jìn)。
在內(nèi)存方面,目前居于統(tǒng)治地位的是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram,dynamicrandomaccessmemory)技術(shù)。dram可以快速隨機(jī)讀寫,但卻不能在斷電的情況下保持內(nèi)容。實(shí)際上,即使在通電的情況下,它也會(huì)由于內(nèi)部用于儲(chǔ)存信息的電容器的漏電而丟失信息,必須周期性地自刷新。
在存儲(chǔ)方面,nand閃存技術(shù)正在逐步取代傳統(tǒng)硬盤。閃存所依賴的浮置柵極(floatinggate)技術(shù),雖然能夠在斷電的情況下保持內(nèi)容,但寫入(將‘1’改寫為‘0’)的速度很慢,擦除(將‘0’改寫為‘1’)的速度更慢,無法像dram那樣用于對(duì)計(jì)算的直接支持。它被制作成塊設(shè)備(blockdevice),必須整塊一起擦除,一個(gè)塊(block)包含很多頁(page),擦除后每頁可以進(jìn)行寫入操作。nand的另外一個(gè)問題是具有有限的壽命。
dram和nand閃存,以及cpu的邏輯電路,雖然都是基于cmos半導(dǎo)體工藝生產(chǎn)的,但這三者的工藝彼此并不兼容。于是,計(jì)算機(jī)的三個(gè)核心部分無法在一個(gè)芯片上共存,這深刻地影響了現(xiàn)代計(jì)算機(jī)的架構(gòu)。
現(xiàn)有技術(shù)中的計(jì)算機(jī)架構(gòu)如圖1所示,圖1中示出多個(gè)cpu內(nèi)核,分別為cpu1、cpu2、cpu3、……、cpun,每個(gè)cpu內(nèi)核一般具有相應(yīng)的一級(jí)緩存(l1cache),根據(jù)需要還可以進(jìn)一步為每個(gè)cpu內(nèi)核配備相應(yīng)的二級(jí)緩存(l2cache)、三級(jí)緩存(l3cache)。dram與各個(gè)cpu內(nèi)核之間通過雙倍速率(ddr,doubledatarate)接口進(jìn)行通信,硬盤(hd,harddisk)或固態(tài)硬盤(ssd,solidstatedrives)與各個(gè)cpu內(nèi)核之間則通過外圍設(shè)備接口進(jìn)行通信。
一方面,cpu在向多核的方向發(fā)展,但內(nèi)存和存儲(chǔ)都在另外的芯片里。多核cpu吞吐信息量成比例增加,與內(nèi)存、存儲(chǔ)的通信就越來越成為系統(tǒng)性能的瓶頸,所以無論計(jì)算系統(tǒng)的cpu多么強(qiáng)大,計(jì)算機(jī)系統(tǒng)中處理數(shù)據(jù)的速度受制于存儲(chǔ)設(shè)備的接口速度,這使得計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)處理速度大大降低。為了緩解通信瓶頸,cpu不得不采用越來越大的多級(jí)緩存。緩存是把內(nèi)存中的內(nèi)容復(fù)制,通常是用成本比dram高得多但速度更快的靜態(tài)隨機(jī)存取存儲(chǔ)器(sram,staticrandomaccessmemory)設(shè)計(jì)的。這樣的架構(gòu),費(fèi)效比非常的差。半導(dǎo)體芯片的成本由其硅片的面積決定,而傳統(tǒng)計(jì)算機(jī)架構(gòu)帶來的性能提升與其硅片面積的增加遠(yuǎn)遠(yuǎn)不成比例。
另一方面,互聯(lián)網(wǎng)促進(jìn)了大數(shù)據(jù)的應(yīng)用,大型數(shù)據(jù)中心的耗電成為運(yùn)營成本的一個(gè)重要部分。高速數(shù)據(jù)的傳輸距離越長,其功耗就越高,大量數(shù)據(jù)從存儲(chǔ)設(shè)備被轉(zhuǎn)移到內(nèi)存中由cpu處理,消耗了很多能量,而絕大部分的數(shù)據(jù)處理都是查詢、搜索一類的簡單處理,并不需要高端的cpu。
因此,現(xiàn)有技術(shù)中的計(jì)算機(jī)架構(gòu)因cpu與內(nèi)存、存儲(chǔ)之間存在的通信瓶頸,嚴(yán)重降低了計(jì)算系統(tǒng)的數(shù)據(jù)處理速度以及增大了計(jì)算系統(tǒng)的功耗,從而影響系統(tǒng)整體性能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的問題是現(xiàn)有技術(shù)中的計(jì)算機(jī)架構(gòu)因cpu與內(nèi)存、存儲(chǔ)之間存在的通信瓶頸而嚴(yán)重降低了計(jì)算系統(tǒng)的數(shù)據(jù)處理速度以及增大了計(jì)算系統(tǒng)的功耗,從而影響系統(tǒng)整體性能。
為解決上述問題,本發(fā)明技術(shù)方案提供一種細(xì)胞陣列計(jì)算系統(tǒng),包括:內(nèi)控cpu、細(xì)胞陣列、細(xì)胞陣列總線、總線控制器、外部接口、存儲(chǔ)接口以及至少一個(gè)第一存儲(chǔ)器;所述第一存儲(chǔ)器為采用整塊讀寫的非易失性存儲(chǔ)器;所述存儲(chǔ)接口與所述細(xì)胞陣列總線、所述第一存儲(chǔ)器相連,用于對(duì)所述第一存儲(chǔ)器進(jìn)行數(shù)據(jù)存儲(chǔ)訪問控制;所述細(xì)胞陣列是由一個(gè)以上兼具計(jì)算和存儲(chǔ)功能的細(xì)胞組成的二維陣列或三維陣列,其中每一個(gè)細(xì)胞包括微處理器(mpu,microprocessingunit)和第二存儲(chǔ)器,所述第二存儲(chǔ)器為非易失(nv,notvolatile)隨機(jī)存儲(chǔ)器,用于所述微處理器計(jì)算時(shí)所涉及數(shù)據(jù)的隨機(jī)存取,還用于存儲(chǔ)軟件的指令代碼和需要永久保存的數(shù)據(jù);每一個(gè)細(xì)胞儲(chǔ)存各自在所述細(xì)胞陣列中的位置作為身份識(shí)別號(hào)(id,identification)以供細(xì)胞中的軟件或硬件讀??;所述細(xì)胞陣列中的相鄰細(xì)胞之間有通信接口,能相互發(fā)送數(shù)據(jù);所述內(nèi)控cpu用于控制所述存儲(chǔ)接口以及通過所述細(xì)胞陣列總線與所述細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行通信;所述內(nèi)控cpu還用于管理存儲(chǔ)數(shù)據(jù),分配細(xì)胞中的資源完成計(jì)算任務(wù);所述總線控制器用于協(xié)調(diào)所述細(xì)胞陣列總線上各個(gè)主設(shè)備對(duì)所述細(xì)胞陣列總線的控制權(quán);所述細(xì)胞陣列總線上的主設(shè)備包括所述內(nèi)控cpu、所述存儲(chǔ)接口以及連接到所述外部接口的外部訪問設(shè)備。
可選的,所述內(nèi)控cpu通過所述細(xì)胞陣列總線與所述細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行的通信包括以下情況中的至少一種:
按地址讀寫所述細(xì)胞陣列中任一細(xì)胞的第二存儲(chǔ)器;
將數(shù)據(jù)廣播到所述細(xì)胞陣列中目標(biāo)區(qū)域內(nèi)每一個(gè)細(xì)胞的第二存儲(chǔ)器,并寫入所述目標(biāo)區(qū)域內(nèi)每一個(gè)細(xì)胞的第二存儲(chǔ)器中相同的相對(duì)地址;
給所述細(xì)胞陣列中任一細(xì)胞的微處理器發(fā)送指令、發(fā)送數(shù)據(jù)或讀取狀態(tài);
給所述目標(biāo)區(qū)域內(nèi)所有細(xì)胞的微處理器廣播指令。
可選的,所述細(xì)胞陣列中的細(xì)胞還包括細(xì)胞內(nèi)總線控制器和細(xì)胞內(nèi)部總線,所述細(xì)胞內(nèi)總線控制器與所述細(xì)胞陣列總線、微處理器以及細(xì)胞內(nèi)部總線相連,所述細(xì)胞內(nèi)總線控制器用于識(shí)別所述內(nèi)控cpu與本細(xì)胞之間進(jìn)行的通信,連接所述微處理器以傳遞所述內(nèi)控cpu發(fā)送的指令或數(shù)據(jù)、狀態(tài)讀取,或者通過所述細(xì)胞內(nèi)部總線連接所述第二存儲(chǔ)器進(jìn)行數(shù)據(jù)的讀寫操作。
可選的,所述存儲(chǔ)接口通過連接訪問通道與相應(yīng)的第一存儲(chǔ)器相連,每一個(gè)第 一存儲(chǔ)器支持一個(gè)或一個(gè)以上訪問通道。
可選的,所述細(xì)胞陣列計(jì)算系統(tǒng)還包括通過所述細(xì)胞陣列總線與所述內(nèi)控cpu相連的至少一個(gè)第三存儲(chǔ)器,用于所述內(nèi)控cpu計(jì)算時(shí)所涉及數(shù)據(jù)的隨機(jī)存取。
可選的,所述第二存儲(chǔ)器為磁性隨機(jī)存儲(chǔ)器(mram,magneticrandomaccessmemory),所述第一存儲(chǔ)器為nand,所述存儲(chǔ)接口為nand控制器。
可選的,所述內(nèi)控cpu、所述外部接口、所述存儲(chǔ)接口、所述細(xì)胞陣列、所述細(xì)胞陣列總線以及由所述細(xì)胞陣列內(nèi)各個(gè)能相互通信的相鄰細(xì)胞所形成的通信網(wǎng)絡(luò)集成于一個(gè)數(shù)據(jù)處理硅片中;每一個(gè)第一存儲(chǔ)器對(duì)應(yīng)為一個(gè)存儲(chǔ)介質(zhì)硅片;所述數(shù)據(jù)處理硅片和所有存儲(chǔ)介質(zhì)硅片被封裝在一個(gè)芯片內(nèi)。
可選的,所述細(xì)胞陣列計(jì)算系統(tǒng)還包括與所述外部接口相連的所述外部訪問設(shè)備,用于通過控制所述細(xì)胞陣列總線實(shí)現(xiàn)對(duì)所述第二存儲(chǔ)器的數(shù)據(jù)直接讀寫,或者通過所述內(nèi)控cpu實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)訪問或數(shù)據(jù)處理請(qǐng)求。
可選的,所述外部訪問設(shè)備包括主cpu、直接存儲(chǔ)訪問(dma,directmemoryaccess)控制器和其他外部設(shè)備中的至少一種。
可選的,所述外部接口為外部內(nèi)存接口或外部存儲(chǔ)接口。
可選的,所述外部接口為外部內(nèi)存接口;所述主cpu能通過所述外部內(nèi)存接口直接讀寫所述細(xì)胞陣列中的所述第二存儲(chǔ)器;所述總線控制器協(xié)調(diào)所述細(xì)胞陣列總線上各個(gè)主設(shè)備對(duì)所述細(xì)胞陣列總線的控制權(quán)包括:協(xié)調(diào)所述主cpu和內(nèi)控cpu對(duì)所述細(xì)胞陣列總線的控制。
可選的,所述總線控制器在所述主cpu和內(nèi)控cpu均存在對(duì)所述細(xì)胞陣列總線的需求時(shí),將對(duì)所述細(xì)胞陣列總線的控制權(quán)優(yōu)先分配給所述主cpu。
可選的,所述細(xì)胞陣列劃分為一個(gè)以上小區(qū),所述小區(qū)為由一個(gè)以上細(xì)胞組成的二維或三維的子細(xì)胞陣列;所述細(xì)胞陣列總線包括小區(qū)內(nèi)部總線和小區(qū)外部總線,各小區(qū)均連接至所述小區(qū)外部總線,每個(gè)小區(qū)均包括連接于各自小區(qū)內(nèi)部總線的所述存儲(chǔ)接口、總線控制器以及內(nèi)控cpu;每個(gè)小區(qū)的內(nèi)控cpu控制本小區(qū)的存儲(chǔ)接口以及通過本小區(qū)的小區(qū)內(nèi)部總線與本小區(qū)內(nèi)的每一個(gè)細(xì)胞進(jìn)行通信,每個(gè)小區(qū)的內(nèi)控cpu還管理本小區(qū)的存儲(chǔ)數(shù)據(jù),分配本小區(qū)內(nèi)的細(xì)胞中的資源完成計(jì)算任務(wù);每個(gè)小區(qū)的總線控制器負(fù)責(zé)協(xié)調(diào)本小區(qū)外部和本小區(qū)內(nèi)的主設(shè)備對(duì)本小區(qū)的小區(qū)內(nèi)部總線的控制權(quán)。
可選的,每個(gè)小區(qū)的總線控制器在本小區(qū)外部和本小區(qū)內(nèi)的主設(shè)備均存在對(duì)本小區(qū)的小區(qū)內(nèi)部總線的需求時(shí),將對(duì)本小區(qū)的小區(qū)內(nèi)部總線的控制權(quán)優(yōu)先分配給本小區(qū)外部的主設(shè)備。
與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)方案至少具有以下優(yōu)點(diǎn):
通過將一個(gè)以上兼具獨(dú)立計(jì)算和存儲(chǔ)功能的單元(稱為“細(xì)胞”)組成二維或三維陣列(稱為“細(xì)胞陣列”),其中每一個(gè)細(xì)胞包括微處理器和非易失隨機(jī)存儲(chǔ)器,所述非易失隨機(jī)存儲(chǔ)器既能支持所述微處理器進(jìn)行計(jì)算時(shí)所涉及數(shù)據(jù)的隨機(jī)存取,也能支持存儲(chǔ)軟件的指令代碼和需要永久保存的數(shù)據(jù),使內(nèi)存、存儲(chǔ)、計(jì)算三個(gè)功能集成到每個(gè)細(xì)胞中,并使各細(xì)胞之間形成密集的通信網(wǎng)絡(luò),一方面,內(nèi)控cpu能通過細(xì)胞陣列總線與細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行通信,另一方面,細(xì)胞陣列中的相鄰細(xì)胞之間也能相互發(fā)送數(shù)據(jù),由此能通過數(shù)據(jù)群發(fā)和內(nèi)部網(wǎng)絡(luò),克服現(xiàn)有計(jì)算機(jī)架構(gòu)因cpu與內(nèi)存、存儲(chǔ)之間存在的通信瓶頸,而基于上述細(xì)胞陣列、細(xì)胞陣列 總線以及通信網(wǎng)絡(luò)的計(jì)算架構(gòu)所形成的計(jì)算系統(tǒng),進(jìn)一步還提供了與細(xì)胞陣列總線相連的存儲(chǔ)接口以及外部接口,由此既能夠支持經(jīng)濟(jì)且能存儲(chǔ)海量數(shù)據(jù)的存儲(chǔ)介質(zhì)的擴(kuò)展,又能兼容更多的現(xiàn)有設(shè)備,有助于大幅提高現(xiàn)有計(jì)算機(jī)系統(tǒng)的性能,相比傳統(tǒng)的計(jì)算機(jī)架構(gòu),本發(fā)明技術(shù)方案的細(xì)胞陣列計(jì)算系統(tǒng)克服了現(xiàn)有計(jì)算機(jī)架構(gòu)因cpu與內(nèi)存、存儲(chǔ)之間存在的通信瓶頸,能大幅度地降低了功耗,同時(shí)大幅度地提高了數(shù)據(jù)處理速度,而且還擴(kuò)展了計(jì)算系統(tǒng)的大規(guī)模數(shù)據(jù)存儲(chǔ)能力,從而提升系統(tǒng)的整體性能。
進(jìn)一步地,通過形成“二級(jí)分區(qū)”的細(xì)胞陣列計(jì)算系統(tǒng),能夠克服“需要通過細(xì)胞陣列總線存儲(chǔ)信息分配到各個(gè)細(xì)胞,而使細(xì)胞陣列總線的負(fù)載過重”的問題。
關(guān)于本發(fā)明技術(shù)方案提供的細(xì)胞陣列計(jì)算系統(tǒng)所體現(xiàn)的優(yōu)勢(shì),具體分析如下:
1.省電:傳輸高速信息是非常耗電的,傳輸距離越遠(yuǎn),耗電越高。各大數(shù)據(jù)中心的電費(fèi)是運(yùn)營成本的主要部分。在大數(shù)據(jù)的時(shí)代,把數(shù)據(jù)處理放到離存儲(chǔ)最近的地方,在一個(gè)芯片內(nèi),能夠節(jié)省大量的功耗,降低成本也對(duì)環(huán)境有益。
2.高速:參見本發(fā)明的實(shí)施例。通過把存儲(chǔ)分到各個(gè)具有處理功能的芯片中,極大地提高了系統(tǒng)的存儲(chǔ)帶寬,相應(yīng)地提高數(shù)據(jù)處理的速度。
3.與現(xiàn)有設(shè)備兼容:所述外部接口使用現(xiàn)有的外部內(nèi)存接口或外部存儲(chǔ)接口,產(chǎn)品(細(xì)胞陣列計(jì)算系統(tǒng)集成為芯片或芯片組的形式)可以直接插入到現(xiàn)有的服務(wù)器中進(jìn)行升級(jí)。
附圖說明
圖1是現(xiàn)有技術(shù)中計(jì)算機(jī)架構(gòu)的示意圖;
圖2是集成存儲(chǔ)功能的細(xì)胞陣列計(jì)算系統(tǒng)的一種結(jié)構(gòu)示意圖;
圖3是圖2所示細(xì)胞陣列計(jì)算系統(tǒng)中將相鄰的文件塊存儲(chǔ)在相鄰細(xì)胞所連接的nand芯片的示意圖;
圖4是本發(fā)明實(shí)施例提供的集成存儲(chǔ)功能的細(xì)胞陣列計(jì)算系統(tǒng)的一種結(jié)構(gòu)示意圖;
圖5是本發(fā)明實(shí)施例的一種相鄰細(xì)胞之間通信方式的示意圖;
圖6是本發(fā)明實(shí)施例的另一種相鄰細(xì)胞之間通信方式的示意圖;
圖7是本發(fā)明實(shí)施例的細(xì)胞的結(jié)構(gòu)示意圖;
圖8是本發(fā)明實(shí)施例的細(xì)胞陣列中進(jìn)行細(xì)胞間通信的細(xì)胞的結(jié)構(gòu)示意圖;
圖9是本發(fā)明實(shí)施例的細(xì)胞陣列中細(xì)胞間通信的路徑選擇的示意圖;
圖10是本發(fā)明實(shí)施例的專職輸出細(xì)胞的實(shí)施過程示意圖;
圖11是本發(fā)明實(shí)施例提供的集成存儲(chǔ)功能的細(xì)胞陣列計(jì)算系統(tǒng)的另一種結(jié)構(gòu)示意圖。
具體實(shí)施方式
現(xiàn)有技術(shù)的計(jì)算機(jī)架構(gòu)由于cpu與內(nèi)存、存儲(chǔ)之間存在通信瓶頸,從而嚴(yán)重降低了計(jì)算系統(tǒng)的數(shù)據(jù)處理速度以及增大了計(jì)算系統(tǒng)的功耗,影響了系統(tǒng)整體性能。
本申請(qǐng)發(fā)明人經(jīng)過研究后考慮,若是把內(nèi)存、存儲(chǔ)、計(jì)算三個(gè)功能集成到一個(gè)芯片上來,形成相對(duì)簡單但兼具獨(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è)芯片上。
為此,本發(fā)明技術(shù)方案提供一種與人腦結(jié)構(gòu)相似的計(jì)算架構(gòu)(本發(fā)明技術(shù)方案中將其稱為“細(xì)胞陣列計(jì)算系統(tǒng)”),該計(jì)算架構(gòu)由眾多結(jié)構(gòu)相對(duì)簡單,兼具存儲(chǔ)和計(jì)算功能,又有著密集網(wǎng)絡(luò)連接的單元(本發(fā)明技術(shù)方案中將其稱為“細(xì)胞”)組成,既能避免因遠(yuǎn)距離的數(shù)據(jù)傳輸而產(chǎn)生的高耗電,還能夠有效地利用平行計(jì)算加快數(shù)據(jù)處理速度,更有效地克服了傳統(tǒng)計(jì)算機(jī)架構(gòu)中cpu與內(nèi)存、存儲(chǔ)之間的通信瓶頸,因此這種細(xì)胞陣列計(jì)算系統(tǒng)突破了傳統(tǒng)計(jì)算架構(gòu)的限制,極大地?cái)U(kuò)展cpu和內(nèi)存、cpu和存儲(chǔ)之間的通信帶寬,大幅度地降低了功耗,同時(shí)大幅度地提高了速度。這種新計(jì)算架構(gòu)將在大型計(jì)算、大數(shù)據(jù)處理、人工智能等領(lǐng)域中得到廣泛的應(yīng)用。
此外,為了更好地服務(wù)于大數(shù)據(jù)時(shí)代,本發(fā)明技術(shù)方案還對(duì)細(xì)胞陣列計(jì)算系統(tǒng)進(jìn)行存儲(chǔ)功能擴(kuò)展,定義了接口的架構(gòu)和產(chǎn)品形式,由此既能夠支持經(jīng)濟(jì)且能存儲(chǔ)海量數(shù)據(jù)的存儲(chǔ)介質(zhì)的擴(kuò)展,使其成為具備大規(guī)模數(shù)據(jù)存儲(chǔ)能力的細(xì)胞陣列計(jì)算系統(tǒng),又能兼容更多的現(xiàn)有設(shè)備,有助于大幅提高現(xiàn)有計(jì)算機(jī)系統(tǒng)的性能。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施例作詳細(xì)的說明。
在詳細(xì)描述本發(fā)明實(shí)施例提供的集成存儲(chǔ)功能的細(xì)胞陣列計(jì)算系統(tǒng)之前,先對(duì)本申請(qǐng)發(fā)明人此前提出的另一種集成存儲(chǔ)功能的細(xì)胞陣列計(jì)算系統(tǒng)作簡單介紹。如圖2所示,該集成存儲(chǔ)功能的細(xì)胞陣列計(jì)算系統(tǒng)包括:內(nèi)控cpu、細(xì)胞陣列、細(xì)胞陣列總線以及至少一個(gè)采用整塊讀寫的非易失性存儲(chǔ)器(以nand閃存為例進(jìn)行說明,圖2中未示出);所述細(xì)胞陣列是由一個(gè)以上兼具計(jì)算和存儲(chǔ)功能的細(xì)胞組成的二維陣列,其中每一個(gè)細(xì)胞包括微處理器(mpu)和非易失隨機(jī)存儲(chǔ)器(圖2中以mram為例),用于所述微處理器計(jì)算時(shí)所涉及數(shù)據(jù)的隨機(jī)存取,還用于存儲(chǔ)軟件的指令代碼和需要永久保存的數(shù)據(jù);每一個(gè)細(xì)胞中還包括與所述微處理器相連的存儲(chǔ)控制器(以nand控制器為例,圖2中的nanc即為nand控制器),用于對(duì)與本細(xì)胞相連的所述采用整塊讀寫的非易失性存儲(chǔ)器(nand閃存)進(jìn)行數(shù)據(jù)存儲(chǔ)訪問控制;每一個(gè)細(xì)胞儲(chǔ)存各自在所述細(xì)胞陣列中的位置作為id以供細(xì)胞中的軟件或硬件讀取;所述內(nèi)控cpu通過所述細(xì)胞陣列總線與所述細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行通信;所述細(xì)胞陣列中的相鄰細(xì)胞之間有通信接口,能相互發(fā)送數(shù)據(jù)。
圖2所示的集成存儲(chǔ)功能的細(xì)胞陣列計(jì)算系統(tǒng),對(duì)存儲(chǔ)接口(存儲(chǔ)控制器)的定義是每一個(gè)細(xì)胞均擁有自己的存儲(chǔ)接口,這種為細(xì)胞陣列計(jì)算系統(tǒng)擴(kuò)展大規(guī)模數(shù)據(jù)存儲(chǔ)能力的方式,既能避免因遠(yuǎn)距離的數(shù)據(jù)傳輸而產(chǎn)生的高耗電,還能夠有效地利用各細(xì)胞的大規(guī)模平行計(jì)算加快數(shù)據(jù)處理速度,更有效地克服了傳統(tǒng)計(jì)算機(jī)架構(gòu)中cpu與內(nèi)存、存儲(chǔ)之間的通信瓶頸。
此外,當(dāng)配合與圖2所示細(xì)胞陣列計(jì)算系統(tǒng)相適應(yīng)的文件存儲(chǔ)方法時(shí),還能夠進(jìn)一步提高數(shù)據(jù)處理效率。例如:在目標(biāo)文件的存儲(chǔ)過程中,會(huì)以所述采用整塊讀寫的非易失性存儲(chǔ)器中單個(gè)存儲(chǔ)塊的容量為單位對(duì)所述目標(biāo)文件進(jìn)行劃分,由此得到多個(gè)文件塊,每個(gè)文件塊的大小等于所述存儲(chǔ)塊的容量,通過將目標(biāo)文件所包含的相鄰文件塊通過相鄰的細(xì)胞所連接的訪問通道存儲(chǔ)至所述采用整塊讀寫的非易失性存儲(chǔ)器,能夠有效提高數(shù)據(jù)處理效率。如圖3所示,某個(gè)文件a包括依次相鄰 的文件塊,分別對(duì)應(yīng)存儲(chǔ)于nand存儲(chǔ)塊block1、block2、block3、block4、block5……,其中相鄰文件塊是通過相鄰細(xì)胞的nand控制器連接nand訪問通道以存儲(chǔ)至相應(yīng)的nand芯片中的。這樣,如果存儲(chǔ)有相鄰文件塊的存儲(chǔ)塊之間有數(shù)據(jù)需要交換,則可以通過相鄰細(xì)胞間的通信通道進(jìn)行,而無需內(nèi)控cpu的參與,由此進(jìn)一步提高了數(shù)據(jù)處理效率。
然而,當(dāng)大量細(xì)胞(幾百個(gè)甚至幾千個(gè))集成在一個(gè)芯片上時(shí),圖2所示的這種擴(kuò)展細(xì)胞陣列計(jì)算系統(tǒng)存儲(chǔ)功能的架構(gòu)需要大量外部導(dǎo)線,雖然有例如過硅通孔(tsv,throughsiliconvias)這樣的現(xiàn)有技術(shù)可以支持這樣的產(chǎn)品,但這類技術(shù)工藝難度大,價(jià)格較高,因此需要更靈活的存儲(chǔ)接口。
基于上述考慮,本發(fā)明實(shí)施例提供一種集成存儲(chǔ)功能的細(xì)胞陣列計(jì)算系統(tǒng),如圖4所示,所述細(xì)胞陣列計(jì)算系統(tǒng)包括:內(nèi)控cpu、細(xì)胞陣列、細(xì)胞陣列總線、總線控制器、外部接口、存儲(chǔ)接口以及至少一個(gè)第一存儲(chǔ)器(圖4中未示出);所述第一存儲(chǔ)器為采用整塊讀寫的非易失性存儲(chǔ)器;所述存儲(chǔ)接口與所述細(xì)胞陣列總線、所述第一存儲(chǔ)器相連,用于對(duì)所述第一存儲(chǔ)器進(jìn)行數(shù)據(jù)存儲(chǔ)訪問控制;所述細(xì)胞陣列是由一個(gè)以上兼具計(jì)算和存儲(chǔ)功能的細(xì)胞組成的二維陣列或三維陣列,其中每一個(gè)細(xì)胞包括微處理器(mpu)和第二存儲(chǔ)器,所述第二存儲(chǔ)器為非易失隨機(jī)存儲(chǔ)器(圖4中以mram為例),用于所述微處理器計(jì)算時(shí)所涉及數(shù)據(jù)的隨機(jī)存取,還用于存儲(chǔ)軟件的指令代碼和需要永久保存的數(shù)據(jù);每一個(gè)細(xì)胞儲(chǔ)存各自在所述細(xì)胞陣列中的位置作為id以供細(xì)胞中的軟件或硬件讀?。凰黾?xì)胞陣列中的相鄰細(xì)胞之間有通信接口,能相互發(fā)送數(shù)據(jù);所述內(nèi)控cpu用于控制所述存儲(chǔ)接口以及通過所述細(xì)胞陣列總線與所述細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行通信;所述內(nèi)控cpu還用于管理存儲(chǔ)數(shù)據(jù),分配細(xì)胞中的資源完成計(jì)算任務(wù);所述總線控制器用于協(xié)調(diào)所述細(xì)胞陣列總線上各個(gè)主設(shè)備對(duì)所述細(xì)胞陣列總線的控制權(quán);所述細(xì)胞陣列總線上的主設(shè)備包括所述內(nèi)控cpu、所述存儲(chǔ)接口以及連接到所述外部接口的外部訪問設(shè)備。
需要說明的是,圖4所示的細(xì)胞陣列計(jì)算系統(tǒng)擴(kuò)展大規(guī)模數(shù)據(jù)存儲(chǔ)能力的方式是將存儲(chǔ)接口連接于細(xì)胞陣列總線,而非每一個(gè)細(xì)胞,如此便無需大量外部導(dǎo)線,工藝難度和價(jià)格均相對(duì)較低,這樣的存儲(chǔ)接口顯得更為靈活。
在本實(shí)施例中,所述非易失隨機(jī)存儲(chǔ)器是以mram為例進(jìn)行說明。在其他實(shí)施例中,隨著非易失隨機(jī)存儲(chǔ)技術(shù)的進(jìn)一步發(fā)展與成熟,所述非易失隨機(jī)存儲(chǔ)器也可以采用另外幾種有潛力的技術(shù)實(shí)現(xiàn),例如:相變隨機(jī)存儲(chǔ)器(pcram,phasechangerandomaccessmemory)、阻變式隨機(jī)存儲(chǔ)器(resistiverandomaccessmemory)、鐵電隨機(jī)存儲(chǔ)器(feram,ferroelectricrandomaccessmemory)、鐵電動(dòng)態(tài)隨機(jī)存儲(chǔ)器(fedram,ferroelectricdynamicrandomaccessmemory)等等。
mram是一種新的內(nèi)存和存儲(chǔ)技術(shù),可以像sram/dram一樣快速隨機(jī)讀寫,并且比dram快;還可以像閃存一樣在斷電后永久保留數(shù)據(jù),并且不像nand閃存,mram可以不限次地擦寫,使用壽命較長。此外,mram的經(jīng)濟(jì)性想當(dāng)?shù)睾?,單位容量占用的硅片面積比sram(通常作為cpu的緩存)有很大的優(yōu)勢(shì),有望接近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è)芯片上來,使新計(jì)算架構(gòu)的實(shí)現(xiàn)便能成為可能。
本實(shí)施例中,所述微處理器具有通常cpu的功能,還可以根據(jù)具體的應(yīng)用場(chǎng)景添加浮點(diǎn)計(jì)算處理器(fpu,floatpointunit)、圖像處理器等單元,因此,所述微處理器中可以集成有浮點(diǎn)計(jì)算處理器和圖像處理器中的至少一種。
在實(shí)際實(shí)施時(shí),所述內(nèi)控cpu、所述外部接口、所述存儲(chǔ)接口、所述細(xì)胞陣列、所述細(xì)胞陣列總線以及由所述細(xì)胞陣列內(nèi)各個(gè)能相互通信的相鄰細(xì)胞所形成的通信網(wǎng)絡(luò)可以集成于一個(gè)數(shù)據(jù)處理硅片中;每一個(gè)第一存儲(chǔ)器對(duì)應(yīng)為一個(gè)存儲(chǔ)介質(zhì)硅片;所述數(shù)據(jù)處理硅片和所有存儲(chǔ)介質(zhì)硅片既可以通過主板線路實(shí)現(xiàn)連接,也可以通過3d封裝技術(shù)被封裝在一個(gè)芯片內(nèi),即整個(gè)細(xì)胞陣列計(jì)算系統(tǒng)可以被封裝在一個(gè)芯片內(nèi)。
需要說明的是,雖然mram是非易失內(nèi)存,可以用來存儲(chǔ)數(shù)據(jù),但可見的將來,mram不是最經(jīng)濟(jì)的存儲(chǔ)海量數(shù)據(jù)的介質(zhì),因此本發(fā)明實(shí)施例中使用其他更經(jīng)濟(jì)的存儲(chǔ)介質(zhì)作為所述第一存儲(chǔ)器,比如nand閃存。當(dāng)所述第一存儲(chǔ)器的數(shù)量為一個(gè)以上時(shí),相應(yīng)地,所述細(xì)胞陣列計(jì)算系統(tǒng)中可以包括多個(gè)存儲(chǔ)介質(zhì)硅片。
所述存儲(chǔ)接口為連接存儲(chǔ)介質(zhì)的接口,如果所述第一存儲(chǔ)器具體為nand閃存,則所述存儲(chǔ)接口具體就是nand控制器,nand控制器可以有多個(gè)nand通道,即每一個(gè)所述第一存儲(chǔ)器可以支持一個(gè)或一個(gè)以上訪問通道,所述存儲(chǔ)接口通過連接訪問通道與相應(yīng)的第一存儲(chǔ)器相連。
在實(shí)際實(shí)施時(shí),以未來幾年半導(dǎo)體行業(yè)的發(fā)展速度估計(jì),所述數(shù)據(jù)處理硅片上可以集成一個(gè)512個(gè)細(xì)胞的陣列,總mram容量為128mb~512mb,內(nèi)控cpu則可以采用市場(chǎng)上流行的armcortexr系列,集成到芯片中的nand閃存可以超過1tb,可以使用64個(gè)通道。這樣的一個(gè)芯片具有非常強(qiáng)大存儲(chǔ)和信息處理能力。
此外,所述內(nèi)控cpu也可以有自己的專用內(nèi)存塊,仍連接在細(xì)胞陣列總線上,因此在本實(shí)施例中,所述細(xì)胞陣列計(jì)算系統(tǒng)還可以包括通過所述細(xì)胞陣列總線與所述內(nèi)控cpu相連的至少一個(gè)第三存儲(chǔ)器,用于所述內(nèi)控cpu計(jì)算時(shí)所涉及數(shù)據(jù)的隨機(jī)存取。實(shí)際實(shí)施時(shí),所述第三存儲(chǔ)器具體可以是隨機(jī)存儲(chǔ)器,例如mram、dram或sram等。因此,所述內(nèi)控cpu還可以連接更多的ram。
本實(shí)施例中,所述外部接口既可以為外部內(nèi)存接口,也可以是外部存儲(chǔ)接口。實(shí)際實(shí)施時(shí),所述外部接口可以使用計(jì)算機(jī)通用的存儲(chǔ)接口,比如pcie、sata,也可以使用計(jì)算機(jī)通用的內(nèi)存接口,比如ddr接口。如果選擇后者,則這個(gè)細(xì)胞陣列計(jì)算系統(tǒng)封裝成的芯片可以作為一個(gè)與內(nèi)存芯片管腳兼容的芯片對(duì)原有計(jì)算機(jī)中的內(nèi)存芯片進(jìn)行替換,因此可以具有良好的與現(xiàn)有設(shè)備的兼容性。
在實(shí)際實(shí)施時(shí),所述外部接口可以采用ddr4,芯片組可以dimm內(nèi)存條插入服務(wù)器的內(nèi)存槽中,每一個(gè)內(nèi)存條上有16個(gè)芯片,把系統(tǒng)的存儲(chǔ)帶寬擴(kuò)大了16倍。在原有的硬件上更換內(nèi)存條,使用新的軟件系統(tǒng),就可以把原來系統(tǒng)的性能提高百倍以上。
本實(shí)施例中,所述細(xì)胞陣列計(jì)算系統(tǒng)還可以包括與所述外部接口相連的所述外部訪問設(shè)備,用于通過控制所述細(xì)胞陣列總線實(shí)現(xiàn)對(duì)所述第二存儲(chǔ)器的數(shù)據(jù)直接讀寫,或者通過所述內(nèi)控cpu實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)訪問或數(shù)據(jù)處理請(qǐng)求。所述外部訪問設(shè)備可以包括主cpu、直接存儲(chǔ)訪問(dma)控制器和其他外部設(shè)備中的至少一種。 實(shí)際實(shí)施時(shí),在總線控制器的協(xié)調(diào)下,外部訪問設(shè)備可以通過外部接口控制細(xì)胞陣列總線,例如:當(dāng)外部接口為外部內(nèi)存接口,外部訪問設(shè)備為主cpu時(shí),則主cpu能夠通過該外部內(nèi)存接口直接讀寫細(xì)胞陣列中的mram;或者,外部訪問設(shè)備也可以通過外部接口向內(nèi)控cpu提出數(shù)據(jù)存儲(chǔ)訪問或數(shù)據(jù)處理請(qǐng)求,內(nèi)控cpu可以控制nand控制器以實(shí)現(xiàn)對(duì)nand閃存的存儲(chǔ)訪問,也可以分配細(xì)胞中的資源完成與數(shù)據(jù)處理請(qǐng)求相關(guān)的計(jì)算任務(wù),或是根據(jù)外部訪問設(shè)備提出的數(shù)據(jù)存儲(chǔ)訪問請(qǐng)求去訪問某個(gè)或某幾個(gè)細(xì)胞中存儲(chǔ)的數(shù)據(jù)。
如前所述,總線控制器負(fù)責(zé)協(xié)調(diào)細(xì)胞陣列總線上各個(gè)主設(shè)備對(duì)總線的控制權(quán)。本實(shí)施例中,內(nèi)控cpu、以及具備dma功能的nand控制器,都是細(xì)胞陣列總線上的主設(shè)備;當(dāng)外部訪問設(shè)備連接到所述外部接口時(shí),則外部訪問設(shè)備可以作為細(xì)胞陣列總線上的主設(shè)備,例如主cpu通過外部接口實(shí)現(xiàn)對(duì)細(xì)胞陣列總線的控制。
如前所述,如果外部接口為外部內(nèi)存接口,系統(tǒng)中的主cpu還可以通過該外部內(nèi)存接口直接讀寫細(xì)胞陣列中的mram,因此總線控制器還需要協(xié)調(diào)主cpu和內(nèi)控cpu對(duì)細(xì)胞陣列總線的控制。協(xié)調(diào)的最佳策略是:主cpu最高優(yōu)先,其次內(nèi)控cpu。因此,在主cpu和內(nèi)控cpu均存在對(duì)細(xì)胞陣列總線的需求時(shí),總線控制器將對(duì)細(xì)胞陣列總線的控制權(quán)優(yōu)先分配給主cpu。
本實(shí)施例中,每一個(gè)細(xì)胞儲(chǔ)存各自在細(xì)胞陣列中的位置作為id,所述位置可以采用平面直角坐標(biāo)系中第一象限的坐標(biāo)表示方式,若(x,y)表示某個(gè)細(xì)胞在細(xì)胞陣列中的位置,則(x,y)可以作為id存儲(chǔ)在該細(xì)胞中,細(xì)胞中的軟件和硬件可以讀取這個(gè)id,在具體的操作中使用。
本實(shí)施例中,所述內(nèi)控cpu通過所述細(xì)胞陣列總線與所述細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行的通信包括以下情況:
按地址讀寫所述細(xì)胞陣列中任一細(xì)胞的非易失隨機(jī)存儲(chǔ)器;
將數(shù)據(jù)廣播到所述細(xì)胞陣列中目標(biāo)區(qū)域內(nèi)每一個(gè)細(xì)胞的非易失隨機(jī)存儲(chǔ)器,并寫入該目標(biāo)區(qū)域內(nèi)每一個(gè)細(xì)胞的非易失隨機(jī)存儲(chǔ)器中相同的相對(duì)地址;
給所述細(xì)胞陣列中任一細(xì)胞的微處理器發(fā)送指令(包括開始、暫停)、發(fā)送數(shù)據(jù)或讀取狀態(tài);
給目標(biāo)區(qū)域內(nèi)所有細(xì)胞的微處理器廣播指令。
因此,內(nèi)控cpu通過所述細(xì)胞陣列總線與所述細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行的通信既可以是通過細(xì)胞陣列總線讀寫各個(gè)細(xì)胞的內(nèi)存,也可以是將數(shù)據(jù)或指令在細(xì)胞陣列中進(jìn)行廣播。
當(dāng)然,在其他實(shí)施例中,所述內(nèi)控cpu通過所述細(xì)胞陣列總線與所述細(xì)胞陣列中的每一個(gè)細(xì)胞進(jìn)行的通信也可以是上述情況中的一種或多種組合。
需要說明的是,本發(fā)明實(shí)施例中的“目標(biāo)區(qū)域”是指由所述內(nèi)控cpu或所述細(xì)胞陣列中的任一細(xì)胞選擇一個(gè)以上存在相鄰關(guān)系的細(xì)胞所構(gòu)成的區(qū)域,該區(qū)域內(nèi)的細(xì)胞是內(nèi)控cpu或細(xì)胞陣列中的任一細(xì)胞廣播/群發(fā)數(shù)據(jù)或指令的對(duì)象。本實(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ū)域等等。
此外,本發(fā)明實(shí)施例中“廣播”的概念不同于“群發(fā)”的概念,前者可以是發(fā) 一遍數(shù)據(jù)或指令使得所有的對(duì)象都能接收到,而后者則可以是分很多遍發(fā)給不同的對(duì)象。
除了通過內(nèi)控cpu對(duì)所述細(xì)胞陣列中任一細(xì)胞(包括細(xì)胞中的微處理器或非易失隨機(jī)存儲(chǔ)器)進(jìn)行廣播,在所述細(xì)胞陣列內(nèi),還有一個(gè)通信網(wǎng)絡(luò),該通信網(wǎng)絡(luò)能夠使得一個(gè)細(xì)胞可以在其mpu的控制下,向與它相鄰的細(xì)胞發(fā)送數(shù)據(jù)。如圖5所示,在一平面中,任一細(xì)胞可以與其上、下、左、右四個(gè)方向的相鄰細(xì)胞進(jìn)行通信。當(dāng)然,相鄰細(xì)胞之間通信方式的概念并不僅僅局限于“上、下、左、右四個(gè)方向”,在線路布局能夠支持的情況下,也可以是“上、下、左、右、左上、右上、左下、右下八個(gè)方向”,如圖6所示,任一細(xì)胞可以與其上、下、左、右、左上、右上、左下、右下八個(gè)方向的相鄰細(xì)胞進(jìn)行通信。
如圖7所示,在本實(shí)施例中,所述細(xì)胞陣列中的細(xì)胞具體還可以包括細(xì)胞內(nèi)總線控制器和細(xì)胞內(nèi)部總線,所述細(xì)胞內(nèi)總線控制器與所述細(xì)胞陣列總線、微處理器以及細(xì)胞內(nèi)部總線相連,所述細(xì)胞內(nèi)總線控制器用于識(shí)別所述內(nèi)控cpu與本細(xì)胞之間進(jìn)行的通信,連接所述微處理器以傳遞所述內(nèi)控cpu發(fā)送的指令或數(shù)據(jù)、狀態(tài)讀取,或者通過所述細(xì)胞內(nèi)部總線連接mram進(jìn)行數(shù)據(jù)的讀寫操作。
本領(lǐng)域技術(shù)人員知曉,一個(gè)比較簡單而性能很好的cpu,如armcotexm0,只有5萬個(gè)左右的mos管,即使適度增加fpu功能,也比頂級(jí)cpu的上億個(gè)mos管小得多,提升cpu性能帶來的面積(成本)增加是不成比例的。把一個(gè)大cpu用許多小cpu替換,在總成本一樣的情況下,總計(jì)算能力一定提高很多倍。然而傳統(tǒng)計(jì)算機(jī)架構(gòu)受制于通信瓶頸,使用大量cpu內(nèi)核帶來的實(shí)際性能提升非常有限。
而本發(fā)明技術(shù)方案提供的細(xì)胞陣列計(jì)算架構(gòu)通過數(shù)據(jù)廣播和內(nèi)部網(wǎng)絡(luò),解決了通信瓶頸的問題,從而提升計(jì)算系統(tǒng)的整體性能,并能使費(fèi)效比較佳。
初步的研究表明,如果使用類似于cortexm0的mpu,配合32kb的內(nèi)存,組成一個(gè)細(xì)胞。使用40納米的工藝,可以把3000個(gè)這樣的細(xì)胞做在一個(gè)芯片上,這是非常強(qiáng)大的計(jì)算能力。進(jìn)一步的研究表明,使用這種方法,可以在同樣的硅片面積上超越當(dāng)代頂級(jí)cpu的計(jì)算能力(一般用每秒浮點(diǎn)運(yùn)算次數(shù)(flops,floating-pointoperationspersecond)測(cè)量)。由于本發(fā)明技術(shù)方案的細(xì)胞陣列計(jì)算架構(gòu)不再面臨與內(nèi)存接口的瓶頸,在解決很多實(shí)際問題中,表現(xiàn)的會(huì)更好。
下面再介紹一下上述細(xì)胞陣列計(jì)算系統(tǒng)中的通信方法,包括:內(nèi)控cpu讀寫非易失隨機(jī)存儲(chǔ)器的操作、內(nèi)控cpu與微處理器之間的通信操作、內(nèi)控cpu的廣播操作以及細(xì)胞陣列內(nèi)相鄰細(xì)胞之間的通信操作;
所述內(nèi)控cpu讀寫非易失隨機(jī)存儲(chǔ)器的操作具體包括:所述細(xì)胞陣列中的任一細(xì)胞接收所述內(nèi)控cpu在所述細(xì)胞陣列總線上廣播的目標(biāo)地址,若判斷出所述目標(biāo)地址在本細(xì)胞中,則連接該細(xì)胞的非易失隨機(jī)存儲(chǔ)器以使所述內(nèi)控cpu進(jìn)行數(shù)據(jù)的讀寫操作。
所述內(nèi)控cpu與微處理器之間的通信操作具體包括:在系統(tǒng)地址空間中預(yù)留第一特殊地址段用于所述內(nèi)控cpu與微處理器之間的通信并存儲(chǔ)目標(biāo)細(xì)胞的id,若所述細(xì)胞陣列中任一細(xì)胞接收所述第一特殊地址段時(shí)識(shí)別出是與本細(xì)胞的微處理器的通信,則連接該細(xì)胞的微處理器完成后續(xù)的指令接收、數(shù)據(jù)接收和狀態(tài)讀取操作。
需要說明的是,所述系統(tǒng)地址空間并不僅僅局限于由細(xì)胞陣列的各個(gè)細(xì)胞中包 含的非易失隨機(jī)存儲(chǔ)器組成的地址空間總和,因?yàn)檫B接細(xì)胞陣列總線的存儲(chǔ)器可能不止是細(xì)胞陣列的各個(gè)細(xì)胞中包含的非易失隨機(jī)存儲(chǔ)器,完全可能還存在其他類型的存儲(chǔ)器與細(xì)胞陣列總線相連,供所述內(nèi)控cpu訪問。因此,所述內(nèi)控cpu需要根據(jù)細(xì)胞的id去標(biāo)識(shí)其準(zhǔn)備訪問的細(xì)胞(此時(shí)該細(xì)胞在本實(shí)施例中稱為“目標(biāo)細(xì)胞”)。
所述內(nèi)控cpu的廣播操作具體包括:在系統(tǒng)地址空間中預(yù)留第二特殊地址段用于所述內(nèi)控cpu廣播指令,所述第二特殊地址段存有能幫助確定所述細(xì)胞陣列中目標(biāo)區(qū)域的范圍的各個(gè)細(xì)胞的id,若所述細(xì)胞陣列中任一細(xì)胞接收所述第二特殊地址段后識(shí)別出本細(xì)胞在所述目標(biāo)區(qū)域中,則連接該細(xì)胞的微處理器以傳遞所述內(nèi)控cpu發(fā)送的指令或數(shù)據(jù)、狀態(tài)讀取,或者通過連接該細(xì)胞的非易失隨機(jī)存儲(chǔ)器進(jìn)行數(shù)據(jù)的讀寫操作。
下面以所述目標(biāo)區(qū)域具體是矩形區(qū)域?yàn)槔龑?duì)所述內(nèi)控cpu的廣播操作舉例說明。在系統(tǒng)地址空間中預(yù)留一段用做廣播指令,這個(gè)地址中的一段用于存儲(chǔ)目標(biāo)矩形區(qū)域中起點(diǎn)細(xì)胞的id。所述起點(diǎn)細(xì)胞是該目標(biāo)矩形區(qū)域中首個(gè)被內(nèi)控cpu訪問的細(xì)胞,該細(xì)胞中的總線控制器接收這個(gè)特殊地址后,接收后面的一個(gè)字(word)的數(shù)據(jù),這個(gè)數(shù)據(jù)包括目標(biāo)矩形區(qū)域中與起點(diǎn)細(xì)胞對(duì)角的細(xì)胞的id??偩€控制器判斷本細(xì)胞在該區(qū)域中,接收第二個(gè)字的數(shù)據(jù)。第二個(gè)字標(biāo)明是給mpu的指令或數(shù)據(jù),還是從非易失隨機(jī)存儲(chǔ)器中某一個(gè)相對(duì)地址開始寫入。如果是前者,連接mpu,如果是后者,連接非易失隨機(jī)存儲(chǔ)器完成后面的操作。
需要說明的是,在所述第二特殊地址段的存儲(chǔ)空間較為有限的情況下,其存儲(chǔ)的細(xì)胞id并不一定能完全據(jù)此確定目標(biāo)區(qū)域的范圍,此時(shí)接收所述第二特殊地址段之后,還需要接收后續(xù)的數(shù)據(jù)以配合所述第二特殊地址段中所存儲(chǔ)的細(xì)胞id共同確定目標(biāo)區(qū)域的范圍。
細(xì)胞陣列內(nèi)相鄰細(xì)胞之間的通信操作包括:所述細(xì)胞陣列中的任一細(xì)胞在其微處理器的控制下向相鄰細(xì)胞發(fā)送數(shù)據(jù)。
本實(shí)施例中,每個(gè)細(xì)胞還可以設(shè)置有一個(gè)細(xì)胞內(nèi)總線控制器,與細(xì)胞陣列總線連接。細(xì)胞內(nèi)部設(shè)置細(xì)胞內(nèi)部總線,所述非易失隨機(jī)存儲(chǔ)器是該細(xì)胞內(nèi)部總線的從設(shè)備(slave),所述細(xì)胞內(nèi)總線控制器和微處理器是該細(xì)胞內(nèi)部總線的主設(shè)備(master)。
上述細(xì)胞陣列計(jì)算系統(tǒng)中的通信方法中涉及的“所述細(xì)胞陣列中的任一細(xì)胞判斷所述目標(biāo)地址是否在本細(xì)胞中”,“識(shí)別是否與本細(xì)胞的微處理器的通信”,“識(shí)別本細(xì)胞是否在所述目標(biāo)區(qū)域中”,以及“連接非易失隨機(jī)存儲(chǔ)器或微處理器”均是由所述細(xì)胞內(nèi)總線控制器完成的,所述細(xì)胞內(nèi)總線控制器通過所述細(xì)胞內(nèi)部總線連接所述非易失隨機(jī)存儲(chǔ)器。
在具體實(shí)施時(shí),所述內(nèi)控cpu對(duì)于所述細(xì)胞陣列中任一細(xì)胞的非易失隨機(jī)存儲(chǔ)器的讀寫操作的優(yōu)先級(jí)高于該細(xì)胞內(nèi)的微處理器對(duì)于相應(yīng)的非易失隨機(jī)存儲(chǔ)器的讀寫操作。也就是說,如果某個(gè)細(xì)胞中的微處理器需要讀寫該細(xì)胞中的非易失隨機(jī)存儲(chǔ)器,須等內(nèi)控cpu對(duì)于該細(xì)胞的非易失隨機(jī)存儲(chǔ)器的讀寫操作完成之后才能進(jìn)行。
本實(shí)施例中,對(duì)于細(xì)胞陣列的內(nèi)部網(wǎng)絡(luò)的實(shí)施,不但可以發(fā)送數(shù)據(jù)到相鄰細(xì)胞,而且還把它擴(kuò)展到可以從一個(gè)細(xì)胞發(fā)送到任何一個(gè)細(xì)胞,即能夠?qū)崿F(xiàn)細(xì)胞陣列中的 細(xì)胞間通信。
具體地,所述細(xì)胞陣列計(jì)算系統(tǒng)的細(xì)胞陣列中的任意兩個(gè)細(xì)胞之間能在不依靠內(nèi)控cpu的情況下進(jìn)行通信,參與細(xì)胞間通信的細(xì)胞包含起點(diǎn)細(xì)胞、終點(diǎn)細(xì)胞和中轉(zhuǎn)細(xì)胞,所述起點(diǎn)細(xì)胞為向所述終點(diǎn)細(xì)胞發(fā)出數(shù)據(jù)的細(xì)胞,所述終點(diǎn)細(xì)胞為最終接收所述起點(diǎn)細(xì)胞所發(fā)數(shù)據(jù)的細(xì)胞,所述中轉(zhuǎn)細(xì)胞為沿細(xì)胞間通信路徑依次相鄰且通過所述通信接口中轉(zhuǎn)所述起點(diǎn)細(xì)胞所發(fā)數(shù)據(jù)的細(xì)胞,所述細(xì)胞間通信路徑是由所述起點(diǎn)細(xì)胞、中轉(zhuǎn)細(xì)胞和終點(diǎn)細(xì)胞所構(gòu)成的數(shù)據(jù)收發(fā)路徑。
通過細(xì)胞陣列中相鄰細(xì)胞之間的通信接口,實(shí)現(xiàn)相鄰細(xì)胞之間對(duì)于數(shù)據(jù)的多次中轉(zhuǎn),使細(xì)胞陣列中的任意兩個(gè)細(xì)胞之間不依靠內(nèi)控cpu便能進(jìn)行通信,提高了細(xì)胞間通信的效率,也降低了內(nèi)控cpu的處理負(fù)擔(dān),從而能進(jìn)一步提升計(jì)算系統(tǒng)的整體性能。
需要說明的是,所述起點(diǎn)細(xì)胞、終點(diǎn)細(xì)胞和中轉(zhuǎn)細(xì)胞均是相對(duì)于某一次細(xì)胞間通信過程而言的相對(duì)概念,因?yàn)槟硞€(gè)起點(diǎn)細(xì)胞完全也可能作為其他細(xì)胞間通信過程中的中轉(zhuǎn)細(xì)胞或終點(diǎn)細(xì)胞,某個(gè)終點(diǎn)細(xì)胞也可能作為其他細(xì)胞間通信過程中的中轉(zhuǎn)細(xì)胞或起點(diǎn)細(xì)胞。
在具體實(shí)施時(shí),所述細(xì)胞陣列中的細(xì)胞還可以包括與所述微處理器相連的網(wǎng)絡(luò)控制器,所述網(wǎng)絡(luò)控制器用于在細(xì)胞間通信時(shí)對(duì)發(fā)出的數(shù)據(jù)、中轉(zhuǎn)的數(shù)據(jù)或者最終接收的數(shù)據(jù)進(jìn)行收發(fā)控制,還用于向所述微處理器發(fā)送中斷信號(hào)。本實(shí)施例中,通過在每個(gè)細(xì)胞內(nèi)設(shè)置一個(gè)網(wǎng)絡(luò)控制器,以便在不干擾mpu的情況下快速地中轉(zhuǎn)數(shù)據(jù),由此降低細(xì)胞中mpu的處理負(fù)擔(dān)。在其他實(shí)施例中,也可以不設(shè)置所述網(wǎng)絡(luò)控制器,而是由mpu實(shí)現(xiàn)數(shù)據(jù)的中轉(zhuǎn)。
在本實(shí)施例中,“發(fā)出的數(shù)據(jù)”指的是所述起點(diǎn)細(xì)胞自身所發(fā)的數(shù)據(jù);“中轉(zhuǎn)的數(shù)據(jù)”指的是所述中轉(zhuǎn)細(xì)胞中轉(zhuǎn)所述起點(diǎn)細(xì)胞所發(fā)出的數(shù)據(jù),該數(shù)據(jù)并非由本細(xì)胞自身所需要發(fā)出的;“最終接收的數(shù)據(jù)”指的是終點(diǎn)細(xì)胞所接收的數(shù)據(jù),該數(shù)據(jù)在經(jīng)過多次中轉(zhuǎn)之后已到達(dá)目的地,將不再進(jìn)行中轉(zhuǎn)?!鞍l(fā)出的數(shù)據(jù)”、“中轉(zhuǎn)的數(shù)據(jù)”和“最終接收的數(shù)據(jù)”,就內(nèi)容而言可能為相同的數(shù)據(jù),只不過屬于不同通信階段的不同稱呼。
在具體實(shí)施時(shí),所述細(xì)胞陣列中的細(xì)胞還可以包括與所述網(wǎng)絡(luò)控制器相連的一組或一組以上先入先出隊(duì)列,各組先入先出隊(duì)列分別對(duì)應(yīng)一個(gè)與本細(xì)胞相鄰的細(xì)胞,每一組先入先出隊(duì)列包括輸入先入先出隊(duì)列和輸出先入先出隊(duì)列,所述輸入先入先出隊(duì)列用于存儲(chǔ)輸入本細(xì)胞進(jìn)行中轉(zhuǎn)的數(shù)據(jù)或最終接收的數(shù)據(jù),所述輸出先入先出隊(duì)列用于存儲(chǔ)從本細(xì)胞輸出的需進(jìn)行中轉(zhuǎn)的數(shù)據(jù)或本細(xì)胞向其他細(xì)胞發(fā)出的數(shù)據(jù)。
若在以圖5所示相鄰細(xì)胞之間通信方式為例的情況下,本實(shí)施例的細(xì)胞陣列中進(jìn)行細(xì)胞間通信的細(xì)胞的結(jié)構(gòu)如圖8所示,圖8中的網(wǎng)絡(luò)控制器分別與mpu以及4組fifo隊(duì)列相連,各組fifo隊(duì)列分別與本細(xì)胞在“二維平面的上、下、左、右四個(gè)方向”相鄰的細(xì)胞一一對(duì)應(yīng),具體實(shí)施時(shí),每兩個(gè)相鄰細(xì)胞之間的通信通道可以共用一組相應(yīng)的fifo隊(duì)列。每組fifo隊(duì)列均包含輸入fifo和輸出fifo,站在其中一個(gè)細(xì)胞的角度上而言,輸入fifo存放從其他相鄰細(xì)胞輸入的數(shù)據(jù),輸出fifo存放從本細(xì)胞向其他相鄰細(xì)胞輸出的數(shù)據(jù),相鄰細(xì)胞的輸出fifo對(duì)于本細(xì)胞來說屬于輸入fifo,本細(xì)胞的輸出fifo對(duì)于相鄰細(xì)胞來說屬于輸入fifo。
需要說明的是,圖8所示的細(xì)胞中對(duì)應(yīng)存在4組fifo隊(duì)列,若是位于矩形的細(xì)胞陣列的4個(gè)角的細(xì)胞,則該細(xì)胞僅有兩個(gè)相鄰細(xì)胞,此時(shí)該細(xì)胞對(duì)應(yīng)2組fifo隊(duì)列,若是位于矩形的細(xì)胞陣列的4條邊的細(xì)胞,則該細(xì)胞有三個(gè)相鄰細(xì)胞,此時(shí)該細(xì)胞對(duì)應(yīng)3組fifo隊(duì)列。
本實(shí)施例中,網(wǎng)絡(luò)控制器還和該細(xì)胞內(nèi)的mpu連接,給它發(fā)中斷信號(hào),如fifo空、fifo滿、新到數(shù)據(jù)、數(shù)據(jù)送出等等;mpu則可以通過網(wǎng)絡(luò)控制器發(fā)出數(shù)據(jù),發(fā)出的數(shù)據(jù)通常會(huì)先放入相應(yīng)的一個(gè)輸出fifo隊(duì)列中。
需要說明的是,圖8中的細(xì)胞結(jié)構(gòu)僅僅示出了與進(jìn)行細(xì)胞間通信相關(guān)的模塊,本領(lǐng)域技術(shù)人員能夠理解的是,圖8所示的細(xì)胞結(jié)構(gòu)完全可以與圖7所示的細(xì)胞結(jié)構(gòu)相結(jié)合。
此外,本實(shí)施例中采用fifo隊(duì)列存儲(chǔ)輸入和輸出某個(gè)細(xì)胞的數(shù)據(jù),如此能夠使細(xì)胞間通信過程中的數(shù)據(jù)中轉(zhuǎn)更有效率,減少mpu的處理負(fù)荷。在其他實(shí)施例中,輸入和輸出某個(gè)細(xì)胞的數(shù)據(jù)也可以通過寄存器實(shí)現(xiàn)。
本發(fā)明實(shí)施例提供的上述細(xì)胞陣列計(jì)算系統(tǒng)中細(xì)胞之間的通信方法,包括:所述細(xì)胞陣列中的起點(diǎn)細(xì)胞將向終點(diǎn)細(xì)胞發(fā)出的數(shù)據(jù),按選定的發(fā)送方向發(fā)送至與所述起點(diǎn)細(xì)胞相鄰的細(xì)胞;當(dāng)所述細(xì)胞陣列中的任一細(xì)胞接收到相鄰細(xì)胞發(fā)出的數(shù)據(jù)或中轉(zhuǎn)的數(shù)據(jù)時(shí),若根據(jù)接收到的數(shù)據(jù)中所標(biāo)明的所述終點(diǎn)細(xì)胞的id判斷出本細(xì)胞為終點(diǎn)細(xì)胞,則將接收到的數(shù)據(jù)存入本細(xì)胞的非易失隨機(jī)存儲(chǔ)器,或者通知本細(xì)胞的微處理器對(duì)接收的數(shù)據(jù)進(jìn)行處理,否則本細(xì)胞作為中轉(zhuǎn)細(xì)胞,在選定發(fā)送方向后將所述接收到的數(shù)據(jù)中轉(zhuǎn)給與本細(xì)胞相鄰的細(xì)胞。
在具體實(shí)施時(shí),細(xì)胞間通信過程中涉及的每一條數(shù)據(jù)都會(huì)含有起點(diǎn)細(xì)胞和終點(diǎn)細(xì)胞的id,任一細(xì)胞根據(jù)接收到的數(shù)據(jù)中所標(biāo)明的終點(diǎn)細(xì)胞的id便可以判斷該數(shù)據(jù)是發(fā)給本細(xì)胞的還是需要進(jìn)一步中轉(zhuǎn)給其他相鄰細(xì)胞的。一條數(shù)據(jù)通過相鄰細(xì)胞間的連接,經(jīng)過多次中轉(zhuǎn),到達(dá)終點(diǎn)細(xì)胞,若該終點(diǎn)細(xì)胞需要就起點(diǎn)細(xì)胞所發(fā)數(shù)據(jù)作出反饋,則可以根據(jù)起點(diǎn)細(xì)胞的id將反饋數(shù)據(jù)發(fā)向起點(diǎn)細(xì)胞,所述終點(diǎn)細(xì)胞以接收到的數(shù)據(jù)中所標(biāo)明的起點(diǎn)細(xì)胞的id作為終點(diǎn)細(xì)胞的id,在對(duì)接收到的數(shù)據(jù)進(jìn)行處理后所得到的反饋數(shù)據(jù)中予以標(biāo)明,此時(shí)該終點(diǎn)細(xì)胞成為新的一次細(xì)胞間通信時(shí)的起點(diǎn)細(xì)胞,原先的起點(diǎn)細(xì)胞則成為該次細(xì)胞間通信時(shí)的終點(diǎn)細(xì)胞。
具體實(shí)施時(shí),在標(biāo)明終點(diǎn)細(xì)胞的id的同時(shí),所述起點(diǎn)細(xì)胞向終點(diǎn)細(xì)胞發(fā)出的數(shù)據(jù)中還標(biāo)明所述終點(diǎn)細(xì)胞中要被訪問的地址或者mpu;所述將接收到的數(shù)據(jù)存入本細(xì)胞的非易失隨機(jī)存儲(chǔ)器,是所述終點(diǎn)細(xì)胞在識(shí)別出接收到的數(shù)據(jù)中所標(biāo)明的要被訪問的地址之后進(jìn)行的;所述通知本細(xì)胞的mpu對(duì)接收的數(shù)據(jù)進(jìn)行處理,是所述終點(diǎn)細(xì)胞在識(shí)別出接收到的數(shù)據(jù)中所標(biāo)明的mpu之后進(jìn)行的。
在實(shí)際實(shí)施時(shí),若終點(diǎn)細(xì)胞在識(shí)別出接收到的數(shù)據(jù)中所標(biāo)明的要被訪問的地址后,則接收的數(shù)據(jù)可以被該終點(diǎn)細(xì)胞內(nèi)的網(wǎng)絡(luò)控制器直接寫入該細(xì)胞的非易失隨機(jī)存儲(chǔ)器中的相應(yīng)地址,在這種情況下,細(xì)胞可以實(shí)現(xiàn)“繁殖”,一個(gè)細(xì)胞可以給另外一個(gè)細(xì)胞下載程序;若終點(diǎn)細(xì)胞在識(shí)別出接收到的數(shù)據(jù)中所標(biāo)明的mpu之后,接收的數(shù)據(jù)將交由終點(diǎn)細(xì)胞內(nèi)的mpu處理。
在本實(shí)施例中,由于細(xì)胞陣列中的細(xì)胞還包括與mpu相連的網(wǎng)絡(luò)控制器,因此所述起點(diǎn)細(xì)胞向終點(diǎn)細(xì)胞發(fā)出數(shù)據(jù)、所述細(xì)胞陣列中的任一細(xì)胞接收相鄰細(xì)胞發(fā)出的數(shù)據(jù)或中轉(zhuǎn)的數(shù)據(jù)并判斷本細(xì)胞為最終細(xì)胞或是中轉(zhuǎn)細(xì)胞、將接收到的數(shù)據(jù)存 入本細(xì)胞的非易失隨機(jī)存儲(chǔ)器或者通知本細(xì)胞的mpu對(duì)接收的數(shù)據(jù)進(jìn)行處理,均是在所述網(wǎng)絡(luò)控制器的控制下完成的。
具體實(shí)施時(shí),所述起點(diǎn)細(xì)胞向終點(diǎn)細(xì)胞發(fā)出的數(shù)據(jù)先由所述網(wǎng)絡(luò)控制器輸入所述輸出先入先出隊(duì)列,再由所述網(wǎng)絡(luò)控制器從所述輸出先入先出隊(duì)列輸出至與所述起點(diǎn)細(xì)胞相鄰的細(xì)胞;若所述細(xì)胞陣列中的任一細(xì)胞接收到相鄰細(xì)胞發(fā)出的數(shù)據(jù)或中轉(zhuǎn)的數(shù)據(jù),則將接收到的數(shù)據(jù)輸入所述輸入先入先出隊(duì)列,并在判斷出接收到的數(shù)據(jù)需要進(jìn)行中轉(zhuǎn)時(shí)再將該數(shù)據(jù)輸入所述輸出先入先出隊(duì)列。
此外,若所述網(wǎng)絡(luò)控制器判斷出所述輸入先入先出隊(duì)列或輸出先入先出隊(duì)列為空或者已滿,或接收到相鄰細(xì)胞發(fā)出或中轉(zhuǎn)的數(shù)據(jù),或向相鄰細(xì)胞發(fā)出數(shù)據(jù)或中轉(zhuǎn)數(shù)據(jù),則向所述微處理器發(fā)送中斷信號(hào)。
在具體實(shí)施時(shí),所述起點(diǎn)細(xì)胞或中轉(zhuǎn)細(xì)胞可以通過如下方式選定所述發(fā)送方向:若所述起點(diǎn)細(xì)胞或中轉(zhuǎn)細(xì)胞與所述終點(diǎn)細(xì)胞之間能形成一條直線的通信路徑,則所述發(fā)送方向?yàn)橛伤銎瘘c(diǎn)細(xì)胞或中轉(zhuǎn)細(xì)胞沿所述直線向所述終點(diǎn)細(xì)胞的方向,否則所述發(fā)送方向?yàn)橛伤銎瘘c(diǎn)細(xì)胞或中轉(zhuǎn)細(xì)胞向待選相鄰細(xì)胞的方向,所述待選相鄰細(xì)胞為與所述起點(diǎn)細(xì)胞或中轉(zhuǎn)細(xì)胞相鄰的細(xì)胞之中靠近所述終點(diǎn)細(xì)胞的細(xì)胞。當(dāng)然,所述待選相鄰細(xì)胞的數(shù)量有可能為兩個(gè),此時(shí)則選擇這兩個(gè)待選相鄰細(xì)胞中輸出數(shù)據(jù)的通信任務(wù)更少的細(xì)胞作為中轉(zhuǎn)細(xì)胞。
本實(shí)施例中,所述起點(diǎn)細(xì)胞或中轉(zhuǎn)細(xì)胞通過上述方式選定發(fā)送方向,實(shí)際上也可以認(rèn)為是細(xì)胞陣列中細(xì)胞間通信的路徑選擇過程??梢詤㈤唸D9,圖9中的每個(gè)矩形表示細(xì)胞陣列中的一個(gè)細(xì)胞,圖9中示出的所有細(xì)胞為整個(gè)細(xì)胞陣列中的一部分,假設(shè)相鄰細(xì)胞之間按圖5所示的通信方式進(jìn)行。
如果a點(diǎn)表示一個(gè)起點(diǎn)細(xì)胞,該起點(diǎn)細(xì)胞準(zhǔn)備向c點(diǎn)所在的終點(diǎn)細(xì)胞發(fā)出數(shù)據(jù),由于a點(diǎn)與c點(diǎn)之間顯然是能夠形成一條直線的通信路徑,則a點(diǎn)所在的細(xì)胞將數(shù)據(jù)發(fā)向與其相鄰的b點(diǎn)所在的細(xì)胞,同理,b點(diǎn)所在的細(xì)胞作為中轉(zhuǎn)細(xì)胞,繼續(xù)沿著a點(diǎn)與c點(diǎn)之間的直線向c點(diǎn)所在細(xì)胞的方向中轉(zhuǎn)數(shù)據(jù),在a點(diǎn)與c點(diǎn)之間形成的細(xì)胞間通信路徑上依次相鄰的細(xì)胞,將a點(diǎn)所在細(xì)胞發(fā)出的數(shù)據(jù)多次轉(zhuǎn)發(fā),直至傳送到c點(diǎn)所在細(xì)胞。
如果d點(diǎn)表示另一個(gè)起點(diǎn)細(xì)胞,該起點(diǎn)細(xì)胞準(zhǔn)備向g點(diǎn)所在的終點(diǎn)細(xì)胞發(fā)出數(shù)據(jù),由于d點(diǎn)與g點(diǎn)之間顯然是無法形成一條直線的通信路徑,則在與d點(diǎn)所在細(xì)胞相鄰的細(xì)胞之中,e點(diǎn)所在的細(xì)胞和f點(diǎn)所在的細(xì)胞顯然更靠近g點(diǎn)所在的終點(diǎn)細(xì)胞,則這兩個(gè)細(xì)胞屬于d點(diǎn)所在細(xì)胞的待選相鄰細(xì)胞,可以選擇其中輸出數(shù)據(jù)的通信任務(wù)更少的細(xì)胞作為中轉(zhuǎn)細(xì)胞,若這兩個(gè)細(xì)胞輸出數(shù)據(jù)的通信任務(wù)相同,則隨意選擇一個(gè)細(xì)胞作為中轉(zhuǎn)細(xì)胞。如圖9所示,選擇e點(diǎn)所在的細(xì)胞還是f點(diǎn)所在的細(xì)胞,將形成不同的細(xì)胞間通信路徑。
需要說明的是,本實(shí)施例中是以圖5所示的相鄰細(xì)胞之間的通信方式為例對(duì)細(xì)胞間通信的路徑選擇進(jìn)行說明的,本領(lǐng)域技術(shù)人員能夠理解的是,若是采用圖6所示的相鄰細(xì)胞之間的通信方式,則可供選擇的發(fā)送方向?qū)?huì)更多。
綜上,在實(shí)際實(shí)施時(shí),每一個(gè)發(fā)出或中轉(zhuǎn)數(shù)據(jù)的細(xì)胞,其網(wǎng)絡(luò)控制器都必須選擇一個(gè)相鄰的細(xì)胞作為下一站。當(dāng)起點(diǎn)和終點(diǎn)在一條直線上時(shí),合理的選擇一般只有一個(gè);其他情況下,有兩個(gè)同樣合理的選擇,網(wǎng)絡(luò)控制器將選擇一個(gè)交通相對(duì)不忙的鄰居。
如果某個(gè)輸入fifo隊(duì)列有數(shù)據(jù)進(jìn)入,則網(wǎng)絡(luò)控制器將首先檢查它:
如果終點(diǎn)是本細(xì)胞,那么:若終點(diǎn)是特定相對(duì)地址,由于網(wǎng)絡(luò)控制器具有直接內(nèi)存訪問(dma,directmemoryaccess)的能力,將把接收到的數(shù)據(jù)直接存入所述非易失隨機(jī)存儲(chǔ)器中的相應(yīng)地址,并用中斷通知mpu;若終點(diǎn)是mpu,則直接用中斷信號(hào)通知mpu進(jìn)行處理。
如果終點(diǎn)是其他細(xì)胞,或者本細(xì)胞的mpu向外發(fā)出數(shù)據(jù),那么:若終點(diǎn)與本細(xì)胞在一條直線上,則選擇正確的方向,向相鄰細(xì)胞發(fā)送數(shù)據(jù);其他情況下,有兩個(gè)可能的方向,選擇其中輸出fifo隊(duì)列更空閑的相鄰細(xì)胞發(fā)送,如果兩個(gè)待選相鄰細(xì)胞中的輸出fifo隊(duì)列的情況相同,則可以從中隨意選擇一個(gè)相鄰細(xì)胞發(fā)送。
在實(shí)際實(shí)施時(shí),當(dāng)所述細(xì)胞陣列中存在的數(shù)千個(gè)mpu一起計(jì)算時(shí),怎樣把各個(gè)細(xì)胞的輸出數(shù)據(jù)發(fā)送給所述內(nèi)控cpu就成為一個(gè)問題。一般來說,每個(gè)mpu可以把輸出數(shù)據(jù)存放在其所在細(xì)胞的非易失隨機(jī)存儲(chǔ)器中的約定地址,讓內(nèi)控cpu通過逐個(gè)輪詢每個(gè)mpu的方式進(jìn)行讀取。然而,這并不適用于所有問題,在有些問題中,當(dāng)細(xì)胞陣列中只有少數(shù)幾個(gè)細(xì)胞需要向內(nèi)控cpu輸出數(shù)據(jù)時(shí),那么內(nèi)控cpu逐個(gè)輪詢每個(gè)mpu效率太低。
因此,本發(fā)明實(shí)施例提供的細(xì)胞陣列計(jì)算系統(tǒng)還包括:所述細(xì)胞陣列中還設(shè)有至少一個(gè)專職輸出細(xì)胞,所述專職輸出細(xì)胞作為終點(diǎn)細(xì)胞接收并存儲(chǔ)其他細(xì)胞給所述內(nèi)控cpu的輸出數(shù)據(jù),并以中斷信號(hào)通知所述內(nèi)控cpu讀取所述輸出數(shù)據(jù)。
在具體實(shí)施時(shí),還可以在所述專職輸出細(xì)胞的非易失隨機(jī)存儲(chǔ)器中設(shè)置fifo隊(duì)列,其他細(xì)胞給所述內(nèi)控cpu的所有輸出數(shù)據(jù)存儲(chǔ)在該fifo隊(duì)列中,該fifo隊(duì)列應(yīng)當(dāng)具有足夠的存儲(chǔ)空間,有能力存儲(chǔ)其他細(xì)胞給所述內(nèi)控cpu的所有輸出數(shù)據(jù)。
實(shí)際實(shí)施時(shí),可以在細(xì)胞陣列中選擇一個(gè)或幾個(gè)細(xì)胞作為所述專職輸出細(xì)胞,一般可以選擇在位置上與內(nèi)控cpu之間進(jìn)行通信更為便捷的細(xì)胞。所述專職輸出細(xì)胞與所述內(nèi)控cpu之間設(shè)有中斷線,所述專職輸出細(xì)胞可以給內(nèi)控cpu發(fā)送中斷信號(hào),例如新到其他細(xì)胞的輸出數(shù)據(jù)、mram中設(shè)置的fifo隊(duì)列已滿、mram中設(shè)置的fifo已空等等。
基于上述設(shè)有專職輸出細(xì)胞的細(xì)胞陣列計(jì)算系統(tǒng),本發(fā)明實(shí)施例還提供一種細(xì)胞陣列計(jì)算系統(tǒng)中的通信方法,包括:所述專職輸出細(xì)胞接收并存儲(chǔ)其他細(xì)胞給所述內(nèi)控cpu的輸出數(shù)據(jù)之后,向所述內(nèi)控cpu發(fā)出通知讀取的中斷信號(hào);所述內(nèi)控cpu在接收到所述通知讀取的中斷信號(hào)后,從所述專職輸出細(xì)胞中讀取所述輸出數(shù)據(jù)。
具體實(shí)施時(shí),所述其他細(xì)胞可以通過如下方式將所述輸出數(shù)據(jù)發(fā)送至所述專職輸出細(xì)胞:所述其他細(xì)胞中的任一細(xì)胞作為起點(diǎn)細(xì)胞,將所述輸出數(shù)據(jù)按選定的發(fā)送方向發(fā)送至相鄰的細(xì)胞;當(dāng)所述細(xì)胞陣列中的任一細(xì)胞接收到相鄰細(xì)胞發(fā)送的所述輸出數(shù)據(jù)時(shí),若判斷出所述輸出數(shù)據(jù)中所標(biāo)明的終點(diǎn)細(xì)胞的id與本細(xì)胞的id一致,由于所述輸出數(shù)據(jù)中所標(biāo)明的終點(diǎn)細(xì)胞的id為所述專職輸出細(xì)胞的id,表明本細(xì)胞為所述專職輸出細(xì)胞,則將所述輸出數(shù)據(jù)存入本細(xì)胞的非易失隨機(jī)存儲(chǔ)器,否則本細(xì)胞作為中轉(zhuǎn)細(xì)胞,在選定發(fā)送方向后將所述輸出數(shù)據(jù)中轉(zhuǎn)給與本細(xì)胞相鄰的細(xì)胞。
所述其他細(xì)胞將所述輸出數(shù)據(jù)發(fā)送至所述專職輸出細(xì)胞的過程中,所述起點(diǎn)細(xì) 胞或中轉(zhuǎn)細(xì)胞可以通過如下方式選定所述發(fā)送方向:若所述起點(diǎn)細(xì)胞或中轉(zhuǎn)細(xì)胞與所述專職輸出細(xì)胞之間能形成一條直線的通信路徑,則所述發(fā)送方向?yàn)橛伤銎瘘c(diǎn)細(xì)胞或中轉(zhuǎn)細(xì)胞沿所述直線向所述專職輸出細(xì)胞的方向,否則所述發(fā)送方向?yàn)橛伤銎瘘c(diǎn)細(xì)胞或中轉(zhuǎn)細(xì)胞向待選相鄰細(xì)胞的方向,所述待選相鄰細(xì)胞為與所述起點(diǎn)細(xì)胞或中轉(zhuǎn)細(xì)胞相鄰的細(xì)胞之中靠近所述專職輸出細(xì)胞的細(xì)胞。
本發(fā)明實(shí)施例的專職輸出細(xì)胞的實(shí)施過程還可以參閱圖10。圖10示出了內(nèi)控cpu、細(xì)胞陣列以及細(xì)胞陣列總線,細(xì)胞陣列內(nèi)的一個(gè)個(gè)小方格簡單地表示出一個(gè)個(gè)細(xì)胞,其中j點(diǎn)所在的細(xì)胞(即粗線框小方格表示的細(xì)胞)為專職輸出細(xì)胞,圖10還進(jìn)一步示出了專職輸出細(xì)胞的結(jié)構(gòu),如圖10中虛線箭頭所示,可以看到,專職輸出細(xì)胞中的mram中設(shè)有存儲(chǔ)其他細(xì)胞給所述內(nèi)控cpu的所有輸出數(shù)據(jù)的fifo隊(duì)列。
假設(shè)h點(diǎn)所在的細(xì)胞和i點(diǎn)所在的細(xì)胞需要向內(nèi)控cpu提供輸出數(shù)據(jù),則可以通過細(xì)胞之間的通信方式將所述輸出數(shù)據(jù)發(fā)送至j點(diǎn)所在的細(xì)胞,h點(diǎn)至j點(diǎn)的細(xì)胞間通信路徑以及i點(diǎn)至j點(diǎn)的細(xì)胞間通信路徑,請(qǐng)參閱圖10。由于細(xì)胞間通信方式此前已有詳細(xì)描述,此處不再贅述。
j點(diǎn)所在的細(xì)胞接收到h點(diǎn)所在的細(xì)胞或i點(diǎn)所在的細(xì)胞發(fā)出的輸出數(shù)據(jù)后,則可以發(fā)送通知讀取的中斷信號(hào)給內(nèi)控cpu,內(nèi)控cpu接收到該通知讀取的中斷信號(hào)后,便可以通過細(xì)胞陣列總線從j點(diǎn)所在的細(xì)胞中讀取該輸出數(shù)據(jù)。
通過在細(xì)胞陣列中設(shè)置專職輸出細(xì)胞,以所述專職輸出細(xì)胞作為所述終點(diǎn)細(xì)胞接收并存儲(chǔ)其他細(xì)胞給內(nèi)控cpu的輸出數(shù)據(jù),并以中斷信號(hào)的方式通知所述內(nèi)控cpu讀取所述輸出數(shù)據(jù),如此能夠在只有少數(shù)幾個(gè)細(xì)胞需要向內(nèi)控cpu輸出數(shù)據(jù)時(shí)提高內(nèi)控cpu讀取輸出數(shù)據(jù)的效率。
下面再介紹本發(fā)明實(shí)施例提供的細(xì)胞陣列計(jì)算系統(tǒng)的另一種結(jié)構(gòu)。
圖4所示的細(xì)胞陣列計(jì)算系統(tǒng)如此設(shè)計(jì)存在的一個(gè)問題是,需要通過總線存儲(chǔ)信息分配到各個(gè)細(xì)胞,總線負(fù)載比較重。解決這個(gè)問題的一個(gè)方法是,把圖4所示的結(jié)構(gòu)作為細(xì)胞陣列的一個(gè)小區(qū),每個(gè)小區(qū)有自己的存儲(chǔ)接口(nand控制器)和總線控制器以及內(nèi)控cpu。每個(gè)小區(qū)的總線控制器負(fù)責(zé)協(xié)調(diào)外部和內(nèi)控cpu、nand控制器對(duì)小區(qū)內(nèi)部總線的需求,最佳策略依然是小區(qū)外部的主設(shè)備對(duì)于小區(qū)內(nèi)部總線的需求優(yōu)先。
如圖11所示,多個(gè)小區(qū)組成陣列,每個(gè)小區(qū)都連接在細(xì)胞陣列總線上,每個(gè)小區(qū)內(nèi)均采用如圖4所示的架構(gòu),如此形成“二級(jí)分區(qū)”的細(xì)胞陣列計(jì)算系統(tǒng),數(shù)據(jù)存儲(chǔ)訪問或數(shù)據(jù)處理請(qǐng)求可以被分散至各個(gè)小區(qū)進(jìn)行處理,而不會(huì)使所有需求均堆積于細(xì)胞陣列總線上,能夠克服“需要通過細(xì)胞陣列總線存儲(chǔ)信息分配到各個(gè)細(xì)胞,而使細(xì)胞陣列總線的負(fù)載過重”的問題。繼續(xù)參閱圖11,在本發(fā)明上一實(shí)施例基礎(chǔ)上,本發(fā)明另一實(shí)施例提供的細(xì)胞陣列計(jì)算系統(tǒng)中,所述細(xì)胞陣列劃分為一個(gè)以上小區(qū),所述小區(qū)為由一個(gè)以上細(xì)胞組成的二維或三維的子細(xì)胞陣列;所述細(xì)胞陣列總線包括小區(qū)內(nèi)部總線和小區(qū)外部總線,各小區(qū)均連接至所述小區(qū)外部總線,每個(gè)小區(qū)均包括連接于各自小區(qū)內(nèi)部總線的所述存儲(chǔ)接口、總線控制器以及內(nèi)控cpu(圖11中分別標(biāo)識(shí)為nand控制器、小區(qū)總線控制器以及小區(qū)內(nèi)控cpu),每個(gè)小區(qū)內(nèi)的各個(gè)細(xì)胞(細(xì)胞中的mpu和mram未標(biāo)示,僅以矩形表示)均連接于本小區(qū)內(nèi)的小區(qū)內(nèi)部總線上;每個(gè)小區(qū)的內(nèi)控cpu控制本小區(qū)的存儲(chǔ)接口以及通過本 小區(qū)的小區(qū)內(nèi)部總線與本小區(qū)內(nèi)的每一個(gè)細(xì)胞進(jìn)行通信,每個(gè)小區(qū)的內(nèi)控cpu還管理本小區(qū)的存儲(chǔ)數(shù)據(jù),分配本小區(qū)內(nèi)的細(xì)胞中的資源完成計(jì)算任務(wù);每個(gè)小區(qū)的總線控制器負(fù)責(zé)協(xié)調(diào)本小區(qū)外部和本小區(qū)內(nèi)的主設(shè)備對(duì)本小區(qū)的小區(qū)內(nèi)部總線的控制權(quán)。
具體實(shí)施時(shí),每個(gè)小區(qū)的總線控制器在本小區(qū)外部和本小區(qū)內(nèi)的主設(shè)備均存在對(duì)本小區(qū)的小區(qū)內(nèi)部總線的需求時(shí),將對(duì)本小區(qū)的小區(qū)內(nèi)部總線的控制權(quán)優(yōu)先分配給本小區(qū)外部的主設(shè)備。
需要說明的是,圖11中并未示出與細(xì)胞陣列總線相連的外部接口以及分別與各個(gè)nand控制器相連的nand閃存,本領(lǐng)域技術(shù)人員能夠理解,其具體實(shí)施完全可以參考圖4所示細(xì)胞陣列計(jì)算系統(tǒng)的實(shí)施方式。
“二級(jí)分區(qū)”的細(xì)胞陣列計(jì)算系統(tǒng)的具體實(shí)施可以參考圖4所示細(xì)胞陣列計(jì)算系統(tǒng)的相關(guān)實(shí)施內(nèi)容,此處不再贅述。
需要指出的是,本發(fā)明實(shí)施例以所述細(xì)胞陣列具體為二維細(xì)胞陣列為例對(duì)細(xì)胞陣列計(jì)算系統(tǒng)進(jìn)行說明的,在其他實(shí)施例中,所述細(xì)胞陣列也可以是三維細(xì)胞陣列,所述三維細(xì)胞陣列是由一個(gè)以上二維細(xì)胞陣列疊合而成,此時(shí)細(xì)胞陣列中“相鄰細(xì)胞”的概念不僅僅局限于二維平面,而是擴(kuò)展到三維空間。若是二維細(xì)胞陣列中采用如圖3所示的相鄰細(xì)胞之間的通信方式,則在空間直角坐標(biāo)系中,任一細(xì)胞在x軸正反方向、y軸正反方向和z軸正反方向這六個(gè)方向均具有相鄰的細(xì)胞。在實(shí)際實(shí)施時(shí),當(dāng)多片2d細(xì)胞陣列芯片可以疊合在一起組成3d芯片時(shí),通過tsv在相鄰的細(xì)胞間建立縱向聯(lián)系,即分別位于相鄰兩個(gè)二維細(xì)胞陣列的相鄰細(xì)胞之間通過tsv建立通信聯(lián)系。3d的細(xì)胞陣列芯片,在保持低功耗優(yōu)勢(shì)的同時(shí),加大了細(xì)胞陣列的規(guī)模,拓展了內(nèi)部通信的帶寬。
雖然本發(fā)明披露如上,但本發(fā)明并非限定于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動(dòng)與修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以權(quán)利要求所限定的范圍為準(zhǔn)。