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

文档序号:9375526阅读:来源:国知局
系统。
【附图说明】
[0029]图1现有扩展内存装置不意图;
[0030]图2本发明中扩展同步内存总线功能的装置的结构示意图;
[0031]图3辅助访存模块处理读请求的流程图;
[0032]图4辅助访存模块处理慢速介质上读请求的流程图;
[0033]图5扩展内存控制器处理读请求的流程图;
[0034]图6辅助访存模块生成预取请求的流程图;
[0035]图7扩展内存控制器处理预取请求的流程图;
[0036]图8辅助访存模块使用令牌计数器的流程图;
[0037]图9扩展内存控制器使用令牌释放计数器的流程图;
[0038]图10辅助访存模块处理fence指令的流程图;
[0039]图11辅助访存模块实施例的结构示意图。
【具体实施方式】
[0040]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种扩展同步内存总线功能的方法和装置进行进一步详细说明,应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0041]—般的,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构、以及其他类型的结构。此外,本领域的技术人员可以明白,各实施例可以用其他计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机以及类似计算设备,各实施例还能在任务由通过通信网络连接的远程处理设备来执行的分布式计算环境中实现,在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。
[0042]各实施例可被实现为计算机实现的过程、计算系统、或者诸如计算机程序产品或计算机系统执行示例过程的请求的计算机程序的计算机存储介质。例如:计算机可读存储介质可经由易失性计算机存储器、非易失性存储器、硬盘驱动器、闪存驱动器、软盘或紧致盘(Compact Disc)和类似介质中的一个或多个来实现。
[0043]贯穿本说明书,术语“处理器(Processor)”是计算机系统的中央处理单元,用来接收目标程序执行过程中所生成的内存访问请求,根据待访问数据的地址生成内存访问请求,并将内存访问请求发送给内存控制器。
[0044]贯穿本说明书,术语“辅助访存模块”指的是通过片上总线接口和处理器以及内存控制器相连接,监测处理器访问扩展内存的访问请求,将其转化为访问扩展内存控制器的一系列访存请求。
[0045]贯穿本说明书,术语“内存控制器(Memory Controller) ”是计算机系统内部控制内存的计算机组件,通过内存控制器使得内存与处理器之间能够进行数据的交换。其中,本说明书中的“内存控制器”是用来实现对系统内存(System Memory)的访问进行控制。
[0046]贯穿本说明书,术语“片上总线(On-Chip Bus) ”是处理器系统内部连接各个模块的数据总线。
[0047]贯穿本说明书,术语“扩展内存控制器”指的是通过内存接口和内存控制器相连接,作为处理器对扩展内存进行访问的桥梁。
[0048]贯穿本说明书,术语“扩展内存”指的是通过内存扩展芯片所连接的存储器,用来实现内存的扩展。扩展内存可以采用如下的形式但不限于如下的形式实现,譬如:DRAM (Dynamic Random Access Memory,动态随机存取存储器)、PCM (Phase-Change Memory,相变存储器)、以及MRAM(Magnetic Random Access Memory,磁性随机存储器)等。
[0049]贯穿本说明书,术语“内存访问请求”,又简称为“访存请求”,指的是源代码(Source Code)通过编译(Compile)得到目标代码(Object Code)中所包含 Load/Store等访存请求时,处理器就需要这些访存请求。在执行的过程中,处理器需要通过虚拟地址(Virtual Address)到物理地址(Physical Address)转换过程,将访存请求中的虚拟地址转换为物理地址,并生成内存访问请求,发送给内存控制器(Memory Controller)执行。
[0050]贯穿本说明书,术语“内存访问请求”,又简称为“访存请求”,指的是由处理器对访存请求执行后所生成的对内存中的数据进行访问的请求。访存请求包括:读请求和写请求。
[0051]贯穿本说明书,术语“数据缓冲器”指的是用来存储从扩展内存中读取的待访问数据的存储器件,可以集成在扩展内存控制器内部,也可以和扩展内存控制器独立实现。
[0052]为了克服访问扩展内存时的长延迟与标准SDRAM请求的低延迟时序这二者之间的矛盾,本发明利用多个访存请求来完成一个扩展内存的读请求,如果扩展内存控制器没有准备好数据,就返回一个例外标记数据表示这次SDRAM读请求没有取得真实数据,需要处理器系统再发出一个读请求给扩展内存控制器,而考虑到软件编写的简便和兼容,本发明在处理器系统中增加了一个辅助访存模块,只需软件代码发出一个访问请求即可,当辅助访存模块看到了这个扩展内存读请求后,由该模块生成并管理访问扩展内存的其余请求,同时为了减少每次访问扩展内存所需要的请求数量,还给辅助访存模块增加了预取功會K。
[0053]对于访问扩展内存的写请求,由于SDRAM写请求不需要响应,所以没有请求返回延迟的问题,但由于扩展内存的写带宽和写延迟一般情况都无法匹配内存总线的写带宽和延迟要求,需要把写请求的数据暂存到扩展内存控制器的数据缓冲器中,这就要求在处理器和扩展内存之间实现一个流控机制以保证数据缓冲器在被占满后不会再接收到新的写请求,本发明在辅助访存模块中设置了一个令牌计数器,初始值设为扩展内存控制器可缓存的最大写请求数目,比如16,每当辅助访存模块发出一个写请求后令牌计数器就减1,当令牌计数器降为O后辅助访存模块就不再接收处理器访问扩展内存的写请求,在扩展内存控制器中设置一个令牌释放计数器,扩展内存控制器将一个缓存的写请求数据真正写到扩展内存中后,令牌释放计数器就加I,辅助访存模块定时访问令牌释放计数器后恢复令牌计数器的值。
[0054]以下为本发明实施例对应的系统硬件架构,如下所示:
[0055]在介绍本发明具体实施例之前,先对本发明实施例对应的系统硬件组成结构进行介绍,参看图2,包括如下组件:
[0056]处理器系统(Processing System) 201:包括处理器2011,辅助访存模块2012,内存控制器2013以及片上总线2014。作为请求的执行组件,在本发明所提供的实施例中,处理器系统201用来接收可执行程序在执行过程中生成的内存访问请求,并根据内存访问请求生成内存访问请求。
[0057]其中,处理器2011用于对内存访问(Memory Access)请求进行处理,生成内存访问请求,并将内存访问请求发送给辅助访存模块2012。
[0058]辅助访存模块2012根据内存访问请求中所包含的地址属性信息,判断是访问系统内存202或是扩展内存204,当确定是访问系统内存202时,将内存访问请求发送给内存控制器2013 ;当确定是访问扩展内存204时,生成一条目标地址为扩展内存控制器203的访存请求,根据扩展内存控制器2013返回的结果判断访问扩展内存是否结束,如果返回结果不是一个例外标记数据,说明请求结束,将返回结果发给处理器2011,否则再生成一条新的目标地址为扩展内存控制器2013的访存请求。
[0059]内存控制器2013根据内存访问请求中所包含的位置属性信息,判断是访问系统内存202或是扩展内存204,当确定是访问系统内存202时,将内存访问请求发送给系统内存202 ;当确定是访问扩展内存204时,将内存访问请求发送给扩展内存控制器203。
[0060]片上总线2014支持请求乱序返回,请求发起者的每一个读请求都附带一个请求标记,当请求接收方返回数据的时候同时也要返回该数据所属请求的请求标记,以便于请求发起者判断收到了哪个请求的返回数据。
[0061]系统内存(Memory) 202:指的是通过内存总线205直接和处理器系统201相连的存储器,用来暂时存储处理器系统201在执行过程中的运算数据。
[0062]扩展内存控制器(Extended Memory Controller) 203:用于接收所述目标地址为扩展内存控制器的访存请求,并将所述访问请求发给扩展内存,所述扩展内存控制器为连接扩展内存204,作为处理器系统201对扩展内存204进行内存访问处理的桥梁。在扩展内存控制器203中,至少包括如下模块:执行模块2031,用来执行对扩展内存中待访问数据的读取操作,以及数据缓冲器2032,用来暂存执行模块2031从扩展内存204中读取的待访问数据。执行模块2031每收到一个访问扩展内存204的请求,优先检查数据缓冲器2032中是否保存了需要的数据,如果有,则在内存总线205上直接返回该数据,否则返回一个例外标记数据,并访问扩展内存204,将取到的数据存入数据缓冲器2032。
[0063]扩展内存(Extended Memory) 204:指的是区别于系统内存202,作为扩展的存储器使用,用于存储处理器201执行过程中的运算数据。扩展内存204可以采用不同的存储介质实现,譬如:DRAM(Dynamic Random
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1