背景技術:
本申請涉及對如半導體閃存等可重新編程非易失性存儲器的操作。
能夠對電荷進行非易失性存儲的固態存儲器(特別是采取被封裝為小形狀因數卡的eeprom和閃速eeprom的形式)已經變成各種移動和手持式設備(尤其是信息電器和消費者電子產品)中的精選存儲設備。不像同樣作為固態存儲器的ram(隨機存取存儲器),閃存是非易失性的并且甚至在關掉電源之后保留其存儲數據。而且,不像rom(只讀存儲器),類似于磁盤存儲設備,閃存是可重寫的。
閃速eeprom類似于eeprom(電可擦除可編程只讀存儲器),因為它是可以被擦除的并且使新數據寫入或“編程”到其存儲器單元中的非易失性存儲器。兩者都利用場效應晶體管結構中被定位在半導體襯底中在源極區域與漏極區域之間的溝道區域之上的浮置(未連接的)導電柵極。然后,通過浮柵提供控制柵極。晶體管的閾值電壓特性由保留在浮柵上的電荷的量控制。也就是說,對于浮柵上的給定電荷水平,在“接通”晶體管以便允許其源極區域與漏極區域之間導電之前,存在將向控制柵極施加的相應電壓(閾值)。如閃速eeprom等閃存允許同時擦除整個存儲器單元塊。
浮柵可以保持一些電荷,并且因此可以被編程到閾值電壓窗口內的任何閾值電壓水平。閾值電壓窗口的大小由設備的最小和最大閾值水平界定,所述最小和最大閾值水平進而與可以編程到浮柵上的所述一些電荷相對應。閾值窗口通常取決于存儲器設備的特性、操作條件和歷史。原則上,窗口內的每個不同的可分解閾值電壓水平范圍可以用于指定單元的確切存儲器狀態。
非易失性存儲器設備還由具有用于存儲電荷的介電層的存儲器單元制成。使用介電層而不是此前描述的導電浮柵元件。ono介電層延伸跨過源極擴散與漏極擴散之間的溝道。一個數據位的電荷被定位在與漏極相鄰的介電層中,而另一個數據位的電荷被定位在與源極相鄰的介電層中。通過分別讀取電介質內的空間分離電荷儲存區域的二進制狀態來實施多狀態數據存儲。
許多非易失性存儲器沿著襯底(例如,硅襯底)表面形成為二維(2d)或平面存儲器。其他非易失性存儲器是三維(3d)存儲器,所述3d存儲器單片地形成于具有被布置在襯底上方的有源區域的一個或多個物理存儲器單元級中。
技術實現要素:
在一些非易失性存儲器系統中,兩個或更多個存儲器裸片可以通過共享總線與存儲器控制器通信。如果沒有有效地管理,則這種總線可能變成瓶頸。具體地,當通過輪詢裸片以便標識裸片何時就緒來占用存儲器總線時,這使得存儲器總線對其他目的而言不可用,即使當其他裸片可能就緒并且可以使用時。存儲器總線管理方案的示例將所接收到的命令解析成子命令,所述子命令然后各自占用存儲器總線連續的時間段(即它們不中斷地使用存儲器總線)。僅當子操作的相應裸片就緒時,所述子操作被釋放用于執行。因此,當子操作被釋放時,其可以被立刻執行而不輪詢相應裸片。輪詢僅發生在不再存在所釋放的子操作用于執行時。因此,只要存在具有被標識為就緒的相應裸片的子操作,就在不延遲輪詢的情況下繼續執行子操作。僅當不再存在具有被標識為就緒的相應裸片的子操作時輪詢發生,從而使得由于輪詢而不失去執行的機會。
一種管理存儲器總線的方法的示例,所述方法包括:接收多個存儲器訪問命令,所述多個存儲器訪問命令指向連接至所述存儲器總線的多個非易失性存儲器裸片;標識執行所述多個存儲器訪問命令所需要的子操作,執行單獨存儲器訪問命令需要執行兩個或更多個子操作;維持執行所述多個存儲器訪問命令所需要的子操作的第一列表,所述第一列表包含指向未被標識為可用的單獨裸片的未釋放的未執行子操作以及指向被標識為可用的并且門控條件所適用的單獨裸片的未執行子操作;維持執行所述多個存儲器訪問命令所需要的子操作的第二列表,所述第二列表僅包含指向被標識為可用的單獨裸片的釋放的未執行子操作;通過僅執行來自所述第二列表的子操作經由所述存儲器總線訪問所述多個存儲器裸片,直到所述第二列表為空;隨后,當所述第二列表為空時,輪詢所述多個非易失性存儲器裸片以便標識所述多個非易失性存儲器裸片中可用的單獨非易失性存儲器裸片;響應于標識所述多個非易失性存儲器裸片中的一個或多個可用非易失性存儲器裸片,將一個或多個子操作從所述第一列表移至所述第二列表;以及隨后,恢復通過僅執行來自所述第二列表的子操作經由所述存儲器總線訪問所述多個非易失性存儲器裸片,直到所述第二列表為空。
可以響應于所述第二列表變為空而發生輪詢所述多個非易失性存儲器裸片,并且當所述第二列表中存在至少一個子操作時可以不發生輪詢。操作可以在輪詢所述多個非易失性存儲器裸片與經由所述存儲器總線訪問所述多個非易失性存儲器裸片之間交替,直到執行所述多個存儲器訪問命令所需要的所有子操作被執行為止。一旦向所述第二列表添加了新條目,就可以發生恢復訪問所述多個非易失性存儲器裸片。執行單獨子操作可以是在不中斷連續時間段的情況下占用所述存儲器總線的原子執行。所述多個存儲器訪問命令可以包括用于將數據從第一物理位置復制到第二物理位置的重定位命令,并且所述一個或多個子操作可以包括來自所述第一位置的一個或多個讀取以及向所述第二位置的一個或多個寫入,并且將所述一個或多個寫入從所述第一列表移至所述第二列表可以僅在完成所述一個或多個讀取之后發生。可以根據與由主機指定執行所述多個存儲器訪問命令的順序相對應的執行子操作的順序來將未執行子操作從所述第一列表移至所述第二列表。可以根據由存儲器控制器所指定的順序將與存儲器管理數據有關的未執行的寫入子操作從所述第一列表移至所述第二列表。當響應于標識所述多個非易失性存儲器裸片中的一個或多個可用非易失性存儲器裸片而將所述一個或多個子操作從所述第一列表移至所述第二列表時,可以延遲將所述一個或多個子操作中的子操作從所述第一列表移至所述第二列表,以便由此維持功耗水平低于功耗限制。當響應于標識所述多個非易失性存儲器裸片中的一個或多個可用非易失性存儲器裸片而將所述一個或多個子操作從所述第一列表移至所述第二列表時,可以根據優先級方案對子操作進行優先級排序。所述優先級方案可以通過讀取傳輸子操作對讀取讀出子操作進行優先級排序。
一種非易失性存儲器系統的示例,所述系統包括:多個非易失性存儲器裸片;存儲器總線,所述存儲器總線連接至所述多個非易失性存儲器裸片;接口,所述接口被配置成用于接收指向所述多個非易失性存儲器裸片的多個存儲器訪問命令;命令解析單元,所述命令解析單元被配置成用于標識執行所述多個存儲器訪問命令所需要的子操作,執行單獨存儲器訪問命令需要執行兩個或更多個子操作;執行所述多個存儲器訪問命令所需要的子操作的第一列表,所述第一列表包含未釋放的未執行子操作;執行所述多個存儲器訪問命令所需要的子操作的第二列表,所述第二列表僅包含指向被標識為可用的單獨非易失性存儲器裸片的釋放的未執行子操作,通過僅執行來自所述第二列表的子操作經由所述存儲器總線訪問所述多個非易失性存儲器裸片,直到所述第二列表為空;裸片輪詢單元,所述裸片輪詢單元被配置成用于輪詢所述多個非易失性存儲器裸片以便標識所述多個非易失性存儲器裸片中可用的單獨非易失性存儲器裸片;以及列表更新單元,所述列表更新單元被配置成用于響應于將所述多個非易失性存儲器裸片中的單獨非易失性存儲器裸片標識為可用而通過針對所述單獨非易失性存儲器裸片釋放子操作來更新所述第二列表。
所述裸片輪詢單元可以被配置成用于每當所述第二列表中存在至少一個未執行子操作時保持不活動。所述命令解析單元可以被配置成用于標識原子的子操作,從而使得單獨子操作占用所述存儲器總線而不中斷連續時段。所述列表更新單元可以根據由主機或存儲器控制器所指定的順序將指向通過所述輪詢單元被標識為可用的單獨非易失性存儲器裸片的單獨未執行子操作從所述第一列表移至所述第二列表。所述列表更新單元可以被配置成用于將指向通過所述輪詢單元被標識為可用的單獨非易失性存儲器裸片的單獨未執行子操作從所述第一列表移至所述第二列表,從而使得繁忙存儲器裸片的數量不超過少于所述多個存儲器裸片中的所有存儲器裸片的最大數量。所述多個非易失性存儲器裸片中的單獨非易失性存儲器裸片可以是三維非易失性存儲器裸片,所述三維非易失性存儲器裸片單片地形成在具有被布置在硅基板上方的有源區域的一個或多個物理級存儲器單元陣列中。非易失性存儲器系統可以包括:附加存儲器總線,所述附加存儲器總線連接至附加非易失性存儲器裸片;并且所述第一列表可以包含指向所述多個非易失性存儲器裸片以及所述附加非易失性存儲器裸片中的單獨非易失性存儲器裸片的未執行子操作,并且所述第二列表僅包含指向所述多個非易失性存儲器裸片中的單獨非易失性存儲器裸片的未執行子操作。
一種管理存儲器總線的方法的示例,所述方法包括:接收多個存儲器訪問命令,所述多個存儲器訪問命令指向連接至所述存儲器總線的多個非易失性存儲器裸片;標識執行所述多個存儲器訪問命令所需要的子操作,執行單獨存儲器訪問命令需要執行兩個或更多個子操作,每個子操作是在不中斷連續時間段的情況下占用所述存儲器總線的執行;維持執行所述多個存儲器訪問命令所需要的未釋放子操作的第一列表,所述第一列表包含指向未被標識為可用的單獨裸片的未執行子操作以及指向已經具有釋放的子操作的裸片的未執行子操作;維持執行所述多個存儲器訪問命令所需要的釋放子操作的第二列表,所述第二列表僅包含指向被標識為可用的單獨裸片的未執行子操作,每個被標識為可用的非易失性存儲器裸片具有最多一個未執行子操作;通過僅執行來自所述第二列表的釋放的子操作經由所述存儲器總線訪問所述多個存儲器裸片,直到所述第二列表為空;隨后,響應于確定所述第二列表為空,輪詢所述多個非易失性存儲器裸片以便標識所述多個非易失性存儲器裸片中可用的單獨非易失性存儲器裸片;響應于標識所述多個非易失性存儲器裸片中的一個或多個可用非易失性存儲器裸片,將一個或多個子操作從所述第一列表釋放到所述第二列表;隨后,恢復通過僅執行來自所述第二列表的釋放的子操作經由所述存儲器總線訪問所述多個非易失性存儲器裸片,直到所述第二列表為空,從所述恢復開始沒有發生輪詢所述多個非易失性存儲器裸片直到所述第二列表為空;以及隨后,在輪詢所述多個非易失性存儲器裸片與訪問所述多個存儲器裸片之間交替,直到執行所述多個存儲器訪問命令所需要的所有子操作被執行原子。
可以根據以下各項中的至少一項執行將所述一個或多個子操作從所述第一列表釋放到所述第二列表:由主機所指定的順序、由存儲器控制器指定的順序、或者電力需求。所述多個非易失性存儲器裸片中的單獨非易失性存儲器裸片可以是三維非易失性存儲器裸片,所述三維非易失性存儲器裸片單片地形成在具有被布置在硅基板上方的有源區域的一個或多個物理級存儲器單元陣列中。標識子操作可以包括:針對每個接收到的讀取命令標識讀取讀出子操作和讀取傳輸子操作;針對每個接收到的寫入命令標識寫入傳輸子操作和寫入狀態檢查子操作;以及針對每個接收到的擦除命令標識擦除啟動子操作和擦除狀態檢查子操作。所述方法還可以包括:接收多個非訪問命令,執行單獨非訪問命令需要執行一個或多個子操作。
各種方面、優點、特征和實施例包括在其示例性示例的以下描述中,所述描述應當結合附圖進行。
附圖說明
圖1示意性地展示了存儲器系統的主要硬件部件。
圖2示意性地展示了非易失性存儲器單元。
圖3展示了針對浮柵可以存儲的四種不同電荷q1至q4的源極-漏極電流id與控制柵極電壓vcg之間的關系。
圖4a示意性地展示了組織成nand串的存儲器單元串。
圖4b展示了存儲器單元的nand陣列210的示例,所述nand陣列由nand串50(如圖4a中所示出的nand串)構成。
圖5展示了以nand配置來組織的被并行讀出或編程的存儲器單元頁。
圖6a至圖6c展示了對存儲器單元群進行編程的示例。
圖7示出了3dnand串的物理結構的示例。
圖8示出了u形3dnand串的物理結構的示例。
圖9在y-z平面中示出了具有u形nand串的3dnand存儲器陣列的橫截面的示例。
圖10示出了y-z平面上具有直nand串的3dnand存儲器的截面的示例。
圖11展示了存儲器總線管理的示例。
圖12展示了可以如何處理命令的示例。
圖13示出了存儲器總線管理中的步驟的示例。
圖14展示了具有兩個存儲器總線的存儲器系統。
具體實施方式
存儲器系統
半導體存儲器設備包括易失性存儲器設備(如動態隨機存取存儲器(“dram”)或靜態隨機存取存儲器(“sram”))、非易失性存儲器設備(如電阻式隨機存取存儲器(“reram”)、電可擦除可編程只讀存儲器(“eeprom”)、閃存(其還可以被考慮為eeprom的子集)、鐵電隨機存取存儲器(“fram”)、和磁阻隨機存取存儲器(“mram”))、以及能夠存儲信息的其他半導體元件。每種類型的存儲器設備可以具有不同配置。例如,閃存設備可以被配置成nand或nor配置。
存儲器設備可由無源和/或有源元件以任何組合來形成。通過非限制性示例的方式,無源半導體存儲器元件包括reram設備元件,在一些實施例中,所述元件包括如反熔絲相變材料等電阻率切換存儲元件以及(可選地)如二極管等操控元件。進一步通過非限制性示例的方式,有源半導體存儲器元件包括eeprom和閃存設備元件,在一些實施例中,所述元件包括如浮柵、導電納米顆粒、或電荷存儲介電材料等包含了電荷存儲區域的元件。
多個存儲器元件可以被配置為使得它們串聯或使得每個元件是可單獨訪問的。通過非限制性示例的方式,nand配置(nand存儲器)中的閃存設備通常包含串聯的存儲器元件。nand存儲器陣列可以被配置為使得陣列包括多個存儲器串,其中,串包括共享單個位線并作為群組被訪問的多個存儲器元件。替代性地,存儲器元件可以被配置為使得每一個元件是可單獨訪問的(例如,nor存儲器陣列)。nand和nor存儲器配置是示例性的,并且存儲器元件可以以其他方式配置。
位于基板內和/或上方的半導體存儲器元件可以被安排在兩個或三個維度(如二維存儲器結構或三維存儲器結構)中。
在二維存儲器結構中,半導體存儲器元件被安排在單個平面或單個存儲器設備級中。通常,在二維存儲器結構中,存儲器元件被安排在基本上平行于支撐存儲器元件的基板的主表面而延伸的平面中(例如,在x-z方向平面中)。基板可以是在其上方或在其中形成存儲器元件層的晶片,或者其可以是在形成存儲器元件之后附接至其上的載體基板。作為非限制性示例,基板可以包括如硅等半導體。
可以在單個存儲器設備級中將存儲器元件安排成有序陣列,如在多個行和/或列中。然而,可以在非規則或非正交配置中排列存儲器元件。存儲器元件可以各自具有兩個或更多個電極或接觸線,如位線和字線。
三維存儲器陣列被安排成使得存儲器元件占據多個平面或多個存儲器設備級,由此在三個維度(即,在x方向、y方向和z方向上,其中,y方向基本上垂直于并且x和z方向基本上平行于基板的主表面)中形成結構。
作為非限制性示例,三維存儲器結構可以被垂直地安排成多個二維存儲器設備級的堆疊。作為另一個非限制性示例,三維存儲器陣列可以被安排成多個垂直列(例如,基本上垂直于基板的主表面延伸的列,即,在y方向上),每列在每列中具有多個存儲器元件。可以采用二維配置中(例如,在x-z平面中)來安排所述列,導致存儲器元件的三維安排,元件位于多個垂直堆疊的存儲器平面上。存儲器元件在三個維度中的其他配置也可以構成三維存儲器陣列。
通過非限制性示例的方式,在三維nand存儲器陣列中,存儲器元件可以被耦合在一起,以便在單個水平(例如,x-z)存儲器設備級內形成nand串。替代性地,存儲器元件可以被耦合在一起,以便形成橫跨多個水平存儲器設備級的垂直nand串。可以設想其他三維配置,其中,一些nand串包含單個存儲器級中的存儲器元件,而其他串包含跨越多個存儲器級的存儲器元件。還可以在nor配置中和在reram配置中設計三維存儲器陣列。
通常,在單片式三維存儲器陣列中,在單個基板上方形成一個或多個存儲器設備級。可選地,單片式三維存儲器陣列還可以具有至少部分地位于單個基板內的一個或多個存儲器層。作為非限制性示例,基板可以包括如硅等半導體。在單片式三維陣列中,構成陣列的每個存儲器設備級的層通常在陣列的基礎存儲器設備級的層上形成。然而,單片式三維存儲器陣列的鄰近存儲器設備級的層可以被共享或在存儲器設備級之間存在中間層。
然后,再次,二維陣列可以被單獨地形成并且然后被封裝在一起,以便形成具有多個存儲器層的非單片式存儲器設備。例如,非單片式堆疊存儲器可以通過在單獨地基板上形成存儲器級然后將存儲器級堆疊在彼此頂上來構造。可以減薄基板或者可以在堆疊之前將其從存儲器設備級中移除,但是因為存儲器設備級最初地在單獨的基板上方形成,所以所產生的存儲器陣列不是單片式三維存儲器陣列。此外,多個二維存儲器陣列或三維存儲器陣列(單片式或非單片式)可以在單獨的芯片上形成然后被封裝在一起,以便形成堆疊芯片存儲器設備。
存儲器元件的操作以及與存儲器元件的通信通常需要相關聯的電路系統。作為非限制性示例,存儲器設備可以具有用于控制和驅動存儲器元件完成如編程和讀取等功能的電路系統。此相關聯的電路系統可以位于與存儲器元件相同的基板上和/或位于單獨的基板上。例如,用于存儲器讀-寫操作的控制器可以位于單獨的控制器芯片上和/或位于與存儲器元件相同的基板上。
在其他實施例中,可以使用不同于在此所描述的二維和三維示例性結構的存儲器類型。
圖1示意性地展示了適合于實施在此所描述的技術中的一些技術的存儲器系統的主要硬件部件。存儲器系統90通常通過主機接口與主機80一起操作。存儲器系統可以采用如存儲器卡等可移動存儲器形式或者可以采用嵌入式存儲器系統的形式。存儲器系統90包括存儲器102,所述存儲器的操作由控制器100控制。存儲器102包括分布在一個或多個集成電路芯片上的一個或多個非易失性存儲器單元陣列。控制器100可以包括接口電路110、處理器120、rom(只讀存儲器)122、ram(隨機存取存儲器)130、可編程非易失性存儲器124、以及附加部件。控制器通常被形成為asic(專用集成電路)以及包括在這種asic中通常取決于特定應用的部件。存儲器系統可以在各種不同環境中與各種主機一起使用。例如,主機可以是移動設備,如手機、膝上型計算機、音樂播放器(例如,mp3播放器)、全球定位系統(gps)設備、平板計算機等。這種存儲器系統可以是長時期不活動且沒有電力的,在所述長時期期間它們可能經受包括高溫度、振動、電磁場等各種狀況。可以為了寬范圍環境條件(例如,寬溫度范圍)下的低功耗、高數據保留以及可靠性而選擇這種主機的存儲器系統(無論是可移除的還是嵌入式的)。其他主機可以是固定的。例如,用于互聯網應用的服務器可以使用非易失性存儲器系統來存儲通過互聯網發送和接收的數據。這種系統可以在延長的時段(例如,一年或更多)內保持上電而不中斷,并且可以貫穿這些時段被頻繁地訪問。單獨塊可以被頻繁寫入和擦除,從而使得耐久性可能是主要關注問題。
物理存儲器結構
圖2示意性地展示了非易失性存儲器單元。存儲單元10可以由具有電荷存儲單元20的場效應晶體管實施,如浮柵或電荷俘獲(介電)層。存儲器單元10還包括源極14、漏極16和控制柵極30。
存在許多現今使用的商業上成功的非易失性固態存儲器設備。這些存儲器設備可以采用不同類型的存儲器單元,每種類型具有一個或多個電荷存儲器元件。
在實踐中,通常通過當參考電壓被施加到控制柵極時讀出跨單元的源極電極和漏極電極的傳導電流來讀取單元的存儲器狀態。因此,對單元的浮柵上的每個給定電荷而言,可以檢測關于固定參考控制柵極電壓的相應傳導電流。類似地,可編程到浮柵上的電荷的范圍限定相應閾值電壓窗口或相應傳導電流窗口。
替代性地,代替在劃分的電流窗口當中檢測傳導電流,有可能在控制柵極處設置測試中的給定存儲器狀態的閾值電壓,并且在傳導電流低于或高于閾值電流(單元讀取參考電流)時進行檢測。在一個實施方式中,通過檢查傳導電流通過位線的電容放電的速率來完成對相對于閾值電流的傳導電流的檢測。
圖3展示了針對浮柵可以在任何時候選擇性地存儲的四種不同電荷q1至q4的源極-漏極電流id與控制柵極電壓vcg之間的關系。對于固定漏極電壓偏置,四條實線id對vcg曲線表示可以編程到存儲器單元的浮柵上的七種可能電荷水平中分別對應于四種可能存儲器狀態的四種可能電荷水平。作為示例,單元群的閾值電壓窗口可以是從0.5v到3.5v的范圍。可以通過將閾值窗口劃分成每個0.5v間隔的區域來界定七種可能的編程存儲器狀態“0”、“1”、“2”、“3”、“4”、“5”、“6”和擦除狀態(未示出)。例如,如果使用如所示出的2μa的參考電流i參考,則使用q1來編程的單元可以被視為處于存儲器狀態“1”,因為其曲線與i參考相交于由vcg=0.5v和1.0v界定的閾值窗口區域中。類似地,q4處于存儲器狀態“5”。
如從以上描述中可看出的,使存儲器單元存儲的狀態越多,其閾值電壓窗口被劃分得越精細。例如,存儲器設備可以具有存儲器單元,所述存儲器單元具有范圍為從-1.5v到5v的閾值電壓窗口。這提供了6.5v的最大寬度。如果存儲器單元用于存儲16種狀態,則每種狀態在閾值窗口中可以占據從200mv到300mv。這將需要編程和讀取操作的更高精度,以便能夠達到所需要的分辨率。
nand結構
圖4a示意性地展示了組織成nand串的存儲器單元串。nand串50包括通過其源極和漏極菊鏈的存儲器晶體管m1、m2、...、mn(例如,n=4、8、16或更高)系列。選擇晶體管s1、s2對控制存儲器晶體管鏈的分別經由nand串的源極端子54和漏極端子56連接至外界。在存儲器陣列中,當源極選擇晶體管s1接通時,源極端子耦合至源極線(見圖4b)。類似地,當漏極選擇晶體管s2接通時,nand串的漏極端子耦合至存儲器陣列的位線。鏈中的每個存儲器晶體管10充當存儲器單元。其具有用于存儲給定量的電荷的電荷存儲元件20以便表示預期存儲器狀態。每個存儲器晶體管的控制柵極30允許對讀取和寫入操作進行控制。如將在圖4b中看到的,nand串一行的相應存儲器晶體管的控制柵極30都連接至同一字線。類似地,選擇晶體管s1、s2中的每個選擇晶體管的控制柵極32提供對分別經由其源極端子54和漏極端子56對nand串的訪問的控制。同樣地,nand串行的相應選擇晶體管的控制柵極32全部連接至同一選擇線。
當在編程期間讀取或驗證nand串內的尋址存儲器晶體管10時,其控制柵極30被供應有適當的電壓。同時,nand串50中的非尋址存儲器晶體管的剩余部分通過在其控制柵極上應用足夠的電壓而被完全接通。以此方式,有效地創建從單獨存儲器晶體管的源極到nand串的源極端子54的導電路徑,并且對單獨存儲器晶體管的漏極到單元的漏極端子56同樣如此。
圖4b展示了存儲器單元的nand陣列210的示例,所述nand陣列由nand串50(如圖4a中所示出的nand串)構成。沿著每個nand串列,位線(比如,位線36)耦合至每個nand串的漏極端子56。沿著個nand串排,源極線(比如,源極線34)耦合至每個nand串的源極端子54。而且,沿著nand串排中的存儲器單元行的控制柵極連接至字線(比如,字線42)。沿著nand串排中的選擇晶體管行的控制柵極連接至選擇線(比如,選擇線44)。nand串排中的整個存儲器單元行可以通過所述nand串排的字線和選擇線上的適當電壓而被尋址。
圖5展示了以nand配置來組織的被并行讀出或編程的存儲器單元頁。圖5本質上示出了圖4b的存儲器陣列210中的nand串50排,其中,像圖4a中那樣明確地示出了每個nand串的細節。物理頁(比如,頁60)是能夠并行讀出或編程的存儲器單元組。這通過讀出放大器212的相應頁完成。將讀出結果鎖存在相應鎖存器組214中。每個讀出放大器可以經由位線耦合至nand串。頁由頁的單元的共同連接至字線42的控制柵極使能,并且每個單元可由讀出放大器訪問,所述讀出放大器可經由位線36訪問。作為示例,當分別讀出或編程單元60的頁時,分別將讀出電壓或編程電壓連同位線上的適當電壓一起施加到共同字線wl3。
存儲器的物理組織
閃存與其他類型的存儲器之間的一個差別是閃存單元通常從擦除狀態編程。也就是說,通常排空浮柵的電荷。然后編程將期望量的電荷添加回至浮柵中。閃存通常支持從浮柵中移除電荷的一部分以便從更多編程狀態到更少編程狀態。這意味著更新的數據無法覆寫現有數據,并且相反寫入到之前的未寫入位置。
此外,擦除用于將所有電荷從浮柵中排空,并且通常花費相當多的時間。由于這個原因,逐單元或者甚至逐頁地擦除將是繁瑣且非常慢的。在實踐中,存儲器單元陣列被分成大量存儲器單元塊。如對于閃速eeprom系統普通的,塊是擦除單位。也就是說,每個塊包含同時被擦除的最小數量的存儲器單元。盡管在待擦除塊中并行地聚合大量單元將提高擦除性能,但是大尺寸塊還需要處理大量更新和過時數據。
每個塊通常被劃分成許多物理頁。邏輯頁是包含等于物理頁中的單元數量的許多位的編程或讀取的單位。在每單元存儲一個位的存儲器中(單級單元,或“slc”存儲器),一個物理頁存儲一個邏輯頁的數據。在每單元存儲兩個位的存儲器中,物理頁存儲兩個邏輯頁。存儲在物理頁中的邏輯頁的數量因此反映每單元存儲的位的數量。術語多級單元(或“mlc”)通常用于指每單元存儲多于一個位的存儲器,包括每單元存儲三個位(tlc)、每單元存儲四個位、或每單元存儲更多位的存儲器。在一個實施例中,單獨的頁可以被劃分成多個段,并且每個段可以包含作為基本編程操作一次寫入的最小數量的單元。一個或多個邏輯頁的數據通常存儲在一個存儲器單元行中。頁可以存儲一個或多個扇區。扇區包括用戶數據和開銷數據。
mlc編程
圖6a至圖6c展示了對4狀態存儲器單元群進行編程的示例。圖6a展示了可編程到分別表示存儲器狀態“e”、“a”、“b”和“c”的閾值電壓的四種不同分布中的存儲器單元群。圖6b展示了擦除存儲器的“擦除”閾值電壓的初始分布。圖6c展示了在存儲器單元中的許多存儲器單元已經被編程之后的存儲器的示例。實質上,單元最初具有“擦除”閾值電壓,并且編程將其移動到更高值進入由驗證水平vv1、vv2和vv3界定的三個區域中的一個區域中。以此方式,每個存儲器單元可以被編程到三種編程狀態“a”、“b”和“c”之一或者在“擦除”狀態下保持未編程。隨著存儲器得到更多編程,如圖6b中所示出的“擦除”狀態的初始分布將變得更窄,并且擦除狀態由“0”狀態表示。
具有低位和高位的2位代碼可以用于表示四種存儲器狀態中的每種存儲器狀態。例如,“e”、“a”、“b”和“c”狀態分別由“11”、“01”、“00”和“10”表示。可以通過在“完整序列”模式下進行讀出來從存儲器中讀取2位數據,在所述模式下,通過分別相對于三個子通帶中的讀取界定閾值rv1、rv2和rv3進行讀出來一起讀出這兩個位。
3dnand結構
常規二維(2d)nand陣列的替代性安排是三維(3d)陣列。相比于2dnand陣列(其沿著半導體晶片的平面表面形成),3d陣列從晶片表面向上延伸并且通常包括向上延伸的存儲器單元堆或列。各種3d安排是可能的。在一種安排中,與晶片表面處的一端(例如,源極)以及頂部的另一端(例如,漏極)垂直地形成nand串。在另一種安排中,以u形形狀來形成nand串,從而使得可以在頂部訪問nand串的兩端,從而促進這種串之間的連接。
圖7示出了在垂直于襯底的x-y平面的垂直方向上延伸(即,在z方向上延伸)的nand串701的第一示例。在垂直位線(局部位線)703穿過字線(例如,wl0、wl1等)的地方形成存儲器單元。局部位線與字線之間的電荷俘獲層存儲電荷,所述電荷影響由耦合至其所包圍的垂直位線(溝道)的字線(柵極)形成的晶體管的閾值電壓。可以通過形成字線堆疊并且然后蝕刻出要在其處形成存儲器單元的存儲器孔來形成這種存儲器單元。然后,將存儲器孔襯以電荷俘獲層并填充以適當的局部位線/溝道材料(填充以適當的介電層以便進行隔離)。
與平面nand串一樣,選擇柵極705、707被定位在串的任一端處以便允許nand串選擇性地連接至外部元件709、711或與其隔離。這種外部元件通常為導線(比如,為大量nand串服務的共用源極線)。可以以與平面nand串類似的方式來操作垂直nand串并且單級單元(slc)或多級單元(mlc)兩者都是可能的。雖然圖7示出了具有串聯連接的32個單元(0至31)的nand串的示例,但是nand串中的單元數可以是任何適當數量。為了清晰起見,未示出所有單元。將理解的是,在字線3至29(未示出)與局部垂直位線相交的地方形成附加單元。
圖8示出了在垂直方向(z方向)上延伸的nand串815的第二示例。在這種情況下,nand串815形成u形形狀,與位于結構頂部的外部元件(源極線“sl”和位線“bl”)連接。連接nand串815的兩個翼816a、816b的可控制柵極(背柵“bg”)處于nand串815的底部。在字線wl0至wl63與垂直局部位線817相交的地方形成總共64個單元(盡管在其他示例中,可以提供其他數量的單元)。選擇柵極sgs、sgd被定位在nand串815的任一端處以便控制對nand串815的連接/隔離。
垂直nand串可以被安排成以各種方式形成3dnand陣列。圖9示出了塊中的多個u形nand串連接至位線的示例。在這種情況下,在塊中存在連接至位線(“bl”)的n個串(串1至串n)。“n”的值可以是任何適當數字,例如,8、12、16、32或更多。串在取向上與其源極連接處于左方的奇數串以及其源極處于右方的偶數串交替。這種安排是合宜的但不是必要的,并且其他圖案也是可能的。
共用源極線“sl”連接至每個nand串的一端(與連接至位線的端相反)。可以將這視為nand串的源極端,將位線端視為nand串的漏極端。可以將共用源極線連接成使得塊的所有源極線可由外圍電路一起控制。因此,塊的nand串在一端在位線之間平行地延伸并且在另一端在共用源極線之間平行的延伸。
圖10示出了存儲器結構,其中,直線垂直nand串從基板中或附近的共用源極連接延伸到在存儲器單元的物理級上延伸的全局位線(bl0至bl3)。在塊中的給定物理級中的字線由導電材料片形成。存儲器孔結構向下延伸穿過這些導電材料板以便形成存儲器單元。在給定塊內,存在連接至給定位線的多個nand串。nand串被分組到共享共用選擇柵極的串集合中。因此,例如,由sgs0和sgd0選擇的nand串可以被視為集合,并且可以被指定為串0,而由sgs1和sgd1選擇的nand串可以被視為集合并且可以被指定為如所示出的串1。塊可由任何適當數量的這種串集合組成。將理解的是,圖10的截面示出了bl0至bl3的部分,這些位線在y方向上進一步延伸。此外,附加位線與bl0至bl3平行地延伸(例如,在沿著x軸的不同位置處,在圖10的截面的位置前面或后面)。其他三維存儲器基于電阻式元件而不是電荷存儲元件。
存儲器總線
在一些非易失性存儲器系統中,可以將兩個或更多個非易失性存儲器裸片連接至存儲器總線。例如,可以通過存儲器總線將四個、八個或更多個nand閃存裸片連接至nand控制器。可以將這種多裸片總線與任何形式的非易失性存儲器一起使用,包括平面、3d、電荷存儲存儲器(如閃存)、電阻式存儲器(如reram)以及其他形式的存儲器。在一些情況下,存儲器控制器可以管理多于一條存儲器總線,并且每條這種存儲器總線可以為多個非易失性存儲器裸片服務。
雖然相比于將專用通信信道用于每個存儲器裸片,使用存儲器總線通過共享通信信道來與多個存儲器裸片通信可以提供顯著節省,但是在一些情境下,存儲器總線可能變成降低存儲器系統性能的瓶頸。例如,在一些情況下,可以由于存儲器總線繁忙而延遲執行存儲器訪問命令(讀取、寫入或擦除命令)。
可能占用存儲器總線并阻止執行其他任務的任務的一個示例是對存儲器裸片進行輪詢以便標識存儲器裸片何時變得可用(就緒)。在一些情況下,存儲器系統可以對特定裸片進行輪詢,同時等待所述裸片由于存在要使用所述裸片來執行的另一個任務而變得可用。例如,在裸片由于其正寫入數據而繁忙(不可用)的情況下,存儲器系統可以等待裸片變得就緒以便向裸片發送更多數據。在輪詢期間,在存儲器總線上可能存在可用于寫入更多數據的一個或多個其他裸片。然而,因為存儲器總線忙于輪詢操作,所以數據未被傳輸至這些裸片。
對單獨裸片的進行輪詢的替代方案是將多個裸片的塊鏈接到然后一起被并行地操作的元塊中。因此,特定存儲器總線上的所有裸片可能在基本上相同的時間(或至少以可預測的序列)變得可用,從而使得在其他裸片就緒的同時,幾乎沒有花費時間對一個裸片進行輪詢。
另一個替代方案是使用一個或多個計時器來估計裸片將在何時就緒。因此,當裸片開始特定任務(例如,寫入數據的第一部分(例如,頁))時,可以針對所述裸片啟動計時器。在定時器指示可能已經完成了寫入之前(例如,基于所經過的時間與某個之前的寫入時間的比較),不可以執行任何輪詢。以此方式,幾乎不在輪詢上浪費時間。然而,這種系統可能相當復雜,因為其需要多個計時器并且需要跟蹤通過多個裸片(或如塊等更小的單位)進行的各種任務的平均時間并且可以包括將這種時間更新為存儲器壽命。這種估計可能不準確。仍可能存在估計時間太短從而使得輪詢顯著地在裸片就緒之前開始并且輪詢浪費時間的時候。在其他情況下,估計時間太長,從而使得輪詢被不必要地延遲并且裸片保持空閑。
在圖11中展示了用于管理存儲器總線的有效方案。例如,通過主機接口從主機接收命令101。命令還可以源于存儲器控制器(例如,與內部操作相關的命令,如,垃圾收集、更新存儲器管理數據、或塊再生)。然后,標識子操作103。
對子操作的標識可以包括將單獨命令解析成在執行命令時執行的子操作。子操作可以是占用存儲器總線的并且可以作為原子操作而執行(無中斷)的任務。子操作通常應當相對短并且不應當是不必要地混在一起的任務,所述任務可以作為單獨的子操作而更有效地執行。例如,將讀取讀出和讀取傳輸考慮為單個子操作將是低效率的,因為存儲器總線將在子操作的存儲器讀出部分期間處于空閑。可以將向多級單元“mlc”(例如,三級單元或“tlc”)存儲器單元進行寫入視為多個子操作,從而使得在裸片的這種子操作之間,存儲器總線可以用于其他目的(即,可以訪問其他裸片)。如讀取、寫入和擦除等存儲器訪問命令通常需要至少兩個這種子操作。例如,讀取命令可能需要至少一個讀取讀出子操作向存儲器裸片傳輸物理地址信息并且可以啟動對尋址單元的讀出以及至少一次讀取傳輸以便經由存儲器總線從裸片傳輸讀出數據。從物理頁讀取多個邏輯頁以及對多個裸片進行讀取可能需要許多這種子操作。寫入命令可能需要至少一個寫入傳輸子操作通過存儲器總線向目的地裸片傳輸數據和地址信息以及至少一次狀態檢查以便判定寫入是否成功。擦除命令可能需要至少一個第一子操作以便標識待擦除的塊并且啟動擦除以及至少一個第二子操作以便檢查擦除是否成功。在一些情況下,命令可以與單個子操作相對應。例如,用于改變nand參數的命令(例如,用于改變與對塊、平面或裸片進行讀取、寫入和/或擦除相關聯的參數)可能僅需要單個子操作來傳輸新的nand參數。
釋放子操作105(使得可用于執行),其方式為確保對存儲器總線的有效使用。通常將子操作調度成按接收相應命令的順序執行。在一些情況下,可以執行某種重新排序。只有在相應裸片可用時釋放子操作。在一些情況下,僅針對給定裸片釋放一個子操作,從而使得所釋放的子操作的列表可以是一個子操作深度。在一些情況下,可以以雙向的方式有效地執行兩個子操作的情況下,一次可以對裸片釋放多于一個子操作。例如,針對之前讀出數據的讀取傳輸子操作可以與針對待從相同裸片中讀取的下一個數據的讀取讀出子操作一起釋放。對子操作的釋放可能受制于門控條件,從而使得在一些情況下,無法在相應裸片可用時立即釋放子操作。
在一些情況下,輪詢可以指示裸片就緒并且相應子操作被立即釋放和執行。在其他情況下,對相應子操作的釋放并不立即發生,而相反,由于門控條件而被延遲。例如,為了將功耗維持在低于功耗限制的水平上,可以延遲對子操作的釋放,直到完成某個其他子操作為止。例如,存儲器總線可以具有八個存儲器裸片,但是功耗可以將執行寫入操作的裸片的數量限制為例如六個裸片。因此,如果六個裸片在另一個裸片變得就緒時已經執行寫入子操作,則對最近就緒的裸片的釋放可能使七個裸片同時執行寫入子操作。在這種情境下,可以延遲對子操作的釋放,直到另一個裸片已經完成寫入為止。在確定延遲釋放時,還可以考慮在讀取、擦除或其他操作期間消耗的電力。例如,可以在一個或多個裸片中執行擦除,而在其他裸片中執行讀取并且在又其他裸片中執行寫入。可以跟蹤當前消耗的總電力并將其用于確定當前功耗與功耗限制之差。如果由釋放另一個子操作引起的附加消耗在功耗限制內,則可以釋放子操作。如果附加消耗不在限制內,則可以延遲釋放。由于不同子操作導致消耗不同量的電力,因此可以考慮子操作的類型。因此,在可以不立即釋放啟動擦除(所述擦除比寫入需要更多的電力)的擦除啟動子操作的情況下,可以立即釋放讀取讀出子操作。因此,可以應用各種門控條件來判定是否釋放特定子操作。
對子操作的釋放將向不同列表傳輸子操作以供執行。圖11示出了與子操作釋放相關的以上步驟101至105以及與子操作執行相關的以下步驟107至113。這兩個操作可以在很大程度上獨立地進行并且可以是異步的。僅執行所釋放的子操作107。在執行所釋放的子操作的時間內,不執行任何輪詢。在一些情況下,可能存在例外,例如,多平面mlc寫入可以被視為單個子操作而不是被視為多個原子子操作。在這種情況下,可以在多平面寫入內執行某次輪詢,以便判定何時可以傳輸下一頁,例如,在向兩個平面傳輸更低頁數據之后,輪詢可以用于判定何時寫入更低頁數據并且裸片何時準備好接收中間頁數據。在完成了一個子操作并且存儲器總線變得可用時,判定所釋放的子操作列表是否為空109。如果在所釋放的子操作列表中仍存在至少一個子操作,則執行繼續。如果所釋放的子操作的列表為空,則對存儲器裸片進行輪詢111以便標識任何一個或多個就緒裸片113。因此,輪詢僅在不再存在可以立即執行的子操作(即,針對已知就緒的子操作)時發生。只要在列表中存在至少一個子操作,就不發生任何輪詢,從而使得對子操作的執行繼續,直到列表為空為止。輪詢可以限制于活動裸片(即,對不活動裸片的輪詢可能是不必要的)。如果所有裸片是不活動的,則可以不執行輪詢。因此,當不存在待執行的任何子操作時,系統可以進入低電狀態,不執行任何子操作或裸片輪詢。隨后,當接收到新命令時,可以恢復執行和輪詢。當輪詢指示一個或多個裸片就緒113時,則傳達(虛線)這種情況以便用于標識要釋放的子操作,并且釋放105和執行107相應子操作。通常,一標識就緒裸片就終止輪詢并且啟動釋放和執行,從而使得輪詢不繼續延長的時段。例如,可以對被標識為就緒的所有裸片釋放下一個子操作。當輪詢113結束時,對所釋放的子操作列表進行檢查109以便判定是否存在最近釋放的子操作并且以便執行這種子操作107(如果存在任何這種子操作)。可以看到,這種方案在列表不為空時執行子操作(在這期間,不發生輪詢)與對裸片進行輪詢(這僅在列表變為空時發生)之間交替。
對子操作的釋放還可由除了輪詢之外的事件(如對由于應用門控條件而保留的子操作釋放)觸發。例如,如果子操作由于功耗限制而被保留,則可以在功耗下降到允許執行子操作而不超過功耗限制的水平的任何時候(即,當終止應用門控條件時,可以釋放子操作,而無需進行附加輪詢)釋放子操作。在一些情況下,“虛擬繁忙”狀況可以用于指示斷言就緒信號的裸片不應被視為就緒(即,將不對這種裸片釋放任何子操作)。因此,可以通過斷言虛擬繁忙狀況來實施門控條件,然后,在滿足門控條件時,釋放所述虛擬繁忙狀況。例如,可以在裸片斷言就緒信號時在讀取數據傳輸期間使用虛擬繁忙狀況以便管理對隨后子操作的釋放。
在一些情況下,可能存在可以從未釋放子操作列表中釋放的兩個或更多個操作(因為它們的裸片就緒)。釋放和執行這種子操作的順序可以根據優先級方案確定,所述優先級方案可以基于用于優化性能的規則。例如,如果讀取讀出子操作準備好針對一個裸片而釋放,而讀取傳輸子操作準備好針對另一個裸片而釋放,則讀取讀出將通常被首先釋放。這允許裸片中的讀出與讀取傳輸操作并行地進行。優先級方案可以包括基于如以上所討論的電力需求而對子操作進行延遲和/或排序。在一些情況下,主機或控制器可以指定特定的釋放和/或執行順序。可以以特定順序(例如,以邏輯地址的順序)將從存儲器中讀取的數據返回至主機。為了促進這一點,讀取讀出子操作和讀取傳輸子操作還可以根據邏輯地址而排序。在一些情況下,存儲器控制器可以執行需要特定順序的操作。例如,將數據從一個塊重定位到另一個塊(例如,在垃圾收集期間)可能需要針對所有裸片的讀取讀出子操作在執行任何寫入子操作之前執行。
圖12展示了提供有效存儲器總線使用的命令處理的示例。接收待執行的指令并可以將其置于隊列221中(例如,以它們被接收的順序)。命令解析單元223標識與命令相對應的子操作。所標識的子操作置于未決(未釋放)的子操作池225中。然后,釋放控制器227僅對受制于可能應用的任何門控條件的確定就緒的裸片釋放子操作。所釋放的子操作被保持在隊列229中。子操作由存儲器總線控制器執行,每個這種子操作占據存儲器總線不間斷的時間段。當在隊列229中不再存在所釋放的子操作時,存儲器總線控制器231對裸片進行輪詢以便標識任何可用裸片并且向釋放控制器227標識可用裸片,然后,所述釋放控制器可以將更多子操作釋放到隊列229,從而使得存儲器總線控制器231可以返回執行子操作。
在圖13中展示了對存儲器總線控制器(例如,存儲器總線控制器231)的操作。作出關于在所釋放的子操作的隊列中是否存在所釋放的子操作的判定341。如果在隊列中存在任何子操作,則執行隊列中的下一個子操作343。如果在隊列中未剩下任何所釋放的子操作,則對裸片進行輪詢以便標識就緒裸片345。如果存在就緒裸片,則存儲器總線控制器通知釋放控制器,從而使得可以釋放相應子操作。
在一些存儲器系統中,存儲器控制器可以管理多于一條存儲器總線。圖14示出了管理兩條存儲器總線(總線1和總線2)的存儲器系統451的示例。總線1為裸片a和裸片b服務,而總線2為裸片c和裸片d服務。在此示例中,所有裸片包括兩個平面(平面0和平面1)。將理解的是,可以實施各種其他配置。例如,每條總線可以具有多于兩個裸片(例如,四個、八個、十六個或更多個裸片),并且控制器可以具有多于兩條總線。
存儲器控制器453包括主機接口455,所述主機接口通過通信信道457接收主機命令。在存儲器控制器453內可以生成附加命令。命令(來自主機或其他)被發送至命令解析器459,所述命令解析器將命令解析成構成子操作。子操作被置于未釋放子命令461的隊列中。釋放控制器463釋放來自未釋放子命令461的隊列的子命令,并且將它們釋放到適當的所釋放的子命令隊列(或者針對總線1的所釋放的子命令隊列465或者針對總線2的所釋放的子命令隊列467)中。因此,總線1和總線2共享未釋放子命令隊列461,而每條總線具有專用的釋放的子命令隊列(針對總線1的隊列465和針對總線2的隊列467)。因此,每條總線可以基于其釋放的子操作隊列而單獨進行操作。提供了輪詢電路469以便對在針對給定總線的釋放的子操作隊列為空時對所述總線的裸片進行輪詢。雖然示出了單個輪詢電路,但是可以為每條總線提供單獨的輪詢電路,從而使得每條總線具有其自己的專用輪詢電路。雖然圖14將存儲器控制器453展示為包括特定電路,但是將理解的是,還可以在存儲器控制器中提供附加電路。還將理解的是,在這種存儲器控制器中的電路可以提供為通過軟件配置的專用電路、可編程邏輯電路或通用物理電路。因此,在圖14中所展示的部件不一定是物理分離的電路,但是可以是存儲器控制器的被控制器固件配置成用于特定目的的功能部分。在一些情況下,在專用集成電路(asic)中的專用電路和軟件可配置電路的組合可以形成這種存儲器控制器。
結語
為了解釋和說明的目的給出了前述具體實施方式。其不旨在是窮盡的或者限制所附權利要求書。鑒于以上教導,許多修改和變體都是可能的。