CN103927268A - 一种存储器的访问方法及装置 - Google Patents
一种存储器的访问方法及装置 Download PDFInfo
- Publication number
- CN103927268A CN103927268A CN201410138487.XA CN201410138487A CN103927268A CN 103927268 A CN103927268 A CN 103927268A CN 201410138487 A CN201410138487 A CN 201410138487A CN 103927268 A CN103927268 A CN 103927268A
- Authority
- CN
- China
- Prior art keywords
- order
- subcommand
- buffer zone
- visit order
- visit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000004913 activation Effects 0.000 claims abstract description 39
- 238000003860 storage Methods 0.000 claims description 75
- 230000005540 biological transmission Effects 0.000 claims description 73
- 238000009826 distribution Methods 0.000 claims description 18
- 230000000052 comparative effect Effects 0.000 claims description 15
- 238000003491 array Methods 0.000 claims description 6
- 230000003247 decreasing effect Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000007958 sleep Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005059 dormancy Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种存储器的访问方法和装置,所述方法包括:对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间;遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,并将当前获取的命令组作为待执行命令组,其中,所述命令组中的所有访问命令携带了相同行地址;按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,以便所述存储器执行获取的子命令,其中,所述待执行命令组中每个访问命令之间按获取顺序发送,所述待执行命令组中第一个获取的访问命令被分解成执行顺序为预充电子命令、激活子命令和列存取子命令的三个子命令,所述待执行命令组中其它每个访问命令均分解为列存取子命令。
Description
技术领域
本发明涉及存储器技术领域,尤其涉及一种存储器的访问方法及装置。
背景技术
随着人们对移动智能终端(如智能手机、平板电脑等)应用需求的不断提升,如何在保证移动终端体积小、外观灵巧等特性的前提下,降低终端功耗、提高终端性能,已经成为该领域的研究重点。近年来处理器技术不断发展,使得处理器速度明显提高,然而存储设备性能却提升较慢,导致终端性能的增长越来越受到存储设备性能的限制。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中的缓冲区0用于存储Bank0的访问命令,行调度模块1中的缓冲区1用于存储Bank1的访问命令……行调度模块7中的缓冲区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所示的行调度模块实现步骤301,为便于说明步骤301,参见图4所示的缓冲区划分示意图之一。按照访问命令的接收顺序,各个访问命令从左到右依次存储于该缓冲区中,1代表未执行的访问命令,0代表没有使用的缓冲单元。假设该缓冲区包括64个缓冲单元且被划分为8个缓冲区间,每个缓冲区间包括8个缓冲单元(需要说明的是,本发明实施例可以改变缓冲区的缓冲单元数,也可以改变划分的缓冲区间的缓冲单元数),则第1个缓冲区间为存储有未执行访问命令、且与其它缓冲区间相比为最早存储访问命令的缓冲区间,所以将第1个缓冲区间作为最先选取的缓冲区间,待第1个缓冲区间内的所有访问命令被执行后,再选取第2个缓冲区间,依次类推。
步骤302:遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,并将当前获取的命令组作为待执行命令组,其中,所述命令组中的所有访问命令携带了相同行地址。
在步骤302中,主要是利用图2中的行调度模块从所述选取缓冲区间中选取用于访问同一Bank同一行的所有访问命令,以便依次执行这些访问命令。为便于说明步骤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中,行调度模块从自身缓冲区中每获取一个访问命令,便将其送入命令分解模块分解成存储器能够识别的子命令,然后将分解后的子命令送入子命令传输模块进行排队,以等待仲裁器授权后才能执行排队在最前的子命令。
其中,每个命令分解模块主要按照下述方式分解子命令:
本发明实施例为每个行调度模块中的缓冲区对应分配一个第二寄存器,该第二寄存器设置在命令分解模块中,所述第二寄存器用来存放上次从行调度模块传入的访问命令的行地址。命令分解模块将当前传入的访问命令与寄存器中保存的行地址进行比较,根据比较结果决定如何分解当前获取的访问命令,并用当前访问命令的行地址更新第二寄存器中的行地址。其中,如果行地址的比较结果不同,说明当前访问命令想要访问的行为上次打开行以外的行,则命令分解模块将当前传入的访问命令分解成子命令预充电子命令(Precharge,简称P)、激活子命令(Activate,简称A)和列存取子命令(Columnaccess,简称C),并按照存储器SDRAM能识别的命令格式准备好每个子命令;如果行地址的比较结果相同,说明当前访问命令想要访问的行即为上次打开的行,则命令分解模块将当前传入的访问命令分解成列存取子命令(columnaccess,简称C),并按照存储器SDRAM能识别的命令格式准备好每个子命令。其中,列存取子命令C表示读操作或写操作。可见,本发明实施例可按照下述方法分解访问命令:
对于从所述选取缓冲区间中获取的每个访问命令,将获取访问命令携带的行地址与对应第二寄存器中存储的行地址进行比较,所述对应第二寄存器中存储的行地址为上次获取的访问命令的行地址;如果比较结果不同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为预充电子命令、激活子命令和列存取子命令;如果比较结果相同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为列存取子命令。
在图2中,可利用仲裁器来仲裁各个子命令传输模块间的优先级,并根据仲裁结果调度各个子命令传输模块间的子命令传输顺序,下面分别介绍所述子命令传输模块与所述仲裁器的功能。
子命令传输模块的功能如下:
子命令传输模块通过FIFO(FirstInputFirstOutput,先入先出队列)结构缓存命令分解模块传入的子命令,只有当仲裁器给予该子命令传输模块优先权(对应priority=1)且该子命令传输模块满足时序要求后才可输出缓存的子命令。其中,所述时序要求包括:从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!=0来表示下一个子命令还没满足时序要求,并产生时序没准备好的信号timing_ready=0给仲裁器,以告知仲裁器该子命令传输模块还不能输出下一个子命令,此时,仲裁器可以将优先权转移给其它子命令传输模块中满足要求的子命令传输模块(即为:所有满足时序要求的子命令传输模块中优先级最高的子命令传输模块)以输出其子命令,这样就可以让不同bank同时工作,以最大化总线利用率。
所述仲裁器的功能如下:
仲裁器的工作除了分别给初始化操作、刷新操作、读写操作判别优先权外,主要工作是在不同的bank控制器间动态分配优先权。具体地,比较各个行调度模块中未执行的访问命令数num,num数最多的bank控制器的优先级最高,依次类推,num数最少的bank控制器的优先级最低,可以用一个寄存器来保存bank控制器间的优先级,需要说明的是,本发明实施例是在每执行完当前各个待执行命令组后,便进行一次num数比较以重新分配优先权,从而适应各个行调度模块中不断变化的命令数。具体实现时,首先选择num数最多的bank控制器,在其子命令传输模块满足时序要求后产生时序准备好的信号timing_ready=1给仲裁器,仲裁器给予该bank控制器优先权(priority=1),传输其子命令传输模块中排队在前的子命令,并在下次其时序满足要求(timing_ready=1)时返回给予其优先权。当该bank控制器传输完该子命令后进入时序计时过程,即设置timing_counter!=0,此时产生没准备好的信号timing_ready=0给仲裁器,仲裁器就可以将优先权转移给满足时序要求(即产生了时序准备好的信号timing_ready=1)的所有bank控制器中num最多的bank 控制器,控制其子命令传输模块传输子命令。
为了更方便的理解仲裁器所实现的功能,下面举例说明:
参见图2,假设行调度模块0的缓冲区0、行调度模块1的缓冲区1和行调度模块2的缓冲区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协议总线的信号(包括访问命令和写数据,所述访问命令包括读访问命令和写访问命令,所述写数据为需要写入存储器的数据),AXI接口模块由两个FIFO组成,这两个FIFO分别缓冲访问命令和写数据。其中,AXI协议的特征是:地址/控制和数据通道是分离的、支持突发交易、支持乱序交易等,AXI协议给通过AXI总线发送的交易分配一个ID标签,协议要求具有相同ID的交易按顺序完成,而对具有不同ID的交易没有顺序限制,利用这一特性存储器就可以乱序返回读数据。因此,为了使具有相同ID标签交易的各个读数据按照读访问命令的接收顺序依次输出,AXI接口模块还为接收的每个读访问命令配置唯一的ID,并将配置ID号的读访问命令送入控制器,此外,AXI接口模块还为接收的每个写访问命令和写数据配置相同的唯一ID,并将配置ID号的写访问命令送入控制器且将配置ID号的写数据送入数据传输模块。其中,所述数据传输模块包括写数据通道RAM和读数据通道FIFO,因为仲裁器对访问命令的调度导致写数据乱序,所以用写数据通道RAM来缓存写数据,根据写数据ID和写访问命令ID相同这一特性,从写数据通道RAM中查找写访问命令对应的写数据。在本发明实施例中,数据传输模块具体按照下述方式读写数据:
仲裁器向存储器发送写访问命令时会生成写请求准备信号给数据传输模块以告知它准备数据,并且把写访问命令所带的ID号也发送给数据传输模块。由于写访问命令和写数据的ID号相同,写数据存入RAM时直接用ID号作为各写数据在RAM中的地址,根据仲裁器发送的写访问命令的ID号来查询该ID号对应RAM地址,就可直接取出写数据。其中,写数据通过物理层(PHY)接口写入存储器中,写数据的采样信号dqs由物理层(PHY)接口产生,dqs边沿对齐写数据中央采样。
仲裁器向存储器发送读访问命令时,向数据传输模块发送读请求准备信号和读访问命令的ID号。存储器接收到读访问命令的RL个时钟周期后才会输出数据,所述读请求准备信号用于使读输出通道FIFO计时RL个时钟周期后产生读使能信号,以在产生所述读使能信号后,在读输出通道FIFO入口处接收从SDRAM读出来的数据,然后把读访问命令的ID号附加在读出数据上并通过AXI接口模块传送出去。由于AXI总线支持乱序交易,而每个交易的ID号是唯一的且每个交易的每个读数据ID也是唯一的,即便读访问命令被乱序调度了,只要读出数据和读访问命令对应相同的ID号,就不需要对每个交易的各个读数据进行重排序,只需要根据读数据的ID号按照读访问命令的接收顺序依次返回总线即可。
进一步地,基于上述内容可知,在步骤301之间,本发明实施例还包括:
AXI接口模块从协议总线接收访问命令;
若所述访问命令用于向所述存储器写入数据,则AXI接口模块为所述访问命令和所要写入的数据分别配置第一标识,并将配置后的访问命令发送至对应的缓冲区中且将配置后的数据发送至数据传输模块;在仲裁器向所述存储器发送所述访问命令的列存取子命令时,向所述数据传输模块发送所述第一标识,以使所述数据传输模块根据所述第一标识准备所述所要写入的数据,将准备好的数据发送至所述存储器;
若所述访问命令用于读取所述存储器中的数据,则AXI接口模块为所述访问命令配置第二标识,并将配置后的访问命令发送至对应的缓冲区中;在仲裁器向所述存储器发送所述访问命令的列存取子命令后,利用所述数据传输模块接收所述存储器返回的数据并为所述返回的数据配置所述第二标识;根据所述第二标识将所述返回的数据按照所述访问命令的接收顺序发送至所述协议总线。
需要说明的是,参见图2,AXI接口模块主要通过存储阵列译码模块将访问命令发送至对应的缓冲区中的。存储阵列译码模块负责译码、提取AXI接口模块传送的访问命令中的bank地址,按照bank地址把各个命令分类到各行调度模块的缓冲区中。具体地,存储阵列译码模块在接收到访问命令后,对所述访问命令进行译码,以提取所述访问命令中的存储阵列地址,并根据所述存储阵列地址,将所述访问命令存储于对应分配的缓冲区中。
本发明实施例提供的存储器的访问方法,为每个存储阵列对应分配一个缓冲区,将访问同一存储阵列的所有访问命令存储在同一缓冲区内,并把每个缓冲区划分为多个缓冲区间,对于每个缓冲区间,使其存储的具有相同行号的访问命令按顺序执行,在此期间便不必频繁关闭、打开存储阵列的当前行,这样不但可以兼顾连续访问同一行的情况,也可以在出现交叉行访问时先执行同一行的访问操作,从而不但提高了存储器的访问效率,而且节省了功耗。
另外,图2中还包括初始化模块、刷新模块和休眠模块,这三个模块的功能分别是:
1、初始化(Initial)模块
初始化模块主要完成对SDRAM中模式寄存器的初始化参数设置,包括突发长度(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内存请求,该休眠模块控制SDRAM进入休眠模式,在接收到访存命令后,该模块再使SDRAM退出休眠模式,进入正常读写模式,这样便可利用休眠模块实现低功耗管理。
4、物理层(PHY)接口模块
PHY(physicallayer,物理层)接口主要负责时钟的产生;为写数据产生中间对齐的采样信号dqs;为读操作时SDRAM返回的dqs信号延迟相位90°,使其与读数据中心对齐;并负责地址、数据、控制信号在控制器的单倍速率(仅上升沿或仅下降沿传输数据)和SDRAM的双倍(上升沿和下降沿都传输数据)速率之间转换。
参见图7,为本发明实施例提供的存储器的访问装置的结构示意图,所述存储器包括至少两个存储阵列,每个存储阵列对应分配一个缓冲区,所述缓冲区中存储了用于访问对应存储阵列的访问命令,所述访问命令按照接收顺序依次存储于对应缓冲区中、且存储顺序与对应缓冲区中缓冲单元的排列顺序相同,所述缓冲区被划分为至少一个缓冲区间,所述装置包括:
缓冲区选取模块701,用于对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间,其中,选取缓冲区间中存储有未执行的访问命令、且与其它缓冲区间相比为最早存储访问命令的缓冲区间,所述访问命令中携带了所要访问的存储阵列的行地址;
命令组获取模块702,用于遍历所述选取缓冲区间中存储的所有未执行的访问命令,依次获取每个命令组,并将当前获取的命令组作为待执行命令组,其中,所述命令组中的所有访问命令携带了相同行地址;
子命令调度模块703,用于按照预设规则将各个待执行命令组中每个访问命令的子命令,依次送入所述存储器,以便所述存储器执行获取的子命令,其中,所述待执行命令组中每个访问命令之间按获取顺序发送,所述待执行命令组中第一个获取的访问命令被分解成执行顺序为预充电子命令、激活子命令和列存取子命令的三个子命令,所述待执行命令组中其它每个访问命令均分解为列存取子命令。
其中,所述命令组获取模块702,包括:
第一获取子模块,用于按照所述选取缓冲区间中缓冲单元的排列顺序,从所述选取缓冲区间中获取第一个未执行的携带了第一行地址的第一访问命令,所述第一访问命令存储于所述选取缓冲区间中的第一缓冲单元中;
第二获取子模块,用于从所述第一缓冲单元后的所有缓冲单元中,依次获取携带所述第一行地址的未执行访问命令,以获取由携带所述第一行地址的所有访问命令组成的第一命令组;
判断子模块,用于判断所述选取缓冲区间中是否仍存在未执行的访问命令;
继续获取模块,用于当所述判断子模块判断得到的所述选取缓冲区间中仍存在未执行的访问命令时,执行按照所述选取缓冲区间中缓冲单元的排列顺序从所述选取缓冲区间中获取第一个未执行的携带了第二行地址的第二访问命令的步骤,以获取由携带所述第二行地址的所有访问命令组成的第二命令组,如果否,则继续利用所述缓冲区选取模块执行所述对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间的步骤。
其中,所述子命令调度模块703,包括:
排序子模块,用于获取每个缓冲区中未执行访问命令的数目,并将所述获取的数目递减排序,按照排序结果确定每个缓冲区的待执行命令组之间的优先级顺序;
第一发送子模块,用于向所述存储器发送第一命令的预充电子命令,所述第一命令为第一优先级的待执行命令组中的第一个未执行访问命令;
第二发送子模块,用于在所述第一命令的预充电子命令与所述第一命令的激活子命令之间的第一发送间隔时间内,向所述存储器发送第二命令的预充电子命令,所述第二命令为第二优先级的待执行命令组中的访问命令;
第三发送子模块,用于在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时到达所述第一发送间隔时间,则向所述存储器发送所述第一命令的激活子命令,在所述第一命令的激活子命令与所述第一命令的列存取子命令之间的第三发送间隔时间内,执行第三命令的待执行子命令,所述第三命令为在所述第一优先级待执行命令组后的所有待执行命令组中满足时序要求且优先级最高的待执行命令组,所述满足时序要求为计时到达所述待执行子命令与所述待执行子命令之前子命令之间的发送时间间隔;
第四发送子模块,用于在所述第二命令的预充电子命令与所述第二命令的激活子命令之间的第二发送间隔时间内,若计时未到达所述第一发送间隔时间,则向所述存储器发送第四命令的预充电子命令,所述第四命令为第三优先级的待执行命令组中的访问命令;
其中,所述第一优先级、所述第二优先级和所述第三优先级的优先级别依次递减;
继续发送子模块,用于按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令;或者,按照上述规律继续向所述存储器发送当前获取的各个待执行命令组中的其它子命令,其中,每个待执行命令组中的各个列存取子命令依次执行、且每两个列存取子命令之间满足发送间隔时间。
进一步地,所述装置还包括:
命令接收模块,用于在所述缓冲区选取模块对于每个存储有未执行访问命令的缓冲区,从中选取一个缓冲区间前,从协议总线接收访问命令;
第一发送模块,用于若所述命令接收模块接收的访问命令用于向所述存储器写入数据,则为所述访问命令和所要写入的数据分别配置第一标识,并将配置后的访问命令发送至对应的缓冲区中且将配置后的数据发送至数据传输模块;
数据发送模块,用于在所述子命令调度模块向所述存储器发送所述命令接收模块接收的访问命令的列存取子命令时,向所述数据传输模块发送所述第一标识;
所述数据传输模块,用于根据所述数据发送模块发送的第一标识准备所述所要写入的数据,将准备好的数据发送至所述存储器;
第二发送模块,用于若所述子命令接收模块接收的访问命令用于读取所述存储器中的数据,则为所述访问命令配置第二标识,并将配置后的访问命令发送至对应的缓冲区中;
所述数据传输模块,用于在所述子命令调度模块向所述存储器发送所述命令接收模块接收的访问命令的列存取子命令后,接收所述存储器返回的数据并为所述返回的数据配置所述第二标识,根据所述第二标识将所述返回的数据按照所述访问命令的接收顺序发送至所述协议总线。
其中,所述第一发送模块或所述第二发送模块,包括:
译码子模块,用于对所述配置后的访问命令进行译码,以提取所述访问命令中的存储阵列地址;
发送子模块,用于根据所述存储阵列地址,将所述访问命令存储于对应分配的缓冲区中。
另外,在本发明实施例中,每个缓冲区对应分配一个第一寄存器,所述第一寄存器的每个存储单元用于分别存储对应缓冲区中每个访问命令的执行状态,所述装置包括:
第一状态标记模块,用于当所述发送子模块将所述访问命令存储在对应缓冲区中时,在所述缓冲区对应的第一寄存器中将所述访问命令标识为未执行状态;
第二状态标记模块,用于当所述访问命令的所有子命令被发送至所述存储器后,在所述缓冲区对应的第一寄存器中将所述访问命令标识为已执行状态。
另外,在本发明实施例中,每个缓冲区对应分配一个第二寄存器;所述装置还包括:命令分解模块,用于对于从所述选取缓冲区间中获取的每个访问命令,按照下述方法分解获取的访问命令:
将获取访问命令携带的行地址与对应第二寄存器中存储的行地址进行比较,所述对应第二寄存器中存储的行地址为上次获取的访问命令的行地址;如果比较结果不同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为预充电子命令、激活子命令和列存取子命令;如果比较结果相同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为列存取子命令。
本发明实施例提供的存储器的访问装置,为每个存储阵列对应分配一个缓冲区,将访问同一存储阵列的所有访问命令存储在同一缓冲区内,并把每个缓冲区划分为多个缓冲区间,对于每个缓冲区间,使其存储的具有相同行号的访问命令按顺序执行,在此期间便不必频繁关闭、打开存储阵列的当前行,这样不但可以兼顾连续访问同一行的情况,也可以在出现交叉行访问时先执行同一行的访问操作,从而不但提高了存储器的访问效率,而且节省了功耗。
需要说明的是,本发明装置实施例中的各个模块,可以按照实现功能与图2所示的功能模块进行对应,具体可参照上述方法实施例的相关介绍,在此不再赘述。
需要说明的是,对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (14)
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任一项所述的装置,其特征在于,每个缓冲区对应分配一个第二寄存器;所述装置还包括:命令分解模块,用于对于从所述选取缓冲区间中获取的每个访问命令,按照下述方法分解获取的访问命令:
将获取访问命令携带的行地址与对应第二寄存器中存储的行地址进行比较,所述对应第二寄存器中存储的行地址为上次获取的访问命令的行地址;
如果比较结果不同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为预充电子命令、激活子命令和列存取子命令;
如果比较结果相同,则利用所述获取访问命令携带的行地址替换所述第二寄存器中存储的行地址,并将所述获取访问命令分解为列存取子命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410138487.XA CN103927268B (zh) | 2014-04-08 | 2014-04-08 | 一种存储器的访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410138487.XA CN103927268B (zh) | 2014-04-08 | 2014-04-08 | 一种存储器的访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103927268A true CN103927268A (zh) | 2014-07-16 |
CN103927268B CN103927268B (zh) | 2017-02-15 |
Family
ID=51145492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410138487.XA Active CN103927268B (zh) | 2014-04-08 | 2014-04-08 | 一种存储器的访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103927268B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016082800A1 (zh) * | 2014-11-28 | 2016-06-02 | 华为技术有限公司 | 一种内存管理方法、装置以及内存控制器 |
CN106502806A (zh) * | 2016-10-31 | 2017-03-15 | 华为技术有限公司 | 一种总线协议命令处理装置及相关方法 |
CN107679620A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107679621A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107704922A (zh) * | 2017-04-19 | 2018-02-16 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107851017A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 用于在存储器与存储在寄存器组中的一个或多个数据元素向量之间传输多个数据结构的设备和方法 |
CN108475197A (zh) * | 2016-01-15 | 2018-08-31 | 华为技术有限公司 | 用于嵌套抢占的高速缓存结构 |
CN108628756A (zh) * | 2017-03-17 | 2018-10-09 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN110612517A (zh) * | 2017-03-24 | 2019-12-24 | 美光科技公司 | 基于系统状态的存储器保护 |
CN113360336A (zh) * | 2020-03-05 | 2021-09-07 | 爱思开海力士有限公司 | 用于预测顺序命令操作的功率的存储器系统及其操作方法 |
CN113450854A (zh) * | 2020-03-27 | 2021-09-28 | 钰创科技股份有限公司 | 存储控制器、存储器和存储系统 |
CN114896182A (zh) * | 2022-05-11 | 2022-08-12 | 地平线(上海)人工智能技术有限公司 | 存储装置、方法、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1648877A (zh) * | 2004-01-27 | 2005-08-03 | 精工爱普生株式会社 | 信息处理装置及存储器访问方法 |
US7088722B1 (en) * | 2002-03-28 | 2006-08-08 | Cisco Technology, Inc. | Method and system for controlling flow of multiplexed data |
CN1815626A (zh) * | 2005-01-31 | 2006-08-09 | 上海奇码数字信息有限公司 | 存储器存取控制器与存储器存取方法 |
US20130339612A1 (en) * | 2012-06-18 | 2013-12-19 | Fujitsu Limited | Apparatus and method for testing a cache memory |
-
2014
- 2014-04-08 CN CN201410138487.XA patent/CN103927268B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7088722B1 (en) * | 2002-03-28 | 2006-08-08 | Cisco Technology, Inc. | Method and system for controlling flow of multiplexed data |
CN1648877A (zh) * | 2004-01-27 | 2005-08-03 | 精工爱普生株式会社 | 信息处理装置及存储器访问方法 |
CN1815626A (zh) * | 2005-01-31 | 2006-08-09 | 上海奇码数字信息有限公司 | 存储器存取控制器与存储器存取方法 |
US20130339612A1 (en) * | 2012-06-18 | 2013-12-19 | Fujitsu Limited | Apparatus and method for testing a cache memory |
Non-Patent Citations (1)
Title |
---|
吴洪涛: "存储器访问调度的应用实现研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016082800A1 (zh) * | 2014-11-28 | 2016-06-02 | 华为技术有限公司 | 一种内存管理方法、装置以及内存控制器 |
US10127955B2 (en) | 2014-11-28 | 2018-11-13 | Huawei Technologies Co., Ltd. | Memory activation method and apparatus, and memory controller |
CN107851017A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 用于在存储器与存储在寄存器组中的一个或多个数据元素向量之间传输多个数据结构的设备和方法 |
CN108475197A (zh) * | 2016-01-15 | 2018-08-31 | 华为技术有限公司 | 用于嵌套抢占的高速缓存结构 |
CN106502806B (zh) * | 2016-10-31 | 2020-02-14 | 华为技术有限公司 | 一种总线协议命令处理装置及相关方法 |
CN106502806A (zh) * | 2016-10-31 | 2017-03-15 | 华为技术有限公司 | 一种总线协议命令处理装置及相关方法 |
CN108628756A (zh) * | 2017-03-17 | 2018-10-09 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN110612517B (zh) * | 2017-03-24 | 2020-12-04 | 美光科技公司 | 基于系统状态的存储器保护 |
US10838879B2 (en) | 2017-03-24 | 2020-11-17 | Micron Technology, Inc. | Memory protection based on system state |
CN110612517A (zh) * | 2017-03-24 | 2019-12-24 | 美光科技公司 | 基于系统状态的存储器保护 |
US11334502B2 (en) | 2017-03-24 | 2022-05-17 | Micron Technology, Inc. | Memory protection based on system state |
CN107704922B (zh) * | 2017-04-19 | 2020-12-08 | 赛灵思公司 | 人工神经网络处理装置 |
US10824939B2 (en) | 2017-04-19 | 2020-11-03 | Xilinx, Inc. | Device for implementing artificial neural network with flexible buffer pool structure |
CN107704922A (zh) * | 2017-04-19 | 2018-02-16 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107679620A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
US10902315B2 (en) | 2017-04-19 | 2021-01-26 | Xilinx, Inc. | Device for implementing artificial neural network with separate computation units |
CN107679621A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN113360336A (zh) * | 2020-03-05 | 2021-09-07 | 爱思开海力士有限公司 | 用于预测顺序命令操作的功率的存储器系统及其操作方法 |
CN113450854A (zh) * | 2020-03-27 | 2021-09-28 | 钰创科技股份有限公司 | 存储控制器、存储器和存储系统 |
CN114896182A (zh) * | 2022-05-11 | 2022-08-12 | 地平线(上海)人工智能技术有限公司 | 存储装置、方法、电子设备和存储介质 |
CN114896182B (zh) * | 2022-05-11 | 2023-10-20 | 地平线(上海)人工智能技术有限公司 | 存储装置、方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103927268B (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103927268A (zh) | 一种存储器的访问方法及装置 | |
CN107924375B (zh) | 用于高速存储器接口的命令仲裁 | |
CN103198856B (zh) | 一种ddr控制器及请求调度方法 | |
CN101788963B (zh) | Dram存储控制方法及装置 | |
US8380916B2 (en) | Control of page access in memory | |
US9336164B2 (en) | Scheduling memory banks based on memory access patterns | |
KR20210021302A (ko) | 메모리 제어기에서의 리프레시 방식 | |
US20160070483A1 (en) | Separate memory controllers to access data in memory | |
CN103136120B (zh) | 行缓冲管理策略确定方法和装置、bank划分方法和装置 | |
CN105912270B (zh) | 一种面向pm的访存请求解析装置与方法 | |
KR102615693B1 (ko) | Dram을 위한 리프레시 관리 | |
US12105975B2 (en) | Adjustable access energy and access latency memory system and devices | |
US20210280226A1 (en) | Memory component with adjustable core-to-interface data rate ratio | |
US20200027499A1 (en) | Configuring dynamic random access memory refreshes for systems having multiple ranks of memory | |
Goossens et al. | Memory-map selection for firm real-time SDRAM controllers | |
CN102339261B (zh) | 一种ddr2sdram控制器 | |
CN102541769B (zh) | 一种存储器接口访问控制方法及装置 | |
CN105487988B (zh) | 基于存储空间复用提高sdram总线有效访问速率的方法 | |
US10852956B1 (en) | Structure of a high-bandwidth-memory command queue of a memory controller with external per-bank refresh and burst reordering | |
US20240071461A1 (en) | Adaptive Memory Registers | |
CN106776390A (zh) | 多设备访问存储器的实现方法 | |
WO2022178772A1 (zh) | 一种存储器的刷新方法、存储器、控制器及存储系统 | |
CN106328186A (zh) | 存储器控制方法及其系统 | |
CN103703448B (zh) | 一种内存调度方法及内存控制器 | |
CN103914413A (zh) | 用于粗粒度可重构系统的外存访问接口及其访问方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |