一种扩展同步内存总线功能的方法和装置的制造方法_3

文档序号:9375526阅读:来源:国知局
Access Memory,动态随机存取存储器)、PCM(Phase-Change Memory,相变存储器)、以及MRAM(Magnetic Random Access Memory,磁性随机存储器)等。
[0064]内存总线(Memory Bus) 205是系统内存202以及扩展内存控制器203与处理器系统201相连接的总线,这些类型的总线包括但不限于:DDR(Double Data Rate,双倍数据速率)总线、LPDDR(Low Power DDR,低功耗DDR)总线、或者Wide 1/0总线。
[0065]本发明中的访问内存请求,根据其所包含的地址属性信息分成了访问系统内存202和访问扩展内存204两种,分别有不同的处理流程,访问内存请求的地址属性信息是由编译器(compiler)在将程序源代码翻译成机器代码时确定的,这要求程序在定义变量时对于存储在扩展内存204的变量增加一个声明,编译器识别出这个声明后就会从扩展内存204的地址空间内分配该变量的地址。
[0066]本发明还提出一种实施于本发明装置的扩展同步内存总线功能的方法,包括:
[0067]步骤I,生成内存访问请求,并将所述内存访问请求发送给辅助访存模块;
[0068]步骤2,根据所述内存访问请求中所包含的地址属性信息,判断所述内存访问请求为访问系统内存或是扩展内存,若为访问所述系统内存,则将所述内存访问请求发送给内存控制器,若为访问扩展内存,则生成目标地址为扩展内存控制器的访存请求;
[0069]步骤3,扩展内存控制器接收所述目标地址为扩展内存控制器的访存请求,并将所述访问请求发给扩展内存。
[0070]还包括存储所述处理器执行过程中的运算数据。
[0071]每收到一个访问所述扩展内存的请求,优先检查所述数据缓冲器中是否保存了需要的数据,如果有,则在内存总线上直接返回所述需要的数据,否则返回一个例外标记数据,并访问所述扩展内存,将获取到的数据存入所述数据缓冲器。
[0072]所述步骤2还包括根据所述扩展内存控制器的返回结果判断访问扩展内存是否结束,如果所述返回结果为除例外标记数据之外的数据,则将所述返回结果发给处理器,否则再生成一条新的目标地址为所述扩展内存控制器的访存请求。
[0073]以下为本发明的方法实施例,如下所示:
[0074]图3是辅助访存模块收到处理器发来的访存读请求后的处理过程,如图3所示,所述方法,包括下列步骤:
[0075]步骤301,辅助访存模块从片上总线收到处理器的访存请求,请求ID是i,访问地址是a ;
[0076]步骤302,判断a是否属于扩展内存空间,如果是,则执行步骤303,否则执行步骤310 ;
[0077]步骤303,辅助访存模块生成一个新的访存请求,请求ID是i+Ι,访问地址是a,发往内存控制器;
[0078]步骤304,收到内存控制器发来的请求ID为i+Ι的返回数据;
[0079]步骤305,判断返回数据是否等于例外标记数据I (如0x5a5a5a5a5a5a5a),如果是,则执行步骤306,否则执行步骤309 ;
[0080]步骤306,等待一个预先设定好的时间(视扩展内存的存储介质而定),辅助访存模块生成一个新的访存请求,请求ID是i+2,访问地址是a,发往内存控制器;
[0081]步骤307,收到内存控制器发来的请求ID为i+2的返回数据;
[0082]步骤308,判断返回数据是否等于例外标记数据2 (如OxffffOOOOffffOOOO),如果是,则执行步骤303,否则执行步骤309 ;
[0083]步骤309,辅助访存模块将返回数据作为请求i的返回数据,发往处理器,请求结束处理;
[0084]步骤310,辅助访存模块将请求ID是i,访问地址是a的请求发往内存控制器;
[0085]步骤311,收到内存控制器发来的请求ID为i的返回数据,作为请求i的返回数据发往处理器,请求结束处理。
[0086]对于某些场景,比如扩展内存是低延迟的DRAM芯片,新的请求可以再之前的请求返回之前就发出,以减少整体处理延迟,图4是辅助访存模块收到处理器发来的访存读请求后的快速处理过程,如图4所示,所述方法,包括下列步骤:
[0087]步骤401,辅助访存模块从片上总线收到处理器访问扩展内存空间中低延迟存储介质的请求,请求ID是i,访问地址是a ;
[0088]步骤402,辅助访存模块生成一个新的访存请求,请求ID是i+Ι,访问地址是a,发往内存控制器;
[0089]步骤403,辅助访存模块等待一个预先设定好的时间,生成一个新的访存请求,请求ID是i+2,访问地址是a,发往内存控制器;
[0090]步骤404,收到内存控制器发来的请求ID为i+Ι的返回数据;
[0091]步骤405,判断返回数据是否等于例外标记数据1,如果是,则执行步骤406,否则执行步骤408 ;
[0092]步骤406,收到内存控制器发来的请求ID为i+2的返回数据;
[0093]步骤407,判断返回数据是否等于例外标记数据1,如果是,则执行步骤402,否则执行步骤408 ;
[0094]步骤408,辅助访存模块将返回数据作为请求i的返回数据,发往处理器,请求结束处理。
[0095]图5是扩展内存控制器收到内存控制器发来的访存请求后的处理过程,如图5所示,所述方法,包括下列步骤:
[0096]步骤501,扩展内存控制器从内存总线收到内存控制器的访存请求,访问地址是a ;
[0097]步骤502,执行模块判断地址a的数据是否在数据缓冲区中,如果是,则执行步骤511,否则执行步骤503 ;
[0098]步骤503,执行模块判断是否第一次收到地址a的访存请求,如果是,则执行步骤504,否则执行步骤505 ;
[0099]步骤504,执行模块向扩展内存发出访问地址a的请求;
[0100]步骤505,执行模块将例外标记数据I作为返回数据发给内存控制器;
[0101]步骤506,扩展内存控制器从内存总线收到内存控制器的访存请求,访问地址是a ;
[0102]步骤507,执行模块判断地址a的数据是否在数据缓冲区中,如果是,则执行步骤511,否则执行步骤508 ;
[0103]步骤508,执行模块将例外标记数据2作为返回数据发给内存控制器;
[0104]步骤509,扩展内存控制器从内存总线收到内存控制器的访存请求,访问地址是a ;
[0105]步骤510,执行模块判断地址a的数据是否在数据缓冲区中,如果是,则执行步骤511,否则执行步骤505 ;
[0106]步骤511,执行模块将数据缓冲区中缓存的地址a的数据作为返回数据发给内存控制器,请求结束处理。
[0107]图6是辅助访存模块发出预取访存请求的处理过程,如图6所示,所述方法,包括下列步骤:
[0108]步骤601,辅助访存模块从处理器收到了连续N (N可以自行设定,通常大于等于2)个地址顺序递增的访问扩展内存空间的请求;
[0109]步骤602,辅助访存模块产生一个预取请求,地址a,长度是I,其中a等于第N个请求的地址加上64字节,I可以一个page的长度,也可以是数据缓冲区中一行的长度;
[0110]步骤603,辅助访存模块产生一个写请求,请求地址是扩展内存控制器的预取寄存器地址,要写的数据是将a和I拼接在一起的值;
[0111]步骤604,辅助访存模块将新构造的请求发往内存控制器,操作结束。
[0112]图7是扩展内存控制器收到预取访存请求后的处理过程,如图7所示,所述方法,包括下列步骤:
[0113]步骤701,扩展内存控制器收到一个写请求,请求地址是扩展内存控制器的预取寄存器地址。
[0114]步骤702,执行模块从请求的写数据中提取出要预取的地址a和长度I ;
[0115]步骤703,执行模块不断访问要预取数据所位于的扩展内存,将长度为I的数据存入数据缓冲器;
[0116]步骤704,操作结束。
[0117]图8是辅助访存模块在收到读请求或写请求两种场景下对于令牌计数器各自的处理过程,如图8所示,所述方法,包括下列步骤:
[0118]步骤801,辅助访存模块从处理器收到了访问扩展内存空间的请求;
[0119]步骤802,判断请求是否为写请求,如果是,则执行步骤803,否则执行步骤806 ;
[0120]步骤803,判断令牌计数器的值i是否为0,如果是,则执行步骤804,否则执行步骤805 ;
[0121]步骤804,辅助访存模块读取扩展内存控制器的令牌释放计数器,得到j,令i =i+j,更新令牌计数器的值为i,执行步骤803 ;
[0122]步骤805,辅助访存模块将令牌计数器减1,并把写请求发到内存控制器,执行步骤 809 ;
[0123]步骤806,把读请求发到内存控制器,收到内存控制器发来的请求返回数据;
[0124]步骤807,判断返回数据是否是例外标记数据,如果是,则执行步骤808,否则执行步骤809 ;
[0125]步骤808,从例外标记数据中获取令牌释放计
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1