存储控制器及数据操作命令的处理方法

文档序号:6578717阅读:193来源:国知局
专利名称:存储控制器及数据操作命令的处理方法
技术领域
本发明涉及网络数据存储领域,尤其涉及一种存储控制器及数据操作命令的处理 方法。
背景技术
随着通信领域的网络传输速度急剧增加和业务多样化的发展,各种通信设备,尤 其是核心网、城域网的网络数据交换机,对存储器提出了更多要求,需要更大的容量、更快 的存取速度,当然还要有更低的成本。静态随机存储器(SRAM)虽然在带宽利用率方面具有 优势,但是其容量小、成本高的缺点限制了其在网络通信设备中的应用。而同步动态随机存 储器(SDRAM)弥补了 SRAM的不足,并且在一定的条件下,其带宽利用率也可以提高到90% 以上。双倍速率(DDR) SDRAM在同块(Bank)同行操作时,即两个相邻的操作命令属于相 同的Bank和相同的页时,不需要进行预充电(Precharge)和激活(Active)操作,直接连续 访问即可。DDR SDRAM在同一Bank内换行操作时,即两个相邻的操作命令属于相同的Bank和 不同的页时,需要先关闭即Precharge当前Bank,然后再打开即Active该Bank内需要访问 的行之后,才可以对该行进行读或写操作,Precharge和Active操作消耗了不必要的时间, 降低了 DDR控制器的带宽利用率。DDR SDRAM在不同Bank操作时,即两个相邻的操作命令属于不同的Bank时,可以 通过一定的方法来避免数据线上的时间间隔,使得带宽不会产生浪费。根据DDR的协议规定,DDR SDRAM在进行读到写转换时,命令线上大概需要6 7 个周期,数据线上经过优化之后至少需要2个周期的间隔时间;在进行写到读转换时,必须 要等最后一次写的数据写入完毕4个周期后才可以发起读命令,加上读延迟,那么在数据 线上写数据和读数据之间的时间间隔至少在10个周期以上,这样造成了极大的带宽浪费。为了避免上述不同情况下带来的带宽浪费问题,目前存在多种控制器设计结构来 避免上述情况的出现。常见的控制器设计,对到来的命令分Bank存储,然后按照轮询的方 式调度,从而避免同Bank换行的情况。读写和写读的频繁转换也通过设定轮询长度方式来 避免。还有其他的控制器设计结构,例如借助CAM实现等。然而,这些控制器存在实现复杂、 难于集成等缺陷。

发明内容
本发明实施例提供一种存储控制器及数据操作命令的处理方法,用于提高存储控 制器的带宽利用率。本发明实施例提供一种存储控制器,该存储控制器包括命令接收单元,用于接收输入的多个数据操作命令;命令重排序单元,用于将所述多个数据操作命令进行排序,排序后多个数据操作
7命令中两个相邻数据操作命令为不同块(BANK)命令或同BANK同行命令;所述不同BANK 命令是指所述两个相邻数据操作命令的目的地址指向的存储单元属于不同BANK,所述同 BANK同行命令是指所述两个相邻数据操作命令的目的地址指向的存储单元属于相同BANK 和相同页;命令执行单元,用于按照所述命令重排序单元排序后多个数据操作命令的顺序, 执行所述多个数据操作命令。本发明实施例提供一种基于所述存储控制器的数据操作命令处理方法,该方法包 括所述存储控制器接收输入的多个数据操作命令;所述存储控制器将所述多个数据操作命令进行排序,排序后多个数据操作命令中 两个相邻数据操作命令为不同BANK命令或同BANK同行命令;所述不同BANK命令是指所述 两个相邻数据操作命令的目的地址指向的存储单元属于不同BANK,所述同BANK同行命令 是指所述两个相邻数据操作命令的目的地址指向的存储单元属于相同BANK和相同页;所述存储控制器按照排序后多个数据操作命令的顺序,执行所述多个数据操作命 令。本发明中,存储控制器接收到输入的多个数据操作命令时,通过将该多个数据操 作命令进行排序,排序后多个数据操作命令中两个相邻数据操作命令为不同BANK命令或 同BANK同行命令,然后按照排序后多个数据操作命令的顺序,执行多个数据操作命令,使 得同Bank换行操作转换为同Bank同行或不同Bank间操作,解决了因同Bank换行造成带 宽浪费的问题,有效提高了带宽利用率。


图1为本发明实施例一中存储控制器结构示意图;图2为本发明实施例二中存储控制器结构示意图;图3为本发明实施例三中存储控制器结构示意图;图4为本发明实施例提供的流程示意图;图5为本发明实例中各命令缓存单元的命令保存示意图;图6为本发明实例中目的选择和源选择缓存单元的标识位保存示意图;图7为本发明实例中数据保存单元的写数据保存示意图;图8为本发明实例中数据保存单元的读数据保存示意图。
具体实施例方式本发明实施例提供一种存储控制器,该存储控制器通过将接收到的数据操作命令 重排序,将同BANK换行操作转换为同BANK同行操作或不同BANK间操作,从而避免同BANK 换行操作时Precharge和Active操作带来的时间浪费。存储设备由很多页构成一个块(BANK),本发明中的同BANK同行命令,是指若相邻 命令的目的地址指向的存储单元属于相同BANK和相同页,则将该相邻命令称为同BANK同 行命令;不同BANK命令,是指若相邻命令的目的地址指向的存储单元属于不同BANK,则将 该相邻命令称为不同BANK命令;同BANK换行命令,是指若相邻命令的目的地址指向的存储
8单元属于相同BANK,但属于不同页,则将该相邻命令称为同BANK换行命令。本发明实施例提供的存储控制器,具体包括命令接收单元,用于接收输入的多个数据操作命令;命令重排序单元,用于将命令接收单元接收到的多个数据操作命令进行排序,排 序后多个数据操作命令中两个相邻数据操作命令为不同BANK命令,或同BANK同行命令;命令执行单元,用于按照命令重排序单元排序后多个数据操作命令的顺序,执行 所述多个数据操作命令。下面列举具体三个存储控制器的实施例实施例一本实施例中,存储控制器用于对写命令进行重排序,具体内部结构如图1所示所述命令接收单元包括写命令接收单元10,用于接收输入的写命令,并按照接 收顺序缓存写命令;本写命令接收单元可以采用先进先出的队列结构。所述命令重排序单元包括写命令重排序控制单元11、写命令暂存缓存单元12和 写命令执行缓存单元13,其中写命令重排序控制单元11,包括第一接收处理模块和暂存处理模块,其中第一接收处理模块,用于读取写命令接收单元中缓存的第一个写命令,判断该写 命令与最新放入写命令执行缓存单元的写命令是否为同Bank换行命令,若是,则将读取的 写命令放入写命令暂存缓存单元中,继续触发第一接收处理模块;否则,将读取的写命令放 入写命令执行缓存单元中,若写命令暂存缓存单元中缓存有写命令,则触发暂存处理模块, 若写命令暂存缓存单元中未缓存写命令,则触发第一接收处理模块。暂存处理模块,用于读取写命令暂存单元中缓存的第一个写命令,判断该写命令 与最新放入写命令执行缓存单元的写命令是否为同Bank换行命令,若是,则触发所述第一 接收处理模块,否则,将读取的写命令放入写命令执行缓存单元中,并触发所述第一接收处 理模块。写命令暂存缓存单元12,用于按照写命令被放入的顺序,缓存写命令重排序控制 单元放入的写命令;本写命令暂存缓存单元可以采用先进先出的队列结构。写命令执行缓存单元13,用于按照写命令被放入的顺序,缓存写命令重排序控制 单元放入的写命令;本写命令执行缓存单元可以采用先进先出的队列结构。所述命令执行单元包括写命令读取单元和写命令执行单元,其中写命令读取单元14,用于按照写命令被放入写命令执行缓存单元从先到后的顺 序,读取写命令执行缓存单元中缓存的写命令。写命令执行单元,用于执行写命令读取单元读取的写命令;本写命令执行单元具 体包括命令控制单元151和物理层单元152,此部分具体实现为现有技术,这里不再赘述。写命令执行缓存单元中缓存的写命令为重排序后的写命令,为了使得写数据与写 命令同步,即将写数据也按照与写命令同样的方式被重排序,该存储控制器进一步包括写 数据输入控制单元16、第一写数据缓存单元17、第二写数据缓存单元18、写数据排序控制 单元19、第三写数据缓存单元20,其中写数据输入控制单元16,用于在第一接收处理模块将写命令放入写命令执行缓存 单元后,将来自数据线上的该写命令对应的写数据放入第一写数据缓存单元;在第一接收处理模块将写命令放入写命令暂存缓存单元后,将来自数据线上的该写命令对应的写数据 放入第二写数据缓存单元。第一写数据缓存单元17,用于按照写数据被放入的顺序,缓存所述写数据输入控 制单元放入的写数据;本第一写数据缓存单元可以采用先进先出的队列结构。第二写数据缓存单元18,用于按照写数据被放入的顺序,缓存所述写数据输入控 制单元放入的写数据;本第二写数据缓存单元可以采用先进先出的队列结构。写数据排序控制单元19,用于在写命令执行缓存单元接收到来自第一接收处理 模块的写命令后,从第一写数据缓存单元中读取对应的写数据并放入第三写数据缓存单元 中;在写命令执行缓存单元接收到来自暂存处理模块的写命令后,从第二写数据缓存单元 中读取对应的写数据并放入第三写数据缓存单元中。第三写数据缓存单元20,用于按照写数据被放入的顺序,缓存写数据排序控制单 元放入的写数据;本第三写数据缓存单元可以采用先进先出的队列结构。所述写命令执行单元15用于,接收到写命令读取单元读取的写命令时,按照该写 命令将第三写数据缓存单元中对应的写数据执行写操作,具体的,命令控制单元将接收到 的写命令输出到物理层单元的同时,第三写数据缓存单元将对应的写数据输出到物理层单兀。为了实现写数据输入控制单元的上述功能,所述写命令重排序控制单元11还包 括目的标识位写入模块,用于在第一接收处理模块将写命令放入写命令执行缓存单元后, 将第一目的标志位放入写目的选择缓存单元中;在第一接收处理模块将写命令放入写命令 暂存缓存单元后,将第二目的标志位放入写目的选择缓存单元中;其中写目的选择缓存单元21,用于按照目的标志位被放入的顺序,缓存目的标识位写 入模块放入的第一目的标志位和第二目的标志位;本写目的选择缓存单元可以采用先进先 出的队列结构。所述写数据输入控制单元16用于,在接收到来自数据线上的写数据时,读取写目 的选择缓存单元中缓存的第一个目的标志位,若该目的标志位为第一目的标志位,则将接 收到的写数据放入第一写数据缓存单元,若该目的标志位为第二目的标志位,则将接收到 的写数据放入第二写数据缓存单元。需要说明的是,输入写命令接收单元的写命令的顺序需要与数据线上传送写数据 的顺序一致,例如,向写命令接收单元输入的三个写命令的顺序为wi、W2和W3,Wl、W2和 W3对应的写数据分别为WD1、WD2和WD3,那么,数据线上传送写数据的顺序也为WD1、WD2和 WD3。为了实现写数据排序控制单元的上述功能,所述写命令重排序控制单元11还包 括源标识位写入模块,用于在写命令执行缓存单元接收到来自第一接收处理模块的写命 令后,将第一源标志位放入写源选择缓存单元;在写命令执行缓存单元接收到来自暂存处 理模块的写命令后,将第二源标志位放入写源选择缓存单元;其中,写源选择缓存单元22,用于按照源标志位被放入的顺序,缓存源标识位写入模块 放入的第一源标志位和第二源标志位;本写源选择缓存单元可以采用先进先出的队列结 构。所述写数据排序控制单元19用于,按照源标志位被放入写源选择缓存单元从先
10到后的顺序,读取写源选择缓存单元中缓存的源标志位,若该源标志位为第一源标志位,则 从第一写数据缓存单元中读取对应的写数据并放入第三写数据缓存单元中;若该源标志位 为第二源标志位,则从第二写数据缓存单元中读取对应的写数据并放入第三写数据缓存单 元中。实施例二 本实施例中,存储控制器用于对读命令进行重排序,其具体内部结构如图2所示所述命令接收单元包括读命令接收单元23,用于接收输入的读命令,并按照接 收顺序缓存读命令;本读命令接收单元可以采用先进先出的队列结构。所述命令重排序单元包括读命令重排序控制单元24、读命令暂存缓存单元25和 读命令执行缓存单元26,其中读命令重排序控制单元24,包括第二接收处理模块和暂存处理模块,其中第二接收处理模块,用于读取读命令接收单元中缓存的第一个读命令,判断该读 命令与最新放入读命令执行缓存单元的读命令是否为同Bank换行命令,若是,则将读取的 读命令放入读命令暂存缓存单元中,继续触发第二接收处理模块;否则,将读取的读命令放 入读命令执行缓存单元中,若读命令暂存缓存单元中缓存有读命令,则触发暂存处理模块, 若读命令暂存缓存单元中未缓存读命令,则触发第二接收处理模块;暂存处理模块,用于读取读命令暂存单元中缓存的第一个读命令,判断该读命令 与最新放入读命令执行缓存单元的读命令是否为同Bank换行命令,若是,则触发所述第二 接收处理模块,否则,将读取的读命令放入读命令执行缓存单元中,并触发所述第二接收处 理模块;读命令暂存缓存单元25,用于按照读命令被放入的顺序,缓存读命令重排序控制 单元放入的读命令;本读命令暂存缓存单元可以采用先进先出的队列结构。读命令执行缓存单元26,用于按照写命令被放入的顺序,缓存读命令重排序控制 单元放入的读命令;本读命令执行缓存单元可以采用先进先出的队列结构。所述命令执行单元包括读命令读取单元27和读命令执行单元28,其中读命令读取单元27,用于按照读命令被放入读命令执行缓存单元从先到后的顺 序,读取读命令执行缓存单元中缓存的读命令;读命令执行单元,用于执行读命令读取单元读取的读命令;本读命令执行单元具 体包括命令控制单元281和物理层单元282,此部分具体实现为现有技术,这里不再赘述。读命令执行缓存单元中缓存的读命令为重排序后的读命令,按照重排序后的读命 令读出的读数据的顺序被打乱,为了将被打乱的顺序恢复原序,原序指按照重排序前的读 命令读出的读数据的顺序,该存储控制器进一步包括读数据接收控制单元29、第一读数据 缓存单元30、第二读数据缓存单元31、读数据排序控制单元32和第三读数据缓存单元33, 其中读数据接收控制单元29,用于在接收到读命令执行单元执行读命令后输出的读数 据时,若该读命令来自读命令接收单元,则将该读数据放入第一读数据缓存单元中;若该读 命令来自读命令暂存缓存单元,则将该读数据放入第二数据缓存单元中。即,若该读命令是 从所述读命令接收单元放入所述读命令执行缓存单元后被读命令执行单元所执行的,则将 该读数据放入第一读数据缓存单元中,若该读命令是从所述读命令暂存缓存单元放入所述读命令执行缓存单元后被读命令执行单元所执行的,则将该读数据放入第二数据缓存单元 中。第一读数据缓存单元30,用于按照读数据被放入的顺序,缓存所述读数据接收控 制单元放入的读数据;本第一读数据缓存单元可以采用先进先出的队列结构。第二读数据缓存单元31,用于按照读数据被放入的顺序,缓存所述读数据接收控 制单元放入的读数据;本第二读数据缓存单元可以采用先进先出的队列结构。读数据排序控制单元32,用于按照一定顺序从第一读数据缓存单元和第二读数据 缓存单元中读取读数据,并将读取到的读数据按照从先到后的读取顺序放入第三读数据缓 存单元,第三读数据缓存单元中缓存的读数据的顺序与读命令接收单元接收读命令的顺序 一致。第三读数据缓存单元33,用于按照读数据被放入的顺序,缓存所述读数据排序控 制单元放入的读数据并输出该读数据;本第三读数据缓存单元可以采用先进先出的队列结 构。为了实现上述读数据接收控制单元的功能,所述读命令重排序控制单元24还包 括源标识位写入模块,用于在读命令执行单元接收到来自读命令接收单元的读命令后,将 第一源标志位放入读源选择缓存单元;在读命令执行单元接收到来自读命令暂存缓存单元 的读命令后,将第二源标志位放入读源选择缓存单元;其中读源选择缓存单元34,用于缓存源标识位写入模块放入的第一源标志位和第二源 标志位;本读源选择缓存单元可以采用先进先出的队列结构。所述读数据接收控制单元29用于,接收到读命令执行单元输出的读数据时,读取 读源选择缓存单元中缓存的第一个读标志位,若该标志位为第一源标志位,则将该读数据 放入第一读数据缓存单元;若该标志位为第二源标志位,则将该读数据放入第二读数据缓 存单元。为了实现上述读数据排序控制单元的功能,所述读命令重排序控制单元24还包 括目的标识位写入模块,用于在第二接收处理模块将读命令放入读命令执行缓存单元后, 将第一目的标志位放入读目的选择缓存单元中;在第二接收处理模块将读命令放入读命令 暂存缓存单元后,将第二目的标志位放入读目的选择缓存单元中;其中读目的选择缓存单元35,用于缓存目的标识位写入模块放入的第一目的标志位和 第二目的标志位;本读目的选择缓存单元可以采用先进先出的队列结构。所述读数据排序控制单元32用于,按照目的标志位被放入读目的选择缓存单元 从先到后的顺序,读取读目的选择缓存单元中缓存的目的标志位,若该目的标志位为第一 目的标志位,则读取第一读数据缓存单元中缓存的对应读数据并放入第三读数据缓存单 元,若该目的标志位为第二目的标志位,则读取第二读数据缓存单元中缓存的对应读数据 并放入第三读数据缓存单元。实施例三本实施例中,存储控制器用于对写命令和读命令进行重排序,具体内部结构如图3 所示,本存储器包括图1和图2所示存储控制器中的全部单元,并且各单元的功能相同,不 同之处在于,写命令读取单元和读命令读取单元均设置在读写均衡控制单元中,并且,该读 写均衡控制单元还包括
12
均衡单元,用于控制所述写命令读取单元和所述读命令读取单元按照设定的命令 轮询个数轮流执行命令读取操作。例如,命令轮询个数为10,则均衡单元可以控制首先由写 命令读取单元连续读取写命令执行缓存单元中的10个写命令并交给命令控制单元执行, 再由读命令读取单元连续读取读命令执行缓存单元中的10个读命令并交给命令控制单元 执行,如此反复。当然,在读命令执行缓存单元或写命令执行缓存单元为空时,可以一直读 取并执行写命令执行缓存单元或读命令执行缓存单元中的命令。通过连续执行一定数量的 读或写操作,之后再连续执行一定数量的写或读操作,从而可以避免读和写之间频繁转换 造成的时间浪费。参见图4,本发明实施例还提供一种基于上述存储控制器的数据操作命令处理方 法,该方法具体包括以下步骤步骤40 存储控制器接收输入的多个数据操作命令;步骤41 存储控制器将接收到的多个数据操作命令进行排序,排序后多个数据操 作命令中两个相邻数据操作命令的目的地址指向的存储单元为不同BANK命令或同BANK同 行命令;步骤42 存储控制器按照排序后多个数据操作命令的顺序,执行该多个数据操作 命令。本方法也存在以下三个实施例实施例一本实施例中的数据操作命令为写命令,存储控制器将接收到的多个写命令进行排 序的实现方法如下Al、写命令重排序控制单元读取写命令接收单元缓存的第一个写命令,判断该写 命令与最新放入写命令执行缓存单元的写命令是否为同Bank换行命令,若是,则将读取的 写命令放入写命令暂存缓存单元中,返回步骤Al ;否则,到步骤Bl ;Bi、写命令重排序控制单元将读取的写命令放入写命令执行缓存单元中,若写命 令暂存缓存单元中缓存有写命令,则到步骤Cl,否则,返回步骤Al ;Cl、写命令重排序控制单元读取写命令暂存单元中缓存的第一个写命令,判断该 写命令与最新放入写命令执行缓存单元的写命令是否为同Bank换行命令,若是,则返回步 骤Al,否则,将读取的写命令放入写命令执行缓存单元中,并返回步骤Al。存储控制器的写命令读取单元按照写命令被放入写命令执行缓存单元从先到后 的顺序,读取写命令执行缓存单元中缓存的写命令并交由写命令执行单元来执行该写命 令。为了使得写数据与写命令同步,步骤Al中将写命令放入写命令暂存缓存单元后, 写数据输入控制单元将该写命令对应的写数据放入第二写数据缓存单元,步骤Bl中将写 命令放入写命令执行缓存单元后,写数据输入控制单元将该写命令对应的写数据放入第一 写数据缓存单元。具体的,在将写命令放入写命令执行缓存单元后,写命令重排序控制单元 将第一目的标志位放入写目的选择缓存单元中,在将写命令放入写命令暂存缓存单元后, 写命令重排序控制单元将第二目的标志位放入写目的选择缓存单元中;写数据输入控制单 元在接收到来自数据线上的写数据时,读取写目的选择缓存单元中缓存的第一个目的标志 位,若该目的标志位为第一目的标志位,则将接收到的写数据放入第一写数据缓存单元,若该目的标志位为第二目的标志位,则将接收到的写数据放入第二写数据缓存单元。步骤Bl中写命令执行缓存单元接收到写命令后,写数据排序控制单元从第一写 数据缓存单元中读取对应的写数据并放入第三写数据缓存单元中;步骤Cl中写命令执行 缓存单元接收到写命令后,写数据排序控制单元从第二写数据缓存单元中读取对应的写数 据并放入第三写数据缓存单元中。具体的,在写命令执行缓存单元接收到来自第一接收处 理模块的写命令后,写命令重排序控制单元将第一源标志位放入写源选择缓存单元,在写 命令执行缓存单元接收到来自暂存处理模块的写命令后,写命令重排序控制单元将第二源 标志位放入写源选择缓存单元;写数据排序控制单元按照源标志位被放入写源选择缓存单 元从先到后的顺序,读取写源选择缓存单元中缓存的源标志位,若该源标志位为第一源标 志位,则从第一写数据缓存单元中读取对应的写数据并放入第三写数据缓存单元中;若该 源标志位为第二源标志位,则从第二写数据缓存单元中读取对应的写数据并放入第三写数 据缓存单元中。那么,写命令执行单元执行写命令读取单元送来的写命令具体为读取第三写数 据缓存单元中的对应写数据,并按照接收到的写命令将该写数据执行写操作。实施例二 本实施例中的数据操作命令为读命令,存储控制器将接收到的多个读命令进行排 序的实现方法如下A2、读命令重排序控制单元读取读命令接收单元缓存的第一个读命令,判断该读 命令与最新放入读命令执行缓存单元的读命令是否为同Bank换行命令,若是,则将读取的 读命令放入读命令暂存缓存单元中,返回步骤A2 ;否则,则到步骤B2 ;B2、读命令重排序控制单元将读取的读命令放入读命令执行缓存单元中,若读命 令暂存缓存单元中缓存有读命令,则到步骤C2,否则,返回步骤A2 ;C2、读命令重排序控制单元读取读命令暂存单元中缓存的第一个读命令,判断该 读命令与最新放入读命令执行缓存单元的读命令是否为同Bank换行命令,若是,则返回步 骤A2,否则,将读取的读命令放入读命令执行缓存单元中,并返回步骤A2。读命令读取单元按照读命令被放入读命令执行缓存单元从先到后的顺序,读取读 命令执行缓存单元中缓存的读命令并交由读命令执行单元来执行该读命令。为了恢复按照重排序后的读命令读出的读数据的顺序,首先,读数据接收控制单 元接收到读命令执行单元执行读命令后输出的读数据时,若该读命令来自读命令接收单 元,则将该读数据放入第一读数据缓存单元中;若该读命令来自读命令暂存缓存单元,则将 该读数据放入第二数据缓存单元中。具体的,在读命令执行单元接收到来自读命令接收单 元的读命令后,读命令重排序控制单元将第一源标志位放入读源选择缓存单元;在读命令 执行单元接收到来自读命令暂存缓存单元的读命令后,读命令重排序控制单元将第二源标 志位放入读源选择缓存单元。然后,读数据排序控制单元从第一读数据缓存单元和第二读数据缓存单元中读取 读数据,并将读取到的读数据按照从先到后的读取顺序放入第三读数据缓存单元中,第三 读数据缓存单元中缓存的读数据的顺序与读命令接收单元接收读命令的顺序一致。具体 的,步骤A2中将读命令放入读命令暂存缓存单元后,读命令重排序控制单元将第二目的标 志位放入读目的选择缓存单元中,步骤B2中将读命令放入读命令执行缓存单元后,读命令重排序控制单元将第一目的标志位放入读目的选择缓存单元中;读数据排序控制单元按照 目的标志位被放入读目的选择缓存单元从先到后的顺序,读取读目的选择缓存单元中缓存 的目的标志位,若该目的标志位为第一目的标志位,则读取第一读数据缓存单元中缓存的 对应读数据并放入第三读数据缓存单元,若该目的标志位为第二目的标志位,则读取第二 读数据缓存单元中缓存的对应读数据并放入第三读数据缓存单元。那么,在进行读数据输出时,第三读数据缓存单元按照读数据被放入从先到后的 顺序,输出读数据。命令乱序后,数据需要和命令保持对应。对于读数据的输出排序时,势必会对原本 先输出的数据因乱序而延后输出产生时间等待。为此,要设定乱序长度,保证乱序范围,不 会对重新排序产生过大压力。所谓乱序长度的规定,指可以提前执行本命令后面跟随的N 个命令中的任意一个,但不允许执行第N+1个命令,这时N即为乱序长度的值。实施例三本实施例中的数据操作命令为读命令和写命令,存储控制器将接收到的多个写命 令进行排序的实现方法可以参见实施例一,将接收到的多个读命令进行排序的实现方法可 以参见实施例二,这里不再赘述。不同之处在于,本实施例中的读写均衡控制单元按照设定 的命令轮询个数轮流读取读命令执行缓存单元中缓存的读命令和写命令执行缓存单元中 缓存的写命令,并将读取的写命令或读命令交由命令控制来执行。如图4所示,为读写均衡 控制单元输出的命令序列,其中,W为写命令,R为读命令。下面结合实例对本发明方法进行说明Al A5是同Bank换行命令,Bl B5是不同于A的同Bank换行命令。命令输入 存储控制器的顺序即命令接收单元接收到的命令顺序为A1、A2、A3、A4、A5、B1、B2、B3、B4、 B5,如图5所示。Al命令是第一个命令,放入命令执行缓存单元中,其后的A2命令和前面执行的命 令Al进行比较,是同Bank换行,则将A2放入命令暂存缓存单元中,同样,其后接收到的命 令A2 A5都和前面执行的命令Al比较,均为同Bank换行命令,则将A2 A5也依次放入 命令暂存缓存单元中,如图5所示。直到接收到命令Bi,和前面执行的命令Al比较,不是同 Bank换行命令,将命令Bl放入命令执行缓存单元。接下来,读取命令暂存缓存单元中的命令A2和前面执行的命令Bl进行比较,不是 同Bank换行命令,将命令A2放入命令执行缓存单元中,然后读取接收到的命令B2,和前面 执行的命令A2比较,不是同Bank换行命令,将命令B2放入命令执行缓存单元中。接下来,读取命令暂存缓存单元中的命令A3和前面执行的命令B2进行比较,不是 同Bank换行命令,将命令A3放入命令执行缓存单元中,然后读取接收到的命令B3,和前面 执行的命令A3比较,不是同Bank换行命令,将命令B3放入命令执行缓存单元中。接下来,读取命令暂存缓存单元中的命令A4和前面执行的命令B3进行比较,不是 同Bank换行命令,将命令A4放入命令执行缓存单元中,然后读取接收到的命令B4,和前面 执行的命令A4比较,不是同Bank换行命令,将命令B4放入命令执行缓存单元中。接下来,读取命令暂存缓存单元中的命令A5和前面执行的命令B4进行比较,不是 同Bank换行命令,将命令A5放入命令执行缓存单元中,然后读取接收到的命令B5,和前面 执行的命令A5比较,不是同Bank换行命令,将命令B5放入命令执行缓存单元中。
最终命令执行缓存单元接收命令的顺序变为了 Al、Bi、A2、B2、A3、B3、A4、B4、A5、 B5,如图5所示,按照该顺序,相邻命令均为不同Bank的命令。并且,通信领域中,每个命令 通常对应一个信元,该信元又包含多个Burst操作。此时再通过一定的方法可以很容易实 现不同Bank的命令切换时可以省去Precharge和Active时间,使得数据线上保持数据的 连续性,带宽不会产生浪费,与按照命令接收顺序直接执行比较,改善是显著的。同时,为了保持写命令和写数据同序,或读命令和读数据同序,设置目的选择缓存 单元,用于缓存从命令接收单元读取出的命令的目的地信息。若命令接收单元中出来的命 令和前面放入命令执行缓存单元的命令,是同Bank换行命令,则将此命令放入命令暂存缓 存单元,相应的将目的标识位CS = 1存入目的选择缓存单元;若命令接收单元中出来的命 令和前面放入命令执行缓存单元的命令,不是同Bank换行命令,则将此命令放入命令执行 缓存单元,相应的将目的标识位CS = 0存入目的选择缓存单元。设置源选择缓存单元,缓 存即将放入命令执行缓存单元的命令的来源信息。若此命令来自命令暂存缓存单元,相应 的将源标识位CS = 1存入源选择缓存单元;若此命令来自命令接收单元,相应的将源标识 位CS = 0存入源选择缓存单元;根据此2个FIFO中信息可以将经过和没有经过命令暂存 缓存单元缓存的对应数据分开存储。如图6所示,为本例中目的选择缓存单元中存储的目 的标识位顺序示意图以及源选择缓存单元中存储的目的标识位顺序示意图。若上述命令为写命令,则在接收到来自数据线上的写数据时,读取写目的选择缓 存单元中缓存的第一个目的标志位,若该目的标志位为1,则将接收到的写数据放入数据缓 存单元1,若该目的标志位为0,则将接收到的写数据放入数据缓存单元0。数据线上的写数 据的顺序为 AW1、AW2、AW3、AW4、Aff5, BW1、BW2、Bff3, Bff4, BW5,对应的写命令分别为 Al、A2、 A3、A4、A5、B1、B2、B3、B4、B5。按照该方式,数据缓存单元0和数据缓存单元1中缓存的写 数据如图7所示。然后,按顺序读取写源选择缓存单元中的源标识位,若该源标志位为0,则从数据 缓存单元0中读取对应的写数据并放入数据缓存单元2 ;若该源标志位为1,则从数据缓存 单元1中读取对应的写数据并放入数据缓存单元2。按照该方式,数据缓存单元2中保存的 写数据如图7所示,数据缓存单元2中保存的写数据与附图5中命令执行缓存单元中的写 命令顺序一致。若上述命令为读命令,则在接收到命令执行单元执行读命令后输出的读数据时, 读取读源选择缓存单元中缓存的第一个源标志位,若该源标志位为0,则将读数据放入数据 缓存单元0,若该源标志位为1,则将该读数据放入数据缓存单元1。输出的读数据的顺序为 ARl、BRl、AR2、BR2、AR3、BR3、AR4、BR4、AR5、BR5,对应的读命令分别为 A1、B1、A2、B2、A3、 B3、A4、B4、A5、B5。按照该方式,数据缓存单元0和数据缓存单元1中缓存的写数据也如图 8所示。然后,按顺序读取读目的选择缓存单元中的目的标识位,若该目的标志位为0,则 从数据缓存单元0中读取对应的读数据并放入数据缓存单元2 ;若该目的标志位为1,则从 数据缓存单元1中读取对应的读数据并放入数据缓存单元2。按照该方式,数据缓存单元2 中保存的读数据如图8所示,数据缓存单元2中保存的读数据与输入的读命令的顺序一致。需要说明的是,本发明中缓存单元的第一个命令或对应的数据是指当前缓存单元 中保存的最早进入该缓存单元的命令或数据。并且,在将缓存单元中的命令或数据读取后,
16该命令或数据在缓存单元中不存在。本发明中的数据操作命令也不限于写命令和读命令,还可以是其它对存储器的存 储单元进行数据操作的任何命令。综上,本发明的有益效果包括本发明实施例提供的方案中,存储控制器接收到输入的多个数据操作命令时,通 过将该多个数据操作命令进行排序,排序后多个数据操作命令中两个相邻数据操作命令为 不同BANK命令,或同BANK同行命令,然后按照排序后多个数据操作命令的顺序,执行多个 数据操作命令,使得同Bank换行操作转换为同Bank同行或不同Bank间操作,解决了因同 Bank换行造成带宽浪费的问题,有效提高了带宽利用率。同时,本发明实施例提供了读写均衡的方案来避免频繁的读写转换造成转换时间 浪费。两种方法相结合,其数据总线上除了必要的刷新时间和读写转换之外都可以用来传 输数据,理论带宽利用率可以达到90%以上。同时本发明提供了该方法的实现装置,可以广 泛的应用于FPGA和ASIC逻辑电路设计中。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种存储控制器,其特征在于,该存储控制器包括命令接收单元,用于接收输入的多个数据操作命令;命令重排序单元,用于将所述多个数据操作命令进行排序,排序后多个数据操作命令中两个相邻数据操作命令为不同块BANK命令或同BANK同行命令;所述不同BANK命令是指所述两个相邻数据操作命令的目的地址指向的存储单元属于不同BANK,所述同BANK同行命令是指所述两个相邻数据操作命令的目的地址指向的存储单元属于相同BANK和相同页;命令执行单元,用于按照所述命令重排序单元排序后多个数据操作命令的顺序,执行所述多个数据操作命令。
2.如权利要求1所述的存储控制器,其特征在于,所述命令接收单元包括 写命令接收单元,用于接收输入的写命令并缓存该写命令;所述命令重排序单元包括写命令重排序控制单元,包括第一接收处理模块和暂存处理模块; 所述第一接收处理模块,用于读取所述写命令接收单元中缓存的第一个写命令,判断 该写命令与最新放入写命令执行缓存单元的写命令是否为同Bank换行命令,若是,则将读 取的写命令放入写命令暂存缓存单元中,继续触发第一接收处理模块;否则,将读取的写命 令放入写命令执行缓存单元中,若写命令暂存缓存单元中缓存有写命令,则触发暂存处理 模块,若写命令暂存缓存单元中未缓存写命令,则触发第一接收处理模块;所述暂存处理模块,用于读取写命令暂存单元中缓存的第一个写命令,判断该写命令 与最新放入写命令执行缓存单元的写命令是否为同Bank换行命令,若是,则触发所述第一 接收处理模块,否则,将读取的写命令放入写命令执行缓存单元中,并触发所述第一接收处 理模块;写命令暂存缓存单元,用于按照写命令被放入的顺序,缓存写命令重排序控制单元放 入的写命令;写命令执行缓存单元,用于缓存写命令重排序控制单元放入的写命令; 所述命令执行单元包括写命令读取单元,用于按照写命令被放入所述写命令执行缓存单元的顺序,读取所述 写命令执行缓存单元中缓存的写命令;写命令执行单元,用于执行所述写命令读取单元读取的写命令。
3.如权利要求2所述的存储控制器,其特征在于,该存储控制器进一步包括写数据输入控制单元,用于在所述第一接收处理模块将写命令放入写命令执行缓存单 元后,将该写命令对应的写数据放入第一写数据缓存单元;在所述第一接收处理模块将写 命令放入写命令暂存缓存单元后,将该写命令对应的写数据放入第二写数据缓存单元;第一写数据缓存单元,用于按照写数据被放入的顺序,缓存所述写数据输入控制单元 放入的写数据;第二写数据缓存单元,用于按照写数据被放入的顺序,缓存所述写数据输入控制单元 放入的写数据;写数据排序控制单元,用于在所述写命令执行缓存单元接收到来自所述第一接收处理 模块的写命令后,从所述第一写数据缓存单元中读取对应的写数据并放入第三写数据缓存单元;在所述写命令执行缓存单元接收到来自所述暂存处理模块的写命令后,从所述第二 写数据缓存单元中读取对应的写数据并放入第三写数据缓存单元;第三写数据缓存单元,用于按照写数据被放入的顺序,缓存所述写数据排序控制单元 放入的写数据;所述写命令执行单元用于,按照所述写命令读取单元读取的写命令将所述第三写数据 缓存单元中的对应写数据执行写操作。
4.如权利要求3所述的存储控制器,其特征在于,所述写命令重排序控制单元还包括 目的标识位写入模块,用于在所述第一接收处理模块将写命令放入写命令执行缓存单元后,将第一目的标志位放入写目的选择缓存单元中;在所述第一接收处理模块将写命令 放入写命令暂存缓存单元后,将第二目的标志位放入写目的选择缓存单元中; 该存储控制器进一步包括写目的选择缓存单元,用于按照目的标志位被放入的顺序,缓存所述目的标识位写入 模块放入的第一目的标志位和第二目的标志位;所述写数据输入控制单元用于,接收到输入的写数据时,读取所述写目的选择缓存单 元中缓存的第一个目的标志位,若该目的标志位为第一目的标志位,则将接收到的相应写 数据放入第一写数据缓存单元,若该目的标志位为第二目的标志位,则将接收到的相应写 数据放入第二写数据缓存单元。
5.如权利要求3所述的存储控制器,其特征在于,所述写命令重排序控制单元还包括 源标识位写入模块,用于在所述写命令执行缓存单元接收到来自所述第一接收处理模块的写命令后,将第一源标志位放入写源选择缓存单元;在所述写命令执行缓存单元接收 到来自所述暂存处理模块的写命令后,将第二源标志位放入写源选择缓存单元; 该存储控制器进一步包括写源选择缓存单元,用于缓存所述源标识位写入模块放入的第一源标志位和第二源标 志位;所述写数据排序控制单元用于,按照源标志位被放入的顺序,读取所述写源选择缓存 单元中缓存的源标志位,若该源标志位为第一源标志位,则从所述第一写数据缓存单元中 读取相应写数据并放入第三写数据缓存单元;若该源标志位为第二源标志位,则从所述第 二写数据缓存单元中读取相应写数据并放入第三写数据缓存单元。
6.如权利要求1-5中任一所述的存储控制器,其特征在于,所述命令接收单元包括 读命令接收单元,用于接收输入的读命令并缓存该写命令;所述命令重排序单元包括读命令重排序控制单元,包括第二接收处理模块和暂存处理模块; 所述第二接收处理模块,用于读取所述读命令接收单元中缓存的第一个读命令,判断 该读命令与最新放入读命令执行缓存单元的读命令是否为同Bank换行命令,若是,则将读 取的读命令放入读命令暂存缓存单元中,继续触发第二接收处理模块;否则,将读取的读命 令放入读命令执行缓存单元中;若读命令暂存缓存单元中缓存有读命令,则触发暂存处理 模块,若读命令暂存缓存单元中未缓存读命令,则触发第二接收处理模块;所述暂存处理模块,用于读取读命令暂存单元中缓存的第一个读命令,判断该读命令 与最新放入读命令执行缓存单元的读命令是否为同Bank换行命令,若是,则触发所述第二接收处理模块,否则,将读取的读命令放入读命令执行缓存单元中,并触发所述第二接收处 理模块;读命令暂存缓存单元,用于按照读命令被放入的顺序,缓存读命令重排序控制单元放 入的读命令;读命令执行缓存单元,用于缓存读命令重排序控制单元放入的读命令; 所述命令执行单元包括读命令读取单元,用于按照读命令被放入所述读命令执行缓存单元的顺序,读取所述 读命令执行缓存单元中缓存的读命令;读命令执行单元,用于执行所述读命令读取单元读取的读命令。
7.如权利要求6所述的存储控制器,其特征在于,该存储控制器进一步包括读数据接收控制单元,用于在接收到所述读命令执行单元执行读命令后输出的读数据 时,若该读命令来自所述读命令接收单元,则将该读数据放入第一读数据缓存单元;若该读 命令来自所述读命令暂存缓存单元,则将该读数据放入第二数据缓存单元;第一读数据缓存单元,用于按照读数据被放入的顺序,缓存所述读数据接收控制单元 放入的读数据;第二读数据缓存单元,用于按照读数据被放入的顺序,缓存所述读数据接收控制单元 放入的读数据;读数据排序控制单元,用于从第一读数据缓存单元和第二读数据缓存单元中读取读数 据并将该读数据放入第三读数据缓存单元,第三读数据缓存单元中缓存的读数据的顺序与 读命令接收单元接收读命令的顺序一致;第三读数据缓存单元,用于缓存所述读数据排序控制单元放入的读数据并按照读数据 被放入的顺序输出读数据。
8.如权利要求7所述的存储控制器,其特征在于,所述读命令重排序控制单元还包括 源标识位读入模块,用于在所述读命令执行单元接收到来自所述读命令接收单元的读命令后,将第一源标志位放入读源选择缓存单元;在所述读命令执行单元接收到来自所述 读命令暂存缓存单元的读命令后,将第二源标志位放入读源选择缓存单元; 该存储控制器进一步包括读源选择缓存单元,用于按照源标识位被放入的顺序,缓存所述源标识位写入模块放 入的第一源标志位和第二源标志位;所述读数据接收控制单元用于,接收到所述读命令执行单元执行读命令后输出的读数 据时,读取所述读源选择缓存单元中缓存的第一个读标志位,若该标志位为第一源标志位, 则将所述读数据放入所述第一读数据缓存单元;若该标志位为第二源标志位,则将所述读 数据放入所述第二读数据缓存单元。
9.如权利要求7所述的存储控制器,其特征在于,所述读命令重排序控制单元还包括 目的标识位写入模块,用于在所述第二接收处理模块将读命令放入读命令执行缓存单元后,将第一目的标志位放入读目的选择缓存单元中;在所述第二接收处理模块将读命令 放入读命令暂存缓存单元后,将第二目的标志位放入读目的选择缓存单元中; 该存储控制器进一步包括读目的选择缓存单元,用于缓存所述目的标识位写入模块放入的第一目的标志位和第二目的标志位;所述读数据排序控制单元用于,按照目的标志位被放入的顺序,读取所述读目的选择 缓存单元中缓存的目的标志位,若该目的标志位为第一目的标志位,则读取所述第一读数 据缓存单元中缓存的对应读数据并放入所述第三读数据缓存单元,若该目的标志位为第二 目的标志位,则读取所述第二读数据缓存单元中缓存的对应读数据并放入所述第三读数据 缓存单元。
10.如权利要求6所述的存储控制器,其特征在于,所述命令执行单元还包括均衡单元,用于控制所述写命令读取单元和所述读命令读取单元按照设定的命令轮询 个数轮流执行命令读取操作。
11.一种基于权利要求1-10所述的存储控制器的数据操作命令处理方法,其特征在 于,该方法包括所述存储控制器接收输入的多个数据操作命令;所述存储控制器将所述多个数据操作命令进行排序,排序后多个数据操作命令中两个 相邻数据操作命令的目的地址指向的存储单元为不同块(BANK)命令或同BANK同行命令; 所述不同BANK命令是指所述两个相邻数据操作命令的目的地址指向的存储单元属于不同 BANK,所述同BANK同行命令是指所述两个相邻数据操作命令的目的地址指向的存储单元 属于相同BANK和相同页;所述存储控制器按照排序后多个数据操作命令的顺序,执行所述多个数据操作命令。
12.如权利要求11所述的方法,其特征在于,若所述数据操作命令为写命令,所述存储 控制器将所述多个数据操作命令进行排序包括Al、读取写命令接收单元缓存的第一个写命令,判断该写命令与最新放入写命令执行 缓存单元的写命令是否为同Bank换行命令,若是,则将读取的写命令放入写命令暂存缓存 单元,返回步骤Al ;否则,则到步骤Bl ;Bi、将读取的写命令放入写命令执行缓存单元,若写命令暂存缓存单元中缓存有写命 令,则到步骤Cl,否则,返回步骤Al ;Cl、读取写命令暂存单元中缓存的第一个写命令,判断该写命令与最新放入写命令执 行缓存单元的写命令是否为同Bank换行命令,若是,则返回步骤Al,否则,将读取的写命令 放入写命令执行缓存单元,并返回步骤Al ;所述存储控制器按照排序后多个数据操作命令的顺序,执行所述多个数据操作命令包括按照写命令被放入所述写命令执行缓存单元的顺序,读取所述写命令执行缓存单元中 缓存的写命令并执行该写命令。
13.如权利要求12所述的方法,其特征在于,步骤Al中将写命令放入写命令暂存缓存单元后,该方法进一步包括将该写命令对应 的写数据放入第二写数据缓存单元;步骤Bl中将写命令放入写命令执行缓存单元后,该方法进一步包括将该写命令对应 的写数据放入第一写数据缓存单元;步骤Bl中写命令执行缓存单元接收到写命令后,该方法进一步包括从所述第一写数 据缓存单元中读取对应的写数据并放入第三写数据缓存单元中;步骤Cl中写命令执行缓存单元接收到写命令后,该方法进一步包括从所述第二写数 据缓存单元中读取对应的写数据并放入第三写数据缓存单元中; 所述执行该写命令包括读取所述第三写数据缓存单元中的对应写数据,按照该写命令对该写数据执行写操作。
14.如权利要求11-13中任一所述的方法,其特征在于,若所述数据操作命令为读命 令,所述存储控制器将所述多个数据操作命令进行排序包括A2、读取读命令接收单元缓存的第一个读命令,判断该读命令与最新放入读命令执行 缓存单元的读命令是否为同Bank换行命令,若是,则将读取的读命令放入读命令暂存缓存 单元中,返回步骤A2 ;否则,则到步骤B2 ;B2、将读取的读命令放入读命令执行缓存单元,若读命令暂存缓存单元中缓存有读命 令,则到步骤C2,否则,返回步骤A2 ;C2、读取读命令暂存单元中缓存的第一个读命令,判断该读命令与最新放入读命令执 行缓存单元的读命令是否为同Bank换行命令,若是,则返回步骤A2,否则,将读取的读命令 放入读命令执行缓存单元,并返回步骤A2 ;所述存储控制器按照排序后多个数据操作命令的顺序,执行所述多个数据操作命令包括按照读命令被放入所述读命令执行缓存单元的顺序,读取所述读命令执行缓存单元中 缓存的读命令并执行该读命令。
15.如权利要求14所述的方法,其特征在于,在执行该读命令之后,该方法进一步包括接收到执行所述读命令后输出的读数据,若该读命令来自读命令接收单元,则将该读 数据放入第一读数据缓存单元;若该读命令来自读命令暂存缓存单元,则将该读数据放入 第二数据缓存单元;从第一读数据缓存单元和第二读数据缓存单元中读取读数据,并将该读数据放入第三 读数据缓存单元,第三读数据缓存单元中缓存的读数据的顺序与读命令接收单元接收读命 令的顺序一致。
16.如权利要求14所述的方法,其特征在于,按照设定的命令轮询个数轮流读取读命 令执行缓存单元中缓存的读命令和写命令执行缓存单元中缓存的写命令。
全文摘要
本发明实施例公开了一种存储控制器,该存储控制器包括命令接收单元,用于接收输入的多个数据操作命令;命令重排序单元,用于将所述多个数据操作命令进行排序,排序后多个数据操作命令中两个相邻数据操作命令为不同块(BANK)命令或同BANK同行命令;命令执行单元,用于按照所述命令重排序单元排序后多个数据操作命令的顺序,执行所述多个数据操作命令。本发明实施例还公开了一种基于所述存储控制器的数据操作命令处理方法。采用本发明,能够有效提高存储控制器的带宽利用率。
文档编号G06F13/16GK101923522SQ20091014732
公开日2010年12月22日 申请日期2009年6月11日 优先权日2009年6月11日
发明者丁己善, 于克东, 吴风波, 廖智勇, 王建兵, 赖伟 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1