CN116685942A - 在处理器中重用飞行中寄存器数据 - Google Patents

在处理器中重用飞行中寄存器数据 Download PDF

Info

Publication number
CN116685942A
CN116685942A CN202180083139.5A CN202180083139A CN116685942A CN 116685942 A CN116685942 A CN 116685942A CN 202180083139 A CN202180083139 A CN 202180083139A CN 116685942 A CN116685942 A CN 116685942A
Authority
CN
China
Prior art keywords
result
alu
thread
processor
chiplet
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
CN202180083139.5A
Other languages
English (en)
Inventor
C·巴罗内
D·E·沃克尔
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN116685942A publication Critical patent/CN116685942A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/16Memory access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)

Abstract

本文描述用于处理器中的短线程重调度的装置及技术。当线程的指令完成时,产生结果。能够检测同一线程在下一执行时隙中被调度并且所述线程的下一指令将使用所述结果的条件。响应于此条件,能够将所述结果直接提供给用于所述下一指令的执行单元。

Description

在处理器中重用飞行中寄存器数据
优先权申请案
本申请案主张2020年10月20日申请的第17/074,739号美国申请案的优先权权利,所述申请案以其全文引用的方式并入本文中。
背景技术
小芯片是用于集成各种处理功能性的新兴技术。通常,小芯片系统由离散模块(各自为一“小芯片”)组成,所述模块集成在中介层上,并且在许多实例中,根据需要通过一或多个已建立的网络互连,以提供具有所需功能性的系统。中介层及包含的小芯片可封装在一起,以促进与较大系统的其它组件的互连。每一小芯片可包含一或多个个别集成电路(IC)或“芯片”,其可能与离散电路组件组合并且通常耦合到相应的衬底以促进附接到中介层。系统中的大多数或所有小芯片将经个别配置用于通过一或多个已建立的网络进行通信。
作为系统的个别模块的小芯片的配置不同于此系统实施于在一个衬底(例如,单个芯片)上含有不同的装置块(例如,知识产权(IP)块)的单个芯片上,例如芯片上系统(SoC),或集成在印刷电路板(PCB)上的多个离散封装装置。通常,小芯片提供比离散封装装置更好的性能(例如,更低的功耗、减少的延迟等),并且小芯片提供比单个裸片芯片更大的生产益处。这些生产益处可包含更高的产量或减少的开发成本及时间。
小芯片系统可包含例如一或多个应用(或处理器)小芯片及一或多个支持小芯片。此处,应用小芯片与支持小芯片之间的区别只是对小芯片系统的可能设计场景的引用。因此,例如,仅通过实例,合成视觉小芯片系统可包含用于产生合成视觉输出的应用小芯片以及支持小芯片,例如存储器控制器小芯片、传感器接口小芯片或通信小芯片。在典型的用例中,合成视觉设计者可设计应用小芯片,并从其它方获得支持小芯片。因此,由于避免了支持小芯片中包含的功能性的设计及生产,因此减少了设计支出(例如,在时间或复杂性方面)。小芯片还支持原本可为困难的IP块的紧密集成,例如使用不同处理技术或使用不同特征尺寸(或利用不同接触技术或间距)制造的IP块。因此,具有不同物理、电气或通信特性的多个IC或IC组合件可模块化方式组装,以提供供应所需功能性的组合件。小芯片系统还可促进调适以满足小芯片系统将被并入到其中的不同较大系统的需要。在实例中,IC或其它组合件可针对特定功能对功率、速度或发热进行优化—如可关于传感器发生那样—可比试图在单个芯片上集成更容易地与其它装置集成。另外,通过减小裸片的总体尺寸,小芯片的产量趋向于高于更复杂的单裸片装置的产量。
附图说明
从下文给出的详细描述及从本公开的各种实施例的附图将更加完全地理解本公开。然而,图式不应理解为将本公开限于特定实施例,而仅是为了解释及理解。
图1A及1B说明根据实施例的小芯片系统的实例。
图2说明根据实施例的存储器控制器小芯片的实例的组件。
图3说明根据实施例的可编程原子单元(PAU)的实例中的组件。
图4说明根据实施例的通过处理器组件的用以在处理器中重用飞行中寄存器数据的处理流程。
图5是根据实施例的在处理器中重用飞行中寄存器数据的方法的实例的流程图。
图6是机器的实例的框图,本公开的实施例可使用所述机器、在所述机器中或通过所述机器操作。
具体实施方式
下面描述的图1供应小芯片系统及在其中操作的组件的实例。所说明的小芯片系统包含存储器控制器。此存储器控制器包含可编程原子单元(PAU)以响应于对可编程原子运算符的存储器请求来执行定制程序、可编程原子运算符。下面参考图2及3描述关于PAU的额外细节。PAU的处理器可为桶多线程及流水线的。桶多线程处理器中的线程具有基于线程特定资源可支持后续执行的速度的自然调度依赖性。例如,如果支持八个线程,并且在处理器的每一时钟周期中以严格循环选择交换线程特定的寄存器文件,那么在将调度线程的后续指令之前通常将需要八个时钟周期。当所有硬件线程都被使用时,这种调度通常不会导致过多的延时。然而,对于较轻的工作负载,调度依赖性可与处理器效率相关。具有长线程调度延时的轻负载桶多线程处理器将花费更多的空闲时间并增加给定线程的总运行时间,同时还可能浪费能量。
为了缓解这个问题,可不按顺序调度线程,例如,八个被支持的硬件线程中的线程1在线程2之后被调度。此处,线程1到8的严格顺序被打乱,以减少空闲线程3到8引起的延时。然而,通常,给定线程的最小重新调度时间大于单个时钟周期。因此,在轻负载处理器上仍然会引入一些增加的延时。
为了进一步减少延时,可在下一执行周期中立即重用来自前一个执行周期的飞行中寄存器数据,而不首先将其写入到寄存器文件(例如,当前指令的写回寄存器或下一指令的源寄存器)并从寄存器文件读取。飞行中寄存器重用可包含,在创建写回数据的线程的第一次执行之后,传递数据通过流水线寄存器级及处理器的错误校正生成逻辑。在写回到寄存器文件之前,如果线程再次通过流水线以进行执行,并期望使用相同的数据,那么可通过辨识这些条件的控制逻辑将写回数据插入到源寄存器数据路径中。因此,如果执行线程为寄存器文件生成写回数据,经调度以在尽可能快的周期上再次执行,并且期望在随后的指令中使用写回数据,那么重用飞行中寄存器数据避免了关于寄存器数据的写入及读取的延时。当寄存器文件在随机存取存储器(RAM)装置(例如,静态RAM(SRAM))中而不是传统的触发器中时,这种益处可被放大,如下文关于图3所描述。下文提供额外细节及实例。
图1A及1B说明根据实施例的小芯片系统110的实例。图1A是安装在外围板105上的小芯片系统110的表示,所述小芯片系统110可通过例如外围组件互连快速(PCIe)连接到更广泛的计算机系统。小芯片系统110包含封装衬底115、中介层120及四个小芯片,即应用小芯片125、主机接口小芯片135、存储器控制器小芯片140及存储器装置小芯片150。其它系统可包含许多额外的小芯片来提供额外的功能性,这将从下面的讨论中显而易见。小芯片系统110的封装被说明为具有盖或罩165,但可使用用于小芯片系统的其它封装技术及结构。图1B是为了清楚起见而标记小芯片系统中的组件的框图。
应用小芯片125被说明为包含用以支持用于小芯片间通信的小芯片网络155的芯片上网络(NOC)130。在实例实施例中,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模式中为40位的倍数:(40、80、120、…)。AIB通道宽度包含发射信号及接收信号两者。通道可经配置以具有对称数量的发射(TX)及接收(RX)输入/输出(I/O),或者具有非对称数量的发射器及接收器(例如,全为发射器或全为接收器)。通道可充当主AIB或从属AIB,这取决于哪个小芯片提供主时钟。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通道。此处,在实例中,对于SDR及DDR模式两者,AIB通道以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信号)。在实例中,AIB通道以连续增加的顺序编号,从邻近于AUX通道的AIB通道开始。邻近于AUX的AIB通道被定义为AIB通道零。
通常,个别小芯片上的CPI接口可包含串行化-解串行化(SERDES)硬件。SERDES互连件非常适用于需要具有低信号计数的高速信令的场景。然而,SERDES可导致用于多路复用及多路分用、错误检测或校正(例如,使用块级循环冗余校验(CRC))、链路级重试或前向错误校正的额外功耗及更长延时。然而,当低延时或能耗是超短距离小芯片到小芯片互连件的主要关注点时,可利用具有允许以最小延时进行数据传送的时钟速率的并行接口。CPI包含用以在这些超短距离小芯片互连件中最小化延时及能耗两者的元件。
对于流控制,CPI采用基于信用的技术。例如应用小芯片125的接收方向例如存储器控制器小芯片140的发送方提供表示可用缓冲器的信用。在实例中,CPI接收方针对给定传输时间单位包含用于每一虚拟通道的缓冲器。因此,如果CPI接收方在时间上支持五个消息及单个虚拟通道,那么接收方具有布置成五行的五个缓冲器(例如,每一单位时间一行)。如果支持四个虚拟通道,那么接收方具有布置成五行的二十个缓冲器。每一缓冲器保存一个CPI分组的有效负载。
当发送方向接收方进行发射时,发送方基于发射递减可用信用。一旦接收方的所有信用被消耗,发送方就停止向接收方发送分组。这确保接收方始终有可用的缓冲器来存储发射。
当接收方处理接收到的分组并释放缓冲器时,接收方将可用的缓冲器空间传递回发送方。然后,发送方可使用此信用返回来发射额外信息。
还说明使用直接的小芯片到小芯片技术而不需要NOC 130的小芯片网状网络160。小芯片网状网络160可用CPI或另一个小芯片到小芯片协议来实施。小芯片网状网络160通常启用小芯片的流水线,其中一个小芯片用作流水线的接口,而流水线中的其它小芯片仅与其自身对接。
另外,例如一或多个行业标准存储器接口145(例如,同步存储器接口,例如DDR5、DDR 6)的专用装置接口也可用于互连小芯片。小芯片系统或个别小芯片与外部装置(例如较大的系统)的连接可通过期望的接口(例如,PCIE接口)。在实例中,例如外部接口可通过主机接口小芯片135来实施,在所描绘的实例中,主机接口小芯片135提供小芯片系统110外部的PCIE接口。当行业中的惯例或标准已经汇聚在此接口上时,通常采用此类专用接口145。将存储器控制器小芯片140连接到动态随机存取存储器(DRAM)存储器装置150的双倍数据速率(DDR)接口145的说明的实例正是此行业惯例。
在各种可能的支持小芯片中,存储器控制器小芯片140可能存在于小芯片系统110中,这是归因于存储装置几乎无所不在地用于计算机处理并且复杂的先进技术用于存储器装置。因此,使用由其它人生产的存储器装置小芯片150及存储器控制器小芯片140使小芯片系统设计者能够获得由成熟的生产商生产的稳健产品。通常,存储器控制器小芯片140提供存储器装置特定接口来读取、写入或擦除数据。通常,存储器控制器小芯片140可提供额外特征,例如错误检测、错误校正、维护操作或原子运算符执行。对于一些类型的存储器,维护操作趋向于特定于存储器装置150,例如NAND快闪存储器或存储类存储器中的废弃项目收集、NAND快闪存储器中的温度调整(例如,交叉温度管理)。在实例中,维护操作可包含逻辑到物理(L2P)映射或管理,以提供数据的物理表示与逻辑表示之间的间接级别。在其它类型的存储器(例如DRAM)中,一些存储器操作(例如刷新)可在某些时间由主机处理器或的存储器控制器控制,而在其它时间由DRAM存储器装置控制,或者由与一或多个DRAM装置相关联的逻辑控制,例如接口芯片(在实例中,缓冲器)。
原子运算符是例如可由存储器控制器小芯片140执行的数据操纵。在其它小芯片系统中,原子运算符可由其它小芯片执行。例如,应用小芯片125可在命令中指定“增量”的原子运算符,所述命令包含存储器地址且可能包含增量值。在接收到命令时,存储器控制器小芯片140从指定的存储器地址检索数字,使所述数字递增命令中指定的量,并存储结果。在成功完成时,存储器控制器小芯片140向应用小芯片125提供命令成功的指示。原子运算符避免跨小芯片网络160传输数据,从而实现此类命令的较低延时执行。
原子运算符可分类为内置原子或可编程(例如,定制)原子。内置原子是在硬件中不可变地实施的一组有限的操作。可编程原子是可在存储器控制器小芯片140的可编程原子单元(PAU)(例如,定制原子单元(CAU))上执行的小程序。图1示出讨论PAU的存储器控制器小芯片的实例。
存储器装置小芯片150可为易失性存储器装置或非易失性存储器,或者包含易失性存储器装置或非易失性存储器的任何组合。易失性存储器装置的实例包含但不限于随机存取存储器(RAM)—例如DRAM、同步DRAM(SDRAM)、图形双倍数据速率类型6SDRAM(GDDR6SDRAM)及其它。非易失性存储器装置的实例包含但不限于与非(NAND)型快闪存储器、存储类存储器(例如,相变存储器或基于忆阻器的技术)、铁电RAM(FeRAM)及其它。所说明的实例包含作为小芯片的存储器装置150,然而,存储器装置150可驻存在其它地方,例如在外围设备板105上的不同封装中。对于许多应用,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一种或多种存储技术。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如与一或多个动态随机存取存储器(DRAM)装置堆叠或以其它方式通信的一或多个静态随机存取存储器(SRAM)装置。存储器控制器140还可用于协调小芯片系统110中多个存储器小芯片之间的操作;例如,利用一或多个高速缓存存储级别中的一或多个存储器小芯片,并使用一或多个额外存储器小芯片作为主存储器。小芯片系统110还可包含多个存储器控制器140,其可用于为单独的处理器、传感器、网络等提供存储器控制功能性。小芯片架构(例如小芯片系统110)在允许通过更新的小芯片架构适应不同的存储器存储技术;及不同的存储器接口方面提供了优势,而不需要重新设计系统结构的其余部分。
图2说明根据实施例的存储器控制器小芯片205的实例的组件。存储器控制器小芯片205包含高速缓存210、高速缓存控制器215、裸片外存储器控制器220(例如,与裸片外存储器275通信)、网络通信接口225(例如,与小芯片网络285对接并与其它小芯片通信)及一组原子及合并单元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,写入合并单元255也将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,存储器危险单元260将清除所设置的任何对应的危险位。
PAU 270实现可编程原子运算符(也称为“定制原子事务”或“定制原子运算符”)的高性能(高吞吐量及低延时),其与内置原子运算符的性能相当。响应于指定可编程原子运算符及存储器地址的原子运算符请求,存储器控制器小芯片205中的电路系统不是执行多次存储器存取,而是将原子运算符请求传送到PAU 270,并设置存储在对应于原子运算符中使用的存储器行的存储器地址的存储器危险寄存器中的危险位,以确保不对所述存储器行执行其它操作(读取、写入或原子),然后在原子运算符完成时清除所述危险位。为执行可编程原子运算符的PAU 270提供的额外的直接数据路径允许额外的写入操作,而不受通信网络带宽的任何限制,且不增加通信网络的任何拥塞。
PAU 270包含多线程处理器,例如基于RISC-V ISA的多线程处理器,其具有一个或多个处理器核心,并且进一步具有用于执行可编程原子运算符的扩展指令集。当具备用于执行可编程原子运算符的扩展指令集时,PAU 270可被体现为一或多个混合线程处理器。在一些实例实施例中,PAU 270提供桶式(barrel-style)循环瞬时线程切换以维持高每时钟指令速率。
可编程原子运算符可由PAU 270执行,涉及对所请求数据的可编程原子运算符的请求。用户可准备编程代码来提供此类可编程原子运算符。例如,可编程原子运算符可为相对简单的多周期运算,例如浮点加法,或者相对复杂的多指令操作,例如布隆过滤器(Bloomfilter)插入。可编程原子运算符可与预定原子运算符相同或不同,只要其由用户而不是系统供应商定义即可。对于这些操作,高速缓存控制器215可通过设置危险位(在硬件中)来保留高速缓存210中的高速缓存行,使得高速缓存行在转换时不能被另一过程读取。数据从高速缓存210或裸片外存储器275或280获得,并被提供给PAU 270以执行所请求的可编程原子运算符。在原子运算符之后,PAU 270将向网络通信接口225提供所得数据,以直接对具有所得数据的输出数据分组编码用于在小芯片网络285上传输。另外,PAU 270将向高速缓存控制器215提供所得数据,高速缓存控制器215也将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,高速缓存控制电路215将清除所设置的任何对应的危险位。
在所选择的实例中,对于可编程原子运算符采用的方法是提供多个通用的定制原子请求类型,其可通过小芯片网络285从例如处理器或其它系统组件的始发源发送到存储器控制器小芯片205。高速缓存控制器215或裸片外存储器控制器220将所述请求识别为定制原子,并将所述请求转发给PAU 270。在代表性实施例中,PAU 270:(1)是能够高效地执行用户定义的原子运算符的可编程处理元件;(2)可执行加载及将算术及逻辑运算以及控制流决策存储到存储器;以及(3)利用具有一组新的专用指令的RISC-V ISA来促进与此类控制器215、220的交互,以原子地执行用户定义的操作。在期望的实例中,RISC-V ISA含有支持高级语言运算符及数据类型的一组完整指令。PAU 270可利用RISC-V ISA,但是通常将支持更有限的指令集及有限的寄存器文件大小,以在包含在存储器控制器小芯片205内时减小单元的裸片大小。
如上所述,在将读取数据写入到高速缓存210之前,将由存储器危险清除单元260清除用于经保留的高速缓存行的设置危险位。因此,当写入合并单元255接收到请求及读取数据时,存储器危险清除单元260可向高速缓存210发射复位或清除信号,以复位用于经保留高速缓存行的经设置的存储器危险位。而且,复位此危险位还将释放涉及经指定(或经保留)高速缓存行的未决读取或写入请求,从而将未决读取或写入请求提供给入站请求多路复用器以供选择及处理。
图3说明根据实施例的可编程原子单元300(PAU)的实例中的组件,例如上面关于图1(例如,在存储器控制器140中)及图2(例如,PAU 270)提到的那些组件。如所说明,PAU300包含处理器305、本地存储器310(例如,SRAM)及用于本地存储器310的控制器315。
在实例中,处理器305是流水线的,使得每时钟周期一起执行不同指令的多个级。处理器305也是桶多线程处理器,具有在处理器305的每一时钟周期上在不同寄存器文件(例如,含有当前处理状态的若干组寄存器)之间切换的电路系统。这使得能够在当前正在执行的线程之间进行高效的上下文切换。在实例中,处理器305支持八个线程,从而产生八个寄存器文件。在实例中,一些或所有寄存器文件没有被集成到处理器305中,而是驻留在本地存储器310(寄存器320)中。这通过消除用于这些寄存器320的传统触发器来降低处理器305中的电路复杂性。
本地存储器310还可容纳高速缓存330及用于原子运算符的指令325。原子指令325包括支持各种应用加载的原子运算符的指令集。当例如由应用小芯片125请求原子运算符时,处理器305执行对应于原子运算符的指令集。在实例中,原子指令325经分区以建立指令集。在这个实例中,由请求过程请求的特定可编程原子运算符可通过分区号来识别可编程原子运算符。当可编程原子运算符向PAU 300注册(例如加载到PAU 300上)时,可建立分区号。可编程原子指令325的额外元数据也可存储在本地存储器310中,例如分区表。
原子运算符操纵高速缓存330,当原子运算符的线程完成时,高速缓存330通常被同步(例如,刷新)。因此,除了从外部存储器(例如裸片外存储器275或280)的初始加载之外,对于可编程原子运算符线程的执行期间的大多数存储器操作,延时减少。
在此上下文中,处理器305可经配置以通过飞行中寄存器写回重用来减少后续线程指令之间的延时。为此,处理器305经配置以完成线程的指令的执行以产生结果。此结果是寄存器写回,因为它通常会被写入到线程寄存器文件中的寄存器以供后续指令使用。通常,此结果将是处理器的算术逻辑单元(ALU)或其它执行单元的输出。
处理器经配置以检测线程将在下一执行时隙中被调度。线程的到下一执行时隙的周期数量取决于处理器305的特定多线程特性。在实例中,下一执行时隙是从产生结果开始的两个时钟周期。因此,在产生结果的指令与下一指令的执行之间存在单个周期。
处理器305经配置以检测下一指令将使用所述结果。这可通过使用例如比较器电路系统来匹配指令的寄存器写回地址与下一指令的寄存器源地址(例如操作数)来检测。此检查可使用对来自写回的地址与来自流水线中的下一指令的地址执行的与运算来实施。在实例中,线程的元数据可指示此条件。因此,例如,编译器可识别下一指令将立即使用第一指令的结果,并在第一指令、第二指令或两者中对此进行标记。处理器305可使用此旗标来进行此检测。
处理器305经配置以响应于检测线程在下一执行时隙中被调度并且下一指令将使用所述结果,将所述结果直接提供给下一指令的执行单元。此处,处理器包含额外电路系统,以向执行单元提供替代输入。因此,重用飞行中结果,而不是从源寄存器读取结果。在实例中,处理器305经配置以向执行单元的源寄存器数据路径提供结果。此处,可选择沿着源寄存器数据路径的替代位置,以提供设计灵活性。例如,此灵活性可包含在来自高速缓存的错误校正之前或之后插入结果。
在实例中,处理器305经配置以将结果写入到源寄存器。此处,处理器可包含加法电路系统来执行寄存器写回,并在相同的时钟周期上将结果提供给下一指令的执行单元。在实例中,在将结果直接提供给执行单元之后,可将结果写入到源寄存器。通常,写回到源寄存器可使额外后续指令能够使用所述结果。如果后续指令希望使用所述结果,那么可在写回发生之前使用飞行中寄存器数据。例如,当寄存器在本地存储器310中时(如此处说明),此场景可为有利的。
图4示出根据实施例的通过处理器组件的用以在处理器中重用飞行中寄存器数据的处理流程。如所说明,线程的寄存器文件405连接到处理器的ALU 410。ALU 410的输出被提供给错误校正码(ECC)生成块415,所述生成块415然后将结果提供给寄存器文件405。此处,为寄存器数据生成的ECC可用于通过其已经完成(例如,成功地)使得处理器可继续的(未展示的)错误校正流水线420来验证数据在离开寄存器文件405时未被破坏。
虚线425表示用以支持飞行中寄存器写回数据的重用的额外处理器电路系统(例如,飞行中数据路径电路系统)。如所说明,将写回提供给ALU 410的两个源寄存器输入(例如,操作数)中的一者(或两者)。替代飞行中寄存器数据与寄存器文件405多路复用,以使电路系统425能够选择将使用哪个源。
如所说明,从ALU 410产生结果与数据到达多路复用器之间的时钟周期数量确定下一指令是否可使用飞行中寄存器数据。即,如果下一指令花费比数据到达电路系统425更多的时钟周期,那么在下一指令到达之前,需要对数据进行某种存储。最合适的存储装置将是寄存器文件405。因此,在实例中,下一线程的处理器检测以及下一线程将使用来自ALU410的结果的检测可从结果到达电路系统425时开始触发。
此处描述的重用飞行中寄存器写回的装置及技术使轻负载桶多线程处理器能够减少当前执行线程的延时。因为桶多线程处理器中的线程具有基于线程特定资源可支持后续执行的速度的自然调度依赖性,所以延时与较轻工作负载中的处理效率直接相关。此处,对于希望计算值并立即使用经计算的值的指令序列(通常是指令对,但可执行一系列飞行中寄存器写回)来说,延时减少。飞行中寄存器写回重用避免或补充了复杂的编译器设计、调度器设计或其它技术,以减少轻负载(例如,不是所有可用的硬件线程都被使用)桶多线程处理器中的延时。因此,减少调度延时可使处理器能够更高效并花费更多的时间来完成有用的工作,即使在线程较少的场景中也是如此。
图5是根据实施例的在处理器中重用飞行中寄存器数据的方法500的实例的流程图。方法500的操作由计算机硬件(例如,处理电路系统)执行。
在实例中,所述方法由存储器控制器(例如,存储器控制器140或存储器控制器205)中的PAU(例如,PAU 300或PAU 270)中的处理器(例如,处理器305)执行。在实例中,存储器控制器是小芯片(例如,存储器控制器140)。在实例中,存储器控制器小芯片被集成到小芯片系统(例如,小芯片系统110)中。
在操作505,完成线程的指令以产生结果。通常,此结果将是处理器的算术逻辑单元(ALU)或其它执行单元的输出。
在操作510,检测线程将在下一执行时隙中被调度。在实例中,处理器是桶多线程处理器。在实例中,下一执行时隙是从产生结果开始的两个时钟周期。
在操作515,检测线程的下一指令以使用所述结果。这可通过匹配指令的寄存器写回与下一指令的寄存器源(例如操作数)来检测。
在操作520,响应于检测线程在下一执行时隙中被调度并且下一指令将使用结果,将所述结果直接提供给下一指令的执行单元。在实例中,为了将结果直接提供给下一指令的执行单元,可将结果写入到执行单元的源寄存器数据路径。
在实例中,也可将结果写入到源寄存器。在实例中,将结果写入到源寄存器发生在将结果直接提供给执行单元之后。
图6说明实例机器600的框图,可用所述机器600、在所述机器600中或通过所述机器600实施本文讨论一或多种技术(例如方法论)。如本文中描述,实例可包含逻辑或数个组件或机器600中的机构或可由其操作。电路系统(例如,处理电路系统)是在机器600的有形实体中实施的包含硬件(例如,简单电路、门、逻辑等)的电路的集合。电路系统成员可随着时间推移而为灵活的。电路系统包含可在操作时单独或组合执行指定操作的成员。在实例中,电路系统的硬件可经不变地设计以实施特定操作(例如硬连线)。在实例中,电路系统的硬件可包含可变地连接的物理组件(例如执行单元、晶体管、简单电路等),其包含经物理修改(例如,不变质量粒子的磁性、电可移动放置等)以编码特定操作的指令的机器可读媒体。在连接物理组件时,硬件组成的基础电性质(例如)从绝缘体改变到导体或反之亦然。指令使嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接产生呈硬件的电路系统的成员以在操作时实行特定操作的部分。因此,在实例中,当装置操作时,机器可读媒体元件是电路系统的部分或通信地耦合到电路系统的其它组件。在实例中,物理组件中的任一者可用于多于一个电路系统的多于一个成员中。例如,在操作中,执行单元可在一时间点用于第一电路系统的第一电路中且在不同时间由第一电路系统中的第二电路或第二电路系统中的第三电路再用。以下是关于机器600的这些组件的额外实例。
在替代性实施例中,机器600可作为独立装置操作或可连接(例如联网)到其它机器。在联网部署中,机器600可在服务器-客户端网络环境中作为服务器机器或客户端机器或两者进行操作。在实例中,机器600可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器600可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、网络路由器、交换机或网桥或能够(循序或以其它方式)执行指定将由所述机器所采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”还应被视为包含个别或联合执行一组(或多组)指令以执行本文中论述的方法中的任一或多者(例如云计算、软件即服务(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可进一步通过通信网络626使用传输媒体经由利用数个传送协议(例如,帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)中的任一者的网络接口装置620进行发射或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、分组数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、简易老式电话(POTS)网络及无线数据网络(例如,电气及电子工程师协会(IEEE)802.11系列标准(称为)、IEEE 802.16系列标准(称为/>)、IEEE 802.15.4系列标准、对等(P2P)网络,等等)。在实例中,网络接口装置620可包含一或多个物理插孔(例如以太网络、同轴或电话插孔)或一或多个天线以连接到通信网络626。在实例中,网络接口装置620可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一者进行无线通信。术语“传输媒体”应被视为包含能够存储、编码或载送由机器600执行的指令的任何无形媒体,且包含促进此软件的通信的数字或模拟通信信号或其它无形媒体。传输媒体是机器可读媒体。为了更好地说明本文描述的方法及设备,下面将一组非限制性的实例实施例作为用数字标识的实例来阐述。
实例1是一种设备,其包括:寄存器;算术逻辑单元(ALU),其经配置以完成线程的指令以产生结果;比较器,其在操作时耦合到所述寄存器及所述ALU,所述比较器经配置以:检测所述线程在下一执行时隙中被调度;并检测所述线程的下一指令将使用所述结果;以及电路系统,其在操作时耦合到比较器、所述寄存器及所述ALU,所述电路系统经配置以响应于所述检测所述线程在所述下一执行时隙中被调度并且下一指令将使用所述结果,将所述结果直接提供给所述下一指令的所述ALU。
在实例2中,根据实例1所述的标的物,其中所述比较器经配置以在处理器的每一时钟周期检查不同的线程。
在实例3中,根据实例2所述的标的物,其中下一执行时隙是从产生所述结果开始的两个时钟周期。
在实例4中,根据实例1至3中任一实例所述的标的物,其中,为了将所述结果直接提供给所述下一指令的所述ALU,所述电路系统经配置以将所述结果插入到所述ALU的源寄存器数据路径中。
在实例5中,根据实例1至4中任一实例所述的标的物,其中,为了将所述结果直接提供给所述下一指令的所述ALU,所述电路系统经配置以将所述结果写入到所述下一指令的源寄存器。
在实例6中,根据实例5所述的标的物,其中在将所述结果直接提供给所述ALU之后,将所述结果写入到所述源寄存器。
在实例7中,根据实例1至6中任一实例所述的标的物,其中所述设备包含在存储器控制器的可编程原子单元(PAU)中。
在实例8中,根据实例7所述的标的物,其中所述存储器控制器实施为小芯片。
实例9是一种方法,其包括:由处理器完成线程的指令以产生结果;检测所述线程在下一执行时隙中被调度;检测所述线程的下一指令将使用所述结果;以及响应于检测所述线程在所述下一执行时隙中被调度并且所述下一指令将使用所述结果,将所述结果直接提供给所述下一指令的ALU。
在实例10中,根据实例9所述的标的物,其中所述处理器是桶多线程处理器。
在实例11中,根据实例10所述的标的物,其中所述下一执行时隙是从产生所述结果开始的两个时钟周期。
在实例12中,根据实例9至11中任一实例所述的标的物,其中将所述结果直接提供给所述下一指令的所述ALU包含将所述结果插入到所述ALU的源寄存器数据路径中。
在实例13中,根据实例9至12中任一实例所述的标的物,其中将所述结果直接提供给所述下一指令的所述ALU包含将所述结果写入到所述下一指令的源寄存器。
在实例14中,根据实例13所述的标的物,其中将所述结果写入到所述源寄存器在所述结果被直接提供给所述ALU之后发生。
在实例15中,根据实例9至14中任一实例所述的标的物,其中所述处理器包含在存储器控制器的可编程原子单元(PAU)中。
在实例16中,根据实例15所述的标的物,其中所述存储器控制器实施为小芯片。
实例17是一种包含指令的机器可读媒体,所述指令在由处理器的电路系统执行时,致使所述处理器执行操作,所述操作包括:完成线程的指令以产生结果;检测所述线程在下一执行时隙中被调度;检测所述线程的下一指令将使用所述结果;以及响应于检测所述线程在下一执行时隙中被调度并且下一指令将使用所述结果,将所述结果直接提供给所述下一指令的ALU。
在实例18中,根据实例17所述的标的物,其中所述处理器是桶多线程处理器。
在实例19中,根据实例18所述的标的物,其中所述下一执行时隙是从产生所述结果开始的两个时钟周期。
在实例20中,根据实例17至19中任一实例所述的标的物,其中将所述结果直接提供给所述下一指令的所述ALU包含将所述结果插入到所述ALU的源寄存器数据路径中。
在实例21中,根据实例17至20中任一实例所述的标的物,其中将所述结果直接提供给所述下一指令的所述ALU包含将所述结果写入到所述下一指令的源寄存器。
在实例22中,根据实例21所述的标的物,其中将所述结果写入到所述源寄存器在所述结果被直接提供给所述ALU之后发生。
在实例23中,根据实例17至22中任一实例所述的标的物,其中所述处理器包含在存储器控制器的可编程原子单元(PAU)中。
在实例24中,根据实例23所述的标的物,其中所述存储器控制器实施为小芯片。
实例25是一种系统,其包括:用于由处理器完成线程的指令以产生结果的构件;用于检测所述线程在下一执行时隙中被调度的构件;用于检测所述线程的下一指令将使用所述结果的构件;以及用于响应于检测所述线程在下一执行时隙中被调度并且下一指令将使用所述结果,将所述结果直接提供给所述下一指令的ALU的构件。
在实例26中,根据实例25所述的标的物,其中所述处理器是桶多线程处理器。
在实例27中,根据实例26所述的标的物,其中下一执行时隙是从产生所述结果开始的两个时钟周期。
在实例28中,根据实例25至27中任一实例所述的标的物,其中用于将所述结果直接提供给所述下一指令的所述ALU的所述构件包含用于将所述结果插入到所述ALU的源寄存器数据路径中的构件。
在实例29中,根据实例25至28中任一实例所述的标的物,其中用于将所述结果直接提供给所述下一指令的所述ALU的所述构件包含用于将所述结果写入到下一指令的源寄存器的构件。
在实例30中,根据实例29所述的标的物,其中将所述结果写入到所述源寄存器在所述结果被直接提供给所述ALU之后发生。
在实例31中,根据实例25至30中任一实例所述的标的物,其中将所述处理器包含在存储器控制器的可编程原子单元(PAU)中。
在实例32中,根据实例31所述的标的物,其中所述存储器控制器实施为小芯片。
实例33是包含指令的至少一种机器可读媒体,所述指令在由处理电路系统执行时致使所述处理电路系统执行操作来实施实例1至32中的任一实例。
实例34是一种包括用于实施实例1至32中任一实例的构件的设备。
实例35是一种用于实施实例1至32中任一实例的系统。
实例36是一种用于实施实例1至32中任一实例的方法。
上文详细描述包含对形成详细描述的一部分的附图的参考。图式通过说明的方式展示其中可实践本发明的特定实施例。这些实施例在本文中还称为“实例”。此类实例可包含除展示或描述元件之外的元件。然而,本发明者还预期其中仅提供展示或描述的那些元件的实例。此外,本发明者还预期使用关于特定实例(或其一或多个方面)或关于本文中展示或描述的其它实例(或其一或多个方面)展示或描述的那些元件的任何组合或布置的实例(或其一或多个方面)。
在本文献中,使用术语“一(a/an)”,如专利文献中常见,包含一个或一个以上,其独立于“至少一个”或“一或多个”的任何其它例子或用法。在本文献中,术语“或”用于指代“非排他性或”,使得“A或B”可包含“A但非B”、“B但非A”及“A及B”,除非另有指示。在所附权利要求书中,术语“包含”及“其中(in which)”用作相应术语“包括”及“其中(wherein)”的普通英语等效形式。而且,在所附权利要求书中,术语“包含”及“包括”是开放式的,即,包含除了权利要求书中在此术语之后所列的元件之外的元件的系统、装置、物品或过程仍被认为落于所述权利要求书的范围内。此外,在所附权利要求书中,术语“第一”、“第二”及“第三”等仅用作标记,且不希望对其对象强加数字要求。
上文描述希望是说明性而非限制性的。举例来说,上述实例(或其一或多个方面)可彼此组合使用。在审阅上文描述后,例如所属领域的一般技术人员可使用其它实施例。应理解,其不会用于解译或限制权利要求书的范围或含义。而且,在上文详细描述中,可将各种特征组合在一起以简化本公开。此不应被解译为希望未主张的公开特征是任何权利要求必不可少的。确切来说,发明标的物可具有特定公开实施例的非所有特征。因此,所附权利要求书特此并入具体实施方式中,其中每一权利要求自身作为单独实施例,且预期此类实施例可以各种组合或排列彼此组合。应参考所附权利要求书连同此类权利要求所授权的等效物的全部范围来确定本发明的范围。

Claims (24)

1.一种设备,其包括:
寄存器;
算术逻辑单元(ALU),其经配置以完成线程的指令以产生结果;
比较器,其在操作时耦合到所述寄存器及所述ALU,所述比较器经配置以:
检测所述线程在下一执行时隙中被调度;及
检测所述线程的下一指令将使用所述结果;以及
电路系统,其在操作时耦合到所述比较器、所述寄存器及所述ALU,所述电路系统经配置以响应于所述检测所述线程在所述下一执行时隙中被调度并且所述下一指令将使用所述结果,将所述结果直接提供给所述下一指令的所述ALU。
2.根据权利要求1所述的设备,其中所述比较器经配置以在处理器的每一时钟周期检查不同的线程。
3.根据权利要求2所述的设备,其中所述下一执行时隙是从产生所述结果开始的两个时钟周期。
4.根据权利要求1所述的设备,其中,为了将所述结果直接提供给所述下一指令的所述ALU,所述电路系统经配置以将所述结果插入到所述ALU的源寄存器数据路径中。
5.根据权利要求1所述的设备,其中,为了将所述结果直接提供给所述下一指令的所述ALU,所述电路系统经配置以将所述结果写入到所述下一指令的源寄存器。
6.根据权利要求5所述的设备,其中在将所述结果直接提供给所述ALU之后,将所述结果写入到所述源寄存器。
7.根据权利要求1所述的设备,其中所述设备包含在存储器控制器的可编程原子单元(PAU)中。
8.根据权利要求7所述的设备,其中所述存储器控制器实施为小芯片。
9.一种方法,其包括:
由处理器完成线程的指令以产生结果;
检测所述线程在下一执行时隙中被调度;
检测所述线程的下一指令将使用所述结果;以及
响应于检测所述线程在所述下一执行时隙中被调度并且所述下一指令将使用所述结果,将所述结果直接提供给所述下一指令的ALU。
10.根据权利要求9所述的方法,其中所述处理器是桶式多线程处理器。
11.根据权利要求10所述的方法,其中所述下一执行时隙是从产生所述结果开始的两个时钟周期。
12.根据权利要求9所述的方法,其中将所述结果直接提供给所述下一指令的所述ALU包含将所述结果插入到所述ALU的源寄存器数据路径中。
13.根据权利要求9所述的方法,其中将所述结果直接提供给所述下一指令的所述ALU包含将所述结果写入到所述下一指令的源寄存器。
14.根据权利要求13所述的方法,其中将所述结果写入到所述源寄存器在所述结果被直接提供给所述ALU之后发生。
15.根据权利要求9所述的方法,其中所述处理器包含在存储器控制器的可编程原子单元(PAU)中。
16.根据权利要求15所述的方法,其中所述存储器控制器实施为小芯片。
17.一种包含指令的机器可读媒体,所述指令在由处理器的电路系统执行时,致使所述处理器执行操作,所述操作包括:
完成线程的指令以产生结果;
检测所述线程在下一执行时隙中被调度;
检测所述线程的下一指令将使用所述结果;以及
响应于检测所述线程在所述下一执行时隙中被调度并且所述下一指令将使用所述结果,将所述结果直接提供给所述下一指令的ALU。
18.根据权利要求17所述的机器可读媒体,其中所述处理器是桶式多线程处理器。
19.根据权利要求18所述的机器可读媒体,其中所述下一执行时隙是从产生所述结果开始的两个时钟周期。
20.根据权利要求17所述的机器可读媒体,其中将所述结果直接提供给所述下一指令的所述ALU包含将所述结果插入到所述ALU的源寄存器数据路径中。
21.根据权利要求17所述的机器可读媒体,其中将所述结果直接提供给所述下一指令的所述ALU包含将所述结果写入到所述下一指令的源寄存器。
22.根据权利要求21所述的机器可读媒体,其中将所述结果写入到所述源寄存器在所述结果被直接提供给所述ALU之后发生。
23.根据权利要求17所述的机器可读媒体,其中所述处理器包含在存储器控制器的可编程原子单元(PAU)中。
24.根据权利要求23所述的机器可读媒体,其中所述存储器控制器实施为小芯片。
CN202180083139.5A 2020-10-20 2021-10-12 在处理器中重用飞行中寄存器数据 Pending CN116685942A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/074,739 2020-10-20
US17/074,739 US11614942B2 (en) 2020-10-20 2020-10-20 Reuse in-flight register data in a processor
PCT/US2021/054600 WO2022086761A1 (en) 2020-10-20 2021-10-12 Reuse in-flight register data in a processor

Publications (1)

Publication Number Publication Date
CN116685942A true CN116685942A (zh) 2023-09-01

Family

ID=81185105

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180083139.5A Pending CN116685942A (zh) 2020-10-20 2021-10-12 在处理器中重用飞行中寄存器数据

Country Status (3)

Country Link
US (1) US11614942B2 (zh)
CN (1) CN116685942A (zh)
WO (1) WO2022086761A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966739B2 (en) * 2022-09-09 2024-04-23 Arm Limited Processing of issued instructions

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5872986A (en) * 1997-09-30 1999-02-16 Intel Corporation Pre-arbitrated bypassing in a speculative execution microprocessor
US7395415B2 (en) * 2004-09-30 2008-07-01 Intel Corporation Method and apparatus to provide a source operand for an instruction in a processor
US9361078B2 (en) * 2007-03-19 2016-06-07 International Business Machines Corporation Compiler method of exploiting data value locality for computation reuse
US20080270708A1 (en) 2007-04-30 2008-10-30 Craig Warner System and Method for Achieving Cache Coherency Within Multiprocessor Computer System
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
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US8122229B2 (en) 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8972958B1 (en) 2012-10-23 2015-03-03 Convey Computer Multistage development workflow for generating a custom instruction set reconfigurable processor
GB2458487B (en) 2008-03-19 2011-01-19 Imagination Tech Ltd Pipeline processors
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
US8572356B2 (en) * 2010-01-05 2013-10-29 Oracle America, Inc. Space-efficient mechanism to support additional scouting in a processor using checkpoints
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US20140129804A1 (en) 2012-11-02 2014-05-08 John M. King Tracking and reclaiming physical registers
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
US10915271B2 (en) 2018-01-29 2021-02-09 Micron Technology, Inc. Memory controller with programmable atomic operations
US11461527B2 (en) 2018-02-02 2022-10-04 Micron Technology, Inc. Interface for data communication between chiplets or other integrated circuits on an interposer
US11275710B2 (en) 2018-03-31 2022-03-15 Micron Technology, Inc. Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric
EP3776236A1 (en) 2018-03-31 2021-02-17 Micron Technology, Inc. Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric
CN111919203A (zh) 2018-03-31 2020-11-10 美光科技公司 使用重入队列的多线程自调度可重新配置计算架构的循环执行控制
EP3776243A1 (en) 2018-03-31 2021-02-17 Micron Technology, Inc. Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric
EP3776237A1 (en) 2018-03-31 2021-02-17 Micron Technology, Inc. Multiple types of thread identifiers for a multi-threaded, self-scheduling reconfigurable computing fabric
KR102465213B1 (ko) 2018-03-31 2022-11-10 마이크론 테크놀로지, 인크. 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 조건부 브랜칭 제어
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
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
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
US11119972B2 (en) 2018-05-07 2021-09-14 Micron Technology, Inc. Multi-threaded, self-scheduling processor
US11513839B2 (en) 2018-05-07 2022-11-29 Micron Technology, Inc. Memory request size management in a 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
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
GB2575294B8 (en) * 2018-07-04 2022-07-20 Graphcore Ltd Host Proxy On Gateway
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

Also Published As

Publication number Publication date
US11614942B2 (en) 2023-03-28
US20220121448A1 (en) 2022-04-21
WO2022086761A1 (en) 2022-04-28

Similar Documents

Publication Publication Date Title
US11669486B2 (en) Initialization sequencing of chiplet I/O channels within a chiplet system
US11953989B2 (en) Low-latency register error correction
US20230244416A1 (en) Communicating a programmable atomic operator to a memory controller
CN114385240A (zh) 组织可编程原子单元指令存储器的方法
US20240086200A1 (en) Self-scheduling threads in a programmable atomic unit
US11847464B2 (en) Variable pipeline length in a barrel-multithreaded processor
US11698791B2 (en) On-demand programmable atomic kernel loading
US11714655B2 (en) Pipeline merging in a circuit
CN116685942A (zh) 在处理器中重用飞行中寄存器数据
CN114385326A (zh) 桶式处理器中的线程重放到保留状态
CN114385327A (zh) 基于线程的处理器暂停
US12020064B2 (en) Rescheduling a failed memory request in a processor
US20220121483A1 (en) Thread execution control in a barrel processor
US20220121486A1 (en) Rescheduling a failed memory request in a processor
WO2022086763A1 (en) Thread scheduling control and memory splitting in a barrel processor

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