CN109597768A - 对存储器地址请求进行分类以用于并行存储器访问 - Google Patents

对存储器地址请求进行分类以用于并行存储器访问 Download PDF

Info

Publication number
CN109597768A
CN109597768A CN201811108578.3A CN201811108578A CN109597768A CN 109597768 A CN109597768 A CN 109597768A CN 201811108578 A CN201811108578 A CN 201811108578A CN 109597768 A CN109597768 A CN 109597768A
Authority
CN
China
Prior art keywords
address
binary
input
subset
identified
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.)
Granted
Application number
CN201811108578.3A
Other languages
English (en)
Other versions
CN109597768B (zh
Inventor
卢卡·尤利亚诺
西蒙·尼尔德
托马斯·罗斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fancy Technology Co Ltd
Original Assignee
Fancy Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fancy Technology Co Ltd filed Critical Fancy Technology Co Ltd
Publication of CN109597768A publication Critical patent/CN109597768A/zh
Application granted granted Critical
Publication of CN109597768B publication Critical patent/CN109597768B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及对存储器地址请求进行分类以用于并行存储器访问。一种装置,其被配置为从包含至少一个非唯一存储器地址的N个输入存储器地址的较大集合中识别M个输出存储器地址的集合,该装置包括:比较器块,其被配置为对来自N个输入存储器地址的集合的存储器地址进行比较以生成二进制分类数据集,该二进制分类数据集从输入地址的集合中识别地址的子集;多个组合逻辑单元,每个组合逻辑单元被配置为:接收二进制分类数据集的预先选择的位,并且将其接收的预先选择的位分类为中间二进制串,在该中间二进制串中将位排序为第一组和第二组;以及输出生成逻辑,其被配置为在属于不同的中间二进制串的位之间进行选择,以生成二进制输出。

Description

对存储器地址请求进行分类以用于并行存储器访问
技术领域
本发明涉及在计算机系统内对存储器地址请求进行分类以用于并行存储器访问。
背景技术
计算机处理器系统可以包括用于执行处理操作的一个或多个处理器单元。作为执行指令以执行一个或多个处理操作的一部分,这些处理器单元中的每一个可以请求访问存储器(例如,读取或写入数据)。每个存储器访问请求可以指定标识要访问的存储器区域的存储器地址。在此上下文中,处理器单元例如可以是处理器、处理器核、多核处理器或诸如数字信号处理器(DSP)之类的能够执行指令以执行一个或多个处理操作的某种其他类型的单元。计算机处理器系统例如可以是中央处理器单元(CPU)、图形处理单元(GPU)。
计算机处理器系统通常被布置成可以并行执行多个处理操作。例如,一些处理器单元能够并行执行多个线程。在其他示例中,计算机处理器系统可以包括并行操作的多个处理器单元,每个处理器单元可以执行单个线程或并行地执行多个线程。结果,计算机处理器系统可以生成许多存储器访问请求;在一些系统中,可以在单个时钟周期中生成多个存储器访问请求。在其他情况下,可以在一个或多个时钟周期上生成多个存储器访问请求。
为了减少计算机处理器系统的操作中的等待时间,可以并行地进行多个存储器访问(例如,可以并行访问跨一个或多个存储器块的指定数量的存储器地址)。当访问请求引用不是处理器单元本地的存储器的一个或多个块内的存储器地址时,并行存储器访问会特别方便。例如,如果一个或多个处理器单元被实现为片上系统(SoC)的一部分,则可以由(一个或多个)处理器单元访问的一个或多个存储器块可以位于芯片外,用于例如减小芯片的大小。
可以并行进行的存储器访问的数量可以限制为指定的最大值。该值例如可以受数据带宽的限制。例如,如果(一个或多个)处理器单元形成SoC的一部分,则可以在芯片上和在芯片下传送数据的速率可能受到用于向/从存储器传送数据的存储器总线的数据带宽范围的限制。
在某些情况下,挂起的存储器访问请求的数量可能超过可以并行执行的最大存储器访问数量。此外,一些挂起的存储器访问请求可能不是唯一的,例如,挂起的存储器访问请求可能包含访问同一存储器地址的多个请求。在这些情况下,并行存储器访问请求的集合可能包含对同一存储器地址的多个请求,从而导致低效的存储器访问方案。
发明内容
根据本发明,提供了一种装置,其被配置为从包含至少一个非唯一存储器地址的N个输入存储器地址的较大集合中识别M个输出存储器地址的集合,该装置包括:比较器块,其被配置为对来自N个输入存储器地址的集合的存储器地址进行比较以生成二进制分类数据集,该二进制分类数据集从输入地址的集合中识别地址的子集,其中由二进制分类数据集识别的子集中的每个地址在该子集中是唯一的;多个组合逻辑单元,每个组合逻辑单元被配置为:接收二进制分类数据集的预先选择的位;并且将其接收的预先选择的位分类为中间二进制串,在该中间二进制串中将这些位排序为第一组和第二组,其中第一组标识属于所识别的子集的地址,第二组标识不属于所识别的子集的地址;以及输出生成逻辑,其被配置为在属于不同的中间二进制串的位之间进行选择,以生成对包含所识别的子集中的至少一个地址的输出存储器地址的集合进行标识的二进制输出。
二进制分类数据集可以包括N位,每一位对应于相应的输入存储器地址,每一位的值指示相应的存储器地址是否形成所识别的子集的一部分。
标识所识别的子集中的至少一个地址的二进制输出的(一个或多个)位在输出内可以是无序的。
输入地址的集合中的每个地址可以与指示地址是有效还是无效的有效性标识符相关联。
输入地址的集合中不在所识别的子集中的每个地址可以是以下两者中的至少一者:无效地址;或等于所识别的子集中的一个地址。
输入存储器地址的集合可以包含N个地址,并且比较器块可以被配置为:通过将地址ai与地址aj进行比较来执行对输入地址的比较,其中i=1,…,N-1,并且j=i+1,…,N。
输入存储器地址的集合可以包含N个地址,并且比较器块可以被配置为:通过将地址ai与地址aj进行比较来执行对输入地址的比较,其中i=1,…,N,并且j=i-1,…,1。
比较器块可以被配置为:通过将第一位值与被确定为有效地址且不等于地址ai的每个地址aj相关联、并将第二位值与被确定为无效地址或等于地址ai的每个地址aj相关联来生成二进制分类数据集,比较器块还被配置为响应于确定地址aj等于地址ai而将地址aj标识为无效。
比较器块可以被配置为:通过将第一位值与为有效地址且不等于任何地址aj的每个地址ai相关联、并将第二位值与为无效地址或等于至少一个其他地址aj的每个地址ai相关联来生成二进制分类数据集。
二进制分类数据集中的第一位值可以标识地址的子集,在该子集中每个地址是唯一的。
比较器块还可以被配置为从对输入地址的比较中生成匹配掩码,该匹配掩码针对每个输入地址指示其他输入地址中的哪些与该输入地址匹配。
装置还可以包括地址匹配逻辑,其被配置为使用匹配掩码来标识与所识别的子集中的至少一个地址匹配的每个输入地址,其中所识别的子集由二进制输出标识。
二进制输出是可以M位输出,并且输出生成逻辑可以被配置为在属于不同的中间二进制串的位之间进行选择以生成M位二进制输出,该M位二进制输出标识在所识别的子集中地址的数量大于或等于M时所述子集中的M个地址。
每个组合逻辑单元可以被配置为将其接收的预先选择的位分类为中间二进制串,该中间二进制串包含比由该组合逻辑单元接收的预先选择的位的数量更少的位。
每个组合逻辑单元可以包括:
多个分类单元,每个分类单元被配置为:
接收所接收的预先选择的位的一部分;以及
对所接收的那部分位进行分类,以将标识属于所识别的子集的地址的位组合在一起,以生成初始二进制串;以及
一个或多个合并单元,一个或多个合并单元中的每一个被配置为接收多个初始二进制串并将那些初始二进制串进行合并以将来自每个接收到的初始二进制串的、标识属于所识别的子集的地址的位组合在一起。
输出生成逻辑可以包括多个选择单元,每个选择单元被配置为生成二进制输出的相应位。
每个选择单元可以被配置为在来自相应中间二进制串的一对位之间进行选择以生成二进制输出的位。
每个选择单元可以被配置为仅响应于接收到的一对位均不标识所识别的子集中的地址而输出不标识所识别的子集中的地址的位。
每个选择单元可以与一对组合逻辑单元相关联,并被配置为在来自由这对组合逻辑单元形成的相应中间二进制串的一对位之间进行选择。
每个组合逻辑单元可以被配置为将其接收的预先选择的位分类为M位的中间二进制串。
每个选择单元n可以被配置为在来自第一中间二进制串的位bn和来自第二中间二进制串的位bm之间进行选择,其中n=1,…,M,并且m=M+1-n。
存在一种处理器,其包括根据本文所述示例中的任一者的装置。
该处理器可以是单指令多数据(SIMD)处理器。
根据本公开的第二方面,提供一种从包含至少一个非唯一存储器地址的N个输入存储器地址的较大集合中识别M个输出存储器地址的集合的方法,该方法包括:对来自N个输入存储器地址的集合的存储器地址进行比较以生成二进制分类数据集,该二进制分类数据集从输入地址的集合中识别地址的子集,其中由二进制分类数据集识别的子集中的每个地址在该子集中是唯一的;在多个组合逻辑单元的每一个处:接收二进制分类数据集的预先选择的位,并且将其接收的预先选择的位分类为中间二进制串,在中间二进制串中将位排序为第一组和第二组,其中第一组标识属于所识别的子集的地址,第二组标识不属于所识别的子集的地址;以及在属于不同的中间二进制串的位之间进行选择,以生成对包含所识别的子集中的至少一个地址的输出存储器地址的集合进行标识的二进制输出。
二进制分类数据集可以包括N位,每位对应于相应的输入存储器地址,每位的值指示相应的存储器地址是否形成所识别的子集的一部分。
标识所识别的子集中的至少一个地址的二进制输出的(一个或多个)位在输出内可以是无序的。
输入地址的集合中的每个地址可以与指示地址是有效还是无效的有效性标识符相关联。
输入地址的集合中不在所识别的子集中的每个地址可以是以下两者中的至少一者:无效地址;或等于所识别的子集中的一个地址。
输入存储器地址的集合可以包含N个地址,并且该方法可以包括:通过将地址ai与地址aj进行比较来执行对输入地址的比较,其中i=1,…,N-1,并且j=i+1,…,N。
输入存储器地址的集合可以包含N个地址,并且该方法可以包括:通过将地址ai与地址aj进行比较来执行对输入地址的比较,其中i=1,…,N,并且j=i-1,…,1。
该方法可以包括:通过将第一位值与被确定为有效地址且不等于地址ai的每个地址aj相关联、并将第二位值与被确定为无效地址或等于地址ai的每个地址aj相关联来生成二进制分类数据集,该方法还可以包括响应于确定地址aj等于地址ai而将地址aj标识为无效。
该方法可以包括:通过将第一位值与为有效地址且不等于任何地址aj的每个地址ai相关联、并将第二位值与为无效地址或等于至少一个其他地址aj的每个地址ai相关联来生成二进制分类数据集。
二进制分类数据集中的第一位值可以标识地址的子集,在该子集中每个地址是唯一的。
该方法还可以包括:从对输入地址的比较中生成匹配掩码,该匹配掩码针对每个输入地址指示其他输入地址中的哪些与该输入地址匹配。
该方法还可以包括:使用匹配掩码来标识与所识别的子集中的至少一个地址匹配的每个输入地址,其中所识别的子集由二进制输出标识。
二进制输出是可以M位输出,并且选择步骤可以包括:在属于不同的中间二进制串的位之间进行选择以生成M位二进制输出,该M位二进制输出标识在所识别的子集中地址的数量大于或等于M时所述子集中的M个地址。
该方法可以包括:在多个组合逻辑单元的每一个处,将所接收的预先选择的位分类为中间二进制串,该中间二进制串包含比由该组合逻辑单元接收的预先选择的位的数量更少的位。
该方法可以包括在每个组合逻辑单元处:
在多个分类单元的每一个处:
接收所接收的预先选择的位的一部分;以及
对所接收的那部分位进行分类,以将标识属于所识别的子集的地址的位组合在一起,以生成初始二进制串;以及
在一个或多个合并单元的每一个处:
接收多个初始二进制串并将那些初始二进制串进行合并以将来自每个接收到的初始二进制串的、标识属于所识别的子集的地址的位组合在一起。
选择步骤可以包括:在多个选择单元的每一个处,生成二进制输出的相应位。
该方法可以包括:在每个选择单元处,在来自相应中间二进制串的一对位之间进行选择以生成二进制输出的位。
该方法可以包括:在每个选择单元处,仅响应于接收到的一对位均不标识所识别的子集中的地址而输出不标识所识别的子集中的地址的位。
该方法可以包括:在与一对组合逻辑单元相关联的每个选择单元处,在来自由这对组合逻辑单元形成的相应中间二进制串的一对位之间进行选择。
该方法可以包括:在每个组合逻辑单元处,将其接收的预先选择的位分类为M位的中间二进制串。
该方法可以包括:在每个选择单元n处,在来自第一中间二进制串的位bn和来自第二中间二进制串的位bm之间进行选择,其中n=1,…,M,并且m=M+1-n。
可以提供如本文描述的装置,其体现在集成电路上的硬件中。
可以提供一种方法,其使用集成电路制造系统制造如本文所描述的装置。
可以提供一种集成电路定义数据集,当在集成电路制造系统中处理该集成电路定义数据集时,其将系统配置为制造如本文所述的装置。
可以提供一种非暂态计算机可读存储介质,其上存储有集成电路的计算机可读描述,当在集成电路制造系统中处理该计算机可读描述时,其使得集成电路制造系统制造如本文所述的装置。
可以提供一种集成电路制造系统,其被配置为制造如本文所述的装置。
可以提供一种集成电路制造系统,包括:
非暂态计算机可读存储介质,其上存储有对如本文所述的装置进行描述的计算机可读集成电路描述;
布局处理系统,其被配置为处理集成电路描述,以便生成体现该装置的集成电路的电路布局描述;以及
集成电路生成系统,其被配置为根据电路布局描述来制造该装置。
可以提供一种装置,其被配置为执行如本文所述的任何方法。
可以提供用于执行如本文所述的方法的计算机程序代码。
可以提供一种非暂态计算机可读存储介质,其上存储有计算机可读指令,当在计算机系统上执行计算机可读指令时,使计算机系统执行如本文所述的方法。
附图说明
现在将参考附图以示例的方式描述本发明。在图中:
图1示出计算机装置的概览。
图2示出形成图1所示的计算机装置的一部分的地址分类单元的示例。
图3A示出地址分类单元所接收的输入。
图3B示出如何执行一系列存储器比较以生成二进制分类数据集。
图3C示出匹配掩码。
图4示出形成地址分类单元的一部分的组合逻辑单元的示例。
图5示出形成地址分类单元的一部分的输出生成逻辑的示例。
图6示出说明从输入地址的集合中识别输出地址的集合的步骤的流程图。
图7示出示例计算机系统。
图8示出集成电路制造系统。
具体实施方式
通过示例的方式呈现以下描述以使得本领域技术人员能够制造和使用本发明。本发明不限于这里描述的实施例,并且对所公开的实施例的各种修改对于本领域技术人员来说是显而易见的。仅通过示例的方式描述实施例。
本公开涉及对N个输入存储器地址的集合进行分类以识别该集合内的各个不同地址(例如,各个不同的地址值)。该输入地址的集合可以是已经请求对其进行访问的地址。然后,使用所识别的不同地址值的子集来生成M个唯一输出存储器地址的集合,其中M<N。存储器地址的输出集可以使得输出集内的每个地址在该集合内是唯一的,但是在较大的输入地址的集合中不是唯一的。也就是说,N个存储器地址的输入集可以包含多个不同的地址值(≤N),但是这些地址值中的一个或多个可以多次被包括在输入集中。相反,这里使用的用来指代特定集合、子集等内的存储器地址的术语“唯一”是指存储器地址不等同于该集合、子集等内的任何其他存储器地址。如果不同地址值的数量不足以生成其中每个地址唯一的地址的输出集(即,如果不同地址值的数量小于M),则地址的输出集包含最大数量的不同地址。
因此,如果存储器地址的输入集包含具有相同地址值的多个地址,则可以生成存储器地址的输出集,使得地址值仅被输出一次。然后,该输出存储器地址的集合可用于访问由输出集内的存储器地址标识的存储器区域。当授权对输入集中的地址进行访问时,这可以通过减少或在某些情况下潜在地消除对同一存储器地址的多次访问来提高存储器访问的效率。
下面将更详细地描述可以如何生成存储器地址的输出集的示例。
图1示出示例计算机处理系统100。计算机处理器系统包括中央处理单元(CPU)或图形处理单元(GPU)101和存储器109。存储器109被示为在单元101的外部。如果单元101形成片上系统(SoC)的一部分,则存储器109可以在芯片外部,即存储器109可以是片外存储器。
单元101包括处理器单元103、地址分类单元105和存储器接口107。处理器单元被配置为执行处理操作。为了执行处理操作,处理器单元可以执行一个或多个指令。处理器单元可以采用许多不同的形式。例如,处理器单元可以是处理器、处理器核、多核处理器或诸如DSP之类的能够执行指令以执行一个或多个处理操作的某种其他类型的单元。处理器单元可以能够并行执行多个处理操作。处理器单元例如可以是单指令多数据(SIMD)处理器。处理器单元可以能够并行地调度和执行多个线程。尽管在该示例中计算机处理器系统仅包括单个处理器单元103,但在其他示例中,计算机处理器系统可包括多个处理器单元。这些多个处理器单元中的每一个可以并行操作。如果单元101包括多个处理器单元103,则这些单元可以彼此独立地操作,例如,每个处理器单元可以能够独立地调度和执行线程。
处理器单元103生成N个存储器地址请求的集合。每个地址请求可以指定标识要访问的存储器109的区域的存储器地址值。每个地址值可以是固定长度的数字序列。每个存储器地址值的位宽可以是特定于实现方式的。可以由处理器单元103在单个处理器周期(例如,一个时钟周期)中生成N个地址请求。可替代地,可以在多个时钟周期上生成N个存储器地址请求。在一些实例中,存储器地址请求可能不是以N的离散集合生成的,而是可以由处理器单元在点对点(ad-hoc)基础上生成。在这种情况下,N个存储器地址请求的集合可以指代N个最旧的挂起的存储器请求,其中在每次请求被授权时N个地址请求的集合就被更新。因此,通常,N个存储器地址请求可以是N个挂起的请求的集合。
地址分类单元105接收由该N个存储器访问请求的集合指定的N个存储器地址。地址分类单元的操作将在下面更详细地描述,但是简要地说:它操作用于从由所接收的存储器地址请求的集合指定的N个输入存储器地址的集合中生成M个输出存储器地址的集合。输出集中的存储器地址数小于输入集中的存储器地址数(即M<N)。该M个输出存储器地址的集合内的每个地址在该输出集内可以是唯一的(即,分类单元输出M个输出存储器地址的唯一集合)。
然后将M个输出存储器地址输入到存储器接口107,存储器接口107访问由那些M个地址指定的存储器109的适当(唯一)区域。
尽管存储器109在图1中被示出为单个块,但是应当理解,在其他示例中,存储器访问请求可以请求访问多个存储器块。M个存储器地址的单个集合可以包含针对多个存储器块的地址。
在图2中更详细地示出地址分类单元105。地址分类单元105包括比较器块201、多个(在该示例中为两个)组合逻辑单元203A和203B、以及输出生成逻辑205。
现在将参照图6中的流程图描述地址分类单元105的操作。在下面的示例中,由地址分类单元接收的N个输入存储器地址的集合包含32个地址(即N=32),并且M个输出存储器地址的集包含4个地址(即,M=4)。应当理解,仅为了说明的目的选择这些值,并且以下描述适用于N和M的其他值。
在步骤601处,地址分类单元105执行对输入的存储器地址的比较以生成二进制分类数据集,该二进制分类数据集从输入地址的集合中识别地址的子集。由二进制分类数据集识别的子集中的每个地址在该子集内是唯一的(但在输入集内可能不是唯一的)。
步骤601由比较器块201执行。比较器块可以接收N个输入地址的集合作为输入。比较器块还可以接收N个有效性标识符的集合,每个有效性标识符指示该输入地址的集合中的相应地址是有效还是无效。例如,如果当前存储器地址请求的数量小于N,则可能出现无效地址。在这些情况下,比较器块的剩余输入端口(即,不包含当前存储器地址请求的输入端口)可能包含来自前一个输入存储器地址请求的集合的地址,并被标记为无效。可以以地址向量的格式接收N个输入地址的集合。地址向量可以由N×AddBW位形成,其中AddBW是每个存储器地址的位宽(并且N是输入集中地址的数量)。有效性标识符的集合可以是有效性向量的格式。有效性向量可以由N位形成,其中向量的每一位指示相应的输入地址是有效还是无效。因此,每个有效性标识符可以是二进制标识符。
在图3A中示意性地示出比较器块201的输入。一般在列301中示出N个输入地址的集合,并且一般在列303中示出N个有效性标识符的集合。可以看出,每个有效性标识符对应于相应的输入地址,并且指示该相应的输入地址的有效性。每个输入存储器地址为数字序列,在该示例中为六位数字的序列。输入集中的每个地址可以具有固定长度。输入集中的每个地址可以具有相同的长度。应当理解,这里将每个地址表示为六位数字的序列仅仅是为了便于说明,并且在其他实现方式中,每个地址可以由不同数量的位形成。
注意,为了清楚起见,在图3A中仅示出七个输入存储器地址和七个有效性标识符。
比较器块201对输入地址执行一系列地址比较以识别地址子集,在该地址子集中每个地址是唯一的。现在将参考图3B描述用于对输入存储器地址进行比较以识别该子集的示例方案。
在该方案的第一步中,比较器块将第一存储器地址(具有地址值101101)与接收的输入集中的其他N-1个地址中的每一个进行比较。如果地址不匹配,并且与第一地址进行比较的地址的有效性标识符指示该地址有效,则该比较与第一二进制值(在该示例中为值“1”)相关联。如果地址匹配,和/或与第一地址进行比较的地址的有效性标识符指示该地址无效,则该比较与第二二进制值(在该示例中为“0”)相关联。在列305中示出根据该方案将第一地址与输入集中的其他地址中的每一个进行比较的结果。可以看出,由于地址1与地址6匹配,因此值“0”与该比较相关联。地址1与地址3和地址5的比较也与值“0”相关联,因为地址3和地址5被它们各自的有效性标识符指示为无效。该方案的另一步骤是响应于确定地址与第一地址匹配而将该地址标识为无效。这可以通过改变与被确定为匹配第一地址的(一个或多个)地址相关联的有效性标识符来完成。因此,在该示例中,响应于确定地址6与第一地址匹配,改变与地址6相关联的有效性标识符以指示地址6无效。
在该方案的第二步骤中,将第二存储器地址与输入集的剩余N-2个地址中的每一个进行比较。如前所述,如果第二存储器地址与所比较的地址不匹配并且该地址的效性标识符指示其有效,则第一二进制值(“1”)与该比较相关联。如果第二存储器地址与所比较的地址匹配和/或该地址的有效性标识符指示与第二地址进行比较的地址无效,则第二二进制值(“0”)与该比较相关联。在列307中示出第二存储器地址与剩余N-2个地址的比较结果。由于地址2与地址7匹配,因此该比较与值“0”相关联。还应注意,虽然地址2和地址6不匹配,但是值“0”与该比较相关联,因为地址6的有效性标识符被修改为“0”以指示在先前的地址6与地址1的比较之后该地址无效。
对剩余的N-2个地址中的每一个重复上述过程。因此,对于N个输入地址的集合,比较器块201对地址ai和地址aj执行一系列比较,其中i=1,...,N,并且j=i+1,...,N。因此,比较器块执行[N(N-1)]/2次地址比较。比较器块执行这些比较以将输入集中的每个地址ak与二进制分类器值相关联。换句话说,比较器块201可以将每个地址ai与每个后续地址aj=i+1...N进行比较,针对N个输入地址的集合中的每个地址ai∈(1,...N)重复该比较。第一二进制分类值(在该示例中为“1”)与被确定为同时具有以下两个特征的每个后续地址aj相关联:(i)为有效地址(即,该地址与指示地址有效的有效性标识符相关联);(ii)不等于地址ai,其中比较器块响应于确定该后续地址aj等于地址ai而将该地址标识为无效。比较器块将第二二进制分类值(在该示例中为“0”)与被确定为具有以下特征中的至少一个的每个地址aj相关联:(i)为无效地址(即,与指示地址无效的有效性标识符相关联);(ii)等于地址ai
图3B中在309处指示在比较器块201的操作之后与输入地址相关联的二进制分类器值的集合。该二进制分类器值309的集合可以被称为二进制分类数据集。在该示例中,二进制分类数据集是N位向量,其中向量的每一位包含针对相应输入地址的二进制分类值。
上述方案是顺序方案;即,在方案的第一步骤完成之后启动方案的第二步骤,在方案的第二步骤完成之后启动方案的第三步骤,等等。通常,仅在步骤i-1完成之后才启动步骤i。为了减少等待时间,在其他示例中,比较器块201可以实现并行方案来对输入地址进行地址比较以识别地址子集,在该子集中每个地址是唯一的。
比较器块可以通过执行N个比较步骤来实现并行方案。可以并行启动(即同时启动)N个比较步骤中的每一个。每个比较步骤i确定N个输入地址的集合中相应地址i的二进制分类器值。每个步骤i可以将对应的输入地址i与该输入地址的集合中i-1个先前地址中的每一个进行比较。因此,在比较步骤1中,不将地址1与N个输入地址的集合中的任何其他地址进行比较。在比较步骤N中,将地址N与输入集的N-1个先前地址中的每一个进行比较。因此,每个比较步骤i可以包括i-1次比较。在N个比较步骤中总共进行[N(N-1)]/2次比较。对于每个比较步骤i,比较器块将相应的存储器地址i与输入集中的i-1个其他地址的子集进行比较,并且如果这些i-1个地址的子集中的至少一个:1)等于相应的存储器地址i;并且2)为有效地址,则比较器块将相应的存储器地址i的有效性标识符更新为第二二进制值(例如“0”)。
换句话说,比较器块可以被配置为通过执行N个比较步骤来实现并行方案,其中对于每个比较步骤i,比较器块执行以下逻辑方程:
validnew,i=validold,iAND NOT(((addressi==address1)AND valid1)OR((addressi==address2)AND valid2)OR...OR((addressi==addressi-1)AND validi-1))(1)
其中,validnew,i是在比较步骤i之后地址i的有效性标识符的值(其是与该地址相关联的二进制分类器值);validold,i是在执行比较步骤i之前地址的有效性标识符的原始值;valid1,...validi-1是接收的地址1,...i-1的有效性标识符的值,并且AND、NOT和OR是逻辑运算符。
因此,总的来说,比较器块201可以通过实现以下方案来生成二进制分类数据集,在该方案中对每个输入地址ai(1,...N)与输入集中的每个先前地址aj=1,…,i-1进行比较以确定地址ai的二进制分类值。第一二进制分类值(在该示例中为“1”)与被确定为同时具有以下两种特征的每个输入地址ai相关联:(i)为有效地址(即,该地址与指示地址有效的有效性标识符相关联);(ii)不等于任何先前地址aj。比较器块将第二二进制分类值(在该示例中为“0”)与被确定为具有以下特征中的至少一种的每个输入地址ai相关联:(i)为无效地址(即,与指示地址无效的有效性标识符相关联);(ii)等于至少一个先前地址aj
因此,实际上,与二进制分类数据集309中的第一二进制分类值相关联的每个输入地址被标识为是有效地址,并且在按顺序串行遍历输入地址的集合时,在该集合内第一次出现该地址。
因此,与分类数据集309中的第一二进制分类值相关联的所有输入地址定义唯一地址的子集;即,子集内的每个地址在子集内是唯一的。在该示例中,由分类数据集标识的唯一地址的子集仅包括前七个输入地址中的地址1、地址2和地址4。但是,子集内的每个地址在N个输入地址的集合中不一定是唯一的。例如,地址1在由二进制分类数据集标识的地址子集内是唯一的(在数据集309中没有二进制分类为“1”的其他地址等于地址1),但是在N个输入地址的集合中不是唯一的(地址1等于地址6)。换句话说,比较器块201生成二进制分类数据集309,使得如果N个输入地址的集合包含具有相同地址值的多个地址,则这些地址中仅一个与分类数据集中的第一二进制分类值相关联(即,这些地址中只有一个被包括在由二进制分类数据集标识的子集中)。
上述方案允许输入集中同时具有以下特征的所有地址被识别:有效;当按顺序遍历输入集时,输入集中第一次出现该地址。换句话说,N个输入地址的集合中不在由二进制分类数据集309标识的子集中的每个地址(即,与分类数据集中的“0”相关联的每个输入地址)是以下两者中的至少一者:无效地址;或等于所识别子集中的一个地址。
除了生成二进制分类数据集309之外,比较器块201还可以生成匹配掩码,该匹配掩码针对该N个输入地址集合中的每个地址指示输入集中的哪些地址与该地址匹配。在一些示例中,匹配掩码可以不考虑输入地址的有效性标识符。也就是说,匹配掩码可以简单地针对N个输入地址集合中的每个地址指示输入集中的哪些地址与该地址匹配,而与这些地址的有效性标识符无关。在其他示例中,匹配掩码可以针对该N个输入地址集合中的每个地址指示输入集中的哪些地址既有效又与该地址相匹配。匹配掩码可以是N×N位矩阵的形式。
图3C示出由比较器块201针对列301中所示的输入值集合生成的示例匹配掩码。在311处示出匹配掩码。匹配掩码是二进制掩码,其中第一二进制值(在该示例中为“1”)用于表示一对输入地址既有效又匹配,并且第二二进制值(在该示例中为“0”)用于表示一对地址不匹配和/或无效。每个输入地址i的匹配掩码可以由矩阵311的行i或列i给出。因此,每个输入地址的匹配掩码可以采用N位向量的形式,每一位指示地址i是否与输入集中的有效相应地址相匹配。换句话说,对于输入集中的每个地址(如列301所示),匹配掩码标识输入集中与该地址匹配的有效地址。匹配掩码的目的将在下面更详细地描述。
重新回到图6,并且在步骤603处,多个组合逻辑单元203A和203B中的每一个接收二进制分类数据集的预先选择的位。也就是说,多个组合逻辑单元中的每一个接收二进制分类数据集的相应部分或子部分。
可以将二进制分类数据集的位分发给组合逻辑单元,使得数据集的所有位跨组合逻辑单元被分配。可以根据指定的分配方案将二进制分类数据集的位分配给逻辑单元。该分配方案可以是预定的。在该特定示例中,地址分类单元105包含两个组合逻辑单元,每个组合逻辑单元203A和203B可以被配置为接收二进制分类数据集的一半位。例如,逻辑单元203A可以接收二进制分类数据集的位1到N/2,并且逻辑单元203B可以接收二进制分类数据集的位(N/2)+1到N。注意,二进制分类数据集的每一位与地址值和匹配掩码相关联。以下段落描述组合逻辑单元203A、203B和输出生成逻辑205对二进制分类位执行的各种操作。对相应的地址值和匹配掩码也执行这些操作中的每一个,以便在每个处理阶段,二进制分类位保持与其对应的地址值和匹配掩码相关联。这使得能够针对从输出生成逻辑205输出的每个二进制分类位(即,每个二进制分类器值)读取地址值和匹配掩码。
在步骤605,每个组合逻辑单元203将其接收到的二进制分类数据集的位选择分类为中间二进制串,在该中间二进制串中将位排序成第一组和第二组,其中第一组标识属于所识别的唯一子集的地址,第二组标识不属于所识别的唯一子集的地址。换句话说,每个中间二进制串的位被分成两组:第一组连续位,其中每一位具有第一二进制分类值;以及第二组连续位,其中每一位具有第二二进制分类值。因此,在中间二进制串内,具有第一二进制分类值的位是连续的,并且具有第二二进制分类值的位是连续的。
图4示出示例性组合逻辑单元203的更详细视图。这里示出逻辑单元203A用于说明,但是应当理解,逻辑单元203B具有类似的结构。由逻辑单元203A接收的二进制分类数据集的预先选择的位标记为401。因为在该示例中二进制分类数据集包含32位(因为输入地址的集合包含32个地址),并且在地址分类单元内存在两个逻辑单元203A、203B,每个逻辑单元203接收二进制分类数据集的16位。已经选择预先选择的位401的示例值来说明逻辑单元203A的操作。
逻辑单元203A包括多个分类单元403A-403D和多个合并单元405A-405C。每个分类单元接收由逻辑单元203A接收的预先选择的位的一部分。具体地,单元203A包括四个分类单元,每个分类单元被配置为接收所接收的预先选择的位401的四位。
每个分类单元403A-403D被配置为对其接收的那部分位进行分类,以将标识属于由二进制分类数据集识别的唯一子集的地址的位组合在一起,以生成相应的初始二进制串407A-407D。分类单元还被配置为对其接收的位进行排序,使得对属于唯一子集的地址进行标识的任何位形成所生成的初始二进制串的最高有效位(MSB)。例如,分类单元403B接收输入串0100。值“1”与属于由二进制分类数据集识别的唯一子集的地址相关联,从而标识该地址。因此,分类单元403B操作以将值“1”置放为初始二进制串407B的最高有效位。
每个合并单元405A和405B接收多个初始二进制串作为输入。具体地,合并单元405A接收分别由分类单元403A和403B生成的两个初始二进制串407A和407B作为其输入;合并单元405B接收分别由分类单元403C和403D生成的两个初始二进制串407C和407D作为其输入。因此,每个合并单元405A和405B接收8位作为其输入。每个合并单元403A和403B操作以合并其接收的初始二进制串,以将来自每个接收的初始二进制串的、标识属于地址唯一子集的地址的位组合在一起并形成合并的串。合并单元还对经合并的串的位进行分类,使得标识属于唯一子集的地址的组合在一起的位形成合并串的最高有效位。合并单元进一步丢弃合并串的多个最低有效位以输出另一个初始二进制串。由合并单元405A和405B形成并输出的初始二进制串分别被标记为409A和409B。
在该示例中,合并单元405A和405B丢弃合并串的四个最低有效位。因此,合并单元405A和405B的输出是四位的初始二进制串。因此,每个合并单元405A和405B接收两个初始二进制串作为输入,并输出另一个初始二进制串,其位数等于所接收的初始二进制串之一的位数。
因此,合并单元405A和405B进行操作以生成初始二进制串,其具有比作为输入接收的位的数量更少的位。合并单元405A和405B中的每一个的操作可以概括为:i)接收由各个分类单元输出的多个初始二进制串作为输入;ii)将所接收的初始二进制串合并在一起以生成合并串,其中来自每个接收的初始串的、标识属于唯一子集的地址的位被组合在一起并形成合并串的最高有效位;iii)丢弃合并串的多个最低有效位,以输出另一个初始二进制串,其具有比作为输入接收的位的数量更少的位。
合并单元405A和405B的输出作为输入馈送到另一合并单元405C。合并单元405C操作以生成中间二进制串411。
合并单元405C以与合并单元405A和405B类似的方式操作。更具体地,合并单元405C对从合并单元405A和405B输出的初始二进制串409A和409B进行合并以生成合并串,其中来自每个接收的初始串409A和409B的、标识属于唯一子集的地址的位被组合在一起并形成合并串的最高有效位;并丢弃合并串的多个最低有效位以生成中间二进制串411。
可以看出,中间二进制串411的值被分类为两组:具有连续位(具有值“1”的三个位)的第一组,其中每一位标识属于唯一子集的输入地址;以及包含(在该示例中)单个位(具有值“0”的位)的第二组,该单个位标识不属于唯一子集的输入地址。对中间二进制串411的位进行分类或排序,使得第一组的位形成中间二进制输出的最高有效位。
合并单元405C接收两个初始的四位二进制串409A和409B,并生成具有四位的中间二进制串。因此,合并单元405C接收从各个合并单元405A和405B输出的两个初始二进制串作为其输入,并且生成中间二进制串,该中间二进制串的位数等于所接收的初始二进制串之一的位数。因此,由组合逻辑单元203A生成的中间二进制串411包含的位数少于在逻辑单元处接收的作为输入的二进制分类数据集401的位数。
组合逻辑单元203B以与逻辑单元203A类似的方式操作以生成第二中间二进制串。
由逻辑单元203A和203B生成的两个中间二进制串被输入到输出生成逻辑205。
在步骤607,输出生成逻辑205在属于两个不同的中间二进制串的位之间进行选择,以生成对包含唯一子集中的至少一个地址的存储器地址集合进行标识的二进制输出。由二进制输出标识的存储器地址集合可以被称为存储器地址的输出集。
图5示出示例性输出生成逻辑205的更详细视图,并且示出输出生成逻辑如何可以在从相应的组合逻辑单元输出的、属于不同的中间二进制串的位之间进行选择以生成二进制输出503。二进制输出是M位输出。它可以是M位向量的格式。如上所述,二进制输出503的每一位与来自N个输入地址的集合的地址值相关联,并且与指示输入集中的哪些地址有效并匹配该地址值的匹配掩码相关联。
逻辑205接收从逻辑单元203A输出的中间二进制串411和从逻辑单元203B输出的中间二进制串413作为其输入。已经选择中间二进制串的示例值来说明输出生成逻辑205的操作原理。
输出生成逻辑205包括多个选择单元501A-501D,每个选择单元501A-501D生成二进制输出503的相应位。每个选择单元501A-501D例如可以是多路复用器(“mux”)。由于二进制输出是M位输出(在该示例中M=4),输出生成逻辑可以包含M个选择单元。
每个选择单元501A-501D被配置为从各个中间二进制串411和413接收一对位;也就是说,所接收的一对位中的每一位来自不同的中间二进制串。选择单元操作以选择所接收的一对位中的一个作为二进制输出503的位。每个选择单元可以用作“或”门。也就是说,如果输入的一对位中的一位是“1”,则选择单元输出该位。如果两个输入位都是“1”,则选择单元随机地选择其中一位,或者选择单元可以被配置为从指定的组合逻辑单元中选择位输出。
选择单元被布置成使得一个选择单元(在该示例中为单元501A)被配置为接收第一中间二进制串411的最高有效位和第二中间二进制串413的最低有效位;选择单元之一(在该示例中为单元501B)被配置为接收中间串411的第二MSB和第二中间串413的第二LSB;一个选择单元(在该示例中为单元501C)被配置为接收中间串411的第三MSB和中间串413的第三LSB;并且一个选择单元(在该示例中为单元501D)被配置为接收中间二进制串411的第四MSB(在该示例中为串411的LSB)和二进制串413的第四LSB(其在改示例中为串413的MSB)。
这种布置是有利的,因为通过与组合逻辑单元输出的有序中间串相结合,它使得逻辑205能够最大化二进制输出503中标识针对输入中间二进制串的给定集合的唯一子集内的地址的位量。例如,如果将逻辑单元203A和203B的输出配对为使得选择单元501A接收两个中间串的MSB;选择单元501B接收两个中间串的第二MSB,等等,则选择单元501D将接收一对“0”位作为其输入,这意味着二进制输出503将仅包含三个为“1”的位,而不是如图示的布置包含四个为“1”的位。
哪个选择单元接收来自组合逻辑单元的哪种输出组合可以变化,同时仍然最大化二进制输出503中标识针对输入中间二进制串的给定集合的唯一子集内的地址的位量。因此,通常,输出生成逻辑205可以被布置为使得选择单元n被配置为在来自第一中间二进制串的位bn和来自第二中间二进制串的位bm之间进行选择,其中n=1...M,并且m=M+1-n。这里应注意,在该表示法下,b1可以指代中间二进制串的最高有效位,并且bM指代中间二进制串的最低有效位。还应注意,在该表示法下,选择单元的标记可以是任意的。也就是说,在选择单元n和二进制输出503的位编号之间不需要任何相关性,例如,选择单元1不需要输出二进制输出的MSB。
输出生成逻辑205的配置意味着二进制输出503的位不是有序的(例如,与组合逻辑单元输出的中间串相反)。也就是说,在二进制输出503中,不需要以任何特定顺序对位值“1”和“0”进行分组或分类。在这方面,输出生成逻辑205的操作可以与合并单元405A-405C形成对比。合并单元中的每一个和输出生成逻辑205操作以根据接收的八位输入来输出四位。然而,输出生成逻辑205不对输出位进行分类或排序以将某些位组合在一起,这与合并单元不同,合并单元将其输出中位值为“1”的位组合在一起(如图4所示)。可以说输出生成逻辑205生成具有松散的位堆叠的二进制输出。这是有利的,因为它减少了从输入中间串411和413生成二进制输出所需的硬件数量(例如,门和/或多路复用器的数量)。因此,输出生成逻辑可以以比合并单元更硬件有效的方式来实现,从而降低了地址分类单元105的总体硬件要求。
二进制输出503和由该二进制输出标识的唯一子集的相关存储器地址被输入到存储器接口107。然后,存储器接口可以访问由那些存储器地址指定的存储器109的区域。
一旦对这些存储器区域的存储器访问已经完成,存储器接口107就可以使用来自由比较器块生成的匹配掩码311的信息来确定由分类单元105接收的N个输入存储器访问请求中的哪些已经完成(例如,使用存储器匹配逻辑)。例如,从示例性匹配掩码311可以看出,访问存储器地址101101意味着存储器请求1和存储器请求6都被完成。地址分类单元可以将匹配掩码直接输出到存储器接口。可替代地,地址分类单元还可以包括地址匹配逻辑,其针对每个二进制输出生成M个N位掩码,每个N位掩码对应于二进制输出的相应位并指示N个输入地址集合中的哪些地址与由二进制输出的该位标识的输出地址相匹配。地址匹配逻辑可以耦接到比较器块201和输出生成逻辑。地址匹配逻辑可以被配置为根据由比较器块201生成的匹配掩码以及由输出生成逻辑生成的二进制输出来生成M个掩码。地址分类单元可以被配置为将M个N位掩码输出到例如存储器接口单元以确定哪些输入存储器地址请求已经完成。
上述用于生成二进制输出503的方法意味着,如果由比较器块生成的二进制分类数据集将M个或更多个输入地址识别为属于唯一子集,则组合逻辑单元和输出生成逻辑将操作以生成标识该子集的M个地址的二进制输出503。这是有利的,因为它意味着属于由单个二进制输出标识的唯一子集的地址的数量被最大化。
应当理解,在一些情况下,二进制分类数据集可以识别属于唯一子集的大于M的多个地址。在这种情况下,并非子集中的所有地址都可以在单个二进制输出中被标识。因此,可能需要执行多个周期以从相同的N个输入存储器地址的集合中生成多个二进制输出。可以由输出标志来控制是否要执行另一个周期以使用相同的输入存储器地址的集合生成另一个二进制输出。当确定(一个或多个)二进制输出尚未标识唯一子集中的所有地址时,可以启用输出标志,其指示需要另一个周期来使用相同的N个输入地址的集合来生成新的二进制输出。当确定所生成的(一个或多个)二进制输出已经标识唯一子集中的所有地址时,可以禁用输出标志,其指示地址分类单元105可以接收新的N个输入地址的集合。
该输出标志可以由形成地址分类单元105的一部分的监视单元生成。监视单元可以耦接到输出生成逻辑和比较器块两者。监视单元可以根据二进制分类数据集来确定唯一子集中输入地址的数量,并且可以监视已经由输出生成逻辑所生成的二进制输出标识的那些地址的数量。根据这些参数,监视单元可以生成输入到比较器块的置位或非置位输出标志。
以上示例描述了具有两个组合逻辑单元的地址分类单元。应当理解,在其他示例中,地址分类单元可以包含不止两个组合逻辑单元。此外,尽管每个组合逻辑单元被示出为包括树型网络结构布置的四个分类单元、被配置为接收分类单元的输出的两个合并单元、以及被配置为接收两个合并的输出的单个其他合并单元,但应当理解,分类单元和合并单元的不同数量和布置是可能的。当输入地址的集合包含32个地址并且输出地址的集合包含4个地址时,这里描述的布置是方便的,但是应当理解,对于不同大小的输入和输出地址集合,其他布置可能更方便。
在上面的示例中,比较器块201被描述为操作以对输入地址ai和aj进行比较(例如,使用顺序或并行方案)。应当理解,可以任意分配用于标记引用的每个地址的数字(例如地址“1”、地址“2”等)。也就是说,上述示例可以不要求将特定数字标签分配给每个地址,只要输入集N内的每个地址被唯一地标记即可。此外,分配给每个地址的数字标签不一定意味着对由比较器块接收的地址向量内的该地址的位置的任何限制。在一些示例中,地址“1”可以用于指代占用接收的地址向量的最高有效位的地址,而地址“N”用于指代占用接收的地址向量的最低有效位的地址。在其他示例中,地址“1”可以用于指代占用接收的地址向量的最低有效位的地址,而地址“N”用于指代占用接收的地址向量的最高有效位的地址。标记地址向量内的地址的其他方法也是可能的。
以上示例示出了地址分类单元可以如何操作以从较大的N个地址的输入集中识别M个唯一地址的集合,其中输入集包含至少一个非唯一地址。然而,应当理解,这里描述的示例将同样操作以从N个唯一地址的输入集中识别M个唯一地址的集合。因此,该集合内的N个输入地址可以是唯一的(即,不包含非唯一地址),或者包含至少一个非唯一地址。
图7示出计算机系统,其中可以实现本文描述的图形处理系统。计算机系统包括CPU 702、GPU 704、存储器706和诸如显示器716、扬声器718和摄像头708之类的其他设备714。处理块710(例如,对应于地址分类单元105)被示出为在GPU 704上实现。计算机系统的组件可以经由通信总线720彼此通信。CPU 702和GPU 704中的任一个或两者可以是SIMD处理器。在其他示例中,处理块710可以在CPU 702上实现。存储装置712(例如,对应于存储器109)被实现为存储器706的一部分。
图2、图4和图5的地址分类单元、组合逻辑单元和输出生成逻辑被示为包括多个功能块。这仅是示意性的,并非旨在定义这些实体的不同逻辑元件之间的严格划分。可以以任何合适的方式提供每个功能块。应当理解,这里描述的由单元、逻辑或块形成的中间值不需要在任何点处由单元/逻辑/块物理地生成,并且可以仅表示方便地描述由其输入和输出之间的单元/逻辑/块执行的处理的逻辑值。
这里描述的装置(例如,地址分类单元105或处理单元101)可以在集成电路上的硬件中实现。本文描述的装置可以被配置为执行本文描述的任何方法。通常,上述任何功能、方法、技术或组件可以用软件、固件、硬件(例如,固定逻辑电路)或其任何组合来实现。这里可以使用术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现的情况下,模块、功能、组件、元件、单元、块或逻辑表示程序代码,当在处理器上执行该程序代码时其执行指定任务。这里描述的算法和方法可以由执行代码的一个或多个处理器执行,该代码使(一个或多个)处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可由机器访问的其他存储器设备。
本文使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何种类的可执行代码,包括以机器语言、解释语言或脚本语言表示的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表)以及用诸如C、Java或OpenCL之类的编程语言代码表示的代码。可执行代码例如可以是任何类型的软件、固件、脚本、模块或库,其当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、执行时,使得支持可执行代码的计算机系统的处理器执行代码所指定的任务。
处理器、计算机或计算机系统可以是具有处理能力的任何类型的设备、机器或专用电路、或它们的集合或一部分,使得它可以执行指令。处理器可以是任何类型的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可包括一个或多个处理器。
本发明还旨在涵盖定义如本文所述的硬件配置的软件,例如用于设计集成电路或用于配置可编程芯片以实现所需功能的HDL(硬件描述语言)软件。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中处理该计算机可读程序代码时,其对系统进行配置以制造被配置成执行任何本文描述的方法的装置或制造包括本文所述的任何装置的装置。集成电路定义数据集例如可以是集成电路描述。
可以提供一种在集成电路制造系统中制造如本文所述的装置的方法。可以提供集成电路定义数据集,当在集成电路制造系统中处理该集成电路定义数据集时,其使得制造装置的方法被执行。
集成电路定义数据集可以是计算机代码的形式,例如,作为用于配置可编程芯片的代码、网表,作为定义任何级别的集成电路的硬件描述语言,包括作为寄存器传输级(RTL)代码、作为诸如Verilog或VHDL之类的高级电路表示、以及作为诸如OASIS(RTM)和GDSII之类的低级电路表示。可以在计算机系统处对逻辑上定义集成电路(例如RTL)的更高级表示进行处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件的规则以生成由表示定义的集成电路的制造定义。通常情况下,在计算机系统上执行软件以便定义机器,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便被配置用于生成集成电路的制造定义的计算机系统执行定义集成电路的代码,以便生成该集成电路的制造定义。
现在将参照图8描述在集成电路制造系统处对集成电路定义数据集进行处理以便配置系统以制造装置(例如,地址分类单元105或处理单元101)的示例。
图8示出集成电路(IC)制造系统802的示例,其被配置为制造如本文任何示例中描述的装置。具体地,IC制造系统802包括布局处理系统804和集成电路生成系统806。IC制造系统802被配置为接收IC定义数据集(例如,定义如本文的任何示例中描述的装置)、处理IC定义数据集、并根据IC定义数据集生成IC(例如,其体现如本文任何示例中描述的装置)。IC定义数据集的处理对IC制造系统802进行配置以制造体现如本文任何示例中描述的装置的集成电路。
布局处理系统804被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要用例如逻辑组件(例如,与非、或非、与、或、多路复用和触发器(FLIP-FLOP)组件)生成的电路的门级表示。通过确定逻辑组件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统804确定了电路布局时,它可以将电路布局定义输出到IC生成系统806。电路布局定义例如可以是电路布局描述。
如本领域中已知的,IC生成系统806根据电路布局定义生成IC。例如,IC生成系统806可以实现半导体器件制造工艺以生成IC,该半导体器件制造工艺可以包括光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可以是掩模的形式,其可以用于光刻工艺中,以根据电路定义生成IC。可替代地,提供给IC生成系统806的电路布局定义可以是计算机可读代码的形式,IC生成系统806可以使用该计算机可读代码来形成用于生成IC的合适掩模。
可以在一个位置(例如,由一方)实现由IC制造系统802执行的不同处理。可替代地,IC制造系统802可以是分布式系统,使得一些处理可以在不同位置执行,并且可以由不同方执行。例如,以下阶段中的一些可以在不同的位置和/或由不同的方执行:(i)合成表示IC定义数据集的RTL代码以形成要生成的电路的门级表示,(ii)基于门级表示生成电路布局,(iii)根据电路布局形成掩模,以及(iv)使用掩模制造集成电路。
在其他示例中,集成电路制造系统处的集成电路定义数据集的处理可以将系统配置为制造装置而不对IC定义数据集进行处理,以便确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器(例如,FPGA)的配置,并且该数据集的处理可以将IC制造系统配置为生成具有该定义的配置的可重新配置的处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,当在集成电路制造系统中处理集成电路制造定义数据集时,其可以使集成电路制造系统生成如本文所述的设备。例如,通过集成电路制造定义数据集以上面参考图8描述的方式配置的集成电路制造系统可以使得如本文所述的设备被制造。
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件或者与在数据集处定义的硬件组合的软件。在图8所示的示例中,IC生成系统还可以由集成电路定义数据集配置,以在制造集成电路时,根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上或者以其他方式向集成电路提供程序代码以用于集成电路。
这里描述的图形处理系统可以在集成电路上的硬件中体现。本文描述的图形处理系统可以被配置为执行本文描述的任何方法。
与已知实现方式相比,在设备、装置、模块和/或系统(以及在此实现的方法)中本申请中阐述的概念的实现方式可以引起性能改进。性能改进可以包括增加计算性能、减少延迟、增加吞吐量和/或降低功耗中的一者或多者。在制造这种设备、装置、模块和系统(例如,集成电路)期间,性能改进可以与物理实现方式相折衷,从而改进制造方法。例如,可以针对布局面积对性能改进进行折衷,从而匹配已知实现方式的性能但使用更少的硅。例如,这可以通过以串行方式重用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,可以针对性能改进对本申请中提出的引起设备、装置、模块和系统的物理实现方式的改进(例如,减小硅面积)的概念进行折衷。例如,这可以通过在预定面积预算内制造模块的多个实例来完成。
申请人在此独立地公开本文所述的每个单独的特征以及两个或更多个这样的特征的任何组合,使得总的来说能够基于本申请说明书(整体地)、根据本领域技术人员的公知常识来执行这些特征或组合,而不管这些特征或特征的组合是否解决了本文公开的任何问题,并且不限制权利要求的范围。申请人指出,本发明的各方面可以包括任何这样的单独特征或特征组合。鉴于前面的描述,对于本领域技术人员显而易见的是,可以在本发明的范围内进行各种修改。

Claims (20)

1.一种装置,其被配置为从包含至少一个非唯一存储器地址的N个输入存储器地址的较大集合中识别M个输出存储器地址的集合,所述装置包括:
比较器块,其被配置为对来自N个输入存储器地址的集合的存储器地址进行比较以生成二进制分类数据集,该二进制分类数据集从所述输入地址的集合中识别地址的子集,其中由所述二进制分类数据集识别的子集中的每个地址在该子集中是唯一的;
多个组合逻辑单元,每个组合逻辑单元被配置为:接收所述二进制分类数据集的预先选择的位,并且将其接收的预先选择的位分类为中间二进制串,在所述中间二进制串中将所述位排序为第一组和第二组,所述第一组标识属于所识别的子集的地址,所述第二组标识不属于所识别的子集的地址;以及
输出生成逻辑,其被配置为在属于不同的中间二进制串的位之间进行选择,以生成对包含所识别的子集中的至少一个地址的输出存储器地址的集合进行标识的二进制输出。
2.根据权利要求1所述的装置,其中,所述二进制分类数据集包括N位,每位对应于相应的输入存储器地址,每位的值指示相应的存储器地址是否形成所识别的子集的一部分。
3.根据权利要求1或2所述的装置,其中,标识所识别的子集中的至少一个地址的所述二进制输出的(一个或多个)位在所述输出内是无序的。
4.根据权利要求1或2所述的装置,其中,所述输入地址的集合中的每个地址与指示该地址是有效或是无效的有效性标识符相关联。
5.根据权利要求1或2所述的装置,所述输入地址的集合中不在所识别的子集中的每个地址为以下两者中的至少一者:无效地址;或等于所识别的子集中的一个地址。
6.根据权利要求1或2所述的装置,其中,所述输入存储器地址的集合包含N个地址,并且所述比较器块被配置为:通过将所述输入存储器地址的集合中的每个地址ai与所述输入存储器地址的集合中的每个后续地址aj进行比较来执行对输入地址的比较;或者通过将所述输入存储器地址的集合中的每个地址ai与所述输入存储器地址的集合中的每个先前地址aj进行比较来执行对输入地址的比较。
7.根据权利要求6所述的装置,其中,所述比较器块被配置为:通过将第一位值与被确定为有效地址且不等于地址ai的每个地址aj相关联,并将第二位值与被确定为无效地址或等于地址ai的每个地址aj相关联来生成所述二进制分类数据集,所述比较器块还被配置为响应于确定地址aj等于地址ai而将地址aj标识为无效。
8.根据权利要求1或2所述的装置,其中,所述比较器块还被配置为从输入地址的比较生成匹配掩码,该匹配掩码针对每个输入地址指示其他输入地址中的哪些与该输入地址匹配。
9.根据权利要求8所述的装置,其中,所述装置还包括地址匹配逻辑,其被配置为使用所述匹配掩码来标识与所识别的子集中的所述至少一个地址匹配的每个输入地址,其中所识别的子集由所述二进制输出标识。
10.根据权利要求1或2所述的装置,其中,所述二进制输出是M位输出,并且所述输出生成逻辑被配置为在属于不同的中间二进制串的位之间进行选择以生成M位二进制输出,该M位二进制输出在所识别的子集中地址的数量大于或等于M时标识所述子集中的M个地址。
11.根据权利要求1或2所述的装置,其中,每个组合逻辑单元被配置为将其接收的预先选择的位分类为中间二进制串,该中间二进制串包含比由该组合逻辑单元接收的预先选择的位的数量更少的位。
12.根据权利要求1或2所述的装置,其中,每个组合逻辑单元包括:
多个分类单元,每个分类单元被配置为:
接收所接收的预先选择的位的一部分;以及
对所接收的那部分位进行分类,以将标识属于所识别的子集的地址的位组合在一起,以生成初始二进制串;以及
一个或多个合并单元,所述一个或多个合并单元中的每一个被配置为接收多个初始二进制串并将那些初始二进制串进行合并以将来自每个接收到的初始二进制串的、标识属于所识别的子集的地址的位组合在一起。
13.根据权利要求1或2所述的装置,其中,所述输出生成逻辑包括多个选择单元,每个选择单元被配置为生成所述二进制输出的相应位,并且每个选择单元被配置为在来自相应中间二进制串的一对位之间进行选择以生成所述二进制输出的位。
14.根据权利要求13所述的装置,其中,每个选择单元被配置为仅响应于接收到的一对位均不标识所识别的子集中的地址而输出不标识所识别的子集中的地址的位。
15.根据权利要求13所述的装置,其中,每个选择单元与一对组合逻辑单元相关联,并被配置为在来自由这对组合逻辑单元形成的相应中间二进制串的一对位之间进行选择。
16.根据权利要求1或2所述的装置,其中,每个组合逻辑单元被配置为将其接收的预先选择的位分类为M位的中间二进制串,其中每个选择单元n被配置为在来自第一中间二进制串的位bn和来自第二中间二进制串的位bm之间进行选择,其中n=1,...,M,并且m=M+1-n。
17.一种处理器,其包括根据权利要求1或2所述的装置。
18.根据权利要求17所述的处理器,其中,所述处理器是单指令多数据(SIMD)处理器。
19.一种从包含至少一个非唯一存储器地址的N个输入存储器地址的较大集合中识别M个输出存储器地址的集合的方法,所述方法包括:
对来自N个输入存储器地址的集合的存储器地址进行比较以生成二进制分类数据集,该二进制分类数据集从所述输入地址的集合中识别地址的子集,其中由所述二进制分类数据集识别的子集中的每个地址在该子集中是唯一的;
在多个组合逻辑单元的每一个处:接收所述二进制分类数据集的预先选择的位,并且将其接收的预先选择的位分类为中间二进制串,在所述中间二进制串中将所述位排序为第一组和第二组,所述第一组标识属于所识别的子集的地址,所述第二组标识不属于所识别的子集的地址;以及
在属于不同的中间二进制串的位之间进行选择,以生成对包含所识别的子集中的至少一个地址的输出存储器地址的集合进行标识的二进制输出。
20.一种计算机可读存储介质,其上存储有对根据利要求1或2所述的装置进行描述的计算机可读集成电路描述,当在集成电路制造系统中处理所述计算机可读集成电路描述时,使所述集成电路制造系统执行以下操作:
使用布局处理系统对所述集成电路描述进行处理,以生成对实现所述装置的集成电路的电路布局描述;以及
使用集成电路生成系统制造根据所述电路布局描述的所述装置。
CN201811108578.3A 2017-09-22 2018-09-21 对存储器地址请求进行分类以用于并行存储器访问 Active CN109597768B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1715416.2A GB2566729B (en) 2017-09-22 2017-09-22 Sorting memory address requests for parallel memory access
GB1715416.2 2017-09-22

Publications (2)

Publication Number Publication Date
CN109597768A true CN109597768A (zh) 2019-04-09
CN109597768B CN109597768B (zh) 2024-06-07

Family

ID=60244471

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811108578.3A Active CN109597768B (zh) 2017-09-22 2018-09-21 对存储器地址请求进行分类以用于并行存储器访问

Country Status (4)

Country Link
US (5) US10628341B2 (zh)
EP (1) EP3460669B1 (zh)
CN (1) CN109597768B (zh)
GB (1) GB2566729B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111046619A (zh) * 2019-12-27 2020-04-21 盛科网络(苏州)有限公司 组合逻辑时序收敛的方法、设备和存储介质
CN114521261A (zh) * 2020-08-24 2022-05-20 谷歌有限责任公司 用于管理集成电路器件的安全性的未定义生命周期状态标识符

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11573705B2 (en) * 2019-08-28 2023-02-07 Micron Technology, Inc. Artificial intelligence accelerator
RU2749911C1 (ru) * 2020-12-25 2021-06-21 Акционерное Общество "Крафтвэй Корпорэйшн Плс" Аппаратная реализация механизма использования одной памяти несколькими устройствами

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030189848A1 (en) * 2002-04-04 2003-10-09 Media Tek Inc. Memory address generator with scheduled write and read address generating capability
US6684301B1 (en) * 2001-05-31 2004-01-27 Lsi Logic Corporation Out of order execution memory access request FIFO
US8108625B1 (en) * 2006-10-30 2012-01-31 Nvidia Corporation Shared memory with parallel access and access conflict resolution mechanism
US20130019084A1 (en) * 2009-09-28 2013-01-17 Qinetiq Limited Processor
US20150134916A1 (en) * 2013-11-12 2015-05-14 Nvidia Corporation Cache filter
US20170270046A1 (en) * 2016-03-18 2017-09-21 Imagination Technologies Limited Non-Linear Cache Logic

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3010947B2 (ja) * 1992-11-26 2000-02-21 日本電気株式会社 メモリアクセス制御装置
US6438660B1 (en) * 1997-12-09 2002-08-20 Intel Corporation Method and apparatus for collapsing writebacks to a memory for resource efficiency
US6810470B1 (en) * 2000-08-14 2004-10-26 Ati Technologies, Inc. Memory request interlock
US20060129764A1 (en) * 2004-12-09 2006-06-15 International Business Machines Corporation Methods and apparatus for storing a command
JP5137002B2 (ja) * 2007-01-25 2013-02-06 株式会社メガチップス メモリコントローラ

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6684301B1 (en) * 2001-05-31 2004-01-27 Lsi Logic Corporation Out of order execution memory access request FIFO
US20030189848A1 (en) * 2002-04-04 2003-10-09 Media Tek Inc. Memory address generator with scheduled write and read address generating capability
US8108625B1 (en) * 2006-10-30 2012-01-31 Nvidia Corporation Shared memory with parallel access and access conflict resolution mechanism
US20130019084A1 (en) * 2009-09-28 2013-01-17 Qinetiq Limited Processor
US20150134916A1 (en) * 2013-11-12 2015-05-14 Nvidia Corporation Cache filter
US20170270046A1 (en) * 2016-03-18 2017-09-21 Imagination Technologies Limited Non-Linear Cache Logic

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111046619A (zh) * 2019-12-27 2020-04-21 盛科网络(苏州)有限公司 组合逻辑时序收敛的方法、设备和存储介质
CN114521261A (zh) * 2020-08-24 2022-05-20 谷歌有限责任公司 用于管理集成电路器件的安全性的未定义生命周期状态标识符

Also Published As

Publication number Publication date
EP3460669A1 (en) 2019-03-27
US20200218674A1 (en) 2020-07-09
US11249925B2 (en) 2022-02-15
GB2566729B (en) 2020-01-22
US20240078194A1 (en) 2024-03-07
CN109597768B (zh) 2024-06-07
US20190095360A1 (en) 2019-03-28
US11816044B2 (en) 2023-11-14
US20250156342A1 (en) 2025-05-15
GB2566729A (en) 2019-03-27
US10628341B2 (en) 2020-04-21
US12298924B2 (en) 2025-05-13
GB201715416D0 (en) 2017-11-08
EP3460669B1 (en) 2020-08-12
US20220156203A1 (en) 2022-05-19

Similar Documents

Publication Publication Date Title
CN109597768A (zh) 对存储器地址请求进行分类以用于并行存储器访问
CN105701032B (zh) 具备多种替换策略的组相联高速缓存存储器
CN105701034B (zh) 处理器以及用于操作处理器的方法
CN107239413A (zh) 处理存储器请求
US11282262B2 (en) Systems and methods for distributed scalable ray processing
CN105701023B (zh) 考虑到内存访问类型的快取内存替换策略
EP3388940A1 (en) Parallel computing architecture for use with a non-greedy scheduling algorithm
CN107729267A (zh) 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
CN106537330A (zh) 通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化,以及相关电路、方法和计算机可读媒体
CN112463218B (zh) 指令发射控制方法及电路、数据处理方法及电路
CN105830160B (zh) 用于将经屏蔽数据写入到缓冲器的设备及方法
CN113609310B (zh) 单机大规模知识图谱嵌入系统及方法
CN105700855B (zh) 用于改进simd knn实现的设备、方法、系统和机器可读介质
CN104166539A (zh) 并行原子递增
CN111045979B (zh) 基于存储器处理器的多处理架构及其操作方法
JP5821501B2 (ja) 再帰を利用してbddの最適な変数順序を決定する方法及びシステム
JP7697462B2 (ja) メモリ内蔵装置、処理方法、パラメータ設定方法及びイメージセンサ装置
CN108984471A (zh) 一种以太坊矿机系统及其挖矿方法
CN105190579B (zh) 一种用于实现线路速度互连结构的方法
US7516059B2 (en) Logical simulation device
CN113448962B (zh) 数据库数据管理方法和装置
US20240192918A1 (en) Sorting
Liu et al. Comprehensive evaluation of large-scale parallel matrix factorization algorithms
CN106371805A (zh) 处理器的动态调度互联寄存器及调度数据的方法
Crafton et al. Statistical Array Allocation and Partitioning for Compute In-Memory Fabrics

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
GR01 Patent grant