相關(guān)申請的交叉引用本申請要求jingwenouyang等的于2016年1月13日提交的標題為“data-pathcontrolwithinternalclockandasynchronousfifo”的美國臨時專利申請?zhí)?2/278,227的權(quán)益,將其通過引用包括于此。本公開在各種實施例中涉及非易失性存儲器,以及更加具體地涉及控制非易失性存儲器的數(shù)據(jù)路徑。
背景技術(shù):
::非易失性存儲器元件服務(wù)或者執(zhí)行存儲操作所用的時間量可能包括實際上感應(yīng)或者改變非易失性存儲單元的物理特性以讀取或者寫入數(shù)據(jù)花費的時間、在數(shù)據(jù)總線上傳送數(shù)據(jù)花費的時間、和用于在非易失性存儲器元件內(nèi)內(nèi)部地移動地址信息和/或數(shù)據(jù)、以用于填充存儲操作的緩沖器(例如,通過預(yù)先取出讀取數(shù)據(jù))的在數(shù)據(jù)路徑中的附加等待時間、等等。隨著非易失性介質(zhì)和數(shù)據(jù)總線的速度增加,實際上讀取或者寫入和傳送花費更少的時間,且數(shù)據(jù)路徑等待時間變?yōu)楦匾?。另外,因為以更小的單?例如,以更像快速字節(jié)可尋址易失性存儲器和更不像緩慢的、扇區(qū)可尋址硬盤驅(qū)動器的方式)提供對數(shù)據(jù)的訪問,因此數(shù)據(jù)路徑等待時間的重要性進一步增加。例如,提供對大的數(shù)據(jù)塊的訪問的操作可能合理的等待時間段可能對于以小脈沖串(burst)提供對幾字節(jié)數(shù)據(jù)的訪問的操作而言太長了。技術(shù)實現(xiàn)要素:呈現(xiàn)用于控制非易失性存儲器的數(shù)據(jù)路徑的設(shè)備。在一個實施例中,設(shè)備包括一個或多個存儲器裸芯。在某個實施例中,存儲器裸芯包括存儲器核心。在另外的實施例中,存儲器核心包括非易失性存儲器單元的陣列和內(nèi)部數(shù)據(jù)管線。在一個實施例中,存儲器裸芯包括存儲與存儲器核心的存儲操作相關(guān)聯(lián)的數(shù)據(jù)的緩沖器。在某個實施例中,存儲器裸芯包括與存儲器核心通信以啟動存儲操作的內(nèi)部控制器。在另外的實施例中,內(nèi)部控制器響應(yīng)于確定內(nèi)部數(shù)據(jù)管線和緩沖器兩者都滿而延遲啟動存儲操作。在另一實施例中,設(shè)備包括用于緩沖與存儲器核心的存儲操作相關(guān)聯(lián)的數(shù)據(jù)的裝置。在某個實施例中,存儲器核心包括非易失性存儲器單元的陣列和內(nèi)部數(shù)據(jù)管線。在另外的實施例中,設(shè)備包括用于分派用于執(zhí)行存儲操作的地址的裝置。在一個實施例中,設(shè)備包括用于響應(yīng)于確定已經(jīng)分派的地址的數(shù)目和已經(jīng)完成的存儲操作的數(shù)目之間的差值滿足閾值而停止存儲操作的地址的分派的裝置。在另外的實施例中,閾值可以基于內(nèi)部數(shù)據(jù)管線中的總級數(shù)且在用于緩沖數(shù)據(jù)的裝置中。呈現(xiàn)用于控制非易失性存儲器的數(shù)據(jù)路徑的方法。在一個實施例中,方法包括以隊列存儲數(shù)據(jù)。在某個實施例中,數(shù)據(jù)與存儲器核心的存儲操作相關(guān)聯(lián)。在另外的實施例中,存儲器核心包括非易失性存儲單元的陣列和內(nèi)部數(shù)據(jù)管線。在某些實施例中,方法包括確定隊列和內(nèi)部數(shù)據(jù)管線綜合地是否包括空的級。在另外的實施例中,方法包括響應(yīng)于確定隊列和內(nèi)部數(shù)據(jù)管線綜合地(combined)包括空的級而開始存儲操作。附圖說明以下參考附圖中圖示的特定實施例包括更具體的描述。理解這些附圖僅示出本公開的某些實施例且因此不考慮為限制本公開的范圍,本公開通過使用附圖以附加的專門性和細節(jié)描述和解釋,在附圖中:圖1是圖示包括數(shù)據(jù)路徑控制組件的系統(tǒng)的一個實施例的示意性框圖;圖2是圖示與裝置控制器通信的非易失性存儲器的一個實施例的示意性框圖;圖3是圖示同步器的一個實施例的電路圖;圖4a是圖示在一個實施例中的同步器的操作的時間線;圖4b是圖示在另一實施例中的同步器的操作的時間線;圖5是圖示用于控制非易失性存儲器的數(shù)據(jù)路徑的方法的一個實施例的示意性流程圖;以及圖6是圖示用于控制非易失性存儲器的數(shù)據(jù)路徑的方法的另一實施例的示意性流程圖。具體實施方式本公開的方面具體表現(xiàn)為設(shè)備、系統(tǒng)、方法或者計算機程序產(chǎn)品。因此,本公開的方面可以以完全硬件實施例、完全軟件實施例(包括固件、常駐軟件、微代碼等)或者組合軟件和硬件方面的實施例的形式,其可以在這里全部總地稱為“電路”、“模塊”、“設(shè)備”或者“系統(tǒng)”。此外,本公開的方面可以以計算機程序產(chǎn)品的形式,該計算機程序產(chǎn)品具體表現(xiàn)為存儲計算機可讀和/或可執(zhí)行程序代碼的一個或多個非瞬時計算機可讀存儲介質(zhì)。本說明書中描述的許多功能單元已經(jīng)標記為模塊,以更具體地強調(diào)它們的實現(xiàn)獨立性。例如,模塊可以實現(xiàn)為包括定制vlsi電路或者門陣列的硬件電路,例如邏輯芯片的成品半導(dǎo)體、晶體管或者其他分立組件。模塊也可以以可編程硬件器件、例如現(xiàn)場可編程門陣列、可編程陣列邏輯、可編程邏輯器件等來實現(xiàn)。模塊也可以至少部分地以用于由各種類型的處理器執(zhí)行的軟件實現(xiàn)。可執(zhí)行代碼的標識模塊例如可以包括計算機指令的一個或多個物理或者邏輯塊,該計算機指令例如可以組織為對象、過程或功能。然而,標識模塊的可執(zhí)行不需要物理地位于一起,而是可以包括在不同位置存儲的無聯(lián)系的指令,其當邏輯地聯(lián)接在一起時包括模塊并實現(xiàn)模塊的所述用途。實際上,可執(zhí)行代碼的模塊可以包括單個指令或者許多指令,且甚至可以在幾個不同代碼段上、不同程序當中、跨越幾個存儲器裝置等分布。在模塊或者模塊的一部分以軟件實現(xiàn)時,軟件部分可以存儲在一個或多個計算機可讀和/或可執(zhí)行存儲介質(zhì)上??梢允褂靡粋€或多個計算機可讀存儲介質(zhì)的任何組合。計算機可讀存儲介質(zhì)例如可以包括,但不限于電子、磁、光、電磁、紅外、電阻性(例如,電阻性隨機存取存儲器(reram)、存儲器電阻器(memristor)存儲器、可編程金屬化單元存儲器、相變存儲器(pcm、pcme、pram、pcram、雙向統(tǒng)一存儲器、硫族化物ram或者c-ram),等等),或者半導(dǎo)體系統(tǒng)、設(shè)備或裝置,或者前述的任何適當?shù)慕M合,但是將不包括傳送信號。在本文檔的上下文中,計算機可讀和/或可執(zhí)行存儲介質(zhì)可以是任何有形的和/或非瞬時介質(zhì),其可以包括或者存儲用于由指令執(zhí)行系統(tǒng)、設(shè)備、處理器或裝置使用或者與指令執(zhí)行系統(tǒng)、設(shè)備、處理器或裝置結(jié)合地使用的程序。用于進行本公開的方面的操作的計算機程序代碼可以以一個或多個編程語言的任何組合所寫,包括面向?qū)ο缶幊陶Z言,例如python、java、smalltalk、c++、c#、目標c等,傳統(tǒng)的過程編程語言,例如“c”編程語言、腳本編程語言和/或其他類似的編程語言。程序代碼可以部分地或者全部地在一個或多個用戶的計算機和/或遠程計算機上或者經(jīng)數(shù)據(jù)網(wǎng)絡(luò)等在服務(wù)器上執(zhí)行。如在此使用的,組件包括有形的、物理的非瞬時裝置。例如,組件可以實現(xiàn)為包括定制vlsi電路、門陣列或者其他集成電路的硬件邏輯電路;例如邏輯芯片、晶體管或者其他分立器件的成品半導(dǎo)體;以及/或其他機械或者電氣裝置。組件也可以以可編程硬件器件實現(xiàn),例如現(xiàn)場可編程門陣列、可編程陣列邏輯、可編程邏輯器件等。組件可以包括一個或多個硅集成電路裝置(例如,芯片、裸芯、裸芯平面、封裝)或者其他分立的電氣裝置,通過印刷電路板(pcb)的電線等與一個或多個其他組件電氣地通信。在某些實施例中,在這里描述的每一模塊可以替代地由組件具體表現(xiàn)或者實現(xiàn)為組件。遍及本說明書參考“一個實施例”、“實施例”或者類似的語言指的是關(guān)于實施例描述的特定特征、結(jié)構(gòu)或者特性包括在本公開的至少一個實施例中。因此,遍及本說明書的字句“在一個實施例中”、“在實施例中”和類似的語言的出現(xiàn)可以,但是不必全都參考同一實施例,而是指“一個或多個而不是全部實施例”,除非明確地指定例外。術(shù)語“包括”、“包含”、“具有”和其變形指的是“包括但不限于”,除非明確地指定例外。項目的列舉列表不暗示任何或者所有項目是互相排斥和/或互相包含的,除非明確地指定例外。術(shù)語“一”、“一個”和“該”也指“一個或多個”,除非明確地指定例外。以下參考根據(jù)本公開的實施例的方法、設(shè)備、系統(tǒng)和計算機程序產(chǎn)品的示意性流程圖和/或示意性框圖描述本公開的方面。將理解示意性流程圖和/或示意性框圖的每個塊以及示意性流程圖和/或示意性框圖中的塊的組合可以由計算機程序指令實現(xiàn)。計算機程序指令可以提供給計算機或者其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生機器,以使得經(jīng)由處理器或者其他可編程數(shù)據(jù)處理設(shè)備執(zhí)行的指令創(chuàng)建用于實現(xiàn)在示意性流程圖和/或示意性框圖的一個或多個塊中指定的功能和/或動作的裝置。應(yīng)注意在某些替代實現(xiàn)中,在塊中標注的功能可以不以圖中標注的次序發(fā)生。例如,取決于涉及的功能,連續(xù)示出的兩個塊可以事實上實質(zhì)上同時地執(zhí)行,或者多個塊有時可能以相反次序執(zhí)行。可以設(shè)想在功能、邏輯或者效果上等效于圖示的圖的一個或多個塊或者其部分的其他步驟和方法。雖然在流程圖和/或框圖中可以采用各種箭頭類型和線條類型,理解它們不限制相應(yīng)的實施例的范圍。例如,箭頭可以指示在示出的實施例的列舉的步驟之間的未指定持續(xù)時間的等待或者監(jiān)控時段。在下面的詳細說明中,參考形成詳細說明的部分的附圖。前述概述僅是說明性的且不意在以任何方式限制。除上面描述的說明性的方面、實施例和特征之外,通過參考附圖及其后的詳細說明,另外的方面、實施例和特征將變得明顯。每個圖中元件的描述可以參考先前圖的元件。相同的數(shù)字可以參考圖中的相同元件,包括相同元件的替代實施例。圖1是包括用于非易失性存儲裝置120的數(shù)據(jù)路徑控制組件150的系統(tǒng)100的一個實施例的框圖。數(shù)據(jù)路徑控制組件150可以是非易失性存儲器介質(zhì)控制器126、非易失性存儲器元件123、裝置驅(qū)動器等的一部分和/或與其通信。數(shù)據(jù)路徑控制組件150可以在計算裝置110的非易失性存儲器系統(tǒng)102上操作,該計算裝置110可以包括處理器111、易失性存儲器112和通信接口113。處理器111可以包括一個或多個中央處理單元、一個或多個通用處理器、一個或多個專用處理器、一個或多個虛擬處理器(例如,計算裝置110可以是主機內(nèi)操作的虛擬機)、一個或多個處理器核心等。通信接口113可以包括一個或多個網(wǎng)絡(luò)接口,其配置為將計算裝置110和/或非易失性存儲器控制器126通信地耦合通信網(wǎng)絡(luò)115,例如因特網(wǎng)協(xié)議(ip)網(wǎng)絡(luò)、存儲區(qū)網(wǎng)絡(luò)(san)、無線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)等。非易失性存儲裝置120在各種實施例中可以被設(shè)置在相對于計算裝置110的一個或多個不同位置。在一個實施例中,非易失性存儲裝置120包括一個或多個非易失性存儲器元件123,例如被設(shè)置在一個或多個印刷電路板、存儲外殼和/或其他機械和/或電氣支撐結(jié)構(gòu)上的半導(dǎo)體芯片或者封裝或者其他集成電路器件。例如,非易失性存儲裝置120可以包括一個或多個直插式存儲器模塊(dimm)卡、一個或多個擴展卡和/或子系卡、固態(tài)驅(qū)動器(ssd)或者其他硬盤驅(qū)動裝置,和/或可以具有另一存儲器和/或存儲形式因數(shù)(factor)。非易失性存儲裝置120可以與計算裝置110的母板集成和/或安裝在計算裝置110的母板上,安裝在計算裝置110的端口和/或槽中,安裝在不同計算裝置110和/或網(wǎng)絡(luò)115上的專用存儲儀器上,經(jīng)外部總線(例如,外部硬盤驅(qū)動器)與計算裝置110通信,等等。在一個實施例中,非易失性存儲裝置120可以被設(shè)置在處理器111的存儲器總線上(例如,在與易失性存儲器112相同的存儲器總線上,在與易失性存儲器112不同的存儲器總線上,代替易失性存儲器112,等等)。在另外的實施例中,非易失性存儲裝置120可以被設(shè)置在計算裝置110的外圍總線上,例如外圍組件互連直達(pci直達(express)或者pcie)總線、串行先進技術(shù)(sata)總線、并行先進技術(shù)附加(pata)總線、小型計算機系統(tǒng)接口(scsi)總線、火線總線、光纖信道連接、通用串行總線(usb)、pcie先進交換(pcie-as)總線,等等。在另一實施例中,非易失性存儲裝置120可以被設(shè)置在數(shù)據(jù)網(wǎng)絡(luò)115上,例如以太網(wǎng)、無限帶網(wǎng)絡(luò)、經(jīng)網(wǎng)絡(luò)115的scsirdma、存儲區(qū)網(wǎng)絡(luò)(san)、局域網(wǎng)(lan)、例如因特網(wǎng)的廣域網(wǎng)(wan)、另一有線和/或無線網(wǎng)絡(luò)115等。計算裝置110可以另外包括非瞬時的計算機可讀存儲介質(zhì)114。計算機可讀存儲介質(zhì)114可以包括配置為使得計算裝置110(例如,處理器111)執(zhí)行在這里公開的一個或多個方法的步驟的可執(zhí)行指令。替代地或者另外地,數(shù)據(jù)路徑控制組件150的一個或多個部分可以具體表現(xiàn)為在非瞬時存儲介質(zhì)114上存儲的一個或多個計算機可讀指令。在一個實施例中,一個或多個非易失性存儲器元件123可以配置為發(fā)送和接收用于非易失性存儲裝置120的數(shù)據(jù)操作的數(shù)據(jù)。例如,非易失性存儲器元件123可以包括用于傳遞用于存儲操作的命令和地址信息的第一端口、總線或者路徑152、和用于傳送用于存儲操作的數(shù)據(jù)的第二端口、總線或者路徑154。非易失性存儲器元件123可以支持多個訪問模式,例如可以提供全速和/或?qū)Ψ且资源鎯ζ鹘橘|(zhì)122的一個或多個唯一特征的訪問的第一模式(例如,脈沖模式),可以提供不同訪問協(xié)議的支持(例如,舊的訪問協(xié)議,模擬不同類型的存儲器介質(zhì)122,例如nand閃存等)的第二模式(例如,傳統(tǒng)模式或者兼容模式)。例如,在一個實施例中,非易失性存儲器介質(zhì)122可以包括電阻性存儲介質(zhì),例如reram、memristor存儲器、可編程金屬化單元存儲器、相變存儲器(pcm、pcme、pram、pcram、雙向統(tǒng)一存儲器、硫族化物ram或者c-ram)等,且非易失性存儲器元件123可以提供兩個訪問模式,一個模式包括模擬nand閃存訪問協(xié)議(例如,nand閃存翻轉(zhuǎn)模式)等的傳統(tǒng)或者兼容模式,以用于配置為使用傳統(tǒng)訪問協(xié)議的客戶端116。在第一模式(例如,脈沖模式、本地模式等)中,第一端口152可以接收用于在非易失性存儲裝置120和/或元件123上的數(shù)據(jù)操作的命令和/或地址信息,同時第二端口154發(fā)送數(shù)據(jù)操作的數(shù)據(jù)(例如,對于寫入請求從客戶端116接收數(shù)據(jù),對于讀取請求發(fā)送數(shù)據(jù)到客戶端116,等等)。在第二模式(例如,傳統(tǒng)模式、兼容模式等)中,第一端口152可以接收用于數(shù)據(jù)操作的命令和地址信息并發(fā)送用于操作的數(shù)據(jù)(例如,以使得第二端口154不用于第二模式中)。在示出的實施例中,非易失性存儲器系統(tǒng)102包括數(shù)據(jù)路徑控制組件150。在一個實施例中,數(shù)據(jù)路徑控制組件150包括存儲與存儲器核心的存儲操作相關(guān)聯(lián)的數(shù)據(jù)的緩沖器,其中存儲器核心包括非易失性存儲器單元的陣列和內(nèi)部數(shù)據(jù)管線。在另外的實施例中,數(shù)據(jù)路徑控制組件150包括與存儲器核心通信以啟動存儲操作的內(nèi)部控制器。內(nèi)部控制器可以響應(yīng)于確定內(nèi)部數(shù)據(jù)管線和緩沖器兩者都滿而延遲啟動存儲操作??偟膩碚f,在各種實施例中,如果緩沖器對于存儲操作的數(shù)據(jù)過滿則延遲存儲操作的啟動可以防止與緩沖器溢出相關(guān)聯(lián)的問題,例如數(shù)據(jù)損壞。在另外的實施例中,如果緩沖器和內(nèi)部管線兩者都滿則延遲啟動存儲操作允許內(nèi)部管線用作緩沖器的擴展。使用內(nèi)部管線作為緩沖器的擴展可以通過向緩沖器數(shù)據(jù)提供附加空間而使得溢出更不可能,同時避免將與向緩沖器添加級相關(guān)聯(lián)的等待時間和裸芯上面積增大。在一個實施例中,數(shù)據(jù)路徑控制組件150可以包括一個或多個非易失性存儲裝置120的邏輯硬件,例如非易失性存儲器介質(zhì)控制器126、非易失性存儲器元件123、裝置控制器、現(xiàn)場可編程門陣列(fpga)或者其他可編程邏輯、用于fpga或者其他可編程邏輯的固件、用于在微控制器上執(zhí)行的微代碼、專用集成電路(asic),等等。在另一實施例中,數(shù)據(jù)路徑控制組件150可以包括在計算機可讀存儲介質(zhì)114上存儲以用于在處理器111上執(zhí)行的可執(zhí)行軟件代碼,例如裝置驅(qū)動器等。在另外的實施例中,數(shù)據(jù)路徑控制組件150可以包括可執(zhí)行軟件代碼和邏輯硬件兩者的組合。在一個實施例中,非易失性存儲器元件123配置為經(jīng)由總線125等從裝置驅(qū)動器或者其他可執(zhí)行應(yīng)用接收存儲請求。非易失性存儲器元件123可以另外配置為經(jīng)由總線125向/從裝置驅(qū)動器和/或存儲客戶端116傳送數(shù)據(jù)。因此,在一些實施例中,非易失性存儲器元件123可以包括和/或與一個或多個直接存儲器訪問(dma)模塊、遠程dma模塊、總線控制器、橋接器、緩沖器等通信以促進存儲請求和關(guān)聯(lián)數(shù)據(jù)的傳送。在另一實施例中,非易失性存儲器元件123可以從存儲客戶端116接收作為api呼叫的存儲請求,作為io-ctl命令,等等。根據(jù)各種實施例,非易失性存儲器控制器126可以管理一個或多個非易失性存儲裝置120和/或非易失性存儲器元件123。一個或多個非易失性存儲裝置120可以包括記錄、存儲器和/或存儲裝置,例如布置和/或分區(qū)為多個可尋址介質(zhì)存儲位置的一個或多個固態(tài)存儲裝置和/或一個或多個半導(dǎo)體存儲裝置。如在此使用的,介質(zhì)存儲位置指的是存儲器的任何物理單元(例如,非易失性存儲裝置120上的任意量的物理存儲介質(zhì))。存儲器單元可以包括,但不限于:頁、存儲器劃分、塊、扇區(qū)、物理存儲位置的匯集或者集合(例如,邏輯頁、邏輯塊),等等。在某些實施例中,裝置驅(qū)動器和/或非易失性存儲器介質(zhì)控制器126可以向存儲客戶端116呈現(xiàn)邏輯地址空間134。如在此使用的,邏輯地址空間134指的是存儲器資源的邏輯表示。邏輯地址空間134可以包括多個邏輯地址(例如,邏輯地址的范圍)。如在此使用的,邏輯地址指的是用于參考存儲器資源(例如,數(shù)據(jù))的任何標識符,包括但不限于:邏輯塊地址(lba)、圓柱/報頭/扇區(qū)(chs)地址、文件名、對象標識符、i節(jié)點(inode)、全世界唯一標識符(uuid)、全球唯一標識符(guid)、散列碼、簽名、索引項、范圍、程度,等等。非易失性存儲裝置120的裝置驅(qū)動器可以保存元數(shù)據(jù)135,例如邏輯到物理地址映射結(jié)構(gòu),以將邏輯地址空間134的邏輯地址映射到一個或多個非易失性存儲裝置120上的介質(zhì)存儲位置。裝置驅(qū)動器可以配置為向一個或多個存儲客戶端116提供存儲服務(wù)。存儲客戶端116可以包括在計算裝置110上操作的本地存儲客戶端116和/或可經(jīng)由網(wǎng)絡(luò)115和/或網(wǎng)絡(luò)接口113訪問的存儲客戶端116。存儲客戶端116可以包括,但不限于:操作系統(tǒng)、文件系統(tǒng)、數(shù)據(jù)庫應(yīng)用、服務(wù)器應(yīng)用、內(nèi)核級處理、用戶級處理、應(yīng)用等。裝置驅(qū)動器可以通信地耦合到一個或多個非易失性存儲裝置120。一個或多個非易失性存儲裝置120可以包括不同類型的非易失性存儲器裝置,包括但不限于:固態(tài)存儲裝置、半導(dǎo)體存儲裝置、san存儲資源,等等。一個或多個非易失性存儲裝置120可以包括一個或多個各個非易失性存儲器介質(zhì)控制器126和非易失性存儲器介質(zhì)122。裝置驅(qū)動器可以提供經(jīng)由傳統(tǒng)的塊i/o接口131對一個或多個非易失性存儲裝置120的訪問。另外,裝置驅(qū)動器可以通過scm接口132提供對增強功能性的訪問。元數(shù)據(jù)135可以用于管理和/或跟蹤通過塊i/o接口131、scm接口132、高速緩沖接口133或者其他有關(guān)接口中的任意一個執(zhí)行的數(shù)據(jù)操作。高速緩沖接口133可以暴露可經(jīng)由非易失性存儲裝置120的裝置驅(qū)動器訪問的高速緩沖特定特征。此外,在一些實施例中,呈現(xiàn)給存儲客戶端116的scm接口132提供對由一個或多個非易失性存儲裝置120和/或一個或多個非易失性存儲器介質(zhì)控制器126實現(xiàn)的數(shù)據(jù)變換的訪問。裝置驅(qū)動器可以通過一個或多個接口向存儲客戶端116呈現(xiàn)邏輯地址空間134。如上所述,邏輯地址空間134可以包括多個邏輯地址,每個邏輯地址對應(yīng)于一個或多個非易失性存儲裝置120上的各個介質(zhì)位置。裝置驅(qū)動器可以保存元數(shù)據(jù)135,該元數(shù)據(jù)135包括邏輯地址和介質(zhì)位置之間的任意到任意映射,等等。裝置驅(qū)動器可以進一步包括和/或與非易失性存儲器裝置接口139通信,該非易失性存儲器裝置接口139配置為經(jīng)總線125向一個或多個非易失性存儲器裝置120傳送數(shù)據(jù)、命令和/或查詢,總線125可以包括,但不限于:處理器111的存儲器總線、外圍組件互連直達(pci直達或者pcie)總線、串行先進技術(shù)附加(ata)總線、并行ata總線、小型計算機系統(tǒng)接口(scsi)、火線、光纖信道、通用串行總線(usb)、pcie先進交換(pcie-as)總線、網(wǎng)絡(luò)115、無限帶(infiniband)、scsirdma,等等。非易失性存儲器裝置接口139可以使用一個或多個輸入輸出控制(io-ctl)命令、一個或多個io-ctl命令擴展、遠程直接存儲器訪問等與一個或多個非易失性存儲器裝置120通信。通信接口113可以包括一個或多個網(wǎng)絡(luò)接口,該一個或多個網(wǎng)絡(luò)接口配置為將計算裝置110和/或非易失性存儲器控制器126通信地耦合到網(wǎng)絡(luò)115和/或一個或多個遠程、網(wǎng)絡(luò)可訪問的存儲客戶端116。存儲客戶端116可以包括在計算裝置110上操作的本地存儲客戶端116和/或可經(jīng)由網(wǎng)絡(luò)115和/或網(wǎng)絡(luò)接口113訪問的存儲客戶端116。非易失性存儲器控制器126是一個或多個非易失性存儲器裝置120的一部分和/或與一個或多個非易失性存儲器裝置120通信。雖然圖1示出單個非易失性存儲器裝置120,本公開不限于此,且可以適于包括許多非易失性存儲器裝置120。非易失性存儲器裝置120可以包括非易失性存儲器介質(zhì)122的一個或多個元件123,其可以包括但不限于:reram、memristor存儲器、可編程金屬化單元存儲器、相變存儲器(pcm、pcme、pram、pcram、雙向統(tǒng)一存儲器、硫族化物ram或者c-ram)、nand閃存存儲器、nor閃存存儲器、納米隨機存取存儲器(納米ram或者nram)、納米晶基于線路的存儲器、基于硅氧化物的子10納米工藝存儲器、石墨烯存儲器、硅氧化物-氮氧化物-硅(sonos)、可編程金屬化單元(pmc)、導(dǎo)電橋接ram(cbram)、磁阻ram(mram)、磁存儲介質(zhì)(例如,硬盤、磁帶)、光存儲介質(zhì),等等。在某些實施例中,非易失性存儲器介質(zhì)122的一個或多個元件123包括存儲類存儲器(scm)。雖然例如nand閃存之類的傳統(tǒng)技術(shù)可以是塊和/或頁可尋址的,在一個實施例中,存儲類存儲器是字節(jié)可尋址的。在另外的實施例中,存儲類存儲器可以比nand閃存更快速和/或具有更長的壽命(例如,耐久性);可以比dram具有更低成本,使用更小的功率和/或具有更高的存儲密度;或者當與其他技術(shù)相比時提供一個或多個其他益處或者改進。例如,存儲類存儲器可以包括下列的一個或多個非易失性存儲器元件123:reram、memristor存儲器、可編程金屬化單元存儲器、相變存儲器、納米ram、納米晶基于線路的存儲器、基于硅氧化物的子10納米工藝存儲器、石墨烯存儲器、sonos存儲器、pmc存儲器、cbram、mram和/或其變形。雖然非易失性存儲器介質(zhì)122在這里被稱為“存儲介質(zhì)”,在各種實施例中,非易失性存儲器介質(zhì)122可以更一般地包括能夠記錄數(shù)據(jù)的一個或多個非易失性記錄介質(zhì),其可以被稱為非易失性存儲器介質(zhì)、非易失性存儲介質(zhì)等。另外,在各種實施例中,非易失性存儲器裝置120可以包括非易失性記錄裝置、非易失性存儲器裝置、非易失性存儲裝置等。非易失性存儲器介質(zhì)122可以包括一個或多個非易失性存儲器元件123,其可以包括但不限于:芯片、封裝、平面、裸芯等。非易失性存儲器介質(zhì)控制器126可以配置為管理非易失性存儲器介質(zhì)122上的數(shù)據(jù)操作,且可以包括一個或多個處理器、可編程處理器(例如,fpga)、asic、微控制器等。在一些實施例中,非易失性存儲器介質(zhì)控制器126配置為在非易失性存儲器介質(zhì)122上存儲數(shù)據(jù)和/或從非易失性存儲器介質(zhì)122讀取數(shù)據(jù),以向/從非易失性存儲器裝置120傳送數(shù)據(jù),等等。非易失性存儲器介質(zhì)控制器126可以通過總線127的方式通信地耦合到非易失性存儲器介質(zhì)122??偩€127可以包括用于向/從非易失性存儲器元件123傳遞數(shù)據(jù)的i/o總線??偩€127可以另外包括用于向非易失性存儲器元件123傳遞尋址及其他命令和控制信息的控制總線。在一些實施例中,總線127可以并行地將非易失性存儲器元件123通信地耦合到非易失性存儲器介質(zhì)控制器126。該并行訪問可以允許作為組管理非易失性存儲器元件123,形成邏輯存儲器元件129。邏輯存儲器元件可以分區(qū)為各個邏輯存儲器單元(例如,邏輯頁)和/或邏輯存儲器劃分(例如,邏輯塊)。邏輯存儲器單元可以通過邏輯地組合每一非易失性存儲器元件的物理存儲器單元而形成。非易失性存儲器控制器126可以包括和/或與在計算裝置110上執(zhí)行的裝置驅(qū)動器通信。裝置驅(qū)動器可以經(jīng)由一個或多個接口131、132和/或133向存儲客戶端116提供存儲服務(wù)。在一些實施例中,裝置驅(qū)動器提供塊-裝置i/o接口131,通過該接口,存儲客戶端116執(zhí)行塊級i/o操作。替代地,或者另外地,裝置驅(qū)動器可以提供存儲類存儲器(scm)接口132,其可以向存儲客戶端116提供其他存儲服務(wù)。在一些實施例中,scm接口132可以包括對塊裝置接口131的擴展(例如,存儲客戶端116可以通過對塊裝置接口131的擴展或者添加來訪問scm接口132)。替代地,或者另外地,可以提供scm接口132作為分開的api、服務(wù)和/或庫。裝置驅(qū)動器可以另外配置為提供用于使用非易失性存儲器系統(tǒng)102高速緩沖數(shù)據(jù)的高速緩沖接口133。裝置驅(qū)動器可以另外包括非易失性存儲器裝置接口139,該非易失性存儲器裝置接口139配置為經(jīng)總線125向非易失性存儲器介質(zhì)控制器126傳送數(shù)據(jù)、命令和/或查詢,如上所述。圖2示出與裝置控制器126通信的非易失性存儲器裸芯202的一個實施例。裝置控制器126可以實質(zhì)上類似于上面關(guān)于圖1描述的非易失性存儲器介質(zhì)控制器126。在一個實施例中,裝置控制器126可以包括用于包括非易失性存儲器元件123的存儲裝置的硬件控制器。在另一實施例中,裝置控制器126可以包括用于包括非易失性存儲器元件123的存儲裝置的裝置驅(qū)動器,且裝置驅(qū)動器可以包括邏輯硬件和/或在一個或多個計算機可讀存儲介質(zhì)上存儲的可執(zhí)行代碼。非易失性存儲器裸芯202可以實質(zhì)上類似于上面關(guān)于圖1描述的非易失性存儲器元件123。在各種實施例中,裸芯202可以指包括至少一個核心200的集成電路。在一個實施例中,這種集成電路可以是包括多個裸芯平面和/或?qū)拥娜S集成電路元件,但是仍然可以被稱為裸芯202。雖然在圖2中示出單個非易失性存儲器裸芯202,但是裝置控制器126可以耦合到非易失性存儲器裝置120的非易失性存儲器元件123中的多個非易失性存儲器裸芯202或者與其通信。在示出的實施例中,裝置控制器126經(jīng)由用于命令和地址信息的第一端口、總線或者路徑152和用于傳送數(shù)據(jù)的第二端口、總線或者路徑154耦合到裸芯202,該第一端口、總線或者路徑152和第二端口、總線或者路徑154可以實質(zhì)上類似于上面關(guān)于圖1描述的端口、總線或者路徑152、154。在示出的實施例中,裸芯202包括核心200和內(nèi)部控制器250。在示出的實施例中,內(nèi)部控制器250包括數(shù)據(jù)路徑控制組件150、緩沖器252和內(nèi)部總線驅(qū)動器258。在各種實施例中,內(nèi)部控制器250可以是存儲器裸芯202內(nèi)部的控制器(例如,裸芯上控制器,與在存儲器裸芯202外部的裝置控制器126不同)。裝置控制器126可以選擇裸芯202(例如示出的裸芯202或者另一裸芯202)作為存儲操作的目標,且可以與所選的裸芯202的內(nèi)部控制器250通信,以發(fā)送命令和地址信息以及傳送(例如,發(fā)送或者接收)關(guān)于所選的裸芯202的存儲操作的數(shù)據(jù)。在各種實施例中,核心200包括非易失性存儲器單元的陣列210(二維或者三維)和內(nèi)部數(shù)據(jù)管線212。內(nèi)部控制器250與核心200通信以使用核心200的單元的陣列210執(zhí)行存儲操作,例如讀取、寫入、擦除等。在某些實施例中,“單元”可能指的是核心200的存儲器或者存儲設(shè)備的最小或者基本物理單元,且可能被可互換地稱為“存儲單元”、“存儲器單元”等。例如,單元可以是nand閃存存儲器的浮置柵極晶體管,電阻性存儲器的memristor等。因此,在另外的實施例中,核心200的單元的陣列210可以是二維網(wǎng)格、三維塊、組、或者其他類似的單元集合,其中數(shù)據(jù)可以物理地存儲以用于短期存儲器使用、長期存儲使用等。在某些實施例中,核心200除陣列210之外可以包括另外的組件或者外圍組件,例如字線驅(qū)動器、用于位線的傳感放大器、存儲從陣列210讀取或者寫入到陣列210數(shù)據(jù)的鎖存器,等等。在各種實施例中,內(nèi)部數(shù)據(jù)管線212可以是核心200內(nèi)部的數(shù)據(jù)管線(例如,鄰近或者接近于陣列210的行或者列)。內(nèi)部數(shù)據(jù)管線212可以包括臨時存儲寫入到陣列210或者從陣列210讀取的數(shù)據(jù)的存儲電路、元件或組件。例如,在一個實施例中,數(shù)據(jù)可以寫入到位線上的陣列210或者從該陣列210讀取,且位線可以連接到鎖存器,該鎖存器存儲將經(jīng)由位線寫入的位或者接收已經(jīng)經(jīng)由位線讀取的位。在另外的實施例中,在陣列210的每個單元存儲多個位(例如,通過將存儲電壓、存儲阻抗等的范圍劃分為四個、八個或者另一數(shù)目的狀態(tài)),位線可以耦合到用于讀取或者寫入數(shù)據(jù)的多個位到陣列210中的單元的多個鎖存器。在提供對陣列210的塊或者頁級訪問的傳統(tǒng)模式中(例如,以512b頁、4kib頁等),耦合到位線的鎖存器可以存儲一個或多個頁的數(shù)據(jù),且可以被稱為頁寄存器緩沖器。在以4字節(jié)、8字節(jié)等的脈沖串提供對陣列210的字節(jié)可尋址訪問的脈沖模式中(例如,在處理器寄存器、存儲器總線的寬度等),具有用于少量頁的空間的頁寄存器緩沖器可以包括用于臨時存儲或者排列大量存儲器脈沖串的空間。內(nèi)部數(shù)據(jù)管線212可以包括頁寄存器緩沖器的鎖存器,更小數(shù)目的鎖存器(例如,對于不提供頁或者塊可尋址的傳統(tǒng)模式的核心200)、附加的臨時存儲電路或組件,等等。在某些實施例中,內(nèi)部數(shù)據(jù)管線212(或者緩沖器252)的“級”可以指的是能夠緩沖用于一個存儲操作的數(shù)據(jù)的鎖存器、寄存器或者其他存儲電路或元件的區(qū)域、集合或者分組。例如,如果存儲操作讀取或者寫入數(shù)據(jù)頁,級能夠存儲一個頁。因此,在另外的實施例中,內(nèi)部數(shù)據(jù)管線212中的級的數(shù)目高效地是可以由內(nèi)部數(shù)據(jù)管線212緩沖的存儲操作的數(shù)目。在提供不同大小的存儲操作的一些實施例中(例如,在塊可尋址傳統(tǒng)模式和字節(jié)可尋址脈沖模式中),管線212中的級的數(shù)目可能基于存儲操作的大小而變化。例如,提供頁級操作的一個級的數(shù)據(jù)管線212可以提供用于更小的數(shù)據(jù)脈沖的多個級。在示出的實施例中,內(nèi)部數(shù)據(jù)管線212包括三級。但是,內(nèi)部數(shù)據(jù)管線212在另一實施例中可以提供更大或者更小的級數(shù)。在各種實施例中,緩沖器252存儲、緩沖或者排列與存儲器核心200的存儲操作相關(guān)聯(lián)的數(shù)據(jù)。在某些實施例中,存儲操作可以包括讀取操作、寫入操作、編程操作、擦除操作等。與存儲操作相關(guān)聯(lián)的數(shù)據(jù)可以包括用于寫入操作的要寫入到核心200的數(shù)據(jù),用于讀取操作的要從核心200讀取的數(shù)據(jù),等等。在某些實施例中,緩沖器252可以保持數(shù)據(jù)的先進先出(fifo)次序,以使得以請求讀取操作的次序存儲用于讀取操作的數(shù)據(jù),以從裝置控制器126發(fā)送數(shù)據(jù)的次序存儲用于寫入操作的數(shù)據(jù)等,且緩沖器252可以被稱為fifo或者隊列。在示出的實施例中,存儲器裸芯202包括一個緩沖器252。在另一實施例中,存儲器裸芯202可以提供多個緩沖器252,例如用于讀取操作的第一緩沖器252和用于寫入操作的第二緩沖器252。在各種實施例中,緩沖器252可以包括數(shù)據(jù)的存儲位置的集合,例如寄存器、鎖存器、一系列易失性存儲器、環(huán)形緩沖器、fifo電路等。就像核心200的內(nèi)部數(shù)據(jù)管線212那樣,緩沖器252的“級”可以指能夠緩沖一個存儲操作的數(shù)據(jù)的緩沖器252的區(qū)域、集合、分組、或者鎖存器、寄存器、存儲器位置的區(qū)域,或者其他存儲電路或元件。在在示出的實施例中,緩沖器252包括四級,但是在另一實施例中的緩沖器252可以包括更大或者更小的級數(shù)。在一個實施例中,內(nèi)部控制器250經(jīng)由命令/地址端口152和數(shù)據(jù)端口154通信,以接收命令和地址信息并傳送核心200上的存儲操作的數(shù)據(jù)。在各種實施例中,內(nèi)部控制器250可以指裸芯202上的組件、控制/操作邏輯、組件的集合等,該裸芯202接收命令和/或地址信息,傳送數(shù)據(jù)到或者從裝置控制器126傳送數(shù)據(jù),傳遞命令、地址和/或數(shù)據(jù)到一個或多個核心200等。在示出的實施例中,內(nèi)部控制器250經(jīng)由命令/地址端口152接收存儲操作的命令和地址信息。在某些實施例中,命令和地址信息可以包括命令,例如讀取命令、寫入命令、編程命令、擦除命令、狀態(tài)查詢命令和核心200支持的任何其他命令,和對應(yīng)于命令的地址,例如寫入數(shù)據(jù)的地址,讀取數(shù)據(jù)的地址等。內(nèi)部控制器250可以從裝置控制器126接收命令和地址信息。例如,裝置控制器126可以使用命令/地址端口152發(fā)送命令和地址信息。在各種實施例中,內(nèi)部控制器250可以將來自裝置控制器126的命令和地址信息解碼或者轉(zhuǎn)換為核心200使用的格式。例如,在一個實施例中,內(nèi)部控制器250的命令/地址解碼器可以提供地址接口以在由主機或者裝置控制器126使用的地址和由核心200使用的硬件地址之間轉(zhuǎn)換。在某個實施例中,內(nèi)部控制器250可以緩沖或者排列命令和地址信息,以將用于存儲操作的命令和地址信息匹配緩沖器252中的相關(guān)聯(lián)的數(shù)據(jù)。在某些實施例中,內(nèi)部控制器250可以使用數(shù)據(jù)路徑控制組件150以從裝置控制器126接收用于存儲操作的命令和地址信息,且分派地址到核心200以啟動存儲操作。在一個實施例中,內(nèi)部控制器250使用內(nèi)部總線驅(qū)動器258以傳送數(shù)據(jù)到核心200或者從核心200傳送數(shù)據(jù)(經(jīng)由緩沖器252),且使用數(shù)據(jù)端口154傳送數(shù)據(jù)到裝置控制器126或者從裝置控制器126傳送數(shù)據(jù)。在某些實施例中,內(nèi)部總線驅(qū)動器258可以串行化或者解串行化數(shù)據(jù)以在不同的內(nèi)部或者外部數(shù)據(jù)總線寬度之間轉(zhuǎn)換。在一個實施例中,內(nèi)部總線驅(qū)動器258可以包括或者與緩沖器252協(xié)作以控制內(nèi)部總線上在緩沖器252和核心200之間的數(shù)據(jù)流。在另外的實施例中,內(nèi)部總線驅(qū)動器258可以與數(shù)據(jù)路徑控制組件150協(xié)作以協(xié)調(diào)存儲操作的地址和數(shù)據(jù)。數(shù)據(jù)路徑控制組件150可以實質(zhì)上類似于上面關(guān)于圖1描述的數(shù)據(jù)路徑控制組件150。在各種實施例中,內(nèi)部控制器250使用數(shù)據(jù)路徑控制組件150以與存儲器核心200通信以啟動存儲操作。在某些實施例中,數(shù)據(jù)路徑控制組件150發(fā)送控制信息到內(nèi)部總線驅(qū)動器258,以控制存儲操作的數(shù)據(jù)流、啟動命令或操作、分派地址等。在各種實施例中,啟動操作可以指以任何方式開始、起動或者啟動操作。例如,在一個實施例中,內(nèi)部控制器250可以通過分派地址到核心200以用于執(zhí)行操作來啟動操作。對于啟動和執(zhí)行讀取操作的實例,在一個實施例中,數(shù)據(jù)路徑控制組件150可以經(jīng)由命令/地址端口152接收命令和地址信息。數(shù)據(jù)路徑控制組件150可以通過經(jīng)由內(nèi)部地址總線286將用于讀取操作的地址發(fā)送(或者通過使用內(nèi)部總線驅(qū)動器258發(fā)送)到核心200來啟動讀取操作。核心200可以通過感應(yīng)或者檢測陣列210的單元中存儲的數(shù)據(jù)值來執(zhí)行讀取操作,且可以使用內(nèi)部數(shù)據(jù)管線212輸出數(shù)據(jù)。核心200可以經(jīng)由內(nèi)部數(shù)據(jù)總線288發(fā)送所讀取的數(shù)據(jù)到緩沖器252。在圖2中,為了可視化地址和數(shù)據(jù)流的方便起見分開地示出內(nèi)部地址和數(shù)據(jù)總線286、288。但是,在某些實施例中,內(nèi)部地址總線286和內(nèi)部數(shù)據(jù)總線288可以是能夠發(fā)送地址和數(shù)據(jù)的單個內(nèi)部總線。裝置控制器126可以經(jīng)由數(shù)據(jù)端口154從緩沖器252檢索所讀取的數(shù)據(jù)。在某些實施例中,內(nèi)部總線驅(qū)動器258可以控制經(jīng)由內(nèi)部總線在核心200和緩沖器252之間的數(shù)據(jù)流、和/或在緩沖器252和裝置控制器126之間的數(shù)據(jù)流。在另外的實施例中,裝置控制器126可以經(jīng)由數(shù)據(jù)端口154提供用于控制數(shù)據(jù)流的外部時鐘信號282(例如,由裝置控制器126或者存儲器裸芯202外部的另一時鐘信號發(fā)生器生成的)。對于啟動和執(zhí)行寫入操作的實例,在一個實施例中,數(shù)據(jù)路徑控制組件150可以經(jīng)由命令/地址端口152接收命令和地址信息。裝置控制器126可以經(jīng)由數(shù)據(jù)端口154發(fā)送要寫入到緩沖器252的數(shù)據(jù)??梢愿鶕?jù)由裝置控制器126提供的外部時鐘信號282控制從裝置控制器126到緩沖器252的數(shù)據(jù)傳送。數(shù)據(jù)路徑控制組件150可以與內(nèi)部總線驅(qū)動器258協(xié)作以將地址匹配到用于寫入操作的數(shù)據(jù),且通過分別經(jīng)由內(nèi)部地址總線286和內(nèi)部數(shù)據(jù)總線288(或者配置為傳送地址和數(shù)據(jù)的單個內(nèi)部總線)發(fā)送地址和數(shù)據(jù)到核心200來啟動操作。核心200可以在核心200的內(nèi)部數(shù)據(jù)管線212上從緩沖器252接收數(shù)據(jù),且可以通過改變或者更新由陣列210的單元數(shù)據(jù)值來寫入數(shù)據(jù)到陣列210。雖然在圖2中僅示出一個外部時鐘信號282,在某些實施例中,裝置控制器126可以提供用于控制存儲器裸芯202的多于一個外部時鐘或者選通信號282。例如,在一個實施例中,讀取使能選通(用于讀取)或者數(shù)據(jù)選通(用于寫入)可以控制經(jīng)由數(shù)據(jù)端口154傳送的數(shù)據(jù)的速度。例如,如果數(shù)據(jù)端口154是八位寬,可以在讀取使能選通或者數(shù)據(jù)選通的四個時鐘周期中傳送數(shù)據(jù)的64位脈沖(例如,八個傳送,使用兩倍數(shù)據(jù)速率信令)。在另外的實施例中,裝置控制器126可以在讀取使能和數(shù)據(jù)選通的頻率的四分之一提供另外的外部時鐘信號,以使得另外的外部時鐘信號的一個時鐘周期對應(yīng)于在裝置控制器126和緩沖器252之間傳送一個存儲操作的數(shù)據(jù)所用的時間。(類似地,如果另一大小或者在不同寬度不同總線上的數(shù)據(jù)脈沖占用比讀取使能或者數(shù)據(jù)選通的四個時鐘周期更多或者更少的時間,則可以通過適當?shù)貏澐衷试S讀出或者數(shù)據(jù)選通頻率來提供每個數(shù)據(jù)脈沖循環(huán)一次的外部時鐘信號)。某些類型的非易失性存儲器裸芯202可以使用用于數(shù)據(jù)傳送的同步緩沖器252,其中核心200和緩沖器252之間的數(shù)據(jù)傳送、和緩沖器252和裝置控制器126(因為它在裸芯202的外部在這里也稱為“外部”控制器)之間的數(shù)據(jù)傳送由同一時鐘信號(例如,外部時鐘信號282)控制。例如,緩沖器252可以是具有匹配其輸出頻率的輸入頻率的同步fifo緩沖器。但是,使用同步緩沖器可以以幾種方式引入等待時間。例如,可以根據(jù)外部時鐘信號282控制存儲操作的整個內(nèi)部路徑,包括內(nèi)部控制器250啟動存儲操作,核心200執(zhí)行存儲操作和用于存儲操作的核心200和緩沖器252之間的數(shù)據(jù)傳送,但是存儲操作的整個內(nèi)部路徑能夠以更快速度或者更高時鐘頻率運行。緩沖器252的大小或者級數(shù)可以增加以補償內(nèi)部數(shù)據(jù)路徑的增加的等待時間,但是增加級數(shù)可以增加緩沖器252的片上區(qū)域。另外,因為用于存儲操作的數(shù)據(jù)以相同速度進入和離開同步緩沖器,在數(shù)據(jù)傳送到緩沖器252之外之前(例如,預(yù)先取出讀取數(shù)據(jù)),附加等待時間可以與預(yù)填充緩沖器級相關(guān)聯(lián),如果級數(shù)也增加則附加等待時間可能進一步增加。代替地,在某個實施例中,裸芯202的內(nèi)部操作,包括內(nèi)部控制器250啟動存儲操作、核心200執(zhí)行存儲操作和用于存儲操作的在核心200和緩沖器252之間的數(shù)據(jù)傳送可以根據(jù)存儲器裸芯202的內(nèi)部時鐘信號來控制??梢杂蓛?nèi)部控制器250或者裸芯202上的其它組件中包括的時鐘發(fā)生器電路提供內(nèi)部時鐘信號。如果信號、總線、通道、操作或組件與內(nèi)部時鐘信號同步或者根據(jù)內(nèi)部時鐘信號控制,則它們可以被稱為處于“內(nèi)部時鐘域”,且如果它們與外部時鐘信號282同步或者根據(jù)外部時鐘信號282控制,則它們可以相應(yīng)地被稱為處于“外部時鐘域”。在圖2中,黑色(填充的)箭頭示出內(nèi)部時鐘域中的信息流,且白色(未填充的)箭頭示出外部時鐘域中的信息流。因此,在示出的實施例中,根據(jù)內(nèi)部時鐘信號(例如,在內(nèi)部時鐘域中的)控制的操作包括內(nèi)部控制器250啟動存儲操作(例如,使用數(shù)據(jù)路徑控制組件150以經(jīng)由內(nèi)部總線286發(fā)送地址),核心200執(zhí)行存儲操作和用于存儲操作的在核心200和緩沖器252之間的數(shù)據(jù)傳送(例如,如使用內(nèi)部總線288由內(nèi)部總線驅(qū)動器258控制的)。相反地,根據(jù)外部時鐘信號282控制的(例如,在外部時鐘域中的)在示出的實施例中的操作包括經(jīng)由數(shù)據(jù)端口154在緩沖器252和外部控制器126之間的數(shù)據(jù)傳送,且外部控制器126經(jīng)由命令/地址端口152發(fā)送命令和地址信息。在某些實施例中,與使用外部時鐘信號282控制內(nèi)部操作相比,使用內(nèi)部時鐘信號控制內(nèi)部操作可以減小內(nèi)部數(shù)據(jù)路徑的等待時間。例如,對于讀取操作,發(fā)送地址到核心200,在核心200內(nèi)(例如,在內(nèi)部數(shù)據(jù)管線212內(nèi))移動數(shù)據(jù)、且傳送讀取數(shù)據(jù)到緩沖器252可以向從陣列210實際讀取數(shù)據(jù)所用的時間增加四個時鐘周期。裸芯202能夠在少至44ns執(zhí)行那些操作,但是如果操作以(例如)15ns的時鐘周期在外部時鐘域中發(fā)生,四個時鐘周期可能代替僅44ns向數(shù)據(jù)路徑增加60ns的等待時間。相對地,如果使用具有12.5ns時段的內(nèi)部時鐘,相同的四個時鐘周期可以僅增加50ns的等待時間到數(shù)據(jù)路徑。為了說明性和非限制目的公開內(nèi)部和外部時鐘周期、用于執(zhí)行操作的時鐘周期數(shù)目等。在另一實施例中,雖然仍然使用內(nèi)部時鐘信號以減小等待時間,但時鐘和裸芯速度可能不同。在一個實施例中,內(nèi)部時鐘信號獨立于外部時鐘信號282。如果時鐘信號與其他時鐘信號分開地生成、獨立于其他時鐘信號或者不參考其他時鐘信號,則時鐘信號在這里可以被稱為“獨立于”另一時鐘信號。例如,可以生成獨立的內(nèi)部時鐘信號而不參考外部時鐘信號282。作為另一實例,內(nèi)部時鐘信號的時鐘速度、時段或者頻率可以基于裸芯202能夠多快地運行內(nèi)部操作,同時來自外部控制器126的外部時鐘信號282可以基于外部控制器126能夠多快地發(fā)送和接收數(shù)據(jù)。如果裸芯202與較慢的外部控制器126一起使用,則取決于外部時鐘信號282的內(nèi)部時鐘信號(例如,通過乘以外部時鐘信號282的頻率)將減慢。相反地,在某些實施例中,生成獨立于外部時鐘信號282的內(nèi)部時鐘信號可以允許以適于裸芯202的速度配置內(nèi)部時鐘信號,而無論外部控制器126或者外部時鐘信號282的速度如何。在一些實施例中,用于在核心200和緩沖器252之間傳送存儲操作的數(shù)據(jù)的時間(例如,經(jīng)由內(nèi)部數(shù)據(jù)總線288)可以對應(yīng)于裸芯202的內(nèi)部時鐘的一個時鐘周期。類似地,在另外的實施例中,用于在緩沖器252和裝置控制器126之間傳送一個存儲操作的數(shù)據(jù)的時間可以對應(yīng)于外部時鐘信號282的一個時鐘周期(雖然,如上所述,外部控制器126可以以其他速度提供附加的外部時鐘信號282)。在某些實施例中,內(nèi)部時鐘信號的時鐘周期(例如,在核心200和緩沖器252之間傳送存儲操作的數(shù)據(jù)的時間)可以比用于在緩沖器252和外部控制器126傳送存儲操作的數(shù)據(jù)的時間更快(例如,可以以更少時間發(fā)生)。如果生成內(nèi)部時鐘信號而無論外部時鐘信號282如何,則比外部時鐘信號282更快的內(nèi)部時鐘信號仍然可以被稱為獨立于外部時鐘信號282。在一些實施例中,提供比緩沖器252和外部控制器126之間更快的核心200和緩沖器252之間的連接可以減小裸芯202的數(shù)據(jù)路徑等待時間。例如,對于一系列讀取操作,核心200可以比外部控制器126取出緩沖器252的數(shù)據(jù)更快地將數(shù)據(jù)置于緩沖器252中,且核心200可以以連續(xù)讀取操作的數(shù)據(jù)填充緩沖器252、同時避免長的、高的等待時間預(yù)取時段。在某些實施例中,緩沖器252可以是或者包括基于內(nèi)部時鐘信號和外部時鐘信號282更新的異步先入先出(fifo)緩沖器。如上所述,同步或者異步fifo緩沖器252可以以請求存儲操作的次序存儲和傳送用于存儲操作的數(shù)據(jù)。在另外的實施例中,異步fifo緩沖器252可以在時鐘域之間傳遞數(shù)據(jù),以使得數(shù)據(jù)在一個時鐘域中寫入到異步fifo緩沖器252,并在另一時鐘域中從異步fifo緩沖器252讀取。例如,在示出的實施例中,對于讀取操作,來自核心200的數(shù)據(jù)可以在內(nèi)部時鐘域中傳送到異步fifo緩沖器252,且數(shù)據(jù)可以在外部時鐘域中從異步fifo緩沖器252傳送到外部控制器126。相反地,對于在示出的實施例中的寫入操作,來自外部控制器126的數(shù)據(jù)可以在外部時鐘域中傳送到異步fifo緩沖器252,且隨后在內(nèi)部時鐘域中從異步fifo緩沖器252傳送到核心200。在某些實施例中,異步fifo緩沖器252可以包括配置為排列數(shù)據(jù)的環(huán)形緩沖器、一系列易失性存儲器、鎖存器的集合等;存儲讀指針和寫指針的值的存儲器位置的集合、寄存器等;以及用于控制數(shù)據(jù)傳送、更新指針的控制硬件等。但是,在一些實施例中,如果比從緩沖器252讀取數(shù)據(jù)更快地將數(shù)據(jù)寫入到緩沖器252,則在兩個不同時鐘域之間傳遞數(shù)據(jù)的緩沖器252可能溢出。在一個實施例中,核心200的內(nèi)部數(shù)據(jù)管線212可以當做緩沖器252的擴展,以使得可用于緩沖與存儲操作相關(guān)聯(lián)的數(shù)據(jù)的總級數(shù)是緩沖器252中的級數(shù)加上內(nèi)部數(shù)據(jù)管線212中的級數(shù)。但是,如果緩沖器252和內(nèi)部數(shù)據(jù)管線212兩者都滿,則仍然可能發(fā)生與緩沖器溢出相關(guān)聯(lián)的問題,例如數(shù)據(jù)損壞。因此,在某些實施例中,響應(yīng)于確定內(nèi)部數(shù)據(jù)管線212和緩沖器252兩者都滿,內(nèi)部控制器250可以使用數(shù)據(jù)路徑控制組件150以延遲啟動存儲操作。如在此使用的,如果內(nèi)部數(shù)據(jù)管線212或者緩沖器252的級可用于存儲用于存儲操作的數(shù)據(jù),則該級可以被稱為“空”,且如果該級包括用于還未完成的存儲操作的數(shù)據(jù),則該級可以被稱為"滿"。一旦讀取操作的數(shù)據(jù)已經(jīng)從緩沖器252傳送到裝置控制器126,則讀取操作可以被稱為“完成”。存儲讀取操作的數(shù)據(jù)的緩沖級然后是空的,且可以用于緩沖隨后的存儲操作的數(shù)據(jù)。相反地,一旦寫入操作的數(shù)據(jù)已經(jīng)從內(nèi)部數(shù)據(jù)管線212記錄到陣列210或者非易失性存儲器單元,則寫入操作可以被稱為“完成”。存儲寫入操作的數(shù)據(jù)的內(nèi)部數(shù)據(jù)管線級然后是空的,且可以用于緩沖隨后的寫入操作的數(shù)據(jù)。在一個實施例中,可以擦除空的級(例如,可以存儲零、一或者指示該級是空的另一特定數(shù)據(jù)值)。在另一實施例中,空的級仍然可以存儲完成的操作的數(shù)據(jù),但是當該級再次在使用中時,內(nèi)部數(shù)據(jù)管線212和/或緩沖器252可以安全地重寫完成的操作數(shù)據(jù)。術(shù)語“滿”在這里也可以用于參考內(nèi)部數(shù)據(jù)管線212和/或緩沖器252它們自己以指示該級是滿的。因此,如果在內(nèi)部數(shù)據(jù)管線212或者緩沖器252中沒有空的級,則內(nèi)部數(shù)據(jù)管線212和緩沖器252兩者都是滿的。在一些實施例中,緩沖器252的讀指針和寫指針可以指示緩沖器252是否是滿的。例如,寫指針可以指向要寫入數(shù)據(jù)的緩沖級,且可以響應(yīng)于數(shù)據(jù)寫入到寫入點當前指向的該級而遞增以指向下一級。(緩沖器252可以配置為環(huán)形,以使得最后一級之后的“下一”級是第一級)。類似地,讀指針可以指向要讀取數(shù)據(jù)的緩沖級,且可以響應(yīng)于讀取數(shù)據(jù)而遞增以指向下一級。因此,寫指針回繞緩沖器252且追上讀指針可以指示緩沖器252是滿的。但是,緩沖器252的讀指針和寫指針單獨地可以不指示緩沖器252和內(nèi)部數(shù)據(jù)管線212兩者是否都滿。因此,在某些實施例中,內(nèi)部控制器250和/或數(shù)據(jù)路徑控制組件150可以保持跟蹤何時啟動和完成存儲操作,以確定內(nèi)部數(shù)據(jù)管線212和緩沖器252兩者是否都滿。在示出的實施例中,數(shù)據(jù)路徑控制組件150包括計數(shù)器254和同步器256,并使用計數(shù)器254和同步器256,如以下將要描述的,以確定內(nèi)部數(shù)據(jù)管線212和緩沖器252兩者是否都滿,或者隊列或者緩沖器252和內(nèi)部數(shù)據(jù)管線212綜合地是否包括空的級。但是,在另一實施例中,可以省略計數(shù)器254和/或同步器256,且數(shù)據(jù)路徑控制組件150可以以另一方式確定內(nèi)部數(shù)據(jù)管線212和緩沖器252兩者是否都滿。因此,在某些實施例中,響應(yīng)于確定內(nèi)部數(shù)據(jù)管線212和緩沖器252兩者都滿,內(nèi)部控制器250可以使用數(shù)據(jù)路徑控制組件150以延遲啟動存儲操作。例如,內(nèi)部數(shù)據(jù)管線212和隊列或者緩沖器252兩者可能都填滿來自已經(jīng)開始而沒有完成的存儲操作的數(shù)據(jù),且響應(yīng)于確定隊列或者緩沖器252和內(nèi)部數(shù)據(jù)管線212綜合地不包括空的級,數(shù)據(jù)路徑控制組件150可以等待開始另外的存儲操作。在一個實施例中,數(shù)據(jù)路徑控制組件150可以分派用于執(zhí)行存儲操作的地址,但是可以響應(yīng)于確定已經(jīng)分派的地址的數(shù)目和已經(jīng)完成的存儲操作的數(shù)目之間的差值滿足基于內(nèi)部數(shù)據(jù)管線212和用于緩沖數(shù)據(jù)的裝置中的總級數(shù)的閾值,停止用于存儲操作的地址的分派。在一個實施例中,啟動讀取操作可以包括將用于讀取操作的地址發(fā)送到核心200,且數(shù)據(jù)路徑控制組件150可以停止發(fā)送或者分派地址以延遲啟動讀取操作,等待開始另外的讀取操作等。停止讀取地址的分派可以包括排列地址以在之后發(fā)送到核心200,向裝置控制器126發(fā)信號通知將不啟動讀取操作(以使得裝置控制器126在之后重新請求讀取操作),等等。如果隊列或者緩沖器252和內(nèi)部數(shù)據(jù)管線212兩者都填滿來自先前讀取操作的數(shù)據(jù)(例如,如果隊列或者緩沖器252和內(nèi)部數(shù)據(jù)管線212綜合地不包括空的級),則延遲讀取操作的啟動可以提供用于先前讀取操作之一的數(shù)據(jù)從緩沖器252傳送到裝置控制器126的時間,在緩沖器252中創(chuàng)建空的級。緩沖器252中的空的級然后可以填充來自內(nèi)部數(shù)據(jù)管線212的數(shù)據(jù),在內(nèi)部數(shù)據(jù)管線212中創(chuàng)建空的級,該空的級然后可用于另外的讀取操作的數(shù)據(jù)。在另外的實施例中,啟動寫入操作可以包括將用于寫入操作的地址與要寫入的數(shù)據(jù)一起從緩沖器252發(fā)送到核心200。數(shù)據(jù)路徑控制組件150可以停止發(fā)送或者分派地址和數(shù)據(jù),以延遲啟動寫入操作,等待開始另外的寫入操作等。停止寫入地址和數(shù)據(jù)的分派可以包括排列將在之后由裝置控制器126發(fā)送的數(shù)據(jù)的地址,當在緩沖器252中空的級可用時,發(fā)信號通知裝置控制器126將不啟動寫入操作(以使得裝置控制器126在之后重新請求寫入操作),等等。如果隊列或者緩沖器252和內(nèi)部數(shù)據(jù)管線212兩者都填滿來自先前寫入操作的數(shù)據(jù)(例如,如果隊列或者緩沖器252和內(nèi)部數(shù)據(jù)管線212綜合地不包括空的級),則延遲寫入操作的啟動可以提供用于先前寫入操作之一的數(shù)據(jù)從內(nèi)部數(shù)據(jù)管線212寫入到存儲器單元的陣列210的時間,在內(nèi)部數(shù)據(jù)管線212中創(chuàng)建空的級。緩沖器252可以保持滿的,直到啟動另一寫入操作為止(包括發(fā)送地址和傳送要從緩沖器252寫入的數(shù)據(jù)到內(nèi)部數(shù)據(jù)管線212中的空的級)。因此,在某些實施例中,內(nèi)部控制器250也可以與外部控制器126通信(例如,經(jīng)由準備好/忙信號)以使得外部控制器126延遲發(fā)送要寫入的另外的數(shù)據(jù)直到空的緩沖級可用為止。在另一實施例中,外部控制器126可以配置為等待發(fā)送用于后續(xù)寫入操作的數(shù)據(jù)的間隙時間,其中選擇該間隙時間以允許空的緩沖級變得可用。在各種實施例中,(如上關(guān)于讀和寫操作所述的),延遲存儲操作的啟動可以提供完成一個或多個已經(jīng)啟動的存儲操作的時間,增加內(nèi)部數(shù)據(jù)管線212和/或緩沖器252中的空的級的數(shù)目。因此,在另外的實施例中,內(nèi)部控制器250和/或數(shù)據(jù)路徑控制組件150可以啟動先前延遲的存儲操作,恢復(fù)分派用于存儲操作的地址,且/或響應(yīng)于確定內(nèi)部數(shù)據(jù)管線212和/或緩沖器252包括空的級而開始另外的存儲操作。在某個實施例中,內(nèi)部控制器250和/或數(shù)據(jù)路徑控制組件150可以基于確定已經(jīng)分派的地址的數(shù)目和已經(jīng)完成的存儲操作的數(shù)目之間的差值是否滿足閾值,而停止或者恢復(fù)分派地址。在另外的實施例中,該閾值可以基于內(nèi)部數(shù)據(jù)管線212和緩沖器252中的總級數(shù)。閾值可以基于比較分派的地址和完成的存儲操作之間的差值與閾值、而是“滿足的”或者“不滿足的”。例如,在一個實施例中,如果該差值超過(或者超過或者等于)該閾值,則可以滿足閾值,且如果該差值小于或等于(或者嚴格地小于)該閾值,則可以不滿足閾值。總的來說,在各種實施例中,已經(jīng)分派的地址的數(shù)目和已經(jīng)完成的存儲操作的數(shù)目之間的差值可以對應(yīng)于內(nèi)部數(shù)據(jù)管線212和/或緩沖器252中的滿的級的數(shù)目。因此,如果過多級是滿的,則可能滿足閾值,且內(nèi)部控制器250和/或數(shù)據(jù)路徑控制組件150相應(yīng)地可以停止分派地址。相反地,如果存在足夠的空的級以恢復(fù)分派地址,則可能不滿足閾值,且內(nèi)部控制器250和/或數(shù)據(jù)路徑控制組件150可以相應(yīng)地恢復(fù)分派地址。因此,在各種實施例中,該閾值可以基于內(nèi)部數(shù)據(jù)管線212和緩沖器252中的總級數(shù)。例如,在一個實施例中,如果已經(jīng)分派的地址的數(shù)目和已經(jīng)完成的存儲操作的數(shù)目之間的差值等于內(nèi)部數(shù)據(jù)管線212和緩沖器252中的總級數(shù)(例如,如果內(nèi)部數(shù)據(jù)管線212和緩沖器252兩者都滿),則可能滿足閾值。在另一實施例中,內(nèi)部控制器250可以保留一些數(shù)目的級用于內(nèi)部使用,且如果已經(jīng)分派的地址的數(shù)目和已經(jīng)完成的存儲操作的數(shù)目之間的差值等于內(nèi)部數(shù)據(jù)管線212和緩沖器252中的總級數(shù)減去保留用于內(nèi)部使用的級數(shù),則可能滿足閾值。基于內(nèi)部數(shù)據(jù)管線212和緩沖器252中的總級數(shù)選擇閾值的各種另外的方式鑒于本公開將是清楚的。在各種實施例中,內(nèi)部控制器250和/或數(shù)據(jù)路徑控制組件150可以使用計數(shù)器254以確定隊列或者緩沖器252和內(nèi)部數(shù)據(jù)管線212綜合地是否包括空的級,或者內(nèi)部數(shù)據(jù)管線212和緩沖器252兩者是否都滿。在各種實施例中,計數(shù)器254可以包括配置為存儲、遞增和遞減數(shù)字的寄存器、觸發(fā)器的集合、存儲器位置等。相等地,計數(shù)器254可以包括配置為存儲和遞增數(shù)字的兩個這種位置、和用于計算兩個數(shù)字之間的差值的邏輯電路,以使得遞增數(shù)字之一等于遞減計數(shù)器254。各種類型的計數(shù)器254鑒于本公開將是清楚的。在一個實施例中,計數(shù)器254可以跟蹤已經(jīng)由內(nèi)部控制器250啟動的存儲操作的數(shù)目和已經(jīng)完成的存儲操作的數(shù)目之間的差值,以確定內(nèi)部數(shù)據(jù)管線212和緩沖器252兩者是否都滿。計數(shù)器254可以確定已經(jīng)分派的地址的數(shù)目和已經(jīng)完成的存儲操作的數(shù)目之間的差值,對已經(jīng)開始的存儲操作和已經(jīng)完成的存儲操作計數(shù)(和比較兩個計數(shù)),等等。例如,對于讀取操作,計數(shù)器254可以響應(yīng)于用于啟動讀取操作的信號(例如,用于發(fā)送要讀取到核心200的數(shù)據(jù)的地址的內(nèi)部時鐘信號,導(dǎo)致填充空的級)遞增,且可以響應(yīng)于用于完成讀取操作的信號(例如,用于將讀取數(shù)據(jù)從緩沖器252傳送到裝置控制器126的外部時鐘信號282,導(dǎo)致創(chuàng)建空的級)遞減。因此,計數(shù)器254的值可以對應(yīng)于內(nèi)部數(shù)據(jù)管線212和緩沖器252中的滿的級的數(shù)目。在另外的實施例中,數(shù)據(jù)路徑控制組件150可以基于比較計數(shù)器254的值與內(nèi)部數(shù)據(jù)管線212和緩沖器252的總級數(shù),來延遲或者恢復(fù)啟動另外的存儲操作。相等地,在另一實施例中,計數(shù)器254的初始值可以是總級數(shù),且隨著級被填充,計數(shù)器254可以遞減,并與零比較以確定是否延遲啟動另外的存儲操作。在一個實施例中,計數(shù)器254可以在存儲器裸芯202的內(nèi)部時鐘域中操作。例如,在某個實施例中,當內(nèi)部時鐘信號的邊緣出現(xiàn)時可以更新計數(shù)器254(例如,遞增、遞減或者保持不變)。但是,在某個實施例中,完成讀取操作可以包括在外部時鐘域中(例如,基于外部時鐘信號282)、在緩沖器252和裝置控制器126之間傳送數(shù)據(jù)。用于在緩沖器252和外部控制器126之間傳送存儲操作的數(shù)據(jù)的外部時鐘信號282可以被稱為數(shù)據(jù)傳送信號282。例如,在外部時鐘域中的數(shù)據(jù)傳送信號282可以啟動或者控制緩沖器252和外部控制器126之間的數(shù)據(jù)傳送。因為通過數(shù)據(jù)傳送完成讀取操作,所以當完成操作時更新計數(shù)器254可以取決于外部時鐘域中的數(shù)據(jù)傳送信號282。但是,因為外部時鐘域中的信號的邊緣可以獨立于計數(shù)器254操作的內(nèi)部時鐘域,所以計數(shù)器254可能錯過數(shù)據(jù)傳送信號282的脈沖或者周期,且可能不精確地反映滿(或者空的級)的數(shù)目。因此,在某個實施例中,同步器256將用于在緩沖器252和外部控制器126之間傳送存儲操作的數(shù)據(jù)的來自外部時鐘域的數(shù)據(jù)傳送信號282轉(zhuǎn)換為用于更新計數(shù)器254的內(nèi)部時鐘域中的計數(shù)器更新信號284。例如,在示出的實施例中,同步器256從內(nèi)部總線驅(qū)動器258(其從外部控制器126接收數(shù)據(jù)傳送信號282)接收數(shù)據(jù)傳送信號282,將數(shù)據(jù)傳送信號282轉(zhuǎn)換為內(nèi)部時鐘域中的計數(shù)器更新信號284,且發(fā)送計數(shù)器更新信號284到計數(shù)器254。在各種實施例中,將數(shù)據(jù)傳送信號282同步到內(nèi)部時鐘域可以避免計數(shù)器254錯過在外部時鐘域中出現(xiàn)的信號。以下關(guān)于圖3、圖4a和圖4b進一步詳細地描述同步器256的實施例。圖3是圖示同步器300的一個實施例的電路圖。同步器300可以實質(zhì)上類似于上面關(guān)于圖2描述的同步器256,且可以將來自外部時鐘域的數(shù)據(jù)傳送信號282轉(zhuǎn)換為內(nèi)部時鐘域中的計數(shù)器更新信號284。在示出的實施例中,同步器300包括輸入電路352、同步電路354和輸出電路356。圖4a和圖4b示出時間線400、450,其圖示在圖3的同步器300的不同點的信號或者電壓。信號在高低值(例如,電壓)之間交替。在示出的實施例中,信號的“脈沖”指的是信號的值為高的時段,以上升沿或者正沿開始,且以下降沿或者負沿結(jié)束。在另一實施例中,使用不同的習(xí)慣,信號的“脈沖”可以指信號值為低的時段(以下降沿開始和以上升沿結(jié)束)。在示出的實施例中,來自多次讀操作的數(shù)據(jù)存儲在緩沖器252中,且數(shù)據(jù)傳送信號282的五個脈沖從裝置控制器126到達,以將來自五個讀操作的數(shù)據(jù)傳送到裝置控制器126。在示出的實施例中,數(shù)據(jù)傳送信號282的每個脈沖完成讀取操作,所以計數(shù)器更新信號284應(yīng)該類似地包括五個脈沖以更新計數(shù)器254。在圖4a和圖4b中,數(shù)據(jù)傳送信號282和計數(shù)器更新信號284的脈沖標記為0-4。總的來說,在各種實施例中,同步器300可以通過在由內(nèi)部時鐘控制的時間捕獲外部時鐘域信號的值,來將來自外部時鐘域的信號同步到內(nèi)部時鐘域。在示出的實施例中,同步器300包括四個d-型觸發(fā)器310、320、330、340,其每個接收時鐘輸入("clk),捕獲當時鐘輸入的上升沿出現(xiàn)時數(shù)據(jù)輸入的值(“d”),且在輸出產(chǎn)生捕獲的值(“q”)。因此,d型觸發(fā)器在由時鐘輸入接收的時鐘信號的每個上升沿高效地檢查和輸出它的數(shù)據(jù)輸入的值,且每個觸發(fā)器310、320、330、340的輸出在與它的時鐘輸入相同的時鐘域中(除了如果數(shù)據(jù)輸入的邊緣和時鐘輸入的上升沿重疊則輸出可能是亞穩(wěn)的之外)。在另一實施例中,不同類型的觸發(fā)器或者其他時鐘電路可以由同步器300使用以在特定時鐘域中輸出信號。在示出的實施例中,提供內(nèi)部時鐘信號322,其比來自外部時鐘域的數(shù)據(jù)傳送信號282更快。但是,在圖4a和圖4b中可以看到,雖然數(shù)據(jù)傳送信號282的時段比內(nèi)部時鐘信號322的時段更長,但數(shù)據(jù)傳送信號282的脈沖比內(nèi)部時鐘信號322的一個時段更短。因此,檢查內(nèi)部時鐘信號322的每個上升沿所數(shù)據(jù)傳送信號282的值可能錯過完全在內(nèi)部時鐘信號322的上升沿之間出現(xiàn)的數(shù)據(jù)傳送信號282的脈沖。因此,在一個實施例中,輸入電路352響應(yīng)于數(shù)據(jù)傳送信號282的脈沖而翻轉(zhuǎn)(toggle)外部時鐘域中的中間信號314。如在此使用的,“觸發(fā)”信號可以指改變或者切換信號一次,或者從高值到低值,或者從低值到高值。因此,雖然“脈沖”包括上升沿和下降沿,但信號在每個邊緣“翻轉(zhuǎn)”。在某些實施例中,響應(yīng)于數(shù)據(jù)傳送信號282的脈沖觸發(fā)中間信號314可以允許即使在捕獲中間信號314之前脈沖具有結(jié)束,也通過采樣、捕獲或者檢測翻轉(zhuǎn)的中間信號314的值(例如,在內(nèi)部時鐘信號322的上升沿)來檢測脈沖。在示出的實施例中,輸入電路352包括接收外部時鐘域中的數(shù)據(jù)傳送信號282作為時鐘輸入的觸發(fā)器310、和將輸入電路觸發(fā)器310的反相輸出耦合到輸入電路觸發(fā)器310的數(shù)據(jù)輸入的“非”門316。因為觸發(fā)器310的輸出反相并被耦合到數(shù)據(jù)輸入,因此每次出現(xiàn)時鐘輸入的上升沿輸出將翻轉(zhuǎn)。因此,通過耦合到時鐘輸入的數(shù)據(jù)傳送信號282,來自輸出的中間信號314將響應(yīng)于數(shù)據(jù)傳送信號282的脈沖(特別地,當脈沖的上升沿出現(xiàn)時)在外部時鐘域中翻轉(zhuǎn)。在一個實施例中,同步電路354將中間信號314轉(zhuǎn)換到內(nèi)部時鐘域。在示出的實施例中,同步電路354包括從外部時鐘域接收中間信號314的第一觸發(fā)器320、和從第一觸發(fā)器320接收輸出信號324的第二觸發(fā)器330,并輸出已轉(zhuǎn)換中間信號334(例如,轉(zhuǎn)換到內(nèi)部時鐘域的、來自輸入電路352的中間信號314)。在示出的實施例中,內(nèi)部時鐘信號322耦合到同步電路354的第一觸發(fā)器320的時鐘輸入。因此,將在內(nèi)部時鐘信號322的下一上升沿上捕獲和輸出來自輸入電路352的中間信號314的翻轉(zhuǎn)。但是,因為來自輸入電路352的中間信號314在外部時鐘域中,當中間信號314翻轉(zhuǎn)時的邊緣可以與內(nèi)部時鐘信號322的上升沿重疊,且同步電路354中的第一觸發(fā)器320的輸出信號324可以是亞穩(wěn)的(metastable)。鏈接第二觸發(fā)器330到第一觸發(fā)器320提供延遲,在延遲期間第一觸發(fā)器320的可能的亞穩(wěn)輸出324可以被解決(resolve)為穩(wěn)定的低值或者高值。在一個實施例中,第二觸發(fā)器330的時鐘輸入相對于第一觸發(fā)器320之后時鐘輸入反相,以使得代替在全周期延遲之后(例如,在內(nèi)部時鐘信號322的下一上升沿上),在半周期延遲之后(例如,在內(nèi)部時鐘信號322的下降沿上)第二觸發(fā)器330捕獲第一觸發(fā)器320的輸出信號324。在另一實施例中,沒有時鐘輸入相對于其他時鐘輸入反相,以實現(xiàn)全周期延遲。在任一情況下,因為第一觸發(fā)器320和第二觸發(fā)器330兩者由內(nèi)部時鐘信號322控制(直接或者以反相形式),它們可以被稱為在內(nèi)部時鐘域中操作。在一個實施例中,輸出電路356響應(yīng)于來自觸發(fā)的同步電路354的已轉(zhuǎn)換中間信號334,輸出內(nèi)部時鐘域中的計數(shù)器更新信號284的脈沖。總的來說,在各種實施例中,輸入電路352將脈沖轉(zhuǎn)換為翻轉(zhuǎn),同步電路354將翻轉(zhuǎn)帶到內(nèi)部時鐘域中,且輸出電路356將翻轉(zhuǎn)轉(zhuǎn)換回到脈沖。在示出的實施例中,輸出電路356包括延遲已轉(zhuǎn)換中間信號334的觸發(fā)器340、和基于已轉(zhuǎn)換中間信號334和延遲的已轉(zhuǎn)換中間信號344而產(chǎn)生用于計數(shù)器更新信號284的脈沖的“異或”門346。在示出的實施例中,輸出觸發(fā)器340的時鐘輸入耦合到內(nèi)部時鐘信號322,以使得輸出觸發(fā)器340在內(nèi)部時鐘信號322的上升沿上輸出信號344,在半周期之后同步電路354的第二觸發(fā)器330輸出已轉(zhuǎn)換中間信號334(因為它的時鐘輸入反相,在內(nèi)部時鐘信號322的下降沿上)。在另一實施例中,在同步電路354的第二觸發(fā)器330的時鐘輸入不反相時,從同步電路354的第一觸發(fā)器320到第二觸發(fā)器330到輸出觸發(fā)器340的延遲可以是內(nèi)部時鐘信號322的兩個全周期而不是兩個半周期。當已轉(zhuǎn)換中間信號334和延遲的已轉(zhuǎn)換中間信號344相同時,“異或”門346的輸出為低。但是,當已轉(zhuǎn)換中間信號334翻轉(zhuǎn)時,“異或”門346的輸出達到高,直到半周期之后,延遲的已轉(zhuǎn)換中間信號344也翻轉(zhuǎn)為止。因此,已轉(zhuǎn)換中間信號334的每個翻轉(zhuǎn)開始計數(shù)器更新信號284的半周期脈沖。圖4a和圖4b示出時間線400、450,其分別圖示上面關(guān)于圖3的同步器300討論的信號。每個時間線400、450示出(在外部時鐘域中的)數(shù)據(jù)傳送信號282、由輸入電路352產(chǎn)生的翻轉(zhuǎn)的中間信號314、內(nèi)部時鐘信號322、來自同步電路354中的第一觸發(fā)器320的輸出信號324、來自同步電路354中的第二觸發(fā)器330的已轉(zhuǎn)換中間信號334、來自輸出觸發(fā)器340的延遲的已轉(zhuǎn)換中間信號344和計數(shù)器更新信號284。時間線400、450兩者都示出外部時鐘域中的數(shù)據(jù)傳送信號282的五個脈沖,標記為0-4。對于對應(yīng)于脈沖0的事件標記時間t0、t1、t2和t3。類似地在時間線400、450兩者中標記相應(yīng)的事件,雖然它們可能在不同的時間出現(xiàn)。輸入電路352響應(yīng)于數(shù)據(jù)傳送信號282的脈沖而翻轉(zhuǎn)外部時鐘域中的中間信號314。在示出的實施例中,中間信號314在數(shù)據(jù)傳送信號282中的脈沖0-4的每個上升沿上翻轉(zhuǎn)。例如,中間信號314在脈沖0的上升沿(在時間t0)翻轉(zhuǎn)到高值,且在脈沖1的上升沿翻轉(zhuǎn)回到低值。在示出的實施例中,中間信號314仍然在外部時鐘域中,因為它不由內(nèi)部時鐘信號322控制。對應(yīng)于數(shù)據(jù)傳送信號282的脈沖到翻轉(zhuǎn)的中間信號314的改變由同步電路354的第一觸發(fā)器320在產(chǎn)生(可能亞穩(wěn)的)輸出信號324的內(nèi)部時鐘信號322的下一上升沿捕獲,且到輸出信號324的改變由同步電路354的第二觸發(fā)器330在產(chǎn)生已轉(zhuǎn)換中間信號334的內(nèi)部時鐘信號322的下一下降沿捕獲。例如,由脈沖0的上升沿在時間t0產(chǎn)生的中間信號314中的翻轉(zhuǎn)由同步電路354的第一觸發(fā)器320在時間t1(內(nèi)部時鐘信號322的下一上升沿)捕獲,且來自第一觸發(fā)器320的輸出信號324中的相應(yīng)改變由同步電路354的第二觸發(fā)器330在時間t2(內(nèi)部時鐘信號322的下一下降沿)捕獲。因此,在示出的實施例中,來自同步電路354的第二觸發(fā)器330的已轉(zhuǎn)換中間信號是類似于來自輸入電路352的翻轉(zhuǎn)的中間信號314的翻轉(zhuǎn)的信號,但是在內(nèi)部時鐘域中。在示出的實施例中,輸出觸發(fā)器340在內(nèi)部時鐘信號322的下一上升沿上捕獲已轉(zhuǎn)換中間信號334。例如,響應(yīng)于數(shù)據(jù)傳送信號282中的脈沖0的上升沿產(chǎn)生的在時間t2的已轉(zhuǎn)換中間信號334中的翻轉(zhuǎn)在內(nèi)部時鐘信號322的半周期之后的時間t3由輸出觸發(fā)器340捕獲。因此,在示出的實施例中,延遲的已轉(zhuǎn)換中間信號344是延遲內(nèi)部時鐘信號322的半周期的已轉(zhuǎn)換中間信號334。最后,“異或”門346組合已轉(zhuǎn)換中間信號334和延遲的已轉(zhuǎn)換中間信號344以產(chǎn)生用于計數(shù)器更新信號284的脈沖。當已轉(zhuǎn)換中間信號334和延遲的已轉(zhuǎn)換中間信號344相同時,由“異或”門346輸出的計數(shù)器更新信號284為低。但是,在已轉(zhuǎn)換中間信號334中的改變由輸出觸發(fā)器340捕獲以產(chǎn)生延遲的已轉(zhuǎn)換中間信號344之前的半周期中,由“異或”門346輸出的計數(shù)器更新信號284為高。因此,已轉(zhuǎn)換中間信號334的每個翻轉(zhuǎn)產(chǎn)生計數(shù)器更新信號284中的脈沖。在時間線400、450中可以看到,外部時鐘域中的數(shù)據(jù)傳送信號282的脈沖0-4因此轉(zhuǎn)換為內(nèi)部時鐘域中的計數(shù)器更新信號284的脈沖0-4。例如,在時間t0開始的數(shù)據(jù)傳送信號282的脈沖0被轉(zhuǎn)換為在時間t2開始并在時間t3結(jié)束的計數(shù)器更新信號284的脈沖0。在圖4a中示出的時間線400中,在時間t0的數(shù)據(jù)傳送信號282的脈沖0的上升沿略微在內(nèi)部時鐘信號322的上升沿之后出現(xiàn)。中間信號314中的相應(yīng)的翻轉(zhuǎn)不由同步電路354中的第一觸發(fā)器320捕獲直到內(nèi)部時鐘信號322的下一上升沿為止,該內(nèi)部時鐘信號322的下一上升沿在時間t1,內(nèi)部時鐘信號322的幾乎全周期之后。計數(shù)器更新信號284的相應(yīng)的脈沖0在時間t3,內(nèi)部時鐘信號322的另一周期之后結(jié)束。因此,在時間線400中,同步器300可以更新具有近似兩個內(nèi)部時鐘周期的延遲的計數(shù)器254。在圖4b中示出的時間線450中,在時間t0的數(shù)據(jù)傳送信號282的脈沖0的上升沿略微在內(nèi)部時鐘信號322的上升沿之前出現(xiàn),所以中間信號314中的相應(yīng)的翻轉(zhuǎn)幾乎立即在時間t1由同步電路354中的第一觸發(fā)器320捕獲。(因此,時間t0和t1在時間線450中比在時間線400中接近得多)。計數(shù)器更新信號284的相應(yīng)的脈沖0在時間t3,內(nèi)部時鐘信號322的一個周期之后結(jié)束。因此,在時間線450中,同步器300可以更新具有近似一個內(nèi)部時鐘周期的延遲的計數(shù)器254。在某些實施例中,可以選擇緩沖器252的大小以補償由同步器300引入的一個到兩個內(nèi)部時鐘周期的延遲。圖5是圖示用于控制非易失性存儲器的數(shù)據(jù)路徑的方法500的一個實施例的示意性流程圖。方法500開始,且內(nèi)部控制器250在隊列252中存儲502用于存儲操作的數(shù)據(jù)。存儲操作用于包括非易失性存儲單元的陣列210和內(nèi)部數(shù)據(jù)管線212的存儲器核心200。數(shù)據(jù)路徑控制組件150確定504隊列252和內(nèi)部數(shù)據(jù)管線212是否綜合地包括空的級。如果隊列252和內(nèi)部數(shù)據(jù)管線212綜合地不包括空的級,則數(shù)據(jù)路徑控制組件150等待508以開始存儲操作,且方法500繼續(xù),數(shù)據(jù)路徑控制組件150重新確定504隊列252或者內(nèi)部數(shù)據(jù)管線212是否包括空的級。如果隊列252和內(nèi)部數(shù)據(jù)管線212綜合地包括空的級,則數(shù)據(jù)路徑控制組件150開始506存儲操作,且方法500結(jié)束。圖6是圖示用于控制非易失性存儲器的數(shù)據(jù)路徑的方法600的另一實施例的示意性流程圖。方法600開始,且內(nèi)部控制器250在隊列252中存儲602用于存儲操作的數(shù)據(jù)。存儲操作用于包括非易失性存儲單元的陣列210和內(nèi)部數(shù)據(jù)管線212的存儲器核心200。同步器256同步604來自外部時鐘域的數(shù)據(jù)傳送信號282,以用于將在隊列252和外部控制器126之間的存儲操作的數(shù)據(jù)傳送到內(nèi)部時鐘域以用于更新計數(shù)器254。計數(shù)器254對已經(jīng)開始的存儲操作和已經(jīng)完成的存儲操作計數(shù)606?;陂_始和完成的存儲操作的計數(shù),數(shù)據(jù)路徑控制組件150確定608隊列252和內(nèi)部數(shù)據(jù)管線212綜合地是否包括空的級。如果隊列252和內(nèi)部數(shù)據(jù)管線212綜合地不包括空的級,則方法600繼續(xù)數(shù)據(jù)傳送信號282的進一步同步604,并對開始和完成的存儲操作計數(shù)606。如果隊列252和內(nèi)部數(shù)據(jù)管線212綜合地包括空的級,則數(shù)據(jù)路徑控制組件150開始610存儲操作。內(nèi)部控制器250繼續(xù)存儲602數(shù)據(jù)以用于隊列252中的進一步存儲操作,且方法600繼續(xù)。在各種實施例中,用于緩沖與存儲器核心200的存儲操作相關(guān)聯(lián)的數(shù)據(jù)的裝置可以包括緩沖器252、鎖存器、寄存器、一系列易失性存儲器、環(huán)形緩沖器、fifo電路、異步fifo電路、能夠緩沖數(shù)據(jù)的其他存儲電路或者元件、內(nèi)部控制器250、內(nèi)部總線驅(qū)動器258、其他邏輯硬件和/或計算機可讀存儲介質(zhì)上存儲的其他可執(zhí)行代碼。其他實施例可以包括用于緩沖與存儲操作相關(guān)聯(lián)的數(shù)據(jù)的類似的或等效的裝置。在各種實施例中,用于分派執(zhí)行存儲操作的地址的裝置可以包括內(nèi)部控制器250、數(shù)據(jù)路徑控制組件150、計數(shù)器254、同步器256、內(nèi)部總線驅(qū)動器258、內(nèi)部總線286、288、其他邏輯硬件,和/或計算機可讀存儲介質(zhì)上存儲的其他可執(zhí)行代碼。其他實施例可以包括用于分派地址的類似的或等效的裝置。在各種實施例中,用于停止地址的分派的裝置可以包括內(nèi)部控制器250、數(shù)據(jù)路徑控制組件150、計數(shù)器254、同步器256、內(nèi)部總線驅(qū)動器258、其他邏輯硬件和/或在計算機可讀存儲介質(zhì)上存儲的其他可執(zhí)行代碼。其他實施例可以包括用于停止地址的分派的類似的或等效的裝置。在各種實施例中,用于恢復(fù)地址的分派的裝置可以包括內(nèi)部控制器250、數(shù)據(jù)路徑控制組件150、計數(shù)器254、同步器256、內(nèi)部總線驅(qū)動器258、內(nèi)部總線286、288其他邏輯硬件和/或在計算機可讀存儲介質(zhì)上存儲的其他可執(zhí)行代碼。其他實施例可以包括用于恢復(fù)地址的分派的類似的或等效的裝置。在各種實施例中,用于確定已經(jīng)分派的地址的數(shù)目與已經(jīng)完成的存儲操作的數(shù)目之間的差值的裝置可以包括內(nèi)部控制器250、數(shù)據(jù)路徑控制組件150、計數(shù)器254、同步器256、緩沖器252、內(nèi)部數(shù)據(jù)管線212、其他邏輯硬件和/或計算機可讀存儲介質(zhì)上存儲的其他可執(zhí)行代碼。其他實施例可以包括用于確定差值的類似的或等效的裝置。在各種實施例中,用于將來自外部時鐘域的數(shù)據(jù)傳送信號282轉(zhuǎn)換為內(nèi)部時鐘域中的計數(shù)器更新信號284的裝置可以包括內(nèi)部控制器250、數(shù)據(jù)路徑控制組件150、同步器256、輸入電路352、同步電路354、輸出電路356、其他邏輯硬件和/或計算機可讀存儲介質(zhì)上存儲的其他可執(zhí)行代碼。其他實施例可以包括用于將來自外部時鐘域的信號轉(zhuǎn)換為內(nèi)部時鐘域中的信號的類似的或等效的裝置。本公開可以具體表現(xiàn)為其他特定形式而不脫離它的精神或者本質(zhì)特征。描述的實施例在各個方面僅考慮為說明性的而非限制性的。因此,本公開的范圍由所附權(quán)利要求而不是由前述描述指示。在權(quán)利要求的含義和等效范圍內(nèi)的所有改變包含在權(quán)利要求的范圍內(nèi)。當前第1頁12當前第1頁12