CN101719055B - 快速执行加载存储指令模块 - Google Patents
快速执行加载存储指令模块 Download PDFInfo
- Publication number
- CN101719055B CN101719055B CN200910155142A CN200910155142A CN101719055B CN 101719055 B CN101719055 B CN 101719055B CN 200910155142 A CN200910155142 A CN 200910155142A CN 200910155142 A CN200910155142 A CN 200910155142A CN 101719055 B CN101719055 B CN 101719055B
- Authority
- CN
- China
- Prior art keywords
- instruction
- storage
- load instructions
- loading
- data
- 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.)
- Active
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
一种快速执行加载存储指令模块,该模块包括:相关性识别单元,用以当同时满足当前指令为存储指令和当前指令所需存储的数据来源于前续未执行完成的加载指令时,判定存储指令与前续加载指令存在数据相关性;指令地址生成单元,用以根据输入的加载/存储指令流,计算当前加载/存储指令所需要访问片上高速缓存和片外内存的地址;指令缓冲单元,由指令缓冲单元表项组成,用以临时缓来源于相关性识别单元和指令地址生成单元输出的与执行存储指令相关的所有信息,同时旁路来自于前序加载指令完成时返回的数据。本发明当出现数据相关性时能够避免流水线阻塞、提升嵌入式处理器的性能。
Description
技术领域
本发明涉及嵌入式处理器领域,尤其是嵌入式处理器的快速执行加载存储指令模块。
背景技术
近年来随着高性能嵌入式处理器的发展,大量原来需要在硬件加速器协助下才能完成的任务,现在已经完全可以由嵌入式处理器独立完成了。这大大推动了嵌入式处理器的广发应用,同时也极大的缩短了电子产品的设计周期和也降低了电子产品的维护成本。
各大处理器厂商通常都会通过提高处理器内部各个执行单元的效率和利用率(如多指令发射、乱序执行等方式),来提升嵌入式处理器的整体性能。同时也会通过引入大量浮点指令,数字信号处理指令(DSP指令)来实现原来需要额外的硬件加速器才能完成的任务。
参照图1所示,典型的嵌入式处理器架构包括指令取值单元,指令发射单元,指令执行单元(包括逻辑指令处理单元,协处理器指令处理单元,数字信号指令处理单元,加载存储指令处理单元等)。通过指令取值单元从片外内存(或从片内高速缓存)取指令后,通过指令发射单元的合理调度,将指令发射到各个执行单元中执行。嵌入式处理器的设计者针对特定的应用,增加协处理器的加速指令,使得原来需要额外硬件加速器才能完成的任务,直接通过软件就可以实现了。但是无论指令执行单元设计的如何巧妙,处理器和片外内存的交互都是无法避免的,而在类似于多媒体应用的环境中,大量的内存搬移是不可避免的。通常加载存储指令出现数据相关性时,加载储存指令处理单元就会发生堵塞,进而影响指令发射单元,此时无论指令处理单元的性能如何强大,都将无法发挥优势;
所述的“数据相关性”是指当同时满足当前指令为存储指令和当前指令所需存储的数据来源于前续未执行完成的加载指令时,认为存储指令与前续加载指令存在数据相关性。
图2在传统的嵌入式处理器架构上进行了改进。对各个执行单元增加了保留栈,鉴于逻辑指令单元、协处理器指令处理单元和数字信号处理指令执行周期短,在保留栈未被填满前,相关性基本都能解除,所以保留栈技术对于逻辑指令单元、协处理器指令处理单元和数字信号处理指令来说已经足够了;而由于加载存储指令需要和片外内存进行交互,当加载存储指令出现数据相关性时,加载储存指令处理单元会发生堵塞,虽然加载存储指令处理单元的保留栈仍然可以接收几条后续的加载存储指令,但是在需要大量内存搬移的指令流中,加载存储指令处理单元会在保留栈被迅速填满后发生停顿,进而堵塞发射单元,最终造成整个处理器流水线的停顿。
发明内容
为了克服已有的嵌入式处理器的加载存储指令处理单元的当出现数据相关性时造成流水线阻塞、限制嵌入式处理器的性能的不足,本发明提供一种当出现数据相关性时能够避免流水线阻塞、提升嵌入式处理器的性能的快速执行加载存储指令模块。
本发明解决其技术问题所采用的技术方案是:
一种快速执行加载存储指令模块,该模块执行加载指令和存储指令,所述快速执行加载存储指令模块包括:
相关性识别单元,用以当同时满足当前指令为存储指令和当前指令所需存储的数据来源于前续未执行完成的加载指令时,判定存储指令与前续加载指令存在数据相关性;
指令地址生成单元,用以根据输入的加载/存储指令流,计算当前加载/存储指令所需要访问片上高速缓存和片外内存的地址;
指令缓冲单元,由指令缓冲单元表项组成,用以临时缓来源于相关性识别单元和指令地址生成单元输出的与执行存储指令相关的所有信息,同时旁路来自于前序加载指令完成时返回的数据。
作为优选的一种方案:所述快速执行加载存储指令模块采用两级流水线布置,所述相关性识别单元和指令地址生成单元位于第一级流水线,所述指令缓冲单元位于第二级流水线。当然,也可以将相关性识别单元、指令地址生成单元和指令缓冲单元设置在同一级别的流水线上,只是处理的速度相对会变慢。
进一步,所述相关性识别单元,无论判定存储指令与前续加载指令存在数据相关性结果如何,后续加载存储指令均可以继续正常执行,不会发生停顿。
所述指令缓冲单元由至少两个指令缓冲单元表项组成。
再进一步,所述指令缓冲单元表项包括指令标签比较器,用以当存储指令所需要存储的数据相关与前序加载指令时,监视与存储指令有相关性的前续加载指令是否完成;
当指令标签比较器检测到前续加载指令完成时,存储指令缓冲器表项立即旁路数据通路上前续加载指令返回的数据。
更进一步,所述指令缓冲单元表项包括至少两个指令标签比较器。指令标签比较器的个数,与执行加载存储指令模块一个时钟周期内最多可以完成装载指令的条数相等。对于一个时钟周期只能完成一条装载指令的执行加载存储指令模块,指令缓冲单元表项只包含一个指令标签比较器。
所述的所有信息包括存储指令的地址、存储的数据以及存储指令的数据相关性。
本发明的技术构思为:当加载存储指令流进入执行加载存储指令模块后,相关性识别单元完成对存储指令与前续加载指令相关性的识别;指令地址生成单元完成对加载存储指令所需访问的片上高速缓存和片外内存地址的计算。指令缓冲单元同时连接相关性识别单元和指令地址生成单元,由多个表项组成;每个表项用于临时缓存来自于相关性识别单元和指令地址生成单元的输出信息,同时旁路来自于前续加载指令完成时返回的数据。
本发明提供一种在加载存储指令出现相关性时,不阻碍后续加载存储指令的执行,并且在相关性解除时,快速旁路有相关性数据的快速执行加载存储指令模块。
本发明的有益效果主要表现在:当出现数据相关性时能够避免流水线阻塞、提升嵌入式处理器的性能。
附图说明
图1为现有的典型的嵌入式处理器架构示意图。
图2为现有的改进型的嵌入式处理器架构的局部示意图。
图3为本发明的快速执行加载存储指令模块结构图。
图4为相关性识别单元结构图。
图5为指令缓冲单元表项结构图。
图6为指令缓冲单元表项旁路前续装载指令返回数据的结构图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图3~图6,一种快速执行加载存储指令模块,该模块执行加载指令和存储指令,所述快速执行加载存储指令模块包括:
相关性识别单元,用以当同时满足当前指令为存储指令和当前指令所需存储的数据来源于前续未执行完成的加载指令时,判定存储指令与前续加载指令存在数据相关性;
指令地址生成单元,用以根据输入的加载/存储指令流,计算当前加载/存储指令所需要访问片上高速缓存和片外内存的地址;
指令缓冲单元,由指令缓冲单元表项组成,用以临时缓来源于相关性识别单元和指令地址生成单元输出的与执行存储指令相关的所有信息,同时旁路来自于前序加载指令完成时返回的数据。
所述快速执行加载存储指令模块采用两级流水线布置,所述相关性识别单元和指令地址生成单元位于第一级流水线,所述指令缓冲单元位于第二级流水线。当然,也可以将相关性识别单元、指令地址生成单元和指令缓冲单元设置在同一级别的流水线上,只是处理的速度相对会变慢。
本实施例以两级流水线为例进行说明,参考图3,执行加载存储指令模块采用两级流水线的形式实现。相关性识别单元和指令地址生成单元处于流水线的第一级,而指令缓冲单元处于流水线的第二级。在流水线的第一级,相关性识别单元完成对存储指令与前续加载指令相关性的识别,无论识别结果如何,都不停顿流水线;指令地址生成单元完成对加载存储指令所需要访问的片上高速缓存和片外内存地址的计算。指令缓冲单元位于流水线的第二级,由多个表项组成;每个表项用于临时缓存来自于流水线第一级的一条存储指令的输出信息,同时旁路来自于前续加载指令完成时返回的数据。
参考图4,相关性识别单元,在流水线的第一级实现识别存储指令与前续加载指令是否存在数据相关性。整个识别过程分为两个检测条件并行执行。一个检测条件是检测当前指令是否为存储指令;另一个检测条件是检测所要存储的数据是否相关于前续加载指令。无论当前存储指令是否与前续加载指令有相关性,都不会停顿流水线。
指令地址生成单元,处于流水线的第一级,计算当前加载存储指令所需要访问片上高速缓存的地址和访问片外内存的地址,并将计算结果输出。
指令缓冲单元处于流水线的第二级,由多个指令缓冲单元表项组成,用以临时缓存来源于流水线第一级由相关性识别单元和指令地址生成单元输出的与执行存储指令相关的所有信息,包括存储指令的地址,存储的数据,以及存储指令数据相关性等信息。
参考图5,每一个存储指令缓冲器表项缓存一条存储指令的执行信息。存储指令的执行信息包括三个部分,第一部分是存储指令执行时,需要存储的数据;第二部分是由数据相关性识别器输出的信息,包括存储指令所需要存储的数据是否相关于前续加载指令的标识位,以及与存储的数据有相关性的前续加载指令的标签;第三部分是加载存储指令地址生成器生成的存储指令所需要访问片上高速缓存的地址和访问片外内存的地址。
指令缓冲单元表项采用流水线的形式,临时缓存来自于流水线前级的信息,当相关性标识位为假时,将来源于前级流水线的存储数据缓存到对应的指令缓冲单元表项中,并标识此表项为存储指令准备就绪的表项。
参考图6,指令缓冲器表项包括一个指令标签比较器。当存储指令所需要存储的数据相关于前续加载指令,通过指令标签比较器,监视与存储指令有相关性的前续加载指令是否完成,当前续加载指令完成时,存储指令缓冲器表项立即旁路数据通路上前续加载指令返回的数据,将此数据写入到存储指令缓冲器表项中,并标识此表项为存储指令准备就绪的表项。
Claims (10)
1.一种快速执行加载存储指令模块,该模块执行加载指令和存储指令,
其特征在于:所述快速执行加载存储指令模块包括:
相关性识别单元,用以当同时满足当前指令为存储指令和当前指令所需存储的数据来源于前续未执行完成的加载指令时,判定存储指令与前续加载指令存在数据相关性;
指令地址生成单元,用以根据输入的加载指令流和存储指令流,计算当前加载指令和存储指令所需要访问片上高速缓存和片外内存的地址;
指令缓冲单元,由指令缓冲单元表项组成,用以临时缓存来源于相关性识别单元和指令地址生成单元输出的与执行存储指令相关的所有信息,同时旁路来自于前序加载指令完成时返回的数据。
2.如权利要求1所述的快速执行加载存储指令模块,其特征在于:所述快速执行加载存储指令模块采用两级流水线布置,所述相关性识别单元和指令地址生成单元位于第一级流水线,所述指令缓冲单元位于第二级流水线。
3.如权利要求1所述的快速执行加载存储指令模块,其特征在于:所述相关性识别单元中,无论判定存储指令与前续加载指令存在数据相关性结果如何,后续加载指令和存储指令均继续正常执行。
4.如权利要求2所述的快速执行加载存储指令模块,其特征在于:所述相关性识别单元中,无论判定存储指令与前续加载指令存在数据相关性结果如何,后续加载指令和存储指令均继续正常执行。
5.如权利要求1-4之一所述的快速执行加载存储指令模块,其特征在于:所述指令缓冲单元由至少两个指令缓冲单元表项组成。
6.如权利要求1-4之一所述的快速执行加载存储指令模块,其特征在于:所述指令缓冲单元表项包括指令标签比较器,用以当存储指令所需要存储的数据与前序加载指令相关时,监视与存储指令有相关性的前续加载指令是否完成;
当指令标签比较器检测到前续加载指令完成时,指令缓冲单元表项立即旁路数据通路上前续加载指令返回的数据。
7.如权利要求5所述的快速执行加载存储指令模块,其特征在于:所述指令缓冲单元表项包括指令标签比较器,用以当存储指令所需要存储的数据与前序加载指令相关时,监视与存储指令有相关性的前续加载指令是否完成;
当指令标签比较器检测到前续加载指令完成时,指令缓冲单元表项立即旁路数据通路上前续加载指令返回的数据。
8.如权利要求7所述的快速执行加载存储指令模块,其特征在于:所述指令缓冲单元表项包括至少两个指令标签比较器。
9.如权利要求1-4之一所述的快速执行加载存储指令模块,其特征在于:所述的所有信息包括存储指令的地址、存储的数据以及存储指令的数据相关性。
10.如权利要求8所述的快速执行加载存储指令模块,其特征在于:所述的所有信息包括存储指令的地址、存储的数据以及存储指令的数据相关性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910155142A CN101719055B (zh) | 2009-12-03 | 2009-12-03 | 快速执行加载存储指令模块 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910155142A CN101719055B (zh) | 2009-12-03 | 2009-12-03 | 快速执行加载存储指令模块 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101719055A CN101719055A (zh) | 2010-06-02 |
CN101719055B true CN101719055B (zh) | 2012-10-10 |
Family
ID=42433635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910155142A Active CN101719055B (zh) | 2009-12-03 | 2009-12-03 | 快速执行加载存储指令模块 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101719055B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495724A (zh) * | 2011-11-04 | 2012-06-13 | 杭州中天微系统有限公司 | 一种加快存储指令执行效率的数据处理器 |
CN104216681B (zh) * | 2013-05-31 | 2018-02-13 | 华为技术有限公司 | 一种cpu指令处理方法和处理器 |
CN106302374B (zh) * | 2015-06-26 | 2019-08-16 | 深圳市中兴微电子技术有限公司 | 一种用于提高表项访问带宽和原子性操作的装置及方法 |
CN107766079B (zh) * | 2016-08-19 | 2022-03-11 | 北京百度网讯科技有限公司 | 处理器以及用于在处理器上执行指令的方法 |
CN110806899B (zh) * | 2019-11-01 | 2021-08-24 | 西安微电子技术研究所 | 一种基于指令扩展的流水线紧耦合加速器接口结构 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101349973A (zh) * | 2008-09-05 | 2009-01-21 | 中山大学 | 嵌入式Java处理器微码指令集动态装载方法 |
CN101526896A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微系统有限公司 | 嵌入式处理器的加载/存储单元 |
-
2009
- 2009-12-03 CN CN200910155142A patent/CN101719055B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101349973A (zh) * | 2008-09-05 | 2009-01-21 | 中山大学 | 嵌入式Java处理器微码指令集动态装载方法 |
CN101526896A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微系统有限公司 | 嵌入式处理器的加载/存储单元 |
Also Published As
Publication number | Publication date |
---|---|
CN101719055A (zh) | 2010-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101719055B (zh) | 快速执行加载存储指令模块 | |
CN102112966B (zh) | 用于推测式中断向量预取的设备及方法 | |
CN101256481B (zh) | 数据处理器以及存储器读激活控制方法 | |
US9251117B2 (en) | Reconfigurable circuit with suspension control circuit | |
JP6030160B2 (ja) | 低複雑性命令プリフェッチシステム | |
US20040019762A1 (en) | Semiconductor integrated circuit | |
CN101477454A (zh) | 嵌入式处理器的乱序执行控制装置 | |
EP1421490A1 (en) | Methods and apparatus for improving throughput of cache-based embedded processors by switching tasks in response to a cache miss | |
CN102446087B (zh) | 指令预取方法与预取装置 | |
CN101526896B (zh) | 嵌入式处理器的加载/存储单元 | |
CN103927270A (zh) | 一种面向多个粗粒度动态可重构阵列的共享数据缓存装置及控制方法 | |
CN111142941A (zh) | 一种非阻塞高速缓存缺失处理方法及装置 | |
CN102722451B (zh) | 采用物理地址预测访问高速缓存的装置 | |
JP2012123810A (ja) | 復帰スタックを管理する方法および装置 | |
US7509472B2 (en) | Collapsible front-end translation for instruction fetch | |
CN102541510A (zh) | 一种指令缓存系统及其取指方法 | |
CN110928832A (zh) | 异步流水线处理器电路、装置及数据处理方法 | |
CN110806900B (zh) | 一种访存指令处理方法及处理器 | |
CN103218205A (zh) | 一种循环缓冲装置以及循环缓冲方法 | |
CN103019657B (zh) | 支持数据预取与重用的可重构系统 | |
CN114528025B (zh) | 指令处理方法、装置、微控制器及可读存储介质 | |
US8621309B2 (en) | Processor and method of control of processor | |
CN102609240A (zh) | 处理器电路及读取数据的方法 | |
CN113467935A (zh) | 一种L1cache load forward的实现方法及系统 | |
CN101615114B (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 |