一种用于SOC的缓存方法、系统及SOC与流程

文档序号:29122886发布日期:2022-03-04 22:53阅读:149来源:国知局
一种用于SOC的缓存方法、系统及SOC与流程
一种用于soc的缓存方法、系统及soc
技术领域
1.本发明属于电子信息技术领域,具体涉及一种用于soc的缓存方法、系统及soc。


背景技术:

2.随着集成电路和工业智能化的发展,嵌入式soc的设计规模越来越来大,性能需求越来越高,因此对指令处理的综合性能及指令执行效率都提出了更高的要求。dsp作为数字信号处理的代表,势必要求其具备高效的指令执行和指令预取的能力。而dsp的主存储器(通常采用flash)具有数据存储非易失性的优点,但也有存在访问速度低的缺点,这导致flash的访问速度严重低于系统的主频,导致cpu指令处理的综合性能严重降低。为解决这一问题,现有的技术是在flash后加一级高速缓存,以弥补高速cpu与低速的flash之间的速度差,一定程度上提升了系统指令执行的综合效率。但是,该技术在执行跳转指令时,其采取的措施为清空缓存,重新从跳转之后的flash地址获取指令,此过程存在较长的等待时间,因此严重降低了系统综合效率,而指令的跳转行为在程序中占据着较大比例,让这一问题严重性更加突出。


技术实现要素:

3.本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种用于soc的缓存方法,所述用于soc的缓存方法解决了执行跳转指令时需要清空缓存重新读取,从而导致系统综合效率低的问题。本发明还提出了一种用于soc的缓存系统和一种soc。
4.根据本发明第一方面实施例的用于soc的缓存方法,包括以下步骤:
5.从主存储器中读取多个待执行指令并缓存至第一缓冲器中;
6.从所述第一缓冲器中逐个读取所述待执行指令至译码单元,通过译码单元确认所述待执行指令的预跳转状态,所述预跳转状态包括预执行状态和非预执行状态;
7.若所述待执行指令被确认为所述预执行状态,停止从所述主存储器中读取所述待执行指令至所述第一缓冲器,并从所述主存储器中读取多个所述待执行指令缓存至第二缓冲器;
8.通过所述译码单元确认被确认为所述预执行状态的所述待执行指令的最终跳转状态,所述最终跳转状态包括最终执行状态和非最终执行状态;
9.若所述待执行指令被确认为所述最终执行状态,停止从第一缓冲器中读取所述待执行指令至所述译码单元,并开始从所述第二缓冲器读取所述待执行指令至所述译码单元。
10.根据本发明实施例的用于soc的缓存方法,至少具有如下技术效果:本发明实施例在主存储器和译码单元之间增加了第一缓冲器和第二缓冲器,从而可以在第一缓冲器中执行到需要执行跳转指令时,可以利用第二缓冲器对跳转之后的待执行指令进行预缓存,并在最终确定需要执行跳转指令后,能够直接执行第二缓冲器中预缓存的跳转之后的待执行指令,整个跳转指令执行过程中,不需要对缓冲器中已经缓存的待执行指令进行清空处理,
也不需要让cpu等待主存储器重新向缓冲器中写入跳转之后的待执行指令,因此,本发明实施例的用于soc的缓存方法相较于传统的缓存方式而言,极大的降低了执行跳转指令时的等待时间,有效的提高了系统综合效率。
11.根据本发明的一些实施例,所述译码单元包括依次连接的预译码器、第一级译码器和第二级译码器;
12.所述从所述第一缓冲器中逐个读取所述待执行指令至译码单元,通过译码单元确认所述待执行指令的预跳转状态,包括以下步骤:
13.从所述第一缓冲器中逐个读取所述待执行指令至所述预译码器,并通过所述预译码器确认读取的所述待执行指令的指令类型,所述指令类型包括跳转类指令和非跳转类指令;
14.若所述待执行指令确认为跳转类指令,生成第一跳转操作信号;
15.从所述预译码器中逐个读取所述待执行指令至所述第一级译码器,并通过所述第一级译码器确认所述待执行指令的第一跳转需求状态,所述第一跳转需求状态包括第一跳转状态和第一非跳转状态;
16.若所述第一跳转需求状态确认为所述第一跳转状态,生成第二跳转操作信号;
17.若所述待执行指令对应生成所述第一跳转操作信号和所述第二跳转操作信号,确认所述待执行指令的所述预跳转状态为所述预执行状态,并由所述待执行指令获取跳转地址。
18.根据本发明的一些实施例,所述停止从所述主存储器中读取所述待执行指令至所述第一缓冲器,并从所述主存储器中读取多个所述待执行指令缓存至第二缓冲器,包括以下步骤:
19.停止从所述主存储器中读取所述待执行指令缓存至所述第一缓冲器;
20.根据所述跳转地址从所述主存储器中读取多个所述待执行指令缓存至所述第二缓冲器。
21.根据本发明的一些实施例,所述通过所述译码单元确认被确认为所述预执行状态的所述待执行指令的最终跳转状态,包括以下步骤:
22.从所述第一级译码器中逐个读取所述待执行指令至所述第二级译码器,并确认所述待执行指令的第二跳转需求状态,所述第二跳转需求状态包括第二跳转状态和第二非跳转状态;
23.若所述第二跳转需求状态确认为所述第二跳转状态,生成第三跳转操作信号;
24.若所述待执行指令对应生成所述第一跳转操作信号、所述第二跳转操作信号和所述第三跳转操作信号,确认所述待执行指令的所述最终跳转状态为所述最终执行状态。
25.根据本发明的一些实施例,所述停止从第一缓冲器中读取所述待执行指令至所述译码单元,包括以下步骤:
26.停止从第一缓冲器中读取所述待执行指令至所述译码单元,并在与所述第一缓冲器对应的第一标签中,记录所述第一缓冲器中缓存的多个所述待执行指令中未执行的第一剩余指令数。
27.根据本发明的一些实施例,所述开始从所述第二缓冲器读取所述待执行指令至所述译码单元后,还包括以下步骤:
28.通过译码单元确认所述待执行指令的所述预跳转状态;
29.若所述待执行指令被确认为所述预执行状态,停止从所述主存储器中读取所述待执行指令缓存至所述第二缓冲器,并由所述待执行指令获取跳转返回地址;
30.通过所述译码单元确认被确认为所述预执行状态的所述待执行指令的所述最终跳转状态;
31.若所述待执行指令被确认为所述最终执行状态,停止从第二缓冲器中读取所述待执行指令至所述译码单元,开始从所述第一缓冲器缓存的多个所述待执行指令中对应所述第一剩余指令数的位置读取所述待执行指令至所述译码单元,并在与所述第二缓冲器对应的第二标签中,记录所述第二缓冲器中缓存的多个所述待执行指令中未执行的第二剩余指令数。
32.根据本发明的一些实施例,第一次执行从所述主存储器中读取多个待执行指令缓存至第一缓冲器中,包括以下步骤:
33.初始化soc,获取初始读取地址;
34.根据所述初始读取地址从主存储器中读取多个待执行指令缓存至第一缓冲器中。
35.根据本发明第二方面实施例的用于soc的缓存系统,包括:
36.主存储器,其具有地址输入端,数据输出端,用于存储多个待执行指令;
37.第一缓冲器,其具有第一缓冲输入端、第一缓冲输出端,所述第一缓冲输入端与所述数据输出端连接,所述第一缓冲器用于缓存多个所述待执行指令;
38.第二缓冲器,其具有第二缓冲输入端、第二缓冲输出端,所述第二缓冲输入端与所述主存储器的数据输出端连接,所述第二缓冲器用于缓存多个所述待执行指令;
39.译码单元,其具有指令输入端、操作信号输出端,所述指令输入端分别与所述第一缓冲输出端和所述第二缓冲输出端连接,所述译码单元用于接收所述第一缓冲器或第二缓冲器传输的所述待执行指令,并确认所述待执行指令的预跳转状态,以及确认所述待执行指令的最终跳转状态,其中,所述预跳转状态包括预执行状态和非预执行状态,所述最终跳转状态包括最终执行状态和非最终执行状态;
40.控制组件,分别与所述地址输入端和所述操作信号输出端连接,用于在确认所述预跳转状态和/或所述最终跳转状态后,控制所述第一缓冲器或所述第二缓冲器从所述主存储器读取所述待执行指令,以及控制所述译码单元从所述第一缓冲器或所述第二缓冲器读取所述待执行指令。
41.根据本发明实施例的用于soc的缓存系统,至少具有如下技术效果:本发明实施例在主存储器和译码单元之间增加了第一缓冲器和第二缓冲器,从而可以在第一缓冲器中执行到需要执行跳转指令时,可以利用第二缓冲器对跳转之后的待执行指令进行预缓存,并在最终确定需要执行跳转指令后,能够直接执行第二缓冲器中预缓存的跳转之后的待执行指令,整个跳转指令执行过程中,不需要对缓冲器中已经缓存的待执行指令进行清空处理,也不需要让cpu等待主存储器重新向缓冲器中写入跳转之后的待执行指令,因此,本发明实施例的用于soc的缓存系统相较于传统的缓存方式而言,极大的降低了执行跳转指令时的等待时间,有效的提高了系统综合效率。
42.根据本发明的一些实施例,所述译码单元包括皆与所述控制组件连接的:
43.预译码器,用于从所述第一缓冲器或所述第二缓冲器中逐个读取所述待执行指
令,并确认读取的所述待执行指令的指令类型,所述指令类型包括跳转类指令和非跳转类指令;
44.第一级译码器,用于从所述预译码器中逐个读取所述待执行指令,并确认所述待执行指令的第一跳转需求状态,所述第一跳转需求状态包括第一跳转状态和第一非跳转状态;
45.第二级译码器,用于从所述第一级译码器中逐个读取所述待执行指令,并确认所述待执行指令的第二跳转需求状态,所述第二跳转需求状态包括第二跳转状态和第二非跳转状态;所述预译码器、第一级译码器、第二级译码器共同用于调整所述控制组件的工作状态。
46.根据本发明的一些实施例,所述控制组件包括:
47.地址选择单元,用于确定从所述主存储器读取所述待执行指令的地址;
48.第一三态门,设置在所述数据输出端和所述第一缓冲输入端之间;
49.第二三态门,设置在所述数据输出端和所述第二缓冲输入端之间;
50.第三三态门,设置在所述第一缓冲输出端和所述预译码器之间,用于在所述第二级译码器的控制下切换通断状态;
51.第四三态门,设置在所述第二缓冲输出端和所述预译码器之间,用于在所述第二级译码器的控制下切换通断状态;
52.指令分支预测模块,分别与所述预译码器、第一级译码器、第二级译码器、第一三态门、第二三态门和所述地址选择单元连接,用于根据所述指令类型、所述第一跳转需求状态确定所述第一三态门、第二三态门的通断,以及通过所述地址选择单元调整从所述主存储器读取所述待执行指令的地址。
53.根据发明第三方面实施例的soc,包括:如上述的用于soc的缓存系统。
54.根据本发明实施例的soc,至少具有如下技术效果:通过采用上述的用于soc的缓存系统,不需要对缓冲器中已经缓存的待执行指令进行清空处理,也不需要让cpu等待主存储器重新向缓冲器中写入跳转之后的待执行指令,相较于传统的缓存方式而言,极大的降低了执行跳转指令时的等待时间,有效的提高了系统综合效率。
55.本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
56.本发明的上述或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
57.图1是本发明实施例的用于soc的缓存方法的流程简图;
58.图2是本发明实施例的用于soc的缓存系统的系统连接示意图。
59.附图标记:
60.主存储器101、第一缓冲器102、第二缓冲器103、预译码器104、第一级译码器105、第二级译码器106、指令分支预测模块107、程序计数器108、加法器109、第一多路选择器110、第二多路选择器111、第一三态门112、第二三态门113、第三三态门114、第四三态门115。
具体实施方式
61.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
62.在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
63.在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
64.本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
65.为了更好的描述本发明实施例的用于soc的缓存方法、系统及soc,本技术一个实施例提供了用于执行soc的缓存方法的架构平台。如图2所示,该架构平台包括主存储器101、第一缓冲器102、第二缓冲器103、预译码器104、第一级译码器105、第二级译码器106、指令分支预测模块107、程序计数器108、加法器109、第一多路选择器110、第二多路选择器111、第一三态门112、第二三态门113、第三三态门114、第四三态门115。
66.参考图2,第一缓冲器102和第二缓冲器103并联在主存储器101和预译码器104之间,用于缓存从主存储器101中读取的待执行指令。预译码器104、第一级译码器105、第二级译码器106依次连接;预译码器104可以用于指令类型确定,指令类型主要包括访存类、算术逻辑运算类、跳转类、i/o访问类、浮点运算类、系统控制类;第一级译码器105用于对指令的一级译码,第二级译码器106用于对指令的二级译码,这里通过分级译码的方式完成对待执行指令的译码工作,第一级译码器105和第二级译码器106用于依次判断确定待执行指令是否满足跳转条件。
67.指令分支预测模块107、程序计数器108、加法器109、第一多路选择器110、第二多路选择器111、第一三态门112、第二三态门113、第三三态门114和第四三态门115构成可本发明实施例的控制组件。程序计数器108、加法器109、第一多路选择器110和第二多路选择器111构成了本发明实施例的地址选择单元;程序计数器108中pc值作为程序地址被装入程序总线,从而可以从主存储器101中对应地址开始读取待执行指令;加法器109可以利用指令分支预测模块107输出的需要调整的地址和地址程序计数器108中的地址,得到跳转之后从主存储器101中读取待执行指令的地址。指令分支预测模块107可以接收预译码器104、第一级译码器105、第二级译码器106反馈的微操作控制信号(例如:第一跳转操作信号、第二跳转操作信号、第三跳转操作信号),从而可以根据待执行指令调整下一次从主存储器101中读取待执行指令的地址。第一三态门112、第二三态门113、第三三态门114和第四三态门115作为通断控制元件,用于控制主存储器101、第一缓冲器102、第二缓冲器103和预译码器104的数据传输链路。
68.本技术实施例描述的架构平台是为了更加清楚的说明本技术实施例的技术方案,
并不构成对于本技术实施例提供的技术方案的限定,本领域技术人员可知,随着soc技术的演变和新应用场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
69.下面参考图1至图2描述根据本发明第一方面实施例的用于soc的缓存方法。
70.根据本发明实施例的用于soc的缓存方法,包括以下步骤:
71.从主存储器101中读取多个待执行指令并缓存至第一缓冲器102中;
72.从第一缓冲器102中逐个读取待执行指令至译码单元,通过译码单元确认待执行指令的预跳转状态,预跳转状态包括预执行状态和非预执行状态;
73.若待执行指令被确认为预执行状态,停止从主存储器101中读取待执行指令至第一缓冲器102,并从主存储器101中读取多个待执行指令缓存至第二缓冲器103;
74.通过译码单元确认被确认为预执行状态的待执行指令的最终跳转状态,最终跳转状态包括最终执行状态和非最终执行状态;
75.若待执行指令被确认为最终执行状态,停止从第一缓冲器102中读取待执行指令至译码单元,并开始从第二缓冲器103读取待执行指令至译码单元。
76.参考图1、图2,在系统初始化之后,第一缓冲器102从主存储器101中读取多个待执行指令进行缓存,具体缓存数量的多少依据设计需求来进行设置。读取到第一缓冲器102中的待执行指令会逐个输入到译码单元中,由译码单元来确定待执行指令是否需要进行跳转,为了保证跳转的延时较小,在确定待执行指令的预跳转状态为预执行状态后,会先停止向第一缓冲器102传输待执行指令,并且会根据待执行指令确定跳转之后的跳转地址,然后利用跳转地址开始让主存储器101向第二缓冲器103输送跳转之后的待执行指令,此过程中,译码单元仍然会继续对确认为预跳转状态的待执行指令进行第二级译码,如果待执行指令被确认为最终执行状态,则会停止第一缓冲器102向译码单元输送待执行指令,而由第二缓冲器103向译码单元输送已经缓存好的跳转之后需要执行的待执行指令。因此,在执行跳转指令的过程中,不需要像只有一个缓冲器一样,需要先对缓冲器进行清除然后重新读取跳转之后的待执行指令,从而可以极大的减少这一过程中的等待时间。
77.此外需要说明,第一缓冲器102和第二缓冲器103并没有主次之分,切换到第二缓冲器103输送待执行指令后,如果执行过程中遇到了跳转指令或者跳转返回指令同样可以再切换到第一缓冲器102中继续执行。从而实现在第一缓冲器102和第二缓冲器103之间来回切换,且不需要花费等待时间。
78.根据本发明实施例的用于soc的缓存方法,本发明实施例在主存储器101和译码单元之间增加了第一缓冲器102和第二缓冲器103,从而可以在第一缓冲器102中执行到需要执行跳转指令时,可以利用第二缓冲器103对跳转之后的待执行指令进行预缓存,并在最终确定需要执行跳转指令后,能够直接执行第二缓冲器103中预缓存的跳转之后的待执行指令,整个跳转指令执行过程中,不需要对缓冲器中已经缓存的待执行指令进行清空处理,也不需要让cpu等待主存储器101重新向缓冲器中写入跳转之后的待执行指令,因此,本发明实施例的用于soc的缓存方法相较于传统的缓存方式而言,极大的降低了执行跳转指令时的等待时间,有效的提高了系统综合效率。
79.在本发明的一些实施例中,译码单元包括依次连接的预译码器104、第一级译码器105和第二级译码器106;
80.从第一缓冲器102中逐个读取待执行指令至译码单元,通过译码单元确认待执行
指令的预跳转状态,包括以下步骤:
81.从第一缓冲器102中逐个读取待执行指令至预译码器104,并通过预译码器104确认读取的待执行指令的指令类型,指令类型包括跳转类指令和非跳转类指令;
82.若待执行指令确认为跳转类指令,生成第一跳转操作信号;
83.从预译码器104中逐个读取待执行指令至第一级译码器105,并通过第一级译码器105确认待执行指令的第一跳转需求状态,第一跳转需求状态包括第一跳转状态和第一非跳转状态;
84.若第一跳转需求状态确认为第一跳转状态,生成第二跳转操作信号;
85.若待执行指令对应生成第一跳转操作信号和第二跳转操作信号,确认待执行指令的预跳转状态为预执行状态,并由待执行指令获取跳转地址。
86.本发明实施例采用了指令分类处理、指令预译码和分级译码的思想,在待执行指令从第一缓冲器102或第二缓冲器103输入到预译码器104中时,预译码器104会确定出该待执行指令的指令类型,如果是跳转类指令,则会输出第一跳转操作信号到指令分支预测模块107,同时该待执行指令会顺序输入到第一级译码器105,第一级译码器105会对该待执行指令进行第一级译码,再一次确定是否需要跳转(即第一跳转状态的确定),如果需要跳转则会输出第二跳转操作信号到指令分支预测模块107,指令分支预测模块107在接收到第一跳转操作信号和第二跳转操作信号,便会初步确定需要进行跳转(即预跳转状态确定为预执行状态),此时,则会直接根据对待执行指令的译码获取对应的跳转地址,并且开始停止从主存储器101向第一缓冲器102缓存待执行指令,改为从利用跳转地址从主存储器101向第二缓冲器103缓存待执行指令,直至最后第二级译码器106确认最终是否需要进行跳转。
87.在本发明的一些实施例中,停止从主存储器101中读取待执行指令至第一缓冲器102,并从主存储器101中读取多个待执行指令缓存至第二缓冲器103,包括以下步骤:
88.停止从主存储器101中读取待执行指令缓存至第一缓冲器102;
89.根据跳转地址从主存储器101中读取多个待执行指令缓存至第二缓冲器103。
90.停止从主存储器101中读取待执行指令缓存至第一缓冲器102时,会获取到跳转地址,此时则可以利用跳转地址从主存储器101中读取多个待执行指令缓存至第二缓冲器103,从而保证了读取的准确性。
91.在本发明的一些实施例中,通过译码单元确认被确认为预执行状态的待执行指令的最终跳转状态,包括以下步骤:
92.从第一级译码器105中逐个读取待执行指令至第二级译码器106,并确认待执行指令的第二跳转需求状态,第二跳转需求状态包括第二跳转状态和第二非跳转状态;
93.若第二跳转需求状态确认为第二跳转状态,生成第三跳转操作信号;
94.若待执行指令对应生成第一跳转操作信号、第二跳转操作信号和第三跳转操作信号,确认待执行指令的最终跳转状态为最终执行状态。
95.第一级译码器105完成译码后,会输入到第二级译码器106,第二级译码器106会对待执行指令进行最终判断,以确定是否进行跳转,若需要跳转(即第二跳转需求状态确认为第二跳转状态),则第二级译码器106会输出第三跳转操作信号直接控制第三三态门114关闭和第四三态门115开启,让预译码器104从第二缓冲器103中读取跳转之后的待执行指令。
96.在本发明的一些实施例中,停止从第一缓冲器102中读取待执行指令至译码单元,
包括以下步骤:
97.停止从第一缓冲器102中读取待执行指令至译码单元,并在与第一缓冲器102对应的第一标签中,记录第一缓冲器102中缓存的多个待执行指令中未执行的第一剩余指令数。
98.停止从第一缓冲器102中读取待执行指令至译码单元时,并没有对第一缓冲器102中缓存的待执行指令进行清除,此时,则会通过第一缓冲器102的第一标签tag1记录第一缓冲器102中还没有执行的指令数量,即第一剩余指令数。为了说明记录第一剩余指令数的意义,这里以主程序中执行中断跳转进行举例说明,在执行中断跳转时,会从第一缓冲器102切换到第二缓冲器103执行跳转之后的中断程序,但是在中断程序执行完成时,则需要返回主程序,此时,如果没有记录第一剩余指令数,则需要重新向第一缓冲器102中传输待执行指令,而如果记录了第一剩余指令数,则可以直接从第一剩余指令数对应位置继续执行主程序即可。
99.在本发明的一些实施例中,开始从第二缓冲器103读取待执行指令至译码单元后,还包括以下步骤:
100.通过译码单元确认待执行指令的预跳转状态;
101.若待执行指令被确认为预执行状态,停止从主存储器101中读取待执行指令缓存至第二缓冲器103,并由待执行指令获取跳转返回地址;
102.通过译码单元确认被确认为预执行状态的待执行指令的最终跳转状态;
103.若待执行指令被确认为最终执行状态,停止从第二缓冲器103中读取待执行指令至译码单元,开始从第一缓冲器102缓存的多个待执行指令中对应第一剩余指令数的位置读取待执行指令至译码单元,并在与第二缓冲器103对应的第二标签中,记录第二缓冲器103中缓存的多个待执行指令中未执行的第二剩余指令数。
104.以主程序执行中断为例,从第一缓冲器102切换到第二缓冲器103后,译码单元接收到第二缓冲器103传输的待执行令后,仍然会正常译码和执行,直至再次遇到与跳转指令对应的跳转返回指令,对跳转返回指令同样进行预跳转状态确定操作和最终跳转状态确定操作,一旦确定需要返回到第一缓冲器102继续执行主程序,则不需要重新向第一缓冲器102中的重新预缓存与跳转返回地址对应的待执行指令,可以直接利用第一剩余指令数确定上次执行位置,然后继续进行执行即可。此过程中,会同样记录与第二缓冲器103对应的第二标签tag2中记录第二缓冲器103中缓存的多个待执行指令中未执行的指令数,即第二剩余指令数。
105.在本发明的一些实施例中,第一次执行从主存储器101中读取多个待执行指令缓存至第一缓冲器102中,包括以下步骤:
106.初始化soc,获取初始读取地址;
107.根据初始读取地址从主存储器101中读取多个待执行指令缓存至第一缓冲器102中。
108.在初次从主存储器101中读取待执行指令之前,会初始化soc,此过程中,程序计数器108会装载pc值初值,从而可以利用程序计数器108装载的初值完成从主存储器101中的第一次读取。
109.在本发明的一些实施例中,为了更好的阐述本发明实施例的用于soc的缓存方法,这里以具体的地址参数进行举例说明。
110.当程序执行到地址4000h,取出指令1、指令2、指令3、指令4(以4个指令为例,并非只能读取四个)到第一缓冲器102,第一缓冲器102会将指令依次输入到预译码器104、第一级译码器105和第二级译码器106中;假设指令2为跳转类指令,且若跳转的情况下其携带的跳转地址为前跳1000h,即确定从主存储器101中读取跳转之后指令的地址确定为5000h=4000h+1000h;那么,按照指令分类处理的方式其属于跳转类指令,经过预译码器104逻辑判断该指令可能会产生跳转,于是输出第一跳转操作信号至指令分支预测模块107,与此同时,指令译码已经通过流水线到了第一级译码器105译码阶段,经过第一级译码器105的译码,判断是否需要跳转,若满足跳转的条件,则输出第二跳转操作信号至指令分支预测模块107。随着第一跳转操作信号及第二跳转操作信号的输出,第二三态门113会被打开,同时第一三态门112会关闭,于是,地址5000h处的待执行指令则被读出并缓存到第二缓冲器103中。此时,指令译码已经通过流水线到了第二级译码器106译码阶段,经过第二级译码器106判断该指令满足跳转条件时,会输出第三跳转操作信号,第三跳转操作信号可以直接控制打开第四三态门115,关闭第三三态门114。在这个过程中,第一缓冲器102中的第一标签tag1则会记录已缓存的指令执行到了指令2(即第一剩余指令数),剩余的尚未执行。而缓存到c2中的地址5000h处开始的指令则顺序的流入到预译码器104、第一级译码器105和第二级译码器106继续执行。若地址5000h后的指令执行过程中遇到了跳转返回指令,则类似上述工作原理,返回到第一缓冲器102中指令3处开始继续执行。整个跳转过程中程序不间断的从第一缓冲器102或第二缓冲器103流出,cpu和译码器无需处于等待状态,从而使得cpu执行指令的效率大大提高。
111.此外需要说明,由于条件跳转指令有无条件跳转、单条件跳转和双条件跳转指令。若指令2为双条件跳转指令时,预译码器104和第一级译码器105完成第一个跳转条件的判断,由第二级译码器106完成第二个跳转条件的判断。若第一个跳转条件判断为需要进行跳转,则会打开第二三态门113、关闭第一三态门112;若第二跳转条件判断为不进行跳转,则第三三态门114和第四三态门115不会发生变化,同时指令分支预测模块107也会重新关闭第二三态门113、打开第一三态门112,让主存储器101中的指令继续缓存到第一缓冲器102;若第二跳转条件判断为跳转,则会关闭第三三态门114,打开第四三态门115。若指令2为无条件跳转指令,预译码器104识别到该指令为跳转指令类型中的无条件跳转指令,预译码器104直接将其判断为确认需要跳转,于是打开第二三态门113、关闭第一三态门112;第一级译码器105同样识别到该指令为无条件跳转指令,则会关闭第三三态门114,打开第四三态门115。此时无需第二级译码器106进行判断。若指令2为单条件跳转指令时,预译码器104和第一级译码器105完成第一个跳转条件的判断,无需由第二级译码器106再进行判断判断。
112.根据本发明第二方面实施例的用于soc的缓存系统,包括:主存储器101、第一缓冲器102、第二缓冲器103、译码单元、控制组件。
113.主存储器101,其具有地址输入端,数据输出端,用于存储多个待执行指令;
114.第一缓冲器102,其具有第一缓冲输入端、第一缓冲输出端,第一缓冲输入端与数据输出端连接,第一缓冲器102用于缓存多个待执行指令;
115.第二缓冲器103,其具有第二缓冲输入端、第二缓冲输出端,第二缓冲输入端与主存储器101的数据输出端连接,第二缓冲器103用于缓存多个待执行指令;
116.译码单元,其具有指令输入端、操作信号输出端,指令输入端分别与第一缓冲输出
端和第二缓冲输出端连接,译码单元用于接收第一缓冲器102或第二缓冲器103传输的待执行指令,并确认待执行指令的预跳转状态,以及确认待执行指令的最终跳转状态,其中,预跳转状态包括预执行状态和非预执行状态,最终跳转状态包括最终执行状态和非最终执行状态;
117.控制组件,分别与地址输入端和操作信号输出端连接,用于在确认预跳转状态和/或最终跳转状态后,控制第一缓冲器102或第二缓冲器103从主存储器101读取待执行指令,以及控制译码单元从第一缓冲器102或第二缓冲器103读取待执行指令。
118.参考图1、图2,在控制组件初始化之后,控制组件控制第一缓冲器102从主存储器101中读取多个待执行指令进行缓存,具体缓存数量的多少依据设计需求来进行设置。读取到第一缓冲器102中的待执行指令会逐个输入到译码单元中,由译码单元来确定待执行指令是否需要进行跳转,为了保证跳转的延时较小,在确定待执行指令的预跳转状态为预执行状态后,会先停止向第一缓冲器102传输待执行指令,并且会根据待执行指令确定跳转之后的跳转地址,然后利用跳转地址开始让主存储器101向第二缓冲器103输送跳转之后的待执行指令,此过程中,译码单元仍然会继续对确认为预跳转状态的待执行指令进行第二级译码,如果待执行指令被确认为最终执行状态,则会停止第一缓冲器102向译码单元输送待执行指令,而由第二缓冲器103向译码单元输送已经缓存好的跳转之后需要执行的待执行指令。因此,在执行跳转指令的过程中,不需要像只有一个缓冲器一样,需要先对缓冲器进行清除然后重新读取跳转之后的待执行指令,从而可以极大的减少这一过程中的等待时间。
119.此外需要说明,第一缓冲器102和第二缓冲器103并没有主次之分,切换到第二缓冲器103输送待执行指令后,如果执行过程中遇到了跳转指令或者跳转返回指令同样可以再切换到第一缓冲器102中继续执行。从而实现在第一缓冲器102和第二缓冲器103之间来回切换,且不需要花费等待时间。
120.根据本发明实施例的用于soc的缓存系统,本发明实施例在主存储器101和译码单元之间增加了第一缓冲器102和第二缓冲器103,从而可以在第一缓冲器102中执行到需要执行跳转指令时,可以利用第二缓冲器103对跳转之后的待执行指令进行预缓存,并在最终确定需要执行跳转指令后,能够直接执行第二缓冲器103中预缓存的跳转之后的待执行指令,整个跳转指令执行过程中,不需要对缓冲器中已经缓存的待执行指令进行清空处理,也不需要让cpu等待主存储器101重新向缓冲器中写入跳转之后的待执行指令,因此,本发明实施例的用于soc的缓存系统相较于传统的缓存方式而言,极大的降低了执行跳转指令时的等待时间,有效的提高了系统综合效率。
121.在本发明的一些实施例中,译码单元包括皆与控制组件连接的:预译码器104、第一级译码器105、第二级译码器106。
122.预译码器104,用于从第一缓冲器102或第二缓冲器103中逐个读取待执行指令,并确认读取的待执行指令的指令类型,指令类型包括跳转类指令和非跳转类指令;
123.第一级译码器105,用于从预译码器104中逐个读取待执行指令,并确认待执行指令的第一跳转需求状态,第一跳转需求状态包括第一跳转状态和第一非跳转状态;
124.第二级译码器106,用于从第一级译码器105中逐个读取待执行指令,并确认待执行指令的第二跳转需求状态,第二跳转需求状态包括第二跳转状态和第二非跳转状态;预
译码器104、第一级译码器105、第二级译码器106共同用于调整控制组件的工作状态。
125.预译码器104可以完成对待执行指令的指令类型确认,在确认出现跳转类指令时,会发送第一跳转操作信号至指令分支预测模块107,之后会通过第一级译码器105进行第一级译码,此过程中如果仍然确认为需要进行跳转,则会发送第二跳转操作信号至指令分支预测模块107。之后第二级译码器106会对该待执行指令进行第二级译码,如果仍然确定需要跳转,则会发送第三跳转操作信号,通过第三跳转操作信号可以直接控制第三三态门114和第四三态门115的开启和关闭。
126.在本发明的一些实施例中,控制组件包括:地址选择单元、第一三态门112、第二三态门113、第四三态门115、指令分支预测模块107。
127.地址选择单元,用于确定从主存储器101读取待执行指令的地址;
128.第一三态门112,设置在数据输出端和第一缓冲输入端之间;
129.第二三态门113,设置在数据输出端和第二缓冲输入端之间;
130.第三三态门114,设置在第一缓冲输出端和预译码器104之间,用于在第二级译码器106的控制下切换通断状态;
131.第四三态门115,设置在第二缓冲输出端和预译码器104之间,用于在第二级译码器106的控制下切换通断状态;
132.指令分支预测模块107,分别与预译码器104、第一级译码器105、第二级译码器106、第一三态门112、第二三态门113和地址选择单元连接,用于根据指令类型、第一跳转需求状态确定第一三态门112、第二三态门113的通断,以及通过地址选择单元调整从主存储器101读取待执行指令的地址。
133.地址选择单元包括程序计数器108、加法器109、第一多路选择器110和第二多路选择器111,从而可以利用程序计数器108装载的初值来获得初始读取地址,并利用指令分支预测单元获取的跳转地址,确定需要从主存储器101中读取待执行指令的具体位置。第一三态门112、第二三态门113在指令分支预测模块107的控制下,可以实现主存储器101向第一缓冲器102或第二缓冲器103发送数据的选择。第三三态门114、第四三态门115在第二级译码器106的控制下,可以实现第一缓冲器102或第二缓冲器103发送数据到预译码器104的选择。
134.根据发明第三方面实施例的soc,包括:如上述的用于soc的缓存系统。
135.根据本发明实施例的soc,通过采用上述的用于soc的缓存系统,不需要对缓冲器中已经缓存的待执行指令进行清空处理,也不需要让cpu等待主存储器101重新向缓冲器中写入跳转之后的待执行指令,相较于传统的缓存方式而言,极大的降低了执行跳转指令时的等待时间,有效的提高了系统综合效率。
136.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
137.尽管上述结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些
实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1