CN114385538A - 电路中的管线合并 - Google Patents
电路中的管线合并 Download PDFInfo
- Publication number
- CN114385538A CN114385538A CN202111222996.7A CN202111222996A CN114385538A CN 114385538 A CN114385538 A CN 114385538A CN 202111222996 A CN202111222996 A CN 202111222996A CN 114385538 A CN114385538 A CN 114385538A
- Authority
- CN
- China
- Prior art keywords
- transaction
- memory
- vectors
- chiplet
- memory controller
- 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
Links
- 239000013598 vector Substances 0.000 claims abstract description 212
- 239000000872 buffer Substances 0.000 claims abstract description 135
- 238000000034 method Methods 0.000 claims abstract description 52
- 230000004044 response Effects 0.000 claims abstract description 46
- 230000015654 memory Effects 0.000 claims description 245
- 238000012546 transfer Methods 0.000 claims description 7
- 238000007596 consolidation process Methods 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 27
- 238000012545 processing Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 12
- 238000013461 design Methods 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 6
- 241001522296 Erithacus rubecula Species 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000004308 accommodation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 230000010387 memory retrieval Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 235000019161 pantothenic acid Nutrition 0.000 description 1
- 239000011295 pitch Substances 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文中描述用于电路中的管线合并的装置和技术。可获得并行管线的事务索引的并行管线结果。此处,所述并行管线是共享事务索引的数个并行管线中的一个。可标记向量中的元素。所述元素对应于所述事务索引。所述向量是分别指配给所述数个并行管线的数个向量中的一个。另外,所述数个向量中的每一元素对应于可能的事务索引,向量之间的相应元素对应于相同事务索引。可比较所述数个向量之间的对应于所述相同事务索引的元素以确定事务何时完成。可响应于所述事务完成而将所述结果发布给输出缓冲器。
Description
技术领域
本申请涉及用于电路中的管线合并的装置和技术。
背景技术
小芯片是一种用于集成各种处理功能的新兴技术。通常,小芯片系统由离散模块(各自被称为“小芯片”)构成,所述离散模块集成在中介层上,并且在许多实例中视需要通过一或多个已建立的网络互连,以向系统提供所要功能。中介层和所包含的小芯片可封装在一起,以便于与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路(IC)或“芯片”,其可能与离散电路组件组合,且共同耦合到相应衬底以便于附接到中介层。系统中的大多数或所有小芯片将个别地配置以用于通过一或多个已建立的网络进行通信。
小芯片作为系统的个别模块的配置不同于在单芯片上实施的此类系统,所述芯片在一个衬底(例如,单个裸片)上含有不同装置块(例如,知识产权(IP)块),例如片上系统(SoC),或集成在印刷电路板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,更低的功耗、更少的等待时间等),并且小芯片提供比单裸片芯片更高的生产效益。这些生产效益可包含良率提高或者开发成本和时间减少。
小芯片系统可包含例如一或多个应用程序(或处理器)小芯片和一或多个支持小芯片。在此,应用程序小芯片与支持小芯片之间的区别只是对小芯片系统可能的设计场景的参考。因此,举例来说,合成视觉小芯片系统可包含(仅借助于实例)用于产生合成视觉输出的应用程序小芯片,以及支持小芯片,例如存储器控制器小芯片、传感器接口小芯片或通信小芯片。在典型的用例中,合成视觉设计者可设计应用程序小芯片并从其它方获取支持小芯片。因此,由于避免设计和生产支持小芯片中所包含的功能,因此减少了设计支出(例如,在时间或复杂性方面)。小芯片还支持原本可能很困难的IP块紧密集成,例如使用不同的处理技术或使用不同的特征大小(或利用不同的接触技术或间距)制造的IP块。因此,可以模块化方式汇编具有不同物理、电气或通信特性的多个IC或IC组合件,以提供实现所需功能的组合件。小芯片系统还可促进调适以适应将并入有小芯片系统的不同较大系统的需求。在实例中,IC或其它组合件可针对特定功能的功率、速度或发热进行优化,如同传感器可能发生的情况一样,相比于在单个裸片上尝试与其它装置集成,所述IC或其它组件可更容易地与其它装置集成。此外,通过减小裸片的整体大小,小芯片的良率往往高于更复杂的单裸片装置的良率。
发明内容
根据本申请的一方面,提供一种设备。所述设备包括:接口,其被配置成获得并行管线的事务索引的并行管线结果,所述并行管线是共享事务索引的一组并行管线的成员;硬件,其被配置成实施包含向量的一组向量,所述组向量的每个成员唯一地指配给所述组并行管线的成员,所述向量中的每一元素对应于所述组并行管线的可能的事务索引,且所述组向量的成员之间的相应元素对应于相同事务索引;向量更新电路系统,其被配置成标记所述向量中对应于所述事务索引的元素;比较器,其被配置成比较所述组向量的所述成员中的对应于所述事务索引的元素以确定事务完成;和仲裁者,其被配置成响应于所述事务完成而将所述结果发布给输出缓冲器。
根据本申请的另一方面,提供一种方法。所述方法包括:通过合并电路系统获得并行管线的事务索引的并行管线结果,所述并行管线是共享事务索引的一组并行管线的成员;标记向量中对应于所述事务索引的元素,所述向量是一组向量的成员,所述组向量的每个成员唯一地指配给所述组并行管线的成员,所述向量中的每一元素对应于所述组并行管线的可能的事务索引,且所述组向量的成员之间的相应元素对应于相同事务索引;比较所述组向量的所述成员中的对应于所述事务索引的元素以确定事务完成;和响应于所述事务完成而将所述结果发布给输出缓冲器。
根据本申请的又一方面,提供一种非暂时性机器可读媒体。所述非暂时性机器可读媒体包含指令,所述指令在由合并电路系统执行时致使所述合并电路系统执行包括以下操作的操作:获得并行管线的事务索引的并行管线结果,所述并行管线是共享事务索引的一组并行管线的成员;标记向量中对应于所述事务索引的元素,所述向量是一组向量的成员,所述组向量的每个成员唯一地指配给所述组并行管线的成员,所述向量中的每一元素对应于所述组并行管线的可能的事务索引,且所述组向量的成员之间的相应元素对应于相同事务索引;比较所述组向量的所述成员中的对应于所述事务索引的元素以确定事务完成;和响应于所述事务完成而将所述结果发布给输出缓冲器。
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
图1A和1B说明根据实施例的小芯片系统的实例。
图2说明根据实施例的存储器控制器小芯片的实例的组件。
图3说明根据实施例的通过电路组件的处理流。
图4说明根据实施例比较向量元素以确定事务是否完成。
图5是根据实施例的用于电路中的管线合并的方法的实例的流程图。
图6是机器的实例的框图,本公开的实施例可利用所述机器、在所述机器中或通过所述机器进行操作。
具体实施方式
下文所描述的图1提供小芯片系统和在其中操作的组件的实例。所说明的小芯片系统包含存储器控制器。下文关于图1和2描述关于存储器控制器的额外细节。在实例中,存储器控制器可包含用于裸片外存储器(例如,动态随机存取存储器(DRAM))的本地高速缓存器,如图2中所说明的实例。通常,在这类布置中,在存储器控制器处接收存储器请求。存储器控制器随后尝试满足来自高速缓存器的存储器请求并且当存储器控制器无法满足来自高速缓存器的存储器请求时求助于裸片外存储器。通常,相对于彼此来说,高速缓存器是快速路径(例如,低等待时间)且裸片外存储器是缓慢路径。因为将满足来自高速缓存器的一些存储器请求,所以将满足来自裸片外存储器的一些存储器请求,且将通过高速缓存器和裸片外存储器两者的组合满足一些存储器请求,所以可能会在组合和协调这些针对存储器请求的动作时出现问题。
虽然在存储器请求的上下文中出现问题,但在其中操作可采用最终需要组合或协调并且转发到单个管线中的一或多个并行路径的任何系统中,可存在问题。为了解决这些问题,可使用向量独立且异步地跟踪穿过各个路径的事务(例如,存储器请求)完成。一旦事务完成,便可合并并递送事务的分量,进而跨事务维持完整性而不管不同路径的响应时间是不同的。此技术可适应可具有截然不同的排序的相对大量的正在进行中的操作。
响应时间和排序的不一致致使这些次完成日志向量相对较长。另外,有可能的是,多个新的次完成可同时出现,这随后可指示多个最终完成同时准备好。为实现此,日志向量可包含事务位分量,表示为具有用于每个所支持事务的索引的位向量,其中每个路径有一个向量。随着用于给定事务的路径完成,对应于所述路径的位向量中的事务的索引设置为逻辑一。此处,可在每个时钟循环对路径的位向量执行逐位“与”操作。对应于由日志向量之间的逐位“与”产生的向量中的事务的索引当为逻辑一时指示事务完成。以此方式,采用计算上高效的技术确定事务的分量何时准备好合并。通常,多个向量的长度(例如,256位)足以覆盖可在事务中的将被组合或协调的多个相关操作之间经过的数个循环、事件或时间。
一旦事务完成,可在输出路径上发布分量结果(在此时间之前被缓冲)(例如,对存储器请求的存储器响应)。举例来说,在两个路径日志向量的情况下,两个先进先出队列(FIFO)可用以在最终完成(例如,完整事务)发生时容纳所述最终完成。FIFO的数目和深度通常是相对于每一循环可产生多少同步的最终完成。因此,如果两个事务在单个循环中完成,那么这两个事务均可在所述循环内写入到FIFO,第一事务写入到第一FIFO且第二事务写入到第二FIFO。在实例中,可以严格的轮询次序写入和读取FIFO。这确保所有完成按其出现的次序被服务。
一旦从FIFO读出事务结果,便使处理前进到输出路径的下一阶段中。因此,在存储器请求情境下,最终路径包含对应于存储器请求的存储器响应的构建和发射。此技术提供合并具有不同响应时间的多个路径的高效稳健机制。所述技术可在单个循环中合理地执行,对于各种事务是公平的,并且可扩展到需要协调的任何数目的并行路径。此最后一点致使所述技术优于一些其它分数板出(score boarding)技术。下文提供额外细节及实例。
图1A和1B说明根据实施例的小芯片系统110的实例。图1A是安装在外围板105上的小芯片系统110的表示,所述外围板105可例如通过外围组件互连高速(PCIe)连接到更广泛的计算机系统。小芯片系统110包含封装衬底115、中介层120和四个小芯片,即应用程序小芯片125、主机接口小芯片135、存储器控制器小芯片140和存储器装置小芯片150。其它系统可包含许多额外小芯片以提供额外功能,如将从以下论述中显而易见。小芯片系统110的封装以封盖或盖板165说明,但可使用用于小芯片系统的其它封装技术和结构。图1B是为了清楚起见标记小芯片系统中的组件的框图。
应用程序小芯片125说明为包含片上网络(NOC)130以支持用于小芯片间通信的小芯片网络155。在实例实施例中,NOC 130可包含在应用程序小芯片125上。在实例中,可响应于所选择的支持小芯片(例如,小芯片135、140和150)而定义NOC 130,从而使设计者能够为NOC 130选择适当数目或小芯片网络连接或交换机。在实例中,NOC 130可位于单独小芯片上,或甚至位于中介层120内。在如本文中所论述的实例中,NOC 130实施小芯片协议接口(CPI)网络。
CPI是基于包的网络,其支持虚拟信道,以实现小芯片之间灵活、高速的交互。CPI实现了从小芯片内网络到小芯片网络155的桥接。举例来说,高级可扩展接口(AXI)是广泛用于设计芯片内通信的规范。然而,AXI规范涵盖大量的物理设计选项,例如物理信道的数目、信号定时、功率等。在单个芯片内,选择这些选项通常是为了满足设计目标,例如功耗、速度等。然而,为了实现小芯片系统的灵活性,使用例如CPI的适配器在可在各种小芯片中实施的各种AXI设计选项之间进行介接。通过实现物理信道到虚拟信道的映射且利用包化协议包封基于时间的信令,CPI跨小芯片网络155桥接小芯片内网络。
CPI可利用多种不同的物理层来发射包。物理层可包含简单的导电连接,或可包含驱动器以增大电压,或以其它方式促进在更长距离内发射信号。此类物理层的实例可包含高级接口总线(AIB),其在各种实例中可在中介层120中实施。AIB使用具有转发时钟的源同步数据传送来发射和接收数据。以单数据速率(SDR)或双数据速率(DDR)相对于所发射的时钟跨AIB传送包。AIB支持各种信道宽度。当在SDR模式下操作时,AIB信道宽度为20位的倍数(20、40、60、……),并且对于DDR模式,AIB信道宽度为40位的倍数:(40、80、120、……)。AIB信道宽度包含发射和接收信号。信道可配置成具有对称数目的发射(TX)和接收(RX)输入/输出(I/O),或者具有非对称数目的发射器和接收器(例如,所有发射器或所有接收器)。信道可取决于哪一个小芯片提供主时钟而充当AIB主体或从属。I/O单元支持三个时钟模式:异步(即,非时控)、SDR和DDR。在各种实例中,非时控模式用于时钟和一些控制信号。SDR模式可使用专用的仅SDR I/O单元,或双重使用SDR/DDR I/O单元。
在实例中,CPI包协议(例如,点到点或可路由)可在AIB信道内使用对称的接收和发射I/O单元。CPI流协议允许更灵活地使用AIB I/O单元。在实例中,流模式的AIB信道可将I/O单元配置为全部为TX、全部为RX或者一半为TX且一半为RX。CPI包协议可在SDR或DDR操作模式中使用AIB信道。在实例中,AIB信道针对SDR模式以80个I/O单元(即,40个TX和40个RX)的增量配置,并且针对DDR模式以40个I/O单元的增量配置。CPI流协议可在SDR或DDR操作模式中使用AIB信道。此处,在实例中,AIB信道针对SDR和DDR模式两者以40个I/O单元为增量。在实例中,向每一AIB信道指派唯一的接口标识符。所述标识符在CPI重置和初始化期间用于确定跨邻近小芯片的成对AIB信道。在实例中,接口标识符是包括七位小芯片标识符、七位列标识符和六位链路标识符的20位值。AIB物理层使用AIB带外移位寄存器来发射接口标识符。使用移位寄存器的位32-51跨AIB接口在两个方向上传送20位接口标识符。
AIB将堆叠的一组AIB信道定义为AIB信道列。AIB信道列具有一定数目的AIB信道,外加辅助信道。辅助信道含有用于AIB初始化的信号。列内的所有AIB信道(辅助信道除外)具有相同配置(例如,全部为TX、全部为RX或者一半为TX且一半为RX,并且具有相同数目的数据I/O信号)。在实例中,从邻近于AUX信道的AIB信道开始,以连续增大次序对AIB信道编号。邻近于AUX的AIB信道被定义为AIB信道零。
通常,个别小芯片上的CPI接口可包含串行化-反串行化(SERDES)硬件。SERDES互连非常适用于需要高速信令和低信号计数的情况。然而,对于多路复用和解复用、错误检测或校正(例如,使用块级循环冗余校验(CRC))、链路级重试或前向错误校正,SERDE可能会引起额外的功耗和更长的等待时间。然而,当低等待时间或能耗是超短距离小芯片到小芯片互连的主要关注点时,可利用时钟速率允许以最少等待时间进行数据传送的并行接口。CPI包含用于使这些超短距离小芯片互连的等待时间和能耗两者最小化的元件。
对于流量控制,CPI采用基于信用的技术。例如应用程序小芯片125的接收方向例如存储器控制器小芯片140的发送方提供表示可用缓冲器的信用。在实例中,CPI接收方包含用于给定发射时间单位的每一虚拟信道的缓冲器。因此,如果CPI接收方在时间上支持五个消息和单个虚拟信道,那么接收方具有布置成五列的五个缓冲器(例如,每一单位时间一行)。如果支持四个虚拟信道,那么接收方具有布置成五列的二十个缓冲器。每一缓冲器保持一个CPI包的有效负载。
当发送方向接收方进行发射时,发送方基于发射而使可用信用递减。一旦接收方的所有信用都用完,发送方就停止向接收方发送包。这确保了接收方始终具有可用的缓冲器来存储发射。
当接收方处理接收到的包并释放缓冲器时,接收方将可用缓冲空间传达回发送方。随后,发送方可使用此信用返回以允许发射额外信息。
还说明了小芯片网状网络160,其使用直接小芯片到小芯片技术,而不需要NOC130。小芯片网状网络160可在CPI或另一小芯片到小芯片协议中实施。小芯片网格网络160通常实现小芯片流水线,其中一个小芯片充当到流水线的接口,而流水线接口中的其它小芯片仅与自身介接。
此外,还可使用专用装置接口来互连小芯片,所述专用装置接口例如一或多个工业标准存储器接口145(例如,同步存储器接口,例如DDR5、DDR 6)。小芯片系统或个别小芯片到外部装置的连接(例如,较大系统可通过所要接口(例如,PCIE接口))。在实例中,例如,可通过主机接口小芯片135实施外部接口,在所描绘的实例中,所述主机接口小芯片提供小芯片系统110外部的PCIE接口。当行业中的惯例或标准已经汇聚在此类专用接口145上时,通常采用此类接口。将存储器控制器小芯片140连接到动态随机存取存储器(DRAM)存储器装置150的双倍数据速率(DDR)接口145的所说明实例就是此类行业惯例。
在多种可能的支持小芯片中,存储器控制器小芯片140很可能存在于小芯片系统110中,这是因为几乎无所不在地使用存储来进行计算机处理以及对存储器装置使用先进技术。因此,使用通过其它技术产生的存储器装置小芯片150和存储器控制器小芯片140使小芯片系统设计者能够获得由成熟生产商生产的稳健产品。通常,存储器控制器小芯片140提供存储器装置特定接口来读取、写入或擦除数据。通常,存储器控制器小芯片140可提供额外功能,例如错误检测、错误校正、维护操作或原子操作符执行。对于一些类型的存储器,维护操作往往特定于存储器装置150,例如N“与”快闪或存储类存储器中的垃圾收集、N“与”快闪存储器中的温度调整(例如,交叉温度管理)。在实例中,维护操作可包含逻辑到物理(L2P)映射或管理,以在数据的物理与逻辑表示之间提供间接层级。在例如DRAM的其它类型的存储器中,例如刷新的一些存储器操作可在某些时间由主机处理器或存储器控制器控制,并且在其它时间由DRAM存储器装置或与一或多个DRAM装置相关联的逻辑控制,所述逻辑例如接口芯片(在实例中,缓冲器)。
原子操作符是例如可由存储器控制器小芯片140执行的数据操纵。在其它小芯片系统中,可由其它小芯片执行原子操作符。举例来说,可由应用程序小芯片125在命令中指定“增量”的原子操作符,所述命令包含存储器地址并且可能包含增量值。在接收到命令后,存储器控制器小芯片140从指定存储器地址检索数字,使所述数字递增命令中所指定的量,并存储结果。在成功完成后,存储器控制器小芯片140向应用程序小芯片125提供命令成功的指示。原子操作符避免了跨小芯片网络160发射数据,从而减少执行此类命令的等待时间。
原子操作符可分类为内置原子或可编程(例如,自定义)原子。内置原子是在硬件中不变地实施的一组有限的操作。可编程原子是可在存储器控制器小芯片140的可编程原子单元(PAU)(例如,自定义原子单元(CAU))上执行的小程序。图1说明论述PAU的存储器控制器小芯片的实例。
存储器装置小芯片150可为或包含易失性存储器装置或非易失性存储器的任何组合。易失性存储器装置的实例包含但不限于随机存取存储器(RAM),例如DRAM、同步DRAM(SDRAM)、图形双数据速率类型6SDRAM(GDDR6 SDRAM)等等。非易失性存储器装置的实例包含但不限于与非(N“与”)型快闪存储器、存储类存储器(例如,相变存储器或基于忆阻器的技术)、铁电RAM(FeRAM)等等。所说明的实例包含作为小芯片的存储器装置150,然而,存储器装置150可驻留在其它地方,例如在外围板105上的不同封装中。对于许多应用程序,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多种存储技术。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如与一或多个动态随机存取存储器(DRAM)装置堆叠或以其它方式通信的一或多个静态随机存取存储器(SRAM)装置。存储器控制器140还可用于协调小芯片系统110中的多个存储器小芯片之间的操作;例如,在一或多个层级的高速缓存装置中利用一或多个存储器小芯片,并使用一或多个额外存储器小芯片作为主存储器。小芯片系统110还可包含多个存储器控制器140,如可用于为单独的处理器、传感器、网络等提供存储器控制功能。例如小芯片系统110的小芯片架构在允许适应不同的存储器存储技术方面提供优点;并且通过更新的小芯片配置提供不同的存储器接口,而无需重新设计系统结构的其余部分。
图2说明根据实施例的存储器控制器小芯片205的实例的组件。存储器控制器小芯片205包含高速缓存器210、高速缓存控制器215、裸片外存储器控制器220(例如,用于与裸片外存储器275通信)、网络通信接口225(例如,用于与小芯片网络285介接且与其它小芯片通信)、合并电路系统290,以及一组原子和合并单元250。此组的成员可包含例如写入合并单元255、存储器危险单元260、内置原子单元265或PAU 270。各种组件是按逻辑说明的,并且它们未必会被实施。举例来说,内置原子单元265可能包括沿着通往裸片外存储器的路径的不同装置。举例来说,内置原子单元265可处于存储器小芯片上的接口装置/缓冲器中,如上文所论述。相比之下,可编程原子单元270可在存储器控制器小芯片205上的单独处理器中实施(但在各种实例中,可在其它位置中实施,例如在存储器小芯片上实施)。
裸片外存储器控制器220直接耦合到裸片外存储器275(例如,经由总线或其它通信连接),以向以及从例如裸片外存储器275和裸片外存储器280等一或多个裸片外存储器提供写入操作和读取操作。在所描绘的实例中,裸片外存储器控制器220还针对输出耦合到原子和合并单元250,并且针对输入耦合到高速缓存控制器215(例如,存储器侧高速缓存控制器)。
在实例配置中,高速缓存控制器215直接耦合到高速缓存器210,且可耦合到网络通信接口225以进行输入(例如传入读取或写入请求),且针对输出耦合到裸片外存储器控制器220。
网络通信接口225包含包解码器230、网络输入队列235、包编码器240和网络输出队列245以支持基于包的小芯片网络285,例如CPI。小芯片网络285可提供处理器、存储器控制器、混合线程处理器、可配置处理电路或通信接口之间和当中的包路由。在此类基于包的通信系统中,每一包通常包含目的地和源寻址,以及任何数据有效负载或指令。在实例中,取决于配置,小芯片网络285可实施为具有折叠Clos配置的交叉开关的集合,或提供额外连接的网格网络。
在各种实例中,小芯片网络285可以是异步交换结构的一部分。在此,数据包可沿着各种路径中的任一个路由,使得任何所选择的数据包可在多个不同时间中的任何时间到达寻址的目的地,这取决于路由。另外,小芯片网络285可至少部分地实施为同步通信网络,例如同步网状通信网络。预期通信网络的两种配置均用于根据本公开的实例。
存储器控制器小芯片205可接收具有例如源地址、读取请求和物理地址的包。作为响应,裸片外存储器控制器220或高速缓存控制器215将从指定的物理地址(其可在裸片外存储器275或高速缓存器210中)读取数据,并将响应包汇编成含有所请求数据的源地址。类似地,存储器控制器小芯片205可接收具有源地址、写入请求和物理地址的包。作为响应,存储器控制器小芯片205将数据写入到指定的物理地址(其可在高速缓存器210或裸片外存储器275或280中),并将响应包汇编成含有数据被存储到存储器的确认的源地址。
因此,在可能的情况下,存储器控制器小芯片205可经由小芯片网络285接收读取和写入请求,且使用与高速缓存器210介接的高速缓存控制器215来处理所述请求。如果高速缓存控制器215无法处置所述请求,那么裸片外存储器控制器220通过与裸片外存储器275或280、原子和合并单元250或两者通信来处置所述请求。如上所述,一或多个层级的高速缓存器还可在裸片外存储器275或280中实施;且在一些此类实例中可由高速缓存控制器215直接存取。由裸片外存储器控制器220读取的数据可由高速缓存控制器215高速缓存在高速缓存器210中以供后续使用。
原子和合并单元250被耦合以接收(作为输入)裸片外存储器控制器220的输出,并将输出提供到高速缓存器210、网络通信接口225或直接提供到小芯片网络285。存储器危险单元260、写入合并单元255和内置(例如,预定)原子单元265可各自被实施为具有其它组合逻辑电路系统(例如加法器、移位器、比较器、“与”门、“或”门、“异或”门或其任何合适的组合)或其它逻辑电路系统的状态机。这些组件还可包含一或多个寄存器或缓冲器以存储操作数或其它数据。PAU 270可实施为一或多个处理器核心或控制电路系统,以及具有其它组合逻辑电路系统或其它逻辑电路系统的各种状态机,且还可包含一或多个寄存器、缓冲器或存储器以存储地址、可执行指令、操作数和其它数据,或可实施为处理器。
写入合并单元255接收读取数据和请求数据,且合并请求数据和读取数据以创建具有读取数据和将在响应或返回数据包中使用的源地址的单个单元。写入合并单元255将合并的数据提供到高速缓存器210的写入端口(或等效地,提供到高速缓存控制器215以写入到高速缓存器210)。任选地,写入合并单元255将合并的数据提供到网络通信接口225以编码且准备响应或返回数据包以在小芯片网络285上进行发射。
当请求数据是针对内置原子操作符时,内置原子单元265从写入合并单元255或直接从裸片外存储器控制器220接收请求并读取数据。执行原子操作符,且使用写入合并单元255将所得数据写入到高速缓存器210,或提供到网络通信接口225以编码并准备响应或返回数据包以在小芯片网络285上发射。
内置原子单元265处置预定义原子操作符,例如提取和递增或者比较和交换。在实例中,这些操作对大小为32字节或更小的单个存储器位置执行简单的读取-修改-写入操作。从经由小芯片网络285发射的请求包发起原子存储器操作。请求包具有物理地址、原子操作符类型、操作数大小,且任选地具有至多32字节的数据。原子操作符对高速缓存器210的高速缓存存储器行执行读取-修改-写入,从而在必要时填充所述高速缓存存储器。原子操作符响应可为简单的完成响应,或具有至多32字节的数据的响应。实例原子存储器操作符包含提取并与、提取并或、提取并异或、提取并加、提取并减、提取并递增、提取并递减、提取并最小、提取并最大、提取并交换和比较并交换。在各种实例实施例中,支持32位和64位操作以及对16或32字节的数据的操作。本文中所公开的方法还与支持较大或较小操作和较多或较少数据的硬件兼容。
内置原子操作符还可涉及对关于所请求数据的“标准”原子操作符的请求,例如相对简单的单周期整数原子,例如提取并递增或比较并交换,其吞吐量将与不涉及原子操作符的常规存储器读取或写入操作相同。对于这些操作,高速缓存控制器215通常可通过(在硬件中)设置危险位来保留高速缓存器210中的高速缓存行,使得高速缓存行在转换时无法被另一进程读取。从裸片外存储器275或高速缓存器210获得数据,且将所述数据提供到内置原子单元265以执行所请求的原子操作符。在原子操作符之后,除了将所得数据提供到包编码器240以对输出数据包进行编码从而在小芯片网络285上发射之外,内置原子单元265将所得数据提供到写入合并单元255,所述写入合并单元还将所得数据写入到高速缓存器210。在将所得数据写入到高速缓存器210之后,存储器危险单元260将清除所设置的任何对应危险位。
PAU 270实现了可编程原子操作符(也称为“自定义原子事务”或“自定义原子操作符”)的高性能(高吞吐量和低等待时间),其与内置原子操作符的性能相当。代替执行多个存储器存取,响应于原子操作符请求指定可编程原子操作符和存储器地址,存储器控制器小芯片205中的电路系统将原子操作符请求传送到PAU 270,并设置存储在存储器危险寄存器中的对应于原子操作符中所使用的存储器行的存储器地址的危险位,以确保不对所述存储器行执行其它操作(读取、写入或原子),然后在原子操作符完成后清除所述危险位。为执行可编程原子操作符的PAU 270提供的额外、直接数据路径允许额外的写入操作,而不会受到由通信网络的带宽施加的任何限制,并且不会增加通信网络的任何拥塞。
PAU 270包含具有一或多个处理器核心的多线程处理器,例如基于RISC-V ISA的多线程处理器,且进一步具有用于执行可编程原子操作符的扩展指令集。当具备用于执行可编程原子操作符的扩展指令集时,PAU 270可体现为一或多个混合线程处理器。在一些实例实施例中,PAU 270提供桶式轮循瞬时线程切换以维持较高的每时钟指令速率。
可编程原子操作符可由PAU 270执行,所述可编程原子操作符涉及对关于所请求数据的可编程原子操作符的请求。用户可准备编程代码以提供此类可编程原子操作符。举例来说,可编程原子操作符可以是相对简单的多周期操作,例如浮点加法,或可以是相对复杂的多指令操作,例如布隆过滤器插入(Bloom filter insert)。可编程原子操作符可与预定原子操作符相同或不同,如此的原因是它们是由用户而不是系统供应商定义的。对于这些操作,高速缓存控制器215可通过(在硬件中)设置危险位来保留高速缓存器210中的高速缓存行,使得高速缓存行在转换时无法被另一进程读取。从高速缓存器210或裸片外存储器275或280获得数据,且将所述数据提供到PAU 270以执行所请求的可编程原子操作符。在原子操作符之后,PAU 270将将所得数据提供到网络通信接口225以直接对具有所得数据的输出数据包进行编码以用于在小芯片网络285上发射。此外,PAU 270将所得数据提供到高速缓存控制器215,所述高速缓存控制器还将所得数据写入到高速缓存器210。在将所得数据写入到高速缓存器210之后,高速缓存控制电路215将清除所设置的任何对应危险位。
在所选择的实例中,针对可编程原子操作符所采用的方式是提供多个通用的自定义原子请求类型,其可通过小芯片网络285从例如处理器或其它系统组件等起始源发送到存储器控制器小芯片205。高速缓存控制器215或裸片外存储器控制器220将请求标识为自定义原子且将所述请求转发到PAU 270。在代表性实施例中,PAU 270:(1)是能够有效地执行用户定义的原子操作符的可编程处理元件,(2)可对存储器、算术和逻辑操作以及控制流决策执行加载和存储;并且(3)利用具有一组新的专用指令的RISC-V ISA来促进与此类控制器215、220的交互,从而以原子方式执行用户定义的操作。在合乎需要的实例中,RISC-VISA含有支持高级语言操作符和数据类型的完整指令集。PAU 270可利用RISC-V ISA,但通常会支持更有限的指令集和有限的寄存器文件大小,以在包含在存储器控制器小芯片205内时减小单元的裸片大小。
如上文所提及,在将读取数据写入到高速缓存器210之前,存储器危险清除单元260将清除所保留高速缓存行的所设置的危险位。因此,当写入合并单元255接收到请求和读取数据时,存储器危险清除单元260可将重置或清除信号发射到高速缓存器210以重置保留的高速缓存行的所设置存储器危险位。并且,重置此危险位还将释放涉及所指定(或所保留)的高速缓存行的未决读取或写入请求,从而将未决读取或写入请求提供到入站请求多路复用器以供选择和处理。
合并电路系统290被配置成响应于(例如,从包解码器230接收的)存储器请求而合并来自高速缓存器210和裸片外存储器(例如,裸片外存储器275)的各个响应,之后在存储器响应中进行递送(例如,经由包编码器240)。如所说明,合并电路系统290可在高速缓存控制器215、裸片外存储器控制器220或在其中可跟踪并完成(例如,合并)存储器请求(例如,事务)的任何其它方位中具有组件。
如上所述,高速缓存器210和裸片外存储器之间的响应时间可显著不同,因而在跟踪和重新组合针对存储器请求事务的响应时有挑战性。为了达成存储器控制器205中的这些各种响应管线之间的协调,合并电路系统290被配置成获得用于并行管线的事务索引的并行管线结果。此处,并行管线是共享事务索引的一组并行管线的成员。虽然存储器控制器205中可存在各种并行管线,但两个此类并行管线的实例是从高速缓存器210和裸片外存储器进行存储器检索。三向并行管线的实例可包含高速缓存器210、快速裸片外存储器(例如,裸片外存储器275是DRAM)和缓慢裸片外存储器(例如,裸片外存储器280是快闪的)。共享事务索引意味着在并行管线之间,在相同事务上进行操作。举例来说,给定两个存储器请求,即考虑的第一事务0和考虑的第二事务1,所有并行管线跟踪事务0和事务1。
在实例中,并行管线结果存储于为并行管线所独有的结果缓冲器中。此缓冲器可与下文描述的向量组合或与这些向量隔开。在此实例中,结果(例如,从高速缓存器210返回的数据)保持在结果缓冲器中直到其准备好与来自另一管线的结果合并。因为缓冲器专为并行管线所独有,所以存在用于每个并行管线的结果缓冲器。这提供一种高效的实施机制来保持住所述结果。在实例中,缓冲器在并行管线当中共享。在此实例中,例如标签的元数据用以分辨哪些结果对应于哪些并行管线。
合并电路系统290被配置成标记向量中对应于事务索引的元素(例如,索引)。此处,向量是一组向量的成员,所述组向量的每个成员唯一地指配给所述组并行管线的成员。因此,每个并行管线在所述组向量中拥有其自身的向量。此外,任何向量中的给定索引对应于一事务以使得另一向量中的相同索引对应于相同事务。通常,事务0将跨所述组向量的所有向量为索引0。因此,如果管线A完成事务0且管线B尚未完成,那么管线A的向量的索引零将指示事务完成且管线B的向量的索引0将指示事务未完成。
在实例中,所述组向量的成员是位向量。因此,向量的每一元素保持单个位。此处,位向量可表示为合并电路系统290的寄存器中的一或多个字。这类表示在如下文所描述的向量存储以及向量比较以确定给定事务是否完成方面均可为方便实施的。在实例中,为标记位向量中的元素,合并电路系统290被配置成将元素设置为逻辑一。当使用标准逐位比较操作(例如逐位“与”操作)以跨管线比较事务状态时,使用逻辑一指示完成并且使用逻辑零指示事务未完成可为方便的。
如上所述,结果缓冲器可用以在合并之前保存管线结果。在实例中,结果缓冲器是具有用于向量中的每一元素的存储仓的数据结构。此处,结果缓冲器密切地跟踪事务完成向量。因此,事务2(例如索引2)的完成结果包含所述结果。在实例中,所述结果的存在充当事务完成的指示。此处,结果缓冲器合并到管线的向量中。在实例中,单独事务状态指示与结果一起包含在向量中。在实例中,结果缓冲器与向量完全分离,被组织为FIFO、堆叠或其它数据结构。
在实例中,合并电路系统290被配置成获得管线到所述组并行管线中的发散度并且创建所述组向量。此实例在向量创建和使用中提供一定程度的灵活性。举例来说,如果高速缓存器210托管在存储器控制器205上的静态RAM(SRAM)中,那么一些SRAM可用以保存向量或结果缓冲器。因此,可基于合并电路系统290确定多少作用中并行管线处于使用中来实时地修改这些结构消耗的SRAM的量。然而,如果并行管线的数目固定,那么可避开此类灵活性和可能的复杂性。
合并电路系统290被配置成比较所述组向量的成员中的对应于事务索引的元素。可在时间间隔到期之后(例如,在一个时钟循环之后),在从高速缓存控制器215或裸片外存储器控制器220中断之后等,响应于标记向量元素而执行所述比较。在任何情况下,所述比较确定哪些事务完成。因此,相对于完整事务,事务索引上的比较确定对应于所述索引的事务完成。因此,合并电路系统290被配置成跨并行管线的向量查看单个索引中的事务完成指示。举例来说,如果管线A的向量的索引1和管线B的向量的索引1两者均指示完成,那么对应于索引1的事务1完成。
在实例中,当向量是位向量时,合并电路系统290被配置成通过对整体成员(例如,对向量中的所有索引)执行逐位操作,比较所述组位向量的成员中的元素。举例来说,给定三个256位向量,在所有三个向量之间执行逻辑“与”操作以产生单个256位结果。这类操作通常可在单个时钟循环内实施。在实例中,逐位操作是“与”操作。在实例中,当对应于事务索引的“与”操作的结果是逻辑一时,事务完成。通过用逻辑一标记事务完成,“与”操作是确定每个向量完成的方便机制,原因是结果向量的给定索引中的逻辑一需要在所有并行管线向量中的相同索引处均为逻辑一。
事务在并非全部管线都完成的情况下完成是有可能的。举例来说,如果事务涉及单个存储器数据单元,那么高速缓存器210或裸片外存储器中任一者满足事务。然而,可并行检查这两个方位以避免例如与在进行裸片外存储器查询之前等待高速缓存未命中相关联的等待时间。在这些实例中,合并电路系统190可被配置成使用逐位“或”操作作为逐位操作。在实例中,当“或”操作的对应于事务索引的结果是逻辑一时,事务完成。只要任一管线向量在事务索引处具有逻辑一,事务便完成。因为逐位“与”和逐位“或”的实施可消耗合并电路系统290中的极少硬件区域,所以可在每个时钟循环上包含和执行逐位“与”和逐位“或”两者。以此方式,合并电路系统具有两个结果向量,进而基于关于每一事务的元数据来查询适当的结果向量。因此,当所有管线必须完成时,可查询事务的“与”结果向量,且当仅一个管线必须完成时,可查询“或”向量。
合并电路系统290被配置成响应于事务完成而将结果发布给输出缓冲器。因此,在事务结束时,构成事务的各个元素准备好输出到最终路径(例如,存储器响应的创建和递送)。在实例中,为将结果发布到输出缓冲器,合并电路系统290被配置成将来自结果缓冲器的结果传送到输出缓冲器。
在实例中,输出缓冲器是一组输出缓冲器中的一个。在实例中,所述组输出缓冲器的基数(例如,总数目)等于给定进程元素处可能的同步结果的数目。所述组输出缓冲器解决可在多个同步管线完成出现时发生的等待时间问题。为了使得所有同步完成能够在单个时钟循环中传送到输出缓冲器,举例来说,为每个同步完成使用单独输出缓冲器结构。然而,使用所述组输出缓冲器中的哪一个输出缓冲器并无其它含义。因此,在实例中,将结果公布给所述组输出缓冲器包含以轮询顺序将结果写入到输出缓冲器。在实例中,合并电路系统290被配置成也以轮询顺序从输出缓冲器中读取结果。以轮询方式读取和写入到所述组输出缓冲器避免输出缓冲器之间的复杂协调,从而避免锁定、乏力或其它队列管理问题。
在实例中,合并电路系统290被配置成响应于从输出缓冲器中读取结果而清除向量中的元素。清除向量元素使得向量元素能够用于新事务中。在这些实例中,合并电路系统290可维持下一要处理的事务的指针以避免将已完成且被清除的事务与未完成的事务混淆。在这些实例中,所述向量可被视为圆形向量或缓冲器。
图3说明根据实施例的通过电路组件的处理流。如所说明,存在请求产生器管线345(例如,来自图2的包解码器230),其可拆分成相对缓慢管线350A(例如,来自图2的裸片外存储器280)和快速管线350B(例如,来自图2的高速缓存器210)。合并组件305(例如,来自图2的合并电路系统290)将来自缓慢管线350A和快速管线350B的结果合并并且将结果提供到响应产生器管线340(例如,来自图2的包编码器240)。合并组件305包含接收来自缓慢管线350A和快速管线350B的结果的接口。
合并组件305包含用于管线的向量,例如用于缓慢管线350A的向量310和用于快速管线350B的向量310B。合并组件305包含向量更新电路系统,其被配置成基于从接口接收到的管线结果来标记向量310中的元素。合并组件305还包含用于管线的结果缓冲器,用于缓慢管线350A的结果缓冲器315A和用于快速管线350B的结果缓冲器315B。
当向量310A和310B指示事务完成(例如,通过比较器345)时,仲裁电路系统325可以轮询方式将结果(例如,从结果缓冲器315A和351B)递送到所述组输出缓冲器330。仲裁电路系统335随后可以轮询方式从所述组输出缓冲器330提取现在经合并的结果。仲裁电路系统325和仲裁电路系统335在设计上经协调以使得当结果从所述组输出缓冲器330移除(例如,读取)并递送到响应产生器管线340时维护结果放置到所述组输出缓冲器330中的次序。
图4说明根据实施例比较向量元素以确定事务是否完成。如所说明,位向量405A对应于管线A且向量405B对应于管线B。在向量比较期间,整体向量405A和405B经历逻辑“与”操作410以产生结果向量415,其中相同数目的元素作为向量405A和405B。
向量405A、405B和415中的每一个向量上的每个索引对应于具体事务。如所说明,管线B具有针对事务0和1且不针对其它事务的已完成结果。管线A具有仅针对事务0的已完成结果。在逻辑“与”操作410下,结果向量中的事务0设置为逻辑一,且对应于其它可能的事务的所有其它元素设置为逻辑零。因此,在此比较下,仅事务0完成。如果已施加逻辑“或”操作,那么结果向量415中的事务1的元素具有逻辑一并且还指示事务完成。
图5是根据实施例的用于电路中的管线合并的方法500的实例的流程图。方法500的操作是由计算机硬件执行,所述计算机硬件例如关于图1描述的计算机硬件(例如,存储器控制器小芯片140)、关于图2描述的计算机硬件(存储器控制器)或关于图6描述的计算机硬件(例如,处理电路系统)。在实例中,所述操作是由存储器控制器的输出路径上的存储器控制器的电路执行。此处,输出路径处于退出存储器控制器的接口与受存储器控制器管理的存储器之间。在实例中,受存储器控制器管理的存储器包含处于存储器控制器小芯片上的存储器(例如,高速缓存器)和不处于存储器控制器小芯片上的存储器(例如,裸片外存储器)。
在操作505处,获得并行管线的事务索引的并行管线结果。此处,并行管线是共享事务索引的一组并行管线的成员。在实例中,并行管线结果存储于专为并行管线所独有的结果缓冲器中。
在操作510处,标记向量中对应于事务索引的元素。向量是一组向量的成员,所述组向量的每个成员唯一地指配给所述组并行管线的成员。为达成共享的事务索引,向量中的每一元素对应于所述组并行管线的可能的事务索引,所述组向量的成员之间的相应元素对应于相同事务索引。在实例中,所述组向量的成员是位向量。在实例中,标记元素是将所述元素设置为逻辑一。在实例中,结果缓冲器是具有用于向量中的每一元素的存储仓的数据结构。在实例中,方法500的操作可经扩展到包含获得管线到所述组并行管线中的发散度并且创建所述组向量。
在操作515处,比较所述组向量的成员中的对应于事务索引的元素。所述比较确定哪些事务完成。因此,相对于完整事务,事务索引上的比较确定对应于所述索引的事务完成。
在实例中,当向量是位向量时,比较所述组位向量的成员中的元素包含对整体成员执行逐位操作。举例来说,给定三个256位向量,在所有三个向量之间执行逻辑“与”操作以产生单个256位结果。在实例中,逐位操作是“与”操作。在实例中,当“与”操作的对应于事务索引的结果是逻辑一时,事务完成。在实例中,逐位操作是“或”操作。在实例中,当“或”操作的对应于事务索引的结果是逻辑一时,事务完成。
在操作520处,响应于事务完成而将结果发布给输出缓冲器。在实例中,将结果发布给输出缓冲器包含将来自结果缓冲器的结果传送到输出缓冲器。在实例中,输出缓冲器是一组输出缓冲器中的一个。在实例中,所述组输出缓冲器的基数(例如,总数目)等于给定进程元素处可能的同步结果的数目。在实例中,将结果发布给所述组输出缓冲器包含以轮询顺序将结果写入到输出缓冲器。在实例中,方法500的操作可经扩展到包含从输出缓冲器中读取结果并且响应于从输出缓冲器中读取结果而清除向量中的元素。
图6是实例机器600的框图,本文中所论述的技术(例如,方法)可利用所述机器、在所述机器中或通过所述机器进行实施。如本文中所描述,实例可包含机器600中的逻辑或多个组件或机构,或可由其操作。电路系统(例如,处理电路系统)是在机器600的有形实体中实施的电路的集合,所述实体包含硬件(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移而变得灵活。电路系统包含在操作时可单独或组合地执行特定任务的成员。在实例中,可以不可改变的方式设计电路系统的硬件以进行特定操作(例如,硬连线)。在实例中,电路系统的硬件可以包含可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含以物理方式经修改(例如,不变集中式粒子的磁性、电气可移动放置等)以对特定操作的指令进行编码的机器可读媒体。在连接物理组件时,改变硬件组成部分的根本电性质,例如从绝缘体变为导体,或反之亦然。指令使得嵌入式硬件(例如,执行单元或加载机制)能够经由可变连接产生硬件中的电路组件以在处于操作中时实行具体操作的部分。因此,在实例中,机器可读媒体元件是电路的一部分或在装置操作时通信地耦合到电路的其它组件。在实例中,物理组件中的任一个可以用于多于一个电路系统中的多于一个组件中。举例来说,在操作下,执行单元可在一个时间点用于第一电路系统中的第一电路,且在不同时间由第一电路系统中的第二电路重新使用,或由第二电路系统中的第三电路重新使用。下文是关于机器600的这些组件的额外实例。
在替代性实施例中,机器600可操作为独立装置或可连接(例如,联网)到其它机器。在联网部署中,机器600可在服务器-客户端网络环境中以服务器机器、客户端机器或这两者的容量操作。在实例中,机器600可以充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器600可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂巢式电话、网络器具、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定将由所述机器采取的动作的指令的任何机器。此外,虽然仅示出单个机器,但术语“机器”还应被视为包括单独或联合执行一组(或多组)指令以执行本文论述的方法论中的任何一种或多种的任何机器集合,如云计算、软件即服务(software as a service,SaaS)、其它计算机集群配置。
机器(例如,计算机系统)600可包含硬件处理器602(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器604、静态存储器(例如,固件、微码的存储器或存储装置、基本输入输出(BIOS)、统一可扩展固件接口(UEFI)等)606,以及大容量存储装置608(例如,硬盘驱动器、磁带机、快闪存储装置或其它块装置),其中的一些或全部可经由互联件(例如,总线)630彼此通信。机器600可另外包含显示单元610、字母数字输入装置612(例如,键盘)和用户接口(UI)导航装置614(例如,鼠标)。在一实例中,显示单元610、输入装置612和UI导航装置614可为触摸屏显示器。机器600可另外包含存储装置(例如,驱动单元)608、信号产生装置618(例如,扬声器)、网络接口装置620,以及一或多个传感器616,例如全球定位系统(GPS)传感器、指南针、加速度计或其它传感器。机器600可以包含输出控制器628,例如串行(例如,通用串行总线(USB)、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接,以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置。
处理器602、主存储器604、静态存储器606或大容量存储装置608的寄存器可以是或包含其上存储有一或多组数据结构或指令624(例如,软件)的机器可读媒体622,所述数据结构或指令体现本文所描述的技术或功能中的任何一或多种,或被所述技术或功能利用。指令624还可在其由机器600执行期间完全或至少部分驻留在处理器602、主存储器604、静态存储器606或大容量存储装置608的寄存器中的任何一个内。在实例中,硬件处理器602、主存储器604、静态存储器606或大容量存储装置608中的一个或任何组合可构成机器可读媒体622。虽然机器可读媒体622说明为单个媒体,但术语“机器可读媒体”可包含被配置成存储一或多个指令624的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联的高速缓存器和服务器)。
术语“机器可读媒体”可包含能够存储、编码或承载供机器600执行且使机器600执行本公开的技术中的任何一或多种的指令的任何媒体,或能够存储、编码或承载由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体和信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有多个粒子的机器可读媒体,所述粒子具有不变式(例如,静止)质量,并且因此是物质的组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的具体实例可以包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和快闪存储器装置;磁盘,例如内部硬盘和可拆卸磁盘;磁光盘;和CD-ROM和DVD-ROM盘。
在实例中,存储或以其它方式提供在机器可读媒体622上的信息可表示指令624,例如指令624本身或可从其导出指令624的格式。可从其导出指令624的此格式可包含源代码、已编码指令(例如,呈压缩或加密形式)、已封装指令(例如,拆分成多个封装)等。表示机器可读媒体622中的指令624的信息可由处理电路系统处理到指令中以实施本文中所论述的操作中的任一个。举例来说,从信息(例如,由处理电路系统处理)导出指令624可包含:编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、封装、解封装或以其它方式将信息操纵到指令624中。
在实例中,指令624的导出可包含(例如,通过处理电路系统)对信息的汇编、编译或解译以从由机器可读媒体622提供的一些中间或预处理格式创建指令624。当在多个部分中提供信息时,可组合、解封装和修改所述信息以创建指令624。举例来说,信息可在一个或数个远程服务器上的多个压缩源代码封装(或目标代码,或二进制可执行代码等)中。源代码封装可在经由网络发射时被加密,并且在必要时被解密、解压缩、汇编(例如,链接),并且在本地机器处被编译或解译(例如,到可独立执行的库中等),并且由本地机器执行。
指令624可以进一步利用多个传送协议中的任一个(例如,帧中继、因特网协议(IP)、发射控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)经由网络接口装置620使用发射媒体在通信网络626上发射或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、包数据网络(例如,因特网)、移动电话网络(例如,蜂窝式网络)、普通老式电话(POTS)网络和无线数据网络(例如,被称为的电气电子工程师学会(IEEE)802.11标准系列、被称为的IEEE 802.16标准系列)、IEEE 802.15.4标准系列、对等(P2P)网络等等。在实例中,网络接口装置620可包含一或多个物理插口(例如,以太网、同轴或电话插口)或一或多个天线以连接到通信网络626。在实例中,网络接口装置620可以包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一种进行无线通信。术语“发射媒体”应被视为包含能够存储、编码或载送指令以由机器600执行的任何无形媒体,且包含数字或模拟通信信号或用以促进此软件的通信的其它无形媒体。发射媒体是机器可读媒体。为更好地说明本文中所描述的方法和设备,非限制性实例实施例集在下文阐述为带编号的实例。
实例1是一种合并电路系统,其包括:接口,其被配置成获得并行管线的事务索引的并行管线结果,所述并行管线是共享事务索引的一组并行管线的成员;包含向量的一组向量,所述组向量的每个成员唯一地指配给所述组并行管线的成员,所述向量中的每一元素对应于所述组并行管线的可能的事务索引,且所述组向量的成员之间的相应元素对应于相同事务索引;向量更新电路系统,其被配置成标记所述向量中对应于所述事务索引的元素;比较器,其被配置成比较所述组向量的所述成员中的对应于所述事务索引的元素以确定事务完成;和仲裁者,其被配置成响应于所述事务完成而将所述结果发布给输出缓冲器。
在实例2中,根据实例1所述的标的物,其中所述组向量的成员是位向量,其中为标记所述元素,所述向量更新电路系统被配置成将所述元素设置为逻辑一,且其中为比较所述组位向量的所述成员中的元素,所述比较器被配置成对整体成员执行逐位操作。
在实例3中,根据实例2所述的标的物,其中所述逐位操作是“与”操作,且其中当所述“与”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
在实例4中,根据实例2到3中任一项所述的标的物,其中所述逐位操作是“或”操作,且其中当所述“或”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
在实例5中,根据实例1到4中任一项所述的标的物,其中为获得所述并行管线结果,所述接口被配置成将所述并行管线结果存储于专为所述并行管线所独有的结果缓冲器中。
在实例6中,根据实例5所述的标的物,其中所述结果缓冲器是具有用于向量中的每一元素的存储仓的数据结构。
在实例7中,根据实例5到6中任一项所述的标的物,其中为将所述结果发布给所述输出缓冲器,所述仲裁者被配置成将来自所述结果缓冲器的所述结果传送到所述输出缓冲器。
在实例8中,根据实例1到7中任一项所述的标的物,其中输出缓冲器是一组输出缓冲器中的一个,所述组输出缓冲器的基数等于给定进程元素处可能的同步结果的数目。
在实例9中,根据实例8所述的标的物,其中为将结果发布给所述组输出缓冲器,仲裁者被配置成以轮询顺序将结果写入到输出缓冲器。
在实例10中,根据实例1到9中任一项所述的标的物,其包括被配置成从输出缓冲器中读取结果的第二仲裁者,且其中向量更新电路系统被配置成响应于从输出缓冲器中读取结果而清除向量中的元素。
在实例11中,根据实例1到10中任一项所述的标的物,其中所述合并电路系统包含在小芯片系统中的存储器控制器小芯片中。
在实例12中,根据实例11所述的标的物,其中所述合并电路系统置于所述存储器控制器小芯片的输出路径上,所述输出路径置于退出所述存储器控制器的接口与受所述存储器控制器管理的存储器之间。
在实例13中,根据实例12所述的标的物,其中受所述存储器控制器管理的存储器包含处于所述存储器控制器小芯片上的存储器和不处于所述存储器控制器小芯片上的存储器。
实例14是一种方法,其包括:通过合并电路系统获得并行管线的事务索引的并行管线结果,所述并行管线是共享事务索引的一组并行管线的成员;标记向量中对应于所述事务索引的元素,所述向量是一组向量的成员,所述组向量的每个成员唯一地指配给所述组并行管线的成员,所述向量中的每一元素对应于所述组并行管线的可能的事务索引,且所述组向量的成员之间的相应元素对应于相同事务索引;比较所述组向量的所述成员中的对应于所述事务索引的元素以确定事务完成;和响应于所述事务完成而将所述结果发布给输出缓冲器。
在实例15中,根据实例14所述的标的物,其中所述组向量的成员是位向量,其中标记所述元素是将所述元素设置为逻辑一,且其中比较所述组位向量的所述成员中的元素包含对整体成员执行逐位操作。
在实例16中,根据实例15所述的标的物,其中所述逐位操作是“与”操作,且其中当所述“与”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
在实例17中,根据实例15到16中任一项所述的标的物,其中所述逐位操作是“或”操作,且其中当所述“或”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
在实例18中,根据实例14到17中任一项所述的标的物,其中获得所述并行管线结果包含将所述并行管线结果存储于专为所述并行管线所独有的结果缓冲器中。
在实例19中,根据实例18所述的标的物,其中所述结果缓冲器是具有用于向量中的每一元素的存储仓的数据结构。
在实例20中,根据实例18到19中任一项所述的标的物,其中将所述结果发布给所述输出缓冲器包含将来自所述结果缓冲器的所述结果传送到所述输出缓冲器。
在实例21中,根据实例14到20中任一项所述的标的物,其中输出缓冲器是一组输出缓冲器中的一个,所述组输出缓冲器的基数等于给定进程元素处可能的同步结果的数目。
在实例22中,根据实例21所述的标的物,其中将结果发布给所述组输出缓冲器包含以轮询顺序将结果写入到输出缓冲器。
在实例23中,根据实例14到22中任一项所述的标的物,其包括:从输出缓冲器中读取结果;和响应于从输出缓冲器中读取结果而清除向量中的元素。
在实例24中,根据实例14到23中任一项所述的标的物,其包括:获得管线到所述组并行管线中的发散度;和创建所述组向量。
在实例25中,根据实例14到24中任一项所述的标的物,其中所述合并电路系统包含在小芯片系统中的存储器控制器小芯片中。
在实例26中,根据实例25所述的标的物,其中所述合并电路系统置于所述存储器控制器小芯片的输出路径上,所述输出路径置于退出所述存储器控制器的接口与受所述存储器控制器管理的存储器之间。
在实例27中,根据实例26所述的标的物,其中受所述存储器控制器管理的存储器包含处于所述存储器控制器小芯片上的存储器和不处于所述存储器控制器小芯片上的存储器。
实例28是一种包含指令的非暂时性机器可读媒体,所述指令在由合并电路系统执行时致使所述合并电路系统执行包括以下操作的操作:获得并行管线的事务索引的并行管线结果,所述并行管线是共享事务索引的一组并行管线的成员;标记向量中对应于所述事务索引的元素,所述向量是一组向量的成员,所述组向量的每个成员唯一地指配给所述组并行管线的成员,所述向量中的每一元素对应于所述组并行管线的可能的事务索引,且所述组向量的成员之间的相应元素对应于相同事务索引;比较所述组向量的所述成员中的对应于所述事务索引的元素以确定事务完成;和响应于所述事务完成而将所述结果发布给输出缓冲器。
在实例29中,根据实例28所述的标的物,其中所述组向量的成员是位向量,其中标记所述元素是将所述元素设置为逻辑一,且其中比较所述组位向量的所述成员中的元素包含对整体成员执行逐位操作。
在实例30中,根据实例29所述的标的物,其中所述逐位操作是“与”操作,且其中当所述“与”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
在实例31中,根据实例29到30中任一项所述的标的物,其中所述逐位操作是“或”操作,且其中当所述“或”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
在实例32中,根据实例28到31中任一项所述的标的物,其中获得所述并行管线结果包含将所述并行管线结果存储于专为所述并行管线所独有的结果缓冲器中。
在实例33中,根据实例32所述的标的物,其中所述结果缓冲器是具有用于向量中的每一元素的存储仓的数据结构。
在实例34中,根据实例32到33中任一项所述的标的物,,其中将所述结果发布给所述输出缓冲器包含将来自所述结果缓冲器的所述结果传送到所述输出缓冲器。
在实例35中,根据实例28到34中任一项所述的标的物,其中输出缓冲器是一组输出缓冲器中的一个,所述组输出缓冲器的基数等于给定进程元素处可能的同步结果的数目。
在实例36中,根据实例35所述的标的物,其中将结果发布给所述组输出缓冲器包含以轮询顺序将结果写入到输出缓冲器。
在实例37中,根据实例28到36中任一项所述的标的物,其中所述操作包括:从输出缓冲器中读取结果;和响应于从输出缓冲器中读取结果而清除向量中的元素。
在实例38中,根据实例28到37中任一项所述的标的物,其中所述操作包括:获得管线到所述组并行管线中的发散度;和创建所述组向量。
在实例39中,根据实例28到38中任一项所述的标的物,其中所述合并电路系统包含在小芯片系统中的存储器控制器小芯片中。
在实例40中,根据实例39所述的标的物,其中所述合并电路系统置于所述存储器控制器小芯片的输出路径上,所述输出路径置于退出所述存储器控制器的接口与受所述存储器控制器管理的存储器之间。
在实例41中,根据实例40所述的标的物,其中受所述存储器控制器管理的存储器包含处于所述存储器控制器小芯片上的存储器和不处于所述存储器控制器小芯片上的存储器。
实例42是一种系统,其包括:用于通过合并电路系统获得并行管线的事务索引的并行管线结果的装置,所述并行管线是共享事务索引的一组并行管线的成员;用于标记向量中对应于所述事务索引的元素的装置,所述向量是一组向量的成员,所述组向量的每个成员唯一地指配给所述组并行管线的成员,所述向量中的每一元素对应于所述组并行管线的可能的事务索引,且所述组向量的成员之间的相应元素对应于相同事务索引;用于比较所述组向量的所述成员中的对应于所述事务索引的元素以确定事务完成的装置;和用于响应于所述事务完成而将所述结果发布给输出缓冲器的装置。
在实例43中,根据实例42所述的标的物,其中所述组向量的成员是位向量,其中标记所述元素是将所述元素设置为逻辑一,且其中比较所述组位向量的所述成员中的元素包含对整体成员执行逐位操作。
在实例44中,根据实例43所述的标的物,其中所述逐位操作是“与”操作,且其中当所述“与”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
在实例45中,根据实例43到44中任一项所述的标的物,其中所述逐位操作是“或”操作,且其中当所述“或”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
在实例46中,根据实例42到45中任一项所述的标的物,其中所述用于获得所述并行管线结果的装置包含用于将所述并行管线结果存储于专为所述并行管线所独有的结果缓冲器中的装置。
在实例47中,根据实例46所述的标的物,其中所述结果缓冲器是具有用于向量中的每一元素的存储仓的数据结构。
在实例48中,根据实例46到47中任一项所述的标的物,其中所述用于将所述结果发布给所述输出缓冲器的装置包含用于将来自所述结果缓冲器的所述结果传送到所述输出缓冲器的装置。
在实例49中,根据实例42到48中任一项所述的标的物,其中输出缓冲器是一组输出缓冲器中的一个,所述组输出缓冲器的基数等于给定进程元素处可能的同步结果的数目。
在实例50中,根据实例49所述的标的物,其中所述用于将结果发布给所述组输出缓冲器的装置包含用于以轮询顺序将结果写入到输出缓冲器的装置。
在实例51中,根据实例42到50中任一项所述的标的物,其包括:用于从输出缓冲器中读取结果的装置;和用于响应于从输出缓冲器中读取结果而清除向量中的元素的装置。
在实例52中,根据实例42到51中任一项所述的标的物,其包括:用于获得管线到所述组并行管线中的发散度的装置;和用于创建所述组向量的装置。
在实例53中,根据实例42到52中任一项所述的标的物,其中所述合并电路系统包含在小芯片系统中的存储器控制器小芯片中。
在实例54中,根据实例53所述的标的物,其中所述合并电路系统置于所述存储器控制器小芯片的输出路径上,所述输出路径置于退出所述存储器控制器的接口与受所述存储器控制器管理的存储器之间。
在实例55中,根据实例54所述的标的物,其中受所述存储器控制器管理的存储器包含处于所述存储器控制器小芯片上的存储器和不处于所述存储器控制器小芯片上的存储器。
实例56是包含指令的至少一个机器可读媒体,所述指令当由处理电路系统执行时致使所述处理电路系统执行操作以实施实例1到55中的任一实例。
实例57是一种设备,其包括用以实施实例1到55中的任一实例的装置。
实例58是一种实施实例1到55中的任一实例的系统。
实例59是一种用以实施实例1到55中的任一实例的方法。
以上详细描述包含对附图的参考,所述附图形成所述详细描述的一部分。图式借助于说明展示可实践本发明的特定实施例。这些实施例在本文中也被称为“实例”。此类实例可包含除了所示出或所描述的那些元件之外的元件。然而,本发明人还预期其中仅提供所示或所描述的那些元件的实例。此外,本发明人还预期使用相对于特定实例(或其一个或更多个方面)或相对于本文展示或描述的其它实例(或其一个或更多个方面)而展示或描述的那些元件的任何组合或排列的实例(或其一个或更多个方面)。
在本文件中,如专利文件中常见,使用术语“一”以包含一个或多于一个,这与“至少一个”或“一个或更多个”的任何其它例子或用途无关。在此文档中,除非另外指示,否则术语“或”用于指代非排他性的或,使得“A或B”可以包含“A而非B”、“B而非A”,以及“A和B”。在所附权利要求书中,术语“包含”和“在其中(in which)”用作相应术语“包括”和“其中(wherein)”的通俗等效术语。并且,在所附权利要求书中,术语“包含”和“包括”为开放式的,即,包含除权利要求书中在此术语之后列出的那些元件之外的元件的系统、装置、物品或过程仍被视为在权利要求书的范围内。此外,在所附权利要求书中,术语“第一”、“第二”和“第三”等仅用作标记,且并不意图对其对象施加数字要求。
以上描述意在为说明性的,而非限制性的。举例来说,上文所描述的实例(或其一或多个方面)可以彼此组合使用。如所属领域的一般技术人员在查询以上描述后可使用其它实施例。所述摘要在遵守以下理解的情况下提交:其将不会用于解释或限制权利要求的范围或含义。同样,在以上详细描述中,可以将各种特性分组在一起以简化本公开。此情况不应解释为期望未要求的揭示特征对任何权利要求来说是必需的。实际上,本发明主题可在于比特定公开的实施例的所有特征要少。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求作为一单独实施例而独立存在,且预期此些实施例可以各种组合或排列彼此组合。本发明的范围应通过参考所附权利要求书以及所述权利要求书所授予的等效物的完整范围来确定。
Claims (27)
1.一种设备,其包括:
接口,其被配置成获得并行管线的事务索引的并行管线结果,所述并行管线是共享事务索引的一组并行管线的成员;
硬件,其被配置成实施包含向量的一组向量,所述组向量的每个成员唯一地指配给所述组并行管线的成员,所述向量中的每一元素对应于所述组并行管线的可能的事务索引,且所述组向量的成员之间的相应元素对应于相同事务索引;
向量更新电路系统,其被配置成标记所述向量中对应于所述事务索引的元素;
比较器,其被配置成比较所述组向量的所述成员中的对应于所述事务索引的元素以确定事务完成;和
仲裁者,其被配置成响应于所述事务完成而将所述结果发布给输出缓冲器。
2.根据权利要求1所述的设备,其中所述组向量的成员是位向量,其中为标记所述元素,所述向量更新电路系统被配置成将所述元素设置为逻辑一,且其中为比较所述组位向量的所述成员中的元素,所述比较器被配置成对整体成员执行逐位操作。
3.根据权利要求2所述的设备,其中所述逐位操作是“与”操作,且其中当所述“与”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
4.根据权利要求2所述的设备,其中所述逐位操作是“或”操作,且其中当所述“或”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
5.根据权利要求1所述的设备,其中为获得所述并行管线结果,所述接口被配置成将所述并行管线结果存储于专为所述并行管线所独有的结果缓冲器中。
6.根据权利要求5所述的设备,其中为将所述结果发布给所述输出缓冲器,所述仲裁者被配置成将来自所述结果缓冲器的所述结果传送到所述输出缓冲器。
7.根据权利要求1所述的设备,其中所述设备包含在小芯片系统中的存储器控制器小芯片中。
8.根据权利要求7所述的设备,其中所述设备置于所述存储器控制器小芯片的输出路径上,所述输出路径置于退出所述存储器控制器的接口与受所述存储器控制器管理的存储器之间。
9.根据权利要求8所述的设备,其中受所述存储器控制器管理的存储器包含处于所述存储器控制器小芯片上的存储器和不处于所述存储器控制器小芯片上的存储器。
10.一种方法,其包括:
通过合并电路系统获得并行管线的事务索引的并行管线结果,所述并行管线是共享事务索引的一组并行管线的成员;
标记向量中对应于所述事务索引的元素,所述向量是一组向量的成员,所述组向量的每个成员唯一地指配给所述组并行管线的成员,所述向量中的每一元素对应于所述组并行管线的可能的事务索引,且所述组向量的成员之间的相应元素对应于相同事务索引;
比较所述组向量的所述成员中的对应于所述事务索引的元素以确定事务完成;和
响应于所述事务完成而将所述结果发布给输出缓冲器。
11.根据权利要求10所述的方法,其中所述组向量的成员是位向量,其中标记所述元素是将所述元素设置为逻辑一,且其中比较所述组位向量的所述成员中的元素包含对整体成员执行逐位操作。
12.根据权利要求11所述的方法,其中所述逐位操作是“与”操作,且其中当所述“与”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
13.根据权利要求11所述的方法,其中所述逐位操作是“或”操作,且其中当所述“或”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
14.根据权利要求10所述的方法,其中获得所述并行管线结果包含将所述并行管线结果存储于专为所述并行管线所独有的结果缓冲器中。
15.根据权利要求14所述的方法,其中将所述结果发布给所述输出缓冲器包含将来自所述结果缓冲器的所述结果传送到所述输出缓冲器。
16.根据权利要求10所述的方法,其中所述合并电路系统包含在小芯片系统中的存储器控制器小芯片中。
17.根据权利要求16所述的方法,其中所述合并电路系统置于所述存储器控制器小芯片的输出路径上,所述输出路径置于退出所述存储器控制器的接口与受所述存储器控制器管理的存储器之间。
18.根据权利要求17所述的方法,其中受所述存储器控制器管理的存储器包含处于所述存储器控制器小芯片上的存储器和不处于所述存储器控制器小芯片上的存储器。
19.一种包含指令的非暂时性机器可读媒体,所述指令在由合并电路系统执行时致使所述合并电路系统执行包括以下操作的操作:
获得并行管线的事务索引的并行管线结果,所述并行管线是共享事务索引的一组并行管线的成员;
标记向量中对应于所述事务索引的元素,所述向量是一组向量的成员,所述组向量的每个成员唯一地指配给所述组并行管线的成员,所述向量中的每一元素对应于所述组并行管线的可能的事务索引,且所述组向量的成员之间的相应元素对应于相同事务索引;
比较所述组向量的所述成员中的对应于所述事务索引的元素以确定事务完成;和
响应于所述事务完成而将所述结果发布给输出缓冲器。
20.根据权利要求19所述的机器可读媒体,其中所述组向量的成员是位向量,其中标记所述元素是将所述元素设置为逻辑一,且其中比较所述组位向量的所述成员中的元素包含对整体成员执行逐位操作。
21.根据权利要求20所述的机器可读媒体,其中所述逐位操作是“与”操作,且其中当所述“与”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
22.根据权利要求20所述的机器可读媒体,其中所述逐位操作是“或”操作,且其中当所述“或”操作的对应于所述事务索引的所述结果是逻辑一时,所述事务完成。
23.根据权利要求19所述的机器可读媒体,其中获得所述并行管线结果包含将所述并行管线结果存储于专为所述并行管线所独有的结果缓冲器中。
24.根据权利要求23所述的机器可读媒体,其中将所述结果发布给所述输出缓冲器包含将来自所述结果缓冲器的所述结果传送到所述输出缓冲器。
25.根据权利要求19所述的机器可读媒体,其中所述合并电路系统包含在小芯片系统中的存储器控制器小芯片中。
26.根据权利要求25所述的机器可读媒体,其中所述合并电路系统置于所述存储器控制器小芯片的输出路径上,所述输出路径置于退出所述存储器控制器的接口与受所述存储器控制器管理的存储器之间。
27.根据权利要求26所述的机器可读媒体,其中受所述存储器控制器管理的存储器包含处于所述存储器控制器小芯片上的存储器和不处于所述存储器控制器小芯片上的存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/074,716 US11409533B2 (en) | 2020-10-20 | 2020-10-20 | Pipeline merging in a circuit |
US17/074,716 | 2020-10-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114385538A true CN114385538A (zh) | 2022-04-22 |
CN114385538B CN114385538B (zh) | 2023-02-28 |
Family
ID=81185086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111222996.7A Active CN114385538B (zh) | 2020-10-20 | 2021-10-20 | 电路中的管线合并 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11409533B2 (zh) |
CN (1) | CN114385538B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11714655B2 (en) | 2020-10-20 | 2023-08-01 | Micron Technology, Inc. | Pipeline merging in a circuit |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261063A (en) * | 1990-12-07 | 1993-11-09 | Ibm Corp. | Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs |
US5604910A (en) * | 1988-10-18 | 1997-02-18 | Hitachi, Ltd. | Method of and vector processor for searching text for key words based on candidate character strings obtained from the text using parallel processing |
US5625834A (en) * | 1991-05-14 | 1997-04-29 | Nec Corporation | Information processing section and system for operating a plurality of vector pipeline sets in two different modes |
US20070074009A1 (en) * | 2005-09-28 | 2007-03-29 | Donofrio David D | Scalable parallel pipeline floating-point unit for vector processing |
CN105786665A (zh) * | 2012-06-29 | 2016-07-20 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN106104488A (zh) * | 2014-03-19 | 2016-11-09 | 高通股份有限公司 | 用于支持任务间通信的基于硬件的原子操作 |
CN108292232A (zh) * | 2015-12-21 | 2018-07-17 | 英特尔公司 | 用于加载索引和分散操作的指令和逻辑 |
US20200104164A1 (en) * | 2018-09-28 | 2020-04-02 | Intel Corporation | Memory system architecture for multi-threaded processors |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8122729B2 (en) | 2007-03-13 | 2012-02-28 | Dri-Eaz Products, Inc. | Dehumidification systems and methods for extracting moisture from water damaged structures |
US20080270708A1 (en) | 2007-04-30 | 2008-10-30 | Craig Warner | System and Method for Achieving Cache Coherency Within Multiprocessor Computer System |
US9015399B2 (en) | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US8156307B2 (en) | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
US8095735B2 (en) | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8561037B2 (en) | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US8122229B2 (en) | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US8972958B1 (en) | 2012-10-23 | 2015-03-03 | Convey Computer | Multistage development workflow for generating a custom instruction set reconfigurable processor |
US8205066B2 (en) | 2008-10-31 | 2012-06-19 | Convey Computer | Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor |
US20100115233A1 (en) | 2008-10-31 | 2010-05-06 | Convey Computer | Dynamically-selectable vector register partitioning |
US8423745B1 (en) | 2009-11-16 | 2013-04-16 | Convey Computer | Systems and methods for mapping a neighborhood of data to general registers of a processing element |
US10430190B2 (en) | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US11093251B2 (en) | 2017-10-31 | 2021-08-17 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
EP4276625A3 (en) | 2018-01-29 | 2024-01-24 | Micron Technology, Inc. | Memory controller |
US11461527B2 (en) | 2018-02-02 | 2022-10-04 | Micron Technology, Inc. | Interface for data communication between chiplets or other integrated circuits on an interposer |
KR102454405B1 (ko) | 2018-03-31 | 2022-10-17 | 마이크론 테크놀로지, 인크. | 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 효율적인 루프 실행 |
KR102447816B1 (ko) | 2018-03-31 | 2022-09-27 | 마이크론 테크놀로지, 인크. | 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 다수의 유형의 스레드 식별자 |
CN111919205B (zh) | 2018-03-31 | 2024-04-12 | 美光科技公司 | 多线程自调度可重新配置计算架构的循环线程顺序执行控制 |
WO2019191738A1 (en) | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric |
CN111971652B (zh) | 2018-03-31 | 2024-06-04 | 美光科技公司 | 多线程自调度可重新配置计算架构的条件分支控制 |
EP3776239A1 (en) | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue |
US11513837B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric |
US11119782B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Thread commencement using a work descriptor packet in a self-scheduling processor |
US11068305B2 (en) | 2018-05-07 | 2021-07-20 | Micron Technology, Inc. | System call management in a user-mode, multi-threaded, self-scheduling processor |
US11132233B2 (en) | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
US11126587B2 (en) | 2018-05-07 | 2021-09-21 | Micron Technology, Inc. | Event messaging in a system having a self-scheduling processor and a hybrid threading fabric |
US11513839B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Memory request size management in a multi-threaded, self-scheduling processor |
US11513840B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor |
US11119972B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Multi-threaded, self-scheduling processor |
US11074078B2 (en) | 2018-05-07 | 2021-07-27 | Micron Technology, Inc. | Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion |
US11513838B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread state monitoring in a system having a multi-threaded, self-scheduling processor |
US11163564B1 (en) * | 2018-10-08 | 2021-11-02 | Verisilicon Microelectronics (Shanghai) Co., Ltd. | Vector compare and store instruction that stores index values to memory |
US11573834B2 (en) | 2019-08-22 | 2023-02-07 | Micron Technology, Inc. | Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11150900B2 (en) | 2019-08-28 | 2021-10-19 | Micron Technology, Inc. | Execution or write mask generation for data selection in a multi-threaded, self-scheduling reconfigurable computing fabric |
US11836524B2 (en) | 2019-08-29 | 2023-12-05 | Micron Technology, Inc. | Memory interface for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11409533B2 (en) | 2020-10-20 | 2022-08-09 | Micron Technology, Inc. | Pipeline merging in a circuit |
-
2020
- 2020-10-20 US US17/074,716 patent/US11409533B2/en active Active
-
2021
- 2021-10-20 CN CN202111222996.7A patent/CN114385538B/zh active Active
-
2022
- 2022-08-03 US US17/880,426 patent/US11714655B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5604910A (en) * | 1988-10-18 | 1997-02-18 | Hitachi, Ltd. | Method of and vector processor for searching text for key words based on candidate character strings obtained from the text using parallel processing |
US5261063A (en) * | 1990-12-07 | 1993-11-09 | Ibm Corp. | Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs |
US5625834A (en) * | 1991-05-14 | 1997-04-29 | Nec Corporation | Information processing section and system for operating a plurality of vector pipeline sets in two different modes |
US20070074009A1 (en) * | 2005-09-28 | 2007-03-29 | Donofrio David D | Scalable parallel pipeline floating-point unit for vector processing |
CN105786665A (zh) * | 2012-06-29 | 2016-07-20 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN106104488A (zh) * | 2014-03-19 | 2016-11-09 | 高通股份有限公司 | 用于支持任务间通信的基于硬件的原子操作 |
CN108292232A (zh) * | 2015-12-21 | 2018-07-17 | 英特尔公司 | 用于加载索引和分散操作的指令和逻辑 |
US20200104164A1 (en) * | 2018-09-28 | 2020-04-02 | Intel Corporation | Memory system architecture for multi-threaded processors |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11714655B2 (en) | 2020-10-20 | 2023-08-01 | Micron Technology, Inc. | Pipeline merging in a circuit |
Also Published As
Publication number | Publication date |
---|---|
US11714655B2 (en) | 2023-08-01 |
US11409533B2 (en) | 2022-08-09 |
US20220374242A1 (en) | 2022-11-24 |
US20220121449A1 (en) | 2022-04-21 |
CN114385538B (zh) | 2023-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11403023B2 (en) | Method of organizing a programmable atomic unit instruction memory | |
US11658922B2 (en) | Optional path ordering in packet-based network | |
US11935600B2 (en) | Programmable atomic operator resource locking | |
US20220121474A1 (en) | Method of completing a programmable atomic transaction | |
US11392527B2 (en) | Ordered delivery of data packets based on type of path information in each packet | |
US11797311B2 (en) | Asynchronous pipeline merging using long vector arbitration | |
CN114385236A (zh) | 传递可编程原子操作符到存储器控制器 | |
CN114385538B (zh) | 电路中的管线合并 | |
US11698791B2 (en) | On-demand programmable atomic kernel loading | |
US12020064B2 (en) | Rescheduling a failed memory request in a processor | |
US20220121483A1 (en) | Thread execution control in a barrel processor | |
US11526361B2 (en) | Variable pipeline length in a barrel-multithreaded processor | |
CN114385326A (zh) | 桶式处理器中的线程重放到保留状态 | |
US20220121487A1 (en) | Thread scheduling control and memory splitting in a barrel processor | |
CN114385238A (zh) | 减小存储器控制器中的存储器操作的时延 | |
WO2022115167A2 (en) | Multiple channel memory system |
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 | ||
GR01 | Patent grant |