两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種多通道NandFlash控制器及其控制方法

文檔序號(hào):6536769閱讀:245來(lái)源:國(guó)知局
一種多通道Nand Flash控制器及其控制方法
【專利摘要】本發(fā)明涉及一種多通道Nand?Flash控制器及其控制方法,包括總線接口、指令接收模塊、指令處理模塊、IO接口時(shí)序模塊和數(shù)據(jù)傳輸模塊;其中指令處理模塊,將接收的指令分解為若干個(gè)微指令,按照預(yù)定的算法調(diào)度相應(yīng)的微指令執(zhí)行,并根據(jù)微指令通過(guò)IO接口時(shí)序模塊對(duì)Nand?Flash芯片進(jìn)行相應(yīng)操作;本發(fā)明將指令分解為微指令,并動(dòng)態(tài)分析出微指令間的依賴關(guān)系、接口總線的狀態(tài)和各個(gè)NAND?Flash芯片的狀態(tài),并在微指令的基礎(chǔ)上行進(jìn)行緩存管理、指令動(dòng)態(tài)調(diào)度,能夠減少對(duì)數(shù)據(jù)緩存的需求,提高在外部控制指令隨機(jī)請(qǐng)求條件下的性能。
【專利說(shuō)明】一種多通道Nand Flash控制器及其控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及閃存【技術(shù)領(lǐng)域】,尤其涉及一種多通道Nand Flash控制器及其控制方法。
【背景技術(shù)】
[0002]NAND Flash是一種塊頁(yè)式結(jié)構(gòu)的非易失性存儲(chǔ)器,其存儲(chǔ)空間由若干存儲(chǔ)塊(Block)組成,每個(gè)存儲(chǔ)塊由若干存儲(chǔ)頁(yè)(Page)組成。存儲(chǔ)頁(yè)可以分為兩個(gè)存儲(chǔ)區(qū),較大的是數(shù)據(jù)區(qū),用于存放數(shù)據(jù),較小的是spare區(qū),通常用于存放ECC校驗(yàn)碼等信息。以Micron公司的32Gb閃存芯片MT29F32G08ABCAB為例,數(shù)據(jù)的組織單位為L(zhǎng)UN,每個(gè)LUN包括兩個(gè)Plane,每個(gè)Plane包含2048個(gè)block,每個(gè)block包含128個(gè)page,每個(gè)page包含8kB的數(shù)據(jù)區(qū)和448B的spare區(qū)。
[0003]NAND Flash結(jié)構(gòu)能提供極高的單元密度,可以達(dá)到很高的存儲(chǔ)密度,并且寫(xiě)入和擦除的速度也很快。應(yīng)用NAND Flash的困難在于Flash的管理和使用需要特殊的系統(tǒng)接□。
[0004]Nand Flash的操作具有以下特點(diǎn):
[0005]I)存儲(chǔ)結(jié)構(gòu)為塊頁(yè)式,存儲(chǔ)空間分為多個(gè)塊,每個(gè)塊分為多個(gè)頁(yè);
[0006]2)讀操作以頁(yè)為單位,可以隨機(jī)讀取任意位置的頁(yè);
[0007]3)寫(xiě)操作以頁(yè)為單位,需要按照塊中頁(yè)的順序?qū)懭?。?xiě)過(guò)的頁(yè)不能重復(fù)寫(xiě)數(shù)據(jù),必須先進(jìn)行擦出操作才能再次寫(xiě)入;
[0008]4)擦除操作以塊為單位;
[0009]5)每一個(gè)塊的寫(xiě)和擦除操作有最大次數(shù)限制,超過(guò)限制后產(chǎn)生壞塊的概率增加,在正常操作時(shí)也會(huì)有一定概率產(chǎn)生壞塊;
[0010]6)讀取的數(shù)據(jù)有一定概率會(huì)產(chǎn)生幾個(gè)比特的錯(cuò)誤,需要設(shè)計(jì)糾錯(cuò)碼糾正錯(cuò)誤。
[0011]NAND Flash的這種特殊的塊狀結(jié)構(gòu)有利于其存儲(chǔ)密度的提高,卻使其不能夠像一般存儲(chǔ)器那樣直接訪問(wèn),需設(shè)計(jì)專用的控制方法。對(duì)NAND Flash的控制一般分為兩個(gè)層次:用邏輯實(shí)現(xiàn)其底層時(shí)序的控制,用軟件實(shí)現(xiàn)復(fù)雜的算法設(shè)計(jì)。前者一般稱為NAND Flash控制器。
[0012]NAND Flash控制器的主要作用包括:
[0013]I)實(shí)現(xiàn)Nand Flash接口控制時(shí)序,將Nand Flash指令翻譯成對(duì)應(yīng)的時(shí)序;
[0014]2)寫(xiě)入數(shù)據(jù)時(shí)生成ECC校驗(yàn)數(shù)據(jù)和讀取數(shù)據(jù)進(jìn)行校驗(yàn)和糾錯(cuò)功能;
[0015]3)為軟件提供簡(jiǎn)單的控制接口,
[0016]4)實(shí)現(xiàn)流水線操作和數(shù)據(jù)的DMA傳輸以提高性能;
[0017]現(xiàn)有的Nand Flash控制器的結(jié)構(gòu)一般包括核心狀態(tài)機(jī)、數(shù)據(jù)緩存、Ecc生成與校驗(yàn)?zāi)K和IO時(shí)序電路模塊;其中,核心狀態(tài)機(jī)解析外部指令,并控制內(nèi)部各個(gè)模塊協(xié)調(diào)工作;數(shù)據(jù)緩存用于存儲(chǔ)從Nand Flash中讀取或準(zhǔn)備寫(xiě)入Nand Flash的數(shù)據(jù);ECC生成與校驗(yàn)?zāi)K用于在寫(xiě)入數(shù)據(jù)時(shí)生成ECC校驗(yàn)碼,并寫(xiě)入Nand Flash,在讀取數(shù)據(jù)時(shí)校驗(yàn)讀取的ECC碼;IO實(shí)現(xiàn)電力用于產(chǎn)生滿足Nand Flash接口時(shí)序要求的各個(gè)引腳信號(hào)。
[0018]現(xiàn)有技術(shù)中Nand Flash芯片的組織方式包括一下三種形式:
[0019]1.米用N片并行的方式組織Nand Flash (即各Nand Flash芯片的控制線和片選信號(hào)公用,數(shù)據(jù)線各自獨(dú)立),這種組織方式,其存在以下缺點(diǎn):
[0020]I)所用控制器的邏輯復(fù)雜度與控制單片Nand Flash的相同,但數(shù)據(jù)位寬度需要增加N倍;
[0021]2)控制器的IO引腳占用非常多;
[0022]3)需要大量緩存,其需求量是單片Nand Flash的N倍;
[0023]4)最小讀寫(xiě)單元是單片的N倍,對(duì)于讀寫(xiě)小數(shù)據(jù)效率極低;
[0024]5)無(wú)法減少NF接口讀寫(xiě)擦指令中的等待時(shí)間。
[0025]2.采用M級(jí)流水的方式組織Nand Flash (即各Nand Flash芯片的控制線和數(shù)據(jù)線公用,片選信號(hào)各自獨(dú)立),這種方式在順序讀、寫(xiě)數(shù)據(jù)時(shí)能夠提高性能,但是在讀寫(xiě)擦指令隨機(jī)順序請(qǐng)求時(shí),控制器則無(wú)法實(shí)現(xiàn)流水操作。
[0026]3.采用N級(jí)并行M級(jí)流水方式組織Nand Flash,這種組織方式是上述兩種情況的簡(jiǎn)單組合,上述兩種方式的優(yōu)缺點(diǎn)在這種組合方式中也都存在。

【發(fā)明內(nèi)容】

[0027]本發(fā)明所要解決的技術(shù)問(wèn)題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種多通道Nand Flash控制器及控制方法,其解決現(xiàn)有技術(shù)無(wú)法處理指令隨機(jī)請(qǐng)求的情況,減少控制器占用緩存空間,同時(shí)簡(jiǎn)化上層控制接口。
[0028]本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種多通道Nand Flash控制器,包括總線接口模塊、指令接收模塊、指令處理模塊、IO接口時(shí)序模塊、數(shù)據(jù)傳輸模塊;
[0029]所述總線接口模塊,其與指令接收模塊或數(shù)據(jù)傳輸模塊連接,用于實(shí)現(xiàn)控制器與外部系統(tǒng)總線的命令及數(shù)據(jù)交互;
[0030]所述指令接收模塊,其與指令處理模塊連接,用于緩存指令,并將指令發(fā)送給指令處理模塊,還用于存儲(chǔ)指令的執(zhí)行狀態(tài);
[0031 ] 所述指令處理模塊,其與IO接口時(shí)序模塊連接,用于將接收的指令分解為若干個(gè)微指令,按照預(yù)定的執(zhí)行策略執(zhí)行微指令,通過(guò)IO接口時(shí)序模塊對(duì)Nand Flash芯片進(jìn)行相應(yīng)操作,并監(jiān)測(cè)微指令的執(zhí)行過(guò)程,執(zhí)行完成向指令接收模塊返回執(zhí)行狀態(tài);
[0032]所述IO接口時(shí)序模塊,其采用M級(jí)流水的方式與多個(gè)Nand Flash芯片連接,用于實(shí)現(xiàn)Nand Flash芯片要求的接口時(shí)序電路,在系統(tǒng)復(fù)位后自動(dòng)調(diào)整信號(hào)時(shí)延,校準(zhǔn)接口時(shí)序關(guān)系;
[0033]所述數(shù)據(jù)傳輸模塊,其與IO接口時(shí)序模塊連接,用于根據(jù)微指令通過(guò)IO接口時(shí)序模塊傳輸向Nand Flash寫(xiě)入數(shù)據(jù)或從Nand Flash讀取的數(shù)據(jù)。
[0034]本發(fā)明的有益效果是:
[0035]I)通過(guò)將指令分解為微指令,并利用微指令調(diào)度算法,優(yōu)化微指令執(zhí)行順序和時(shí)間,在保證系統(tǒng)功能正確的情況下,系統(tǒng)的隨機(jī)讀寫(xiě)性能得到大幅提高;
[0036]2)在微指令執(zhí)行時(shí)對(duì)數(shù)據(jù)緩存進(jìn)行管理,大大減少了對(duì)數(shù)據(jù)緩存的占用時(shí)間,數(shù)據(jù)緩存的大小與流水級(jí)數(shù)無(wú)關(guān)。與其它高性能的控制器相比,需要的數(shù)據(jù)緩存資源大大減少。
[0037]總之,本發(fā)明將指令分解為微指令,并動(dòng)態(tài)分析出微指令間的依賴關(guān)系、接口總線的狀態(tài)和各個(gè)NAND Flash芯片的狀態(tài),并在微指令的基礎(chǔ)上行進(jìn)行緩存管理、指令動(dòng)態(tài)調(diào)度,能夠減少對(duì)數(shù)據(jù)緩存的需求,提高指令隨機(jī)請(qǐng)求條件下的性能。
[0038]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0039]進(jìn)一步,所述指令接收模塊包括寄存器單元、指令隊(duì)列和狀態(tài)隊(duì)列;
[0040]所述寄存器,其用于存儲(chǔ)控制器的配置參數(shù)及狀態(tài)信息;
[0041]所述指令隊(duì)列,其用于接收外部由控制總線接口輸入的指令,并將指令傳送給指令處理模塊的指令分解單元;
[0042]所述狀態(tài)隊(duì)列,其用于存儲(chǔ)每條指令在執(zhí)行完成后的狀態(tài)信息。
[0043]進(jìn)一步,所述指令處理模塊包括指令分解單元、微指令調(diào)度單元和微指令執(zhí)行單元;
[0044]所述指令分解單元,其用于將接收的指令分解成若干個(gè)微指令,并將微指令發(fā)送給微指令調(diào)度單元;還用于將微指令執(zhí)行單元返回的執(zhí)行狀態(tài)寫(xiě)入指令接收模塊的狀態(tài)隊(duì)列;
[0045]所述微指令調(diào)度單元,其用于根據(jù)預(yù)定的調(diào)度算法在每接收一條微指令時(shí),對(duì)其內(nèi)部緩存中的微指令排序,并將微指令依次傳送給微指令執(zhí)行單元,并每執(zhí)行完一條微指令,根據(jù)預(yù)定的算法更新緩存中的微指令的相關(guān)關(guān)系;
[0046]所述微指令執(zhí)行單元,其用于根據(jù)微指令的類型控制IO時(shí)序接口模塊執(zhí)行微指令,如果存在數(shù)據(jù)操作,則控制數(shù)據(jù)傳輸模塊進(jìn)行數(shù)據(jù)傳輸;其還用于監(jiān)控各條微指令的執(zhí)行狀態(tài),在執(zhí)行完成后,將執(zhí)行狀態(tài)返回給指令分解單元。
[0047]進(jìn)一步,所述數(shù)據(jù)傳輸模塊包括ECC單元、數(shù)據(jù)緩存單元和DMA引擎;
[0048]所述ECC單元,其用于在向Nand Flash寫(xiě)入數(shù)據(jù)時(shí)生成ECC校驗(yàn)碼,并將ECC校驗(yàn)碼寫(xiě)入Nand Flash的spare區(qū);還用于從Nand Flash讀取數(shù)據(jù)時(shí)讀取ECC校驗(yàn)碼,利用讀取的ECC校驗(yàn)碼糾正數(shù)據(jù)錯(cuò)誤;
[0049]所述數(shù)據(jù)緩存單元,其用于緩存待寫(xiě)入Nand Flash的數(shù)據(jù)或從Nand Flash讀出的數(shù)據(jù);
[0050]所述DMA引擎,其用于實(shí)現(xiàn)數(shù)據(jù)緩存單元與內(nèi)存的數(shù)據(jù)交互。
[0051]進(jìn)一步,所述微指令調(diào)度單元內(nèi)部具有緩存空間,可存儲(chǔ)多條微指令;微指令執(zhí)行單元支持多條無(wú)相關(guān)關(guān)系的微指令同時(shí)執(zhí)行。
[0052]本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種多通道Nand Flash控制器控制多個(gè)Nand Flash芯片的方法,包括如下步驟:
[0053]步驟1:上電復(fù)位或軟件控制復(fù)位時(shí),控制器進(jìn)行初始化操作;
[0054]步驟2:總線接口模塊的控制總線接口接收外部輸入的各種指令,并發(fā)送給指令接收模塊;
[0055]步驟3:指令接收模塊驗(yàn)證接收指令的正確性,驗(yàn)證通過(guò)的指令傳送給指令處理模塊;
[0056]步驟4:指令處理模塊將指令分解成若干微指令,并按預(yù)定執(zhí)行策略通過(guò)IO接口時(shí)序模塊執(zhí)行相應(yīng)的微指令;[0057]步驟5:數(shù)據(jù)傳遞模塊根據(jù)指令處理模塊的相應(yīng)動(dòng)作,通過(guò)總線接口模塊的數(shù)據(jù)總線接口配合完成數(shù)據(jù)的傳輸。
[0058]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0059]進(jìn)一步,步驟4中所述指令處理模塊將指令分解成若干微指令,并按預(yù)定執(zhí)行策略執(zhí)行相應(yīng)的微指令的具體實(shí)現(xiàn)為:
[0060]步驟4.1:指令分解單元將接收的指令分解成若干個(gè)微指令,并將微指令發(fā)送給微指令調(diào)度單元的緩存空間;
[0061]步驟4.2:微指令調(diào)度單元根據(jù)預(yù)定的執(zhí)行策略在每接收一條微指令時(shí),對(duì)其內(nèi)部緩存中的微指令排序,并將微指令依次傳送給微指令執(zhí)行單元;
[0062]步驟4.3:微指令執(zhí)行單元根據(jù)微指令的類型控制IO時(shí)序接口模塊執(zhí)行微指令,如果存在數(shù)據(jù)操作,則控制數(shù)據(jù)傳輸模塊進(jìn)行數(shù)據(jù)傳輸;
[0063]步驟4.4:微指令執(zhí)行單元實(shí)時(shí)監(jiān)控各條微指令的執(zhí)行狀態(tài),在執(zhí)行完成后,將執(zhí)行結(jié)果返回給指令分解單元,同時(shí)微指令調(diào)度單元更新緩存中微指令的相關(guān)關(guān)系;
[0064]步驟4.5:指令分解單元將微指令執(zhí)行單元返回的執(zhí)行結(jié)果寫(xiě)入指令接收模塊的狀態(tài)隊(duì)列。
[0065]進(jìn)一步,步驟4.2中微指令調(diào)度單元中的預(yù)定執(zhí)行策略為:微指令調(diào)度單元收到一條微指令時(shí),
[0066]首先,根據(jù)預(yù)定的微指令優(yōu)先級(jí)設(shè)定規(guī)則為微指令執(zhí)行單元緩存中的各微指令排列優(yōu)先級(jí);
[0067]其次,根據(jù)預(yù)定的微指令相關(guān)關(guān)系判斷規(guī)則,判斷該微指令是否具有相關(guān)關(guān)系;
[0068]最后,通過(guò)預(yù)定調(diào)度算法選擇出無(wú)相關(guān)關(guān)系、優(yōu)先級(jí)最高的微指令,發(fā)送給微指令執(zhí)行單元同時(shí)執(zhí)行,如果沒(méi)有無(wú)相關(guān)關(guān)系的微指令,則等待。
[0069]進(jìn)一步,所述預(yù)定的微指令優(yōu)先級(jí)設(shè)定規(guī)則包括,無(wú)執(zhí)行時(shí)間的微指令的優(yōu)先級(jí)比任何有執(zhí)行時(shí)間的微指令的優(yōu)先級(jí)高;先收到的微指令的優(yōu)先級(jí)高于后收到的微指令的優(yōu)先級(jí);
[0070]所述預(yù)定的微指令相關(guān)關(guān)系判斷規(guī)則包括,設(shè)置寫(xiě)指令的第一條微指令與比它優(yōu)先級(jí)高的讀指令的最后一條微指令具有相關(guān)關(guān)系;如果兩條微指令需要使用相同的資源,則優(yōu)先級(jí)低的微指令具有相關(guān)關(guān)系;無(wú)執(zhí)行時(shí)間的微指令無(wú)相關(guān)關(guān)系,有執(zhí)行時(shí)間的微指令有相關(guān)關(guān)系;
[0071]所述預(yù)定調(diào)度算法為,按照無(wú)相關(guān)關(guān)系、優(yōu)先級(jí)由高到低的順序調(diào)度微指令,將微指令發(fā)送給微指令執(zhí)行單元。
[0072]進(jìn)一步,上述技術(shù)方案還包括當(dāng)指令在執(zhí)行過(guò)程中出現(xiàn)錯(cuò)誤時(shí),可通過(guò)配置指令接收模塊的寄存器單元,將指令執(zhí)行過(guò)程在指令處理模塊的指令分解單元終止或在微指令調(diào)度單元終止;如果在指令分解單元終止,則指令分解單元停止工作,微指令調(diào)度單元繼續(xù)工作,所有已經(jīng)在微指令調(diào)度單元緩存的微指令都會(huì)繼續(xù)執(zhí)行;如果在微指令調(diào)度單元終止,則微指令調(diào)度單元也停止工作,外部系統(tǒng)可查詢指令接收模塊的命令隊(duì)列和指令處理模塊的微指令調(diào)度單元的緩存,分析當(dāng)前狀態(tài)并進(jìn)行差錯(cuò)處理。
【專利附圖】

【附圖說(shuō)明】[0073]圖1為本發(fā)明所述多通道Nand Flash控制器內(nèi)部結(jié)構(gòu)框圖;
[0074]圖2為本發(fā)明所述指令接收模塊內(nèi)部結(jié)構(gòu)框圖;
[0075]圖3為本發(fā)明所述指令處理模塊內(nèi)部結(jié)構(gòu)框圖;
[0076]圖4為本發(fā)明所述數(shù)據(jù)傳輸模塊內(nèi)部結(jié)構(gòu)框圖;
[0077]圖5為本發(fā)明所述多通道Nand Flash控制器控制多個(gè)Nand Flash芯片的控制方法流程圖;
[0078]圖6為本發(fā)明所述步驟4的具體實(shí)現(xiàn)流程圖;
[0079]圖7a_7c分別為本發(fā)明所述NAND Flash讀寫(xiě)擦指令的時(shí)序圖;
[0080]圖8為本發(fā)明所述實(shí)施例1中指令執(zhí)行時(shí)間軸向圖;
[0081]圖9為本發(fā)明所述實(shí)施例2中指令執(zhí)行時(shí)間軸向圖;
[0082]圖10為本發(fā)明所述實(shí)施例3中指令執(zhí)行時(shí)間軸向圖。
[0083]附圖中,各標(biāo)號(hào)所代表的部件列表如下:
[0084]1、總線接口模塊,2、指令接收模塊,3、指令處理模塊,4、IO接口實(shí)時(shí)序模塊,5、數(shù)據(jù)傳輸模塊,101、控制總線模塊,102、數(shù)據(jù)總線模塊,201、寄存器單元,202、指令隊(duì)列,203、狀態(tài)隊(duì)列,301、指令分解單元,302、微指令調(diào)度單元,303、微指令執(zhí)行單元,501、ECC單元、
502、數(shù)據(jù)緩存單元,503、DMA引擎。
【具體實(shí)施方式】
[0085]以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0086]如圖1所示,本發(fā)明所述多通道Nand Flash控制器與多個(gè)NAND Flash芯片連接,其與NAND Flash芯片的接口為多級(jí)流水結(jié)構(gòu),所有Flash芯片的數(shù)據(jù)總線和控制總線公用,片選信號(hào)獨(dú)立。
[0087]本發(fā)明所述多通道Nand Flash控制器包括用于與外部系統(tǒng)交互的總線接口 1、指令接收模塊2、指令處理模塊3、IO時(shí)序接口模塊4和數(shù)據(jù)傳輸模塊5。
[0088]所述總線接口 I包括控制總線接口 101和數(shù)據(jù)總線接口 102??刂瓶偩€接口 101提供對(duì)指令接收模塊2中寄存器單元201、指令隊(duì)列202、狀態(tài)隊(duì)列203的訪問(wèn)。通過(guò)CPU上運(yùn)行軟件應(yīng)用程序?qū)崿F(xiàn)控制。而數(shù)據(jù)傳輸采用獨(dú)立的總線,可以與內(nèi)存總線直接相連,通過(guò)DMA方式訪問(wèn),保證數(shù)據(jù)傳輸?shù)男阅堋?br> [0089]如圖2所示,指令接收模塊2包括寄存器單元201、指令隊(duì)列202、狀態(tài)隊(duì)列203。
[0090]寄存器單元201用于配置控制器的參數(shù)以及查詢控制器的狀態(tài)信息;指令隊(duì)列202是FIFO結(jié)構(gòu)的緩存,可以緩存32條命令。每條指令包括對(duì)Nand Flash的操作指令、地址、需要傳輸?shù)臄?shù)據(jù)長(zhǎng)度等信息。
[0091]狀態(tài)隊(duì)列203是FIFO結(jié)構(gòu)的緩存,可以緩存32條狀態(tài)信息。每條指令在執(zhí)行完成后都會(huì)返回指令執(zhí)行的狀態(tài)。狀態(tài)信息包括對(duì)應(yīng)的指令編號(hào)、指令執(zhí)行是否正確、執(zhí)行錯(cuò)誤的原因等信息。
[0092]如圖3所示,指令處理模塊3包括指令分解單元301、微指令調(diào)度單元302和微指令執(zhí)行單元303。
[0093]指令分解單元301用于將指令隊(duì)列202中的指令分解成若干個(gè)微指令,然后發(fā)送給微指令調(diào)度單元302。
[0094]微指令調(diào)度單元302是控制器的核心單元。調(diào)度器內(nèi)部有一個(gè)存儲(chǔ)空間,用于存儲(chǔ)多條微指令。微指令的執(zhí)行并不是按照先進(jìn)先出的原則,而是根據(jù)調(diào)度算法,判斷它們之間的相關(guān)關(guān)系,以性能最優(yōu)的順序調(diào)度。并且在執(zhí)行過(guò)程中一些優(yōu)先級(jí)高的微指令可以搶占優(yōu)先級(jí)低的微指令。
[0095]微指令執(zhí)行單元303根據(jù)微指令調(diào)度單元302的要求執(zhí)行微指令。同時(shí)在有數(shù)據(jù)傳輸需求的時(shí)候管理數(shù)據(jù)緩存單元502、控制DMA引擎503進(jìn)行數(shù)據(jù)傳輸。在一些微指令執(zhí)行完成后,會(huì)返回狀態(tài)信息給指令分解單元301,指令分解單元301進(jìn)而將狀態(tài)信息返回給狀態(tài)隊(duì)列203。
[0096]所述IO接口時(shí)序模塊,其采用M級(jí)流水的方式與多個(gè)Nand Flash芯片連接,IO接口時(shí)序模塊4實(shí)現(xiàn)NAND Flash芯片要求的接口時(shí)序電路,在系統(tǒng)復(fù)位后自動(dòng)調(diào)整信號(hào)時(shí)延,校準(zhǔn)接口時(shí)序關(guān)系。能夠支持異步接口時(shí)序和ONFI同步接口時(shí)序,軟件通過(guò)控制寄存器單元201可以切換。
[0097]如圖4所示,數(shù)據(jù)傳輸模塊5包括ECC單元501、數(shù)據(jù)緩存單元502和DMA引擎
503。
[0098]ECC單元501在寫(xiě)入數(shù)據(jù)時(shí)生成ECC校驗(yàn)碼,寫(xiě)入NAND Flash的spare區(qū),在讀取數(shù)據(jù)時(shí)與讀取的ECC校驗(yàn)碼比對(duì),糾正數(shù)據(jù)錯(cuò)誤。ECC采用的編碼為BCH編碼,每512字節(jié)可最多糾正8比特的錯(cuò)誤,超過(guò)8比特的錯(cuò)誤無(wú)法糾正。這些信息會(huì)通過(guò)微指令執(zhí)行單元在狀態(tài)信息中反應(yīng)出來(lái)。
[0099]數(shù)據(jù)緩存單元502用于緩存讀寫(xiě)的數(shù)據(jù)。緩存單元的大小為兩個(gè)NANDFlash的頁(yè)的大小。緩存通過(guò)雙口 RAM實(shí)現(xiàn),在緩存與NAND Flash進(jìn)行傳輸數(shù)據(jù)的同時(shí),也可以通過(guò)DMA引擎與數(shù)據(jù)總線進(jìn)行數(shù)據(jù)傳輸。
[0100]DMA引擎503單元實(shí)現(xiàn)緩存數(shù)據(jù)與內(nèi)存數(shù)據(jù)的直接交互,不需要軟件程序的干預(yù),極大地提高了數(shù)據(jù)傳輸?shù)男省?br> [0101]如圖5所不,一種多通道Nand Flash控制器控制多個(gè)Nand Flash芯片的方法,包括如下步驟:
[0102]步驟1:上電復(fù)位或軟件控制復(fù)位時(shí),控制器進(jìn)行初始化操作;
[0103]步驟2:總線接口模塊的控制總線接口接收外部輸入的各種指令,并發(fā)送給指令接收模塊;
[0104]步驟3:指令接收模塊驗(yàn)證接收指令的正確性,驗(yàn)證通過(guò)的指令傳送給指令處理模塊;
[0105]步驟4:指令處理模塊將指令分解成若干微指令,并按預(yù)定執(zhí)行策略通過(guò)IO接口時(shí)序模塊執(zhí)行相應(yīng)的微指令;
[0106]步驟5:數(shù)據(jù)傳遞模塊根據(jù)指令處理模塊的相應(yīng)動(dòng)作,通過(guò)總線接口模塊的數(shù)據(jù)總線接口配合完成數(shù)據(jù)的傳輸。
[0107]如圖6所示,步驟4中所述指令處理模塊將指令分解成若干微指令,并按預(yù)定執(zhí)行策略執(zhí)行相應(yīng)的微指令的具體實(shí)現(xiàn)為:
[0108]步驟4.1:指令分解單元將接收的指令分解成若干個(gè)微指令,并將微指令發(fā)送給微指令調(diào)度單元的緩存空間;[0109]步驟4.2:微指令調(diào)度單元根據(jù)預(yù)定的執(zhí)行策略在每接收一條微指令時(shí),對(duì)其內(nèi)部緩存中的微指令排序,并將微指令依次傳送給微指令執(zhí)行單元;
[0110]步驟4.3:微指令執(zhí)行單元根據(jù)微指令的類型控制IO時(shí)序接口模塊執(zhí)行微指令,如果存在數(shù)據(jù)操作,則控制數(shù)據(jù)傳輸模塊進(jìn)行數(shù)據(jù)傳輸;
[0111]步驟4.4:微指令執(zhí)彳了單兀實(shí)時(shí)監(jiān)控各條微指令的執(zhí)彳了狀態(tài),在執(zhí)彳了完成后,將執(zhí)行結(jié)果返回給指令分解單元,同時(shí)微指令調(diào)度單元更新緩存中微指令的相關(guān)關(guān)系;
[0112]步驟4.5:指令分解單元將微指令執(zhí)行單元返回的執(zhí)行結(jié)果寫(xiě)入指令接收模塊的狀態(tài)隊(duì)列。
[0113]其中,指令分解單元在不斷從指令接收模塊的指令隊(duì)列獲取指令,并實(shí)時(shí)判斷指令接收模塊的指令隊(duì)列是否為空,如果為空,則等待,直至為非空;如果為非空,則繼續(xù)獲取指令并分解,直到微指令調(diào)度單元的緩存空間沒(méi)有剩余空間為止。
[0114]下面對(duì)本申請(qǐng)中所述的微指令進(jìn)行如下介紹。
[0115]為了優(yōu)化系統(tǒng)的調(diào)度,需要將對(duì)NAND Flash操作的讀寫(xiě)擦指令分解為更小的操作單元,即微指令。除讀寫(xiě)擦指令外其它指令執(zhí)行幾率很小,基本不影響系統(tǒng)性能,故其它指令保持不變。
[0116]圖7a_7c分別是NAND Flash讀寫(xiě)擦指令的時(shí)序圖,下面將讀寫(xiě)擦指令在控制器中的操作流程進(jìn)行分解:
[0117]1.讀數(shù)據(jù)指令分解為四條微指令:讀命令操作RC、讀等待RW、讀數(shù)據(jù)操作RD和DMA數(shù)據(jù)傳輸操作DD。
[0118]RC為控制器將Read Page命令寫(xiě)入NAND Flash的操作,時(shí)間只有幾個(gè)時(shí)鐘周期,相對(duì)于其它操作占用的時(shí)間,可忽略不計(jì)。
[0119]Rff為NAND Flash內(nèi)部執(zhí)行讀操作的等待時(shí)間,這段時(shí)間可以通過(guò)NAND Flash的R/B#引腳進(jìn)行監(jiān)測(cè)。時(shí)間長(zhǎng)度記為tR,與NAND Flash芯片的型號(hào)有關(guān)。
[0120]RD為控制器將數(shù)據(jù)從NAND Flash讀取到數(shù)據(jù)緩存單元,時(shí)間長(zhǎng)度記為tD,與接口類型(同步/異步)和接口時(shí)鐘速率有關(guān)。
[0121]DD為控制器的數(shù)據(jù)緩存單元與數(shù)據(jù)總線之間進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)長(zhǎng)度為頁(yè)大小,時(shí)間長(zhǎng)度記為tBD,與數(shù)據(jù)總線的性能有關(guān)。
[0122]2.寫(xiě)數(shù)據(jù)指令分解為四條微指令:DMA數(shù)據(jù)傳輸操作DD、寫(xiě)數(shù)據(jù)操作WD,寫(xiě)等待WW和狀態(tài)查詢操作SC。
[0123]DD與讀命令中相同,即控制器的數(shù)據(jù)緩存與數(shù)據(jù)總線之間進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)長(zhǎng)度為頁(yè)大小,時(shí)間長(zhǎng)度記為tBD,與數(shù)據(jù)總線的性能有關(guān)。
[0124]WD為控制器將Program Page命令寫(xiě)入NAND Flash,再將數(shù)據(jù)寫(xiě)入NAND Flash操作,時(shí)間長(zhǎng)度為tD,與RD的執(zhí)行時(shí)間相同。
[0125]Wff為NAND Flash內(nèi)部執(zhí)行寫(xiě)操作的等待時(shí)間,這段時(shí)間可以通過(guò)NANDFlash的R/B#引腳進(jìn)行監(jiān)測(cè)。時(shí)間長(zhǎng)度記為tW,與NAND Flash芯片的型號(hào)有關(guān)。
[0126]SC執(zhí)行READ STATUS命令,讀取NAND Flash的狀態(tài)信息,以確定之前的命令是否執(zhí)行成功,其執(zhí)行時(shí)間可忽略不計(jì)。
[0127]3.擦除數(shù)據(jù)指令分解為三條微指令:塊擦除命令操作EC,擦除等待EW和狀態(tài)查詢操作SC。[0128]EC為控制器將ERASE BLOCK命令寫(xiě)入NAND Flash的操作,執(zhí)行時(shí)間忽略不計(jì)。
[0129]EW為NAND Flash內(nèi)部執(zhí)行擦除操作的等待時(shí)間,這段時(shí)間可以通過(guò)NANDFlash的R/B#引腳進(jìn)行監(jiān)測(cè)。時(shí)間長(zhǎng)度記為tE,與NAND Flash芯片的型號(hào)有關(guān)。
[0130]SC與寫(xiě)命令中的狀態(tài)查詢相同,即執(zhí)行READ STATUS命令,讀取NAND Flash的狀態(tài)信息,以確定之前的命令是否執(zhí)行成功,其執(zhí)行時(shí)間可忽略不計(jì)。
[0131]下面簡(jiǎn)要介紹微指令的調(diào)度過(guò)程。
[0132]如果按照順序執(zhí)行微指令,則控制器的性能與其它控制器相比沒(méi)有提高。微指令調(diào)度單元302通過(guò)判斷前后微指令的相關(guān)關(guān)系、執(zhí)行時(shí)間,在不改變執(zhí)行結(jié)果的條件下,調(diào)整微指令的執(zhí)行次序,或者通過(guò)優(yōu)先級(jí)搶占方式先執(zhí)行優(yōu)先級(jí)更高的微指令,以提高系統(tǒng)的性能。
[0133]具體的調(diào)度策略如下:
[0134]I)微指令調(diào)度單元302內(nèi)部具有緩存空間,可存儲(chǔ)多條微指令。每條微指令具有相關(guān)關(guān)系和優(yōu)先級(jí)兩個(gè)屬性;
[0135]2)當(dāng)微指令調(diào)度單元302收到微指令時(shí),會(huì)判斷其與緩存中的微指令的優(yōu)先級(jí)以及是否具有相關(guān)關(guān)系等屬性;
[0136]3)緩存中的微指令按照無(wú)相關(guān)關(guān)系、優(yōu)先級(jí)由高到低的順序執(zhí)行,每執(zhí)行完一條微指令,緩存中的微指令與該微指令有關(guān)的相關(guān)關(guān)系將被清除;
[0137]4)通過(guò)調(diào)度算法選擇出最優(yōu)先執(zhí)行的微指令傳輸給微指令執(zhí)行單元303 ;然后繼續(xù)選擇最優(yōu)先執(zhí)行的微指令,如果微指令沒(méi)有相關(guān)關(guān)系,則可以繼續(xù)傳輸給微指令單元執(zhí)行 303。
[0138]預(yù)定的微指令的優(yōu)先級(jí)設(shè)定規(guī)則如下:
[0139]1.無(wú)執(zhí)行時(shí)間的微指令的優(yōu)先級(jí)比任何有執(zhí)行時(shí)間的微指令的優(yōu)先級(jí)高;
[0140]2.先收到的微指令優(yōu)先級(jí)高于后收到的微指令。
[0141]預(yù)定的微指令相關(guān)關(guān)系判斷規(guī)則如下:
[0142]1.寫(xiě)指令中的數(shù)據(jù)可能依賴于在其前面執(zhí)行的讀指令的數(shù)據(jù),因此在執(zhí)行寫(xiě)指令時(shí),應(yīng)等待之前的所有讀指令都執(zhí)行完畢。因此設(shè)置寫(xiě)指令的第一條微指令DD與比它優(yōu)先級(jí)聞的讀操作的最后一條微指令DD具有相關(guān)關(guān)系;
[0143]2.如果兩條微指令需要使用相同的資源,包括外部接口的數(shù)據(jù)總線和NAND Flash接口數(shù)據(jù)總線時(shí),NAND Flash芯片,則優(yōu)先級(jí)低的微指令具有相關(guān)關(guān)系。
[0144]3.無(wú)執(zhí)行時(shí)間的微指令比有執(zhí)行時(shí)間的微指令的優(yōu)先級(jí)高,所以前者無(wú)相關(guān)關(guān)系,可以優(yōu)先調(diào)度。例如當(dāng)前正在執(zhí)行RD微指令,而新接收到非同一級(jí)流水的RC微指令就可以立即調(diào)度。因?yàn)檫@兩條指令都需要使用NANDFlash接口總線,因此將RD暫停執(zhí)行,釋放總線,讓RC優(yōu)先執(zhí)行,等RC執(zhí)行完成后,RD再次占用總線資源,可以繼續(xù)執(zhí)行。
[0145]下面介紹微指令的執(zhí)行過(guò)程。
[0146]微指令執(zhí)行單元303將負(fù)責(zé)執(zhí)行微指令,監(jiān)控執(zhí)行過(guò)程中的狀態(tài)。在WS、RS和ES執(zhí)行完成后將執(zhí)行狀態(tài)寫(xiě)入狀態(tài)隊(duì)列202。
[0147]微指令執(zhí)行單元303支持多條微指令并行執(zhí)行,由調(diào)度策略確保這些指令沒(méi)有相關(guān)關(guān)系。例如在執(zhí)行DD進(jìn)行數(shù)據(jù)DMA傳輸?shù)耐瑫r(shí),還可以同時(shí)執(zhí)行RD讀取某一片NANDFlash的數(shù)據(jù),同時(shí)執(zhí)行RC對(duì)另一片NAND Flash寫(xiě)入命令。[0148]在微指令中,只有DD、RD、WD三條微指令涉及到數(shù)據(jù)傳輸,需要在執(zhí)行之前申請(qǐng)數(shù)據(jù)緩存。由于微指令在使用數(shù)據(jù)總線需要判斷相關(guān)關(guān)系,因此在同一時(shí)刻只能有一條DD微指令執(zhí)行,同理,在同一時(shí)刻也只能有一條RD或WD微指令執(zhí)行,因此數(shù)據(jù)緩存的大小為兩頁(yè)的大小就能夠滿足要求。
[0149]下面介紹控制器整體操作流程。
[0150]控制器在上電復(fù)位或者軟件控制寄存器復(fù)位后,會(huì)進(jìn)行初始化操作。寄存器會(huì)恢復(fù)到初始值,指令隊(duì)列202和狀態(tài)隊(duì)列203會(huì)清空。然后IO接口時(shí)序模塊4會(huì)校準(zhǔn)與NANDFlash連接的時(shí)序關(guān)系。
[0151]在軟件將指令寫(xiě)入指令隊(duì)列202后,如果指令錯(cuò)誤或參數(shù)錯(cuò)誤,指令會(huì)被丟棄,并將錯(cuò)誤信息從狀態(tài)隊(duì)列返回。在判定指令有效后,指令分解單元201將其分解為若干個(gè)微指令。若指令隊(duì)列202非空,則繼續(xù)分解命令,直到微指令調(diào)度單元302的緩存空間用完。微指令調(diào)度單元302根據(jù)調(diào)度算法對(duì)微指令排序,依次傳輸給微指令執(zhí)行單元303。微指令執(zhí)行單元303根據(jù)命令的類型,控制IO接口時(shí)序模塊執(zhí)行微指令,如果有數(shù)據(jù)操作,則控制數(shù)據(jù)傳輸模塊5進(jìn)行數(shù)據(jù)傳輸。在執(zhí)行完成后,將執(zhí)行結(jié)果狀態(tài)返回給指令分解單元301。指令分解單元301按照命令接收的順序重新排列后,將狀態(tài)返回給狀態(tài)隊(duì)列203。根據(jù)中斷寄存器配置情況,可以在指令執(zhí)行完成時(shí)產(chǎn)生中斷信號(hào)通知軟件。軟件從狀態(tài)隊(duì)列中讀取狀態(tài)字,確認(rèn)指令正確執(zhí)行完成。
[0152]當(dāng)指令在執(zhí)行過(guò)程中出錯(cuò),例如發(fā)生不可恢復(fù)的ECC錯(cuò)誤、或擦除命令執(zhí)行中出現(xiàn)壞塊等情況,通過(guò)配置寄存器,可以讓控制器在指令分解單元301終止或在微指令調(diào)度單元302中止。如果在指令分解單元301終止,所有已經(jīng)在微指令調(diào)度單元302緩存的指令都會(huì)繼續(xù)執(zhí)行。如果在微指令調(diào)度單元302終止,則在出錯(cuò)后立即暫停。軟件可以查詢命令隊(duì)列203和微指令緩存,分析當(dāng)前狀態(tài)并進(jìn)行差錯(cuò)處理。
[0153]下面以具體操作實(shí)例進(jìn)行`進(jìn)一步描述。
[0154]以控制器連接Micron的MT29F32G08ABCAB為例,其頁(yè)大小為8kB??刂破鞑捎?級(jí)流水方式,即與4片F(xiàn)lash進(jìn)行連接。與NAND Flash之間接口為同步接口,時(shí)鐘頻率IOOMHz0外部接口數(shù)據(jù)總線為AXI4,128bit,100MHz。下面舉例說(shuō)明在不同的條件下的讀寫(xiě)時(shí)間和性能指標(biāo)。時(shí)間參數(shù)如表1:
[0155]表1
指令執(zhí)行時(shí)間說(shuō)明數(shù)值(典型值)
RWtR讀命令等待時(shí)間35us
WWtw寫(xiě)命令等待時(shí)間350US
[0156]----
EWIE擦命令等待時(shí)間15 OOus
RD/WDiD NAND Flash與控制器之間進(jìn) 41us
行一頁(yè)數(shù)據(jù)傳輸?shù)臅r(shí)間。
【權(quán)利要求】
1.一種多通道Nand Flash控制器,其特征在于,包括總線接口模塊、指令接收模塊、指令處理模塊、IO接口時(shí)序模塊、數(shù)據(jù)傳輸模塊; 所述總線接口模塊,其與指令接收模塊或數(shù)據(jù)傳輸模塊連接,用于實(shí)現(xiàn)控制器與外部系統(tǒng)總線的命令及數(shù)據(jù)交互; 所述指令接收模塊,其與指令處理模塊連接,用于緩存指令,并將指令發(fā)送給指令處理模塊,還用于存儲(chǔ)指令的執(zhí)行狀態(tài); 所述指令處理模塊,其與IO接口時(shí)序模塊連接,用于將接收的指令分解為若干個(gè)微指令,按照預(yù)定的執(zhí)行策略執(zhí)行微指令,通過(guò)IO接口時(shí)序模塊對(duì)Nand Flash芯片進(jìn)行相應(yīng)操作,并監(jiān)測(cè)微指令的執(zhí)行過(guò)程,執(zhí)行完成向指令接收模塊返回執(zhí)行狀態(tài); 所述IO接口時(shí)序模塊,其采用M級(jí)流水的方式與多個(gè)Nand Flash芯片連接,用于實(shí)現(xiàn)Nand Flash芯片要求的接口時(shí)序電路,在系統(tǒng)復(fù)位后自動(dòng)調(diào)整信號(hào)時(shí)延,校準(zhǔn)接口時(shí)序關(guān)系; 所述數(shù)據(jù)傳輸模塊,其與IO接口時(shí)序模塊連接,用于根據(jù)微指令通過(guò)IO接口時(shí)序模塊傳輸向Nand Flash寫(xiě)入數(shù)據(jù)或從Nand Flash讀取的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述一種多通道NandFlash控制器,其特征在于,所述指令接收模塊包括寄存器單元、指令隊(duì)列和狀態(tài)隊(duì)列; 所述寄存器,其用于存儲(chǔ)控制器的配置參數(shù)及狀態(tài)信息; 所述指令隊(duì)列,其用于 接收外部由控制總線接口輸入的指令,并將指令傳送給指令處理模塊的指令分解單元; 所述狀態(tài)隊(duì)列,其用于存儲(chǔ)每條指令在執(zhí)行完成后的狀態(tài)信息。
3.根據(jù)權(quán)利要求1所述一種多通道NandFlash控制器,其特征在于,所述指令處理模塊包括指令分解單元、微指令調(diào)度單元和微指令執(zhí)行單元;所述指令分解單元,其用于將接收的指令分解成若干個(gè)微指令,并將微指令發(fā)送給微指令調(diào)度單元;還用于將微指令執(zhí)行單元返回的執(zhí)行狀態(tài)寫(xiě)入指令接收模塊的狀態(tài)隊(duì)列;所述微指令調(diào)度單元,其用于根據(jù)預(yù)定的調(diào)度算法在每接收一條微指令時(shí),對(duì)其內(nèi)部緩存中的微指令排序,并將微指令依次傳送給微指令執(zhí)行單元,并每執(zhí)行完一條微指令,根據(jù)預(yù)定的算法更新緩存中的微指令的相關(guān)關(guān)系; 所述微指令執(zhí)行單元,其用于根據(jù)微指令的類型控制IO時(shí)序接口模塊執(zhí)行微指令,如果存在數(shù)據(jù)操作,則控制數(shù)據(jù)傳輸模塊進(jìn)行數(shù)據(jù)傳輸;其還用于監(jiān)控各條微指令的執(zhí)行狀態(tài),在執(zhí)行完成后,將執(zhí)行狀態(tài)返回給指令分解單元。
4.根據(jù)權(quán)利要求1所述一種多通道NandFlash控制器,其特征在于,所述數(shù)據(jù)傳輸模塊包括ECC單元、數(shù)據(jù)緩存單元和DMA引擎; 所述ECC單元,其用于在向Nand Flash寫(xiě)入數(shù)據(jù)時(shí)生成ECC校驗(yàn)碼,并將ECC校驗(yàn)碼寫(xiě)入Nand Flash的apare區(qū);還用于從Nand Flash讀取數(shù)據(jù)時(shí)讀取ECC校驗(yàn)碼,利用讀取的ECC校驗(yàn)碼糾正數(shù)據(jù)錯(cuò)誤; 所述數(shù)據(jù)緩存單元,其用于緩存待寫(xiě)入Nand Flash的數(shù)據(jù)或從Nand Flash讀出的數(shù)據(jù); 所述DMA引擎,其用于實(shí)現(xiàn)數(shù)據(jù)緩存單元與內(nèi)存的數(shù)據(jù)交互。
5.根據(jù)權(quán)利要求3所述一種多通道NandFlash控制器,其特征在于,所述微指令調(diào)度單元內(nèi)部具有緩存空間,可存儲(chǔ)多條微指令;微指令執(zhí)行單元支持多條無(wú)相關(guān)關(guān)系的微指令同時(shí)執(zhí)行。
6.一種利用權(quán)利要求1至5中任一項(xiàng)所述多通道Nand Flash控制器控制多個(gè)NandFlash芯片的方法,其特征在于,包括如下步驟: 步驟1:上電復(fù)位或軟件控制復(fù)位時(shí),控制器進(jìn)行初始化操作; 步驟2:總線接口模塊的控制總線接口接收外部輸入的各種指令,并發(fā)送給指令接收模塊; 步驟3:指令接收模塊驗(yàn)證接收指令的正確性,驗(yàn)證通過(guò)的指令傳送給指令處理模塊;步驟4:指令處理模塊將指令分解成若干微指令,并按預(yù)定執(zhí)行策略通過(guò)IO接口時(shí)序模塊執(zhí)行相應(yīng)的微指令; 步驟5:數(shù)據(jù)傳遞模塊根據(jù)指令處理模塊的相應(yīng)動(dòng)作,通過(guò)總線接口模塊的數(shù)據(jù)總線接口配合完成數(shù)據(jù)的傳輸。
7.根據(jù)權(quán)利要求6所述一種多通道NandFlash控制器控制多個(gè)NandFlash芯片的方法,其特征在于,步驟4中所述指令處理模塊將指令分解成若干微指令,并按預(yù)定執(zhí)行策略執(zhí)行相應(yīng)的微指令的具體實(shí)現(xiàn)為: 步驟4.1:指令分解單 元將接收的指令分解成若干個(gè)微指令,并將微指令發(fā)送給微指令調(diào)度單元的緩存空間; 步驟4.2:微指令調(diào)度單元根據(jù)預(yù)定的執(zhí)行策略在每接收一條微指令時(shí),對(duì)其內(nèi)部緩存中的微指令排序,并將微指令依次傳送給微指令執(zhí)行單元; 步驟4.3:微指令執(zhí)行單元根據(jù)微指令的類型控制IO時(shí)序接口模塊執(zhí)行微指令,如果存在數(shù)據(jù)操作,則控制數(shù)據(jù)傳輸模塊進(jìn)行數(shù)據(jù)傳輸; 步驟4.4:微指令執(zhí)行單元實(shí)時(shí)監(jiān)控各條微指令的執(zhí)行狀態(tài),在執(zhí)行完成后,將執(zhí)行結(jié)果返回給指令分解單元,同時(shí)微指令調(diào)度單元更新緩存中微指令的相關(guān)關(guān)系; 步驟4.5:指令分解單元將微指令執(zhí)行單元返回的執(zhí)行結(jié)果寫(xiě)入指令接收模塊的狀態(tài)隊(duì)列。
8.根據(jù)權(quán)利要求7所述一種多通道NandFlash控制器控制多個(gè)NandFlash芯片的方法,其特征在于,步驟4.2中微指令調(diào)度單元中的預(yù)定執(zhí)行策略為:微指令調(diào)度單元收到一條微指令時(shí), 首先,根據(jù)預(yù)定的微指令優(yōu)先級(jí)設(shè)定規(guī)則為微指令執(zhí)行單元緩存中的各微指令排列優(yōu)先級(jí); 其次,根據(jù)預(yù)定的微指令相關(guān)關(guān)系判斷規(guī)則,判斷該微指令是否具有相關(guān)關(guān)系; 最后,通過(guò)預(yù)定調(diào)度算法選擇出無(wú)相關(guān)關(guān)系、優(yōu)先級(jí)最高的微指令,發(fā)送給微指令執(zhí)行單元同時(shí)執(zhí)行,如果沒(méi)有無(wú)相關(guān)關(guān)系的微指令,則等待。
9.根據(jù)權(quán)利要求8所述一種多通道NandFlash控制器控制多個(gè)NandFlash芯片的方法,其特征在于, 所述預(yù)定的微指令優(yōu)先級(jí)設(shè)定規(guī)則包括,無(wú)執(zhí)行時(shí)間的微指令的優(yōu)先級(jí)比任何有執(zhí)行時(shí)間的微指令的優(yōu)先級(jí)高;先收到的微指令的優(yōu)先級(jí)高于后收到的微指令的優(yōu)先級(jí); 所述預(yù)定的微指令相關(guān)關(guān)系判斷規(guī)則包括,設(shè)置寫(xiě)指令的第一條微指令與比它優(yōu)先級(jí)高的讀指令的最后一條微指令具有相關(guān)關(guān)系;如果兩條微指令需要使用相同的資源,則優(yōu)先級(jí)低的微指令具有相關(guān)關(guān)系;無(wú)執(zhí)行時(shí)間的微指令無(wú)相關(guān)關(guān)系,有執(zhí)行時(shí)間的微指令有相關(guān)關(guān)系; 所述預(yù)定調(diào)度算法為,按照無(wú)相關(guān)關(guān)系、優(yōu)先級(jí)由高到低的順序調(diào)度微指令,將微指令發(fā)送給微指令執(zhí)行單元。
10.根據(jù)權(quán)利要求6所述一種多通道Nand Flash控制器控制多個(gè)NandFlash芯片的方法,其特征在于,上述技術(shù)方案還包括當(dāng)指令在執(zhí)行過(guò)程中出現(xiàn)錯(cuò)誤時(shí),可通過(guò)配置指令接收模塊的寄存器單元,將指令執(zhí)行過(guò)程在指令處理模塊的指令分解單元終止或在微指令調(diào)度單元終止;如果在指令分解單元終止,則指令分解單元停止工作,微指令調(diào)度單元繼續(xù)工作,所有已經(jīng)在微指令調(diào)度單元緩存的微指令都會(huì)繼續(xù)執(zhí)行;如果在微指令調(diào)度單元終止,則微指令調(diào)度單元也停止工作 ,外部系統(tǒng)可查詢指令接收模塊的命令隊(duì)列和指令處理模塊的微指令調(diào)度單元的緩存,分析當(dāng)前狀態(tài)并進(jìn)行差錯(cuò)處理。
【文檔編號(hào)】G06F9/48GK103778013SQ201410034956
【公開(kāi)日】2014年5月7日 申請(qǐng)日期:2014年1月24日 優(yōu)先權(quán)日:2014年1月24日
【發(fā)明者】曹麗劍, 房亮, 吳少俊, 曹素芝, 閆蕾, 宮永生 申請(qǐng)人:中國(guó)科學(xué)院空間應(yīng)用工程與技術(shù)中心
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
滨海县| 博乐市| 安乡县| 霍州市| 赞皇县| 历史| 深州市| 崇信县| 凤翔县| 沈丘县| 泸定县| 中超| 阳高县| 盖州市| 海城市| 稻城县| 兴仁县| 分宜县| 紫阳县| 临洮县| 孝昌县| 乐昌市| 高陵县| 肃北| 孟津县| 遂宁市| 高阳县| 大宁县| 庆安县| 清水河县| 读书| 京山县| 襄垣县| 宜都市| 闽清县| 宁远县| 郴州市| 泊头市| 买车| 邵阳市| 嘉定区|