一种内存访问仲裁装置和方法

文档序号:6562859阅读:213来源:国知局
专利名称:一种内存访问仲裁装置和方法
技术领域
本发明涉及内存控制技术领域,特别涉及一种内存访问仲裁装置和方法。
背景技术
随着片上系统(System on Chip,SOC)芯片技术的发展,一颗芯片上集成的模块越来越多,这些模块包括中央处理器(CPU)、数字信号处理器(Digital Signal Processor,DSP)、专用硬件电路等,因此需要有大容量内存支持。
当一个硬件模块访问内存的过程中,其它硬件模块也要访问内存,这种情况就称为多个硬件模块对内存同时进行访问。在这种情况下,必须采用一定的方法对这些访问任务进行调度,才能使这些硬件模块都能够正确地访问内存。目前通常采用的方法是在多个硬件模块同时访问内存的情况下,对这些访问任务按照时间顺序进行排队操作,并按照这种队列顺序依次执行这些访问操作。
这种按照队列顺序访问内存的方法虽然保证了多个硬件模块都能够正确地访问内存,但是处理效率不高。例如,有任务A和任务B同时访问内存,其中任务B是具有较高优先级的紧急任务,要求尽快完成,任务A是非紧急任务,优先级较低。但如果任务A先提交,则任务B必须等待任务A对内存的访问执行完毕后才能访问内存。
因此,现有技术方案存在的问题是不能很使具有较高优先级的任务及时取得内存的访问控制权限,可能影响硬件模块的响应速度,进而导致系统效率降低。

发明内容
有鉴于此,本发明的目的在于,提出一种内存访问仲裁装置,可以使具有较高优先级的任务及时访问内存,提高硬件模块的响应速度。该装置包括内存访问仲裁模块,用于接收带有优先级信息的读/写访问请求,根据所述优先级信息判断是否允许所述读/写访问请求访问内存,并将判断结果发送至所述总线接口;内存接口控制模块,用于根据来自所述总线接口的读/写控制信号对内存进行访问操作。
所述内存访问仲裁模块包括2n-1个比较单元,分为n级,第1级的比较单元用于接收两个总线接口模块的读/写访问请求,将具有较高优先级的读/写访问请求发送至第2级比较单元;第i级比较单元用于接收来自两个第i-1级比较单元的读/写访问请求,将具有较高优先级的读/写访问请求发送至第i+1级比较单元,l<i<n;第n级比较单元用于接收来自两个第n-1级比较单元的读/写访问请求,将具有较高优先级的读/写访问请求发送至仲裁结果生成单元;仲裁结果生成单元,用于对所收到的读/写访问请求所对应的硬件接口生成允许访问信号,对于其它发出读/写访问请求的总线接口生成禁止访问信号。
较佳地,该装置进一步包括访问打断控制模块,用于当收到来自内存访问仲裁模块的判断结果为允许访问时,根据所述总线接口的优先级以及当前内存状态,判断是否打断当前对内存的访问操作,并根据判断结果向内存接口控制模块发送打断信号;则所述内存接口控制模块进一步用于根据所述打断信号打断当前对内存的访问操作。
较佳地,该装置进一步包括优先级控制模块,用于存储优先级表,接收来自内存访问仲裁模块的仲裁结果以及来自各个总线接口的读/写访问请求,对所存储的优先级表进行动态调整,并将调整后的优先级表发送至内存访问仲裁模块;则所述内存访问仲裁模块根据所述优先级信息判断是否允许所述读/写访问请求访问内存为根据所述优先级信息查询所述优先级表,根据查询结果判断是否允许所述读/写访问请求访问内存。
所述优先级控制模块进一步包括等待定时器,用于设定仲裁结果为禁止访问的读/写访问请求的等待时长;则所述优先级控制模块用于当收到读/写访问请求的仲裁结果为禁止访问时,启动与所述读/写访问请求对应的等待定时器,当所述等待定时器超时则提高所述读/写访问请求的优先级。
所述等待定时器的时长根据所述读/写访问请求的优先级而定,并且优先级越高则时长越短。
所述内存为同步动态随机内存SDRAM。
本发明的目的还在于,提出一种内存访问仲裁方法,可以使具有较高优先级的任务及时访问内存,提高硬件模块的响应速度。该方法包括如下步骤A、硬件模块通过总线接口提交带有优先级信息的读/写访问请求;B、根据所述优先级信息以及优先级表,判断是否允许所述读/写访问请求访问内存,若是执行步骤C,否则使所述总线接口处于等待状态并转至步骤A;C、根据所述读/写访问请求对内存进行相应的读/写操作。
步骤B所述判断之后进一步包括根据各个硬件模块的读/写访问请求和/或所述判断结果,对所述优先级表进行动态调整。
所述对优先级表进行动态调整包括若所述读/写访问请求与当前对内存的访问操作处于内存地址同一行内,则提高所述读/写访问请求的优先级;或者,若所述读/写访问请求在等待时长内没有得到访问权限,则提高所述读/写访问请求的优先级。
所述C之前,进一步包括根据所述总线接口的优先级信息以及内存状态,判断是否允许所述读/写访问请求打断当前对内存的读/写访问操作,若是则打断当前对内存的读/写访问操作,并执行步骤C;否则直接执行步骤C。
从以上技术方案可以看出,使对内存的访问请求带有优先级信息,根据优先级决定同时提交的各个访问请求的顺序,并且在必要时高优先级的访问请求可以打断当前正在访问内存的低优先级的访问操作,从而使得高优先级的访问请求及时得到响应,可以提高硬件模块的响应速度。并且,本发明方案控制电路简单,灵活性高。


图1为本发明实施例内存访问仲裁装置示意图;图2为本发明实施例内存访问仲裁模块内部逻辑结构示意图;图3为本发明实施例处理流程图。
具体实施例方式
本发明提出按照优先级进行任务排队的内存仲裁方法,实现对内存进行及时地访问操作。以下以内存为同步动态随机内存(Synchronous Dynamicrandom access memory,SDRAM)为例,对本发明方案进行详细说明。
在本发明的方案中,硬件模块所发出的对内存进行访问的内存访问请求对应一定级别的优先级,同时对内存进行访问的不同内存访问请求按照其相应的优先级确定访问的先后顺序;在一定条件下,具有较高优先级的访问请求可以中断当前较低优先级的访问请求而优先获得对内存的访问权。
本发明装置的结构如图1所示,其中,总线接口模块为硬件模块的读/写通道与SDRAM之间的接口,不同的硬件模块具有相应的总线接口模块。总线接口支持访问SDRAM的总线协议,将硬件模块的读/写动作解析成SDRAM所能支持的访问请求以及读/写控制信号。具体地说,首先总线接口模块向内存访问仲裁装置发送读/写请求,若所述内存访问仲裁装置返回允许访问信号,则向所述内存访问仲裁装置发送读/写控制信号,并实现相应的对SDRAM的读/写操作;若所述内存访问仲裁装置返回禁止访问信号,则所述总线接口模块进入等待状态,直到收到允许访问信号。
所述内存访问仲裁装置包括如下模块优先级控制模块101,用于存储优先级表,并根据一定的算法动态调整所存储的优先级表。
具体地说,该模块可以存储一个静态优先级表,所述静态优先级表中给出不同优先级的访问请求的访问次序。该模块还可以根据各个总线接口模块当前时刻和下一时刻的请求以及各个时刻内存访问仲裁模块的仲裁结果,在所述静态优先级表的基础上,根据一定的算法动态调整优先级表,并将所述调整后的优先级表发送至内存访问仲裁模块102。
所述动态调整优先级表可以包括如下方式a、提高访问地址与当前访问处于SDRAM地址同一行内的访问请求的优先级。一般来说如果地址在SDRAM同一行内的访问,可以不需要进行行关闭和预充电过程。因此可以提高对SDRAM的访问带宽。因此在没有迫切需要访问权限的模块的访问到达时,可以提高与当前读/写访问操作的地址相连的通路访问优先级。
b、若访问请求在预设的时间内得不到响应,则提高该访问请求的优先级。具体地说,优先级控制模块101中设置等待定时器,若收到读/写访问请求的仲裁结果为禁止访问,则启动与所述读/写访问请求对应的等待定时器,判断所述等待定时器超时前是否收到对应该读/写访问请求的允许访问的仲裁结果,若是则停止所述等待定时器,否则将所述读/写访问请求的优先级提高一级并重启所述等待定时器。对应于每个优先级,所述等待定时器的时长可以均不相同,并且优先级越高则等待定时器的时长越短。
内存访问仲裁模块102,用于根据来自优先级控制模块101的优先级表,对硬件模块的总线接口的读/写请求进行访问仲裁,判断是否允许该读/写请求进行访问,并将仲裁结果分别发送至优先级控制模块101和发出所述读/写请求的总线接口。所述仲裁结果包括允许访问或禁止访问。如果仲裁结果为允许访问,则还要将该仲裁结果发送至访问打断控制模块103。图1为了简洁,仅画出一个总线接口,实际上,每个硬件模块分别有与之对应的总线接口。
若所述总线接口的读/写访问请求已经被允许访问后,该总线接口在下一时刻又发出一条读/写访问请求,则该读/写访问请求默认为也是允许访问的,因此可以省去对该读/写访问请求的仲裁操作,而总线接口将该读/写访问请求直接发送到优先级控制模块101,由于该读/写访问请求的地址通常与被允许访问的上一条读/写访问请求的地址处于SDRAM的同一行,因此优先级控制模块101可以根据上述方式a对优先级表进行动态调整,同时硬件模块向内存接口控制模块104发送读/写控制信号。
内存访问仲裁模块102必须在多路请求到达时,用尽可能短的时间产生出仲裁结果,否则无法支持高速总线的需求,一般来说用最简单的组合逻辑来实现设计。该模块可采用多级逻辑比较,每2个读/写访问请求中选择优先级较高的一个参加后续的比较,n级逻辑可以比较2n路的读/写访问请求。
图2为用3级逻辑实现8路总线接口的读/写访问请求仲裁的内存访问仲裁模块示意图,图2中没有示出内存访问仲裁模块与内存访问仲裁装置中其它模块的连接关系。如图2所示,内存访问仲裁模块包括7个比较单元分成三个等级,第一级有4个比较单元,分别用于接收两个总线接口的读/写访问请求,比较这两个读/写访问请求的优先级,将具有较高优先级的读/写访问请求输出至第二级的比较单元;第二级包括两个比较单元,分别用于接收来自第一级比较单元的两个读/写访问请求,比较所接收的两个读/写访问请求的优先级,将具有较高优先级的读/写访问请求输出至第三级的比较单元;第三级包括一个比较单元,用于接收来自第二级比较单元的两个读/写访问请求,比较所接收的两个读/写访问请求的优先级,将具有较高优先级的读/写访问请求输出至仲裁结果生成单元;仲裁结果生成单元对于所收到的读/写访问请求所对应的总线接口返回的仲裁结果为允许访问,对于其它总线接口返回的仲裁结果均为禁止访问。图2所示的例子中,每个比较单元输出的箭头上的数字为允许访问的总线接口的序号,第三级比较单元输出的序号为1,则仲裁结果生成单元向总线接口1返回允许访问,向其它总线接口均返回禁止访问。
访问打断控制模块103,用于当收到来自内存访问仲裁模块102的允许访问信号时,根据所述总线接口的状态信号以及当前SDRAM的访问状态,判断是否需要打断当前对SDRAM的访问控制操作,若是则向内存接口控制模块104发送打断信号。
内存接口控制模块104,用于接收来自总线接口的读/写控制信号,并对SDRAM执行相应的读/写操作。若收到来自访问打断控制模块103的打断信号,则在执行所述读/写操作之前,中止当前对SDRAM的其它访问操作。
本发明实施例的流程如图3所示,包括如下步骤步骤301硬件模块通过总线接口向内存访问仲裁模块提交要求进行对SDRAM访问的读/写访问请求,所述读/写访问请求带有优先级信息以及访问地址。
步骤302内存访问仲裁模块根据所收到的读/写访问请求的优先级信息以及优先级表,判断是否允许所述读/写访问请求访问SDRAM,若是则向总线接口、访问打断控制模块以及优先级控制模块返回允许访问信号,并执行后续步骤;否则向总线接口以及优先级控制模块返回禁止访问信号,总线接口收到禁止访问信号则处于等待状态,并转至步骤301。在本实施例中,仲裁结果为允许访问。
步骤303包括并行执行的两个子步骤步骤303a优先级控制模块根据所收到的来自内存访问仲裁模块的仲裁结果以及所述读/写访问请求的相关信息,对自身所存储的优先级表进行动态调整;如果进行了调整,则还要将调整后的优先级表发送至内存访问仲裁模块。所述动态调整包括
判断所述读/写访问请求的访问地址与当前访问SDRAM的读/写请求的地址是否处于SDRAM地址的同一行,若是则增加所述读/写访问请求的优先级;或者,所述总线接口提交读/写访问请求后,在预设的时间内未得到访问允许权,则提高该读/写访问请求的优先级。具体地说,若收到读/写访问请求的仲裁结果为禁止访问,则启动与所述读/写访问请求对应的等待定时器,判断所述等待定时器超时前是否收到对应该读/写访问请求的允许访问的仲裁结果,若是则停止所述等待定时器,否则将所述读/写访问请求的优先级提高一级并重启所述等待定时器。所述等待定时器的时长根据所述读/写访问请求的优先级而定,优先级越高则时长越短。
步骤303b访问打断控制模块收到允许访问信号后,判断SDRAM当前是否存在其它读/写访问操作,若是,则根据所述总线接口的优先级信息以及SDRAM的状态,判断是否允许所述读/写访问请求打断当前读/写访问操作,若是则向内存接口控制模块发送打断信号。
步骤304总线接口收到允许访问的仲裁结果后,向内存接口控制模块发送读/写控制信号;步骤305内存接口控制模块收到中断信号,则打断当前SDRAM的访问操作,并根据所收到的读/写控制信号对SDRAM执行相应的读/写操作。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种内存访问仲裁装置,其特征在于,该装置包括内存访问仲裁模块,用于接收带有优先级信息的读/写访问请求,根据所述优先级信息判断是否允许所述读/写访问请求访问内存,并将判断结果发送至所述总线接口;内存接口控制模块,用于根据来自所述总线接口的读/写控制信号对内存进行访问操作。
2.根据权利要求1所述的装置,其特征在于,所述内存访问仲裁模块包括2n-1个比较单元,分为n级,第1级的比较单元用于接收两个总线接口模块的读/写访问请求,将具有较高优先级的读/写访问请求发送至第2级比较单元;第i级比较单元用于接收来自两个第i-1级比较单元的读/写访问请求,将具有较高优先级的读/写访问请求发送至第i+1级比较单元,1<i<n;第n级比较单元用于接收来自两个第n-1级比较单元的读/写访问请求,将具有较高优先级的读/写访问请求发送至仲裁结果生成单元;仲裁结果生成单元,用于对所收到的读/写访问请求所对应的硬件接口生成允许访问信号,对于其它发出读/写访问请求的总线接口生成禁止访问信号。
3.根据权利要求1所述的装置,其特征在于,该装置进一步包括访问打断控制模块,用于当收到来自内存访问仲裁模块的判断结果为允许访问时,根据所述总线接口的优先级以及当前内存状态,判断是否打断当前对内存的访问操作,并根据判断结果向内存接口控制模块发送打断信号;则所述内存接口控制模块进一步用于根据所述打断信号打断当前对内存的访问操作。
4.根据权利要求1所述的装置,其特征在于,该装置进一步包括优先级控制模块,用于存储优先级表,接收来自内存访问仲裁模块的仲裁结果以及来自各个总线接口的读/写访问请求,对所存储的优先级表进行动态调整,并将调整后的优先级表发送至内存访问仲裁模块;则所述内存访问仲裁模块根据所述优先级信息判断是否允许所述读/写访问请求访问内存为根据所述优先级信息查询所述优先级表,根据查询结果判断是否允许所述读/写访问请求访问内存。
5.根据权利要求4所述的装置,其特征在于,所述优先级控制模块进一步包括等待定时器,用于设定仲裁结果为禁止访问的读/写访问请求的等待时长;则所述优先级控制模块用于当收到读/写访问请求的仲裁结果为禁止访问时,启动与所述读/写访问请求对应的等待定时器,当所述等待定时器超时则提高所述读/写访问请求的优先级。
6.根据权利要求5所述的装置,其特征在于,所述等待定时器的时长根据所述读/写访问请求的优先级而定,并且优先级越高则时长越短。
7.根据权利要求1至6任一项所述的装置,其特征在于,所述内存为同步动态随机内存SDRAM。
8.一种内存访问仲裁方法,其特征在于,包括如下步骤A、硬件模块通过总线接口提交带有优先级信息的读/写访问请求;B、根据所述优先级信息以及优先级表,判断是否允许所述读/写访问请求访问内存,若是执行步骤C,否则使所述总线接口处于等待状态并转至步骤A;C、根据所述读/写访问请求对内存进行相应的读/写操作。
9.根据权利要求8所述的方法,其特征在于,步骤B所述判断之后进一步包括根据各个硬件模块的读/写访问请求和/或所述判断结果,对所述优先级表进行动态调整。
10.根据权利要求9所述的方法,其特征在于,所述对优先级表进行动态调整包括若所述读/写访问请求与当前对内存的访问操作处于内存地址同一行内,则提高所述读/写访问请求的优先级;或者,若所述读/写访问请求在等待时长内没有得到访问权限,则提高所述读/写访问请求的优先级。
11.根据权利要求8、9或10所述方法,其特征在于,所述C之前,进一步包括根据所述总线接口的优先级信息以及内存状态,判断是否允许所述读/写访问请求打断当前对内存的读/写访问操作,若是则打断当前对内存的读/写访问操作,并执行步骤C;否则直接执行步骤C。
全文摘要
本发明公开了一种内存访问仲裁装置,包括内存访问仲裁模块、访问打断控制模块和内存接口控制模块。本发明还公开了一种内存访问仲裁方法,包括如下步骤A、硬件模块通过总线接口提交带有优先级信息的读/写访问请求;B、根据所述优先级信息以及优先级表,判断是否允许所述读/写访问请求访问内存,若是执行步骤C,否则使所述总线接口处于等待状态并转至步骤A;C、根据所述读/写访问请求对内存进行相应的读/写操作。本发明方案可以使具有较高优先级的任务及时访问内存,提高硬件模块的响应速度。
文档编号G06F13/16GK1952916SQ20061014594
公开日2007年4月25日 申请日期2006年11月28日 优先权日2006年11月28日
发明者李晓强 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1