專利名稱:快照裝置中備份存儲(chǔ)器的動(dòng)態(tài)更新方法、模塊以及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種快照裝置中備份靜態(tài)隨機(jī)存取存儲(chǔ)器的動(dòng)態(tài)更新方法,是結(jié)合復(fù)制系統(tǒng)對(duì)主存儲(chǔ)器的寫操作與復(fù)制主存儲(chǔ)器的內(nèi)容兩個(gè)措施實(shí)現(xiàn)動(dòng)態(tài)更新,最終能夠使快照與硬件仿真互不干擾同時(shí)進(jìn)行。
背景技術(shù):
SoC(system on a chip片上系統(tǒng))技術(shù)已經(jīng)成為當(dāng)今超大規(guī)模集成電路的發(fā)展趨勢(shì),它將原來(lái)由許多芯片完成的功能集中到一塊芯片中完成。但SoC不是各個(gè)芯片功能的簡(jiǎn)單疊加,而是從整個(gè)系統(tǒng)的功能和性能出發(fā),用軟硬結(jié)合的設(shè)計(jì)和驗(yàn)證方法,利用IP復(fù)用及深亞微米技術(shù),在一個(gè)芯片上實(shí)現(xiàn)復(fù)雜的功能。雖然SoC技術(shù)可為設(shè)計(jì)更加復(fù)雜的產(chǎn)品提供高效的解決方案,縮短微電子產(chǎn)品的上市時(shí)間,但由于SoC芯片的規(guī)模較大、功能復(fù)雜,增加了設(shè)計(jì)過(guò)程中的仿真驗(yàn)證工作的難度。仿真一般有軟件仿真和硬件仿真,軟件仿真具有電路狀態(tài)全可見的特點(diǎn),而硬件仿真具有速度快的優(yōu)勢(shì)。因此,目前的驗(yàn)證一般采用硬件仿真與軟件仿真結(jié)合的方式進(jìn)行。首先,利用硬件仿真系統(tǒng)導(dǎo)出發(fā)生錯(cuò)誤前某一時(shí)刻的電路狀態(tài)并將其導(dǎo)入軟件仿真系統(tǒng);然后利用軟件仿真系統(tǒng)利用導(dǎo)入的該時(shí)刻的電路狀態(tài)重現(xiàn)該錯(cuò)誤并對(duì)其進(jìn)行具體分析。這種硬件仿真與軟件仿真結(jié)合的驗(yàn)證方案中,測(cè)試項(xiàng)目的大部分是在硬件仿真系統(tǒng)上運(yùn)行的,只有發(fā)生錯(cuò)誤的時(shí)刻的附近的一小部分在軟件仿真系統(tǒng)上運(yùn)行,所以它兼具硬件仿真的高效性與軟件仿真的徹底性的優(yōu)點(diǎn)。
從硬件仿真系統(tǒng)中導(dǎo)出某一時(shí)刻電路狀態(tài)的過(guò)程稱為snapshot(以下簡(jiǎn)稱“快照”)。目前有兩種實(shí)現(xiàn)快照的方式一種是硬件仿真系統(tǒng)在運(yùn)行一個(gè)測(cè)試項(xiàng)目的過(guò)程中只進(jìn)行一次快照(以下稱單次快照(single-snapshot)),另一種是硬件仿真系統(tǒng)在運(yùn)行一個(gè)測(cè)試項(xiàng)目的過(guò)程中每間隔一定的時(shí)間就進(jìn)行一次快照(以下稱多次快照(multi-snapshot))。單次快照的前提是得知發(fā)生錯(cuò)誤的時(shí)間點(diǎn),在發(fā)生錯(cuò)誤前的某一恰當(dāng)?shù)臅r(shí)刻進(jìn)行快照。在單次快照方案中,若硬件仿真系統(tǒng)在運(yùn)行某一測(cè)試項(xiàng)目的過(guò)程中發(fā)生多次錯(cuò)誤,為了在軟件仿真系統(tǒng)上逐一重現(xiàn)這些錯(cuò)誤,就要在每一錯(cuò)誤發(fā)生前的某一時(shí)刻進(jìn)行快照,這樣就要求硬件仿真系統(tǒng)運(yùn)行該測(cè)試項(xiàng)目n+1次(n為發(fā)生錯(cuò)誤的次數(shù))。若采用多次快照方案,硬件仿真系統(tǒng)只需要運(yùn)行測(cè)試項(xiàng)目一次就能獲得多個(gè)間隔一定時(shí)間的快照。當(dāng)要在軟件仿真系統(tǒng)上重現(xiàn)某一錯(cuò)誤時(shí),只要選擇該錯(cuò)誤發(fā)生前某一時(shí)刻的快照即可。往往大規(guī)模集成電路在一個(gè)測(cè)試項(xiàng)目的仿真過(guò)程中很可能發(fā)生多個(gè)錯(cuò)誤,因此,多次快照方案更適合大規(guī)模集成電路的仿真驗(yàn)證。
然而,現(xiàn)有的多次快照方案是在預(yù)定的時(shí)間點(diǎn)暫停硬件仿真,在該暫停期間進(jìn)行快照,快照結(jié)束后繼續(xù)硬件仿真。由于暫停,因此這種多次快照方案中仿真與快照不能同時(shí)進(jìn)行,所以效率比較低。
電路狀態(tài)包括寄存器的值與靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)的內(nèi)容。實(shí)現(xiàn)多次快照最理想的方式是采用備份寄存器以及備份靜態(tài)隨機(jī)存取存儲(chǔ)器存儲(chǔ)電路狀態(tài)。在不進(jìn)行快照時(shí),這些備份寄存器以及備份靜態(tài)隨機(jī)存取存儲(chǔ)器和與被測(cè)設(shè)計(jì)對(duì)應(yīng)的寄存器以及靜態(tài)隨機(jī)存取存儲(chǔ)器保持一致,快照前凍結(jié)所述的備份寄存器以及備份靜態(tài)隨機(jī)存取存儲(chǔ)器,然后通過(guò)掃描電路把備份寄存器以及備份靜態(tài)隨機(jī)存取存儲(chǔ)器中的數(shù)據(jù)導(dǎo)出,這樣就可實(shí)現(xiàn)快照與硬件仿真同步進(jìn)行,互不影響。由于電路狀態(tài)隨著硬件仿真的進(jìn)行不停地變化,在進(jìn)行一次快照后,所述備份寄存器以及備份靜態(tài)隨機(jī)存取存儲(chǔ)器的值可能已經(jīng)和與被測(cè)設(shè)計(jì)對(duì)應(yīng)的寄存器以及靜態(tài)隨機(jī)存取存儲(chǔ)器的值不同了,因此我們可以在一個(gè)時(shí)鐘單位內(nèi)使備份寄存器和與被測(cè)設(shè)計(jì)對(duì)應(yīng)的寄存器的值再次保持一致(因?yàn)槔靡粋€(gè)時(shí)鐘單位就能夠?qū)拇嫫鞯闹颠M(jìn)行改寫),但卻無(wú)法使備份靜態(tài)隨機(jī)存取存儲(chǔ)器和與被測(cè)設(shè)計(jì)對(duì)應(yīng)的靜態(tài)隨機(jī)存取存儲(chǔ)器的值重新保持一致,這是進(jìn)行快照的同時(shí)不影響硬件仿真效率的最大的技術(shù)難點(diǎn)。
臺(tái)灣大學(xué)電機(jī)工程研究所研究生呂東榮的論文——《A Snapshot Method toProvide Full Visibility for Functional Debugging Using FPGA》中提出了多次快照的想法,但卻并沒(méi)有提出恢復(fù)備份靜態(tài)隨機(jī)存取存儲(chǔ)器的解決方案,因此,仍然無(wú)法在設(shè)有靜態(tài)隨機(jī)存取存儲(chǔ)器的設(shè)計(jì)上實(shí)現(xiàn)硬件仿真與多次快照的同步進(jìn)行。
發(fā)明內(nèi)容
因此,在本領(lǐng)域中亟需一種能夠在短時(shí)間內(nèi)使備份靜態(tài)隨機(jī)存取存儲(chǔ)器和與被測(cè)設(shè)計(jì)對(duì)應(yīng)的靜態(tài)隨機(jī)存取存儲(chǔ)器重新保持一致的方案,以實(shí)現(xiàn)硬件仿真與多次快照同步進(jìn)行,從而進(jìn)一步提高大規(guī)模集成電路的仿真驗(yàn)證效率。
本發(fā)明提供一種快照裝置中備份靜態(tài)隨機(jī)存取存儲(chǔ)器的動(dòng)態(tài)更新方法,所述方法包括以下步驟把對(duì)主存儲(chǔ)器的寫操作同時(shí)復(fù)制到備份存儲(chǔ)器的步驟;利用主存儲(chǔ)器的空閑期間,把主存儲(chǔ)器的內(nèi)容復(fù)制到備份存儲(chǔ)器的步驟。
如上所述方法中,利用主存儲(chǔ)器的空閑期間把主存儲(chǔ)器的內(nèi)容復(fù)制到備份存儲(chǔ)器的步驟包括以下步驟a)對(duì)主存儲(chǔ)器進(jìn)行讀操作;b)判斷是否可將由所述讀操作讀取的主存儲(chǔ)器數(shù)據(jù)寫入備份存儲(chǔ)器;c)如果步驟b)的判斷結(jié)果為是,則把所述讀操作讀取的主存儲(chǔ)器數(shù)據(jù)寫入備份存儲(chǔ)器,然后回到步驟a),準(zhǔn)備復(fù)制下一個(gè)數(shù)據(jù);d)如果步驟b)的判斷結(jié)果若為否,則把該數(shù)據(jù)暫時(shí)存儲(chǔ)于附加的緩存中;e)在步驟d)暫時(shí)存儲(chǔ)數(shù)據(jù)的期間,判斷主存儲(chǔ)器存儲(chǔ)該數(shù)據(jù)的地址是否被改寫,如果是,則轉(zhuǎn)到步驟a),準(zhǔn)備復(fù)制下一個(gè)數(shù)據(jù),如果否,則轉(zhuǎn)到步驟c)。
在如上所述的方法中,所述主存儲(chǔ)器的空閑期間是系統(tǒng)不對(duì)主存儲(chǔ)器進(jìn)行操作的期間。
本發(fā)明還提供一種靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊,包括主存儲(chǔ)器、備份存儲(chǔ)器以及輸出模塊,備份存儲(chǔ)器的輸出端與輸出模塊的一個(gè)輸入端連接,其特征在于,所述靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊還包括緩存以及控制模塊,所述的緩存的輸入端與主存儲(chǔ)器的輸出端連接,緩存的輸出端與輸出模塊的一個(gè)輸入端連接,所述控制模塊控制所述緩存的數(shù)據(jù)鎖定以及控制所述主存儲(chǔ)器和備份存儲(chǔ)器執(zhí)行以下操作對(duì)主存儲(chǔ)器的寫操作同時(shí)被復(fù)制到備份存儲(chǔ)器;在主存儲(chǔ)器的空閑期間,主存儲(chǔ)器的內(nèi)容復(fù)制到備份存儲(chǔ)器。
如上所述的靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊,所述控制模塊包括更新控制模塊,在所述主存儲(chǔ)器進(jìn)行寫操作時(shí),所述更新控制模塊將所述寫操作復(fù)制到備份存儲(chǔ)器,在所述主存儲(chǔ)器的空閑期間,所述更新控制模塊對(duì)主存儲(chǔ)器進(jìn)行讀操作,并將讀出的數(shù)據(jù)寫入備份存儲(chǔ)器,如果在所述主存儲(chǔ)器的下一次寫操作之前,所述更新控制模塊來(lái)不及把由所述讀操作得到的數(shù)據(jù)寫入備份存儲(chǔ)器,所述更新控制模塊就把該數(shù)據(jù)暫時(shí)保存在更新控制模塊中,在該數(shù)據(jù)的暫時(shí)保存期間,若所述數(shù)據(jù)在所述主存儲(chǔ)器內(nèi)的地址進(jìn)行了寫操作,則所述更新控制模塊取消所述數(shù)據(jù)的復(fù)制操作。
本發(fā)明還提供一種包含如上所述的靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊的硬件仿真系統(tǒng)。
圖1為本發(fā)明靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊的硬件框圖;圖2根據(jù)本發(fā)明的一方面的主存儲(chǔ)器或者備份存儲(chǔ)器輸出數(shù)據(jù)與掃描寄存器內(nèi)的存儲(chǔ)位的對(duì)應(yīng)關(guān)系;圖3為根據(jù)本發(fā)明的一方面的主存儲(chǔ)器或者備份存儲(chǔ)器輸出數(shù)據(jù)與掃描寄存器內(nèi)的存儲(chǔ)位的對(duì)應(yīng)關(guān)系,其中前一靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊的掃描輸出與掃描寄存器的第八位連接;圖4例示出本發(fā)明的靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊的工作時(shí)序。
具體實(shí)施例方式
請(qǐng)參圖1,本發(fā)明的靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊包括存儲(chǔ)器快照狀態(tài)機(jī)1、主存儲(chǔ)器10、備份存儲(chǔ)器20、更新控制模塊30、快照控制模塊40、第一復(fù)用模塊50、第二復(fù)用模塊14、掃描寄存器60以及掃描邏輯模塊70。其中,所述的主存儲(chǔ)器10與備份存儲(chǔ)器20均為兩端口(Two Port)的靜態(tài)隨機(jī)存取存儲(chǔ)器。主存儲(chǔ)器10用于被測(cè)設(shè)計(jì),備份存儲(chǔ)器20則用于快照。
為減少針腳占用,通過(guò)一條掃描鏈完成所有存儲(chǔ)器的快照,所以當(dāng)前靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊需要引入前一靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊的快照輸出i_sram_scan_in以作為一路快照輸出選擇。另外,由于主存儲(chǔ)器10輸出端口的值也屬于電路狀態(tài)的一部分,因此需要設(shè)置一個(gè)緩存12保存開始快照的那一刻主存儲(chǔ)器10輸出端口的值,以防止這個(gè)值隨著系統(tǒng)對(duì)主存儲(chǔ)器10進(jìn)行的讀操作而丟失。緩存12的另外一個(gè)作用是在更新備份存儲(chǔ)器20的過(guò)程中,讀取主存儲(chǔ)器10的內(nèi)容復(fù)制到備份存儲(chǔ)器20時(shí),保存讀取前主存儲(chǔ)器10輸出端口的值,供系統(tǒng)選擇讀取。緩存12對(duì)主存儲(chǔ)器10輸出端口的值的保存由快照控制模塊40的控制信號(hào)BUF CTRL控制。主存儲(chǔ)器10的輸出F_Data_Out和緩存12的輸出都輸入到第二復(fù)用模塊14,第二復(fù)用模塊14在快照控制模塊40輸出的控制信號(hào)o_sram_data_out_seleot的控制下選擇兩者之一作為當(dāng)前主存儲(chǔ)器的數(shù)據(jù)輸出o_sram_data_out。同時(shí),緩存12的輸出還輸入到第一復(fù)用模塊50,作為其一路輸出選擇,用以輸出快照前主存儲(chǔ)器10的輸出端口的值。
包括備份存儲(chǔ)器20的輸出Backup_Data_Out、掃描邏輯模塊70的輸出、緩存12的輸出以及前述的i_sram_scan_in在內(nèi),當(dāng)前的靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊共有4路數(shù)據(jù)供輸出接口選擇作為掃描輸出,該選擇是由第一復(fù)用模塊50在快照控制模塊40的控制信號(hào)Shift_Select的控制下實(shí)現(xiàn)的。掃描寄存器60和掃描邏輯模塊70把輸出數(shù)據(jù)轉(zhuǎn)化成串行的格式后作為當(dāng)前的靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊的掃描輸出o_sram_scan_out。掃描寄存器60類似于一個(gè)先進(jìn)先出緩存。
假設(shè)系統(tǒng)存儲(chǔ)器的位寬是8位,掃描寄存器60的深度也是8。主存儲(chǔ)器10和備份存儲(chǔ)器20通過(guò)第一復(fù)用模塊50與掃描寄存器60的連接關(guān)系是一位對(duì)應(yīng)一位的連接方式。如圖2所示,當(dāng)主存儲(chǔ)器10或者備份存儲(chǔ)器20輸出一個(gè)8位的數(shù)據(jù)(sram_in_0~sram_in_7)后,這個(gè)8位的數(shù)據(jù)便如圖示的關(guān)系一位對(duì)應(yīng)一位地存儲(chǔ)于掃描寄存器60中,掃描邏輯模塊70再通過(guò)循環(huán)移位以先進(jìn)先出的方式把這個(gè)數(shù)據(jù)轉(zhuǎn)化成串行的格式輸出,這個(gè)8位的數(shù)據(jù)串行輸出完成后掃描寄存器60才能接收下一個(gè)8位的數(shù)據(jù)。靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊的掃描輸出是串行的,也就是說(shuō)i_sram_scan_in輸入的(或o_sram_scan_out輸出的)是串行的數(shù)據(jù)。為簡(jiǎn)化時(shí)序控制,i_sram_scan_in通過(guò)第一復(fù)用模塊50直接與掃描寄存器60的第八位連接,如圖3所示。
本發(fā)明對(duì)存儲(chǔ)器進(jìn)行快照掃描的過(guò)程如下首先,輸出緩存12的數(shù)據(jù);其次,輸出備份存儲(chǔ)器20的內(nèi)容;最后,更新備份存儲(chǔ)器20使之與主存儲(chǔ)器10再次保持一致。本發(fā)明的重點(diǎn)在于如何更新備份存儲(chǔ)器20使之與主存儲(chǔ)器10再次保持一致以便進(jìn)行下一次快照。簡(jiǎn)而言之,本發(fā)明是結(jié)合復(fù)制系統(tǒng)對(duì)主存儲(chǔ)器10的寫操作與復(fù)制主存儲(chǔ)器10的內(nèi)容兩項(xiàng)措施來(lái)完成對(duì)備份存儲(chǔ)器20的更新,詳述如后。
在完成一次存儲(chǔ)器的快照后,存儲(chǔ)器快照狀態(tài)機(jī)1通知快照控制模塊40停止對(duì)備份存儲(chǔ)器20進(jìn)行讀操作,快照控制模塊40通過(guò)Shift_Select信號(hào)使第一復(fù)用模塊50選擇i_sram_scan_in為輸出。此時(shí),需要更新備份存儲(chǔ)器20使之與主存儲(chǔ)器10再次保持一致,以便進(jìn)行下一次快照。更新備份存儲(chǔ)器20的措施有兩個(gè),而且必須結(jié)合這兩個(gè)措施才能保證備份存儲(chǔ)器20最終與主存儲(chǔ)器10完全一致一是把系統(tǒng)對(duì)主存儲(chǔ)器10的寫操作復(fù)制到備份存儲(chǔ)器20,二是利用空閑期間對(duì)主存儲(chǔ)器10從頭至尾進(jìn)行一次讀操作,并把相應(yīng)的數(shù)據(jù)復(fù)制到備份存儲(chǔ)器20。為復(fù)制主存儲(chǔ)器10的內(nèi)容而對(duì)主存儲(chǔ)器10進(jìn)行的讀操作需要在系統(tǒng)不對(duì)主存儲(chǔ)器10進(jìn)行讀操作時(shí)才能進(jìn)行;為復(fù)制主存儲(chǔ)器10的內(nèi)容而對(duì)備份存儲(chǔ)器20進(jìn)行的寫操作,只要系統(tǒng)不對(duì)主存儲(chǔ)器10進(jìn)行寫操作時(shí)就可進(jìn)行。采用不同的靜態(tài)隨機(jī)存取存儲(chǔ)器(如單端口(one port)以及雙端口(dual port)的靜態(tài)隨機(jī)存取存儲(chǔ)器),就可能需要在不同的時(shí)機(jī)下才能對(duì)其進(jìn)行相應(yīng)的操作,以下用空閑期間來(lái)概括可對(duì)其進(jìn)行操作的時(shí)機(jī)。
主存儲(chǔ)器10的輸入信號(hào)有激活存儲(chǔ)器的信號(hào)CEN、主存儲(chǔ)器的寫入數(shù)據(jù)F_Write_Data、對(duì)主存儲(chǔ)器10進(jìn)行寫操作的使能信號(hào)F_Write_Enable、對(duì)主存儲(chǔ)器10進(jìn)行寫操作的地址F_Write_Address、對(duì)主存儲(chǔ)器10進(jìn)行讀操作的使能信號(hào)F_Read_Enable、對(duì)主存儲(chǔ)器10進(jìn)行讀操作的地址F_Read_Address以及時(shí)鐘ClockA/ClockB。為了使備份存儲(chǔ)器20與主存儲(chǔ)器10時(shí)刻保持一致,需要把系統(tǒng)對(duì)主存儲(chǔ)器10的寫操作復(fù)制到備份存儲(chǔ)器20,也就是把所述的F_Write_Data、F_Write_Enable、F_Write_Address三個(gè)信號(hào)引入備份存儲(chǔ)器對(duì)應(yīng)的輸入。
可能對(duì)主存儲(chǔ)器10進(jìn)行讀操作的對(duì)象有兩個(gè),分別是系統(tǒng)和更新控制模塊30。因此,需要設(shè)置第三復(fù)用模塊100以選擇系統(tǒng)激活存儲(chǔ)器的信號(hào)S_CEN或者更新控制模塊30激活存儲(chǔ)器的信號(hào)CEN_Select作為激活主存儲(chǔ)器10的信號(hào)CEN,CEN_Select同時(shí)控制第三復(fù)用模塊100的輸出選擇,如此實(shí)現(xiàn)對(duì)主存儲(chǔ)器10的激活控制。若要對(duì)存儲(chǔ)器進(jìn)行讀操作還有兩個(gè)信號(hào)是必需的F_Read_Enable與F_Read_Address,因此,還需要設(shè)置第四復(fù)用模塊102及第五復(fù)用模塊104。第四復(fù)用模塊102的兩個(gè)輸入分別為系統(tǒng)對(duì)主存儲(chǔ)器10進(jìn)行讀操作的使能信號(hào)S_Read_Enable與更新控制模塊30對(duì)主存儲(chǔ)器10進(jìn)行讀操作的使能信號(hào)F_Read_Select;第五復(fù)用模塊104的兩個(gè)輸入分別為系統(tǒng)對(duì)主存儲(chǔ)10進(jìn)行讀操作的地址S_Read_Address與更新控制模塊30為復(fù)制主存儲(chǔ)器10的內(nèi)容而對(duì)主存儲(chǔ)器10進(jìn)行讀操作的地址Copy_Read_Address;F_Read_Select同時(shí)控制第四復(fù)用模塊102及第五復(fù)用模塊104的輸出選擇。
本發(fā)明對(duì)備份存儲(chǔ)器20的更新結(jié)合了復(fù)制系統(tǒng)對(duì)主存儲(chǔ)器10的寫操作與復(fù)制主存儲(chǔ)器10的內(nèi)容兩個(gè)措施,因此,可能對(duì)備份存儲(chǔ)器20進(jìn)行寫操作的對(duì)象也可能有兩個(gè)一個(gè)是系統(tǒng),另一個(gè)是更新控制模塊30。因此,就可能需要設(shè)置第六復(fù)用模塊202、第七復(fù)用模塊204及第八復(fù)用模塊206。第六復(fù)用模塊202有兩個(gè)輸入一個(gè)是F_Write_Data,另一個(gè)是主存儲(chǔ)器10的輸出F_Data_Out(用于復(fù)制主存儲(chǔ)器10的內(nèi)容到備份存儲(chǔ)器)。第七復(fù)用模塊204有兩個(gè)輸入一個(gè)是F_Write_Enable,另一個(gè)是更新控制模塊30給出的Copy_Write_Enable(復(fù)制主存儲(chǔ)器10的內(nèi)容到備份存儲(chǔ)器20的寫使能信號(hào))。第八復(fù)用模塊206有兩個(gè)輸入一個(gè)是系統(tǒng)的F_Write_Address,另一個(gè)是更新控制模塊30給出的Copy_Write_Address(復(fù)制主存儲(chǔ)器10的內(nèi)容到備份存儲(chǔ)器20的地址)。更新控制模塊30給出的B_Write_Select信號(hào)控制第六復(fù)用模塊202、第七復(fù)用模塊204及第八復(fù)用模塊206的輸出選擇。
以上說(shuō)明了各組件之間的信號(hào)走向和連接關(guān)系,下面對(duì)快照和備份存儲(chǔ)器20的更新流程進(jìn)行說(shuō)明。當(dāng)系統(tǒng)通知存儲(chǔ)器快照狀態(tài)機(jī)1開始進(jìn)行快照時(shí),快照更新控制模塊30把Copy_Write_Enable置為無(wú)效,并通過(guò)B_Write_Select選擇Copy_Write_Enable為第七復(fù)用模塊204的輸出,屏蔽對(duì)備份存儲(chǔ)器20的寫操作,使備份存儲(chǔ)器20的內(nèi)容與系統(tǒng)開始進(jìn)行快照的那一刻的主存儲(chǔ)器10的內(nèi)容保持相同,即鎖定了開始快照時(shí)主存儲(chǔ)器的內(nèi)容。緩存12也在這一刻鎖定其值,保持這一刻主存儲(chǔ)器10輸出端口的值。
當(dāng)系統(tǒng)通知存儲(chǔ)器快照狀態(tài)機(jī)1對(duì)存儲(chǔ)器進(jìn)行快照時(shí),快照控制模塊40通過(guò)Buffer CTRL鎖定緩存12的值,接著通過(guò)Shift_Select控制選擇緩存12的輸出為第一復(fù)用模塊50的輸出,輸出主存儲(chǔ)器10輸出端口的值;輸出完畢后,快照控制模塊40再通過(guò)Shift_Select控制選擇備份存儲(chǔ)器20的輸出Backup_Data_Out作為第一復(fù)用模塊50的輸出,并產(chǎn)生Backup_Read_Enable信號(hào)(對(duì)備份存儲(chǔ)器20進(jìn)行讀操作的使能信號(hào))與Backup_Read_Address信號(hào)(對(duì)備份存儲(chǔ)器20進(jìn)行讀操作的地址)送到更新控制模塊30對(duì)備份存儲(chǔ)器20進(jìn)行讀操作,把備份存儲(chǔ)器20的內(nèi)容輸出,當(dāng)備份存儲(chǔ)器20的內(nèi)容輸出完畢后當(dāng)前存儲(chǔ)器的快照結(jié)束。
對(duì)當(dāng)前存儲(chǔ)器的快照完畢后就要更新備份存儲(chǔ)器20,使之與主存儲(chǔ)器10再次保持一致,以便下一次快照,這是本發(fā)明的重點(diǎn)所在。快照控制模塊40通過(guò)地址比較得知快照結(jié)束時(shí)通知存儲(chǔ)器快照狀態(tài)機(jī)1,存儲(chǔ)器快照狀態(tài)機(jī)1通知更新控制模塊30開始對(duì)備份存儲(chǔ)器20進(jìn)行更新。S_CEN同時(shí)給第三復(fù)用模塊100與更新控制模塊30,這樣更新控制模塊30就知道系統(tǒng)何時(shí)對(duì)主存儲(chǔ)器10進(jìn)行操作,何時(shí)不對(duì)主存儲(chǔ)器10進(jìn)行操作。當(dāng)系統(tǒng)對(duì)主存儲(chǔ)器10進(jìn)行寫操作時(shí),更新控制模塊30通過(guò)B_Write_Select復(fù)制該寫操作到備份存儲(chǔ)器20,換言之,備份存儲(chǔ)器20隨著主存儲(chǔ)器10的變化而變化,因此,只要在這個(gè)變化的過(guò)程中把主存儲(chǔ)器10從起始地址到末尾地址的內(nèi)容復(fù)制一遍到備份存儲(chǔ)器20就可使兩者內(nèi)容保持一致。對(duì)靜態(tài)隨機(jī)存取存儲(chǔ)器一個(gè)地址的讀取只需要一個(gè)時(shí)鐘周期,更新控制模塊30在主存儲(chǔ)器10的空閑期間至少可完成一個(gè)讀操作,在系統(tǒng)對(duì)主存儲(chǔ)器10進(jìn)行下一次寫操作之前,若更新控制模塊30來(lái)不及把由所述讀操作得到的數(shù)據(jù)寫入備份存儲(chǔ)器20,就先把這個(gè)數(shù)據(jù)保存在更新控制模塊30。在這個(gè)數(shù)據(jù)的保存期間內(nèi),若系統(tǒng)對(duì)主存儲(chǔ)器10的該地址進(jìn)行了寫操作,由于備份存儲(chǔ)器20復(fù)制了系統(tǒng)對(duì)主存儲(chǔ)器10的寫操作,其該地址的值已經(jīng)與主存儲(chǔ)器10的相同,因此就取消這個(gè)數(shù)據(jù)的復(fù)制操作。更新控制模塊30把從F_Write_Address得到的地址與所述被保存的數(shù)據(jù)原先在主存儲(chǔ)器10中的地址進(jìn)行比較即可判斷出系統(tǒng)在數(shù)據(jù)保存期間是否對(duì)這個(gè)地址進(jìn)行了寫操作。
以下結(jié)合圖4對(duì)本發(fā)明的靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊的工作時(shí)序進(jìn)行說(shuō)明,其中,S_Write_Enable表示系統(tǒng)發(fā)出的寫使能信號(hào),而F_Write_Enable為主存儲(chǔ)器10的寫使能信號(hào),本實(shí)施例中只有系統(tǒng)可對(duì)主存儲(chǔ)器10進(jìn)行寫操作,故S_Write_Enable和F_Write_Enable相同。圖4中所示的第一階段的快照狀態(tài)(快照狀態(tài)為深色的一段期間)中,靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊不進(jìn)行快照與更新。更新控制模塊30通過(guò)F_Read_Select選擇S_Read_Enable與S_Read_Address為第四復(fù)用模塊102與第五復(fù)用模塊104的輸入,即只允許系統(tǒng)對(duì)主存儲(chǔ)器10進(jìn)行讀操作。更新控制模塊30通過(guò)B_Write_Select選擇F_Write_Data、F_Write_Enable、F_Write_Address為第六復(fù)用模塊202、第七復(fù)用模塊204及第八復(fù)用模塊206的輸出,即將系統(tǒng)對(duì)主存儲(chǔ)器10的寫操作復(fù)制到備份存儲(chǔ)器20。當(dāng)S_Read_Enable(系統(tǒng)給出的讀操作使能信號(hào))有效時(shí),F(xiàn)_Read_Enable有效,系統(tǒng)對(duì)主存儲(chǔ)器10進(jìn)行讀操作。當(dāng)F_Write_Enable有效時(shí),B_Write_Enable有效,系統(tǒng)對(duì)主存儲(chǔ)器10和備份存儲(chǔ)器20進(jìn)行寫操作。
第二階段是快照階段,在圖4的快照狀態(tài)中標(biāo)為shift-state。更新控制模塊30通過(guò)F_Read_Select選擇S_Read_Enable和S_Read_Address為第四復(fù)用模塊102及第五復(fù)用模塊104的輸出,只有系統(tǒng)可對(duì)主存儲(chǔ)器10進(jìn)行讀操作。更新控制模塊30把Copy_Write_Enable置為無(wú)效,并通過(guò)B_Write_Select選擇F_Data_Out(主存儲(chǔ)器10的輸出)、Copy_Write_Enable、Copy_Write_Address為第六復(fù)用模塊202、第七復(fù)用模塊204及第八復(fù)用模塊206的輸出,由于Copy_Write_Enable被置為無(wú)效,因此,此時(shí)備份存儲(chǔ)器20被凍結(jié)。系統(tǒng)對(duì)主存儲(chǔ)器10的操作與快照互不影響,快照控制模塊40可在任何時(shí)刻通過(guò)更新控制模塊30對(duì)備份存儲(chǔ)器20進(jìn)行讀操作。
第三階段是對(duì)備份存儲(chǔ)器20進(jìn)行更新的階段,圖4中的快照狀態(tài)標(biāo)為update-back-up-sram-state。在更新過(guò)程中,對(duì)備份存儲(chǔ)器20,既要復(fù)制系統(tǒng)對(duì)主存儲(chǔ)器10的寫操作,還要復(fù)制主存儲(chǔ)器10的內(nèi)容,后者的進(jìn)行以不影響前者為前提(如前所述)。系統(tǒng)需要對(duì)主存儲(chǔ)器10進(jìn)行寫操作時(shí),更新控制模塊30通過(guò)B_Write_Select選擇F_Write_Data、F_Write_Enable及F_Write_Address為第六復(fù)用模塊202、第七復(fù)用模塊204及第八復(fù)用模塊206的輸出,在備份存儲(chǔ)器20上復(fù)制系統(tǒng)對(duì)主存儲(chǔ)器10的寫操作。圖4中該階段F_Write_Enable第一個(gè)有效電平就是系統(tǒng)對(duì)主存儲(chǔ)器10和備份存儲(chǔ)器20同時(shí)進(jìn)行的寫操作。當(dāng)主存儲(chǔ)器10處于空閑期間,更新控制模塊30將對(duì)備份存儲(chǔ)器20復(fù)制主存儲(chǔ)器10的內(nèi)容。更新控制模塊30通過(guò)F_Read_Select選擇F_Read_Select和Copy_Read_Address作為第四復(fù)用模塊102及第五復(fù)用模塊104的輸出,對(duì)主存儲(chǔ)器10進(jìn)行讀操作,圖4中該階段F_Read_Enable的第二個(gè)有效電平就是更新控制模塊30對(duì)主存儲(chǔ)器10進(jìn)行的讀操作。若空閑期間足夠長(zhǎng),緊接著這個(gè)讀操作,更新控制模塊30把B_Write_Enable置為有效電平,并通過(guò)B_Write_Select選擇F_Data_Out、Copy_Write_Enable、Copy_Write_Address為第六復(fù)用模塊202、第七復(fù)用模塊204及第八復(fù)用模塊206的輸出,把由所述讀操作得到的數(shù)據(jù)寫入備份存儲(chǔ)器20,圖4中該階段B_Write_Enable的第二個(gè)有效電平就是更新控制模塊30為復(fù)制主存儲(chǔ)器10的內(nèi)容對(duì)備份存儲(chǔ)器20進(jìn)行的寫操作。圖4中該階段F_Read_Enable出現(xiàn)的第三個(gè)有效電平是更新控制模塊30對(duì)主存儲(chǔ)器10進(jìn)行的讀操作,但緊隨著這個(gè)F_Read_Enable有效電平的結(jié)束,出現(xiàn)了S_Write_Enable的有效電平,這說(shuō)明系統(tǒng)要對(duì)主存儲(chǔ)器10進(jìn)行寫操作,因?yàn)檫@個(gè)寫操作同樣要被復(fù)制到備份存儲(chǔ)器20,所以由更新控制模塊30從主存儲(chǔ)器10讀出的數(shù)據(jù)來(lái)不及寫入備份存儲(chǔ)器20,這個(gè)數(shù)據(jù)暫時(shí)被更新控制模塊30保存(例如存儲(chǔ)于附加的存儲(chǔ)模塊中,未示出),在系統(tǒng)對(duì)主存儲(chǔ)器10和備份存儲(chǔ)器20進(jìn)行寫操作的過(guò)程中,更新控制模塊30把F_Write_Address給出的地址與所述被保存數(shù)據(jù)原先在主存儲(chǔ)器10中的地址進(jìn)行比較,若F_Write_Address給出的地址中有一個(gè)與該地址相同,就表示主存儲(chǔ)器10該地址的數(shù)據(jù)已經(jīng)被系統(tǒng)改寫,而備份存儲(chǔ)器20因?yàn)閺?fù)制了系統(tǒng)對(duì)主存儲(chǔ)器10的寫操作,其該地址的數(shù)據(jù)已經(jīng)與主存儲(chǔ)器10該地址的數(shù)據(jù)保持一致,為復(fù)制這個(gè)數(shù)據(jù)的寫操作取消。反之,則應(yīng)該在系統(tǒng)對(duì)主存儲(chǔ)器10的寫操作完畢后把這個(gè)數(shù)據(jù)寫入備份存儲(chǔ)器20,圖4中該階段B_Write_Enable出現(xiàn)的第四個(gè)有效電平就是把這個(gè)數(shù)據(jù)寫入備份存儲(chǔ)器20的操作。
其中,值得說(shuō)明的是,可以限制為復(fù)制主存儲(chǔ)器10的內(nèi)容對(duì)備份存儲(chǔ)器20的寫操在S_CEN為無(wú)效的時(shí)候進(jìn)行,也可以只限制其在F_Write_Enable無(wú)效的時(shí)候(其范圍比前者大)進(jìn)行,本發(fā)明實(shí)施例采用后者進(jìn)行說(shuō)明。但是,本發(fā)明的思想同樣能夠簡(jiǎn)單地適用于前者。
在本實(shí)施例中,雖然以分立模塊的方式描述了各種模塊之間的關(guān)系和信號(hào)走向,但是,如本領(lǐng)域的技術(shù)人員所熟知的那樣,例如可以把更新控制模塊30、快照控制模塊40、以及存儲(chǔ)器快照狀態(tài)機(jī)結(jié)合于一個(gè)功能模塊中,例如存儲(chǔ)器控制模塊,對(duì)存儲(chǔ)器的讀寫以及復(fù)制和快照進(jìn)行控制。也可以把緩存12、第一復(fù)用模塊50、第二復(fù)用模塊14、掃描寄存器60以及掃描邏輯模塊70結(jié)合于一個(gè)功能模塊中實(shí)現(xiàn),例如存儲(chǔ)器輸出模塊。這些等效替換是本領(lǐng)域的常用技術(shù)手段,都應(yīng)視為本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種快照裝置中備份靜態(tài)隨機(jī)存取存儲(chǔ)器的動(dòng)態(tài)更新方法,所述方法包括以下步驟把對(duì)主存儲(chǔ)器的寫操作同時(shí)復(fù)制到備份存儲(chǔ)器的步驟;利用主存儲(chǔ)器的空閑期間,把主存儲(chǔ)器的內(nèi)容復(fù)制到備份存儲(chǔ)器的步驟。
2.如權(quán)利要求1所述方法,其特征在于,利用主存儲(chǔ)器的空閑期間把主存儲(chǔ)器的內(nèi)容復(fù)制到備份存儲(chǔ)器的步驟包括以下步驟a)對(duì)主存儲(chǔ)器進(jìn)行讀操作;b)判斷是否可將由所述讀操作讀取的主存儲(chǔ)器數(shù)據(jù)寫入備份存儲(chǔ)器;c)如果步驟b)的判斷結(jié)果為是,則把所述讀操作讀取的主存儲(chǔ)器數(shù)據(jù)寫入備份存儲(chǔ)器,然后回到步驟a),準(zhǔn)備復(fù)制下一個(gè)數(shù)據(jù);d)如果步驟b)的判斷結(jié)果若為否,則把該數(shù)據(jù)暫時(shí)存儲(chǔ)于附加的緩存中;e)在步驟d)暫時(shí)存儲(chǔ)數(shù)據(jù)的期間,判斷主存儲(chǔ)器存儲(chǔ)該數(shù)據(jù)的地址是否被改寫,如果是,則轉(zhuǎn)到步驟a),準(zhǔn)備復(fù)制下一個(gè)數(shù)據(jù),如果否,則轉(zhuǎn)到步驟c)。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述主存儲(chǔ)器的空閑期間是系統(tǒng)不對(duì)主存儲(chǔ)器進(jìn)行任何操作的期間。
4.一種靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊,包括主存儲(chǔ)器、備份存儲(chǔ)器以及輸出模塊,備份存儲(chǔ)器的輸出端與輸出模塊的一個(gè)輸入端連接,其特征在于,所述靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊還包括緩存以及控制模塊,所述的緩存的輸入端與主存儲(chǔ)器的輸出端連接,緩存的輸出端與輸出模塊的一個(gè)輸入端連接,所述控制模塊控制所述緩存的數(shù)據(jù)鎖定以及控制所述主存儲(chǔ)器和備份存儲(chǔ)器執(zhí)行以下操作對(duì)主存儲(chǔ)器的寫操作同時(shí)被復(fù)制到備份存儲(chǔ)器;在主存儲(chǔ)器的空閑期間,主存儲(chǔ)器的內(nèi)容復(fù)制到備份存儲(chǔ)器。
5.如權(quán)利要求4所述的靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊,其特征在于,所述控制模塊包括更新控制模塊,在所述主存儲(chǔ)器進(jìn)行寫操作時(shí),所述更新控制模塊將所述寫操作復(fù)制到備份存儲(chǔ)器,在所述主存儲(chǔ)器的空閑期間,所述更新控制模塊對(duì)主存儲(chǔ)器進(jìn)行讀操作,并將讀出的數(shù)據(jù)寫入備份存儲(chǔ)器,如果在所述主存儲(chǔ)器的下一次寫操作之前,所述更新控制模塊來(lái)不及把由所述讀操作得到的數(shù)據(jù)寫入備份存儲(chǔ)器,所述更新控制模塊就把該數(shù)據(jù)暫時(shí)保存在更新控制模塊中,在該數(shù)據(jù)的暫時(shí)保存期間,若所述數(shù)據(jù)在所述主存儲(chǔ)器內(nèi)的地址進(jìn)行了寫操作,則所述更新控制模塊取消所述數(shù)據(jù)的復(fù)制操作。
6.一種包含如權(quán)利要求4或5所述的靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊的硬件仿真系統(tǒng)。
全文摘要
提供了一種快照裝置中備份靜態(tài)隨機(jī)存取存儲(chǔ)器的動(dòng)態(tài)更新方法,包括把對(duì)主存儲(chǔ)器的寫操作同時(shí)復(fù)制到備份存儲(chǔ)器的步驟;以及利用主存儲(chǔ)器的空閑期間,把主存儲(chǔ)器的內(nèi)容復(fù)制到備份存儲(chǔ)器的步驟。還提供一種靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊和包含該模塊的仿真系統(tǒng),所述模塊包括主存儲(chǔ)器、備份存儲(chǔ)器以及輸出模塊,所述靜態(tài)隨機(jī)存取存儲(chǔ)器快照模塊還包括緩存及控制模塊,所述的緩存分別與主存儲(chǔ)器的輸出端及輸出模塊的一個(gè)輸入端連接,所述控制模塊控制所述緩存的數(shù)據(jù)鎖定以及控制所述主存儲(chǔ)器和備份存儲(chǔ)器執(zhí)行以下操作對(duì)主存儲(chǔ)器的寫操作同時(shí)被復(fù)制到備份存儲(chǔ)器;在主存儲(chǔ)器的空閑期間,主存儲(chǔ)器的內(nèi)容復(fù)制到備份存儲(chǔ)器。
文檔編號(hào)G06F11/14GK1940943SQ20051003017
公開日2007年4月4日 申請(qǐng)日期2005年9月29日 優(yōu)先權(quán)日2005年9月29日
發(fā)明者劉彥, 周振亞 申請(qǐng)人:上海奇碼數(shù)字信息有限公司