內(nèi)存數(shù)據(jù)的推送方法及裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)的推送方法和裝置,該方法包括:按照推送周期定時(shí)生成推送命令,其中,一個(gè)推送周期內(nèi)定時(shí)生成一個(gè)推送命令;根據(jù)該推送命令獲取待推送數(shù)據(jù)的推送參數(shù);根據(jù)該推送參數(shù)向內(nèi)存發(fā)送至少一個(gè)訪存請(qǐng)求,該至少一個(gè)訪存請(qǐng)求用于向該內(nèi)存請(qǐng)求該待推送數(shù)據(jù);接收該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)并將該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū);將該待推送數(shù)據(jù)從數(shù)據(jù)緩沖區(qū)推送到該推送目的存儲(chǔ)器。本發(fā)明實(shí)施例的方法,能夠根據(jù)待推送數(shù)據(jù)的推送參數(shù)和周期性生成的推送命令將待推送數(shù)據(jù)推送到推送目的寄存器,減少了因?yàn)榇罅款A(yù)取指令的插入帶來的額外指令開銷。
【專利說明】內(nèi)存數(shù)據(jù)的推送方法及裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明實(shí)施例涉及計(jì)算機(jī)領(lǐng)域,并且更具體地,涉及內(nèi)存數(shù)據(jù)的推送方法及裝置?!颈尘凹夹g(shù)】
[0002]由于CPU (Central Processing Unit,中央處理單元)速度遠(yuǎn)遠(yuǎn)高于內(nèi)存的讀取速度,需要把數(shù)據(jù)預(yù)取放到高速緩存Cache或額外緩沖區(qū)(如scratchpad memory)等處理器可以更快訪問的地方。
[0003]一種編譯器控制的軟件預(yù)取器通過編譯器插入預(yù)取指令,該預(yù)取指令可以在處理器使用數(shù)據(jù)前請(qǐng)求數(shù)據(jù),從而提高處理器對(duì)數(shù)據(jù)的訪問速度。但是大量預(yù)取指令的插入會(huì)增加需要運(yùn)行指令條數(shù),帶來額外的指令開銷。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)的推送方法及裝置,能夠根據(jù)待推送數(shù)據(jù)的推送參數(shù)和周期性生成的推送命令將待推送數(shù)據(jù)推送到推送目的寄存器,減少了因?yàn)榇罅款A(yù)取指令的插入帶來的額外指令開銷。
[0005]第一方面,提出了一種內(nèi)存數(shù)據(jù)的推送方法,該方法包括:按照推送周期定時(shí)生成推送命令,其中,一個(gè)推送周期內(nèi)定時(shí)生成一個(gè)推送命令;根據(jù)該推送命令獲取待推送數(shù)據(jù)的推送參數(shù),其中,該推送參數(shù)包括該待推送數(shù)據(jù)的推送目的存儲(chǔ)器,該推送參數(shù)由該待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定,該待推送數(shù)據(jù)的數(shù)據(jù)類型至少包括非順序結(jié)構(gòu)數(shù)據(jù)類型;根據(jù)該推送參數(shù)向內(nèi)存發(fā)送至少一個(gè)訪存請(qǐng)求,該至少一個(gè)訪存請(qǐng)求用于向該內(nèi)存請(qǐng)求該待推送數(shù)據(jù);接收該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)并將該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū);將該待推送數(shù)據(jù)從數(shù)據(jù)緩沖區(qū)推送到該推送目的存儲(chǔ)器。
[0006]在第一種可能的實(shí)現(xiàn)方式中,結(jié)合第一方面,該方法還包括:在根據(jù)推送周期定時(shí)生成推送命令之前,確定該推送周期。
[0007]在第二種可能的實(shí)現(xiàn)方式中,結(jié)合第一方面,具體實(shí)現(xiàn)為,該推送參數(shù)還包括該待推送數(shù)據(jù)的存儲(chǔ)信息、該待推送數(shù)據(jù)的訪問步長和該待推送數(shù)據(jù)的推送次數(shù)。
[0008]在第三種可能的實(shí)現(xiàn)方式中,結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,根據(jù)推送命令和推送參數(shù)向內(nèi)存發(fā)送訪存請(qǐng)求具體實(shí)現(xiàn)為:根據(jù)該待推送數(shù)據(jù)的存儲(chǔ)信息生成該待推送數(shù)據(jù)的訪問地址;根據(jù)該推送命令、該待推送數(shù)據(jù)的推送次數(shù)和該待推送數(shù)據(jù)的訪問地址生成至少一個(gè)該訪存請(qǐng)求并對(duì)該至少一個(gè)訪存請(qǐng)求進(jìn)行隊(duì)列排序;按該隊(duì)列排序的順序向該內(nèi)存發(fā)送該訪存請(qǐng)求。
[0009]在第四種可能的實(shí)現(xiàn)方式中,結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式或第一方面的第三種可能的實(shí)現(xiàn)方式,推送參數(shù)由待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定具體實(shí)現(xiàn)為:如果該待推送數(shù)據(jù)為數(shù)組,則該待推送數(shù)據(jù)的存儲(chǔ)信息包括該數(shù)組的起始地址和該數(shù)組的元素大?。换蛉绻摯扑蛿?shù)據(jù)為鏈表,則該待推送數(shù)據(jù)的存儲(chǔ)信息包括該鏈表的起始地址、該鏈表的節(jié)點(diǎn)大小、該鏈表的指針域位置和該鏈表的結(jié)束標(biāo)記;或如果該待推送數(shù)據(jù)為指針數(shù)組,則該待推送數(shù)據(jù)的存儲(chǔ)信息包括該指針數(shù)組的起始地址、該指針數(shù)組的指針域大小和該指針數(shù)組的元素大小。
[0010]在第五種可能的實(shí)現(xiàn)方式中,結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,確定推送周期具體實(shí)現(xiàn)為:確定預(yù)先約定的時(shí)間周期為該推送周期;或根據(jù)接收的定時(shí)推送命令確定該推送周期;或根據(jù)該待推送數(shù)據(jù)的使用速率確定該推送周期。
[0011]在第六種可能的實(shí)現(xiàn)方式中,結(jié)合第一方面,將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到推送目的存儲(chǔ)器具體實(shí)現(xiàn)為:獲取該待推送數(shù)據(jù)的推送目的存儲(chǔ)器存放有效數(shù)據(jù)的狀態(tài)信息;如果該狀態(tài)信息指示該推送目的存儲(chǔ)器未存放有效數(shù)據(jù),則將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到該待推送數(shù)據(jù)的推送目的存儲(chǔ)器;將該待推送數(shù)據(jù)的推送目的存儲(chǔ)器的狀態(tài)信息設(shè)置為存放有效數(shù)據(jù)狀態(tài)。
[0012]第二方面,提出了一種內(nèi)存數(shù)據(jù)推送裝置,該裝置包括:生成單元,用于按照推送周期定時(shí)生成推送命令,其中,一個(gè)該推送周期內(nèi)定時(shí)生成一個(gè)該推送命令;獲取單元,用于根據(jù)該推送命令獲取待推送數(shù)據(jù)的推送參數(shù),其中,該推送參數(shù)包括該待推送數(shù)據(jù)的推送目的存儲(chǔ)器,該推送目的存儲(chǔ)器為存放CPU預(yù)取數(shù)據(jù)的存儲(chǔ)器,該推送參數(shù)由該待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定,該待推送數(shù)據(jù)的數(shù)據(jù)類型至少包括非順序結(jié)構(gòu)數(shù)據(jù)類型;該生成單元還用于根據(jù)該推送參數(shù)生成至少一個(gè)訪存請(qǐng)求,該至少一個(gè)訪存請(qǐng)求用于向內(nèi)存請(qǐng)求該待推送數(shù)據(jù);發(fā)送單元,用于向該內(nèi)存發(fā)送該至少一個(gè)訪存請(qǐng)求;接收單元,用于接收該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)并將該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū);該發(fā)送單元還用于將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到該推送目的存儲(chǔ)器。
[0013]在第一種可能的實(shí)現(xiàn)方式中,結(jié)合第二方面,該裝置還包括:確定單元,用于確定該推送周期。
[0014]在第二種可能的實(shí)現(xiàn)方式中,結(jié)合第二方面,具體實(shí)現(xiàn)為,該推送參數(shù)還包括該待推送數(shù)據(jù)的存儲(chǔ)信息、該待推送數(shù)據(jù)的訪問步長和該待推送數(shù)據(jù)的推送次數(shù)。
[0015]在第三種可能的實(shí)現(xiàn)方式中,結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,該生成單元具體實(shí)現(xiàn)為:根據(jù)該待推送數(shù)據(jù)的存儲(chǔ)信息生成該待推送數(shù)據(jù)的訪問地址;根據(jù)該推送命令、該待推送數(shù)據(jù)的推送次數(shù)和該待推送數(shù)據(jù)的訪問地址生成至少一個(gè)該訪存請(qǐng)求。該發(fā)送單元可用于對(duì)該至少一個(gè)訪存請(qǐng)求進(jìn)行隊(duì)列排序,并按該隊(duì)列排序的順序向該內(nèi)存發(fā)送該訪存請(qǐng)求。
[0016]在第四種可能的實(shí)現(xiàn)方式中,結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式或第二方面的第三種可能的實(shí)現(xiàn)方式,推送參數(shù)由待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定具體實(shí)現(xiàn)為:如果該待推送數(shù)據(jù)為數(shù)組,則該待推送數(shù)據(jù)的存儲(chǔ)信息包括該數(shù)組的起始地址和該數(shù)組的元素大?。换蛉绻摯扑蛿?shù)據(jù)為鏈表,則該待推送數(shù)據(jù)的存儲(chǔ)信息包括該鏈表的起始地址、該鏈表的節(jié)點(diǎn)大小、該鏈表的指針域位置和該鏈表的結(jié)束標(biāo)記;或如果該待推送數(shù)據(jù)為指針數(shù)組,則該待推送數(shù)據(jù)的存儲(chǔ)信息包括該指針數(shù)組的起始地址、該指針數(shù)組的指針域大小和該指針數(shù)組的元素大小。
[0017]在第五種可能的實(shí)現(xiàn)方式中,結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,該確定單元具體實(shí)現(xiàn)為:確定預(yù)先約定的時(shí)間周期為該推送周期;或根據(jù)接收的定時(shí)推送命令確定該推送周期;或根據(jù)該待推送數(shù)據(jù)的使用速率確定該推送周期。
[0018]在第六種可能的實(shí)現(xiàn)方式中,結(jié)合第二方面,該獲取單元具體還用于獲取該待推送數(shù)據(jù)的推送目的存儲(chǔ)器存放有效數(shù)據(jù)的狀態(tài)信息;該發(fā)送單元可用于如果該狀態(tài)信息指示該推送目的存儲(chǔ)器未存放有效數(shù)據(jù),則將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到該待推送數(shù)據(jù)的推送目的存儲(chǔ)器;該發(fā)送單元可用于向該CPU發(fā)送狀態(tài)設(shè)置信息,該狀態(tài)設(shè)置信息指示將該待推送數(shù)據(jù)的推送目的存儲(chǔ)器的狀態(tài)信息設(shè)置為存放有效數(shù)據(jù)狀態(tài)。
[0019]第三方面,提出了一種內(nèi)存數(shù)據(jù)推送裝置,該裝置包括:接收單元、處理器、發(fā)送單元和存儲(chǔ)器。處理器可按照推送周期定時(shí)生成推送命令,存儲(chǔ)器可存儲(chǔ)使得處理器按照推送周期定時(shí)生成推送命令的指令。其中,一個(gè)該推送周期內(nèi)定時(shí)生成一個(gè)推送命令。處理器還可根據(jù)該推送命令獲取待推送數(shù)據(jù)的推送參數(shù),存儲(chǔ)器還可存儲(chǔ)使得處理器根據(jù)該推送命令獲取待推送數(shù)據(jù)的推送參數(shù)的指令。其中,該推送參數(shù)可包括該待推送數(shù)據(jù)的推送目的存儲(chǔ)器,該推送目的存儲(chǔ)器為存放CPU預(yù)取數(shù)據(jù)的存儲(chǔ)器。該推送參數(shù)由待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定,該待推送數(shù)據(jù)的數(shù)據(jù)類型至少包括非順序結(jié)構(gòu)數(shù)據(jù)類型。處理器還可根據(jù)該推送參數(shù)生成至少一個(gè)訪存請(qǐng)求,存儲(chǔ)器還可存儲(chǔ)使得處理器根據(jù)該推送參數(shù)生成至少一個(gè)訪存請(qǐng)求的指令。其中,該至少一個(gè)訪存請(qǐng)求用于向內(nèi)存請(qǐng)求該待推送數(shù)據(jù)。發(fā)送單元,可向該內(nèi)存發(fā)送該至少一個(gè)訪存請(qǐng)求。接收單元,可接收該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)并將該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū)。發(fā)送單元還可將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到該推送目的存儲(chǔ)器。
[0020]在第一種可能的實(shí)現(xiàn)方式中,結(jié)合第三方面,處理器可確定該推送周期,存儲(chǔ)器可存儲(chǔ)使得處理器確定該推送周期的指令。
[0021]在第二種可能的實(shí)現(xiàn)方式中,結(jié)合第三方面,具體實(shí)現(xiàn)為,該推送參數(shù)還包括該待推送數(shù)據(jù)的存儲(chǔ)信息、該待推送數(shù)據(jù)的訪問步長和該待推送數(shù)據(jù)的推送次數(shù)。
[0022]在第三種可能的實(shí)現(xiàn)方式中,結(jié)合第三方面的第二種可能的實(shí)現(xiàn)方式,具體實(shí)現(xiàn)為:處理器可根據(jù)該待推送數(shù)據(jù)的存儲(chǔ)信息生成該待推送數(shù)據(jù)的訪問地址;處理器可根據(jù)該推送命令、該待推送數(shù)據(jù)的推送次數(shù)和該待推送數(shù)據(jù)的訪問地址生成至少一個(gè)該訪存請(qǐng)求。發(fā)送單元可對(duì)該至少一個(gè)訪存請(qǐng)求進(jìn)行隊(duì)列排序,并按該隊(duì)列排序的順序向該內(nèi)存發(fā)送該訪存請(qǐng)求。
[0023]在第四種可能的實(shí)現(xiàn)方式中,結(jié)合第三方面的第二種可能的實(shí)現(xiàn)方式或第三方面的第三種可能的實(shí)現(xiàn)方式,推送參數(shù)由待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定具體實(shí)現(xiàn)為:如果該待推送數(shù)據(jù)為數(shù)組,則該待推送數(shù)據(jù)的存儲(chǔ)信息包括該數(shù)組的起始地址和該數(shù)組的元素大??;或如果該待推送數(shù)據(jù)為鏈表,則該待推送數(shù)據(jù)的存儲(chǔ)信息包括該鏈表的起始地址、該鏈表的節(jié)點(diǎn)大小、該鏈表的指針域位置和該鏈表的結(jié)束標(biāo)記;或如果該待推送數(shù)據(jù)為指針數(shù)組,則該待推送數(shù)據(jù)的存儲(chǔ)信息包括該指針數(shù)組的起始地址、該指針數(shù)組的指針域大小和該指針數(shù)組的元素大小。
[0024]在第五種可能的實(shí)現(xiàn)方式中,結(jié)合第三方面的第一種可能的實(shí)現(xiàn)方式,具體實(shí)現(xiàn)為:處理器可確定預(yù)先約定的時(shí)間周期為該推送周期;或根據(jù)接收的定時(shí)推送命令確定該推送周期;或根據(jù)該待推送數(shù)據(jù)的使用速率確定該推送周期。
[0025]在第六種可能的實(shí)現(xiàn)方式中,結(jié)合第三方面,處理器可獲取該待推送數(shù)據(jù)的推送目的存儲(chǔ)器存放有效數(shù)據(jù)的狀態(tài)信息;發(fā)送單元可用于如果該狀態(tài)信息指示該推送目的存儲(chǔ)器未存放有效數(shù)據(jù),則將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到該待推送數(shù)據(jù)的推送目的存儲(chǔ)器;該發(fā)送單元還可用于向該CPU發(fā)送狀態(tài)設(shè)置信息,該狀態(tài)設(shè)置信息指示將該待推送數(shù)據(jù)的推送目的存儲(chǔ)器的狀態(tài)信息設(shè)置為存放有效數(shù)據(jù)狀態(tài)。
[0026]基于以上技術(shù)方案,本發(fā)明實(shí)施例能夠根據(jù)待推送數(shù)據(jù)的推送參數(shù)和周期性生成的推送命令,將待推送數(shù)據(jù)推送到推送目的寄存器,避免了因?yàn)橥扑蛿?shù)據(jù)而產(chǎn)生的大量預(yù)取指令,因此本發(fā)明實(shí)施例能夠減少因?yàn)榇罅款A(yù)取指令的插入帶來的額外指令開銷。
【專利附圖】
【附圖說明】
[0027]為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0028]圖1是本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)的推送方法的流程圖。
[0029]圖2是本發(fā)明實(shí)施例內(nèi)存鏈表數(shù)據(jù)的推送方法流程圖。
[0030]圖3是本發(fā)明實(shí)施例內(nèi)存指針數(shù)組數(shù)據(jù)的推送方法流程圖。
[0031]圖4是本發(fā)明實(shí)施例推送控制器的示意框圖。
[0032]圖5是本發(fā)明實(shí)施例推送控制器的另一示意框圖。
【具體實(shí)施方式】
[0033]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0034]圖1是本發(fā)明實(shí)施例一種內(nèi)存數(shù)據(jù)的推送方法的流程圖。圖1的方法由內(nèi)存推送控制器執(zhí)行。
[0035]101,按照推送周期定時(shí)生成推送命令。其中,一個(gè)推送周期內(nèi)定時(shí)生成一個(gè)推送命令。
[0036]102,根據(jù)該推送命令獲取待推送數(shù)據(jù)的推送參數(shù)。其中,該推送參數(shù)包括待推送數(shù)據(jù)的推送目的存儲(chǔ)器,該推送目的存儲(chǔ)器為存放CPU預(yù)取數(shù)據(jù)的存儲(chǔ)器。該推送參數(shù)由該待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定。該待推送數(shù)據(jù)的數(shù)據(jù)類型至少包括非順序結(jié)構(gòu)數(shù)據(jù)類型。
[0037]103,根據(jù)該推送參數(shù)向內(nèi)存發(fā)送至少一個(gè)訪存請(qǐng)求。其中,該至少一個(gè)訪存請(qǐng)求用于向該內(nèi)存請(qǐng)求該待推送數(shù)據(jù)。
[0038]104,接收該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)并將該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū)。
[0039]105,將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到該推送目的存儲(chǔ)器。
[0040]本發(fā)明實(shí)施例的方法能夠根據(jù)待推送數(shù)據(jù)的推送參數(shù)和周期性生成的推送命令將待推送數(shù)據(jù)推送到推送目的寄存器,減少了因?yàn)榇罅款A(yù)取指令的插入帶來的額外指令開銷。[0041]可選地,該推送方法支持的待推送數(shù)據(jù)的數(shù)據(jù)類型可以是非順序結(jié)構(gòu)數(shù)據(jù)類型,如鏈表、指針數(shù)組等。當(dāng)然,本發(fā)明實(shí)施例也不排除對(duì)順序結(jié)構(gòu)數(shù)據(jù)類型的支持,如數(shù)組等。
[0042]可選地,本發(fā)明實(shí)施例中,待推送數(shù)據(jù)的推送參數(shù),還可包括待推送數(shù)據(jù)的存儲(chǔ)信息、待推送數(shù)據(jù)的訪問步長和待推送數(shù)據(jù)的推送次數(shù)。根據(jù)待推送數(shù)據(jù)的存儲(chǔ)信息,本發(fā)明實(shí)施例的推送控制器可以通過地址生成器生成訪存請(qǐng)求的請(qǐng)求地址。根據(jù)待推送數(shù)據(jù)的推送次數(shù),推送控制器可確定推送計(jì)數(shù)器的計(jì)數(shù)值,以確定當(dāng)前推送命令中需要生成的訪存請(qǐng)求的個(gè)數(shù)。
[0043]進(jìn)一步的,如果待推送數(shù)據(jù)為數(shù)組,則待推送數(shù)據(jù)的存儲(chǔ)信息包括該數(shù)組的起始地址和元素大小和訪問步長。本發(fā)明實(shí)施例中,數(shù)組的起始地址,可作為第一個(gè)訪存請(qǐng)求的請(qǐng)求地址;再根據(jù)元素大小,可確定數(shù)組中其他元素的地址,例如,數(shù)組的第N個(gè)元素,其地址為起始地址+元素大小* (N-1)。
[0044]或者,如果待推送數(shù)據(jù)為鏈表,則待推送數(shù)據(jù)的存儲(chǔ)信息包括該鏈表的起始地址、節(jié)點(diǎn)大小、指針域位置和結(jié)束標(biāo)記。本發(fā)明實(shí)施例中,鏈表的起始地址,可作為第一個(gè)訪存請(qǐng)求的請(qǐng)求地址;鏈表起始地址指向的節(jié)點(diǎn)的指針域指向的地址,可作為第二個(gè)訪存請(qǐng)求的請(qǐng)求地址,以此類推,直至達(dá)到推送次數(shù)或者鏈表結(jié)束。
[0045]或者,如果待推送數(shù)據(jù)為指針數(shù)組,則待推送數(shù)據(jù)的存儲(chǔ)信息包括該指針數(shù)組的起始地址、指針域大小和元素大小。本發(fā)明實(shí)施例中,指針數(shù)組的起始地址,可作為第一個(gè)訪存請(qǐng)求的請(qǐng)求地址;指針數(shù)組起始地址指向的元素的指針域指向的地址,可作為第二個(gè)訪存請(qǐng)求的請(qǐng)求地址,以此類推,直至達(dá)到推送次數(shù)或者指針數(shù)組結(jié)束。
[0046]進(jìn)一步地,根據(jù)該推送命令和該推送參數(shù)向內(nèi)存發(fā)送訪存請(qǐng)求,具體可實(shí)現(xiàn)為:根據(jù)待推送數(shù)據(jù)的存儲(chǔ)信息生成待推送數(shù)據(jù)的訪問地址;根據(jù)該推送命令、待推送數(shù)據(jù)的推送次數(shù)和待推送數(shù)據(jù)的訪問地址生成至少一個(gè)該訪存請(qǐng)求并對(duì)該至少一個(gè)訪存請(qǐng)求進(jìn)行隊(duì)列排序,其中,該帶推送數(shù)據(jù)的訪問地址,即為訪存請(qǐng)求的請(qǐng)求地址;按該隊(duì)列排序的順序向該內(nèi)存發(fā)送該訪存請(qǐng)求。通過根據(jù)推送參數(shù)向內(nèi)存發(fā)送訪存請(qǐng)求,可以實(shí)現(xiàn)對(duì)非順序結(jié)構(gòu)的數(shù)據(jù)的推送。當(dāng)然,本發(fā)明實(shí)施例的方法也支持對(duì)順序結(jié)構(gòu)數(shù)據(jù)的推送。
[0047]可選地,可以確定預(yù)先約定的時(shí)間周期為推送周期。例如,啟動(dòng)時(shí),可以默認(rèn)設(shè)置一個(gè)時(shí)間周期t作為定時(shí)推送的周期。
[0048]可選地,可以根據(jù)接收的定時(shí)推送命令確定推送周期。例如,接收操作系統(tǒng)或應(yīng)用程序發(fā)送的定時(shí)推送命令,并根據(jù)該定時(shí)推送命令設(shè)置推送周期。根據(jù)接收的定時(shí)推送命令確定推送周期,可使得推送控制器根據(jù)外部調(diào)用靈活調(diào)整推送周期。
[0049]可選地,可以根據(jù)待推送數(shù)據(jù)的使用速率確定推送周期。待推送數(shù)據(jù)的使用速率,是指推送目的存儲(chǔ)器消費(fèi)數(shù)據(jù)的速率。顯而易見,作為CPU預(yù)取數(shù)據(jù)的存儲(chǔ)器,本發(fā)明實(shí)施例的推送目的存儲(chǔ)器應(yīng)該是存取速度較快的存儲(chǔ)器,如寄存器、高速緩存Cache或片上存儲(chǔ)器scratchpad memory等。當(dāng)然,也可以采用其他存取速度類似或者更高速的存儲(chǔ)器,本發(fā)明在此并不做限制。根據(jù)待推送數(shù)據(jù)的使用速率確定推送周期,可充分利用推送控制器的效率,既不會(huì)因?yàn)橥扑涂刂破魍扑椭芷谶^短導(dǎo)致推送控制器的資源浪費(fèi),也不會(huì)因?yàn)橥扑涂刂破髦芷谶^長導(dǎo)致CPU預(yù)取數(shù)據(jù)效率變低。
[0050]可選地,作為一個(gè)實(shí)施例,可以通過以下方法將待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到推送目的存儲(chǔ)器:獲取待推送數(shù)據(jù)的推送目的存儲(chǔ)器存放有效數(shù)據(jù)的狀態(tài)信息;如果該狀態(tài)信息指示該推送目的存儲(chǔ)器未存放有效數(shù)據(jù),則將待推送數(shù)據(jù)從數(shù)據(jù)緩沖區(qū)推送到待推送數(shù)據(jù)的推送目的存儲(chǔ)器;將待推送數(shù)據(jù)的推送目的存儲(chǔ)器的狀態(tài)信息設(shè)置為存放有效數(shù)據(jù)狀態(tài)。例如,在本實(shí)施例中,推送目的存儲(chǔ)器可以是寄存器,可包括數(shù)據(jù)data域和有效標(biāo)識(shí)valid域。推送控制器檢測(cè)該寄存器的valid域,如果檢測(cè)到valid域?yàn)镺,且推送控制器處于推送過程中,則將新數(shù)據(jù)推送到該寄存器的data域,并將valid域置為I。同時(shí),CPU可新增一個(gè)指令MOVD,該指令的行為是:首先檢查寄存器的valid域,valid域?yàn)镮表示該寄存器存在有效數(shù)據(jù),為O表示該寄存器不存在有效數(shù)據(jù)。如果valid域?yàn)?,則MOVD將數(shù)據(jù)移至寄存器的data域,并將valid域置為O ;如果valid域?yàn)?,則該指令停頓,直到valid域?yàn)镮再執(zhí)行上述操作。通過對(duì)推送目的存儲(chǔ)器標(biāo)識(shí)狀態(tài)的監(jiān)控,可以減少存取沖突發(fā)生的可能,提高數(shù)據(jù)的推送效率。
[0051]圖2是本發(fā)明一個(gè)實(shí)施例內(nèi)存鏈表數(shù)據(jù)的推送方法流程圖。
[0052]201,內(nèi)存控制器接收鏈表數(shù)據(jù)的推送參數(shù),并將該推送參數(shù)存儲(chǔ)于內(nèi)存控制器的配置空間。其中,鏈表數(shù)據(jù)的推送參數(shù)包括鏈表的起始地址、鏈表的節(jié)點(diǎn)大小、Next指針域位置(用于指示鏈表的下一個(gè)節(jié)點(diǎn)數(shù)據(jù)的地址)、結(jié)束標(biāo)記、推送次數(shù)和推送目的存儲(chǔ)器。
[0053]202,內(nèi)存控制器的推送控制器接收定時(shí)推送命令。
[0054]203,推送控制器根據(jù)周期性生成的推送命令,獲取待推送數(shù)據(jù)的推送參數(shù)并生成第一訪存請(qǐng)求。本發(fā)明實(shí)施例中,待推送數(shù)據(jù)為鏈表數(shù)據(jù),地址生成器將推送參數(shù)中鏈表的起始地址作為訪存請(qǐng)求的請(qǐng)求地址。
[0055]204,推送控制器接收返回的鏈表的節(jié)點(diǎn)數(shù)據(jù)并將節(jié)點(diǎn)數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū)。
[0056]205,推送控制器將該節(jié)點(diǎn)數(shù)據(jù)推送到推送目的存儲(chǔ)器。
[0057]206,推送控制器判斷推送計(jì)數(shù)器是否達(dá)到推送次數(shù)或者鏈表是否結(jié)束。如果推送計(jì)數(shù)器達(dá)到推送次數(shù)或鏈表結(jié)束,則停止生成訪存請(qǐng)求;否則,轉(zhuǎn)207。
[0058]207,推送控制器生成第二訪存請(qǐng)求。其中,地址生成器取出數(shù)據(jù)緩沖區(qū)中剛存入的節(jié)點(diǎn)數(shù)據(jù)的Next指針域(即鏈表下一節(jié)點(diǎn)數(shù)據(jù)的地址),作為第二訪存請(qǐng)求的請(qǐng)求地址。步驟207結(jié)束后,跳轉(zhuǎn)至步驟204。
[0059]本發(fā)明實(shí)施例實(shí)現(xiàn)了對(duì)非順序結(jié)構(gòu)數(shù)據(jù)類型中的鏈表數(shù)據(jù)的推送。
[0060]圖3是本發(fā)明一個(gè)實(shí)施例內(nèi)存指針數(shù)組數(shù)據(jù)的推送方法流程圖。
[0061]301,內(nèi)存控制器接收指針數(shù)組數(shù)據(jù)的推送參數(shù),并將該推送參數(shù)存儲(chǔ)于內(nèi)存控制器的配置空間。其中,指針數(shù)組數(shù)據(jù)的推送參數(shù)包括指針數(shù)組的起始地址、指針數(shù)組的指針域大小、指針數(shù)組的元素大小、訪問步長、推送次數(shù)和推送目的存儲(chǔ)器。
[0062]302,內(nèi)存控制器的推送控制器接收定時(shí)推送命令。
[0063]303,推送控制器根據(jù)周期性生成的推送命令,獲取待推送數(shù)據(jù)的推送參數(shù)并生成第一訪存請(qǐng)求。本發(fā)明實(shí)施例中,待推送數(shù)據(jù)為指針數(shù)組數(shù)據(jù),地址生成器將推送參數(shù)中指針數(shù)組的起始地址作為訪存請(qǐng)求的請(qǐng)求地址。
[0064]304,推送控制器接收返回的指針數(shù)組的元素并將該元素放入數(shù)據(jù)緩沖區(qū)。
[0065]305,推送控制器將該元素推送到推送目的存儲(chǔ)器。
[0066]306,推送控制器判斷推送計(jì)數(shù)器是否達(dá)到推送次數(shù)。如果推送計(jì)數(shù)器達(dá)到推送次數(shù),則停止生成訪存請(qǐng)求;否則,轉(zhuǎn)307。
[0067]307,推送控制器生成第二訪存請(qǐng)求。其中,地址生成器取出數(shù)據(jù)緩沖區(qū)中剛存入的元素的指針域(即指針數(shù)組下一元素的地址),作為第二訪存請(qǐng)求的請(qǐng)求地址。步驟307結(jié)束后,跳轉(zhuǎn)至步驟304。
[0068]本發(fā)明實(shí)施例實(shí)現(xiàn)了對(duì)非順序結(jié)構(gòu)數(shù)據(jù)類型中的指針數(shù)組數(shù)據(jù)的推送。
[0069]顯而易見,本發(fā)明實(shí)施例的方法,還可實(shí)現(xiàn)對(duì)其他非順序結(jié)構(gòu)數(shù)據(jù)類型的數(shù)據(jù)推送,本發(fā)明在此不再贅述。
[0070]本發(fā)明實(shí)施例的推送控制器也可實(shí)現(xiàn)推順序結(jié)構(gòu)數(shù)據(jù)類型的數(shù)據(jù)的推送,該實(shí)現(xiàn)過程屬于現(xiàn)有技術(shù)的內(nèi)容,本發(fā)明在此不再贅述。
[0071]圖4是本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)推送裝置推送控制器400的示意框圖。推送控制器400可包括生成單元401、獲取單元402、發(fā)送單元403和接收單元404。
[0072]生成單元401,可按照推送周期定時(shí)生成推送命令。其中,一個(gè)該推送周期內(nèi)定時(shí)生成一個(gè)推送命令。
[0073]獲取單元402,可根據(jù)該推送命令獲取待推送數(shù)據(jù)的推送參數(shù)。其中,該推送參數(shù)可包括該待推送數(shù)據(jù)的推送目的存儲(chǔ)器,該推送目的存儲(chǔ)器為存放CPU預(yù)取數(shù)據(jù)的存儲(chǔ)器。該推送參數(shù)由待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定,該待推送數(shù)據(jù)的數(shù)據(jù)類型至少包括非順序結(jié)構(gòu)數(shù)據(jù)類型。
[0074]生成單元402還可根據(jù)該推送參數(shù)生成至少一個(gè)訪存請(qǐng)求。其中,該至少一個(gè)訪存請(qǐng)求用于向內(nèi)存請(qǐng)求該待推送數(shù)據(jù)。
[0075]發(fā)送單元403,可向該內(nèi)存發(fā)送該至少一個(gè)訪存請(qǐng)求。
[0076]接收單元404,可接收該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)并將該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū)。
[0077]發(fā)送單元403還可將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到該推送目的存儲(chǔ)器。
[0078]本發(fā)明實(shí)施例中,推送控制器400能夠根據(jù)待推送數(shù)據(jù)的推送參數(shù)和周期性生成的推送命令將待推送數(shù)據(jù)推送到推送目的寄存器,減少了因?yàn)榇罅款A(yù)取指令的插入帶來的額外指令開銷。
[0079]可選地,推送控制器400支持的待推送數(shù)據(jù)的數(shù)據(jù)類型可以是非順序結(jié)構(gòu)數(shù)據(jù)類型,如鏈表、指針數(shù)組等,也可以是順序結(jié)構(gòu)數(shù)據(jù)類型,如數(shù)組等。
[0080]可選地,本發(fā)明實(shí)施例中,待推送數(shù)據(jù)的推送參數(shù),還可包括待推送數(shù)據(jù)的存儲(chǔ)信息、待推送數(shù)據(jù)的訪問步長和待推送數(shù)據(jù)的推送次數(shù)。
[0081]進(jìn)一步的,如果待推送數(shù)據(jù)為數(shù)組,則待推送數(shù)據(jù)的存儲(chǔ)信息包括該數(shù)組的起始地址和元素大小和訪問步長。或者如果待推送數(shù)據(jù)為鏈表,則待推送數(shù)據(jù)的存儲(chǔ)信息包括該鏈表的起始地址、節(jié)點(diǎn)大小、指針域位置和結(jié)束標(biāo)記?;蛘呷绻扑蛿?shù)據(jù)為指針數(shù)組,則待推送數(shù)據(jù)的存儲(chǔ)信息包括該鏈表的起始地址、指針域大小和元素大小。
[0082]進(jìn)一步地,生成單元401可根據(jù)該待推送數(shù)據(jù)的存儲(chǔ)信息生成該待推送數(shù)據(jù)的訪問地址,并根據(jù)該推送命令、該待推送數(shù)據(jù)的推送次數(shù)和該待推送數(shù)據(jù)的訪問地址生成至少一個(gè)該訪存請(qǐng)求。發(fā)送單元403可對(duì)該至少一個(gè)訪存請(qǐng)求進(jìn)行隊(duì)列排序,并按該隊(duì)列排序的順序向該內(nèi)存發(fā)送該訪存請(qǐng)求。
[0083]可選地,推送控制器400還可包括確定單元405。確定單元405可用于確定推送周期。
[0084]可選地,確定單元405可以確定預(yù)先約定的時(shí)間周期為推送周期。例如,啟動(dòng)時(shí),可以默認(rèn)設(shè)置一個(gè)時(shí)間周期t作為定時(shí)推送的周期。
[0085]可選地,確定單元405可以根據(jù)接收的定時(shí)推送命令確定推送周期。例如,接收操作系統(tǒng)或應(yīng)用程序發(fā)送的定時(shí)推送命令,并根據(jù)該定時(shí)推送命令設(shè)置推送周期。
[0086]可選地,確定單元405可以根據(jù)待推送數(shù)據(jù)的使用速率確定推送周期。待推送數(shù)據(jù)的使用速率,是指推送目的存儲(chǔ)器消費(fèi)數(shù)據(jù)的速率。顯而易見,作為CPU預(yù)取數(shù)據(jù)的存儲(chǔ)器,本發(fā)明實(shí)施例的推送目的存儲(chǔ)器應(yīng)該是存取速度較快的存儲(chǔ)器,如寄存器、高速緩存Cache或片上存儲(chǔ)器scratchpadmemory等。當(dāng)然,也可以采用其他存取速度類似或者更高速的存儲(chǔ)器,本發(fā)明在此并不做限制。
[0087]可選地,作為一個(gè)實(shí)施例,獲取單元402可獲取該待推送數(shù)據(jù)的推送目的存儲(chǔ)器存放有效數(shù)據(jù)的狀態(tài)信息;發(fā)送單元403可在該狀態(tài)信息指示該推送目的存儲(chǔ)器未存放有效數(shù)據(jù)的情況下,將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到該待推送數(shù)據(jù)的推送目的存儲(chǔ)器;發(fā)送單元403還可向該CPU發(fā)送狀態(tài)設(shè)置信息,該狀態(tài)設(shè)置信息指示將該待推送數(shù)據(jù)的推送目的存儲(chǔ)器的狀態(tài)信息設(shè)置為存放有效數(shù)據(jù)狀態(tài)。
[0088]本發(fā)明實(shí)施例中,推送控制器400可實(shí)現(xiàn)圖1至圖3推送控制器執(zhí)行的方法,本發(fā)明在此不再贅述。
[0089]圖5是本發(fā)明實(shí)施例內(nèi)存數(shù)據(jù)推送裝置推送控制器500的示意框圖。推送控制器500可包括接收單元501、處理器502、發(fā)送單元503和存儲(chǔ)器504。
[0090]處理器502可按照推送周期定時(shí)生成推送命令,存儲(chǔ)器504可存儲(chǔ)使得處理器502按照推送周期定時(shí)生成推送命令的指令。其中,一個(gè)該推送周期內(nèi)定時(shí)生成一個(gè)推送命令。
[0091]處理器502還可根據(jù)該推送命令獲取待推送數(shù)據(jù)的推送參數(shù),存儲(chǔ)器504還可存儲(chǔ)使得處理器502根據(jù)該推送命令獲取待推送數(shù)據(jù)的推送參數(shù)的指令。其中,該推送參數(shù)可包括該待推送數(shù)據(jù)的推送目的存儲(chǔ)器,該推送目的存儲(chǔ)器為存放CPU預(yù)取數(shù)據(jù)的存儲(chǔ)器。該推送參數(shù)由待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定,該待推送數(shù)據(jù)的數(shù)據(jù)類型至少包括非順序結(jié)構(gòu)數(shù)據(jù)類型。
[0092]處理器502還可根據(jù)該推送參數(shù)生成至少一個(gè)訪存請(qǐng)求,存儲(chǔ)器504還可存儲(chǔ)使得處理器502根據(jù)該推送參數(shù)生成至少一個(gè)訪存請(qǐng)求的指令。其中,該至少一個(gè)訪存請(qǐng)求用于向內(nèi)存請(qǐng)求該待推送數(shù)據(jù)。
[0093]發(fā)送單元503,可向該內(nèi)存發(fā)送該至少一個(gè)訪存請(qǐng)求。
[0094]接收單元501,可接收該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)并將該內(nèi)存根據(jù)該訪存請(qǐng)求發(fā)送的該待推送數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū)。
[0095]發(fā)送單元503還可將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到該推送目的存儲(chǔ)器。
[0096]本發(fā)明實(shí)施例中,推送控制器500能夠根據(jù)待推送數(shù)據(jù)的推送參數(shù)和周期性生成的推送命令將待推送數(shù)據(jù)推送到推送目的寄存器,減少了因?yàn)榇罅款A(yù)取指令的插入帶來的額外指令開銷。
[0097]處理器502控制推送控制器500的操作,處理器502還可以稱為CPU (CentralProcessing Unit,中央處理單元)。存儲(chǔ)器504可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器502提供指令和數(shù)據(jù)。存儲(chǔ)器504的一部分還可以包括非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)0具體的應(yīng)用中,推送控制器500的各個(gè)組件通過總線系統(tǒng)505耦合在一起,其中總線系統(tǒng)505除包括數(shù)據(jù)總線之外,還可以包括電源總線、控制總線和狀態(tài)信號(hào)總線等。但是為了清楚說明起見,在圖中將各種總線都標(biāo)為總線系統(tǒng)505。
[0098]上述本發(fā)明實(shí)施例揭示的方法可以應(yīng)用于處理器502中,或者由處理器502實(shí)現(xiàn)。處理器502可能是一種集成電路芯片,具有信號(hào)的處理能力。在實(shí)現(xiàn)過程中,上述方法的各步驟可以通過處理器502中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理器502可以是通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列(FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。結(jié)合本發(fā)明實(shí)施例所公開的方法的步驟可以直接體現(xiàn)為硬件譯碼處理器執(zhí)行完成,或者用譯碼處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫可編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于存儲(chǔ)器504,處理器502讀取存儲(chǔ)器504中的信息,結(jié)合其硬件完成上述方法的步驟。
[0099]可選地,推送控制器500支持的待推送數(shù)據(jù)的數(shù)據(jù)類型可以是非順序結(jié)構(gòu)數(shù)據(jù)類型,如鏈表、指針數(shù)組等,也可以是順序結(jié)構(gòu)數(shù)據(jù)類型,如數(shù)組等。
[0100]可選地,本發(fā)明實(shí)施例中,待推送數(shù)據(jù)的推送參數(shù),還可包括待推送數(shù)據(jù)的存儲(chǔ)信息、待推送數(shù)據(jù)的訪問步長和待推送數(shù)據(jù)的推送次數(shù)。
[0101]進(jìn)一步的,如果待推送數(shù)據(jù)為數(shù)組,則待推送數(shù)據(jù)的存儲(chǔ)信息包括該數(shù)組的起始地址和元素大小和訪問步長?;蛘呷绻扑蛿?shù)據(jù)為鏈表,則待推送數(shù)據(jù)的存儲(chǔ)信息包括該鏈表的起始地址、節(jié)點(diǎn)大小、指針域位置和結(jié)束標(biāo)記。或者如果待推送數(shù)據(jù)為指針數(shù)組,則待推送數(shù)據(jù)的存儲(chǔ)信息包括該鏈表的起始地址、指針域大小和元素大小。
[0102]進(jìn)一步地,處理器502可根據(jù)該待推送數(shù)據(jù)的存儲(chǔ)信息生成該待推送數(shù)據(jù)的訪問地址,并根據(jù)該推送命令、該待推送數(shù)據(jù)的推送次數(shù)和該待推送數(shù)據(jù)的訪問地址生成至少一個(gè)該訪存請(qǐng)求。發(fā)送單元503可對(duì)該至少一個(gè)訪存請(qǐng)求進(jìn)行隊(duì)列排序,并按該隊(duì)列排序的順序向該內(nèi)存發(fā)送該訪存請(qǐng)求。
[0103]可選地,處理器502還可確定推送周期,存儲(chǔ)器504可存儲(chǔ)使得處理器502確定推送周期的指令。
[0104]可選地,處理器502可以確定預(yù)先約定的時(shí)間周期為推送周期。例如,啟動(dòng)時(shí),可以默認(rèn)設(shè)置一個(gè)時(shí)間周期t作為定時(shí)推送的周期。
[0105]可選地,處理器502可以根據(jù)接收的定時(shí)推送命令確定推送周期。例如,接收操作系統(tǒng)或應(yīng)用程序發(fā)送的定時(shí)推送命令,并根據(jù)該定時(shí)推送命令設(shè)置推送周期。
[0106]可選地,處理器502可以根據(jù)待推送數(shù)據(jù)的使用速率確定推送周期。待推送數(shù)據(jù)的使用速率,是指推送目的存儲(chǔ)器消費(fèi)數(shù)據(jù)的速率。顯而易見,作為CPU預(yù)取數(shù)據(jù)的存儲(chǔ)器,本發(fā)明實(shí)施例的推送目的存儲(chǔ)器應(yīng)該是存取速度較快的存儲(chǔ)器,如寄存器、高速緩存Cache或片上存儲(chǔ)器scratchpad memory等。當(dāng)然,也可以采用其他存取速度類似或者更高速的存儲(chǔ)器,本發(fā)明在此并不做限制。
[0107]可選地,作為一個(gè)實(shí)施例,處理器502可獲取該待推送數(shù)據(jù)的推送目的存儲(chǔ)器存放有效數(shù)據(jù)的狀態(tài)信息;發(fā)送單元503可在該狀態(tài)信息指示該推送目的存儲(chǔ)器未存放有效數(shù)據(jù)的情況下,將該待推送數(shù)據(jù)從該數(shù)據(jù)緩沖區(qū)推送到該待推送數(shù)據(jù)的推送目的存儲(chǔ)器;發(fā)送單元503還可向該CPU發(fā)送狀態(tài)設(shè)置信息,該狀態(tài)設(shè)置信息指示將該待推送數(shù)據(jù)的推送目的存儲(chǔ)器的狀態(tài)信息設(shè)置為存放有效數(shù)據(jù)狀態(tài)。
[0108]本發(fā)明實(shí)施例中,推送控制器500可實(shí)現(xiàn)圖1至圖3推送控制器執(zhí)行的方法,本發(fā)明在此不再贅述。本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
[0109]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
[0110]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0111]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0112]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
[0113]所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0114]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種內(nèi)存數(shù)據(jù)的推送方法,其特征在于,包括: 按照推送周期定時(shí)生成推送命令,其中,一個(gè)所述推送周期內(nèi)定時(shí)生成一個(gè)所述推送命令; 根據(jù)所述推送命令獲取待推送數(shù)據(jù)的推送參數(shù),其中,所述推送參數(shù)包括所述待推送數(shù)據(jù)的推送目的存儲(chǔ)器,所述推送參數(shù)由所述待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定,所述待推送數(shù)據(jù)的數(shù)據(jù)類型至少包括非順序結(jié)構(gòu)數(shù)據(jù)類型; 根據(jù)所述推送參數(shù)向內(nèi)存發(fā)送至少一個(gè)訪存請(qǐng)求,所述至少一個(gè)訪存請(qǐng)求用于向所述內(nèi)存請(qǐng)求所述待推送數(shù)據(jù); 接收所述內(nèi)存根據(jù)所述訪存請(qǐng)求發(fā)送的所述待推送數(shù)據(jù)并將所述內(nèi)存根據(jù)所述訪存請(qǐng)求發(fā)送的所述待推送數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū); 將所述待推送數(shù)據(jù)從所述數(shù)據(jù)緩沖區(qū)推送到所述推送目的存儲(chǔ)器。
2.如權(quán)利要求1所述的方法,其特征在于,還包括:在所述根據(jù)推送周期定時(shí)生成推送命令之前,確定所述推送周期。
3.如權(quán)利要求1所述的方法,其特征在于,所述推送參數(shù)還包括所述待推送數(shù)據(jù)的存儲(chǔ)信息、所述待推送數(shù)據(jù)的訪問步長和所述待推送數(shù)據(jù)的推送次數(shù)。
4.如權(quán)利要求3所述的方法,其特征在于,所述 根據(jù)所述推送命令和所述推送參數(shù)向內(nèi)存發(fā)送訪存請(qǐng)求包括: 根據(jù)所述待推送數(shù)據(jù)的存儲(chǔ)信息生成所述待推送數(shù)據(jù)的訪問地址; 根據(jù)所述推送命令、所述待推送數(shù)據(jù)的推送次數(shù)和所述待推送數(shù)據(jù)的訪問地址生成至少一個(gè)所述訪存請(qǐng)求并對(duì)所述至少一個(gè)訪存請(qǐng)求進(jìn)行隊(duì)列排序; 按所述隊(duì)列排序的順序向所述內(nèi)存發(fā)送所述訪存請(qǐng)求。
5.如權(quán)利要求3或4所述的方法,其特征在于,所述推送參數(shù)由所述待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定包括: 如果所述待推送數(shù)據(jù)為數(shù)組,則所述待推送數(shù)據(jù)的存儲(chǔ)信息包括所述數(shù)組的起始地址和所述數(shù)組的元素大??;或 如果所述待推送數(shù)據(jù)為鏈表,則所述待推送數(shù)據(jù)的存儲(chǔ)信息包括所述鏈表的起始地址、所述鏈表的節(jié)點(diǎn)大小、所述鏈表的指針域位置和所述鏈表的結(jié)束標(biāo)記;或 如果所述待推送數(shù)據(jù)為指針數(shù)組,則所述待推送數(shù)據(jù)的存儲(chǔ)信息包括所述指針數(shù)組的起始地址、所述指針數(shù)組的指針域大小和所述指針數(shù)組的元素大小。
6.如權(quán)利要求2所述的方法,其特征在于,所述確定所述推送周期包括: 確定預(yù)先約定的時(shí)間周期為所述推送周期;或 根據(jù)接收的定時(shí)推送命令確定所述推送周期;或 根據(jù)所述待推送數(shù)據(jù)的使用速率確定所述推送周期。
7.如權(quán)利要求1所述的方法,其特征在于,所述將所述待推送數(shù)據(jù)從所述數(shù)據(jù)緩沖區(qū)推送到推送目的存儲(chǔ)器包括: 獲取所述待推送數(shù)據(jù)的推送目的存儲(chǔ)器存放有效數(shù)據(jù)的狀態(tài)信息; 如果所述狀態(tài)信息指示所述推送目的存儲(chǔ)器未存放有效數(shù)據(jù),則將所述待推送數(shù)據(jù)從所述數(shù)據(jù)緩沖區(qū)推送到所述待推送數(shù)據(jù)的推送目的存儲(chǔ)器; 將所述待推送數(shù)據(jù)的推送目的存儲(chǔ)器的狀態(tài)信息設(shè)置為存放有效數(shù)據(jù)狀態(tài)。
8.—種內(nèi)存數(shù)據(jù)推送裝置,其特征在于,包括: 生成單元,用于按照推送周期定時(shí)生成推送命令,其中,一個(gè)所述推送周期內(nèi)定時(shí)生成一個(gè)所述推送命令; 獲取單元,用于根據(jù)所述推送命令獲取待推送數(shù)據(jù)的推送參數(shù),其中,所述推送參數(shù)包括所述待推送數(shù)據(jù)的推送目的存儲(chǔ)器,所述推送目的存儲(chǔ)器為存放CPU預(yù)取數(shù)據(jù)的存儲(chǔ)器,所述推送參數(shù)由所述待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定,所述待推送數(shù)據(jù)的數(shù)據(jù)類型至少包括非順序結(jié)構(gòu)數(shù)據(jù)類型; 所述生成單元還用于根據(jù)所述推送參數(shù)生成至少一個(gè)訪存請(qǐng)求,所述至少一個(gè)訪存請(qǐng)求用于向內(nèi)存請(qǐng)求所述待推送數(shù)據(jù); 發(fā)送單元,用于向所述內(nèi)存發(fā)送所述至少一個(gè)訪存請(qǐng)求; 接收單元,用于接收所述內(nèi)存根據(jù)所述訪存請(qǐng)求發(fā)送的所述待推送數(shù)據(jù)并將所述內(nèi)存根據(jù)所述訪存請(qǐng)求發(fā)送的所述待推送數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū); 所述發(fā)送單元還用于將所述待推送數(shù)據(jù)從所述數(shù)據(jù)緩沖區(qū)推送到所述推送目的存儲(chǔ)器。
9.如權(quán)利要求8所述的裝置,其特征在于,還包括: 確定單元,用于確定所述推送周期。
10. 如權(quán)利要求8所述的裝置,其特征在于,所述推送參數(shù)包括所述待推送數(shù)據(jù)的存儲(chǔ)信息、所述待推送數(shù)據(jù)的訪問步長和所述待推送數(shù)據(jù)的推送次數(shù)。
11.如權(quán)利要求10所述的裝置,其特征在于, 所述生成單元具體用于根據(jù)所述待推送數(shù)據(jù)的存儲(chǔ)信息生成所述待推送數(shù)據(jù)的訪問地址,并根據(jù)所述推送命令、所述待推送數(shù)據(jù)的推送次數(shù)和所述待推送數(shù)據(jù)的訪問地址生成至少一個(gè)所述訪存請(qǐng)求; 所述發(fā)送單元具體用于對(duì)所述至少一個(gè)訪存請(qǐng)求進(jìn)行隊(duì)列排序,并按所述隊(duì)列排序的順序向所述內(nèi)存發(fā)送所述訪存請(qǐng)求。
12.如權(quán)利要求10或11所述的裝置,其特征在于,所述推送參數(shù)由所述待推送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型確定包括: 如果所述待推送數(shù)據(jù)為數(shù)組,則所述待推送數(shù)據(jù)的存儲(chǔ)信息包括所述數(shù)組的起始地址和所述數(shù)組的元素大??;或 如果所述待推送數(shù)據(jù)為鏈表,則所述待推送數(shù)據(jù)的存儲(chǔ)信息包括所述鏈表的起始地址、所述鏈表的節(jié)點(diǎn)大小、所述鏈表的指針域位置和所述鏈表的結(jié)束標(biāo)記;或 如果所述待推送數(shù)據(jù)為指針數(shù)組,則所述待推送數(shù)據(jù)的存儲(chǔ)信息包括所述指針數(shù)組的起始地址、所述指針數(shù)組的指針域大小和所述指針數(shù)組的元素大小。
13.如權(quán)利要求9所述的裝置,其特征在于, 所述確定單元用于確定預(yù)先約定的時(shí)間周期為所述推送周期;或 所述確定單元用于根據(jù)接收的定時(shí)推送命令確定所述推送周期;或 所述確定單元用于根據(jù)所述待推送數(shù)據(jù)的使用速率確定所述推送周期。
14.如權(quán)利要求8所述的裝置,其特征在于, 所述獲取單元具體還用于獲取所述待推送數(shù)據(jù)的推送目的存儲(chǔ)器存放有效數(shù)據(jù)的狀態(tài)息;所述發(fā)送單元具體用于如果所述狀態(tài)信息指示所述推送目的存儲(chǔ)器未存放有效數(shù)據(jù),則將所述待推送數(shù)據(jù)從所述數(shù)據(jù)緩沖區(qū)推送到所述待推送數(shù)據(jù)的推送目的存儲(chǔ)器; 所述發(fā)送單元具體用于向所述CPU發(fā)送狀態(tài)設(shè)置信息,所述狀態(tài)設(shè)置信息指示將所述待推送數(shù)據(jù)的推送目的存儲(chǔ)器的狀`態(tài)信息設(shè)置為存放有效數(shù)據(jù)狀態(tài)。
【文檔編號(hào)】G06F3/06GK103729142SQ201210381338
【公開日】2014年4月16日 申請(qǐng)日期:2012年10月10日 優(yōu)先權(quán)日:2012年10月10日
【發(fā)明者】陳明揚(yáng), 陳明宇, 崔澤漢, 陳荔城 申請(qǐng)人:華為技術(shù)有限公司, 中國科學(xué)院計(jì)算技術(shù)研究所