一種激活內存的方法及裝置的制造方法
【技術領域】
[0001]本發明涉及計算機領域,特別涉及一種激活內存的方法及裝置。
【背景技術】
[0002]目前,數據中心的功耗的25-40%被內存所消耗,內存具有行列結構,任意一行和任意一列交叉形成的單元格為一個存儲單元,因此,任意一個存儲單元均對應一個行號和一個列號,訪問一行中的某個存儲單元時,首先要激活整個行,要訪問編號為“00” (即處于O行O列)的存儲單元時,首先要激活處于O行中的9個存儲單元,而激活的功耗占內存功耗的85%以上,因此,目前的數據中心的功耗較大。
[0003]為了降低數據中心的功耗,提出了一種細粒度行訪問內存的方法,該方案的主要思路為:每次激活時只需要激活待訪問的存儲單元即可,不需要將處于同一行的所有存儲單元激活,內存接收到一個行激活指令時,并不立即激活此行,而是等接收到列激活指令時,根據行激活指令中的行地址和列激活指令中的列地址確定出待激活的存儲單元,然后,再激活該存儲單元,因此,降低了數據中心的功耗。
[0004]但是,上述方案中,不能同時對多個存儲單元進行激活,而是每激活一個存儲單元后,要對該存儲單元進行預充電后,然后,才能對下一個存儲單元進行激活操作,因此,目前激活內存的方法存在效率較低的缺陷。
【發明內容】
[0005]本發明實施例提供一種激活內存的方法及裝置,用以解決現有技術中存在的激活內存的方法效率較低的缺陷。
[0006]本發明實施例提供的具體技術方案如下:
[0007]第一方面,提供一種激活內存的方法,包括:
[0008]獲取第一內存訪問請求,所述第一內存訪問請求用于請求訪問內存的第一子行;
[0009]從內存待調度隊列中查找第二內存訪問請求,所述內存待調度隊列包括多個內存訪問請求,所述第二內存訪問請求用于請求訪問所述內存的第二子行,所述第一子行與所述第二子行處于所述內存的同一行;
[0010]合并所述第一內存訪問請求和所述第二內存訪問請求,生成第一激活指令,所述第一激活指令用于指示激活所述內存中的所述第一子行和所述第二子行;
[0011 ] 將所述第一激活指令發送至所述內存。
[0012]結合第一方面,在第一種可能的實現方式中,從內存待調度隊列中查找第二內存訪問請求之后,還包括:
[0013]生成子行選擇向量,并將所述子行選擇向量發送至所述內存;
[0014]所述子行選擇向量用于標識待激活的子行是所述第一子行和所述第二子行。
[0015]第二方面,提供一種激活內存的方法,包括:
[0016]接收內存控制器發送的第一激活指令,所述第一激活指令用于指示激活內存中的第一子行和內存中的第二子行,所述第一子行與所述第二子行均處于所述內存中的同一行中;
[0017]根據所述第一激活指令激活處于所述內存中的所述第一子行和所述第二子行。
[0018]結合第二方面,在第一種可能的實現方式中,根據所述第一激活指令激活處于所述內存中的所述第一子行和所述第二子行之前,還包括:
[0019]接收所述內存控制器發送的子行選擇向量,所述子行選擇向量用于標識待激活的子行是所述第一子行和所述第二子行;
[0020]根據所述第一激活指令激活處于所述內存中的所述第一子行和所述第二子行,具體包括:
[0021]根據所述第一激活指令中、所述子行選擇向量激活處于所述內存的所述第一子行和所述第二子行。
[0022]第三方面,提供一種內存控制器,包括:
[0023]請求分發模塊,用于獲取第一內存訪問請求,所述第一內存訪問請求用于請求訪問內存的第一子行;
[0024]內存調度器,用于從內存待調度隊列中查找第二內存訪問請求,所述內存待調度隊列包括多個內存訪問請求,所述第二內存訪問請求用于請求訪問所述內存的第二子行,所述第一子行與所述第二子行處于所述內存的同一行;
[0025]內存調度器還用于,合并所述第一內存訪問請求和所述第二內存訪問請求,生成第一激活指令,所述第一激活指令用于指示激活所述內存中的所述第一子行和所述第二子行;
[0026]所述命令調度器,用于所述第一激活指令發送至所述內存。
[0027]結合第三方面,在第一種可能的實現方式中,從內存待調度隊列中查找第二內存訪問請求之后,還包括:
[0028]生成子行選擇向量,并將所述子行選擇向量發送至所述內存;
[0029]所述子行選擇向量用于標識待激活的子行是所述第一子行和所述第二子行。
[0030]第四方面,提供一種內存模塊,包括:
[0031]鎖存器,用于接收內存控制器發送的第一激活指令,所述第一激活指令用于指示激活內存中的第一子行和內存中的第二子行,所述第一子行與所述第二子行均處于所述內存中的同一行中;
[0032]子行選擇解碼器,用于根據從所述鎖存器獲取的所述第一激活指令激活處于所述內存中的所述第一子行和所述第二子行。
[0033]結合第四方面,在第一種可能的實現方式中,所述鎖存器還用于:
[0034]接收所述內存控制器發送的子行選擇向量,所述子行選擇向量用于標識待激活的子行是所述第一子行和所述第二子行;
[0035]所述子行選擇解碼器具體用于:
[0036]根據所述第一激活指令中、所述子行選擇向量激活處于所述內存的所述第一子行和所述第二子行。
[0037]第五方面,提供一種內存控制器,包括:
[0038]請求分發模塊,用于獲取第一內存訪問請求,所述第一內存訪問請求用于請求訪問內存的第一子行;
[0039]內存調度器,用于獲取所述請求分發模塊獲取到的第一內存訪問請求,并根據所述第一內存訪問請求生成第一激活指令;
[0040]命令調度器,用于將從所述內存調度器獲取的所述第一激活指令發送至所述內存;
[0041]所述請求分發模塊還用于,從所述內存待調度隊列中查找第二內存訪問請求,所述內存待調度隊列包括多個內存訪問請求,所述第二內存訪問請求用于請求訪問所述內存的第二子行,所述第一子行位于第一子陣列,所述第二子行處于第二子陣列;
[0042]所述內存調度器還用于,根據所述第二內存訪問請求生成第二激活指令;
[0043]所述命令調度器還用于,將從所述內存調度器獲取的所述第二激活指令發送至所述內存;
[0044]其中,所述第一子陣列和所述第二子陣列均包括至少一行,所述至少一行中的任意一行包括至少一個子行,所述至少一個子行中的任意一子行包括至少一個存儲單元,任意一存儲單元與一個行號標識和一個列號標識相對應;
[0045]其中,所述第二子行包括的任意一存儲單元所對應的列號標識與所述第一子行包括的任意一存儲單元所對應的列號標識均不相同。
[0046]結合第五方面,在第一種可能的實現方式中,所述請求分發模塊還用于:
[0047]獲取第三內存訪問請求,所述第三內存訪問請求用于請求訪問內存的第三子行,所述第三子行與所述第一子行處于同一行,所述第二子行包括的任意一存儲單元所對應的列號標識與所述第三子行包括的任意一存儲單元所對應的列號標識均不相同;
[0048]所述內存調度器具體用于:
[0049]合并所述第一內存訪問請求和所述第三內存訪問請求,生成第一激活指令。
[0050]結合第五方面,以及第五方面的第一種可能的實現方式,在第二種可能的實現方式中,所述請求分發模塊還用于:
[0051]獲取第四內存訪問請求,所述第四內存訪問請求用于請求訪問內存的第四子行,所述第四子行與所述第二子行處于同一行,所述第四子行包括的任意一存儲單元所對應的列號標識與所述第一子行包括的任意一存儲單元所對應的列號標識均不相同;
[0052]所述內存調度器具體用于:
[0053]合并所述第二內存訪問請求和所述第四內存訪問請求,生成第二激活指令。
[0054]結合第五方面的第二種可能的實現方式,在第三種可能的實現方式中,所述第四子行包括的任意一存儲單元所對應的列號標識與所述第三子行包括的任意一存儲單元所對應的列號標識均不相同。
[0055]第六方面,提供一種內存模塊,包括:
[0056]第一鎖存器,用于接收內存控制器發送的第一激活指令,所述第一激活指令用于指示激活內存中的第一子行;
[0057]第一子行選擇解碼器,用于根據所述第一激活指令激活處于所述內存中的所述第一子行;
[0058]第二鎖存器,用于接收所述內存控制器發送的第二激活指令,所述第二激活指令用于指示激活所述內存中的第二子行;
[0059]第二子行選擇解碼器,用于根據所述第二激活指令激活處于所述內存中的所述第二子行;
[0060]所述第一子行位于第一子陣列,所述第二子行處于第二子陣列;
[0061]所述第一子陣列和所述第二子陣列均包括至少一行,所述至少一行中的任意一行包括至少一個子行,所述至少一個子行中的任意一子行包括至少一個存儲單元,任意一存儲單元與一個行號標識和一個列號標識相對應;
[0062]所述第二子行包括的任意一存儲單元所對應的列號標識與所述第一子行包括的任意一存儲單元所對應的列號標識均不相同;
[0063]所述第一鎖存器和所述第二鎖存器均與用于進行數據緩存的全局緩沖器相連。
[0064]結合第六方面,在第一種可能的實現方式中,所述第一激活指令還用于指示激活內存中的第三子行,所述第三子行與所述第一子行處于同一行中;
[0065]所述第二子行包括的任意一存儲單元所對應的列號標識與所述第三子行包括的任意一存儲單元所對應的列號標識均不相同。
[0066]結合第六方面,以及第六方面的第一種可能的實現方式,在第二種可能的實現方式中,所述第二激活指令還用于指示激活內存中的第四子行,所述第四子行與所述第二子行處于同一行中;
[0067]所述第四子行包括的任意一存儲單元所對應的列號標識與所述第一子行包括的任意一存儲單元所對應的列號標識均不相同;
[0068]所述第四子行包括的任意一存儲單元所對應的列號標識與所述第三子行包括的任意一存儲單元所對應的列號標識均不相同。
[0069]第七方面,提供一種激活內存的方法,包括:
[0070]獲取第一內存訪問請求,所述第一內存訪問請求用于請求訪問內存的第一子行;[0071 ] 根據所述第一內存訪問請求生成第一激活指令,并將所述第一激活指令發送至所述內存;
[0072]從內存待調度隊列中查找第二內存訪問請求,所述內存待調度隊列包括多個內存訪問請求,所述第二內存訪問請求用于請求訪問所述內存的第二子行,所述第一子行位于第一子陣列,所述第二子行處于第二子陣列;
[0073]根據所述第二內存訪問請求生成第二激活指令,并將所述第二激活指令發送至所述內存;
[0074]所述第一子陣列和所述第二子陣列均包括至少一行,所述至少一行中的任意一行包括至少一個子行,所述至少一個子行中的任意一子行包括至少一個存儲單元,任意一存儲單元與一個行號標識和一個列號標識相對應;
[0075]所述第二子行包括的任意一存儲單元所對應的列號標識與所述第一子行包括的任意一存儲單元所對應的列號標識均不相同。
[0076]結合第七方面,在第一種可能的實現方式中,根據所述第一內存訪問請求生成第一激活指令之前,還包括:
[0077]獲取第三內存訪問請求,所述