非阻塞发射和执行的存储器访问执行装置的制作方法

文档序号:6366680阅读:113来源:国知局
专利名称:非阻塞发射和执行的存储器访问执行装置的制作方法
技术领域
本发明涉及嵌入式处理器,尤其是一种存储器访问执行装置。
背景技术
目前,包括嵌入式处 理器在内的所有微处理器都使用流水线技术提高指令执行的并行性以提高处理效率。程序中存在大量的载入/存储指令,其访问造成高速缓存缺失、回填和数据更新操作会占用高速缓存访问通路,阻塞后续载入/存储指令对高速缓存的访问,严重影响载入/存储指令的执行效率,进而影响整个处理器的性能。由于载入/存储指令造成的延时在很大程度上影响了处理器的性能,为提高高速缓存的访问效率,目前的常见解决方法是为采用非阻塞的高速缓存技术来加速载入/存储指令的处理。这种方法一般需要较大的硬件开销和复杂的高速缓存访问协议,同时高速缓存容量越大,这样的开销就越大。

发明内容
为了克服已有嵌入式处理器的存储器访问技术复杂度较高、硬件开销大的不足,本发明提供一种结构简单、有效降低硬件开销的非阻塞发射和执行的存储器访问执行装置。本发明解决其技术问题所采用的技术方案是一种非阻塞发射和执行的存储器访问执行装置,包括高速缓存器,存储指令指对高速缓存进行写的指令,载入指令表示对高速缓存进行读的指令;所述存储器访问执行装置还包括载入/存储指令发射队列,用以缓存取指单元取到的载入/存储指令,并将得到源操作数的载入/存储指令发射,计算访问地址并进行后续的高速缓存访问;载入/存储指令缓冲队列,用以在高速缓存器数据通路出现访问冲突时缓存载入/存储指令发射队列发射并完成地址计算的载入/存储指令;载入/存储指令重排序队列,用以记录载入/存储指令的地址、访问类型、高速缓存命中状态和指令实际顺序信息,检查乱序执行的正确性;将高速缓存命中的载入指令得到的数据直通到前级流水线,派发高速缓存缺失的载入指令到高速缓存回填队列中,派发所有存储指令的到高速缓存更新队列中;高速缓存回填队列,用以缓存高速缓存缺失的载入指令,向下级存储器发起的请求,获得缺失的高速缓存行并回填高速缓存;高速缓存更新队列,用以缓存高速缓存命中的存储指令并按序更新高速缓存;高速缓存回写队列,用以缓存高速缓存缺失的存储指令和被替换的脏缓存行的数据,并按序更新下级存储器。进一步,所述载入/存储指令发射队列中,按照指令实际顺序缓存载入/存储指令,载入/存储指令在载入/存储指令发射队列中等待其源操作数准备完毕,载入/存储指令发射队列会监视队列中载入/存储指令的操作数是否已准备好,同时将操作数准备好的最老的载入/存储指令乱序发射到后级流水线。再进一步,高速缓存器通路会被多种访问请求占用,按优先级从高到低依次为1)高速缓存回填队列回填高速缓存的请求,2)载入/存储指令缓冲队列指令访问高速缓存的请求,3)高速缓存更新队列中存储指令更新高速缓存的请求,4)高速缓存回填队列读取脏缓存行的请求。更进一步,所述载入/ 存储指令缓冲队列记录载入指令或存储指令的类型、访存宽度、符号扩展、数据所在的高速缓存器区块位置以及该指令在载入指令/存储指令重排序队列中的记录引索,载入/存储指令缓冲队列入口同时包括一个用于载入/存储指令访问地址的计算的地址加法器。所述载入/存储指令重排序队列记录载入/存储指令的地址、访问类型、高速缓存命中状态和指令实际顺序信息,检查乱序执行的正确性;在载入/存储指令进入载入/存储指令发射队列的同时需要在载入/存储指令重排序队列中创建相应的载入/存储指令表项,并记录载入/存储指令的实际顺序。高速缓存回填队列判断被替换缓存行是否为脏,将脏缓存行填入高速缓存回写队列以更新下一级存储器,之后按照实际指令顺序向下级存储器发起请求,获得缺失的高速缓存行并回填高速缓存。所述载入/存储指令缓冲队列中,当高速缓存器通路没有被其他访问请求占用时,若载入/存储指令缓冲队列为空,载入/存储指令发射队列发射并完成地址计算的指令将不进入载入/存储指令缓冲队列,直接访问高速缓存器;若载入/存储指令缓冲队列中有被缓冲指令,载入/存储指令发射队列发射并完成地址计算的指令将进入载入/存储指令缓冲队列中排队。当高速缓存器通路被其他访问请求占用时,完成地址计算的指令将进入载入/存储指令缓冲队列中排队。检查乱序执行的正确性的过程为若一条载入指令在另一条存储指令被发射到存储访问单元之前就结束了对高速缓存器的访问,而该存储指令的实际顺序在载入指令之前并且两者地址相同,则载入指令的提前执行投机失败,重新执行实际指令顺序中存储指令以后的所有指令;正在访问高速缓存器的载入指令,若其地址与高速缓存更新队列中高速缓存命中的存储指令相同,则该载入指令在该存储指令更新高速缓存器时旁路获得其数据;若载入/存储指令重排序队列中指令的地址与高速缓存回填队列中回填缓存行的地址相同,则将该载入/存储指令的高速缓存命中状态改为高速缓存命中;若载入/存储指令重排序队列中指令的地址与高速缓存回填队列中被替换缓存行的地址相同,则将该载入/存储指令的高速缓存命中状态改为高速缓存缺失;若载入/存储指令重排序队列中的载入指令地址与高速缓存回填队列中回填缓存行地址相同,则该载入指令旁路获得高速缓存回填队列中的回填数据;若载入/存储指令重排序队列中的载入指令地址与高速缓存更新队列中高速缓存命中的存储指令地址相同,则该载入指令旁路获得高速缓存更新队列中高速缓存命中的存储指令的数据。本发明的技术构思为利用载入/存储指令重排序队列记录载入/存储指令发射队列发射的指令,利用高速缓存回填队列缓存高速缓存缺失的载入指令,利用高速缓存更新队列缓存高速缓存命中的存储指令,消除对高速缓存器通路的阻塞,加速高速缓存命中的载入指令的数据获得,从而加速载入/存储指令发射队列及其他指令发射队列中指令的操作数获得,提高不同执行单元的并行性。本发明的有益效果主要表现在结构简单,在进行高效的载入/存储指令非阻塞发射和执行的同时开销较小。


图I是非阻塞发射和执行的存储器访问执行装置的结构图。
具体实施例方式下面结合附图对本发明作进一步描述。参照附图1,一种非阻塞发射和执行的存储器访问执行装置,所述存储器访问执行装置包括高速缓存器,包括标志位阵列存储器、数据阵列存储器、脏数据位阵列存储器;存储指令指对闻速缓存进行与的指令,载入指令表不对闻速缓存进行读的指令;所述存储器访问执行装置还包括载入/存储指令发射队列,如图I。取指单元取到指令后进行解码,若该指令为载入/存储指令,则按序将其发射到载入/存储指令发射队列。载入/存储指令在载入/存储指令发射队列中等待其源操作数准备完毕。对于载入指令来说,源操作数包括基址寄存器、地址偏移量立即数/地址偏移量寄存器;对于存储指令来说,源操作数包括基址寄存器、地址偏移量立即数/地址偏移量寄存器、数据寄存器。但为了加速存储指令的发射,存储指令的数据操作数即使没有准备好也会发射。载入/存储指令发射队列会监视队列中载入/存储指令的操作数是否已准备好,同时将操作数准备好的最老的载入/存储指令乱序发射到后级流水线。高速缓存器通路会被载入/存储指令缓冲队列指令访问高速缓存的请求、高速缓存回填队列读取脏缓存行的请求、高速缓存回填队列回填高速缓存的请求、高速缓存更新队列中存储指令更新高速缓存的请求占用。请求的优先级从高到低为1)高速缓存回填队列回填高速缓存的请求,2)载入/存储指令缓冲队列指令访问高速缓存的请求,3)高速缓存更新队列中存储指令更新高速缓存的请求,4)高速缓存回填队列读取脏缓存行的请求。载入/存储指令缓冲队列,如图1,用于记录和缓冲高速缓存器访问指令的访问类型、访存宽度、符号扩展、数据所在的高速缓存器区块位置、该指令在载入/存储指令重排序队列中的记录弓I索等信息。载入/存储指令缓冲队列入口同时包括一个地址加法器用于载入/存储指令访问地址的计算,其中一个操作数根据访问宽度进行不同位数的位移。载入/存储指令由载入/存储指令发射队列发射时,由加法器计算访问地址。当访问宽度为半字、字或双字时,其中一个操作数分别位移一位、两位或三位。当高速缓存器通路没有被其他访问请求占用,若载入/存储指令缓冲队列中无指令,则计算完地址的指令将旁路载入/存储指令缓冲队列并立即得到高速缓存器的访问通路;若载入/存储指令缓冲队列中存在指令,完成地址计算的指令将进入载入/存储指令缓冲队列中排队,同时在载入/存储指令缓冲队列中记录该指令的访问类型、访存宽度、符号扩展、数据所在的高速缓存器区块位置、该指令在载入/存储指令重排序队列中的记录引索等信息,载入/存储指令缓冲队列中等待的指令将按序出队访问高速缓存器。当高速缓存器通路被其他访问请求占用时,完成地址计算的指令将进入载入/存储指令缓冲队列中排队。载入/存储指令重排序队列,如图1,用以记录载入/存储指令的地址、访问类型、高速缓存命中状态。由于载入/存储指令会被载入/存储指令发射队列乱序地发射,因此在载入/存储指令进入载入/存储指令发射队列的同时需要在载入/存储指令重排序队列中创建相应的载入/存储指令表项,并记录载入/存储指令的实际顺序。载入/存储指令重排序队列中记录了指令的实际顺序。由于载入/存储指令的乱序发射,指令访问高速缓存器的顺序可能会与指令实际顺序不同,指令执行的同时需要检查和纠正乱序发射执行可能引入的错误。如果一条载入指令在另一条存储指令被发射到存储访问单元之前就结束了对高速缓存器的访问,而该存储指令的实际顺序在载入指令之前 并且两者地址相同,则载入指令的提前执行被认为是一次投机失败,需要重新执行实际指令顺序中存储指令以后的所有指令。由于没有准备好数据操作数的存储指令也会被载入/存储指令发射队列发射,所以载入/存储指令重排序队列会继续监视其数据操作数的是否准备好并旁路获得该数据。载入/存储指令重排序队列将高速缓存命中的载入指令得到的数据直通到前级流水线,因此可以尽可能的加速高速缓存命中的载入指令数据的获得,加速与其有数据依赖的其他指令的发射执行。高速缓存回填队列,如图1,用以缓存高速缓存缺失的载入指令,以便消除其对高速缓存器通路的阻塞。载入/存储指令重排序队列将高速缓存缺失的载入指令按照实际指令顺序发射到高速缓存回填队列中。高速缓存回填队列会判断被替换缓存行是否为脏,将脏缓存行填入高速缓存回写队列以更新下一级存储器,之后按照实际指令顺序向下级存储器发起请求、获得缺失的高速缓存行并回填高速缓存。高速缓存更新队列,如图1,用以缓存高速缓存命中的存储指令,以便消除其对高速缓存器通路的阻塞。载入/存储指令重排序队列将高速缓存命中的存储指令按照实际指令顺序发射到高速缓存更新队列中。高速缓存更新队列中的指令将按序更新高速缓存。高速缓存回写队列,如图1,用以缓存高速缓存缺失的存储指令和被替换的脏缓存行的数据,以便消除对高速缓存器通路的阻塞。载入/存储指令重排序队列将高速缓存缺失的存储指令和被替换的脏缓存行的数据按照实际指令顺序发射到高速缓存回写队列中。高速缓存回写队列将按序更新下级存储器。由于指令的乱序执行,正在访问高速缓存器的载入指令,若其地址与高速缓存更新队列中高速缓存命中的存储指令相同,则需要该载入指令在该存储指令更新高速缓存器的同时旁路获得其数据以保证载入指令获得的数据的正确性。同样的,访问高速缓存器后进入载入/存储指令重排序队列的载入/存储指令的命中信息可能不准确,需要监视高速缓存回填队列予以纠正。若载入/存储指令重排序队列中指令的地址与高速缓存回填队列中回填缓存行的地址相同,则需要将该载入/存储指令的高速缓存命中状态改为高速缓存命中;若载入/存储指令重排序队列中指令的地址与高速缓存回填队列中被替换缓存行的地址相同,则需要将该载入/存储指令的高速缓存命中状态改为高速缓存缺失。同时,载入/存储指令重排序队列中的载入指令地址若与高速缓存回填队列中回填缓存行地址相同,则该载入指令需要旁路获得高速缓存回填队列中的回填数据以保证正确性;载入/存储指令重排序队列中的载入指令地址若与高速 缓存更新队列中高速缓存命中的存储指令地址相同,则该载入指令需要旁路获得高速缓存更新队列中高速缓存命中的存储指令的数据以保证正确性。
权利要求
1.一种非阻塞发射和执行的存储器访问执行装置,包括高速缓存器,存储指令指对高速缓存进行写的指令,载入指令表示对高速缓存进行读的指令;其特征在于所述存储器访问执行装置还包括 载入/存储指令发射队列,用以缓存取指単元取到的载入/存储指令,并将得到源操作数的载入/存储指令发射,计算访问地址并进行后续的高速缓存访问; 载入/存储指令缓冲队列,用以在高速缓存器数据通路出现访问冲突时缓存载入/存储指令发射队列发射并完成地址计算的载入/存储指令; 载入/存储指令重排序队列,用以记录载入/存储指令的地址、访问类型、高速缓存命中状态和指令实际顺序信息,检查乱序执行的正确性;将高速缓存命中的载入指令得到的数据直通到前级流水线,派发高速缓存缺失的载入指令到高速缓存回填队列中,派发所有存储指令的到高速缓存更新队列中; 高速缓存回填队列,用以缓存高速缓存缺失的载入指令,向下级存储器发起的请求,获得缺失的高速缓存行并回填高速缓存; 高速缓存更新队列,用以缓存高速缓存命中的存储指令并按序更新高速缓存; 高速缓存回写队列,用以缓存高速缓存缺失的存储指令和被替换的脏缓存行的数据,并按序更新下级存储器。
2.如权利要求I所述的非阻塞发射和执行的存储器访问执行装置,其特征在于所述载入/存储指令发射队列中,按照指令实际顺序缓存载入/存储指令,载入/存储指令在载入/存储指令发射队列中等待其源操作数准备完毕,载入/存储指令发射队列会监视队列中载入/存储指令的操作数是否已准备好,同时将操作数准备好的最老的载入/存储指令乱序发射到后级流水线。
3.如权利要求I或2所述的非阻塞发射和执行的存储器访问执行装置,其特征在于高速缓存器通路会被多种访问请求占用,按优先级从高到低依次为1)高速缓存回填队列回填高速缓存的请求,2)载入/存储指令缓冲队列指令访问高速缓存的请求,3)高速缓存更新队列中存储指令更新高速缓存的请求,4)高速缓存回填队列读取脏缓存行的请求。
4.如权利要求I或2所述的非阻塞发射和执行的存储器访问执行装置,其特征在于所述载入/存储指令缓冲队列记录载入指令或存储指令的类型、访存宽度、符号扩展、数据所在的高速缓存器区块位置以及该指令在载入指令/存储指令重排序队列中的记录引索,载入/存储指令缓冲队列入ロ同时包括ー个用于载入/存储指令访问地址的计算的地址加法器。
5.如权利要求I或2所述的非阻塞发射和执行的存储器访问执行装置,其特征在于所述载入/存储指令重排序队列记录载入/存储指令的地址、访问类型、高速缓存命中状态和指令实际顺序信息,检查乱序执行的正确性;在载入/存储指令进入载入/存储指令发射队列的同时需要在载入/存储指令重排序队列中创建相应的载入/存储指令表项,并记录载入/存储指令的实际顺序。
6.如权利要求I所述的非阻塞发射和执行的存储器访问执行装置,其特征在于高速缓存回填队列判断被替换缓存行是否为脏,将脏缓存行填入高速缓存回写队列以更新下一级存储器,之后按照实际指令顺序向下级存储器发起请求,获得缺失的高速缓存行并回填高速缓存。
7.如权利要求I或2所述的非阻塞发射和执行的存储器访问执行装置,其特征在于所述载入/存储指令缓冲队列中,当高速缓存器通路没有被其他访问请求占用时,若载入/存储指令缓冲队列为空,载入/存储指令发射队列发射并完成地址计算的指令将不进入载入/存储指令缓冲队列,直接访问高速缓存器;若载入/存储指令缓冲队列中有被缓冲指令,载入/存储指令发射队列发射并完成地址计算的指令将进入载入/存储指令缓冲队列中排队。
当高速缓存器通路被其他访问请求占用时,完成地址计算的指令将进入载入/存储指令缓冲队列中排队。
8.如权利要求,5所述的非阻塞发射和执行的存储器访问执行装置,其特征在于检查乱序执行的正确性的过程为 若一条载入指令在另一条存储指令被发射到存储访问单元之前就结束了对高速缓存器的访问,而该存储指令的实际顺序在载入指令之前并且两者地址相同,则载入指令的提前执行投机失败,重新执行实际指令顺序中存储指令以后的所有指令; 正在访问高速缓存器的载入指令,若其地址与高速缓存更新队列中高速缓存命中的存储指令相同,则该载入指令在该存储指令更新高速缓存器时旁路获得其数据; 若载入/存储指令重排序队列中指令的地址与高速缓存回填队列中回填缓存行的地址相同,则将该载入/存储指令的高速缓存命中状态改为高速缓存命中;若载入/存储指令重排序队列中指令的地址与高速缓存回填队列中被替换缓存行的地址相同,则将该载入/存储指令的高速缓存命中状态改为高速缓存缺失; 若载入/存储指令重排序队列中的载入指令地址与高速缓存回填队列中回填缓存行地址相同,则该载入指令旁路获得高速缓存回填队列中的回填数据;若载入/存储指令重排序队列中的载入指令地址与高速缓存更新队列中高速缓存命中的存储指令地址相同,则该载入指令旁路获得高速缓存更新队列中高速缓存命中的存储指令的数据。
全文摘要
一种非阻塞发射和执行的存储器访问执行装置,包括高速缓存器;载入/存储指令发射队列,用以缓存取指单元取到的载入/存储指令,并将得到源操作数的载入/存储指令发射,计算访问地址并进行后续的高速缓存访问;载入/存储指令缓冲队列,用以在高速缓存器数据通路出现访问冲突时缓存载入/存储指令发射队列发射的指令;载入/存储指令重排序队列,用以记录载入/存储指令的高速缓存命中状态、指令实际顺序信息,检查乱序执行的正确性,将高速缓存命中的载入指令得到的数据直通到前级流水线,派发高速缓存缺失的载入指令和所有存储指令的到相应的高速缓存回填队列、高速缓存更新队列和高速缓存回写队列。本发明结构简单、有效降低硬件开销。
文档编号G06F9/38GK102662634SQ20121007623
公开日2012年9月12日 申请日期2012年3月21日 优先权日2012年3月21日
发明者冷冰, 葛海通, 鄢传卿, 黄欢欢 申请人:杭州中天微系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1