本發(fā)明主要涉及集成電路器件,尤其是涉及用于控制包含不同類型存儲(chǔ)器的存儲(chǔ)系統(tǒng)的運(yùn)行的電路和方法。
背景技術(shù):
數(shù)據(jù)中心在世界任何地方的多種計(jì)算設(shè)備之間協(xié)調(diào)地提供存儲(chǔ)、社交網(wǎng)絡(luò)、游戲、網(wǎng)絡(luò)搜索和許多其他服務(wù),并且它們的規(guī)模和提供的服務(wù)的絕對(duì)多樣性與日俱增。幾項(xiàng)關(guān)鍵因素促使了這種增長(zhǎng),其中包括現(xiàn)在被抓取和交換的不定的數(shù)據(jù)量的爆發(fā)。在實(shí)施數(shù)據(jù)中心的過(guò)程中,一項(xiàng)需要面對(duì)的基本挑戰(zhàn)是處理和存儲(chǔ)不斷增長(zhǎng)的數(shù)據(jù)量。
用來(lái)存儲(chǔ)用于不同目的的大量數(shù)據(jù)的數(shù)據(jù)中心正在許多工業(yè)領(lǐng)域中變得非常重要,當(dāng)存儲(chǔ)和處理不斷增長(zhǎng)的數(shù)據(jù)量時(shí),數(shù)據(jù)中心聚焦的是優(yōu)化的運(yùn)行方式。固態(tài)硬盤(pán)(ssd)正快速地得到普及,因?yàn)樗鼈冊(cè)诖鎯?chǔ)架構(gòu)(storagehierarchy)中提供了額外的一層,它相比較硬盤(pán)驅(qū)動(dòng)器而言同時(shí)擁有更高的性能(例如,每秒內(nèi)的數(shù)據(jù)輸入輸出次數(shù)(iops))和更少的訪問(wèn)延遲,相比較標(biāo)準(zhǔn)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)而言擁有更高的存儲(chǔ)密度、更低的成本和更低的功耗。然而,它們較高的訪問(wèn)延遲使得ssd不能與標(biāo)準(zhǔn)dram合并使用,因?yàn)槎嗪颂幚砥鳠o(wú)法在不犧牲性能的前提下應(yīng)對(duì)高訪問(wèn)延遲。
因此,用于控制存儲(chǔ)系統(tǒng)運(yùn)行的優(yōu)化電路會(huì)非常有好處。
技術(shù)實(shí)現(xiàn)要素:
描述了一種用于控制包含不同類型存儲(chǔ)器的存儲(chǔ)系統(tǒng)的運(yùn)行的電路。該電路包含具有第一類型存儲(chǔ)元件和第一訪問(wèn)時(shí)間的第一存儲(chǔ)器;具有第二類型存儲(chǔ)元件和第二訪問(wèn)時(shí)間的第二存儲(chǔ)器,其中第二類型存儲(chǔ)元件與第一類型存儲(chǔ)元件的類型不同;使得能夠訪問(wèn)第一存儲(chǔ)器和第二存儲(chǔ)器的存儲(chǔ)器控制電路;與第二存儲(chǔ)器耦接的用于補(bǔ)償?shù)谝淮鎯?chǔ)時(shí)間和第二存儲(chǔ)時(shí)間的時(shí)間差的延遲緩沖器;以及用于合并第一存儲(chǔ)器的輸出數(shù)據(jù)和經(jīng)過(guò)延遲的第二存儲(chǔ)器的輸出數(shù)據(jù)來(lái)產(chǎn)生依序的輸出數(shù)據(jù)的電路。
可選擇地,該存儲(chǔ)器控制電路包括與第一存儲(chǔ)器相關(guān)聯(lián)的第一存儲(chǔ)器控制器和與第二存儲(chǔ)器相關(guān)聯(lián)的第二存儲(chǔ)器控制器。
可選擇地,該存儲(chǔ)器控制電路包括與第一存儲(chǔ)器控制器和第二存儲(chǔ)器控制器相耦接的存儲(chǔ)器選擇電路,該存儲(chǔ)器選擇電路使得能夠訪問(wèn)第一存儲(chǔ)器和第二存儲(chǔ)器中被選中的存儲(chǔ)器。
可選擇地,第一存儲(chǔ)器包括ssd存儲(chǔ)器。
可選擇地,第二存儲(chǔ)器包括dram。
可選擇地,延遲緩沖器包括pld上的ram塊。
可選擇地,pld上的ram塊通過(guò)在預(yù)定的延遲時(shí)間內(nèi)緩沖數(shù)據(jù)來(lái)補(bǔ)償?shù)谝淮鎯?chǔ)時(shí)間和第二存儲(chǔ)時(shí)間之間的時(shí)間差。
可選擇地,數(shù)據(jù)在經(jīng)過(guò)預(yù)定的延遲時(shí)間后被從ram塊中被讀出。
可選擇地,pld被耦接以接收配置比特。
可選擇地,ram塊通過(guò)使用可編程互連單元而與第二存儲(chǔ)器相耦接,該可編程互連單元通過(guò)使用配置比特來(lái)編程。
可選擇地,第一存儲(chǔ)器包括非易失性存儲(chǔ)器,第二存儲(chǔ)器包括易失性存儲(chǔ)器。
可選擇地,該電路進(jìn)一步包括控制對(duì)第一存儲(chǔ)器和第二存儲(chǔ)器進(jìn)行訪問(wèn)的存儲(chǔ)器轉(zhuǎn)譯器(memorytranslator),其中,該存儲(chǔ)器轉(zhuǎn)譯器決定是訪問(wèn)第一存儲(chǔ)器還是訪問(wèn)第二存儲(chǔ)器。
可選擇地,該存儲(chǔ)器轉(zhuǎn)譯器進(jìn)一步包括用于存儲(chǔ)與關(guān)聯(lián)于第一存儲(chǔ)器和第二存儲(chǔ)器的訪問(wèn)時(shí)間相關(guān)的信息的分析器(profiler)。
可選擇地,該存儲(chǔ)器轉(zhuǎn)譯器基于分析器內(nèi)存儲(chǔ)的信息來(lái)決定是訪問(wèn)第一存儲(chǔ)器還是訪問(wèn)第二存儲(chǔ)器。
同樣還描述了一種控制包含不同類型存儲(chǔ)器的存儲(chǔ)系統(tǒng)的運(yùn)行的方法。該方法包括實(shí)施具有第一類型存儲(chǔ)元件和第一訪問(wèn)時(shí)間的第一存儲(chǔ)器;實(shí)施具有第二類型存儲(chǔ)元件和第二訪問(wèn)時(shí)間的第二存儲(chǔ)器,其中第二類型存儲(chǔ)元件與第一類型存儲(chǔ)元件的類型不同;使得能夠訪問(wèn)第一存儲(chǔ)器和第二存儲(chǔ)器;將延遲緩沖器與第二存儲(chǔ)器相耦接,以用于補(bǔ)償?shù)谝辉L問(wèn)時(shí)間和第二訪問(wèn)時(shí)間之間的時(shí)間差;以及合并第一存儲(chǔ)器的輸出數(shù)據(jù)和經(jīng)過(guò)延遲的第二存儲(chǔ)器的輸出數(shù)據(jù),產(chǎn)生依序的輸出數(shù)據(jù)。
可選擇地,訪問(wèn)第一存儲(chǔ)器包括通過(guò)與第一存儲(chǔ)器相關(guān)聯(lián)的第一存儲(chǔ)器控制器來(lái)訪問(wèn)第一存儲(chǔ)器,訪問(wèn)第二存儲(chǔ)器包括通過(guò)與第二存儲(chǔ)器相關(guān)聯(lián)的第二存儲(chǔ)器控制器來(lái)訪問(wèn)第二存儲(chǔ)器。
可選擇地,該方法進(jìn)一步包括實(shí)施與第一存儲(chǔ)器控制器和第二存儲(chǔ)器控制器相耦接的存儲(chǔ)器選擇電路,該存儲(chǔ)器選擇電路使得能夠?qū)Φ谝淮鎯?chǔ)器和第二存儲(chǔ)器中的被選定的存儲(chǔ)器進(jìn)行訪問(wèn)。
可選擇地,訪問(wèn)第一存儲(chǔ)器包括實(shí)施ssd存儲(chǔ)器。
可選擇地,訪問(wèn)第二存儲(chǔ)器包括實(shí)施dram。
可選擇地,將第二存儲(chǔ)器的輸出數(shù)據(jù)耦接到延遲緩沖器包括將數(shù)據(jù)耦接到pld上的ram塊。
附圖說(shuō)明
圖1是一個(gè)使得能夠?qū)Χ鄠€(gè)存儲(chǔ)器進(jìn)行訪問(wèn)的電路的框圖;
圖2是一個(gè)用于控制包含不同存儲(chǔ)器類型的存儲(chǔ)系統(tǒng)的運(yùn)行以及實(shí)現(xiàn)順序處理的電路的框圖;
圖3是一個(gè)用于控制包含不同存儲(chǔ)器類型的存儲(chǔ)系統(tǒng)的運(yùn)行以及實(shí)現(xiàn)亂序處理的電路的框圖;
圖4是一個(gè)控制存儲(chǔ)系統(tǒng)運(yùn)行的電路的框圖,該存儲(chǔ)系統(tǒng)包含一個(gè)用于訪問(wèn)不同類型存儲(chǔ)器的電路;
圖5是另一個(gè)控制存儲(chǔ)系統(tǒng)運(yùn)行的電路的框圖,該存儲(chǔ)系統(tǒng)包含一個(gè)用于訪問(wèn)不同類型存儲(chǔ)器的電路;
圖6是一個(gè)流程圖,說(shuō)明了實(shí)施一個(gè)包含不同類型存儲(chǔ)器的存儲(chǔ)系統(tǒng)的方法;
圖7是一個(gè)流程圖,說(shuō)明了控制包含不同類型存儲(chǔ)器的存儲(chǔ)系統(tǒng)的運(yùn)行的方法;
圖8是一個(gè)框圖,展示了一個(gè)以環(huán)形節(jié)點(diǎn)的實(shí)施方式來(lái)分配存儲(chǔ)器的電路;
圖9是一個(gè)框圖,展示了一個(gè)存儲(chǔ)器轉(zhuǎn)譯器的架構(gòu);
圖10是一個(gè)流程圖,展示了圖9中的存儲(chǔ)器轉(zhuǎn)譯器中的分析器的運(yùn)行過(guò)程;
圖11是一個(gè)流程圖,展示了一種確定數(shù)據(jù)存儲(chǔ)在多個(gè)存儲(chǔ)器中的哪一個(gè)存儲(chǔ)器中的方法;
圖12是一個(gè)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)的框圖;
圖13是一個(gè)圖12中的dram的一個(gè)存儲(chǔ)元件的框圖;
圖14是一個(gè)固態(tài)硬盤(pán)(ssd)存儲(chǔ)器的框圖;
圖15是圖14中固態(tài)硬盤(pán)的一個(gè)存儲(chǔ)元件的框圖;
圖16是一個(gè)實(shí)現(xiàn)鍵值存儲(chǔ)的電路的框圖,該鍵值存儲(chǔ)實(shí)施了多個(gè)存儲(chǔ)器類型;
圖17是一個(gè)用于對(duì)包含可編程資源的器件進(jìn)行編程的系統(tǒng)的框圖;
圖18是一個(gè)包含可編程資源的器件的框圖;以及
圖19是一個(gè)圖18中器件的一個(gè)可配置邏輯元件的框圖。
具體實(shí)施方式
隨著諸如用于數(shù)據(jù)中心的大型存儲(chǔ)器網(wǎng)絡(luò)變得越來(lái)越被大量使用,并且其被人們依賴以存儲(chǔ)更大量的數(shù)據(jù),存儲(chǔ)器網(wǎng)絡(luò)的性能正在變得越來(lái)越重要。根據(jù)列于下文的多種電路和方法的一個(gè)數(shù)據(jù)流架構(gòu)實(shí)現(xiàn)了對(duì)包含不同類型存儲(chǔ)器的存儲(chǔ)器網(wǎng)絡(luò)的操作。例如,一個(gè)用于控制存儲(chǔ)系統(tǒng)運(yùn)行的電路補(bǔ)償了存儲(chǔ)器之間的差別,例如高訪問(wèn)延遲。列于下文的電路和方法發(fā)現(xiàn)了諸如現(xiàn)場(chǎng)可編程門(mén)陣列的可編程邏輯器件的特別用途,并且使得能夠基于pld建立用于處理和存儲(chǔ)數(shù)萬(wàn)億字節(jié)(tb)數(shù)據(jù)的存儲(chǔ)系統(tǒng),并且該系統(tǒng)可以比實(shí)施了傳統(tǒng)處理器的存儲(chǔ)系統(tǒng)擁有低得多的成本、更低的功耗以及更高的計(jì)算和存儲(chǔ)密度。
舉例而言,一個(gè)電路實(shí)現(xiàn)了控制包含不同類型的具有不同特性(例如不同訪問(wèn)時(shí)間)的存儲(chǔ)器的存儲(chǔ)系統(tǒng)的運(yùn)行,并且包括了實(shí)現(xiàn)對(duì)不同存儲(chǔ)器進(jìn)行訪問(wèn)的存儲(chǔ)器控制電路。正如下文詳細(xì)描述的,包括易失性和非易失性存儲(chǔ)器的不同類型的存儲(chǔ)器可以被實(shí)施。例如,一個(gè)延遲緩沖器會(huì)被耦接到一個(gè)存儲(chǔ)器,用來(lái)補(bǔ)償訪問(wèn)時(shí)間之間的差異。一個(gè)電路會(huì)被實(shí)施用于合并一個(gè)存儲(chǔ)器的輸出數(shù)據(jù)和經(jīng)過(guò)延遲的另一個(gè)存儲(chǔ)器的輸出數(shù)據(jù)來(lái)產(chǎn)生依序(ordered)的輸出數(shù)據(jù)。不同于傳統(tǒng)的多核處理器裝置,實(shí)施了數(shù)據(jù)流架構(gòu)的fpga能夠成功地補(bǔ)償這些高訪問(wèn)延遲,也使得ssd存儲(chǔ)器能夠與dram合并使用,形成一個(gè)能有效替換dram的優(yōu)選的存儲(chǔ)架構(gòu)。因此,基于fpga實(shí)現(xiàn)能夠處理和存儲(chǔ)萬(wàn)億字節(jié)數(shù)據(jù)的存儲(chǔ)設(shè)備將成為可能,該設(shè)備擁有低得多的成本、更低的功耗、提升的計(jì)算和存儲(chǔ)密度和降低的延遲。
雖然說(shuō)明書(shū)包括了定義一個(gè)或多個(gè)被認(rèn)為是新實(shí)施例的特征的權(quán)利要求,但應(yīng)當(dāng)相信的是該電路和方法可以通過(guò)附圖的描述來(lái)更好地被理解。雖然不同的電路和方法已被公開(kāi),但應(yīng)當(dāng)了解的是該電路和方法僅僅是本發(fā)明安排的一個(gè)典型示范,本發(fā)明安排可以通過(guò)不同形式來(lái)表現(xiàn)。因此,在本說(shuō)明書(shū)中公開(kāi)的具體結(jié)構(gòu)和功能細(xì)節(jié)不能被認(rèn)為是一種限制,而僅僅是作為權(quán)利要求的基礎(chǔ)和作為教導(dǎo)本領(lǐng)域技術(shù)人員多方面以幾乎各種合適的具體結(jié)構(gòu)實(shí)施本發(fā)明安排的基礎(chǔ)。進(jìn)一步而言,文中的術(shù)語(yǔ)和措辭并不應(yīng)該被認(rèn)為是一種限制,而是提供了一種對(duì)于該電路和方法的可理解的描述。
首先看圖1,展示了一個(gè)擁有多個(gè)存儲(chǔ)器的集成電路器件的框圖。特別地,輸入/輸出端口102被耦接到控制電路104,該控制電路控制了包含配置存儲(chǔ)器108的可編程資源106。具體參見(jiàn)下圖16-18的描述,配置數(shù)據(jù)通過(guò)配置控制器110向配置存儲(chǔ)器108提供。該配置數(shù)據(jù)使得可配置單元109能夠工作。多個(gè)存儲(chǔ)元件,在此體現(xiàn)為存儲(chǔ)器112和存儲(chǔ)器113,與控制電路104和可編程資源106相耦接。存儲(chǔ)器控制器114可以被耦接到控制電路104、可編程資源106和存儲(chǔ)器112、113,并且能夠接收該集成電路裝置外部的數(shù)據(jù)或是通過(guò)i/o端口116傳輸信號(hào)。存儲(chǔ)器控制器114能夠控制存儲(chǔ)器112和113,對(duì)此下文將會(huì)進(jìn)行詳細(xì)描述。或者如下文描述的,控制電路104或是可編程資源的電路能夠控制存儲(chǔ)器112和113。其它i/o端口可以與集成電路裝置中的電路相耦接,例如圖中所示,i/o端口118與控制電路104相耦接。列于下文更詳細(xì)描述的電路和方法可以被實(shí)施在一塊單獨(dú)的集成電路芯片中,或者可以被實(shí)施在多芯片模塊或是在存儲(chǔ)器網(wǎng)絡(luò)中控制不同類型存儲(chǔ)器的其它系統(tǒng)中。
現(xiàn)在看圖2,展示了一個(gè)用于控制包含不同類型存儲(chǔ)器的存儲(chǔ)系統(tǒng)的運(yùn)行以及實(shí)現(xiàn)順序處理的電路的框圖。包含數(shù)據(jù)流架構(gòu)的應(yīng)用201可以實(shí)現(xiàn)與存儲(chǔ)器控制電路203的通信,所述數(shù)據(jù)流架構(gòu)具有數(shù)據(jù)流緩沖器。在圖2和圖3中,應(yīng)用元數(shù)據(jù)展示在虛線內(nèi),而存儲(chǔ)器請(qǐng)求和響應(yīng)展示在實(shí)線內(nèi)。當(dāng)圖2電路中的數(shù)據(jù)被“有序”路由時(shí),響應(yīng)于向圖2中存儲(chǔ)器發(fā)起的數(shù)據(jù)請(qǐng)求而產(chǎn)生的數(shù)據(jù)會(huì)以與請(qǐng)求相同的順序被提供。相反地,當(dāng)數(shù)據(jù)被“亂序”路由時(shí),數(shù)據(jù)會(huì)忽略一個(gè)存儲(chǔ)器相對(duì)于第二個(gè)存儲(chǔ)器的任何延遲,以不同存儲(chǔ)器輸出數(shù)據(jù)的順序被提供。也就是說(shuō),第一個(gè)數(shù)據(jù)請(qǐng)求所產(chǎn)生的數(shù)據(jù)可能會(huì)在之后的請(qǐng)求提供數(shù)據(jù)后才被提供。當(dāng)圖2中電路路由的數(shù)據(jù)是“順序”路由的,元數(shù)據(jù)延遲緩沖器202被提供用以保證與某一特定數(shù)據(jù)請(qǐng)求相關(guān)聯(lián)的元數(shù)據(jù)能夠與該請(qǐng)求對(duì)應(yīng)的輸出數(shù)據(jù)相匹配。也就是說(shuō),由于元數(shù)據(jù)提供了與關(guān)聯(lián)于數(shù)據(jù)請(qǐng)求的數(shù)據(jù)有關(guān)的信息,那么該元數(shù)據(jù)必須匹配與該數(shù)據(jù)請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)。因此,該元數(shù)據(jù)延遲緩沖器需要保證任何由圖2中存儲(chǔ)器產(chǎn)生的數(shù)據(jù)都必須匹配與該數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù)。
正如下文所更加詳細(xì)描述的,應(yīng)用201可以是任何通過(guò)集成電路實(shí)施的應(yīng)用,或是一個(gè)較大系統(tǒng)(例如具有集成電路的計(jì)算機(jī))中實(shí)施的集成電路。舉例而言,應(yīng)用201可以是一個(gè)具有通過(guò)圖1的可編程資源106實(shí)施的處理單元的數(shù)據(jù)處理電路,而存儲(chǔ)器控制器114可以通過(guò)存儲(chǔ)器控制器203來(lái)實(shí)施。存儲(chǔ)器選擇電路204使得能夠從多個(gè)可用的存儲(chǔ)器207中選擇存儲(chǔ)器來(lái)進(jìn)行讀寫(xiě)數(shù)據(jù)操作。該存儲(chǔ)器選擇電路204可以與多個(gè)擁有多個(gè)相同類型存儲(chǔ)器的存儲(chǔ)子系統(tǒng)相連接,也可以包括用于訪問(wèn)第一類型存儲(chǔ)器208(其產(chǎn)生第一類型存儲(chǔ)器208的輸出數(shù)據(jù)209)的第一存儲(chǔ)器控制器206,以及用于訪問(wèn)第二類型存儲(chǔ)器212(其產(chǎn)生第二類型存儲(chǔ)器212的輸出數(shù)據(jù)213)的第二存儲(chǔ)器控制器210,其中第一類型存儲(chǔ)器與第二類型存儲(chǔ)器的類型不同。與第二類型存儲(chǔ)器212的輸出耦接的延遲緩沖器214使得數(shù)據(jù)合并電路216能夠基于第一類型存儲(chǔ)器208的輸出數(shù)據(jù)209和經(jīng)過(guò)延遲的第二類型存儲(chǔ)器212的輸出數(shù)據(jù)215來(lái)產(chǎn)生依序的輸出數(shù)據(jù)。也就是說(shuō),依序的輸出數(shù)據(jù)包含的數(shù)據(jù)具有與數(shù)據(jù)請(qǐng)求順序相一致的期望的順序,其中延遲緩沖器延遲了將被包括在依序輸出數(shù)據(jù)中的一部分?jǐn)?shù)據(jù),這樣數(shù)據(jù)合并電路126能夠以正確的順序放置將要被依序的輸出數(shù)據(jù)。
圖2中所有元件能夠被實(shí)施在一個(gè)獨(dú)立的集成電路(ic)中,或者分布在一個(gè)系統(tǒng)的多個(gè)ic中。存儲(chǔ)器控制器206和存儲(chǔ)器控制器210能夠被放置在同一個(gè)ic上并與存儲(chǔ)器控制電路203相關(guān)聯(lián),或者可以分別與擁有第一類型存儲(chǔ)器208和第二類型存儲(chǔ)器212的分離的存儲(chǔ)子系統(tǒng)放置在一起。雖然圖2的示例中僅僅展示了兩種存儲(chǔ)器類型,應(yīng)當(dāng)理解的是,包含兩種以上存儲(chǔ)器類型的電路和方法也能夠被實(shí)施。
存儲(chǔ)器控制電路203實(shí)現(xiàn)了對(duì)兩種具有不同帶寬和延遲特性的數(shù)據(jù)流進(jìn)行合并。列于下文的電路和方法既能實(shí)現(xiàn)順序處理,也能實(shí)現(xiàn)亂序處理。順序處理能夠通過(guò)插入人為的延遲平衡所有存儲(chǔ)子系統(tǒng)延遲的方法來(lái)維持。這樣的延遲需求可能需要大量的中間緩沖空間,實(shí)際大小取決于第一存儲(chǔ)子系統(tǒng)的延遲,例如包含ssd的存儲(chǔ)子系統(tǒng)。如果亂序處理是能夠被接受的,那么所有有關(guān)存儲(chǔ)器訪問(wèn)請(qǐng)求的對(duì)應(yīng)信息會(huì)以流的形式穿過(guò)整個(gè)存儲(chǔ)系統(tǒng),其中一旦得到了存儲(chǔ)子系統(tǒng)的響應(yīng),它們就會(huì)被合并回去進(jìn)入輸出數(shù)據(jù)流。另外,ssd接口上的預(yù)留空間可以被使用,典型的ssd接口的吞吐量會(huì)低于dram,可以通過(guò)將多個(gè)ssd接口組合起來(lái)以提升對(duì)ssd的帶寬需求。
一個(gè)圖2中布局的示例包括將ssd作為第一類型存儲(chǔ)器以及將dram作為第二類型存儲(chǔ)器。ssd(例如基于nand結(jié)構(gòu)的閃存設(shè)備)憑借其提供的相較硬盤(pán)驅(qū)動(dòng)器而言更高的性能(通過(guò)每秒輸入輸出運(yùn)行次數(shù)(iops))和更低的訪問(wèn)延遲,正在存儲(chǔ)器網(wǎng)絡(luò)領(lǐng)域中快速地得到普及。ssd同時(shí)具有比dram更高的存儲(chǔ)密度、更低的成本和更低的功耗。然而,一個(gè)通過(guò)同時(shí)實(shí)施這兩種類型存儲(chǔ)器來(lái)實(shí)現(xiàn)的存儲(chǔ)器網(wǎng)絡(luò)所面臨的挑戰(zhàn)是需要容忍這些存儲(chǔ)器之間不同的訪問(wèn)延遲,其中ssd的訪問(wèn)時(shí)間可能是十微秒(us)量級(jí),而dram的訪問(wèn)延遲可能是十納秒(ns)量級(jí)。舉例而言,存儲(chǔ)器芯片的訪問(wèn)延遲會(huì)被明確規(guī)定。同樣還可以測(cè)量一些dram和ssd的訪問(wèn)延遲。這個(gè)數(shù)據(jù)可以被用來(lái)確定延遲緩沖器的大小。例如,一些dram可能具有大約600納秒的訪問(wèn)延遲,一些ssd可能具有大約100微秒的訪問(wèn)延遲。因此,如果第一個(gè)數(shù)據(jù)請(qǐng)求指向ssd,而之后的請(qǐng)求指向dram,那么dram數(shù)據(jù)在600ns之后可用(時(shí)間早于指向ssd的數(shù)據(jù)請(qǐng)求),為了保證輸出數(shù)據(jù)的順序,與dram相耦接的延遲緩沖器需要在100us-600ns(也就是99.4微秒)這段時(shí)間內(nèi)緩沖dram產(chǎn)生的數(shù)據(jù)。假設(shè)dram的輸出數(shù)據(jù)帶寬為每240ns內(nèi)輸出512bit(64字節(jié)),那么延遲緩沖器的尺寸應(yīng)該是64*(99400/240)=26507字節(jié)。在一個(gè)擁有尺寸為1024*4=4096字節(jié)的bram的fpga上,只需要使用(26507/4096)=7塊bram來(lái)緩沖dram產(chǎn)生的數(shù)據(jù),從而產(chǎn)生足夠的延遲來(lái)包容ssd的訪問(wèn)延遲。于是,延遲單元使得ssd和dram可以被一起使用,其中fpga(例如圖16中展示的fpga)的bram可以被用來(lái)提供足夠的延遲,以保證產(chǎn)生依序的正確的數(shù)據(jù)。正如下文所更加詳細(xì)描述的,數(shù)據(jù)直到經(jīng)過(guò)一段合適的時(shí)間之后才會(huì)從bram中讀出,這樣bram的數(shù)據(jù)就被延遲了一段相對(duì)于ssd而言的正確的時(shí)間。傳統(tǒng)多核處理器無(wú)法通過(guò)多線程讀出操作來(lái)補(bǔ)償這些過(guò)多的訪問(wèn)延遲,但是包含諸如圖17描述的fpga這樣的可編程資源使得具有不同訪問(wèn)延遲的存儲(chǔ)器能夠被一起實(shí)施。
如圖3所示,具有不同類型存儲(chǔ)器且能夠?qū)崿F(xiàn)亂序處理的存儲(chǔ)系統(tǒng)不需要包含元數(shù)據(jù)延遲緩沖器。如虛線內(nèi)所示,由于數(shù)據(jù)是亂序處理的,不需要為存儲(chǔ)器的輸出數(shù)據(jù)提供延遲,所以元數(shù)據(jù)是和數(shù)據(jù)一起在存儲(chǔ)器控制器中傳遞的。也就是說(shuō),元數(shù)據(jù)與響應(yīng)于數(shù)據(jù)請(qǐng)求而產(chǎn)生的數(shù)據(jù)相匹配,并被提供給應(yīng)用201。
下文更加詳細(xì)描述的電路和方法補(bǔ)償了這些較大的訪問(wèn)延遲,并使得ssd能夠與dram在同一個(gè)存儲(chǔ)架構(gòu)中聯(lián)合使用?;趐ld來(lái)創(chuàng)建一個(gè)存儲(chǔ)設(shè)備,以較低的成本和功耗以及提升的計(jì)算和存儲(chǔ)密度來(lái)對(duì)萬(wàn)億字節(jié)的數(shù)據(jù)進(jìn)行處理和存儲(chǔ),是具有可能性的。而且,相比較傳統(tǒng)裝置而言,該電路和方法能夠以更低的訪問(wèn)延遲向網(wǎng)絡(luò)提供數(shù)據(jù)。
使用了存儲(chǔ)器控制電路203的存儲(chǔ)器網(wǎng)絡(luò)可以被實(shí)施為一個(gè)數(shù)據(jù)流架構(gòu),用于有效補(bǔ)償特定類型存儲(chǔ)器的或是各種其它較高的訪問(wèn)延遲,并且不會(huì)因?yàn)橐胙舆t而損失性能。舉例而言,延遲可能會(huì)由于使用了fifo形式的延遲單元而被引入數(shù)據(jù)流架構(gòu)中。這樣的布局能夠被有效地實(shí)施在諸如fpga一樣的集成電路中,其中fpga中的bram能夠被實(shí)施為fifo。由于bram可能不會(huì)用來(lái)實(shí)現(xiàn)別的功能,因此不需要使用專門(mén)的fifo來(lái)提供延遲,而是可以將bram(未用作其他用途的)實(shí)施為fifo來(lái)提供任意需要的延遲。進(jìn)一步地,存儲(chǔ)器控制電路能夠確定一項(xiàng)是否被存儲(chǔ)在某種特定的存儲(chǔ)器中,進(jìn)而可以將請(qǐng)求轉(zhuǎn)發(fā)給對(duì)應(yīng)的存儲(chǔ)器控制器。正如下文所更詳細(xì)描述的,這種決定可以基于許多不同的標(biāo)準(zhǔn)來(lái)完成,例如平衡dram和ssd之間的訪問(wèn)帶寬,將特定的使用情況與實(shí)際存儲(chǔ)容量相匹配,或是平衡當(dāng)前的負(fù)載情況。
現(xiàn)在看圖4,圖中展示了一個(gè)用于控制存儲(chǔ)系統(tǒng)運(yùn)行的電路的框圖,該存儲(chǔ)系統(tǒng)包含訪問(wèn)不同類型存儲(chǔ)子系統(tǒng)的電路。如圖4所示,存儲(chǔ)器控制電路203與多個(gè)與應(yīng)用201相關(guān)聯(lián)的處理單元(pe)406-412相耦接。舉例而言,正如將在下文對(duì)圖18和19所詳細(xì)描述的,這些pe可以被實(shí)施在fpga的cle中。該存儲(chǔ)器控制電路203包括具有存儲(chǔ)器轉(zhuǎn)譯器418的存儲(chǔ)器網(wǎng)絡(luò)電路416。該存儲(chǔ)器轉(zhuǎn)譯器418包括第一緩沖電路420,用于耦接以接收來(lái)自處理單元408的數(shù)據(jù)請(qǐng)求。該數(shù)據(jù)請(qǐng)求在輸入422處被接收,并且來(lái)自處理單元對(duì)應(yīng)的輸出423。如圖所示,存儲(chǔ)在第二緩沖電路424并通過(guò)輸出426產(chǎn)生的數(shù)據(jù)與處理單元408的對(duì)應(yīng)的輸入427相耦接。存儲(chǔ)器轉(zhuǎn)譯器418中的緩沖電路420和424,以及下文描述的存儲(chǔ)器控制器的緩沖器,可以被實(shí)施在fpga的bram中。延遲的時(shí)間長(zhǎng)度可以變化,并且可以基于被實(shí)施為fifo的bram的數(shù)量來(lái)選擇,從而提供一個(gè)被選擇的延遲。也就是說(shuō),存儲(chǔ)器控制器203通過(guò)從存儲(chǔ)器的輸出中選擇一條路徑以包括被實(shí)施為具有特定延遲的fifo的bram,從而實(shí)現(xiàn)了對(duì)提供了一個(gè)確定的、已知的延遲的bram的選擇。在不需要延遲的情況下(也就是指亂序處理),舉例而言,通過(guò)使用能夠繞開(kāi)延遲單元而路由的互連單元來(lái)旁路延遲單元。之后不同存儲(chǔ)器的輸出數(shù)據(jù)被存儲(chǔ)器轉(zhuǎn)譯器418合并,從而實(shí)現(xiàn)順序處理,其中依序的輸出數(shù)據(jù)可以被存儲(chǔ)在緩沖器424中。
存儲(chǔ)器轉(zhuǎn)譯器418被耦接到存儲(chǔ)器網(wǎng)絡(luò)419,以實(shí)現(xiàn)對(duì)信號(hào)的控制,所述信號(hào)包括被路由到和路由自由存儲(chǔ)器轉(zhuǎn)譯器控制的存儲(chǔ)器的信號(hào)。特別地,在圖中被舉例為多路復(fù)用器的第一選擇電路428被耦接到存儲(chǔ)器轉(zhuǎn)譯器418,并受存儲(chǔ)器轉(zhuǎn)譯器418控制,更具體地,該選擇電路會(huì)被耦接以在第一輸入429處接收存儲(chǔ)器訪問(wèn)請(qǐng)求。該存儲(chǔ)器訪問(wèn)請(qǐng)求之后會(huì)在選擇電路428的多個(gè)相應(yīng)輸出430-434處被路由到多個(gè)存儲(chǔ)器控制器(mc)中的一個(gè)。輸出430在輸入438處被耦接到存儲(chǔ)器控制器436。緩沖電路441的輸出437被耦接到所述多個(gè)存儲(chǔ)器440(在圖中顯示為動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)),其中存儲(chǔ)器控制器控制所述多個(gè)存儲(chǔ)器440。需要指出的是dram是易失性存儲(chǔ)器。緩沖電路442被耦接以在輸入439處接收所述多個(gè)存儲(chǔ)器440的輸出,并在輸出443處為存儲(chǔ)器轉(zhuǎn)譯器418產(chǎn)生數(shù)據(jù)。緩沖電路441和442被實(shí)施為存儲(chǔ)路由給存儲(chǔ)器的請(qǐng)求,或者在數(shù)據(jù)被路由回存儲(chǔ)器轉(zhuǎn)譯器前存儲(chǔ)從存儲(chǔ)元件接收的數(shù)據(jù)。由于dram具有比ssd更高的訪問(wèn)速率,緩沖器442能夠提供延遲,使得存儲(chǔ)器轉(zhuǎn)譯器能夠按照正確的順序?yàn)轫樞蛱幚硖峁┱_的數(shù)據(jù)。
第二存儲(chǔ)器控制器444被耦接到存儲(chǔ)器網(wǎng)絡(luò)419,并在輸入446處被耦接到第二多個(gè)存儲(chǔ)器445,其中所述多個(gè)存儲(chǔ)器在圖中舉例為ssd,ssd是非易失性存儲(chǔ)器,能夠在掉電后保持?jǐn)?shù)據(jù)。與上文關(guān)于存儲(chǔ)器控制器436的描述類似地,緩沖器447和448能夠存儲(chǔ)從存儲(chǔ)器轉(zhuǎn)譯器418接收的數(shù)據(jù)請(qǐng)求或從存儲(chǔ)器445接收而來(lái)的數(shù)據(jù)。特別地,來(lái)自存儲(chǔ)器轉(zhuǎn)譯器的數(shù)據(jù)請(qǐng)求會(huì)被提供給緩沖器447的輸入446,并在輸出449處產(chǎn)生,而產(chǎn)生于所述多個(gè)存儲(chǔ)器445的輸出處的數(shù)據(jù)被耦接到緩沖器448的輸入450,并在輸出451處產(chǎn)生數(shù)據(jù)。最后,第三存儲(chǔ)器控制器452在輸入454處被耦接到存儲(chǔ)器網(wǎng)絡(luò)419,同時(shí)第三存儲(chǔ)器控制器452也被耦接到主存儲(chǔ)器456。從存儲(chǔ)器控制器452接收的數(shù)據(jù)請(qǐng)求會(huì)被儲(chǔ)存在緩沖電路457中,其中提供到緩沖器457的輸入459的數(shù)據(jù)請(qǐng)求會(huì)在輸出460處產(chǎn)生,并被耦接到主存儲(chǔ)器456。類似地,在輸入461處從主存儲(chǔ)器接收的數(shù)據(jù)會(huì)在緩沖電路458的輸出462處產(chǎn)生,并被發(fā)送到存儲(chǔ)器轉(zhuǎn)譯器418。
圖中顯示為多路復(fù)用器的第二選擇電路470被耦接到該存儲(chǔ)器轉(zhuǎn)譯器,更具體地,該選擇電路被耦接以在輸入472-476處接收存儲(chǔ)器440、445和456的輸出,其中被選中的輸出在輸出478處產(chǎn)生。被選中的存儲(chǔ)器的輸出被提供到存儲(chǔ)器轉(zhuǎn)譯器418的輸入處。存儲(chǔ)器分配器控制選擇電路470以保證從特定的存儲(chǔ)器中獲取到正確的數(shù)據(jù),從而能夠按照正確的順序?yàn)轫樞蛱幚硖峁?shù)據(jù)。盡管圖中展示的只是作為示例的特定的存儲(chǔ)元件,需要被理解的是,其它類型的存儲(chǔ)元件也可以由存儲(chǔ)器控制電路203控制。
現(xiàn)在看圖5,圖5是另一個(gè)框圖,展示了控制具有訪問(wèn)不同類型存儲(chǔ)器的電路的系統(tǒng)運(yùn)行的電路。第二存儲(chǔ)器轉(zhuǎn)譯器502與另一個(gè)處理單元(圖中示為處理單元406)相關(guān)聯(lián)。該存儲(chǔ)器轉(zhuǎn)譯器包括第一緩沖器504和第二緩沖器506。第一緩沖器504被耦接以在第一輸入508處接收來(lái)自處理單元406的輸出509的數(shù)據(jù)請(qǐng)求。第二緩沖器506被耦接以在與第二處理單元406的輸入512相耦接的第一輸出510處產(chǎn)生數(shù)據(jù)。存儲(chǔ)器轉(zhuǎn)譯器502同樣被耦接到存儲(chǔ)器網(wǎng)絡(luò)419以實(shí)現(xiàn)對(duì)信號(hào)的控制,所述信號(hào)包括被路由到和路由自被存儲(chǔ)器轉(zhuǎn)譯器502控制的存儲(chǔ)器的信號(hào)。也就是說(shuō),第二選擇電路470的輸出514被耦接到存儲(chǔ)器轉(zhuǎn)譯器502,同時(shí)存儲(chǔ)器轉(zhuǎn)譯器502的輸出被耦接到選擇電路428的輸入516。需要理解的是,可以實(shí)施兩個(gè)以上的存儲(chǔ)器轉(zhuǎn)譯器,并且存儲(chǔ)器轉(zhuǎn)譯器的輸出可以被耦接到不同的處理單元。
現(xiàn)在看圖6,圖6是一個(gè)流程圖,描述了控制一個(gè)存儲(chǔ)系統(tǒng)的運(yùn)行的方法???02中具有第一類型存儲(chǔ)元件和第一訪問(wèn)時(shí)間的第一存儲(chǔ)器被使得能夠被訪問(wèn)。在框604中,訪問(wèn)具有第二類型存儲(chǔ)元件和第二訪問(wèn)時(shí)間的第二存儲(chǔ)器,其中第二類型存儲(chǔ)元件和第一類型存儲(chǔ)元件的類型不同。舉例而言,對(duì)第一和第二存儲(chǔ)器的訪問(wèn)能夠通過(guò)輸入/輸出電路來(lái)提供,例如圖18中集成電路的iob???06中提供了與第一存儲(chǔ)器控制器和第二存儲(chǔ)器控制器相耦接的存儲(chǔ)器選擇電路,舉例而言,該選擇電路可以是多路復(fù)用器。在框608中,通過(guò)使用存儲(chǔ)器選擇電路和第一、第二存儲(chǔ)器控制器來(lái)實(shí)現(xiàn)訪問(wèn)第一存儲(chǔ)器和第二存儲(chǔ)器中合適的存儲(chǔ)器???10中提供了可被配置為延遲緩沖器的可編程資源,用于補(bǔ)償?shù)谝辉L問(wèn)時(shí)間和第二訪問(wèn)時(shí)間之間的時(shí)間差。框612中提供了可編程互連,用于使得能夠合并第一存儲(chǔ)器的輸出和經(jīng)過(guò)延遲的第二存儲(chǔ)器的輸出以產(chǎn)生依序的輸出數(shù)據(jù)。一個(gè)可以被實(shí)施為延遲緩沖器的可編程資源的示例包括圖18的pld中的bram,而一個(gè)可編程互連的示例可以包括圖18的pld中的可編程互連。
圖7是一個(gè)流程圖,展示了控制一個(gè)具有不同類型存儲(chǔ)器的存儲(chǔ)系統(tǒng)的運(yùn)行的方法???02中實(shí)施了與第一存儲(chǔ)器控制器和第二存儲(chǔ)器控制器相耦接的存儲(chǔ)器選擇電路???04中實(shí)現(xiàn)了通過(guò)使用存儲(chǔ)器選擇電路和第一、第二存儲(chǔ)器控制器來(lái)訪問(wèn)第一存儲(chǔ)器和第二存儲(chǔ)器中合適的存儲(chǔ)器。舉例而言,控制信號(hào)被提供給存儲(chǔ)器選擇電路,以保證數(shù)據(jù)被路由給正確的存儲(chǔ)器,并被從正確的存儲(chǔ)器中獲取???06中訪問(wèn)具有第一類型存儲(chǔ)元件和第一訪問(wèn)時(shí)間的第一存儲(chǔ)器。框708中訪問(wèn)具有第二類型存儲(chǔ)元件和第二訪問(wèn)時(shí)間的第二存儲(chǔ)器,其中第二類型存儲(chǔ)元件與第一類型存儲(chǔ)元件的類型不同。框710中,第二存儲(chǔ)器輸出的數(shù)據(jù)被耦接到延遲緩沖器,以補(bǔ)償?shù)谝辉L問(wèn)時(shí)間與第二訪問(wèn)時(shí)間之間的時(shí)間差。舉例而言,該延遲緩沖器可以被實(shí)施為集成電路內(nèi)的bram(例如圖18中集成電路內(nèi)的bram),所述bram能夠通過(guò)在正確的時(shí)間從bram中讀出來(lái)有效地提供合適的延遲。也就是說(shuō),如果從dram讀出的數(shù)據(jù)被緩沖在bram中,但是來(lái)自ssd(必須被先讀出)的數(shù)據(jù)還沒(méi)有準(zhǔn)備好,那么bram的讀出使能電路不會(huì)被觸發(fā),數(shù)據(jù)將會(huì)在預(yù)定的延遲時(shí)間內(nèi)被保存在bram中。因此,可以通過(guò)將數(shù)據(jù)緩沖在bram中,對(duì)數(shù)據(jù)進(jìn)行延遲,并在預(yù)定的延遲時(shí)間過(guò)后,將數(shù)據(jù)從bram中讀出。在框712中,第一存儲(chǔ)器的輸出和經(jīng)過(guò)延遲的第二存儲(chǔ)器的輸出被合并,以產(chǎn)生依序的輸出數(shù)據(jù)。
圖6和圖7中的多種元件可以通過(guò)使用如圖1-5中所描述的電路或是其它合適的電路來(lái)實(shí)施。雖然圖中描述了方法中的一些具體的元件,但是需要被了解的是,該方法中的其它元件或是與元件相關(guān)的附加細(xì)節(jié)都可以根據(jù)圖1-5公開(kāi)的內(nèi)容來(lái)實(shí)施。
現(xiàn)在看圖8,圖8是一個(gè)框圖,展示了用于在環(huán)形節(jié)點(diǎn)的實(shí)施例中分配存儲(chǔ)器的電路。圖8中的電路展示了對(duì)元件的布局,其中環(huán)形節(jié)點(diǎn)實(shí)施例中的節(jié)點(diǎn)802有更詳細(xì)的描述。特別地,每個(gè)節(jié)點(diǎn)802包括與輸入緩沖器806和輸出緩沖器808相耦接的仲裁器804。仲裁器804在緩沖器806和緩沖器808之間提供了一個(gè)接口,用于向環(huán)上的其節(jié)點(diǎn)(例如存儲(chǔ)器控制器或存儲(chǔ)器轉(zhuǎn)譯器)發(fā)送數(shù)據(jù)或接收數(shù)據(jù)。圖8中的電路實(shí)施了基本的令牌環(huán),仲裁器一旦接收到了特定的數(shù)據(jù)(也就是令牌),便會(huì)將數(shù)據(jù)從發(fā)送緩沖器傳輸?shù)江h(huán)上,而一旦它確定了目的地址是它所在的節(jié)點(diǎn),那么便會(huì)將環(huán)上的數(shù)據(jù)傳輸?shù)捷斎刖彌_器。圖8中令牌環(huán)布局既可以被用在順序處理中,也可以被用在亂序處理中。雖然圖6中的方法可以通過(guò)不同的拓?fù)浣Y(jié)構(gòu)來(lái)實(shí)施(例如,環(huán)形、網(wǎng)狀或是圓環(huán)面拓?fù)?,但是圖7中的環(huán)形互連拓?fù)淇傮w使用較少的路由資源并具有可預(yù)知的延遲。而且,當(dāng)系統(tǒng)中包含大量的存儲(chǔ)節(jié)點(diǎn)時(shí),環(huán)形拓?fù)鋾?huì)具有優(yōu)勢(shì)。
現(xiàn)在看圖9,圖9是一個(gè)框圖,展示了存儲(chǔ)器轉(zhuǎn)譯器418的架構(gòu)。特別地,輸入緩沖器420被耦接到地址譯碼器904,并提供了將數(shù)據(jù)存入存儲(chǔ)器的請(qǐng)求。地址譯碼器904的輸出被耦接到分析器906以及地址轉(zhuǎn)譯和分配塊908。如下將參考圖10詳細(xì)描述的,分析器906可根據(jù)情況來(lái)確定數(shù)據(jù)被存入哪一個(gè)存儲(chǔ)器,以優(yōu)化存儲(chǔ)器網(wǎng)絡(luò)的運(yùn)行。響應(yīng)于地址譯碼器904和分析器910,地址轉(zhuǎn)譯和分配塊908會(huì)輸出地址。也就是說(shuō),地址轉(zhuǎn)譯和分配塊908會(huì)決定存儲(chǔ)器440、445和456中哪一個(gè)將被訪問(wèn)。輸出緩沖器424被耦接以接收存儲(chǔ)器的輸出。
分析器906實(shí)現(xiàn)了對(duì)存儲(chǔ)子系統(tǒng)的分析,以確定訪問(wèn)哪一個(gè)存儲(chǔ)器,例如快速存取存儲(chǔ)器(例如dram)或是較慢速存取存儲(chǔ)器(例如ssd)。根據(jù)對(duì)存儲(chǔ)器性能的觀察,存儲(chǔ)子系統(tǒng)可以被實(shí)施為能夠支持預(yù)定的數(shù)據(jù)量。例如,當(dāng)在一個(gè)存儲(chǔ)器網(wǎng)絡(luò)中實(shí)施dram和ssd時(shí),一種緩存(memcached)實(shí)施例說(shuō)明一些ssd能夠支持10吉比特每秒(gbps)的數(shù)據(jù)接口的數(shù)據(jù)請(qǐng)求的1%以用于訪問(wèn)數(shù)據(jù)。也就是說(shuō)如果10gbps的緩存請(qǐng)求中的1%導(dǎo)致了要從ssd中獲取數(shù)據(jù),那么該緩存請(qǐng)求仍然能夠產(chǎn)生10gbps的響應(yīng)。舉例而言,2千字節(jié)(kbyte)可以被用作為用來(lái)區(qū)分對(duì)存儲(chǔ)器的訪問(wèn)的閾值。也就是說(shuō),如果請(qǐng)求需要獲取的數(shù)據(jù)量超過(guò)2kb,那么它們會(huì)訪問(wèn)ssd,否則,它們會(huì)訪問(wèn)dram。然而,在實(shí)際被實(shí)施時(shí),如果獲取較大數(shù)據(jù)量(在此例子中指的是大于2kb)的請(qǐng)求次數(shù)超過(guò)了所有數(shù)據(jù)請(qǐng)求的1%,那么就有必要將閾值提高一些值。例如,該閾值可以被提高1024字節(jié)(也就是1kb)來(lái)保證只有1%的訪問(wèn)是與存儲(chǔ)在ssd中的數(shù)據(jù)相關(guān)的。圖10中的流程圖說(shuō)明了修改閾值來(lái)得到優(yōu)化性能的過(guò)程。它假設(shè)了一些訪問(wèn)頻率(例如,1%訪問(wèn)ssd,99%訪問(wèn)dram),并且建立了一個(gè)訪問(wèn)頻率到數(shù)據(jù)規(guī)模的映射關(guān)系。于是,如果數(shù)據(jù)訪問(wèn)規(guī)模比閾值小,就訪問(wèn)dram。然而,如果數(shù)據(jù)訪問(wèn)規(guī)模大于該閾值,那么就查看該數(shù)據(jù)規(guī)模的訪問(wèn)頻率,來(lái)確定是否需要調(diào)整閾值。如果該頻率太高,那么需要減小閾值。如果該頻率太低,則需要增大閾值。
特別地,地址譯碼在框1002中執(zhí)行,其中確定了要訪問(wèn)的多個(gè)字節(jié)。一張關(guān)于數(shù)據(jù)規(guī)模和訪問(wèn)頻率的配對(duì)的表在框1004中更新,其中生成了數(shù)據(jù)規(guī)模和訪問(wèn)頻率。數(shù)據(jù)規(guī)模(也就是指字節(jié)數(shù))被用來(lái)將存儲(chǔ)器訪問(wèn)分配到不同的存儲(chǔ)器類型,例如dram或ssd。進(jìn)一步地,不同存儲(chǔ)器(例如dram或ssd)具有不同的訪問(wèn)粒度,即訪問(wèn)的字節(jié)數(shù)。例如,ssd具有頁(yè)(page-wise)(例如4k字節(jié))的訪問(wèn)粒度。因此,如果一個(gè)字節(jié)從ssd(在一次訪問(wèn)中可以產(chǎn)生一個(gè)4k字節(jié)數(shù)據(jù))中被獲取,本質(zhì)上訪問(wèn)一個(gè)字節(jié)的數(shù)據(jù)和訪問(wèn)一頁(yè)數(shù)據(jù)所需要的時(shí)間是一樣的,這樣存儲(chǔ)器性能會(huì)非常差,因?yàn)榇蠖鄶?shù)的存儲(chǔ)器訪問(wèn)帶寬被浪費(fèi)了。然后確定數(shù)據(jù)尺寸是否大于框1006中的閾值。如果大于閾值,那么便確定框1008中的頻率是否過(guò)高。如果頻率過(guò)高,框1010中將閾值寄存器減去1024比特后的結(jié)果記錄到寄存器中。如果頻率沒(méi)有過(guò)高,那么框1012中確定頻率是否過(guò)低。如果頻率過(guò)低,那么框1014中將閾值寄存器加上1024比特后的結(jié)果記錄到寄存器中。然后地址轉(zhuǎn)譯在框1016中執(zhí)行,基于數(shù)據(jù)規(guī)模和閾值大小來(lái)將數(shù)據(jù)存儲(chǔ)到合適類型的存儲(chǔ)器中。
當(dāng)實(shí)施一個(gè)具有不同類型存儲(chǔ)器的系統(tǒng)時(shí),需要確定特定的數(shù)據(jù)應(yīng)當(dāng)被存儲(chǔ)在哪個(gè)類型的存儲(chǔ)器中。圖11的流程圖展示了一種確定將數(shù)據(jù)存儲(chǔ)在多個(gè)存儲(chǔ)器中的哪個(gè)存儲(chǔ)器的方法。框1102中實(shí)施了具有第一類型存儲(chǔ)元件和第一訪問(wèn)時(shí)間的第一存儲(chǔ)器,框1104中實(shí)施了具有第二類型存儲(chǔ)元件和第二訪問(wèn)時(shí)間的第二存儲(chǔ)器,其中第二類型存儲(chǔ)元件和第一類型存儲(chǔ)元件的類型不同???106中使得能夠?qū)Φ谝淮鎯?chǔ)器和第二存儲(chǔ)器進(jìn)行訪問(wèn)。如圖4和圖5所描述的,第一和第二類型存儲(chǔ)器可以是nand或ssd存儲(chǔ)器???108中確定了與第一存儲(chǔ)器和第二存儲(chǔ)器相關(guān)聯(lián)的訪問(wèn)時(shí)間。舉例而言,不同類型存儲(chǔ)器的訪問(wèn)時(shí)間可以由存儲(chǔ)設(shè)備的制造商提供或是在存儲(chǔ)設(shè)備的工作過(guò)程中確定???110中實(shí)現(xiàn)了與第一存儲(chǔ)器控制器和第二存儲(chǔ)器控制器相耦接的存儲(chǔ)器選擇電路。框1112中,通過(guò)使用存儲(chǔ)器選擇電路以使得能夠訪問(wèn)第一存儲(chǔ)器和第二存儲(chǔ)器中合適的存儲(chǔ)器。對(duì)于合適的存儲(chǔ)器的訪問(wèn)是基于特定的準(zhǔn)則的,例如與第一存儲(chǔ)器和第二存儲(chǔ)器相關(guān)聯(lián)的確定的存儲(chǔ)時(shí)間,以及需要存儲(chǔ)的數(shù)據(jù)的規(guī)模。因此,如下文所更詳細(xì)描述的,基于存儲(chǔ)器的訪問(wèn)時(shí)間和數(shù)據(jù)規(guī)模,可以將數(shù)據(jù)存儲(chǔ)到特定的存儲(chǔ)器(例如dram或者ssd存儲(chǔ)器)中。例如,具有多個(gè)頁(yè)大小的數(shù)據(jù)可能會(huì)被存儲(chǔ)在ssd中,而規(guī)模較小的數(shù)據(jù)會(huì)被存儲(chǔ)在dram中。進(jìn)一步而言,如上文圖10中的描述,存儲(chǔ)器轉(zhuǎn)譯器能夠決定會(huì)被存儲(chǔ)在dram中的較小數(shù)據(jù)規(guī)模的閾值。
現(xiàn)在看圖12,圖12是一個(gè)展示了dram的框圖。dram塊1200包括多個(gè)存儲(chǔ)單元1202,其中每一個(gè)都與地址譯碼器1204相耦接。如圖中所示,地址譯碼器1204接收地址線1206,并生成與多個(gè)存儲(chǔ)單元1202相耦接的地址。地址譯碼器1204接收芯片使能信號(hào),每個(gè)存儲(chǔ)單元1202接收參考電壓vref。寫(xiě)入塊1210實(shí)現(xiàn)了從存儲(chǔ)單元1202中讀出數(shù)據(jù)和向存儲(chǔ)單元1202寫(xiě)入數(shù)據(jù)。特別地,如果提供給寫(xiě)入塊1210的寫(xiě)入使能信號(hào)通過(guò)門(mén)1214使能對(duì)存儲(chǔ)單元1202的寫(xiě)入,那么通過(guò)數(shù)據(jù)線1212提供的數(shù)據(jù)會(huì)被寫(xiě)入提供給地址譯碼器的地址內(nèi)。如果寫(xiě)使能信號(hào)沒(méi)有使能對(duì)存儲(chǔ)單元1202的寫(xiě)入,那么耦接到反相器1216的數(shù)據(jù)會(huì)在數(shù)據(jù)線1218生成。如下文所更詳細(xì)描述的,存儲(chǔ)在dram塊的存儲(chǔ)單元內(nèi)的數(shù)據(jù)必須被周期性地刷新,才能保持?jǐn)?shù)據(jù)。
現(xiàn)在看圖13,圖13是一個(gè)框圖,展示了圖12中dram的存儲(chǔ)元件。特別地,第一晶體管1302有與參考比特線相耦接的漏極1304,以及與電容器1308相耦接的源極1306。參考字線在柵極1310處控制晶體管1302。第二晶體管1314有與位線相耦接的漏極1316,以及與電容器1320相耦接的源極1318。字線在柵極1322處控制晶體管1314。通過(guò)將字線拉高,并將期望存儲(chǔ)的數(shù)值施加到位線上給電容器1320充電,可以實(shí)現(xiàn)數(shù)據(jù)的寫(xiě)入操作。為了從存儲(chǔ)器中讀取數(shù)據(jù),感應(yīng)放大器1326會(huì)檢測(cè)存儲(chǔ)在位線處電容器1312的電壓和存儲(chǔ)在位線處電容器1324的電壓之間的電壓差來(lái)產(chǎn)生輸出值。在確定了位線的值之后,通過(guò)在電容器1324上存儲(chǔ)適當(dāng)?shù)碾姾蓙?lái)將該值重新寫(xiě)回位線。也就是說(shuō),電容器1324會(huì)被周期性地重新充電來(lái)維持存儲(chǔ)在單元內(nèi)的正確數(shù)據(jù)。dram存儲(chǔ)單元必須被周期性地刷新,來(lái)維持電容器內(nèi)表示存儲(chǔ)值的電荷量,不過(guò)dram存儲(chǔ)單元具有比ssd存儲(chǔ)單元更短的訪問(wèn)時(shí)間。
現(xiàn)在看圖14,圖14是一個(gè)框圖,其中展示了一個(gè)ssd存儲(chǔ)器。該ssd包括一個(gè)具有處理器1404和緩沖電路1406的ssd控制器1402,處理器1404和緩沖電路1406都與多路復(fù)用器/多路分配器相連接。多路復(fù)用器/多路分配器電路1408從多個(gè)ssd1410-1416中的一個(gè)接收數(shù)據(jù),并向之提供數(shù)據(jù)。接口電路1418實(shí)現(xiàn)了ssd與一個(gè)裝置的存儲(chǔ)接口(例如存儲(chǔ)器控制電路203的存儲(chǔ)器控制器)之間的數(shù)據(jù)傳輸。
現(xiàn)在看圖15,圖15是圖14中的ssd存儲(chǔ)元件的框圖。圖15中的存儲(chǔ)元件包括襯底1502,襯底1502具有源極1504和被位線控制的漏極1506。字線控制了一個(gè)柵極單元,該單元擁有控制柵極1508,氧化層1510將該控制柵極1508與置于氧化層1514上的浮置柵極1512隔開(kāi)。盡管文中提供了與dram和ssd存儲(chǔ)設(shè)備相關(guān)的電路的示例,但需要被理解的是,其它電路也可以被實(shí)施。
圖16是一個(gè)實(shí)現(xiàn)了實(shí)施多種存儲(chǔ)器類型的鍵值存儲(chǔ)(key-valuestore)的電路的框圖。鍵值存儲(chǔ)實(shí)現(xiàn)了通過(guò)通信或網(wǎng)絡(luò)接口來(lái)存儲(chǔ)和獲取具有關(guān)聯(lián)的鍵的數(shù)值(而不是由地址來(lái)索引)。集成電路1602可以通過(guò)鍵值存儲(chǔ)控制電路1604來(lái)實(shí)施,該電路與耦接到一個(gè)或多個(gè)網(wǎng)絡(luò)接口1608以接收數(shù)據(jù)的i/o塊1606,和被耦接到一個(gè)或多個(gè)網(wǎng)絡(luò)接口1612以輸出數(shù)據(jù)的i/o塊1610。鍵值存儲(chǔ)控制電路1604可以根據(jù)上文所述的控制電路203來(lái)實(shí)施。根據(jù)圖16中的實(shí)施例,存儲(chǔ)器接口1614實(shí)現(xiàn)了與第一組多個(gè)存儲(chǔ)設(shè)備1616(圖中示為dram)中的一個(gè)或多個(gè)存儲(chǔ)設(shè)備通信,第二存儲(chǔ)器接口1618實(shí)現(xiàn)了與第二組多個(gè)存儲(chǔ)設(shè)備1620(圖中示為ssd)中的一個(gè)或多個(gè)存儲(chǔ)設(shè)備通信。
ssd提供了許多好處,其中包括更低的成本和更低的功耗。而更重要的是,ssd使得鍵值存儲(chǔ)能夠通過(guò)更少的引腳(例如4個(gè)引腳)提供明顯更大的存儲(chǔ)密度(例如500gb的存儲(chǔ))。那是因?yàn)?,ssd使用了高速串行接口,諸如串行高級(jí)技術(shù)附件(sata)、串行連接scsi(sas)或是外圍設(shè)備互連高速總線標(biāo)準(zhǔn)(pcie),因此只需要較少的輸入/輸出(i/o)引腳。與之相反的是,一種dram小型雙列直插式內(nèi)存模塊(sodimm)接口需要大約140個(gè)i/o引腳來(lái)連接8gb的存儲(chǔ)。雖然ssd通常比dram具有更慢的訪問(wèn)速度,但是只要將數(shù)據(jù)存儲(chǔ)在合適的存儲(chǔ)設(shè)備中,例如將大塊數(shù)據(jù)存儲(chǔ)在ssd中,那么該電路的運(yùn)行是能夠得到優(yōu)化的。
舉例而言,存儲(chǔ)器接口1614和1618能夠如上文參考圖2所描述的那樣被實(shí)施。雖然示例中描述的是dram和ssd,但需要被理解的是,其它類型的存儲(chǔ)元件也可以被實(shí)施,而對(duì)特定類型存儲(chǔ)設(shè)備的選擇是基于該存儲(chǔ)設(shè)備的運(yùn)行參數(shù)來(lái)決定的。
通過(guò)基于不同存儲(chǔ)設(shè)備的訪問(wèn)特性來(lái)決定使用哪種類型的存儲(chǔ)設(shè)備用于鍵值存儲(chǔ)的各種數(shù)據(jù),可以選擇用于訪問(wèn)鍵值存儲(chǔ)的一個(gè)或多個(gè)存儲(chǔ)元件,從而實(shí)現(xiàn)對(duì)鍵值存儲(chǔ)的高效操作。根據(jù)一個(gè)實(shí)施例,存儲(chǔ)器管理電路將一個(gè)數(shù)據(jù)塊分割成第一數(shù)據(jù)部分和第二數(shù)據(jù)部分,其中第一數(shù)據(jù)部分和第二數(shù)據(jù)部分分別被提供給不同的存儲(chǔ)器類型。根據(jù)另一個(gè)實(shí)施例,基于訪問(wèn)準(zhǔn)則(例如訪問(wèn)的速度或頻率),數(shù)據(jù)(既可以是完整的數(shù)據(jù)塊或是數(shù)據(jù)塊的一部分)被發(fā)送給選中的存儲(chǔ)器類型。
ssd的一個(gè)重要方面與它的按塊(block-wise)訪問(wèn)特性和低i/o引腳需求有關(guān)。雖然這種訪問(wèn)特性可能對(duì)一些用于實(shí)施鍵值存儲(chǔ)的應(yīng)用不利,然而卻可以在其它應(yīng)用中發(fā)揮優(yōu)勢(shì)。例如,對(duì)ssd進(jìn)行比頁(yè)尺寸(例如4k字節(jié)的頁(yè)尺寸)小的訪問(wèn),效率會(huì)變得很低。因此,為了最優(yōu)化訪問(wèn)性能,除ssd以外,還提供了dram,使得數(shù)據(jù)在ssd和dram之間分配。然而,dram需要更多的i/o引腳來(lái)傳輸數(shù)據(jù)。因此,在混合實(shí)施的存儲(chǔ)器類型選擇時(shí),需要考慮很多因素。
根據(jù)一個(gè)實(shí)施例,鍵值存儲(chǔ)中的數(shù)據(jù)訪問(wèn)或存儲(chǔ)會(huì)被分成2部分。包含了多個(gè)頁(yè)的數(shù)據(jù)的部分會(huì)被存儲(chǔ)在ssd中,剩余部分會(huì)被存儲(chǔ)在dram中。這樣,ssd只會(huì)以完整的頁(yè)尺寸被訪問(wèn),從而最優(yōu)化了訪問(wèn)性能。雖然需要維護(hù)一個(gè)鏈表,并在dram和ssd之間進(jìn)行數(shù)據(jù)移轉(zhuǎn),但這種混合架構(gòu)已經(jīng)能夠提供顯著提升的性能了。
現(xiàn)在看圖17,圖17是一個(gè)框圖,展示了根據(jù)一種安排對(duì)具有可編程資源的器件進(jìn)行編程的系統(tǒng)。特別地,計(jì)算機(jī)1702被耦接以接收來(lái)自存儲(chǔ)器1706的電路設(shè)計(jì)1704,并生成存儲(chǔ)在非易失性存儲(chǔ)器1706的配置比特流。如下文所更詳細(xì)描述的,該電路設(shè)計(jì)可以是高層次設(shè)計(jì),例如通過(guò)硬件描述語(yǔ)言(hdl)定義的電路設(shè)計(jì)。同樣,該計(jì)算機(jī)可以被配置以運(yùn)行能夠生成配置比特流的軟件,配置比特流被存儲(chǔ)在非易失性存儲(chǔ)器1708中并被提供給集成電路1710,該集成電路可以是可編程集成電路,就如同下文圖18所描述的集成電路。正如下文所更詳細(xì)描述的,配置比特流中的比特被用來(lái)配置集成電路中的可編程資源。
現(xiàn)在看圖18,圖18是一個(gè)框圖,展示了一個(gè)具有可編程資源的器件,其中的可編程資源包括圖1-5所示的電路。具有可編程資源的器件可以用任何類型的集成電路器件來(lái)實(shí)施,諸如具有可編程資源的專用集成電路(asic),其它器件包括了專用可編程邏輯器件(pld)。有一種pld是復(fù)雜可編程邏輯器件(cpld)。cpld包括兩個(gè)以上通過(guò)互連開(kāi)關(guān)矩陣互相連接,且與輸入/輸出(i/o)資源相連接的“功能塊”。cpld的每個(gè)功能塊都包括與在可編程邏輯陣列(pla)或可編程陣列邏輯(pal)設(shè)備中所使用的相似的二級(jí)與/或門(mén)結(jié)構(gòu)。另一種pld是現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)。在一個(gè)典型的fpga中,配置邏輯塊(clb)的陣列被耦接到可編程輸入/輸出塊(iob)。clb和iob通過(guò)可編程路由資源的架構(gòu)互連。這些clb、iob和可編程路由資源可以通過(guò)加載配置比特流來(lái)定制,比特流通常是從片外存儲(chǔ)器被加載到fpga的配置存儲(chǔ)單元內(nèi)。對(duì)于這兩種可編程邏輯器件,器件的功能受到為了實(shí)現(xiàn)該功能而提供給器件的配置比特流中的配置數(shù)據(jù)比特控制。該配置數(shù)據(jù)比特可以被存儲(chǔ)在易失性存儲(chǔ)器(例如fpga和一些cpld中的靜態(tài)存儲(chǔ)單元),非易失性存儲(chǔ)器(例如一些cpld中的閃存),或是任何其它類型的存儲(chǔ)單元中。
圖18中的器件包括一個(gè)具有許多不同的可編程片的fpga架構(gòu)1800,可編程片包括多千兆位收發(fā)器(mgt)1801、clb1802、隨機(jī)存取存儲(chǔ)器塊(bram)1803、輸入/輸出塊(iob)1804、配置和時(shí)鐘邏輯(config/clocks)1805、數(shù)字信號(hào)處理塊(dsp)1806、專用輸入/輸出塊(i/o)1807(例如配置端口和時(shí)鐘端口)和其它可編程邏輯1808(諸如數(shù)字時(shí)鐘管理器、模數(shù)轉(zhuǎn)換器和系統(tǒng)監(jiān)視邏輯等)。舉例而言,一些fpga還包括可以被用來(lái)實(shí)施軟件應(yīng)用的專用處理器塊(proc)1810。
在一些fpga中,每個(gè)可編程片包括可編程互連元件(int)1811,int1811具有去往和來(lái)自每個(gè)相鄰片內(nèi)的對(duì)應(yīng)的互連元件的標(biāo)準(zhǔn)化連接。因此,可編程互連元件一起實(shí)施了所述fpga的可編程互連結(jié)構(gòu)。如圖18頂端包括的示例,可編程互連元件1811同樣包括去往和來(lái)自同一個(gè)塊內(nèi)的可編程邏輯元件的連接。
舉例而言,clb1802可能包括可配置邏輯元件(cle)1812,該cle1812可以被編程以實(shí)施用戶邏輯加上單個(gè)互連元件1811。除了一個(gè)或多個(gè)可編程互連元件之外,bram1803還可以包括bram邏輯元件(brl)1813。bram包括與配置邏輯塊內(nèi)的分布式ram所相互分離的專用存儲(chǔ)器。通常地,片內(nèi)包含的互連元件的數(shù)量取決于片的高度。在圖示的布局中,一個(gè)bram片的高度相當(dāng)于5個(gè)clb的高度,不過(guò)該高度也同樣可以相當(dāng)于其它個(gè)數(shù)的clb的高度。除了適當(dāng)個(gè)數(shù)的可編程互連元件之外,dsp片1806還可以包括dsp邏輯元件(dspl)1814。舉例而言,除了一個(gè)可編程互連元件1811的實(shí)例之外,iob1804還可以包括兩個(gè)輸入/輸出邏輯元件(iol)1815的實(shí)例。器件連接的位置由為了實(shí)現(xiàn)該功能而被提供給器件的配置比特流中的配置數(shù)據(jù)比特控制??删幊袒ミB響應(yīng)于配置比特流中的比特使包括互連線的連接能夠?qū)⒏鱾€(gè)信號(hào)耦接到在可編程邏輯中實(shí)施的電路或是其它電路(例如bram或處理器)。
在圖示的布局中,裸片中央附近的柱狀區(qū)域被用于配置、時(shí)鐘和其它控制邏輯。從該柱延伸的配置/時(shí)鐘分布區(qū)域1809被用于在fpga的寬度上分配時(shí)鐘信號(hào)和配置信號(hào)。一些使用了圖18所示的架構(gòu)的fpga包括打亂構(gòu)成fpga的大部分的常規(guī)柱狀結(jié)構(gòu)的附加邏輯塊。這些附加邏輯塊可以是可編程塊和/或?qū)S眠壿嫛Ee例而言,圖18中所示的處理器塊proc1810跨越了若干個(gè)clb和bram柱。
需要注意的是,圖18僅僅是用來(lái)圖解一種示例性的fpga架構(gòu)。一個(gè)柱中的邏輯塊的個(gè)數(shù)、柱的相對(duì)寬度、柱的數(shù)量和順序、柱中包含的邏輯塊的類型、邏輯塊的相對(duì)尺寸大小、以及圖18頂部包括的互連/邏輯實(shí)施例都僅僅是示例性的。舉例而言,在一個(gè)實(shí)際的fpga中,任何clb存在的地方,通常都包括不止一個(gè)相鄰的clb柱,從而有助于用戶邏輯的有效實(shí)施。雖然圖18中的布局是關(guān)于一個(gè)包含可編程資源的集成電路,需要被理解的是,下文更詳細(xì)描述電路和方法可能被實(shí)施在任何類型的asic中。
現(xiàn)在看圖19,圖19是一個(gè)框圖,展示了圖18器件中的可配置邏輯元件。特別地,圖19以簡(jiǎn)化的形式說(shuō)明了圖18中可配置邏輯塊1802內(nèi)的可配置邏輯元件。在圖19的布局中,片(slice)m1901包括4個(gè)查找表(lutm)1901a-1901d,每個(gè)查找表都被六個(gè)lut輸入端a1-a6、b1-b6、c1-c6、d1-d6所驅(qū)動(dòng),并且都提供2個(gè)lut輸出信號(hào)o5和o6。查找表1901a-1901d各自的o6輸出端分別驅(qū)動(dòng)所述片的輸出端a-d。lut的數(shù)據(jù)輸入信號(hào)由fpga互連結(jié)構(gòu)通過(guò)輸入多路復(fù)用器來(lái)提供,所述輸入多路復(fù)用器可以通過(guò)可編程互連元件1911來(lái)實(shí)施,并且lut的輸出信號(hào)也被提供給互連結(jié)構(gòu)。片m同樣還包括:驅(qū)動(dòng)輸出端amux-dmux的輸出選擇多路復(fù)用器1911a-1911d;驅(qū)動(dòng)存儲(chǔ)元件1902a-1902d的數(shù)據(jù)輸入端的多路復(fù)用器1912a-1912d;組合的多路復(fù)用器1916、1918和1919;跳躍多路復(fù)用器(bouncemultiplexer)1922-1923;由反相器1905和多路復(fù)用器1906組成的電路(共同在輸入時(shí)鐘的路徑上提供了可選的反相時(shí)鐘);以及包含了多路復(fù)用器1914a-1914d、1915a-1915d、1920-1921和異或門(mén)1913a-1913d的進(jìn)位邏輯。如圖19所示,所有這些元件都被耦接在了一起。圖19沒(méi)有顯示多路復(fù)用器的選擇輸入,而實(shí)際上這些選擇輸入受配置存儲(chǔ)單元的控制。也就是說(shuō),存儲(chǔ)在配置存儲(chǔ)單元中的配置比特流內(nèi)的配置比特與多路復(fù)用器的選擇輸入相耦接,以選擇正確的輸入連接到多路復(fù)用器。為了清楚起見(jiàn),圖19和其它在此被選取的附圖中都省略了這些已經(jīng)被熟知的配置存儲(chǔ)單元。
在圖示的布局中,每個(gè)存儲(chǔ)元件1902a-1902d都可以被編程以具有同步或異步觸發(fā)器或鎖存器的功能。通過(guò)對(duì)同步/異步選擇電路1903進(jìn)行編程,可以對(duì)片中所有4個(gè)存儲(chǔ)元件進(jìn)行同步或異步功能之間的選擇。當(dāng)對(duì)一個(gè)存儲(chǔ)單元進(jìn)行編程以使s/r(置位/復(fù)位)輸入信號(hào)提供置位功能時(shí),rev輸入端將提供復(fù)位功能。當(dāng)對(duì)一個(gè)存儲(chǔ)單元進(jìn)行編程以使s/r(置位/復(fù)位)輸入信號(hào)提供復(fù)位功能時(shí),rev輸入端將提供置位功能。存儲(chǔ)元件1902a-1902d的時(shí)鐘受時(shí)鐘信號(hào)ck驅(qū)動(dòng),舉例而言,該時(shí)鐘信號(hào)ck可以通過(guò)全局時(shí)鐘網(wǎng)絡(luò)或互連結(jié)構(gòu)來(lái)提供。這種可編程存儲(chǔ)元件在fpga設(shè)計(jì)工藝中是眾所周知的。每個(gè)存儲(chǔ)元件1902a-1902d都向互連結(jié)構(gòu)提供寄存的輸出信號(hào)aq-dq。由于每個(gè)lut1901a-1901d提供了兩個(gè)輸出信號(hào)o5和o6,lut可以被配置成2個(gè)具有五個(gè)共享輸入信號(hào)(in1-in5)的5輸入lut或是1個(gè)具有輸入信號(hào)in1-in6的6輸入lut。
在圖19的布局中,每個(gè)lutm1901a-1901d能夠在幾種模式中的任意一種模式下工作。當(dāng)在查找表模式下工作時(shí),每個(gè)lut具有由fpga互連結(jié)構(gòu)通過(guò)輸入多路復(fù)用器而提供的6個(gè)輸入信號(hào)in1-in6?;谛盘?hào)in1-in6的值,可以從配置存儲(chǔ)單元中可編程地選擇出64個(gè)數(shù)值中的一個(gè)。當(dāng)在ram模式下工作時(shí),每個(gè)lut可以作為單個(gè)64位ram或是兩個(gè)具有共享地址的32位ram。ram的寫(xiě)入數(shù)據(jù)通過(guò)輸入端di1(通過(guò)用于lut1901a-1901c的多路復(fù)用器1917a-1917c)向64位ram提供,或是通過(guò)輸入端di1和di2向兩個(gè)32位ram提供。lutram中的ram寫(xiě)入操作受到來(lái)自多路復(fù)用器1906的時(shí)鐘信號(hào)ck和來(lái)自多路復(fù)用器1907的寫(xiě)入使能信號(hào)wen控制,多路復(fù)用器1907能夠選擇性地傳遞時(shí)鐘使能信號(hào)ce或是寫(xiě)入使能信號(hào)we。當(dāng)在移位寄存器模式下工作時(shí),每個(gè)lut可以作為兩個(gè)16位移位寄存器或是由兩個(gè)16位移位寄存器級(jí)連形成的32位移位寄存器。移位輸入信號(hào)通過(guò)輸入端di1和di2中的一個(gè)或兩個(gè)提供。16位和32位移位輸出信號(hào)可以通過(guò)lut的輸出端來(lái)提供,并且32位移位輸出信號(hào)還可以更加直接地通過(guò)lut的輸出端mc31來(lái)提供。lut1901a的32位移位輸出信號(hào)mc31還可以通過(guò)輸出選擇多路復(fù)用器1911d和cle輸出端dmux被提供給一般的互連結(jié)構(gòu),用以形成移位寄存器鏈。于是,列于上文的電路和方法可以被實(shí)施在諸如圖18和圖19的設(shè)備和任意其它合適的設(shè)備中。
因此應(yīng)該意識(shí)到上文中描述了用于控制存儲(chǔ)系統(tǒng)運(yùn)行的電路和方法。對(duì)于所屬技術(shù)領(lǐng)域的專業(yè)人員,應(yīng)該意識(shí)到會(huì)有許多并入本公開(kāi)的發(fā)明的備選方案和等價(jià)方案。因此,本發(fā)明不限于上述內(nèi)容,而僅僅由所附權(quán)利要求限定。