專利名稱:第二代低功耗雙倍速率存儲(chǔ)控制器及訪問命令處理方法
技術(shù)領(lǐng)域:
本申請涉及網(wǎng)絡(luò)數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別是涉及第ニ代低功耗雙倍速率存儲(chǔ)控制器及訪問命令處理方法。
背景技術(shù):
LPDDR2 (Low Power Double Data Rate 2,第二代低功耗雙倍速率)存儲(chǔ)控制器是最新一代移動(dòng)設(shè)備的內(nèi)存控制器,普遍應(yīng)用于最新的通訊領(lǐng)域基帶S0C(System on Chip,片上系統(tǒng))芯片當(dāng)中。LPDDR2 存儲(chǔ)控制器用于從 AXI (Advanced Extensible Intergace,高級(jí)可擴(kuò)展接ロ)總線接收數(shù)據(jù)和將LPDDR2存儲(chǔ)器中的數(shù)據(jù)發(fā)送至AXI總線。其具體步驟為步驟ー控制器接收并解析訪問命令,獲取訪問地址,確定當(dāng)前坊問的塊bank和イ丁 row ;步驟ニ 判斷當(dāng)前訪問的塊bank和行row與上一次訪問的塊bank和行row是否相同,如果當(dāng)前訪問的塊bank與上一次訪問的塊bank不同或者和當(dāng)前訪問的行row與上一次訪問的行row不同,執(zhí)行步驟三,如果當(dāng)前訪問的塊bank和行row與上一次訪問的塊bank和行row相同,執(zhí)行步驟五;其中塊bank為LPDDR2中大分塊數(shù)據(jù)存儲(chǔ)單元,行row為LPDDR2中小分塊數(shù)據(jù)存儲(chǔ)單元。步驟三使用LPDDR2的預(yù)充電命令precharge關(guān)閉上一次訪問的塊bank ;步驟四使用LPDDR2的激活命令A(yù)ctive打開當(dāng)前訪問的塊bank和行row,執(zhí)行
步驟五;步驟五進(jìn)行數(shù)據(jù)的讀或者寫。LPDDR2存儲(chǔ)控制器通過執(zhí)行上述步驟可以實(shí)現(xiàn)數(shù)據(jù)的通信,然而,上述LPDDR2存儲(chǔ)控制器執(zhí)行步驟可以看出當(dāng)前坊問的塊bank與上一次訪問的塊bank不同或者和當(dāng)前訪問的行row與上一次訪問的行row不同時(shí),貝U需要執(zhí)行預(yù)充電命令precharge關(guān)閉上一次訪問的塊bank,再執(zhí)行激活命令A(yù)ctive打開當(dāng)前坊問的塊bank和行iow,才可進(jìn)行數(shù)據(jù)的讀或者寫。這種反復(fù)執(zhí)行預(yù)充電命令precharge關(guān)閉塊bank,激活命令A(yù)ctive打開塊bank和行row,消耗了不必要的時(shí)間,降低了 LPDDR2存儲(chǔ)控制器的訪問效率。
發(fā)明內(nèi)容
有鑒于此,本申請實(shí)施例公開ー種LPDDR2存儲(chǔ)控制器及訪問命令處理方法,以減少LPDDR2存儲(chǔ)控制器反復(fù)執(zhí)行預(yù)充電命令precharge關(guān)閉塊bank,激活命令A(yù)ctive打開塊bank和行iow的次數(shù),降低時(shí)間消耗,提高訪問效率。技術(shù)方案如下基于本申請的一方面,公開了ー種第二代低功耗雙倍速率LPDDR2存儲(chǔ)控制器,包括訪問確定模塊,用于從總線接收訪問命令并緩存,選擇已緩存且未排序的訪問命令并解析,確定當(dāng)前選擇的訪問命令訪問的塊bank和行row ;
判斷模塊,用于判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同;排序模塊,用于在當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank相同,且當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row相同時(shí),將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行row的訪問命令后,同時(shí),將原本排在該訪問命令后的其他訪問命令后移;否則,將當(dāng)前選擇的訪問命令排在已排序的所有訪問命令之后。優(yōu)選地,還包括計(jì)數(shù)器,用于記錄訪問命令的阻塞時(shí)間;阻塞時(shí)間判定模塊,用于判斷訪問命令對應(yīng)的阻塞時(shí)間是否達(dá)到預(yù)設(shè)閾值;
置頂模塊,用于在阻塞時(shí)間判定模塊判斷訪問命令對應(yīng)的阻塞時(shí)間達(dá)到預(yù)設(shè)閾值時(shí),將阻塞時(shí)間達(dá)到預(yù)設(shè)閾值的訪問命令排在首位,并將其他訪問命令后移。優(yōu)選地,還包括寫數(shù)據(jù)緩存模塊,用于存儲(chǔ)從總線接收的數(shù)據(jù);訪問命令輸出控制模塊,用于按照所述排序模塊對訪問命令的排列順序依次從訪問確定模塊中讀取訪問命令,發(fā)送給LPDDR2主狀態(tài)機(jī)執(zhí)行;寫數(shù)據(jù)輸出控制模塊,用于在訪問命令輸出控制模塊讀取的是寫命令時(shí),將寫數(shù)據(jù)緩存模塊存儲(chǔ)的與寫命令對應(yīng)的數(shù)據(jù)讀出并發(fā)送至LPDDR2主狀態(tài)機(jī);讀數(shù)據(jù)輸出控制模塊,用于在訪問命令輸出控制模塊讀取的是讀命令吋,將LPDDR2主狀態(tài)機(jī)執(zhí)行該讀命令所返回的數(shù)據(jù)發(fā)送至總線。優(yōu)選地,所述寫數(shù)據(jù)輸出控制模塊包括寫數(shù)據(jù)存儲(chǔ)位置分配単元,用于為各寫命令在所述寫數(shù)據(jù)緩存模塊中分配存儲(chǔ)區(qū),所述存儲(chǔ)區(qū)用于緩存與所述寫命令對應(yīng)的數(shù)據(jù);位置保存単元,用于保存所述各寫命令對應(yīng)的存儲(chǔ)區(qū)位置;數(shù)據(jù)輸出単元,用于在訪問命令輸出控制模塊讀取的是寫命令時(shí),獲取寫命令對應(yīng)的存儲(chǔ)區(qū)位置,依據(jù)存儲(chǔ)區(qū)位置獲取所述寫命令對應(yīng)的數(shù)據(jù)并發(fā)送至LPDDR2主狀態(tài)機(jī)。優(yōu)選地,LPDDR2存儲(chǔ)控制器內(nèi)置有用來標(biāo)識(shí)從總線接收的讀命令對應(yīng)的讀命令順序編號(hào)的讀命令順序計(jì)數(shù)器,所述讀命令順序編號(hào)表明從總線接收的讀命令的實(shí)際順序。優(yōu)選地,所述讀數(shù)據(jù)輸出控制模塊包括編號(hào)保存単元,用于保存各讀命令對應(yīng)的讀命令順序編號(hào);讀數(shù)據(jù)緩存單元,用于接收LPDDR2主狀態(tài)機(jī)執(zhí)行所述訪問命令輸出控制模塊讀取的讀命令返回的數(shù)據(jù),并獲取該讀命令對應(yīng)的讀命令順序編號(hào),緩存所述返回的數(shù)據(jù)和該返回?cái)?shù)據(jù)對應(yīng)的讀命令順序編號(hào);讀數(shù)據(jù)輸出單元,用于依據(jù)從總線接收讀命令的順序獲取編號(hào)保存単元中保存的讀命令順序編號(hào),當(dāng)所述讀數(shù)據(jù)緩存単元中緩存有所述讀數(shù)據(jù)輸出單元獲取到的讀命令順序編號(hào)時(shí),將該讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)發(fā)送至總線,以及當(dāng)讀數(shù)據(jù)緩存單元中未緩存有讀數(shù)據(jù)輸出單元獲取到的讀命令順序編號(hào)時(shí),等待讀數(shù)據(jù)緩存單元接收到并緩存該讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)后發(fā)送返回?cái)?shù)據(jù)至總線。
優(yōu)選地,所述訪問確定模塊包括讀命令緩存器;寫命令緩存器;命令訪問閾值寄存器,用于設(shè)置連續(xù)選擇讀命令的最大選擇次數(shù)以及連續(xù)選擇寫命名的最大選擇次數(shù);命令選擇次數(shù)計(jì)數(shù)器,用于對連續(xù)選擇讀命令的次數(shù)進(jìn)行計(jì)數(shù)以及連續(xù)選擇寫命令的次數(shù)進(jìn)行計(jì)數(shù);命令選擇單元,用于在所述讀命令緩沖器非空和/或連續(xù)選擇讀命令的次數(shù)未達(dá)到最大選擇次數(shù)時(shí)從所述讀命令緩沖器中選擇命令,以及在所述寫命令緩沖器非空和/或連續(xù)選擇寫命令的次數(shù)未達(dá)到最大選擇次數(shù)時(shí)從所述寫命令緩沖器中選擇命令;
命令選擇切換單元,用于在連續(xù)選擇讀命令的次數(shù)達(dá)到最大選擇次數(shù)和/或讀命令緩沖器為空時(shí)控制所述命令選擇單元從所述寫命令緩沖器中選擇命令,以及在在連續(xù)選擇寫命令的次數(shù)達(dá)到最大選擇次數(shù)和/或?qū)懨罹彌_器為空時(shí)控制所述命令選擇單元從所述讀命令緩沖器中選擇命令?;诒旧暾埖牧硪环矫妫€公開了一種訪問命令處理方法,包括從總線接收訪問命令并緩存,選擇已緩存且未排序的訪問命令并解析,確定當(dāng)前選擇的訪問命令訪問的塊bank和行row ;判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同;在當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank相同,且當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row相同時(shí),將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行row的訪問命令后,同吋,將原本排在該訪問命令后的其他訪問命令后移。優(yōu)選地,還包括在當(dāng)前選擇的訪問命令訪問的塊bank與已排序的所有訪問命令訪問的塊bank不同和/或當(dāng)前選擇的訪問命令訪問的行row與已排序的所有訪問命令訪問的行row不同時(shí),將當(dāng)前選擇的訪問命令排在已排序的所有訪問命令之后。優(yōu)選地,在確定當(dāng)前選擇的訪問命令訪問的塊bank和行row之后,判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及所選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同之前還包括判斷緩存的所有訪問命令對應(yīng)的阻塞時(shí)間是否達(dá)到預(yù)設(shè)閾值;當(dāng)任意一個(gè)訪問命令對應(yīng)的阻塞時(shí)間達(dá)到預(yù)設(shè)閾值時(shí),將阻塞時(shí)間達(dá)到預(yù)設(shè)閾值的訪問命令排在首位,并將其他訪問命令后移;當(dāng)所有訪問命令對應(yīng)的阻塞時(shí)間均未達(dá)到預(yù)設(shè)閾值時(shí),執(zhí)行判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及所選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同。優(yōu)選地,保存各讀命令對應(yīng)的讀命令順序編號(hào);所述方法還包括讀取已排序的讀命令,發(fā)送所述讀命令給LPDDR2主狀態(tài)機(jī)執(zhí)行;
接收LPDDR2主狀態(tài)機(jī)執(zhí)行讀命令返回的數(shù)據(jù),并獲取該讀命令對應(yīng)的讀命令順序編號(hào),緩存所述返回的數(shù)據(jù)和該返回?cái)?shù)據(jù)對應(yīng)的讀命令順序編號(hào);依據(jù)從總線接收讀命令的順序,獲取所保存的讀命令順序編號(hào),當(dāng)緩存的讀命令順序編號(hào)與獲取到的讀命令順序編號(hào)匹配吋,將該讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)發(fā)送至總線;當(dāng)緩存的讀命令順序編號(hào)與獲取到的讀命令順序編號(hào)不匹配時(shí),返回執(zhí)行讀取已排序的讀命令,發(fā)送所述讀命令給LPDDR2主狀態(tài)機(jī)執(zhí)行。應(yīng)用上述技術(shù)方案,解析當(dāng)前所選擇的訪問命令,確定當(dāng)前選擇的訪問命令訪問的塊bank和行row ,如果當(dāng)前選擇的訪問命令訪問的塊bank和行row與已排序的訪問命令訪問的塊bank和行row,則將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行row的訪問命令后,即將訪問相同塊bank和行row的訪問命令互相排列在相鄰位置,進(jìn)而在讀取訪問命令時(shí),依據(jù)排序讀取,減少關(guān)閉塊bank,以及打開塊bank和行row時(shí)間,提高LPDDR2存儲(chǔ)控制器訪問效率。
為了更清楚地說明本申請實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的ー些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器的一種結(jié)構(gòu)示意圖;圖2為緩存器中命令排列的ー種示意圖;圖3為緩存器中命令排列的另ー種示意圖;圖4為緩存器中命令排列的再ー種示意圖;圖5為訪問命令的格式的ー種示意圖;圖6為本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器中訪問確定模塊的結(jié)構(gòu)示意圖;圖7為本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器的另ー種結(jié)構(gòu)示意圖;圖8為緩存器中命令排列的再ー種示意圖;圖9為訪問命令的格式的另ー種示意圖;圖10為本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器的再一種結(jié)構(gòu)示意圖;圖11為本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器中寫數(shù)據(jù)輸出控制模塊的結(jié)構(gòu)示意圖;圖12為本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器中讀數(shù)據(jù)輸出控制模塊的結(jié)構(gòu)示意圖;圖13為本申請實(shí)施例公開的訪問命令處理方法的ー種流程圖;圖14為本申請實(shí)施例公開的訪問命令處理方法的另ー種流程圖;圖15為本申請實(shí)施例公開的訪問命令處理方法中讀取數(shù)據(jù)的流程圖。
具體實(shí)施例方式為使本申請的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對本申請作進(jìn)ー步詳細(xì)的說明。本申請實(shí)施例公開的LPDDR2控制器和訪問命令處理方法適用于從各種總線接收訪問命令處理,下面各實(shí)施例將以AXI總線為例,對本申請實(shí)施例公開的LPDDR2控制器和訪問命令處理方法進(jìn)行說明。一個(gè)實(shí)施例發(fā)明人經(jīng)過研究發(fā)現(xiàn),現(xiàn)有LPDDR2存儲(chǔ)控制器在訪問塊bank和行iow吋,當(dāng)前訪問的塊bank與上一次訪問的塊bank不同或者和當(dāng)前訪問的行row與上一次訪問的行row不同時(shí),貝U需要執(zhí)行預(yù)充電命令precharge關(guān)閉上一次訪問的塊bank,再執(zhí)行激活命令A(yù)ctive打開當(dāng)前訪問的塊bank和行row,才可進(jìn)行數(shù)據(jù)的讀或者寫。這種反復(fù)關(guān)閉塊bank,打開塊bank和行iow,消耗了不必要的時(shí)間,降低了 LPDDR2存儲(chǔ)控制器的訪問效率。為了解決上述問題,本申請公開ー種LPDDR2存儲(chǔ)控制器,將訪問相同塊bank和行row的多個(gè)訪問命令排列在相鄰位置,進(jìn)而在讀取訪問命令時(shí),依據(jù)排序讀取,減少關(guān)閉塊 bank,以及打開塊bank和行row時(shí)間,提高LPDDR2存儲(chǔ)控制器訪問效率。結(jié)構(gòu)示意圖如圖I所示,包括訪問確定模塊11、判斷模塊12和排序模塊13。其中訪問確定模塊11,用于從AXI總線接收訪問命令并緩存,選擇已緩存且未排序的訪問命令并解析,確定當(dāng)前選擇的訪問命令訪問的塊bank和行row。LPDDR2存儲(chǔ)控制器接收到的訪問命令包括寫命令和讀命令,其中寫命令和讀命令都是AXI總線上的模塊發(fā)送給AXI總線的,由AXI總線傳輸給LPDDR2存儲(chǔ)控制器,進(jìn)而由LPDDR2存儲(chǔ)控制器發(fā)送給LPDDR2主狀態(tài)機(jī)執(zhí)行。LPDDR2主狀態(tài)機(jī)執(zhí)行寫命令將AXI總線上的數(shù)據(jù)寫入LPDDR2存儲(chǔ)器對應(yīng)的地址,LPDDR2主狀態(tài)機(jī)執(zhí)行讀命令為從LPDDR2存儲(chǔ)器對應(yīng)的地址獲取數(shù)據(jù),進(jìn)ー步發(fā)送至AXI總線。上述訪問確定模塊11可以使用兩個(gè)緩存器分別緩存讀命令和寫命令,也可以使用一個(gè)緩沖器來緩存讀命令和寫命令。本申請優(yōu)選使用兩個(gè)緩沖器來分別緩存讀命令和寫命令,訪問確定模塊11包括讀命令緩存器111和寫命令緩存器112,其中讀命令緩存器111用于緩存讀命令,寫命令緩存器112用于緩存寫命令。緩存器深度設(shè)定為8,即可以緩存的訪問命令的個(gè)數(shù)為8。上述讀命令或者寫命令指定要訪問的塊bank和行iow,可以通過解析訪問命令,獲知訪問地址,則可以確定當(dāng)前選擇的訪問命令訪問的塊bank和行iow。判斷模塊12,用于判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同。已排序的訪問命令為已經(jīng)被排序的所有訪問命令訪問。如訪問確定模塊11接收到讀命令,則已排序的訪問命令為已排序的所有訪問命令。由于當(dāng)前選擇訪問命令可以與已排序的所有命令進(jìn)行對比,相對于只能與上一次緩存的命令進(jìn)行對比,可以更有效地節(jié)省時(shí)間,提高訪問效率。排列模塊13,用于在當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank相同,且當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row相同時(shí),將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行row的訪問命令后,同時(shí),將原本排在該訪問命令后的其他訪問命令后移。其中該訪問命令為與當(dāng)前選擇的訪問命令訪問相同塊bank和行row的已排序的訪問命令。否則,將當(dāng)前選擇的訪問命令排在已排序的所有訪問命令之后。上述命令排列方式為命令重排。請參閱圖2和圖3,圖2和圖3為緩存器中命令排列的兩種示意圖。其中圖2中當(dāng)前選擇的訪問命令4與命令3訪問相同的塊bank和行row,經(jīng)過判斷模塊12判斷后,由排序模塊13將命令4排在命令3后,其他訪問命令排序不變。圖3中當(dāng)前選擇的訪問命令4與命令I(lǐng)訪問相同的塊bank和行row,經(jīng)過過判斷模塊12判斷后,由排序模塊13將命令4排在命令I(lǐng)后,命令2和命令3分別向后移動(dòng)一位。圖2和圖3表示了緩存器如何對命令進(jìn)行重排。前已述及,本申請中緩存器深度優(yōu)選為8,即使用本申請公開的方法可以對8個(gè)訪問命令進(jìn)行重排,也就是說緩存器的深度直接決定了命令重排的處理能力。當(dāng)緩存器的深度越大,表明緩存器可以對更多的訪問命令進(jìn)行重排,進(jìn)而訪問效率的提高程度越高。當(dāng)緩存器的深度越小,表明緩存器進(jìn)行重排的訪問命令少,進(jìn)而訪問效率的提高程度低。
圖4是緩存器中命令排列示意圖,該示意圖表明了當(dāng)前選擇的訪問命令訪問的塊bank與已排序的所有訪問命令訪問的塊bank不同和/或當(dāng)前選擇的訪問命令訪問的行row與已排序的所有訪問命令訪問的行row不同時(shí),訪問命令的排序,即將當(dāng)前選擇的訪問命令排在已排序的所有訪問命令之后。緩存器緩存的訪問命令格式如圖5所示,包括命令訪問地址、數(shù)據(jù)長度、數(shù)據(jù)格式、訪問類型、命令編號(hào)、FIFO編號(hào)和命令有效性。其中命令訪問地址為要訪問的塊bank和行row的地址。訪問類型表明該訪問命令是寫命令還是讀命令。命令編號(hào)為從AXI總線接收命令的實(shí)際順序。FIFO編號(hào)意義為當(dāng)訪問類型為寫命令吋,F(xiàn)IFO編號(hào)為寫數(shù)據(jù)寫入對應(yīng)的存儲(chǔ)區(qū)位置;當(dāng)訪問類型為讀命令吋,F(xiàn)IFO編號(hào)為命令次序編號(hào),與命令編號(hào)相同。命令有效性表明該命令為有效命令。上述訪問確定模塊11的結(jié)構(gòu)示意圖請參閱圖6,包括讀命令緩存器111、寫命令緩存器112、命令訪問閾值寄存器113、命令選擇次數(shù)計(jì)數(shù)器114、命令選擇單元115和命令選擇切換單元116。其中讀命令緩存器111緩存讀命令。寫命令緩存器112緩存寫命令。命令訪問閾值寄存器113,用于設(shè)置連續(xù)選擇讀命令的最大選擇次數(shù)以及連續(xù)選擇寫命名的最大選擇次數(shù)。命令訪問閾值寄存器113可以為ー個(gè)Sbit寄存器,低4bit表示連續(xù)選擇寫命令的最大選擇次數(shù),高4bit表示連續(xù)選擇讀命令的最大選擇次數(shù)。命令訪問閾值寄存器113之所以設(shè)定最大選擇次數(shù),是為了保證命令的及時(shí)獲取和重排,有效利用網(wǎng)絡(luò)帶寬,避免處理同一類型命令時(shí)間過長,導(dǎo)致AXI總線上用于發(fā)送另ー類型命令的通道阻塞。命令選擇次數(shù)計(jì)數(shù)器114,用于對連續(xù)選擇讀命令的次數(shù)進(jìn)行計(jì)數(shù)以及連續(xù)選擇寫命令的次數(shù)進(jìn)行計(jì)數(shù)。命令選擇單元115,用于在讀命令緩沖器111非空和/或連續(xù)選擇讀命令的次數(shù)未達(dá)到最大選擇次數(shù)時(shí)從所述讀命令緩沖器111中選擇命令,以及在寫命令緩沖器112非空和/或連續(xù)選擇寫命令的次數(shù)未達(dá)到最大選擇次數(shù)時(shí)從所述寫命令緩沖器112中選擇命令。命令選擇切換單元116,用于在連續(xù)選擇讀命令的次數(shù)達(dá)到最大選擇次數(shù)和/或讀命令緩沖器111為空時(shí)控制所述命令選擇單元115從所述寫命令緩沖器112中選擇命令,以及在在連續(xù)選擇寫命令的次數(shù)達(dá)到最大選擇次數(shù)和/或?qū)懨罹彌_器112為空時(shí)控制所述命令選擇單元115從所述讀命令緩沖器111中選擇命令。應(yīng)用上述技術(shù)方案,訪問確定模塊11解析當(dāng)前選擇的訪問命令,確定當(dāng)前選擇的訪問命令訪問的塊bank和行row,排列模塊13在判斷模塊12判斷當(dāng)前選擇的訪問命令訪問的塊bank和行row與已排序的訪問命令訪問的塊bank和行row相同時(shí),將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行row的訪問命令后,即將訪問相同塊bank和行row的訪問命令互相排列在相鄰位置,進(jìn)而在讀取訪問命令吋,依據(jù)排序讀取,減少關(guān)閉塊bank,以及打開塊bank和行row時(shí)間,提高LPDDR2存儲(chǔ)控制器訪問效率。另ー個(gè)實(shí)施例上述裝置實(shí)施例通過排列模塊13對訪問命令的排列,避免了塊bank的重復(fù)關(guān)閉和打開,以及行row的重復(fù)打開,節(jié)省了時(shí)間,提高訪問效率。但是,上述排列模塊13對訪問命令的排列不可避免的將不訪問相同塊bank和行row的訪問命令排在緩存器的后面,進(jìn)而有可能造成緩存器內(nèi)命令阻塞的情況。 為了解決上述問題,本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器還可以設(shè)置與緩存器深度對應(yīng)個(gè)數(shù)的計(jì)數(shù)器。每個(gè)計(jì)數(shù)器對應(yīng)ー個(gè)命令,用于在命令向后移動(dòng)時(shí),將計(jì)數(shù)器計(jì)算的阻塞時(shí)間加I。其中阻塞時(shí)間為該命令延遲處理時(shí)間。在判斷模塊12對當(dāng)前選擇的訪問命令訪問的塊bank和行row以及已排序的訪問命令訪問的塊bank和行row進(jìn)行判斷之前,首先對阻塞時(shí)間進(jìn)行判斷,當(dāng)阻塞時(shí)間達(dá)到預(yù)設(shè)閾值時(shí),將該阻塞時(shí)間對應(yīng)的命令放在緩存器所用FIFO隊(duì)列頂端,優(yōu)先處理該命令。請參閱圖7,圖7是本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器的另ー種結(jié)構(gòu)示意圖,在圖I所示的結(jié)構(gòu)示意圖基礎(chǔ)上,增加計(jì)數(shù)器14、阻塞時(shí)間判定模塊15和置頂模塊16。其中計(jì)數(shù)器14,用于記錄訪問命令的阻塞時(shí)間。阻塞時(shí)間判定模塊15,用于判斷訪問命令對應(yīng)的阻塞時(shí)間是否達(dá)到預(yù)設(shè)閾值,如判斷讀命令緩存器111中的所有讀命令對應(yīng)的阻塞時(shí)間是否達(dá)到預(yù)設(shè)閾值。置頂模塊16,用于在阻塞時(shí)間判定模塊15判斷訪問命令對應(yīng)的阻塞時(shí)間達(dá)到預(yù)設(shè)閾值時(shí),將阻塞時(shí)間達(dá)到預(yù)設(shè)閾值的訪問命令排在首位,并將其他訪問命令后移,如圖8所示。圖8為緩存器中命令排列的再ー種示意圖。其中命令7的阻塞時(shí)間經(jīng)過判斷達(dá)到預(yù)設(shè)閾值,則命令7被排在首位,即排在緩存器中用于存儲(chǔ)該命令的FIFO隊(duì)列頂端。當(dāng)阻塞時(shí)間達(dá)到預(yù)設(shè)閾值的訪問命令多于兩個(gè)時(shí),可以依據(jù)阻塞時(shí)間的大小對訪問命令進(jìn)行排序。如當(dāng)阻塞時(shí)間達(dá)到預(yù)設(shè)閾值的訪問命令個(gè)數(shù)為四個(gè)時(shí),將阻塞時(shí)間最大的訪問命令排在首位,將阻塞時(shí)間最小的訪問命令排在第四位,將其他兩個(gè)訪問命令按照阻塞時(shí)間的大小排列,時(shí)間較大的排在第二位,較小的排在第三位。本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器可以在讀命令緩存器111和寫命令緩存器112中緩存訪問命令并緩存已排序的所有訪問命令,也可以在讀命令緩存器111和寫命令緩存器112中緩存訪問命令,將已排序的所有訪問命令在另ー個(gè)緩存器緩存。阻塞時(shí)間判定模塊15需要對緩存有已排序的所有訪問命令的緩存器中訪問命令的阻塞時(shí)間。當(dāng)阻塞時(shí)間判定模塊15判斷訪問命令對應(yīng)的阻塞時(shí)間未達(dá)到預(yù)設(shè)閾值吋,由判斷模塊12判斷當(dāng)前選擇的訪問命令訪問的塊bank和行row與已排序的訪問命令訪問的塊bank 和行 row。上述預(yù)設(shè)閾值與操作實(shí)時(shí)性相關(guān)。當(dāng)操作實(shí)時(shí)性高時(shí),預(yù)設(shè)閾值小,當(dāng)操作實(shí)時(shí)性低吋,預(yù)設(shè)閾值大。本申請實(shí)施例中緩存器緩存的訪問命令格式如圖9所示,在圖5所示的基礎(chǔ)上增加了命令阻塞時(shí)間、立即輸出使能位和命令優(yōu)先級(jí)。其中命令阻塞時(shí)間為計(jì)數(shù)器記錄的該命令的延遲時(shí)間。立即輸出使能位和命令優(yōu)先級(jí)表明該命令的阻塞時(shí)間達(dá)到預(yù)設(shè)閾值,需要將命令放在首位處理。應(yīng)用上述技術(shù)方案,在保證節(jié)省時(shí)間和提高訪問效率的同吋,進(jìn)ー步避免了命令阻塞情況的發(fā)生。再一個(gè)實(shí)施例
上述兩個(gè)實(shí)施例通過對當(dāng)前選擇的訪問命令訪問的塊bank和行row與已排序的訪問命令訪問的塊bank和行row進(jìn)行判斷,依據(jù)判斷結(jié)果處理訪問命令的排序。LPDDR2存儲(chǔ)控制器除了對訪問命令進(jìn)行處理,還需要進(jìn)行數(shù)據(jù)的讀寫操作。LPDDR2存儲(chǔ)控制器可以在圖I或者圖7所示的LPDDR2存儲(chǔ)控制器的基礎(chǔ)上增加其他模塊,實(shí)現(xiàn)對數(shù)據(jù)的讀寫,如圖10所示。圖10是在圖I所示的LPDDR2存儲(chǔ)控制器的基礎(chǔ)上增加寫數(shù)據(jù)緩存模塊17、訪問命令輸出控制模塊18、寫數(shù)據(jù)輸出控制模塊19和讀數(shù)據(jù)輸出控制模塊20。其中寫數(shù)據(jù)緩存模塊17,用于存儲(chǔ)從AXI總線接收的數(shù)據(jù),該數(shù)據(jù)是通過AXI總線上的単獨(dú)通道傳輸。當(dāng)AXI總線每接收ー個(gè)寫命令時(shí),寫數(shù)據(jù)緩存模塊17在其內(nèi)部為該寫命令對應(yīng)的寫數(shù)據(jù)分配一個(gè)存儲(chǔ)區(qū),并將存儲(chǔ)區(qū)編號(hào)發(fā)送至訪問確定模塊11緩存的寫命令中,即寫命令中的FIFO編號(hào)。從AXI總線接收的數(shù)據(jù)可以與寫命令一同傳輸,也単獨(dú)傳輸。當(dāng)寫數(shù)據(jù)緩存模塊17接收到從AXI總線接收的數(shù)據(jù),則會(huì)將該數(shù)據(jù)存儲(chǔ)到為其分配的存儲(chǔ)區(qū)中。訪問命令輸出控制模塊18,用于按照所述排序模塊對訪問命令的排列順序依次從讀命令緩存器111或?qū)懨罹彺嫫?12中,即訪問確定模塊11中讀取訪問命令。寫數(shù)據(jù)輸出控制模塊19,用于在訪問命令輸出控制模塊18讀取的是寫命令吋,將寫數(shù)據(jù)緩存模塊17存儲(chǔ)的與寫命令對應(yīng)的數(shù)據(jù)讀出并發(fā)送至LPDDR2主狀態(tài)機(jī)。讀數(shù)據(jù)輸出控制模塊20,用于在訪問命令輸出控制模塊18讀取的是讀命令吋,將LPDDR2主狀態(tài)機(jī)執(zhí)行該讀命令所返回的數(shù)據(jù)發(fā)送至AXI總線。上述LPDDR2存儲(chǔ)控制器中的排序模塊13對訪問命令排序后,使得緩存器中緩存的命令與實(shí)際AXI總線接收上的命令順序不一致,進(jìn)而導(dǎo)致命令與數(shù)據(jù)不對應(yīng)。為了避免該問題,上述寫數(shù)據(jù)輸出控制模塊19將為各寫命令在寫數(shù)據(jù)緩存模塊分配的存儲(chǔ)區(qū)位置進(jìn)行保存,在訪問命令輸出控制模塊讀取的是寫命令時(shí),獲取寫命令對應(yīng)的存儲(chǔ)區(qū)位置,依據(jù)存儲(chǔ)區(qū)位置獲取寫命令對應(yīng)的的數(shù)據(jù)并發(fā)送至LPDDR2主狀態(tài)機(jī)。寫數(shù)據(jù)輸出控制模塊19的結(jié)構(gòu)示意圖請參閱圖11,包括寫數(shù)據(jù)存儲(chǔ)位置分配単元191、位置獲取單元192和數(shù)據(jù)輸出單元193。寫數(shù)據(jù)存儲(chǔ)位置分配単元191,用于為各寫命令在寫數(shù)據(jù)緩存模塊17中分配存儲(chǔ)區(qū),所述存儲(chǔ)區(qū)用于緩存與所述寫命令對應(yīng)的數(shù)據(jù)。位置獲取單元192,用于保存所述各寫命令對應(yīng)的存儲(chǔ)區(qū)位置。數(shù)據(jù)輸出単元193,用于在訪問命令輸出控制模塊18讀取的是寫命令時(shí),獲取寫命令對應(yīng)的存儲(chǔ)區(qū)位置,依據(jù)存儲(chǔ)區(qū)位置獲取所述寫命令對應(yīng)的數(shù)據(jù)并發(fā)送至LPDDR2主狀態(tài)機(jī),保證了寫命令與發(fā)送至LPDDR2主狀態(tài)機(jī)中的數(shù)據(jù)是一一對應(yīng)的。上述圖11所示的寫數(shù)據(jù)輸出控制模塊19結(jié)合寫命令和存儲(chǔ)區(qū)位置發(fā)送數(shù)據(jù),保證寫命令與數(shù)據(jù)能夠一一對應(yīng),進(jìn)ー步保證寫入LPDDR2主狀態(tài)機(jī)的數(shù)據(jù)與AXI總線實(shí)際發(fā)送的數(shù)據(jù)一致。同樣,經(jīng)過本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器處理后讀命令對于AXImaster端是亂序訪問,如后發(fā)出的讀命令優(yōu)先返回?cái)?shù)據(jù),進(jìn)而使AXI總線上接收到的數(shù)據(jù)與從LPDDR2主狀態(tài)機(jī)輸出的數(shù)據(jù)不一致,因此,需要將接收讀命令的順序與LPDDR2主狀態(tài)機(jī)輸出的數(shù)據(jù)順序保持一致。LPDDR2存儲(chǔ)控制器內(nèi)置ー個(gè)4bit寬度的讀命令順序計(jì)數(shù)器,用來標(biāo)識(shí)從AXI總線接收的讀命令順序編號(hào),并將該讀命令順序編號(hào)寫入與其對應(yīng)的讀命令中的命令編號(hào)和
FIFO編號(hào)字段中。其中讀命令順序編號(hào)表明從總線接收的讀命令的實(shí)際順序。讀數(shù)據(jù)輸出控制模塊20依據(jù)該讀命令順序編號(hào)對LPDDR2主狀態(tài)機(jī)執(zhí)行與讀命令順序編號(hào)對應(yīng)的讀命令返回的數(shù)據(jù)發(fā)送至AXI總線。上述讀數(shù)據(jù)輸出控制模塊20結(jié)構(gòu)示意圖請參閱圖12,包括編號(hào)保存単元201、讀數(shù)據(jù)緩存單元202和讀數(shù)據(jù)輸出單元203。其中編號(hào)保存単元201,用于保存各讀命令對應(yīng)的讀命令順序編號(hào)。讀數(shù)據(jù)緩存單元202,用于接收LPDDR2主狀態(tài)機(jī)執(zhí)行所述訪問命令輸出控制模塊18讀取的讀命令返回的數(shù)據(jù),并獲取該讀命令對應(yīng)的讀命令順序編號(hào),緩存所述返回的數(shù)據(jù)和該返回?cái)?shù)據(jù)對應(yīng)的讀命令順序編號(hào)。讀數(shù)據(jù)輸出單元203,用于依據(jù)從總線接收讀命令的順序獲取編號(hào)保存単元201中保存的讀命令順序編號(hào),當(dāng)讀數(shù)據(jù)緩存單元202與讀數(shù)據(jù)輸出單元203獲取到的讀命令順序編號(hào)匹配吋,將該讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)發(fā)送至AXI總線,以及當(dāng)讀數(shù)據(jù)緩存單元202與讀數(shù)據(jù)輸出單元203獲取到的讀命令順序編號(hào)不匹配吋,等待讀數(shù)據(jù)緩存單元202接收到并緩存該讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)后發(fā)送返回?cái)?shù)據(jù)至AXI總線。需要說明的是讀數(shù)據(jù)輸出單元203毎次依據(jù)從總線接收讀命令的順序獲取ー個(gè)讀命令順序編號(hào),在獲取的讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)發(fā)送至AXI總線后,再依據(jù)從總線接收讀命令的順序獲取下ー個(gè)讀命令順序編號(hào),以保證發(fā)送至AXI總線的數(shù)據(jù)的順序與接收到的讀命令的順序一致。讀數(shù)據(jù)緩存單元202與讀數(shù)據(jù)輸出單元203獲取到的讀命令順序編號(hào)不匹配吋,讀數(shù)據(jù)輸出單元203需要等待讀數(shù)據(jù)緩存單元202接收到并緩存該讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)后發(fā)送返回?cái)?shù)據(jù)至AXI總線后,再獲取編號(hào)保存単元201中保存的下ー個(gè)讀命令順序編號(hào)。與上述裝置實(shí)施例相對應(yīng),本申請基于上述LPDDR2存儲(chǔ)控制器,還公開一種訪問命令處理方法,流程圖如圖13所示,包括SlOl JAAXI總線接收訪問命令并緩存,選擇已緩存且未排序的訪問命令并解析,確定當(dāng)前選擇的訪問命令訪問的塊bank和行row。LPDDR2存儲(chǔ)控制器接收到的訪問命令包括寫命令和讀命令,其中寫命令和讀命令都是AXI總線上的模塊發(fā)送給AXI總線的,由AXI總線傳輸給LPDDR2存儲(chǔ)控制器,進(jìn)而由LPDDR2存儲(chǔ)控制器發(fā)送給LPDDR2主狀態(tài)機(jī)執(zhí)行。LPDDR2主狀態(tài)機(jī)執(zhí)行寫命令將AXI總線上的數(shù)據(jù)寫入LPDDR2存儲(chǔ)器對應(yīng)的地址,LPDDR2主狀態(tài)機(jī)執(zhí)行讀命令為從LPDDR2存儲(chǔ)器對應(yīng)的地址獲取數(shù)據(jù),進(jìn)ー步發(fā)送至AXI總線。上述讀命令或者寫命令指定要訪問的塊bank和行row,可以通過解析訪問命令,獲知訪問地址,則可以確定當(dāng)前選擇的訪問命令訪問的塊bank和行iow。上述對訪問命令的選擇的具體過程請參閱裝置實(shí)施例中對訪問確定模塊11的描述,對此不再加以介紹。S102 :判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同,如果訪問的塊bank和行row相同,執(zhí)行步驟S103 ;否則,執(zhí)行步驟S104。已排序的訪問命令為已經(jīng)被排序的所有訪問命令訪問。如LPDDR2存儲(chǔ)控制器中 訪問確定模塊11接收到讀命令,則已排序的訪問命令為已排序的所有訪問命令。由于當(dāng)前選擇訪問命令可以與已排序的所有命令進(jìn)行對比,相對于只能與上一次緩存的命令進(jìn)行對比,可以更有效地節(jié)省時(shí)間,提高訪問效率。S103 :將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行!·ow的訪問命令后,同時(shí),將原本排在該訪問命令后的其他訪問命令后移。該訪問命令為與當(dāng)前訪問命令訪問相同塊bank和行row的已排序的訪問命令。S104 :將當(dāng)前訪問命令排在已排序的所有訪問命令之后。緩存器中命令排序示意圖請參閱圖2至圖4,緩存器緩存的訪問命令格式請參閱圖5,對此不再加以闡述。應(yīng)用上述技術(shù)方案,解析當(dāng)前選擇的訪問命令,確定當(dāng)前選擇的訪問命令訪問的塊bank和行row,在當(dāng)前選擇的訪問命令訪問的塊bank和行row與已排序的訪問命令訪問的塊bank和行row相同時(shí),則將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行row的訪問命令后,即將訪問相同塊bank和行row的訪問命令互相排列在相鄰位置,進(jìn)而在讀取訪問命令時(shí),依據(jù)排序讀取,減少關(guān)閉塊bank,以及打開塊bank和行row時(shí)間,提高LPDDR2存儲(chǔ)控制器訪問效率。再一個(gè)實(shí)施例上述方法實(shí)施例通過將訪問命令重排避免了塊bank的重復(fù)關(guān)閉和打開,以及行row的重復(fù)打開,節(jié)省了時(shí)間,提高訪問效率。但是,上述方法不可避免的將不訪問相同塊bank和行row的訪問命令排在緩存器的后面,進(jìn)而有可能造成緩存器內(nèi)命令阻塞的情況。為了解決上述問題,本申請公開的LPDDR2存儲(chǔ)控制器増加了計(jì)數(shù)器14。每個(gè)計(jì)數(shù)器14對應(yīng)ー個(gè)命令,用于在命令向后移動(dòng)時(shí),將計(jì)數(shù)器10計(jì)算的阻塞時(shí)間加I。其中阻塞時(shí)間為該命令延遲處理時(shí)間。在對當(dāng)前選擇的訪問命令訪問的塊bank和行row以及已排序的訪問命令訪問的塊bank和行row進(jìn)行判斷之前,首先對阻塞時(shí)間進(jìn)行判斷,當(dāng)阻塞時(shí)間達(dá)到預(yù)設(shè)閾值時(shí),將該阻塞時(shí)間對應(yīng)的命令放在緩存器所用FIFO隊(duì)列頂端,優(yōu)先處理該命令。方法流程圖請參閱圖14,圖14是本申請實(shí)施例公開的訪問命令處理方法的流程圖,在圖13所示的流程圖基礎(chǔ)上,增加對阻塞時(shí)間的判定,包括S701 JAAXI總線接收訪問命令并緩存,選擇已緩存且未排序的訪問命令并解析,確定當(dāng)前選擇的訪問命令訪問的塊bank和行row。S702 :判斷訪問命令對應(yīng)的阻塞時(shí)間是否達(dá)到預(yù)設(shè)閾值,如果是,執(zhí)行步驟S703,如果否,執(zhí)行步驟S704。預(yù)設(shè)閾值與操作實(shí)時(shí)性相關(guān)。當(dāng)操作實(shí)時(shí)性高時(shí),預(yù)設(shè)閾值小,當(dāng)操作實(shí)時(shí)性低吋,預(yù)設(shè)閾值大。S703 :將阻塞時(shí)間達(dá)到預(yù)設(shè)閾值的訪問命令排在首位,并將其他訪問命令后移,如圖8所示。圖8為緩存器中命令排列的再ー種示意圖。其中命令7的阻塞時(shí)間經(jīng)過判斷達(dá)到預(yù)設(shè)閾值,則命令7被排在首位,即排在緩存器中用于存儲(chǔ)該命令的FIFO隊(duì)列頂端。當(dāng)阻塞時(shí)間達(dá)到預(yù)設(shè)閾值的訪問命令多于兩個(gè)時(shí),可以依據(jù)阻塞時(shí)間的大小對訪問命令進(jìn)行排序。如當(dāng)阻塞時(shí)間達(dá)到預(yù)設(shè)閾值的訪問命令個(gè)數(shù)為四個(gè)時(shí),將阻塞時(shí)間最大的訪問命令排在首位,將阻塞時(shí)間最小的訪問命令排在第四位,將其他兩個(gè)訪問命令按照阻塞時(shí)間的大小排列,時(shí)間較大的排在第二位,較小的排在第三位。 本申請實(shí)施例公開的LPDDR2存儲(chǔ)控制器可以在讀命令緩存器111和寫命令緩存器112中緩存訪問命令并緩存已排序的所有訪問命令,也可以在讀命令緩存器111和寫命令緩存器112中緩存訪問命令,將已排序的所有訪問命令在另ー個(gè)緩存器緩存。阻塞時(shí)間判定模塊15需要對緩存有已排序的所有訪問命令的緩存器中訪問命令的阻塞時(shí)間。 S704 :判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同,如果訪問的塊bank和行row相同,執(zhí)行步驟S705 ;如果訪問的塊bank不同和/或行row不同,執(zhí)行步驟S706。S705 :將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行iow的訪問命令后,同時(shí),將原本排在該訪問命令后的其他訪問命令后移,并將其他訪問命令對應(yīng)的計(jì)數(shù)器記錄的阻塞時(shí)間加I。該訪問命令為與當(dāng)前訪問命令訪問相同塊bank和行row的已排序的訪問命令。S706 :將當(dāng)前訪問命令排在已排序的所有訪問命令之后。本申請實(shí)施例中緩存器緩存的訪問命令格式如圖9所示,在圖5所示的基礎(chǔ)上增加了、命令阻塞時(shí)間、立即輸出使能位和命令優(yōu)先級(jí)。其中命令阻塞時(shí)間為計(jì)數(shù)器記錄的該命令的延遲時(shí)間。立即輸出使能位和命令優(yōu)先級(jí)表明該命令的阻塞時(shí)間達(dá)到預(yù)設(shè)閾值,需要將命令放在首位處理。步驟S704至步驟S706的說明可以參閱步驟S102至步驟S104,對此不再加以闡述。應(yīng)用上述技術(shù)方案,在保證節(jié)省時(shí)間和提高訪問效率的同吋,進(jìn)ー步避免了命令阻塞情況的發(fā)生。上述方法實(shí)施例在對讀命令重新排序后,重排后的讀命令對于AXI master端是亂序訪問,如后發(fā)出的讀命令優(yōu)先返回?cái)?shù)據(jù),進(jìn)而使AXI總線上接收到的數(shù)據(jù)與從LPDDR2主狀態(tài)機(jī)輸出的數(shù)據(jù)不一致,因此,需要將接收讀命令的順序與LPDDR2主狀態(tài)機(jī)輸出的數(shù)據(jù)順序保持一致。本申請實(shí)施例公開的訪問命令處理方法實(shí)時(shí)保存各讀命令對應(yīng)的讀命令順序編號(hào),其中讀命令順序編號(hào)表明從AXI總線接收的讀命令的實(shí)際順序。在從總線接收讀命令的同吋,LPDDR2主狀態(tài)機(jī)執(zhí)行接收到的讀命令讀取LPDDR2存儲(chǔ)器內(nèi)的數(shù)據(jù)的流程圖請參閱圖15,包括S801 :讀取已排序的讀命令,發(fā)送讀命令給LPDDR2主狀態(tài)機(jī)執(zhí)行。S802 :接收LPDDR2主狀態(tài)機(jī)執(zhí)行讀命令返回的數(shù)據(jù),并獲取該讀命令對應(yīng)的讀命令順序編號(hào),緩存返回的數(shù)據(jù)和該返回?cái)?shù)據(jù)對應(yīng)的讀命令順序編號(hào)。S803 :依據(jù)從總線接收讀命令的順序,獲取所保存的讀命令順序編號(hào)。步驟S803毎次依據(jù)從總線接收讀命令的順序獲取ー個(gè)讀命令順序編號(hào),在獲取的讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)發(fā)送至總線后,再依據(jù)從總線接收讀命令的順序獲取下ー個(gè)讀命令順序編號(hào),以保證發(fā)送至總線的數(shù)據(jù)的順序與接收到的讀命令的順序一致。步驟S803可以在步驟S801和S802之前進(jìn)行,也可以同時(shí)進(jìn)行。S804 :判斷緩存的讀命令順序編號(hào)與獲取到的讀命令順序編號(hào)是否匹配,如 果是,執(zhí)行步驟S805,否則,返回執(zhí)行步驟S801。S805 :將獲取到的讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)發(fā)送至AXI總線。需要說明的是在返回執(zhí)行步驟S801時(shí),需要在獲取的讀命令順序編號(hào)與緩存的讀命令順序編號(hào)匹配,且將數(shù)據(jù)發(fā)送至AXI總線后,再由步驟S803獲取所保存的下ー個(gè)讀命令順序編號(hào)。在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將ー個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。
在沒有更多限制的情況下,由語句“包括ー個(gè)......”限定的要素,并不排除在包括所述要
素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。以上所述僅是本申請的具體實(shí)施方式
,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請?jiān)淼那疤嵯?,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本申請的保護(hù)范圍。
權(quán)利要求
1.一種第二代低功耗雙倍速率LPDDR2存儲(chǔ)控制器,其特征在于,包括 訪問確定模塊,用于從總線接收訪問命令并緩存,選擇已緩存且未排序的訪問命令并解析,確定當(dāng)前選擇的訪問命令訪問的塊bank和行row ; 判斷模塊,用于判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同; 排序模塊,用于在當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank相同,且當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row相同時(shí),將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行row的訪問命令后,同時(shí),將原本排在該訪問命令后的其他訪問命令后移;否則,將當(dāng)前選擇的訪問命令排在已排序的所有訪問命令之后。
2.根據(jù)權(quán)利要求I所述的LPDDR2存儲(chǔ)控制器,其特征在于,還包括 計(jì)數(shù)器,用于記錄訪問命令的阻塞時(shí)間; 阻塞時(shí)間判定模塊,用于判斷訪問命令對應(yīng)的阻塞時(shí)間是否達(dá)到預(yù)設(shè)閾值; 置頂模塊,用于在阻塞時(shí)間判定模塊判斷訪問命令對應(yīng)的阻塞時(shí)間達(dá)到預(yù)設(shè)閾值時(shí),將阻塞時(shí)間達(dá)到預(yù)設(shè)閾值的訪問命令排在首位,并將其他訪問命令后移。
3.根據(jù)權(quán)利要求I所述的LPDDR2存儲(chǔ)控制器,其特征在于,還包括 寫數(shù)據(jù)緩存模塊,用于存儲(chǔ)從總線接收的數(shù)據(jù); 訪問命令輸出控制模塊,用于按照所述排序模塊對訪問命令的排列順序依次從訪問確定模塊中讀取訪問命令,發(fā)送給LPDDR2主狀態(tài)機(jī)執(zhí)行; 寫數(shù)據(jù)輸出控制模塊,用于在訪問命令輸出控制模塊讀取的是寫命令時(shí),將寫數(shù)據(jù)緩存模塊存儲(chǔ)的與寫命令對應(yīng)的數(shù)據(jù)讀出并發(fā)送至LPDDR2主狀態(tài)機(jī); 讀數(shù)據(jù)輸出控制模塊,用于在訪問命令輸出控制模塊讀取的是讀命令時(shí),將LPDDR2主狀態(tài)機(jī)執(zhí)行該讀命令所返回的數(shù)據(jù)發(fā)送至總線。
4.根據(jù)權(quán)利要求3所述的LPDDR2存儲(chǔ)控制器,其特征在于,所述寫數(shù)據(jù)輸出控制模塊包括 寫數(shù)據(jù)存儲(chǔ)位置分配單元,用于為各寫命令在所述寫數(shù)據(jù)緩存模塊中分配存儲(chǔ)區(qū),所述存儲(chǔ)區(qū)用于緩存與所述寫命令對應(yīng)的數(shù)據(jù); 位置保存單元,用于保存所述各寫命令對應(yīng)的存儲(chǔ)區(qū)位置; 數(shù)據(jù)輸出單元,用于在訪問命令輸出控制模塊讀取的是寫命令時(shí),獲取寫命令對應(yīng)的存儲(chǔ)區(qū)位置,依據(jù)存儲(chǔ)區(qū)位置獲取所述寫命令對應(yīng)的數(shù)據(jù)并發(fā)送至LPDDR2主狀態(tài)機(jī)。
5.根據(jù)權(quán)利要求3所述的LPDDR2存儲(chǔ)控制器,其特征在于,LPDDR2存儲(chǔ)控制器內(nèi)置有用來標(biāo)識(shí)從總線接收的讀命令對應(yīng)的讀命令順序編號(hào)的讀命令順序計(jì)數(shù)器,所述讀命令順序編號(hào)表明從總線接收的讀命令的實(shí)際順序。
6.根據(jù)權(quán)利要求5所述的LPDDR2存儲(chǔ)控制器,其特征在于,所述讀數(shù)據(jù)輸出控制模塊包括 編號(hào)保存單元,用于保存各讀命令對應(yīng)的讀命令順序編號(hào); 讀數(shù)據(jù)緩存單元,用于接收LPDDR2主狀態(tài)機(jī)執(zhí)行所述訪問命令輸出控制模塊讀取的讀命令返回的數(shù)據(jù),并獲取該讀命令對應(yīng)的讀命令順序編號(hào),緩存所述返回的數(shù)據(jù)和該返回?cái)?shù)據(jù)對應(yīng)的讀命令順序編號(hào); 讀數(shù)據(jù)輸出單元,用于依據(jù)從總線接收讀命令的順序獲取編號(hào)保存單元中保存的讀命令順序編號(hào),當(dāng)所述讀數(shù)據(jù)緩存單元中緩存有所述讀數(shù)據(jù)輸出單元獲取到的讀命令順序編號(hào)時(shí),將該讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)發(fā)送至總線,以及當(dāng)讀數(shù)據(jù)緩存單元中未緩存有讀數(shù)據(jù)輸出單元獲取到的讀命令順序編號(hào)時(shí),等待讀數(shù)據(jù)緩存單元接收到并緩存該讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)后發(fā)送返回?cái)?shù)據(jù)至總線。
7.根據(jù)權(quán)利要求I至6任意一項(xiàng)所述的LPDDR2存儲(chǔ)控制器,其特征在于,所述訪問確定模塊包括 讀命令緩存器; 寫命令緩存器; 命令訪問閾值寄存器,用于設(shè)置連續(xù)選擇讀命令的最大選擇次數(shù)以及連續(xù)選擇寫命名 的最大選擇次數(shù); 命令選擇次數(shù)計(jì)數(shù)器,用于對連續(xù)選擇讀命令的次數(shù)進(jìn)行計(jì)數(shù)以及連續(xù)選擇寫命令的次數(shù)進(jìn)行計(jì)數(shù); 命令選擇單元,用于在所述讀命令緩沖器非空和/或連續(xù)選擇讀命令的次數(shù)未達(dá)到最大選擇次數(shù)時(shí)從所述讀命令緩沖器中選擇命令,以及在所述寫命令緩沖器非空和/或連續(xù)選擇寫命令的次數(shù)未達(dá)到最大選擇次數(shù)時(shí)從所述寫命令緩沖器中選擇命令; 命令選擇切換單元,用于在連續(xù)選擇讀命令的次數(shù)達(dá)到最大選擇次數(shù)和/或讀命令緩沖器為空時(shí)控制所述命令選擇單元從所述寫命令緩沖器中選擇命令,以及在在連續(xù)選擇寫命令的次數(shù)達(dá)到最大選擇次數(shù)和/或?qū)懨罹彌_器為空時(shí)控制所述命令選擇單元從所述讀命令緩沖器中選擇命令。
8.一種訪問命令處理方法,其特征在于,包括 從總線接收訪問命令并緩存,選擇已緩存且未排序的訪問命令并解析,確定當(dāng)前選擇的訪問命令訪問的塊bank和行row ; 判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同; 在當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank相同,且當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row相同時(shí),將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行row的訪問命令后,同時(shí),將原本排在該訪問命令后的其他訪問命令后移。
9.根據(jù)權(quán)利要求8所述的訪問命令處理方法,其特征在于,還包括 在當(dāng)前選擇的訪問命令訪問的塊bank與已排序的所有訪問命令訪問的塊bank不同和/或當(dāng)前選擇的訪問命令訪問的行row與已排序的所有訪問命令訪問的行row不同時(shí),將當(dāng)前選擇的訪問命令排在已排序的所有訪問命令之后。
10.根據(jù)權(quán)利要求8或9所述的訪問命令處理方法,其特征在于,在確定當(dāng)前選擇的訪問命令訪問的塊bank和行row之后,判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及所選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同之前還包括 判斷緩存的所有訪問命令對應(yīng)的阻塞時(shí)間是否達(dá)到預(yù)設(shè)閾值;當(dāng)任意一個(gè)訪問命令對應(yīng)的阻塞時(shí)間達(dá)到預(yù)設(shè)閾值時(shí),將阻塞時(shí)間達(dá)到預(yù)設(shè)閾值的訪問命令排在首位,并將其他訪問命令后移; 當(dāng)所有訪問命令對應(yīng)的阻塞時(shí)間均未達(dá)到預(yù)設(shè)閾值時(shí),執(zhí)行判斷當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank,以及所選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row是否相同。
11.根據(jù)權(quán)利要求9所述的訪問命令處理方法,其特征在于,保存各讀命令對應(yīng)的讀命令順序編號(hào); 所述方法還包括 讀取已排序的讀命令,發(fā)送所述讀命令給LPDDR2主狀態(tài)機(jī)執(zhí)行; 接收LPDDR2主狀態(tài)機(jī)執(zhí)行讀命令返回的數(shù)據(jù),并獲取該讀命令對應(yīng)的讀命令順序編號(hào),緩存所述返回的數(shù)據(jù)和該返回?cái)?shù)據(jù)對應(yīng)的讀命令順序編號(hào); 依據(jù)從總線接收讀命令的順序,獲取所保存的讀命令順序編號(hào),當(dāng)緩存的讀命令順序編號(hào)與獲取到的讀命令順序編號(hào)匹配時(shí),將該讀命令順序編號(hào)對應(yīng)的返回?cái)?shù)據(jù)發(fā)送至總線. 當(dāng)緩存的讀命令順序編號(hào)與獲取到的讀命令順序編號(hào)不匹配時(shí),返回執(zhí)行讀取已排序的讀命令,發(fā)送所述讀命令給LPDDR2主狀態(tài)機(jī)執(zhí)行。
全文摘要
本申請公開了一種LPDDR2存儲(chǔ)控制器和訪問命令處理方法。一種LPDDR2存儲(chǔ)控制器包括訪問確定模塊、判斷模塊和排序模塊。排序模塊在當(dāng)前選擇的訪問命令訪問的塊bank與已排序的訪問命令訪問的塊bank相同,且當(dāng)前選擇的訪問命令訪問的行row與已排序的訪問命令訪問的行row相同時(shí),將當(dāng)前選擇的訪問命令排在與其訪問相同塊bank和行row的訪問命令后,同時(shí),將原本排在該訪問命令后的其他訪問命令后移,即將訪問相同塊bank和行row的訪問命令互相排列在相鄰位置,進(jìn)而在讀取訪問命令時(shí),依據(jù)排序讀取,減少關(guān)閉塊bank,以及打開塊bank和行row時(shí)間,提高LPDDR2存儲(chǔ)控制器訪問效率。
文檔編號(hào)G06F12/06GK102855195SQ20111018232
公開日2013年1月2日 申請日期2011年6月30日 優(yōu)先權(quán)日2011年6月30日
發(fā)明者高峰, 王明耀 申請人:重慶重郵信科通信技術(shù)有限公司