一种基于AHB-Lite协议的访存队列设计方法及其装置的制造方法

文档序号:10552847阅读:377来源:国知局
一种基于AHB-Lite协议的访存队列设计方法及其装置的制造方法
【专利摘要】本发明提出一种基于AHB?Lite协议的访存队列设计方法及其装置,该方法包括在译码阶段,将Store操作与Load操作分别译码为Store队列需要的格式与Load操作需要的格式;判断访存级是否为Uncache Load操作,若是,则发送访存请求,否则判断访存级是否为Store操作,若为除Store操作之外的操作,则进行正常指令操作,若为Store操作,则判断执行级是否为普通Load操作,若执行级是除普通Load操作之外的操作,则进入Store操作发送访存请求,判断从设备是否准备好,若准备好,则Store队列发送AHB?Lite控制信息与数据信息,对Store队列中数据进行移动,并完成AHB?Lite总线的访存请求,如果执行级是普通Load操作,则对普通Load操作进行处理。
【专利说明】
一种基于AHB-L i te协议的访存队列设计方法及其装置
技术领域
[0001] 本发明涉及处理器设计领域,特别涉及一种基于AHB-Lite协议的访存队列设计方 法及其装置。
【背景技术】
[0002] 在处理器设计中,由于"访存墙"问题的存在,访存通路一直是处理器结构设计中 的性能瓶颈和研究热点。围绕访存通路中TLB、cache、存储控制器等关键点已经存在大量研 究,这些研究主要通过建立存储层次,模糊CPU和内存的界限,在CPU中增加高速存储的缓存 设备,缩小相邻存储层次的速度差距,在效果上加快了处理器从内存取数的速度,然而,访 存带宽限制及访存操作与后续操作的"指令相关",也会导致访存时间过长,严重影响处理 器的流水线效率,访存指令相关问题也一直是微体系结构设计过程中需要考虑的关键问 题。
[0003] 处理器设计中指令间的相关分为3类:数据相关、控制相关及结构相关。在程序中, 如果两条指令访问同一个寄存器或内存单元,而且这两条指令中至少有1条是写该寄存器 或内存单元的指令,则这两条指令之间存在数据相关;如果两条指令中一条是转移指令且 另一条指令是否被执行取决于该转移指令的执行结果,则这两条指令之间存在控制相关; 如果两条指令使用同一个功能部件,则这两条指令之间存在结构相关。在访存通路设计中, 数据相关和结构相关的问题是最为突出的两个问题,本发明基于AMBA中的AHB-Lite协议, 着重解决这两个关键问题。
[0004] AMBA(Advanced Microcontroller Bus Architecture)协议是ARM公司推出的用 于管理片上系统(S0C)中功能模块的开放标准和片上互连规范。AMBA提供一种特殊机制,可 将RISC处理器集成在其他IP核和外设中,AMBA标准3.0版定义了四组总线:AXI、AHB、Aro、 ATB,如果除去主设备和从设备之间非必须的协议部分,而剩余的AHB协议的子集称为AHB-Lite,遵循AHB-Lite协议进行数据传输时,每一次传输任务都需要至少两拍完成:在从设备 准备好的情况下,主设备第一拍传送控制信息;在从设备再次准备好的情况下,接下来传递 数据信息和下一条访存操作的控制信息。
[0005] MIPS架构设计中,与访存有关的"指令相关"可以是Load操作与非访存指令间的 "寄存器型数据相关",也可以是Store操作和Load操作访问相同内存地址,而产生的"内存 型数据相关",还可以是Store操作和Load操作同时发送访存请求,而争用访存总线而产生 的结构相关(或称作访存竞争),甚至还可以是数据相关与控制相关同时存在,由于寄存器 型相关,可以通过循环展开、寄存器重命名、旁路前递等方法解决,本发明的关注点主要集 中于内存型数据相关,和访存竞争型结构相关(下文均分别简称为"数据相关"和"结构相 关")。
[0006] 另外,在本专利中,以经典5级流水线(取值、译码、执行、访存、写回)为例,为保证 处理器精确例外,考虑到Uncache Load需要在处于确定状态后,才可以发送访存请求,即若 将中断标记在访存级,贝1JUncache Load在访存级发请求。这样以来当Uncache Load和普通 Load分别处于访存阶段和执行阶段同时发送访存请求时,也会出现结构相关的情形。这里 需要说明的是,"精确例外"是指处理器发生例外的指令之前的操作都成功提交,例外指令 及其之后的指令均取消。Uncache Load是一种不经过cache的一种读操作,而这种读操作的 地址空间往往会具有"读清"(读取数据的同时,清除原数据)的特性。例如:中断控制器。在 多核处理器中,对于中断操作,一个处理器核读取中断请求后,需要同时清除请求标志,否 则就会出现处理器核多次处理中断请求的现象。
[0007]在访存设计中,Load操作和Store操作会出现同时访问内存的情况。对于Load操作 来讲,从内存取回的数据可能会被后续指令立即用到,为了尽可能不妨碍后续指令执行, Load操作往往可以优先于Store操作进行,只需要在访存结构设计中增加Store队列,暂时 存储被跃过的Store操作,然而,引入Store队列提高处理器效率的同时,也带来了更复杂的 数据相关问题。Store与Load操作的数据相关问题,根据严重程度可以分为3类:不相关、部 分相关、完全相关(不相关即Load操作的物理地址与Store操作的物理地址不存在交叠;完 全相关是指Load操作所需要的字节内容,全部能在Store队列中得到;部分相关为Load操作 的部分字节内容,在Store队列中可以得到,但是还有些字节必须从内存加载)。
[0008]如果Load操作与被越过的Store队列中的内容不存在数据相关,则增加Store队列 确实可以提高处理器的访存效率,但是,若两者存在数据相关,现存一种解决方法是可以阻 塞流水线,等到前一条指令执行完后,再执行后一条指令,但这样就失去或者降低了 Store 队列的作用;现存另一种解决方法是:如果完全相关,则直接前递数据,Load操作不发送访 存请求;如果不相关则Load直接越过Store操作,Load发访存请求;如果部分相关,则堵塞 Load操作,待Store操作结束后,Load再发访存请求。
[0009] 第一种方法的不足在于:若采取纯粹堵流水线的方法,就失去或降低Store队列的 意义,而且对于提高流水线效率无积极作用,同时也增加了面积和功耗开销。第二种方法一 定程度上确实可以提高流水线效率,也兼顾了实现的复杂性,但是没能利用已有数据,对于 部分相关问题,采取堵塞流水线的方法,不够高效。综上所述,访存操作的数据相关和结构 相关问题的处理效率还有提升的空间和意义,而且现有方法均未结合具体总线协议的特 点。

【发明内容】

[0010] 针对现有技术的不足,本发明提出一种基于AHB-Lite协议的访存队列设计方法及 其装置。
[0011] 本发明提出一种基于AHB-Li te协议的访存队列设计方法,包括:
[0012] 步骤1,在译码阶段,将Store操作与Load操作分别译码为Store队列需要的格式与 Load操作需要的格式;
[0013]步骤2,判断访存级是否为Uncache Load操作,若是,则发送访存请求,否则判断访 存级是否为Store操作,若为除Store操作之外的操作,则进行正常指令操作,若为Store操 作,则判断执行级是否为普通Load操作,若执行级是除普通Load操作之外的操作,则进入 Store操作发送访存请求,判断从设备是否准备好,若准备好,则Store队列发送AHB-Lite控 制信息与数据信息,对Store队列中数据进行移动,并完成AHB-Li te总线的访存请求,如果 执行级是普通Load操作,则对普通Load操作进行处理。
[0014] 所述步骤1包括:增加 Store队列,同时允许紧跟Store操作的普通Load操作先于 Store操作进行,其中Store队列包括:数据内容、首地址、每个字节的物理地址,每个字节的 物理地址使每个字节的内容直接被旁路获取,同时,还包括指示每个字节是否有效的有效 位。
[0015]所述步骤1还包括:对于普通Load操作,需要译码出的内容为:欲加载字节的物理 地址、有效位,以及字节数据Ready位,其中在普通Load操作越过Store操作的仲裁之后,在 发访存请求之前,进行数据相关性检查,对相关字节进行充分旁路操作,并且将旁路后的字 节数据Ready位置1,然后,对于字节数据Ready位为0的字节,依据AHB-Lite数据协议格式, 封装为相应粒度的访存请求,待数据返回,将相应字节数据Ready位置1,待所有的字节数据 Ready位都为1后,AHB-Lite协议中的HREADY信号置1,并进行下一条访存指令请求。
[0016]所述步骤2还包括:判断是否有新的访存操作,若有,则将控制信息储存在Store队 列控制域,否则判断从设备是否准备好,若准备好,则Store队列发送AHB-Lite格式的数据 信息,否则重新判断从设备是否准备好。
[0017]所述步骤2中对普通Load操作进行处理的步骤包括将普通Load操作中有效且数据 未准备好的字节地址与Store队列中有效字节地址进行比较,检查是否有地址相同的字节, 若有,则将地址相同的字节的值从SQ旁路到普通Load操作,并将相应字节的Ready位设置为 1,判断普通Load操作的所有有效字节是否都被置位,若是,则Load不发访存请求,否则Load 发访存请求,并进行字节拼接。
[0018]本发明还提出一种基于AHB-Li te协议的访存队列设计装置,包括:
[0019] 译码模块,用于在译码阶段,将Store操作与Load操作分别译码为Store队列需要 的格式与Load操作需要的格式;
[0020]访存请求模块,用于判断访存级是否为Uncache Load操作,若是,则发送访存请 求,否则判断访存级是否为Store操作,若为除Store操作之外的操作,则进行正常指令操 作,若为Store操作,则判断执行级是否为普通Load操作,若执行级是除普通Load操作之外 的操作,则进入Store操作发送访存请求,判断从设备是否准备好,若准备好,则Store队列 发送AHB-Lite控制信息与数据信息,对Store队列中数据进行移动,并完成AHB-Lite总线的 访存请求,如果执行级是普通Load操作,则对普通Load操作进行处理。
[0021] 所述译码模块包括:增加 Store队列,同时允许紧跟Store操作的普通Load操作先 于Store操作进行,其中Store队列包括:数据内容、首地址、每个字节的物理地址,每个字节 的物理地址使每个字节的内容直接被旁路获取,同时,还包括指示每个字节是否有效的有 效位。
[0022] 所述译码模块还包括:对于普通Load操作,需要译码出的内容为:欲加载字节的物 理地址、有效位,以及字节数据Ready位,其中在普通Load操作越过Store操作仲裁之后,在 发访存请求之前,进行数据相关性检查,对相关字节进行充分旁路操作,并且将旁路后的字 节数据Ready位置1,然后,对于字节数据Ready位为0的的字节,依据AHB-Lite数据协议格 式,封装为相应粒度的访存请求,待数据返回,将相应字节数据Ready位置1,待所有的字节 数据Ready位都为1后,AHB-Lite协议中的HREADY信号置1,并进行下一条访存指令请求。
[0023] 所述访存请求模块还包括:判断是否有新的访存操作,若有,则将控制信息储存在 Store队列控制域,否则判断从设备是否准备好,若准备好,则Store队列发送AHB-Lite格式 的数据信息,否则重新判断从设备是否准备好。
[0024] 所述访存请求模块中对普通Load操作进行处理的步骤包括将普通Load操作中有 效且数据未准备好的字节地址与Store队列中有效字节地址进行比较,检查是否有地址相 同的字节,若有,则将地址相同的字节的值从SQ旁路发送到普通Load操作,并将相应字节的 Ready位置位置为1,判断普通Load操作的所有有效字节是否都被置位,若是,则Load不发访 存请求,否则Load发访存请求,并进行字节拼接。
[0025] 由以上方案可知,本发明的优点在于:
[0026]本发明基于AHB-Lite协议,设计了带缓存和字节地址标签的Store队列,结合该协 议特点,利用了旁路操作,对于不能旁路的数据部分,进行了字节或者半字粒度的AHB-Lite 格式的访存请求封装,解决了Store操作与Load操作数据相关问题,同时,为了进一步提高 流水线的效率,本发明提出了一种访存设计方法和访存竞争仲裁逻辑,综合以上两个方面, 提高了访存操作的效率。
【附图说明】
[0027] 图1为本发明具体实施例的访存方法和装置流程示意图;
[0028] 图2为举例说明本发明的存储字节操作时,Store队列中的数据结构示意图;
[0029] 图3为举例说明本发明的上一条指令为存储字节操作,下一条指令为存储半字操 作时的Store队列中的数据结构示意图;
[0030] 图4为本发明的加载字节操作时的内存举例及举例说明Load操作的译码格式示意 图;
[0031 ]图5为本发明基于AHB-Lite协议的Store队列宏观结构及工作方式示意图;
[0032]图6为举例说明本发明的Store指令粒度变化时,Store队列数据的变化方式,以及 不同Load操作的译码格式以及Load操作完成时,Load格式内容的变化示意图。
【具体实施方式】
[0033] 本发明解决的主要技术问题为:处理访存操作的数据相关与结构相关,提高访存 操作的流水线效率。为了解决上述技术问题,结合具体总线标准,提出了一种基于AHB-Lite 协议的访存队列设计方法及其装置。
[0034] 为了达到上述目的,本发明是通过以下技术方案来实现的。
[0035]基于AHB-Lite协议,结合该协议需要至少2拍完成控制信息与数据信息错位发送 的特点,设计了访存队列结构和队列工作方式,利用非对齐地址比较及拼接方法,对"相关 指令"所需的数据进行前递操作,而未能通过旁路得到的数据部分,再进一步封装成字节或 半字粒度的AHB-Lite总线请求形式,解决了基于该总线协议的访存数据相关问题。
[0036]为了进一步提高访存效率,对于访存操作可能由于竞争而产生的结构相关问题, 提出了Uncache Load操作、普通Load操作以及Store操作争用总线时的访存请求仲裁逻辑 和电路。
[0037]进一步地,基于AHB-Lite协议的两拍错位完成发送任务的特点,设计的Store队列 除了具有字节地址标记的本拍访存数据外,还有一组无地址标签的数据缓存。
[0038]进一步地,提出了带无地址标签数据缓存的Store队列工作方式。对于控制信息, 采用直接发送的方式(进入控制域的信息直接在下拍发送)。对于数据信息采用"缓存移动 再发送"的方式。
[0039] 进一步地,设计的Store队列允许后续指令中的普通Load操作越过Store队列中的 Store操作,使加载的数据能够较快地送入处理器,减少对后序存在数据相关指令的影响。 [0040]进一步地,外部硬件中断、内部软中断信息均标记在访存级。不考虑访存操作中的 总线例外,保证一旦进入写回级,指令不会再被标上异常,保证Uncache Load操作的确定 性,从而也就保证了精确例外。
[0041 ] 进一步地,普通Load操作在执行级发送访存请求;Store操作既经过Store队列,又 经过主流水线。因此,Uncache Load操作在访存级发访存请求时,Store操作与Uncache Load操作不会产生访存竞争。
[0042] 进一步地,对于Store队列中为Store操作,执行级为Uncache Load操作的情况, Uncache Load操作要等待Store提交,才能进入访存级。对于访存级为Uncache Load操作, 执行级为Store操作的情形,Store操作也要等待Uncache Load操作进入写回级后再发送访 存请求。对于访存级为Uncache Load,执行级为普通Load,普通Load操作也要等待Uncache Load执行完毕,才能发访存请求,进而进入访存级。对于Store队列为Store,执行级指令为 普通Load,Load操作可以越Store操作,而先发出访存请求。
[0043]进一步地,提出了指令流中后续的Load指令与Store队列中的Store操作进行数据 相关检测的方法,以及在存在数据相关问题时的高效解决办法。详细说明为:若数据不相 关,则Load操作越过Store操作。若两者数据完全相关(即,Load操作的数据可以从Store操 作前递得到),则从Store队列中旁路相关的数据,Load操作不发送访存请求。若Load操作的 数据不能从Store队列中完全前递,则既需要旁路相关的字节或半字数据,又需要对不能旁 路的数据部分,打包成字节或半字粒度的访存请求。待访存数据返回后,进行数据拼接。
[0044] 进一步地,Store队列除了具有无标签数据缓存外,还具有当条指令的数据信息和 控制信息。其中数据信息按字节粒度进行选择,控制信息包括每个字节的地址信息和每个 字节是否有效的指示位,以及AHB-Lite协议的其他控制信号线(由于该部分与解决本发明 中的问题不关键,示意图中不再专门画出)。
[0045] 进一步地,基于AHB-Lite协议的数据发送操作,采用广播方式(发送一字节,则进 行一个字中的四字节复制;发送半字,则进行两半字复制)。
[0046] 进一步地,对于一条指令存储3字节的操作,由于AHB-Lite协议不支持3字节的存 储形式,本发明中将其分解为存字节和存半字的两次操作。将两次操作都封装成AHB-Lite 协议要求的格式(发送地址适当变化)。
[0047]进一步地,为了使旁路操作更加方便,Load操作的译码格式要包含:字节地址位 (每个字节的地址)、字节有效位(指示该地址域内的地址是否有效)、字节数据Ready位(指 示该字节的最新数据是否准备好)。
[0048] 下面结合附图和【具体实施方式】对本发明做进一步详细描述。
[0049] 基于AHB-Lite协议的访存队列设计方法实施流程,如图1所示,先说明发明涉及的 其他装置实施例之后,再对该方法流程进行详细说明。
[0050] 图2所示,为存储字节操作的装置实施例。该装置包括如下几个部分:
[0051] S2-01为无地址标签的数据缓存。保存上拍指令要存储的数据。
[0052] S2-02为带地址标签的数据。保存当拍指令要存储的字节数据。
[0053] S2-03为带地址标签的数据的按字节粒度进行选择的格式。
[0054] S2-04为S2-03中数据的每个字节对应的地址。
[0055] S2-05指示S2-03和S2-04的字节内容和字节地址是否有意义。
[0056]图3所示,为存储半字操作的Store队列的装置实施例。
[0057] S3-01为无地址标签的数据缓存。保存上拍指令要存储的数据。
[0058] S3-02为带地址标签的数据。保存当拍指令要存储的半字数据。
[0059] S3-03为带地址标签的数据的按字节粒度进行选择的格式。
[0060] S3-04为S3-03中数据的每个字节对应的地址。
[0061 ] S3-05指示S3-03和S3-04的字节内容和字节地址是否有意义。
[0062]图4所示,为加载字节操作时,内存内容举例及Load操作的特殊译码格式举例。 [0063] S4-01为将要从内容加载入寄存器的字节。
[0064] S4-02为举例说明的小尾端内容数据格式。
[0065] S4-03为有符号字节加载操作的寄存器最低字节内容。
[0066] S4-04为有符号字节加载操作后的符号扩展形式。
[0067] S4-05为无符号字节加载操作后的无符号扩展形式。
[0068] S4-06为无需加载的字节的有效位置为1。
[0069] S4-07为需要加载的字节有效位置为0。
[0070] S4-08为需要加载字节加载后,相应的有效位置为1。
[0071]图5所示,为基于AHB-Lite协议的Store队列宏观结构及工作方式示意。
[0072] S5-01控制域,存储当拍指令的控制信息。
[0073] S5-02带地址标签的数据域,存储当拍指令的数据信息。
[0074] S5-03无地址标签的数据域,缓存上拍或之前访存指令的数据信息。
[0075]图6所示,为Store指令粒度变化时,Store队列数据的变化方式,以及不同Load操 作的译码格式以及Load操作完成时,Load格式内容的变化示意图,其中指令次序分别如下 表1所示。
[0076]表 1
[0078] S6-01至S6-07为表1左侧指令序列对应的Store队列格式。
[0079] S6-08指示存储字节操作的有效字节。
[0080] S6-09为SWL操作为3字节存储情形下,第一步的分解操作。存储单个字节。
[0081 ] S6-10为SWL操纵为3字节存储情形下,第二步的分解操作。存储半字。
[0082] S6-11至S6-18为表1右侧指令序列对应的Load译码格式。
[0083] S6-19为加载字节的内存中的字节。
[0084] S6-20为要加载的寄存器的第0字节 [0085] S6-21为加载字节操作后的符号扩展。
[0086] S6-22指示要加载的字节是否已经加载。
[0087] S6-23指示无符号加载操作的无符号扩展形式。
[0088] S6-24指示加载半字操作的位置。
[0089] S6-25指示加载字操作的位置。
[0090] S6-26为加载3字节操作时,目的寄存器的原来最低位字节保持不变。
[0091 ]下面对图1所示访存设计方法及装置进行详细描述:
[0092] 步骤S1-01,在译码阶段,将Sore操作和Load操作分别译码为Store队列需要的格 式和Load操作的格式,Store队列的装置实施例和Load操作的译码格式实施例如图2和图3 所示和图4所示。
[0093] 增加 Store队列,允许紧跟Store操作的普通Load操作可以优先于Store进行,对 Store队列进行特殊设计:除了要具有存储的数据内容和首地址外,还要有每个字节的物理 地址,使每个字节的内容可直接旁路获取,同时,也要有指示每个字节是否有效的有效位, 如图2所示为存储字节操作时的Store队列数据格式,其中Valid字段(S2-05和S3-05)和 Addr字段(S2-04和S3-04)为控制信息,分别指示要存储的有效字节(1表示有效,0表示无 效)和字节物理地址(XX为不关心内容),对应于图5中的位置S5-0141字段(S2-02、S2-03和 S3-02、S3-03)指示要存储的数据,其中的每个字节都可以进行旁路操作,对应于图5中的位 置 S5-02。Sq_o lddata 处(S2-01 和 S3-01)对应图 5 中的位置 S5-03。
[0094] 为了解决Store与Load相关问题,需要对Load指令的译码操作进行特殊要求。对于 Load操作,要译码出以下内容:欲加载字节的物理地址、有效位,以及字节数据Ready位(指 示所需要的该字节数据是否已经准备好),如图4所示。在普通Load操作越过Store操作仲裁 之后,在发访存请求之前,进行数据相关性检查,对相关字节进行充分旁路操作,并且将旁 路后的字节数据Ready位置1,然后,对于字节数据Ready为0的的字节,依据AHB-Lite数据协 议格式,封装为合适粒度的访存请求,待数据返回,将相应的字节数据Ready位置1,待所有 的字节数据Ready位都为1后,AHB-Lite协议中的HREADY信号才能置1,才可以进行下一条访 存指令请求。
[0095] 步骤S1-02判断访存级是否为Uncache Load操作,如果是,则进入S1-19发送访存 请求,如果不是,则进入S1-03,判断访存级是否为store操作,如果不是store操作,则进入 S1-18,进行正常指令操作,如果访存级是Store操作,则进入Sl-11,判断执行级是否为普通 Load操作,如果不是,则进入store操作发访存请求,而进入步骤S1-04,然后,经过S1-05、 31-06、31-07、31-08、31-09、31-10等步骤,完成4冊-1^丨6总线的访存请求;如果执行级是普 通Load操作,则进入步骤S1-12、S13。
[0096] 步骤S1-02、S1-03、S1_11部分为仲裁逻辑,作用是:对处于执行级的Load操作的访 存请求和位于Store队列的Store操作的请求或位于访存级的Uncache Load的访存请求进 行仲裁,若访存级为Uncache Load,执行级为普通Load,则Uncache Load发访存请求,若位 于访存级的Store队列中为Store,执行级不是普通的Load,则Store队列先发访存请求,若 位于访存级的Store队列中为Store,执行级是普通Load,贝lj普通的Load要优先于Store操 作,从而普通Load发请求。
[0097]步骤31-12、31-13,若普通1^^(1获得优先于31:〇代的发请求的权利,贝11进行数据相 关性检查,将Load操作中有效且字节未准备好的地址与Store队列中的有效地址进行比较, 若存在相同物理地址,则进行旁路操作,同时将相应的Load操作位的旁路字节的Ready位置 为1,待检查结束,若所有Ready位均为1,则说明完全相关,Load不发访存请求,进入下一级 (S1-16),若不相关或者部分相关,则需要Load针对未准备好的字节进行访存操作(S1-17), 例如,只有1个字节未准备好,则进行相当于LB的操作;若连续2个对齐的字节未准备好,则 进行一次相当于LH的操作;若访存3个字节,且只有中间的字节准备好,则进行一次LW操作, 数据返回后,对于未Ready的字节进行拼接,然后将相应的Ready位置为1,确保所有的字节 数据Ready位置1,则Load操作结束。
[0098]下面,对图5的Store队列移动方式进行详细描述。
[00"]若前一条指令为Store操作,接下来的一条指令也为store操作,那么Store队列的 更新规则如图5所示。
[0100] 第一步:Store操作发送S5-01位置处的当前控制信息和S5-03位置处前一条指令 的数据信息。
[0101] 第二步,将S5-02位置处本条Store操作的数据,移动到位置S5-03处。同时新的控 制信息和数据信息分别进入位置S5-01和S5-02处。
[0102] 第三步,再次发送S5-03和S5-01位置的数据信息和新的控制信息。
[0103] 具体地,对于表1的指令序列,Store队列的内容变化,和Load操作的译码格式如图 6所示。
[0104] 本发明还提出一种基于AHB-Lite协议的访存队列设计装置,包括:
[0105] 译码模块,用于在译码阶段,将Store操作与Load操作分别译码为Store队列需要 的格式与Load操作需要的格式;
[0106] 访存请求模块,用于判断访存级是否为Uncache Load操作,若是,则发送访存请 求,否则判断访存级是否为Store操作,若为除Store操作之外的操作,则进行正常指令操 作,若为Store操作,则判断执行级是否为普通Load操作,若执行级是除普通Load操作之外 的操作,则进入Store操作发送访存请求,判断从设备是否准备好,若准备好,则Store队列 发送AHB-Lite控制信息与数据信息,对Store队列中数据进行移动,并完成AHB-Lite总线的 访存请求,如果执行级是普通Load操作,则对普通Load操作进行处理。
[0107] 所述译码模块包括:增加 Store队列,同时允许紧跟Store操作的普通Load操作先 于Store操作进行,其中Store队列包括:数据内容、首地址、每个字节的物理地址,每个字节 的物理地址使每个字节的内容直接被旁路获取,同时,还包括指示每个字节是否有效的有 效位。
[0108] 所述译码模块还包括:对于普通Load操作,需要译码出的内容为:欲加载字节的物 理地址、有效位,以及字节数据Ready位,其中在普通Load操作越过Store操作仲裁之后,在 发访存请求之前,进行数据相关性检查,对相关字节进行充分旁路操作,并且将旁路后的字 节数据Ready位置1,然后,对于字节数据Ready位为0的的字节,依据AHB-Lite数据协议格 式,封装为相应粒度的访存请求,待数据返回,将相应字节数据Ready位置1,待所有的字节 数据Ready位都为1后,AHB-Lite协议中的HREADY信号置1,并进行下一条访存指令请求。 [0109]所述访存请求模块还包括:判断是否有新的访存操作,若有,则将控制信息储存在 Store队列控制域,否则判断从设备是否准备好,若准备好,则Store队列发送AHB-Lite格式 的数据信息,否则重新判断从设备是否准备好。
[0110]所述访存请求模块中对普通Load操作进行处理的步骤包括将普通Load操作中有 效且数据未准备好的字节地址与Store队列中有效字节地址进行比较,检查是否有地址相 同的字节,若有,则将地址相同的字节的值从SQ旁路发送到普通Load操作,并将相应字节的 Ready位置位置为1,判断普通Load操作的所有有效字节是否都被置位,若是,则Load不发访 存请求,否则Load发访存请求,并进行字节拼接。
【主权项】
1. 一种基于AHB-Lite协议的访存队列设计方法,其特征在于,包括: 步骤1,在译码阶段,将Store操作与Load操作分别译码为Store队列需要的格式与Load 操作需要的格式; 步骤2,判断访存级是否为Uncache Load操作,若是,则发送访存请求,否则判断访存级 是否为Store操作,若为除Store操作之外的操作,则进行正常指令操作,若为Store操作,则 判断执行级是否为普通Load操作,若执行级是除普通Load操作之外的操作,则进入Store操 作发送访存请求,判断从设备是否准备好,若准备好,则Store队列发送AHB-Lite控制信息 与数据信息,对Store队列中数据进行移动,并完成AHB-Lite总线的访存请求,如果执行级 是普通Load操作,则对普通Load操作进行处理。2. 如权利要求1所述的基于AHB-Lite协议的访存队列设计方法,其特征在于,所述步骤 1包括:增加 Store队列,同时允许紧跟Store操作的普通Load操作先于Store操作进行,其中 Store队列包括:数据内容、首地址、每个字节的物理地址,每个字节的物理地址使每个字节 的内容直接被旁路获取,同时,还包括指示每个字节是否有效的有效位。3. 如权利要求1所述的基于AHB-Lite协议的访存队列设计方法,其特征在于,所述步骤 1还包括:对于普通Load操作,需要译码出的内容为:欲加载字节的物理地址、有效位,以及 字节数据Ready位,其中在普通Load操作越过Store操作的仲裁之后,在发访存请求之前,进 行数据相关性检查,对相关字节进行充分旁路操作,并且将旁路后的字节数据Ready位置1, 然后,对于字节数据Ready位为0的字节,依据AHB-Li te数据协议格式,封装为相应粒度的访 存请求,待数据返回,将相应字节数据Ready位置1,待所有的字节数据Ready位都为1后, AHB-Lite协议中的HREADY信号置1,并进行下一条访存指令请求。4. 如权利要求1所述的基于AHB-Lite协议的访存队列设计方法,其特征在于,所述步骤 2还包括:判断是否有新的访存操作,若有,则将控制信息储存在Store队列控制域,否则判 断从设备是否准备好,若准备好,则Store队列发送AHB-Lite格式的数据信息,否则重新判 断从设备是否准备好。5. 如权利要求1所述的基于AHB-Lite协议的访存队列设计方法,其特征在于,所述步骤 2中对普通Load操作进行处理的步骤包括将普通Load操作中有效且数据未准备好的字节地 址与Store队列中有效字节地址进行比较,检查是否有地址相同的字节,若有,则将地址相 同的字节的值从SQ旁路到普通Load操作,并将相应字节的Ready位设置为1,判断普通Load 操作的所有有效字节是否都被置位,若是,则Load不发访存请求,否则Load发访存请求,并 进行字节拼接。6. -种基于AHB-Lite协议的访存队列设计装置,其特征在于,包括: 译码模块,用于在译码阶段,将Store操作与Load操作分别译码为Store队列需要的格 式与Load操作需要的格式; 访存请求模块,用于判断访存级是否为Uncache Load操作,若是,则发送访存请求,否 则判断访存级是否为Store操作,若为除Store操作之外的操作,则进行正常指令操作,若为 Store操作,则判断执行级是否为普通Load操作,若执行级是除普通Load操作之外的操作, 则进入Store操作发送访存请求,判断从设备是否准备好,若准备好,则Store队列发送AHB-Lite控制信息与数据信息,对Store队列中数据进行移动,并完成AHB-Lite总线的访存请 求,如果执行级是普通Load操作,则对普通Load操作进行处理。7. 如权利要求6所述的基于AHB-Lite协议的访存队列设计装置,其特征在于,所述译码 模块包括:增加 Store队列,同时允许紧跟Store操作的普通Load操作先于Store操作进行, 其中Store队列包括:数据内容、首地址、每个字节的物理地址,每个字节的物理地址使每个 字节的内容直接被旁路获取,同时,还包括指示每个字节是否有效的有效位。8. 如权利要求6所述的基于AHB-Lite协议的访存队列设计装置,其特征在于,所述译码 模块还包括:对于普通Load操作,需要译码出的内容为:欲加载字节的物理地址、有效位,以 及字节数据Ready位,其中在普通Load操作越过Store操作仲裁之后,在发访存请求之前,进 行数据相关性检查,对相关字节进行充分旁路操作,并且将旁路后的字节数据Ready位置1, 然后,对于字节数据Ready位为0的的字节,依据AHB-Lite数据协议格式,封装为相应粒度的 访存请求,待数据返回,将相应字节数据Ready位置1,待所有的字节数据Ready位都为1后, AHB-Lite协议中的HREADY信号置1,并进行下一条访存指令请求。9. 如权利要求6所述的基于AHB-Li te协议的访存队列设计装置,其特征在于,所述访存 请求模块还包括:判断是否有新的访存操作,若有,则将控制信息储存在Store队列控制域, 否则判断从设备是否准备好,若准备好,则Store队列发送AHB-Lite格式的数据信息,否则 重新判断从设备是否准备好。10. 如权利要求6所述的基于AHB-Lite协议的访存队列设计装置,其特征在于,所述访 存请求模块中对普通Load操作进行处理的步骤包括将普通Load操作中有效且数据未准备 好的字节地址与Store队列中有效字节地址进行比较,检查是否有地址相同的字节,若有, 则将地址相同的字节的值从SQ旁路发送到普通Load操作,并将相应字节的Ready位置位置 为1,判断普通Load操作的所有有效字节是否都被置位,若是,则Load不发访存请求,否则 Load发访存请求,并进行字节拼接。
【文档编号】G06F13/16GK105912485SQ201610202685
【公开日】2016年8月31日
【申请日】2016年4月1日
【发明人】沈海华, 刘天义
【申请人】中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1