一种用于处理器中的指令取得装置及其处理器的制造方法

文档序号:6521109阅读:177来源:国知局
一种用于处理器中的指令取得装置及其处理器的制造方法
【专利摘要】本发明涉及一种用于处理器中的指令取得装置,包括指令缓存单元、指令缓冲单元、指令窗口和指令实现逻辑单元;所述指令缓存单元用于存储指令并将其存储的指令按顺序传输到所述指令缓冲单元;所述指令缓冲单元将当前需要执行的、所述指令实现逻辑单元一次取指取得数量的指令传输到所述指令窗口中存储;所述指令实现逻辑单元由所述指令窗口中取得指令并处理,使其得到输出和执行;所述指令实现逻辑单元还将当前执行指令的读指针和写指针返回到所述指令缓冲单元。本发明还涉及一种使用上述指令取得装置的处理器。实施本发明的用于处理器中的指令取得装置及其处理器,具有以下有益效果:从总体上减少了指令输出的时间。
【专利说明】—种用于处理器中的指令取得装置及其处理器
【技术领域】
[0001]本发明涉及处理器,更具体地说,涉及一种用于处理器中的指令取得装置及其处理器。
【背景技术】
[0002]—个典型的指令执行流水线包括一个指令流出阶段(instruction issuestage),在该阶段中,需要在得知一个指令是否可以输出之前检查其是否存在数据冲突(data hazard)。这种检查通常使时序变得复杂并可能带来时间上的临界性。在超标量(super-scalar)设计中,一个能够取得多条指令并存储的指令缓冲单元可以在一定程度上减少上述问题。但是,在这种情况下,需要再次由该指令缓冲单元中读出其不久之前得到并存储的指令,这需要花费一定的时间,特别是在寻址上。因此,这种加入一个指令缓冲单元的结构虽然使得时序较为简单且不会带来时间上的临界性,但是其实现指令的时间较长。

【发明内容】

[0003]本发明要解决的技术问题在于,针对现有技术的上述实现指令的时间较长的缺陷,提供一种实现指令的时间较短的用于处理器中的指令取得装置及其处理器。
[0004]本发明解决其技术问题所采用的技术方案是:构造一种用于处理器中的指令取得装置,包括指令缓存单元、指令缓冲单元、指令窗口和指令实现逻辑单元;所述指令缓存单元用于存储指令并将其存储的指令按顺序传输到所述指令缓冲单元;所述指令缓冲单元将当前需要执行的、所述指令实现逻辑单元一次取指取得数量的指令传输到所述指令窗口中存储;所述指令实现逻辑单元由所述指令窗口中取得指令并处理,使其得到输出和执行;所述指令实现逻辑单元还将当前执行指令的读指针和写指针返回到所述指令缓冲单元。
[0005]更进一步地,所述指令缓存单元还与所述指令窗口连接,所述指令缓冲单元未存储指令时,所述指令缓存单元直接输出指令到所述指令窗口。
[0006]更进一步地,所述指令缓存单元通过读取所述指令实现逻辑单元输出到所述指令缓冲单元的读指针的值来判断所述指令缓冲单元是否存储有指令。
[0007]更进一步地,所述指令窗口为缓冲存储单元,所述缓冲存储单元的存储量为两条指令的长度。
[0008]更进一步地,所述指令实现逻辑单元每次由所述指令窗口按照指令排列的顺序依次读取两条指令。
[0009]更进一步地,所述指令缓冲单元依据所述指令实现逻辑单元在上一个取指周期产生的读指针指向位置开始存储的两条指令输出到所述指令窗口,等待所述指令实现逻辑单元读取。
[0010]更进一步地,所述读指针为零时,所述指令缓存单元将排列在最前面的两条指令直接输送到所述指令窗口中。
[0011]本发明还涉及一种处理器,包括取得指令装置,所述取得指令装置为上述任意一项所述的指令取得装置。
[0012]更进一步地,所述处理器包括CPU或GPU。
[0013]更进一步地,所述处理器包括具有多个内核的并行处理器或具有多个内核的、并行的流处理器。
[0014]实施本发明的用于处理器中的指令取得装置及其处理器,具有以下有益效果:由于在指令缓冲单元和指令实现逻辑单元之间加入了指令窗口,由指令缓冲单元或指令缓存单元将一次取指数量的指令输送到指令窗口,指令实现逻辑单元直接由上述指令窗口取得指令,不需要再由上述指令缓冲单元取得指令;由于该指令窗口中的指令就是一次取指所需要的指令,因此,上述指令实现逻辑单元由该指令窗口取得指令时,不需要进行寻址;所以节省了在指令缓冲单元中寻址的时间或者将该时间与数据传输或指令处理的时间重叠了,从总体上减少了指令输出的时间。
【专利附图】

【附图说明】
[0015]图1是本发明用于处理器中的指令取得装置及其处理器实施例中指令取得装置的结构示意图。
【具体实施方式】
[0016]下面将结合附图对本发明实施例作进一步说明。
[0017]如图1所示,在本发明的一种用于处理器中的指令取得装置及其处理器实施例中,该用于处理器中的指令取得装置包括指令缓存单元1、指令缓冲单元2、指令窗口 3和指令实现逻辑单元4 ;基本上而言,上述指令缓存单元I和指令缓冲单元2构成一个二级的cache (高速缓冲存储器);这个二级的cache并不是直接连接在指令实现逻辑单元4上,而是通过指令窗口 3与指令实现逻辑单元4连接;也就是说,虽然其间存在其他的连接或信号交互等,但是,指令实现逻辑单元4并不会直接访问上述cache并得到指令内容;相反,上述指令实现逻辑单元4只能直接地由上述指令窗口得到指令,并将得到的指令处理后执行或输出执行。具体来讲,指令缓存单元I用于存储指令并将其存储的指令按执行或排列的顺序传输到指令缓冲单元2 ;指令缓冲单元2将当前需要执行的、指令实现逻辑单元一次取指取得数量的指令传输到指令窗口 3中存储;指令实现逻辑单元4由指令窗口 3中取得指令并处理,使其得到输出和执行;在本实施例中,上述指令实现逻辑单元4还将其产生的读指针信号(Read-pointer)和写指针信号(Write-pointer)返回到指令缓冲单元2的相应端口,以便于该指令缓冲单元2产生正确的读指针和写指针。
[0018]在本实施例中,指令缓冲单元2依据指令实现逻辑单元4在上一个取指周期产生的读指针信号使得其读指针指向位置开始存储的、一次取指所能够得到的指令输出到指令窗口 3,等待指令实现逻辑单元4由上述指令窗口 3读取这些指令或者说指令窗口 3将这些指令输送到上述指令实现逻辑单元4。普遍而言,上述指令窗口 3中的指令都是按照上述方法,经过指令缓存单元1、指令缓冲单元2而得到的。但是,在一些特殊的情况下,上述方法可能带来时间上的滞后,例如,在上述指令窗口 3和指令缓冲单元2均为空时(即在指令窗口 3和指令缓冲单元2中均没有存储指令,例如,在系统上电时),如果仍然按照上面的方法,则指令实现逻辑单元4需要等待较长的时间才能得到指令。为了减少这些情况下指令实现逻辑单元4的等待时间,进一步减少整个系统指令输出及实现的时间,在本实施例中,当出现上述情况时,并不按照上述流程进行指令传输,而是直接将指令缓存单元I中本来要输出到指令缓冲单元2的指令(即本来在当前取指周期中输出到指令缓冲单元2的、一次取指能够得到的最大指令数量的指令),跳过上述指令缓冲单元2,直接输出到上述指令窗口中。为此,在本实施例中,指令缓存单兀I的指令输出纟而口还与指令窗口 3的指令输入立而口连接,请参见图1,该指令窗口 3的指令输入端口还与上述指令缓冲单元2的指令输出端口连接;也就是说,在本实施例中,上述指令窗口 3的指令输入端口同时连接在上述指令缓冲单元2的指令输出端和指令缓存单元I的指令输出端。这样,在指令缓冲单元3未存储指令时,指令缓存单元I直接输出指令到指令窗口 3或者说指令窗口 3直接由上述指令缓存单元I取得指令。在本实施例中,通过读取指令实现逻辑单元4输出到指令缓冲单元2的读指针信号所确定的读指针的值来判断指令缓冲单元2是否存储有指令。一般来讲,当上述读指针的值为零或为一个事先设定的表示其存储的指令为空的值的时候,指令缓存单元I将排列在最前面的、一次取指所能得到的最大数量指令直接输送到指令窗口 3中。
[0019]在本实施例中,一个具体的例子是,由于每次取指能够取得两条指令,所以,上述指令实现逻辑单元4每次由指令窗口 3读取两条指令,而指令窗口 3在每个取指周期中由上述指令缓冲单元2或指令缓存单元I中得到的指令也是两条;而在本实施例中,指令窗口 3为缓冲存储单元,该缓冲存储单元的存储量为两条指令的长度;也就是说,该指令窗口能够且只能够容纳两条指令。故当指令实现逻辑单元4由指令窗口读取指令时并不需要寻址,直接读取即可。在其他的例子中,上述每次取指的指令条数可能不同,在这种情况下,上述指令窗口 3的长度也就不同。例如,另一个例子中如果每次只能取得一条指令,则其对应的指令窗口 3的长度就只能是一条指令的长度。总之,该指令窗口 3的长度与该系统每次取指的最大指令数的长度相同。
[0020]从一个方面来讲,在本实施例中,为了消除由于数据冲突检测逻辑导致时间临界而带来的在指令缓冲单元2中的时间延迟,设置了一个可以容纳两条指令的指令窗口 3在上述指令缓冲单元的指令输出端,并使其与指令实现逻辑单元4连接,指令逻辑单元4由该指令窗口 3取得指令。数据冲突检测逻辑总是考虑这两条在数据窗口 3中的指令的实现或输出条件,以此来替代由指令缓冲单元本身中取得指令。在每个取值周期中,I条或两条指令被输出并实现后,更多的指令被由指令缓冲单元2中读入上述指令窗口 3。这消除了指令缓冲单元指令读取加上数据冲突检测路径都带来的、耗时的访问时间,由于通过复杂的数据冲突检测逻辑被由指令直接由指令缓冲单元2中进入指令窗口 3代替,当上述指令窗口 3和指令缓冲单元2均为空(未存储指令)时,指令直接由指令缓存单元I跳过指令缓冲单元2而直接传输到指令窗口 3。这避免了由于指令缓冲单元2的空闲而导致流水线空闲的情况,进一步节省了时间。
[0021]在本实施例中,还涉及一种处理器,该处理器包括取得指令装置,该取得指令装置为上述的指令取得装置。在本实施例中,这种处理器包括了所有具有这种取指装置的处理器。例如,这些处理器可以是CPU或GPU,也可以是具有多个内核的并行处理器或具有多个内核的、并行的流处理器。
[0022]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种用于处理器中的指令取得装置,其特征在于,包括指令缓存单元、指令缓冲单兀、指令窗口和指令实现逻辑单兀;所述指令缓存单兀用于存储指令并将其存储的指令按顺序传输到所述指令缓冲单元;所述指令缓冲单元将当前需要执行的、所述指令实现逻辑单元一次取指取得数量的指令传输到所述指令窗口中存储;所述指令实现逻辑单元由所述指令窗口中取得指令并处理,使其得到输出和执行;所述指令实现逻辑单元还将当前执行指令的读指针和写指针返回到所述指令缓冲单元。
2.根据权利要求1所述的用于处理器中的指令取得装置,其特征在于,所述指令缓存单元还与所述指令窗口连接,所述指令缓冲单元未存储指令时,所述指令缓存单元直接输出指令到所述指令窗口。
3.根据权利要求2所述的用于处理器中的指令取得装置,其特征在于,所述指令缓存单元通过读取所述指令实现逻辑单元输出到所述指令缓冲单元的读指针的值来判断所述指令缓冲单元是否存储有指令。
4.根据权利要求3所述的用于处理器中的指令取得装置,其特征在于,所述指令窗口为缓冲存储单元,所述缓冲存储单元的存储量为两条指令的长度。
5.根据权利要求4所述的用于处理器中的指令取得装置,其特征在于,所述指令实现逻辑单元每次由所述指令窗口按照指令排列的顺序依次读取两条指令。
6.根据权利要求5所述的用于处理器中的指令取得装置,其特征在于,所述指令缓冲单元依据所述指令实现逻辑单元在上一个取指周期产生的读指针指向位置开始存储的两条指令输出到所述指令窗口,等待所述指令实现逻辑单元读取。
7.根据权利要求6所述的用于处理器中的指令取得装置,其特征在于,所述读指针为零时,所述指令缓存单元将排列在最前面的两条指令直接输送到所述指令窗口中。
8.—种处理器,包括取得指令装置,其特征在于,所述取得指令装置为权利要1-7任意一项所述的指令取得装置。
9.根据权利要求8所述的处理器,其特征在于,所述处理器包括CPU或GPU。
10.根据权利要求8所述的处理器,其特征在于,所述处理器包括具有多个内核的并行处理器或具有多个内核的、并行的流处理器。
【文档编号】G06F9/38GK103631566SQ201310619745
【公开日】2014年3月12日 申请日期:2013年11月29日 优先权日:2013年11月29日
【发明者】梅思行, 劳咏仪 申请人:深圳中微电科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1