一种多用户接口的DDR仲裁器及DDR控制器芯片
文献发布时间:2023-06-19 11:22:42
技术领域
本申请涉及存储技术领域,特别涉及一种多用户接口的DDR仲裁器及DDR控制器芯片。
背景技术
为解决多路用户访问DDR(Double Data Rate,双倍速率同步动态随机存储器)的需求,通常在进入DDR控制器之前先进行仲裁,由仲裁器决定多用户的各自访问权限、顺序,从而逐个完成多用户接口对DDR的访问。
当前,多用户接口访问的常用方法是,DDR仲裁器将各用户接口访问DDR的命令写入缓存中,然后结合DDR读写时序特点,有针对性的进行命令处理序列排序,根据排序结果依次完成DDR访问。但是,该方法的设计通用性不高,对不同用户接口需要重复劳动,设计效率较低。
鉴于此,提供一种解决上述技术问题的方案,已经是本领域技术人员所亟需关注的。
发明内容
本申请的目的在于提供一种多用户接口的DDR仲裁器及DDR控制器芯片,以便有效提高DDR的设计通用性和效率。
为解决上述技术问题,一方面,本申请公开了一种多用户接口的DDR仲裁器,包括:
用户接口参数模块:用于通过系统参数定义用户总线接口数量及各用户总线接口的参数;
用户总线接口模块:用于基于所述系统参数例化实现各个用户总线接口;
队列缓存模块:用于缓存各用户总线接口发送的访问命令,并根据仲裁结果依次将各访问命令发送至DDR控制器;
仲裁逻辑模块:用于对所述队列缓存模块中存储的各访问命令的处理顺序进行仲裁,以生成所述仲裁结果。
可选地,各用户总线接口的参数包括用户时钟域与DDR控制器时钟域的关系;
所述用户总线接口模块在例化生成用户时钟域与DDR控制器时钟域异步的用户总线接口时,具体基于异步处理电路实现了从用户时钟域到DDR控制器时钟域的异步处理。
可选地,所述用户接口参数模块将所述系统参数定义在.vh文件中;所述用户总线接口模块通过调用所述.vh文件而例化实现各用户总线接口。
可选地,所述队列缓存模块包括命令缓存队列和数据缓存队列;所述命令缓存队列用于缓存各访问命令,所述数据缓存队列用于存储各访问命令所请求写入或者请求读取的数据。
可选地,所述队列缓存模块还用于:
接收DDR控制器针对读命令的返回数据,并发送给对应的用户总线接口。
可选地,所述仲裁逻辑模块在仲裁时具体用于:
为所述队列缓存模块中的各个访问命令设置优先级和超期时限,以便基于优先级和超期时限对各访问命令进行仲裁。
可选地,所述仲裁策略包括:
针对与系统运行相关联的用户总线接口的访问命令,设置高优先级和低超时期限。
可选地,所述仲裁策略包括:
针对图像、视频类的用户总线接口的访问命令,将其拆解为多个访问命令,并将每个访问长度设置为DDR一行。
可选地,各用户总线接口基于AXI总线实现。
又一方面,本申请还公开了一种DDR控制器芯片,包括DDR控制器以及如上所述的任一种多用户接口的DDR仲裁器。
本申请所提供的多用户接口的DDR仲裁器及DDR控制器芯片所具有的有益效果是:本申请通过系统参数灵活定义每个用户总线接口的参数,具有较高的设计通用性,有助于减少不同用户总线接口间的重复设计。并且,仅需针对相关系统参数的少量修改,即可实现新的芯片设计,极大地提高了设计效率。
附图说明
为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。
图1为本申请实施例公开的一种多用户接口的DDR仲裁器的结构示意图;
图2为本申请实施例公开的一种仲裁逻辑模块针对读命令的仲裁流程图;
图3为本申请实施例公开的一种仲裁逻辑模块针对写命令的仲裁流程图。
具体实施方式
本申请的核心在于提供一种多用户接口的DDR仲裁器及DDR控制器芯片,以便有效提高DDR的设计通用性和效率。
为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,本申请实施例公开了一种多用户接口的DDR仲裁器,主要包括:
用户接口参数模块101:用于通过系统参数定义用户总线接口数量及各用户总线接口的参数;
用户总线接口模块102:用于基于所述系统参数例化实现各个用户总线接口;
队列缓存模块103:用于缓存各用户总线接口发送的访问命令,并根据仲裁结果依次将各访问命令发送至DDR控制器;
仲裁逻辑模块104:用于对所述队列缓存模块103中存储的各访问命令的处理顺序进行仲裁,以生成所述仲裁结果。
具体地,芯片在工作时将产生大量的缓存数据,包括图片、视频、系统缓存等。这些数据一般采用DDR作为存储介质。在这些不同性质、不同目的的数据传输中,每一种数据传输可代表为一个用户。在实际应用中,经常需要要求在同一片芯片中完成多个不同用户对内存的访问。
为解决多路用户访问DDR的需求,通常需要在进入DDR控制器之前先进行仲裁,由仲裁器决定多用户的各自访问权限、顺序,从而逐个完成多用户接口对DDR的访问。
在本申请所提供的多用户接口的DDR仲裁器中,具体包括了四个模块:用户接口参数模块101、用户总线接口模块102、队列缓存模块103、仲裁逻辑模块104。其中,用户接口参数模块101通过系统参数来灵活定义用户总线接口数量、各用户总线接口的参数,以便用户总线接口模块102可以相对应地例化实现各用户总线接口。
其中,各用户总线接口的参数还具体包括了该接口的用户时钟域与DDR控制器时钟域的关系:同步或异步。
用户总线接口模块102在例化生成用户时钟域与DDR控制器时钟域异步的用户总线接口时,具体基于异步处理电路实现了从用户时钟域到DDR控制器时钟域的异步处理。而对于用户时钟域与DDR控制器时钟域同步的用户总线接口,则无需使用异步处理电路。
在一个实施例中,所述用户接口参数模块101可具体将所述系统参数定义在.vh文件中,以便所述用户总线接口模块102通过调用所述.vh文件而例化实现各用户总线接口。
具体地,可通过`include指令将该.vh文件包含在设计中。例如,可将该.vh文件定义为user_intf_defines.vh,并通过以下语句将参数包含在设计中:
`include"user_intf_defines.vh"。
如此,可根据不同设计目标,灵活修改.vh文件中的参数,从而快速完成设计,节约开发时间。
队列缓存模块103具体可采用FIFO(First Input First Output,先进先出)存储各用户总线接口发送的访问命令,包括相应的访问地址、位宽、长度等参数,并将其依次发送至仲裁逻辑模块104。当接收到仲裁逻辑模块104发送的仲裁结果后,便可按顺序将各访问命令逐个发送至DDR控制器进行处理。
其中,若访问命令为写请求,则发送至DDR控制器的内容具体包括有对应的写命令及写数据。若访问命令为读请求,则发送至DDR控制器的内容具体包括有对应的读命令。并且,所述队列缓存模块103还用于:接收DDR控制器针对读命令的返回数据,并发送给对应的用户总线接口。
并且,队列缓存模块103在接收仲裁结果后,可将了解到的读写任务进程反馈至用户,完成与用户的通信。
可见,本申请实施例所公开的多用户接口的DDR仲裁器,通过系统参数灵活定义每个用户总线接口的参数,具有较高的设计通用性,有助于减少不同用户总线接口间的重复设计。并且,仅需针对相关系统参数的少量修改,即可实现新的芯片设计,极大地提高了设计效率。
作为一种具体实施例,如图1所示的多用户接口的DDR仲裁器在上述内容的基础上,所述队列缓存模块103包括命令缓存队列和数据缓存队列;所述命令缓存队列用于缓存各访问命令,所述数据缓存队列用于存储各访问命令所请求写入或者请求读取的数据。
作为一种具体实施例,如图1所示的多用户接口的DDR仲裁器在上述内容的基础上,各用户总线接口基于AXI总线实现。
作为一种具体实施例,本申请实施例所公开的多用户接口的DDR仲裁器在上述内容的基础上,所述仲裁逻辑模块104在仲裁时具体用于:
为所述队列缓存模块103中的各个访问命令设置优先级和超期时限,以便基于优先级和超期时限对各访问命令进行仲裁。
作为一种具体实施例,本申请实施例所公开的多用户接口的DDR仲裁器在上述内容的基础上,所述仲裁策略包括:针对与系统运行相关联的用户总线接口的访问命令,设置高优先级和低超时期限。
在一个具体实施例中,仲裁逻辑模块104在执行仲裁过程中,针对读命令的仲裁流程可具体参见图2,主要包括:
S201:在读操作中接收到新的访问命令请求。
S202:判断该访问命令是否超时;若否,则进入S203,若是,则进入时204。
S203:判断该访问命令与当前执行的访问命令是否为同行访问;若否,则进入S205;若是,则进入S206。
S204:判断该访问命令是否为读命令;若是,则进入S205;若否,则进入写命令仲裁流程。
S205:判断该访问命令是否优先级较高;若是,则进入S206;若否,则进入S207。
S206:为该访问命令赋予DDR访问权限。
S207:为该访问命令赋予轮询等候权力,以便该访问命令通过轮询仲裁以先进先出的顺序获取DDR访问权限。
具体地,在该流程中,主要分为5个层次:
1、读写仲裁,减少读写切换;2、超时仲裁,超时命令若获得最高优先级,直接获得获得DDR访问权限;3、同一行的访问权限仲裁,该访问命令若与当前执行的读操作为同一行的访问操作,则获得DDR访问权限;4、高优先级访问权限仲裁,当其他条件相同时,具有更高优先级访问权限的用户获得DDR访问权限;5、轮询仲裁,进入轮询等待的命令,根据进入的先后顺序最终获得DDR访问权限。
在又一个实施例中,仲裁逻辑模块104在执行仲裁过程中,针对写命令的仲裁流程可具体参见图3,主要包括:
S301:在写操作中接收到新的访问命令请求。
S302:判断该访问命令是否超时;若否,则进入S303,若是,则进入时304。
S303:判断该访问命令与当前执行的访问命令是否为同行访问;若否,则进入S305;若是,则进入S306。
S304:判断该访问命令是否为写命令;若是,则进入S305;若否,则进入读命令仲裁流程。
S305:判断该访问命令是否优先级较高;若是,则进入S306;若否,则进入S307。
S306:为该访问命令赋予DDR访问权限。
S307:为该访问命令赋予轮询等候权力,以便该访问命令通过轮询仲裁以先进先出的顺序获取DDR访问权限。
作为一种具体实施例,本申请实施例所公开的多用户接口的DDR仲裁器在上述内容的基础上,所述仲裁策略包括:针对图像、视频类的用户总线接口的访问命令,将其拆解为多个访问命令,并将每个访问长度设置为DDR一行。
具体地,本实施例所采用的仲裁策略,一方面,可兼顾DDR器件特点,减少激活(Active)到预充电(Precharge)时间,减少读写命令切换,并可利用tCCD_S(不同BankGroup时的列地址间延迟时间)来替代tCCD_L(相同Bank Group时的列地址间延迟时间)。
另一方面,本实施例可根据不同用户的不同性质,设计多重仲裁策略。
例如,图像、视频等用户总线接口,其突发访问数据量大,访问地址连续,因此本实施例可将其拆解为多个访问命令,以避免出现占用带宽时间过长导致其他用户访问延迟过大、功能异常的问题。并且可将每一个访问长度设置为DDR一行,既兼顾其他用户不过长时间占用带宽,又减少了行切换,从而可进一步提高DDR访问效率。
而对于肩负系统运行的用户总线接口,其突发访问数据量小、访问命令多、对访问延迟敏感。因此本实施例可针对这种用户总线接口赋予更高的优先级及更小的超时期限。
由此,本申请通过这样一套合理高效的仲裁策略,能够根据不同用户特点制定出针对性策略,有效提高在多用户情况下的DDR访问效率。
本申请还公开了一种DDR控制器芯片,包括DDR控制器以及如上所述的任一种多用户接口的DDR仲裁器。
关于上述DDR控制器芯片的具体内容,可参考前述关于多用户接口的DDR仲裁器的详细介绍,这里就不再赘述。
本申请中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的设备而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需说明的是,在本申请文件中,诸如“第一”和“第二”之类的关系术语,仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。此外,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请的保护范围内。
- 一种多用户接口的DDR仲裁器及DDR控制器芯片
- 一种基于DDR3存储控制器接口的多个主设备的仲裁电路