CN111026680A - 将第一标识符映射到第二标识符 - Google Patents
将第一标识符映射到第二标识符 Download PDFInfo
- Publication number
- CN111026680A CN111026680A CN201910916366.6A CN201910916366A CN111026680A CN 111026680 A CN111026680 A CN 111026680A CN 201910916366 A CN201910916366 A CN 201910916366A CN 111026680 A CN111026680 A CN 111026680A
- Authority
- CN
- China
- Prior art keywords
- identifier
- mapping
- subset
- entries
- identifiers
- 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.)
- Pending
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 430
- 238000012545 processing Methods 0.000 claims abstract description 67
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 55
- 230000006870 function Effects 0.000 claims description 41
- 238000000034 method Methods 0.000 claims description 24
- 230000002441 reversible effect Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 13
- 239000012634 fragment Substances 0.000 claims description 11
- 238000013459 approach Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
Abstract
本公开涉及将第一标识符映射到第二标识符。在数据处理系统中,提供了一种映射电路,用于将从上游组件接收的J个第一标识符中的一个第一标识符映射到要提供给下游组件的K个第二标识符中的一个第二标识符(K<J)。K个映射条目各自与相应第二标识符相关联,并且各自存储用于标识哪个第一标识符被映射到相关联的第二标识符的映射信息。对于映射条目的第一子集,分配电路防止将给定第一标识符分配给第一子集中的除了第一子集的基于给定第一标识符而选择的一个或多个映射条目的所选组之外的映射条目。对于与K个第二标识符的第二子集相关联的映射条目的第二子集,分配电路允许将给定第一标识符分配给第二子集中的任意映射条目。
Description
技术领域
本技术涉及数据处理领域。
背景技术
在数据处理系统内可能存在多个点,其中上游组件可以使用第一标识符来标识条目(例如,请求、存储条目、待处理的图形片段或数据处理系统感兴趣的任意其他条目),同时数据处理系统的下游组件可以使用第二标识符来标识条目,其中可能需要跟踪由上游组件使用的第一标识符与由下游组件使用的第二标识符之间的对应关系。上游组件可以使用从J个第一标识符的集合中选择的第一标识符,并且下游组件可以使用从K个第二标识符的集合中选择的第二标识符,其中K小于J。可以提供映射电路,用于将每个第一标识符分配给K个第二标识符中的一个,并且跟踪第一和第二标识符之间的对应关系,以便在从下游组件接收到第二标识符时,该第二标识符可以被映射回要提供给上游组件的对应第一标识符。然而,该映射电路可能带来一定量的电路面积并且可能消耗一定量的功率。可能需要减少映射电路所消耗的电路面积和功率的量,同时提供一定的性能水平。
发明内容
至少一些示例提供了一种数据处理系统,包括:映射电路,用于将从数据处理系统的上游组件接收的所接收的第一标识符映射到要提供给数据处理系统的下游组件的对应第二标识符,其中,所接收的第一标识符是J个第一标识符的集合中的一个第一标识符,并且对应第二标识符是K个第二标识符的集合中的一个第二标识符,其中,K<J;该映射电路包括:K个映射条目,每个映射条目与K个第二标识符的集合的相应第二标识符相关联,并且每个映射条目被配置为存储用于标识哪个第一标识符被映射到相关联的第二标识符的映射信息;以及分配电路,用于控制将第一标识符分配到映射电路的相应映射条目;其中:对于与K个第二标识符的第一子集相关联的映射条目的第一子集,分配电路被配置为防止将给定第一标识符分配给第一子集中的除了映射条目的所选组之外的映射条目,该映射条目的所选组包括第一子集中的基于给定第一标识符而选择的一个或多个映射条目;并且对于与K个第二标识符的第二子集相关联的映射条目的第二子集,分配电路被配置为允许将给定第一标识符分配给第二子集中的任意映射条目。
至少一些示例提供了一种用于数据处理系统的映射电路,用于将从数据处理系统的上游组件接收的所接收的第一标识符映射到要提供给数据处理系统的下游组件的对应第二标识符,其中,所接收的第一标识符是J个第一标识符的集合中的一个第一标识符,并且对应第二标识符是K个第二标识符的集合中的一个第二标识符,其中,K<J;该映射电路包括:K个映射条目,每个映射条目与K个第二标识符的集合中的相应第二标识符相关联,并且每个映射条目被配置为存储用于标识哪个第一标识符被映射到相关联的第二标识符的映射信息;以及分配电路,用于控制将第一标识符分配到映射电路的相应映射条目;其中:对于与K个第二标识符的第一子集相关联的映射条目的第一子集,分配电路被配置为防止将给定第一标识符分配给第一子集中的除了所选组之外的映射条目,该所选组包括第一子集中的基于给定第一标识符而选择的一个或多个映射条目;并且对于与K个第二标识符的第二子集相关联的映射条目的第二子集,分配电路被配置为允许将给定第一标识符分配给第二子集中的任意映射条目。
至少一些示例提供了一种方法,用于将从数据处理系统的上游组件接收的所接收的第一标识符映射到要提供给数据处理系统的下游组件的对应第二标识符,其中,所接收的第一标识符是J个第一标识符的集合中的一个第一标识符,并且对应第二标识符是K个第二标识符的集合中的一个第二标识符,其中,K<J;该方法包括:响应于所接收的第一标识符,将所接收的第一标识符分配给K个映射条目中的一个映射条目,每个映射条目与K个第二标识符的集合的相应第二标识符相关联,并且每个映射条目被配置为存储用于标识哪个第一标识符被映射到相关联的第二标识符的映射信息;其中:控制将第一标识符分配到相应映射条目,使得:对于与K个第二标识符的第一子集相关联的映射条目的第一子集,防止将给定第一标识符分配给第一子集中的除了所选组之外的映射条目,该所选组包括第一子集中的基于给定第一标识符而选择的一个或多个映射条目;并且对于与K个第二标识符的第二子集相关联的映射条目的第二子集,允许将给定第一标识符分配给第二子集中的任意映射条目。
从以下结合附图阅读的示例的描述中,本技术的其他方面、特征和优点将变得显而易见。
附图说明
图1示例性地示出了具有用于将第一标识符映射到第二标识符的映射电路的数据处理系统的示例;
图2和图3示出了用于实现映射电路的两种可选方法的比较;
图4示出了根据本技术的映射电路,其中映射电路包括映射条目的第一子集和映射条目的第二子集;
图5示出了说明使用映射电路将第一标识符映射到第二标识符的方法的流程图;以及
图6是示出将第二标识符反向映射到第一标识符的方法的流程图。
具体实施方式
数据处理系统可以具有映射电路,用于将从数据处理系统的上游组件接收的所接收的第一标识符映射到要提供给数据处理系统的下游组件的对应第二标识符,其中所接收的第一标识符是J个第一标识符的集合中的一个第一标识符,并且对应第二标识符是K个第二标识符的集合中的一个第二标识符,并且K小于J。映射电路可以具有K个映射条目,每个映射条目与K个第二标识符的集合的相应第二标识符相关联,并且每个映射条目被配置为存储用于标识将哪个第一标识符映射到相关联的第二标识符的映射信息。映射电路还可以包括分配电路,用于控制第一标识符到映射电路的相应映射条目的分配。
因此,当从上游组件接收到第一标识符时,分配电路可以基于分配策略选择映射电路的映射条目中的一个映射条目,在分配的映射条目中存储标识将哪个第一标识符映射到相关联的第二标识符的映射信息,并将与所选映射条目相关联的第二标识符提供给下游组件。存储在映射条目中的映射信息可以用于在接收到来自下游组件的响应时将第二标识符反向映射回对应第一标识符。
分配电路可以使用许多不同的分配策略来控制选择哪些映射条目来分配第一标识符。一种可能的方法可以是,对于任意第一标识符,允许分配电路选择K个映射条目中的任意一个作为要向其分配所接收的第一标识符的映射条目。然而,这种方法在面积和功耗方面可能是昂贵的,因为存储在每个映射条目中的映射信息可能需要包括更多数量的位以标识将哪个第一标识符映射到相关联的第二标识符。
另一可选方法可以是,对于任意给定第一标识符,该第一标识符仅被允许分配给映射条目的某一子组,而不被允许分配给任意其它映射条目。例如,可以生成第一标识符的散列,并且可以使用所得到的散列值来选择要向其分配第一标识符的特定映射条目。这允许较少的位被存储为映射信息。然而,利用这种方法,如果基于散列选择的映射条目已经用于另一第一标识符,则不可能将接收到的第一标识符分配给任意映射条目,并且这可能使上游组件停止,从而防止其发出进一步的请求,直到与第一标识符的散列相对应的映射条目变得可用为止。因此,虽然这种方法在电路面积和功率方面可能更便宜,但是它可能是不切实际的,因为即使仅使用几个第二标识符,上游组件也可能停止,这是由于第一标识符在映射条目上的混淆。
利用下面讨论的方法,映射电路的K个映射条目被划分为第一子集和第二子集,映射条目的第一子集与K个第二标识符的第一子集相关联,并且映射条目的第二子集与K个第二标识符的第二子集相关联。对于映射条目的第一子集,分配电路可以防止将给定第一标识符分配给第一子集中的除了映射条目的所选组之外的映射条目,该映射条目的所选组包括第一子集的基于给定第一标识符而选择的一个或多个映射条目。相反,对于映射条目的第二子集,分配电路可以允许将给定第一标识符分配给第二子集中的任意映射条目。
因此,该方法可以在性能与电路面积和功率开销之间提供更好的平衡。通过限制允许向映射条目的第一子集中的哪些映射条目分配给定第一标识符,这意味着可以减少映射条目的第一子集中的每一个所需的映射信息量,而且还通过提供映射条目的第二子集,对于该映射条目的第二子集,可以向映射条目的第二子集中的哪些映射条目分配特定的第一标识符没有限制,这提供了条目的“溢出集合”,其可以容纳那些由于与分配给第一子集的相同映射条目的不同第一标识符混淆而不能被分配到映射条目的第一子集中的第一标识符,这提高了性能。
换句话说,提供条目的第二子集意味着大多数第二标识符可以在实践中并行使用,因为在上游组件由于缺少映射条目而被停止之前,将需要与第二子集中存在的映射条目一样多的混淆冲突。这意味着该方案提供了与将第一标识符完全动态地分配给映射条目类似的性能水平,从而获得了该方案的性能益处。然而,对于第一子集中的映射条目,每个条目的面积要求很低,使得用于映射电路的整体电路开销大大降低。
分配电路可以控制将第一标识符分配给相应的映射条目,使得可以优先将所接收的第一标识符分配给映射条目的第一子集中的一个映射条目,如果不可能将所接收的第一标识符分配给映射条目的第一子集中的一个映射条目,则使用映射条目的第二子集。通过为所接收的第一标识符优先使用映射条目的第一子集(如果可能的话),这为先前分配的第一标识符和所接收的第一标识符之间存在混淆的那些情况保留映射条目的第二子集,这将倾向于提高性能。
因此,当所接收的第一标识符是第一标识符的第一组中的一个第一标识符时,当映射条目的所选组中的一个映射条目可用时,分配电路可以将所接收的第一标识符分配给基于所接收的第一标识符而选择的第一子集的映射条目的所选组中的一个映射条目。然而,当第一子集的映射条目的所选组中的所有映射条目都不可用时,则可以将所接收的第一标识符分配给映射条目的第二子集中的一个映射条目。这倾向于更有效地使用映射条目。
在一些示例中,第一标识符的第一组可以包括J个第一标识符的整个集合。在该实例中,对于任意所接收的第一标识符,分配电路可以首先检查用于该第一标识符的映射条目的所选组中的任意映射条目是否可用,并且如果可用,则将第一标识符分配给映射条目的所选组中的可用条目中的一个条目,但是如果条目的所选组中的所有条目都不可用,则可以将所接收的第一标识符分配给映射条目的第二子集中的一个映射条目(如果可用的话)。
然而,对于其他实现方式,第一标识符的第一组可以包括少于J个第一标识符。在该实例中,还可以存在第一标识符的剩余组。当所接收的第一标识符是第一标识符的剩余组中的一个第一标识符时,分配电路可以将所接收的第一标识符分配给映射条目的第二子集中的一个映射条目,而不管第一子集中的任意映射条目是否是可用的。例如,如果第一和第二标识符的相对数J和K对于生成良好的散列函数不友好,则这可能是有用的,在该实例中,可以优选地应用散列函数以将映射条目的第一子集选择为少于J个第一标识符,而将剩余的第一标识符直接分配给映射条目的第二子集而不经受散列。例如,如果数字J和K中的一个或两个不是2的精确幂,则该方法可能是有用的。
无论上面讨论的分配方案(相比较第二子集而优先分配给映射条目的第一子集的分配方案)是应用于J个第一标识符的整个集合还是应用于少于J个第一标识符的简化组,在所接收的第一标识符是第一组标识符中的一个、并且第一子集的映射条目的所选组中的所有映射条目都不可用、并且映射条目的第二子集中的所有映射条目都不可用的实例中,分配电路可以触发上游组件的停止。在这种情况下,不可能将接收的第一标识符分配给任意映射条目。类似地,对于第一标识符的剩余组,如果映射条目的第二子集中的所有映射条目都不可用,则可以停止上游组件。当上游组件停止时,可以防止上游组件进行需要将第一标识符映射到第二标识符的进一步请求。即使当上游组件停止时,它仍然能够执行其他任务(例如,不相关的计算),这些任务不需要向下游组件发出需要将第一标识符映射到第二标识符的请求。
存储在每个映射条目中的映射信息对于映射条目的第二子集与第一子集相比可以是不同的。对于第二子集的映射条目,映射条目可以指定被映射到相关联的第二标识符的第一标识符的整个值。
相反,对于第一子集的映射条目,映射信息可以指定具有与被映射到相关联的第二标识符的第一标识符相比更少的位的标签值。该标签值可以用比第一标识符更少的位来表示,因为第一子集的给定映射条目的标签值仅需要提供用于将被映射到相关联的第二标识符的第一标识符与允许由分配电路分配给第一子集的给定映射条目的其他第一标识符区分开、并且不需要将该第一标识符与所有其他第一标识符区分开的信息。通过提供缩小尺寸标签值作为第一子集处的每个映射条目的映射信息,这减少了映射电路的电路面积开销。
在一些示例中,允许向其分配给定第一标识符的第一子集的映射条目的所选组可以包括第一子集的基于给定第一标识符的散列函数而选择的单个映射条目。因此,在该示例中,每个第一标识符仅被允许分配给第一子集的映射条目中的单个映射条目,或者分配给第二子集的任意条目。例如,用于标识与给定第一标识符相对应的单个映射条目的散列函数可以包括简单地从给定第一标识符中提取位的子集(例如,给定第一标识符的位的最低有效部分),或者可以是散列函数,例如向给定第一标识符添加常数或从给定第一标识符中减去常数,或者使用异或(XOR)运算将给定第一标识符与常数组合。通常,散列函数可以是可反向散列函数,对于该可逆散列函数,应用于第二标识符的对应逆散列函数可以与存储在给定映射条目中的映射信息一起使得能够重构相应的第一标识符。
在其他示例中,第一子集的映射条目的所选组可以包括第一子集的两个或更多个映射条目。这为所选组中的一个映射条目可用提供了更多的机会,以便如果可能的话,可以为所接收的第一标识符分配条目的第一子集中的一个条目。这可以提高性能,因为当第一子集中的映射条目不可用于分配给所接收的第一标识符时,这减少了混淆冲突的数量,并且因此减少了使用第二实体条目中的一个条目所需的频率。这意味着,可以减少实现给定量的性能所需的条目的第二子集中的条目的数量,从而实现较低的电路面积。
在一个示例中,可以基于给定第一标识符的相应散列函数来选择可以向其分配给定第一标识符的两个或更多个映射条目中的每一个。因此,可以将多个不同的散列函数应用于相同的所接收的第一标识符,以标识所选组中的两个或更多个映射条目。
如果多个散列函数被应用于给定第一标识符,并且映射条目的所选组包括两个或更多个映射条目,则除了标签值之外,第一子集的给定映射条目的映射信息还可以指定指示将多个散列函数中的哪个散列函数用于将相关联的第一标识符分配给给定映射条目的信息。这允许反向映射电路以将正确的散列函数应用于所接收的第二标识符,以便重构相应的第一标识符。
可以提供反向映射电路,用于基于存储在第一子集或第二子集的所选映射条目中的映射信息,将从下游组件接收的所接收的第二标识符映射到要提供给上游组件的相应第一标识符,其中所选映射条目是基于所接收的第二标识符而被选择的。
在从下游组件接收到所接收的第二标识符之后,映射电路可以使所选映射条目可用于重新分配到不同的第一标识符。因此,当给定映射条目被分配给特定的第一标识符时,它可能变得不可用,直到从下游组件接收到指定相关联的第二标识符的相应响应为止,并且然后可以使该映射条目可用于重新分配给不同的第一标识符。
映射电路可以用于数据处理系统内的各种情况。
在一个示例中,上游组件可以包括缓存,并且下游组件可以包括内存系统组件。例如,所接收的第一标识符可以包括标识缓存的缓存行的缓存行标识符,并且第二标识符可以包括与要向内存系统组件发出的内存事务相关联的内存事务标识符。
例如,当发出缓存行填充请求以从内存系统获得数据并将数据分配到缓存的特定缓存行中时,这可能是有用的。缓存可以发出行填充请求,该行填充请求指定数据将被存储到的特定缓存行的缓存行标识符。然而,缓存可以包括比允许缓存在给定时间内启动或者内存系统可以处理的内存事务的数量更多的缓存行,并且因此为了避免在内存系统的总线上不必要地携带额外的位,缓存行标识符可以被映射到内存事务标识符的较小的集合中的一个,然后其可以被使用较少的位来表示。当内存系统组件提供对内存事务的响应时,响应于行填充请求而返回数据,内存事务标识符(第二标识符)可以被反向映射回相应的缓存行标识符(第一标识符)。映射电路可用于提供更有效的方案,以在缓存未命中时生成内存事务的事务标识符。
在另一示例中,上游组件可以包括数据处理系统的主设备,并且下游组件可以包括从设备。例如,主设备可以被布置为向两个或更多个相应的从设备发出请求,并且每个从设备可以包括映射电路的相应实例,用于将由主设备指定的所接收的第一标识符映射到由从设备使用的相应第二标识符。
例如,系统可以包括与许多从设备进行通信的主设备,并且虽然主设备可以利用大标识符来标识其许多内部事务,该大标识符可能需要足够大以使得它可以覆盖被发送至所有从设备的事务,但是每个单独的从设备可能不需要同时处理同样多的事务,并且因此可以内部地使用更小的标识符。例如,主设备所使用的第一标识符的总数J可以是每个从设备所使用的标识符的各个数量的总和,或者甚至可以大于从设备标识符的数量的总和,以便有足够的主设备标识符能够使得所有从设备同时保持忙碌状态。因此,每个从设备可以使用上述形式的映射电路来执行由该特定从设备使用的J个主设备标识符(第一标识符)的集合与K个内部从设备标识符(第二标识符)的集合之间的映射。利用这种方法,当向任意从设备发出请求时,主设备可以简单地使用其事务标识符,并且标识符映射对于主设备和从设备二者透明地发生。
在另一示例中,映射电路可被用在图形处理器内。例如,下游组件可以包括图形处理电路的纹理映射电路,其中所接收的第一标识符包括由图形处理电路的上游组件发出的消息标识符,以触发纹理映射电路对相应的图形片段(例如,三角形或四边形)执行纹理映射,并且相应第二标识符可以包括由纹理映射电路用来标识相应图形片段的片段标识符。这可能是有用的,例如,因为纹理映射电路可能只需要提供足够的片段标识符,使得其能够区分当前由纹理映射电路处理的不同图形片段,而图形处理电路的上游组件可能需要对要处理的片段或由相应消息标识符标识的其它条目进行更全局的查看。因此,上述形式的映射电路可以减少用于在消息标识符和图形片段标识符之间进行转换的映射电路的面积开销。
应当理解,这些仅仅是其中可以使用映射电路的潜在情况的一些示例,并且相同的映射电路还可以用于其中数据处理系统的上游组件生成第一标识符的其他情况,该第一标识符将被映射到由下游组件所使用的第二标识符,其中可用的第二标识符的数目小于第一标识符的数目。
图1示意性地示出了数据处理系统2的示例。在该示例中,数据处理系统包括多个主设备,主设备包括中央处理单元(CPU)4、图形处理单元(GPU)6以及一个或多个其他总线主设备8,例如显示控制器、网络接口控制器等。主设备4、6、8通过互连10耦合。主设备发出由多个从设备12、14、16服务的事务。例如,从设备可以包括用于相应内存设备(例如,DRAM(动态随机存取内存)18或非易失性RAM(NVRAM)20)的内存控制器12、14。其它类型的从设备16可以包括例如用于控制对外围设备进行访问的外围控制器或用于根据主设备的请求来执行密码操作的密码单元。
应当理解,图1仅是可能的数据处理系统的一个特定示例,并且其它系统可以具有不同的组件集合。
在数据处理系统的多个点处,可以提供标识符映射电路30,用于将由数据处理系统2的上游组件提供的第一标识符映射到由数据处理系统2的下游组件使用的第二标识符。第一和第二标识符可以用于标识在上游组件和下游组件之间传递的一些相关联的信息(例如,内存地址、数据或其它信息)。在标识符被重新映射的同时,相关联的信息可以不改变地通过映射电路30(或者可以绕过映射电路30)。
例如,CPU 4可以具有缓存32和标识符映射电路30-1,该缓存32用于缓存来自内存系统18的数据,该标识符映射电路30-1可以被提供为用于将缓存行标识符映射到相应的内存事务标识符,该缓存行标识符被用于由缓存32发出的行填充请求以从内存系统请求数据,该内存事务标识符被用在互连10上和内存系统组件12、14、16内以标识相应的读取事务。缓存可以具有比内存系统中一次可以支持的内存事务的数量更多的缓存行,并且因此标识符映射电路30-1可以将更大的缓存行标识符的集合映射到更小的事务标识符的集合。类似地,GPU 6也可具有缓存32和相应的标识符映射电路30-1,该标识符映射电路30-1用于将缓存行标识符映射到事务标识符,反之亦然。因此,对于映射电路30-1,上游组件可以是缓存32,并且下游组件可以是内存系统组件10、12、14、18或20。对于映射电路30-1,来自上游缓存的行填充请求可以指定内存地址,该内存地址不变地通过映射电路30-1,而缓存行标识符由标识符映射电路30-1映射到事务标识符。当从内存接收到数据响应时,数据不改变地通过映射电路30-1,而事务标识符被映射回缓存行标识符。
可以提供标识符映射电路的系统的另一点可以在GPU 6中,其中图形处理流水线34可以请求纹理映射器36对某些图形片段(例如,四边形或三角形)执行纹理映射操作以在该片段的边界内提供经渲染的纹理图案。图形处理流水线34可以使用消息标识符来跟踪正被渲染的图像的不同部分,并且可以向纹理映射电路36发出消息,该消息指定用于所需的特定图形操作的消息标识符。然而,纹理映射器一次仅可支持某一数目的纹理映射操作,并且因此为了减小区分每个纹理映射操作的标识符的大小,与图形处理流水线34中可用的消息标识符的集合相比,纹理映射器36可使用较小的四边形标识符的集合。因此,可以提供标识符映射电路30-2以将消息标识符映射到片段标识符,反之亦然。对于标识符映射电路30-2,上游组件因此可以是图形处理流水线34,并且下游组件可以是纹理映射器36。
可以执行标识符映射的另一点可以在相应的从设备12、14、16内,每个从设备可以被提供有标识符映射电路30-3,标识符映射电路30-3用于将由给定主设备4、6、8发出的主事务标识符映射到由该特定从设备12、14或16使用的较小从事务标识符。例如,CPU 4可以生成相对大的事务标识符,其需要将CPU 4在给定时间发出的所有事务彼此区分,而不管哪个从设备处理这些事务。然而,单个从设备可能仅能够同时处理较少的事务,并且因此不需要长的标识符来区分其事务。因此,在单个从设备处的标识符映射电路30-3可以将较大的主事务标识符的集合映射到较小的从设备事务标识符的集合,以减少需要沿着用于与下游组件传送事务的总线而携带的位的数目。因此,利用该示例,用于标识符映射电路30-3的上游组件可以为主设备4、6、8中的一个,而下游组件可以为从设备12、14、16或下游内存系统组件(例如,内存单元18或20)中的一个。
应当理解,数据处理系统2的给定实例不需要具有图1所示的映射电路30-1、30-2、30-3的所有不同示例。一些系统可以仅具有这些类型的映射电路中的一个类型,或者可以具有两个或更多个类型。而且,应当理解,映射电路30的这些示例仅是其中将一种类型的标识符映射到另一类型的标识符可能有用的一些情形,并且类似的映射电路也可用于其它标识符映射情形。
下面将参考图4更详细地描述映射电路30。然而,在图2和图3中示出了实现映射电路的前两种可选方式。应当理解,附图示出了标识符的映射,但是没有示出与标识符相关联的相关信息(例如,内存地址或数据),该相关信息在上游和下游组件之间传输,并且不管标识符的重新映射如何,该相关信息都不改变地通过。
如图2所示,实现映射电路的一种方式可以是提供K个映射条目40,其中K是下游组件所使用的第二标识符的数量,并且K小于上游组件可用的第一标识符的数量(J)。在图2至图4的示例中,为了便于解释,假设该映射电路用在情形30-1中,其中缓存行标识符(行idx)是从作为上游组件的缓存32接收的第一标识符,并且事务标识符(AXI id)被用作要提供给作为下游组件的内存系统的第二标识符。应当理解,相同的映射电路可以用在图1所示的任意其它场景30-2或30-3中。
在图2的示例中,每个映射条目40与内存事务标识符(第二标识符)中的相应一个相关联,并且存储映射信息,该映射信息指定被映射到相关联的第二标识符的缓存行ID(第一标识符)。此外,每个映射条目具有在空闲位映射(bitmap)44中指定的相应可用位42,其中可用位42指示相应映射条目40是否是不可用的(因为其当前正被用于将行ID映射到已经被发布到下游内存组件但尚未接收到其响应的请求的事务ID),或者可用于重新分配到不同的第一标识符。
利用图2中所示的方法,每当在缓存32中存在缓存未命中时,发出指定缓存行标识符的行填充请求,并且映射电路30-1检查可用位映射44,并选择映射条目40中的一个,对于所选映射条目,相应的可用位42指示该映射条目是可用的。对于图2中所示的方案,使用全关联映射,并且因此可以为每个特定缓存行标识符选择任意可用的映射条目40。如果所有映射条目40都已经在使用中,则不存在可用的事务ID,并且因此新的请求被停止,这将使得上游缓存32的操作停止(并且因此可能减慢与该缓存相关联的CPU 4或GPU 6)。然而,这种停止可能不会经常发生,因为为了使得上游组件停止,这将意味着必须取得所有映射条目40,这可能不会经常发生。
对于使用中的每个事务ID(第二标识符),相应的映射条目存储被映射到该事务标识符的缓存行标识符(第一标识符),使得映射电路知道当从内存系统返回所请求的数据时将其存储在缓存中的何处。因此,每个映射条目40将为每个事务ID存储一个缓存行ID。由于完整关联分配策略,必须将完整缓存行ID存储在每个映射条目40中,这意味着可以将任意缓存行ID分配给任意映射条目40。
该方法可能对性能有益,因为只要存在空闲映射条目,则可以将缓存行填充请求转发到下游内存系统组件,因为可以使用任意可用条目。此外,当从内存系统返回响应时,则可以基于所接收的事务标识符来选择相应的映射条目40,并且然后被存储为相应的映射条目40中的映射信息的缓存行ID被用于标识正确的缓存行以分配返回的数据。然而,这种方法在面积上是昂贵的,因为对于每个映射条目40,需要存储完整的缓存行标识符。
图3示出了第二种可选方法,其可以在面积和功耗方面更有效。对于该方法,当接收到指定缓存行标识符的行填充请求时,散列函数50被用于生成一个特定映射条目40的索引,并且映射电路使用空闲位映射44来检查由缓存行ID的散列50标识的所选条目是否可用。如果所选映射条目40可用,则该条目被分配有所接收的缓存行标识符,并且指定与所选映射条目40相关联的关联事务标识符的请求被转发到下游。具有比完整缓存行标识符更少位的标签值作为映射信息被存储在所选映射条目40中,这提供了一些位以在散列函数混淆到同一映射条目40的所有缓存行标识符之间进行区分。例如,如果每个映射条目40可以由两个不同的缓存行标识符访问,则存储在映射条目40中的标签可以包括一位。如果存在多于两个可以争用相同映射条目的缓存行,则可能需要存储多于一位的标签信息。由于标签比整体缓存行标识符短得多,因此该方案在电路面积和功耗方面要便宜得多。然而,该方案在性能方面可能是不切实际的,因为即使大多数映射条目40是可用的,如果对于当前所接收的行标识符,基于散列50标识的所选映射条目40已经在使用中,这也可能会使请求停止,即使只有少量事务标识符在使用中。这可能对性能有害。
图4示出了图1中所示的映射电路30的示例。再次为了简明起见,将参考示例30-1来描述映射电路30,其中第一标识符是缓存行标识符,并且第二标识符是事务标识符,但是相同的电路可以被用于任意其他映射方案30-2或30-3。
映射电路包括分配电路70,分配电路70控制将第一标识符分配到映射条目40和反向映射电路72中的特定一个,用于控制将从下游组件接收的事务标识符反向映射回由上游组件所使用的缓存行标识符。
在该示例中,映射条目40被划分为第一子集60,对于该第一子集60,每个缓存行标识符仅被允许分配给第一子集60的映射条目40的特定组,并且不允许将其分配给除所选组之外的第一子集的映射条目;以及第二子集62,对于该第二子集62,任意缓存行标识符都可以自由分配到第二子集62的任意映射条目40中。对于第一子集60中的映射条目,缩小尺寸的行标签被存储为类似于图3的示例的映射信息,而对于第二子集62,每个映射条目40指定类似于图2的示例的完整缓存行标识符为映射信息。例如,完整关联分配策略被用于第二子集62,但是直接映射、散列关联或集合关联策略被用于第一子集60。利用散列关联策略,可以将多个不同的散列函数应用于所接收的缓存行标识符,其中每个散列的结果标识可以向其分配该缓存行标识符的第一子集的条目的集合中的一个条目。相反,利用集合关联策略,单个散列函数被用于将所接收的缓存行标识符映射到第一子集的条目的整个组的标识符,其中的任意一个条目均可以被使用。例如,在集合关联策略中,散列值0可以映射到条目0、1、2和3;散列值1可以映射到条目4、5、6和7等。
提供具有多个位42的可用位映射,每个位指定相应的映射条目40是可用的还是不可用的。在一些示例中,如果可用位42是1,则这可以指示映射条目40是不可用的,并且如果可用位42是0,则这可以指示映射条目是可用的,而其他方法可以使用0和1与可用/不可用状态之间的相反映射。
因此,利用这种方法,当从上游组件(例如,缓存32)接收到请求时,分配电路70首先尝试将缓存行标识符分配给通过将散列函数74应用于所接收的缓存行标识符而标识的条目60的第一子集中的一个条目。例如,散列函数可以简单地选择缓存行标识符的位的子集,或者可以应用更复杂的变换,例如向缓存行标识符的所选位的集合添加常数或者从缓存行标识符的所选位的集合减去常数,或者对所选位与常数进行异或。如果空闲位映射44指示由散列74标识的所选映射条目40是可用的,则该条目被分配有所接收的第一行标识符,并且与该缓存行标识符相关联的行标签作为映射信息被存储在映射条目40中,并且指定与所选条目相关联的特定事务标识符的请求被向下游转发。
另一方面,如果使用散列74选择的第一子集60的映射条目是不可用的,则在第二子集62中存在可用映射条目的情况下,便将所接收的缓存行标识符分配给条目的第二子集中的一个条目,并且再次将与所分配的条目相关联的第二标识符(事务标识符)向下游转发到下游组件。因此,条目的第二子集充当溢出集合,用于处理在第一子集60中的所接收的缓存行标识符和先前分配的缓存行标识符之间存在混淆冲突的情况。这有助于提高性能,而无需产生将完整行标识符指定为用于所有映射条目40的映射信息的全部成本。
第一子集60和第二子集62之间的划分可以是静态的。因此,对于每个特定的事务标识符,预先确定其对应于第一子集60还是第二子集62。这意味着,当从标识特定事务标识符(第二标识符)的下游组件接收到响应时,反向映射电路72可以基于所接收的事务标识符简单地索引到映射条目40的相应一个条目(其可以在第一子集60或第二子集62)中。如果所选映射条目40在第二子集62中,则从在该映射条目中指定的映射信息中读取缓存行标识符,并且将其返回给上游组件。如果所选条目在第一子集60中,则反向映射电路72对存储在所访问的映射条目40中的映射信息(行标签)以及从下游接收的第二标识符的至少部分应用逆散列运算76,以重构要向上游提供的第一标识符(缓存行标识符)。如果集合关联策略被用于第一子集60,则逆散列被应用于第二标识符的子部分,而如果散列关联策略被用于第一子集60,则逆散列可被应用于整个第二标识符。
下表示出了可以使用的潜在散列函数74和逆散列函数76的示例(在这些示例中,J=256并且K=16):
显然,这些仅仅是潜在散列和逆散列函数的一些可能示例。
当从下游站点接收到响应时,反向映射电路72触发空闲位映射44以清除对应于映射条目40的位42,该映射条目是基于所接收的事务ID而选择的,以便使得相应的映射条目40可用于在后续周期中分配给另一缓存行标识符。如图4所示,准备信号80还被提供回上游组件,指示映射电路是否准备好接受另一请求。准备信号可以被形成为空闲信号82的逻辑OR组合,该空闲信号82指示在映射条目的第一子集60中的条目的所选组中是否存在至少一个空闲条目(基于最近接收的第一标识符的散列来标识所选组),以及用于条目的第二子集62的所有可用位42的OR减小。因此,如果没有映射条目40是可用的,则清除准备信号80,并且可以接受最近接收的请求的上游组件将被停止,直到条目变为可用于重新分配为止。
因此,利用这种方法,条目的溢出集合(第二子集)62确保了在实践中可以并行使用大多数第二标识符,因为在需要停止之前需要与第二子集62中存在的映射条目40一样多的混淆冲突。这意味着该方案提供与图2中所示的完整动态分配一样高的性能,但是具有低得多的面积,因为对于许多映射条目40,仅需要存储小的行标签而不是完整缓存行标识符。作为一个示例,如果缓存32具有512个缓存行,并且这些缓存行需要被映射到256个事务标识符中的一个(即,J等于512,并且K等于256),则利用图2中所示的方法,对于256个映射条目中的每一个将需要10位的存储(9个索引位用于指定缓存行标识符,以及每个映射条目的1个可用位42)。因此,使用J等于512且K等于256的图2中所示的方法将需要映射电路中的总共2560位的存储。相反,使用图4的方法的示例可以将512个缓存行标识符映射到272个事务标识符(第一子集中的256个条目和第二子集62中的16个条目),其中仅有672位的存储,因为第一子集中的256个条目中的每一个仅需指定1位标签和针对可用位42的1位,而对于第二子集,这仍然将需要如图2的映射中的每个条目10位的存储,总共给出672位。因此,该方法可以大大减少用于映射给定数量的第一标识符所需的存储量。该方法的益处随着第二标识符的数量的增加而增加。
图4描述了该映射方案的基本实现方式,但是可以提供一些其他变型。例如,以上描述描述了将单个散列函数74应用于缓存行标识符以选择第一子集60的一个特定映射条目40。然而,在如图4中的虚线所示的其他示例中,分配电路70可以将两个或更多个不同的散列函数应用于所接收的缓存行标识符以选择第一子集60的映射条目的组,并且在这些条目的组中的任意一个条目可用的情况下,则可以将缓存行标识符分配给所选组的可用条目。对于不同的缓存行标识符,散列74可以标识第一子集60的条目的不同组。因此,通过检查针对每个所接收的缓存行标识符的多个条目的可用性并且从该组中挑选可用条目,这大大减少了冲突,并且因此允许使用较小的溢出缓冲器(即,第二子集62中的较少条目以提供给定的性能水平)。利用该方法,除了行标签之外,在第一子集60的给定映射条目40中指定的映射信息还可以标识哪个可选散列函数74被用于将所接收的缓存行标识符映射到该映射条目上,因此,在从下游接收响应时,可以选择如图4中虚线所示的多个逆散列函数76中的相应一个。例如,在提供了4个散列函数的情况下,则行标签可以包括另外的两个位以指示哪个散列函数被使用。可选散列函数可以使用不同的散列运算,如上表所示,或者可以使用相同的散列运算,但是使用不同的散列常数来应用或应用于标识符的位的不同组。
在另一变型中,不是检查针对所有所接收的缓存行标识符的条目的第一子集60,而是可以总是将一些特定缓存行标识符映射到条目的第二子集62上。在事务标识符的数量使得它对于生成良好的散列函数不友好的情况下,这可能特别有用。例如,在存在被分配给缓存32使用的512个缓存行(J=512)和254个事务标识符(K=254)的情况下,则将512个缓存行散列到256个事务标识符的散列函数(因此每个行标签仅需要一个位)可能比直接映射到254个事务标识符的散列函数更友好。在使用30个条目的相对较小的溢出集合(第二子集)的情况下,这在第一子集中留下224个映射条目,其可以对应于事务标识符0到223。在该实例中,仍然可以使用散列函数将512个缓存行映射到散列值0到255,但是映射到散列值224到255的任意缓存行可以被直接映射到溢出缓冲器中的条目的第二子集62,而不是试图在映射条目的第一子集60中查找可用性。
因此,在一些实例中,对于缓存行标识符(例如,在上面的示例中其散列值落在0至223范围内的缓存行)的第一组,如上所述分配电路70可以检查第一子集60中的条目40的所选组的可用性,并且在这些条目都不可用的情况下,则可以使用第二子集62中的可用条目,但是对于第一标识符的剩余组,可以省略该对第一子集60中的可用性的检查,而是改为标识符可以简单地被分配给第二子集62中的任意可用条目40。
图5示出了说明使用映射电路30将第一标识符映射到第二标识符的示例的流程图。在步骤100处,从数据处理系统的上游组件接收指定特定第一标识符的请求。在步骤102处,分配电路70检查所接收的第一标识符是否在第一标识符的第一组中,其可以被分配给映射条目的第一子集60或第二子集62;或者是否在第一标识符的第二组(剩余组)中,其被直接分配给第二子集62。注意,在一些实施例中,所接收的第一标识符是在第一组中还是在第二组中的确定可以在步骤104处应用散列函数(基于散列值)之后、而不是如图5的示例中的步骤104之前确定。
如果所接收的第一标识符在第一组中,则在步骤104处,分配电路70基于应用于所接收的第一标识符的一个或多个散列函数74来确定第一子集60的一个或多个映射条目的所选组。在步骤106处,分配电路70基于可用位映射44来确定映射条目的所选组中的任意条目当前是否可用。如果可用,则在步骤108处,所接收的第一标识符被分配给所选组中的可用条目。如果所选组中的多个映射条目40是可用的,则分配电路70可以简单地选择第一个可用条目(在实现更复杂的分配策略(例如循环或最近最少使用)时,不需要产生额外的电路面积开销)。分配电路70将映射信息存储在第一子集的所分配的映射条目中。映射信息包括缩小的尺寸标签,其将所接收的第一标识符与将在同一映射条目40上混淆的其他第一标识符区分开。如果在步骤104处应用了多个散列函数,则映射信息还可以指定使用哪个特定散列将所接收的第一标识符映射到所分配的映射条目40的索引。在步骤110处,分配电路70更新可用位映射44以将为所接收的第一标识符分配的条目标记为不可用,并且在步骤112处,将指定与所分配的映射条目40相关联的第二标识符的请求转发到数据处理系统的下游组件。例如,在使用第一映射条目40的情况下,则可以将其映射到第二标识符值0,下一映射条目可以与第二标识符值1相关联,依此类推。
在步骤106处分配电路70确定第一子集60中的映射条目的所选组中所有条目都不可用的情况下,则在步骤114处,分配电路70再次基于可用位映射44来确定映射条目的第二子集62中的任意条目是否可用。在条目的第二子集中的一个条目可用的情况下,则在步骤116处,分配电路70将所接收的第一标识符分配给第二子集62中的任意可用条目42,并且将映射信息存储到第二子集中的所分配的条目中,其中映射信息指定从上游组件接收的完整第一标识符。该方法然后进行到步骤110,以与随后步骤108相同的方式将所分配的条目标记为不可用,并且再次向下游转发指定与在步骤116选择的所分配的映射条目相关联的第二标识符的请求。
在步骤114处确定映射条目的第二子集的所有条目都不可用的情况下,则该方法前进到步骤118,其中准备信号被清除以使上游组件停止,使得上游组件将延迟发出进一步的请求直到映射条目变得可用。
在步骤102处确定所接收的第一标识符在第一标识符的第二组中的情况下,则该方法前进到步骤114以考虑第二子集62中的映射条目40的可用性(跳过步骤106)。在步骤114之后,后续步骤与第一标识符已经在第一标识符的第一组中但在步骤106处映射条目的所选组中的所有条目都不可用的情况相同。
图6是示出执行从接收自下游组件的第二标识符到要写入上游组件的第一标识符的反向映射的方法的流程图。在步骤120处,反向映射电路72从下游组件接收第二标识符。在步骤122处,反向映射电路72从第一子集60或第二子集62中选择与所接收的第二标识符相关联的一个特定映射条目40,并从该所选映射条目中读取映射信息。在步骤124处,确定所选条目是在第一子集60中还是在第二子集62中。在所选映射条目在第一子集中的情况下,则在步骤126处,反向映射电路72基于所接收的第二标识符和存储在所选映射条目中的映射信息(例如,行标签,以及可选的散列函数标识符)来重构相应的第一标识符。例如,可以以上表中所示的方式来重构第一标识符。在所选映射条目在第二子集中的情况下,则在步骤128处,简单地从第二子集62中的所选映射条目的映射信息中读取相应的第一标识符。
无论映射条目是在第一或第二子集中,在步骤130处,向数据处理系统的上游组件提供指定在步骤126、128中的一个处获得的第一标识符的响应。在步骤132处,反向映射电路72触发可用位映射44以清除在步骤122处选择的针对映射条目的可用指示,以将该条目标记为可用于重新分配给不同的第一标识符。
在本申请中,词语“被配置为......”用于表示装置的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,该装置可以具有提供所定义的操作的专用硬件、或者可以被编程以执行功能的处理器或其他处理设备。“被配置为”并不意味着需要以任意方式改变装置元件以便提供所定义的操作。
尽管本文已经参考附图详细描述了本发明的示例性实施例,但是应该理解,本发明不限于那些精确的实施例,并且在不脱离由所附权利要求限定的本发明的范围和精神的情况下,本领域技术人员可以在其中实现各种改变和修改。
Claims (20)
1.一种数据处理系统,包括:
映射电路,用于将从所述数据处理系统的上游组件接收的所接收的第一标识符映射到要提供给所述数据处理系统的下游组件的对应第二标识符,其中,所述所接收的第一标识符是J个第一标识符的集合中的一个第一标识符,并且所述对应第二标识符是K个第二标识符的集合中的一个第二标识符,其中,K<J;
所述映射电路包括:
K个映射条目,每个映射条目与所述K个第二标识符的集合中的相应第二标识符相关联,并且每个映射条目被配置为存储映射信息,所述映射信息用于标识哪个第一标识符被映射到相关联的第二标识符;以及
分配电路,用于控制将第一标识符分配到所述映射电路的相应映射条目;其中:
对于与所述K个第二标识符的第一子集相关联的映射条目的第一子集,所述分配电路被配置为防止将给定第一标识符分配给所述第一子集中的除了映射条目的所选组之外的映射条目,所述映射条目的所选组包括所述第一子集中的基于所述给定第一标识符而选择的一个或多个映射条目;并且
对于与所述K个第二标识符的第二子集相关联的映射条目的第二子集,所述分配电路被配置为允许将所述给定第一标识符分配给所述第二子集中的任意映射条目。
2.根据权利要求1所述的数据处理系统,其中,当所述所接收的第一标识符是第一标识符的第一组中的一个第一标识符时,所述分配电路被配置为:
当所述第一子集的基于所述所接收的第一标识符而选择的映射条目的所选组中的一个映射条目可用时,将所述所接收的第一标识符分配给所述映射条目的所选组中的一个映射条目;并且
当所述第一子集的所述映射条目的所选组中的所有映射条目都不可用时,将所述所接收的第一标识符分配给所述映射条目的第二子集中的一个映射条目。
3.根据权利要求2所述的数据处理系统,其中,所述第一标识符的第一组包括所有J个第一标识符。
4.根据权利要求2所述的数据处理系统,其中,所述第一标识符的第一组包括少于J个第一标识符;并且
当所述所接收的第一标识符是第一标识符的剩余组中的一个第一标识符时,所述分配电路被配置为将所述所接收的第一标识符分配给所述映射条目的第二子集中的一个映射条目。
5.根据权利要求2至4中任一项所述的数据处理系统,其中,当所述所接收的第一标识符是所述标识符的第一组中的一个标识符、所述映射条目的所选组中的所有映射条目都不可用、并且所述映射条目的第二子集中的所有映射条目都不可用时,所述分配电路被配置为触发所述上游组件的停止。
6.根据前述权利要求中任一项所述的数据处理系统,其中,对于所述第二子集的映射条目,所述映射信息指定被映射到所述相关联的第二标识符的所述第一标识符的整个值。
7.根据前述权利要求中任一项所述的数据处理系统,其中,对于所述第一子集的映射条目,所述映射信息指定标签值,所述标签值具有与被映射到所述相关联的第二标识符的所述第一标识符相比更少的位;
所述第一子集的给定映射条目的所述标签值提供如下信息:所述信息用于将被映射到所述相关联的第二标识符的所述第一标识符与允许由所述分配电路分配给所述第一子集的给定映射条目的其他第一标识符区分开。
8.根据前述权利要求中任一项所述的数据处理系统,其中,所述第一子集的所述映射条目的所选组包括所述第一子集中的基于所述给定第一标识符的散列函数而选择的单个映射条目。
9.根据权利要求1至7中任一项所述的数据处理系统,其中,所述第一子集的所述映射条目的所选组包括所述第一子集的两个或更多个映射条目。
10.根据权利要求9所述的数据处理系统,其中,所述两个或更多个映射条目中的每个映射条目是基于所述给定第一标识符的相应散列函数来选择的。
11.根据权利要求10所述的数据处理系统,其中,所述第一子集的给定映射条目的所述映射信息指定如下信息:所述信息指示多个散列函数中的哪个散列函数被用于将所述相关联的第一标识符分配给所述给定映射条目。
12.根据前述权利要求中任一项所述的数据处理系统,包括:反向映射电路,用于基于存储在所述第一子集或所述第二子集的所选映射条目中的所述映射信息,将从所述下游组件接收的所接收的第二标识符映射到要提供给所述上游组件的对应第一标识符,所述所选映射条目是基于所述所接收的第二标识符而选择的。
13.根据权利要求12所述的数据处理系统,其中,在从所述下游组件接收到所述所接收的第二标识符之后,所述映射电路被配置为使所述所选映射条目可用于重新分配到不同的第一标识符。
14.根据前述权利要求中任一项所述的数据处理系统,其中,所述上游组件包括缓存,并且所述下游组件包括内存系统组件。
15.根据权利要求14所述的数据处理系统,其中,所述所接收的第一标识符包括缓存行标识符,所述缓存行标识符标识所述缓存的缓存行,并且所述对应第二标识符包括内存事务标识符,所述内存事务标识符与要向所述内存系统组件发出的内存事务相关联。
16.根据权利要求1至13中任一项所述的数据处理系统,其中,所述上游组件包括主设备,并且所述下游组件包括从设备。
17.根据权利要求16所述的数据处理系统,其中,所述主设备被配置为向多个相应从设备发出请求,
每个从设备包括所述映射电路的相应实例,用于将由所述主设备指定的所述所接收的第一标识符映射到由所述从设备使用的所述对应第二标识符。
18.根据权利要求1至13中任一项所述的数据处理系统,其中,所述下游组件包括图形处理电路的纹理映射电路,所述所接收的第一标识符包括由所述图形处理电路的上游组件发出的、用于触发所述纹理映射电路对对应图形片段执行纹理映射的消息标识符,并且所述对应第二标识符包括由所述纹理映射电路用来标识所述对应图形片段的片段标识符。
19.一种用于数据处理系统的映射电路,用于将从所述数据处理系统的上游组件接收的所接收的第一标识符映射到要提供给所述数据处理系统的下游组件的对应第二标识符,其中,所述所接收的第一标识符是J个第一标识符的集合中的一个第一标识符,并且所述对应第二标识符是K个第二标识符的集合中的一个第二标识符,其中,K<J;所述映射电路包括:
K个映射条目,每个映射条目与所述K个第二标识符的集合中的相应第二标识符相关联,并且每个映射条目被配置为存储映射信息,所述映射信息用于标识哪个第一标识符被映射到相关联的第二标识符;以及
分配电路,用于控制将所述第一标识符分配到所述映射电路的相应映射条目;其中:
对于与所述K个第二标识符的第一子集相关联的映射条目的第一子集,所述分配电路被配置为防止将给定第一标识符分配给所述第一子集中的除了所选组之外的映射条目,所述所选组包括所述第一子集中的基于所述给定第一标识符而选择的一个或多个映射条目;并且
对于与所述K个第二标识符的第二子集相关联的映射条目的第二子集,所述分配电路被配置为允许将所述给定第一标识符分配给所述第二子集中的任意映射条目。
20.一种方法,用于将从数据处理系统的上游组件接收的所接收的第一标识符映射到要提供给所述数据处理系统的下游组件的对应第二标识符,其中,所述所接收的第一标识符是J个第一标识符的集合中的一个第一标识符,并且所述对应第二标识符是K个第二标识符的集合中的一个第二标识符,其中,K<J;所述方法包括:
响应于所述所接收的第一标识符,将所述所接收的第一标识符分配给K个映射条目中的一个映射条目,每个映射条目与所述K个第二标识符的集合中的相应第二标识符相关联,每个映射条目被配置为存储映射信息,所述映射信息用于标识哪个第一标识符被映射到相关联的第二标识符;其中:
控制将第一标识符分配到相应映射条目,使得:
对于与所述K个第二标识符的第一子集相关联的映射条目的第一子集,防止将给定第一标识符分配给所述第一子集中的除了所选组之外的映射条目,所述所选组包括所述第一子集中的基于所述给定第一标识符而选择的一个或多个映射条目;并且
对于与所述K个第二标识符的第二子集相关联的映射条目的第二子集,允许将所述给定第一标识符分配给所述第二子集中的任意映射条目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/155,030 | 2018-10-09 | ||
US16/155,030 US10942904B2 (en) | 2018-10-09 | 2018-10-09 | Mapping first identifier to second identifier |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111026680A true CN111026680A (zh) | 2020-04-17 |
Family
ID=70052181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910916366.6A Pending CN111026680A (zh) | 2018-10-09 | 2019-09-26 | 将第一标识符映射到第二标识符 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10942904B2 (zh) |
CN (1) | CN111026680A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112307035A (zh) * | 2020-11-26 | 2021-02-02 | 深圳云天励飞技术股份有限公司 | 一种特征值id的管理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1659526A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 具有基于线程标识符的缓存清除的多线程缓存方法和装置 |
US20080301256A1 (en) * | 2007-05-30 | 2008-12-04 | Mcwilliams Thomas M | System including a fine-grained memory and a less-fine-grained memory |
US20130275686A1 (en) * | 2012-04-17 | 2013-10-17 | Samsung Electronics Co., Ltd. | Multiprocessor system and method for managing cache memory thereof |
US9379980B1 (en) * | 2011-09-27 | 2016-06-28 | Altera Corporation | Methods and systems for AXI ID compression |
CN108463811A (zh) * | 2016-01-20 | 2018-08-28 | Arm有限公司 | 记录组指示符 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2005223867A1 (en) * | 2004-03-19 | 2005-09-29 | Stayton D. Addison | Methods and systems for transaction compliance monitoring |
US7481368B2 (en) * | 2004-12-14 | 2009-01-27 | Siemens Corporate Research, Inc. | Systems, devices, and methods for managing RFID data |
US7567565B2 (en) * | 2005-02-01 | 2009-07-28 | Time Warner Cable Inc. | Method and apparatus for network bandwidth conservation |
US8688507B2 (en) * | 2005-03-21 | 2014-04-01 | Oversight Technologies, Inc. | Methods and systems for monitoring transaction entity versions for policy compliance |
US20140068125A1 (en) * | 2012-08-30 | 2014-03-06 | Lsi Corporation | Memory throughput improvement using address interleaving |
WO2016073910A1 (en) * | 2014-11-07 | 2016-05-12 | Arizona Board Of Regents On Behalf Of Arizona State University | Information coding in dendritic structures and tags |
AU2015375497A1 (en) * | 2015-01-09 | 2017-07-13 | Landmark Graphics Corporation | Apparatus and methods of data synchronization |
EP3051736B1 (en) * | 2015-01-30 | 2020-04-29 | Panasonic Intellectual Property Corporation of America | Prioritization in the logical channel prioritization procedure for sidelink logical channels in ProSe direct communications |
GB2539641B (en) * | 2015-06-11 | 2019-04-03 | Advanced Risc Mach Ltd | Coherency between a data processing device and interconnect |
US20180203807A1 (en) * | 2017-01-13 | 2018-07-19 | Arm Limited | Partitioning tlb or cache allocation |
US10394454B2 (en) * | 2017-01-13 | 2019-08-27 | Arm Limited | Partitioning of memory system resources or performance monitoring |
US20180239868A1 (en) * | 2017-02-17 | 2018-08-23 | Agfa Healthcare Nv | Systems and methods for managing large medical image data |
US10255103B2 (en) * | 2017-04-04 | 2019-04-09 | Arm Limited | Transaction handling |
US20190306173A1 (en) * | 2018-04-02 | 2019-10-03 | Ca, Inc. | Alert smart contracts configured to manage and respond to alerts related to code |
-
2018
- 2018-10-09 US US16/155,030 patent/US10942904B2/en active Active
-
2019
- 2019-09-26 CN CN201910916366.6A patent/CN111026680A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1659526A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 具有基于线程标识符的缓存清除的多线程缓存方法和装置 |
US20080301256A1 (en) * | 2007-05-30 | 2008-12-04 | Mcwilliams Thomas M | System including a fine-grained memory and a less-fine-grained memory |
US9379980B1 (en) * | 2011-09-27 | 2016-06-28 | Altera Corporation | Methods and systems for AXI ID compression |
US20130275686A1 (en) * | 2012-04-17 | 2013-10-17 | Samsung Electronics Co., Ltd. | Multiprocessor system and method for managing cache memory thereof |
CN108463811A (zh) * | 2016-01-20 | 2018-08-28 | Arm有限公司 | 记录组指示符 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112307035A (zh) * | 2020-11-26 | 2021-02-02 | 深圳云天励飞技术股份有限公司 | 一种特征值id的管理方法、装置、电子设备及存储介质 |
CN112307035B (zh) * | 2020-11-26 | 2024-01-05 | 深圳云天励飞技术股份有限公司 | 一种特征值id的管理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20200110818A1 (en) | 2020-04-09 |
US10942904B2 (en) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6950107B1 (en) | System and method for reserving and managing memory spaces in a memory resource | |
US6173369B1 (en) | Computer system for processing multiple requests and out of order returns using a request queue | |
US7287101B2 (en) | Direct memory access using memory descriptor list | |
JP4941148B2 (ja) | Gpuにおけるページマッピングのための専用機構 | |
CN107844267B (zh) | 缓冲区分配和存储器管理 | |
KR100958264B1 (ko) | 메모리 제어기, 데이터 반환 방법 및 시스템 | |
US6832303B2 (en) | Method and system for managing an allocation of a portion of a memory | |
US20090204769A1 (en) | Method to Bypass Cache Levels in a Cache Coherent System | |
US10198357B2 (en) | Coherent interconnect for managing snoop operation and data processing apparatus including the same | |
US10079916B2 (en) | Register files for I/O packet compression | |
US6831652B1 (en) | Method and system for storing graphics data | |
CN113760560A (zh) | 一种进程间通信方法以及进程间通信装置 | |
US8595441B1 (en) | Cache operations using transformed indexes | |
US8612691B2 (en) | Assigning memory to on-chip coherence domains | |
US20070198756A1 (en) | Tag allocation method | |
CN117389914B (zh) | 缓存系统、缓存写回方法、片上系统及电子设备 | |
CN111026680A (zh) | 将第一标识符映射到第二标识符 | |
CN106295413B (zh) | 半导体装置 | |
US20100058025A1 (en) | Method, apparatus and software product for distributed address-channel calculator for multi-channel memory | |
EP0611462B1 (en) | Memory unit including a multiple write cache | |
US20240086349A1 (en) | Input/output device operational modes for a system with memory pools | |
US20230017019A1 (en) | Systems, methods, and devices for utilization aware memory allocation | |
US20200293453A1 (en) | Computing system and method using bit counter | |
WO2024054232A1 (en) | Low-latency cache | |
WO1998014877A1 (en) | Virtual addressing for subsystem dma |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |