一种面向pm的访存请求解析装置与方法

文档序号:10552633阅读:408来源:国知局
一种面向pm的访存请求解析装置与方法
【专利摘要】本发明公开了一种面向PM的访存请求解析装置,包括访存请求解析模块、优先级解析模块、命令解析模块和执行模块,访存请求解析模块,用于将访存请求根据其内部的列地址、行地址、Bank号、读写标志的统计特征分发到不同特性的请求队列中,以便所述访存请求能够被合理调度;优先级解析模块,用于将访存请求解析模块中所述不同特性的请求队列按照被调度的次序进行优先级划分,在所述不同特性的请求队列内部按照FR?FCFS调度;命令解析模块,用于将来自优先级解析模块的访存请求转化为具体的访存操作命令,结合PM阵列当前的状态信息将所述操作命令发送出去;执行模块,用于根据命令解析模块中发出的操作命令对PM阵列执行具体的操作。
【专利说明】
一种面向PM的访存请求解析装置与方法
技术领域
[0001] 本发明属于计算机系统结构技术领域,特别涉及一种PM的访存请求解析装置与方 法。
【背景技术】
[0002] 在计算机体系结构设计中,由于PM的读写时间严重不对称,所以,PM控制器对来自 最后一级缓存的读写访存请求进行解析的方法很大程度上决定了系统的性能,拙劣的读写 访存请求解析方法将导致PM控制器很难对所述请求进行合理的调度,甚至可能成为整个系 统的瓶颈。然而,现有技术中鲜有专门针对PM的特性进行访存请求解析的方法和装置。
[0003] 在本技术领域,涉及的一下一些技术术语:
[0004] DIMM:Dual Inline Memory Module,即双列直插式存储模块。
[0005] DRAM:Dynamic Random Access Memory,动态随机存储器,即现阶段广泛使用的内 存,其特点是断电后信息丢失,理论上读写寿命不受限制,并且需要周期性的对其内部电容 进行充电操作,这个操作称为刷新(refresh)。
[0006] PM:Persistent Memory,非易失性内存或持久性内存,STTRAM,PCM,RRAM都属于 PM,其特点是断电后信息不丢失,可字节寻址;但读写次数受限制,并且读写不均衡,根据材 料的不同,PM写耗费时间大概是其读耗费时间的4到10倍,PM读的时间比DRAM慢1到4倍,PM 不需要刷新操作。
[0007] Rank:指的是连接到同一个片选信号的一组存储芯片,内存控制器能够同时对一 个Rank中的所有芯片进行读写操作,这些芯片共享同样的控制信号。一个DMM中可以包含 多个Rank。
[0008] Bank:内存芯片中的存储模块。每一个存储芯片有一组Bank。
[0009] tAL:为了提高控制总线的利用率,PM控制器会提前将READ、WRITE、READ_PS WRITE_P命令发送到PM执行模块,PM执行模块接收到该命令,经过tAL时间的延迟后,才会执 行该命令。
[0010] tBURST:数据突发所占据数据线的时间。
[0011 ] tCAS:列选通访问延迟,指从发出READ或READ_P,到数据线出现稳定数据的延迟。
[0012] t(XD:列对列延迟,指对同一行进行连续读取所发出列地址的最短时间。
[0013] tCMD:命令传输时间。指一条命令从PM控制器发送到PM执行部件所占据命令线的 时间。
[0014] tCWD:写延迟,指从发出WRITE或WRITE_P,到真正将数据发送到数据线上的延迟。
[0015] tFAW: 4个Bank同时激活的窗口时间。指在长度为tFAW的时间段内,PM设备最多只 能接收四条ACTIVATE命令。
[0016] tRC:行周期。指在同一个Bank中访问不同行所发出行激活命令的最短时间间隔。
[0017] tRCD:指从发出行激活命令到数据稳定存储于读出放大器的时间间隔。
[0018] tRP:预充电时间,将处于激活状态的一行进行预充电操作的时间。
[0019 ] tRRD:指连续发出两条ACTIVATE命令的时间间隔。
[0020] tRTP:指对某一行发出读命令到对该行进行预充电命令的时间间隔
[0021] tRTRS:Rank到Rank的访存转换时间。
[0022] tWR:写入数据在数据线上传输完毕到对相应的一行发出PRECHARGE命令的时间间 隔。
[0023] tWTR:写入数据在数据线上传输完毕到发出READ或令的时间间隔.
[0024] tAWD:向一个Bank发出ACTIVATE命令到向另一个Bank发送WRITE或WRITE_P命令的 时间间隔。
[0025] tWAD::向一个Bank发出WRITE命令到向另一个Bank发送ACTIVATE命令的时间间 隔。
[0026] ACTIVATE:行激活命令,又称行选通命令,指在向PM设备读出或写入数据之前,将 PM阵列中的一行数据读出并保存到读出放大器(行缓冲)中。
[0027] PRECHARGE:预充电命令,对于读出放大器和PM阵列中的字线进行重位置,以便进 行下一次行激活操作。
[0028] READ:读命令,用于读取PM阵列中的数据。
[0029] WRITE:写命令,用于向PM阵列中写入数据。
[0030] READ_P:读后立即预充电命令,为复合命令,等价于向PM执行部件发送了两条命 令:READ和PRECHARGE命令,由PM执行部件在不同的时间点依次分别执行读操作和预充电操 作。
[0031] WRITE_P:写后立即预充电命令,为复合命令,等价于向PM执行部件发送了两条命 令:WRITE和PRECHARGE命令,由PM执行部件在不同的时间点依次分别执行写操作和预充电 操作。
[0032] 在现有技术条件下,ACTIVATE,READ,WRITE,READ_P,WRITE_P, PRECHARGE 执行时彼 此间的约束规程和时间参数如表1、表2所示。
[0033] 表 1
[0037] 0PEN_PAGE_P0LICY:开放行缓存管理策略,当PM阵列中的一行被读出或写入数据 后,PM控制器可以不必立即发送PRECHARGE操作。该行可以保持激活状态。
[0038] CL0SE_PAGE_P0LICY:关闭行缓存管理策略,PM控制器向PM执行部件发出READ_PS WRITE_P命令后,当PM阵列中的一行被读出或写入数据,执行部件对这一行立即进行预充电 操作。
[0039] FR-FCFS: -种访存请求调度策略。两条请求在访问主存阵列的不同行时,若其中 只有一行已经处于激活状态,则优先调度访问该行的访存请求,在其他情况下,按照先到先 服务的调度策略进行。
[0040]访存请求:当一个访存请求到达PM控制器时,在物理上以比特流串的形式存在,在 逻辑上这个比特流串的语义格式如下:
[0042]其中,请求类别(R/W)表示本次访存请求是读(R)或者写(W),行地址(row)在语义 上表示PM阵列中行的编号,列地址(col)在语义上表示PM阵列中列的编号,在后文中,Bank 号(b)在语义上表不PM阵列中的第b个Bank,为了后文描述方便,符号row、符号b、符号col分 别表示行地址、Bank号、列地址占用的二进制位的个数。该访存请求格式称为第一访存请求 格式。
[0043]在实际工程实践中,有时也会采用第二访存请求格式,在逻辑上比特流串的的语 义格式如下:


【发明内容】

[0046] 本发明的目的是提供一种面向PM的访存请求解析装置与方法。
[0047] 本发明的技术方案是,一种面向PM的访存请求解析装置,所述解析装置包括访存 请求解析模块、优先级解析模块、命令解析模块和执行模块,
[0048] 访存请求经过解析装置的访存请求解析模块、优先级解析模块、命令解析模块和 执行模块的依次处理后,从PM阵列读出数据队列,
[0049] 访存请求解析模块,用于将访存请求根据所述的列地址、行地址、Bank号、读写标 志的统计特征分发到不同特性的请求队列中,以便所述访存请求能够被合理调度;
[0050] 优先级解析模块,用于将访存请求解析模块中所述不同特性的请求队列按照被调 度的次序进行优先级划分,在所述不同特性的请求队列内部按照FR-FCFS调度;
[0051 ]命令解析模块,用于将来自优先级解析模块的访存请求转化为访存操作命令,然 后,结合PM阵列当前的状态信息将所述操作命令发送出去;
[0052]执行模块,用于根据命令解析模块中发出的操作命令对PM阵列执行操作。
[0053]所述访存请求解析模块的处理流程包括:
[0054]地址解析单元A按照访存请求特征将其分发到访存请求队列Q1与访存请求队列 Q2,所述的访存请求特征的确定依据是:设在所述访存请求中Bank号对应的二进制值为为 Bank_Value所述访存请求中行地址对应的二进制值为Row_Value,若Bank_Value+Row_ Value多1,则将本次请求分发到访存请求队列Q2,否则,则将本次请求分发到访存请求队列 Q1;
[0055]地址解析单元B按照访存请求特征把访存请求队列Q2中的访存请求分发到访存请 求队列Q21与访存请求队列Q22,所述的访存请求特征的确定依据是:在地址解析单元B中设 置组件DS1,DS1的逻辑结构为,
[0057]其中,C0,C1,C2. ? .,Cn分别统计对第0,1,2, . . .2b-l个Bank的访问次数,在地址解 析单元B中设置组件DS2,DS2的逻辑结构为,
[0059] 其中,LEFT表示当C0+C1+C2+. . .+Cn<2eci1时,所有的访存请求都分发到访存请求 队列Q21,当C0+C1+C2+. . .+Cn> = 2eci1时,对于每个从访存请求队列Q2分发过来的访存请求 做如下的操作:
[0060]更新DS1,然后判定针对某个Bank的访存次数Cx是否满足若满足, 更新DS2中针对对应Bank的分发标志为RIGHT,同时将本次请求分发到访存请求队列Q22中; 若不满足,更新DS2中针对对应Bank的分发标志为LEFT,同时将本次请求分发到访存请求队 列Q21中;
[0061 ]标志解析单元C1按照访存请求特征把访存请求队列Q21中的访存请求分发到读访 存请求队列RQ21与写访存请求队列WQ21,所述的访存请求特征的确定依据是:设某次访存 请求中所述请求类别(R/W)若为R,则将本次请求分发到读访存请求队列RQ21,否则,则将本 次请求分发到写访存请求队列WQ21;
[0062 ]标志解析单元C2按照访存请求特征把访存请求队列Q22中的访存请求分发到读访 存请求队列RQ22与写访存请求队列WQ22,所述的访存请求特征的确定依据是:设某次访存 请求中所述请求类别(R/W)若为R,则将本次请求分发到读访存请求队列RQ22,否则,则将本 次请求分发到写访存请求队列WQ22,
[0063]所述优先级解析模块的处理流程包括:
[0064]访存请求解析模块中的访存请求队列Q1与访存请求队列Q2,访存请求队列Q21与 访存请求队列Q22,读访存请求队列RQ21与写访存请求队列WQ21,读访存请求队列RQ22与写 访存请求队列WQ22,
[0065]由于,访存请求队列Q2划分成为读访存请求队列RQ21与写访存请求队列WQ21,读 访存请求队列RQ22与写访存请求队列WQ22,
[0066]所以设定:访存请求队列Ql>读访存请求队列RQ21>读访存请求队列RQ22>写访存 请求队列WQ21>写访存请求队列WQ22,符号"〉"含义为"优先于",在所述的每种访存请求队 列内部采用FR-FCFS调度;
[0067]所述命令解析模块中包括:
[0068]命令控制逻辑,用于将优先级解析模块中所述的每种访存请求队列的访存请求解 析为具体的原子命令,所述请求类别R/W解析为:{ACTIVATE,READ,[PRECHARGE] },或为: {ACTIVATE,READ_P},或为:{ACTIVATE,WRITE, [PRECHARGE]},或为:{ACTIVATE,WRITE_P}, 符号〃 {}〃包含的 ACTIVATE、READ、READ_P、WRITE、WRITE_P、PRECHARGE 即为所述的具体的原 子命令,符号〃[]〃表示在〇PEN_PAGE_POLICY下,PRECHARGE命令不立即执行。
[0069]状态信息表,其逻辑结构为:
[0071]状态信息表内容包括:当前每个Bank的状态信息、命令控制逻辑发出的上一条命 令类型、命令控制逻辑发出的上一条命令时间、ACTIVATE命令时间记录表,
[0072]每个Bank的状态信息的内容包括:是否存在激活行、激活行地址、本Bank接受到的 上一条命令的类型、本Bank接受到的上一条命令的发出时间,
[0073] ACTIVATE命令时间记录表记录了在一个tFAW窗口时间内的各个ACTIVATE命令的 发出时间,ACTIVATE命令时间记录表最多记录4条ACTIVATE命令的发出时间,"NULL"表示当 前内容为空,不存在相应的状态信息,
[0074] 命令控制逻辑需要根据状态信息表的内容选择在何时将上述所述的原子命令发 送给执行模块;
[0075]所述执行模块的处理流程包括:
[0076]根据命令解析模块发送来的访存命令执行一个具体的业务逻辑,然后对PM阵列执 行具体的操作。
[0077] 一种面向PM的访存请求解析方法,包含以下步骤:
[0078]步骤A:将访存请求按照所述的请求类别(R/W)和所述的行地址和列地址的统计特 征分类;
[0079]步骤B:将不同类的访存请求分发到不同优先级的队列中;
[0080]步骤C:将不同优先级的队列中的访存请求解析为可执行的操作命令;
[0081 ]步骤D:在PM阵列及其控制器上执行操作命令。
[0082]本发明主要针对PM读写访存请求,提供一种实时的比特流层面的动态解析方法, 同时提供一种装置,所述装置能够方便快捷的添加到专门针对PM内存控制器或PM和DRAM的 混合控制器中。
【附图说明】
[0083]图1是本发明面向PM的访存请求解析装置示意图;
[0084] 图2是本发明图1中访存请求解析模块示意图;
[0085] 图3是本发明图1中优先级解析模块的判优流程示意图;
[0086] 图4是本发明图1中命令解析模块流程示意图;
[0087] 图5是本发明图1中执行模块实施例的流程示意图。
【具体实施方式】
[0088] 本发明实施例中采用了第一种访存请求的格式。(R/W)的比特值为0时代表读请 求,比特值为1时代表写请求,所述的行地址row为15个二进制位,所述的列地址col为10个 二进制位,所述的Bank号b为3个二进制位,共计8个Bank。
[0089] 本发明的面向PM的访存请求解析装置,如附图1所示,所述装置包括访存请求解析 模块、优先级解析模块、命令解析模块和执行模块。
[0090] 访存请求解析模块,主要是将访存请求根据其内部的列地址、行地址、Bank号、读 写标志的统计特征分发到不同特性的请求队列中,以便所述访存请求能够被合理调度; [0091]优先级解析模块,主要是将访存请求解析模块中所述不同特性的请求队列按照被 调度的次序进行优先级划分,在所述不同特性的请求队列内部按照FR-FCFS调度;
[0092] 命令解析模块,主要是将来自优先级解析模块的访存请求转化为具体的访存操作 命令,然后,结合PM阵列当前的状态信息将所述操作命令发送出去;
[0093] 执行模块,主要是根据命令解析模块中发出的操作命令对PM阵列执行具体的操 作。
[0094] 如附图2所示,在访存请求解析模块中:
[0095]地址解析单元A按照访存请求特征将其分发到访存请求队列Q1与访存请求队列 Q2,所述的访存请求特征的确定依据是:设在所述访存请求中Bank号对应的二进制值为为 Bank_Value所述访存请求中行地址对应的二进制值为Row_Value,若Bank_Value+Row_ Value多1,则将本次请求分发到访存请求队列Q2,否则,则将本次请求分发到访存请求队列 Q1;
[0096]地址解析单元B按照访存请求特征把访存请求队列Q2中的访存请求分发到访存请 求队列Q21与访存请求队列Q22,所述的访存请求特征的确定依据是:在地址解析单元B中设 置组件DS1,DS1的逻辑结构为,

[0098] 其中,C0,C1,C2. ? .,Cn分别统计对第0,1,2,. .2b-l个Bank的访问次数,
[0099] 在地址解析单元B中设置组件DS2,DS2的逻辑结构为,
[0101] 其中,LEFT表示当C0+C1+C2+. . .+Cn<2eci1时,所有的访存请求都分发到访存请求 队列Q21,当C0+C1+C2+. . .+Cn> = 2eci1时,对于每个从访存请求队列Q2分发过来的访存请求 做如下的操作:更新DS1,然后判定针对某个Bank的访存次数Cx是否满足C:,>£g_/:ZA,若 满足,更新DS2中针对对应Bank的分发标志为RIGHT,同时将本次请求分发到访存请求队列 Q22中。若不满足,更新DS2中针对对应Bank的分发标志为LEFT,同时将本次请求分发到访存 请求队列Q21中;
[0102 ]标志解析单元C1按照访存请求特征把访存请求队列Q21中的访存请求分发到读访 存请求队列RQ21与写访存请求队列WQ21,所述的访存请求特征的确定依据是:设某次访存 请求中所述请求类别(R/W)若为R,则将本次请求分发到读访存请求队列RQ21,否则,则将本 次请求分发到写访存请求队列WQ21。
[0103] 标志解析单元C2按照访存请求特征把访存请求队列Q22中的访存请求分发到读访 存请求队列RQ22与写访存请求队列WQ22,所述的访存请求特征的确定依据是:设某次访存 请求中所述请求类别(R/W)若为R,则将本次请求分发到读访存请求队列RQ22,否则,则将本 次请求分发到写访存请求队列WQ22。
[0104] 如附图3所示,在优先级解析模块中:
[0105]所述的访存请求解析模块中的访存请求队列Q1与访存请求队列Q2,访存请求队列 Q21与访存请求队列Q22,读访存请求队列RQ21与写访存请求队列WQ21,读访存请求队列 RQ22与写访存请求队列WQ22,由于,访存请求队列Q2最终划分成为读访存请求队列RQ21与 写访存请求队列WQ21,读访存请求队列RQ22与写访存请求队列WQ22,所以设定:访存请求队 列Ql>读访存请求队列RQ21>读访存请求队列RQ22>写访存请求队列WQ21>写访存请求队列 WQ22,符号"〉"含义为"优先于",在所述的每种访存请求队列内部采用FR-FCFS调度。
[0106] 如附图4所示,在命令解析模块中:
[0107] 命令控制逻辑,用于将优先级解析模块中所述的每种访存请求队列的访存请求解 析为具体的原子命令,所述请求类别R/W解析为:{ACTIVATE,READ,[PRECHARGE] },或为: {ACTIVATE,READ_P},或为:{ACTIVATE,WRITE, [PRECHARGE]},或为:{ACTIVATE,WRITE_P}, 符号〃 {}〃包含的 ACTIVATE、READ、READ_P、WRITE、WRITE_P、PRECHARGE 即为所述的具体的原 子命令,符号〃[]〃表示在〇PEN_PAGE_POLICY下,PRECHARGE命令不立即执行。
[0108]状态信息表,其逻辑结构为
[0110] 其中内容包括:当前每个Bank的状态信息、命令控制逻辑发出的上一条命令类型、 命令控制逻辑发出的上一条命令时间、ACTIVATE命令时间记录表。每个Bank的状态信息的 内容主要包括:是否存在激活行、激活行地址、本Bank接受到的上一条命令的类型、本Bank 接受到的上一条命令的发出时间。ACTIVATE命令时间记录表记录了在一个tFAW窗口时间内 的各个ACTIVATE命令的发出时间。ACTIVATE命令时间记录表最多记录4条ACTIVATE命令的 发出时间。"NULL"表示当前内容为空,不存在相应的状态信息。
[0111] 命令控制逻辑需要根据状态信息表的内容选择在何时将上述所述的原子命令发 送给执行模块。
[0112] 如附图5所示,在执行模块中:
[0113] 根据命令解析模块发送来的访存命令如{ACTIVATE,READ,[PRECHARGE] },或如: {ACTIVATE,READ_P},或如:{ACTIVATE,WRITE, [PRECHARGE]},或如:{ACTIVATE,WRITE_P}执 行一个具体的业务逻辑,然后对PM阵列执行具体的操作。
[0114] 实施例一是采用0PEN_PAGE_P0LICY策略的解析装置,刚开始启动时接收到3个连 续访存请求的执行逻辑。
[0115] 实施例二是采用CL0SE_PAGE_P0LICY策略的解析装置,在处理完成1023个访存请 求后接收到5个连续访存请求的执行逻辑。
[0116] 实施例一:
[0117] 以 "1 mono nnnnn nnnnnQQioooio 〇〇1〇〇;\(<〇 ooooo ooooo 〇〇〇〇〇0〇〇〇〇〇!〇 00100,,和"001000 00000 0000000100010 00100" 3条访存请求的比特流串为例,本装置刚 启动时,访存请求解析模块的组件DS1的内容为
[0119]本装置刚启动时,访存请求解析模块的组件DS2的内容为
[0121 ]本装置刚启动时,命令解析模块中状态信息表的内容为:
[0123] 其中,"NULL"表示当前内容为空,不存在相应的状态信息。
[0124] 具体阐述步骤如下:
[0125] 步骤A. 1:地址解析单元A接收到的所述第一条访存请求获取访存地址中Bank号位 对应的二进制值Bank_Value为_,行地址位对应的二进制值Row_Value为00000 00000 00000,因 Bank_Value+Row_Value〈l,将第一条访存请求分发到访存请求队列Q1 ;
[0126] 步骤A. 2:地址解析单元A接收到的所述第二条访存请求获取访存地址中Bank号位 对应的二讲制倌Rank Value为.001,行地址位对应的二进制值Row Value为10000 00000 00000,因 Bank_Value+Row_Value多1,将第二条访存请求分发到访存请求队列Q2;
[0127]步骤A. 3:地址解析单元A接收到的所述第三条访存请求获取访存地址中Bank号位 对应的二讲制倌Rank Value为001,行地址位对应的二进制值Row Value为01000 00000 00000,因 Bank_Value+Row_Value多1,将第三条请求分发到访存请求队列Q2;
[0128] 步骤A. 4:地址解析单元B从访存请求队列Q2中取出访存请求"1 10000 00000 0000000100010 00100",再次获取访存地址中Bank号位对应的二进制值Bank_Value为題 由于此时在DS1内所有Bank对应的访存次数总和为零,即总和小于2 1(),因此,将访存请求"1 10000 00000 00000()〇丨{)00 10 00100"分发到访存请求队列Q21,更新DS1,将第1个Bank对 应的访存次数加1;
[0129] 步骤A. 5 :地址解析单元B从队列Q2中取出访存请求"001000 00000 00000艇 00010 00100,,,再次获取访存地址中Bank号位对应的二进制值Bank_Value为此时在所 述DS1内所有Bank对应的访存次数总和为1,即总和小于2113,将访存请求"001000 00000 00000MJ)0010 00100"分发到访存请求队列Q21,更新DS1,即将第1个Bank对应的访存次 数再次加1;
[0130]步骤A.6:标志解析模块C1取出访存请求队列Q21内的一条访存请求,"1 10000 00000 0000000100010 00100",获取其请求类别(R/W)位为1,即本请求为写访存请求,将其 分派给读请求队列WQ21;
[0131 ]步骤A. 7:标志解析模块C1再次取出访存请求队列Q21内的一条访存请求,"001000 00000 00000臟00010 00100,,,获取其请求类别(R/W)位为0,即本请求为读访存请求,将其 分派给读请求队列RQ21。
[0132] 步骤B. 1:优先级解析模块优先从Q1中取出访存请求:"0 00000 00000 00000麵 00010 00100,,,发送给命令解析模块,如果Q1内还有访存请求,依次取出发送给命令解析单 元,直至Q1队列为空;
[0133] 步骤B. 2 :优先级解析模块从RQ21中取出读访存请求"001000 00000 00000艇 00010 00100,,,发送给命令解析模块,如果RQ21内还有访存请求,依次取出发送给命令解析 模块,直至RQ21队列为空;
[0134] 骤B. 3:优先级解析模块从WQ21中取出读访存请求"1 10000 00000 00000祖 00010 00100,,,发送给命令解析模块,如果WQ21内还有访存请求,依次取出发送给命令解析 模块,直至WQ21队列为空。
[0135] 步骤C. 1:更新所述状态信息表的ACTIVATE命令时间记录信息表,若所述记录信息 表为空,转到步骤C. 2,若所述记录信息表非空,找到由命令控制逻辑最早发出的ACTIVATE 命令的发出时间Activate_Time,且其满足Activate_Time+tFAW<Current_time,贝丨彳删除 ACTIVATE命令时间记录表中有关本ACTIVATE命令的时间信息,所述Current_time表示当前 时间;
[0136] 步骤C. 2:当命令控制逻辑接收到第一条访存请求为"0 0000000000 00000腦 00010 00100"为例,获取访存地址中Bank号位对应的二进制值Bank_Value为塑2、行地址位 对应的二进制值R〇w_Value为00000 00000 00000、列地址位对应的二进制值Col_Value为 00010 00100以及请求类别(R/W)为读请求;
[0137] 步骤C. 3:查找状态信息表内容发现第Bank_Value个Bank当前不存在激活行,命令 控制逻辑发出的上一条命令类型为空,因此所述命令控制逻辑先向执行部件发送ACTIVATE 命令以及Bank_Value和Address_Value,修改状态信息表的内容,如下表所示:
[0139] 所述"T ime 0"表示发出ACT IVATE命令的时间。
[0140] 步骤C.4:在状态信息表中查找Bank 0的状态信息,BankO接受到的最后一条命令 为ACT IVATE,时间为t i meO;(由表1知,相同Bank的ACT IVATE和READ命令的最小时间间隔为 tR⑶-tAL,由表2知,不同Bank的ACTIVATE和READ命令不存在最小时间间隔)
[0141 ]步骤0.4.1:若1:;[11160+七1^0-七八1<0111'代111:_1';[1116,将1^八0命令、1^111<:_\%1116、001_ Value发送至命令执行模块,再次修改状态信息表的内容如下表所示,接着,转至步骤D. 1;
[0143] 步骤C. 4.2:若timeO+tRCD-tAL>Current_Time,跳转至执行步骤C. 4〇
[0144] 步骤D.1:若执行部件接收到ACTIVATE命令、Bank_Value、Row_Value后,激活第 Bank_Value 个 Bank 上行地址为 Row_Value 的一行;
[0145] 步骤D.2?若执行部件接收到READ命令、Bank_Value、Col_Value后,读出第Bank_ Value个Bank上行地址为Row_Value列地址为Col_Value的数据。
[0146] 实施例二:
[0147] 以本装置在处理完成1023个访存请求后接收到5个连续访存请求:"1 10000 00000 00000墜000 10 00100"、"0 1100 00000 0000011100010 00100"、"111100 〇〇〇〇〇 0000011100010 00100"、"100000 00000 0000000000010 00110"和 "011110 00000 00000 _0010 00100"为例,假设此时访存请求解析模块的组件DS1的内容为:

[0149]访存请求解析模块的组件DS2的内容为:
[0151] ~具体阐述步骤如下:
[0152] 步骤A. 1:地址解析单元A接收到第一条访存请求,获取访存地址中Bank号位对应 的二进制值Bank_Value为說1,行地址位对应的二进制值R〇w_Value为10000 00000 00000, 因 Bank_Value+R〇W_Value多1,将第一条访存请求分发到访存请求队列Q2;
[0153] 步骤A. 2:地址解析单元A接收到第二条访存请求,获取访存地址中Bank号位对应 的二进制值Bank_Va 1 ue为Hi,行地址位对应的二进制值Row_Value为1100 00000 00000, 因 Bank_Value+R〇W_Value多1,将第二条访存请求分发到访存请求队列Q2;
[0154] 步骤A. 3:地址解析单元A接收到第三条访存请求,获取访存地址中Bank号位对应 的二讲制倌Rank Value为111,行地址位对应的二进制值Row Value为11100 00000 00000, 因 Bank_Value+Row_Value多1,将第三条请求分发到访存请求队列Q2;
[0155] 步骤A. 4:地址解析单元A接收到第四条访存请求获取访存地址中Bank号位对应的 一.讲制倌Rank Value为000,行地址位对应的二进制倌Row Value为00000 00000 00000,因 Bank_Value+Row_Value〈l,将第四条请求分发到访存请求队列Q1;
[0156] 步骤A. 5:地址解析单元A接收到第五条访存请求获取访存地址中Bank号位对应的 二进制值Bank_Value为麗1,行地址位对应的二进制值Row_Value为11110 00000 00000,因 Bank_Value+Row_Value^: 1,将第五条请求分发到访存请求队列Q2;
[0157] 步骤A. 6:地址解析单元B从访存请求队列Q2中取出访存请求"1 10000 00000 0000000100010 00100",获取访存地址中Bank号位对应的二进制值Bank Value为〇(比由于 此时在DS1内所有Bank对应的访存次数总和为1023,即总和小于21(),因此,将访存请求"1 10000 00000 0000000100010 00100"分发到访存请求队列Q21,更新DS1,即将第1个Bank对 应的访存次数加1;
[0158] 步骤A. 7:地址解析单元B从队列Q2中取出访存请求"0 1100 00000 OOOOQin 00010 00100,,,再次获取访存地址中Bank号位对应的二进制值Bank_Value为1H,由于此时 在DS1内所有Bank对应的访存次数总和为1024,即总和大于等于2 1(),更新DS1,即将第7个 Bank对应的访存次数加1,而第7个Bank对应的访存次数为215,显然215>1024/23,更新DS2 中针对对应Bank的分发标志为RIGHT,将本次请求分发到访存请求队列Q22中;
[0159] 步骤A.8:以类似步骤A.7的方式处理将"1 11100 00000 00000H100010 00100,; 发到访存请求队列Q22,将aoiino 〇〇〇〇〇 oooooMioooio 〇〇1〇〇,;发送到访存请求队列 〇21,更新031,032;
[0160] 步骤A. 9 :标志解析模块C1取出访存请求队列Q21内的一条访存请求:" 110000 00000 0000000100010 00100,;,获取其请求类别(R/W)位为1,即本请求为写访存请求,将其 分派给读请求队列WQ21;
[0161] 步骤A. 10:标志解析模块C1再次取出访存请求队列Q21内的一条访存请求: "011110 00000 00000疆00010 00100",获取其请求类别(R/W)位:0,因此该请求为读访存 请求,将其分派给读请求队列RQ21;
[0162] 步骤A.11:标志解析模块C2取出访存请求队列Q22内的一条访存请求:"0 1100 00000 00000黒00010 00100,,,获取其请求类别(R/W)位为0,即本请求为读访存请求,将其 分派给读请求队列WQ22;
[0163] 步骤A. 12:标志解析模块C2再次取出访存请求队列Q22内的一条访存请求:"1 11100 00000 0000011100010 〇〇1〇〇,;,获取其请求类别(R/W)位为1,即本请求为写访存请 求,将其分派给读请求队列WQ22。
[0164] 步骤B. 1:优先级解析模块优先从Q1中取出访存请求:"0 00000 00000 00000鍵 00010 00100,,,发送给命令解析模块,如果Q1内还有访存请求,依次取出发送给命令解析单 元,直至Q1队列为空;
[0165] 步骤B. 2 :优先级解析模块从RQ21中取出读访存请求a〇11110 00000 0000〇Ml 00010 00100,,,发送给命令解析模块,如果RQ21内还有访存请求,依次取出发送给命令解析 模块,直至RQ21队列为空;
[0166] 步骤B. 3:优先级解析模块从RQ22中取出读访存请求"0 1100 00000 00000黑 00010 00100,,,发送给命令解析模块,如果RQ22内还有访存请求,依次取出发送给命令解析 模块,直至RQ22队列为空;
[0167] 步骤B.4:优先级解析模块从WQ21中取出写访存请求"1 10000 00000 00000〇〇! 00010 00100,,,发送给命令解析模块,如果WQ21内还有访存请求,依次取出发送给命令解析 模块,直至WQ21队列为空;
[0168] 步骤B. 5:优先级解析模块从WQ22中取出写访存请求"1 11100 00000 00000111 00010 00100,,,发送给命令解析模块,如果WQ22内还有访存请求,依次取出发送给命令解析 模块,直至WQ22队列为空,转至步骤C. 1。
[0169] 假设此时命令解析模块中状态信息表的内容为:
[0171] 其中,"NULL"表示当前内容为空,不存在相应的状态信息。
[0172] 步骤C. 1:更新状态信息表的ACTIVATE命令时间记录表信息,若所述记录表为空, 转到步骤C. 2,若所述记录表不为空,找到由所述命令控制逻辑最早发出的ACTIVATE命令的 发出时间Timel,当Timel+tFAW彡Current_time时,删除ACTIVATE命令时间记录表中有关该 ACTIVATE命令的时间信息,其中,"Current_time"表示当前时间;
[0173] 以下步骤以命令控制逻辑接收到访存请求:"100000 00000 0000000000010 00110"为例,继续描述,
[0174] 步骤C.2:获取访存地址中Bank号位对应的二进制值Bank_Value为麗2、行地址位 对应的二进制值R〇w_Value为00000 00000 00000、列地址位对应的二进制值Col_Value为 00010 00100以及请求类别(R/W)为写请求,查找状态信息表内容,第Bank_Value个Bank当 前不存在激活行,转至步骤C. 3;
[0175] 步骤C. 3:检查ACTIVATE命令时间记录表,若所述时间记录表内的元素大于等于4 条,代表当前不能发送ACTIVATE命令,跳转至步骤C.1,若所述时间记录表内的元素小于4 条,顺序执行步骤C. 4;
[0176] 步骤C. 4:查找状态信息表内容,发现命令控制逻辑发出的上一条命令类型为 ACT IVATE,发出时间为t ime 3;(由表2知,不同Bank的ACT IVATE和ACT IVATE命令的最小时间 间隔tRRD)
[0177] 步骤C ? 4 ? 1:若time3+tRRD>Current_Time,则当前不能发送ACTIVATE命令,跳转至 步骤C.4;
[0178] 步骤0.4.2:若1:;[11163+七1^0<(]111^6111:_1';[1116,继续查找1^111<:0的状态信息发现 BankO接受到的最后一条命令为READ_P,时间为timel (由表1知,命令的 最小时间间隔为tAL+tBURST+tRTP-tCCD+tRP),转至步骤步骤C? 4? 2 ? 1;
[0179] 步骤C.4.2.1:若timel + (tAL+tBURST+tRTP-tCCD+tRP)>Current_Time,跳转至步 骤 C.4;
[0180] 步骤C ? 4 ? 2 ? 2 :若timel + ( tAL+tBURST+tRTP-tCCD+tRP)<Current_Time ,将 ACTIVATE命令和Bank号为Bank_Value和行地址为Row_Value发送至命令执行模块,再次修 改状态信息表的内容如下表所示,转至步骤C. 5;
[0182] 所述"T ime 5"表示发出ACT IVATE命令的时间。
[0183] 步骤C.5:在状态信息表中查找Bank 0的状态信息,BankO接受到的最后一条命令 为ACTIVATE,时间为time5;(由表1知,相同Bank的ACTIVATE和WRITE_P命令的最小时间间隔 为tRCD-tAL,由表2知,不同Bank的ACTIVATE和WRITE_P命令不存在最小时间间隔)
[0184] 步骤 C.5.1:若time5+tRCD-tAL 彡 Current_Time,将 WRITE_P 命令、Bank_Value、 Col_Value发送至命令执行模块,再次修改状态信息表的内容如下表所示,转至步骤D. 1;
[0186] 步骤C ? 5 ? 2:若t ime5+tRCD_tAL>Current_Time,跳转至步骤C ? 5 〇
[0187] 步骤D.1 ?若执行部件接收到ACTIVATE命令、Bank_Value、Row_Value后,激活第 Bank_Value 个 Bank 上行地址为 Row_Value 的一行。
[0188] 步骤D.2:若执行部件接收到WRITE_P命令、Bank_Value、Col_Value后,将数据写入 到第Bank_Value个Bank上行地址为Row_Value列地址为Col_Value的存储空间,接着,从接 收WRITE_P命令后,经过(tWR+tAL+tCWD+tBURST)的时间,对第Bank_Value个Bank进行预充 电操作。
【主权项】
1. 一种面向PM的访存请求解析装置,其特征在于,所述解析装置包括访存请求解析模 块、优先级解析模块、命令解析模块和执行模块, 访存请求经过解析装置的访存请求解析模块、优先级解析模块、命令解析模块和执行 模块的依次处理后,从PM阵列读出数据队列, 访存请求解析模块,用于将访存请求根据列地址、行地址、Bank号、读写标志的统计特 征分发到不同特性的请求队列中,W便所述访存请求能够被合理调度; 优先级解析模块,用于将访存请求解析模块中所述不同特性的请求队列按照被调度的 次序进行优先级划分,在所述不同特性的请求队列内部按照FR-FWS调度; 命令解析模块,用于将来自优先级解析模块的访存请求转化为访存操作命令,然后,结 合PM阵列当前的状态信息将所述操作命令发送出去; 执行模块,用于根据命令解析模块中发出的操作命令对PM阵列执行操作。2. 如权利要求1所述的面向PM的访存请求解析装置,其特征在于,所述访存请求解析模 块的处理流程包括: 地址解析单元A按照访存请求特征将其分发到访存请求队列Ql与访存请求队列Q2,所 述的访存请求特征的确定依据是:设在所述访存请求中Bank号对应的二进制值为为Bank_ 化Iue所述访存请求中行地址对应的二进制值为Row_Value,若Bank_Value+Row_Value> 1, 则将本次请求分发到访存请求队列Q2,否则,则将本次请求分发到访存请求队列Ql; 地址解析单元B按照访存请求特征把访存请求队列Q2中的访存请求分发到访存请求队 列Q21与访存请求队列Q22,所述的访存请求特征的确定依据是:在地址解析单元B中设置组 化DSi _nsi的视铅结尬兩.其中,LEFT表示当C0+C1+C2+. . .+历<2。°1时,所有的访存请求都分发到访存请求队列 Q21,当C0+C1+C2+. . .+化> 时,对于每个从访存请求队列Q2分发过来的访存请求做如下的操作: 更新DSl,然后判定针对某个Bank的访存次数Cx是否满足 旨满足,更新 DS2中针对对应Bank的分发标志为RIGHT,同时将本次请求分发到访存请求队列Q22中;若不 满足,更新DS2中针对对应Bank的分发标志为LEFT,同时将本次请求分发到访存请求队列 Q21 中; 标志解析单元Cl按照访存请求特征把访存请求队列Q21中的访存请求分发到读访存请 求队列RQ21与写访存请求队列WQ21,所述的访存请求特征的确定依据是:设某次访存请求 中所述请求类别(R/W)若为R,则将本次请求分发到读访存请求队列RQ21,否则,则将本次请 求分发到写访存请求队列WQ21; 标志解析单元C2按照访存请求特征把访存请求队列Q22中的访存请求分发到读访存请 求队列RQ22与写访存请求队列WQ22,所述的访存请求特征的确定依据是:设某次访存请求 中所述请求类别(R/W)若为R,则将本次请求分发到读访存请求队列RQ22,否则,则将本次请 求分发到写访存请求队列WQ22, 所述优先级解析模块的处理流程包括: 访存请求解析模块中的访存请求队列Ql与访存请求队列Q2,访存请求队列Q21与访存 请求队列Q22,读访存请求队列RQ21与写访存请求队列WQ21,读访存请求队列RQ22与写访存 请求队列WQ22, 由于,访存请求队列Q2划分成为读访存请求队列RQ21与写访存请求队列WQ21,读访存 请求队列RQ22与写访存请求队列WQ22, 所W设定:访存请求队列Q1〉读访存请求队列RQ21〉读访存请求队列RQ22〉写访存请求 队列WQ21〉写访存请求队列WQ22,符号"〉"含义为"优先于",在所述的每种访存请求队列内 部采用FR-FWS调度; 所述命令解析模块中包括:命令控制逻辑,用于将优先级解析模块中所述的每种访存 请求队列的访存请求解析为具体的原子命令,所述请求类别R/W解析为:{ACT IVATE,READ, [PRECHARGE ]},或为:{ACT IVATE,READ_P },或为:{ACT IVATE,WRI TE,[ PRECHARGE ]},或为: {ACT IVATE,WRI TE_P},符号"{}"包含的 ACT IVATE、READ、READ_P、WRI TE、WRI TE_P、PRECHARGE 即为所述的具体的原子命令,符号"[]"表示在〇PEN_PAGE_P^ICY下,PRECHARGE命令不立即 执行。 状态信息表,其逻辑结构为:状态信息表内容包括:当前每个Bank的状态信息、命令控制逻辑发出的上一条命令类 型、命令控制逻辑发出的上一条命令时间、ACTIVATE命令时间记录表, 每个Bank的状态信息的内容包括:是否存在激活行、激活行地址、本Bank接受到的上一 条命令的类型、本Bank接受到的上一条命令的发出时间, ACTIVATE命令时间记录表记录了在一个tFAW窗口时间内的各个ACTIVATE命令的发出 时间,ACTIVATE命令时间记录表最多记录4条ACTIVATE命令的发出时间/'NULL"表示当前内 容为空,不存在相应的状态信息, 命令控制逻辑需要根据状态信息表的内容选择在何时将上述所述的原子命令发送给 执行模块; 所述执行模块的处理流程包括: 根据命令解析模块发送来的访存命令执行一个具体的业务逻辑,然后对PM阵列执行具 体的操作。3. -种面向PM的访存请求解析方法,其特征在于,包含W下步骤: 步骤A:将访存请求按照所述的请求类别(R/W)和所述的行地址和列地址的统计特征分 类; 步骤B:将不同类的访存请求分发到不同优先级的队列中; 步骤C:将不同优先级的队列中的访存请求解析为可执行的操作命令; 步骤D:在PM阵列及其控制器上执行操作命令。
【文档编号】G06F3/06GK105912270SQ201610223262
【公开日】2016年8月31日
【申请日】2016年4月12日
【发明人】黄林鹏, 朱燕民, 沈艳艳, 施扬, 薛栋梁, 陈雨亭, 吴晨涛
【申请人】上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1