国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      多通道先進(jìn)先出緩存隊(duì)列控制器及訪問方法

      文檔序號(hào):6509622閱讀:189來源:國知局
      多通道先進(jìn)先出緩存隊(duì)列控制器及訪問方法
      【專利摘要】本發(fā)明實(shí)施例提供了一種多通道FIFO?queue控制器及多通道FIFO?queue訪問方法,該多通道FIFO?queue控制器包括:地址確定電路和控制電路;其中,地址確定電路用于:根據(jù)業(yè)務(wù)的標(biāo)識(shí)確定在數(shù)據(jù)緩存中的待訪問的塊的物理地址,所述數(shù)據(jù)緩存包含多個(gè)塊,每個(gè)塊包含m個(gè)存儲(chǔ)單元,m為正整數(shù);根據(jù)所述待訪問的塊的物理地址和待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;所述控制電路用于:根據(jù)所述地址確定電路確定的所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址訪問所述待訪問的數(shù)據(jù)。上述方案有助于多個(gè)業(yè)務(wù)對(duì)數(shù)據(jù)緩存的共享,有助于減少對(duì)FIFO?queue的資源的占用,且可靠性較高。
      【專利說明】多通道先進(jìn)先出緩存隊(duì)列控制器及訪問方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及數(shù)據(jù)傳送【技術(shù)領(lǐng)域】,尤其涉及多通道先進(jìn)先出緩存隊(duì)列(first infirst out queue, FIFO queue)控制器及訪問方法。
      【背景技術(shù)】
      [0002]在傳送領(lǐng)域,隨著傳輸帶寬越來越大(例如100G、200G或者400G),通訊設(shè)備中的現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,FPGA)在處理多業(yè)務(wù)時(shí)、往往把多路的低帶寬業(yè)務(wù)變換成統(tǒng)一位寬的時(shí)分信號(hào)(如640bit)。多業(yè)務(wù)對(duì)應(yīng)的帶寬可能隨著時(shí)間變化。在不同業(yè)務(wù)處理之間進(jìn)行適配的時(shí)候,需要一個(gè)FIFO queue對(duì)業(yè)務(wù)的數(shù)據(jù)進(jìn)行緩存。在大位寬的場景下,可能非常消耗FIFO queue的資源。具體來說,可能非常消耗FIFOqueue對(duì)應(yīng)的隨機(jī)存儲(chǔ)器(Random Access Memory, RAM)資源,查找表(Look Up Table, LUT)資源以及布線資源。
      [0003]一個(gè)現(xiàn)有的解決方案(簡稱方案I)如圖1所示。方案I將多個(gè)大位寬的FIFO實(shí)體,包封在一起作為一個(gè)多業(yè)務(wù)通道FIFO實(shí)體來使用。在數(shù)據(jù)輸入側(cè),進(jìn)來的數(shù)據(jù)流按照業(yè)務(wù)的通道號(hào)分發(fā)到對(duì)應(yīng)的FIFO實(shí)體;在數(shù)據(jù)輸出側(cè),根據(jù)業(yè)務(wù)的通道號(hào),從不同的FIFO實(shí)體中讀取數(shù)據(jù)。
      [0004]上述方案I中,多業(yè)務(wù)通道FIFO queue中不同業(yè)務(wù)通道對(duì)應(yīng)的RAM緩存和控制電路都不能共享,多業(yè)務(wù)通道FIFO queue所使用的RAM的大小必須按照最大業(yè)務(wù)帶寬顆粒的大小來設(shè)計(jì),當(dāng)業(yè)務(wù)通道數(shù)量很多(例如>=64)時(shí),RAM的資源耗費(fèi)相當(dāng)巨大,例如一個(gè)640bit位寬,80個(gè)業(yè)務(wù)通道,每業(yè)務(wù)通道最深128個(gè)單元的多業(yè)務(wù)通道FIF0,在FPGA上設(shè)計(jì)需要近400塊RAM,而一片較大的FPGA上總的RAM資源也就2000多塊。并且,在實(shí)際應(yīng)用場景中,只有非常少數(shù)的幾個(gè)業(yè)務(wù)通道會(huì)有大帶寬的業(yè)務(wù),其他業(yè)務(wù)通道都是空閑的(總的帶寬不變,某些業(yè)務(wù)通道帶寬大,其他的業(yè)務(wù)通道必然帶寬小或者沒有),這樣就造成了RAM資源的浪費(fèi)。
      [0005]另外一種解決方案(下面簡述方案2)如圖2所示,該方案2中,所有業(yè)務(wù)通道共享一塊大的緩存,每個(gè)業(yè)務(wù)通道按照業(yè)務(wù)顆粒大小分配空間,每個(gè)業(yè)務(wù)通道的空間通過一個(gè)循環(huán)鏈表組織起來。每個(gè)業(yè)務(wù)通道都有自己的鏈表指針,每個(gè)業(yè)務(wù)通道都通過當(dāng)前的讀寫指針進(jìn)行緩存的讀寫操作。
      [0006]該方案2中所有業(yè)務(wù)通道的空間通過循環(huán)鏈表形式組織起來,當(dāng)鏈表的指針發(fā)生異常錯(cuò)誤時(shí),會(huì)導(dǎo)致無法恢復(fù)的錯(cuò)誤,可靠性較差。

      【發(fā)明內(nèi)容】

      [0007]本發(fā)明實(shí)施例提供了一種多通道先進(jìn)先出緩存隊(duì)列控制器及多通道先進(jìn)先出緩存隊(duì)列訪問方法,有助于減少對(duì)多個(gè)業(yè)務(wù)進(jìn)行處理時(shí),對(duì)FIFO queue的資源占用較多的問題。
      [0008]第一方面,提供了一種多通道FIFO queue控制器,包括:地址確定電路和控制電路;
      [0009]所述地址確定電路用于:
      [0010]根據(jù)業(yè)務(wù)的標(biāo)識(shí)確定在數(shù)據(jù)緩存中的待訪問的塊的物理地址,所述數(shù)據(jù)緩存包含多個(gè)塊,每個(gè)塊包含m個(gè)存儲(chǔ)單元,m為正整數(shù);
      [0011]根據(jù)所述待訪問的塊的物理地址和待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0012]所述控制電路用于:
      [0013]根據(jù)所述地址確定電路確定的所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址訪問所述待訪問的數(shù)據(jù)。
      [0014]第一方面的第一種可能的實(shí)現(xiàn)方式中,所述地址確定電路具體用于:
      [0015]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址;
      [0016]根據(jù)所述待訪問的塊的邏輯地址,以及所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址;
      [0017]根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址。
      [0018]根據(jù)第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述地址確定電路具體用于:
      [0019]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址;
      [0020]根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址得到所述待訪問的塊的第一邏輯地址logic_blk_addr 和塊內(nèi)偏移地址 logic_shift_addr ;
      [0021]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢首塊地址表,得到所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址 f irst_blk_addr ;
      [0022]根據(jù)待訪問的塊的第二邏輯地址查詢塊地址表,得到所述待訪問的塊的物理地址,所述待訪問的塊的第二邏輯地址等于logic_blk_addr與f irst_blk_addr的和;
      [0023]根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0024]其中,所述塊地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的第二邏輯地址取值為[first_blk_addr, first_blk_addr+n]中任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量;
      [0025]所述首塊地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址;
      [0026]所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù)。
      [0027]根據(jù)第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述地址確定電路具體用于:
      [0028]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址;[0029]根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址,得到所述待訪問的塊的邏輯地址logic_blk_addr和塊內(nèi)偏移地址logic_shift_addr ;
      [0030]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)和所述待訪問的塊的邏輯地址logiC_blk_addr查詢塊重映射表,得到所述待訪問的塊的物理地址;
      [0031 ] 根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0032]其中,所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù);
      [0033]所述塊重映射表中記載所述業(yè)務(wù)的標(biāo)識(shí)、以及所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的邏輯地址取值為[0,n]中的任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量。
      [0034]根據(jù)第一方面的第二種可能的實(shí)現(xiàn)方式或者第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述地址確定電路還用于:
      [0035]在所述控制電路訪問所述待訪問的數(shù)據(jù)之后,使用所述業(yè)務(wù)下次訪問的數(shù)據(jù)的邏輯地址替換所述邏輯地址表中所述待訪問的數(shù)據(jù)的邏輯地址。
      [0036]第二方面,提供了一種多通道FIFO queue的訪問方法,包括:
      [0037]根據(jù)業(yè)務(wù)的標(biāo)識(shí),確定在數(shù)據(jù)緩存中待訪問的塊的物理地址,所述數(shù)據(jù)緩存包含多個(gè)塊,每個(gè)塊包含m個(gè)存儲(chǔ)單元,m為正整數(shù);
      [0038]根據(jù)所述待訪問的塊的物理地址和待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0039]根據(jù)所述地址確定電路確定的所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址訪問所述待訪問的數(shù)據(jù)。
      [0040]第二方面的第一種可能的實(shí)現(xiàn)方式中,所述確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址,包括:
      [0041]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址;
      [0042]根據(jù)所述待訪問的塊的邏輯地址,以及根據(jù)所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址;
      [0043]根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址。
      [0044]根據(jù)第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,根據(jù)所述業(yè)務(wù)的標(biāo)識(shí),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,根據(jù)所述待訪問的塊的邏輯地址,以及根據(jù)所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址,根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址,具體包括:
      [0045]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址;[0046]根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址得到所述待訪問的塊的第一邏輯地址logic_blk_addr 和塊內(nèi)偏移地址 logic_shift_addr ;
      [0047]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢首塊地址表,得到所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址 f irst_blk_addr ;
      [0048]根據(jù)待訪問的塊的第二邏輯地址查詢塊地址表,得到所述待訪問的塊的物理地址,所述待訪問的塊的第二邏輯地址等于logic_blk_addr與f irst_blk_addr的和;
      [0049]根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0050]其中,所述塊地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的第二邏輯地址取值為[first_blk_addr, first_blk_addr+n]中任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量;
      [0051]所述首塊地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址;
      [0052]所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù)。
      [0053]根據(jù)第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,根據(jù)所述業(yè)務(wù)的標(biāo)識(shí),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,根據(jù)所述待訪問的塊的邏輯地址,以及根據(jù)所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址,根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址,具體包括:
      [0054]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址;
      [0055]根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址,得到所述待訪問的塊的邏輯地址logic_blk_addr和塊內(nèi)偏移地址logic_shift_addr ;
      [0056]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)和所述待訪問的塊的邏輯地址logic_blk_addr查詢塊重映射表,得到所述待訪問的塊的物理地址;
      [0057]根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0058]其中,所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù);
      [0059]所述塊重映射表中記載所述業(yè)務(wù)的標(biāo)識(shí)、以及所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的邏輯地址取值為[0,n]中的任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量。
      [0060]根據(jù)第二方面的第三種可能的實(shí)現(xiàn)方式或者第二方面的第四種可能的實(shí)現(xiàn)方式,在第二方面的第五種可能的實(shí)現(xiàn)方式中,在所述控制電路訪問所述待訪問的數(shù)據(jù)之后,還包括:
      [0061]使用所述業(yè)務(wù)下次訪問的數(shù)據(jù)的邏輯地址替換所述邏輯地址表中所述待訪問的數(shù)據(jù)的邏輯地址
      [0062]本發(fā)明實(shí)施例的有益效果包括:
      [0063]本發(fā)明實(shí)施例提供了多通道FIFO queue控制器及多通道FIFO queue訪問方法。多通道FIFO queue控制器包地址確定電路和控制電路。數(shù)據(jù)緩存被分為多個(gè)塊,地址確定電路可以根據(jù)業(yè)務(wù)的標(biāo)識(shí)確定待訪問的塊的物理地址。地址確定電路還可以據(jù)此進(jìn)一步確定待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址??刂齐娐房梢愿鶕?jù)地址確定電路確定的待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址訪問待訪問的數(shù)據(jù)。因此,上述技術(shù)方案有助于多個(gè)業(yè)務(wù)對(duì)數(shù)據(jù)緩存的共享,有助于減少對(duì)FIFO queue的資源的占用。此外,本發(fā)明實(shí)施例提供了待訪問的數(shù)據(jù)的物理地址的確定方法。即根據(jù)業(yè)務(wù)的標(biāo)識(shí),確定待訪問的塊的物理地址,并根據(jù)待訪問的塊的物理地址和待訪問的數(shù)據(jù)在待訪問的塊內(nèi)地址,確定待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址。根據(jù)待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址訪問待訪問的數(shù)據(jù)。上述技術(shù)方案中,確定待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址的過程中,不需要依賴鏈表指針,可靠性較高。
      【專利附圖】

      【附圖說明】
      [0064]圖1為現(xiàn)有技術(shù)的方案I中FIFO queue讀寫數(shù)據(jù)的示意圖;
      [0065]圖2為現(xiàn)有技術(shù)的方案2中FIFO queue讀寫數(shù)據(jù)的示意圖;
      [0066]圖3為本發(fā)明實(shí)施例提供的多通道FIFO queue控制器的結(jié)構(gòu)示意圖;
      [0067]圖4為本發(fā)明實(shí)施例提供的實(shí)例一的多通道FIFO queue控制器和數(shù)據(jù)緩存的結(jié)構(gòu)示意圖;
      [0068]圖5為本發(fā)明實(shí)施例提供的CH_BLK_MAP_TBL與其他各表的關(guān)聯(lián)關(guān)系示意圖;
      [0069]圖6為本發(fā)明實(shí)施例提供的表項(xiàng)自動(dòng)刷新單元的工作過程的示意圖;
      [0070]圖7為本發(fā)明實(shí)施例提供的本實(shí)例一提供的多通道FIFO queue控制器的邏輯框圖;
      [0071]圖8為本發(fā)明實(shí)施例提供的實(shí)例二的多通道FIFO queue控制器和數(shù)據(jù)緩存的結(jié)構(gòu)示意圖;
      [0072]圖9為本發(fā)明實(shí)施例提供的實(shí)例二中塊重映射表的數(shù)據(jù)結(jié)構(gòu)的示意圖;
      [0073]圖10為本發(fā)明實(shí)施例提供的一個(gè)例子中BLK_REMAP_TBL的內(nèi)容的示意圖;
      [0074]圖11為本發(fā)明實(shí)施例提供的多通道FIFO queue訪問方法的流程圖。
      【具體實(shí)施方式】
      [0075]下面結(jié)合說明書附圖,對(duì)本發(fā)明實(shí)施例提供的一種多通道先進(jìn)先出緩存隊(duì)列控制器及多通道先進(jìn)先出緩存隊(duì)列訪問方法的【具體實(shí)施方式】進(jìn)行說明。
      [0076]本發(fā)明實(shí)施例涉及的業(yè)務(wù)可以承載在開放系統(tǒng)互連參考模型(Open SystemsInterconnection reference model, OSI reference model)定義的第一層至第七層中的至少一層。例如,所述業(yè)務(wù)可以是承載在第三層的業(yè)務(wù)或者承載在第四層的業(yè)務(wù)。所述承載在第三層的業(yè)務(wù)可以是網(wǎng)際協(xié)議(Internet Protocol, IP)業(yè)務(wù)。所述承載在第四層的業(yè)務(wù)可以是傳輸控制協(xié)議(Transmission Control Protocol,TCP)業(yè)務(wù)或者用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram ProtocoI,UDP)業(yè)務(wù)。所述業(yè)務(wù)可以是視頻傳輸業(yè)務(wù)、音頻傳輸業(yè)務(wù)或者文本傳輸業(yè)務(wù)。
      [0077]首先對(duì)本發(fā)明實(shí)施例提供的多通道FIFO queue控制器進(jìn)行詳細(xì)說明。
      [0078]如圖3所示,本發(fā)明實(shí)施例提供的FIFO queue控制器,包括:地址確定電路301和控制電路302 ;其中:
      [0079]地址確定電路301用于:
      [0080]根據(jù)業(yè)務(wù)的標(biāo)識(shí)確定在數(shù)據(jù)緩存中的待訪問的塊的物理地址;根據(jù)待訪問的塊的物理地址和待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0081]在本發(fā)明實(shí)施例中,數(shù)據(jù)緩存包含多個(gè)塊,每個(gè)塊內(nèi)都包含有m個(gè)存儲(chǔ)單元,m為正整數(shù),數(shù)據(jù)緩存可以為RAM或其他常用存儲(chǔ)器。
      [0082]控制電路302用于:
      [0083]根據(jù)所述地址確定電路302確定的所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址訪問所述待訪問的數(shù)據(jù)。
      [0084]上述訪問的操作可以是例如讀和/或?qū)懙牟僮鳎L問的數(shù)據(jù)即待讀出或?qū)懭氲臄?shù)據(jù),待訪問的塊即待讀出或?qū)懭氲臄?shù)據(jù)所在的塊。
      [0085]本發(fā)明實(shí)施例中,數(shù)據(jù)緩存預(yù)先被劃分為若干個(gè)塊(塊的總數(shù) > 最大可能的業(yè)務(wù)數(shù),在本發(fā)明實(shí)施例適用的多業(yè)務(wù)的應(yīng)用場景中,塊的總數(shù)不小于2個(gè)),每個(gè)塊m個(gè)單元,m的大小可以按照多業(yè)務(wù)中的最小帶寬需求來設(shè)計(jì)。由于總的業(yè)務(wù)帶寬不變,當(dāng)多通道FIFO實(shí)體在處理大帶寬的業(yè)務(wù)時(shí),必然業(yè)務(wù)通道比較少,從而對(duì)于每個(gè)業(yè)務(wù)來說,其對(duì)應(yīng)的業(yè)務(wù)通道能夠分配到更多的塊;當(dāng)處理小帶寬的業(yè)務(wù)時(shí),業(yè)務(wù)通道變多,對(duì)于每個(gè)業(yè)務(wù)來說,其對(duì)應(yīng)的業(yè)務(wù)通道仍然能夠分配到滿足要求的塊。多業(yè)務(wù)的應(yīng)用場景下,每個(gè)業(yè)務(wù)分配的塊的多少可以根據(jù)該業(yè)務(wù)實(shí)際需要占用帶寬的大小來決定,占用帶寬多的可分配較多的塊,否則,分配較少的塊,也可根據(jù)各業(yè)務(wù)帶寬需求的變化,對(duì)各業(yè)務(wù)分配的塊的數(shù)量進(jìn)行實(shí)時(shí)調(diào)整。
      [0086]上述地址確定電路301在具體實(shí)施時(shí),可以通過一個(gè)整體的電路模塊來實(shí)現(xiàn),也可以依據(jù)不同的訪問的需求例如讀操作以及寫操作的要求,分設(shè)在兩塊不同的電路模塊上,以分別實(shí)現(xiàn)讀操作的地址確定功能和寫操作的地址確定功能,具體的電路實(shí)現(xiàn)方式屬于現(xiàn)有技術(shù),在此不再贅述。
      [0087]類似地,上述控制電路302,在具體實(shí)施時(shí),可以通過一個(gè)整體的電路模塊來實(shí)現(xiàn),也可以依據(jù)不同的訪問的需求例如讀操作以及寫操作的要求,分設(shè)在兩塊不同的電路模塊上,以分別實(shí)現(xiàn)對(duì)讀和寫操作的控制。
      [0088]本發(fā)明實(shí)施例提供的上述多通道FIFO queue控制器中,地址確定電路301,進(jìn)一步用于根據(jù)業(yè)務(wù)的標(biāo)識(shí)(例如業(yè)務(wù)對(duì)應(yīng)的通道號(hào)等),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址;
      [0089]并根據(jù)所述待訪問的塊的邏輯地址,以及所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址;
      [0090]根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址。
      [0091]更進(jìn)一步地,上述地址確定電路301根據(jù)業(yè)務(wù)的標(biāo)識(shí)(例如業(yè)務(wù)對(duì)應(yīng)的通道號(hào)等),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址;根據(jù)所述待訪問的塊的邏輯地址,以及所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址;根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址,在具體實(shí)施時(shí),可以有兩種具體的實(shí)施方式,具體說明如下:
      [0092]第一種方式:
      [0093]地址確定電路根據(jù)業(yè)務(wù)的標(biāo)識(shí)(例如業(yè)務(wù)對(duì)應(yīng)的通道號(hào))查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址;
      [0094]根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址得到所述待訪問的塊的第一邏輯地址logic_blk_addr 和塊內(nèi)偏移地址 logic_shift_addr ;
      [0095]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢首塊地址表,得到所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址 f irst_blk_addr ;
      [0096]根據(jù)待訪問的塊的第二邏輯地址查詢塊地址表,得到所述待訪問的塊的物理地址,所述待訪問的塊的第二邏輯地址等于logic_blk_addr與first_blk_addr的和(即:logic_blk_addr+first_blk_addr);
      [0097]根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0098]其中,所述塊地址表中記載:所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的第二邏輯地址取值為[first_blk_addr, first_blk_addr+n]中任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量;
      [0099]所述首塊地址表中記載:所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址;
      [0100]所述邏輯地址表中記載:所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mx所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù)。
      [0101]對(duì)于多業(yè)務(wù)的應(yīng)用場景來說,上述塊地址表中,可以記載多個(gè)業(yè)務(wù)的標(biāo)識(shí)、每個(gè)業(yè)務(wù)分別占用的所有塊的第二邏輯地址和每個(gè)業(yè)務(wù)占用的所有塊的物理地址的映射關(guān)系。
      [0102]類似地,上述首塊地址表中,可以記載多個(gè)業(yè)務(wù)的標(biāo)識(shí)、每個(gè)業(yè)務(wù)分別占用的所有塊中首個(gè)塊的邏輯地址。
      [0103]類似地,上述邏輯地址表中,可以記載多個(gè)業(yè)務(wù)的標(biāo)識(shí)、每個(gè)業(yè)務(wù)待訪問的數(shù)據(jù)的邏輯地址(當(dāng)前訪問操作涉及的邏輯地址)。
      [0104]上述待訪問的數(shù)據(jù)的邏輯地址、待訪問的塊的第一邏輯地址、首個(gè)塊的邏輯地址和待訪問的塊的第二邏輯地址等邏輯地址,均為線性,以某業(yè)務(wù)A待訪問的數(shù)據(jù)的邏輯地址為29,每個(gè)塊10個(gè)存儲(chǔ)單元為例,地址確定電路根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址(29)得到所述待訪問的塊的第一邏輯地址logic_blk_addr和塊內(nèi)偏移地址logic_shift_addr的過程,實(shí)際上就是以待訪問的數(shù)據(jù)的邏輯地址除以每個(gè)塊的存儲(chǔ)單元數(shù)得到,即:待訪問的塊的第一邏輯地址(logic_blk_add)等于所述待訪問的數(shù)據(jù)的邏輯地址(29)除以每個(gè)塊的存儲(chǔ)單元數(shù)(10)得到的商(2),塊內(nèi)偏移地址(logic_shift_addr)等于所述待訪問的數(shù)據(jù)的邏輯地址(29)除以每個(gè)塊的存儲(chǔ)單元數(shù)(10)得到的余數(shù)(9)。
      [0105]對(duì)于多業(yè)務(wù)的場景來說,每個(gè)業(yè)務(wù)所占用的數(shù)據(jù)緩存中的塊是不同的,如果數(shù)據(jù)緩存中所有塊統(tǒng)一按照線性來設(shè)計(jì)其邏輯地址(例如0、1、2、3……)相應(yīng)地,在首塊地址表中,每個(gè)業(yè)務(wù)所占用的所有塊的首個(gè)塊的邏輯地址不同,還是以上述某業(yè)務(wù)A為例,例如該業(yè)務(wù)A占用的占用的所有塊的首個(gè)塊的地址為12,則待訪問的塊的第二邏輯地址等于14(12+2),根據(jù)塊地址表中的每個(gè)塊的第二邏輯地址和物理地址之間的映射關(guān)系,就可以查找到所述待訪問的塊的物理地址。
      [0106]上述說明中,為了說明的方便,將待訪問的塊的邏輯地址采用第一邏輯地址和第二邏輯地址來分別稱呼,實(shí)際上,第一邏輯地址表征的是針對(duì)某個(gè)業(yè)務(wù)所占用的所有塊中,待訪問的塊到底是第幾個(gè)塊,某業(yè)務(wù)A待訪問的數(shù)據(jù)的邏輯地址為29,每個(gè)塊10個(gè)存儲(chǔ)單元為例,待訪問的塊的第一邏輯地址(logic_blk_add)等于2,意味著待訪問的塊為該業(yè)務(wù)A所占用的所有塊中第2個(gè)塊(從第O個(gè)塊開始計(jì)),第二邏輯地址表征的是對(duì)于整個(gè)數(shù)據(jù)緩存中所有塊來說,其實(shí)際的邏輯地址是多少,例如業(yè)務(wù)A所占用的所有塊的首個(gè)塊的邏輯地址為12時(shí),由于邏輯地址是線性的,業(yè)務(wù)A待訪問的塊的第二邏輯地址為14。
      [0107]第二種方式:
      [0108]地址確定電路根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)(例如業(yè)務(wù)對(duì)應(yīng)的通道號(hào))查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址;
      [0109]根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址,得到所述待訪問的塊的邏輯地址logic_blk_addr和塊內(nèi)偏移地址logic_shift_addr ;
      [0110]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)和所述待訪問的塊的邏輯地址logic_blk_addr查詢塊重映射表,得到所述待訪問的塊的物理地址;
      [0111]根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0112]其中,所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù);
      [0113]所述塊重映射表中記載所述業(yè)務(wù)的標(biāo)識(shí)、以及所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的邏輯地址取值為[0,n]中的任一整數(shù),所述n為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量。
      [0114]第二種方式與第一種方式的區(qū)別在于,第二種方式使用塊重映射表來替代塊地址表和首塊地址表的作用。
      [0115]對(duì)于多業(yè)務(wù)的應(yīng)用場景來說,上述邏輯地址表中,可以記載多個(gè)業(yè)務(wù)的標(biāo)識(shí)、每個(gè)業(yè)務(wù)待訪問的數(shù)據(jù)的邏輯地址(當(dāng)前訪問操作涉及的邏輯地址)。
      [0116]類似地,上述塊重映射表中,可以記載多個(gè)業(yè)務(wù)的標(biāo)識(shí)、以及每個(gè)業(yè)務(wù)占用的所有塊的邏輯地址和每個(gè)業(yè)務(wù)占用的所有塊的物理地址的映射關(guān)系。
      [0117]對(duì)于塊重映射表來說,其記載有每個(gè)業(yè)務(wù),每個(gè)業(yè)務(wù)占用的所有塊的邏輯地址和對(duì)應(yīng)的物理地址,在具體實(shí)施時(shí),該表可以是一個(gè)n*x大小的二維表(η為數(shù)據(jù)緩存的分塊總數(shù),X為業(yè)務(wù)的總數(shù)),有若干紀(jì)錄項(xiàng),每個(gè)紀(jì)錄項(xiàng)記錄第i個(gè)業(yè)務(wù)第j個(gè)塊的物理地址,i的取值為(O-X)中的任一整數(shù),j的取值為(O-η)中任一整數(shù)。
      [0118]第二種方式中,上述地址確定電路根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)(例如業(yè)務(wù)對(duì)應(yīng)的通道號(hào))查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址;以及根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址,得到所述待訪問的塊的邏輯地址logic_blk_addr和塊內(nèi)偏移地址logic_shift_add的步驟,與前述第一種方式相同,在此不再贅述。
      [0119]為了更好地說明本發(fā)明實(shí)施例提供的上述多通道FIFO queue控制器的結(jié)構(gòu)和功能,下面以兩個(gè)具體實(shí)例對(duì)其進(jìn)行詳細(xì)說明:
      [0120]實(shí)例一:
      [0121]如圖4所示,在本實(shí)例一的多通道FIFO queue控制器中,地址確定電路通過兩個(gè)獨(dú)立的電路模塊來實(shí)現(xiàn)即:FIF 0寫地址重映射單元401 (負(fù)責(zé)確定寫操作的地址)和FIFO讀地址重映射單元402 (負(fù)責(zé)確定讀操作的地址),控制電路(在圖4中未示意出)分別通過發(fā)出RAM讀寫使能信號(hào)(ram_wr_en,ram_rd_en),控制數(shù)據(jù)緩存(RAM) 403中數(shù)據(jù)的讀和寫的操作。
      [0122]上述FIFO寫地址重映射單元401和FIFO讀地址重映射單元402的功能相互獨(dú)立,對(duì)于整個(gè)多通道FIFO queue控制器來說,當(dāng)前可只執(zhí)行RAM403的讀或?qū)懖僮?,也可以同時(shí)執(zhí)行RAM的讀和寫的操作。
      [0123]RAM403被劃分為η (η >最大可能的業(yè)務(wù)通道數(shù))個(gè)塊,每個(gè)塊m個(gè)單元,m的大小可以按照各業(yè)務(wù)通道中的最小帶寬需求來設(shè)計(jì)。
      [0124]RAM403的訪問地址,分為兩個(gè)層次:邏輯地址和物理地址。邏輯地址在某個(gè)FIFO業(yè)務(wù)通道的空間內(nèi)是線性的,例如RAM中的塊的邏輯地址為0、1、2、3……等;通過這個(gè)邏輯地址,可以產(chǎn)生數(shù)據(jù)緩存空滿的狀態(tài)告警和是否達(dá)到設(shè)置的水線等告警信息,物理地址則是RAM中的實(shí)際訪問地址。
      [0125]如圖4所示,對(duì)于FIFO寫地址重映射單元401和FIFO讀地址重映射單元402來說,分別包含四個(gè)表:塊數(shù)量表(BLK_NUM_TBL)、首塊地址表(FIRST_BLK_ADDR_TBL)、邏輯地址表(L0GIC_ADDR_TBL)和塊地址表(BLK_ADDR_TBL),F(xiàn)IFO寫地址重映射單元401和FIFO讀地址重映射單元402通過分別查詢各自包含的表,完成邏輯地址到物理地址的重映射(即確定當(dāng)前業(yè)務(wù)通道讀寫操作訪問的物理地址),上述過程對(duì)于FIFO寫地址重映射單元401和FIFO讀地址重映射單元402來說是類似的,以下針對(duì)讀和寫的地址重映射過程進(jìn)行統(tǒng)一的說明。
      [0126]FIFO寫地址重映射單元401和FIFO讀地址重映射單元402包含的各表的內(nèi)容說明如下:
      [0127]塊數(shù)量表(BLK_NUM_TBL):在多應(yīng)用的場景下,該表的大小為最大可能的業(yè)務(wù)數(shù)X,內(nèi)容為每個(gè)業(yè)務(wù)占用的緩沖(BUFFER)塊數(shù)。例如第5個(gè)地址空間的內(nèi)容為6,表示業(yè)例如業(yè)務(wù)通道號(hào)為5的業(yè)務(wù)占共用了 6個(gè)塊。
      [0128]首塊地址表(FIRST_BLK_ADDR_TBL):在多應(yīng)用的場景下,該表大小為最大可能業(yè)務(wù)數(shù),地址為業(yè)務(wù)通道號(hào),內(nèi)容為各業(yè)務(wù)通道號(hào)的業(yè)務(wù)所占用的塊地址在BLK_ADDR_TBL表內(nèi)的首地址(即占用的所有塊中首個(gè)塊的邏輯地址)。[0129]邏輯地址表(L0GIC_ADDR_TBL):該表大小為最大可能業(yè)務(wù)數(shù)x,地址為業(yè)務(wù)通道號(hào),內(nèi)容為該業(yè)務(wù)待讀(寫)的數(shù)據(jù)的線性邏輯地址。邏輯地址范圍=(O, m*占用塊數(shù))中任一整數(shù)。換言之,F(xiàn)IFO寫地址重映射單元401中包含的邏輯地址表的內(nèi)容為各業(yè)務(wù)待寫的線性邏輯地址,F(xiàn)IFO讀地址重映射單元402中包含的邏輯地址表的內(nèi)容為各業(yè)務(wù)待讀的線性邏輯地址,邏輯地址可用于判斷數(shù)據(jù)緩存的狀態(tài),如空滿、水線等等。
      [0130]塊地址表(BLK_ADDR_TBL):該表大小為RAM403的分塊數(shù)n,記載了每個(gè)業(yè)務(wù)占用的所有塊的實(shí)際塊地址(即物理地址)。
      [0131]如圖4所示,實(shí)例一中,除了 FIFO寫地址重映射單元401和FIFO讀地址重映射單元402之外,該多通道FIFO queue控制器還可以包括:表項(xiàng)自動(dòng)刷新單元404,表項(xiàng)自動(dòng)刷新單元404分別與FIFO寫地址重映射單元401和FIFO讀地址重映射單元402相連,用于根據(jù)通道-塊映射表(CH_BLK_MAP_TBL)分別生成并刷新FIFO寫地址重映射單元401和FIFO讀地址重映射單元402中包含的塊數(shù)量表(BLK_NUM_TBL)、塊地址表(BLK_ADDR_TBL)和首塊地址表(FIRST_BLK_ADDR_TBL)的表項(xiàng)。
      [0132]CH_BLK_MAP_TBL的內(nèi)容是根據(jù)用戶的需求預(yù)先設(shè)置的,大小為RAM的分塊數(shù)n,內(nèi)容為業(yè)務(wù)通道號(hào)。例如業(yè)務(wù)通道號(hào)為2 (簡稱業(yè)務(wù)通道2)的業(yè)務(wù)占用第2、3個(gè)塊,則CH_BLK_MAP_TBL的第2、3個(gè)地址空間的內(nèi)容都為2。
      [0133]以一個(gè)簡單的實(shí)例說明上述各表的內(nèi)容以及它們之間的關(guān)聯(lián)關(guān)系,在該實(shí)例中,多通道FIFO實(shí)體的數(shù)據(jù)緩存(RAM)分塊數(shù)為12,最多業(yè)務(wù)數(shù)為6,實(shí)際使用的只有3個(gè)業(yè)務(wù)(對(duì)應(yīng)的業(yè)務(wù)通道號(hào)為0、2、5)情況,其中:
      [0134]業(yè)務(wù)通道O的業(yè)務(wù)占用了 0、3、6、9的塊;
      [0135]業(yè)務(wù)通道2的業(yè)務(wù)占用了 1、4、7、10的塊;
      [0136]業(yè)務(wù)通道5的業(yè)務(wù)占用了 2、5、8、11的塊;
      [0137]如圖5所示,CH_BLK_MAP_TBL中,不同填充圖案代表一個(gè)業(yè)務(wù)通道,填充右向斜線的塊均為通道號(hào)為O的業(yè)務(wù)占用的塊(0、3、6、9),填充左向斜線的塊均為業(yè)務(wù)通道號(hào)為2的業(yè)務(wù)占用的塊(1、4、7、10),填充交叉網(wǎng)格線的塊均為業(yè)務(wù)通道號(hào)為5的業(yè)務(wù)占用的塊(2、
      5、8、11)。
      [0138]在BLK_NUM_TBL中,業(yè)務(wù)通道號(hào)為0、2和5的業(yè)務(wù)占用的塊數(shù)均為4、其他業(yè)務(wù)占用的塊數(shù)則均為0,這三個(gè)業(yè)務(wù)占用的塊數(shù)分別使用相應(yīng)的填充圖案顯示。
      [0139]在BLK_ADDR_TBL中,記載了各業(yè)務(wù)占用的塊的物理地址,例如業(yè)務(wù)通道號(hào)為O的業(yè)務(wù)占用的塊的物理地址為0、3、6和9,業(yè)務(wù)通道號(hào)為2的業(yè)務(wù)占用的塊的物理地址為1、
      4、7和10,業(yè)務(wù)通道號(hào)為5的業(yè)務(wù)占用的塊的物理地址為2、5、8和11。
      [0140]相應(yīng)地,在FIRST_BLK_ADDR_TBL中,業(yè)務(wù)通道號(hào)為O的業(yè)務(wù)所占有的所有塊中首個(gè)塊的地址為0,業(yè)務(wù)通道號(hào)為2的業(yè)務(wù)所占有的所有塊中首個(gè)塊的地址為4,通道號(hào)為5的業(yè)務(wù)首個(gè)塊的地址為8。
      [0141]FIFO寫地址重映射單元401和FIFO讀地址重映射單元402讀寫地址重映射的過程如下:
      [0142]根據(jù)前級(jí)送來的業(yè)務(wù)通道號(hào),查詢塊數(shù)量表(BLK_NUM_TBL)、首塊地址表(FIRST_BLK_ADDR_TBL)和邏輯地址表(L0GIC_ADDR_TBL),得到該業(yè)務(wù)通道號(hào)的業(yè)務(wù)所占用的塊數(shù)(blk_num)、該業(yè)務(wù)待讀寫的塊的邏輯地址(logic_blk_addr)和塊內(nèi)偏移地址(logic_shift_addr)、該業(yè)務(wù)所占用的所有塊中首個(gè)塊的邏輯地址(first_blk_addr)。
      [0143]查詢?cè)摌I(yè)務(wù)所占用的塊數(shù)(blk_num),可以獲知該業(yè)務(wù)所占用的塊的邏輯地址范圍,在該業(yè)務(wù)需讀寫的塊的邏輯地址在邏輯地址范圍內(nèi)時(shí),也就是說該業(yè)務(wù)待讀寫的塊的邏輯地址未超出該邏輯地址范圍的上限時(shí),繼續(xù)根據(jù)logic_blk_addr+first_blk_addr查詢塊地址表(BLK_ADDR_TBL),得到該業(yè)務(wù)待讀寫的塊的物理地址(phy_blk_addr),根據(jù)該業(yè)務(wù)待讀寫的塊的物理地址(phy_bIk_addr)和塊內(nèi)偏移地址(logic_shift_addr),確定該業(yè)務(wù)待讀寫的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址(phy_addr),完成邏輯地址到物理地址的映射。同時(shí),將{logic_blk_addr, logic_shift_addr}+l作為下次讀寫操作的邏輯地址(logic_addr_next)寫回(L0GIC_ADDR_TBL),更新邏輯地址表。
      [0144]隨著讀寫操作的進(jìn)行,由于邏輯地址表中記載的邏輯地址不斷向前推進(jìn),有可能會(huì)出現(xiàn)邏輯地址超出業(yè)務(wù)占用的塊的地址范圍,為了防止讀寫操作訪問非該業(yè)務(wù)對(duì)應(yīng)的緩存空間,在本發(fā)明實(shí)施例中,F(xiàn)IFO寫地址重映射單元401和FIFO讀地址重映射單元402如果查詢各自的邏輯地址表,判斷該業(yè)務(wù)待讀寫的塊的邏輯地址超出邏輯地址的范圍的上限時(shí),將邏輯地址表中該業(yè)務(wù)待讀寫的塊的邏輯地址置為0,意味著本次讀寫需要從該業(yè)務(wù)占用的首個(gè)塊開始,保證讀寫操作都在該業(yè)務(wù)占用的塊內(nèi)進(jìn)行。
      [0145]還有一種情況,如果在上述地址重映射的過程中,F(xiàn)IFO寫地址重映射單元401和FIFO讀地址重映射單元402讀取的該業(yè)務(wù)占用數(shù)據(jù)緩存的塊數(shù)為O時(shí),確定該業(yè)務(wù)的業(yè)務(wù)通道號(hào)為非法,讀寫控制單元會(huì)據(jù)此情況,控制該業(yè)務(wù)的讀寫使能為O。
      [0146]本實(shí)例一中,還提供了根據(jù)業(yè)務(wù)待讀寫的邏輯地址進(jìn)行空滿告警和水線告警的機(jī)制,具體由FIFO告警單元405來實(shí)現(xiàn),同時(shí),前述邏輯地址表中,除了記載各業(yè)務(wù)待讀和寫的數(shù)據(jù)的線性邏輯地址之外,還包括記載各業(yè)務(wù)當(dāng)前讀和寫的符號(hào)位,這樣,邏輯地址表的數(shù)據(jù)結(jié)構(gòu)為{寫地址符號(hào)位(I比特),寫地址},{讀地址符號(hào)位(I比特),讀地址}。
      [0147]上述寫地址符號(hào)位(讀地址符號(hào)位)表征當(dāng)前各業(yè)務(wù)寫(讀)的邏輯地址是否增加到等于所占空間大小的比特位。
      [0148]邏輯地址表中的寫地址符號(hào)位(讀地址符號(hào)位)會(huì)在下述情況下發(fā)生翻轉(zhuǎn):當(dāng)待寫(讀)的數(shù)據(jù)的邏輯地址增加到等于空間大小時(shí),寫(讀)地址符號(hào)位發(fā)生一次翻轉(zhuǎn)(與當(dāng)前值取反,O —或者I — 0,初始值為0),并且,此時(shí)待寫(讀)的數(shù)據(jù)的邏輯地址將歸O。
      [0149]FIFO告警單元405針對(duì)每個(gè)業(yè)務(wù),通過下述方式計(jì)算水線值:
      [0150]1、待讀的數(shù)據(jù)的邏輯地址(以下簡稱為讀邏輯地址)大于待寫的數(shù)據(jù)的邏輯地址(以下簡稱寫邏輯地址)時(shí),水線值=地址空間大小-(讀邏輯地址-寫邏輯地址);
      [0151]2、讀地址小于寫地址時(shí),水線值=寫邏輯地址-讀邏輯地址;
      [0152]高水線告警:當(dāng)水線值大于預(yù)先設(shè)定的高水線值時(shí),上報(bào)高水線告警,否則撤銷告
      m.1=I ,
      [0153]低水線告警:當(dāng)水線值小于預(yù)先設(shè)定的低水線值時(shí),上報(bào)低水線告警,否則撤銷告m.1=I ,
      [0154]空告警:當(dāng)讀地址符號(hào)位=寫地址符號(hào)位,且讀邏輯地址=寫邏輯地址,空告警有效,否則無效;
      [0155]滿告警:讀地址符號(hào)位古寫地址符號(hào)位,且讀邏輯地址=寫邏輯地址,滿告警有效,否則無效;[0156]寫溢出告警:讀地址符號(hào)位古寫地址符號(hào)位,且讀邏輯地址〈寫邏輯地址,寫溢出告警有效,否則無效;
      [0157]讀溢出告警:當(dāng)讀地址符號(hào)位=寫地址符號(hào)位,且讀邏輯地址〉寫邏輯地址,讀溢出告警有效,否則無效。
      [0158]由于上述塊數(shù)量表(BLK_NUM_TBL )、塊地址表(BLK_ADDR_TBL )和首塊地址表(FIRST_BLK_ADDR_TBL)都是根據(jù)業(yè)務(wù)通道-塊映射表(CH_BLK_MAP_TBL)自動(dòng)生成,在用戶根據(jù)需求實(shí)時(shí)更新CH_BLK_MAP_TBL的內(nèi)容時(shí),本發(fā)明實(shí)施例還提供了相應(yīng)的表項(xiàng)刷新的機(jī)制,進(jìn)一步地,表項(xiàng)自動(dòng)刷新單元404,還用于根據(jù)用戶預(yù)先配置的業(yè)務(wù)通道-塊映射表,生成塊數(shù)量表、首塊地址表和塊地址表作為主表以供FIFO寫地址重映射單元和FIFO讀地址重映射單元進(jìn)行查詢,并備份塊數(shù)量表、首塊地址表和塊地址表作為備表。
      [0159]由于用戶可能會(huì)根據(jù)需求實(shí)時(shí)更新CH_BLK_MAP_TBL的內(nèi)容,因此,上述表項(xiàng)自動(dòng)刷新單元,還用于周期性地按照用戶對(duì)業(yè)務(wù)通道-塊映射表的配置的內(nèi)容,對(duì)塊數(shù)量表、首塊地址表和塊地址表的備表進(jìn)行刷新,并將刷新后的各備表切換成對(duì)應(yīng)的主表以供FIFO寫地址重映射單元和FIFO讀地址重映射單元進(jìn)行查詢。
      [0160]表項(xiàng)自動(dòng)刷新單元的工作過程如圖6所示,生成FIFO寫地址重映射單元和FIFO讀地址重映射單元中的BLK_NUM_TBL、FIRST_BLK_ADDR_TBL和BLK_ADDR_TBL的主表和備表,由多通道FIFO工作邏輯操作主表,由表項(xiàng)自動(dòng)刷新單元操作備表并實(shí)時(shí)進(jìn)行備表的刷新和主備的切換。
      [0161]表項(xiàng)自動(dòng)刷新單元可保證主備表信息的一致性,并且刷新表項(xiàng)的操作不會(huì)影響多通道FIFO queue控制器的讀寫過程,實(shí)現(xiàn)了根據(jù)用戶的需求動(dòng)態(tài)增刪業(yè)務(wù),并且不會(huì)對(duì)原有業(yè)務(wù)造成影響。
      [0162]表項(xiàng)刷新單元生成各表以及每一次刷新各表的過程實(shí)際上是相同的,為了簡化說明,下面以刷新各表的過程為例詳細(xì)進(jìn)行說明如下:
      [0163]每y個(gè)周期遍歷業(yè)務(wù)通道-塊映射表,所述y=n*x,n為數(shù)據(jù)緩存的分塊數(shù),x為業(yè)務(wù)的數(shù)量(最大可能的業(yè)務(wù)的總數(shù));在y個(gè)周期內(nèi),正好遍歷了 CH_BLK_MAP_TBL x次。
      [0164]每次遍歷時(shí),針對(duì)每個(gè)業(yè)務(wù),將該業(yè)務(wù)占用的塊的數(shù)量進(jìn)行累加,統(tǒng)計(jì)各業(yè)務(wù)占用的塊的數(shù)量,寫入待刷新的塊數(shù)量表(備表);
      [0165]每次遍歷時(shí),針對(duì)數(shù)據(jù)緩存中的每個(gè)塊,將該塊對(duì)應(yīng)的物理地址寫入待刷新的塊地址表(備表);
      [0166]每次遍歷時(shí),針對(duì)數(shù)據(jù)緩存中的每個(gè)塊,當(dāng)其為被占用的業(yè)務(wù)對(duì)應(yīng)的首個(gè)塊時(shí),將該塊的邏輯地址寫入待刷新的首塊地址表(備表)。
      [0167]圖7所示的是本實(shí)例一提供的多通道FIFO queue控制器的邏輯框圖,數(shù)據(jù)緩存分為η個(gè)塊,各業(yè)務(wù)分塊共享數(shù)據(jù)緩存,地址重映射邏輯(例如可以由地址重映射單元實(shí)現(xiàn))可以根據(jù)讀寫的業(yè)務(wù)通道號(hào),確定讀寫操作在數(shù)據(jù)緩存中的訪問地址,同時(shí)空滿狀態(tài)產(chǎn)生邏輯(例如可以由FIFO告警單元實(shí)現(xiàn))根據(jù)邏輯地址產(chǎn)生業(yè)務(wù)存儲(chǔ)空間空滿的狀態(tài)報(bào)警,重映射表項(xiàng)刷新邏輯(由表項(xiàng)自動(dòng)刷新單元)對(duì)重映射所需的表項(xiàng)進(jìn)行刷新。
      [0168]實(shí)例二:
      [0169]本實(shí)例二提供的多通道FIFO queue控制器的結(jié)構(gòu)與工作原理與實(shí)例一提供的多通道FIFO queue控制器類似,如圖8所示,該多通道FIFO queue控制器也包括FIFO寫地址重映射單元801 (負(fù)責(zé)確定寫操作的地址)和FIFO讀地址重映射單元802 (負(fù)責(zé)確定讀操作的地址)、數(shù)據(jù)緩存803、讀寫控制單元(圖8中未示意出)、表項(xiàng)自動(dòng)刷新單元804和FIFO告警單元805,所不同的是,對(duì)于FIFO寫地址重映射單元801和FIFO讀地址重映射單元802來說,其包含的表項(xiàng)與實(shí)例一不同。
      [0170]具體來說,如圖8所示,F(xiàn)IFO寫地址重映射單元801和FIFO讀地址重映射單元802中分別包含數(shù)量表(BLK_NUM_TBL)、邏輯地址表(L0GIC_ADDR_TBL)和塊重映射表(BLK_REMAP_TBL),其中:
      [0171]塊數(shù)量表和邏輯地址表的內(nèi)容與實(shí)例一相同,在此不再贅述;
      [0172]塊重映射表的數(shù)據(jù)結(jié)構(gòu)如圖9所示,該表是一個(gè)n*x大小的二維表(η為RAM分塊數(shù),X為最大可能的業(yè)務(wù)數(shù)),內(nèi)容為某個(gè)業(yè)務(wù)通道號(hào)為i (i取值為(O?X)中任一整數(shù))的業(yè)務(wù)所占用的第j (j取值為(O?η)中任一整數(shù))個(gè)塊的物理地址k。
      [0173]實(shí)際上實(shí)例二中的BLK_REMAP_TBL在地址的重映射過程中,實(shí)現(xiàn)了實(shí)例一中FIRST_BLK_ADDR_TBL+BLK_ADDR_TBL配合在一起完成的功能,該表的占用的存儲(chǔ)空間比單個(gè)FIRST_BLK_ADDR_TBL或單個(gè)BLK_ADDR_TBL大,是以空間變大換取復(fù)雜度的降低另一種實(shí)施方式。
      [0174]還是以數(shù)據(jù)RAM分塊數(shù)為12,最大可能的業(yè)務(wù)數(shù)量為6,實(shí)際使用的只有3個(gè)通道(通道號(hào)為0、2、5)情況為例,BLK_REMAP_TBL的內(nèi)容如圖10所示,通道O占用了 0、3、6、9的塊;通道2占用了 1、4、7、10的塊;通道5占用了 2、5、8、11的塊。圖11中填充x的空格表示不存在的通道對(duì)應(yīng)的塊。
      [0175]相應(yīng)地,在本實(shí)例二中,F(xiàn)IFO寫地址重映射單元801和FIFO讀地址重映射單元802在進(jìn)行讀寫地址的重映射的過程也與實(shí)例一不同,具體說明如下:
      [0176]FIFO寫地址重映射單元801和FIFO讀地址重映射單元802根據(jù)前級(jí)送來的業(yè)務(wù)通道號(hào),分別查詢塊數(shù)量表(BLK_NUM_TBL)和邏輯地址表(L0GIC_ADDR_TBL),得到該業(yè)務(wù)所占用的塊數(shù)(bIk_num)、該業(yè)務(wù)待讀寫的塊的邏輯地址(1gic_bIk_addr )和塊內(nèi)偏移地址(logic_shift_addr);
      [0177]FIFO寫地址重映射單元801和FIFO讀地址重映射單元802通過查詢?cè)摌I(yè)務(wù)所占用的塊數(shù)(blk_num),可以獲知該業(yè)務(wù)所占用的塊的邏輯地址范圍,在該業(yè)務(wù)待讀寫的塊的邏輯地址在邏輯地址范圍內(nèi)時(shí),根據(jù)該業(yè)務(wù)的業(yè)務(wù)通道號(hào)和該業(yè)務(wù)待讀寫的塊的邏輯地址(logic_blk_addr),查詢塊重映射表(BLK_REMAP_TBL),得到該業(yè)務(wù)待讀寫的塊的物理地址(phy_b Ik_addr ),根據(jù)該業(yè)務(wù)待讀寫的塊的物理地址(phy_b Ik_addr )和塊內(nèi)偏移地址(logic_shift_addr ),確定該業(yè)務(wù)待讀寫的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址(phy_addr );并將{logic_blk_addr, logic_shift_addr} +1作為所述業(yè)務(wù)待訪問的數(shù)據(jù)的邏輯地址更新邏輯地址表(L0GIC_ADDR_TBL)。
      [0178]類似地,F(xiàn)IFO寫地址重映射單元801和FIFO讀地址重映射單元902如果查詢各自的邏輯地址表判斷該業(yè)務(wù)待讀寫的塊的邏輯地址超出邏輯地址的范圍的上限時(shí),將邏輯地址表中該業(yè)務(wù)待讀寫的塊的邏輯地址置為O。
      [0179]如果在上述地址重映射的過程中,F(xiàn)IFO寫地址重映射單元和FIFO讀地址重映射單元讀取的該業(yè)務(wù)占用數(shù)據(jù)緩存的塊數(shù)為O時(shí),確定該業(yè)務(wù)的業(yè)務(wù)通道號(hào)為非法,讀寫控制單元會(huì)據(jù)此情況,控制該業(yè)務(wù)的讀寫使能為O。[0180]對(duì)于實(shí)例二中的FIFO告警單元805來說,其具體工作原理與實(shí)例一中相同,在此不再贅述。
      [0181]對(duì)于實(shí)例二中的表項(xiàng)自動(dòng)刷新單元804,與實(shí)例一類似,分別與FIFO寫地址重映射單元801和FIFO讀地址重映射單元802相連,用于根據(jù)用戶預(yù)先配置的通道-塊映射表(CH_BLK_MAP_TBL),分別生成FIFO寫地址重映射單元和FIFO讀地址重映射單元中包含的塊數(shù)量表(BLK_NUM_TBL)和塊重映射表(BLK_REMAP_TBL)作為主表以供FIFO寫地址重映射單元801和FIFO讀地址重映射單元802進(jìn)行查詢,并備份塊數(shù)量表和塊重映射表作為備表。
      [0182]表項(xiàng)自動(dòng)刷新單元804,還可以周期性地按照用戶對(duì)業(yè)務(wù)通道-塊映射表的配置的內(nèi)容,對(duì)塊數(shù)量表和塊重映射表的備表進(jìn)行刷新,并將刷新后的各備表切換成對(duì)應(yīng)的主表以供FIFO寫地址重映射單元和FIFO讀地址重映射單元進(jìn)行查詢。
      [0183]進(jìn)一步地,上述表項(xiàng)刷新單元804,具體通過下述方式刷新各表:
      [0184]每y個(gè)周期遍歷業(yè)務(wù)通道-塊映射表,所述y=n*x,n為數(shù)據(jù)緩存的分塊數(shù),x為業(yè)務(wù)的數(shù)量(最大可能的業(yè)務(wù)的總數(shù));
      [0185]每次遍歷時(shí),針對(duì)每個(gè)業(yè)務(wù),將該業(yè)務(wù)占用的塊的數(shù)量進(jìn)行累加,統(tǒng)計(jì)各業(yè)務(wù)占用的塊的數(shù)量,寫入待刷新的塊數(shù)量表;
      [0186]每次遍歷時(shí),針對(duì)每個(gè)業(yè)務(wù),將該業(yè)務(wù)占用的每個(gè)塊的物理地址寫入待刷新的塊
      重映射表。
      [0187]上述表項(xiàng)刷新單元生成塊數(shù)量表和塊重映射表的過程與刷新塊數(shù)量表和塊重映射表的過程是相同的,在此不再贅述。
      [0188]本發(fā)明實(shí)施例提供的上述多通道FIFO queue控制器,可以通過多種硬件電路單元實(shí)現(xiàn),例如可通過常見的FPGA實(shí)現(xiàn)。
      [0189]采用本發(fā)明實(shí)施例提供的上述多通道FIFO queue控制器,可實(shí)現(xiàn)多個(gè)業(yè)務(wù)共享同一個(gè)數(shù)據(jù)緩存,大大節(jié)省了超大位寬多通道FIFO實(shí)體的RAM占用的資源,經(jīng)過實(shí)驗(yàn)證明,在業(yè)務(wù)數(shù)為80,最小業(yè)務(wù)深度需求為16個(gè)存儲(chǔ)單元,最大業(yè)務(wù)深度需求為128個(gè)存儲(chǔ)單元的多通道FIFO的情形下,如果按照現(xiàn)有方案I的方式設(shè)計(jì),大概需要400塊RAM,而采用本發(fā)明實(shí)施例提供的上述多通道FIFO queue控制器的實(shí)現(xiàn)方式,則只需要不多于80塊RAM(包括附加的表項(xiàng)),從RAM資源來看節(jié)省了約80%,而其他資源也能節(jié)省也能節(jié)約近70%,節(jié)省的資源還是非??捎^的。
      [0190]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種多通道FIFO queue的訪問方法,由于該方法所解決問題的原理與前述多通道FIFO queue控制器相似,因此該方法的實(shí)施可以參見前述多通道FIFO queue控制器的實(shí)施,重復(fù)之處不再贅述。
      [0191]本發(fā)明實(shí)施例提供的多通道FIFO queue的訪問方法,如圖11所示,包括下述步驟:
      [0192]S1101、根據(jù)業(yè)務(wù)的標(biāo)識(shí),確定在數(shù)據(jù)緩存中待訪問的塊的物理地址,所述數(shù)據(jù)緩存包含多個(gè)塊,每個(gè)塊包含m個(gè)存儲(chǔ)單元,m為正整數(shù);
      [0193]SI 102、根據(jù)所述待訪問的塊的物理地址和待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0194]S1103、根據(jù)所述地址確定電路確定的所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址訪問所述待訪問的數(shù)據(jù)。
      [0195]上述SI 101中,所述確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址,可以通過下述方式實(shí)現(xiàn):
      [0196]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址;
      [0197]根據(jù)所述待訪問的塊的邏輯地址,以及根據(jù)所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址;
      [0198]根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址。
      [0199]進(jìn)一步地,上述根據(jù)所述業(yè)務(wù)的標(biāo)識(shí),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,根據(jù)所述待訪問的塊的邏輯地址,以及根據(jù)所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址,根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址,在具體實(shí)施時(shí),可以通過下述兩種方式實(shí)現(xiàn):
      [0200]方式一:
      [0201 ] 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址;
      [0202]根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址得到所述待訪問的塊的第一邏輯地址(logic_blk_addr)和塊內(nèi)偏移地址(logic_shift_addr);
      [0203]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢首塊地址表,得到所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址(first_blk_addr);
      [0204]根據(jù)待訪問的塊的第二邏輯地址查詢塊地址表,得到所述待訪問的塊的物理地址,所述待訪問的塊的第二邏輯地址等于logic_blk_addr與f irst_blk_addr的和;
      [0205]根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0206]其中,所述塊地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的第二邏輯地址取值為[first_blk_addr, first_blk_addr+n]中任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量;
      [0207]所述首塊地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址;
      [0208]所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù)。
      [0209]方式二:
      [0210]與方式一不同的是,在方式二中,確定出待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址需要查詢邏輯地址表和塊重映射表,具體來說,其過程如下:
      [0211 ] 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址;
      [0212]根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址,得到所述待訪問的塊的邏輯地址(logic_blk_addr)和塊內(nèi)偏移地址(logic_shift_addr);
      [0213]根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)和所述待訪問的塊的邏輯地址logiC_blk_addr查詢塊重映射表,得到所述待訪問的塊的物理地址;
      [0214]根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址;
      [0215]其中,所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù);
      [0216]所述塊重映射表中記載所述業(yè)務(wù)的標(biāo)識(shí)、以及所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的邏輯地址取值為[0,n]中的任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量,具體數(shù)據(jù)結(jié)構(gòu)可參見前述圖8。
      [0217]在上述S1102確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址的步驟之后,本發(fā)明實(shí)施例提供的多通道FIFO queue的訪問方法,還可以執(zhí)行下述步驟:
      [0218]將{logic_blk_addr, logic_shift_addr}+1作為業(yè)務(wù)下次待訪問的數(shù)據(jù)的邏輯地址更新邏輯地址表。
      [0219]進(jìn)一步地,在上述方式一和方式二中,在根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址的同時(shí),還可以根據(jù)業(yè)務(wù)標(biāo)識(shí)執(zhí)行查詢塊數(shù)量表的步驟,塊數(shù)量表記錄有多個(gè)業(yè)務(wù)的業(yè)務(wù)標(biāo)識(shí)、每個(gè)業(yè)務(wù)所占用的數(shù)據(jù)緩存的塊數(shù),查詢塊數(shù)量表的目的,可以獲知該業(yè)務(wù)所占用的數(shù)據(jù)緩存的塊數(shù),繼而確定該業(yè)務(wù)邏輯地址的范圍,當(dāng)判斷業(yè)務(wù)待訪問的數(shù)據(jù)的邏輯地址超出其邏輯地址范圍的上限時(shí),將邏輯地址表中該業(yè)務(wù)待訪問的數(shù)據(jù)的邏輯地址置為O。
      [0220]進(jìn)一步地,在上述方式一和方式二中,當(dāng)根據(jù)業(yè)務(wù)通道號(hào)查詢塊數(shù)量表得到業(yè)務(wù)所占用的塊的數(shù)量為O時(shí),確定該業(yè)務(wù)的業(yè)務(wù)通道號(hào)為非法,控制該業(yè)務(wù)的讀寫使能為O(即阻止該業(yè)務(wù)的讀寫操作)。
      [0221]進(jìn)一步地,本發(fā)明實(shí)施例提供的多通道FIFO queue的訪問方法中,邏輯地址表中還記載有各業(yè)務(wù)當(dāng)前讀和寫地址的符號(hào)位,該符號(hào)位是表征各業(yè)務(wù)待讀和寫的數(shù)據(jù)的邏輯地址是否增加到等于所占空間大小的比特位;在上述訪問數(shù)據(jù)緩存(讀和/或?qū)懖僮?的過程中,還可以實(shí)現(xiàn)數(shù)據(jù)緩存空滿的告警以及水線的告警,具體過程如下:
      [0222]針對(duì)每個(gè)業(yè)務(wù),當(dāng)待讀的數(shù)據(jù)的邏輯地址(以下簡稱為讀邏輯地址)大于待寫的數(shù)據(jù)的邏輯地址(以下簡稱為寫邏輯地址)時(shí),計(jì)算水線值=地址空間大小-(讀邏輯地址-寫邏輯地址),當(dāng)讀邏輯地址小于寫邏輯地址時(shí),計(jì)算水線值=寫邏輯地址-讀邏輯地址;
      [0223]并且,當(dāng)水線值高于預(yù)先設(shè)定的高水線值時(shí),上報(bào)高水線告警;
      [0224]當(dāng)水線值小于設(shè)定的低水線值時(shí),上報(bào)低水線告警;
      [0225]當(dāng)讀地址符號(hào)位=寫地址符號(hào)位,且當(dāng)前讀邏輯地址=寫邏輯地址,則上報(bào)為空的
      告警;
      [0226]當(dāng)讀地址符號(hào)位古寫地址符號(hào)位,且讀邏輯地址=寫邏輯地址,則上報(bào)為滿的告
      m.1=I ,
      [0227]當(dāng)讀地址符號(hào)位古寫地址符號(hào)位,且讀邏輯地址〈寫邏輯地址,則上報(bào)寫溢出告m.1=I ,
      [0228]當(dāng)讀地址符號(hào)位=寫地址符號(hào)位,且讀邏輯地址 > 寫邏輯地址,則上報(bào)讀溢出告
      m
      目O
      [0229]進(jìn)一步地,前述方式一中查詢使用的所述塊數(shù)量表、首塊地址表和塊地址表通過下述方式生成:
      [0230]根據(jù)用戶配置的業(yè)務(wù)通道-塊映射表,生成塊數(shù)量表、首塊地址表和塊地址表作為主表以供查詢;其中,業(yè)務(wù)通道-塊映射表記載有數(shù)據(jù)緩存中的每個(gè)塊與被占用的業(yè)務(wù)(使用業(yè)務(wù)通道號(hào)作為標(biāo)識(shí))之間的映射關(guān)系。
      [0231]較佳地,在生成塊數(shù)量表、首塊地址表和塊地址表作為主表之后,本發(fā)明實(shí)施例還可以執(zhí)行下述步驟:
      [0232]備份所述塊數(shù)量表、首塊地址表和塊地址表作為備表;
      [0233]周期性地按照用戶對(duì)業(yè)務(wù)通道-塊映射表的配置的內(nèi)容,對(duì)作為備表的塊數(shù)量表、首塊地址表和塊地址表進(jìn)行刷新,并將刷新后的各表切換成對(duì)應(yīng)的主表以供查詢。
      [0234]進(jìn)一步地,對(duì)作為備表的塊數(shù)量表、首塊地址表和塊地址表進(jìn)行刷新,具體通過下述過程實(shí)現(xiàn):
      [0235]每y個(gè)周期遍歷業(yè)務(wù)通道-塊映射表,其中,y=n*x,η為數(shù)據(jù)緩存的分塊數(shù),χ為業(yè)務(wù)的數(shù)量;
      [0236]每次遍歷時(shí),針對(duì)每個(gè)業(yè)務(wù),將該業(yè)務(wù)占用的塊的數(shù)量進(jìn)行累加,統(tǒng)計(jì)各業(yè)務(wù)占用的塊的數(shù)量,寫入待刷新的塊數(shù)量表;
      [0237]每次遍歷時(shí),針對(duì)數(shù)據(jù)緩存中的每個(gè)塊,將該塊對(duì)應(yīng)的物理地址寫入待刷新的塊地址表;
      [0238]每次遍歷時(shí),針對(duì)數(shù)據(jù)緩存中的每個(gè)塊,當(dāng)其為被占用的業(yè)務(wù)對(duì)應(yīng)的首個(gè)塊時(shí),將該塊的邏輯地址寫入待刷新的首塊地址表。
      [0239]進(jìn)一步地,前述方式二中查詢使用的塊數(shù)量表、塊重映射表通過下述方式生成:
      [0240]根據(jù)用戶配置的業(yè)務(wù)通道-塊映射表,生成塊數(shù)量表和塊重映射表作為主表以供查詢;其中,業(yè)務(wù)通道-塊映射表記載有數(shù)據(jù)緩存中的每個(gè)塊與被占用的業(yè)務(wù)之間的映射關(guān)系。
      [0241]較佳地,在生成塊數(shù)量表和塊重映射表作為主表之后,本發(fā)明實(shí)施例還可以執(zhí)行下述步驟:
      [0242]備份所述塊數(shù)量表和塊重映射表作為備表;
      [0243]周期性地按照用戶對(duì)業(yè)務(wù)通道-塊映射表的配置的內(nèi)容,對(duì)作為備表的塊數(shù)量表和塊重映射表進(jìn)行刷新,并將刷新后的各表切換成對(duì)應(yīng)的主表以供查詢。
      [0244]進(jìn)一步地,對(duì)作為備表的塊數(shù)量表和塊重映射表進(jìn)行刷新,具體通過下述過程實(shí)現(xiàn):
      [0245]每y個(gè)周期遍歷業(yè)務(wù)通道-塊映射表,其中,y=n*x,η為數(shù)據(jù)緩存的分塊數(shù),χ為業(yè)務(wù)的數(shù)量;
      [0246]每次遍歷時(shí),針對(duì)每個(gè)業(yè)務(wù),將該業(yè)務(wù)占用的塊的數(shù)量進(jìn)行累加,統(tǒng)計(jì)各業(yè)務(wù)占用的塊的數(shù)量,寫入待刷新的塊數(shù)量表;
      [0247]每次遍歷時(shí),針對(duì)每個(gè)業(yè)務(wù),將該業(yè)務(wù)占用的每個(gè)塊的物理地址寫入待刷新的塊重映射表。
      [0248]本發(fā)明實(shí)施例提供的上述多通道FIFO queue控制器及其訪問方法,多通道FIFOqueue控制器包地址確定電路和控制電路。數(shù)據(jù)緩存被分為多個(gè)塊,地址確定電路可以根據(jù)業(yè)務(wù)的標(biāo)識(shí)確定待訪問的塊的物理地址。地址確定電路還可以據(jù)此進(jìn)一步確定待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址??刂齐娐房梢愿鶕?jù)地址確定電路確定的待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址訪問待訪問的數(shù)據(jù)。因此,上述技術(shù)方案有助于多個(gè)業(yè)務(wù)對(duì)數(shù)據(jù)緩存的共享,有助于減少對(duì)FIFO queue的資源的占用。此外,本發(fā)明實(shí)施例提供了待訪問的數(shù)據(jù)的物理地址的確定方法。即根據(jù)業(yè)務(wù)的標(biāo)識(shí),確定待訪問的塊的物理地址,并根據(jù)待訪問的塊的物理地址和待訪問的數(shù)據(jù)在待訪問的塊內(nèi)地址,確定待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址。根據(jù)待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址訪問待訪問的數(shù)據(jù)。上述技術(shù)方案中,確定待訪問的數(shù)據(jù)在數(shù)據(jù)緩存中的物理地址的過程中,不需要依賴鏈表指針,可靠性較聞。
      [0249]進(jìn)一步地,本發(fā)明實(shí)施例提供的上述多通道FIFO queue控制器及其訪問方法,數(shù)據(jù)緩存的訪問地址分為兩個(gè)層次,邏輯地址和物理地址,并建立兩者之間的映射關(guān)系,通過邏輯地址來確定對(duì)應(yīng)的物理地址,由于邏輯地址在數(shù)據(jù)緩存空間內(nèi)是線性的,這樣,可以通過邏輯地址來識(shí)別當(dāng)前數(shù)據(jù)緩存的空滿狀態(tài)以及當(dāng)前水線是否達(dá)到預(yù)設(shè)的高低水線的情況,彌補(bǔ)了現(xiàn)有技術(shù)例如方案I和方案2無法識(shí)別數(shù)據(jù)緩存存儲(chǔ)狀態(tài)的缺陷。
      [0250]進(jìn)一步地,本發(fā)明實(shí)施例提供的上述多通道FIFO queue控制器及其訪問方法中,各業(yè)務(wù)的讀寫地址的確定所依據(jù)的塊數(shù)量表、首塊地址表和塊地址表(或者塊數(shù)量表和塊重映射表),都是依據(jù)用戶配置的業(yè)務(wù)通道-塊映射表的內(nèi)容生成和刷新的,因此,各業(yè)務(wù)的待讀寫的數(shù)據(jù)的物理地址的確定的可靠性幾乎等價(jià)于用戶配置的表項(xiàng)的可靠性,與業(yè)務(wù)的帶寬和其他異常無關(guān),進(jìn)一步保證了多通道FIFO讀寫操作的可靠性。
      [0251]另外,本發(fā)明實(shí)施例提供的上述多通道FIFO queue控制器及其訪問方法,對(duì)于各業(yè)務(wù)的待讀寫的數(shù)據(jù)的地址的確定所依據(jù)的塊數(shù)量表、首塊地址表和塊地址表(或者塊數(shù)量表和塊重映射表)進(jìn)行周期性地刷新,并提供了主備切換機(jī)制,在不影響業(yè)務(wù)數(shù)據(jù)讀寫操作的情況下,實(shí)現(xiàn)對(duì)業(yè)務(wù)的增刪等動(dòng)態(tài)變化。
      [0252]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
      【權(quán)利要求】
      1.一種多通道先進(jìn)先出緩存隊(duì)列FIFO queue控制器,其特征在于,包括:地址確定電路和控制電路; 所述地址確定電路用于: 根據(jù)業(yè)務(wù)的標(biāo)識(shí)確定在數(shù)據(jù)緩存中的待訪問的塊的物理地址,所述數(shù)據(jù)緩存包含多個(gè)塊,每個(gè)塊包含m個(gè)存儲(chǔ)單元,m為正整數(shù); 根據(jù)所述待訪問的塊的物理地址和待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址; 所述控制電路用于: 根據(jù)所述地址確定電路確定的所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址訪問所述待訪問的數(shù)據(jù)。
      2.如權(quán)利要求1所述的FIFOqueue控制器,其特征在于,所述地址確定電路具體用于: 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址; 根據(jù)所述待訪問的塊的邏輯地址,以及所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址; 根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址。
      3.如權(quán)利要求2所述的 FIFOqueue控制器,其特征在于,所述地址確定電路具體用于: 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址; 根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址得到所述待訪問的塊的第一邏輯地址logic_blk_addr和塊內(nèi)偏移地址logic_shift_addr ; 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢首塊地址表,得到所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址 first_blk_addr ; 根據(jù)待訪問的塊的第二邏輯地址查詢塊地址表,得到所述待訪問的塊的物理地址,所述待訪問的塊的第二邏輯地址等于logic_blk_addr與f irst_blk_addr的和; 根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址; 其中,所述塊地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的第二邏輯地址取值為[first_blk_addr, first_blk_addr+n]中任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量; 所述首塊地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址; 所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù)。
      4.如權(quán)利要求2所述的FIFOqueue控制器,其特征在于,所述地址確定電路具體用于: 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址; 根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址,得到所述待訪問的塊的邏輯地址logiC_blk_addr和塊內(nèi)偏移地址logic_shift_addr ; 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)和所述待訪問的塊的邏輯地址logiC_blk_addr查詢塊重映射表,得到所述待訪問的塊的物理地址; 根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址; 其中,所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù);所述塊重映射表中記載所述業(yè)務(wù)的標(biāo)識(shí)、以及所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的邏輯地址取值為[0,n]中的任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量。
      5.如權(quán)利要求3或4所述的FIFOqueue控制器,其特征在于,所述地址確定電路還用于: 在所述控制電路訪問所述 待訪問的數(shù)據(jù)之后,使用所述業(yè)務(wù)下次訪問的數(shù)據(jù)的邏輯地址替換所述邏輯地址表中所述待訪問的數(shù)據(jù)的邏輯地址。
      6.一種多通道先進(jìn)先出緩存隊(duì)列FIFO queue的訪問方法,其特征在于,包括: 根據(jù)業(yè)務(wù)的標(biāo)識(shí),確定在數(shù)據(jù)緩存中待訪問的塊的物理地址,所述數(shù)據(jù)緩存包含多個(gè)塊,每個(gè)塊包含m個(gè)存儲(chǔ)單元,m為正整數(shù); 根據(jù)所述待訪問的塊的物理地址和待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址; 根據(jù)所述地址確定電路確定的所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址訪問所述待訪問的數(shù)據(jù)。
      7.如權(quán)利要求6所述的方法,其特征在于,所述確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址,包括: 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址; 根據(jù)所述待訪問的塊的邏輯地址,以及根據(jù)所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址; 根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址。
      8.如權(quán)利要求7所述的方法,其特征在于,根據(jù)所述業(yè)務(wù)的標(biāo)識(shí),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,根據(jù)所述待訪問的塊的邏輯地址,以及根據(jù)所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址,根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址,具體包括:根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址; 根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址得到所述待訪問的塊的第一邏輯地址logic_blk_addr和塊內(nèi)偏移地址logic_shift_addr ; 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢首塊地址表,得到所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址 first_blk_addr ; 根據(jù)待訪問的塊的第二邏輯地址查詢塊地址表,得到所述待訪問的塊的物理地址,所述待訪問的塊的第二邏輯地址等于logic_blk_addr與f irst_blk_addr的和; 根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址; 其中,所述塊地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的第二邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的第二邏輯地址取值為[first_blk_addr, first_blk_addr+n]中任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量; 所述首塊地址表中記 載所述業(yè)務(wù)的標(biāo)識(shí),以及所述業(yè)務(wù)占用的多個(gè)塊中首個(gè)塊的邏輯地址; 所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù)。
      9.如權(quán)利要求7所述的方法,其特征在于,根據(jù)所述業(yè)務(wù)的標(biāo)識(shí),確定所述待訪問的塊的邏輯地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,根據(jù)所述待訪問的塊的邏輯地址,以及根據(jù)所述待訪問的塊的邏輯地址與所述待訪問的塊的物理地址之間的映射關(guān)系,確定所述待訪問的塊的物理地址,根據(jù)所述待訪問的塊的物理地址和所述待訪問的數(shù)據(jù)在所述待訪問的塊內(nèi)的地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址,具體包括: 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)查詢邏輯地址表,獲取所述待訪問的數(shù)據(jù)的邏輯地址; 根據(jù)所述待訪問的數(shù)據(jù)的邏輯地址,得到所述待訪問的塊的邏輯地址logiC_blk_addr和塊內(nèi)偏移地址logic_shift_addr ; 根據(jù)所述業(yè)務(wù)的標(biāo)識(shí)和所述待訪問的塊的邏輯地址logiC_blk_addr查詢塊重映射表,得到所述待訪問的塊的物理地址; 根據(jù)所述待訪問的塊的物理地址和所述塊內(nèi)偏移地址,確定所述待訪問的數(shù)據(jù)在所述數(shù)據(jù)緩存中的物理地址; 其中,所述邏輯地址表中記載所述業(yè)務(wù)的標(biāo)識(shí),以及所述待訪問的數(shù)據(jù)的邏輯地址,所述待訪問的數(shù)據(jù)的邏輯地址的取值為[0,mX所述業(yè)務(wù)占用的塊的數(shù)量]中任一整數(shù);所述塊重映射表中記載所述業(yè)務(wù)的標(biāo)識(shí)、以及所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址的映射關(guān)系,所述業(yè)務(wù)占用的多個(gè)塊的邏輯地址和所述業(yè)務(wù)占用的多個(gè)塊的物理地址一一對(duì)應(yīng),所述待訪問的塊的邏輯地址取值為[0,n]中的任一整數(shù),所述η為所述業(yè)務(wù)占用數(shù)據(jù)緩存中的塊的數(shù)量。
      10.如權(quán)利要求8或9所述的方法,其特征在于,在所述控制電路訪問所述待訪問的數(shù)據(jù)之后,還包括:使用所述業(yè)務(wù)下次訪問的數(shù)據(jù)的邏輯地址替換所述邏輯地址表中所述待訪問的數(shù)據(jù)的邏 輯地址。
      【文檔編號(hào)】G06F12/08GK103455442SQ201310388500
      【公開日】2013年12月18日 申請(qǐng)日期:2013年8月30日 優(yōu)先權(quán)日:2013年8月30日
      【發(fā)明者】鄭述乾, 李天林, 區(qū)樹雄 申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1