專利名稱::面向流應用的片內存儲器的制作方法
技術領域:
:本發明主要涉及到微處理器中片內存儲器的設計領域,特指一種面向具有計算密集型和數據并行性流計算的微處理器中的片內存儲器。
背景技術:
:近年來一類新型的應用——流應用,正成為微處理器的主要負載。這種新型的流應用主要分為兩類一類是媒體應用,用來實時地處理音頻、視頻、靜態圖像及其他密集型數據,典型的應用包括圖像處理、圖形處理、視頻編碼與解碼、信號處理等;另一類是科學計算,主要用于高精度科學建模,典型的應用包括流體力學、氣象、分子動力學、有限元分析、生物技術等。這些流應用具有以下的特點(一)數據并行性高。對多個數據元素進行同樣的操作,大量數據元素的處理過程間沒有依賴關系。(二)計算密集性。媒體、實時信號處理等應用要對大量長序列采樣數據進行操作,對每次從存儲器中讀出的數據往往要實施多種運算。(三)局域性。數據訪問通常表現為空間局域性和生產者消費者的局域性,即對大數據塊的相鄰或跨距訪問,和在計算流水線或計算單元的不同階段中,一個計算單元生產出的數據被另一個計算單元所消費(被讀取),數據重用性低。傳統的指令級并行微處理器運算單元匱乏,芯片面積占有率低,不能很好地支持大量的密集型計算;其訪存帶寬低,不能為足夠多的運算單元提供數據,數據并行性不高;其傳統的片內存儲層次適合具有時間局部性的數據訪問,很好滿足了數據重用性高的一般應用,因此不能很好地支持流應用。如在Iantium-2處理器中,12個整數部件和2個浮點部件和相關的寄存器文件僅僅占到整個芯片面積的6%,而其他非運算類的部件如通訊,控制,存儲開銷占到了整個芯片面積的94%,其存儲帶寬為6.4GB/s,通訊和訪存耗費了大量芯片資源。傳統的片內存儲器Cache采用高速緩存機制,強調數據重用性,目標是捕獲更多的時間局部性,盡量減小存儲器的平均訪問延遲,對于Cache的訪問是通過名字翻譯單元(例如tag查找表),將主存地址轉換為Cache的存儲器的地址。由于硬件實現代價的制約,Cache不能提供很高的帶寬。當計算邏輯單元數量增加的時候,需要高數據帶寬的存儲器為計算單元提供數據,無法為大量計算單元提供數據。缺乏重用性的流應用數據經過復雜Cache機制來存取還會降低數據訪存性能,嚴重制約其性能的提高。由于VLSI技術的發展,單個芯片能集成上億晶體管,而流應用的特性和當代VLSI技術的特點非常匹配。要滿足多個數據計算并行的應用需求,單芯片內可以集成很多廉價的運算部件。但是傳統的微處理器片內存儲器為這些運算單元提供指令和數據不僅代價昂貴,而且運算性能不高。因此,本發明設計了一種符合流計算應用特點,支持密集型計算、能捕獲其空間局部性、生產者消費者局部性的片內存儲器。
發明內容本發明要解決的技術問題就在于針對現有技術存在的技術問題,本發明提供一種能夠用來負責流數據和流指令在各部件間傳輸,既能同時為多個計算單元、網絡接口提供各種長度的流數據,又能作為片內大容量Cache緩存計算單元生產中間流的面向流應用的片內存儲器。該存儲器用一個單端口的大容量SRAM作為主存儲體,通過多個數據緩沖器(DBs)與N個計算單元、一個指令控制器、片外存儲器、網路控制器等客戶端相連,以共享訪問總線的方式,實現了多邏輯端口訪問功能,為各客戶端提供流數據和流指令的傳輸。存儲器為計算單元提供的數據由軟件組織,訪問的數據以塊(Block)為單位,由軟件確定訪問數據在存儲器中的起始地址和塊長度。通過數據緩沖器,該存儲器可為每個訪存端口提供一個按地址訪問的順序數據隊列,能為計算單元提供很高的操作數帶寬。由于計算單元對流數據的訪問是預知的、粗粒度的,因此該存儲器還具有粗粒度的數據預取作用。為解決上述技術問題,本發明提出的解決方案為一種面向流應用的片內存儲器,其特征在于它包括SRAM存儲器、描述符寄存器文件、一個或一個以上的數據緩沖器和存儲器訪問流水線,所述描述符寄存器文件由多個相同結構的寄存器組成,用來描述流數據在SRAM存儲器中的起始塊位置和長度信息,所述數據緩沖器是計算單元或其他部件訪問存儲器的邏輯接口,存儲器訪問流水線控制所有數據緩沖器對SRAM存儲器訪問的仲裁和訪存流水線,計算單元以及外部客戶端通過數據緩沖器,在存儲器訪問流水線的控制下訪問SRAM存儲器。所述數據緩沖器包括一個數據傳輸控制器和兩個結構一致的半緩沖器,數據傳輸控制器用來控制數據塊傳輸的過程,數據緩沖器具有兩個輸入輸出端口,一個是SRAM的讀寫端口,另外一個是其所服務客戶端的讀寫端口;兩個半緩沖器用來支持計算單元與數據緩沖器之間和數據緩沖器與SRAM存儲器之間同時進行數據交換,數據傳輸控制器中包含一個數據控制寄存器,數據控制寄存器用來從指令中獲取本次傳輸的數據塊地址、長度、傳輸方向、傳輸計數模式等信息,再向存儲器訪問流水線發出訪問請求,獲取訪問權限后由數據控制寄存器控制該數據塊的傳輸過程。所述存儲器訪問流水線用來負責動態仲裁數據緩沖器訪問SRAM存儲器的請求,并且按流水線的方式訪問SRAM存儲器,數據緩沖器訪問SRAM存儲器的過程分為五級流水站(1)仲裁站仲裁器根據仲裁算法,從多個DB請求中選中一個DB;(2)選擇站根據仲裁站的仲裁結果GrantsReg[k-1:0]從K個數據緩沖器中選出相應DB的地址、數據和方向,其中GrantsReg[k-1:0]維持信號兩拍有效,同時生成訪問SRAM存儲器的使能信號WrSRFEn,當有一個DB被選中時,WrSRFEn為1;生成one-hot編碼的寫DB的使能信號Grants_wrdb,是Grantsreg[k-1:0]與Dir[k-1:0]位或的結果;(3)RAM數據建立站準備好讀或寫SRAM的數據、地址、片選及讀寫使能信號,并將Grants_wrdb_reg寄存一拍。(4)存儲器訪問站因為存儲器的訪問時間大于系統時鐘周期,所以存儲器訪問需要兩個時鐘周期,需要將WRDBNum寄存一拍;(5)緩沖器寫回站如果是讀SRAM存儲器的操作,生成寫緩沖器的信號WriteDBNumReg和數據Dataout。所述描述符寄存器文件由兩個域Length和Block組成,Length表示數據塊的字數,Block表示數據塊在存儲器中的起始塊地址。與現有技術相比,本發明的優點就在于1.該片內主存儲器以物理單端口SRAM的硬件代價,實現了邏輯訪問端口數大于4的訪問功能,大大減少了芯片面積和功耗,性價比高。目前市場上提供的最好的SRAM提供的訪存端口數都小于4個,不支持4個或以上訪存端口的直接訪問,而且隨著物理訪問端口數的增加,其面積和功耗成倍增長,而每個物理訪存端口的訪存速度卻在降低。2.硬件實現復雜度降低。數據在該片內存儲器中按塊地址順序放置,按塊地址尋址,存儲體部分只需SRAM構成,不用考慮相關性問題。而傳統片內Cache采用的是組相聯或全相聯方式,每個Cache行少不了地址比較標記,而且需要硬件實現Cache一致性協議,硬件實現復雜。3.訪存延時確定。該存儲器對軟件可見,每次訪存都由軟件進行調度,不存在訪存缺失情況;而傳統的片內Cache對軟件透明,存在命中率的問題,當Cache失效時,訪問延時可能達上百個時鐘周期。4.訪存粒度大存儲器最小尋址單位是一個塊,便于隱藏訪存延時,更適合數據量大、計算密集的流應用;而Cache的訪問粒度以字為單位。5.能夠為多個計算單元提供很高的數據訪問帶寬。在工作頻率為500MHz,計算單元N=4時,可以向4個計算單元提供高達64GB/s的帶寬,內部SRAM存儲器的訪問帶寬達32GB/s。6.數據緩沖器采用雙緩沖器的結構,支持雙帶寬流水訪問,能實現數據預取,隱藏數據訪問延遲。7.存儲器的半頻訪問權衡了計算單元對片內存儲器帶寬的需求和當今VLSI技術條件下大容量片內SRAM存儲器訪問延遲較大的問題。既滿足了性能的要求,又放松了對訪問延時的約束,降低了功耗。圖1是本發明片內存儲器總體結構的框架示意圖;圖2是本發明描述符寄存器文件(DRF)中一個寄存器的域組成示意圖;圖3是本發明中一個服務于計算單元的數據緩沖器(DB)的結構框架示意圖;圖4是本發明數據控制寄存器(DCR)的域結構示意圖;圖5是本發明中存儲器訪問流水線的示意圖;圖6是本發明采用的仲裁算法示意圖;圖7是SRAM存儲器時鐘生成電路的原理示意圖。具體實施例方式以下將結合附圖和具體實施例對本發明做進一步詳細說明。參見圖1所示,本發明是一種面向流應用的片內存儲器,它包括SRAM存儲器、描述符寄存器文件、一個或一個以上的數據緩沖器和存儲器訪問流水線,所述描述符寄存器文件由多個相同結構的寄存器組成,用來描述流數據在SRAM存儲器中的起始塊位置和長度信息,所述數據緩沖器是計算單元或其他部件訪問存儲器的邏輯接口,存儲器訪問流水線控制所有數據緩沖器對SRAM存儲器訪問的仲裁和訪存流水線,計算單元以及外部客戶端通過數據緩沖器,在存儲器訪問流水線的控制下訪問SRAM存儲器。其中,SRAM存儲器采用單端口的存儲器,大小為C個字(256KB~1GB),被組織成C/M個塊(Block),每塊M個字;并且根據計算單元的個數被分為N個存儲體(Bank),與計算單元一一對應。存儲器的數據位寬即為M個字,即一個Block塊的大小。每次對SRAM存儲器的訪問都以一個Block為單位,因此為數據/指令分配的空間是以Block為單位。存儲器中的一個字具有三部分地址塊地址.字地址.體地址;塊地址識別塊,字地址識別該塊中每個Bank中的字,體地址識別寄存器文件存儲體中體。其主要服務對象是以單指令流多數據流(SIMD)方式工作的N個計算單元,每個計算單元只訪問與其對應的存儲體中的數據。描述符寄存器文件由多個相同結構的寄存器組成,用來描述流數據在SRAM存儲器中的起始塊位置和長度信息,因此每個寄存器的內容由塊起始地址和塊長度位兩部分構成,并由相關指令寫入。流數據傳輸時需由指令指定某個描述符寄存器,以獲知欲讀寫流數據的長度及其在存儲器中的起始地址。數據緩沖器是計算單元和其他部件訪問存儲器的邏輯接口。每個數據緩沖器由一個數據傳輸控制器(DTCR)和兩個結構一致的半緩沖器(半緩沖器0和半緩沖器1)構成,DTCR中包含一個數據控制寄存器(DCR)。每次啟動流數據傳輸時,會對DCR進行初始化,即DCR會從指令中獲取本次傳輸的數據塊地址(Block)、長度(Length)、傳輸方向(Dir)、傳輸計數模式(Count_mode)等信息,再向存儲器訪問流水線發出訪問請求,獲取訪問權限后由DTCR控制該數據傳輸過程。這種雙緩沖結構的數據緩沖器同時支持雙向不同帶寬的流水訪問,即能同時和存儲器內部和計算單元等外部請求源進行數據傳輸,能很好隱藏訪問延時。這樣,通過多個數據緩沖器,以很小的硬件代價使物理單端口的SRAM存儲器支持了多邏輯端口的流數據訪問。存儲器訪問流水線控制所有數據緩沖器對SRAM存儲器訪問的仲裁和訪存流水線。為獲得較高的訪存性能,存儲器訪問操作被設計成五級流水站仲裁站(ARBTRATOR)、選擇站(SEL)、RAM數據建立站(DATASETUP)、存儲器訪問站和數據緩沖器寫回站(WB)。本發明的片內存儲器執行描述符寄存器的讀寫和流數據傳輸兩類指令。描述符寄存器的寫指令是為一個流數據在片內存儲器中分配一個空間,流描述符寄存器的讀指令是將一個流數據在片內存儲器中的信息提供給消費者。流數據傳輸指令也分為兩大類讀(load)指令和寫(store)指令。讀指令是指將一個流數據從片內存儲器中讀出來送給多個計算單元或其他客戶請求端。寫指令是將計算單元、其他客戶端生成的一個流數據或外部存儲器的數據流寫到片內存儲器中。下面以計算單元訪問片內存儲器為例,說明讀、寫指令的操作過程。計算單元從片內存儲器中讀流的過程如下1.通過執行描述符寄存器的寫指令來指定為計算單元提供的流數據在片內存儲器中起始地址和長度。2.初始化數據緩沖器。硬件根據流指令指定的描述符寄存器和數據流傳輸模式初始化數據控制寄存器(DCR)。3.流數據的傳輸。剛開始啟動傳輸時,數據緩沖器的半緩沖器0和半緩沖器1中的數據都是無效的,由半緩沖器0發出一個訪問SRAM存儲器的讀請求,若該請求被存儲器訪問流水線仲裁站賦予訪問權限,則該訪問請求進入SRAM訪存流水線。當訪問完成的時候,將SRAM存儲器返回的數據一次寫入半緩沖器0中,并開始向計算單元傳輸數據。此時由于半緩沖器1中的數據是無效的,因此半緩沖器1發出一個訪問SRAM存儲器的讀請求。當半緩沖器0被計算單元讀空且半緩沖器1的訪問請求返回數據后,兩個半緩沖器交換角色,即半緩沖器1向計算單元提供數據,而半緩沖器0產生一個訪問SRAM存儲器的訪問請求。兩個半緩沖重復交換角色直到數據傳輸完成。4.流數據傳輸完成。當DCR中的長度Length遞減到0并且數據緩沖器的兩個半緩沖器中的數據都被計算單元讀完時,數據傳輸完成,并向計算單元發送數據傳輸完畢(EOS)信號。計算單元產生一個流數據寫入片內存儲器的過程如下1.通過執行描述符寄存器的寫指令來為計算單元生成的流數據在片內存儲器中分配空間起始地址和長度。2.初始化數據緩沖器。根據流指令指定的描述符寄存器和流指令指定的數據流傳輸模式初始化數據控制寄存器(DCR)。3.流數據的傳輸。由于開始時數據緩沖器的兩個半緩沖器中數據無效,因此半緩沖器0可以接受計算單元生成的流數據。當半緩沖器0寫滿的時候,半緩沖器0產生一個訪問SRAM存儲器的寫請求,獲取訪問權限后,進入訪存流水線。同時由于半緩沖器1中的數據無效,此時可以開始接受計算單元生成的數據流。當半緩沖器0中的數據寫入SRAM存儲器且半緩沖1被寫滿的時候,兩個半緩沖交換角色,即半緩沖0接受計算單元生成的數據流,而半緩沖1產生一個訪問SRAM存儲器的寫請求。兩個半緩沖重復交換角色直到數據接受完成。4.流數據傳輸完成。當DCR的Length遞減到0或者計算單元發出EOS信號,數據傳輸完成。在具體的實施例中,參見圖1所示,本實施例的片內存儲器總體結構,由SRAM存儲器、K個數據緩沖器(DBs)、存儲訪問流水線、描述符寄存器文件(DRF)等模塊構成。K個數據緩沖器分別與N個計算單元、一個指令控制器、片外存儲器、網路控制器等客戶端相連,作為這些客戶端訪問SRAM存儲器的邏輯端口。單端口讀/寫SRAM存儲器只有一組地址總線和分離的輸入數據總線和輸出數據總線。外部的客戶不能直接訪問該存儲器,必須通過數據緩沖器在存儲訪問流水線的控制下獲取總線使用權后才能訪問。在本實施例中SRAM存儲器大小為256KB,分為4個體,一個Block塊16個字(1個字64bit),支持4個計算單元。數據記錄在Bank中交叉存儲。即N=4,共有4個Bank,Bank0中存放流數據的第0、4、8……個記錄,bank1中就存放流的第1、5、9……個記錄,以此類推。描述符寄存器文件由多個同構寄存器組成,由軟件負責初始化。圖2給出了本發明實施例的DRF中一個寄存器的域結構,由兩個域Length和Block組成,Length表示數據塊的字數,Block表示數據塊在存儲器中的起始塊地址。圖3是本發明實施例中一個數據緩沖器的結構框圖。數據緩沖器由兩個大小相等的半緩沖器(半緩沖器0,半緩沖器1)和一個數據傳輸控制器(DTCR)組成。數據緩沖器具有兩個輸入輸出端口,一個是SRAM的讀寫端口,另外一個是它服務的客戶端的讀寫端口。當一個端口用作輸入(或者輸出)時,另外一個端口必須用作輸出(或者輸入)。兩個端口的數據傳輸方向是由DTCR中的DCR寄存器中的Dir域決定的。Datain[M-1:0]、Dataout[M-1:0]、Request和Grant是數據緩沖器與SRAM的接口信號,數據位寬是一個塊;Clientdatain[W-1:0]、Clientdataout[W-1:0]、DB_ready和Client_ready是數據緩沖器與客戶端的接口信號(W大小是N個字),數據位寬是N個字。每個半緩沖器的大小為M個字,與一個Block大小相同。每個數據緩沖器與每個運算單元的數據位寬是1個字,由于存在N個計算單元,因此數據緩沖器與計算單元之間的數據位寬是N個字。因此數據緩沖器調節了SRAM存儲器與計算單元之間數據位寬不匹配的現象。雙半緩沖器的設計支持計算單元與數據緩沖器之間和數據緩沖器與SRAM存儲器之間同時進行數據交換。例如,在計算單元讀數據過程中,當其中的一個半緩沖器向其傳輸數據,而另外一個半緩沖器為空時,那么數據緩沖器在向計算單元提供數據的同時還可產生一個訪問SRAM存儲器的請求,以隱藏訪問延遲,完成數據的預取。在我們的設計中數據緩沖器共32個字,每個半緩沖器16個字,被分為4個體。數據傳輸控制器(DTCR)用來控制數據塊傳輸的過程。主要包含了一個數據控制寄存器(DCR),圖4詳細的介紹了DCR的各個域。CurrentHBForSRF/CurrentHBForClient控制dataout/Clientdataout從兩個半緩沖器中的哪一個中輸出。EnableHB/Enable[1]是半緩沖0/半緩沖1的寫使能信號。SrfClient表示寫緩沖器的數據端口,1表示SRAM向緩沖器寫入數據,0表示客戶端向緩沖器中寫入數據。WordAddr表示半緩沖的字地址。圖4給出了數據控制寄存器DCR的域組成,其中(1)Block占11位下一次數據緩沖器與SRAM存儲器數據傳輸的地址。緩沖器每次與SRAM存儲塊完成一次數據交換,將其加1。(2)Length占16位CountMode為零時表示數據緩沖器與SRAM存儲器數據塊傳輸的剩余字長;CountMode為1時表示數據緩沖器已經向SRAM存儲器中寫入的數據塊字長。因此在CountMode為零時,該域初始化為數據塊的字長,在CountMode為1時,該域被初始化為零。緩沖器每次與SRAM存儲器完成一次數據交換將其加M或者減M。(3)Max_length占16位本次數據傳輸的最大字長,在傳輸過程中該域不會改變。在Coun_mode為1時,當Length等于Max_length或者計算單元發出傳輸結束(EOS)信號時,表示SRAM存儲器與數據緩沖器之間的數據傳輸結束,在Count_mode為0時,當Length等于0時,表示SRAM存儲器與數據緩沖器之間數據傳輸結束。(4)CountMode占1位決定Length,0表示定長數據塊傳輸,計數時進行減操作,1表示不定長數據塊傳輸,計數時進行加操作。(5)Dir占1位,本次流傳輸的方向,1表示向SRAM存儲器寫入數據,0表示從SRAM存儲器中讀出數據。(6)Restartable占1位,1表示本次數據傳輸是長數據塊的一部分,等待本次傳輸結束后,系統會啟動該數據緩沖器繼續傳輸,本次傳輸結束后,并不向計算單元發送結束(EOS)信號,0表示本次數據傳輸是長數據塊的最后一部分,本次數據傳輸結束后向計算單元發送EOS信號。通過該域實現了硬件對軟件雙緩沖技術的硬件支持。(7)Go占1位,表示SRAM存儲器與數據緩沖器之間的還有數據傳輸。(8)Write占5位,在Count_mode為1的情況下才有意義,等待數據傳輸結束后,將Length的值寫入由Write給出的DRF的Length域。圖5給出了數據緩沖器訪問SRAM存儲器的流水線結構,負責動態仲裁K個數據緩沖器(DBs)訪問SRAM存儲器的請求,并且按流水線的方式訪問SRAM存儲器。數據緩沖器訪問SRAM存儲器的過程分為五級流水站仲裁站(ARBTRATOR)、選擇站(SEL)、RAM數據建立站(DATASETUP)、存儲器訪問站和數據緩沖器寫回站(WB)。(1)仲裁站仲裁器根據仲裁算法,從多個DB請求(requests)中選中一個DB。(2)選擇站根據仲裁站的仲裁結果GrantsReg[k-1:0]從K個DBs中選出相應DB的地址(Addr)、數據(Data)和方向(Dir)。其中GrantsReg[k-1:0]維持信號兩拍有效。同時生成訪問SRAM存儲器的使能信號WrSRFEn,當有一個DB被選中時,WrSRFEn為1;生成one-hot編碼的寫DB的使能信號Grants_wrdb,是Grantsreg[k-1:0]與Dir[k-1:0]位或的結果。(3)RAM數據建立站準備好讀或寫SRAM的數據(Data_Reg)、地址(Addr_Reg)、片選(WrSRFEN)及讀寫使能信號(Dir_Reg)。并將Grants_wrdb_reg寄存一拍。(4)存儲器訪問站因為存儲器的訪問時間大于系統時鐘周期,所以存儲器訪問需要兩個時鐘周期。需要將WRDBNum寄存一拍。(5)緩沖器寫回站如果是讀SRAM存儲器德操作,生成寫緩沖器的信號WriteDBNumReg和數據Dataout。圖6是本發明的仲裁算法,本發明中仲裁器采用的是總線多級分組LRU仲裁算法(下面以K=16來介紹仲裁算法的實現),首先將總線請求在頂層分為兩組,每組由8個DB組成,這兩組請求對應一個LRU位,每次仲裁時先根據該LRU位選擇其中的一組,選中后更新該位;再將這兩組請求分別以二叉樹的形式繼續分組,每一分組又對應一個LRU位;直至分組對應到每一個DB請求為止,因此K個DB請求將對應K-1個LRU位。這種算法既可以保證每個緩沖器相對公平地獲得總線使用權,又使其硬件實現代價小,運算速度快。設置15個一位寄存器R0~R14,記錄16個DBs請求被服務的狀態,二叉樹的結點為0時,表示樹的左邊對應的項最近被服務過,下次應選擇另一組未被服務的。仲裁時首先判斷R0~R14的值,同時考慮各DB是否有請求。如果某個DB的請求被服務,那么將從根節點到葉節點所經過的寄存器取反,其它寄存器狀態保持不變。圖7是SRAM存儲器的時鐘生成電路。由于本發明所采用的SRAM存儲器的訪問時間大于1個系統時鐘周期而小于兩個系統時鐘周期,因此訪問SRAM存儲器采用兩站的設計,SRAM存儲器的時鐘可以由系統時鐘生成模塊提供,也可以由該模塊自己生成。本發明采用了第二種方案,圖7給出了SRAM存儲器的時鐘生成電路,WrSRFen_Reg信號是訪問流水線中生成的SRAM體的訪問請求信號。采用該電路實現的門控時鐘,可極大降低功耗。權利要求1.一種面向流應用的片內存儲器,其特征在于它包括SRAM存儲器、描述符寄存器文件、一個或一個以上的數據緩沖器和存儲器訪問流水線,所述描述符寄存器文件由多個相同結構的寄存器組成,用來描述流數據在SRAM存儲器中的起始塊位置和長度信息,所述數據緩沖器是計算單元或其他部件訪問存儲器的邏輯接口,存儲器訪問流水線控制所有數據緩沖器對SRAM存儲器訪問的仲裁和訪存流水線,計算單元以及外部客戶端通過各個數據緩沖器,在存儲器訪問流水線的控制下訪問SRAM存儲器。2.根據權利要求1所述的面向流應用的片內存儲器,其特征在于所述數據緩沖器包括一個數據傳輸控制器和兩個結構一致的半緩沖器,數據傳輸控制器用來控制數據塊傳輸的過程,數據緩沖器具有兩個輸入輸出端口,一個是SRAM的讀寫端口,另外一個是其所服務客戶端的讀寫端口;兩個半緩沖器用來支持計算單元與數據緩沖器之間和數據緩沖器與SRAM存儲器之間同時進行數據交換,數據傳輸控制器中包含一個數據控制寄存器,數據控制寄存器用來從指令中獲取本次傳輸的數據塊地址、長度、傳輸方向、傳輸計數模式等信息,再向存儲器訪問流水線發出訪問請求,獲取訪問權限后由數據控制寄存器控制該數據傳輸過程。3.根據權利要求1或2所述的面向流應用的片內存儲器,其特征在于所述存儲器訪問流水線用來負責動態仲裁數據緩沖器訪問SRAM存儲器的請求,并且按流水線的方式訪問SRAM存儲器,數據緩沖器訪問SRAM存儲器的過程分為五級流水站(1)仲裁站仲裁器根據仲裁算法,從多個DB請求中選中一個DB;(2)選擇站根據仲裁站的仲裁結果GrantsReg[k-1:0]從K個數據緩沖器中選出相應DB的地址、數據和方向,其中GrantsReg[k-1:0]維持信號兩拍有效,同時生成訪問SRAM存儲器的使能信號WrSRFEn,當有一個DB被選中時,WrSRFEn為1;生成one-hot編碼的寫DB的使能信號Grants_wrdb,是Grantsreg[k-1:0]與Dir[k-1:0]位或的結果;(3)RAM數據建立站準備好讀或寫SRAM的數據、地址、片選及讀寫使能信號,并將Grants_wrdb_reg寄存一拍;(4)存儲器訪問站因為存儲器的訪問時間大于系統時鐘周期,所以存儲器訪問需要兩個時鐘周期,需要將WRDBNum寄存一拍;(5)緩沖器寫回站如果是讀SRAM存儲器的操作,生成寫緩沖器的信號WriteDBNumReg和數據Dataout。4.根據權利要求3所述的面向流應用的片內存儲器,其特征在于所述描述符寄存器文件由兩個域Length和Block組成,Length表示數據塊的字數,Block表示數據塊在存儲器中的起始塊地址。全文摘要本發明公開了一種面向流應用的片內存儲器,它包括SRAM存儲器、描述符寄存器文件、一個或一個以上的數據緩沖器和存儲器訪問流水線,所述描述符寄存器文件由多個相同結構的寄存器組成,用來描述流數據在SRAM存儲器中的起始塊位置和長度信息,所述數據緩沖器是計算單元或其他部件訪問存儲器的邏輯接口,存儲器訪問流水線控制所有數據緩沖器對SRAM存儲器訪問的仲裁和訪存流水線,計算單元以及外部客戶端通過數據緩沖器,在存儲器訪問流水線的控制下訪問SRAM存儲器。本發明能夠用來負責流數據和流指令在各部件間傳輸,既能同時為多個計算單元、網絡接口提供各種長度的流數據,又能作為片內大容量Cache緩存計算單元生產中間流。文檔編號G06F13/16GK101021818SQ20071003457公開日2007年8月22日申請日期2007年3月19日優先權日2007年3月19日發明者陳海燕,衣曉飛,蔣江,楊學軍,張民選,邢座程,張明,穆長富,陽柳,曾獻君,馬馳遠,李勇,高軍,李晉文,倪曉強,唐遇星,張承義,齊樹波申請人:中國人民解放軍國防科學技術大學