本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理方法及數(shù)據(jù)處理系統(tǒng)。
背景技術(shù):
在設(shè)計(jì)以太網(wǎng)交換芯片時(shí),通常需要使用大容量的多端口存儲(chǔ)器,例如2讀1寫(同時(shí)支持2個(gè)讀端口和1個(gè)寫端口)存儲(chǔ)器、1讀2寫存儲(chǔ)器、2讀2寫存儲(chǔ)器或者更多端口的存儲(chǔ)器。
通常情況下,供應(yīng)商一般只提供1個(gè)讀或者寫存儲(chǔ)器、1讀1寫存儲(chǔ)器和2個(gè)讀或者寫存儲(chǔ)器,如此,設(shè)計(jì)者僅能基于上述基本存儲(chǔ)器單元構(gòu)建多個(gè)端口的存儲(chǔ)器。
報(bào)文緩存是一類特殊的多端口存儲(chǔ)器,其寫入是可控的,亦即,順序?qū)懭耄亲x出卻是隨機(jī)的。用戶的其中一種需求中,單向交換容量為2.4Tbps的以太網(wǎng)交換芯片,為了做到線速寫入和讀出,每個(gè)最小報(bào)文(64字節(jié))花費(fèi)的時(shí)間只有280ps,需要核心頻率高達(dá)3.571GHz,該種需求目前在現(xiàn)有的半導(dǎo)體工藝上無法實(shí)現(xiàn)。為了實(shí)現(xiàn)上述目標(biāo),通常的做法是,把整個(gè)芯片分割成多個(gè)獨(dú)立的報(bào)文轉(zhuǎn)發(fā)和處理單元并行進(jìn)行處理,報(bào)文轉(zhuǎn)發(fā)和處理單元的英文名稱為Slice,例如分割成4個(gè)Slice并行處理,每個(gè)Slice需要處理的數(shù)據(jù)帶寬就降低,對(duì)核心頻率的要求也會(huì)降低到原核心頻率的1/4。相應(yīng)的,實(shí)現(xiàn)該方案過程中,對(duì)于報(bào)文緩存需要同時(shí)提供8個(gè)端口供4個(gè)Slice訪問,其中4個(gè)是讀端口,4個(gè)是寫端口。
另外,多端口存儲(chǔ)器不僅要考慮到設(shè)計(jì)的移植性,還需要考慮到設(shè)計(jì)的可擴(kuò)展性,設(shè)計(jì)的存儲(chǔ)架構(gòu)能夠很方便的從4個(gè)slice擴(kuò)展到6個(gè),8個(gè)或者更多slice的架構(gòu)。
一般的,在SRAM的端口類型為1個(gè)讀或者寫,2個(gè)讀或者寫,以及1寫或者2讀的基礎(chǔ)上,通過定制設(shè)計(jì),例如:修改存儲(chǔ)單元的辦法,以及算法設(shè)計(jì)來增加SRAM的端口數(shù)量。
定制設(shè)計(jì)的周期一般比較長(zhǎng),需要做spice仿真,還要提供存儲(chǔ)器編譯器,以生成不同大小和類型的SRAM,對(duì)于供應(yīng)商來說,一般需要6~9個(gè)月的時(shí)間,才能提供一個(gè)新型的SRAM的類型,而且這樣的定制設(shè)計(jì)是與具體的工藝(例如GlobalFoundries 14nm, 28nm還是TSMC的28nm,16nm)強(qiáng)相關(guān)的,工藝一旦改變,定制設(shè)計(jì)的SRAM庫(kù)需要重新設(shè)計(jì)。
算法設(shè)計(jì)是基于廠家提供的現(xiàn)成的SRAM類型,通過算法來實(shí)現(xiàn)多端口存儲(chǔ)器,最大的好處是避免定制設(shè)計(jì),縮短時(shí)間,同時(shí)設(shè)計(jì)與廠家?guī)鞜o關(guān),可以很容易的在不同的廠家?guī)熘g移植。
如圖1所示,一種通過算法設(shè)計(jì)的方式,設(shè)計(jì)一個(gè)支持4個(gè)slice訪問的4讀4寫的存儲(chǔ)架構(gòu),該實(shí)施方式中,采用1R1W的SRAM2D設(shè)計(jì)大容量的2R2W的SRAM,邏輯上總共需要4塊65536深度2304寬度大小的SRAM2D,由于單個(gè)物理SRAM2D的容量無法滿足上述需求,需要把1塊65536深度2304寬度的邏輯SRAM切割成多塊物理SRAM,例如:可以切割成32塊16384深度288寬度的物理塊,這樣總共需要32x4=128塊物理塊;以上述2R2W SRAM為基本單元,搭建18M字節(jié)大小的4R4W SRAM。
結(jié)合圖2所示,邏輯上總共需要4塊65536深度2304寬度大小的2R2W的SRAM,即:需要SRAM2D(16384深度288寬度)的物理塊的個(gè)數(shù)為512塊;根據(jù)現(xiàn)有數(shù)據(jù)可知: 14nm工藝條件下,一塊16384深度288寬度大小SRAM2D物理塊的大小是0.4165平方厘米,功耗是0.108Watts(核心電壓=0.9V,結(jié)溫=125攝氏度,工藝條件是最快);上述采用廠家?guī)焯峁┑幕締卧猄RAM復(fù)制多份拷貝,構(gòu)建更多端口SRAM的方法,雖然設(shè)計(jì)原理上顯而易見,但是面積開銷非常大,以上述方案為例,單單18M字節(jié)4讀4寫SRAM的面積就占用了213.248平方厘米,總的功耗為55.296Watts,這里還沒有考慮到插入Decap和DFT以及布局布線的開銷,通過此種算法設(shè)計(jì)方式設(shè)計(jì)出的多端口SRAM,其占用面積以及總功耗均十分龐大;
同時(shí)這樣的設(shè)計(jì)擴(kuò)展性很差,如果要支持例如8個(gè)slice的架構(gòu),需要有16個(gè)端口,其中8個(gè)讀端口和8個(gè)寫端口,SRAM需要做成8讀8寫,SRAM所占用的面積和功耗是成倍的增長(zhǎng)。
如圖3A所示,現(xiàn)有技術(shù)中,另外一種算法設(shè)計(jì)方式,以2R2W的SRAM為基本單元,通過空間上的分割實(shí)現(xiàn)多個(gè)端口的報(bào)文緩存,以4個(gè)slices的報(bào)文緩存架構(gòu)為例,每個(gè)X?Y?是一個(gè)CCE,其英文全稱為Criss-Cross Element,中文譯文為:縱橫內(nèi)存單元;橫向的2個(gè)CCE構(gòu)成一個(gè)CCHG,所述CCHG的英文全稱為:Criss-Cross Horizontal Group,中文譯文為:縱橫內(nèi)存水平分組;縱向的2個(gè)CCE構(gòu)成一個(gè)CCVG,所述CCVG的英文全稱為:Criss-Cross Vertical Group,中文譯文為:縱橫內(nèi)存垂直分組。
現(xiàn)有算法設(shè)計(jì)中,每個(gè)CCE均為2R2W的SRAM邏輯塊,大小是4.5M字節(jié),總共有4塊這樣的SRAM邏輯塊,構(gòu)成4R4W SRAM,大小是18M字節(jié)(4.5Mx4=18M)。
其中,S0、S1、S2、S3代表4個(gè)slice,每個(gè)slice舉例來說包含有6個(gè)100GE端口,從slice0或者slice1輸入去往slice0或者slice1的報(bào)文存入X0Y0, 從slice0或者slice1輸入去往slice2或者slice3的報(bào)文存入X1Y0,從slice2或者slice3輸入去往slice0或者slice1的報(bào)文存入X0Y1, 從slice2或者slice3輸入去往slice2或者slice3的報(bào)文存入X1Y1;對(duì)于組播報(bào)文,從Slice0或者Slice1來的組播報(bào)文同時(shí)存入X0Y0和X1Y0中;進(jìn)一步的,讀取報(bào)文的時(shí)候,slice0或者slice1將從X0Y0或者X0Y1中讀取報(bào)文,slice2或者slice3將從X1Y0或者X1Y1中讀取報(bào)文。
結(jié)合圖3B所示,基于2R2W構(gòu)建8R8W存儲(chǔ)器時(shí),每個(gè)CCE同樣均為2R2W的SRAM邏輯塊,大小是4.5M字節(jié),總共有(8/2)2,共16塊這樣的SRAM邏輯塊,構(gòu)成8R8W SRAM,其寫入及讀出數(shù)據(jù)與上述4R4W存儲(chǔ)器相類似,在此不做詳細(xì)贅述。
結(jié)合圖4所示,現(xiàn)有技術(shù)中算法設(shè)計(jì)的每一個(gè)CCE的架構(gòu)圖,一個(gè)X?Y?邏輯上需要4塊16384深度2304寬度的SRAM,每一個(gè)邏輯上16384深度和2304寬度的SRAM可以切割成8塊16384深度和288寬度的物理SRAM2D;這樣一個(gè)18M字節(jié)的報(bào)文緩存總共需要4x4x8=128塊16384深度和288寬度的物理SRAM2D,總的面積為51.312平方厘米,總的功耗是13.824Watts(核心電壓=0.9V,結(jié)溫=125攝氏度,工藝條件是最快)
上述第二種算法設(shè)計(jì)的面積和功耗開銷只有上述第一種算法設(shè)計(jì)的1/4,然而,其擴(kuò)展性卻仍然得不到很好的滿足。
結(jié)合圖5所示,基于2R2W SRAM設(shè)計(jì)多端口的報(bào)文緩存存在可擴(kuò)展性問題,基于2R2W存儲(chǔ)器實(shí)現(xiàn)的CCE個(gè)數(shù)= (Slice個(gè)數(shù)/2) ^2,即CCE的個(gè)數(shù)是slice個(gè)數(shù)除以2再做2的平方得到,隨著slice的個(gè)數(shù)增加,CCE的個(gè)數(shù)將多到無法實(shí)現(xiàn),對(duì)于6個(gè)slice、8個(gè)slice以及更多的端口擴(kuò)展,CCE的個(gè)數(shù)逐級(jí)增長(zhǎng),導(dǎo)致系統(tǒng)難以負(fù)荷。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明的目的在于提供一種可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理方法及處理系統(tǒng)。
為實(shí)現(xiàn)上述發(fā)明目的之一,本發(fā)明一實(shí)施方式提供的可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理方法,所述多端口存儲(chǔ)器為2讀n寫的多端口存儲(chǔ)器單元,n為偶數(shù);
所述方法包括:
將2個(gè)2R1W存儲(chǔ)器并行拼裝為一個(gè)Bank存儲(chǔ)單元;
將n/2個(gè)Bank存儲(chǔ)單元在深度上拼裝為一個(gè)2讀n寫的多端口存儲(chǔ)器單元的硬件框架;
一個(gè)時(shí)鐘周期下,當(dāng)數(shù)據(jù)通過n個(gè)寫端口寫入到2讀n寫的多端口存儲(chǔ)器單元時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則將數(shù)據(jù)分別寫入不同的2R1W存儲(chǔ)器中;
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),將寫入數(shù)據(jù)的高低位分別寫入到一個(gè)Bank存儲(chǔ)單元的2個(gè)2R1W存儲(chǔ)器中。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述方法還包括:
一個(gè)時(shí)鐘周期下,當(dāng)數(shù)據(jù)從2讀n寫的多端口存儲(chǔ)器單元的其中2個(gè)讀端口讀出時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則選擇2讀n寫的多端口存儲(chǔ)器單元中匹配的讀端口直接讀出數(shù)據(jù);
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),選擇2讀n寫的多端口存儲(chǔ)器單元中匹配的讀端口直接讀出數(shù)據(jù)。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述方法還包括:
基于n/2個(gè)所述2讀n寫的多端口存儲(chǔ)器單元直接形成n讀n寫存儲(chǔ)器的硬件框架;
一個(gè)時(shí)鐘周期下,當(dāng)數(shù)據(jù)通過n個(gè)寫端口寫入到n讀n寫的多端口存儲(chǔ)器時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則根據(jù)數(shù)據(jù)的目的端口將數(shù)據(jù)分別寫入不同的2R1W存儲(chǔ)器中;
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),根據(jù)數(shù)據(jù)的目的端口將寫入數(shù)據(jù)的高低位分別寫入到一個(gè)Bank存儲(chǔ)單元的2個(gè)2R1W存儲(chǔ)器中。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述方法還包括:
一個(gè)時(shí)鐘周期下,當(dāng)數(shù)據(jù)從n讀n寫的多端口存儲(chǔ)器的其中2個(gè)讀端口讀出時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則選擇n讀n寫的多端口存儲(chǔ)器中匹配的讀端口直接讀出數(shù)據(jù);
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),選擇n讀n寫的多端口存儲(chǔ)器中匹配的讀端口直接讀出數(shù)據(jù)。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述方法還包括:
根據(jù)2R1W存儲(chǔ)器的深度和寬度選擇2m+1塊具有相同深度及寬度的SRAM2P存儲(chǔ)器構(gòu)建2R1W存儲(chǔ)器的硬件框架,m為正整數(shù);
每個(gè)SRAM2P存儲(chǔ)器均具有M個(gè)指針地址,其中,多個(gè)所述SRAM2P存儲(chǔ)器中的一個(gè)為輔助存儲(chǔ)器,其余均為主存儲(chǔ)器;
當(dāng)數(shù)據(jù)寫入2R1W存儲(chǔ)器和/或從所述2R1W存儲(chǔ)器讀出時(shí),根據(jù)數(shù)據(jù)的當(dāng)前指針位置,關(guān)聯(lián)主存儲(chǔ)器以及輔助存儲(chǔ)器中的數(shù)據(jù),對(duì)其做異或運(yùn)算,完成數(shù)據(jù)的寫入和讀出。
為了實(shí)現(xiàn)上述發(fā)明目的之一,本發(fā)明一實(shí)施方式提供一種可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理系統(tǒng),所述多端口存儲(chǔ)器為2讀n寫的多端口存儲(chǔ)器單元,n為偶數(shù);所述系統(tǒng)包括:數(shù)據(jù)構(gòu)建模塊,數(shù)據(jù)處理模塊;
所述數(shù)據(jù)構(gòu)建模塊具體用于:將2個(gè)2R1W存儲(chǔ)器并行拼裝為一個(gè)Bank存儲(chǔ)單元;
將n/2個(gè)Bank存儲(chǔ)單元在深度上拼裝為一個(gè)2讀n寫的多端口存儲(chǔ)器單元的硬件框架;
所述數(shù)據(jù)處理模塊具體用于:當(dāng)確定一個(gè)時(shí)鐘周期下,數(shù)據(jù)通過n個(gè)寫端口寫入到2讀n寫的多端口存儲(chǔ)器單元時(shí);
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則將數(shù)據(jù)分別寫入不同的2R1W存儲(chǔ)器中;
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),將寫入數(shù)據(jù)的高低位分別寫入到一個(gè)Bank存儲(chǔ)單元的2個(gè)2R1W存儲(chǔ)器中。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述數(shù)據(jù)處理模塊還用于:
當(dāng)確定一個(gè)時(shí)鐘周期下,數(shù)據(jù)從2讀n寫的多端口存儲(chǔ)器單元的其中2個(gè)讀端口讀出時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則選擇2讀n寫的多端口存儲(chǔ)器單元中匹配的讀端口直接讀出數(shù)據(jù);
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),選擇2讀n寫的多端口存儲(chǔ)器單元中匹配的讀端口直接讀出數(shù)據(jù)。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述數(shù)據(jù)構(gòu)建模塊還用于:基于n/2個(gè)所述2讀n寫的多端口存儲(chǔ)器單元直接形成n讀n寫存儲(chǔ)器的硬件框架;
所述數(shù)據(jù)處理模塊還用于:當(dāng)確定一個(gè)時(shí)鐘周期下,數(shù)據(jù)通過n個(gè)寫端口寫入到n讀n寫的多端口存儲(chǔ)器時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則根據(jù)數(shù)據(jù)的目的端口將數(shù)據(jù)分別寫入不同的2R1W存儲(chǔ)器中;
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),根據(jù)數(shù)據(jù)的目的端口將寫入數(shù)據(jù)的高低位分別寫入到一個(gè)Bank存儲(chǔ)單元的2個(gè)2R1W存儲(chǔ)器中。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述數(shù)據(jù)處理模塊還用于:
當(dāng)確定一個(gè)時(shí)鐘周期下,數(shù)據(jù)從n讀n寫的多端口存儲(chǔ)器的其中2個(gè)讀端口讀出時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則選擇n讀n寫的多端口存儲(chǔ)器中匹配的讀端口直接讀出數(shù)據(jù);
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),選擇n讀n寫的多端口存儲(chǔ)器中匹配的讀端口直接讀出數(shù)據(jù)。
作為本發(fā)明一實(shí)施方式的進(jìn)一步改進(jìn),所述數(shù)據(jù)構(gòu)建模塊還用于:根據(jù)2R1W存儲(chǔ)器的深度和寬度選擇2m+1塊具有相同深度及寬度的SRAM2P存儲(chǔ)器構(gòu)建2R1W存儲(chǔ)器的硬件框架,m為正整數(shù);
每個(gè)SRAM2P存儲(chǔ)器均具有M個(gè)指針地址,其中,多個(gè)所述SRAM2P存儲(chǔ)器中的一個(gè)為輔助存儲(chǔ)器,其余均為主存儲(chǔ)器;
當(dāng)數(shù)據(jù)寫入2R1W存儲(chǔ)器和/或從所述2R1W存儲(chǔ)器讀出時(shí),所述數(shù)據(jù)處理模塊還用于:根據(jù)數(shù)據(jù)的當(dāng)前指針位置,關(guān)聯(lián)主存儲(chǔ)器以及輔助存儲(chǔ)器中的數(shù)據(jù),對(duì)其做異或運(yùn)算,完成數(shù)據(jù)的寫入和讀出。
與現(xiàn)有技術(shù)相比,本發(fā)明的可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理方法及處理系統(tǒng),基于現(xiàn)有的SRAM類型,通過算法的方式搭建更多端口的SRAM,僅僅用最小的代價(jià)便可以最大限度的支持多端口SRAM;其實(shí)現(xiàn)過程中,避免采用復(fù)雜的控制邏輯和額外的多端口SRAM或者寄存器陣列資源,利用報(bào)文緩存的特殊性,通過空間分割和時(shí)間分割,僅需要簡(jiǎn)單的異或運(yùn)算就可實(shí)現(xiàn)多個(gè)端口的報(bào)文緩存,同時(shí),通過本發(fā)明實(shí)現(xiàn)的多端口存儲(chǔ)器,其所有緩存資源可以在任意輸入端口之間實(shí)現(xiàn)完全共享,邏輯上采用更少的CCE即可以構(gòu)建多端口存儲(chǔ)器,容易實(shí)現(xiàn)端口的擴(kuò)展,本發(fā)明具有更低的功耗,更快的處理速度,以及節(jié)省更多的資源或面積,其報(bào)文緩存架構(gòu)具有更好的擴(kuò)展性,實(shí)現(xiàn)簡(jiǎn)單,節(jié)約人力及物質(zhì)成本。
附圖說明
圖1是現(xiàn)有技術(shù)中,基于1R1W存儲(chǔ)器采用算法設(shè)計(jì)實(shí)現(xiàn)的2R2W存儲(chǔ)器的報(bào)文緩存邏輯單元示意圖;
圖2是現(xiàn)有技術(shù)中,基于2R2W存儲(chǔ)器采用算法設(shè)計(jì)實(shí)現(xiàn)的4R4W存儲(chǔ)器的報(bào)文緩存邏輯單元示意圖;
圖3A是現(xiàn)有技術(shù)中,基于2R2W存儲(chǔ)器采用另一種算法設(shè)計(jì)實(shí)現(xiàn)的4R4W存儲(chǔ)器的報(bào)文緩存架構(gòu)示意圖;
圖3B是現(xiàn)有技術(shù)中,基于2R2W存儲(chǔ)器采用另一種算法設(shè)計(jì)實(shí)現(xiàn)的8R8W存儲(chǔ)器的報(bào)文緩存架構(gòu)示意圖;
圖4是圖3中其中一個(gè)CCE的報(bào)文緩存邏輯單元示意圖;
圖5是現(xiàn)有技術(shù)中,基于2R2W存儲(chǔ)器采用算法設(shè)計(jì)擴(kuò)展存儲(chǔ)器端口時(shí),2R2W存儲(chǔ)器與CCE數(shù)量對(duì)比關(guān)系示意圖;
圖6是本發(fā)明一實(shí)施方式中2讀n寫的可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理方法的流程示意圖;
圖7是本發(fā)明第一實(shí)施方式中,通過定制設(shè)計(jì)形成的2R1W存儲(chǔ)器的數(shù)字電路結(jié)構(gòu)示意圖;
圖8是本發(fā)明第二實(shí)施方式的,通過定制設(shè)計(jì)形成的2R1W存儲(chǔ)器讀寫分時(shí)操作示意圖;
圖9是本發(fā)明第三實(shí)施方式中,采用算法設(shè)計(jì)形成的2R1W存儲(chǔ)器的報(bào)文緩存邏輯單元示意圖;
圖10a是本發(fā)明第四實(shí)施方式中,采用算法設(shè)計(jì)形成的2R1W存儲(chǔ)器的報(bào)文緩存邏輯單元示意圖;
圖10b是對(duì)應(yīng)圖10a存儲(chǔ)器塊編號(hào)映射表的結(jié)構(gòu)示意圖;
圖11是本發(fā)明第五實(shí)施方式中,提供的2R1W存儲(chǔ)器的數(shù)據(jù)處理方法的流程示意圖;
圖12是本發(fā)明第五實(shí)施方式中,提供的2R1W存儲(chǔ)器的的報(bào)文緩存邏輯單元示意圖;
圖13是本發(fā)明是一具體實(shí)施方式中,2個(gè)Bank的報(bào)文緩存架構(gòu)示意圖;
圖14是本發(fā)明一實(shí)施方式中n讀n寫的可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理方法的流程示意圖;
圖15A是本發(fā)明是一具體實(shí)施方式中,4R4W存儲(chǔ)器的報(bào)文緩存架構(gòu)示意圖;
圖15B是本發(fā)明是一具體實(shí)施方式中,8R8W存儲(chǔ)器的報(bào)文緩存架構(gòu)示意圖;
圖16是本發(fā)明是具體實(shí)施方式中,基于2讀n寫的存儲(chǔ)器擴(kuò)展存儲(chǔ)器端口時(shí),2讀n寫存儲(chǔ)器與CCE數(shù)量對(duì)比關(guān)系示意圖;
圖17是本發(fā)明一實(shí)施方式中提供的可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理系統(tǒng)的模塊示意圖。
具體實(shí)施方式
以下將結(jié)合附圖所示的各實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)描述。但這些實(shí)施方式并不限制本發(fā)明,本領(lǐng)域的普通技術(shù)人員根據(jù)這些實(shí)施方式所做出的結(jié)構(gòu)、方法、或功能上的變換均包含在本發(fā)明的保護(hù)范圍內(nèi)。
結(jié)合圖6所示,本發(fā)明一實(shí)施方式提供的可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理方法,該實(shí)施方式中,所述多端口存儲(chǔ)器為2讀n寫的多端口存儲(chǔ)器單元,n為偶數(shù)。
所述方法包括:
將2個(gè)2R1W存儲(chǔ)器并行拼裝為一個(gè)Bank存儲(chǔ)單元;
將n/2個(gè)Bank存儲(chǔ)單元在深度上拼裝為一個(gè)2讀n寫的多端口存儲(chǔ)器單元的硬件框架;
一個(gè)時(shí)鐘周期下,當(dāng)數(shù)據(jù)通過n個(gè)寫端口寫入到2讀n寫的多端口存儲(chǔ)器單元時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則將數(shù)據(jù)分別寫入不同的2R1W存儲(chǔ)器中;
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),將寫入數(shù)據(jù)的高低位分別寫入到一個(gè)Bank存儲(chǔ)單元的2個(gè)2R1W存儲(chǔ)器中。
一個(gè)時(shí)鐘周期下,當(dāng)數(shù)據(jù)從2讀n寫的多端口存儲(chǔ)器單元的其中2個(gè)讀端口讀出時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則選擇2讀n寫的多端口存儲(chǔ)器單元中匹配的讀端口直接讀出數(shù)據(jù);
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),選擇2讀n寫的多端口存儲(chǔ)器單元中匹配的讀端口直接讀出數(shù)據(jù)。
本發(fā)明優(yōu)選實(shí)施方式中,建立所述2R1W存儲(chǔ)器有五種方法。
如圖7所示,第一種實(shí)施方式中,在6T SRAM的基礎(chǔ),把一根字線分割成左右兩個(gè),這樣可以做成2個(gè)讀端口同時(shí)操作或者1個(gè)寫端口,這樣從左邊MOS管讀出的數(shù)據(jù)和右邊MOS管讀出的數(shù)據(jù)可以同時(shí)進(jìn)行,需要注意的是,右邊MOS管讀出的數(shù)據(jù)需要反相之后才可以用,同時(shí)為了不影響數(shù)據(jù)讀取的速度,讀出的感應(yīng)放大器需要用偽差分放大器。這樣,6T SRAM面積不變,唯一的代價(jià)是增加一倍的字線,從而保證總體的存儲(chǔ)密度基本不變。
如圖8所示,第二種實(shí)施方式中,通過定制設(shè)計(jì)形成的2R1W存儲(chǔ)器讀寫操作流程示意圖;
通過定制設(shè)計(jì)可以增加SRAM的端口,把一個(gè)字線切割成2個(gè)字線,將讀端口增加到2個(gè);還可以通過分時(shí)操作的技術(shù),即讀操作在時(shí)鐘的上升沿進(jìn)行,而寫操作在時(shí)鐘的下降沿完成,這樣也可以把一個(gè)基本的1讀或者1寫的SRAM擴(kuò)展成1讀和1寫的SRAM類型,即1個(gè)讀和1個(gè)寫操作可以同時(shí)進(jìn)行,存儲(chǔ)密度基本不變。
如圖9所示,第三種實(shí)施方式中本發(fā)明一實(shí)施方式中采用算法設(shè)計(jì)形成的2R1W存儲(chǔ)器讀寫操作流程示意圖;
本實(shí)施方式中,以SRAM2P為基礎(chǔ)構(gòu)建2R1W的SRAM為例,所述SRAM2P是一種能夠支持1讀和1讀/寫的SRAM類型,即可以對(duì)SRAM2P同時(shí)進(jìn)行2個(gè)讀操作,或者1個(gè)讀和1個(gè)寫操作。
本實(shí)施方式中,通過復(fù)制一份SRAM以SRAM2P為基礎(chǔ)構(gòu)建2R1W的SRAM;該示例中,右邊的SRAM2P_1是左邊SRAM2P_0的拷貝,具體操作的時(shí)候,把兩塊SRAM2P作為1讀和1寫存儲(chǔ)器來使用;其中,寫入數(shù)據(jù)時(shí),同時(shí)往左右兩個(gè)SRAM2P寫入數(shù)據(jù),讀出數(shù)據(jù)時(shí),A固定從SRAM2P_0讀取,數(shù)據(jù)B固定從SRAM2P_1讀取,這樣就可以實(shí)現(xiàn)1個(gè)寫操作和2個(gè)讀操作并發(fā)進(jìn)行。
如圖10a、10b所示,第四種實(shí)施方式中,為另一實(shí)施方式中采用算法設(shè)計(jì)形成的2R1W存儲(chǔ)器讀寫操作流程示意圖;
該實(shí)施方式中,把邏輯上一整塊的16384深度的SRAM分割成邏輯上4塊4096深度的SRAM2P,編號(hào)依次為為0、1、2、3,再額外增加一塊4096深度的SRAM,編號(hào)為4,作為解決讀寫沖突用,對(duì)于讀數(shù)據(jù)A和讀數(shù)據(jù)B,永遠(yuǎn)保證這2個(gè)讀操作可以并發(fā)進(jìn)行,當(dāng)2個(gè)讀操作的地址是處于不同的SRAM2P中時(shí),因?yàn)槿魏我粋€(gè)SRAM2P都可以配置成1R1W類型,所以讀寫不會(huì)有沖突;當(dāng)2個(gè)讀操作的地址處于同一塊SRAM2P中時(shí),例如:均處于SRAM2P_0中,由于同一個(gè)SRAM2P最多只能提供2個(gè)端口同時(shí)操作,此時(shí),其端口被2個(gè)讀操作占用,如果恰好有一個(gè)寫操作要寫入SRAM2P_0,那么這時(shí)就把這個(gè)數(shù)據(jù)寫入存儲(chǔ)器第4塊SRAM2P_4中。
該種實(shí)施方式中,需要有一個(gè)存儲(chǔ)器塊映射表記錄哪一個(gè)存儲(chǔ)器塊存放有效數(shù)據(jù),如圖10b所示,存儲(chǔ)器塊映射表的深度和一個(gè)存儲(chǔ)器塊的深度相同,即都是4096個(gè)深度,每一個(gè)條目中在初始化后依次存放每個(gè)存儲(chǔ)器塊的編號(hào),從0到4,圖10a示例中,由于SRAM2P_0在寫入數(shù)據(jù)的時(shí)候發(fā)生讀寫沖突,數(shù)據(jù)實(shí)際上是寫入到SRAM2P_4中,此時(shí),讀操作同時(shí)會(huì)讀取存儲(chǔ)器映射表中對(duì)應(yīng)的內(nèi)容,原始內(nèi)容為{0, 1, 2, 3, 4},修改之后變成{4, 1, 2, 3, 0},第一個(gè)塊編號(hào)和第4個(gè)塊編號(hào)對(duì)調(diào),表示數(shù)據(jù)實(shí)際寫入到SRAM2P_4中,同時(shí)SRAM2P_0變成了備份條目。
當(dāng)讀取數(shù)據(jù)的時(shí)候,需要首先讀對(duì)應(yīng)地址的存儲(chǔ)器塊編號(hào)映射表,查看有效數(shù)據(jù)存放在哪一個(gè)存儲(chǔ)器塊中,例如當(dāng)要讀取地址5123的數(shù)據(jù),那么首先讀取存儲(chǔ)塊編號(hào)映射表地址1027(5123-4096=1027)存放的內(nèi)容,根據(jù)第二列的數(shù)字編號(hào)去讀取對(duì)應(yīng)存儲(chǔ)塊的地址1027的內(nèi)容。
對(duì)于寫數(shù)據(jù)操作,需要存儲(chǔ)器塊編號(hào)映射表提供1讀和1寫端口,對(duì)于2個(gè)讀數(shù)據(jù)操作,需要存儲(chǔ)器塊編號(hào)映射表提供2個(gè)讀端口,這樣總共需要存儲(chǔ)器塊編號(hào)映射表提供3個(gè)讀端口和1個(gè)寫端口,而且這4個(gè)訪問操作必須是同時(shí)進(jìn)行。
如圖11所示,第五種實(shí)施方式,即本發(fā)明的優(yōu)選實(shí)施方式中,2R1W存儲(chǔ)器的構(gòu)建方法包括:
根據(jù)所述2R1W存儲(chǔ)器的深度和寬度選擇2m+1塊具有相同深度及寬度的SRAM2P存儲(chǔ)器構(gòu)建2R1W存儲(chǔ)器的硬件框架,m為正整數(shù);
多個(gè)所述SRAM2P存儲(chǔ)器按照排列順序依次為SRAM2P(0)、SRAM2P(1)……、SRAM2P(2m),每個(gè)SRAM2P存儲(chǔ)器均具有M個(gè)指針地址,其中,多個(gè)所述SRAM2P存儲(chǔ)器中的一個(gè)為輔助存儲(chǔ)器,其余均為主存儲(chǔ)器;
該發(fā)明的優(yōu)選實(shí)施方式中,每塊SRAM2P存儲(chǔ)器的深度與寬度的乘積=(2R1W存儲(chǔ)器的深度與寬度乘積)/2m。
以下為了描述方便,對(duì)m取值為2、2R1W存儲(chǔ)器為16384深度、128寬度的SRAM存儲(chǔ)器進(jìn)行詳細(xì)描述。
則在該具體示例中,多個(gè)所述SRAM2P存儲(chǔ)器按照排列順序依次為SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P(3)、SRAM2P(4),其中,SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P(3)為主存儲(chǔ)器,SRAM2P(4)為輔助存儲(chǔ)器,每個(gè)SRAM2P存儲(chǔ)器的深度和寬度分別為4096和128,相應(yīng)的,每個(gè)SRAM2P存儲(chǔ)器均具有4096個(gè)指針地址;如果對(duì)每個(gè)SRAM2P存儲(chǔ)器的指針地址均獨(dú)立標(biāo)識(shí),則每個(gè)SRAM2P存儲(chǔ)器的指針地址均為0~4095,若將全部的主存儲(chǔ)器的地址依次排列,則全部的指針地址范圍為: 0 ~ 16383。該示例中,SRAM2P(4)用于解決端口沖突,且在該實(shí)施方式中,無需增加存儲(chǔ)器塊編號(hào)映射表即可以滿足需求。
進(jìn)一步的,在上述硬件框架基礎(chǔ)上,所述方法還包括:
當(dāng)數(shù)據(jù)寫入2R1W存儲(chǔ)器和/或從所述2R1W存儲(chǔ)器讀出時(shí),根據(jù)數(shù)據(jù)的當(dāng)前指針位置,關(guān)聯(lián)主存儲(chǔ)器以及輔助存儲(chǔ)器中的數(shù)據(jù),對(duì)其做異或運(yùn)算,完成數(shù)據(jù)的寫入和讀出。
本發(fā)明優(yōu)選實(shí)施方式中,其數(shù)據(jù)寫入過程如下:
獲取當(dāng)前數(shù)據(jù)的寫入地址為W(x,y),x表示寫入數(shù)據(jù)所處于的SRAM2P存儲(chǔ)器的排列位置,0≤x<2m,y表示寫入數(shù)據(jù)所處于的SRAM2P存儲(chǔ)器中的具體的指針地址,0≤y≤M;
獲取與寫入地址具有相同指針地址的其余主存儲(chǔ)器中的數(shù)據(jù),將其同時(shí)與當(dāng)前寫入數(shù)據(jù)做異或運(yùn)算,并將異或運(yùn)算結(jié)果寫入到輔助存儲(chǔ)器的相同指針地址中。
結(jié)合圖12所示,本發(fā)明一具體示例中,本發(fā)明一具體示例中,將數(shù)據(jù)128比特全“1”寫入到SRAM2P(0)中的指針地址“5”,即當(dāng)前數(shù)據(jù)的寫入地址為W(0,5),在寫入數(shù)據(jù)過程中,除了直接將數(shù)據(jù)128比特全“1”寫入到指定位置SRAM2P(0)中的指針地址“5”外,同時(shí),需要讀取其余主存儲(chǔ)器在相同指針地址的數(shù)據(jù),假設(shè)從SRAM2P(1)中的指針地址“5”讀出的數(shù)據(jù)為128比特全“1”,從SRAM2P(2)中的指針地址“5”讀出的數(shù)據(jù)為128比特全“0”,從SRAM2P(3)中的指針地址“5”讀出的數(shù)據(jù)為128比特全“1”,則將數(shù)據(jù)128比特全“1”、128比特全“0”、 128比特全“1”、 128比特全“1”做異或運(yùn)算,并將其異或運(yùn)算的結(jié)果“1”同時(shí)寫入到SRAM2P(4)中的指針地址“5”。如此,以保證2R1W存儲(chǔ)器的2個(gè)讀端口和1個(gè)寫端口同時(shí)操作。
進(jìn)一步的,本發(fā)明優(yōu)選實(shí)施方式中,其數(shù)據(jù)讀出過程如下:
若當(dāng)前兩個(gè)讀出數(shù)據(jù)的讀出地址處于相同的SRAM2P存儲(chǔ)器中,則
分別獲取兩個(gè)讀出數(shù)據(jù)的讀出地址為R1(x1,y1),R2(x2,y2),x1、y1均表示讀出數(shù)據(jù)所處于的SRAM2P存儲(chǔ)器的排列位置,0≤x1<2m,0≤x2<2m,y1、y2均表示讀出數(shù)據(jù)所處于的SRAM2P存儲(chǔ)器中的具體的指針地址,0≤y1≤M,0≤y2≤M;
任選其中一個(gè)讀出地址R1(x1,y1)中存儲(chǔ)的讀出數(shù)據(jù),從當(dāng)前的指定讀出地址中直接讀出當(dāng)前存儲(chǔ)的數(shù)據(jù);
獲取與另一個(gè)讀出地址具有相同指針地址的其余主存儲(chǔ)器、以及輔助存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù),并對(duì)其做異或運(yùn)算,將異或運(yùn)算結(jié)果作為另一個(gè)讀出地址的存儲(chǔ)數(shù)據(jù)進(jìn)行輸出。
接續(xù)圖12所示,本發(fā)明一具體示例中,讀出的數(shù)據(jù)為2個(gè),其指針地址分別為SRAM2P(0)中的指針地址“2”,以及SRAM2P(0)中的指針地址“5”,即當(dāng)前數(shù)據(jù)的讀出地址為R(0,2)和R(0,5);
在從2R1W存儲(chǔ)器讀出數(shù)據(jù)過程中,由于每一個(gè)SRAM2P只能保證1個(gè)讀端口和1個(gè)寫端口同時(shí)操作,讀端口直接從SRAM2P(0)中的指針地址“2”中讀取數(shù)據(jù),但是另一讀端口的請(qǐng)求無法滿足。相應(yīng)的,本發(fā)明采用異或運(yùn)算的方式解決兩個(gè)讀端口同時(shí)讀出數(shù)據(jù)的問題。
對(duì)于R(0,5)中的數(shù)據(jù),分別讀取其他三個(gè)主存儲(chǔ)器以及輔助存儲(chǔ)器的指針地址“5”的數(shù)據(jù)并對(duì)其做異或運(yùn)算,接續(xù)上例,從SRAM2P(1)中的指針地址“5”讀出的數(shù)據(jù)為“1”,從SRAM2P(2)中的指針地址“5”讀出的數(shù)據(jù)為“0”, 從SRAM2P(3)中的指針地址“5”讀出的數(shù)據(jù)為128比特全“1”,從SRAM2P(4)中的指針地址“5”讀出的數(shù)據(jù)為128比特全“1”,將數(shù)據(jù)128比特全“1”、128比特全“1”、 128比特全“0”、 128比特全“1”做異或運(yùn)算,得到128比特“1”,并將其異或運(yùn)算的結(jié)果128比特全“1”作為SRAM2P(0)中的指針地址“5”的存儲(chǔ)數(shù)據(jù)進(jìn)行輸出,通過上述過程得到的數(shù)據(jù),其結(jié)果與SRAM2P(0)中的指針地址“5”中存儲(chǔ)的數(shù)據(jù)完全一致,如此,根據(jù)數(shù)據(jù)的當(dāng)前指針位置,關(guān)聯(lián)主存儲(chǔ)器以及輔助存儲(chǔ)器中的數(shù)據(jù),對(duì)其做異或運(yùn)算,完成數(shù)據(jù)的寫入和讀出。
本發(fā)明一實(shí)施方式中,若當(dāng)前兩個(gè)讀出數(shù)據(jù)的讀出地址處于不同的SRAM2P存儲(chǔ)器中,則直接獲取不同SRAM2P存儲(chǔ)器中對(duì)應(yīng)指針地址的數(shù)據(jù)分別獨(dú)立進(jìn)行輸出。
接續(xù)圖12所示,本發(fā)明一具體示例中,讀出的數(shù)據(jù)為2個(gè),其指針地址分別為SRAM2P(0)中的指針地址“5”,以及SRAM2P(1)中的指針地址“10”,即當(dāng)前數(shù)據(jù)的讀出地址為R(0,5)和R(1,10);
在從2R1W存儲(chǔ)器讀出數(shù)據(jù)過程中,由于每一個(gè)SRAM2P均能保證1個(gè)讀端口和1個(gè)寫端口同時(shí)操作,故,讀出數(shù)據(jù)過程中,直接從SRAM2P(0)中的指針地址“5”讀取數(shù)據(jù),以及直接從SRAM2P(1)中的指針地址“10”讀出數(shù)據(jù),如此,以保證2R1W存儲(chǔ)器的2個(gè)讀端口和1個(gè)寫端口同時(shí)操作,在此不做詳細(xì)贅述。
需要說明的是,如果邏輯上把每一個(gè)SRAM2P進(jìn)一步切分,比如切分成4m個(gè)具有相同深度的SRAM2P,那么只需要增加額外1/4m的存儲(chǔ)器面積就可以構(gòu)建上述2R1W類型的SRAM;相應(yīng)的,物理上SRAM的塊數(shù)也增加了近2倍,在實(shí)際的布局布線中會(huì)占用不少的面積開銷;當(dāng)然,本發(fā)明并不以上述具體實(shí)施方式為限,其它采用異或運(yùn)算以擴(kuò)展存儲(chǔ)器端口的方案也包括在本發(fā)明的保護(hù)范圍內(nèi),在此不做詳細(xì)贅述。
結(jié)合圖13所示,對(duì)于本發(fā)明的2讀n寫的多端口存儲(chǔ)器單元,以下為了描述方便,接續(xù)上述示例,對(duì)n取值為4進(jìn)行詳細(xì)描述。該示例中,以2個(gè)16384深度和1152寬度的2R1W類型的SRAM并行拼裝成一個(gè)Bank,一個(gè)Bank的容量大小是4.5M字節(jié),總共有2個(gè)bank組成一個(gè)9M字節(jié)的2R4W多端口存儲(chǔ)器單元。
該示例中,數(shù)據(jù)寫入2讀n寫的多端口存儲(chǔ)器單元過程中,需要同時(shí)支持4個(gè)slice的同時(shí)寫入,假設(shè),每個(gè)slice的數(shù)據(jù)總線位寬是1152bits,同時(shí)每個(gè)slice支持6個(gè)100GE端口線速轉(zhuǎn)發(fā);在數(shù)據(jù)通道上最差的情況,對(duì)于小于等于144字節(jié)長(zhǎng)度的報(bào)文數(shù)據(jù),需要核心時(shí)鐘頻率跑到892.9MHz,對(duì)于大于144字節(jié)長(zhǎng)度的報(bào)文,需要核心時(shí)鐘頻率跑到909.1MHz。
一個(gè)時(shí)鐘周期下,若寫入數(shù)據(jù)的位寬小于等于144字節(jié),同時(shí),需要滿足4個(gè)Slice同時(shí)寫入,才能滿足帶寬需求;如此,通過2個(gè)Slice的寫入數(shù)據(jù)分別寫入到1個(gè)Bank的2個(gè)2R1W存儲(chǔ)器中,另外2個(gè)Slice的寫入數(shù)據(jù)分別寫入到其余另一個(gè)Bank的2個(gè)2R1W存儲(chǔ)器中,如此,寫入數(shù)據(jù)不會(huì)發(fā)生沖突。
一個(gè)時(shí)鐘周期下,若寫入數(shù)據(jù)的位寬大于144字節(jié),同時(shí),需要滿足4個(gè)Slice同時(shí)寫入,才能滿足帶寬需求;即:通過每個(gè)Slice的數(shù)據(jù)均需要占用整個(gè)Bank;如此,對(duì)于每個(gè)Slice而言,只需要在2個(gè)時(shí)鐘周期下,采用乒乓操作即可以滿足需求,例如:一個(gè)時(shí)鐘周期下,將其中的兩個(gè)數(shù)據(jù)分別寫入到2個(gè)Bank中,第二個(gè)周期到來時(shí),將另外兩個(gè)數(shù)據(jù)分別寫入到2個(gè)Bank中;其中,每個(gè)Bank中的兩個(gè)2R1W存儲(chǔ)器,分別對(duì)應(yīng)存儲(chǔ)任一個(gè)大于144字節(jié)的數(shù)據(jù)的高位和底位,在此不做詳細(xì)贅述。如此,寫入數(shù)據(jù)不會(huì)發(fā)生沖突。
其讀取過程與寫入過程相類似,該示例中,每個(gè)時(shí)鐘周期下,僅支持兩個(gè)數(shù)據(jù)的讀出;
一個(gè)時(shí)鐘周期下,若讀出數(shù)據(jù)的位寬小于等于144字節(jié),最壞情況下,讀出數(shù)據(jù)存儲(chǔ)于同一個(gè)Bank的同一個(gè)2R1W存儲(chǔ)器中,由于本發(fā)明的每個(gè)2R1W存儲(chǔ)器均可以同時(shí)支持兩個(gè)讀出請(qǐng)求,故無論在什么情況下,數(shù)據(jù)均可以從指定端口直接讀出。
一個(gè)時(shí)鐘周期下,若讀出數(shù)據(jù)的位寬大于144字節(jié),最壞情況下,讀出數(shù)據(jù)存儲(chǔ)于同一個(gè)Bank中,與寫入過程相類似,僅需要在兩個(gè)時(shí)鐘周期下,采用乒乓操作,即可以滿足讀出請(qǐng)求,在此不做詳細(xì)贅述。
進(jìn)一步的,結(jié)合圖14所示,本發(fā)明一優(yōu)選實(shí)施方式中,基于上述2讀n寫的存儲(chǔ)器單元構(gòu)建n讀n寫的存儲(chǔ)器的硬件架構(gòu)。
本發(fā)明一具體實(shí)施方式中,所述方法包括:
基于n/2個(gè)所述2讀n寫的多端口存儲(chǔ)器單元直接形成n讀n寫存儲(chǔ)器的硬件框架;
一個(gè)時(shí)鐘周期下,當(dāng)數(shù)據(jù)通過n個(gè)寫端口寫入到n讀n寫的多端口存儲(chǔ)器時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則根據(jù)數(shù)據(jù)的目的端口將數(shù)據(jù)分別寫入不同的2R1W存儲(chǔ)器中;
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),根據(jù)數(shù)據(jù)的目的端口將寫入數(shù)據(jù)的高低位分別寫入到一個(gè)Bank存儲(chǔ)單元的2個(gè)2R1W存儲(chǔ)器中。
一個(gè)時(shí)鐘周期下,當(dāng)數(shù)據(jù)從n讀n寫的多端口存儲(chǔ)器的其中2個(gè)讀端口讀出時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則選擇n讀n寫的多端口存儲(chǔ)器中匹配的讀端口直接讀出數(shù)據(jù);
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),選擇n讀n寫的多端口存儲(chǔ)器中匹配的讀端口直接讀出數(shù)據(jù)。
上述n讀n寫的多端口存儲(chǔ)器的數(shù)據(jù)寫入及讀出過程均與2讀n寫的多端口存儲(chǔ)器單元的寫入及讀出過程相類似,其區(qū)別僅在于,寫入數(shù)據(jù)過程中,需根據(jù)寫入數(shù)據(jù)的轉(zhuǎn)發(fā)端口匹配其寫入位置,其他不在詳細(xì)贅述。
結(jié)合圖15A所示,本發(fā)明一具體示例中,n的取值為4,該具體示例中,X0Y0以及X1Y1的結(jié)構(gòu)均與圖13所示相同,數(shù)據(jù)寫入及讀出過程中,需根據(jù)其對(duì)應(yīng)的轉(zhuǎn)發(fā)端口進(jìn)行存儲(chǔ),例如:S0、S1的數(shù)據(jù)僅能寫入到X0Y0中,而S2、S3的數(shù)據(jù)僅能寫入到X1Y1中,其寫入過程不在具體贅述。
結(jié)合圖15B所示,本發(fā)明一具體示例中,n的取值為8,該具體示例中,X0Y0、X1Y1、X2Y2以及X3Y3的結(jié)構(gòu)均與圖13所示結(jié)構(gòu)相類似相同,其區(qū)別在于,在圖13所示結(jié)構(gòu)基礎(chǔ)上再增加2個(gè)Bank以構(gòu)成2R8W存儲(chǔ)器,數(shù)據(jù)寫入及讀出過程中,需根據(jù)其對(duì)應(yīng)的轉(zhuǎn)發(fā)端口進(jìn)行存儲(chǔ),例如:S0、S1的數(shù)據(jù)僅能寫入到X0Y0中,S2、S3的數(shù)據(jù)僅能寫入到X1Y1中,S4、S5的數(shù)據(jù)僅能寫入到X2Y2中,而S6、S7的數(shù)據(jù)僅能寫入到X3Y3中,其寫入過程不在具體贅述。
結(jié)合圖16所示,本實(shí)施方式中,當(dāng)需要對(duì)存儲(chǔ)器的端口進(jìn)行擴(kuò)展時(shí),僅基于n/2個(gè)2讀n寫的多端口存儲(chǔ)器單元即可以實(shí)現(xiàn)n讀n寫的存儲(chǔ)器的硬件框架,相較于傳統(tǒng)的基于2R2W存儲(chǔ)器對(duì)存儲(chǔ)器的端口進(jìn)行擴(kuò)展的方法,便于實(shí)現(xiàn)更多Slice的擴(kuò)展。
另外,以4R4W存儲(chǔ)器和14nm集成電路工藝為例進(jìn)行說明,采用本發(fā)明獲得的4R4W存儲(chǔ)器,其邏輯上總共個(gè)需要40個(gè)4096深度1152寬度的SRAM2P,總共占用面積22.115平方厘米,總的功耗為13.503Watts(核心電壓=0.9V,結(jié)溫=125攝氏度,工藝條件是最快),同時(shí),不需要復(fù)雜的控制邏輯,只需要簡(jiǎn)單的異或運(yùn)算就可實(shí)現(xiàn)多個(gè)讀端口的操作;另外,也不需要額外的存儲(chǔ)器塊映射表和控制邏輯。
結(jié)合圖17所示,本發(fā)明一實(shí)施方式提供的可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理系統(tǒng),該實(shí)施方式中,所述多端口存儲(chǔ)器為2讀n寫的多端口存儲(chǔ)器單元,n為偶數(shù)。
所述系統(tǒng)包括:數(shù)據(jù)構(gòu)建模塊100,數(shù)據(jù)處理模塊200;
所述數(shù)據(jù)構(gòu)建模塊100具體用于:將2個(gè)2R1W存儲(chǔ)器并行拼裝為一個(gè)Bank存儲(chǔ)單元;
將n/2個(gè)Bank存儲(chǔ)單元在深度上拼裝為一個(gè)2讀n寫的多端口存儲(chǔ)器單元的硬件框架;
所述數(shù)據(jù)處理模塊200具體用于:當(dāng)確定一個(gè)時(shí)鐘周期下,數(shù)據(jù)通過n個(gè)寫端口寫入到2讀n寫的多端口存儲(chǔ)器單元時(shí);
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則將數(shù)據(jù)分別寫入不同的2R1W存儲(chǔ)器中;
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),將寫入數(shù)據(jù)的高低位分別寫入到一個(gè)Bank存儲(chǔ)單元的2個(gè)2R1W存儲(chǔ)器中。
所述數(shù)據(jù)處理模塊200還用于:當(dāng)確定一個(gè)時(shí)鐘周期下,數(shù)據(jù)從2讀n寫的多端口存儲(chǔ)器單元的其中2個(gè)讀端口讀出時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則選擇2讀n寫的多端口存儲(chǔ)器單元中匹配的讀端口直接讀出數(shù)據(jù);
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),選擇2讀n寫的多端口存儲(chǔ)器單元中匹配的讀端口直接讀出數(shù)據(jù)。
本發(fā)明優(yōu)選實(shí)施方式中,數(shù)據(jù)構(gòu)建模塊100采用5種方式建立所述2R1W存儲(chǔ)器。
如圖7所示,第一種實(shí)施方式中,在6T SRAM的基礎(chǔ),數(shù)據(jù)構(gòu)建模塊100把一根字線分割成左右兩個(gè),這樣可以做成2個(gè)讀端口同時(shí)操作或者1個(gè)寫端口,這樣從左邊MOS管讀出的數(shù)據(jù)和右邊MOS管讀出的數(shù)據(jù)可以同時(shí)進(jìn)行,需要注意的是,右邊MOS管讀出的數(shù)據(jù)需要反相之后才可以用,同時(shí)為了不影響數(shù)據(jù)讀取的速度,讀出的感應(yīng)放大器需要用偽差分放大器。這樣,6T SRAM面積不變,唯一的代價(jià)是增加一倍的字線,從而保證總體的存儲(chǔ)密度基本不變。
如圖8所示,第二種實(shí)施方式中,數(shù)據(jù)構(gòu)建模塊100通過定制設(shè)計(jì)可以增加SRAM的端口,把一個(gè)字線切割成2個(gè)字線,將讀端口增加到2個(gè);還可以通過分時(shí)操作的技術(shù),即讀操作在時(shí)鐘的上升沿進(jìn)行,而寫操作在時(shí)鐘的下降沿完成,這樣也可以把一個(gè)基本的1讀或者1寫的SRAM擴(kuò)展成1讀和1寫的SRAM類型,即1個(gè)讀和1個(gè)寫操作可以同時(shí)進(jìn)行,存儲(chǔ)密度基本不變。
如圖9所示,第三種實(shí)施方式中,以SRAM2P為基礎(chǔ)構(gòu)建2R1W的SRAM為例,所述SRAM2P是一種能夠支持1讀和1讀/寫的SRAM類型,即可以對(duì)SRAM2P同時(shí)進(jìn)行2個(gè)讀操作,或者1個(gè)讀和1個(gè)寫操作。
本實(shí)施方式中,數(shù)據(jù)構(gòu)建模塊100通過復(fù)制一份SRAM以SRAM2P為基礎(chǔ)構(gòu)建2R1W的SRAM;該示例中,右邊的SRAM2P_1是左邊SRAM2P_0的拷貝,具體操作的時(shí)候,把兩塊SRAM2P作為1讀和1寫存儲(chǔ)器來使用;其中,寫入數(shù)據(jù)時(shí),同時(shí)往左右兩個(gè)SRAM2P寫入數(shù)據(jù),讀出數(shù)據(jù)時(shí),A固定從SRAM2P_0讀取,數(shù)據(jù)B固定從SRAM2P_1讀取,這樣就可以實(shí)現(xiàn)1個(gè)寫操作和2個(gè)讀操作并發(fā)進(jìn)行。
如圖10a、10b所示,第四種實(shí)施方式中,數(shù)據(jù)構(gòu)建模塊100把邏輯上一整塊的16384深度的SRAM分割成邏輯上4塊4096深度的SRAM2P,編號(hào)依次為為0、1、2、3,再額外增加一塊4096深度的SRAM,編號(hào)為4,作為解決讀寫沖突用,對(duì)于讀數(shù)據(jù)A和讀數(shù)據(jù)B,永遠(yuǎn)保證這2個(gè)讀操作可以并發(fā)進(jìn)行,當(dāng)2個(gè)讀操作的地址是處于不同的SRAM2P中時(shí),因?yàn)槿魏我粋€(gè)SRAM2P都可以配置成1R1W類型,所以讀寫不會(huì)有沖突;當(dāng)2個(gè)讀操作的地址處于同一塊SRAM2P中時(shí),例如:均處于SRAM2P_0中,由于同一個(gè)SRAM2P最多只能提供2個(gè)端口同時(shí)操作,此時(shí),其端口被2個(gè)讀操作占用,如果恰好有一個(gè)寫操作要寫入SRAM2P_0,那么這時(shí)就把這個(gè)數(shù)據(jù)寫入存儲(chǔ)器第4塊SRAM2P_4中。
該種實(shí)施方式中,需要有一個(gè)存儲(chǔ)器塊映射表記錄哪一個(gè)存儲(chǔ)器塊存放有效數(shù)據(jù),如圖10b所示,存儲(chǔ)器塊映射表的深度和一個(gè)存儲(chǔ)器塊的深度相同,即都是4096個(gè)深度,每一個(gè)條目中在初始化后依次存放每個(gè)存儲(chǔ)器塊的編號(hào),從0到4,圖10a示例中,由于SRAM2P_0在寫入數(shù)據(jù)的時(shí)候發(fā)生讀寫沖突,數(shù)據(jù)實(shí)際上是寫入到SRAM2P_4中,此時(shí),讀操作同時(shí)會(huì)讀取存儲(chǔ)器映射表中對(duì)應(yīng)的內(nèi)容,原始內(nèi)容為{0, 1, 2, 3, 4},修改之后變成{4, 1, 2, 3, 0},第一個(gè)塊編號(hào)和第4個(gè)塊編號(hào)對(duì)調(diào),表示數(shù)據(jù)實(shí)際寫入到SRAM2P_4中,同時(shí)SRAM2P_0變成了備份條目。
當(dāng)讀取數(shù)據(jù)的時(shí)候,需要首先讀對(duì)應(yīng)地址的存儲(chǔ)器塊編號(hào)映射表,查看有效數(shù)據(jù)存放在哪一個(gè)存儲(chǔ)器塊中,例如當(dāng)要讀取地址5123的數(shù)據(jù),那么首先讀取存儲(chǔ)塊編號(hào)映射表地址1027(5123-4096=1027)存放的內(nèi)容,根據(jù)第二列的數(shù)字編號(hào)去讀取對(duì)應(yīng)存儲(chǔ)塊的地址1027的內(nèi)容。
對(duì)于寫數(shù)據(jù)操作,需要存儲(chǔ)器塊編號(hào)映射表提供1讀和1寫端口,對(duì)于2個(gè)讀數(shù)據(jù)操作,需要存儲(chǔ)器塊編號(hào)映射表提供2個(gè)讀端口,這樣總共需要存儲(chǔ)器塊編號(hào)映射表提供3個(gè)讀端口和1個(gè)寫端口,而且這4個(gè)訪問操作必須是同時(shí)進(jìn)行。
如圖11所示,第五種實(shí)施方式,即本發(fā)明的優(yōu)選實(shí)施方式中,數(shù)據(jù)構(gòu)建模塊100根據(jù)所述2R1W存儲(chǔ)器的深度和寬度選擇2m+1塊具有相同深度及寬度的SRAM2P存儲(chǔ)器構(gòu)建2R1W存儲(chǔ)器的硬件框架,m為正整數(shù);
多個(gè)所述SRAM2P存儲(chǔ)器按照排列順序依次為SRAM2P(0)、SRAM2P(1)……、SRAM2P(2m),每個(gè)SRAM2P存儲(chǔ)器均具有M個(gè)指針地址,其中,多個(gè)所述SRAM2P存儲(chǔ)器中的一個(gè)為輔助存儲(chǔ)器,其余均為主存儲(chǔ)器;
每塊SRAM2P存儲(chǔ)器的深度與寬度的乘積=(2R1W存儲(chǔ)器的深度與寬度乘積)/2m。
以下為了描述方便,對(duì)m取值為2、2R1W存儲(chǔ)器為16384深度、128寬度的SRAM存儲(chǔ)器進(jìn)行詳細(xì)描述。
則在該具體示例中,多個(gè)所述SRAM2P存儲(chǔ)器按照排列順序依次為SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P(3)、SRAM2P(4),其中,SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P(3)為主存儲(chǔ)器,SRAM2P(4)為輔助存儲(chǔ)器,每個(gè)SRAM2P存儲(chǔ)器的深度和寬度分別為4096和128,相應(yīng)的,每個(gè)SRAM2P存儲(chǔ)器均具有4096個(gè)指針地址;如果對(duì)每個(gè)SRAM2P存儲(chǔ)器的指針地址均獨(dú)立標(biāo)識(shí),則每個(gè)SRAM2P存儲(chǔ)器的指針地址均為0~4095,若將全部的主存儲(chǔ)器的地址依次排列,則全部的指針地址范圍為: 0 ~ 16383。該示例中,SRAM2P(4)用于解決端口沖突,且在該實(shí)施方式中,無需增加存儲(chǔ)器塊編號(hào)映射表即可以滿足需求。
進(jìn)一步的,在上述硬件框架基礎(chǔ)上,當(dāng)數(shù)據(jù)寫入2R1W存儲(chǔ)器和/或從所述2R1W存儲(chǔ)器讀出時(shí),數(shù)據(jù)處理模塊200具體用于:根據(jù)數(shù)據(jù)的當(dāng)前指針位置,關(guān)聯(lián)主存儲(chǔ)器以及輔助存儲(chǔ)器中的數(shù)據(jù),對(duì)其做異或運(yùn)算,完成數(shù)據(jù)的寫入和讀出。
本發(fā)明優(yōu)選實(shí)施方式中,其數(shù)據(jù)寫入過程如下:
獲取當(dāng)前數(shù)據(jù)的寫入地址為W(x,y),x表示寫入數(shù)據(jù)所處于的SRAM2P存儲(chǔ)器的排列位置,0≤x<2m,y表示寫入數(shù)據(jù)所處于的SRAM2P存儲(chǔ)器中的具體的指針地址,0≤y≤M;
獲取與寫入地址具有相同指針地址的其余主存儲(chǔ)器中的數(shù)據(jù),將其同時(shí)與當(dāng)前寫入數(shù)據(jù)做異或運(yùn)算,并將異或運(yùn)算結(jié)果寫入到輔助存儲(chǔ)器的相同指針地址中。
進(jìn)一步的,本發(fā)明優(yōu)選實(shí)施方式中,數(shù)據(jù)處理模塊200讀出數(shù)據(jù)過程如下:
若當(dāng)前兩個(gè)讀出數(shù)據(jù)的讀出地址處于相同的SRAM2P存儲(chǔ)器中,則
數(shù)據(jù)處理模塊200具體用于:分別獲取兩個(gè)讀出數(shù)據(jù)的讀出地址為R1(x1,y1),R2(x2,y2),x1、y1均表示讀出數(shù)據(jù)所處于的SRAM2P存儲(chǔ)器的排列位置,0≤x1<2m,0≤x2<2m,y1、y2均表示讀出數(shù)據(jù)所處于的SRAM2P存儲(chǔ)器中的具體的指針地址,0≤y1≤M,0≤y2≤M;
數(shù)據(jù)處理模塊200具體用于:任選其中一個(gè)讀出地址R1(x1,y1)中存儲(chǔ)的讀出數(shù)據(jù),從當(dāng)前的指定讀出地址中直接讀出當(dāng)前存儲(chǔ)的數(shù)據(jù);
數(shù)據(jù)處理模塊200具體用于:獲取與另一個(gè)讀出地址具有相同指針地址的其余主存儲(chǔ)器、以及輔助存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù),并對(duì)其做異或運(yùn)算,將異或運(yùn)算結(jié)果作為另一個(gè)讀出地址的存儲(chǔ)數(shù)據(jù)進(jìn)行輸出。
本發(fā)明一實(shí)施方式中,若當(dāng)前兩個(gè)讀出數(shù)據(jù)的讀出地址處于不同的SRAM2P存儲(chǔ)器中,數(shù)據(jù)處理模塊200則直接獲取不同SRAM2P存儲(chǔ)器中對(duì)應(yīng)指針地址的數(shù)據(jù)分別獨(dú)立進(jìn)行輸出。
需要說明的是,如果邏輯上把每一個(gè)SRAM2P進(jìn)一步切分,比如切分成4m個(gè)具有相同深度的SRAM2P,那么只需要增加額外1/4m的存儲(chǔ)器面積就可以構(gòu)建上述2R1W類型的SRAM;相應(yīng)的,物理上SRAM的塊數(shù)也增加了近2倍,在實(shí)際的布局布線中會(huì)占用不少的面積開銷;當(dāng)然,本發(fā)明并不以上述具體實(shí)施方式為限,其它采用異或運(yùn)算以擴(kuò)展存儲(chǔ)器端口的方案也包括在本發(fā)明的保護(hù)范圍內(nèi),在此不做詳細(xì)贅述。
進(jìn)一步的,本發(fā)明一優(yōu)選實(shí)施方式中,所述數(shù)據(jù)構(gòu)建模塊100基于上述2讀n寫的存儲(chǔ)器單元構(gòu)建n讀n寫的存儲(chǔ)器的硬件架構(gòu)。
本發(fā)明一具體實(shí)施方式中,所述數(shù)據(jù)構(gòu)建模塊100基于n/2個(gè)所述2讀n寫的多端口存儲(chǔ)器單元直接形成n讀n寫存儲(chǔ)器的硬件框架;
所述數(shù)據(jù)處理模塊200還用于:當(dāng)確定一個(gè)時(shí)鐘周期下,數(shù)據(jù)通過n個(gè)寫端口寫入到n讀n寫的多端口存儲(chǔ)器時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則根據(jù)數(shù)據(jù)的目的端口將數(shù)據(jù)分別寫入不同的2R1W存儲(chǔ)器中;
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),根據(jù)數(shù)據(jù)的目的端口將寫入數(shù)據(jù)的高低位分別寫入到一個(gè)Bank存儲(chǔ)單元的2個(gè)2R1W存儲(chǔ)器中。
所述數(shù)據(jù)處理模塊200還用于:當(dāng)確定一個(gè)時(shí)鐘周期下,數(shù)據(jù)從n讀n寫的多端口存儲(chǔ)器的其中2個(gè)讀端口讀出時(shí),
若數(shù)據(jù)的大小小于等于所述2R1W存儲(chǔ)器的位寬,則選擇n讀n寫的多端口存儲(chǔ)器中匹配的讀端口直接讀出數(shù)據(jù);
若數(shù)據(jù)的大小大于所述2R1W存儲(chǔ)器的位寬,則等待第二個(gè)時(shí)鐘周期,當(dāng)?shù)诙€(gè)時(shí)鐘周期到來時(shí),選擇n讀n寫的多端口存儲(chǔ)器中匹配的讀端口直接讀出數(shù)據(jù)。
上述n讀n寫的多端口存儲(chǔ)器的數(shù)據(jù)寫入及讀出過程均與2讀n寫的多端口存儲(chǔ)器單元的寫入及讀出過程相類似,其區(qū)別僅在于,寫入數(shù)據(jù)過程中,需根據(jù)寫入數(shù)據(jù)的轉(zhuǎn)發(fā)端口匹配其寫入位置,其他不在詳細(xì)贅述。
結(jié)合圖15A所示,本發(fā)明一具體示例中,n的取值為4,該具體示例中,X0Y0以及X1Y1的結(jié)構(gòu)均與圖13所示相同,數(shù)據(jù)寫入及讀出過程中,需根據(jù)其對(duì)應(yīng)的轉(zhuǎn)發(fā)端口進(jìn)行存儲(chǔ),例如:S0、S1的數(shù)據(jù)僅能寫入到X0Y0中,而S2、S3的數(shù)據(jù)僅能寫入到X1Y1中,其寫入過程不在具體贅述。
結(jié)合圖15B所示,本發(fā)明一具體示例中,n的取值為8,該具體示例中,X0Y0、X1Y1、X2Y2以及X3Y3的結(jié)構(gòu)均與圖13所示結(jié)構(gòu)相類似相同,其區(qū)別在于,在圖13所示結(jié)構(gòu)基礎(chǔ)上再增加2個(gè)Bank以構(gòu)成2R8W存儲(chǔ)器,數(shù)據(jù)寫入及讀出過程中,需根據(jù)其對(duì)應(yīng)的轉(zhuǎn)發(fā)端口進(jìn)行存儲(chǔ),例如:S0、S1的數(shù)據(jù)僅能寫入到X0Y0中,S2、S3的數(shù)據(jù)僅能寫入到X1Y1中,S4、S5的數(shù)據(jù)僅能寫入到X2Y2中,而S6、S7的數(shù)據(jù)僅能寫入到X3Y3中,其寫入過程不在具體贅述。
結(jié)合圖16所示,本實(shí)施方式中,當(dāng)需要對(duì)存儲(chǔ)器的端口進(jìn)行擴(kuò)展時(shí),僅基于n/2個(gè)2讀n寫的多端口存儲(chǔ)器單元即可以實(shí)現(xiàn)n讀n寫的存儲(chǔ)器的硬件框架,相較于傳統(tǒng)的基于2R2W存儲(chǔ)器對(duì)存儲(chǔ)器的端口進(jìn)行擴(kuò)展的方法,便于實(shí)現(xiàn)更多Slice的擴(kuò)展。
綜上所述,本發(fā)明的可擴(kuò)展的多端口存儲(chǔ)器的數(shù)據(jù)處理方法及處理系統(tǒng),基于現(xiàn)有的SRAM類型,通過算法的方式搭建更多端口的SRAM,僅僅用最小的代價(jià)便可以最大限度的支持多端口SRAM;其實(shí)現(xiàn)過程中,避免采用復(fù)雜的控制邏輯和額外的多端口SRAM或者寄存器陣列資源,利用報(bào)文緩存的特殊性,通過空間分割和時(shí)間分割,僅需要簡(jiǎn)單的異或運(yùn)算就可實(shí)現(xiàn)多個(gè)端口的報(bào)文緩存,同時(shí),通過本發(fā)明實(shí)現(xiàn)的多端口存儲(chǔ)器,其所有緩存資源可以在任意輸入端口之間實(shí)現(xiàn)完全共享,邏輯上采用更少的CCE即可以構(gòu)建多端口存儲(chǔ)器,容易實(shí)現(xiàn)端口的擴(kuò)展,本發(fā)明具有更低的功耗,更快的處理速度,以及節(jié)省更多的資源或面積,其報(bào)文緩存架構(gòu)具有更好的擴(kuò)展性,實(shí)現(xiàn)簡(jiǎn)單,節(jié)約人力及物質(zhì)成本。
為了描述的方便,描述以上裝置時(shí)以功能分為各種模塊分別描述。當(dāng)然,在實(shí)施本發(fā)明時(shí)可以把各模塊的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
以上所描述的裝置實(shí)施方式僅僅是示意性的,其中所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者也可以不是物理模塊,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)模塊上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施方式方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
應(yīng)當(dāng)理解,雖然本說明書按照實(shí)施方式加以描述,但并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方案,說明書的這種敘述方式僅僅是為清楚起見,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說明書作為一個(gè)整體,各實(shí)施方式中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實(shí)施方式。
上文所列出的一系列的詳細(xì)說明僅僅是針對(duì)本發(fā)明的可行性實(shí)施方式的具體說明,它們并非用以限制本發(fā)明的保護(hù)范圍,凡未脫離本發(fā)明技藝精神所作的等效實(shí)施方式或變更均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。