国产精品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>

      包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng)的制作方法

      文檔序號(hào):6374607閱讀:205來源:國知局
      專利名稱:包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      這里所描述的各實(shí)施例一般涉及被主機(jī)系統(tǒng)訪問并包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng)。
      背景技術(shù)
      作為在一般主機(jī)系統(tǒng)(例如,計(jì)算機(jī)系統(tǒng))中提供的存儲(chǔ)設(shè)備,存在包括非易失性半導(dǎo)體存儲(chǔ)器的磁性HDD (硬盤驅(qū)動(dòng)器)或SSD (固態(tài)驅(qū)動(dòng)器)。雖然SSD被分類為存儲(chǔ)器,但是,它也可被視為帶有擴(kuò)展的規(guī)模和功能的存儲(chǔ)器系統(tǒng)。存儲(chǔ)器系統(tǒng)包括,例如,接口、第一存儲(chǔ)塊、第二存儲(chǔ)塊、以及控制器。第一存儲(chǔ)塊將文件存儲(chǔ)為數(shù)據(jù),而第二存儲(chǔ)塊充當(dāng)數(shù)據(jù)寫入/讀取過程中的緩沖存儲(chǔ)器。第一存儲(chǔ)塊是非易失性的并具有大容量,但與第二存儲(chǔ)塊相比具有較慢的訪問速度。第二存儲(chǔ)塊被用來補(bǔ)償接口的通信速度和第一存儲(chǔ)塊的寫入/讀取速度之間的速度差。例如,第一存儲(chǔ)塊是非易失性快閃存儲(chǔ)器,而第二存儲(chǔ)塊是易失性DRAM或SRAM。這樣的常規(guī)存儲(chǔ)器類型的存儲(chǔ)器系統(tǒng)具有用于通過尋址來實(shí)現(xiàn)數(shù)據(jù)寫入/讀取功能的布局。另一方面,為了有效地提取存儲(chǔ)在存儲(chǔ)器系統(tǒng)中的諸如與給定文本相關(guān)聯(lián)的另一文本、二進(jìn)制文件中的特定比特模式、運(yùn)動(dòng)圖像文件中的特定模式、或語音文件中的特征語音模式的數(shù)據(jù),優(yōu)選地提供了通過數(shù)據(jù)指定的數(shù)據(jù)讀取功能。為此目的,使用一種方法不僅存儲(chǔ)正常數(shù)據(jù),而且還一起存儲(chǔ)與數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù),并引用元數(shù)據(jù)來獲取期望的數(shù)據(jù)。元數(shù)據(jù)管理方法被大致分類為兩種類型具有表格式的數(shù)據(jù)庫類型以及其中數(shù)據(jù)具有一一對(duì)應(yīng)關(guān)系的鍵-值存儲(chǔ)(KVS,key-valuestore)0在KVS中,當(dāng)作為搜索請(qǐng)求給出一個(gè)鍵時(shí),輸出與該鍵相對(duì)應(yīng)的值。為了通過常規(guī)系統(tǒng)來實(shí)現(xiàn)KVS,執(zhí)行對(duì)存儲(chǔ)在存儲(chǔ)器系統(tǒng)中的數(shù)據(jù)的管理,或擴(kuò)展主機(jī)系統(tǒng)的主存儲(chǔ)器設(shè)備(DRAM)上的多個(gè)元數(shù)據(jù)的重復(fù)數(shù)據(jù)輸入/輸出處理,使用CPU(中央處理單元)執(zhí)行操作以及再次從存儲(chǔ)器中讀出數(shù)據(jù)并核對(duì)它們。將描述常規(guī)系統(tǒng)中的KVS及其問題。為了在常規(guī)SSD中實(shí)現(xiàn)KVS,數(shù)據(jù)被存為文件,元數(shù)據(jù)(屬于該數(shù)據(jù)的鍵-值數(shù)據(jù)(或鍵-值對(duì)))也被存為文件。即,鍵-值存儲(chǔ)是由等于或高于文件系統(tǒng)(即,安裝在OS中的文件系統(tǒng)或應(yīng)用程序)的級(jí)別的主機(jī)系統(tǒng)來實(shí)現(xiàn)的。在此情況下,鍵-值存儲(chǔ)能夠通過通用硬件配置來實(shí)現(xiàn)。然而,由于元數(shù)據(jù)被像正常的數(shù)據(jù)那樣處理,因此,在主機(jī)系統(tǒng)已經(jīng)將元數(shù)據(jù)文件讀出到主存儲(chǔ)器(例如,DRAM)之后,執(zhí)行元數(shù)據(jù)讀/寫或搜索操作。這例如造成了至少下列三個(gè)問題。第一,文件訪問性能下降。由于一般而言主存儲(chǔ)器的尺寸小于SSD的尺寸,因此,大于主存儲(chǔ)器尺寸的元數(shù)據(jù)文件無法被一次處理。因此,例如,基于鍵來分割元數(shù)據(jù)文件。根據(jù)需要,易于處理的尺寸的元數(shù)據(jù)文件被讀出到主存儲(chǔ)器,并被使用。重復(fù)此過程,直到獲得必需的鍵-值。對(duì)SSD的文件訪問的次數(shù)與元數(shù)據(jù)文件的數(shù)目一樣多。如果SSD的文件訪問速度低于元數(shù)據(jù)讀取請(qǐng)求的速度,則主機(jī)系統(tǒng)和本地系統(tǒng)(存儲(chǔ)器系統(tǒng))作為整體是速率受限的。第二,CPU上的負(fù)載增大。由于元數(shù)據(jù)創(chuàng)建、管理以及核對(duì)(搜索)全部都是由CPU執(zhí)行的,因此,在元數(shù)據(jù)處理過程中,負(fù)載施加在CPU上。特別是,當(dāng)更新數(shù)據(jù)時(shí),相應(yīng)元數(shù)據(jù)需要被從元數(shù)據(jù)文件中搜索和更新,因?yàn)樵獢?shù)據(jù)是與數(shù)據(jù)相對(duì)應(yīng)地創(chuàng)建的。另外,由于元數(shù)據(jù)搜索也需要由CPU完全使用軟件算法來執(zhí)行,因此,對(duì)CPU新施加了元數(shù)據(jù)管理的負(fù)載。第三,總線或接口上的負(fù)載增大。作為第一和第二問題的結(jié)果,主機(jī)系統(tǒng)和本地系統(tǒng)(存儲(chǔ)器系統(tǒng))頻繁地交換元數(shù)據(jù)信息。因此,總線和接口上的通信量增大。

      發(fā)明內(nèi)容
      根據(jù)一個(gè)方面,提供一種包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng),所述鍵-值存儲(chǔ)包含作為鍵和與所述鍵相對(duì)應(yīng)的值的對(duì)的鍵-值數(shù)據(jù),其特征在于,所述存儲(chǔ)器系統(tǒng)包括被配置成 接收數(shù)據(jù)寫入/讀取請(qǐng)求或基于鍵-值存儲(chǔ)的請(qǐng)求的接口 ;具有用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)區(qū)域和包含所述鍵-值數(shù)據(jù)的元數(shù)據(jù)表的第一存儲(chǔ)塊;被配置成響應(yīng)于所述鍵的輸入,獲取存儲(chǔ)有所述鍵-值數(shù)據(jù)的第一地址的地址獲取電路;以及控制器,所述控制器被配置成通過指定地址來執(zhí)行對(duì)所述第一存儲(chǔ)塊的數(shù)據(jù)寫入/讀取請(qǐng)求,以及向所述第一存儲(chǔ)塊輸出由所述地址獲取電路獲取的所述第一地址并執(zhí)行所述基于鍵-值存儲(chǔ)的請(qǐng)求,其中,所述控制器經(jīng)由所述接口輸出與所述鍵相對(duì)應(yīng)的值。根據(jù)另一個(gè)方面,提供一種包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng),所述鍵-值存儲(chǔ)包含作為鍵和與所述鍵相對(duì)應(yīng)的值的對(duì)的鍵-值數(shù)據(jù),其特征在于,所述存儲(chǔ)器系統(tǒng)包括被配置成接收數(shù)據(jù)寫入/讀取請(qǐng)求或基于鍵-值存儲(chǔ)的請(qǐng)求的接口 ;具有用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)區(qū)域和包含所述鍵-值數(shù)據(jù)的元數(shù)據(jù)表并包括地址獲取電路的第一存儲(chǔ)塊,所述地址獲取電路被配置成響應(yīng)于所述鍵的輸入,獲取存儲(chǔ)有所述鍵-值數(shù)據(jù)的第一地址;以及控制器,所述控制器被配置成通過指定地址來執(zhí)行對(duì)所述第一存儲(chǔ)塊的寫入/讀取和所述基于所述鍵-值存儲(chǔ)的請(qǐng)求,其中,所述控制器經(jīng)由所述接口輸出與所述鍵相對(duì)應(yīng)的值。根據(jù)再一個(gè)方面,提供一種包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng),所述鍵-值存儲(chǔ)包含作為鍵和與所述鍵相對(duì)應(yīng)的值的對(duì)的鍵-值數(shù)據(jù),其特征在于,所述存儲(chǔ)器系統(tǒng)包括被配置成接收數(shù)據(jù)寫入/讀取請(qǐng)求或基于鍵-值存儲(chǔ)的請(qǐng)求的接口 ;具有用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)區(qū)域和包含所述鍵-值數(shù)據(jù)的元數(shù)據(jù)表的第一存儲(chǔ)塊;存儲(chǔ)器控制器,所述存儲(chǔ)器控制器被配置成通過指定地址來執(zhí)行對(duì)所述第一存儲(chǔ)塊的數(shù)據(jù)寫入/讀取以及所述基于所述鍵-值存儲(chǔ)的請(qǐng)求;以及被配置成控制所述接口和所述第一存儲(chǔ)塊之間的信號(hào)發(fā)送/接收的本地控制器,其中,所述本地控制器包括用于存儲(chǔ)從所述第一存儲(chǔ)塊讀出的數(shù)據(jù)的第二存儲(chǔ)塊以及被配置成響應(yīng)于所述鍵的輸入而獲取存儲(chǔ)有所述鍵-值數(shù)據(jù)的第一地址的地址獲取電路,以及所述存儲(chǔ)器控制器經(jīng)由所述接口輸出與所述鍵相對(duì)應(yīng)的值。


      圖I是示意性地示出了第一存儲(chǔ)塊中的實(shí)際數(shù)據(jù)區(qū)域和元數(shù)據(jù)表之間的關(guān)系以及鍵-值存儲(chǔ)的機(jī)制的視圖;圖2A和2B是示出了圖I中的元素和集合之間的關(guān)系的視圖3A、3B、3C以及3D是示出了鍵-值存儲(chǔ)中的詳細(xì)處理過程的流程圖;圖4是示出了根據(jù)第一實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖;圖5是示出了根據(jù)第二實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖;圖6是示出了根據(jù)第三實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖;
      圖7是示出了根據(jù)第四實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖;圖8是示出了根據(jù)第五實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖;圖9是示出了根據(jù)第六實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖;圖10是示出了根據(jù)第七實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖;圖11是示出了根據(jù)第八實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖;圖12是示意性地示出了根據(jù)第一修改方案的實(shí)際數(shù)據(jù)區(qū)域和元數(shù)據(jù)表的視圖;圖13是示意性地示出了根據(jù)第二修改方案的實(shí)際數(shù)據(jù)區(qū)域和元數(shù)據(jù)表的視圖;圖14是示意性地示出了根據(jù)第三修改方案的實(shí)際數(shù)據(jù)區(qū)域和元數(shù)據(jù)表的視圖;圖15是示意性地示出了根據(jù)第三修改方案的實(shí)現(xiàn)鍵-值存儲(chǔ)的另一種方法的視圖;以及圖16是示意性地示出了根據(jù)第四修改方案的實(shí)際數(shù)據(jù)區(qū)域和元數(shù)據(jù)表的視圖。
      具體實(shí)施例方式一般而言,根據(jù)一個(gè)實(shí)施例,包括鍵-值存儲(chǔ)(該鍵-值存儲(chǔ)包含作為鍵和與該鍵相對(duì)應(yīng)的值的對(duì)的鍵-值數(shù)據(jù))的存儲(chǔ)器系統(tǒng)包括接口、第一存儲(chǔ)塊、地址獲取電路和控制器。接口接收數(shù)據(jù)寫入/讀取請(qǐng)求或基于鍵-值存儲(chǔ)的請(qǐng)求。第一存儲(chǔ)塊具有用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)區(qū)域和包含所述鍵-值數(shù)據(jù)的元數(shù)據(jù)表。地址獲取電路響應(yīng)于鍵的輸入而獲取存儲(chǔ)有所述鍵-值數(shù)據(jù)的第一地址??刂破魍ㄟ^指定地址來執(zhí)行對(duì)第一存儲(chǔ)塊的數(shù)據(jù)寫入/讀取請(qǐng)求,以及向第一存儲(chǔ)塊輸出地址獲取電路所獲取的第一地址并執(zhí)行所述基于鍵-值存儲(chǔ)的請(qǐng)求??刂破鹘?jīng)由接口輸出對(duì)應(yīng)于鍵的值。在下面的描述中,相同參考編號(hào)表示具有幾乎相同功能和配置的組成元件,只有在需要的情況下才進(jìn)行重復(fù)的描述。存儲(chǔ)在存儲(chǔ)器系統(tǒng)中的元數(shù)據(jù)通過鍵-值存儲(chǔ)而被存儲(chǔ)。現(xiàn)在將參考附圖來描述提供鍵-值數(shù)據(jù)的有效存儲(chǔ)方法和配置的各實(shí)施例。<元數(shù)據(jù)表和鍵-值存儲(chǔ)>將首先說明元數(shù)據(jù)表和鍵-值存儲(chǔ),這是本實(shí)施例的基本原理。圖I是示意性地示出了第一存儲(chǔ)塊中的實(shí)際數(shù)據(jù)區(qū)域和元數(shù)據(jù)表之間的關(guān)系以及鍵-值存儲(chǔ)的機(jī)制的視圖。請(qǐng)注意,數(shù)值和符號(hào)用于為了描述的方便性,并不始終對(duì)應(yīng)于實(shí)施例。如圖I所示,尋址的實(shí)際數(shù)據(jù)區(qū)域(實(shí)際地址空間)161和元數(shù)據(jù)表162存在于存儲(chǔ)器可訪問的物理地址空間中。實(shí)際數(shù)據(jù)區(qū)域161直接對(duì)應(yīng)于常規(guī)概念的邏輯地址空間。元數(shù)據(jù)表162在用戶或客戶端的正常使用中并不被顯式地訪問,因?yàn)樗歉鶕?jù)需要在存儲(chǔ)器系統(tǒng)側(cè)被使用的數(shù)據(jù)區(qū)域。然而,對(duì)于對(duì)系統(tǒng)的測(cè)試命令,準(zhǔn)許顯式訪問。用戶基本上使用接口命令來向存儲(chǔ)器系統(tǒng)輸入操作實(shí)際數(shù)據(jù)或元數(shù)據(jù)的請(qǐng)求。存儲(chǔ)器系統(tǒng)在內(nèi)部執(zhí)行處理,并作為響應(yīng)將信號(hào)或數(shù)據(jù)返回用戶(主機(jī)系統(tǒng))。存儲(chǔ)器系統(tǒng)在用于將邏輯地址轉(zhuǎn)換成物理地址的邏輯地址-物理地址轉(zhuǎn)換表中區(qū)別實(shí)際數(shù)據(jù)區(qū)域161和元數(shù)據(jù)表162的存儲(chǔ)區(qū)域。根據(jù)需要,創(chuàng)建元數(shù)據(jù)表162中的元數(shù)據(jù)地址。因此,如果沒有鍵-值 數(shù)據(jù)創(chuàng)建請(qǐng)求,則元數(shù)據(jù)地址可能不存在于第一存儲(chǔ)塊中。如上文所描述的,元數(shù)據(jù)表162可以存在于本實(shí)施例的存儲(chǔ)器系統(tǒng)中,帶有不是固定的而是可以根據(jù)基于鍵-值存儲(chǔ)的請(qǐng)求而任意變化(增大或縮小)的存儲(chǔ)容量。因此,用戶可以以最高效率使用可訪問的物理存儲(chǔ)空間,同時(shí)任意處理元數(shù)據(jù)。極端地,可以根本不處理元數(shù)據(jù)。在此情況下,物理存儲(chǔ)空間能夠被最大地使用。相反,如果元數(shù)據(jù)被充分地使用,則元數(shù)據(jù)表162可以被擴(kuò)展到等于或大于實(shí)際數(shù)據(jù)區(qū)域161的尺寸。也是在此情況下,由于元數(shù)據(jù)管理是存儲(chǔ)器系統(tǒng)(本地系統(tǒng))側(cè)的工作,因此,主機(jī)系統(tǒng)側(cè)被從元數(shù)據(jù)管理中解放出來。因此,用戶(主機(jī)系統(tǒng)側(cè))在正常使用中不必知道元數(shù)據(jù)管理。元數(shù)據(jù)表162存儲(chǔ)鍵-值對(duì)。然而,數(shù)據(jù)的實(shí)體存在于實(shí)際數(shù)據(jù)區(qū)域(實(shí)際地址空間)161中。將使用通過鍵-值存儲(chǔ)的數(shù)據(jù)提取的詳細(xì)示例來描述元數(shù)據(jù)表162和實(shí)際數(shù)據(jù)區(qū)域161中的實(shí)際數(shù)據(jù)之間的關(guān)系。鍵-值存儲(chǔ)(KVS)是寫入鍵和值的集合并通過指定鍵來讀出值的數(shù)據(jù)庫管理方法。盡管KVS常常是經(jīng)由網(wǎng)絡(luò)使用的,數(shù)據(jù)存儲(chǔ)目的地肯定是某個(gè)本地存儲(chǔ)器或存儲(chǔ)系統(tǒng)。甚至元數(shù)據(jù)也存儲(chǔ)在實(shí)際數(shù)據(jù)地址空間中。通常通過指定存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器的開始地址來讀出數(shù)據(jù)。數(shù)據(jù)可以呈現(xiàn)文件的形式。在一些文件系統(tǒng)中,對(duì)于例如每個(gè)512字節(jié)的扇區(qū),管理實(shí)際數(shù)據(jù)地址空間。另外地,如果文件系統(tǒng)不必是受限的,則可以以4或8KB (這是例如NAND快閃存儲(chǔ)器的讀/寫頁面尺寸)來管理實(shí)際數(shù)據(jù)地址空間。圖I在概念上示出了其中實(shí)際數(shù)據(jù)區(qū)域161存儲(chǔ)對(duì)應(yīng)于實(shí)際地址的文件(數(shù)據(jù))的狀態(tài)。例如,文件“a-file. txt”的文件ID “%a_file. txt”被存儲(chǔ)在實(shí)際數(shù)據(jù)地址&001處。文件內(nèi)容“This is a book”存儲(chǔ)在&002處。在現(xiàn)實(shí)中,實(shí)際數(shù)據(jù)地址一般是在字節(jié)基礎(chǔ)上管理的。因此,&001和&002的繼續(xù)是特殊示例。圖I中的元數(shù)據(jù)表162示出了存儲(chǔ)的鍵-值對(duì)。鍵是從數(shù)據(jù)文件中提取的搜索目標(biāo)元素或集合。在此示例中,鍵是包括元素&001和&011的集合。值是當(dāng)找到鍵時(shí)要被返回的值。在此示例中,包括單詞“book”的數(shù)據(jù)文件的一組文件ID被存儲(chǔ)為實(shí)際數(shù)據(jù)地址空間形式的值。將根據(jù)圖I所示出的過程來對(duì)此進(jìn)行描述。(i)鍵被作為條目輸入,以及元數(shù)據(jù)表被搜索以查找值。(ii)由于對(duì)應(yīng)于找到的鍵的值是存儲(chǔ)鍵所屬的集合的實(shí)際數(shù)據(jù)地址,因此,該實(shí)際數(shù)據(jù)地址被引用。(iii)輸出在引用的實(shí)際數(shù)據(jù)地址處寫入的數(shù)據(jù)。實(shí)際數(shù)據(jù)地址和元數(shù)據(jù)表之間的關(guān)系以及鍵-值對(duì)的關(guān)系是如圖2A和2B中所示的元素和集合之間的關(guān)系。即,在正常的文件中,如圖2B所示,例如,具有文件名“a-file. txt”的文件是一個(gè)集合,而文本數(shù)據(jù)“This is a book”的每一個(gè)單詞都是一個(gè)元素。文件ID也是一個(gè)元素。然而,在元數(shù)據(jù)表(元數(shù)據(jù)地址空間)中,可以反向和重新排列集合和元素之間的關(guān)系,如圖2A所示。即,關(guān)系被轉(zhuǎn)換為“反向”關(guān)系。在集合“book”中,文件名“a-file.txt”和“b_file.txt”被存儲(chǔ)為元素。在鍵-值數(shù)據(jù)中,搜索重新排列后的集合名(“book”)以獲取元素(“a-file. txt”和“b-file. txt”)。一般而言,這是在全文搜索本身中執(zhí)行的反向文件創(chuàng)建和搜索過程,以及鍵-值數(shù)據(jù)的實(shí)際示例。反向文件是用于反向索引方法(這是實(shí)現(xiàn)全文搜索功能的方法之一)中的搜索的索引文件。在反向索引方法中,預(yù)先 為每一段內(nèi)容創(chuàng)建存儲(chǔ)有包括內(nèi)容的文件列表的被稱為反向文件的索引數(shù)據(jù)文件。周期性地一次更新反向文件的內(nèi)容或每次添加或刪除文件時(shí)更新反向文件的內(nèi)容。對(duì)于內(nèi)容搜索請(qǐng)求,作為搜索結(jié)果輸出對(duì)應(yīng)于搜索目標(biāo)內(nèi)容的反向文件的內(nèi)容。因此,不必在每個(gè)全文搜索中檢查所有文件的內(nèi)容。因此,可以加快搜索。反向文件是鍵-值數(shù)據(jù)的一個(gè)示例。值得注意的是,實(shí)施例不限于此?!存I-值存儲(chǔ)的命令〉主機(jī)系統(tǒng)向存儲(chǔ)器系統(tǒng)的主機(jī)接口給出鍵-值存儲(chǔ)請(qǐng)求的下面的命令?;阪I-值存儲(chǔ)的請(qǐng)求的命令包括注冊(cè)與鍵相關(guān)聯(lián)的新集合(值)的命令(PUT),向與鍵相關(guān)聯(lián)的集合(值)添加新元素(值)的命令(WRITE),將與鍵相關(guān)聯(lián)的集合(值)的元素存儲(chǔ)在緩沖器中并返回其尺寸的命令(GET),以及讀出存儲(chǔ)在緩沖器中的元素(值)的命令(READ)。可以根據(jù)需要來改變命令名稱??梢蕴砑有碌幕阪I-值存儲(chǔ)的請(qǐng)求的命令。例如,可以添加排列屬于集合(鍵)的元素(值)的命令,或指示例如在元數(shù)據(jù)表中重新排列集合(鍵)或比較元素(值)的命令。在此實(shí)施例中,根據(jù)命令請(qǐng)求,元數(shù)據(jù)表和實(shí)際數(shù)據(jù)區(qū)域協(xié)作。圖3A、3B、3C以及3D的流程圖示出了使用命令的鍵-值數(shù)據(jù)添加、搜索等等的詳細(xì)過程。(I)為了注冊(cè)新的鍵-值數(shù)據(jù)(PUT),如圖3A所示,執(zhí)行搜索以檢查所述鍵是否已經(jīng)存在于元數(shù)據(jù)表中(步驟SI和S2)。如果找到所述鍵,則向輸出端返回錯(cuò)誤。即,返回表示所述鍵已經(jīng)存在的消息,并且處理結(jié)束(步驟S3)。另一方面,如果未找到所述鍵,則過程前進(jìn)到所述值的處理。執(zhí)行搜索以檢查所述值是否存儲(chǔ)在實(shí)際數(shù)據(jù)區(qū)域(實(shí)際數(shù)據(jù)地址)中(步驟S4)。如果在鍵-值數(shù)據(jù)的注冊(cè)時(shí)間,所述值未存儲(chǔ)在實(shí)際數(shù)據(jù)區(qū)域中,則向?qū)嶋H數(shù)據(jù)區(qū)域添加所述值(步驟S5)。如果所述值被存儲(chǔ),則將所述鍵直接存儲(chǔ)在元數(shù)據(jù)表中,并且與所述鍵相關(guān)聯(lián)地注冊(cè)所述值的實(shí)際數(shù)據(jù)地址(步驟S6)。當(dāng)在存儲(chǔ)器系統(tǒng)中管理邏輯地址-物理地址轉(zhuǎn)換表時(shí),將元數(shù)據(jù)表的更新通知管理所述表的功能電路(步驟S7)。最后,輸出所述值的實(shí)際數(shù)據(jù)尺寸,并且處理結(jié)束(步驟S8)。(2)為了向已經(jīng)存在的鍵添加新的值(WRITE),如圖3B所示,執(zhí)行搜索以檢查所述鍵是否存在于元數(shù)據(jù)表中(步驟Sll和S12)。如果未找到所述鍵,例如,尺寸=0被返回到輸出端以通知所述鍵的不存在(步驟S13)。另一方面,如果找到所述鍵,則引用由存儲(chǔ)在與所述鍵相對(duì)應(yīng)的值中的實(shí)際數(shù)據(jù)地址指定的存儲(chǔ)位置(步驟S14),并將新的值添加到所述存儲(chǔ)位置。首先,檢查所述值的存儲(chǔ)位置中是否存在空閑空間(步驟S15)。如果在所述值的存儲(chǔ)位置中不存在空閑空間,則存儲(chǔ)用于跳轉(zhuǎn)到另一個(gè)值的實(shí)際數(shù)據(jù)地址的指針(步驟S16)。接下來,將新的值添加到由所述地址指定的存儲(chǔ)位置(步驟S17)。如果在所述值的存儲(chǔ)位置中存在空閑空間,則將新的值添加到所述值的實(shí)際數(shù)據(jù)地址的存儲(chǔ)位置的空閑空間(步驟S17)。最后,輸出所述值的實(shí)際數(shù)據(jù)尺寸,并且處理結(jié)束(步驟S18)。(3)為了獲得與鍵相關(guān)聯(lián)的集合(值)(GET),如圖3C所示,執(zhí)行搜索以檢查所述鍵是否存在于元數(shù)據(jù)表中(步驟S21和S22)。如果未找到所述鍵,例如,尺寸=0被返回到輸出端以通知所述鍵的不存在(步驟S23 )。另一方面,如果找到所述鍵,則引用由存儲(chǔ)在與所述鍵相對(duì)應(yīng)的值中的實(shí)際數(shù)據(jù)地址指定的存儲(chǔ)位置(步驟S24)。讀出存儲(chǔ)在所述實(shí)際數(shù)據(jù)地址的存儲(chǔ)位置中的值并存儲(chǔ) 在緩沖存儲(chǔ)器或寄存器存儲(chǔ)器中(步驟S25)。最后,輸出所述值的實(shí)際數(shù)據(jù)尺寸,并且處理結(jié)束(步驟S26)。(4)為了輸出存儲(chǔ)在緩沖存儲(chǔ)器(或寄存器存儲(chǔ)器)中的集合(值)的元素(READ),如圖3D所示,引用其中存儲(chǔ)了所述集合(值)的元素的緩沖存儲(chǔ)器中的存儲(chǔ)位置(步驟S31)。檢查是否存在集合(值)的元素(步驟S32)。如果未找到集合(值)的元素,例如,S=空被返回到輸出端,以通知集合(值)的元素的不存在(步驟S33)。另一方面,如果找到集合(值)的元素,則讀出對(duì)應(yīng)于指定尺寸的集合(值)的元素(步驟S34)。輸出讀出的集合(值)的元素,并且處理結(jié)束(步驟S35)。上文描述了通過指定尺寸來讀出元素的示例。實(shí)際上,可以通過規(guī)定緩沖存儲(chǔ)器中的位置來進(jìn)行讀取。請(qǐng)注意,在過程(3)中,可以將值的實(shí)際數(shù)據(jù)地址的開始地址返回主機(jī)系統(tǒng)。這在讀出值的實(shí)際數(shù)據(jù)時(shí)是方便的,因?yàn)檫^程(4)通常是在過程(3)之后執(zhí)行的。如何定義過程取決于命令集的定義,并且這不限于上文所描述的那種,因?yàn)樵诒旧暾?qǐng)中使用詳細(xì)的命令集來說明鍵-值存儲(chǔ)過程。其它過程也不限于上文所描述的那些。當(dāng)存儲(chǔ)器系統(tǒng)使用散列-CAM時(shí),鍵和值并不總是匹配。即,鍵和值并不總是彼此相關(guān)聯(lián)。請(qǐng)注意,稍后將詳細(xì)地描述散列-CAM。因此,在散列-CAM中,引用與鍵相對(duì)應(yīng)的值以及確定鍵是否匹配實(shí)際數(shù)據(jù)的過程被添加到搜索元數(shù)據(jù)表以查找鍵的過程中。如果鍵不匹配實(shí)際數(shù)據(jù),則通過根據(jù)散列-CAM中的鍵-值的地址管理規(guī)則(例如,檢查相鄰地址)來指定另一鍵范圍內(nèi)的元數(shù)據(jù)地址,來再次執(zhí)行搜索。請(qǐng)注意,實(shí)際過程和命令不限于上文所描述的那些。該方法可以改變,使得例如如果在實(shí)際操作中找到多個(gè)鍵,則臨時(shí)設(shè)置標(biāo)記并一次讀取多個(gè)值。如上文所描述的,例如,可以添加排列屬于一個(gè)集合(鍵)的多個(gè)元素(值)的命令,或指示例如在元數(shù)據(jù)表中重新排列多個(gè)集合(鍵)或比較多個(gè)元素(值)的命令。請(qǐng)注意,鍵和值可以是集合和元素或反之。或者,由于鍵和值具有一一對(duì)應(yīng)關(guān)系,因此,兩者都可以是集合或元素。在此實(shí)施例中,主機(jī)接口能夠接收搜索命令或者本地控制器或存儲(chǔ)器控制器能夠經(jīng)由主機(jī)接口來接收搜索命令,并執(zhí)行鍵-值存儲(chǔ)的一系列處理??梢詫MAC (直接存儲(chǔ)器存取控制器)添加到存儲(chǔ)器系統(tǒng)中的本地控制器或存儲(chǔ)器控制器中。在此情況下,存儲(chǔ)器系統(tǒng)能夠主要控制鍵-值存儲(chǔ)操作。在某些情況下,存儲(chǔ)器系統(tǒng)可以主要訪問存儲(chǔ)器系統(tǒng)外部的另一存儲(chǔ)器(例如,主機(jī)系統(tǒng)的主存儲(chǔ)器)。[第一實(shí)施例]下面將根據(jù)需要參考附圖來描述此實(shí)施例的詳細(xì)硬件配置。將描述根據(jù)第一實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置。圖4是示出了根據(jù)第一實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖。如圖4所示,存儲(chǔ)器系統(tǒng)(或本地系統(tǒng))10包括主機(jī)接口 11、本地控制器12、存儲(chǔ)器控制器(或芯片控制器)13、固定長(zhǎng)度數(shù)據(jù)生成器14、寄存器存儲(chǔ)器(也稱為高速緩沖存儲(chǔ)器、頁面寄存器、R/W寄存器、頁面高速緩存等等)15、以及第一存儲(chǔ)塊16。
      主機(jī)系統(tǒng)經(jīng)由,例如,諸如AMBA、SATA、PCIe或USB的總線連接到存儲(chǔ)器系統(tǒng)10的主機(jī)接口 11。主機(jī)系統(tǒng)包括CPUlOl和主存儲(chǔ)器102。第一存儲(chǔ)塊16包含實(shí)際數(shù)據(jù)區(qū)域161和從實(shí)際數(shù)據(jù)區(qū)域161中提取的元數(shù)據(jù)表
      162。元數(shù)據(jù)表162具有鍵-值數(shù)據(jù)。元數(shù)據(jù)表162的鍵-值數(shù)據(jù)作為列表存儲(chǔ)鍵(這是與數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù))以及相關(guān)聯(lián)的數(shù)據(jù)的實(shí)際數(shù)據(jù)地址的開始地址(值)。例如,可以使用鍵-值數(shù)據(jù)來形成上文所描述的反向文件等等。作為第一存儲(chǔ)塊16,例如,使用NAND快閃存儲(chǔ)器,這是一種非易失性半導(dǎo)體存儲(chǔ)器。NAND快閃存儲(chǔ)器可由一個(gè)芯片或者多個(gè)芯片構(gòu)成,以增大存儲(chǔ)容量。也可使用諸如MRAM (磁性隨機(jī)存取存儲(chǔ)器)或ReRAM (電阻性隨機(jī)存取存儲(chǔ)器)的具有存儲(chǔ)非易失性的任何其它固態(tài)芯片LSI作為第一存儲(chǔ)塊16。然而,第一存儲(chǔ)塊16不限于那些。主機(jī)接口 11可以通過將地址以及寫入和讀取請(qǐng)求指定到元數(shù)據(jù)表162中的鍵-值數(shù)據(jù),從主機(jī)系統(tǒng)接收正常數(shù)據(jù)操作請(qǐng)求,即,數(shù)據(jù)寫入和讀取請(qǐng)求。由存儲(chǔ)器控制器13接收和控制對(duì)第一存儲(chǔ)塊16的寫入和讀取請(qǐng)求。固定長(zhǎng)度數(shù)據(jù)生成器14和寄存器存儲(chǔ)器15連接在存儲(chǔ)器控制器13和第一存儲(chǔ)塊16之間。寄存器存儲(chǔ)器15也被稱為頁面寄存器、R/W寄存器、頁面高速緩存,等等,并在寫入或讀取時(shí)被暫時(shí)用作存儲(chǔ)區(qū)。特別是,寄存器存儲(chǔ)器15具有算術(shù)功能,并且一般被用于控制NAND快閃存儲(chǔ)器的多級(jí)操作。也是在此實(shí)施例中,以類似方式使用寄存器存儲(chǔ)器15。作為此實(shí)施例的特征,提供了固定長(zhǎng)度數(shù)據(jù)生成器14,例如,散列生成器,其被用于寫入和讀取第一存儲(chǔ)塊16中的鍵-值數(shù)據(jù)。散列生成器充當(dāng)?shù)刂帆@取電路,該電路響應(yīng)于鍵輸入而獲取鍵-值數(shù)據(jù)的存儲(chǔ)位置的地址。散列生成器可被視為具有生成散列函數(shù)的功能的電子電路。然而,可以使用專用電路,或者也可以向通用運(yùn)算電路輸入散列函數(shù)算法。由散列生成器生成的散列值(地址)可能沖突。存儲(chǔ)器控制器13包括用于在發(fā)生散列值沖突之后進(jìn)行處理的比較電路或地址管理電路。稍后將描述使用固定長(zhǎng)度數(shù)據(jù)生成器(散列生成器)14和地址管理電路的數(shù)據(jù)存儲(chǔ)/搜索方法。上文已經(jīng)描述了其中單獨(dú)地形成存儲(chǔ)器控制器13和固定長(zhǎng)度數(shù)據(jù)生成器14的示例。然而,存儲(chǔ)器控制器13可包括固定長(zhǎng)度數(shù)據(jù)生成器14。此實(shí)施例的配置還包括本地控制器12以控制主機(jī)接口 11和第一存儲(chǔ)塊16之間的信號(hào)發(fā)送/接收。本地控制器12可包括用于從第一存儲(chǔ)塊16輸出的數(shù)據(jù)的ECC (糾錯(cuò)碼)電路。請(qǐng)注意,如果存儲(chǔ)器控制器13包括ECC電路,則本地控制器12不必包括它。本地控制器12可以具有管理將第一存儲(chǔ)塊16的邏輯地址轉(zhuǎn)換為物理地址的邏輯地址-物理地址轉(zhuǎn)換表功能的功能。這使本地控制器12管理邏輯地址和實(shí)際數(shù)據(jù)區(qū)域161和元數(shù)據(jù)表162之間的對(duì)應(yīng)關(guān)系。即,本地控制器12區(qū)別實(shí)際數(shù)據(jù)區(qū)域161和元數(shù)據(jù)表162在邏輯地址-物理地址轉(zhuǎn)換表中的存儲(chǔ)區(qū)域。因此,實(shí)際數(shù)據(jù)區(qū)域161和元數(shù)據(jù)表162的存儲(chǔ)區(qū)域不必是分離的,并且可在第一存儲(chǔ)塊16中混合。本地控制器12可包括用于這些過程的第二存儲(chǔ)塊?;蛘?,第二存儲(chǔ)塊可以經(jīng)由總線連接到本地控制器12的外部。在常規(guī)SSD中,第二存儲(chǔ)塊的存在不言而喻。然而,對(duì)于此實(shí)施例的最少配置的描述,第二存儲(chǔ)塊的不存在不一定不方便。因此,圖4中未示出第二存儲(chǔ)塊。然而,如果本地控制器12能夠使用第二存儲(chǔ)塊,則可從第一存儲(chǔ)塊16中將元數(shù)據(jù)表讀出到第二存儲(chǔ)塊,并 引用它。請(qǐng)注意,第二存儲(chǔ)塊還被用來補(bǔ)償主機(jī)接口 11的通信速度和第一存儲(chǔ)塊16的訪問速度之間的差異。因此,使用非易失性的并且具有小容量但是與第一存儲(chǔ)塊16相比具有高訪問速度的存儲(chǔ)器作為第二存儲(chǔ)塊。例如,使用非易失性DRAM或SRAM作為第二存儲(chǔ)塊。如果能夠獲得類似的速度和容量,則可以使用非易失性RAM (隨機(jī)存取存儲(chǔ)器),例如,MRAM (磁阻隨機(jī)存取存儲(chǔ)器)、ReRAM(電阻變化隨機(jī)存取存儲(chǔ)器)、FeRAM (鐵電隨機(jī)存取存儲(chǔ)器)、PCRAM (相變隨機(jī)存取存儲(chǔ)器)等等。使用快閃存儲(chǔ)器作為第一存儲(chǔ)塊16的存儲(chǔ)器系統(tǒng)一般具有使用本地控制器12、第二存儲(chǔ)塊、以及邏輯地址-物理地址轉(zhuǎn)換表的耗損均衡功能。這可以用于此實(shí)施例中?!词褂蒙⒘泻瘮?shù)的數(shù)據(jù)存儲(chǔ)/搜索方法〉將描述使用此實(shí)施例的固定長(zhǎng)度數(shù)據(jù)生成器(散列生成器)14和地址管理電路的數(shù)據(jù)存儲(chǔ)/搜索方法。在存儲(chǔ)器控制器13中提供了地址管理電路以執(zhí)行避免散列值(地址)的沖突的處理。在此實(shí)施例中,由于提供了散列生成器,因此,任意長(zhǎng)度比特?cái)?shù)據(jù)能夠被轉(zhuǎn)換為固定長(zhǎng)度比特?cái)?shù)據(jù)。這里將描述其中散列生成器使用此功能從任意長(zhǎng)度比特?cái)?shù)據(jù)的元數(shù)據(jù)生成固定長(zhǎng)度數(shù)據(jù)比特?cái)?shù)據(jù)的元數(shù)據(jù)地址的示例。優(yōu)選地,使用盡可能均勻并且粗略的密碼散列函數(shù)作為散列函數(shù)。例如,使用 SHA-I (安全散列算法-I)、SHA-2 (安全散列算法-2)、MD4 (MessageDigest4)、MD5(MessageDigest5)等等。散列生成器具有根據(jù)散列函數(shù)從具有任意長(zhǎng)度的給定〈鍵 > 獲得具有固定比特長(zhǎng)度的比特串作為散列(〈鍵 >)并進(jìn)一步將比特長(zhǎng)度縮短到期望比特長(zhǎng)度(BitLength)的功能。例如,散列生成器具有通過下列公式表示的除法功能< 鍵 ID〉=散列 鍵 mod BitLength或者,具有期望長(zhǎng)度的數(shù)據(jù)可簡(jiǎn)單地從所生成的具有固定比特長(zhǎng)度的比特串的開始被切除,并被使用。使如此生成的鍵ID的長(zhǎng)度等于元數(shù)據(jù)表的地址長(zhǎng)度。這允許直接使用地址作為元數(shù)據(jù)表的地址。例如,參考圖1,當(dāng)作為由散列生成器生成固定長(zhǎng)度比特?cái)?shù)據(jù)“book”(在下文中被稱為散列(“book”)的結(jié)果而獲得001時(shí),元數(shù)據(jù)表的地址$001對(duì)應(yīng)于鍵“book”。相對(duì)應(yīng)的值被存儲(chǔ)在地址$001處。對(duì)于“Blue”,當(dāng)作為散列(“Blue”)的結(jié)果而獲得002時(shí),存儲(chǔ)對(duì)應(yīng)于元數(shù)據(jù)地址$002的值。以這種方式存儲(chǔ)鍵和值。為了搜索鍵,例如,“book”,由于散列函數(shù)的輸出值(散列值)“001”直接指示存儲(chǔ)位置的元數(shù)據(jù)地址,因此,地址被直接引用。使用散列函數(shù)和存儲(chǔ)器地址之間的對(duì)應(yīng)關(guān)系的數(shù)據(jù)引用方法將被稱為散列-CAM。在散列-CAM中,即使使用盡可能粗略的散列函數(shù),從概率論的視點(diǎn)來看,散列值(地址)沖突的可能性也不為零。實(shí)際上降低散列值沖突的可能性的最簡(jiǎn)單并且有效的方法是準(zhǔn)備足夠大的存儲(chǔ)器空間。然而,在現(xiàn)實(shí)中,會(huì)因?yàn)榇鎯?chǔ)器尺寸有限而發(fā)生沖突。為了在沖突之后獲得處理功能,提供了具有下列功能的比較電路和地址管理電路。當(dāng)散列值沖突 時(shí),比較電路通過引用值的內(nèi)容來提取數(shù)據(jù)并執(zhí)行比較/核對(duì)以檢查所提取的數(shù)據(jù)是否匹配鍵。如果所提取的數(shù)據(jù)匹配鍵,則地址管理電路改變散列值(地址)。例如,假設(shè)除了上文所描述的鍵之外還存儲(chǔ)另一個(gè)鍵“note”時(shí),散列(“note”)的結(jié)果是001。由于$001已被用于“book”,因此,跳轉(zhuǎn)到另一個(gè)元數(shù)據(jù)地址是必需的。例如,地址被移動(dòng)到相鄰的元數(shù)據(jù)地址,即,地址被遞增。在圖I的示例中,由于$001沖突,因此檢查$002是否是空的。然而,$002也已經(jīng)被散列(“Blue”)使用。因此,檢查下一個(gè)地址$003。如果$003是空的,則對(duì)應(yīng)于“note”的值被存儲(chǔ)在該地址處。使用此方法使得能夠存儲(chǔ)數(shù)據(jù),即使散列值發(fā)生沖突。然而,需要設(shè)計(jì)方案來搜索鍵-值數(shù)據(jù)。當(dāng)搜索“note”時(shí),如果散列(“note”)是001,則引用元數(shù)據(jù)地址$001。然而,在此情況下,錯(cuò)誤地獲得已經(jīng)存儲(chǔ)的“book”的值。為了防止此,需要始終執(zhí)行核對(duì)以檢查鍵和值之間的對(duì)應(yīng)關(guān)系是否正確?!癰ook”的值是實(shí)際數(shù)據(jù)地址&101。因此,通過引用&101來讀出數(shù)據(jù)。由于[book]被存為開始數(shù)據(jù),因此,發(fā)現(xiàn)鍵-值對(duì)不是“note”的鍵-值對(duì)。為了搜索“note”的鍵-值對(duì),對(duì)于下一個(gè)元數(shù)據(jù)地址$002類似地執(zhí)行核對(duì),以發(fā)現(xiàn)鍵-值對(duì)不是“note”的鍵-值對(duì)。結(jié)果,已經(jīng)發(fā)現(xiàn),下一個(gè)元數(shù)據(jù)地址$003指示正確的鍵-值對(duì)。如上文所描述的,即使散列值發(fā)生沖突,也能夠搜索鍵-值數(shù)據(jù)。請(qǐng)注意,由于實(shí)際數(shù)據(jù)部分的[book]、[Blue]和[note]僅需要經(jīng)受鍵核對(duì),因此,開頭幾個(gè)字節(jié)可被實(shí)質(zhì)上切除,并被用作固定長(zhǎng)度數(shù)據(jù),諸如book的“bo”,Blue的“BI”,以及note的“no”。在此情況下也需要謹(jǐn)慎,因?yàn)閷?duì)于固定長(zhǎng)度數(shù)據(jù),發(fā)生沖突的可能性并不是零。上文使用了在沖突之后遞增地址的方法。然而,如稍后在修改方案中所描述的,使用此實(shí)施例使得可以從與鍵相對(duì)應(yīng)的值引用實(shí)際數(shù)據(jù)地址,即使該鍵,即,地址發(fā)生沖突。因此,將鍵本身存儲(chǔ)在實(shí)際數(shù)據(jù)地址中并核對(duì)該鍵的方法也是可使用的。甚至在此情況下,作為搜索條目的鍵和實(shí)際數(shù)據(jù)中的鍵之間的核對(duì)是必需的。充當(dāng)散列-CAM的地址管理電路也是必需的。因此,雖然方法稍微不同,但是,與上文所描述的散列-CAM的配置相同的配置是可使用的。如上文所描述的,散列生成器生成散列值(地址)。另外,地址管理電路將避免散列值沖突的過程添加到元數(shù)據(jù)存儲(chǔ)。這允許在存儲(chǔ)器系統(tǒng)10中有效地實(shí)現(xiàn)鍵-值存儲(chǔ)。在此實(shí)施例中,為了實(shí)現(xiàn)散列-CAM,提供了硬件功能(固定長(zhǎng)度數(shù)據(jù)生成器),并且存儲(chǔ)器控制器13包括用于避免固定長(zhǎng)度數(shù)據(jù)(地址)的沖突的電路??梢栽诖鎯?chǔ)器控制器13中提供硬件功能(固定長(zhǎng)度數(shù)據(jù)生成器)。此時(shí),可以在寄存器存儲(chǔ)器15進(jìn)行鍵-值數(shù)據(jù)的存儲(chǔ),或直接對(duì)于第一存儲(chǔ)塊16執(zhí)行鍵-值數(shù)據(jù)的存儲(chǔ)。請(qǐng)注意,在上文所描述的配置中,如果鍵-值存儲(chǔ)功能不被損壞,則邏輯地址-物理地址轉(zhuǎn)換表的臨時(shí)存儲(chǔ)和耗損均衡處理不必總是在存儲(chǔ)器系統(tǒng)10中執(zhí)行,并且可由主機(jī)系統(tǒng)完全使用CPU和主存儲(chǔ)器來執(zhí)行。為了使存儲(chǔ)器系統(tǒng)10主要執(zhí)行鍵-值存儲(chǔ),可以提供DMAC (直接存儲(chǔ)器存取控制器)。在此實(shí)施例中,功能塊通過總線連接?;旧?,優(yōu)選地在存儲(chǔ)器系統(tǒng)中構(gòu)建快速并且有效的總線配置。由于,例如,芯片接口標(biāo)準(zhǔn)和外部接口標(biāo)準(zhǔn)之間的差異,可以在存儲(chǔ)器系統(tǒng)中使用兩種或更多種類型的總線。根據(jù)此實(shí)施例,可以提供使用與數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù)的鍵-值數(shù)據(jù)以使得 能夠以高速度簡(jiǎn)單地執(zhí)行從存儲(chǔ)器系統(tǒng)中提取數(shù)據(jù)的處理并且允許用戶以最高效率使用可訪問的物理存儲(chǔ)空間同時(shí)任意地處理元數(shù)據(jù)的存儲(chǔ)器系統(tǒng)。即,可以提供接收對(duì)元數(shù)據(jù)的操作請(qǐng)求并且以高速度按存儲(chǔ)器系統(tǒng)中的鍵-值存儲(chǔ)有效地處理并輸出它的存儲(chǔ)器系統(tǒng)。[第二實(shí)施例]此實(shí)施例的硬件配置部分地不同于第一實(shí)施例的硬件配置,并包括具有專用于鍵核對(duì)的存儲(chǔ)器空間的硬件CAM。圖5是示出了根據(jù)第二實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖。存儲(chǔ)器控制器13控制本地控制器12和第一存儲(chǔ)塊16之間的信號(hào)發(fā)送/接收。存儲(chǔ)器系統(tǒng)包括用于對(duì)第一存儲(chǔ)塊16的寫入/讀取的寄存器存儲(chǔ)器15??蓪⑺阉髡?qǐng)求臨時(shí)存儲(chǔ)在寄存器存儲(chǔ)器15中,并執(zhí)行讀取的匹配確定。在字節(jié)基礎(chǔ)上執(zhí)行并行讀取和匹配確定。對(duì)于搜索具有任意長(zhǎng)度的數(shù)據(jù),可以通過執(zhí)行順序處理來進(jìn)行匹配確定。在此實(shí)施例中,如圖5所示,在可從存儲(chǔ)器控制器13訪問的位置安置了 CAM(內(nèi)容可尋址存儲(chǔ)器)24。CAM是用于高速搜索的特殊存儲(chǔ)器,與輸出由輸入地址指定的數(shù)據(jù)的普通存儲(chǔ)器不同,其與確定輸入搜索數(shù)據(jù)和所有的存儲(chǔ)數(shù)據(jù)之間的匹配/不匹配并行地同時(shí)執(zhí)行比較運(yùn)算,并輸出匹配的存儲(chǔ)數(shù)據(jù)的地址。在此情況下,CAM24充當(dāng)?shù)刂帆@取電路,獲取存儲(chǔ)有與輸入鍵相對(duì)應(yīng)的鍵-值數(shù)據(jù)的地址。CAM可以作為數(shù)據(jù)匹配搜索中的“匹配標(biāo)記”而輸出匹配的數(shù)據(jù)的存在/不存在。在此實(shí)施例中,CAM24是通過用于實(shí)現(xiàn)這些功能的電子電路來實(shí)現(xiàn)的,因此被稱為硬件CAM。硬件CAM直接連接到寄存器存儲(chǔ)器15,并被安置在存儲(chǔ)器控制器13和寄存器存儲(chǔ)器15之間。上文描述了其中分別形成存儲(chǔ)器控制器13和CAM24的示例。然而,存儲(chǔ)器控制器13可包括CAM24。另外,由于第一存儲(chǔ)塊16是RAM (隨機(jī)存取存儲(chǔ)器),因此,CAM24和第一存儲(chǔ)塊16充當(dāng)CAM-RAM。CAM-RAM是其中上文所描述的CAM24輸出地址以及通過地址被訪問的RAM輸出數(shù)據(jù)的系統(tǒng)。CAM的地址解碼器和RAM的地址編碼器被設(shè)計(jì)成使得CAM的一個(gè)條目和RAM的一個(gè)條目以——對(duì)應(yīng)的關(guān)系相對(duì)應(yīng)。在此實(shí)施例中,鍵被存儲(chǔ)在CAM24中,相對(duì)應(yīng)的值被存儲(chǔ)在第一存儲(chǔ)塊16中,或者該值被從第一存儲(chǔ)塊16讀出到寄存器存儲(chǔ)器15并存儲(chǔ)為RAM單元。這允許CAM和第一存儲(chǔ)塊充當(dāng)CAM-RAM。
      為了使用硬件CAM,元數(shù)據(jù)表需要被從第一存儲(chǔ)塊16轉(zhuǎn)移到寄存器存儲(chǔ)器15。當(dāng)使用這樣的CAM-RAM時(shí),原則上不會(huì)發(fā)生像在第一實(shí)施例的散列-CAM中那樣的地址沖突。因此,由于鍵-值核對(duì)過程以及搜索重新執(zhí)行不會(huì)發(fā)生,搜索變得更快。在散列-CAM中,在很多情況下,元數(shù)據(jù)地址具有作為用于避免沖突的手段的余量。然而,由于不會(huì)在硬件CAM中發(fā)生沖突,能夠有效地 使用CAM24。在此實(shí)施例中,CAM24只被用于鍵-值數(shù)據(jù)的鍵搜索。由于CAM連接到數(shù)據(jù)輸入端/輸出端的頁面寄存器(寄存器存儲(chǔ)器),因此,能夠最大地使用第一存儲(chǔ)塊的物理地址空間,而不會(huì)部分地被鍵-值數(shù)據(jù)占用。配置的其余部分和效果與上文所描述的第一實(shí)施例的相同。[第三實(shí)施例]在此實(shí)施例中,如在第二實(shí)施例中那樣,提供了具有專用于鍵核對(duì)的存儲(chǔ)器空間的硬件CAM。然而,在第一存儲(chǔ)塊16中提供該硬件CAM。圖6是示出了根據(jù)第三實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖。如圖6所示,第一存儲(chǔ)塊16包括實(shí)際數(shù)據(jù)區(qū)域161和存儲(chǔ)有元數(shù)據(jù)表的CAM-RAM
      163。使用CAM-RAM的方式與第二實(shí)施例中的相同。然而,在第三實(shí)施例中,第一存儲(chǔ)塊16的一部分充當(dāng)專用于CAM的地址空間。這使得直接搜索存儲(chǔ)在元數(shù)據(jù)表中的鍵而無需將它移動(dòng)到第一存儲(chǔ)塊16之外成為可能。提供使得核對(duì)數(shù)據(jù)能夠被給予第一存儲(chǔ)塊16的存儲(chǔ)單元的配置使得能夠執(zhí)行全并行搜索。例如,如果第一存儲(chǔ)塊16由NAND快閃存儲(chǔ)器構(gòu)成,則讀取電路被配置成將輸入作為搜索數(shù)據(jù)同時(shí)給予被用作CAM單元的區(qū)域中的全部門電路。這使得能夠檢測(cè)僅僅在其中發(fā)現(xiàn)命中的NAND串的輸出。CAM-RAM是通過使輸出對(duì)應(yīng)于RAM單元的頁面地址來實(shí)現(xiàn)的。配置的其余部分和效果與上文所描述的第一實(shí)施例的相同。[第四實(shí)施例]在此實(shí)施例中,如在第一實(shí)施例中那樣提供了固定長(zhǎng)度數(shù)據(jù)生成器(例如,散列生成器)。然而,安裝固定長(zhǎng)度數(shù)據(jù)生成器的位置不同于第一實(shí)施例。本地控制器12包括固定長(zhǎng)度數(shù)據(jù)生成器14。圖7是示出了根據(jù)第四實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖。如圖7所示,在本地控制器12中安排了固定長(zhǎng)度數(shù)據(jù)生成器14。固定長(zhǎng)度數(shù)據(jù)生成器14和本地控制器12不必總是物理上存在于同一個(gè)芯片中。本地控制器12只需位于比其它功能塊更容易地訪問固定長(zhǎng)度數(shù)據(jù)生成器14的位置。本地控制器12包括充當(dāng)?shù)诙鎯?chǔ)塊的緩沖存儲(chǔ)器121。因此,本地控制器12可在緩沖存儲(chǔ)器121中存儲(chǔ)從第一存儲(chǔ)塊16讀出的邏輯地址-物理地址轉(zhuǎn)換表,并執(zhí)行邏輯地址-物理地址轉(zhuǎn)換。類似地,本地控制器12能夠執(zhí)行NAND閃存的耗損均衡處理。本地控制器12也能夠管理元數(shù)據(jù)表162和邏輯地址之間的對(duì)應(yīng)關(guān)系。作為此實(shí)施例的特征,在本地控制器12中提供了固定長(zhǎng)度數(shù)據(jù)生成器14。因此,在邏輯地址-物理地址轉(zhuǎn)換時(shí),從鍵生成散列值并使它對(duì)應(yīng)于一個(gè)值,即,能夠有效地在本地控制器12中創(chuàng)建元數(shù)據(jù)表162的鍵-值數(shù)據(jù)。在此實(shí)施例中,能夠在緩沖存儲(chǔ)器121 (是第二存儲(chǔ)塊或在第一存儲(chǔ)塊16中)中執(zhí)行散列-CAM操作。后者與在第一實(shí)施例中相同,將省略對(duì)其描述。將描述前者。
      為了創(chuàng)建元數(shù)據(jù)表,從第一存儲(chǔ)塊16中讀出數(shù)據(jù)并存儲(chǔ)在緩沖存儲(chǔ)器121中以生成散列值。由于在緩沖存儲(chǔ)器121中執(zhí)行散列-CAM操作,使元數(shù)據(jù)地址對(duì)應(yīng)于緩沖存儲(chǔ)器121的物理地址。所創(chuàng)建的元數(shù)據(jù)表被寫回第一存儲(chǔ)塊16或保存在緩沖存儲(chǔ)器121 (第二存儲(chǔ)塊)中。這允許引用元數(shù)據(jù)表中的鍵-值數(shù)據(jù)。如果元數(shù)據(jù)表具有比緩沖存儲(chǔ)器121的尺寸小的尺寸,則可以在比第一存儲(chǔ)塊16快的緩沖存儲(chǔ)器121中引用鍵-值數(shù)據(jù)。因此,搜索變得更快。如果緩沖存儲(chǔ)器121由非易失性RAM形成,則存儲(chǔ)器系統(tǒng)可被斷電,而不將元數(shù)據(jù)寫回第一存儲(chǔ)塊16。甚至在存儲(chǔ)器系統(tǒng)再次被接通電源之后,元數(shù)據(jù)表也會(huì)存儲(chǔ)在緩沖存儲(chǔ)器121中。因此,從第一存儲(chǔ)塊16讀出元數(shù)據(jù)表的過程是不需要的。因此,整體來看能夠提高速度。配置的其余部分和效果與上文所描述的第一實(shí)施例的相同。在此實(shí)施例中,圍繞本地控制器提供了散列-CAM所需的功能。然而,散列-CAM操 作不必總是在緩沖存儲(chǔ)器中執(zhí)行,并且可以如在第一實(shí)施例中那樣在第一存儲(chǔ)塊中執(zhí)行。如果元數(shù)據(jù)表很小,則可以通過在所有數(shù)據(jù)都被讀出到緩沖存儲(chǔ)器表之后執(zhí)行散列-CAM操作來加快所述操作。然而,如果元數(shù)據(jù)表大于緩沖存儲(chǔ)器尺寸,則可以通過直接在第一存儲(chǔ)塊中執(zhí)行散列-CAM操作來提高操作速度。[第五實(shí)施例]在此實(shí)施例中,如在第四實(shí)施例中那樣在緩沖存儲(chǔ)器121 (第二存儲(chǔ)塊)中引用鍵-值數(shù)據(jù)。然而,本地控制器12包括硬件CAM。圖8是示出了根據(jù)第五實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖。如圖8所示,CAM 122連接到緩沖存儲(chǔ)器121。圖8分開地示出了緩沖存儲(chǔ)器121和CAM 122。然而,它們可在物理上被連接。CAM 122的輸出(命中信號(hào))被直接連接到緩沖存儲(chǔ)器121的一部分(例如,大約1/2存儲(chǔ)器容量),使得CAM 122和緩沖存儲(chǔ)器121的一部分形成CAM-RAM。這使得能夠通過指定數(shù)據(jù)(內(nèi)容)來讀出數(shù)據(jù)。當(dāng)使用硬件CAM 122時(shí),原則上不發(fā)生像在散列-CAM中那樣的地址沖突。因此,由于鍵-值核對(duì)過程和搜索重新執(zhí)行不會(huì)發(fā)生,因此,搜索變得更快。由于緩沖存儲(chǔ)器121更容易訪問但是具有比第一存儲(chǔ)塊16小的存儲(chǔ)器容量,存儲(chǔ)器空間需要被有效地使用。在此實(shí)施例中,當(dāng)添加CAM 122時(shí),能夠以最高效率使用緩沖存儲(chǔ)器121的存儲(chǔ)器空間。配置的其余部分和效果與上文所描述的第二實(shí)施例的相同。[第六實(shí)施例]在此實(shí)施例中,硬件配置幾乎與第一實(shí)施例的硬件配置相同,只是存儲(chǔ)器系統(tǒng)10不包括本地控制器。圖9是示出了根據(jù)第六實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖。如圖9所示,主機(jī)接口 11被直接連接到存儲(chǔ)器控制器13。除了邏輯地址-物理地址轉(zhuǎn)換表的處理之外,實(shí)現(xiàn)鍵-值存儲(chǔ)的方法與第一實(shí)施例中的方法相同。由于存儲(chǔ)器系統(tǒng)10既不包括本地控制器也不包括第二存儲(chǔ)塊,邏輯地址-物理地址轉(zhuǎn)換表被從第一存儲(chǔ)塊16中讀出,并在存儲(chǔ)器系統(tǒng)10外部,例如,在主存儲(chǔ)器102中被處理。
      由于完全使用存儲(chǔ)器控制器13中的固定長(zhǎng)度數(shù)據(jù)生成器14來執(zhí)行散列-CAM操作,因此,如在第一實(shí)施例中那樣,在存儲(chǔ)器系統(tǒng)10中執(zhí)行元數(shù)據(jù)表162中的鍵-值數(shù)據(jù)存儲(chǔ)。根據(jù)需要,不僅鍵-值數(shù)據(jù)而且元數(shù)據(jù)表162的變化點(diǎn)被返回主機(jī)系統(tǒng),反映在邏輯地址-物理地址轉(zhuǎn)換表上,并被寫回第一存儲(chǔ)塊16。在此實(shí)施例中,由于通過省略存儲(chǔ)器系統(tǒng)10中的緩沖存儲(chǔ)器和本地控制器而簡(jiǎn)化了功能,存儲(chǔ)器系統(tǒng)本身是緊湊的。請(qǐng)注意,為了使存儲(chǔ)器系統(tǒng)10主要執(zhí)行鍵-值存儲(chǔ),可以提供DMAC (直接存儲(chǔ)器存取控制器)并使其控制存儲(chǔ)器系統(tǒng)10和主存儲(chǔ)器102之間的數(shù)據(jù)傳輸。配置的其余部分和效果與上文所描述的第一實(shí)施例的相同。[第七實(shí)施例]在此實(shí)施例中,硬件配置幾乎與第二實(shí)施例的硬件配置相同,只是存儲(chǔ)器系統(tǒng)10 不包括本地控制器。圖10是示出了根據(jù)第七實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖。使用硬件CAM來實(shí)現(xiàn)鍵-值存儲(chǔ)的方法與第二實(shí)施例中的方法相同。通過本地控制器的不存在而獲得的功能的特征與第六實(shí)施例中的相同,將省略其描述。[第八實(shí)施例]在此實(shí)施例中,硬件配置幾乎與第三實(shí)施例的硬件配置相同,只是存儲(chǔ)器系統(tǒng)10不包括本地控制器。圖11是示出了根據(jù)第八實(shí)施例的存儲(chǔ)器系統(tǒng)的硬件配置的框圖。使用CAM-RAM來實(shí)現(xiàn)鍵-值存儲(chǔ)的方法與第三實(shí)施例中的方法相同。通過本地控制器的不存在而獲得的功能的特征與第六實(shí)施例中的相同,將省略其描述。如上文所描述的,在各實(shí)施例中,鍵-值存儲(chǔ)的機(jī)制是通過元數(shù)據(jù)及其表以及充當(dāng)搜索設(shè)備的散列生成器(散列-CAM)或硬件CAM (CAM-RAM)來實(shí)現(xiàn)的。當(dāng)實(shí)現(xiàn)上文所描述的第一到第八實(shí)施例中的鍵-值存儲(chǔ)時(shí),下面的修改方案也是可用的。下面將詳細(xì)地描述修改方案。請(qǐng)注意,在本申請(qǐng)中,各實(shí)施例比各修改方案更優(yōu)先地解釋。[第一修改方案]圖12是示意性地示出了根據(jù)第一修改方案的第一存儲(chǔ)塊16中的實(shí)際數(shù)據(jù)區(qū)域161和元數(shù)據(jù)表162之間的關(guān)系以及鍵-值存儲(chǔ)的機(jī)制的視圖。在圖12所示出的實(shí)際數(shù)據(jù)區(qū)域161中,數(shù)據(jù)文件、對(duì)應(yīng)于文件的文件名或文件ID、從文件中提取的鍵、以及存儲(chǔ)鍵的元數(shù)據(jù)地址被存儲(chǔ)在每個(gè)實(shí)際數(shù)據(jù)地址處。這樣的存儲(chǔ)方法可以通過來自主機(jī)系統(tǒng)的指令來實(shí)現(xiàn)或通過預(yù)先在存儲(chǔ)器系統(tǒng)10中提供鍵提取功能和元數(shù)據(jù)地址分配功能來實(shí)現(xiàn)。元數(shù)據(jù)表162存儲(chǔ)在將文件存儲(chǔ)在實(shí)際數(shù)據(jù)地址時(shí)提取的鍵,以及作為與鍵相對(duì)應(yīng)的值,存儲(chǔ)存在鍵的實(shí)際數(shù)據(jù)地址以及存儲(chǔ)與鍵相關(guān)聯(lián)的其它鍵-值數(shù)據(jù)的元數(shù)據(jù)地址。利用此地址管理,當(dāng)本地控制器12或存儲(chǔ)器控制器13指示搜索鍵時(shí),存儲(chǔ)器控制器13從元數(shù)據(jù)地址中搜索鍵。例如,為了獲得包括“book”的文件名,首先從元數(shù)據(jù)地址搜索“book”。“book”被存儲(chǔ)在元數(shù)據(jù)地址$002。作為來自元數(shù)據(jù)地址$002的值,獲得實(shí)際地址&001和&002以及元數(shù)據(jù)地址$011和$012。讀取地址能夠被返回作為搜索結(jié)果。另外,還可以通過遵循值的元數(shù)據(jù)地址來獲得“book”所屬的集合的名稱。例如,在$011,能夠獲得鍵“a-file. txt”以及與該鍵相對(duì)應(yīng)的值的實(shí)際數(shù)據(jù)地址和元數(shù)據(jù)地址。如此,能夠通過連續(xù)地遵循元數(shù)據(jù)表162來獲得作為搜索結(jié)果必需的值(實(shí)際數(shù)據(jù))。在此修改方案中,只有鍵存在于元數(shù)據(jù)表中。實(shí)際鍵被存儲(chǔ)在實(shí)際數(shù)據(jù)區(qū)域161中的實(shí)際地址處。[第二修改方案]圖13是示意性地示出了根據(jù)第二修改方案的第一存儲(chǔ)塊16中的實(shí)際數(shù)據(jù)區(qū)域161和元數(shù)據(jù)表162之間的關(guān)系以及鍵-值存儲(chǔ)的機(jī)制的視圖。
      在圖13所示出的實(shí)際數(shù)據(jù)區(qū)域161中,在每一個(gè)實(shí)際數(shù)據(jù)地址處存儲(chǔ)了文件和與該文件相對(duì)應(yīng)的文件名或文件ID。元數(shù)據(jù)表162存儲(chǔ)從文件中提取的鍵,以及作為與鍵相對(duì)應(yīng)的值,存儲(chǔ)鍵所在的實(shí)際地址和存儲(chǔ)有與鍵相關(guān)聯(lián)的其它集合或元素的元數(shù)據(jù)地址。如在第一修改方案中那樣,當(dāng)本地控制器12或存儲(chǔ)器控制器13指示搜索鍵時(shí),存儲(chǔ)器控制器13從元數(shù)據(jù)地址中搜索鍵。例如,為了獲得包括“book”的文件名,首先從元數(shù)據(jù)地址搜索“book”。“book”被存儲(chǔ)在元數(shù)據(jù)地址$002處。作為來自元數(shù)據(jù)地址$002的值,獲得實(shí)際數(shù)據(jù)地址&011以及元數(shù)據(jù)地址$011和$012。實(shí)際數(shù)據(jù)地址不指示“book”所屬的文件的存儲(chǔ)位置,而是指示鍵的實(shí)際數(shù)據(jù)地址中的存儲(chǔ)位置。另一方面,值的每一個(gè)元數(shù)據(jù)地址都指示“book”所屬的集合。因此,通過遵循元數(shù)據(jù)地址,獲得$011和$012的值的實(shí)際數(shù)據(jù)地址并作為搜索結(jié)果返回?;蛘?,通過遵循實(shí)際數(shù)據(jù)地址,返回&001和&002處的數(shù)據(jù)。在第二修改方案中,實(shí)際數(shù)據(jù)區(qū)域(讀取地址空間)161中的每個(gè)地址的數(shù)據(jù)量小于第一修改方案中的情況。[第三修改方案]圖14是示意性地示出了根據(jù)第三修改方案的第一存儲(chǔ)塊16中的實(shí)際數(shù)據(jù)區(qū)域161和元數(shù)據(jù)表162之間的關(guān)系以及鍵-值存儲(chǔ)的機(jī)制的視圖。在此修改方案中,元數(shù)據(jù)的實(shí)體被存儲(chǔ)在實(shí)際數(shù)據(jù)區(qū)域161的實(shí)際數(shù)據(jù)地址處。在圖14所示出的實(shí)際數(shù)據(jù)區(qū)域161中,在每個(gè)實(shí)際數(shù)據(jù)地址處存儲(chǔ)了文件、與文件相對(duì)應(yīng)的文件名或文件ID、以及鍵的元數(shù)據(jù)地址。在元數(shù)據(jù)表162中,在每個(gè)元數(shù)據(jù)地址處存儲(chǔ)有從文件中提取的鍵和實(shí)際數(shù)據(jù)地址(這是與鍵相對(duì)應(yīng)的值,并且在此處存在鍵)。還示出了與元數(shù)據(jù)地址相對(duì)應(yīng)的物理地址。當(dāng)元數(shù)據(jù)地址被指定給不同于實(shí)際數(shù)據(jù)地址的物理地址空間的物理地址空間時(shí),如上文所描述的,元數(shù)據(jù)地址和物理地址之間的對(duì)應(yīng)關(guān)系表被存儲(chǔ)在第一存儲(chǔ)塊16中。存儲(chǔ)器系統(tǒng)(本地系統(tǒng))或主機(jī)系統(tǒng)讀出并使用該對(duì)應(yīng)關(guān)系表。將描述搜索元數(shù)據(jù)表中的鍵的方法以及其中值被存儲(chǔ)在連續(xù)地址的示例。也可以如圖15所示實(shí)現(xiàn)元數(shù)據(jù)表162中的鍵-值數(shù)據(jù)。假設(shè)元數(shù)據(jù)地址空間對(duì)應(yīng)于第一存儲(chǔ)塊16的特定物理地址空間。連續(xù)元數(shù)據(jù)地址的搜索目標(biāo)區(qū)域被分成被稱為存取窗口(Slot)的單元。鍵被存儲(chǔ)在每個(gè)存取窗口的開始區(qū)域中。
      在圖15中所示出的示例中,搜索鍵“pen”。存儲(chǔ)器控制器13給出鍵的每個(gè)字符以搜索整個(gè)存取窗口。此示例的鍵搜索機(jī)制使用各實(shí)施例中所描述的存儲(chǔ)器控制器13和寄存器存儲(chǔ)器15的硬件CAM。為其中獲得“pen”的第一字符“p”的每個(gè)存取窗口設(shè)置匹配標(biāo)記。接下來,在這些存取窗口中搜索“e”。如果連續(xù)地獲得命中,則類似地設(shè)置標(biāo)記,并搜索下一個(gè)字符。繼續(xù)此操作。在圖15中,鍵在#003和#102中匹配。當(dāng)讀取在這些存取窗口中繼續(xù)時(shí),獲得值。能夠區(qū)別鍵和值,因?yàn)榭刂拼a被插入在它們之間。可以擴(kuò)展此方法以使用“無關(guān)”屏蔽位來執(zhí)行搜索。[第四修改方案]在此修改方案中,將作為示例來描述鍵-值數(shù)據(jù)以及使用它們的全文搜索,每一個(gè)鍵-值數(shù)據(jù)都存儲(chǔ)有具有固定長(zhǎng)度的鍵。 對(duì)固定長(zhǎng)度比特的需要取決于搜索方法。全文搜索方法大致分類為兩種類型
      (I)順序搜索和(2)索引搜索。所述方法還可以經(jīng)過索引法被進(jìn)一步分類。存在已知的(a)形態(tài)分析、(b)N-gram、以及(c)后綴方法。在這些方法中,形態(tài)分析是提取存在于預(yù)先準(zhǔn)備的詞典中的單詞的方法。N-gram不必準(zhǔn)備任何詞典,并可以通過將一個(gè)單詞分為N個(gè)元素來搜索任意字符串。例如,搜索目標(biāo)集合被定義為S。在uni-gram中,在字符基礎(chǔ)上分割集合S。在bi-gram中,在兩字符的基礎(chǔ)上分割集合S。在N-gram中,在N字符的基礎(chǔ)上分割集合S。例如,當(dāng)S=innoVation被通過bi-gram分解時(shí),分割的元素(令牌)是at、in、io、nn、no、n、on、ον、ti、以及va。后綴方法處理適合于索弓I文件壓縮的任意長(zhǎng)度。在圖16所示出的實(shí)際數(shù)據(jù)區(qū)域161中,在每個(gè)實(shí)際數(shù)據(jù)地址處存儲(chǔ)了文件和與文件相對(duì)應(yīng)的文件名或文件ID。在元數(shù)據(jù)表162中,通過N-gram從文件中提取的鍵被存儲(chǔ)在每個(gè)元數(shù)據(jù)地址處。在此示例中,通過利用bi-gram來分解存儲(chǔ)在實(shí)際數(shù)據(jù)地址處的“innovation”,提取元數(shù)據(jù)的每個(gè)鍵。實(shí)際地址被示出為與每個(gè)鍵相對(duì)應(yīng)的值。當(dāng)通過bi-gram從文件中提取鍵時(shí)文件中的出現(xiàn)位置被成對(duì)地存儲(chǔ)。在通過bi-gram搜索時(shí),搜索鍵。然后,按鍵的出現(xiàn)計(jì)數(shù)來排序結(jié)果。比較文件中的位置信息段,以確認(rèn)它們表示連續(xù)的鍵,從而獲得期望的搜索字的集合。由于每個(gè)鍵都具有固定長(zhǎng)度,可以直接使用它作為散列值來形成鍵-值數(shù)據(jù)。在圖16中所示出的示例中,“at”和“in”按此順序存儲(chǔ)在元數(shù)據(jù)地址處。實(shí)際上,每個(gè)N-gram令牌都可以通過使用,例如,ASCII或UTF-6碼由比特串來表示,比特串可被縮短并被用作元數(shù)據(jù)地址。如上文所描述的,根據(jù)此實(shí)施例的鍵-值存儲(chǔ)與處理固定長(zhǎng)度并適合于高速索引的N-gram高度兼容。在全文搜索中,雖然搜索速度高,但是,索引花費(fèi)時(shí)間。在索引時(shí),根據(jù)需要,讀出包括元素和集合的元數(shù)據(jù)表。搜索需要被添加、更新或刪除的元素,并編輯其集合。因此,文件訪問頻繁地發(fā)生。當(dāng)使用實(shí)施例的存儲(chǔ)器系統(tǒng)時(shí),能夠?qū)崿F(xiàn)存儲(chǔ)器系統(tǒng)中的有效鍵-值存儲(chǔ)。這允許以高速度執(zhí)行索引而不增大主機(jī)系統(tǒng)上的負(fù)載。在各實(shí)施例中,通過示范全文搜索的過程多次描述了存儲(chǔ)器系統(tǒng)中的鍵-值存儲(chǔ)的有用性。然而,各實(shí)施例的技術(shù)不一定專門用于執(zhí)行全文搜索。
      各實(shí)施例提供了鍵-值存儲(chǔ)機(jī)制及其詳細(xì)的配置,以當(dāng)在存儲(chǔ)器系統(tǒng)中存儲(chǔ)數(shù)據(jù)時(shí)有效地管理元數(shù)據(jù)。即,各實(shí)施例提供了能夠使用鍵-值存儲(chǔ)有效地以高速度處理對(duì)元數(shù)據(jù)的操作請(qǐng)求的存儲(chǔ)器系統(tǒng)。盡管描述了某些實(shí)施例,但是,這些實(shí)施例只是作為示例來呈現(xiàn)的,而不限制本發(fā)明的范圍。實(shí)際上,此處所描述的新穎的實(shí)施例可以以各種其它形式具體化;此外,還可以在不偏離本發(fā)明的精神的情況下作出此處所描述的實(shí)施例形式的替換和變化。所附的權(quán)利要求以及它們的等效內(nèi)容旨在覆蓋這樣的形式或修改方案,都將在本發(fā)明的范圍和精神內(nèi)。相關(guān)申請(qǐng)的交叉引用本申請(qǐng)要求2011年8月8日提出的日本專利申請(qǐng)No. 2011-172759的優(yōu)先權(quán),該專利申請(qǐng)的全部?jī)?nèi)容在此通過引用并入本文中?!?br> 權(quán)利要求
      1.一種包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng),所述鍵-值存儲(chǔ)包含作為鍵和與所述鍵相對(duì)應(yīng)的值的對(duì)的鍵-值數(shù)據(jù),其特征在于,所述存儲(chǔ)器系統(tǒng)包括 被配置成接收數(shù)據(jù)寫入/讀取請(qǐng)求或基于鍵-值存儲(chǔ)的請(qǐng)求的接口; 具有用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)區(qū)域和包含所述鍵-值數(shù)據(jù)的元數(shù)據(jù)表的第一存儲(chǔ)塊; 被配置成響應(yīng)于所述鍵的輸入,獲取存儲(chǔ)有所述鍵-值數(shù)據(jù)的第一地址的地址獲取電路;以及 控制器,所述控制器被配置成通過指定地址來執(zhí)行對(duì)所述第一存儲(chǔ)塊的數(shù)據(jù)寫入/讀取請(qǐng)求,以及向所述第一存儲(chǔ)塊輸出由所述地址獲取電路獲取的所述第一地址并執(zhí)行所述基于鍵-值存儲(chǔ)的請(qǐng)求, 其中,所述控制器經(jīng)由所述接口輸出與所述鍵相對(duì)應(yīng)的值。
      2.根據(jù)權(quán)利要求I所述的存儲(chǔ)器系統(tǒng),其特征在于,所述地址獲取電路包括被配置成通過散列函數(shù)把所述鍵轉(zhuǎn)換成所述第一地址的散列生成器。
      3.根據(jù)權(quán)利要求2所述的存儲(chǔ)器系統(tǒng),其特征在于,所述控制器包括比較電路和地址管理電路,所述比較電路被配置成當(dāng)被所述散列生成器轉(zhuǎn)換后的所述第一地址發(fā)生沖突時(shí)把作為所述值的數(shù)據(jù)與所述鍵進(jìn)行比較,所述地址管理電路被配置成當(dāng)所述數(shù)據(jù)匹配所述鍵時(shí)改變所述第一地址。
      4.根據(jù)權(quán)利要求I所述的存儲(chǔ)器系統(tǒng),其特征在于,所述控制器根據(jù)所述基于所述鍵-值存儲(chǔ)的請(qǐng)求,改變存儲(chǔ)在所述第一存儲(chǔ)塊中的所述元數(shù)據(jù)表的存儲(chǔ)容量。
      5.根據(jù)權(quán)利要求I所述的存儲(chǔ)器系統(tǒng),其特征在于, 所述元數(shù)據(jù)表存儲(chǔ)所述第一地址、所述鍵和與所述鍵相對(duì)應(yīng)的值,第二地址存儲(chǔ)在所述值中,以及 所述控制器通過引用由所述第二地址指定的所述數(shù)據(jù)區(qū)域的存儲(chǔ)位置來獲得所述值。
      6.根據(jù)權(quán)利要求I所述的存儲(chǔ)器系統(tǒng),其特征在于, 所述元數(shù)據(jù)表中的所述鍵-值數(shù)據(jù)存儲(chǔ)在邏輯地址處,以及 所述元數(shù)據(jù)表的存儲(chǔ)位置是由轉(zhuǎn)換表管理的,所述轉(zhuǎn)換表使所述邏輯地址對(duì)應(yīng)于所述第一存儲(chǔ)塊的物理地址。
      7.根據(jù)權(quán)利要求I所述的存儲(chǔ)器系統(tǒng),其特征在于進(jìn)一步包括 被配置成當(dāng)所述控制器執(zhí)行數(shù)據(jù)寫入/讀取時(shí)臨時(shí)存儲(chǔ)所述數(shù)據(jù)的寄存器;以及 被配置成控制所述接口和所述第一存儲(chǔ)塊之間的信號(hào)發(fā)送/接收的本地控制器。
      8.根據(jù)權(quán)利要求I所述的存儲(chǔ)器系統(tǒng),其特征在于,由所述接口接收的所述基于所述鍵-值存儲(chǔ)的請(qǐng)求包括下列中的至少一個(gè)向集合中添加元素的命令、返回元素所屬的集合的尺寸的命令、以及讀出集合的命令。
      9.根據(jù)權(quán)利要求I所述的存儲(chǔ)器系統(tǒng),其特征在于,所述控制器包括直接存儲(chǔ)器存取控制器。
      10.根據(jù)權(quán)利要求I所述的存儲(chǔ)器系統(tǒng),其特征在于,所述接口、所述第一存儲(chǔ)塊、以及所述控制器通過至少兩種類型的總線相連接。
      11.一種包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng),所述鍵-值存儲(chǔ)包含作為鍵和與所述鍵相對(duì)應(yīng)的值的對(duì)的鍵-值數(shù)據(jù),其特征在于,所述存儲(chǔ)器系統(tǒng)包括 被配置成接收數(shù)據(jù)寫入/讀取請(qǐng)求或基于鍵-值存儲(chǔ)的請(qǐng)求的接口;具有用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)區(qū)域和包含所述鍵-值數(shù)據(jù)的元數(shù)據(jù)表并包括地址獲取電路的第一存儲(chǔ)塊,所述地址獲取電路被配置成響應(yīng)于所述鍵的輸入,獲取存儲(chǔ)有所述鍵-值數(shù)據(jù)的第一地址;以及 控制器,所述控制器被配置成通過指定地址來執(zhí)行對(duì)所述第一存儲(chǔ)塊的寫入/讀取和所述基于所述鍵-值存儲(chǔ)的請(qǐng)求, 其中,所述控制器經(jīng)由所述接口輸出與所述鍵相對(duì)應(yīng)的值。
      12.根據(jù)權(quán)利要求11所述的存儲(chǔ)器系統(tǒng),其特征在于,所述地址獲取電路包括內(nèi)容可尋址存儲(chǔ)器(CAM),所述CAM被配置成將所述鍵與存儲(chǔ)在所述地址獲取電路中的數(shù)據(jù)進(jìn)行比較,并響應(yīng)于所述鍵的輸入而獲取匹配的第一地址。
      13.根據(jù)權(quán)利要求11所述的存儲(chǔ)器系統(tǒng),其特征在于,所述控制器根據(jù)所述基于所述鍵-值存儲(chǔ)的請(qǐng)求,改變存儲(chǔ)在所述第一存儲(chǔ)塊中的所述元數(shù)據(jù)表的存儲(chǔ)容量。
      14.根據(jù)權(quán)利要求11所述的存儲(chǔ)器系統(tǒng),其特征在于, 所述元數(shù)據(jù)表存儲(chǔ)所述第一地址、所述鍵以及與所述鍵相對(duì)應(yīng)的值,第二地址存儲(chǔ)在所述值中,以及 所述控制器通過引用由所述第二地址指定的所述數(shù)據(jù)區(qū)域的存儲(chǔ)位置來獲得所述值。
      15.根據(jù)權(quán)利要求11所述的存儲(chǔ)器系統(tǒng),其特征在于, 所述元數(shù)據(jù)表中的所述鍵-值數(shù)據(jù)存儲(chǔ)在邏輯地址處,以及 所述元數(shù)據(jù)表的存儲(chǔ)位置是由轉(zhuǎn)換表管理的,所述轉(zhuǎn)換表使所述邏輯地址對(duì)應(yīng)于所述第一存儲(chǔ)塊的物理地址。
      16.根據(jù)權(quán)利要求11所述的存儲(chǔ)器系統(tǒng),其特征在于進(jìn)一步包括 被配置成當(dāng)所述控制器執(zhí)行數(shù)據(jù)寫入/讀取時(shí)臨時(shí)存儲(chǔ)所述數(shù)據(jù)的寄存器;以及 被配置成控制所述接口和所述第一存儲(chǔ)塊之間的信號(hào)發(fā)送/接收的本地控制器。
      17.根據(jù)權(quán)利要求11所述的存儲(chǔ)器系統(tǒng),其特征在于,由所述接口接收的所述基于所述鍵-值存儲(chǔ)的請(qǐng)求包括下列中的至少一個(gè)向集合中添加元素的命令、返回元素所屬的集合的尺寸的命令、以及讀出集合的命令。
      18.根據(jù)權(quán)利要求11所述的存儲(chǔ)器系統(tǒng),其特征在于,所述控制器包括直接存儲(chǔ)器存取控制器。
      19.根據(jù)權(quán)利要求11所述的存儲(chǔ)器系統(tǒng),其特征在于,所述接口、所述第一存儲(chǔ)塊、以及所述控制器通過至少兩種類型的總線相連接。
      20.一種包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng),所述鍵-值存儲(chǔ)包含作為鍵和與所述鍵相對(duì)應(yīng)的值的對(duì)的鍵-值數(shù)據(jù),其特征在于,所述存儲(chǔ)器系統(tǒng)包括 被配置成接收數(shù)據(jù)寫入/讀取請(qǐng)求或基于鍵-值存儲(chǔ)的請(qǐng)求的接口 ; 具有用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)區(qū)域和包含所述鍵-值數(shù)據(jù)的元數(shù)據(jù)表的第一存儲(chǔ)塊;存儲(chǔ)器控制器,所述存儲(chǔ)器控制器被配置成通過指定地址來執(zhí)行對(duì)所述第一存儲(chǔ)塊的數(shù)據(jù)寫入/讀取以及所述基于所述鍵-值存儲(chǔ)的請(qǐng)求;以及 被配置成控制所述接口和所述第一存儲(chǔ)塊之間的信號(hào)發(fā)送/接收的本地控制器, 其中,所述本地控制器包括用于存儲(chǔ)從所述第一存儲(chǔ)塊讀出的數(shù)據(jù)的第二存儲(chǔ)塊以及被配置成響應(yīng)于所述鍵的輸入而獲取存儲(chǔ)有所述鍵-值數(shù)據(jù)的第一地址的地址獲取電路,以及所述存儲(chǔ)器控制器經(jīng)由所述接口輸出與所述鍵相對(duì)應(yīng)的值。
      21.根據(jù)權(quán)利要求20所述的存儲(chǔ)器系統(tǒng),其特征在于,所述地址獲取電路包括被配置成通過散列函數(shù)把所述鍵轉(zhuǎn)換成所述第一地址的散列生成器。
      22.根據(jù)權(quán)利要求21所述的存儲(chǔ)器系統(tǒng),其特征在于,所述存儲(chǔ)器控制器包括比較電路和地址管理電路,所述比較電路被配置成當(dāng)被所述散列生成器轉(zhuǎn)換后的所述第一地址發(fā)生沖突時(shí)把作為所述值的數(shù)據(jù)與所述鍵進(jìn)行比較,所述地址管理電路被配置成當(dāng)所述數(shù)據(jù)匹配所述鍵時(shí)改變所述第一地址。
      23.根據(jù)權(quán)利要求20所述的存儲(chǔ)器系統(tǒng),其特征在于,所述地址獲取電路包括內(nèi)容可尋址存儲(chǔ)器(CAM),所述CAM被配置成把所述鍵與存儲(chǔ)在所述地址獲取電路中的數(shù)據(jù)進(jìn)行比較,并響應(yīng)于所述鍵的輸入而獲取匹配的第一地址。
      24.根據(jù)權(quán)利要求20所述的存儲(chǔ)器系統(tǒng),其特征在于,所述存儲(chǔ)器控制器和所述本地 控制器之一根據(jù)所述基于所述鍵-值存儲(chǔ)的請(qǐng)求,改變存儲(chǔ)在所述第一存儲(chǔ)塊中的所述元數(shù)據(jù)表的存儲(chǔ)容量。
      25.根據(jù)權(quán)利要求20所述的存儲(chǔ)器系統(tǒng),其特征在于, 所述元數(shù)據(jù)表存儲(chǔ)所述第一地址、所述鍵以及與所述鍵相對(duì)應(yīng)的值,第二地址存儲(chǔ)在所述值中,以及 所述存儲(chǔ)器控制器和所述本地控制器之一通過引用由所述第二地址指定的所述數(shù)據(jù)區(qū)域的存儲(chǔ)位置來獲得所述值。
      26.根據(jù)權(quán)利要求20所述的存儲(chǔ)器系統(tǒng),其特征在于, 所述元數(shù)據(jù)表中的所述鍵-值數(shù)據(jù)存儲(chǔ)在邏輯地址處,以及 所述元數(shù)據(jù)表的存儲(chǔ)位置是由轉(zhuǎn)換表管理的,所述轉(zhuǎn)換表使所述邏輯地址對(duì)應(yīng)于所述第一存儲(chǔ)塊的物理地址。
      27.根據(jù)權(quán)利要求20所述的存儲(chǔ)器系統(tǒng),其特征在于,所述第二存儲(chǔ)塊包括被配置成比所述第一存儲(chǔ)塊更快地執(zhí)行數(shù)據(jù)寫入/讀取的緩沖存儲(chǔ)器。
      28.根據(jù)權(quán)利要求27所述的存儲(chǔ)器系統(tǒng),其特征在于,所述緩沖存儲(chǔ)器包括非易失性RAM0
      29.根據(jù)權(quán)利要求20所述的存儲(chǔ)器系統(tǒng),其特征在于,由所述接口接收的所述基于所述鍵-值存儲(chǔ)的請(qǐng)求包括下列中的至少一個(gè)向集合中添加元素的命令、返回元素所屬的集合的尺寸的命令、以及讀出集合的命令。
      30.根據(jù)權(quán)利要求20所述的存儲(chǔ)器系統(tǒng),其特征在于,所述存儲(chǔ)器控制器和所述本地控制器之一包括直接存儲(chǔ)器存取控制器。
      31.根據(jù)權(quán)利要求20所述的存儲(chǔ)器系統(tǒng),其特征在于,所述接口、所述第一存儲(chǔ)塊、以及所述本地控制器和所述存儲(chǔ)器控制器之一通過至少兩種類型的總線相連接。
      全文摘要
      公開了包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng)。根據(jù)一個(gè)實(shí)施例,包括鍵-值存儲(chǔ)的存儲(chǔ)器系統(tǒng)(10)包括接口(11)、存儲(chǔ)塊(16)、地址獲取電路(14)和控制器(13),鍵-值存儲(chǔ)包含作為鍵和與鍵相對(duì)應(yīng)的值的對(duì)的鍵-值數(shù)據(jù)。接口(11)接收數(shù)據(jù)寫入/讀取請(qǐng)求或基于鍵-值存儲(chǔ)的請(qǐng)求。存儲(chǔ)塊(16)具有用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)區(qū)域(161)和包含鍵-值數(shù)據(jù)的元數(shù)據(jù)表(162)。地址獲取電路(14)響應(yīng)于鍵的輸入而獲取第一地址??刂破?13)執(zhí)行對(duì)存儲(chǔ)塊(16)的數(shù)據(jù)寫入/讀取請(qǐng)求,以及向存儲(chǔ)塊(16)輸出獲取的第一地址并執(zhí)行基于鍵-值存儲(chǔ)的請(qǐng)求。控制器(13)經(jīng)由接口(11)輸出與鍵相對(duì)應(yīng)的值。
      文檔編號(hào)G06F12/06GK102929793SQ20121027996
      公開日2013年2月13日 申請(qǐng)日期2012年8月8日 優(yōu)先權(quán)日2011年8月8日
      發(fā)明者丸亀孝生, 木下敦寬, 辰村光介 申請(qǐng)人:株式會(huì)社東芝
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1