发明内容
本发明公开一种高功能环形缓冲缓存系统及其控制方法,适用于USB3.0技术,并提高分散及收集式直接内存访问DMA引擎的功能。
为实现上述目的,本发明提供一种高功能环形缓冲缓存系统,其特点是,该系统包含传递管理模块,以及分别与该传递管理模块双向电路连接的内容关联管理模块和内容存储器;
上述的传递管理模块还双向电路连接外接的DMA引擎模块和主机控制接口。
上述的传递管理模块包含:
内部内容关联控制器;该内部内容关联控制器与上述的内容关联管理模块和内容存储器双向电路连接;以及,
分别与上述的内部内容关联控制器双向电路连接的传递引擎模块和完成引擎模块。
一种高功能环形缓冲缓存系统的传递控制方法,其特点是,该方法包含以下步骤:
步骤1 DMA引擎模块向完成引擎模块发送重试=1的信号;
步骤2 完成引擎模块执行读修改写指令;
步骤2.1 完成引擎模块接收到DMA引擎模块发送的一个完成事件;
步骤2.2 完成引擎模块向内部内容关联控制器发送读修改写指令;
步骤2.3 内部内容关联控制器判断该读修改写指令是否与传递引擎模块冲突,若是则不执行该指令,若否,则开始执行该指令,并跳转到步骤2.4;
步骤2.4 内部内容关联控制器读重试状态标识为端点任务设置为0;
步骤2.5 内部内容关联控制器更新重试状态,写为1;
步骤3 传递引擎模块通过执行读修改写指令来独立访问内容存储器;
步骤3.1 传递引擎模块发送读修改写指令至内部内容关联控制器;
步骤3.2 内部内容关联控制器判断该读修改写指令是否与完成引擎模块冲突,若是,若是则不执行该指令,若否,则开始执行该指令,并跳转到步骤3.3;
步骤3.3 内部内容关联控制器读重试状态标识为端点任务设置为1;
步骤3.4 内部内容关联控制器更新重试状态,写为0;
步骤4 传递引擎模块执行重试处理。
本发明一种高功能环形缓冲缓存系统及其控制方法和现有技术中采用流量控制的控制技术相比,其优点在于,本发明设有内容关联管理模块以及电路连接的内部内容关联控制器,实现TRB的比特信息被紧凑的缓存在局部缓冲区,这个局部缓冲区包含了有关TRB的必要信息,以便DMA引擎将不再需要去主内存去获得每个即将移动的数据包的TRB,当TRB被获取,其信息就被存储在引擎中使得DMA数据开始被初始化直到TRB完全被直接内存访问,由于芯片可直接进行内存访问,只需要更短的周期来获取DMA需要的信息以支持PCIe和USB3的速率,提高满足了对USB3.0带宽的要求,又不会大量增加门电路,体积小而紧凑,不仅降低功耗减少芯片面积更有利于芯片后端电路布线。
具体实施方式
以下结合附图说明本发明的具体实施方式。
本发明公开了一种环形缓冲缓存系统及其控制方法主要应用于USB3.0的主端控制器。该USB3.0主控器可以是独立的芯片配置在计算机或数字电视机的主机板上提供USB3.0的主机端口或集成在各种需要USB3.0主端口的系统芯片,外面可接各种不同的USB3.0应用,如U盘、外接硬盘等,当USB3.0的端口不足时,可通过外接集线器来拓展多个USB3.0端口。该缓存机制主要是用于提高分散及收集式直接内存访问DMA(Direct Memory Access,直接内存存取)引擎的功能。TRB(Transmit Ring Buffer)特指发送端环形缓冲,它描述了在获取或在主记忆器内存放的USB交易的数据块,主记忆器指USB3.0的主控制器芯片内带的记忆器,用于缓存数据块。该TRB的缓存能力可以让DMA引擎永远不会耗尽数据流,换句话说,TRB可以填满DMA管道,实现对PCI Express或USB3.0连接的最大效能。
上述的缓存机制是建立在每个端点内的缓存,这样每个USB3.0的主控制器可以处理高达256x32 多个外设端点(EP)。但是如果把每一个16字节的TRB 都缓存起来,由于其门电路急剧扩张,集成电路的实现将是非常昂贵且不现实的。本发明环形缓冲缓存系统及其控制方法使得我们仅需存储必要的TRB内容关联信息而不是整个TRB来维持DMA的数据移动。
如图1所示,本发明说明一种环形缓冲缓存系统,该系统包含传递管理模块1、内容关联管理模块2、内容存储器3。该传递管理模块1分别与内容关联管理模块2和内容存储器3双向电路连接。传递管理模块1还与外接的DMA引擎模块4和主机控制接口5双向电路连接,该主机控制接口5指计算机主机桥芯片, 或中央处理器,或所有需带USB3.0主端口的接口。
传递管理模块1包含内部内容关联控制器13,以及分别与该内部内容关联控制器13电路连接的传递引擎模块11和完成引擎模块12。内部内容关联控制器13分别与内容关联管理模块2和内容存储器3双向电路连接。传递引擎模块11用于解析传递环,并向DMA引擎模块4产生请求。完成引擎模块12用于处理所有接收到的完成交易。内部内容关联控制器13用于仲裁传递引擎模块11和完成引擎模块12对内容存储器3的访问。
传递引擎模块11用于来决定传递的数据量。传递引擎模块11全面执行或部分执行了交易之后,传递引擎模块11便会更新存储在内部控制内存行中的一个或多个状态领域,其反映了交易的状态。 当一个响应从下游的集线器接收到后,完成引擎模块12用于刷新存储在一个或多个状态领域的数据来反映交易的状态。
内容关联管理模块2与上述的DMA引擎模块4电路连接。该内容关联管理模块2中设有局部缓冲区,TRB缓存在局部缓冲区中,该局部缓冲区内存储了有关TRB的必要信息,以便DMA引擎模块4将不再需要去计算机的主内存去获得每个即将移动的数据包的TRB。该内容关联管理模块2便是主机DMA引擎性能增强的关键,一旦TRB被获取,其信息就被存储在DMA引擎模块4中使得DMA数据开始被初始化直到TRB完全被计算机的主内存访问。由于芯片可直接进行内存访问,因此只需要更短的周期来获取TRB被获取,其信息就被存储在DMA引擎模块4需要的信息以支持PCIe和USB3的速率。
以下结合图2说明本发明环形缓冲缓存系统的传递管理控制方法。
图2中说明了传递引擎模块11和完成引擎模块12协调变更内容存储器3中的重试标识。传递引擎模块11和完成引擎模块12是独立运行的,传递引擎模块11处理调度器请求的端点(endpoint,USB标准里的术语)任务,而完成引擎模块12处理按顺序接到的完成(Completion是USB的术语,指数据传送完成后的一个指令叫完成)。传递引擎模块11和完成引擎模块12利用内容数据来相互间传递状态信息。为了协调端点内容数据的修正,传递引擎模块11和完成引擎模块12施行控制内存的读修改写指令。
一种环形缓冲缓存系统的传递控制方法,该方法包含以下步骤:
步骤1 DMA引擎模块4向完成引擎模块12发送一个完成事件,该完成事件包含不成功交易必须重试的信号,该信号为重试=1。
步骤2 完成引擎模块12执行读修改写(计算机里的术语,read modified write)指令 。
步骤2.1 完成引擎模块12接收到DMA引擎模块4发送的一个完成事件。
步骤2.2 完成引擎模块12向内部内容关联控制器13发送读修改写指令。
步骤2.3 内部内容关联控制器13判断该读修改写指令是否与传递引擎模块11冲突,即完成引擎模块12和传递引擎模块11是否同时想进入内容记忆器3,若是则不执行该指令,若否,则开始执行该指令,并跳转到步骤2.4。
步骤2.4 内部内容关联控制器13读重试状态标识为端点任务设置为0。
步骤2.5 内部内容关联控制器13更新重试状态,写为1,修改了断端点内容。
步骤3 传递引擎模块11通过执行一个读修改写指令来独立访问内容存储器。
步骤3.1 传递引擎模块11发送读修改写指令至内部内容关联控制器13。
步骤3.2 内部内容关联控制器13判断该读修改写指令是否与完成引擎模块12冲突,即完成引擎模块12和传递引擎模块11是否同时想进入内容记忆器3,若是,若是则不执行该指令,若否,则开始执行该指令,并跳转到步骤3.3。
步骤3.3 内部内容关联控制器13读重试状态标识为端点任务设置在1。
步骤3.4 内部内容关联控制器13更新重试状态,写为0,修改了断端点内容。
步骤4 传递引擎模块11执行重试处理,重新进行DMA引擎模块4所发送的不成功交易。
以下结合图3说明本发明环形缓冲缓存系统中传输数据流的一种实施例。
局部TRB缓存读写指针形成了该循环局部TRB缓存的头指针和尾指针, 局部TRB缓存1210含有四组数据,该四组数据或也可应于4个TRBs的缓存位置。每一组数据含有特定于单一TRB数据,比如第1180行到1188 行。 当一个新的TRB从传递环内读出时,TRB的长度偏移是1180,IOC是1182,ISP是1184,TRB 类型是1186,链的偏移是1188。数据缓存在有TRB缓存写指针1190指向的局部TRB缓存1210位置,以及其它可适用的TRB数据缓存在1110到1162行。传递引擎模块11于是采用局部TRB缓存1210的内容关联数据来处理新的TRB。处理完成后,局部TRB缓存写指针1190移动到下一个可行的缓存位置,另一个TRB进入缓存,第1110至1162行被刷新来反映新缓存的TRB。同时,当完成事件收到,局部TRB读指针1192指向以前的缓存位置来刷新TRB长度偏移1180。当TRB长度偏移1180达到0,或收到短数据包或一个错误情况被检测到,局部TRB缓存读指针1192发生改变,以前的缓存位置被腾空出来,局部TRB缓存写指针1190可以用为新的TRB。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述才内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。