欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種訪問內(nèi)存的方法和設(shè)備的制作方法

文檔序號:6492438閱讀:232來源:國知局
一種訪問內(nèi)存的方法和設(shè)備的制作方法
【專利摘要】本發(fā)明公開了一種訪問內(nèi)存的方法和設(shè)備,屬于計算機領(lǐng)域。方法包括:第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;第二步,根據(jù)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值;第三步,如果內(nèi)存地址是第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,減少數(shù)據(jù)單元的個數(shù),增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;第四步,如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍,數(shù)據(jù)單元個數(shù)小于第二數(shù)值且大于或等于1,將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回第三步。本發(fā)明提高了訪問內(nèi)存的效率。
【專利說明】一種訪問內(nèi)存的方法和設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,特別涉及一種訪問內(nèi)存的方法和設(shè)備。
【背景技術(shù)】
[0002]在計算機系統(tǒng)中,計算機對內(nèi)存頻繁的進行訪問,而訪問內(nèi)存的操作包括讀操作和寫操作。
[0003]目前,訪問內(nèi)存的方法具體為:接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址,如果該命令對應(yīng)的操作為讀操作,外部設(shè)備訪問的內(nèi)存地址是4個總線位寬之和的整數(shù)倍,以及外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于4,則在內(nèi)存中從外部設(shè)備所訪問的內(nèi)存地址開始讀取4個數(shù)據(jù)單元,如果外部設(shè)備訪問的內(nèi)存地址不是4個總線位寬之和的整數(shù)倍,或外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)小于4,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取I個數(shù)據(jù)單元;如果該命令對應(yīng)的操作為寫操作且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于1,則在內(nèi)存中從外部設(shè)備所訪問的內(nèi)存地址開始寫入I個數(shù)據(jù)單元。
[0004]在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005]如果外部設(shè)備所訪問的內(nèi)存地址不是4個總線位寬之和的整數(shù)倍或外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)小于4時,則在內(nèi)存中從外部設(shè)備所訪問的內(nèi)存地址開始讀取I個數(shù)據(jù)單元,如果外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于1,則在內(nèi)存中從外部設(shè)備所訪問的內(nèi)存地址開始寫入I個數(shù)據(jù)單元,這樣訪問內(nèi)存的方式會降低訪問內(nèi)存的效率。

【發(fā)明內(nèi)容】

[0006]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種訪問內(nèi)存的方法和設(shè)備。所述技術(shù)方案如下:
[0007]第一方面,一種訪問內(nèi)存的方法,所述方法包括:
[0008]第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,所述命令中攜帶所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;
[0009]第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值,所述第一數(shù)值和所述第二數(shù)值都大于或等于I且都為2的指數(shù)次方;
[0010]第三步,如果所述內(nèi)存地址是所述第二數(shù)值個總線位寬之和的整數(shù)倍且所述數(shù)據(jù)單元的個數(shù)大于或等于所述第二數(shù)值,則根據(jù)所述內(nèi)存地址讀取或?qū)懭胨龅诙?shù)值個數(shù)據(jù)單元,根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址,將所述第二數(shù)值更新為所述第一數(shù)值,返回本步驟;
[0011]第四步,如果所述內(nèi)存地址不是所述第二數(shù)值個總線位寬之和的整數(shù)倍或所述數(shù)據(jù)單元的個數(shù)小于所述第二數(shù)值且大于或等于I,則將所述第二數(shù)值除以2得到第三數(shù)值,將所述第二數(shù)值更新為所述第三數(shù)值,返回第三步。[0012]結(jié)合第一方面,在上述第一方面的第一種可能的實現(xiàn)方式中,所述根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值,包括:
[0013]根據(jù)終端內(nèi)總線空閑的帶寬,確定所述總線空閑的帶寬所屬于的帶寬范圍;
[0014]根據(jù)所述總線空閑的帶寬所屬于的帶寬范圍,從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中確定所述總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值。
[0015]結(jié)合第一方面,在上述第一方面的第二種可能的實現(xiàn)方式中,所述根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址,包括:
[0016]將所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減少所述第二數(shù)值,得到減少后的所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù);
[0017]根據(jù)所述第二數(shù)值、所述外部設(shè)備訪問的內(nèi)存地址和總線位寬,根據(jù)如下公式增加所述外部設(shè)備訪問的內(nèi)存地址,
[0018]Addr2=Addrl+buswidth/8*n
[0019]其中,在所述公式中,Addr2為增加后的所述外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的所述外部設(shè)備訪問的內(nèi)存地址,buswidth為所述總線位寬,η為所述第二數(shù)值。
[0020]結(jié)合第一方面至第一方面的第二種可能的實現(xiàn)方式的任一種可能的實現(xiàn)方式,在上述第一方面的第三種可能的實現(xiàn)方式中,所述接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令之后,還包括:
[0021]將所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中;
[0022]將所述外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
[0023]結(jié)合第一方面的第三種可能的實現(xiàn)方式,在上述第一方面的第四種可能的實現(xiàn)方式中,所述根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址之后,還包括:
[0024]將所述第一寄存器中存儲的所述數(shù)據(jù)單元的個數(shù)更新為減少后的所述數(shù)據(jù)單元的個數(shù);
[0025]將所述第二寄存器中存儲的所述內(nèi)存地址更新為增加后的所述內(nèi)存地址。
[0026]第二方面,一種訪問內(nèi)存的設(shè)備,所述設(shè)備包括:
[0027]接收模塊,用于接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,所述命令中攜帶所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;
[0028]確定模塊,用于根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值,所述第一數(shù)值和所述第二數(shù)值都大于或等于I且都為2的指數(shù)次方;
[0029]讀取或?qū)懭肽K,用于如果所述內(nèi)存地址是所述第二數(shù)值個總線位寬之和的整數(shù)倍且所述數(shù)據(jù)單元的個數(shù)大于或等于所述第二數(shù)值,則根據(jù)所述內(nèi)存地址讀取或?qū)懭胨龅诙?shù)值個數(shù)據(jù)單元,根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址,將所述第二數(shù)值更新為所述第一數(shù)值,返回本模塊;
[0030]減少模塊,用于如果所述內(nèi)存地址不是所述第二數(shù)值個總線位寬之和的整數(shù)倍或所述數(shù)據(jù)單元的個數(shù)小于所述第二數(shù)值且大于或等于1,則將所述第二數(shù)值除以2得到第三數(shù)值,將所述第二數(shù)值更新為所述第三數(shù)值,返回讀取或?qū)懭肽K。[0031]結(jié)合第二方面,在上述第二方面的第一種可能的實現(xiàn)方式中,所述確定模塊包括:
[0032]第一確定單元,用于根據(jù)終端內(nèi)總線空閑的帶寬,確定所述總線空閑的帶寬所屬于的帶寬范圍;
[0033]第二確定單元,用于根據(jù)所述總線空閑的帶寬所屬于的帶寬范圍,從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中確定所述總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值。
[0034]結(jié)合第二方面,在上述第二方面的第二種可能的實現(xiàn)方式中,所述讀取或?qū)懭肽K包括:
[0035]讀取或?qū)懭雴卧糜谌绻鰞?nèi)存地址是所述第二數(shù)值個總線位寬之和的整數(shù)倍且所述數(shù)據(jù)單元的個數(shù)大于或等于所述第二數(shù)值,則根據(jù)所述內(nèi)存地址讀取或?qū)懭胨龅诙?shù)值個數(shù)據(jù)單元,將所述第二數(shù)值更新為所述第一數(shù)值;
[0036]第一減少單元,用于將所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減少所述第二數(shù)值,得到減少后的所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù);
[0037]增加單元,用于根據(jù)所述第二數(shù)值、所述外部設(shè)備訪問的內(nèi)存地址和總線位寬,根據(jù)如下公式增加所述外部設(shè)備訪問的內(nèi)存地址,
[0038]Addr2=Addrl+buswidth/8*n
[0039]其中,在所述公式中,Addr2為增加后的所述外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的所述外部設(shè)備訪問的內(nèi)存地址,buswidth為所述總線位寬,η為所述第二數(shù)值。
[0040]結(jié)合第二方面至第二方面的第二種可能的實現(xiàn)方式的任一種可能的實現(xiàn)方式,在上述第二方面的第三種可能的實現(xiàn)方式中,所述設(shè)備還包括:
[0041]第一存儲模塊,用于將所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中;
[0042]第二存儲模塊,用于將所述外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
[0043]結(jié)合第二方面的第三種可能的實現(xiàn)方式,在上述第二方面的第四種可能的實現(xiàn)方式中,所述設(shè)備還包括:
[0044]第一更新模塊,用于將所述第一寄存器中存儲的所述數(shù)據(jù)單元的個數(shù)更新為減少后的所述數(shù)據(jù)單元的個數(shù);
[0045]第二更新模塊,用于將所述第二寄存器中存儲的所述內(nèi)存地址更新為增加后的所述內(nèi)存地址。
[0046]第三方面,一種訪問內(nèi)存的設(shè)備,所述設(shè)備包括存儲器和處理器,用于執(zhí)行所述一種訪問內(nèi)存的方法。
[0047]在本發(fā)明實施例中,第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方;第三步,如果內(nèi)存地址是所述第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,則根據(jù)所述內(nèi)存地址讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,根據(jù)第二數(shù)值減少數(shù)據(jù)單元的個數(shù)以及增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;第四步,如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或數(shù)據(jù)單元的個數(shù)小于第二數(shù)值且大于或等于1,則將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回第三步。其中,當(dāng)外部設(shè)備訪問的內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或該數(shù)據(jù)單元的個數(shù)小于第二數(shù)值時,不會立即將確定第二數(shù)值減少為I并讀取或?qū)懭隝個數(shù)據(jù)單元,如此,可以提高訪問內(nèi)存的效率。
【專利附圖】

【附圖說明】
[0048]圖1是本發(fā)明實施例提供的一種訪問內(nèi)存的方法流程圖;
[0049]圖2是本發(fā)明實施例提供的另一種訪問內(nèi)存的方法流程圖;
[0050]圖3是本發(fā)明實施例提供的另一種訪問內(nèi)存的方法流程圖;
[0051]圖4是本發(fā)明實施例提供的另一種訪問內(nèi)存的方法流程圖;
[0052]圖5是本發(fā)明實施例提供的另一種訪問內(nèi)存的方法流程圖;
[0053]圖6是本發(fā)明實施例提供的另一種訪問內(nèi)存的方法流程圖;
[0054]圖7是本發(fā)明實施例提供的一種訪問內(nèi)存的裝置結(jié)構(gòu)示意圖;
[0055]圖8是本發(fā)明實施例提供的另一種訪問內(nèi)存的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0056]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0057]本發(fā)明實施例提供了一種訪問內(nèi)存的方法,參見圖1,方法流程包括:
[0058]步驟101:接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;
[0059]步驟102:根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方;
[0060]步驟103:如果內(nèi)存地址是第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,則根據(jù)內(nèi)存地址讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,根據(jù)第二數(shù)值減少數(shù)據(jù)單元的個數(shù)以及增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;
[0061]步驟104:如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或數(shù)據(jù)單元的個數(shù)小于第二數(shù)值且大于或等于1,則將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回步驟103。
[0062]在本發(fā)明實施例中,第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方;第三步,如果內(nèi)存地址是第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,則根據(jù)內(nèi)存地址讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,根據(jù)第二數(shù)值減少數(shù)據(jù)單元的個數(shù)以及增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;第四步,如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或數(shù)據(jù)單元的個數(shù)小于第二數(shù)值且大于或等于I,則將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回第三步。其中,當(dāng)外部設(shè)備訪問的內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或該數(shù)據(jù)單元的個數(shù)小于第二數(shù)值時,不會立即將確定第二數(shù)值減少為I并讀取或?qū)懭隝個數(shù)據(jù)單元,如此,可以提高訪問內(nèi)存的效率。
[0063]本發(fā)明實施例提供了一種訪問內(nèi)存的方法,參見圖2,方法流程包括:
[0064]步驟201:接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該訪問內(nèi)存的命令中攜帶該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;
[0065]其中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存在一個最大值,在本實施例中將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的最大值以16為例進行說明。
[0066]其中,在本實施例中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于I且小于或等于16。
[0067]其中,將該訪問內(nèi)存的命令中攜帶的該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中,將外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
[0068]其中,一個數(shù)據(jù)單元的大小和一個總線位寬的大小相等。
[0069]步驟202:根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,假如第一數(shù)值和第二數(shù)值均為16 ;
[0070]具體地,根據(jù)終端內(nèi)總線空閑的帶寬,確定終端內(nèi)總線空閑的帶寬所屬于的帶寬范圍,根據(jù)確定的總線空閑的帶寬所屬于的帶寬范圍從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中,獲取該總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,第一數(shù)值和第二數(shù)值相等,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方,假如第一數(shù)值和第二數(shù)值均為16。
[0071]其中,事先保存第一數(shù)值和控制信號的對應(yīng)關(guān)系,當(dāng)確定的第一數(shù)值為16時,向CPU發(fā)送第一數(shù)值16對應(yīng)的控制信號,使CPU執(zhí)行第一數(shù)值16對應(yīng)的blockl6操作,blockl6操作為從內(nèi)存中讀取或?qū)懭?6個數(shù)據(jù)單元。
[0072]步驟203:判斷外部設(shè)備訪問的內(nèi)存地址是否是16個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否等于第二數(shù)值16,如果外部設(shè)備訪問的內(nèi)存地址是16個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)等于第二數(shù)值16,則執(zhí)行步驟204,否則,執(zhí)行步驟205 ;
[0073]具體地,將外部設(shè)備訪問的內(nèi)存地址和16個總線位寬之和進行比較,判斷外部設(shè)備訪問的內(nèi)存地址是否是16個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否等于16,如果外部設(shè)備訪問的內(nèi)存地址是16個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)等于16,則執(zhí)行步驟204,否則,執(zhí)行步驟205。
[0074]例如,總線的位寬為128bit,即為16Byte,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)為16,16個總線位寬之和為16*16Byte,即16個總線位寬之和為196Byte,將總線所訪問的內(nèi)存地址和16個總線位寬之和196Byte比較,判斷總線所訪問的內(nèi)存地址是否是16個總線位寬之和196Byte的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)等于第二數(shù)值16,如果總線所訪問的內(nèi)存地址是16個總線位寬之和196Byte的整數(shù)倍,則執(zhí)行步驟204。
[0075]步驟204:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭氲诙?shù)值16個數(shù)據(jù)單元,結(jié)束操作;
[0076]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,外部設(shè)備訪問內(nèi)存的命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址。[0077]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,外部設(shè)備訪問內(nèi)存的命令中除了攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址之外,該命令中還攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元。
[0078]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取16個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入16個數(shù)據(jù)單元。
[0079]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取16個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的16個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0080]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入16個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的16個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0081]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭氲诙?shù)值16個數(shù)據(jù)單元之后,將第一寄存器和第二寄存器中的數(shù)據(jù)清零。
[0082]其中,在本實施例中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的最大值為16,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?6個數(shù)據(jù)單元之后,外部設(shè)備訪問的數(shù)據(jù)單元為0,則結(jié)束操作。
[0083]步驟205:將第二數(shù)值16除以2,得到第三數(shù)值為8,將第二數(shù)值更新為第三數(shù)值8 ;
[0084]其中,將第二數(shù)值更新為第三數(shù)值8后,第二數(shù)值就變?yōu)?。
[0085]步驟206:判斷外部設(shè)備訪問的內(nèi)存地址是否是8個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值8,如果外部設(shè)備訪問的內(nèi)存地址是8個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值8,則執(zhí)行步驟207,否則,執(zhí)行步驟208 ;
[0086]具體地,將外部設(shè)備訪問的內(nèi)存地址和8個總線位寬之和進行比較,判斷外部設(shè)備訪問的內(nèi)存地址是否是8個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于8,如果外部設(shè)備訪問的內(nèi)存地址是8個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于8,則執(zhí)行步驟207,否則,執(zhí)行步驟 208。
[0087]步驟207:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元,并根據(jù)第二數(shù)值8減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值8更新為第一數(shù)值16,返回步驟203 ;
[0088]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭?個數(shù)據(jù)單元,根據(jù)第二數(shù)值8減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值8和總線位寬,按照如下的公式(I)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值8更新為第一數(shù)值16,返回步驟203,
[0089]Addr2=Addrl+buswidth/8*8 (I)
[0090]其中,在公式(I)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0091]其中,根據(jù)第二數(shù)值8減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值8。
[0092]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取8個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入8數(shù)據(jù)單元。
[0093]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取8個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的8個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0094]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入8個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的8個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0095]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0096]步驟208:將第二數(shù)值8除以2,得到第三數(shù)值為4,將第二數(shù)值更新為第三數(shù)值4 ;
[0097]其中,將第二數(shù)值更新為第三數(shù)值4后,第二數(shù)值就變?yōu)?。
[0098]步驟209:判斷外部設(shè)備訪問的內(nèi)存地址是否是4個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值4,如果外部設(shè)備訪問的內(nèi)存地址是4個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值4,則執(zhí)行步驟210,否則,執(zhí)行步驟211 ;
[0099]具體地,將外部設(shè)備訪問的內(nèi)存地址和4個總線位寬之和進行比較,判斷外部設(shè)備訪問的內(nèi)存地址是否是4個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于4,如果外部設(shè)備訪問的內(nèi)存地址是4個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于4,則執(zhí)行步驟210,否則,執(zhí)行步驟 211。
[0100]步驟210:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元,并根據(jù)第二數(shù)值4減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值4更新為第一數(shù)值16,返回步驟203 ;
[0101]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭?個數(shù)據(jù)單元,根據(jù)第二數(shù)值4減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值4和總線位寬,按照如下公式(2)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值4更新為第一數(shù)值16,返回步驟203,
[0102]Addr2=Addrl+buswidth/8*4 (2)
[0103]其中,在公式(2)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0104]其中,根據(jù)第二數(shù)值4減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值4。
[0105]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取4個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入4數(shù)據(jù)單元。
[0106]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取4個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的4個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0107]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入4個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的4個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0108]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0109]步驟211:將第二數(shù)值4除以2,得到第三數(shù)值為2,將第二數(shù)值更新為第三數(shù)值2 ;
[0110]其中,將第二數(shù)值更新為第三數(shù)值2后,第二數(shù)值就變?yōu)?。
[0111]步驟212:判斷外部設(shè)備訪問的內(nèi)存地址是否是2個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值2,如果外部設(shè)備訪問的內(nèi)存地址是2個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值2,則執(zhí)行步驟213,否則,執(zhí)行步驟214 ;
[0112]具體地,將外部設(shè)備訪問的內(nèi)存地址和2個總線位寬之和進行比較,判斷外部設(shè)備訪問的內(nèi)存地址是否是2個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于2,如果外部設(shè)備訪問的內(nèi)存地址是2個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于2,則執(zhí)行步驟213,否則,執(zhí)行步驟 214。
[0113]步驟213:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元,并根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值2更新為第一數(shù)值16,返回步驟203 ;
[0114]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭?個數(shù)據(jù)單元,根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值2和總線位寬,按照如下公式(3)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值2更新為第一數(shù)值16,返回步驟203,
[0115]Addr2=Addrl+buswidth/8*2 (3)
[0116]其中,在公式(3)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0117]其中,根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值2。
[0118]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取2個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入2數(shù)據(jù)單元。
[0119]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取2個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的2個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0120]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入2個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的2個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。[0121]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0122]步驟214:將第二數(shù)值2除以2,得到第三數(shù)值為I,將第二數(shù)值更新為第三數(shù)值I ;
[0123]其中,將第二數(shù)值更新為第三數(shù)值I后,第二數(shù)值就變?yōu)镮。
[0124]步驟215:判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值1,如果是,則執(zhí)行步驟216,否則,結(jié)束操作;
[0125]具體地,將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和第二數(shù)值I進行比較,如果外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于1,則執(zhí)行步驟216,否則,結(jié)束操作。
[0126]步驟216:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭隝個數(shù)據(jù)單元,并根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值I更新為第一數(shù)值16,返回步驟203。
[0127]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭隝個數(shù)據(jù)單元,根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值I和總線位寬,按照如下公式(4)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值I更新為第一數(shù)值16,返回步驟203,
[0128]Addr2=Addrl+buswidth/8*l (4)
[0129]其中,在公式(4)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0130]其中,根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值I。
[0131]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取I個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入I數(shù)據(jù)單元。
[0132]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取I個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的I個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0133]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入I個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的I個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0134]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭隝個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0135]在本發(fā)明實施例中,第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方;第三步,如果內(nèi)存地址是第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,則根據(jù)內(nèi)存地址讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,根據(jù)第二數(shù)值減少數(shù)據(jù)單元的個數(shù)以及增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;第四步,如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或數(shù)據(jù)單元的個數(shù)小于第二數(shù)值且大于或等于1,則將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回第三步。其中,當(dāng)外部設(shè)備訪問的內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或該數(shù)據(jù)單元的個數(shù)小于第二數(shù)值時,不會立即將確定第二數(shù)值減少為I并讀取或?qū)懭隝個數(shù)據(jù)單元,如此,可以提高訪問內(nèi)存的效率。
[0136]本發(fā)明實施例提供了一種訪問內(nèi)存的方法,參見圖3,方法流程包括:
[0137]步驟301:接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該訪問內(nèi)存的命令中攜帶該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;
[0138]其中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存在一個最大值,在本實施例中將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的最大值以16為例進行說明。
[0139]其中,在本實施例中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于I且小于或等于16。
[0140]其中,將該訪問內(nèi)存的命令中攜帶的該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中,將外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
[0141]步驟302:根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,假如第一數(shù)值和第二數(shù)值均為8 ;
[0142]具體地,根據(jù)終端內(nèi)總線空閑的帶寬,確定終端內(nèi)總線空閑的帶寬所屬于的帶寬范圍,根據(jù)確定的總線空閑的帶寬所屬于的帶寬范圍從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中,獲取該總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,第一數(shù)值和第二數(shù)值相等,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方,假如第一數(shù)值和第二數(shù)值均為8。
[0143]其中,事先保存第一數(shù)值和控制信號的對應(yīng)關(guān)系,當(dāng)確定的第一數(shù)值為8時,向CPU發(fā)送第一數(shù)值8對應(yīng)的控制信號,使CPU執(zhí)行第一數(shù)值8對應(yīng)的block8操作,block8操作為從內(nèi)存中讀取或?qū)懭?個數(shù)據(jù)單元。
[0144]步驟303:判斷外部設(shè)備訪問的內(nèi)存地址是否是8個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值8,如果外部設(shè)備訪問的內(nèi)存地址是8個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值8,則執(zhí)行步驟304,否則,執(zhí)行步驟305 ;
[0145]具體地,將外部設(shè)備訪問的內(nèi)存地址和8個總線位寬之和進行比較,判斷外部設(shè)備訪問的內(nèi)存地址是否是8個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于8,如果外部設(shè)備訪問的內(nèi)存地址是8個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于8,則執(zhí)行步驟304,否則,執(zhí)行步驟 305。
[0146]步驟304:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元,并根據(jù)第二數(shù)值8減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將確定的第二數(shù)值8更新為第一數(shù)值8,返回步驟303 ;
[0147]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭?個數(shù)據(jù)單元,根據(jù)第二數(shù)值8減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值8和總線位寬,按照如下公式(5)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值8更新為第一數(shù)值8,返回步驟303,
[0148]Addr2=Addrl+buswidth/8*8 (5)[0149]其中,在公式(5)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0150]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,外部設(shè)備訪問內(nèi)存的命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址。
[0151]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,外部設(shè)備訪問內(nèi)存的命令中除了攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址之外,該命令中還攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元。
[0152]其中,根據(jù)第二數(shù)值8減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值8。
[0153]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取8個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入8數(shù)據(jù)單元。
[0154]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取8個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的8個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0155]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入8個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的8個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0156]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0157]步驟305:將第二數(shù)值8除以2,得到第三數(shù)值為4,將第二數(shù)值更新為第三數(shù)值4 ;
[0158]其中,將第二數(shù)值更新為第三數(shù)值4后,第二數(shù)值就變?yōu)?。
[0159]步驟306:判斷外部設(shè)備訪問的內(nèi)存地址是否是4個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值4,如果外部設(shè)備訪問的內(nèi)存地址是4個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值4,則執(zhí)行步驟307,否則,執(zhí)行步驟308 ;
[0160]具體地,將外部設(shè)備訪問的內(nèi)存地址和4個總線位寬之和進行比較,判斷外部設(shè)備訪問的內(nèi)存地址是否是4個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于4,如果外部設(shè)備訪問的內(nèi)存地址是4個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于4,則執(zhí)行步驟307,否則,執(zhí)行步驟 308。
[0161]步驟307:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元,并根據(jù)第二數(shù)值4減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值4更新為第一數(shù)值8,返回步驟303 ;
[0162]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭?個數(shù)據(jù)單元,根據(jù)第二數(shù)值4減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值4和總線位寬,按照如下公式(6)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值4更新為第一數(shù)值8,返回步驟303,
[0163]Addr2=Addrl+buswidth/8*4 (6)[0164]其中,在公式(6)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0165]其中,根據(jù)第二數(shù)值4減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值4。
[0166]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取4個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入4數(shù)據(jù)單元。
[0167]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取4個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的4個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0168]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入4個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的4個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0169]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0170]步驟308:將第二數(shù)值4除以2,得到第三數(shù)值為2,將第二數(shù)值更新為第三數(shù)值2 ;
[0171]其中,將第二數(shù)值更新為第三數(shù)值2后,第二數(shù)值就變?yōu)?。
[0172]步驟309:判斷外部設(shè)備訪問的內(nèi)存地址是否是2個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值2,如果外部設(shè)備訪問的內(nèi)存地址是2個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值2,則執(zhí)行步驟310,否則,執(zhí)行步驟311 ;
[0173]具體地,將外部設(shè)備訪問的內(nèi)存地址和2個總線位寬之和進行比較,判斷外部設(shè)備訪問的內(nèi)存地址是否是2個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于2,如果外部設(shè)備訪問的內(nèi)存地址是2個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于2,則執(zhí)行步驟310,否則,執(zhí)行步驟 311。
[0174]步驟310:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元,并根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值2更新為第一數(shù)值8,返回步驟303 ;
[0175]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭?個數(shù)據(jù)單元,根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值2和總線位寬,按照如下公式(7)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值2更新為第一數(shù)值8,返回步驟303,
[0176]Addr2=Addrl+buswidth/8*2 (7)
[0177]其中,在公式(7)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0178]其中,根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值2。
[0179]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取2個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入2數(shù)據(jù)單元。
[0180]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取2個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的2個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0181]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入2個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的2個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0182]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0183]步驟311:將第二數(shù)值2除以2,得到第三數(shù)值為I,將第二數(shù)值更新為第三數(shù)值I ;
[0184]其中,將第二數(shù)值更新為第三數(shù)值I后,第二數(shù)值就變?yōu)镮。
[0185]步驟312:判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值1,如果是,則執(zhí)行步驟313,否則,結(jié)束操作;
[0186]具體地,將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和第二數(shù)值I進行比較,如果外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于1,則執(zhí)行步驟313,否則,結(jié)束操作。
[0187]步驟313:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭隝個數(shù)據(jù)單元,并根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值I更新為第一數(shù)值8,返回步驟303。
[0188]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭隝個數(shù)據(jù)單元,根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值I和總線位寬,按照如下公式(8)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值I更新為第一數(shù)值8,返回步驟303,
[0189]Addr2=Addrl+buswidth/8*l (8)
[0190]其中,在公式(8)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0191]其中,根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值I。
[0192]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取I個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入I數(shù)據(jù)單元。
[0193]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取I個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的I個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0194]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入I個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的I個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0195]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭隝個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0196]在本發(fā)明實施例中,第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方;第三步,如果內(nèi)存地址是第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,則根據(jù)內(nèi)存地址讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,根據(jù)第二數(shù)值減少數(shù)據(jù)單元的個數(shù)以及增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;第四步,如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或數(shù)據(jù)單元的個數(shù)小于第二數(shù)值且大于或等于I,則將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回第三步。其中,當(dāng)外部設(shè)備訪問的內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或該數(shù)據(jù)單元的個數(shù)小于第二數(shù)值時,不會立即將確定第二數(shù)值減少為I并讀取或?qū)懭隝個數(shù)據(jù)單元,如此,可以提高訪問內(nèi)存的效率。
[0197]本發(fā)明實施例提供了一種訪問內(nèi)存的方法,參見圖4,方法流程包括:
[0198]步驟401:接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該訪問內(nèi)存的命令中攜帶該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;
[0199]其中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存在一個最大值,在本實施例中將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的最大值以16為例進行說明。
[0200]其中,在本實施例中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于I且小于或等于16。
[0201]其中,將該訪問內(nèi)存的命令中攜帶的該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中,將外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
[0202]步驟402:根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,假如第一數(shù)值和第二數(shù)值均為4 ;
[0203]具體地,根據(jù)終端內(nèi)總線空閑的帶寬,確定終端內(nèi)總線空閑的帶寬所屬于的帶寬范圍,根據(jù)確定的總線空閑的帶寬所屬于的帶寬范圍從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中,獲取該總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,第一數(shù)值和第二數(shù)值相等,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方,假如第一數(shù)值和第二數(shù)值均為4。
[0204]其中,事先保存第一數(shù)值和控制信號的對應(yīng)關(guān)系,當(dāng)確定的第一數(shù)值為4時,向CPU發(fā)送第一數(shù)值4對應(yīng)的控制信號,使CPU執(zhí)行第一數(shù)值4對應(yīng)的block4操作,block4操作為從內(nèi)存中讀取或?qū)懭?個數(shù)據(jù)單元。
[0205]步驟403:判斷外部設(shè)備訪問的內(nèi)存地址是否是4個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值4,如果外部設(shè)備訪問的內(nèi)存地址是4個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值4,則執(zhí)行步驟404,否則,執(zhí)行步驟405 ;
[0206]具體地,將外部設(shè)備訪問的內(nèi)存地址和4個總線位寬之和進行比較,判斷外部設(shè)備訪問的內(nèi)存地址是否是4個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于4,如果外部設(shè)備訪問的內(nèi)存地址是4個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于4,則執(zhí)行步驟404,否則,執(zhí)行步驟 405。
[0207]步驟404:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元,并根據(jù)第二數(shù)值4減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將確定的第二數(shù)值4更新為第一數(shù)值4,返回步驟403 ;
[0208]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭?個數(shù)據(jù)單元,根據(jù)第二數(shù)值4減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值4和總線位寬,按照如下公式(9)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值4更新為第一數(shù)值4,返回步驟403,
[0209]Addr2=Addrl+buswidth/8*4 (9)
[0210]其中,在公式(9)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0211]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,外部設(shè)備訪問內(nèi)存的命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址。
[0212]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,外部設(shè)備訪問內(nèi)存的命令中除了攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址之外,該命令中還攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元。
[0213]其中,根據(jù)第二數(shù)值4減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值4。
[0214]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取4個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入4數(shù)據(jù)單元。
[0215]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取4個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的4個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0216]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入4個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的4個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0217]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0218]步驟405:將第二數(shù)值4除以2,得到第三數(shù)值為2,將第二數(shù)值更新為第三數(shù)值2 ;
[0219]其中,將第二數(shù)值更新為第三數(shù)值2后,第二數(shù)值就變?yōu)?。
[0220]步驟406:判斷外部設(shè)備訪問的內(nèi)存地址是否是2個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值2,如果外部設(shè)備訪問的內(nèi)存地址是2個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值2,則執(zhí)行步驟407,否則,執(zhí)行步驟408 ;
[0221]具體地,將外部設(shè)備訪問的內(nèi)存地址和2個總線位寬之和進行比較,判斷外部設(shè)備訪問的內(nèi)存地址是否是2個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于2,如果外部設(shè)備訪問的內(nèi)存地址是2個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于2,則執(zhí)行步驟407,否則,執(zhí)行步驟 408。
[0222]步驟407:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元,并根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值2更新為第一數(shù)值4,返回步驟403 ;
[0223]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭?個數(shù)據(jù)單元,根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值2和總線位寬,按照如下公式(10)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值2更新為第一數(shù)值4,返回步驟403,
[0224]Addr2=Addrl+buswidth/8*2 (10)
[0225]其中,在公式(10)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0226]其中,根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值2。
[0227]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取2個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入2數(shù)據(jù)單元。
[0228]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取2個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的2個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0229]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入2個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的2個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0230]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0231]步驟408:將第二數(shù)值2除以2,得到第三數(shù)值為I,將第二數(shù)值更新為第三數(shù)值I ;
[0232]其中,將第二數(shù)值更新為第三數(shù)值I后,第二數(shù)值就變?yōu)镮。
[0233]步驟409:判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值1,如果是,則執(zhí)行步驟410,否則,結(jié)束操作;
[0234]具體地,將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和第二數(shù)值I進行比較,如果外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于1,則執(zhí)行步驟410,否則,結(jié)束操作。
[0235]步驟410:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭隝個數(shù)據(jù)單元,并根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值I更新為第一數(shù)值4,返回步驟403。
[0236]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭隝個數(shù)據(jù)單元,根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值I和總線位寬,按照如下公式(11)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值I更新為第一數(shù)值4,返回步驟403,
[0237]Addr2=Addrl+buswidth/8*l (11)
[0238]其中,在公式(11)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。[0239]其中,根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值I。
[0240]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取I個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入I數(shù)據(jù)單元。
[0241]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取I個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的I個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0242]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入I個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的I個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0243]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭隝個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0244]在本發(fā)明實施例中,第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方;第三步,如果內(nèi)存地址是第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,則根據(jù)內(nèi)存地址讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,根據(jù)第二數(shù)值減少數(shù)據(jù)單元的個數(shù)以及增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;第四步,如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或數(shù)據(jù)單元的個數(shù)小于第二數(shù)值且大于或等于I,則將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回第三步。其中,當(dāng)外部設(shè)備訪問的內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或該數(shù)據(jù)單元的個數(shù)小于第二數(shù)值時,不會立即將確定第二數(shù)值減少為I并讀取或?qū)懭隝個數(shù)據(jù)單元,如此,可以提高訪問內(nèi)存的效率。
[0245]本發(fā)明實施例提供了一種訪問內(nèi)存的方法,參見圖5,方法流程包括:
[0246]步驟501:接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該訪問內(nèi)存的命令中攜帶該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;
[0247]其中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存在一個最大值,在本實施例中將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的最大值以16為例進行說明。
[0248]其中,在本實施例中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于I且小于或等于16。
[0249]其中,將該訪問內(nèi)存的命令中攜帶的該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中,將外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
[0250]步驟502:根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,假如第一數(shù)值和第二數(shù)值均為2 ;
[0251]具體地,根據(jù)終端內(nèi)總線空閑的帶寬,確定終端內(nèi)總線空閑的帶寬所屬于的帶寬范圍,根據(jù)確定的總線空閑的帶寬所屬于的帶寬范圍從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中,獲取該總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,第一數(shù)值和第二數(shù)值相等,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方,假如第一數(shù)值和第二數(shù)值均為2。
[0252]其中,事先保存第一數(shù)值和控制信號的對應(yīng)關(guān)系,當(dāng)確定的第一數(shù)值為2時,向CPU發(fā)送第一數(shù)值2對應(yīng)的控制信號,使CPU執(zhí)行第一數(shù)值2對應(yīng)的block2操作,block2操作為從內(nèi)存中讀取或?qū)懭?個數(shù)據(jù)單元。
[0253]步驟503:判斷外部設(shè)備訪問的內(nèi)存地址是否是2個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值2,如果外部設(shè)備訪問的內(nèi)存地址是2個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值2,則執(zhí)行步驟504,否則,執(zhí)行步驟505 ;
[0254]具體地,將外部設(shè)備訪問的內(nèi)存地址和2個總線位寬之和進行比較,判斷外部設(shè)備訪問的內(nèi)存地址是否是2個總線位寬之和的整數(shù)倍,并且判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于2,如果外部設(shè)備訪問的內(nèi)存地址是2個總線位寬之和的整數(shù)倍并且外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于2,則執(zhí)行步驟504,否則,執(zhí)行步驟 505。
[0255]步驟504:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元,并根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將確定的第二數(shù)值2更新為第一數(shù)值2,返回步驟503 ;
[0256]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭?個數(shù)據(jù)單元,根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值2和總線位寬,按照如下公式(12)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值2更新為第一數(shù)值2,返回步驟503,
[0257]Addr2=Addrl+buswidth/8*2 (12)
[0258]其中,在公式(12)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0259]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,外部設(shè)備訪問內(nèi)存的命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址。
[0260]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,外部設(shè)備訪問內(nèi)存的命令中除了攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址之外,該命令中還攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元。
[0261]其中,根據(jù)第二數(shù)值2減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值2。
[0262]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取2個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入2數(shù)據(jù)單元。
[0263]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取2個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的2個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0264]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入2個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的2個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。[0265]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭?個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0266]步驟505:將第二數(shù)值2除以2,得到第三數(shù)值為I,將第二數(shù)值更新為第三數(shù)值I ;
[0267]其中,將第二數(shù)值更新為第三數(shù)值I后,第二數(shù)值就變?yōu)镮。
[0268]步驟506:判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值1,如果是,則執(zhí)行步驟507,否則,結(jié)束操作;
[0269]具體地,將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和第二數(shù)值I進行比較,如果外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于1,則執(zhí)行步驟507,否則,結(jié)束操作。
[0270]步驟507:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭隝個數(shù)據(jù)單元,并根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值I更新為第一數(shù)值2,返回步驟503。
[0271]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭隝個數(shù)據(jù)單元,根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值I和總線位寬,按照如下公式(13)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值I更新為第一數(shù)值2,返回步驟503,
[0272]Addr2=Addrl+buswidth/8*l (13)
[0273]其中,在公式(13)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0274]其中,根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值I。
[0275]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭隝個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0276]在本發(fā)明實施例中,第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方;第三步,如果內(nèi)存地址是第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,則根據(jù)內(nèi)存地址讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,根據(jù)第二數(shù)值減少數(shù)據(jù)單元的個數(shù)以及增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;第四步,如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或數(shù)據(jù)單元的個數(shù)小于第二數(shù)值且大于或等于I,則將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回第三步。其中,當(dāng)外部設(shè)備訪問的內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或該數(shù)據(jù)單元的個數(shù)小于第二數(shù)值時,不會立即將確定第二數(shù)值減少為I并讀取或?qū)懭隝個數(shù)據(jù)單元,如此,可以提高訪問內(nèi)存的效率。
[0277]本發(fā)明實施例提供了一種訪問內(nèi)存的方法,參見圖6,方法流程包括:
[0278]步驟601:接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該訪問內(nèi)存的命令中攜帶該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;
[0279]其中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存在一個最大值,在本實施例中將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的最大值以16為例進行說明。[0280]其中,在本實施例中,外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于I且小于或等于16。
[0281]其中,將該訪問內(nèi)存的命令中攜帶的該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中,將外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
[0282]步驟602:根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,假如第一數(shù)值和第二數(shù)值均為I ;
[0283]具體地,根據(jù)終端內(nèi)總線空閑的帶寬,確定終端內(nèi)總線空閑的帶寬所屬于的帶寬范圍,根據(jù)確定的總線空閑的帶寬所屬于的帶寬范圍從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中,獲取該總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方,假如第一數(shù)值和第二數(shù)值均為I。
[0284]其中,事先保存第一數(shù)值和控制信號的對應(yīng)關(guān)系,當(dāng)確定的第一數(shù)值為I時,向CPU發(fā)送第一數(shù)值I對應(yīng)的控制信號,使CPU執(zhí)行第一數(shù)值I對應(yīng)的single操作,single操作為從內(nèi)存中讀取或?qū)懭隝個數(shù)據(jù)單元。
[0285]步驟603:判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于第二數(shù)值1,如果是,則執(zhí)行步驟604,否則,結(jié)束操作;
[0286]具體地,將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和數(shù)值I進行比較,判斷外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)是否大于或等于1,如果外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)大于或等于1,則執(zhí)行步驟604,否則,結(jié)束操作。
[0287]步驟604:根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭隝個數(shù)據(jù)單元,并根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)以及增加外部設(shè)備訪問的內(nèi)存地址,將確定的第二數(shù)值I更新為第一數(shù)值1,返回步驟603 ;
[0288]具體地,從外部設(shè)備訪問的內(nèi)存地址開始讀取或?qū)懭隝個數(shù)據(jù)單元,根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù),并根據(jù)第二數(shù)值I和總線位寬,按照如下公式(14)增加外部設(shè)備訪問的內(nèi)存地址,將第二數(shù)值I更新為第一數(shù)值1,返回步驟603,
[0289]Addr2=Addrl+buswidth/8*l (14)
[0290]其中,在公式(14)中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬。
[0291]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,外部設(shè)備訪問內(nèi)存的命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址。
[0292]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,外部設(shè)備訪問內(nèi)存的命令中除了攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址之外,該命令中還攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元。
[0293]其中,根據(jù)第二數(shù)值I減少外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)的具體操作為:將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減去第二數(shù)值I。
[0294]其中,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為讀操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取I個數(shù)據(jù)單元,當(dāng)外部設(shè)備訪問內(nèi)存的命令對應(yīng)的操作為寫操作時,則在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入I數(shù)據(jù)單元。
[0295]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始讀取I個數(shù)據(jù)單元具體為:在內(nèi)存中,將從外部設(shè)備訪問的內(nèi)存地址開始的I個數(shù)據(jù)單元通過終端內(nèi)的總線傳輸給外部設(shè)備。
[0296]其中,在內(nèi)存中從外部設(shè)備訪問的內(nèi)存地址開始寫入I個數(shù)據(jù)單位具體為:在內(nèi)存中,將外部設(shè)備訪問內(nèi)存的命令中攜帶的I個數(shù)據(jù)單元通過終端內(nèi)的總線從外部設(shè)備訪問的內(nèi)存地址開始傳輸給內(nèi)存。
[0297]其中,根據(jù)外部設(shè)備訪問的內(nèi)存地址讀取或?qū)懭隝個數(shù)據(jù)單元之后,將第一寄存器中的外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù),將第二寄存器中的外部設(shè)備訪問的內(nèi)存地址更新為增加后的內(nèi)存地址。
[0298]在本發(fā)明實施例中,第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方;第三步,如果內(nèi)存地址是第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,則根據(jù)內(nèi)存地址讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,根據(jù)第二數(shù)值減少數(shù)據(jù)單元的個數(shù)以及增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;第四步,如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或數(shù)據(jù)單元的個數(shù)小于第二數(shù)值且大于或等于1,則將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回第三步。其中,當(dāng)外部設(shè)備訪問的內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或該數(shù)據(jù)單元的個數(shù)小于第二數(shù)值時,不會立即將確定第二數(shù)值減少為I并讀取或?qū)懭隝個數(shù)據(jù)單元,如此,可以提高訪問內(nèi)存的效率。
[0299]本發(fā)明實施例提供了一種訪問內(nèi)存的設(shè)備,參見圖7,該設(shè)備包括:
[0300]接收模塊701,用于接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶該外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;
[0301]確定模塊702,用于根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值,所述第一數(shù)值和所述第二數(shù)值都大于或等于I且都為2的指數(shù)次方;
[0302]讀取或?qū)懭肽K703,用于如果所述內(nèi)存地址是所述第二數(shù)值個總線位寬之和的整數(shù)倍且所述數(shù)據(jù)單元的個數(shù)大于或等于所述第二數(shù)值,則根據(jù)所述內(nèi)存地址讀取或?qū)懭胨龅诙?shù)值個數(shù)據(jù)單元,根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址,將所述第二數(shù)值更新為所述第一數(shù)值,返回本模塊703 ;
[0303]減少模塊704,用于如果所述內(nèi)存地址不是所述第二數(shù)值個總線位寬之和的整數(shù)倍或所述數(shù)據(jù)單元的個數(shù)小于所述第二數(shù)值且大于或等于1,則將所述第二數(shù)值除以2得到第三數(shù)值,將所述第二數(shù)值更新為所述第三數(shù)值,返回讀取或?qū)懭肽K。
[0304]其中,確定模塊702包括:
[0305]第一確定單元,用于根據(jù)終端內(nèi)總線空閑的帶寬,確定該總線空閑的帶寬所屬于的帶寬范圍;
[0306]第二確定單元,用于根據(jù)所述總線空閑的帶寬所屬于的帶寬范圍,從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中確定所述總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值。
[0307]其中,讀取或?qū)懭肽K703包括:
[0308]讀取或?qū)懭雴卧糜谌绻鰞?nèi)存地址是所述第二數(shù)值個總線位寬之和的整數(shù)倍且所述數(shù)據(jù)單元的個數(shù)大于或等于所述第二數(shù)值,則根據(jù)所述內(nèi)存地址讀取或?qū)懭胨龅诙?shù)值個數(shù)據(jù)單元,將所述第二數(shù)值更新為所述第一數(shù)值;
[0309]第一減少單元,用于將所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減少所述第二數(shù)值,得到減少后的所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù);
[0310]增加單元,用于根據(jù)第二數(shù)值、該外部設(shè)備訪問的內(nèi)存地址和總線位寬,根據(jù)如下公式增加該外部設(shè)備訪問的內(nèi)存地址,
[0311]Addr2=Addrl+buswidth/8*n
[0312]其中,在公式中,Addr2為增加后的外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的外部設(shè)備訪問的內(nèi)存地址,buswidth為總線位寬,η為第二數(shù)值。
[0313]進一步地,所述設(shè)備還包括:
[0314]第一存儲模塊,用于將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中;
[0315]第二存儲模塊,用于將外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
[0316]進一步地,所述設(shè)備還包括:
[0317]第一更新模塊,用于將第一寄存器中存儲的數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù);
[0318]第二更新模塊,用于將第二寄存器中存儲的所述內(nèi)存地址更新為增加后的內(nèi)存地址。
[0319]在本發(fā)明實施例中,第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方;第三步,如果內(nèi)存地址是第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,則根據(jù)內(nèi)存地址讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,根據(jù)第二數(shù)值減少數(shù)據(jù)單元的個數(shù)以及增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;第四步,如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或數(shù)據(jù)單元的個數(shù)小于第二數(shù)值且大于或等于1,則將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回第三步。其中,當(dāng)外部設(shè)備訪問的內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或該數(shù)據(jù)單元的個數(shù)小于第二數(shù)值時,不會立即將確定第二數(shù)值減少為I并讀取或?qū)懭隝個數(shù)據(jù)單元,如此,可以提高訪問內(nèi)存的效率。
[0320]本發(fā)明實施例提供了一種訪問內(nèi)存的設(shè)備,參見圖8,該設(shè)備包括:
[0321]存儲器801和處理器802,用于執(zhí)行如下訪問內(nèi)存的方法:
[0322]第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,所述命令中攜帶所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;
[0323]第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值,所述第一數(shù)值和所述第二數(shù)值都大于或等于I且都為2的指數(shù)次方;
[0324]第三步,如果所述內(nèi)存地址是所述第二數(shù)值個總線位寬之和的整數(shù)倍且所述數(shù)據(jù)單元的個數(shù)大于或等于所述第二數(shù)值,則根據(jù)所述內(nèi)存地址讀取或?qū)懭胨龅诙?shù)值個數(shù)據(jù)單元,根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址,將所述第二數(shù)值更新為所述第一數(shù)值,返回本步驟;[0325]第四步,如果所述內(nèi)存地址不是所述第二數(shù)值個總線位寬之和的整數(shù)倍或所述數(shù)據(jù)單元的個數(shù)小于所述第二數(shù)值且大于或等于I,則將所述第二數(shù)值除以2得到第三數(shù)值,將所述第二數(shù)值更新為所述第三數(shù)值,返回第三步。
[0326]其中,所述根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值,包括:
[0327]根據(jù)終端內(nèi)總線空閑的帶寬,確定所述總線空閑的帶寬所屬于的帶寬范圍;
[0328]根據(jù)所述總線空閑的帶寬所屬于的帶寬范圍,從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中確定所述總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值。
[0329]其中,所述根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址,包括:
[0330]將所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減少所述第二數(shù)值,得到減少后的所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù);
[0331]根據(jù)所述第二數(shù)值、所述外部設(shè)備訪問的內(nèi)存地址和總線位寬,根據(jù)如下公式增加所述外部設(shè)備訪問的內(nèi)存地址,
[0332]Addr2=Addrl+buswidth/8*n
[0333]其中,在所述公式中,Addr2為增加后的所述外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的所述外部設(shè)備訪問的內(nèi)存地址,buswidth為所述總線位寬,η為所述第二數(shù)值。
[0334]進一步地,所述接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令之后,還包括:
[0335]將所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中;
[0336]將所述外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
[0337]進一步地,所述根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址之后,還包括:
[0338]將所述第一寄存器中存儲的所述數(shù)據(jù)單元的個數(shù)更新為減少后的所述數(shù)據(jù)單元的個數(shù);
[0339]將所述第二寄存器中存儲的所述內(nèi)存地址更新為增加后的所述內(nèi)存地址。
[0340]在本發(fā)明實施例中,第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,該命令中攜帶外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,第一數(shù)值等于第二數(shù)值,第一數(shù)值和第二數(shù)值都大于或等于I且都為2的指數(shù)次方;第三步,如果內(nèi)存地址是第二數(shù)值個總線位寬之和的整數(shù)倍且數(shù)據(jù)單元的個數(shù)大于或等于第二數(shù)值,則根據(jù)內(nèi)存地址讀取或?qū)懭氲诙?shù)值個數(shù)據(jù)單元,根據(jù)第二數(shù)值減少數(shù)據(jù)單元的個數(shù)以及增加內(nèi)存地址,將第二數(shù)值更新為第一數(shù)值,返回本步驟;第四步,如果內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或數(shù)據(jù)單元的個數(shù)小于第二數(shù)值且大于或等于I,則將第二數(shù)值除以2得到第三數(shù)值,將第二數(shù)值更新為第三數(shù)值,返回第三步。其中,當(dāng)外部設(shè)備訪問的內(nèi)存地址不是第二數(shù)值個總線位寬之和的整數(shù)倍或該數(shù)據(jù)單元的個數(shù)小于第二數(shù)值時,不會立即將確定第二數(shù)值減少為I并讀取或?qū)懭隝個數(shù)據(jù)單元,如此,可以提高訪問內(nèi)存的效率。
[0341]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0342] 以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種訪問內(nèi)存的方法,其特征在于,所述方法包括: 第一步,接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,所述命令中攜帶所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址; 第二步,根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值,所述第一數(shù)值和所述第二數(shù)值都大于或等于I且都為2的指數(shù)次方; 第三步,如果所述內(nèi)存地址是所述第二數(shù)值個總線位寬之和的整數(shù)倍且所述數(shù)據(jù)單元的個數(shù)大于或等于所述第二數(shù)值,則根據(jù)所述內(nèi)存地址讀取或?qū)懭胨龅诙?shù)值個數(shù)據(jù)單元,根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址,將所述第二數(shù)值更新為所述第一數(shù)值,返回本步驟; 第四步,如果所述內(nèi)存地址不是所述第二數(shù)值個總線位寬之和的整數(shù)倍或所述數(shù)據(jù)單元的個數(shù)小于所述第二數(shù)值且大于或等于1,則將所述第二數(shù)值除以2得到第三數(shù)值,將所述第二數(shù)值更新為所述第三數(shù)值,返回第三步。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值,包括: 根據(jù)終端內(nèi)總線空閑的帶寬,確定所述總線空閑的帶寬所屬于的帶寬范圍; 根據(jù)所述總線空閑的帶寬所屬于的帶寬范圍,從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中確定所述總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地·址,包括: 將所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)減少所述第二數(shù)值,得到減少后的所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù); 根據(jù)所述第二數(shù)值、所述外部設(shè)備訪問的內(nèi)存地址和總線位寬,根據(jù)如下公式增加所述外部設(shè)備訪問的內(nèi)存地址,
Addr2=Addrl+buswidth/8*n 其中,在所述公式中,Addr2為增加后的所述外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的所述外部設(shè)備訪問的內(nèi)存地址,buswidth為所述總線位寬,η為所述第二數(shù)值。
4.根據(jù)權(quán)利要求1至3任一權(quán)利要求所述的方法,其特征在于,所述接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令之后,還包括: 將所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中; 將所述外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址之后,還包括: 將所述第一寄存器中存儲的所述數(shù)據(jù)單元的個數(shù)更新為減少后的所述數(shù)據(jù)單元的個數(shù); 將所述第二寄存器中存儲的所述內(nèi)存地址更新為增加后的所述內(nèi)存地址。
6.一種訪問內(nèi)存的設(shè)備,其特征在于,所述設(shè)備包括: 接收模塊,用于接收外部設(shè)備發(fā)送的訪問內(nèi)存的命令,所述命令中攜帶所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)和訪問的內(nèi)存地址;確定模塊,用于根據(jù)終端內(nèi)總線空閑的帶寬,確定第一數(shù)值和第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值,所述第一數(shù)值和所述第二數(shù)值都大于或等于I且都為2的指數(shù)次方;讀取或?qū)懭肽K,用于如果所述內(nèi)存地址是所述第二數(shù)值個總線位寬之和的整數(shù)倍且所述數(shù)據(jù)單元的個數(shù)大于或等于所述第二數(shù)值,則根據(jù)所述內(nèi)存地址讀取或?qū)懭胨龅诙?shù)值個數(shù)據(jù)單元,根據(jù)所述第二數(shù)值減少所述數(shù)據(jù)單元的個數(shù)以及增加所述內(nèi)存地址,將所述第二數(shù)值更新為所述第一數(shù)值,返回本模塊; 減少模塊,用于如果所述內(nèi)存地址不是所述第二數(shù)值個總線位寬之和的整數(shù)倍或所述數(shù)據(jù)單元的個數(shù)小于所述第二數(shù)值且大于或等于1,則將所述第二數(shù)值除以2得到第三數(shù)值,將所述第二數(shù)值更新為所述第三數(shù)值,返回讀取或?qū)懭肽K。
7.根據(jù)權(quán)利要求6所述的設(shè)備,其特征在于,所述確定模塊包括: 第一確定單元,用于根據(jù)終端內(nèi)總線空閑的帶寬,確定所述總線空閑的帶寬所屬于的帶寬范圍; 第二確定單元,用于根據(jù)所述總線空閑的帶寬所屬于的帶寬范圍,從已存儲的帶寬范圍和第一數(shù)值的對應(yīng)關(guān)系中確定所述總線空閑的帶寬對應(yīng)的第一數(shù)值,并確定第二數(shù)值,所述第一數(shù)值等于所述第二數(shù)值。
8.根據(jù)權(quán)利要求6所述的設(shè)備,其特征在于,所述讀取或?qū)懭肽K包括: 讀取或?qū)懭雴卧?,用于如果所述?nèi)存地址是所述第二數(shù)值個總線位寬之和的整數(shù)倍且所述數(shù)據(jù)單元的個數(shù)大于或等于所述第二數(shù)值,則根據(jù)所述內(nèi)存地址讀取或?qū)懭胨龅诙?shù)值個數(shù)據(jù)單元,將所述第二數(shù)值更新為所述第一數(shù)值; 第一減少單元,用于將所述外部設(shè)備需要訪 問的數(shù)據(jù)單元的個數(shù)減少所述第二數(shù)值,得到減少后的所述外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù); 增加單元,用于根據(jù)所述第二數(shù)值、所述外部設(shè)備訪問的內(nèi)存地址和總線位寬,根據(jù)如下公式增加所述外部設(shè)備訪問的內(nèi)存地址,
Addr2=Addrl+buswidth/8*n 其中,在所述公式中,Addr2為增加后的所述外部設(shè)備訪問的內(nèi)存地址,Addrl為增加前的所述外部設(shè)備訪問的內(nèi)存地址,buswidth為所述總線位寬,η為所述第二數(shù)值。
9.根據(jù)權(quán)利要求6至8任一權(quán)利要求所述的設(shè)備,其特征在于,所述設(shè)備還包括: 第一存儲模塊,用于將外部設(shè)備需要訪問的數(shù)據(jù)單元的個數(shù)存儲在第一寄存器中; 第二存儲模塊,用于將所述外部設(shè)備訪問的內(nèi)存地址存儲在第二寄存器中。
10.根據(jù)權(quán)利要求9所述的設(shè)備,其特征在于,所述設(shè)備還包括: 第一更新模塊,用于將所述第一寄存器中存儲的所述數(shù)據(jù)單元的個數(shù)更新為減少后的數(shù)據(jù)單元的個數(shù); 第二更新模塊,用于將所述第二寄存器中存儲的所述內(nèi)存地址更新為增加后的內(nèi)存地址。
11.一種訪問內(nèi)存的設(shè)備,其特征在于,所述設(shè)備包括存儲器和處理器,用于執(zhí)行如權(quán)利要求I至5任一權(quán)利要求所述的一種訪問內(nèi)存的方法。
【文檔編號】G06F13/16GK103853675SQ201210520124
【公開日】2014年6月11日 申請日期:2012年12月6日 優(yōu)先權(quán)日:2012年12月6日
【發(fā)明者】趙長虹, 蘇健 申請人:深圳市海思半導(dǎo)體有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
建始县| 香格里拉县| 南投市| 潜江市| 望都县| 乡宁县| 上饶市| 陕西省| 松江区| 天镇县| 镇江市| 河池市| 泾川县| 循化| 塘沽区| 阳谷县| 开江县| 张家界市| 怀集县| 凉城县| 扎赉特旗| 迁西县| 九江县| 刚察县| 平江县| 体育| 九江县| 广东省| 射洪县| 武义县| 商洛市| 成安县| 长武县| 乌鲁木齐县| 绵阳市| 聂荣县| 永新县| 皋兰县| 泽普县| 沾化县| 舞钢市|