• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 26
    • 下载费用:30 金币  

    重庆时时彩口诀: 一种存储器的访问方法及装置.pdf

    关 键 词:
    一种 存储器 访问 方法 装置
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201410138487.X

    申请日:

    2014.04.08

    公开号:

    CN103927268A

    公开日:

    2014.07.16

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||实质审查的生效IPC(主分类):G06F 12/08申请日:20140408|||公开
    IPC分类号: G06F12/08 主分类号: G06F12/08
    申请人: 中国科学院微电子研究所
    发明人: 陈岚; 王力玉; 郝晓冉
    地址: 100029 北京市朝阳区北土城西路3号
    优先权:
    专利代理机构: 北京集佳知识产权代理有限公司 11227 代理人: 王宝筠
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201410138487.X

    授权公告号:

    ||||||

    法律状态公告日:

    2017.02.15|||2014.08.13|||2014.07.16

    法律状态类型:

    授权|||实质审查的生效|||公开

    摘要

    本发明公开了一种存储器的访问方法和装置,所述方法包括:对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间;遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,并将当前获取的命令组作为待执行命令组,其中,所述命令组中的所有访问命令携带了相同行地址;按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,以便所述存储器执行获取的子命令,其中,所述待执行命令组中每个访问命令之间按获取顺序发送,所述待执行命令组中第一个获取的访问命令被分解成执行顺序为预充电子命令、激活子命令和列存取子命令的三个子命令,所述待执行命令组中其它每个访问命令均分解为列存取子命令。

    权利要求书

    权利要求书
    1.  一种存储器的访问方法,其特征在于,所述存储器包括至少两个存储阵列,每个存储阵列对应分配一个缓冲区,所述缓冲区中存储了用于访问对应存储阵列的访问命令,所述访问命令按照接收顺序依次存储于对应缓冲区中、且存储顺序与对应缓冲区中缓冲单元的排列顺序相同,所述缓冲区被划分为至少一个缓冲区间,所述方法包括:
    对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间,其中,选取缓冲区间中存储有未执行的访问命令、且与其它缓冲区间相比为最早存储访问命令的缓冲区间,所述访问命令中携带了所要访问的存储阵列的行地址;
    遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,并将当前获取的命令组作为待执行命令组,其中,所述命令组中的所有访问命令携带了相同行地址;
    按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,以便所述存储器执行获取的子命令,其中,所述待执行命令组中每个访问命令之间按获取顺序发送,所述待执行命令组中第一个获取的访问命令被分解成执行顺序为预充电子命令、激活子命令和列存取子命令的三个子命令,所述待执行命令组中其它每个访问命令均分解为列存取子命令。

    2.  根据权利要求1所述的方法,其特征在于,所述遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,包括:
    按照所述选取缓冲区间中缓冲单元的排列顺序,从所述选取缓冲区间中获取第一个未执行的携带了第一行地址的第一访问命令,所述第一访问命令存储于所述选取缓冲区间中的第一缓冲单元中;
    从所述第一缓冲单元后的所有缓冲单元中,依次获取携带所述第一行地址的未执行访问命令,以获取由携带所述第一行地址的所有访问命令组成的第一命令组;
    判断所述选取缓冲区间中是否仍存在未执行的访问命令,如果是,则执行按照所述选取缓冲区间中缓冲单元的排列顺序从所述选取缓冲区间中获取第一个未执行的携带了第二行地址的第二访问命令的步骤,以获取由携带所述第二行地址的所有访问命令组成的第二命令组,如果否,则继续执行所述 对于每个存储有未执行访问命令的缓冲区从中选取一个缓冲区间的步骤。

    3.  根据权利要求1所述的方法,其特征在于,所述按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,包括:
    获取每个缓冲区中未执行访问命令的数目,并将所述获取的数目递减排序,按照排序结果确定各个待执行命令组之间的优先级顺序;
    向所述存储器发送第一命令的预充电子命令,所述第一命令为第一优先级的待执行命令组中的第一个未执行访问命令;
    在所述第一命令的预充电子命令与所述第一命令的激活子命令之间的第一发送间隔时间内,向所述存储器发送第二命令的预充电子命令,所述第二命令为第二优先级的待执行命令组中的访问命令;
    在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时到达所述第一发送间隔时间,则向所述存储器发送所述第一命令的激活子命令,在所述第一命令的激活子命令与所述第一命令的列存取子命令之间的第三发送间隔时间内,执行第三命令的待执行子命令,所述第三命令为在所述第一优先级待执行命令组后的所有待执行命令组中满足时序要求且优先级最高的待执行命令组,所述满足时序要求为计时到达所述待执行子命令与所述待执行子命令之前子命令之间的发送时间间隔;
    在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时未到达所述第一发送间隔时间,则向所述存储器发送第四命令的预充电子命令,所述第四命令为第三优先级的待执行命令组中的访问命令;
    其中,所述第一优先级、所述第二优先级和所述第三优先级的优先级别依次递减;
    按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令;或者,按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令,其中,每个待执行命令组中的各个列存取子命令依次执行、且每两个列存取子命令之间满足发送间隔时间。

    4.  根据权利要求1至3任一项所述的方法,其特征在于,在所述对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间前,所述方法还包 括:
    从协议总线接收访问命令;
    若所述访问命令用于向所述存储器写入数据,则为所述访问命令和所要写入的数据分别配置第一标识,并将配置后的访问命令发送至对应的缓冲区中且将配置后的数据发送至数据传输???;在向所述存储器发送所述访问命令的列存取子命令时,向所述数据传输??榉⑺退龅谝槐晔?,以使所述数据传输??楦菟龅谝槐晔蹲急杆鏊慈氲氖?,将准备好的数据发送至所述存储器;
    若所述访问命令用于读取所述存储器中的数据,则为所述访问命令配置第二标识,并将配置后的访问命令发送至对应的缓冲区中;在向所述存储器发送所述访问命令的列存取子命令后,利用所述数据传输??榻邮账龃娲⑵鞣祷氐氖莶⑽龇祷氐氖菖渲盟龅诙晔?;根据所述第二标识将所述返回的数据按照所述访问命令的接收顺序发送至所述协议总线。

    5.  根据权利要求4所述的方法,其特征在于,所述将配置后的访问命令发送至对应的缓冲区中,包括:
    对所述访问命令进行译码,以提取所述访问命令中的存储阵列地址,并根据所述存储阵列地址,将所述访问命令存储于对应分配的缓冲区中。

    6.  根据权利要求5所述的方法,其特征在于,每个缓冲区对应分配一个第一寄存器,所述第一寄存器的每个存储单元用于分别存储对应缓冲区中每个访问命令的执行状态,所述方法包括:
    当将所述访问命令存储在对应缓冲区中时,在所述缓冲区对应的第一寄存器中将所述访问命令标识为未执行状态;
    当所述访问命令的所有子命令被发送至所述存储器后,在所述缓冲区对应的第一寄存器中将所述访问命令标识为已执行状态。

    7.  根据权利要求1至3任一项所述的方法,其特征在于,每个缓冲区对应分配一个第二寄存器;对于从所述选取缓冲区间中获取的每个访问命令,按照下述方法分解获取的访问命令:
    将获取访问命令携带的行地址与对应第二寄存器中存储的行地址进行比较,所述对应第二寄存器中存储的行地址为上次获取的访问命令的行地址;
    如果比较结果不同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为预充电子命令、激活子命令和列存取子命令;
    如果比较结果相同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为列存取子命令。

    8.  一种存储器的访问装置,其特征在于,所述存储器包括至少两个存储阵列,每个存储阵列对应分配一个缓冲区,所述缓冲区中存储了用于访问对应存储阵列的访问命令,所述访问命令按照接收顺序依次存储于对应缓冲区中、且存储顺序与对应缓冲区中缓冲单元的排列顺序相同,所述缓冲区被划分为至少一个缓冲区间,所述装置包括:
    缓冲区选取???,用于对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间,其中,选取缓冲区间中存储有未执行的访问命令、且与其它缓冲区间相比为最早存储访问命令的缓冲区间,所述访问命令中携带了所要访问的存储阵列的行地址;
    命令组获取???,用于遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,并将当前获取的命令组作为待执行命令组,其中,所述命令组中的所有访问命令携带了相同行地址;
    子命令调度???,用于按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,以便所述存储器执行获取的子命令,其中,所述待执行命令组中每个访问命令之间按获取顺序发送,所述待执行命令组中第一个获取的访问命令被分解成执行顺序为预充电子命令、激活子命令和列存取子命令的三个子命令,所述待执行命令组中其它每个访问命令均分解为列存取子命令。

    9.  根据权利要求8所述的装置,其特征在于,所述命令组获取???,包括:
    第一获取子???,用于按照所述选取缓冲区间中缓冲单元的排列顺序,从所述选取缓冲区间中获取第一个未执行的携带了第一行地址的第一访问命令,所述第一访问命令存储于所述选取缓冲区间中的第一缓冲单元中;
    第二获取子???,用于从所述第一缓冲单元后的所有缓冲单元中,依次获取携带所述第一行地址的未执行访问命令,以获取由携带所述第一行地址的所有访问命令组成的第一命令组;
    判断子???,用于判断所述选取缓冲区间中是否仍存在未执行的访问命令;
    继续获取???,用于当所述判断子??榕卸系玫降乃鲅∪』撼迩渲腥源嬖谖粗葱械姆梦拭钍?,执行按照所述选取缓冲区间中缓冲单元的排列顺序从所述选取缓冲区间中获取第一个未执行的携带了第二行地址的第二访问命令的步骤,以获取由携带所述第二行地址的所有访问命令组成的第二命令组,如果否,则继续利用所述缓冲区选取??橹葱兴龆杂诿扛龃娲⒂形粗葱蟹梦拭畹幕撼迩?,从中选取一个缓冲区间的步骤。

    10.  根据权利要求8所述的装置,其特征在于,所述子命令调度???,包括:
    排序子???,用于获取每个缓冲区中未执行访问命令的数目,并将所述获取的数目递减排序,按照排序结果确定各个待执行命令组之间的优先级顺序;
    第一发送子???,用于向所述存储器发送第一命令的预充电子命令,所述第一命令为第一优先级的待执行命令组中的第一个未执行访问命令;
    第二发送子???,用于在所述第一命令的预充电子命令与所述第一命令的激活子命令之间的第一发送间隔时间内,向所述存储器发送第二命令的预充电子命令,所述第二命令为第二优先级的待执行命令组中的访问命令;
    第三发送子???,用于在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时到达所述第一发送间隔时间,则向所述存储器发送所述第一命令的激活子命令,在所述第一命令的激活子命令与所述第一命令的列存取子命令之间的第三发送间隔时间内,执行第三命令的待执行子命令,所述第三命令为在所述第一优先级待执行命令组后的所有待执行命令组中满足时序要求且优先级最高的待执行命令组,所述满足时序要求为计时到达所述待执行子命令与所述待执行子命令之前子命令之间的发送时间间隔;
    第四发送子???,用于在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时未到达所述第一发送间隔时间,则向所述存储器发送第四命令的预充电子命令,所述第四命令为第三优先级的待执行命令组中的访问命令;
    其中,所述第一优先级、所述第二优先级和所述第三优先级的优先级别依次递减;
    继续发送子???,用于按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令;或者,按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令,其中,每个待执行命令组中的各个列存取子命令依次执行、且每两个列存取子命令之间满足发送间隔时间。

    11.  根据权利要求8至10任一项所述的装置,其特征在于,所述装置还包括:
    命令接收???,用于在所述缓冲区选取??槎杂诿扛龃娲⒂形粗葱蟹梦拭畹幕撼迩?,从中选取一个缓冲区间前,从协议总线接收访问命令;
    第一发送???,用于若所述命令接收??榻邮盏姆梦拭钣糜谙蛩龃娲⑵餍慈胧?,则为所述访问命令和所要写入的数据分别配置第一标识,并将配置后的访问命令发送至对应的缓冲区中且将配置后的数据发送至数据传输???;
    数据发送???,用于在所述子命令调度??橄蛩龃娲⑵鞣⑺退雒罱邮漳?榻邮盏姆梦拭畹牧写嫒∽用钍?,向所述数据传输??榉⑺退龅谝槐晔?;
    所述数据传输???,用于根据所述数据发送??榉⑺偷牡谝槐晔蹲急杆鏊慈氲氖?,将准备好的数据发送至所述存储器;
    第二发送???,用于若所述子命令接收??榻邮盏姆梦拭钣糜诙寥∷龃娲⑵髦械氖?,则为所述访问命令配置第二标识,并将配置后的访问命令发送至对应的缓冲区中;
    所述数据传输???,用于在所述子命令调度??橄蛩龃娲⑵鞣⑺退雒罱邮漳?榻邮盏姆梦拭畹牧写嫒∽用詈?,接收所述存储器返回的数 据并为所述返回的数据配置所述第二标识,根据所述第二标识将所述返回的数据按照所述访问命令的接收顺序发送至所述协议总线。

    12.  根据权利要求11所述的装置,其特征在于,所述第一发送??榛蛩龅诙⑺湍??,包括:
    译码子???,用于对所述配置后的访问命令进行译码,以提取所述访问命令中的存储阵列地址;
    发送子???,用于根据所述存储阵列地址,将所述访问命令存储于对应分配的缓冲区中。

    13.  根据权利要求12所述的装置,其特征在于,每个缓冲区对应分配一个第一寄存器,所述第一寄存器的每个存储单元用于分别存储对应缓冲区中每个访问命令的执行状态,所述装置包括:
    第一状态标记???,用于当所述发送子??榻龇梦拭畲娲⒃诙杂撼迩惺?,在所述缓冲区对应的第一寄存器中将所述访问命令标识为未执行状态;
    第二状态标记???,用于当所述访问命令的所有子命令被发送至所述存储器后,在所述缓冲区对应的第一寄存器中将所述访问命令标识为已执行状态。

    14.  根据权利要求8至10任一项所述的装置,其特征在于,每个缓冲区对应分配一个第二寄存器;所述装置还包括:命令分解???,用于对于从所述选取缓冲区间中获取的每个访问命令,按照下述方法分解获取的访问命令:
    将获取访问命令携带的行地址与对应第二寄存器中存储的行地址进行比较,所述对应第二寄存器中存储的行地址为上次获取的访问命令的行地址;
    如果比较结果不同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为预充电子命令、激活子命令和列存取子命令;
    如果比较结果相同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为列存取子命令。

    说明书

    说明书一种存储器的访问方法及装置
    技术领域
    本发明涉及存储器技术领域,尤其涉及一种存储器的访问方法及装置。
    背景技术
    随着人们对移动智能终端(如智能手机、平板电脑等)应用需求的不断提升,如何在保证移动终端体积小、外观灵巧等特性的前提下,降低终端功耗、提高终端性能,已经成为该领域的研究重点。近年来处理器技术不断发展,使得处理器速度明显提高,然而存储设备性能却提升较慢,导致终端性能的增长越来越受到存储设备性能的限制。LPDDR2 SDRAM(LowPowerDoubleDataRate2 SDRAMSynchronousDynamicRandomAccessMemory,第二代低功耗双倍速率同步动态随机存储器)因具备低功耗、高性能等优点,已成为智能终端中应用最为广泛的存储芯片,但是,LPDDR2 SDRAM的访问速度与处理器速度相比仍然较慢,为了更好地提高智能终端的性能,需要进一步提高LPDDR2 SDRAM的访问效率。
    参见图1所示的SDRAM结构示意图,SDRAM内存芯片具有多个存储阵列bank,各个bank之间互相独立,允许并行访问,每个存储单元在bank中对应一个行地址row和一个列地址column,每个bank对应一个用于存储行数据的缓冲器。每个访问存储器的访存命令可以被分解成三个子命令:分别为预充电子命令(precharge)、激活子命令(activate)和列存取子命令(columnaccess),只有这些子命令才能被SDRAM识别,其中,所述预充电子命令用于关闭所要访问的bank中先前打开的行以将先前打开行中的数据从缓冲器中清除,所述激活子命令用于激活所要访存的bank和该bank中的行以将该行数据缓存在缓冲器中,所述列存取子命令用于从缓冲器中的某一列读取数据或向缓冲器中的某一列写入数据。
    为了提高访问存储器的效率,可利用控制器对SDRAM的访问操作进行调度,现有方法如下:
    方式一:每次执行访问命令后,保持打开被访问bank的行,若当前访问命令用于访问当前打开的行,则只执行列存取子命令,若当前访问命令用于访问新的一行,则依次执行预充电子命令、激活子命令和列存取子命令。
    方式二:对于每个访问命令,均执行一遍预充电子命令、激活子命令和列存取子命令。
    方式三:结合上述两种方式,根据应用行为进行分类,对存储密集型(访存命令较多)且空间局部性高(较多访问同一行连续地址的操作)的应用采用第一种方式,对存储非密集型(访存命令较稀少)的和空间局部性较低(访存行较分散的)的应用采用第二种方式。
    对于上述三种方式,分别存在以下缺陷:
    对于存储非密集型的应用,若采用第一种方式,需要长时间打开当前行,将造成一定的功耗,对存储密集型且空间局部性较低的应用,若采用第一种方式,需要判断所要访问的行与当前打开行是否相同、且需要不断打开、关闭当前行,同样会造成一定的功耗;对于空间局部性高的应用,当访问连续行地址时,若采用第二种方式,如果每次都重新关闭、打开当前行,不但会造成一定的功耗,还会较大的降低访问效率;若采用第三种方式,需要在运行过程中识别应用的行为,然后把应用分类,再分别采取不同的行操作方式,这种方法步骤较复杂。
    发明内容
    有鉴于此,本发明实施例的主要目的在于提供一种存储器的访问方法及装置,以实现提高存储器的访问效率、节省功耗的目的。
    为实现上述目的,本发明提供了一种存储器的访问方法,所述存储器包括至少两个存储阵列,每个存储阵列对应分配一个缓冲区,所述缓冲区中存储了用于访问对应存储阵列的访问命令,所述访问命令按照接收顺序依次存储于对应缓冲区中、且存储顺序与对应缓冲区中缓冲单元的排列顺序相同,所述缓冲区被划分为至少一个缓冲区间,所述方法包括:
    对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间,其中,选取缓冲区间中存储有未执行的访问命令、且与其它缓冲区间相比为最早存储 访问命令的缓冲区间,所述访问命令中携带了所要访问的存储阵列的行地址;
    遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,并将当前获取的命令组作为待执行命令组,其中,所述命令组中的所有访问命令携带了相同行地址;
    按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,以便所述存储器执行获取的子命令,其中,所述待执行命令组中每个访问命令之间按获取顺序发送,所述待执行命令组中第一个获取的访问命令被分解成执行顺序为预充电子命令、激活子命令和列存取子命令的三个子命令,所述待执行命令组中其它每个访问命令均分解为列存取子命令。
    优先地,所述遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,包括:
    按照所述选取缓冲区间中缓冲单元的排列顺序,从所述选取缓冲区间中获取第一个未执行的携带了第一行地址的第一访问命令,所述第一访问命令存储于所述选取缓冲区间中的第一缓冲单元中;
    从所述第一缓冲单元后的所有缓冲单元中,依次获取携带所述第一行地址的未执行访问命令,以获取由携带所述第一行地址的所有访问命令组成的第一命令组;
    判断所述选取缓冲区间中是否仍存在未执行的访问命令,如果是,则执行按照所述选取缓冲区间中缓冲单元的排列顺序从所述选取缓冲区间中获取第一个未执行的携带了第二行地址的第二访问命令的步骤,以获取由携带所述第二行地址的所有访问命令组成的第二命令组,如果否,则继续执行所述对于每个存储有未执行访问命令的缓冲区从中选取一个缓冲区间的步骤。
    优先地,所述按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,包括:
    获取每个缓冲区中未执行访问命令的数目,并将所述获取的数目递减排序,按照排序结果确定各个待执行命令组之间的优先级顺序;
    向所述存储器发送第一命令的预充电子命令,所述第一命令为第一优先级的待执行命令组中的第一个未执行访问命令;
    在所述第一命令的预充电子命令与所述第一命令的激活子命令之间的第 一发送间隔时间内,向所述存储器发送第二命令的预充电子命令,所述第二命令为第二优先级的待执行命令组中的访问命令;
    在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时到达所述第一发送间隔时间,则向所述存储器发送所述第一命令的激活子命令,在所述第一命令的激活子命令与所述第一命令的列存取子命令之间的第三发送间隔时间内,执行第三命令的待执行子命令,所述第三命令为在所述第一优先级待执行命令组后的所有待执行命令组中满足时序要求且优先级最高的待执行命令组,所述满足时序要求为计时到达所述待执行子命令与所述待执行子命令之前子命令之间的发送时间间隔;
    在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时未到达所述第一发送间隔时间,则向所述存储器发送第四命令的预充电子命令,所述第四命令为第三优先级的待执行命令组中的访问命令;
    其中,所述第一优先级、所述第二优先级和所述第三优先级的优先级别依次递减;
    按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令;或者,按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令,其中,每个待执行命令组中的各个列存取子命令依次执行、且每两个列存取子命令之间满足发送间隔时间。
    优先地,在所述对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间前,所述方法还包括:
    从协议总线接收访问命令;
    若所述访问命令用于向所述存储器写入数据,则为所述访问命令和所要写入的数据分别配置第一标识,并将配置后的访问命令发送至对应的缓冲区中且将配置后的数据发送至数据传输???;在向所述存储器发送所述访问命令的列存取子命令时,向所述数据传输??榉⑺退龅谝槐晔?,以使所述数据传输??楦菟龅谝槐晔蹲急杆鏊慈氲氖?,将准备好的数据发送至所述存储器;
    若所述访问命令用于读取所述存储器中的数据,则为所述访问命令配置第 二标识,并将配置后的访问命令发送至对应的缓冲区中;在向所述存储器发送所述访问命令的列存取子命令后,利用所述数据传输??榻邮账龃娲⑵鞣祷氐氖莶⑽龇祷氐氖菖渲盟龅诙晔?;根据所述第二标识将所述返回的数据按照所述访问命令的接收顺序发送至所述协议总线。
    优先地,所述将配置后的访问命令发送至对应的缓冲区中,包括:
    对所述访问命令进行译码,以提取所述访问命令中的存储阵列地址,并根据所述存储阵列地址,将所述访问命令存储于对应分配的缓冲区中。
    优先地,每个缓冲区对应分配一个第一寄存器,所述第一寄存器的每个存储单元用于分别存储对应缓冲区中每个访问命令的执行状态,所述方法包括:
    当将所述访问命令存储在对应缓冲区中时,在所述缓冲区对应的第一寄存器中将所述访问命令标识为未执行状态;
    当所述访问命令的所有子命令被发送至所述存储器后,在所述缓冲区对应的第一寄存器中将所述访问命令标识为已执行状态。
    优先地,每个缓冲区对应分配一个第二寄存器;对于从所述选取缓冲区间中获取的每个访问命令,按照下述方法分解获取的访问命令:
    将获取访问命令携带的行地址与对应第二寄存器中存储的行地址进行比较,所述对应第二寄存器中存储的行地址为上次获取的访问命令的行地址;
    如果比较结果不同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为预充电子命令、激活子命令和列存取子命令;
    如果比较结果相同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为列存取子命令。
    本发明实施例还提供了一种存储器的访问装置,所述存储器包括至少两个存储阵列,每个存储阵列对应分配一个缓冲区,所述缓冲区中存储了用于访问对应存储阵列的访问命令,所述访问命令按照接收顺序依次存储于对应缓冲区中、且存储顺序与对应缓冲区中缓冲单元的排列顺序相同,所述缓冲区被划分为至少一个缓冲区间,所述装置包括:
    缓冲区选取???,用于对于每个存储有未执行访问命令的缓冲区,从中选 取一个缓冲区间,其中,选取缓冲区间中存储有未执行的访问命令、且与其它缓冲区间相比为最早存储访问命令的缓冲区间,所述访问命令中携带了所要访问的存储阵列的行地址;
    命令组获取???,用于遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,并将当前获取的命令组作为待执行命令组,其中,所述命令组中的所有访问命令携带了相同行地址;
    子命令调度???,用于按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,以便所述存储器执行获取的子命令,其中,所述待执行命令组中每个访问命令之间按获取顺序发送,所述待执行命令组中第一个获取的访问命令被分解成执行顺序为预充电子命令、激活子命令和列存取子命令的三个子命令,所述待执行命令组中其它每个访问命令均分解为列存取子命令。
    优先地,所述命令组获取???,包括:
    第一获取子???,用于按照所述选取缓冲区间中缓冲单元的排列顺序,从所述选取缓冲区间中获取第一个未执行的携带了第一行地址的第一访问命令,所述第一访问命令存储于所述选取缓冲区间中的第一缓冲单元中;
    第二获取子???,用于从所述第一缓冲单元后的所有缓冲单元中,依次获取携带所述第一行地址的未执行访问命令,以获取由携带所述第一行地址的所有访问命令组成的第一命令组;
    判断子???,用于判断所述选取缓冲区间中是否仍存在未执行的访问命令;
    继续获取???,用于当所述判断子??榕卸系玫降乃鲅∪』撼迩渲腥源嬖谖粗葱械姆梦拭钍?,执行按照所述选取缓冲区间中缓冲单元的排列顺序从所述选取缓冲区间中获取第一个未执行的携带了第二行地址的第二访问命令的步骤,以获取由携带所述第二行地址的所有访问命令组成的第二命令组,如果否,则继续利用所述缓冲区选取??橹葱兴龆杂诿扛龃娲⒂形粗葱蟹梦拭畹幕撼迩?,从中选取一个缓冲区间的步骤。
    优先地,所述子命令调度???,包括:
    排序子???,用于获取每个缓冲区中未执行访问命令的数目,并将所述获 取的数目递减排序,按照排序结果确定各个待执行命令组之间的优先级顺序;
    第一发送子???,用于向所述存储器发送第一命令的预充电子命令,所述第一命令为第一优先级的待执行命令组中的第一个未执行访问命令;
    第二发送子???,用于在所述第一命令的预充电子命令与所述第一命令的激活子命令之间的第一发送间隔时间内,向所述存储器发送第二命令的预充电子命令,所述第二命令为第二优先级的待执行命令组中的访问命令;
    第三发送子???,用于在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时到达所述第一发送间隔时间,则向所述存储器发送所述第一命令的激活子命令,在所述第一命令的激活子命令与所述第一命令的列存取子命令之间的第三发送间隔时间内,执行第三命令的待执行子命令,所述第三命令为在所述第一优先级待执行命令组后的所有待执行命令组中满足时序要求且优先级最高的待执行命令组,所述满足时序要求为计时到达所述待执行子命令与所述待执行子命令之前子命令之间的发送时间间隔;
    第四发送子???,用于在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时未到达所述第一发送间隔时间,则向所述存储器发送第四命令的预充电子命令,所述第四命令为第三优先级的待执行命令组中的访问命令;
    其中,所述第一优先级、所述第二优先级和所述第三优先级的优先级别依次递减;
    继续发送子???,用于按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令;或者,按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令,其中,每个待执行命令组中的各个列存取子命令依次执行、且每两个列存取子命令之间满足发送间隔时间。
    优先地,所述装置还包括:
    命令接收???,用于在所述缓冲区选取??槎杂诿扛龃娲⒂形粗葱蟹梦拭畹幕撼迩?,从中选取一个缓冲区间前,从协议总线接收访问命令;
    第一发送???,用于若所述命令接收??榻邮盏姆梦拭钣糜谙蛩龃娲⑵餍慈胧?,则为所述访问命令和所要写入的数据分别配置第一标识,并将配 置后的访问命令发送至对应的缓冲区中且将配置后的数据发送至数据传输???;
    数据发送???,用于在所述子命令调度??橄蛩龃娲⑵鞣⑺退雒罱邮漳?榻邮盏姆梦拭畹牧写嫒∽用钍?,向所述数据传输??榉⑺退龅谝槐晔?;
    所述数据传输???,用于根据所述数据发送??榉⑺偷牡谝槐晔蹲急杆鏊慈氲氖?,将准备好的数据发送至所述存储器;
    第二发送???,用于若所述子命令接收??榻邮盏姆梦拭钣糜诙寥∷龃娲⑵髦械氖?,则为所述访问命令配置第二标识,并将配置后的访问命令发送至对应的缓冲区中;
    所述数据传输???,用于在所述子命令调度??橄蛩龃娲⑵鞣⑺退雒罱邮漳?榻邮盏姆梦拭畹牧写嫒∽用詈?,接收所述存储器返回的数据并为所述返回的数据配置所述第二标识,根据所述第二标识将所述返回的数据按照所述访问命令的接收顺序发送至所述协议总线。
    优先地,所述第一发送??榛蛩龅诙⑺湍??,包括:
    译码子???,用于对所述配置后的访问命令进行译码,以提取所述访问命令中的存储阵列地址;
    发送子???,用于根据所述存储阵列地址,将所述访问命令存储于对应分配的缓冲区中。
    优先地,每个缓冲区对应分配一个第一寄存器,所述第一寄存器的每个存储单元用于分别存储对应缓冲区中每个访问命令的执行状态,所述装置包括:
    第一状态标记???,用于当所述发送子??榻龇梦拭畲娲⒃诙杂撼迩惺?,在所述缓冲区对应的第一寄存器中将所述访问命令标识为未执行状态;
    第二状态标记???,用于当所述访问命令的所有子命令被发送至所述存储器后,在所述缓冲区对应的第一寄存器中将所述访问命令标识为已执行状态。
    优先地,每个缓冲区对应分配一个第二寄存器;所述装置还包括:命令分解???,用于对于从所述选取缓冲区间中获取的每个访问命令,按照下述方法分解获取的访问命令:
    将获取访问命令携带的行地址与对应第二寄存器中存储的行地址进行比较,所述对应第二寄存器中存储的行地址为上次获取的访问命令的行地址;
    如果比较结果不同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为预充电子命令、激活子命令和列存取子命令;
    如果比较结果相同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为列存取子命令。
    本发明实施例提供的存储器的访问方法及装置,为每个存储阵列对应分配一个缓冲区,将访问同一存储阵列的所有访问命令存储在同一缓冲区内,并把每个缓冲区划分为多个缓冲区间,对于每个缓冲区间,使其存储的具有相同行号的访问命令按顺序执行,在此期间便不必频繁关闭、打开存储阵列的当前行,这样不但可以兼顾连续访问同一行的情况,也可以在出现多行访问时先执行同一行的访问操作,从而不但提高了存储器的访问效率,而且节省了功耗。
    附图说明
    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    图1为现有技术中SDRAM结构示意图;
    图2为本发明实施例存储器的控制架构示意图;
    图3为本发明实施例存储器的访问方法的流程示意图;
    图4为本发明实施例缓冲区划分示意图之一;
    图5为本发明实施例缓冲区划分示意图之二;
    图6为本发明实施例访问命令并行执行示意图;
    图7为本发明实施存储器的访问装置的结构示意图。
    具体实施方式
    为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明 实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例?;诒痉⒚髦械氖凳├?,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明?;さ姆段?。
    在本发明实施例中,被访问的存储器可以是LPDDR2 SDRAM,也可以是其它类型的存储器,在此不做限制。其中,所述存储器包括至少两个存储阵列,每个存储阵列对应分配一个缓冲区,所述缓冲区中存储了用于访问对应存储阵列的访问命令,所述访问命令按照接收顺序依次存储于对应缓冲区中、且存储顺序与对应缓冲区中缓冲单元的排列顺序相同,所述缓冲区被划分为至少一个缓冲区间。
    为方便理解上述内容,参见图2所示的存储器的控制架构示意图,假设图中存储器包括8个存储阵列Bank0、Bank1……Bank7,每个存储器对应分配一个控制器,即Bank0控制器、Bank1控制器……Bank7控制器,控制器间相互独立,且每个控制器包括行调度???、命令分解??楹妥用畲淠??。每个行调度??橹杏幸桓龅幕撼迩?,其中,行调度???中的缓冲区0用于存储Bank0的访问命令,行调度???中的缓冲区1用于存储Bank1的访问命令……行调度???中的缓冲区7用于存储Bank7的访问命令。另外,每个缓冲区包含相同数量的缓冲单元(例如,缓冲单元个数为64),其中,缓冲区0的存储规律为:Bank0的第1个访问命令被存储在缓冲区0的第1个缓冲单元中,Bank0的第2个访问命令被存储在缓冲区0的第2个缓冲单元中,依次类推,当Bank0的第64个访问命令被存储在缓冲区0的第64个缓存单元中时,此时将产生满标志以暂停访问命令进入缓冲区0,只有当缓冲区0中64个访问命令全部执行完毕后,再将Bank0的第65个访问命令存储在缓冲区0的第0个缓冲单元中,其它缓冲区的缓冲规律同缓冲区0一样,在此不再赘述。
    参见图3,为本发明实施例提供的存储器的访问方法的流程示意图,该方法包括:
    步骤301:对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间,其中,选取缓冲区间中存储有未执行的访问命令、且与其它缓冲区间相 比为最早存储访问命令的缓冲区间,所述访问命令中携带了所要访问的存储阵列的行地址。
    在本发明实施例中,每个缓冲区对应分配一个第一寄存器,所述第一寄存器的每个存储单元用于分别存储对应缓冲区中每个访问命令的执行状态;当将所述访问命令存储在对应缓冲区中时,在所述缓冲区对应的第一寄存器中将所述访问命令标识为未执行状态;当所述访问命令的所有子命令被发送至所述存储器后,在所述缓冲区对应的第一寄存器中将所述访问命令标识为已执行状态。具体实现时,可以为每个缓冲区的每个缓冲单元增加一个标志位,具体地,若每个缓冲区的缓冲单元个数为64,则可以为每个缓冲区建立一个64位的寄存器,一一对应存储每个缓冲单元的标志位,标志位为1表示未执行,标志位为0表示已执行,没有使用的缓冲单元的标志位默认为0。
    本发明实施例可以利用图2所示的行调度??槭迪植街?01,为便于说明步骤301,参见图4所示的缓冲区划分示意图之一。按照访问命令的接收顺序,各个访问命令从左到右依次存储于该缓冲区中,1代表未执行的访问命令,0代表没有使用的缓冲单元。假设该缓冲区包括64个缓冲单元且被划分为8个缓冲区间,每个缓冲区间包括8个缓冲单元(需要说明的是,本发明实施例可以改变缓冲区的缓冲单元数,也可以改变划分的缓冲区间的缓冲单元数),则第1个缓冲区间为存储有未执行访问命令、且与其它缓冲区间相比为最早存储访问命令的缓冲区间,所以将第1个缓冲区间作为最先选取的缓冲区间,待第1个缓冲区间内的所有访问命令被执行后,再选取第2个缓冲区间,依次类推。
    步骤302:遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,并将当前获取的命令组作为待执行命令组,其中,所述命令组中的所有访问命令携带了相同行地址。
    在步骤302中,主要是利用图2中的行调度??榇铀鲅∪』撼迩渲醒∪∮糜诜梦释唬拢幔睿胪恍械乃蟹梦拭?,以便依次执行这些访问命令。为便于说明步骤302,现举例说明,参见图4,对于最先选取的第1个缓冲区间,首先从该缓冲区间中选取第1个未执行的访问命令即第1个缓冲单元中的访问命令,并确定该访问命令携带的行地址,然后,依次遍历剩下的7个缓冲单元中访问命令携带的行地址,假设第3、5、7个缓冲单元中的访问命令携带的行地 址与第1个缓冲单元中的访问命令携带的行地址相同,则将第1、3、5、7个缓冲单元中的访问命令作为一个命令组;对于每个存储有未执行访问命令的缓冲区,均按照上述方式获取命令组以作为第一个待执行命令组,待这些待执行命令组按照步骤303全部被执行后,这些访问命令的标志位均被置为0(参见图5所示的缓冲区划分示意图之二)。继续从第1个缓冲区间中选取携带另一相同行地址的命令组,参见图5,首先从该缓冲区间中选取第1个未执行的访问命令即为第2个缓冲单元中的访问命令,并确定该访问命令携带的行地址,依次遍历剩下的3个缓冲单元中访问命令携带的行地址,假设第4、6、8个缓冲单元中的访问命令携带的行地址与第2个缓冲单元中的访问命令携带的行地址相同,则将第2、4、6、8个缓冲单元中的访问命令作为一个命令组;对于每个存储有未执行访问命令的缓冲区,均按照上述方式获取命令组以作为第二个待执行命令组,待这些待执行命令组按照步骤303全部被执行后,这些访问命令的标志位均被置为0。待第1个缓存区间对应的标志位全部置0后,再将第2个缓存区间作为选取缓存区间,同样执行以上步骤,在此不再赘述。
    可见,基于上述举例,本发明实施例可按照下述方式实现步骤302:
    按照所述选取缓冲区间中缓冲单元的排列顺序,从所述选取缓冲区间中获取第一个未执行的携带了第一行地址的第一访问命令,所述第一访问命令存储于所述选取缓冲区间中的第一缓冲单元中;
    从所述第一缓冲单元后的所有缓冲单元中,依次获取携带所述第一行地址的未执行访问命令,以获取由携带所述第一行地址的所有访问命令组成的第一命令组;
    判断所述选取缓冲区间中是否仍存在未执行的访问命令,如果是,则执行按照所述选取缓冲区间中缓冲单元的排列顺序从所述选取缓冲区间中获取第一个未执行的携带了第二行地址的第二访问命令的步骤,以获取由携带所述第二行地址的所有访问命令组成的第二命令组,如果否,则继续执行步骤301。
    步骤303:按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,以便所述存储器执行获取的子命令,其中,所述待执行命令组中每个访问命令之间按获取顺序发送,所述待执行命令组中第一个获取的访问命令被分解成执行顺序为预充电子命令、激活子命令和列存取子命令的 三个子命令,所述待执行命令组中其它每个访问命令均分解为列存取子命令。
    在图2中,行调度??榇幼陨砘撼迩忻炕袢∫桓龇梦拭?,便将其送入命令分解??榉纸獬纱娲⑵髂芄皇侗鸬淖用?,然后将分解后的子命令送入子命令传输??榻信哦?,以等待仲裁器授权后才能执行排队在最前的子命令。
    其中,每个命令分解??橹饕凑障率龇绞椒纸庾用睿?
    本发明实施例为每个行调度??橹械幕撼迩杂Ψ峙湟桓龅诙拇嫫?,该第二寄存器设置在命令分解??橹?,所述第二寄存器用来存放上次从行调度??榇氲姆梦拭畹男械刂?。命令分解??榻鼻按氲姆梦拭钣爰拇嫫髦斜4娴男械刂方斜冉?,根据比较结果决定如何分解当前获取的访问命令,并用当前访问命令的行地址更新第二寄存器中的行地址。其中,如果行地址的比较结果不同,说明当前访问命令想要访问的行为上次打开行以外的行,则命令分解??榻鼻按氲姆梦拭罘纸獬勺用钤こ涞缱用睿ǎ校颍澹悖瑁幔颍纾?,简称P)、激活子命令(Activate,简称A)和列存取子命令(Columnaccess,简称C),并按照存储器SDRAM能识别的命令格式准备好每个子命令;如果行地址的比较结果相同,说明当前访问命令想要访问的行即为上次打开的行,则命令分解??榻鼻按氲姆梦拭罘纸獬闪写嫒∽用睿ǎ悖铮欤酰恚睿幔悖悖澹螅?,简称C),并按照存储器SDRAM能识别的命令格式准备好每个子命令。其中,列存取子命令C表示读操作或写操作??杉?,本发明实施例可按照下述方法分解访问命令:
    对于从所述选取缓冲区间中获取的每个访问命令,将获取访问命令携带的行地址与对应第二寄存器中存储的行地址进行比较,所述对应第二寄存器中存储的行地址为上次获取的访问命令的行地址;如果比较结果不同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为预充电子命令、激活子命令和列存取子命令;如果比较结果相同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为列存取子命令。
    在图2中,可利用仲裁器来仲裁各个子命令传输??榧涞挠畔燃?,并根据仲裁结果调度各个子命令传输??榧涞淖用畲渌承?,下面分别介绍所述子命令传输??橛胨鲋俨闷鞯墓δ?。
    子命令传输??榈墓δ苋缦拢?
    子命令传输??橥ü疲桑疲希ǎ疲椋颍螅簦桑睿穑酰簦疲椋颍螅簦希酰簦穑酰?,先入先出队列)结构缓存命令分解??榇氲淖用?,只有当仲裁器给予该子命令传输??橛畔热ǎǘ杂Γ穑颍椋铮颍椋簦?)且该子命令传输??槁闶毙蛞蠛蟛趴墒涑龌捍娴淖用?。其中,所述时序要求包括:从P到A需要时间间隔tRPpb,从A到具体读写操作C需要时间间隔tRCD,从读操作C到读操作C或者写操作C到写操作C需要时间间隔tCCD,从读操作C到写操作C需要时间间隔tRTW,从写操作C到读操作C需要时间间隔tWTR,从读操作C到P需要时间间隔tRTP,从写操作C到P需要时间间隔tWR。子命令传输??樵诩剖彼鍪奔浼涓舻墓讨?,可通过设置timing_counter?。?来表示下一个子命令还没满足时序要求,并产生时序没准备好的信号timing_ready=0给仲裁器,以告知仲裁器该子命令传输??榛共荒苁涑鱿乱桓鲎用?,此时,仲裁器可以将优先权转移给其它子命令传输??橹新阋蟮淖用畲淠?椋次核新闶毙蛞蟮淖用畲淠?橹杏畔燃蹲罡叩淖用畲淠?椋┮允涑銎渥用?,这样就可以让不同bank同时工作,以最大化总线利用率。
    所述仲裁器的功能如下:
    仲裁器的工作除了分别给初始化操作、刷新操作、读写操作判别优先权外,主要工作是在不同的bank控制器间动态分配优先权。具体地,比较各个行调度??橹形粗葱械姆梦拭钍睿酰?,num数最多的bank控制器的优先级最高,依次类推,num数最少的bank控制器的优先级最低,可以用一个寄存器来保存bank控制器间的优先级,需要说明的是,本发明实施例是在每执行完当前各个待执行命令组后,便进行一次num数比较以重新分配优先权,从而适应各个行调度??橹胁欢媳浠拿钍?。具体实现时,首先选择num数最多的bank控制器,在其子命令传输??槁闶毙蛞蠛蟛毙蜃急负玫男藕牛簦椋恚椋睿鏮ready=1给仲裁器,仲裁器给予该bank控制器优先权(priority=1),传输其子命令传输??橹信哦釉谇暗淖用?,并在下次其时序满足要求(timing_ready=1)时返回给予其优先权。当该bank控制器传输完该子命令后进入时序计时过程,即设置timing_counter?。?,此时产生没准备好的信号timing_ready=0给仲裁器,仲裁器就可以将优先权转移给满足时序要求(即产生了时序准备好的信号 timing_ready=1)的所有bank控制器中num最多的bank 控制器,控制其子命令传输??榇渥用??!?
    为了更方便的理解仲裁器所实现的功能,下面举例说明: 
    参见图2,假设行调度???的缓冲区0、行调度???的缓冲区1和行调度???的缓冲区2中存储有未执行访问命令,其它行调度??榈幕撼迩忻挥形粗葱蟹梦拭?,统计这三个缓冲区中未执行的命令数num,统计结果为:缓冲区0中num数最大,缓冲区1中num数次大,缓冲区2中num数最小,因此,从缓冲区0中获取的当前待执行命令组group0的优先级为第一优先级、从缓冲区1中获取的当前待执行命令组group1的优先级为第二优先级,从缓冲区2中获取的当前待执行命令组group2的优先级为第三优先级。假设group0中的访问命令数为3,group1中的访问命令数为2,group2中的访问命令为2,则每个待执行命令组的第一个访问命令被分解成了P、A和C,剩下的访问命令被分解成了C,如图6所示访问命令并行执行示意图?!?
    仲裁器具体按照以下方式仲裁子命令间的执行顺序: 
    首先执行group0的P操作,在group0的操作P和A之间需要满足一定的时序间隔,在这个时序间隔内就可以执行bank1的P操作,在group1的操作P和A之间也需要满足一定的时序间隔,在这个时序间隔内,如果group0满足了规定的时序要求就把优先权返回给bank0执行A操作,如果没满足就再转移优先权给group2执行P操作,依次类推,其中,在执行到每个组的C操作时,可以在每组两个C的间隔时间内执行其它组的子命令,也可以连续执行每组的C操作直到全部执行完再执行下一bank的C操作。按照此方式,图6中的执行顺序有两种方式,分别为: 
    方式一:执行顺序依次为:group0的P、group1的P、group2的P、group0的A、group1的A、group2的A、group0的第一个C、group1的第一个C、group2的第一个C、group0的第二个C、group1的第二个C、group2的第二个C、group0的第三个C,参见图6中上面的图?!?
    方式二:执行顺序依次为:group0的P、group1的P、group2的P、group0的A、group1的A、group2的A、group0的第一个C、group0的第二个C、group0的第三个C、group1的第一个C、group1的第二个C、group2的第一个C、group2 的第二个C,参见图6中下面的图。
    将从读操作C到写操作C需要的时间间隔tRTW或从写操作C到读操作C需要的时间间隔tWTR,与从读操作C到读操作C或者写操作C到写操作C需要的时间间隔tCCD相比可知,tRTW大于tCCD,tWTR大于tCCD。因此,当同一组的相邻两个C分别指代读操作和写操作时,由于访问同行的C操作间隔较长,因此可转移优先权,即可以在每组两个C的间隔时间内执行其它组的子命令;当同一组的相邻两个C分别指代读操作和读操作(或写操作和写操作)时,由于访问同行的C操作间隔较短,因此可不转移优先权,即可以连续执行每组的C操作直到全部执行完再执行下一bank的C操作。
    基于上述内容,本发明实施例可利用仲裁器实现步骤303,具体实现方式如下:
    获取每个缓冲区中未执行访问命令的数目,并将所述获取的数目递减排序,按照排序结果确定各个待执行命令组之间的优先级顺序;即,访问命令数目最多的缓冲区中的待执行命令组的优先级最高,访问命令数目最少的缓冲区中的待执行命令组的优先级最低,按照优先级别递减命名为:第一优先级、第二优先级、第三优先级……。
    向所述存储器发送第一命令的预充电子命令,所述第一命令为第一优先级的待执行命令组中的第一个未执行访问命令;
    在所述第一命令的预充电子命令与所述第一命令的激活子命令之间的第一发送间隔时间内,向所述存储器发送第二命令的预充电子命令,所述第二命令为第二优先级的待执行命令组中的访问命令;
    在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时到达所述第一发送间隔时间,则向所述存储器发送所述第一命令的激活子命令,在所述第一命令的激活子命令与所述第一命令的列存取子命令之间的第三发送间隔时间内,执行第三命令的待执行子命令,所述第三命令为在所述第一优先级待执行命令组后的所有待执行命令组中满足时序要求且优先级最高的待执行命令组,所述满足时序要求为计时到达所述待执行子命令与所述待执行子命令之前子命令之间的发送时间间隔;需要说明的 是,由于每个待执行命令组中的各个子命令的发送顺序已经确定,因此,所述待执行子命令为对应待执行命令组中下一个需要被执行的子命令。
    在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时未到达所述第一发送间隔时间,则向所述存储器发送第四命令的预充电子命令,所述第四命令为第三优先级的待执行命令组中的访问命令;
    其中,所述第一优先级、所述第二优先级和所述第三优先级的优先级别依次递减;
    按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令;或者,按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令,其中,每个待执行命令组中的各个列存取子命令依次执行、且每两个列存取子命令之间满足发送间隔时间。
    在图2中,AXI(Advanced eXtensible Interface,高级可扩展接口)接口??楦涸鸾邮眨粒兀尚樽芟叩男藕牛òǚ梦拭詈托词?,所述访问命令包括读访问命令和写访问命令,所述写数据为需要写入存储器的数据),AXI接口??橛闪礁觯疲桑疲献槌?,这两个FIFO分别缓冲访问命令和写数据。其中,AXI协议的特征是:地址/控制和数据通道是分离的、支持突发交易、支持乱序交易等,AXI协议给通过AXI总线发送的交易分配一个ID标签,协议要求具有相同ID的交易按顺序完成,而对具有不同ID的交易没有顺序限制,利用这一特性存储器就可以乱序返回读数据。因此,为了使具有相同ID标签交易的各个读数据按照读访问命令的接收顺序依次输出,AXI接口??榛刮邮盏拿扛龆练梦拭钆渲梦ㄒ坏模桑?,并将配置ID号的读访问命令送入控制器,此外,AXI接口??榛刮邮盏拿扛鲂捶梦拭詈托词菖渲孟嗤奈ㄒ唬桑?,并将配置ID号的写访问命令送入控制器且将配置ID号的写数据送入数据传输???。其中,所述数据传输??榘ㄐ词萃ǖ溃遥粒秃投潦萃ǖ溃疲桑疲?,因为仲裁器对访问命令的调度导致写数据乱序,所以用写数据通道RAM来缓存写数据,根据写数据ID和写访问命令ID相同这一特性,从写数据通道RAM中查找写访问命令对应的写数据。在本发明实施例中,数据传输??榫咛灏凑障率龇绞蕉列词荩?
    仲裁器向存储器发送写访问命令时会生成写请求准备信号给数据传输模 块以告知它准备数据,并且把写访问命令所带的ID号也发送给数据传输???。由于写访问命令和写数据的ID号相同,写数据存入RAM时直接用ID号作为各写数据在RAM中的地址,根据仲裁器发送的写访问命令的ID号来查询该ID号对应RAM地址,就可直接取出写数据。其中,写数据通过物理层(PHY)接口写入存储器中,写数据的采样信号dqs由物理层(PHY)接口产生,dqs边沿对齐写数据中央采样。
    仲裁器向存储器发送读访问命令时,向数据传输??榉⑺投燎肭笞急感藕藕投练梦拭畹模桑暮?。存储器接收到读访问命令的RL个时钟周期后才会输出数据,所述读请求准备信号用于使读输出通道FIFO计时RL个时钟周期后产生读使能信号,以在产生所述读使能信号后,在读输出通道FIFO入口处接收从SDRAM读出来的数据,然后把读访问命令的ID号附加在读出数据上并通过AXI接口??榇统鋈?。由于AXI总线支持乱序交易,而每个交易的ID号是唯一的且每个交易的每个读数据ID也是唯一的,即便读访问命令被乱序调度了,只要读出数据和读访问命令对应相同的ID号,就不需要对每个交易的各个读数据进行重排序,只需要根据读数据的ID号按照读访问命令的接收顺序依次返回总线即可。
    进一步地,基于上述内容可知,在步骤301之间,本发明实施例还包括:
    AXI接口??榇有樽芟呓邮辗梦拭?;
    若所述访问命令用于向所述存储器写入数据,则AXI接口??槲龇梦拭詈退慈氲氖莘直鹋渲玫谝槐晔?,并将配置后的访问命令发送至对应的缓冲区中且将配置后的数据发送至数据传输???;在仲裁器向所述存储器发送所述访问命令的列存取子命令时,向所述数据传输??榉⑺退龅谝槐晔?,以使所述数据传输??楦菟龅谝槐晔蹲急杆鏊慈氲氖?,将准备好的数据发送至所述存储器;
    若所述访问命令用于读取所述存储器中的数据,则AXI接口??槲龇梦拭钆渲玫诙晔?,并将配置后的访问命令发送至对应的缓冲区中;在仲裁器向所述存储器发送所述访问命令的列存取子命令后,利用所述数据传输??榻邮账龃娲⑵鞣祷氐氖莶⑽龇祷氐氖菖渲盟龅诙晔?;根据所述第二标识将所述返回的数据按照所述访问命令的接收顺序发送至所述协议总 线。
    需要说明的是,参见图2,AXI接口??橹饕ü娲⒄罅幸肼肽?榻梦拭罘⑺椭炼杂Φ幕撼迩械?。存储阵列译码??楦涸鹨肼?、提?。粒兀山涌谀?榇偷姆梦拭钪械模猓幔睿氲刂?,按照bank地址把各个命令分类到各行调度??榈幕撼迩?。具体地,存储阵列译码??樵诮邮盏椒梦拭詈?,对所述访问命令进行译码,以提取所述访问命令中的存储阵列地址,并根据所述存储阵列地址,将所述访问命令存储于对应分配的缓冲区中。
    本发明实施例提供的存储器的访问方法,为每个存储阵列对应分配一个缓冲区,将访问同一存储阵列的所有访问命令存储在同一缓冲区内,并把每个缓冲区划分为多个缓冲区间,对于每个缓冲区间,使其存储的具有相同行号的访问命令按顺序执行,在此期间便不必频繁关闭、打开存储阵列的当前行,这样不但可以兼顾连续访问同一行的情况,也可以在出现交叉行访问时先执行同一行的访问操作,从而不但提高了存储器的访问效率,而且节省了功耗。
    另外,图2中还包括初始化???、刷新??楹托菝吣??,这三个??榈墓δ芊直鹗牵?
    1、初始化(Initial)???
    初始化??橹饕瓿啥裕樱模遥粒椭心J郊拇嫫鞯某跏蓟问柚?,包括突发长度(burst length)、突发类型(bursttype)、读延迟时间(RL)、写延迟时间(WL)等。并控制SDRAM完成上电初始化动作,比如时钟使能信号CKE置高等待、复位(MRWReset)、ZQ校验等。初始化完成后,通过标志位init_done置高说明SDRAM初始化完成,控制器就可以进行正常的读写操作了。
    2、刷新(Refresh)???
    由于LPDDR2 SDRAM的存储单元由一个晶体管连接一个电容组成,电容存放数据信息,但电容会慢慢漏电,导致数据丢失,所以SDRAM必须不断刷新。刷新操作分为自刷新和自动刷新,自动刷新又分为针对每个bank的和所有bank的。根据内存芯片的规格,例如每隔3.9us刷新所有bank一遍。刷新操作不能打断当前正在进行的读写操作,需等待当前的读写操作完成后再执行刷新操作,所以设置刷新周期时要留有一点余量,否则数据可能因为没及时刷新而丢失。本发明采用自动刷新模式,便于控制,计时结束就自动刷新所有bank。 在收到刷新请求且没有读写操作正在进行时,控制器将阻止其他命令的执行,并发出预充电所有bank的命令,以保证所有bank都处于空闲(Idle)状态,经过tRPAB时间后发出刷新(Refresh)命令,刷新操作经过tRFCAB时间后刷新结束,所有bank进入Idle状态,等待接收正常命令。
    3、休眠(Power Down)???
    当CKE信号置低时进入休眠模式,当CKE信号置高时退出休眠模式,比如当初始化操作结束或完成请求后,在30个周期内如果没有出现SDRAM内存请求,该休眠??榭刂疲樱模遥粒徒胄菝吣J?,在接收到访存命令后,该??樵偈梗樱模遥粒屯顺鲂菝吣J?,进入正常读写模式,这样便可利用休眠??槭迪值凸墓芾?。
    4、物理层(PHY)接口???
    PHY(physicallayer,物理层)接口主要负责时钟的产生;为写数据产生中间对齐的采样信号dqs;为读操作时SDRAM返回的dqs信号延迟相位90°,使其与读数据中心对齐;并负责地址、数据、控制信号在控制器的单倍速率(仅上升沿或仅下降沿传输数据)和SDRAM的双倍(上升沿和下降沿都传输数据)速率之间转换。
    参见图7,为本发明实施例提供的存储器的访问装置的结构示意图,所述存储器包括至少两个存储阵列,每个存储阵列对应分配一个缓冲区,所述缓冲区中存储了用于访问对应存储阵列的访问命令,所述访问命令按照接收顺序依次存储于对应缓冲区中、且存储顺序与对应缓冲区中缓冲单元的排列顺序相同,所述缓冲区被划分为至少一个缓冲区间,所述装置包括:
    缓冲区选取???01,用于对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间,其中,选取缓冲区间中存储有未执行的访问命令、且与其它缓冲区间相比为最早存储访问命令的缓冲区间,所述访问命令中携带了所要访问的存储阵列的行地址;
    命令组获取???02,用于遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,并将当前获取的命令组作为待执行命令组,其中,所述命令组中的所有访问命令携带了相同行地址;
    子命令调度???03,用于按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,以便所述存储器执行获取的子命令,其中,所述待执行命令组中每个访问命令之间按获取顺序发送,所述待执行命令组中第一个获取的访问命令被分解成执行顺序为预充电子命令、激活子命令和列存取子命令的三个子命令,所述待执行命令组中其它每个访问命令均分解为列存取子命令。
    其中,所述命令组获取???02,包括:
    第一获取子???,用于按照所述选取缓冲区间中缓冲单元的排列顺序,从所述选取缓冲区间中获取第一个未执行的携带了第一行地址的第一访问命令,所述第一访问命令存储于所述选取缓冲区间中的第一缓冲单元中;
    第二获取子???,用于从所述第一缓冲单元后的所有缓冲单元中,依次获取携带所述第一行地址的未执行访问命令,以获取由携带所述第一行地址的所有访问命令组成的第一命令组;
    判断子???,用于判断所述选取缓冲区间中是否仍存在未执行的访问命令;
    继续获取???,用于当所述判断子??榕卸系玫降乃鲅∪』撼迩渲腥源嬖谖粗葱械姆梦拭钍?,执行按照所述选取缓冲区间中缓冲单元的排列顺序从所述选取缓冲区间中获取第一个未执行的携带了第二行地址的第二访问命令的步骤,以获取由携带所述第二行地址的所有访问命令组成的第二命令组,如果否,则继续利用所述缓冲区选取??橹葱兴龆杂诿扛龃娲⒂形粗葱蟹梦拭畹幕撼迩?,从中选取一个缓冲区间的步骤。
    其中,所述子命令调度???03,包括:
    排序子???,用于获取每个缓冲区中未执行访问命令的数目,并将所述获取的数目递减排序,按照排序结果确定每个缓冲区的待执行命令组之间的优先级顺序;
    第一发送子???,用于向所述存储器发送第一命令的预充电子命令,所述第一命令为第一优先级的待执行命令组中的第一个未执行访问命令;
    第二发送子???,用于在所述第一命令的预充电子命令与所述第一命令的激活子命令之间的第一发送间隔时间内,向所述存储器发送第二命令的预充电 子命令,所述第二命令为第二优先级的待执行命令组中的访问命令;
    第三发送子???,用于在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时到达所述第一发送间隔时间,则向所述存储器发送所述第一命令的激活子命令,在所述第一命令的激活子命令与所述第一命令的列存取子命令之间的第三发送间隔时间内,执行第三命令的待执行子命令,所述第三命令为在所述第一优先级待执行命令组后的所有待执行命令组中满足时序要求且优先级最高的待执行命令组,所述满足时序要求为计时到达所述待执行子命令与所述待执行子命令之前子命令之间的发送时间间隔;
    第四发送子???,用于在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时未到达所述第一发送间隔时间,则向所述存储器发送第四命令的预充电子命令,所述第四命令为第三优先级的待执行命令组中的访问命令;
    其中,所述第一优先级、所述第二优先级和所述第三优先级的优先级别依次递减;
    继续发送子???,用于按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令;或者,按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令,其中,每个待执行命令组中的各个列存取子命令依次执行、且每两个列存取子命令之间满足发送间隔时间。
    进一步地,所述装置还包括:
    命令接收???,用于在所述缓冲区选取??槎杂诿扛龃娲⒂形粗葱蟹梦拭畹幕撼迩?,从中选取一个缓冲区间前,从协议总线接收访问命令;
    第一发送???,用于若所述命令接收??榻邮盏姆梦拭钣糜谙蛩龃娲⑵餍慈胧?,则为所述访问命令和所要写入的数据分别配置第一标识,并将配置后的访问命令发送至对应的缓冲区中且将配置后的数据发送至数据传输???;
    数据发送???,用于在所述子命令调度??橄蛩龃娲⑵鞣⑺退雒罱邮漳?榻邮盏姆梦拭畹牧写嫒∽用钍?,向所述数据传输??榉⑺退龅谝槐晔?;
    所述数据传输???,用于根据所述数据发送??榉⑺偷牡谝槐晔蹲急杆鏊慈氲氖?,将准备好的数据发送至所述存储器;
    第二发送???,用于若所述子命令接收??榻邮盏姆梦拭钣糜诙寥∷龃娲⑵髦械氖?,则为所述访问命令配置第二标识,并将配置后的访问命令发送至对应的缓冲区中;
    所述数据传输???,用于在所述子命令调度??橄蛩龃娲⑵鞣⑺退雒罱邮漳?榻邮盏姆梦拭畹牧写嫒∽用詈?,接收所述存储器返回的数据并为所述返回的数据配置所述第二标识,根据所述第二标识将所述返回的数据按照所述访问命令的接收顺序发送至所述协议总线。
    其中,所述第一发送??榛蛩龅诙⑺湍??,包括:
    译码子???,用于对所述配置后的访问命令进行译码,以提取所述访问命令中的存储阵列地址;
    发送子???,用于根据所述存储阵列地址,将所述访问命令存储于对应分配的缓冲区中。
    另外,在本发明实施例中,每个缓冲区对应分配一个第一寄存器,所述第一寄存器的每个存储单元用于分别存储对应缓冲区中每个访问命令的执行状态,所述装置包括:
    第一状态标记???,用于当所述发送子??榻龇梦拭畲娲⒃诙杂撼迩惺?,在所述缓冲区对应的第一寄存器中将所述访问命令标识为未执行状态;
    第二状态标记???,用于当所述访问命令的所有子命令被发送至所述存储器后,在所述缓冲区对应的第一寄存器中将所述访问命令标识为已执行状态。
    另外,在本发明实施例中,每个缓冲区对应分配一个第二寄存器;所述装置还包括:命令分解???,用于对于从所述选取缓冲区间中获取的每个访问命令,按照下述方法分解获取的访问命令:
    将获取访问命令携带的行地址与对应第二寄存器中存储的行地址进行比较,所述对应第二寄存器中存储的行地址为上次获取的访问命令的行地址;如果比较结果不同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为预充电子命令、激活子命令和 列存取子命令;如果比较结果相同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为列存取子命令。
    本发明实施例提供的存储器的访问装置,为每个存储阵列对应分配一个缓冲区,将访问同一存储阵列的所有访问命令存储在同一缓冲区内,并把每个缓冲区划分为多个缓冲区间,对于每个缓冲区间,使其存储的具有相同行号的访问命令按顺序执行,在此期间便不必频繁关闭、打开存储阵列的当前行,这样不但可以兼顾连续访问同一行的情况,也可以在出现交叉行访问时先执行同一行的访问操作,从而不但提高了存储器的访问效率,而且节省了功耗。
    需要说明的是,本发明装置实施例中的各个???,可以按照实现功能与图2所示的功能??榻卸杂?,具体可参照上述方法实施例的相关介绍,在此不再赘述。
    需要说明的是,对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
    还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
    对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

    关于本文
    本文标题:一种存储器的访问方法及装置.pdf
    链接地址://www.4mum.com.cn/p-6116920.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 排列5开奖结果5 百家乐平台 浙江快乐12胆拖玩法介绍 河南11选5视频 发财树刮刮乐图片 北京快3必中 帝一娱乐分分彩走势图 王中王铁算盆四肖中特资料 柬埔寨兑换外币能赚钱吗 南宁股票配资公司 这期福彩中奖号码是多少 捕鱼游戏机技巧 陕西快乐十分开奖结果 新疆喜乐彩规则 陕西快乐10分钟走势图 北京十一选五开奖结果走势图