存储器资源的改善使用的制作方法

文档序号:6624069阅读:152来源:国知局
存储器资源的改善使用的制作方法
【专利摘要】本文公开了存储器资源的改善使用。描述了增加在处理器内的存储器资源的效率的方法。在实施例中,替代包括用于存储与DSP指令相关联的数据的专用DSP间接寄存器,这个数据被存储在高速缓存内的已分配和锁定的区域中。随后设置用于存储DSP数据的任何高速缓存行的状态以防止数据被写入存储器。在高速缓存内的已分配区域的尺寸可根据需要被存储的DSP数据的量进行变化,且当没有DSP指令在运行时,没有高速缓存资源被分配用于存储DSP数据。
【专利说明】存储器资源的改善使用

【背景技术】
[0001]处理器一般包括多个寄存器,且其中处理器是多线程处理器,寄存器可在线程(全局寄存器)之间被共享或专用于特定的线程(局部寄存器在处理器执行03?(数字信号处理)指令的场合,处理器包括专门由03?指令使用的额外寄存器。
[0002]处理器的寄存器100形成存储器层级10的部分,设置存储器层级10是为了减小与访问主存储器108相关联的时延,如图1所示。存储器层级包括一个或多个高速缓存,且一般有通常使用3狀1(静态随机存取存储器)实现的两极片上高速缓存11102和12104以及一级片外高速缓存13106。11高速缓存102比12高速缓存104更接近处理器。高速缓存比可在0狀1中实现的主存储器108小,但涉及访问高速缓存的时延与主存储器相比短得多。因为时延至少近似地与高速缓存的尺寸有关,[1高速缓存102比12高速缓存104小,以便它具有较低的时延。
[0003]下面描述的实施例不限于解决已知处理器的任何或所有缺点的实现。


【发明内容】

[0004]提供这个概述来介绍将在下面详细描述中进一步描述的以简化形式的概念的选择。这个概述并不打算识别所主张的主题的关键特征或本质特征,它也并不打算用作在确定所主张的主题的范围时的帮助。
[0005]描述了增加在处理器内的存储器资源的效率的方法。在实施例中,代替包括用于存储与03?指令相关联的数据的专用03?间接寄存器资源,这个数据被存储在高速缓存内的已分配和锁定区域中。随后设置用于存储03?数据的任何高速缓存行的状态以防止数据被写入存储器。在高速缓存内的已分配区域的尺寸可根据需要被存储的03?数据的量进行变化,且当没有03?指令在运行时,没有高速缓存资源被分配用于存储03?数据。
[0006]第一方案提供了管理处理器内的存储器资源的方法,其包括:动态地使用高速缓存的锁定部分用于存储与03?指令相关联的数据;以及设置与在高速缓存的被分配给03?指令并由03?指令使用的部分中的任何高速缓存行相关联的状态,该状态配置成防止存储在高速缓存行中的数据被写入存储器。
[0007]第二方案提供一种处理器,其包括:高速缓存;加载-存储管线;以及连接加载-存储管线和高速缓存的两个或更多个通道;且其中当03?指令由处理器执行时,高速缓存的一部分被动态地分配用于存储与03?指令相关联的数据,并且在高速缓存的该部分内的行被锁定。
[0008]另外的方案提供实质上如关于附图的图3、6和10中的任一个所述的方法;实质上如关于图4、5和7-9中的任一个所述的处理器;其上编码有用于产生根据权利要求9-19中的任一项所述的处理器的计算机可读程序代码的计算机可读存储介质;以及其上编码有用于产生配置成执行根据权利要求1-8中的任一项所述的处理器的计算机可读程序代码的计算机可读存储介质。
[0009]本文描述的方法可由使用软件配置的计算机执行,该软件是以存储在有形存储介质上的机器可读形式,例如以包括用于配置计算机以执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式,或以包括适合于执行本文所述的任何方法的所有步骤的计算机程序代码模块(当程序在计算机上运行且其中计算机程序可体现在计算机可读存储介质上)的计算机程序的形式。有形(或非临时)存储介质的例子包括磁盘、拇指驱动器、存储卡等,且不包括传播的信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或同时被执行。
[0010]本文所述的硬件部件可由其上编码有计算机可读程序代码的非临时计算机可读存储介质产生。
[0011]这承认固件和软件可单独地被使用且是有价值的。意图是包括在“哑”或标准硬件上运行或控制“哑”或标准硬件的软件,以执行期望功能。意图还包括“描述”或定义硬件的配置的软件,例如册“硬件描述语言)软件,如用于设计硅芯片或用于配置通用可编程芯片,以执行期望功能。
[0012]优选特征可酌情被组合,如将对技术人员明显的,并可与本发明的任何方案组合。

【专利附图】

【附图说明】
[0013]将参考以下附图通过例子描述本发明的实施例,其中:
[0014]图1是存储器层级的示意图;
[0015]图2是示例性多线程处理器的示意图;
[0016]图3是处理器的操作的示例性方法的流程图,其中03?寄存器资源在高速缓存内被吸收,而不是具有专门由03?指令使用的单独寄存器资源;
[0017]图4示出两个示例性高速缓存的示意图;
[0018]图5是从另一不例性闻速缓存的03?数据访问的不意图;
[0019]图6是示出高速缓存的一部分可如何分配给03?指令并用于存储03?数据的三个示例性实现的流程图;
[0020]图7是示例性多线程处理器的示意图,其中03?寄存器资源在高速缓存内被吸收;
[0021]图8是示例性单线程处理器的示意图,其中03?寄存器资源在高速缓存内被吸收;
[0022]图9是另一不例性闻速缓存的不意图;以及
[0023]图10是处理器的操作的另一示例性方法的流程图,其中03?寄存器资源在高速缓存内被吸收。
[0024]公共参考数字在全部附图中用来指示类似的特征。

【具体实施方式】
[0025]下面仅通过例子的方式描述本发明的实施例。这些例子表示实施本发明的最佳方式,其是目前 申请人:已知的,但是它们不是可以实现此的唯一方式。说明书阐述了例子的功能和用于构成并操作例子的步骤的序列。然而,相同或等效的功能和序列可由不同的例子实现。
[0026]如上所述,可执行03?指令的处理器一般包括专门由那些03?指令使用的额外寄存器资源。图2示出包括两个线程202、204的示例性多线程处理器200的示意图。除了局部寄存器206和全局寄存器208以外,存在少量专用03?寄存器210和多得多的间接访问08?寄存器211(其可被称为03?间接寄存器)。这些03?间接(或大量)寄存器211是间接访问寄存器,因为它们总是只从处理器内部(经由03?访问管线214)被填充。
[0027]如图2所示,为每个线程(例如局部寄存器206和03?寄存器210)复制在处理器内的一些资源,且在线程(例如局部寄存器208、08?间接寄存器211、存储器管理单元(丽⑴209、包括加载-存储管线212、03?访问管线214和其它执行管线216的执行管线、以及11高速缓存218)之间共享一些资源。在这样的处理器中,03?访问管线214用于利用由在相关03?寄存器210中的值产生的索引将数据存储在03?间接寄存器211中。03?间接寄存器211是在硬件中的开销,因为资源与03?寄存器210的尺寸相比是大的(例如与大约1024个间接03?寄存器比较,可能有大约24个03?寄存器),且呈现使用它的03?指令是否正在运行。此外,很难关闭03?间接寄存器211,因为使用模式可能是稀疏的,且所有当前状态将需要被保留。
[0028]下面的段落描述处理器,其可以是单线程或多线程处理器,并可包括一个或多个核心,其中03?间接寄存器资源不被提供为专用寄存器资源,但替代地被吸收到高速缓存状态(例如[1高速缓存)中。此外,03?访问管线的功能被吸收到加载-存储管线的功能中,从而仅是将03?间接寄存器状态保存在11高速缓存内的地址范围识别对高速缓存的特别访问。所使用的11高速缓存地址范围被保留用于访问防止任何数据污染的每个线程的08?间接寄存器资源。通过使用高速缓存资源到03?指令的动态分配,寄存器开销连同功率开销一起被消除(即,不需要有在处理器内的任何专用03?间接寄存器),且总存储器层级的利用更有效(即,当没有03?指令运行时,所有高速缓存资源可供以标准方式使用)。如在下面更详细描述的,在一些例子中,被分配给03?指令的高速缓存的部分的尺寸可根据08?指令需要存储的数据的量来动态地增长和缩小。
[0029]图3示出处理器的操作的示例性方法的流程图,其中03?间接寄存器资源在高速缓存内被吸收,而不是具有专门由03?指令使用的单独寄存器资源。如图3所示,高速缓存的一部分被动态地用于存储与相关03?指令相关联的数据(块302),即,存储将通常存储在03?间接寄存器中的数据。术语“动态地”在本文用于指下列事实:高速缓存的部分只在它被需要时(例如在软件运行时间、在启动时、引导时间或周期性地)被分配用于03?使用,且此外在一些实施例中,被分配来由03?指令使用的高速缓存的量可根据需要动态地改变,如在下面更详细描述的。用于存储03?数据的高速缓存行被保护(或锁定),使得它们不能用作标准高速缓存(即,存储在行中的数据不能被逐出)。
[0030]不以传统上使用高速缓存的相同方式来使用用于通过相关03?指令存储数据的高速缓存的部分(即,高速缓存行),因为这些值总是只从处理器内部被填充,且它们最初不从存储器层级中的另一级加载或写回到任何存储器(除了当上下文转换时,如下面更详细描述的)。因此,如图3所示,该方法还包括设置用于通过相关03?指令存储数据的任何高速缓存行的状态(块304)以防止数据写入存储器。高速缓存行被设置到的这个状态可被称为“从不写”,与标准的写回或直接写入高速缓存相反。
[0031]可使用指示高速缓存行的状态的现有位来设置所使用的高速缓存行而不是03?间接寄存器资源的状态(“从不写”)和锁定。设置位(且因此执行锁定并设置状态)的分配控制信息可与加载-存储管线所创建的每个[1高速缓存事务一起被发送。这个状态由高速缓存的内部状态机读取并解释,使得当实现逐出算法时,该算法确定它不能从锁定的高速缓存行逐出数据,且反而必须选择要逐出的可选的(非锁定的)高速缓存行。
[0032]在例子中,状态的设置可由加载-存储管线(例如由在加载-存储管线内的硬件逻辑)实现,例如加载-存储管线可访问控制状态的寄存器,或可经由如丽^读取的地址页表来控制状态的设置。
[0033]该方法可包括配置步骤(块306),其建立寄存器以指示线程可使用高速缓存的一部分用于03?数据。这是静态建立过程,与被动态地执行的在高速缓存内的行的实际分配(在块302中)相反。在一些例子中,在多线程处理器中的所有线程可被启用来使用用于存储03?数据的高速缓存的一部分,或可选地,只有一些线程可被启用来以这种方式使用高速缓存的一部分。
[0034]指示线程可使用高速缓存的一部分用于03?数据的寄存器可位于11高速缓存内或丽^内。在例子中,11高速缓存可包括指示在高速缓存内的03?型行的局部状态设置,且这个信息可从丽1传递到11高速缓存。
[0035]为了使用高速缓存的部分来代替03?间接寄存器来存储03?数据,修改高速缓存架构,使得可通过03?指令从高速缓存的部分访问所需数量的信息。特别是,为了能够在同一时间(即,同时)执行两次读取或者一次读取和一次写入,例如通过向高速缓存提供两个通道,并且高速缓存被划分(例如高速缓存架构被分成两个存储元件)以为这两个通道提供两组位置,来增加对高速缓存的半独立数据访问的次数。在示例性实现中,可扩展高速缓存的访问端口以呈现两个加载端口和一个存储端口(其中存储端口可访问这两个存储元件中的任一个)。
[0036]关于对高速缓存的数据访问使用术语“半独立”,因为每个03?操作可使用多个08?数据项目,但在一起使用的那些03?数据项目之间存在设定的关系。因此高速缓存可布置项目的集合的存储,知道只有特定的集合将被一起访问。
[0037]图4示出示例性高速缓存400的第一示意图,示例性高速缓存400被划分成四条路402(被标记为0-3),并接着水平地分裂(通过点线404)以为两个通道提供两组位置,在本例中,偶数路(0和2)的部分包括一组(被标记为八)并且奇数路(1和3)的部分包括另一组(被标记为8)。在这个实现中,高速缓存架构被构造成将两组03?数据(八和8)存储在独立的存储元件内,允许对将在同一时钟周期上被执行的03?操作的所需的并发访问。
[0038]图4还示出示例性高速缓存410的第二示意图,示例性高速缓存410由两条路412、414(被标记为0-1)组成,每条路被划分成两排(“成)册和000),其为每条路412、414提供在访问的地址上选择的两个存储元件。例如,划分可将数据集合八只存储在偶数寻址的高速缓存行内,并将数据集合8存储在奇数寻址的高速缓存行内,允许经由独立的存储元件并发访问集合八和集合8。
[0039]图5描绘以示例性高速缓存420的形式的这种成排的存储设备(其可通过上面的方法之一实现),其中对项目八的访问与对项目8的独立寻址访问在相同的时钟周期上进行。在图5中,点线422将为03?访问保留(当需要时)的高速缓存的一部分与可用于一般高速缓存使用的高速缓存的部分分离。
[0040]标准的非03?相关的高速缓存访问可利用被提供到结构/排的多个端口,并且也可伺机组合单独的高速缓存访问以在单个时钟周期内执行多个访问。单独的访问不需要在独立的结构之外是相关的,在该独立的结构中它们是每个访问(这允许它们一起被操作),即,单独的访问不是相关的,且只需要访问不同的存储元件。
[0041]也可执行存储元件按照数据宽度的另一划分以允许执行较大范围的数据对齐访问。这不影响上面描述的操作,但也实现在同一集合内的多个数据上操作的可能性。在一个例子中,这将允许访问在高速缓存行内的额外元件以交替地从第一元件偏移的操作。
[0042]图3中的示例性流程图还示出当上下文转换时的操作,其使用具有额外的指令的标准上下文转换机制(块312和316)来处理用于存储03?数据的那些高速缓存行的解锁和锁定(块310和318)。那些额外的指令可保存在指令高速缓存中,并在被馈送到执行管线之前由指令取出块取回。当转换出数据(括号308)时,指令引导03?的不动产(即,高速缓存中被分配给03?使用的部分)并在上下文转换(块312)之前对那些高速缓存行解锁(块310)。当转换入上下文(括号314)时,包括以前存储在高速缓存中的任何03?数据的高速缓存数据从存储器恢复(块316),且接着指令用于搜索包含03?数据的任何行并锁定和设置那些行的状态(块318)。这将用于03?数据的高速缓存行放置回它们所在的同一逻辑状态中(例如随后的块304),好像上下文转换操作没有被执行一样,即,高速缓存行被保护,使得它们不能通过除了 03?指令以外的任何东西被写入,且存储在高速缓存行中的任何数据被标记,使得它从不写回到存储器。在上下文转换(括号314)之后,在高速缓存内的内容的物理位置可以是不同的(例如,因为内容可根据正常高速缓存策略位于高速缓存的任何路中);然而在逻辑上,这对它后面的功能看起来是相同的。
[0043]在块318的示例性实现中,在丽^内的地址索引数据查找可通过其地址范围确定访问的03?特性,且这可结合修改的高速缓存维护操作(其为了其它原因而搜索高速缓存)来使用以搜索并更新高速缓存行状态回到锁定的03?状态。
[0044]用于解锁和锁定行(在块310和318中)的控制和用于最初锁定行(在块304中)的控制可存储在高速缓存本身中,例如在标签内或在与高速缓存相关联的硬件逻辑中。在高速缓存内的现有控制参数在高速缓存行中提供锁定,且提供新的额外指令或对现有指令的修改以使这些控制参数能够是可读的和可更新的,从而能够保持和恢复03?数据内容。这可完全在硬件中或在硬件和软件的组合中实现。
[0045]图6示出高速缓存的一部分可如何分配给03?指令并用于存储03?数据(即,在图3中的块302中)的三个示例性实现。在第一个例子中,03?指令一有要存储的一些数据(块502),高速缓存的固定尺寸部分就被分配用于由03?指令使用(块504),且数据存储在所分配的部分内(块506)。此时,在固定尺寸部分内的所有高速缓存行可以可选地被锁定,从而它们不能通过除了 03?指令以外的任何东西被写入。通过锁定高速缓存行,这保护了 03?数据。一旦高速缓存行被分配(在块504中),它就被假设包含03?数据,且因此它的状态被设置为“从不写”。然后当03?指令随后具有要存储的额外数据时(块508),该数据可存储在已经分配的部分内(块506)。
[0046]在第二个例子中,03?指令一具有要存储的一些数据(块502),就分配足够大以存储该数据的高速缓存的一部分(块505),且当更多的数据需要被存储时则增加该分配(在块510中)直到最大分配尺寸。这个选择比第一个例子更有效,因为不可用于正常使用的高速缓存的量(因为它被分配给03?并被锁定以防由任何其它东西使用)取决于需要被存储的03?数据的量;然而,该第二个例子可添加延迟,其中已分配部分的尺寸增加(在块510中)。将认识到,存在很多不同的方法,其中可管理分配的增加(在块510中)。在一个例子中,当不可能将新数据存储在现有的已分配部分中时,已分配部分的尺寸可增加,且在另一例子中,当剩余的自由空间落在预先定义的量之下时,已分配部分的尺寸可增加。将进一步认识到,最初分配的量(在块505中)可以仅具有存储所需数据(来自块502)的足够尺寸或可以大于此,使得已分配部分的尺寸不需要随着每个具有要存储的数据的新的03?指令而增加,而是仅仅周期性地出现。
[0047]在第二个例子的一些实现中,可在反向操作中将分配的尺寸减小(在块518中)到在块510中出现的,例如当在已分配部分中存在可用空间(块516)时。在这被实现的情况下,已分配部分增加和缩小其在高速缓存中的覆盖区,这增加了使用高速缓存资源的效率。
[0048]分配(在块504或505中)可例如由03?寻址引起,03?寻址访问在被标记为03?的页内的位置并发现它没有读取或写入的许可。这将引起异常,且软件将给高速缓存准备08?区域(在块504或505中)。
[0049]在第三个例子中,高速缓存可以被预先准备,使得高速缓存的一部分预先分配给03?数据(块507)。这意味着将不引起异常处理(如可能是在前两个例子中的情况,并触发分配过程);然而,这可能需要03?区域比必要的更早地保留在高速缓存中。
[0050]在图6中的任何例子中,当没有进一步的03?指令运行(块512)时,即,在03?程序结束时,以前被分配(例如在块504或505中)用于存储03?数据的高速缓存的部分被解除分配(块514)。这个解除分配操作(在块514中)可对图3所示的上下文转换操作(括号308)使用类似的过程,释放行(如在块310中)但没有执行保存操作(即,块312被省略当减小已分配部分的尺寸时也可使用相同的过程(在块〖巧中)。
[0051]图7是包括两个线程602、604的示例性多线程处理器600的示意图。如在图2所示的处理器中,为每个线程(例如局部寄存器206和03?访问寄存器612)复制一些资源,且共享一些资源(例如全局寄存器208)。与图2所示的处理器200不同,图7所示的示例性处理器600不包括任何专用03?间接寄存器或03?访问管线。替代地,11高速缓存607的部分606在需要时被分配,用于由03?指令使用来存储03?数据。对11高速缓存607的部分606的分配可由丽口 609执行,且实际高速缓存行的分配可由高速缓存607执行(例如,在一些软件帮助下)。虽然可设置专用管线来存储03?数据,但在本例中,使用加载-存储管线611。这个加载-存储管线611类似于现有的加载-存储管线(在图2中的元件212),其具有更新以受益于由11高速缓存607提供的多个端口(例如,如上所述,两个加载端口和一个存储端口这意味着不需要额外的复杂逻辑,且加载-存储管线可实施排序,且只在没有地址冲突的情况下执行重新排序(例如,加载-存储管线可通常如正常一样操作,并不将03?功能作为特殊情况对待)。利用根据存储在相关03?访问寄存器612中的值产生的索引,将03?数据映射到在已分配部分606内的高速缓存行地址,而不是到03?寄存器。为了使高速缓存的操作可模仿03?间接寄存器资源的操作,在加载-存储管线611和11高速缓存607之间设置两个通道608,且高速缓存的部分606被划分(如点线610指示的)以在所述部分内提供用于这两个通道的两组单独的位置。
[0052]上面描述的方法也能够在单线程处理器中实现,且示例性处理器700在图8中示出。也将认识到,方法可在包括多于两个线程的多线程处理器中和/或在多核心处理器(其中每个核心可以单线程或多线程的)中实现。
[0053]在方法在多线程处理器中实现的情况下,图3所示和上面描述的方法可如图9和10中所示的被修改。如图9所示,其是11高速缓存800的示意图,在线程之间划分高速缓存800。在本例中,存在两个线程,且高速缓存的一个部分802被保留用于由线程0使用,而高速缓存的另一部分804被保留用于由线程1使用。当高速缓存的一部分被分配到线程用于存储03?数据(在图10中的示例性流程图的块902中)时,这个空间从另一线程的高速缓存资源内被分配。例如,从由线程0使用的高速缓存的部分802获取分配给线程1以存储03?数据的一部分806,且从由线程1使用的高速缓存的部分804获取分配给线程0以存储数据的一部分808。在只有一个线程正在执行03?指令的情况下,另一线程看到其高速缓存资源的减少,而03?线程(即,执行03?指令的线程)维持其最大高速缓存空间和性能。在两个线程都在使用03?的情况下,每个线程失去一小部分的高速缓存空间以用于存储另一线程的03?数据。如上面描述的(例如参考图6),所分配的部分806、808的尺寸可具有固定的尺寸或可动态地改变。
[0054]在一些实现中,图3和图10所示的方法可组合,使得在一些情况下,来自线程自己的高速缓存空间的高速缓存资源可被分配用于存储03?数据,且在其它情况下,来自另一线程的高速缓存空间的高速缓存资源可被分配。
[0055]如上所述,动态执行高速缓存资源的分配,以用作好像它是03?间接寄存器资源一样(即,在存储03?数据时使用在例子中,硬件逻辑可周期性地执行高速缓存资源到线程的分配,以用于存储03?数据,且任何分配的尺寸可以是固定的或可改变(例如,如图6所示)。
[0056]虽然上面的描述涉及使用高速缓存来存储03?数据,但在上面描述且在图7中示出的修改的高速缓存架构(例如,在加载-存储管线和高速缓存之间具有增加数量的通道和分离的高速缓存架构)可由也需要对高速缓存的模仿访问的其它特殊指令集所使用。
[0057]上面描述的方法和装置使间接访问03?寄存器(其与其它寄存器资源相比通常是大的)的阵列能够移动到[1高速缓存中作为锁定资源。
[0058]使用上面描述的方法,消除了与专用03?间接寄存器的提供相关联的开销,且通过现有逻辑(例如加载-存储管线)的再使用,不需要额外逻辑来将03?数据写入高速缓存。此外,在使用专用03?间接寄存器(例如,如图2所示)的场合,必须提供确保一致性的机制,假定虽然写入按顺序被执行,但读取可以不按顺序执行。使用上面描述的方法,这些机制是不需要的,且替代地,可使用与高速缓存相关联的现有的一致性机制。
[0059]对“逻辑”的特定引用指的是执行一种或多种功能的结构。逻辑的例子包括布置成执行那些功能的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。例如,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器(例如寄存器、触发器或锁存器)、逻辑运算符(例如布尔运算)、数学运算符(例如加法器、乘法器或移位器)以及互连的电路或结构。这样的元件可作为定制电路或标准单元库、宏或在其它抽象级别被提供。可在特定的布置中使这样的元件互连。逻辑可包括固定功能的电路,且电路可被编程来执行一种或多种功能;可从固件或软件更新或控制机制提供这样的编程。被识别来执行一种功能的逻辑也可包括实现组成功能或子过程的逻辑。在例子中,硬件逻辑具有实现固定功能操作或多种操作、状态机或过程的电路。
[0060]在本文给出的任意范围或设备值可扩展或改变,而不失去所寻求的效果,如对技术人员将是明显的。
[0061]将理解,上面描述的益处和优点可涉及一个实施例或可涉及几个实施例。实施例不限于那些解决任何或所有所陈述的问题的实施例或那些具有任何或所有所陈述的益处和优点的实施例。
[0062]对“一”项目的任何提及是指那些项目中的一个或多个。术语“包括”在本文用于意指包括所识别的方法块或元件,但这样的块或元件不包括排他列表,且装置可包含额外的块或元件,方法可包含额外的操作或元素。
[0063]本文描述的方法的步骤可以按任何适当的顺序或在适当的场合同时执行。在附图中的方框之间的箭头示出方法步骤的一个示例性顺序,但并不旨在排除并行的多个步骤的其它顺序或执行。此外,单独的块可从任何方法中删除,而不偏离本文描述的主题的精神和范围。上面描述的任何例子的方面可与所描述的任何其它例子的方面组合以形成另外的例子,而不失去所寻求的效果。在附图的元件显示为由箭头连接的情况下,将认识到,这些箭头只显示在元件之间的通信(包括数据和控制消息)的一个示例性流程。在元件之间的流程可以在任一方向上或在两个方向上。
[0064]将理解,上面描述的优选实施例仅作为例子给出,以及各种修改可由本领域中的技术人员做出。虽然以上以某个程度的特定性或关于一个或多个单独的实施例描述了各种实施例,但本领域中的技术人员可对所公开的实施例进行很多变更,而不偏离本发明的精神或范围。
【权利要求】
1.一种管理处理器内的存储器资源的方法,包括:动态地使用高速缓存的锁定部分以用于存储与DSP指令相关联的数据(302);以及设置与在高速缓存的被分配给DSP指令并由DSP指令使用的部分中的任何高速缓存行相关联的状态,所述状态配置成防止存储在所述高速缓存行中的数据被写入存储器(304)。
2.如权利要求1所述的方法,其中,动态地使用高速缓存的一部分以用于存储与DSP指令相关联的数据包括: 分配高速缓存的固定尺寸部分以用于存储与DSP指令相关联的数据(504)。
3.如权利要求1所述的方法,其中,动态地使用高速缓存的一部分以用于存储与DSP指令相关联的数据包括: 分配高速缓存的可变尺寸部分以用于存储与DSP指令相关联的数据(505);以及增加高速缓存的所述可变尺寸部分的尺寸以适应存储与DSP指令相关联的进一步的数据(510)。
4.如权利要求2所述的方法,还包括: 当没有DSP指令正在运行时,解除分配高速缓存的所述部分(514)。
5.如权利要求1所述的方法,还包括: 设置寄存器以实现动态使用所述高速缓存的一部分以用于存储与DSP指令相关联的数据(306)。
6.如权利要求1所述的方法,还包括当作为上下文转换的一部分转换出数据(308)时: 在执行所述上下文转换(312)之前,对用于存储与DSP指令相关联的数据的任何高速缓存行进行解锁(310)。
7.如权利要求1所述的方法,还包括当作为上下文转换的一部分转换入数据(314)时: 执行所述上下文转换(316);以及 锁定由所述上下文转换恢复的任何高速缓存数据行,其用于存储与DSP指令相关联的数据(318)。
8.如权利要求1所述的方法,其中,所述处理器是多线程处理器,且其中动态地使用高速缓存的一部分用于存储与DSP指令相关联的数据包括: 动态地使用与第一线程相关联的高速缓存的一部分用于存储与由第二线程执行的DSP指令相关联的数据(902)。
9.一种处理器出00、700),包括: 高速缓存¢07),其中,当DSP指令由所述处理器执行时,所述高速缓存的一部分(606)被动态地分配用于存储与DSP指令相关联的数据,并且在所述高速缓存的所述部分内的行被锁定; 加载-存储管线(611);以及 两个或更多个通道¢08),其连接所述加载-存储管线和所述高速缓存;以及硬件逻辑,其布置成设置与在所述高速缓存的被分配给DSP指令并由DSP指令使用的所述部分中的任何高速缓存行相关联的状态,所述状态配置成防止存储在所述高速缓存行中的数据被写入存储器。
10.如权利要求9所述的处理器,其中,所述高速缓存的所述部分(606)被划分(610)以为每个所述通道(608)提供在所述部分内的单独的一组位置。
11.如权利要求10所述的处理器,其中,每个所述通道的所述单独的一组位置包括独立的存储元件。
12.如权利要求9所述的处理器,其中,所述处理器不包含专用于存储与DSP指令相关联的数据的间接访问寄存器。
13.如权利要求9所述的处理器,还包括硬件逻辑¢09),该硬件逻辑布置成分配高速缓存的固定尺寸部分用于存储与DSP指令相关联的数据的。
14.如权利要求9所述的处理器,还包括硬件逻辑¢09),该硬件逻辑布置成分配高速缓存的可变尺寸部分用于存储与DSP指令相关联的数据,并增加高速缓存的所述可变尺寸部分的尺寸以适应存储与DSP指令相关联的进一步的数据。
15.如权利要求9所述的处理器,还包括寄存器,所述寄存器在被设置时实现动态使用所述高速缓存的一部分用于存储与DSP指令相关联的数据。
16.如权利要求9所述的处理器,还包括布置成存储指令的存储器,当所述指令在上下文转换时被执行时,在执行所述上下文转换之前对用于存储与DSP指令相关联的数据的任何高速缓存行进行解锁。
17.如权利要求9所述的处理器,还包括布置成存储指令的存储器,当所述指令在上下文转换时被执行时,锁定由所述上下文转换恢复的任何高速缓存数据行,其用于存储与DSP指令相关联的数据。
18.如权利要求9所述的处理器,其中,所述处理器是多线程处理器,且其中所述高速缓存被划分以为每个线程提供专用高速缓存空间,并且动态地被分配用于存储与由第一线程执行的DSP指令相关联的数据的所述高速缓存的所述部分被从所述专用高速缓存空间分配用于第二线程。
19.一种计算机可读存储介质,其上编码有用于产生如权利要求9-18中的任一项所述的处理器的计算机可读程序代码。
20.一种计算机可读存储介质,其上编码有用于产生被配置成执行如权利要求1-8中的任一项所述的方法的处理器的计算机可读程序代码。
【文档编号】G06F12/08GK104424130SQ201410410264
【公开日】2015年3月18日 申请日期:2014年8月20日 优先权日:2013年8月20日
【发明者】J·梅雷迪思, R·G·伊舍伍德, H·杰克逊 申请人:想象力科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1