当前位置: 首页 > 专利查询>英特尔公司专利>正文

具有包括数据部分和相关计数器的条目的硬件堆栈制造技术

技术编号:2920458 阅读:202 留言:0更新日期:2012-04-11 18:40
根据一些实施例,确定要推入具有n个条目的硬件堆栈的新值。该堆栈中的每个条目可以包括数据部分和相关联的计数器。如果所述新值等于与当前栈顶指针相关联的条目的数据部分,则使与该条目相关联的计数器递增。如果所述新值不等于与当前栈顶指针相关联的该条目的数据部分,则将所述新值存储在下一个条目的数据部分,并使当前栈顶指针递增。

【技术实现步骤摘要】

本专利技术涉及一种硬件堆栈。
技术介绍
信息可以被添加到被称为“堆栈”的存储区或数据缓冲器中或从中取出。在后进先出(LIFO)堆栈的情况中,值都是基于每个值添加(推入)到该堆栈中时的顺序来取出(弹出)的,最近推入地值是将要弹出的下一个值。这种类型的堆栈可以被认为是值的列表,其中较新的值将较旧的值向下推,并且值是从列表的顶部弹出的。这种堆栈可以通过将每个值存储在随机存取存储器(RAM)单元和/或硬件寄存器中来实现。但是,当大量值需要存储到堆栈中时,所需RAM数量和/或硬件寄存器的数量可能是不实际的。
技术实现思路
本专利技术公开了一种方法,其包括确定要推入硬件堆栈的新值,所述硬件堆栈具有n个条目,n是大于1的整数,每个条目包括数据部分和相关联的计数器;如果所述新值等于与当前栈顶指针相关联的数据部分的话,则使与该条目相关联的计数器递增;以及如果所述新值不等于与当前栈顶指针相关联的条目的数据部分,则将所述新值存储在下一个条目的数据部分中,并使当前栈顶指针递增。本专利技术还公开了一种装置,其包括具有n个数据寄存器的后进先出硬件堆栈,n是大于1的整数;n个计数器寄存器,每个计数器寄存器与所述数据寄存器之一相关联;以及栈顶指针寄存器。本专利技术进而公开了一种产品,它包括存储了指令的存储介质,所述指令在由机器执行时执行下列步骤确定要推入硬件堆栈的新值,所述硬件堆栈具有n个条目,n是大于1的整数,每个条目包括数据部分和相关联的计数器;如果所述新值和与栈顶指针相关联的条目的数据部分相同,则使与该条目相关联的计数器加1;以及如果所述新值不等于与栈顶指针相关联的所述数据部分,则将该值存储在下一个条目的数据部分中,并且使当前栈顶指针的计数器加1。本专利技术另外还公开了一种系统,它包括n通道的单指令多数据执行引擎,n是大于1的整数;后进先出硬件堆栈;以及图形存储单元,其中所述硬件堆栈又包括n个数据寄存器;n个计数器寄存器,每个计数器寄存器与所述数据寄存器之一相关联;以及栈顶指针寄存器。附图的简要描述附图说明图1是硬件堆栈的方框图。图2是根据一些实施例的硬件堆栈的方框图。图3是根据一些实施例将数据推入硬件堆栈的方法的流程图。图4至6说明根据一些实施例数据正被推入硬件堆栈。图7是根据一些实施例从硬件堆栈中弹出数据的方法的流程图。图8至10说明根据一些实施例数据正从硬件堆栈中弹出。图11是根据一些实施例的硬件堆栈的方框图。图12是根据一些实施例将数据推入硬件堆栈的方法的流程图。图13至14说明根据一些实施例数据正被推入硬件堆栈。图15和16示出了处理系统。图17至19示出了根据一些实施例正在执行嵌套的循环指令的SIMD执行引擎。图20至24示出了根据一些实施例正在执行嵌套的条件指令的SIMD执行引擎。图25是根据一些实施例的系统的方框图。具体实施例方式图1是硬件堆栈100的方框图。具体地说,堆栈100包括可以支持e条数据条目的数据存储区域110(例如,一次可以将多至e个单独的值存储在堆栈100中)。堆栈100还包括栈顶指针(TOS)150,其指示存储最近被推入该堆栈的值的条目。在图1所示堆栈100中,TOS指针150指示存储在条目2中的值“1110”是最近添加的。如果数据要从堆栈100中弹出,则会输出值“1110”并且会使TOS指针递减到1。如果要将新值添加到图1所示堆栈100中,该新值会存储在条目3中并且会使TOS指针150递增到3。数据存储区域110可以例如通过使用一RAM单元和/或硬件寄存器来实现。当许多值需要存储到堆栈100中时,所需RAM数量和/或硬件寄存器数量可能是不实际的。图2是根据一些实施例的硬件堆栈200的方框图。在本情况中,堆栈200是具有n个条目(n是大于1的整数)的LIFO缓冲器。堆栈200中的每个条目包括数据部分210和相关联的计数器220。计数器220指示数据部分210的值重复地推入所述堆栈的次数。堆栈200还包括TOS指针250。数据部分210、计数器220和/或TOS指针250中的任何一个都可以实现,例如可以用RAM单元或硬件寄存器来实现。现在将参照图3至10来描述根据一些实施例的堆栈200的操作。图3是根据一些实施例将数据推入硬件堆栈的方法的流程图。例如,图3的方法可以结合图2所示的堆栈200使用。这里所述的流程图不一定暗示固定的操作顺序,实施例可以按照任何可行的顺序来进行。注意,本文所述的任何方法都可以通过硬件、软件(包括微码)、固件或这些方法的任意组合来执行。例如,存储介质可以在其中存储指令,所述指令在由机器执行时会导致根据本文所述实施例中的任何一个的执行。在302中,确定要推入堆栈200的新值。如果该新值等于当前存储在TOS指针250所引用的条目的数据部分210中的值,则在306中使与该条目相关联的计数器220递增。如果正被推入堆栈200的新值不等于当前存储在由TOS指针250引用的条目的数据部分210中的值,则在308中将该新值存储在所述堆栈的下一个条目中。而且,在310使TOS指针250递增。还可以在312使与下一个条目相关联的计数器220(这里假设所有计数器220在初始化过程中都被设为0)递增。作为另外一种方法,计数器220也可以在312简单地设为1。此方法包括在本文所述的一些实施例中仅仅是为了说明清楚。通过在该点使计数器220递增(或使其设为1),存储在计数器220中的数字将等于数据部分210中的相关值被重复的次数。如果未执行312的步骤(并且仍然假设所有计数器在初始化过程中都被设为0),则存储在计数器220中的数字将等于数据部分210中的相关值被重复的次数减1。当计数器220表示相关值被重复的次数时,堆栈200具有等于0的第一计数器表示堆栈200为空。当计数器220表示相关值被重复的次数减1的时候,可能会通过例如“堆栈空”寄存器位来发信号通知堆栈空。根据另一个实施例,可以将“-1”存储在第一计数器220中以指示该堆栈为空。现在参照图4,它说明堆栈200具有在前两个条目中的值。具体地说,“1110”连续三次被推入堆栈200(如条目0的计数器220所示),然后“1010”被推入堆栈200中一次。应该注意,虽然对堆栈200进行了四次入栈操作(例如,“1110”三次和“1010”一次),也只使用了两个条目。此外,要将一个新值(“1010”)推入堆栈200。由于此新值等于当前存储在位于上述堆栈顶部的条目(条目1)中的值,因此与该条目相关联的计数器220如图5所示从1递增至2。在此情况下,所述新值是被推入堆栈200的最后一个值的“重复”。在图5中,要将另一个新值(“0010”)推入堆栈200。由于此新值不等于当前存储在位于该堆栈栈顶的条目(条目1)中的值,因此将该值存储在下一条目(条目2)中,与该下一个条目相关联的计数器220从0递增至1,并且TOS指针250如图6所示从1递增到2。图7是根据一些实施例使数据从硬件堆栈200中弹出的方法的流程图。在702中,取出由TOS指针250引用的存储在数据部分210中的值。随后在704中使与该条目相关联的计数器220递减。如果在706中该计数器220不等于0,则在708中保持TOS指针250的当前值。如果该计数器220不等于0,则使TOS指针250递减。例如,当存本文档来自技高网...

【技术保护点】
一种方法,包括:确定要推入硬件堆栈的新值,所述硬件堆栈具有n个条目,n是大于1的整数,每个条目包括数据部分和相关联的计数器;如果所述新值等于与当前栈顶指针相关联的数据部分的话,则使与该条目相关联的计数器递增;以及如果 所述新值不等于与当前栈顶指针相关联的条目的数据部分,则将所述新值存储在下一个条目的数据部分中,并使当前栈顶指针递增。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:M德怀尔H蒋T皮亚扎
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利