CN113688065A - 近存计算模块和方法、近存计算网络及构建方法 - Google Patents

近存计算模块和方法、近存计算网络及构建方法 Download PDF

Info

Publication number
CN113688065A
CN113688065A CN202010753117.2A CN202010753117A CN113688065A CN 113688065 A CN113688065 A CN 113688065A CN 202010753117 A CN202010753117 A CN 202010753117A CN 113688065 A CN113688065 A CN 113688065A
Authority
CN
China
Prior art keywords
unit
memory
computing
routing
module
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
Application number
CN202010753117.2A
Other languages
English (en)
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.)
Xian Unilc Semiconductors Co Ltd
Original Assignee
Xian Unilc Semiconductors 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 Xian Unilc Semiconductors Co Ltd filed Critical Xian Unilc Semiconductors Co Ltd
Priority to CN202010753117.2A priority Critical patent/CN113688065A/zh
Priority to US18/016,945 priority patent/US20230350827A1/en
Priority to PCT/CN2021/073752 priority patent/WO2022021822A1/zh
Publication of CN113688065A publication Critical patent/CN113688065A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)

Abstract

本发明提出了一种近存方案,涉及近存计算模块和方法、近存计算网络及构建方法。本发明的近存计算模块采用三维设计,将计算子模块和内存子模块设置在不同的层中,层之间优选地通过键合方式连接,且连接的总数据位宽是单个计算单元的数据位宽的正整数倍。这样,解决了存储的延迟和带宽问题。内存子模块中具有多个内存单元,能够在单个内存子模块中实现较大的内存容量。计算子模块的计算单元之间通过路由器的交换接口交换数据,且各个计算子模块之间通过路由接口访问数据,进一步提高了计算性能。该近存计算网络利用该近存计算模块,能够满足不同规模的计算需求。

Description

近存计算模块和方法、近存计算网络及构建方法
技术领域
本发明涉及存储器领域。具体而言,本发明涉及近存计算模块和方法、近存计算网络及构建方法。
背景技术
在现有技术中,处理器厂商与内存厂商相互分离,导致了内存技术与处理器技术的发展不同步。处理器性能快速提升,而内存性能提升速度相对较慢。处理器性能和内存性能的不均衡发展造成了内存的存取速度严重滞后于处理器的计算速度,内存瓶颈导致高性能处理器难以发挥出应有的功效,这对日益增长的高性能计算形成了极大的制约。这种内存性能严重限制处理器性能发挥的现象被称为“内存墙”(Memory Wall)。
随着中央处理单元(CPU)计算能力和应用计算规模的持续快速增长,“内存墙”的问题愈发凸显。
为了解决“内存墙”问题,出现了“近存计算”或者说“让内存尽量接近计算”的概念。
传统的计算单元和内存单元是分离的,即不在同一个芯片内。因此,在传统的计算过程中,计算单元需要将数据从内存单元中提取出来,处理完成后再写回内存单元。而“存内计算”是把内存单元和计算单元结合在一起,通过让内存单元尽量靠近计算单元,缩短数据传输路径,从而降低了数据访问延迟。同时,“存内计算”设法提高访问带宽,从而有效地提升了计算性能。
现有技术中已知的一种“存内计算”结构如图1所示。在该“存内计算”结构中,内存单元采用阻变式存储器RRAM(Resistive Random Access Memory),计算单元为神经网络处理单元NPU(Neural-Network Process Units)。由于阻变式存储器RRAM和神经网络处理单元NPU使用一体化结构,神经网络处理单元NPU的访问延迟低。然而,阻变式存储器RRAM的工艺领域技术尚未成熟,结构设计不具有可扩展性,难以实现更高性能计算需求。
现有技术中,还存在一种采用硅通孔TSV(Through Silicon Via)技术的3D堆叠技术来实现“存内计算”结构。该3D堆叠技术将多个晶片堆叠在一起,使用硅通孔TSV技术将不同的晶片之间互连。这是一种三维的多层堆叠,通过硅通孔TSV实现多个晶片在垂直方向的通信。然而,在该3D堆叠技术中,存在诸多技术难点。例如,硅通孔TSV深孔的填充技术,因为硅通孔TSV深孔的填充效果直接关系到3D堆叠技术的可靠性和良率,这对于3D堆叠技术集成实用化是至关重要的。再例如,硅通孔TSV技术需要在基片减薄过程中保持良好的完整性,避免裂纹扩展。
因此,亟需解决现有技术中的上述技术问题。
发明内容
本发明提出了一种近存方案,涉及近存计算模块和方法、近存计算网络及构建方法。本发明的近存计算模块采用三维设计,将计算子模块和内存子模块设置在不同的层中,层之间优选地通过键合方式连接,且连接的总数据位宽是单个计算单元的数据位宽的正整数倍。这样,解决了存储的延迟和带宽问题。内存子模块中具有多个内存单元,能够在单个内存子模块中实现较大的内存容量。计算子模块的计算单元之间通过路由器的交换接口交换数据,且各个计算子模块之间通过路由接口访问数据,进一步提高了计算性能。该近存计算网络利用该近存计算模块,能够满足不同规模的计算需求。
根据本发明的第一方面,提供了一种近存计算模块,该近存计算模块包括:
一个计算子模块,该计算子模块包括多个计算单元;
至少一个内存子模块,该至少一个内存子模块被布置在该计算子模块的至少一侧,其中每一内存子模块包括多个内存单元且每一内存子模块与该计算子模块连接;
其中该计算子模块和该至少一个内存子模块位于同一个芯片内。
由此,包括多个内存子模块的近存计算模块能够在实现同一个芯片内的大规模计算,且计算单元在访问内存单元时能够实现低延迟,提高了计算性能。
根据本发明的近存计算模块的一个优选实施方案,该计算子模块还包括:一个路由单元;
其中该路由单元与每一计算单元连接,以及该路由单元与每一内存子模块的每一内存单元连接,以及该路由单元与至少另一近存计算模块的路由单元连接;
其中该路由单元被配置用于执行该近存计算模块的第一计算单元对该近存计算模块的第二计算单元的访问,或者对该近存计算模块的第一内存单元的访问,或者对至少另一近存计算模块的第三计算单元或者第二内存单元的访问。
根据本发明的近存计算模块的一个优选实施方案,该路由单元包括:
多个交换接口,该多个交换接口将该路由单元与每一计算单元连接;
路由接口,该路由接口将该路由单元与至少另一近存计算模块的路由单元连接;
内存控制接口,该内存控制接口将该路由单元与每一内存子模块中的每一内存单元连接。
根据本发明的近存计算模块的一个优选实施方案,该路由单元还包括:
一个交叉开关单元;
一个交换路由计算单元,该交换路由计算单元与该多个交换接口、该路由接口、该交叉开关单元连接,且该交换路由计算单元至少存储有关于该近存计算模块和该多个计算单元的路由信息,该交换路由计算单元对所接收到的数据访问请求进行解析以及基于经解析的数据访问请求信息来控制交叉开关单元的切换;
一个内存控制单元,该内存控制单元与该交叉开关单元、该内存控制接口连接,且该内存控制单元至少存储有关于该多个内存单元的路由信息,该内存控制单元响应于该交叉开关单元切换至该内存控制单元,对从该交叉开关单元所接收到的经解析的数据访问请求进行二次解析,以确定目标内存单元,且经由该内存控制接口来访问该目标内存单元。
根据本发明的近存计算模块的一个优选实施方案,每一计算单元直接地经由路由单元访问至少一个内存单元。即,路由单元对计算单元所发出的数据访问请求进行解析,直接地从该至少一个内存单元获取访问数据,以及将该访问数据转发至发出数据访问请求的计算单元,其中该数据访问请求至少包括该至少一个内存单元的地址。
根据本发明的近存计算模块的一个优选实施方案,每一计算单元间接地经由路由单元访问至少一个另一内存单元。即,路由单元对计算单元所发出的数据访问请求进行解析,将经解析的数据访问请求转发至另一计算单元,间接地经由该另一计算单元从至少一个另一内存单元获取访问数据,以及将该访问数据转发至发出数据访问请求的计算单元,其中该数据访问请求至少包括该至少一个另一内存单元的地址,其中该另一计算单元能够直接地经由路由单元访问该至少一个另一内存单元。
由此,通过路由单元实现了计算单元对于内存单元的访问请求的统一分发,且实现了内存控制功能,能够在计算单元访问内存单元时实现进一步的低延迟。
根据本发明的近存计算模块的一个优选实施方案,该路由单元与每一内存子模块的每一内存单元通过键合方式连接。
由此,内存子模块和计算子模块之间能够通过成熟的键合方式连接,实现所需要的电气性能。
根据本发明的近存计算模块的一个优选实施方案,该路由单元与每一内存子模块的每一内存单元之间连接的总数据位宽是单个计算单元的数据位宽的n倍,其中n为正整数。
由此,通过设定内存单元与路由单元之间连接的数据位宽与单个计算单元的数据位宽之间的关系,能够实现更高的数据带宽。
根据本发明的近存计算模块的一个优选实施方案,在该计算子模块中,该路由单元位于中心处,该多个计算单元围绕该路由单元分布。
根据本发明的近存计算模块的一个优选实施方案,该计算子模块还包括:至少两个路由单元,每一路由单元与至少一个计算单元连接,以及每一路由单元与每一内存子模块的至少一个内存单元连接;
该至少两个路由单元彼此连接,以构成整体路由单元,该整体路由单元与每一计算单元连接,以及该整体路由单元与每一内存子模块的每一内存单元连接,以及该整体路由单元与至少另一近存计算模块的至少另一路由单元连接;
其中该整体路由单元被配置用于执行该近存计算模块的第一计算单元对该近存计算模块的第二计算单元的访问,或者对该近存计算模块的第一内存单元的访问,或者对至少另一近存计算模块的第三计算单元或者第二内存单元的访问。
根据本发明的近存计算模块的一个优选实施方案,该至少两个路由单元中的每一路由单元包括:
多个交换接口,该多个交换接口将该路由单元与至少一个计算单元连接;
路由接口,该路由接口将该路由单元与该近存计算模块的至少另一路由单元连接,和/或与至少另一近存计算模块的至少另一路由单元连接;
内存控制接口,该内存控制接口将该路由单元与至少一个内存单元连接。
根据本发明的近存计算模块的一个优选实施方案,该至少两个路由单元通过路由接口彼此连接。
根据本发明的近存计算模块的一个优选实施方案,该至少两个路由单元中的每一路由单元包括还包括:
一个交叉开关单元;
一个交换路由计算单元,该交换路由计算单元与该多个交换接口、该路由接口、该交叉开关单元连接,且该交换路由计算单元至少存储有关于该近存计算模块和该多个计算单元的路由信息,该交换路由计算单元对从所接收到的数据访问请求进行解析以及基于经解析的数据访问请求信息来控制该交叉开关单元的切换;
一个内存控制单元,该内存控制单元与该交叉开关单元、该内存控制接口连接,且该内存控制单元至少存储有关于该多个内存单元的路由信息,该内存控制单元响应于该交叉开关单元切换至该内存控制单元,对从该交叉开关单元所接收到的经解析的数据访问请求进行二次解析,以确定待访问的内存单元,且经由该内存控制接口来访问该待访问的内存单元。
根据本发明的近存计算模块的一个优选实施方案,每一计算单元直接地经由整体路由单元访问至少一个内存单元。即,整体路由单元对计算单元所发出的数据访问请求进行解析,直接地从该至少一个内存单元获取访问数据,以及将该访问数据转发至发出数据访问请求的计算单元,其中该数据访问请求至少包括该至少一个内存单元的地址。
根据本发明的近存计算模块的一个优选实施方案,每一计算单元间接地经由整体路由单元访问至少一个另一内存单元。即,整体路由单元对计算单元所发出的数据访问请求进行解析,将经解析的数据访问请求转发至另一计算单元,间接地经由该另一计算单元从至少一个另一内存单元获取访问数据,以及将该访问数据转发至发出数据访问请求的计算单元,其中该数据访问请求至少包括该至少一个另一内存单元的地址,其中该另一计算单元能够直接地经由整体路由单元访问该至少一个另一内存单元。
根据本发明的近存计算模块的一个优选实施方案,该整体路由单元通过键合方式与每一内存子模块的每一内存单元连接。
根据本发明的近存计算模块的一个优选实施方案,每一内存单元和整体路由单元之间的总数据位宽是单个计算单元的数据位宽的n倍,其中n为正整数。
根据本发明的近存计算模块的一个优选实施方案,在该计算子模块中,该至少两个路由单元位于中心处,该多个计算单元围绕该至少两个路由单元分布。
根据本发明的近存计算模块的一个优选实施方案,在该计算子模块中,该多个计算单元位于中心处,该至少两个路由单元围绕该多个计算单元分布。
根据本发明的近存计算模块的一个优选实施方案,该内存单元包括动态随机存取存储器,该计算单元包括中央处理器。
由于动态随机存取存储器的工艺比较成熟,本发明中优选采用此类存储器。
根据本发明的近存计算模块的一个优选实施方案,该内存子模块中的内存单元的数目是至少根据该计算子模块中的该多个计算单元的总数据位宽和单个该内存单元的数据位宽来确定的。
由于内存单元的数目可以根据需求来选定,所以使得设计更为灵活。
根据本发明的近存计算模块的一个优选实施方案,该内存单元的存储容量是可定制的。
由于内存单元的存储容量可定制,提高了设计的灵活性。
根据本发明的第二方面,提供了一种近存计算方法,该近存计算方法用于上述近存计算模块(在该近存计算模块中,一个计算子模块中存在一个路由单元),该近存计算方法包括:
路由单元接收数据访问请求,该数据访问请求由第一计算单元发出且至少包括目标内存单元的地址;以及,
该路由单元对数据访问请求进行解析,从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元。
在此技术方案中,如果目标内存单元与第一计算单元位于同一个近存计算模块内,则“路由单元”指的是该近存计算模块内的路由单元,如果目标内存单元与第一计算单元不位于同一个近存计算模块内,则“路由单元”指的是第一计算单元与目标内存单元之间进行通信所需要的所有路由单元。
根据本发明的近存计算方法的一个优选实施方案,该近存计算方法还包括:
在路由单元对数据访问请求进行解析之后且在从该目标内存单元获取访问数据之前,与该第一计算单元连接的路由单元判断该第一计算单元是否能够直接地经由与该第一计算单元连接的路由单元访问该目标内存单元;
当该第一计算单元能够直接地经由与该第一计算单元连接的路由单元访问该目标内存单元时,与该第一计算单元连接的路由单元直接地从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元;以及
当该第一计算单元不能够直接地经由与该第一计算单元连接的路由单元访问该目标内存单元时,与该第一计算单元连接的路由单元将经解析的数据访问请求转发至第二计算单元,以及经由该第二计算单元从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元。
根据本发明的近存计算方法的一个优选实施方案,该近存计算方法还包括:
当该第一计算单元不能够直接地经由与该第一计算单元连接的路由单元访问该目标内存单元时且在与该第一计算单元连接的路由单元将经解析的数据访问请求转发至第二计算单元之前,与该第一计算单元连接的路由单元判断该目标内存单元与该第一计算单元是否位于同一个近存计算模块中;
当该目标内存单元与该第一计算单元位于同一个近存计算模块中时,与该第一计算单元连接的路由单元将经解析的数据访问请求直接地转发至第二计算单元,以及经由该第二计算单元从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元,其中该第二计算单元能够直接地经由与该第一计算单元连接的路由单元访问该目标内存单元;
当该目标内存单元与该第一计算单元不位于同一个近存计算模块中时,与该第一计算单元连接的路由单元将经解析的数据访问请求转发至与该第一计算单元所连接的路由单元相连接的至少另一近存计算模块的路由单元且转发至该至少另一近存计算模块的路由单元所连接的第二计算单元,以及经由该第二计算单元从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元,其中该第二计算单元能够直接地经由该至少另一近存计算模块的路由单元访问该目标内存单元。
根据本发明的第三方面,提供了一种近存计算方法,该近存计算方法用于上述近存计算模块(在该近存计算模块中,一个计算子模块中存在一个路由单元),该近存计算方法包括:
路由单元接收数据访问请求,该数据访问请求由第一计算单元发出且至少包括目标计算单元的地址;以及,
该路由单元对数据访问请求进行解析,从该目标计算单元获取访问数据且将该访问数据转发至第一计算单元。
在此技术方案中,如果目标计算单元与第一计算单元位于同一个近存计算模块内,则“路由单元”指的是该近存计算模块内的路由单元,如果目标计算单元与第一计算单元不位于同一个近存计算模块内,则“路由单元”指的是第一计算单元与目标计算单元之间进行通信所需要的所有路由单元。
根据本发明的近存计算方法的一个优选实施方案,该近存计算方法还包括:
在路由单元对数据访问请求进行解析之后且在从该目标计算单元获取访问数据之前,与该第一计算单元连接的路由单元判断该目标计算单元与该第一计算单元是否位于同一个近存计算模块中;
当该目标计算单元与该第一计算单元位于同一个近存计算模块中时,与该第一计算单元连接的路由单元直接地从该目标计算单元获取访问数据且将该访问数据转发至第一计算单元;
当该目标计算单元与该第一计算单元不位于同一个近存计算模块中时,与该第一计算单元连接的路由单元将经解析的数据访问请求转发至与该路由单元相连接的至少另一近存计算模块的路由单元,以及经由该至少另一近存计算模块的路由单元从该目标计算单元获取访问数据且将该访问数据转发至第一计算单元。
根据本发明的第四方面,提供了一种近存计算方法,该近存计算方法用于上述近存计算模块(在该近存计算模块中,一个计算子模块中存在至少两个路由单元),该近存计算方法包括:
整体路由单元接收数据访问请求,该数据访问请求由第一计算单元发出且至少包括目标内存单元的地址;以及,
该整体路由单元对数据访问请求进行解析,从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元。
在此技术方案中,如果目标内存单元与第一计算单元位于同一个近存计算模块内,则“整体路由单元”指的是该近存计算模块内的整体路由单元,如果目标内存单元与第一计算单元不位于同一个近存计算模块内,则“整体路由单元”指的是第一计算单元与目标内存单元之间进行通信所需要的所有整体路由单元。
根据本发明的近存计算方法的一个优选实施方案,该近存计算方法还包括:
在整体路由单元对数据访问请求进行解析之后且在从该目标内存单元获取访问数据之前,与该第一计算单元连接的整体路由单元判断该第一计算单元是否能够直接地经由与该第一计算单元连接的整体路由单元访问该目标内存单元;
当该第一计算单元能够直接地经由与该第一计算单元连接的整体路由单元访问该目标内存单元时,与该第一计算单元连接的整体路由单元直接地从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元;以及
当该第一计算单元不能够直接地经由与该第一计算单元连接的整体路由单元访问该目标内存单元时,与该第一计算单元连接的整体路由单元将经解析的数据访问请求转发至第二计算单元,以及经由该第二计算单元从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元。
根据本发明的近存计算方法的一个优选实施方案,该近存计算方法还包括:
当该第一计算单元不能够直接地经由与该第一计算单元连接的整体路由单元访问该目标内存单元时且在与该第一计算单元连接的整体路由单元将经解析的数据访问请求转发至第二计算单元之前,与该第一计算单元连接的整体路由单元判断该目标内存单元与该第一计算单元是否位于同一个近存计算模块中;
当该目标内存单元与该第一计算单元位于同一个近存计算模块中时,与该第一计算单元连接的整体路由单元将经解析的数据访问请求直接地转发至第二计算单元,以及经由该第二计算单元从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元,其中该第二计算单元能够直接地经由与该第一计算单元连接的整体路由单元访问该目标内存单元;
当该目标内存单元与该第一计算单元不位于同一个近存计算模块中时,与该第一计算单元连接的整体路由单元将经解析的数据访问请求转发至与该第一计算单元所连接的整体路由单元相连接的至少另一近存计算模块的整体路由单元且转发至该至少另一近存计算模块的整体路由单元所连接的第二计算单元,以及经由该第二计算单元从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元,其中该第二计算单元能够直接地经由该至少另一近存计算模块的整体路由单元访问该目标内存单元。
根据本发明的第五方面,提供了一种近存计算方法,该近存计算方法用于上述近存计算模块(在该近存计算模块中,一个计算子模块中存在至少两个路由单元),该近存计算方法包括:
整体路由单元接收数据访问请求,该数据访问请求由第一计算单元发出且至少包括目标计算单元的地址;以及,
该整体路由单元对数据访问请求进行解析,从该目标计算单元获取访问数据且将该访问数据转发至第一计算单元。
在此技术方案中,如果目标计算单元与第一计算单元位于同一个近存计算模块内,则“整体路由单元”指的是该近存计算模块内的整体路由单元,如果目标计算单元与第一计算单元不位于同一个近存计算模块内,则“整体路由单元”指的是第一计算单元与目标计算单元之间进行通信所需要的所有整体路由单元。
根据本发明的近存计算方法的一个优选实施方案,该近存计算方法还包括:
在整体路由单元对数据访问请求进行解析之后且在从该目标计算单元获取访问数据之前,与该第一计算单元连接的整体路由单元判断该目标计算单元与该第一计算单元是否位于同一个近存计算模块中;
当该目标计算单元与该第一计算单元位于同一个近存计算模块中时,与该第一计算单元连接的整体路由单元直接地从该目标计算单元获取访问数据且将该访问数据转发至第一计算单元;
当该目标计算单元与该第一计算单元不位于同一个近存计算模块中时,与该第一计算单元连接的整体路由单元将经解析的数据访问请求转发至与该整体路由单元相连接的至少另一近存计算模块的整体路由单元,以及经由该至少另一近存计算模块的整体路由单元从该目标计算单元获取访问数据且将该访问数据转发至第一计算单元。
根据本发明的第六方面,提供了一种近存计算网络,该近存计算网络包括:
多个近存计算模块,该多个近存计算模块为多个上述近存计算模块,该多个近存计算模块之间通过路由单元连接。
根据本发明的近存计算网络的一个优选实施方案,该多个近存计算模块被连接成总线型、星型、环型、树型、网状和混合型拓扑结构。
根据本发明的近存计算网络的一个优选实施方案,该多个近存计算模块之间通过路由单元经由金属线连接。
根据本发明的第七方面,提供了一种近存计算模块的构建方法,该构建方法包括:
将至少一个内存子模块布置在该计算子模块的至少一侧,其中每一内存子模块包括多个内存单元,以及该计算子模块包括多个计算单元;
将每一内存子模块与该计算子模块连接;
其中将该计算子模块和该至少一个内存子模块布置于同一个芯片内。
根据本发明的构建方法的一个优选实施方案,该计算子模块进一步包括:一个路由单元;
该构建方法还包括:
将该路由单元与每一计算单元连接,且将该路由单元与每一内存子模块的每一内存单元连接,且将该路由单元与至少另一近存计算模块的路由单元连接,以及将该路由单元配置用于执行该近存计算模块的第一计算单元对该近存计算模块的第二计算单元的访问,或者对该近存计算模块的第一内存单元的访问,或者对至少另一近存计算模块的第三计算单元或者第二内存单元的访问。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
将该路由单元的多个交换接口与每一计算单元连接;
将该路由单元的路由接口与至少另一近存计算模块的路由单元的路由接口连接;
将该路由单元的内存控制接口与每一内存子模块中的每一内存单元连接。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
将该路由单元的交换路由计算单元与该多个交换接口、该路由接口、一个交叉开关单元连接,且至少将关于该近存计算模块和该多个计算单元的路由信息存储在在该交换路由计算单元中,以及将该交换路由计算单元配置为对所接收到的数据访问请求进行解析以及基于经解析的数据访问请求信息来控制该交叉开关单元的切换;
将该路由单元的内存控制单元与该交叉开关单元、该内存控制接口连接,且至少将该多个内存单元的路由信息存储在该内存控制单元中,以及将该内存控制单元配置为响应于该交叉开关单元切换至该内存控制单元,对从该交叉开关单元所接收到的经解析的数据访问请求进行二次解析,以确定目标内存单元,且经由该内存控制接口来访问该目标内存单元。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:将每一计算单元配置为直接地经由路由单元访问至少一个内存单元。即,路由单元对计算单元所发出的数据访问请求进行解析,直接地从该至少一个内存单元获取访问数据,以及将该访问数据转发至发出数据访问请求的计算单元,其中该数据访问请求至少包括该至少一个内存单元的地址。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:将每一计算单元配置为间接地经由路由单元访问至少一个另一内存单元。即,路由单元对计算单元所发出的数据访问请求进行解析,将经解析的数据访问请求转发至另一计算单元,间接地经由该另一计算单元从至少一个另一内存单元获取访问数据,以及将该访问数据转发至发出数据访问请求的计算单元,其中该数据访问请求至少包括该至少一个另一内存单元的地址,其中该另一计算单元能够直接地经由路由单元访问该至少一个另一内存单元。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:通过键合方式将该路由单元与每一内存子模块的每一内存单元连接。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:将该路由单元与每一内存子模块的每一内存单元之间连接的总数据位宽设置成单个计算单元的数据位宽的n倍,其中n为正整数。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:在该计算子模块中,将该路由单元布置于中心处,且将该多个计算单元布置为围绕该路由单元分布。
根据本发明的构建方法的一个优选实施方案,该计算子模块进一步包括:至少两个路由单元,其中每一路由单元与至少一个计算单元连接,以及每一路由单元与每一内存子模块的至少一个内存单元连接;
该构建方法还包括:
将该至少两个路由单元彼此连接,以构成整体路由单元,且将该整体路由单元与每一计算单元连接,以及将该整体路由单元与每一内存子模块的每一内存单元连接,以及将该整体路由单元与至少另一近存计算模块的至少另一路由单元连接;
将该整体路由单元配置用于执行该近存计算模块的第一计算单元对该近存计算模块的第二计算单元的访问,或者对该近存计算模块的第一内存单元的访问,或者对另一近存计算模块的第三计算单元或者第二内存单元的访问。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
将该至少两个路由单元中的每一路由单元的多个交换接口与至少一个计算单元连接;
将该至少两个路由单元中的每一路由单元的路由接口与该近存计算模块的至少另一路由单元的路由接口连接,和/或将该至少两个路由单元中的每一路由单元的路由接口与至少另一近存计算模块的至少另一路由单元的路由接口连接;
将该至少两个路由单元中的每一路由单元的内存控制接口与至少一个内存单元连接。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
将该至少两个路由单元通过路由接口彼此连接。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
将该至少两个路由单元中的每一路由单元的交换路由计算单元与该多个交换接口、该路由接口、一个交叉开关单元连接,且至少将关于该近存计算模块和该多个计算单元的路由信息存储在在该交换路由计算单元中,以及将该交换路由计算单元配置为对从所接收到的数据访问请求进行解析以及基于经解析的数据访问请求信息来控制该交叉开关单元的切换;
将该至少两个路由单元中的每一路由单元的内存控制单元与该交叉开关单元、该内存控制接口连接,且至少将该多个内存单元的路由信息存储在该内存控制单元中,以及将该内存控制单元配置为响应于该交叉开关单元切换至该内存控制单元,对从该交叉开关单元所接收到的经解析的数据访问请求进行二次解析,以确定待访问的内存单元,且经由该内存控制接口来访问该待访问的内存单元。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
将每一计算单元配置为直接地经由整体路由单元访问至少一个内存单元。即,整体路由单元对计算单元所发出的数据访问请求进行解析,直接地从该至少一个内存单元获取访问数据,以及将该访问数据转发至发出数据访问请求的计算单元,其中该数据访问请求至少包括该至少一个内存单元的地址。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
将每一计算单元配置为间接地经由整体路由单元访问至少一个另一内存单元。即,整体路由单元对计算单元所发出的数据访问请求进行解析,将经解析的数据访问请求转发至另一计算单元,间接地经由该另一计算单元从至少一个另一内存单元获取访问数据,以及将该访问数据转发至发出数据访问请求的计算单元,其中该数据访问请求至少包括该至少一个另一内存单元的地址,其中该另一计算单元能够直接地经由整体路由单元访问该至少一个另一内存单元。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
通过键合方式将该整体路由单元与每一内存子模块的每一内存单元连接。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
将每一内存单元和整体路由单元之间的总数据位宽设置成单个计算单元的数据位宽的n倍,其中n为正整数。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
在该计算子模块中,将该至少两个路由单元布置于中心处,且将该多个计算单元布置为围绕该至少两个路由单元分布。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
在该计算子模块中,将该多个计算单元布置于中心处,且将该至少两个路由单元布置为围绕该多个计算单元分布。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
将该内存单元设置成包括动态随机存取存储器,且将该计算单元设置成包括中央处理器。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
至少根据该计算子模块中的该多个计算单元的总数据位宽和单个该内存单元的数据位宽来确定该内存子模块中的内存单元的数目。
根据本发明的构建方法的一个优选实施方案,将该内存单元的存储容量设置成是可定制的。
根据本发明的第八方面,提供了一种近存计算网络的构建方法,该构建方法包括:
将多个近存计算模块通过路由单元连接,其中该多个近存计算模块为多个上述近存计算模块。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
将该多个近存计算模块连接成总线型、星型、环型、树型、网状和混合型拓扑结构。
根据本发明的构建方法的一个优选实施方案,该构建方法还包括:
通过路由单元经由金属线连接该多个近存计算模块。
附图说明
通过下文结合对附图的说明,将更容易理解本发明,其中:
图1是现有技术中的近存计算结构的示意图。
图2是根据本发明的一个实施方案的近存计算模块的示意图。
图3是根据本发明的一个实施方案的路由单元的示意图。
图4是根据本发明的一个实施方案的近存计算方法的流程图。
图5是根据本发明的另一实施方案的近存计算方法的流程图。
图6是根据本发明的一个实施方案的近存计算模块的构建方法的流程图。
图7是根据本发明的一个实施方案的近存计算网络的示意图。
具体实施方式
下面将结合附图来对本发明的实施方案进行进一步详述。
图2是根据本发明的一个实施方案的近存计算模块20的示意图。
图2中示出的近存计算模块20包括一个计算子模块(计算单元201和路由单元202所处的“层”或子模块)和一个内存子模块(内存单元203所处的“层”或子模块),且该内存子模块被布置在该计算子模块的一侧(如图2中所示,内存子模块被布置在计算子模块的下方)。
然而,本发明并不限于一个内存子模块,也可以包括多于一个的内存子模块。在包括多于一个的内存子模块的情况下,这些内存子模块可以布置在计算子模块的两侧(例如,参照图2中内存子模块被布置在计算子模块的下方的情形,在内存子模块布置在计算子模块的两侧的情况下,这些内存子模块也可以被布置在图2中的计算子模块的上方)。
图2中示出的计算子模块和内存子模块距离很近,位于同一个芯片内且构成了一个完整的系统。该完整的系统也称为近存计算模块,又称为近存计算节点。
如图2中所示,计算子模块中包括四个计算单元201和一个路由单元202,内存子模块中包括十二个内存单元203。由于计算子模块和内存子模块位于同一个芯片内,所以计算单元201和内存单元203也被集成在一起,从而计算单元201在访问内存单元203时的延迟很小。
内存单元203是用于存储计算单元201中的运算数据以及与硬盘等外存储器交换的数据的单元。由于动态随机存取存储器的工艺比较成熟,所以在本发明中,内存单元203优选地采用动态随机存取存储器。
内存单元203的数目是至少根据计算子模块中的计算单元201的总数据位宽和单个该内存单元203的数据位宽来确定的。
例如,如果计算子模块中存在四个计算单元201,四个计算单元201的总数据位宽为96比特,单个内存单元203的数据位宽为8比特,则所需要的内存单元203的个数是十二个(如图2中所示)。
另外,内存单元203的存储容量也可以根据需求进行定制。
计算单元201是信息处理、程序运行的最终执行单元,优选的是中央处理器。
路由单元202与每一计算单元201以及每一内存单元203连接。另外,路由单元202会与至少另一近存计算模块的路由单元202连接。路由单元202的主要功能为执行一个近存计算模块的一个计算单元201对该近存计算模块的另一计算单元202的访问,或者对该近存计算模块的一个内存单元203的访问,或者对至少另一近存计算模块的计算单元202或者内存单元203的访问。
每一计算单元201能够“直接地”经由路由单元202访问该计算单元所对应的内存单元203。
例如,参考图2,假定左上角的计算单元201能够“直接地”经由路由单元202访问左上角的三个内存单元203,左下角的计算单元201能够“直接地”经由路由单元202访问左下角的三个内存单元203,右上角的计算单元201能够“直接地”经由路由单元202访问右上角的三个内存单元203,右下角的计算单元201能够“直接地”经由路由单元202访问右下角的三个内存单元203。在此,“左上角”、“左下角”、“右上角”、“右下角”为读者从图2的横向方向上(图2的横向方向长于图2的竖向方向)观察图2时的方位且是相对于路由单元202的方位,且此处为出于例示目的所进行的假设。
也就是说,如果左上角的计算单元201发出对于左上角的三个内存单元203中的任一个的数据访问请求,则路由单元202能够解析该数据访问请求,“直接地”从左上角的三个内存单元203中的任一个获取访问数据且将访问数据返回至左上角的计算单元201。
另外,每一计算单元201能够“间接地”经由路由单元202访问另一些内存单元203。
再次参考图2且延续之前的假定,如果左上角的计算单元201发出对于右上角的三个内存单元203中的任一个的数据访问请求,则路由单元202能够解析该数据访问请求,且将经解析的数据访问请求发送至右上角的计算单元201,“间接地”经由该右上角的计算单元201从右上角的三个内存单元203中的任一个获取访问数据且将访问数据返回至左上角的计算单元201。
也就是说,计算单元201能够经由路由单元202“直接地”或“间接地”访问一个近存计算模块中的所有内存单元203。稍后将关于图3来进一步详细描述路由单元202的具体结构。
图2中示出了计算子模块中的多个计算单元201和路由单元202分布的一个实施例,其中多个计算单元201围绕在路由单元202两侧。然而,这种分布是示意性的而非限制性的。
多个计算单元201围绕在路由单元202周围,或者多个计算单元201分布在路由单元202的一侧等也落入本发明的范围内。
在图2中,计算子模块和内存子模块需要借助于路由单元202进行数据接口的连接,优选地采用三维连接206工艺进行连接。
常用的三维连接206工艺包括键合方式、硅通孔(Through Si Vias,TSV)、倒装芯片以及晶圆级封装。在本发明中,三维连接206工艺优选地采用键合方式。
键合是一种常用的三维连接工艺,是一种芯片内的晶圆堆叠工艺。具体地,键合是将金属线通过一定工艺使晶圆连接在一起,以实现所需要的电气特性。
另外,为了缓解数据传输压力,内存子模块中的每一内存单元203与计算子模块中的路由单元202之间连接的总数据位宽应当是计算子模块中的单个计算单元201的数据位宽的n倍,其中n为正整数。
在图2中,计算子模块中的计算单元201与内存子模块中的内存单元203之间的访问需要经过路由单元202之间的连接。如果连接的总数据位宽与单个计算单元201相同,在计算子模块中的计算单元201与内存子模块中的内存单元203之间的数据访问操作频繁(即,数据吞吐率高)的情况下,计算子模块中的计算单元201与内存子模块中的内存单元203之间的数据吞吐率也随之增加,连接可能出现拥塞。因此,将连接的总数据位宽设置成单个计算单元201的数据位宽的正整数倍。
应理解,正整数n的具体值是根据业务需求来设置的。例如,一般的系统设计可以根据业务仿真得出芯片内的不同计算子模块之间的数据传输的带宽需求,根据带宽需求可以得出所需的数据位宽。
假设计算子模块中的计算单元201与内存子模块中的内存单元203之间的数据带宽需求为144Gb/s,而现有的连接的总数据位宽为72b、时钟为1GHz,则连接的总数据带宽将是72Gb/s。此时,就需要考虑将连接的总数据位宽提高至144b,以此来适配数据带宽需求。
图3是根据本发明的一个实施方案的路由单元202的示意图。
图3示出了路由单元202的外部接口,这些外部接口主要包括交换接口、路由接口和内存控制接口。应理解,为了不模糊本发明的主旨,图3中仅示出了本发明所涉及到的外部接口,这些外部接口是示例性而非限制性的。
在图3中,交换接口示出为内存前端总线(Memory Front Bus,MFB)接口301,这些内存前端总线接口301分别与计算单元201(图2中示出)连接。
路由接口示出为内存前端路由(Memory Front Routing,MFR)接口302,这些内存前端路由接口302与至少另一近存计算模块的路由单元的路由接口连接。
内存控制接口示出为DDR操作接口(DDRIO-bonding),该DDR操作接口与内存单元203连接。
图3中另外示出了路由单元202的内部构造,这些内部构造主要包括交换路由计算单元304、交叉开关单元305和内存控制单元306。应理解,为了不模糊本发明的主旨,图3中仅示出了本发明所涉及到的内部构造,这些内部构造是示例性而非限制性的。应理解,路由单元202也应当包括一些缓冲电路、数字模拟电路等。诸如,缓冲电路会对多个计算单元201的数据访问请求进行缓冲和优先级排序,数字模拟电路诸如可以配合内存控制单元306进行操作,等等。
在本发明中,交换路由计算单元304存储有关于计算单元201的路由信息。该路由信息可以以诸如路由表的形式存储。由此,交换路由计算单元304能够确定关于数据访问请求中的计算单元201是否能够“直接地”经由路由器访问一个内存单元的信息等。
此外,交换路由计算单元304还存储有关于近存计算模块的路由信息。该路由信息也可以以诸如路由表的形式存储。由此,交换路由计算单元304能够确定内存地址或目标计算单元地址在哪个近存计算模块内(是在本近存计算模块内,还是在另一近存计算模块内)等。例如,基于目标内存地址或目标计算单元地址中的某一特定位置信息(诸如,第一位)与该路由信息,交换路由计算单元304能够判断目标内存地址或目标计算单元地址在哪个近存计算模块内。举例而言,如果目标内存地址或目标计算单元地址的第一位为1,则表示目标内存或目标计算单元在第一近存计算模块中;如果目标内存地址或目标计算单元地址的第一位为3,则表示目标内存或目标计算单元在第三近存计算模块中。
另外,交换路由计算单元304能够从交换接口接收数据访问请求,也可以从路由接口接收数据访问请求。在近存计算模块的计算子模块201包括单个路由单元的情况下(如图2中所示的情形),交换路由计算单元304经由交换接口接收本近存计算模块的计算子模块201的计算单元所发出的数据访问请求,且经由路由接口接收另一个近存计算模块的计算单元发出的数据访问请求。
内存控制单元306存储有关于内存单元203的路由信息。由此,内存控制单元306能够确定关于数据访问请求中的内存单元对应的端口信息,等等。
图4是根据本发明的一个实施方案的近存计算方法的流程图。
该近存计算方法包括如下步骤:
步骤S401:计算子模块中的路由单元接收数据访问请求,该数据访问请求由该计算子模块中的第一计算单元发出且至少包括目标内存单元的地址。
步骤S402:路由单元通过交换接口接收数据访问请求,对数据访问请求进行解析,该路由单元判断该目标内存单元与该第一计算单元是否位于同一个近存计算模块中。
如果该目标内存单元与该第一计算单元不位于同一个近存计算模块中,则执行步骤S403:该路由单元将经解析的数据访问请求转发至与该路由单元相连接的另一近存计算模块的路由单元且转发至该另一近存计算模块的路由单元所连接的第二计算单元,以及经由该第二计算单元从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元。
如果该目标内存单元与该第一计算单元位于同一个近存计算模块中,则执行步骤S404:该路由单元判断该第一计算单元是否能够直接地访问该目标内存单元。
如果该第一计算单元能够直接地访问该目标内存单元,则执行步骤S405:该路由单元直接地从该目标内存单元获取访问数据且将该访问数据转发至该第一计算单元。
如果该第一计算单元不能够直接地访问该目标内存单元,则执行步骤S406:该路由单元将经解析的数据访问请求直接转发至第二计算单元,以及经由该第二计算单元从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元。
图4中的方法流程图仅是示意性的,并非必须按照此顺序执行。例如,可以先判断第一计算单元是否能够直接地访问该目标内存单元,然后判断目标内存单元与第一计算单元是否位于同一个近存计算模块中。
图5是根据本发明的另一实施方案的近存计算方法的流程图。
该近存计算方法包括如下步骤:
步骤S501:计算子模块中的路由单元接收数据访问请求,该数据访问请求由该计算子模块中的第一计算单元发出且至少包括目标计算单元的地址。
步骤S502:路由单元通过交换接口接收数据访问请求,对数据访问请求进行解析,判断该目标计算单元与该第一计算单元是否位于同一个近存计算模块中。
如果该目标计算单元与该第一计算单元位于同一个近存计算模块中,则执行步骤S503:该路由单元直接从该目标计算单元获取访问数据且将该访问数据转发至第一计算单元。
如果该目标计算单元与该第一计算单元不位于同一个近存计算模块中,则执行步骤S504:该路由单元将经解析的数据访问请求转发至与该路由单元相连接的另一近存计算模块的路由单元,以及经由该另一近存计算模块的路由单元从该目标计算单元获取访问数据且将该访问数据转发至第一计算单元。
下面结合图2和图3,针对近存计算模块中如下五种数据流处理的情形来进一步理解路由单元202的外部接口和内部构造以及图4和图5中的近存计算方法。
再次参考图2,仍假定左上角的计算单元201能够“直接地”经由路由单元202访问左上角的三个内存单元203,左下角的计算单元201能够“直接地”经由路由单元202访问左下角的三个内存单元203,右上角的计算单元201能够“直接地”经由路由单元202访问右上角的三个内存单元203,右下角的计算单元201能够“直接地”经由路由单元202访问右下角的三个内存单元203。
另外,假定左上角的计算单元201通过交换接口MFB0与路由单元202连接,左下角的计算单元201通过交换接口MFB1与路由单元202连接。
情形(一):左上角的计算单元201访问左上角的三个内存单元203中的任一个
左上角的计算单元201通过交换接口MFB0向交换路由计算单元304发送数据访问请求,交换路由计算单元304对该数据访问请求进行解析得出目标内存地址,且判断目标内存地址是否处于同一近存计算模块内(但是并不解析出具体为哪个内存单元)(在该情形中,判断处于同一近存计算模块内),以及判断出左上角的计算单元201是否能够“直接地”访问左上角的三个内存单元203(在该情形中,判断能够“直接地”访问)。
之后,该交换路由计算单元304在其所存储的关于计算单元和近存计算模块的路由信息中查询目标内存地址,确定与目标内存地址对应的端口信息,进而控制交叉开关单元305的打开及闭合,使得将经解析的数据访问请求发送至内存控制单元306中进行二次解析,得出需要具体访问哪个内存单元(左上角的三个内存单元203中的任一个),之后通过内存控制(DDRIO-bonding)接口访问左上角的三个内存单元203中的任一个。
情形(二):左上角的计算单元201访问左下角的三个内存单元203中的任一个
左上角的计算单元201通过交换接口MFB0向交换路由计算单元304发送数据访问请求,交换路由计算单元304对该数据访问请求进行解析得出目标内存地址,且判断目标内存地址是否处于同一近存计算模块内(但是并不解析出具体为哪个内存单元)(在该情形中,判断处于同一近存计算模块内),以及判断出左上角的计算单元201是否能够“直接地”访问左上角的三个内存单元203(在该情形中,判断不能够“直接地”访问)。
之后,该交换路由计算单元304在其所存储的关于计算单元和近存计算模块的路由信息中查询目标内存地址,确定与目标内存地址对应的端口信息,进而控制交叉开关单元305的打开及闭合,使得将经解析的数据访问请求通过交换接口MFB1发送至左下角的计算单元201,该左下角的计算单元201执行如情形(一)中的操作,之后通过内存控制(DDRIO-bonding)接口访问左上角的三个内存单元203中的任一个。
情形(三):左上角的计算单元201访问另一近存计算模块的内存单元203
左上角的计算单元201通过交换接口MFB0向交换路由计算单元304发送数据访问请求,交换路由计算单元304对该数据访问请求进行解析得出目标内存地址,且判断目标内存地址是否处于同一近存计算模块内(但是并不解析出具体为哪个内存单元)(在该情形中,判断不处于同一近存计算模块内)。
之后,该交换路由计算单元304控制交叉开关单元305的打开及闭合,通过路由接口MFR将经解析的数据访问请求发送至另一近存计算模块。
另一近存计算模块执行如上述情形(一)和情形(二)中的操作,且之后通过另一近存计算模块的路由单元的内存控制(DDRIO-bonding)接口访问另一近存计算模块的内存单元203。
情形(四):左上角的计算单元201访问左下角的计算单元201
左上角的计算单元201通过交换接口MFB0向交换路由计算单元304发送数据访问请求,交换路由计算单元304对该数据访问请求进行解析得出目标计算单元地址,且判断目标计算单元地址是否处于同一近存计算模块内(在该情形中,判断处于同一近存计算模块内)。
之后,该交换路由计算单元304在其所存储的关于计算单元和近存计算模块的路由信息中查询目标计算单元地址,确定与目标计算单元地址对应的端口信息,进而控制交叉开关单元305的打开及闭合,通过交换接口MFB1访问左下角的计算单元201。
情形(五):左上角的计算单元201访问另一近存计算模块的计算单元201
左上角的计算单元201通过交换接口MFB0向交换路由计算单元304发送数据访问请求,交换路由计算单元304对该数据访问请求进行解析得出目标计算单元地址,且判断目标计算单元地址是否处于同一近存计算模块内(在该情形中,判断不处于同一近存计算模块内)。
之后,该交换路由计算单元304控制交叉开关单元305的打开及闭合,通过路由接口MFR将经解析的数据访问请求发送至另一近存计算模块。
另一近存计算模块执行如上述情形(四)中的操作,且之后通过另一近存计算模块的路由单元的交换接口301实现对另一近存计算模块的计算单元201的访问。
图6是根据本发明的一个实施方案的近存计算模块的构建方法的流程图。
该近存计算模块的构建方法包括如下步骤:
步骤S601:将至少一个内存子模块布置在该计算子模块的一侧或两侧,其中每一内存子模块包括多个内存单元203,以及该计算子模块包括多个计算单元201。
步骤S602:将每一内存子模块与该计算子模块连接。
步骤S603:将该计算子模块和该至少一个内存子模块布置于同一个芯片内。
图7是根据本发明的一个实施方案的近存计算网络的示意图。
图7中所示出的近存计算网络包括:多个近存计算模块70,该多个近存计算模块70为多个如上所述的近存计算模块,该多个近存计算模块70之间通过路由单元连接。
通过将近存计算模块的互联和拓扑,可形成高的数据带宽和高性能计算需求。
图7中所示出的是一种典型的网状mesh拓扑结构。应理解,多个近存计算模块也可以被连接成总线型、星型、环型、树型和混合型拓扑结构。
在本发明中,该多个近存计算模块之间通过路由单元经由金属线连接701。此处的金属线连接是传统用于二维连接中的金属线连接。
本发明中均是以计算子模块中包括单个路由单元202为实施例。然而,本发明并不限于一个路由单元,也可以包括多于一个的路由单元。在包括多于一个的路由单元的情况下,这些路由单元之间可以通过路由接口MFR连接(类似于一个近存计算模块的路由接口MFR与另一近存计算模块的路由接口MFR之间的操作),构成整体路由单元。
该整体路由单元对外部呈现与图2所示的单个路由单元202相同的功能。与图2中的单个路由单元202的不同之处在于,该整体路由单元中的每一路由单元并非与内存子模块中的每一内存单元都连接。另外,由于计算子模块中包括多于一个的路由单元,交换路由计算单元304会经由交换接口或者路由接口接收本近存计算模块中的计算子模块的计算单元所发出的数据访问请求,且经由路由接口接收另一个近存计算模块的计算单元发出的数据访问请求。
例如,如果计算子模块中存在两个路由单元,这两个路由单元构成整体路由单元。例如,假设图2中存在两个路由单元:路由单元A和路由单元B,路由单元A与左上角的计算单元201、左下角的计算单元201连接,以及与左上角的三个内存单元203、左下角的三个内存单元203连接,路由单元B与右上角的计算单元201、右下角的计算单元201连接,以及与右上角的三个内存单元203、右下角的三个内存单元203连接。
如果与路由单元A连接的左上角的计算单元201需要访问右下角的三个内存单元203中的任一个,则需要通过路由单元A和路由单元B之间的路由接口MFR进行连接来访问,操作类似于上述情形(三)。具体如下:
在路由器A中,左上角的计算单元201通过交换接口MFB0向交换路由计算单元304发送数据访问请求,交换路由计算单元304对该数据访问请求进行解析得出目标内存地址,且判断目标内存地址是否处于路由器A的寻址范围内(在该情形中,判断不处于路由器A的寻址范围内)。之后,交换路由计算单元304控制交叉开关单元305的打开及闭合,通过路由接口MFR将经解析的数据访问请求发送至路由器B,通过路由器B访问右下角的三个内存单元203中的任一个。
应注意,上文所提及的实施方案例示而非限制本发明,且在不脱离所附权利要求的范围的前提下,本领域技术人员将能够设计许多替代实施方案。应理解,本发明的范围由权利要求限定。

Claims (10)

1.一种近存计算模块,其特征在于,
该近存计算模块包括:
一个计算子模块,该计算子模块包括多个计算单元;
至少一个内存子模块,该至少一个内存子模块被布置在该计算子模块的至少一侧,其中每一内存子模块包括多个内存单元且每一内存子模块与该计算子模块连接;
其中该计算子模块和该至少一个内存子模块位于同一个芯片内。
2.根据权利要求1所述的近存计算模块,其特征在于,
该计算子模块还包括:一个路由单元;
其中该路由单元与每一计算单元连接,以及该路由单元与每一内存子模块的每一内存单元连接,以及该路由单元与至少另一近存计算模块的路由单元连接;
其中该路由单元被配置用于执行该近存计算模块的第一计算单元对该近存计算模块的第二计算单元的访问,或者对该近存计算模块的第一内存单元的访问,或者对至少另一近存计算模块的第三计算单元或者第二内存单元的访问。
3.根据权利要求1所述的近存计算模块,其特征在于,
该计算子模块还包括:至少两个路由单元,每一路由单元与至少一个计算单元连接,以及每一路由单元与每一内存子模块的至少一个内存单元连接;
该至少两个路由单元彼此连接,以构成整体路由单元,该整体路由单元与每一计算单元连接,以及该整体路由单元与每一内存子模块的每一内存单元连接,以及该整体路由单元与至少另一近存计算模块的至少另一路由单元连接;
其中该整体路由单元被配置用于执行该近存计算模块的第一计算单元对该近存计算模块的第二计算单元的访问,或者对该近存计算模块的第一内存单元的访问,或者对至少另一近存计算模块的第三计算单元或者第二内存单元的访问。
4.一种近存计算方法,该近存计算方法用于权利要求2所述的近存计算模块,其特征在于,
该近存计算方法包括:
路由单元接收数据访问请求,该数据访问请求由第一计算单元发出且至少包括目标内存单元的地址;以及,
该路由单元对数据访问请求进行解析,从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元。
5.一种近存计算方法,该近存计算方法用于权利要求2所述的近存计算模块,其特征在于,
该近存计算方法包括:
路由单元接收数据访问请求,该数据访问请求由第一计算单元发出且至少包括目标计算单元的地址;以及,
该路由单元对数据访问请求进行解析,从该目标计算单元获取访问数据且将该访问数据转发至第一计算单元。
6.一种近存计算方法,该近存计算方法用于权利要求3所述的近存计算模块,其特征在于,
该近存计算方法包括:
整体路由单元接收数据访问请求,该数据访问请求由第一计算单元发出且至少包括目标内存单元的地址;以及,
该整体路由单元对数据访问请求进行解析,从该目标内存单元获取访问数据且将该访问数据转发至第一计算单元。
7.一种近存计算方法,该近存计算方法用于权利要求3所述的近存计算模块,其特征在于,
该近存计算方法包括:
该整体路由单元接收数据访问请求,该数据访问请求由第一计算单元发出且至少包括目标计算单元的地址;以及,
整体路由单元对数据访问请求进行解析,从该目标计算单元获取访问数据且将该访问数据转发至第一计算单元。
8.一种近存计算网络,其特征在于,该近存计算网络包括:
多个近存计算模块,该多个近存计算模块为多个根据权利要求1-3中的任一项所述的近存计算模块,该多个近存计算模块之间通过路由单元连接。
9.一种近存计算模块的构建方法,其特征在于,
该构建方法包括:
将至少一个内存子模块布置在该计算子模块的至少一侧,其中每一内存子模块包括多个内存单元,以及该计算子模块包括多个计算单元;
将每一内存子模块与该计算子模块连接;
其中将该计算子模块和该至少一个内存子模块布置于同一个芯片内。
10.一种近存计算网络的构建方法,其特征在于,
该构建方法包括:
将多个近存计算模块通过路由单元连接,其中该多个近存计算模块为多个根据权利要求1-3中的任一项所述的近存计算模块。
CN202010753117.2A 2020-07-30 2020-07-30 近存计算模块和方法、近存计算网络及构建方法 Pending CN113688065A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010753117.2A CN113688065A (zh) 2020-07-30 2020-07-30 近存计算模块和方法、近存计算网络及构建方法
US18/016,945 US20230350827A1 (en) 2020-07-30 2021-01-26 Near-memory computing module and method, near-memory computing network and construction method
PCT/CN2021/073752 WO2022021822A1 (zh) 2020-07-30 2021-01-26 近存计算模块和方法、近存计算网络及构建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010753117.2A CN113688065A (zh) 2020-07-30 2020-07-30 近存计算模块和方法、近存计算网络及构建方法

Publications (1)

Publication Number Publication Date
CN113688065A true CN113688065A (zh) 2021-11-23

Family

ID=78576105

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010753117.2A Pending CN113688065A (zh) 2020-07-30 2020-07-30 近存计算模块和方法、近存计算网络及构建方法

Country Status (3)

Country Link
US (1) US20230350827A1 (zh)
CN (1) CN113688065A (zh)
WO (1) WO2022021822A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115981751A (zh) * 2023-03-10 2023-04-18 之江实验室 一种近存计算系统以及近存计算方法、装置、介质及设备
CN116089356A (zh) * 2023-04-11 2023-05-09 北京红山微电子技术有限公司 近存计算装置、近存计算方法、集成电路及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116094882B (zh) * 2022-11-07 2023-09-22 南京大学 基于模拟存内计算的调制、解调方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198349B2 (en) * 2016-09-19 2019-02-05 Advanced Micro Devices, Inc. Programming in-memory accelerators to improve the efficiency of datacenter operations
CN108139971B (zh) * 2016-09-29 2020-10-16 华为技术有限公司 一种可扩展内存的芯片
CN109240605B (zh) * 2018-08-17 2020-05-19 华中科技大学 一种基于3d堆叠内存的快速重复数据块识别方法
KR102605616B1 (ko) * 2018-10-05 2023-11-24 에스케이하이닉스 주식회사 Tsv들을 갖는 메모리 스택을 포함하는 반도체 모듈
CN110770901A (zh) * 2019-09-11 2020-02-07 长江存储科技有限责任公司 具有处理器和静态随机存取存储器的键合半导体器件及其形成方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115981751A (zh) * 2023-03-10 2023-04-18 之江实验室 一种近存计算系统以及近存计算方法、装置、介质及设备
CN116089356A (zh) * 2023-04-11 2023-05-09 北京红山微电子技术有限公司 近存计算装置、近存计算方法、集成电路及存储介质

Also Published As

Publication number Publication date
WO2022021822A1 (zh) 2022-02-03
US20230350827A1 (en) 2023-11-02

Similar Documents

Publication Publication Date Title
CN113688065A (zh) 近存计算模块和方法、近存计算网络及构建方法
US10681136B2 (en) Memory network methods, apparatus, and systems
US12124736B2 (en) In-memory computing module and method, and in-memory computing network and construction method therefor
US10348563B2 (en) System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US8265070B2 (en) System and method for implementing a multistage network using a two-dimensional array of tiles
US11837503B2 (en) Scalable and flexible architectures for integrated circuit (IC) design and fabrication
US7505457B2 (en) Method and apparatus for providing an interconnection network function
US10243881B2 (en) Multilayer 3D memory based on network-on-chip interconnection
CN109564914A (zh) 用于堆叠硅互连(ssi)技术集成的独立接口
US20130073814A1 (en) Computer System
JP7349812B2 (ja) メモリシステム
WO2023030053A1 (zh) 一种llc芯片、缓存系统以及llc芯片的读写方法
WO2023030051A1 (zh) 一种堆叠芯片
WO2022173700A1 (en) Memory interface with configurable high-speed serial data lanes for high bandwidth memory
CN108241484A (zh) 基于高带宽存储器的神经网络计算装置和方法
CN105095148B (zh) 一种混合型三维片上网络
CN116260760A (zh) 一种在多芯粒互连网络中基于流量感知的拓扑重构方法
CN215601334U (zh) 3d-ic基带芯片、堆叠芯片
CN111786894B (zh) 实现片上网络传输带宽扩充功能的fpga装置
CN105049362A (zh) 一种二维环绕网格片上网络的拓扑结构以及路由方法
US20240184738A1 (en) Configurable memory pool system
CN216119560U (zh) 一种llc芯片及缓存系统
US11750510B2 (en) FPGA device for implementing expansion of transmission bandwidth of network-on-chip
Vivet et al. Interconnect challenges for 3D multi-cores: From 3D network-on-chip to cache interconnects
US20240354263A1 (en) Interconnection clustering architecture in system-on-chip and method for facilitating data accessing and data transfer operations using the same

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