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