本發(fā)明涉及電子領(lǐng)域,特別涉及一種可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法、可配置狀態(tài)機(jī)及終端設(shè)備。
背景技術(shù):
:共享變量的互斥訪問一般需要多處理器系統(tǒng)中的處理器支持原子操作,這種原子操作需要處理器有專門的硬件支持才能完成。處理器支持的基本訪存操作粒度一般包括單字節(jié)、雙字節(jié)、四字節(jié)以及更多的字節(jié)數(shù)等,基本操作類型就是讀和寫,而基本原子操作類型有很多種,典型的有:交換操作(swap)、比較且交換操作(compareandswap,cas)、讀后增(increaseafterload,loadinc)、讀后減(decreaseafterload,loaddec)等等。理論上來說,所有映射到處理器可訪問的數(shù)據(jù)地址空間上的片外存儲器、片上存儲器、cache、內(nèi)存、甚至是寄存器都可能發(fā)生原子操作,我們將這些地址空間可以映射到的物理存儲稱之為“存儲實(shí)體”,與這些存儲實(shí)體直接相連的控制邏輯,稱之為“存儲控制器接口”。在ic設(shè)計中,存儲控制器接口的上行邏輯中支持的訪存操作類型和模式通常和存儲實(shí)體接口支持的訪存操作類型不一致,比如某個處理器實(shí)例中,前端ahb總線下面所接的存儲控制器上的存儲實(shí)體是一個單端口sram,我們知道ahb總線支持先讀后寫的原子操作,但是單端口sram并不支持同時讀寫操作,因此需要我們在sram存儲控制器中實(shí)現(xiàn)一個存儲訪問的橋邏輯,該邏輯需要支持sram存儲控制器上行邏輯的存儲命令到下行邏輯存儲命令的轉(zhuǎn)換。發(fā)明語義本發(fā)明提供了一種可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法、可配置狀態(tài)機(jī)及終端設(shè)備,其目的是為了解決現(xiàn)有的不同存儲控制器接口中存儲命令轉(zhuǎn)換邏輯不兼容的問題。為了達(dá)到上述目的,本發(fā)明的實(shí)施例提供了一種可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法,包括:獲取上行邏輯的第一硬件特征信息和下行邏輯的第二硬件特征信息;根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息;根據(jù)所述狀態(tài)機(jī)的狀態(tài)信息,所述輸入事件信息和所述輸出事件信息配置狀態(tài)遷移矩陣,使所述狀態(tài)機(jī)根據(jù)所述狀態(tài)遷移矩陣中的對應(yīng)關(guān)系遷移狀態(tài)。其中,所述狀態(tài)信息包括狀態(tài)機(jī)的狀態(tài)種類和每種狀態(tài)的狀態(tài)語義。其中,所述輸入事件信息包括輸入事件的種類和每種輸入事件的語義;且所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述輸入事件信息的步驟包括:確定所述輸入事件的種類的編號;其中,所述編號為4位的第一數(shù)串,所述第一數(shù)串的第一位表示是否發(fā)生上行邏輯寫操作事件,所述第一數(shù)串的第二位表示是否發(fā)生上行邏輯讀操作事件,所述第一數(shù)串的第三位表示是否發(fā)生上行邏輯寫數(shù)據(jù)到達(dá)事件,所述第一數(shù)串的第四位表示是否發(fā)生下行邏輯讀數(shù)據(jù)到達(dá)事件;根據(jù)所述第一數(shù)串確定所述輸入事件的語義。其中,所述輸出事件信息包括輸出事件的種類和每種輸出事件的語義;所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述輸出事件信息的步驟包括:確定所述輸出事件的種類的編號;其中,所述編號為5位的第二數(shù)串,所述第二數(shù)串的第一位表示是否產(chǎn)生下行邏輯寫操作事件,所述第二數(shù)串的第二位表示是否產(chǎn)生下行邏輯讀操作事件,所述第二數(shù)串的第三位表示是否產(chǎn)生下行邏輯寫數(shù)據(jù)到達(dá)事件,所述第二數(shù)串的第四位表示是否產(chǎn)生上行邏輯讀數(shù)據(jù)到達(dá)事件,所述第二數(shù)串的第五位表示下一拍上行邏輯接口的準(zhǔn)備信號的賦值;根據(jù)所述第二數(shù)串確定所述輸出事件的語義。其中,所述根據(jù)所述狀態(tài)機(jī)的狀態(tài)信息,所述輸入事件信息和所述輸出事件信息配置狀態(tài)遷移矩陣的步驟包括:獲取所述狀態(tài)機(jī)的當(dāng)前狀態(tài)語義和輸入事件信息;根據(jù)所述當(dāng)前狀態(tài)語義和所述輸入事件信息,配置出所述狀態(tài)機(jī)的下一拍狀態(tài)語義和輸出事件信息;將配置結(jié)果添加到第一二元組到第二二元組的映射函數(shù)中,形成狀態(tài)遷移矩陣。其中,在所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息的步驟之后,所述方法還包括:給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)支持輸出事件延時輸出的第一控制指令;或給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)不支持輸出事件延時輸出的第二控制指令。其中,在所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息的步驟之后,所述方法還包括:給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)支持延時寫操作的第三控制指令;或給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)不支持延時寫操作的第四控制指令。其中,在所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息的步驟之后,所述方法還包括:檢測所述狀態(tài)機(jī)的下行邏輯接口中是否存在多個寫緩沖區(qū);若存在,則維護(hù)一個寫計數(shù)器,記錄來自上行邏輯中尚未完成的寫操作個數(shù)。其中,在所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息的步驟之后,所述方法還包括:檢測所述狀態(tài)機(jī)的下行邏輯接口中是否存在多個讀緩沖區(qū);若存在,則維護(hù)一個讀計數(shù)器,記錄來自上行邏輯中尚未完成的讀操作個數(shù)。本發(fā)明的實(shí)施例還提供了一種可配置狀態(tài)機(jī),包括:獲取模塊,用于獲取上行邏輯的第一硬件特征信息和下行邏輯的第二硬件特征信息;第一配置模塊,用于根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息;第二配置模塊,用于根據(jù)所述狀態(tài)機(jī)的狀態(tài)信息,所述輸入事件信息和所述輸出事件信息配置狀態(tài)遷移矩陣,使所述狀態(tài)機(jī)根據(jù)所述狀態(tài)遷移矩陣中的對應(yīng)關(guān)系遷移狀態(tài)。本發(fā)明的實(shí)施例還提供了一種終端設(shè)備,包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運(yùn)行的計算機(jī)程序,所述處理器執(zhí)行所述計算機(jī)程序時實(shí)現(xiàn)上述實(shí)施例所述方法的步驟。本發(fā)明的上述方案有如下的有益效果:本發(fā)明的上述實(shí)施例所述的可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法、可配置狀態(tài)機(jī)及終端設(shè)備來實(shí)現(xiàn)各種不同的存儲控制器接口中存儲命令轉(zhuǎn)換邏輯的設(shè)計,以降低存儲控制器接口邏輯設(shè)計的復(fù)雜度,提高存儲控制器接口的靈活性和通用性。附圖說明圖1為本發(fā)明的可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法的流程示意圖;圖2為本發(fā)明的可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法的具體步驟示意圖之一;圖3為本發(fā)明的可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法的具體步驟示意圖之二;圖4為本發(fā)明的可配置狀態(tài)機(jī)的結(jié)構(gòu)示意圖;圖5為本發(fā)明的可配置狀態(tài)機(jī)適用的終端設(shè)備的結(jié)構(gòu)示意圖;圖6為本發(fā)明的可配置狀態(tài)機(jī)的第一實(shí)例的狀態(tài)遷移矩陣圖;圖7為本發(fā)明的可配置狀態(tài)機(jī)的第二實(shí)例的狀態(tài)遷移矩陣圖;圖8為本發(fā)明的可配置狀態(tài)機(jī)的第三實(shí)例的狀態(tài)遷移矩陣圖。具體實(shí)施方式為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例進(jìn)行詳細(xì)描述。本發(fā)明針對現(xiàn)有的不同存儲控制器接口中存儲命令轉(zhuǎn)換邏輯不兼容的問題,提供了一種可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法、可配置狀態(tài)機(jī)及終端設(shè)備。如圖1所示,本發(fā)明的實(shí)施例提供了一種可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法,包括:步驟11,獲取上行邏輯的第一硬件特征信息和下行邏輯的第二硬件特征信息;步驟12,根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息;步驟13,根據(jù)所述狀態(tài)機(jī)的狀態(tài)信息,所述輸入事件信息和所述輸出事件信息配置狀態(tài)遷移矩陣,使所述狀態(tài)機(jī)根據(jù)所述狀態(tài)遷移矩陣中的對應(yīng)關(guān)系遷移狀態(tài)。本發(fā)明的上述實(shí)施例所述的可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法將發(fā)送到存儲控制器接口的原子操作抽象為“不可中斷的先讀后寫操作”,同時對該接口上行邏輯(即存儲控制器接口與片上互連網(wǎng)絡(luò)、交叉開關(guān)或仲裁器的連接的邏輯)接口和下行邏輯(即存儲控制器接口與存儲實(shí)體連接的邏輯)接口進(jìn)行抽象;將存儲控制器接口中的狀態(tài)和狀態(tài)遷移抽象為一個狀態(tài)機(jī),該狀態(tài)機(jī)可以根據(jù)功能進(jìn)行配置以實(shí)現(xiàn)靈活的存儲控制器接口功能。其中,所述上行邏輯接口和所述下行邏輯接口均被抽象為一個八元組(wen,ren,addr,wdata_v,wdata,rdata_v,rdata,ready),對于上行邏輯u而言u.wen、u.ren、u.addr、u.wdata_v以及u.wdata是輸出信號,u.rdata_v、u.rdata、u.ready是輸入信號;而對下行邏輯d而言d.wen、d.ren、d.addr、d.wdata_v以及d.wdata是輸入信號,d.rdata_v,d.rdata,d.ready是輸出信號;下面對這八個元組做出詳細(xì)的解釋:wen:二值邏輯true(1)或false(0),表征寫操作使能信號;ren:二值邏輯true(1)或false(0),表征讀操作使能信號,如果wen和ren同時有效,表示發(fā)生一個先讀后寫的原子操作;addr:表征操作地址信號;wdata_v:二值邏輯true(1)或false(0),表征寫數(shù)據(jù)有效信號;wdata:表征寫數(shù)據(jù)信號;rdata_v:二值邏輯true(1)或false(0),表征讀數(shù)據(jù)有效信號;rdata:表征讀數(shù)據(jù)信號;ready:二值邏輯true(1)或false(0),表征操作預(yù)備信號,以上行邏輯為例,只有當(dāng)ready信號為1時,上行邏輯才能向存儲控制器接口發(fā)送讀操作(ren=1)或?qū)懖僮?wen=1)或者先讀后寫的原子操作。其中,所述狀態(tài)信息包括狀態(tài)機(jī)的狀態(tài)種類和每種狀態(tài)的狀態(tài)語義。本發(fā)明的上述實(shí)施例中所述的存儲控制器接口中最核心的是其狀態(tài)機(jī),一個狀態(tài)機(jī)主要由狀態(tài)、輸入事件、輸出事件以及狀態(tài)遷移函數(shù)4部分組成,本發(fā)明所述的可配置狀態(tài)機(jī)的狀態(tài)最多有5種,并通過一個5位的狀態(tài)配置掩碼cfg0來配置每一種狀態(tài)在狀態(tài)機(jī)中是否有效;這5種狀態(tài)分別為:0-idle:表示狀態(tài)機(jī)處于空閑狀態(tài),由cfg0[0]來配置狀態(tài)是否有效;1-wdata:表示狀態(tài)機(jī)收到了一個寫操作命令,正在等待寫數(shù)據(jù),由cfg0[1]來配置狀態(tài)是否有效;2-rdata:表示狀態(tài)機(jī)收到了一個讀操作命令,正在等待讀數(shù)據(jù),由cfg0[2]來配置狀態(tài)是否有效;3-lockrdata:表示狀態(tài)機(jī)收到了一個先讀后寫的原子操作命令,寫數(shù)據(jù)還未到達(dá),正在等待讀數(shù)據(jù),由cfg0[3]來配置狀態(tài)是否有效;4-lockrdataw:表示狀態(tài)機(jī)收到了一個先讀后寫的原子操作命令,寫數(shù)據(jù)已到達(dá),正在等待讀數(shù)據(jù),由cfg0[4]來配置狀態(tài)是否有效。如圖2所示,所述輸入事件信息包括輸入事件的種類和每種輸入事件的語義;且所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述輸入事件信息的步驟包括:步驟21,確定所述輸入事件的種類的編號;其中,所述編號為4位的第一數(shù)串,所述第一數(shù)串的第一位表示是否發(fā)生上行邏輯寫操作事件,所述第一數(shù)串的第二位表示是否發(fā)生上行邏輯讀操作事件,所述第一數(shù)串的第三位表示是否發(fā)生上行邏輯寫數(shù)據(jù)到達(dá)事件,所述第一數(shù)串的第四位表示是否發(fā)生下行邏輯讀數(shù)據(jù)到達(dá)事件;步驟22,根據(jù)所述第一數(shù)串確定所述輸入事件的語義。本發(fā)明的上述實(shí)施例所述的輸入事件信息最多包括16種,所述輸入事件的編號采用一個4位的數(shù)m來表示,其中第0位m0表示是否發(fā)生上行邏輯寫操作事件,第1位m1表示是否發(fā)生上行邏輯讀操作事件,第2位m2表示是否發(fā)生上行邏輯寫數(shù)據(jù)到達(dá)事件,第3位m3表示是否發(fā)生下行邏輯讀數(shù)據(jù)到達(dá)事件。所有的輸入事件都用字母“a”開始,后接一個10進(jìn)制數(shù)或者一個“-”開始的4位二進(jìn)制串m3m2m1m0來表示;比如a.1001號事件就是十進(jìn)制的a9號事件,表示同時發(fā)生上行邏輯寫操作事件和下行邏輯讀數(shù)據(jù)到達(dá)事件。其中,所述輸入事件有5種基本類型:1)a.0000(a0):空事件ε,表示沒有任何事件到達(dá),該事件無需配置,永遠(yuǎn)有效;2)a.0001(a1):uev_wr,表示上行邏輯寫操作事件,具體表現(xiàn)為上行邏輯u中u.wen&&u.ready值為1;3)a.0010(a2):uev_rd,表示上行邏輯讀操作事件,具體表現(xiàn)為上行邏輯u中u.ren&&u.ready值為1;4)a.0100(a4):uev_wrdata,表示上行邏輯寫數(shù)據(jù)到達(dá)事件,具體表現(xiàn)為上行邏輯u中u.wdata_v值為1,該事件無效時表示寫數(shù)據(jù)到達(dá)時間與上行邏輯寫操作事件同拍,即u.wdata_v=u.wen&&u.ready;5)a.1000(a8):dev_rddata,表示下行邏輯讀數(shù)據(jù)到達(dá)事件,具體表現(xiàn)為下行邏輯d中d.rdata_v值為1,該事件無效時表示下行邏輯讀數(shù)據(jù)到達(dá)時間與下行邏輯讀操作事件同拍,即d.rdata_v=d.wen&&d.ready。除了上述5種基本輸入事件以外,通過將上述5種基本事件類型復(fù)合組合最多可能遇到16種事件:比如a.0011(a3),表示上行邏輯同時讀寫操作事件,具體表現(xiàn)為上行邏輯u中u.wen&&u.ren&&u.ready值為1,該事件無效時表示上行邏輯接口不支持同拍的讀寫原子操作;比如a.0111(a7),表示同時發(fā)生上行邏輯讀寫操作事件和上行邏輯寫數(shù)據(jù)到達(dá)事件;比如a.1010(a10),表示同時發(fā)生上行邏輯讀操作事件和下行邏輯讀數(shù)據(jù)到達(dá)事件。除了上述16種輸入事件以外,還有一種特殊的輸入事件:即下行邏輯d中d.ready觸發(fā)的事件,由于下行邏輯的準(zhǔn)備信號為0的時候,上行邏輯不能發(fā)出任何操作,所以,我們把所有d.ready==0的情況全部歸為a.0000(a0)事件,也就是空事件ε。本發(fā)明所述的可配置狀態(tài)機(jī)包含一個16位的配置項(xiàng)cfg1來配置每一種輸入事件是否有效,其中cfg1的第m位為1,表示輸入事件中am號事件是有效的。比如,如果cfg1配置為0x000f(1111),這表示可配置狀態(tài)機(jī)包含4種輸入事件(a0,a1,a2,a3),即(a.000,a.0001,a.0010,a.0011),其它輸入事件均無效;如果cfg1配置為0x00ff(11111111),這表示可配置狀態(tài)機(jī)只包含7種輸入事件(a0-a7),即(a.0000–a.0111)。其中,所述輸出事件信息包括輸出事件的種類和每種輸出事件的語義;所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述輸出事件信息的步驟包括:步驟23,確定所述輸出事件的種類的編號;其中,所述編號為5位的第二數(shù)串,所述第二數(shù)串的第一位表示是否產(chǎn)生下行邏輯寫操作事件,所述第二數(shù)串的第二位表示是否產(chǎn)生下行邏輯讀操作事件,所述第二數(shù)串的第三位表示是否產(chǎn)生下行邏輯寫數(shù)據(jù)到達(dá)事件,所述第二數(shù)串的第四位表示是否產(chǎn)生上行邏輯讀數(shù)據(jù)到達(dá)事件,所述第二數(shù)串的第五位表示下一拍上行邏輯接口的準(zhǔn)備信號的賦值;步驟24,根據(jù)所述第二數(shù)串確定所述輸出事件的語義。本發(fā)明的上述實(shí)施例所述的可配置狀態(tài)機(jī)中最多包括32種輸出事件,輸出事件的編號采用一個5位的數(shù)n來表示,其中第0位n0表示是否產(chǎn)生下行邏輯寫操作事件,第1位n1表示是否產(chǎn)生下行邏輯讀操作事件,第2位n2表示是否產(chǎn)生下行邏輯寫數(shù)據(jù)到達(dá)事件,第3位n3表示是否產(chǎn)生上行邏輯讀數(shù)據(jù)到達(dá)事件,第4位n4表示下一拍上行邏輯接口的ready信號的賦值。所有的輸出事件都用字母“b”開始,后接一個10進(jìn)制數(shù)或者一個“-”開始的5位二進(jìn)制串n4n3n2n1n0來表示。比如b.01001號事件就是十進(jìn)制的b9號事件,表示同時產(chǎn)生下行邏輯寫操作事件和上行邏輯讀數(shù)據(jù)到達(dá)事件,并在下一拍將上行邏輯接口的準(zhǔn)備信號的置為0。其中,所述輸出事件有6種基本類型:1)b.00000(b0):ε,表示沒有任何事件到達(dá),該事件無需配置,永遠(yuǎn)有效;2)b.00001(b1):dev_wr,表示下行邏輯寫操作事件,具體表現(xiàn)為下行邏輯d中d.wen=1;3)b.00010(b2):dev_rd,表示下行邏輯讀操作事件,具體表現(xiàn)為下行邏輯d中d.ren=1;4)b.00100(b4):dev_wrdata,表示下行邏輯寫數(shù)據(jù)到達(dá)事件,具體表現(xiàn)為下行邏輯d中d.wdata_v=1,該事件無效時表示寫數(shù)據(jù)到達(dá)時間與下行邏輯寫操作事件同拍,即d.wdata_v=d.wen&&d.ready;5)b.01000(b8):uev_rddata,表示上行邏輯讀數(shù)據(jù)到達(dá)事件,具體表現(xiàn)為上行邏輯u中u.rdata_v=1,該事件無效時表示上行邏輯讀數(shù)據(jù)到達(dá)時間與下行邏輯讀數(shù)據(jù)到達(dá)事件同拍,即u.rdata_v=d.rdata_v,u.rdata=d.rdata。6)b.10000(b16):uev_ready,它表示下一拍將上行邏輯接口的準(zhǔn)備信號的置為1,如果沒有該事件發(fā)生,上行邏輯接口的準(zhǔn)備信號下一拍將被置為0。除了上述6種基本輸出事件以外,通過將上述6種基本事件類型復(fù)合組合最多可能遇到32種事件:比如b.00011(b3),表示下行邏輯同時讀寫操作事件,具體表現(xiàn)為下行邏輯d中d.wen和d.ren同時置1,且上行邏輯接口的ready信號下一拍置為0,該事件無效時表示下行邏輯接口不支持同拍的讀寫原子操作;比如b.10101(b21),表示同時發(fā)生下行邏輯寫操作事件和下行邏輯寫數(shù)據(jù)到達(dá)事件,且上行邏輯接口的ready信號下一拍置為1;比如b.11001(b25),表示同時發(fā)生下行邏輯寫操作事件和上行邏輯讀數(shù)據(jù)到達(dá)事件,且上行邏輯接口的ready信號下一拍置為1。本發(fā)明的上述實(shí)施例中所述的可配置狀態(tài)機(jī)中包含一個32位的配置項(xiàng)cfg2來配置每一種輸出事件是否有效,其中cfg2的第n位為1,表示輸出事件中bn號事件是有效的。比如,如果cfg2配置為0xffff0000(11111111111111110000000000000000),這表示可配置狀態(tài)機(jī)只包含16種輸出事件(b16-b31),這種配置隱含著說明上行邏輯接口的準(zhǔn)備信號永遠(yuǎn)保持為1。如圖3所示,所述根據(jù)所述狀態(tài)機(jī)的狀態(tài)信息,所述輸入事件信息和所述輸出事件信息配置狀態(tài)遷移矩陣的步驟包括:步驟31,獲取所述狀態(tài)機(jī)的當(dāng)前狀態(tài)語義和輸入事件信息;步驟32,根據(jù)所述當(dāng)前狀態(tài)語義和所述輸入事件信息,配置出所述狀態(tài)機(jī)的下一拍狀態(tài)語義和輸出事件信息;步驟33,將配置結(jié)果添加到第一二元組到第二二元組的映射函數(shù)中,形成狀態(tài)遷移矩陣。本發(fā)明的上述實(shí)施例中所述的可配置狀態(tài)機(jī)的狀態(tài)遷移是(當(dāng)前狀態(tài),輸入事件)二元組到(下一拍狀態(tài),輸出事件)二元組的映射函數(shù),通過一個最大5×16項(xiàng)的狀態(tài)遷移矩陣cfg3來配置和表示,函數(shù)形式為:cfg3:(當(dāng)前狀態(tài),輸入事件)->(下一拍狀態(tài),輸出事件);比如,cfg3(0,a.0010)=(2,b.11010)表示的是當(dāng)前狀態(tài)為0-idle時,接收到a.0010事件(也就是上行邏輯發(fā)來的讀操作事件)后,狀態(tài)機(jī)下一拍狀態(tài)將遷移到2-rdata,下一拍上行邏輯ready信號會被置1,允許接收其它操作,同拍還將產(chǎn)生uev_rddata和dev_rd的輸出事件。其中,在所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息的步驟之后,所述方法還包括:給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)支持輸出事件延時輸出的第一控制指令;或給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)不支持輸出事件延時輸出的第二控制指令。本發(fā)明的上述實(shí)施例所述的可配置狀態(tài)機(jī)還包括cfg4配置項(xiàng),表征的是在可配置的狀態(tài)機(jī)中輸出事件是否延時輸出,其默認(rèn)值為0,表示除了uev_ready事件以外,其它輸出事件都是同拍輸出的,如果cfg4配置為n,則表示除了uev_ready事件以外,其它輸出事件都是延時n拍輸出的。cfg4典型的配置為0或者1。其中,在所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息的步驟之后,所述方法還包括:給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)支持延時寫操作的第三控制指令;或給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)不支持延時寫操作的第四控制指令。本發(fā)明的上述實(shí)施例所述的可配置狀態(tài)機(jī)還包括cfg5配置項(xiàng),表征的是在可配置的狀態(tài)機(jī)中是否支持延時寫操作,其默認(rèn)值為1,表示支持延時寫。該配置與輸入事件的配置項(xiàng)cfg1和輸出事件的配置項(xiàng)cfg2有關(guān),例如,當(dāng)基本輸入事件a4在cfg1中被配置為有效,基本輸出事件類型b4在cfg2中被配置為無效的時候,cfg5必須被配置為1,這是因?yàn)樯闲羞壿嫷膶懖僮骱蛯憯?shù)據(jù)是分離的,但下行邏輯中寫操作和寫數(shù)據(jù)必須同拍,這就要求下行邏輯接口中,必須等到上行邏輯的寫數(shù)據(jù)到達(dá)之后才能向下行邏輯發(fā)起寫操作;其它情況下,cfg5可以配置為0,也可以配置為1。支持延時寫還有一個作用,當(dāng)上行邏輯支持同時讀寫且基本輸入事件a4在cfg1中被配置為有效,但下行邏輯不支持同時讀寫且基本輸入事件b4在cfg1中被配置為無效時,上行邏輯先發(fā)出一個寫操作,但是寫數(shù)據(jù)還未到達(dá),當(dāng)寫數(shù)據(jù)到達(dá)時,同時上行邏輯還發(fā)生了一個讀操作,此時下行邏輯此時只能產(chǎn)生一個讀請求,而本應(yīng)發(fā)生的寫操作必須存進(jìn)可配置的狀態(tài)機(jī)中維護(hù)的一個(waddr_q,wdata_q)二元組寄存器,等待下行邏輯空閑后延后處理該寫操作,此時所以與該地址相關(guān)的讀操作會被旁路返回。其中,在所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息的步驟之后,所述方法還包括:檢測所述狀態(tài)機(jī)的下行邏輯接口中是否存在多個寫緩沖區(qū);若存在,則維護(hù)一個寫計數(shù)器,記錄來自上行邏輯中尚未完成的寫操作個數(shù)。本發(fā)明的上述實(shí)施例所述的可配置狀態(tài)機(jī)還包括cfg6配置項(xiàng),表征的是下行邏輯接口中是否有多個寫緩沖區(qū),其默認(rèn)值為1,表示下行邏輯接口中有多個寫緩沖區(qū)。當(dāng)cfg6配置為1時,可配置狀態(tài)機(jī)中將維護(hù)一個寫計數(shù)器wrcnt用于記錄來自上行邏輯中尚未完成的寫操作個數(shù),記符號w=(wrcnt!=0),w的取值為0或1。wrcnt工作原理如下:1)當(dāng)接收到的輸入事件m中m0==1&&m2==0時,wrcnt加1;2)接收到的輸入事件m中m0==0&&m2==1時,wrcnt減1;3)其它情況下wrcnt保持不變。其中,在所述根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息的步驟之后,所述方法還包括:檢測所述狀態(tài)機(jī)的下行邏輯接口中是否存在多個讀緩沖區(qū);若存在,則維護(hù)一個讀計數(shù)器,記錄來自上行邏輯中尚未完成的讀操作個數(shù)。本發(fā)明的上述實(shí)施例所述的可配置狀態(tài)機(jī)還包括cfg7配置項(xiàng),表征的是下行邏輯接口中是否有多個讀緩沖區(qū),其默認(rèn)值為1,表示下行邏輯接口中有多個讀緩沖區(qū)。當(dāng)cfg7配置為1時,可配置狀態(tài)機(jī)中將維護(hù)一個讀計數(shù)器rdcnt,用于記錄來自上行邏輯中尚未完成的讀操作個數(shù),記符號r=(rdcnt?。?),r的取值為0或1。rdcnt工作原理如下:1)當(dāng)接收到的輸入事件m中m1==1&&m3==0時,rdcnt加1;2)接收到的輸入事件m中m1==0&&m3==1時,rdcnt減1;3)其它情況下rdcnt保持不變。本發(fā)明的上述實(shí)施例所述的可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法對存儲控制器接口邏輯進(jìn)行抽象簡化設(shè)計,并設(shè)計了一個可配置的狀態(tài)機(jī)專用模塊,可以通過不同配置用于支持絕大部分不同的基本原子操作和不同的存儲實(shí)體,大大簡化了存儲控制器接口邏輯的設(shè)計復(fù)雜度,提高了存儲控制器接口的靈活性和通用性,可以用于面向所有存儲實(shí)體的存儲接口控制器中上行邏輯和下行邏輯的存儲命令轉(zhuǎn)換。針對上述實(shí)施例所述的可配置狀態(tài)機(jī)的實(shí)現(xiàn)方法可列舉如下實(shí)例:a)存儲實(shí)體是寄存器型寄存器可以同拍讀出寄存器數(shù)據(jù),單拍完成寫操作,而且讀寫可以同時完成,針對這種類型的存儲實(shí)體,下行邏輯d中的有效信號d.wen與d.wdata_v、d.ren與d.rdata_v都是同拍有效的。假設(shè)其上行邏輯u中u.wen與u.wdata_v、u.ren與u.rdata_v也是同拍有效的,也就是說當(dāng)發(fā)生原子操作的時候,上行邏輯中的u.wdata無論是否與之前的u.rddata有關(guān),u.wdata都可以同拍生成,因此上行邏輯中u.ready信號可以一直有效。這種情況下,存儲控制器接口狀態(tài)機(jī)的可配置項(xiàng)可以按如下方案來配置:cfg0=0x01,狀態(tài)機(jī)只有一種狀態(tài):0-idle;cfg1=0x000f,輸入事件有4種類型:a.0000(a0)-a.0011(a3),該狀態(tài)機(jī)中基本輸入事件uev_wrdata和dev_rddata被配置為無效,也就是說輸入事件m中m2和m3永遠(yuǎn)為0;cfg2=0x000f_0000,輸出事件有4種:b.10000(b16)–b.10011(b19),該狀態(tài)機(jī)中基本輸出事件dev_wrdata和uev_rddata被配置為無效,也就是說輸出事件n中n2和n3永遠(yuǎn)為0,同時,上行邏輯中u.ready信號一直為1;狀態(tài)遷移矩陣cfg3配置和狀態(tài)遷移圖表如圖6和表1所示,需要說明的是在狀態(tài)遷移圖中結(jié)點(diǎn)表示狀態(tài),邊的方向表示狀態(tài)的遷移方向,有向邊上的注釋中冒號以前表示接收到的輸入事件m,冒號以后表示的是產(chǎn)生的輸出事件編號n,如果有多種“輸入事件:輸出事件”組合能夠到達(dá)相同的目標(biāo)狀態(tài)時,用逗號“,”隔開。如不做特殊說明,以下皆同;其它配置選項(xiàng)cfg4=0,cfg5=0,cfg6=0,cfg7=0。按照上述配置,狀態(tài)機(jī)一開始處于0-idle態(tài):當(dāng)接收到輸入事件a0時,產(chǎn)生輸出事件b16,下一拍保持0-idle態(tài);當(dāng)接收到輸入事件a1時,產(chǎn)生輸出事件b17,下一拍保持0-idle態(tài);當(dāng)接收到輸入事件a2時,產(chǎn)生輸出事件b18,下一拍保持0-idle態(tài);當(dāng)接收到輸入事件a3時,產(chǎn)生輸出事件b19,下一拍保持0-idle態(tài)。輸入事件\狀態(tài)0a00,b16a10,b17a20,b18a30,b19表1b)存儲實(shí)體是單端口sram型單端口sram可以在下一拍讀出sram數(shù)據(jù),寫操作可單拍完成,而且讀寫可以不能同時進(jìn)行,針對這種類型的存儲實(shí)體,下行邏輯d中的有效信號d.wen與d.wdata_v是同拍有效的,d.wen與d.ren不能同時有效,d.rdata_v在d.ren的下一拍變?yōu)橛行А<僭O(shè)其上行邏輯接口只支持swap原子操作,則上行邏輯u中u.wen和u.wdata_v是同拍有效的,u.rdata_v與d.rdata_v是同拍有效的,那么發(fā)生原子操作的時候,上行邏輯u中u.ready信號必須置0,直到u.rdata_v有效為止,這樣可以保證原子操作的原子性不被打破,同時保證單端口sram不會發(fā)生資源相關(guān)。這種情況下,存儲控制器接口狀態(tài)機(jī)可以按如下方案來配置:cfg0=0x15,狀態(tài)機(jī)只有以下3種狀態(tài):0-idle,2-rdata,4-lockrdataw;cfg1=0x0f0f,輸入事件有8種:a.0000(a0)-a.0011(a3),a.1000(a8)-a.1011(a11),該狀態(tài)機(jī)中基本輸入事件uev_wrdata被配置為無效,也就是說輸入事件m中m2永遠(yuǎn)為0;cfg2=0x0007_0004,輸出事件有4種:b.00010(b2),b.10000(b16)–b.10010(b18),該狀態(tài)機(jī)中基本輸出事件dev_wrdata和uev_rddata被配置為無效,也就是說輸出事件n中n2和n3永遠(yuǎn)為0,u.rdata_v=d.rdata_v,u.rdata=d.rdata;狀態(tài)遷移矩陣cfg3配置和狀態(tài)遷移圖表如圖7和表2所示。其它配置選項(xiàng)cfg4=0,cfg5=0,cfg6=0,cfg7=0。按照上述配置,狀態(tài)機(jī)一開始處于0-idle態(tài):1)狀態(tài)機(jī)處于0-idle態(tài)時,當(dāng)接收到輸入事件a0,產(chǎn)生輸出事件b16,下一拍進(jìn)入0-idle態(tài);當(dāng)接收到輸入事件a1,產(chǎn)生輸出事件b17,下一拍進(jìn)入0-idle態(tài);當(dāng)接收到輸入事件a2,產(chǎn)生輸出事件b18,下一拍進(jìn)入2-rdata態(tài);當(dāng)接收到輸入事件a3,產(chǎn)生輸出事件b2,下一拍進(jìn)入4-lockrdataw態(tài)。該狀態(tài)下其它任何事件均為非法事件。2)狀態(tài)機(jī)處于2-rdata態(tài)時,當(dāng)接收到輸入事件a8,產(chǎn)生輸出事件b16,下一拍進(jìn)入0-idle態(tài);當(dāng)接收到輸入事件a9,產(chǎn)生輸出事件b17,下一拍進(jìn)入0-idle態(tài);當(dāng)接收到輸入事件a10,產(chǎn)生輸出事件b18,下一拍進(jìn)入2-rdata態(tài);當(dāng)接收到輸入事件a11,產(chǎn)生輸出事件b2,下一拍進(jìn)入4-lockrdataw態(tài)。該狀態(tài)下其它任何事件均為非法事件。3)狀態(tài)機(jī)處于4-lockrdataw態(tài)時,當(dāng)接收到輸入事件a8時,產(chǎn)生輸出事件b17,下一拍進(jìn)入0-idle態(tài)。該狀態(tài)下其它任何事件均非法。輸入事件\狀態(tài)024a00,b16--a10,b17--a22,b18--a34,b2--a8-0,b240,b25a9-0,b25-a10-2,b26-a11-4,b10表2c)存儲實(shí)體是片外內(nèi)存型片外內(nèi)存讀操作發(fā)出后需要多拍才能返回讀數(shù)據(jù),寫操作和寫數(shù)據(jù)也是分離發(fā)出的,但是讀寫不能同時發(fā)生。針對這種類型的存儲實(shí)體,下行邏輯d中的有效信號d.wen與d.ren不能同時有效,d.wdata_v在d.wen有效后的若干拍后才變?yōu)橛行?,且mrdata_v也是在mren有效后的若干拍后才變?yōu)橛行А<僭O(shè)其上行邏輯接口支持所有的基本原子操作,則上行邏輯u中u.wen和u.wdata_v不是同拍有效的,u.wdata_v比u.wen晚若干拍,u.rdata_v與d.rdata_v信號同拍有效,那么發(fā)生原子操作的時候,u.ready信號必須置0,直到u.rdata_v有效為止,這樣可以保證原子操作的原子性不被打破,如果u.wdata與之前的u.rddata有關(guān)(如cas、loadinc以及l(fā)oaddec等原子操作),則u.wdata_v會晚于u.rdata_v發(fā)生,如果上行邏輯接口中的u.wdata與之前的u.rddata無關(guān)(如swap原子操作),則u.wdata_v會早于u.rdata_v發(fā)生。另外,假設(shè)片外內(nèi)存的控制器中只有一個寫命令緩沖區(qū),但有多個讀命令緩沖區(qū),當(dāng)下行邏輯的讀緩沖區(qū)沒有空閑項(xiàng)存儲讀請求時,d.ready會置0,此時上行邏輯不會向存儲控制器接口發(fā)送讀請求或先讀后寫請求,而且當(dāng)上行邏輯接口發(fā)出了寫操作但是寫數(shù)據(jù)還沒有到達(dá)時,u.ready信號必須置0。這種情況下,存儲控制器接口狀態(tài)機(jī)的可配置項(xiàng)可以按如下方案來配置:cfg0=0x1f,狀態(tài)機(jī)包含以下5種狀態(tài):0-idle,1-wdata,2-rdata,3-lockrdata,4-lockrdataw;cfg1=0xffff,輸入事件有16種:a.0000(a0)-a.1111(a15);cfg2=0x0077_0077,輸出事件有10種:b.00000(b0)–b.00010(b2),b.00101(b5),b.00110(b6),b.10000(b16),b.10010(b18),b.10100(b20)–b.10110(b22),該狀態(tài)機(jī)中基本輸出事件uev_rddata被配置為無效,也就是說輸出事件n中n3永遠(yuǎn)為0,u.rdata_v=d.rdata_v,u.rdata=d.rdata;;狀態(tài)遷移矩陣cfg3配置和狀態(tài)遷移圖表如圖8和表3所示。其它配置選項(xiàng)cfg4=0,cfg5=1,cfg6=0,cfg7=1。按照上述配置,1)狀態(tài)機(jī)處于0-idle態(tài)時,當(dāng)接收到輸入事件a0時,產(chǎn)生輸出事件b16,下一拍進(jìn)入0-idle態(tài);當(dāng)接收到輸入事件a1時,產(chǎn)生輸出事件b1,下一拍進(jìn)入1-wdata態(tài);當(dāng)接收到輸入事件a2時,產(chǎn)生輸出事件b18,下一拍進(jìn)入2-rdata態(tài);當(dāng)接收到輸入事件a3時,產(chǎn)生輸出事件b2,下一拍進(jìn)入3-lockrdata態(tài)。該狀態(tài)下其它任何事件均為非法事件。2)狀態(tài)機(jī)處于1-wdata態(tài)時,當(dāng)接收到輸入事件a0時,產(chǎn)生輸出事件b0,下一拍進(jìn)入1-wdata態(tài);當(dāng)接收到輸入事件a4時,產(chǎn)生輸出事件b20,如果r==0(即,rdcnt==0),下一拍進(jìn)入0-idle態(tài),否則如果r==1(即,rdcnt?。?),下一拍2-rdata態(tài);當(dāng)接收到輸入事件a5時,產(chǎn)生輸出事件b5,下一拍進(jìn)入1-wdata態(tài);當(dāng)接收到輸入事件a6時,產(chǎn)生輸出事件b22,下一拍進(jìn)入2-rdata態(tài);當(dāng)接收到輸入事件a7時,產(chǎn)生輸出事件b6,下一拍進(jìn)入3-lockrdata態(tài);當(dāng)接收到輸入事件a8時,產(chǎn)生輸出事件b0,下一拍進(jìn)入1-wdata態(tài);當(dāng)接收到輸入事件a12時,產(chǎn)生輸出事件b20,如果r==0(即,rdcnt==0),下一拍進(jìn)入0-idle態(tài),否則如果r==1(即,rdcnt!=0),下一拍2-rdata態(tài);當(dāng)接收到輸入事件a13時,產(chǎn)生輸出事件b5,下一拍進(jìn)入1-wdata態(tài);當(dāng)接收到輸入事件a14時,產(chǎn)生輸出事件b22,下一拍進(jìn)入2-rdata態(tài);當(dāng)接收到輸入事件a15時,產(chǎn)生輸出事件b6,下一拍進(jìn)入3-lockrdata態(tài);該狀態(tài)下其它任何事件均為非法事件。3)狀態(tài)機(jī)處于2-rdata態(tài)時,當(dāng)接收到輸入事件a0時,產(chǎn)生輸出事件b16,下一拍進(jìn)入2-rdata態(tài);當(dāng)接收到輸入事件a1時,產(chǎn)生輸出事件b1,下一拍1-wdata態(tài);當(dāng)接收到輸入事件a2時,產(chǎn)生輸出事件b18,下一拍進(jìn)入2-rdata態(tài);當(dāng)接收到輸入事件a3時,產(chǎn)生輸出事件b2,下一拍進(jìn)入3-lockrdata態(tài);當(dāng)接收到輸入事件a8時,產(chǎn)生輸出事件b16,如果r==0(即,rdcnt==0),下一拍進(jìn)入0-idle態(tài),否則如果r==1(即,rdcnt?。?),下一拍2-rdata態(tài);當(dāng)接收到輸入事件a9時,產(chǎn)生輸出事件b1,下一拍進(jìn)入1-wdata態(tài);當(dāng)接收到輸入事件a10時,產(chǎn)生輸出事件b18,下一拍進(jìn)入2-rdata態(tài);當(dāng)接收到輸入事件a11時,產(chǎn)生輸出事件b2,下一拍進(jìn)入3-lockrdata態(tài);該狀態(tài)下其它任何事件均為非法事件。4)狀態(tài)機(jī)處于3-lockrdata態(tài)時,當(dāng)接收到輸入事件a0時,產(chǎn)生輸出事件b0,下一拍進(jìn)入3-lockrdata態(tài);當(dāng)接收到輸入事件a4時,產(chǎn)生輸出事件b5,下一拍進(jìn)入4-lockrdataw態(tài);當(dāng)接收到輸入事件a8時,產(chǎn)生輸出事件b0,下一拍進(jìn)入1-wdata態(tài);當(dāng)接收到輸入事件a12時,產(chǎn)生輸出事件b21,下一拍進(jìn)入0-idle態(tài)。該狀態(tài)下其它任何事件均為非法事件。5)狀態(tài)機(jī)處于4-lockrdataw態(tài)時,當(dāng)接收到輸入事件a0時,產(chǎn)生輸出事件b0,下一拍進(jìn)入4-lockrdataw態(tài);當(dāng)接收到輸入事件a8時,產(chǎn)生輸出事件b1,下一拍進(jìn)入0-idle態(tài)。該狀態(tài)下其它任何事件均為非法事件。事件\狀態(tài)01234a00,b161,b02,b163,b04,b0a11,b1-1,b1--a22,b18-2,b18--a33,b2-3,b2--a4-r*2,b20-4,b5-a5-1,b5---a6-2,b22---a7-3,b6---a8-1,b0r*2,b161,b00,b0a9--1,b1--a10--2,b18--a11--3,b2--a12-r*2,b20-0,b21-a13-1,b5---a142,b22---a15-3,b6---表3如圖4所示,本發(fā)明的實(shí)施例還提供了一種可配置狀態(tài)機(jī),包括:獲取模塊,用于獲取上行邏輯的第一硬件特征信息和下行邏輯的第二硬件特征信息;第一配置模塊,用于根據(jù)所述第一硬件特征信息和所述第二硬件特征信息配置所述狀態(tài)機(jī)的狀態(tài)信息,輸入事件信息和輸出事件信息;第二配置模塊,用于根據(jù)所述狀態(tài)機(jī)的狀態(tài)信息,所述輸入事件信息和所述輸出事件信息配置狀態(tài)遷移矩陣,使所述狀態(tài)機(jī)根據(jù)所述狀態(tài)遷移矩陣中的對應(yīng)關(guān)系遷移狀態(tài)。其中,所述第一配置模塊包括:第一確定模塊,用于確定所述輸入事件的種類的編號;其中,所述編號為4位的第一數(shù)串,所述第一數(shù)串的第一位表示是否發(fā)生上行邏輯寫操作事件,所述第一數(shù)串的第二位表示是否發(fā)生上行邏輯讀操作事件,所述第一數(shù)串的第三位表示是否發(fā)生上行邏輯寫數(shù)據(jù)到達(dá)事件,所述第一數(shù)串的第四位表示是否發(fā)生下行邏輯讀數(shù)據(jù)到達(dá)事件;第二確定模塊,用于根據(jù)所述第一數(shù)串確定所述輸入事件的語義。其中,所述第一配置模塊包括:第三確定模塊,用于確定所述輸出事件的種類的編號;其中,所述編號為5位的第二數(shù)串,所述第二數(shù)串的第一位表示是否產(chǎn)生下行邏輯寫操作事件,所述第二數(shù)串的第二位表示是否產(chǎn)生下行邏輯讀操作事件,所述第二數(shù)串的第三位表示是否產(chǎn)生下行邏輯寫數(shù)據(jù)到達(dá)事件,所述第二數(shù)串的第四位表示是否產(chǎn)生上行邏輯讀數(shù)據(jù)到達(dá)事件,所述第二數(shù)串的第五位表示下一拍上行邏輯接口的準(zhǔn)備信號的賦值;第四確定模塊,用于根據(jù)所述第二數(shù)串確定所述輸出事件的語義。其中,第二配置模塊包括:第一獲取子模塊,用于獲取所述狀態(tài)機(jī)的當(dāng)前狀態(tài)語義和輸入事件信息;第一配置子模塊,用于根據(jù)所述當(dāng)前狀態(tài)語義和所述輸入事件信息,配置出所述狀態(tài)機(jī)的下一拍狀態(tài)語義和輸出事件信息;第二配置子模塊,用于將配置結(jié)果添加到第一二元組到第二二元組的映射函數(shù)中,形成狀態(tài)遷移矩陣。其中,所述可配置狀態(tài)機(jī)還包括:第三配置模塊,用于給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)支持輸出事件延時輸出的第一控制指令;或用于給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)不支持輸出事件延時輸出的第二控制指令。其中,所述可配置狀態(tài)機(jī)還包括:第四配置模塊,用于給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)支持延時寫操作的第三控制指令;或用于給所述狀態(tài)機(jī)配置一用于使所述狀態(tài)機(jī)不支持延時寫操作的第四控制指令。其中,所述可配置狀態(tài)機(jī)還包括:第五配置模塊,用于檢測所述狀態(tài)機(jī)的下行邏輯接口中是否存在多個寫緩沖區(qū);若存在,則維護(hù)一個寫計數(shù)器,記錄來自上行邏輯中尚未完成的寫操作個數(shù)。其中,所述可配置狀態(tài)機(jī)還包括:第六配置模塊,用于檢測所述狀態(tài)機(jī)的下行邏輯接口中是否存在多個讀緩沖區(qū);若存在,則維護(hù)一個讀計數(shù)器,記錄來自上行邏輯中尚未完成的讀操作個數(shù)。本發(fā)明的上述實(shí)施例所述的可配置狀態(tài)機(jī)對存儲控制器接口邏輯進(jìn)行抽象簡化設(shè)計,并設(shè)計了一個可配置的狀態(tài)機(jī)專用模塊,可以通過不同配置用于支持絕大部分不同的基本原子操作和不同的存儲實(shí)體,大大簡化了存儲控制器接口邏輯的設(shè)計復(fù)雜度,提高了存儲控制器接口的靈活性和通用性,可以用于面向所有存儲實(shí)體的存儲接口控制器中上行邏輯和下行邏輯的存儲命令轉(zhuǎn)換。本發(fā)明的實(shí)施例還提供了一種終端設(shè)備,包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運(yùn)行的計算機(jī)程序,所述處理器執(zhí)行所述計算機(jī)程序時實(shí)現(xiàn)上述實(shí)施例所述方法的步驟。如圖5所示,本發(fā)明的實(shí)施例中所述的終端設(shè)備設(shè)置在存儲控制器接口部分,第一端與上行邏輯相匹配連接,第二端與下行邏輯及存儲實(shí)體相匹配連接,且所述上行邏輯與多個處理器相連接。以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁12