国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種ddr控制器及其實(shí)現(xiàn)方法和芯片的制作方法

      文檔序號(hào):6769381閱讀:427來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):一種ddr控制器及其實(shí)現(xiàn)方法和芯片的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于雙倍數(shù)據(jù)速率同步動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器DDR SDRAM(Doubledata rate Synchronous dynamic random access memory)控制器技術(shù)領(lǐng)域,尤其涉及——禾中DDR控制器及其實(shí)現(xiàn)方法和芯片。
      背景技術(shù)
      DDR SDRAM控制器(在本申請(qǐng)文件中簡(jiǎn)稱(chēng)“DDR控制器”)的設(shè)計(jì)要支持DDR器件最基本、最常用的命令,包括ACTIVE (激活命令),READ (讀命令),WRITE (寫(xiě)命令), PRECHARGE (預(yù)充電命令)。其中ACTIVE和PRECHARGE會(huì)產(chǎn)生額外的帶寬消耗,是影響DDR 器件帶寬的關(guān)鍵因素,請(qǐng)參閱圖1,圖中給出了基本的DDR傳輸時(shí)序圖。DDR器件內(nèi)部的存儲(chǔ)單元是由Bank(塊)、Row(行)、Col (列)組合成的矩陣單元,因此要訪問(wèn)某個(gè)Bank內(nèi)由 Row、Col選中的存儲(chǔ)體,首先要發(fā)送ACTIVE命令來(lái)激活該Bank、Row,然后才能發(fā)送READ/ WRITE命令并伴隨要訪問(wèn)的Col,在滿(mǎn)足相應(yīng)的時(shí)間參數(shù)后DDR器件才將相應(yīng)的數(shù)據(jù)送到 DQ(數(shù)據(jù)線)端口上。如果第一個(gè)讀/寫(xiě)命令后又有第二個(gè)讀/寫(xiě)命令,根據(jù)該命令所要訪問(wèn)的Bank、Row不同,DDR控制器處理可能出現(xiàn)的三種情況(1)第二個(gè)命令與第一個(gè)命令訪問(wèn)相同的Bank、R0W,直接發(fā)送READ/WRITE命令即可,請(qǐng)參閱圖2。(2)第二個(gè)命令與第一個(gè)命令訪問(wèn)相同的Bank,不同的Row,則首先要用 PRECHARGE命令關(guān)閉第一個(gè)命令所訪問(wèn)的Row,然后再用ACTIVE命令激活第二個(gè)命令所訪問(wèn)的Row,最后才能發(fā)送READ/WRITE命令,請(qǐng)參閱圖3。(3)第二個(gè)命令與第一個(gè)命令訪問(wèn)不同的Bank、Row,那么首先要用ACTIVE命令激活第二個(gè)命令所訪問(wèn)的Bank、Row,然后發(fā)送READ/WRITE命令。與第二種情況不同的是少了一個(gè)PRECHARGE命令,請(qǐng)參閱圖4。從第二種和第三種情況可以看到,由于額外的PRECHARGE和ACTIVE命令的插入使得DQ上的數(shù)據(jù)不再連續(xù),從而造成帶寬上的浪費(fèi)。通常DDR控制器的設(shè)計(jì)都是串行執(zhí)行命令的,即前一個(gè)命令完成后,下一個(gè)命令才開(kāi)始解析,因此會(huì)產(chǎn)生帶寬浪費(fèi)現(xiàn)象。

      發(fā)明內(nèi)容
      本發(fā)明實(shí)施例的目的在于提供一種DDR控制器的實(shí)現(xiàn)方法,旨在解決現(xiàn)有技術(shù)中的PRECHARGE和ACTIVE命令的插入會(huì)造成帶寬浪費(fèi)的問(wèn)題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種DDR控制器的實(shí)現(xiàn)方法,所述方法包括下述步驟同時(shí)解析緩存的多個(gè)命令;預(yù)判所述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE命令和ACTIVE命令提前發(fā)送。本發(fā)明實(shí)施例還提供了一種DDR控制器,所述控制器包括
      5
      命令解析單元,用于同時(shí)解析緩存的多個(gè)命令;命令發(fā)送單元,用于預(yù)判所述命令解析單元解析的每一命令訪問(wèn)的地址的Bank 和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE和ACTIVE提前發(fā)送。本發(fā)明實(shí)施例還提供了一種芯片,所述芯片包含上述DDR控制器。本發(fā)明實(shí)施例通過(guò)同時(shí)解析緩存的多個(gè)命令,并預(yù)判上述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE命令和ACTIVE命令提前發(fā)送,使得原來(lái)串行發(fā)送的PRECHARGE命令和ACTIVE命令可以提前以并行的掩蔽在READ或者WRITE等期間,充分利用了 DDR器件的帶寬。


      圖1是現(xiàn)有技術(shù)DDR傳輸?shù)臅r(shí)序圖;圖2是現(xiàn)有技術(shù)相同Bank,相同Row的DDR傳輸時(shí)序圖;圖3是現(xiàn)有技術(shù)相同Bank,不同Row的DDR傳輸時(shí)序圖;圖4是現(xiàn)有技術(shù)不同Bank的DDR傳輸時(shí)序圖;圖5是本發(fā)明實(shí)施例一提供的DDR控制器的實(shí)現(xiàn)方法的實(shí)現(xiàn)流程圖;圖6是本發(fā)明實(shí)施例二提供的串行發(fā)送PRECHARGE命令和ACTIVE命令的時(shí)序圖;圖7是本發(fā)明實(shí)施例二提供的并行提前發(fā)送PRECHARGE命令和ACTIVE命令的時(shí)序圖;圖8是本發(fā)明實(shí)施例三提供的狀態(tài)轉(zhuǎn)換機(jī)的狀態(tài)轉(zhuǎn)換圖的示意圖;圖9是本發(fā)明實(shí)施例四提供的DDR控制器的結(jié)構(gòu)圖。
      具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實(shí)施例通過(guò)DDR控制器預(yù)先解析多個(gè)命令,將其中潛在的PRECHARGE和 ACTIVE命令掩蔽在當(dāng)前正在執(zhí)行的命令中來(lái)實(shí)現(xiàn),充分利用了 DDR器件的帶寬。本發(fā)明實(shí)施例提供了一種DDR控制器的實(shí)現(xiàn)方法,所述方法包括下述步驟同時(shí)解析緩存的多個(gè)命令;預(yù)判所述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE命令和ACTIVE命令提前發(fā)送。本發(fā)明實(shí)施例還提供了一種DDR控制器,所述控制器包括命令解析單元,用于同時(shí)解析緩存的多個(gè)命令;命令發(fā)送單元,用于預(yù)判所述命令解析單元解析的每一命令訪問(wèn)的地址的Bank 和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE和ACTIVE提前發(fā)送。本發(fā)明實(shí)施例還提供了一種芯片,所述芯片包含上述DDR控制器。本發(fā)明實(shí)施例通過(guò)同時(shí)解析緩存的多個(gè)命令,并預(yù)判上述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE命令和ACTIVE命令提前發(fā)送,使得原來(lái)串行發(fā)送的PRECHARGE命令和ACTIVE命令可以提前以并行的掩蔽在READ或者WRITE等期間,充分利用了 DDR器件的帶寬。以下結(jié)合具體實(shí)施例對(duì)本發(fā)明的實(shí)現(xiàn)進(jìn)行詳細(xì)描述實(shí)施例一在DDR器件使用過(guò)程中,PRECHARGE和ACTIVE命令必須發(fā)送,因此串行發(fā)送命令的DDR控制器雖然簡(jiǎn)化了設(shè)計(jì),但是浪費(fèi)了帶寬。但可以發(fā)現(xiàn)在命令發(fā)送過(guò)程中只要滿(mǎn)足相應(yīng)的時(shí)間參數(shù)即可,因此,如果將第二個(gè)命令潛在的PRECHARGE和ACTIVE命令掩蔽在第一命令的tRCD或讀、寫(xiě)數(shù)據(jù)周期內(nèi),可以減少很多額外的時(shí)間開(kāi)銷(xiāo),達(dá)到提高數(shù)據(jù)吞吐率的目的。圖5示出了本發(fā)明實(shí)施例一提供的DDR控制器的實(shí)現(xiàn)方法的實(shí)現(xiàn)流程圖,詳述如下在步驟S501中,同時(shí)解析緩存的多個(gè)命令。在本發(fā)明實(shí)施例中,DDR器件可能接收來(lái)自多個(gè)設(shè)備的多個(gè)命令,則DDR器件要緩存上述多個(gè)命令,同時(shí)解析緩存的多個(gè)命令。在本發(fā)明實(shí)施例中,同時(shí)解析命令的個(gè)數(shù)由DDR器件的bank數(shù)目,以及系統(tǒng)應(yīng)用中有多少主機(jī)訪問(wèn)DDR器件決定,例如同時(shí)解析的命令的數(shù)目可以為3個(gè)、4個(gè)或者8個(gè)。在步驟S502中,預(yù)判上述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE命令和ACTIVE命令提前發(fā)送。在本發(fā)明實(shí)施例中,將PRECHARGE命令和ACTIVE命令提前發(fā)送的同時(shí),提前發(fā)送的PRECHARGE命令和ACTIVE命令還應(yīng)滿(mǎn)足DDR器件的時(shí)間的要求,例如,參數(shù)tRP (PRECHARGE到ACTIVE的時(shí)間間隔)、tRRD (兩個(gè)ACTIVE之間的時(shí)間間隔)以及 tRCD (ACTIVE與讀寫(xiě)命令之間的時(shí)間間隔)等。在本發(fā)明實(shí)施例中,通過(guò)解析的每一命令訪問(wèn)的地址的塊Bank和行Row之間的關(guān)系及每一命令訪問(wèn)的地址的塊Bank和行Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將預(yù)充電PRECHARGE命令和激活A(yù)CTIVE命令提前發(fā)送。本發(fā)明實(shí)施例的方法的還可以應(yīng)用于DDR2SDRAM、DDR3SDRAM或者SDR SDRAM等器件中。本發(fā)明實(shí)施例通過(guò)同時(shí)解析緩存的多個(gè)命令,并預(yù)判上述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE命令和ACTIVE命令提前發(fā)送,使得原來(lái)串行發(fā)送的PRECHARGE命令和ACTIVE命令可以提前以并行的掩蔽在READ或者WRITE等期間的方式發(fā)送,充分利用了 DDR器件的帶寬。實(shí)施例二在本發(fā)明實(shí)施例中,將PRECHARGE命令和ACTIVE命令提前發(fā)送的條件具體為(I)ACTIVE命令提前發(fā)送的條件為第一個(gè)命令要訪問(wèn)的Bank和Row沒(méi)有被激活;或者 后續(xù)命令要訪問(wèn)的Bank和Row與所述后續(xù)命令之前的所有命令要訪問(wèn)的Bank和 Row均不同; (2) PRECHARGE命令提前發(fā)送的條件為
      后續(xù)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,且與除第一個(gè)命令之外的前續(xù)命令訪問(wèn)的是不同Bank,則第一個(gè)讀/寫(xiě)命令完成后要發(fā)送PRECHARGE命令。為了便于理解,以下將分別以DDR控制器同時(shí)解析三個(gè)命令和四個(gè)命令為例對(duì)提前發(fā)送PRECHARGE命令和ACTIVE命令的條件進(jìn)行說(shuō)明,但不以本實(shí)現(xiàn)示例的情況為限
      侖令和第三個(gè)侖令A(yù)CTIVE命令提前發(fā)送的條件,具體如下(1)第一個(gè)命令的Bank和Row沒(méi)有激活?;蛘?2)第二個(gè)命令要訪問(wèn)的Bank和Row與第一個(gè)命令不同?;蛘?3)第三個(gè)命令要訪問(wèn)的Bank和Row與第一個(gè)命令和第二個(gè)命令都不同。PRECHARGE命令提前發(fā)送的條件,具體如下(1)第二個(gè)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,第一個(gè)命令完成后要發(fā)送PRECHARGE命令?;蛘?2)第三個(gè)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,且與第二個(gè)命令要訪問(wèn)的是不同Bank,第一個(gè)命令完成后要發(fā)送PRECHARGE命令。
      cooes]
      mH^·糊+H ACTIVE命令提前發(fā)送的條件,具體如下(1)第一個(gè)命令的Bank和Row沒(méi)有激活?;蛘?2)第二個(gè)命令要訪問(wèn)的Bank和Row與第一個(gè)命令不同?;蛘?3)第三個(gè)命令要訪問(wèn)的Bank和Row與第一個(gè)命令和第二個(gè)命令都不同?;蛘?4)第四個(gè)命令要訪問(wèn)的Bank和Row與第一個(gè)命令、第二個(gè)命令和第三個(gè)命令都不同。PRECHARGE命令提前發(fā)送的條件,具體如下(1)第二個(gè)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,第一個(gè)命令完成后要發(fā)送PRECHARGE命令?;蛘?2)第三個(gè)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,且與第二個(gè)命令要訪問(wèn)的是不同Bank,第一個(gè)命令完成后要發(fā)送PRECHARGE命令?;蛘?3)第四個(gè)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,且與第二個(gè)命令和第三個(gè)命令要訪問(wèn)的是不同Bank,則第一個(gè)讀/寫(xiě)命令完成后要發(fā)送PRECHARGE命令。為了對(duì)本發(fā)明的效果進(jìn)行說(shuō)明,下面以同時(shí)解析三個(gè)命令的情況為例進(jìn)行說(shuō)明本發(fā)明實(shí)施例的效果。假設(shè)DDR控制器可以預(yù)先解析三個(gè)命令,并將潛在的PRECHARGE和 ACTIVE命令掩蔽在當(dāng)前正在執(zhí)行的命令中來(lái)實(shí)現(xiàn)帶寬提升。假設(shè)DDR控制器同時(shí)解析的三個(gè)命令所要要訪問(wèn)的地址和順序分別是第一個(gè)命令BankO、RowO第二個(gè)命令Bankl、RowO第三個(gè)命令BankO、Rowl則現(xiàn)有技術(shù)串行發(fā)送PRECHARGE命令和ACTIVE命令的時(shí)序圖請(qǐng)參閱圖6,從圖中可以看出從發(fā)送第一個(gè)ACTIVE命令到收到第三個(gè)讀命令的最后一筆數(shù)據(jù)需要對(duì)個(gè)周期,DQ的不連續(xù)時(shí)間間隔達(dá)到12個(gè)周期,即浪費(fèi)了 12個(gè)周期。采用本發(fā)明實(shí)施例的方法如下,由于第二個(gè)命令要訪問(wèn)的Bankl和RowO與第一個(gè)命令訪問(wèn)的BankO和RowO不同,滿(mǎn)足提前發(fā)送Active命令,另外第三個(gè)命令訪問(wèn)的BankO 和Rowl與第一個(gè)命令訪問(wèn)的BankO、RowO是相同Bank、不同Row,且第三個(gè)命令與第二個(gè)命令要訪問(wèn)的BankO是不同Bank,滿(mǎn)足提前發(fā)送PRECHARGE命令,提前發(fā)送的Active命令和 PRECHARGE命令還應(yīng)滿(mǎn)足DDR期間的時(shí)間參數(shù)tRRD = 4,tR⑶=3及tRP = 3,具體請(qǐng)參閱圖7,從圖中可以看出,從發(fā)送第一個(gè)ACTIVE命令到收到第三個(gè)讀命令的最后一筆數(shù)據(jù)需要17個(gè)周期,DQ的不連續(xù)時(shí)間間隔達(dá)到5個(gè)周期,即只浪費(fèi)了 5個(gè)周期,帶寬提升。在本發(fā)明實(shí)施例中,通過(guò)將PRECHARGE命令和ACTIVE命令提前發(fā)送,有效的提升了帶寬的利用率。在本發(fā)明實(shí)施例中,預(yù)判斷的命令越多,控制器的設(shè)計(jì)越復(fù)雜,帶寬提升也越多。實(shí)施例三在本發(fā)明實(shí)施例中,可以采用狀態(tài)機(jī)預(yù)判解析的每一命令訪問(wèn)的地址的Bank和 Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE和ACTIVE提前發(fā)送。在本發(fā)明實(shí)施例中,狀態(tài)機(jī)的狀態(tài)及狀態(tài)轉(zhuǎn)換條件,具體請(qǐng)參閱圖8 其中,狀態(tài)機(jī)的狀態(tài)包括空閑狀態(tài)(CMD_IDLE)該狀態(tài)下什么都不作,只是等待命令。激活狀態(tài)(CMD_ACT)該狀態(tài)將發(fā)送ACTIVE命令。讀寫(xiě)狀態(tài)(CMD_ACC)該狀態(tài)將發(fā)送READ/WRITE命令。關(guān)閉狀態(tài)(CMD_PRE)該狀態(tài)將發(fā)送PRECHARGE命令。突發(fā)中止?fàn)顟B(tài)(CMD_BST)該狀態(tài)如果是讀操作將發(fā)送BURST_TERMINATE命令。等待狀態(tài)(CMD_ACC_TM)當(dāng)待執(zhí)行的命令與前續(xù)發(fā)送的命令之間的時(shí)間間隔不滿(mǎn)足DDR器件的時(shí)間參數(shù)要求時(shí),則跳轉(zhuǎn)至等待狀態(tài)。全部關(guān)閉狀態(tài)(CMD_PRE_ALL)該狀態(tài)發(fā)送PRECHARGE_ALL命令,保證在執(zhí)行完所有命令后DDR器件的所有Bank都是關(guān)閉的。狀態(tài)機(jī)轉(zhuǎn)換的條件具體包括1、cmd_act 跳轉(zhuǎn)至CMD_ACT的條件,具體如下(1)命令要訪問(wèn)的Bank和Row沒(méi)有被激活。或者(2)后續(xù)命令要訪問(wèn)的Bank和Row與該命令之前的所有命令要訪問(wèn)的Bank和Row 均不同。在本發(fā)明實(shí)施中,由于同時(shí)解析了多個(gè)命令,可以根據(jù)所解析多個(gè)命令的執(zhí)行順序,分析后續(xù)要訪問(wèn)的Bank和Row與該命令之前的所有命令要訪問(wèn)的Bank和Row之間的關(guān)系,如果符合上述條件跳轉(zhuǎn)至CMD_ACT的條件,則執(zhí)行跳轉(zhuǎn)。2、cmd_acc 跳轉(zhuǎn)至CMD_ACC的條件,具體如下對(duì)當(dāng)前命令有效,即后續(xù)命令要跳轉(zhuǎn)至讀寫(xiě)狀態(tài)要等到當(dāng)前命令完成后。3、cmd_pre,跳轉(zhuǎn)至CMD_PRE的條件,具體如下(1)后續(xù)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,且與除第一個(gè)命令之外的前續(xù)命令訪問(wèn)的是不同Bank,則第一個(gè)讀/寫(xiě)命令完成后要發(fā)送PRECHARGE命令?;?br> 者
      (2)如果某個(gè)Bank、Row已經(jīng)被激活,且待解析的命令都不指向該Bank,則在解析命令執(zhí)行期間會(huì)發(fā)送PRECHARGE命令。在本發(fā)明實(shí)施例中,根據(jù)所解析多個(gè)命令的執(zhí)行順序,可以按阿拉伯?dāng)?shù)字依次作為第一個(gè)命令、第二個(gè)命令......第N個(gè)命令,其中N為同時(shí)解析命令的個(gè)數(shù)。在本發(fā)明實(shí)施例中,待解析的命令為已接收的且尚未解析的命令。4、cmd_bst 跳轉(zhuǎn)至CMD_BST的條件,具體如下當(dāng)某個(gè)命令要讀取的數(shù)據(jù)不足DDR器件的突發(fā)長(zhǎng)度,要發(fā)送BURST_TERMINATE命令阻隔多余的數(shù)據(jù)。在本發(fā)明實(shí)施例中,突發(fā)長(zhǎng)度可以為4字突發(fā)或者8字突發(fā)。5、cmd_idle_exe 跳轉(zhuǎn)至 CMD_IDLE 的條件,具體如下當(dāng)長(zhǎng)時(shí)間內(nèi)沒(méi)有讀或?qū)懨钜l(fā)送給外部DDR器件或有模式配置或刷新命令要發(fā)送給DDR器件,控制器將跳轉(zhuǎn)至CMD_PRE_ALL狀態(tài)關(guān)閉DDR器件所有Bank后回到CMD_ IDLE狀態(tài)。6、跳轉(zhuǎn)至CMD_ACC_TM的條件為當(dāng)待執(zhí)行的命令與前續(xù)發(fā)送的命令之間的時(shí)間間隔不滿(mǎn)足DDR器件的時(shí)間參數(shù)要求時(shí),則跳轉(zhuǎn)至等待狀態(tài)。在本發(fā)明實(shí)施例中,當(dāng)待執(zhí)行的命令與前續(xù)發(fā)送的命令之間的時(shí)間間隔滿(mǎn)足DDR 器件的時(shí)間參數(shù)要求時(shí),則跳轉(zhuǎn)至相應(yīng)狀態(tài)。在本發(fā)明實(shí)施例中,DDR器件應(yīng)滿(mǎn)足的時(shí)間參數(shù)請(qǐng)參閱步驟502中的描述。在本發(fā)明實(shí)施例中,通過(guò)采用狀態(tài)機(jī)預(yù)判解析的每一命令訪問(wèn)的地址的Bank和 Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE和ACTIVE提前發(fā)送,一方面仍然可以充分利用DDR器件的帶寬,另一方面,可以使得解析過(guò)程更加清晰,有條理, 從而使執(zhí)行過(guò)程穩(wěn)定可靠。實(shí)施例四圖9示出了本發(fā)明實(shí)施例四提供的DDR控制器的結(jié)構(gòu)圖,為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,該DDR控制器可以是位于芯片中的軟件單元,硬件單元或者軟硬結(jié)合單元,在此不用以限制本發(fā)明。在本發(fā)明實(shí)施例中,所述系統(tǒng)包括命令解析單元91和命令發(fā)送單元92,其中,命令解析單元91同時(shí)解析緩存的多個(gè)命令。在本發(fā)明實(shí)施例中,DDR器件可能接收來(lái)自多個(gè)設(shè)備的多個(gè)命令,則DDR器件要緩存上述多個(gè)命令,同時(shí)解析緩存的多個(gè)命令。在本發(fā)明實(shí)施例中,同時(shí)解析命令的個(gè)數(shù)由DDR器件的bank數(shù)目,以及系統(tǒng)應(yīng)用中有多少主機(jī)訪問(wèn)DDR器件,例如同時(shí)解析的命令的數(shù)目可以為3個(gè)、4個(gè)或者8個(gè)。命令發(fā)送單元92預(yù)判命令解析單元91解析的每一命令訪問(wèn)的地址的Bank和Row 與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE和ACTIVE提前發(fā)送。在本發(fā)明實(shí)施例中,根據(jù)狀態(tài)機(jī)將PRECHARGE和ACTIVE提前發(fā)送的同時(shí),提前發(fā)送的PRECHARGE和ACTIVE還應(yīng)滿(mǎn)足DDR器件的時(shí)間參數(shù),例如,tRP (PRECHARGE到ACTIVE 的時(shí)間間隔)、tRRD (兩個(gè)ACTIVE之間的時(shí)間間隔)、tRCD (ACTIVE同讀/寫(xiě)命令之間的時(shí)間間隔)。=
      在本發(fā)明實(shí)施例中,同時(shí)解析緩存的多個(gè)命令的數(shù)目由DDR器件的bank數(shù)目,以及系統(tǒng)應(yīng)用中所有訪問(wèn)DDR器件的主機(jī)數(shù)目決定。在本發(fā)明實(shí)施例中,通過(guò)將串行發(fā)送PRECHARGE和ACTIVE采用并行提前發(fā)送,有效的提高了帶寬的利用率。實(shí)施例五在本發(fā)明實(shí)施例中,命令發(fā)送單元92將PRECHARGE和ACTIVE提前發(fā)送的條件為ACTIVE命令提前發(fā)送的條件為第一個(gè)命令要訪問(wèn)的Bank和Row沒(méi)有被激活;或者后續(xù)命令要訪問(wèn)的Bank和Row與所述后續(xù)命令之前的所有命令要訪問(wèn)的Bank和 Row均不同;PRECHARGE命令提前發(fā)送的條件為后續(xù)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,且與除第一個(gè)命令之外的前續(xù)命令訪問(wèn)的是不同Bank,則第一個(gè)讀/寫(xiě)命令完成后要發(fā)送PRECHARGE命令。實(shí)施例六在本發(fā)明實(shí)施例中,命令發(fā)送單元92采用.預(yù)判所述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE和ACTIVE 提前發(fā)送。狀態(tài)機(jī)包括的狀態(tài)及狀態(tài)轉(zhuǎn)換條件可以采用實(shí)施例三中關(guān)于狀態(tài)機(jī)的描述。綜上,本發(fā)明實(shí)施例的有益效果如下1、通過(guò)同時(shí)解析緩存的多個(gè)命令,并預(yù)判上述解析的每一命令訪問(wèn)的地址的Bank 和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE命令和ACTIVE命令提前發(fā)送,使得原來(lái)串行發(fā)送的PRECHARGE命令和ACTIVE命令可以提前以并行的掩蔽在 READ或者WRITE等期間,充分利用了 DDR器件的帶寬。2、通過(guò)采用狀態(tài)機(jī)預(yù)判解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE和ACTIVE提前發(fā)送,一方面可以充分利用DDR器件的帶寬,同時(shí)也使得方法更加穩(wěn)定可靠。值得注意的是,上述系統(tǒng)實(shí)施例中,所包括的各個(gè)單元只是按照功能邏輯進(jìn)行劃分的,但并不局限于上述的劃分,只要能夠?qū)崿F(xiàn)相應(yīng)的功能即可;另外,各功能單元的具體名稱(chēng)也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護(hù)范圍。另外,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,相應(yīng)的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì),如ROM/RAM、磁盤(pán)或光盤(pán)等。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種DDR控制器的實(shí)現(xiàn)方法,其特征在于,所述方法包括下述步驟 同時(shí)解析緩存的多個(gè)命令;預(yù)判所述解析的每一命令訪問(wèn)的地址的塊Bank和行Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將預(yù)充電PRECHARGE命令和激活A(yù)CTIVE命令提前發(fā)送。
      2.如權(quán)利要求1所述的方法,其特征在于,所述ACTIVE命令提前發(fā)送的條件為 第一個(gè)命令要訪問(wèn)的Bank和Row沒(méi)有被激活;或者后續(xù)命令要訪問(wèn)的Bank和Row與所述后續(xù)命令之前的所有命令要訪問(wèn)的Bank和Row 均不同;PRECHARGE命令提前發(fā)送的條件為后續(xù)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,且與除第一個(gè)命令之外的前續(xù)命令訪問(wèn)的是不同Bank,則第一個(gè)讀/寫(xiě)命令完成后要發(fā)送PRECHARGE命令。
      3.如權(quán)利要求1所述的方法,其特征在于,采用狀態(tài)機(jī)預(yù)判所述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系。
      4.如權(quán)利要求3所述的方法,其特征在于,所述狀態(tài)機(jī)的狀態(tài)包括空閑狀態(tài)、激活狀態(tài)、讀寫(xiě)狀態(tài)、關(guān)閉狀態(tài)、突發(fā)中止?fàn)顟B(tài)、等待狀態(tài)和全部關(guān)閉狀態(tài); 所述狀態(tài)的轉(zhuǎn)換條件具體為A、跳轉(zhuǎn)至激活狀態(tài)的條件,具體如下 命令要訪問(wèn)的Bank和Row沒(méi)有被激活;或者后續(xù)命令要訪問(wèn)的Bank和Row與該命令之前的所有命令要訪問(wèn)的Bank和Row均不同;B、跳轉(zhuǎn)至讀寫(xiě)狀態(tài)的條件,具體如下對(duì)當(dāng)前命令有效,即后續(xù)命令跳轉(zhuǎn)至讀寫(xiě)狀態(tài)要等到當(dāng)前命令完成后;C、跳轉(zhuǎn)至關(guān)閉狀態(tài)的條件,具體如下后續(xù)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,且與除第一個(gè)命令之外的前續(xù)命令訪問(wèn)的是不同Bank,則第一個(gè)讀/寫(xiě)命令完成后要發(fā)送PRECHARGE命令;或者如果某個(gè)BanKRow已經(jīng)被激活,且待解析的命令都不指向該Bank,則在所述解析命令執(zhí)行期間要發(fā)送PRECHARGE命令;D、跳轉(zhuǎn)至突發(fā)中止?fàn)顟B(tài)的條件,具體如下當(dāng)某個(gè)命令要讀取的數(shù)據(jù)不足DDR器件的突發(fā)長(zhǎng)度,要發(fā)送BURST TERMINATE命令阻隔多余的數(shù)據(jù);E、跳轉(zhuǎn)至空閑狀態(tài)的條件,具體如下當(dāng)長(zhǎng)時(shí)間內(nèi)沒(méi)有讀或?qū)懨钜l(fā)送給外部DDR器件或有模式配置或刷新命令要發(fā)送給DDR器件,控制器將跳轉(zhuǎn)至全部關(guān)閉狀態(tài)關(guān)閉DDR器件所有Bank后回到空閑狀態(tài);F、跳轉(zhuǎn)至等待狀態(tài)的條件為當(dāng)待執(zhí)行的命令與前續(xù)發(fā)送的命令之間的時(shí)間間隔不滿(mǎn)足DDR器件的時(shí)間參數(shù)要求時(shí),則跳轉(zhuǎn)至等待狀態(tài)。
      5.如權(quán)利要求1所述的方法,其特征在于,所述同時(shí)解析緩存的多個(gè)命令的數(shù)目由DDR 器件的bank數(shù)目,以及系統(tǒng)應(yīng)用中所有訪問(wèn)DDR器件的主機(jī)數(shù)目決定。
      6.一種DDR控制器,其特征在于,所述控制器包括命令解析單元,用于同時(shí)解析緩存的多個(gè)命令;命令發(fā)送單元,用于預(yù)判所述命令解析單元解析的每一命令訪問(wèn)的地址的Bank和Row 與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE命令和ACTIVE命令提前發(fā)送。
      7.如權(quán)利要求6所述的控制器,其特征在于,所述命令發(fā)送單元將ACTIVE命令提前發(fā)送的條件為第一個(gè)命令要訪問(wèn)的Bank和Row沒(méi)有被激活;或者后續(xù)命令要訪問(wèn)的Bank和Row與所述后續(xù)命令之前的所有命令要訪問(wèn)的Bank和Row 均不同;PRECHARGE命令提前發(fā)送的條件為后續(xù)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,且與除第一個(gè)命令之外的前續(xù)命令訪問(wèn)的是不同Bank,則第一個(gè)讀/寫(xiě)命令完成后要發(fā)送PRECHARGE命令。
      8.如權(quán)利要求6所述的控制器,其特征在于,所述命令發(fā)送單元采用狀態(tài)機(jī)預(yù)判所述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE和ACTIVE提前發(fā)送。
      9.如權(quán)利要求8所述的控制器,其特征在于,所述狀態(tài)機(jī)的狀態(tài)包括空閑狀態(tài)、激活狀態(tài)、讀寫(xiě)狀態(tài)、關(guān)閉狀態(tài)、突發(fā)中止?fàn)顟B(tài)、等待狀態(tài)和全部關(guān)閉狀態(tài); 所述狀態(tài)的轉(zhuǎn)換條件具體為A、跳轉(zhuǎn)至激活狀態(tài)的條件,具體如下命令要訪問(wèn)的Bank和Row沒(méi)有被激活;或者后續(xù)命令要訪問(wèn)的Bank和Row與該命令之前的所有命令要訪問(wèn)的Bank和Row均不同;B、跳轉(zhuǎn)至讀寫(xiě)狀態(tài)的條件,具體如下對(duì)當(dāng)前命令有效,即后續(xù)命令要跳轉(zhuǎn)至讀寫(xiě)狀態(tài)要等到當(dāng)前命令完成后;C、跳轉(zhuǎn)至關(guān)閉狀態(tài)的條件,具體如下后續(xù)命令與第一個(gè)命令要訪問(wèn)的是相同Bank、不同Row,且與除第一個(gè)命令之外的前續(xù)命令訪問(wèn)的是不同Bank,則第一個(gè)讀/寫(xiě)命令完成后要發(fā)送PRECHARGE命令;或者如果某個(gè)BanKRow已經(jīng)被激活,且待解析的命令都不指向該Bank,則在所述解析命令執(zhí)行期間要發(fā)送PRECHARGE命令;D、跳轉(zhuǎn)至突發(fā)中止?fàn)顟B(tài)的條件,具體如下當(dāng)某個(gè)命令要讀取的數(shù)據(jù)不足DDR器件的突發(fā)長(zhǎng)度,要發(fā)送BURST_TERMINATE命令阻隔多余的數(shù)據(jù);E、跳轉(zhuǎn)至空閑狀態(tài)的條件,具體如下當(dāng)長(zhǎng)時(shí)間內(nèi)沒(méi)有讀或?qū)懨钜l(fā)送給外部DDR器件或有模式配置或刷新命令要發(fā)送給DDR器件,控制器將跳轉(zhuǎn)至全部關(guān)閉狀態(tài)關(guān)閉DDR器件所有Bank后回到空閑狀態(tài);F、跳轉(zhuǎn)至等待狀態(tài)的條件為當(dāng)待執(zhí)行的命令與前續(xù)發(fā)送的命令之間的時(shí)間間隔不滿(mǎn)足DDR器件的時(shí)間參數(shù)要求時(shí),則跳轉(zhuǎn)至等待狀態(tài)。
      10.如權(quán)利要求6所述的控制器,其特征在于,所述命令解析單元同時(shí)解析緩存的多個(gè)命令的數(shù)目由DDR器件的bank數(shù)目,以及系統(tǒng)應(yīng)用中所有訪問(wèn)DDR器件的主機(jī)數(shù)目決定。
      11. 一種芯片,其特征在于,所述芯片包含如權(quán)利要求6至10任一權(quán)利要求所述的DDR 控制器。
      全文摘要
      本發(fā)明適用于DDR控制器技術(shù)領(lǐng)域,提供了一種DDR控制器及其實(shí)現(xiàn)方法和芯片,所述方法包括下述步驟同時(shí)解析緩存的多個(gè)命令,預(yù)判所述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE命令和ACTIVE命令提前發(fā)送。本發(fā)明通過(guò)同時(shí)解析緩存的多個(gè)命令,并預(yù)判上述解析的每一命令訪問(wèn)的地址的Bank和Row與當(dāng)前正在執(zhí)行的命令的地址Bank和Row的關(guān)系,將PRECHARGE命令和ACTIVE命令提前發(fā)送,使得原來(lái)串行發(fā)送的PRECHARGE命令和ACTIVE命令可以提前以并行的掩蔽在READ或者WRITE等期間,充分利用了DDR器件的帶寬。
      文檔編號(hào)G11C11/4063GK102543159SQ20101061284
      公開(kāi)日2012年7月4日 申請(qǐng)日期2010年12月29日 優(yōu)先權(quán)日2010年12月29日
      發(fā)明者王宏斌 申請(qǐng)人:炬才微電子(深圳)有限公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1