寫控制裝置和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式系統(tǒng)領(lǐng)域,尤其涉及一種寫控制裝置和方法。
【背景技術(shù)】
[0002]當今隨著電子信息化的發(fā)展,嵌入式系統(tǒng)得到廣泛的應用,包括家電、汽車電子、航空航天、金融、個人消費類產(chǎn)品等各個領(lǐng)域。在嵌入式系統(tǒng)中通常會包括微控制器和用來存儲指令和數(shù)據(jù)的非易失性存儲器(Non Volatile Memory,簡稱:NVM),這些NVM通常是由帶電可擦可編程只讀存儲器(Electrically Erasable Programmable Read-Only Memory,簡稱:EEPR0M)和EFLASH來實現(xiàn)。微控制器需要對這些NVM進行訪問,以完成指令的讀取以及數(shù)據(jù)的存儲操作,而這些NVM讀取的速度一般相對較快,而寫入的速度則比較慢,所以如何提高NVM的寫入效率是一個重要的問題。
[0003]目前,存儲器一般選用頁寫的方式來提高寫入效率,對于有大量數(shù)據(jù)寫入的情況,將數(shù)據(jù)分頁進行寫入,這樣,對于同一頁的內(nèi)容進行一次擦除操作,可以解決反復擦寫造成的效率降低的問題。但對于隨機寫入少量數(shù)據(jù)的情況,會在一頁上寫入該少量數(shù)據(jù),若存儲器采用頁寫的方式,仍然需要對整頁進行寫入操作,這樣就會造成時間的浪費,降低存儲器的寫入效率。
[0004]現(xiàn)有技術(shù)中,針對系統(tǒng)總線位寬小于存儲器位寬時的情況,系統(tǒng)總線有時為了提高執(zhí)行的效率會發(fā)出半字寫和全字寫的指令,但由于系統(tǒng)總線位寬小于半字或者全字寬度,所以系統(tǒng)總線要執(zhí)行兩次以上的寫入操作才能完成一條半字或者全字的寫操作指令,即系統(tǒng)總線發(fā)出一條表示幾個連續(xù)寫入操作的指令,例如:進行4個連續(xù)寫入操作的指令或進行2個連續(xù)寫入操作的指令,而此時存儲器也會進行相應次數(shù)的寫入操作,這就增加了存儲器寫入的次數(shù),并且由于存儲器每次寫入需要耗費大量的時間,因此降低了存儲器的寫入效率。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種寫控制裝置和方法,用以減少存儲器的寫入次數(shù),提高存儲器的寫入效率。
[0006]本發(fā)明提供一種寫控制裝置,所述裝置布置在系統(tǒng)總線和存儲器之間,所述裝置包括緩存模塊、檢測模塊、第一寫入模塊和第二寫入模塊,其中:
[0007]所述檢測模塊用于檢測所述系統(tǒng)總線的狀態(tài);
[0008]所述第一寫入模塊用于當所述系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài)時,將所述系統(tǒng)總線連續(xù)寫入的內(nèi)容寫入所述緩存模塊;
[0009]所述第二寫入模塊用于當所述系統(tǒng)總線的狀態(tài)為讀取狀態(tài)時,暫停所述系統(tǒng)總線的讀取操作,將所述緩存模塊中緩存的內(nèi)容寫入所述存儲器。
[0010]本發(fā)明還提供一種處理系統(tǒng),包括前述的寫控制裝置、處理器和存儲器,所述寫控制裝置與所述處理器之間通過系統(tǒng)總線進行通信,所述寫控制裝置與所述存儲器之間通過內(nèi)部總線進行通信。
[0011]本發(fā)明還提供一種寫控制方法,在系統(tǒng)總線和存儲器之間增加寫控制裝置,所述寫控制裝置包括緩存模塊、檢測模塊、第一寫入模塊和第二寫入模塊,所述方法包括:
[0012]所述檢測模塊檢測所述系統(tǒng)總線的狀態(tài);
[0013]當所述系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài)時,所述第一寫入模塊將所述系統(tǒng)總線連續(xù)寫入的內(nèi)容寫入所述緩存模塊;
[0014]當所述系統(tǒng)總線的狀態(tài)為讀取狀態(tài)時,所述第二寫入模塊暫停所述系統(tǒng)總線的讀取操作,將所述緩存模塊中緩存的內(nèi)容寫入所述存儲器。
[0015]在本發(fā)明中,檢測模塊檢測系統(tǒng)總線的狀態(tài),第一寫入模塊在系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài)時,將系統(tǒng)總線連續(xù)寫入的內(nèi)容寫入緩存模塊中,當檢測模塊檢測到系統(tǒng)總線的狀態(tài)為讀取狀態(tài)時,則第二寫入模塊暫停系統(tǒng)總線的讀取操作,將緩存模塊中緩存的內(nèi)容寫入存儲器中,實現(xiàn)在系統(tǒng)總線有讀取操作時進行向存儲器寫入的操作,使得存儲器無需根據(jù)系統(tǒng)總線的寫入次數(shù)執(zhí)行相應次數(shù)的寫入操作,減少了存儲器的寫入次數(shù),提高了存儲器的寫入效率。
【附圖說明】
[0016]圖1為本發(fā)明寫控制裝置第一實施例的結(jié)構(gòu)示意圖;
[0017]圖2為本發(fā)明寫控制裝置第一實施例的具體工作流程示意圖;
[0018]圖3為本發(fā)明寫控制裝置第二實施例的結(jié)構(gòu)示意圖;
[0019]圖4為本發(fā)明寫控制裝置第二實施例的一個實例的工作流程示意圖;
[0020]圖5為圖4中本發(fā)明寫控制裝置第二實施例的一個實例對應的時序圖;
[0021]圖6為本發(fā)明一種處理系統(tǒng)實施例的結(jié)構(gòu)示意圖。
【具體實施方式】
[0022]下面結(jié)合說明書附圖和【具體實施方式】對本發(fā)明作進一步的描述。
[0023]如圖1所示,為本發(fā)明寫控制裝置第一實施例的結(jié)構(gòu)示意圖,該裝置布置在系統(tǒng)總線和存儲器之間,具體可以包括:檢測模塊11、第一寫入模塊12、緩存模塊13和第二寫入模塊14,其中,第一寫入模塊12與檢測模塊11相連,緩存模塊13與第一寫入模塊12相連,第二寫入模塊14與緩存模塊13相連,檢測模塊11與第二寫入模塊14相連。
[0024]在本實施例中,檢測模塊11用于檢測系統(tǒng)總線的狀態(tài);第一寫入模塊12用于當系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài)時,將系統(tǒng)總線連續(xù)寫入的內(nèi)容寫入緩存模塊13 ;第二寫入模塊14用于當系統(tǒng)總線的狀態(tài)為讀取狀態(tài)時,暫停系統(tǒng)總線的讀取操作,將緩存模塊13中緩存的內(nèi)容寫入存儲器。
[0025]具體地,檢測模塊11在工作過程中檢測系統(tǒng)總線的狀態(tài);若檢測模塊11檢測到系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài),則第一寫入模塊12將系統(tǒng)總線連續(xù)寫入的內(nèi)容寫入緩存模塊13 ;若檢測模塊11檢測到系統(tǒng)總線的狀態(tài)為讀取狀態(tài),則第二寫入模塊14將暫停系統(tǒng)總線的讀取操作,將緩存模塊13中緩存的內(nèi)容寫入存儲器;若系統(tǒng)總線的狀態(tài)不是連續(xù)寫入狀態(tài),也不是讀取狀態(tài),則檢測模塊11繼續(xù)檢測系統(tǒng)總線的狀態(tài),直到檢測到系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài)或者讀取狀態(tài)。
[0026]該實施例的具體工作過程如下:檢測模塊11檢測系統(tǒng)總線的狀態(tài);當系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài)時,第一寫入模塊12將系統(tǒng)總線連續(xù)寫入的內(nèi)容寫入緩存模塊13 ;當系統(tǒng)總線的狀態(tài)為讀取狀態(tài)時,第二寫入模塊14暫停系統(tǒng)總線的讀取操作,將緩存模塊13中緩存的內(nèi)容寫入存儲器。
[0027]具體地,如圖2所示,為本發(fā)明寫控制裝置第一實施例的具體工作流程示意圖,可以包括如下步驟:
[0028]步驟21、檢測模塊11檢測系統(tǒng)總線的狀態(tài),若系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài),則執(zhí)行步驟22,若系統(tǒng)總線的狀態(tài)為讀取狀態(tài),則執(zhí)行步驟24 ;
[0029]在這一步驟中,若檢測模塊11檢測到系統(tǒng)總線的狀態(tài)不是連續(xù)寫入狀態(tài),也不是讀取狀態(tài),則檢測模塊11繼續(xù)進行檢測,直到檢測到系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài)或者讀取狀態(tài)。
[0030]步驟22、檢測模塊11檢測到系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài);
[0031]步驟23、第一寫入模塊12將系統(tǒng)總線連續(xù)寫入的內(nèi)容寫入緩存模塊13 ;
[0032]步驟24、檢測模塊11檢測到系統(tǒng)總線的狀態(tài)為讀取狀態(tài);
[0033]步驟25、第二寫入模塊14暫停系統(tǒng)總線的讀取操作,將緩存模塊13中緩存的內(nèi)容寫入存儲器。
[0034]在本實施例中,檢測模塊11檢測系統(tǒng)總線的狀態(tài),第一寫入模塊12在系統(tǒng)總線的狀態(tài)為連續(xù)寫入狀態(tài)時,將系統(tǒng)總線連續(xù)寫入的內(nèi)容寫