CN114385246A - 桶式多线程处理器中的可变流水线长度 - Google Patents
桶式多线程处理器中的可变流水线长度 Download PDFInfo
- Publication number
- CN114385246A CN114385246A CN202111222968.5A CN202111222968A CN114385246A CN 114385246 A CN114385246 A CN 114385246A CN 202111222968 A CN202111222968 A CN 202111222968A CN 114385246 A CN114385246 A CN 114385246A
- Authority
- CN
- China
- Prior art keywords
- instruction
- pipeline
- completion time
- chiplet
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000003780 insertion Methods 0.000 claims abstract description 11
- 230000037431 insertion Effects 0.000 claims abstract description 11
- 230000015654 memory Effects 0.000 claims description 145
- 239000000872 buffer Substances 0.000 claims description 35
- 230000004044 response Effects 0.000 claims description 25
- 230000003111 delayed effect Effects 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 27
- 238000012545 processing Methods 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 12
- 238000003860 storage Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 235000019161 pantothenic acid Nutrition 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001668 ameliorated effect Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 230000001934 delay 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
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 238000009413 insulation Methods 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
- 230000000737 periodic effect Effects 0.000 description 1
- 239000011295 pitch Substances 0.000 description 1
- 230000001902 propagating 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, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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, look ahead
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3873—Variable length pipelines, e.g. elastic pipeline
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
Abstract
本文中描述用于桶式多线程处理器中的可变流水线长度的装置和技术。可在插入到处理器的流水线中之前确定指令的完成时间。可检测所述指令与基于所述完成时间的不同指令之间的冲突。此处,所述不同指令已经在所述流水线中,且当所述完成时间等于所述不同指令的所述先前确定的完成时间时检测所述冲突。可接着计算所述完成时间与未冲突完成时间之间的差,且将所述指令的完成延迟所述差。
Description
技术领域
一般来说,本申请案涉及小芯片系统。具体来说,本申请案涉及桶式多线程处理器中的可变流水线长度。
背景技术
小芯片是一种用于集成各种处理功能的新兴技术。一般来说,小芯片系统由离散模块(各自被称为“小芯片”)构成,所述离散模块集成在中介层上,且在许多实例中视需要通过一或多个已建立的网络互连,以向系统提供所要功能。中介层和所包含的小芯片可封装在一起,以便于与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路(IC)或“芯片”,其可能与离散电路组件组合,且共同耦合到相应衬底以便于附接到中介层。系统中的大多数或所有小芯片将个别地配置以用于通过一或多个已建立的网络进行通信。
小芯片作为系统的个别模块的配置不同于在单芯片上实施的此系统,所述芯片在一个衬底(例如单个裸片)上含有不同装置块(例如,知识产权(IP)块),例如芯片上系统(SoC),或集成在印刷电路板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,较低的功耗、减少的时延等),且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含较高的良率或减少的开发成本和时间。
小芯片系统可包含例如一或多个应用程序(或处理器)小芯片和一或多个支持小芯片。此处,应用程序小芯片与支持小芯片之间的区别只是对小芯片系统可能的设计场景的参考。因此,举例来说,合成视觉小芯片系统可包含(仅借助于实例)用于产生合成视觉输出的应用程序小芯片,以及支持小芯片,例如存储器控制器小芯片、传感器接口小芯片或通信小芯片。在典型的用例中,合成视觉设计者可设计应用程序小芯片并从其它方获取支持小芯片。因此,由于避免设计和生产支持小芯片中所包含的功能,因此减少了设计支出(例如,在时间或复杂性方面)。小芯片还支持原本可能很困难的IP块紧密集成,例如使用不同处理技术或使用不同特征大小(或利用不同的接触技术或间距)制造的IP块。因此,可以模块化方式组装具有不同物理、电气或通信特性的多个IC或IC组合件,以提供实现所需功能的组合件。小芯片系统还可促进调适以适应将并入有小芯片系统的不同较大系统的需求。在实例中,IC或其它组合件可针对特定功能的功率、速度或发热进行优化,如同传感器可能发生的情况一样,相比于在单个裸片上尝试与其它装置集成,所述IC或其它组合件可更容易地与其它装置集成。另外,通过减小裸片的整体大小,小芯片的良率往往高于更复杂的单裸片装置的良率。
发明内容
在一个方面中,本申请案提供一种设备,其包括:流水线电路系统,其用以实施流水线;指令回写电路系统,其配置成:在插入到流水线中之前确定指令的完成时间;基于完成时间检测所述指令与不同指令之间的冲突,所述不同指令在流水线中,当完成时间等于不同指令的第二完成时间时检测冲突;以及计算完成时间与未冲突完成时间之间的差;以及写入延迟电路系统,其配置成将指令的完成延迟所述差。
在另一方面中,本申请案提供一种方法,其包括:在插入到处理器的流水线中之前确定指令的完成时间;基于完成时间检测所述指令与不同指令之间的冲突,所述不同指令在流水线中,当完成时间等于不同指令的第二完成时间时检测冲突;计算完成时间与未冲突完成时间之间的差;以及将指令的完成延迟所述差。
附图说明
根据下文给出的详细描述且根据本公开的各种实施例的随附图式将更加充分地理解本公开。然而,图式不应视为将本公开限于特定实施例,而是仅用于解释和理解。
图1A和1B说明根据实施例的小芯片系统的实例。
图2说明根据实施例的存储器控制器小芯片的实例的组件。
图3说明根据实施例的可编程原子单元(PAU)的实例中的组件。
图4说明根据实施例的通过用于桶式多线程处理器中的可变流水线长度的处理器组件的处理流程。
图5为根据实施例的用于桶式多线程处理器中的可变流水线长度的方法的实例的流程图。
图6为机器的实例的框图,本公开的实施例可利用所述机器、在所述机器中或通过所述机器进行操作。
具体实施方式
下文所描述的图1提供小芯片系统和在其中操作的组件的实例。所说明的小芯片系统包含存储器控制器。此存储器控制器包含可编程原子单元(PAU),所述可编程原子单元用于响应于对可编程原子运算符的存储器请求而执行自定义程序、可编程原子运算符。下文将相对于图2和3描述关于PAU的额外细节。PAU的处理器可以是桶式多线程和流水线式的。桶式多线程处理器提供若干益处,例如在单核心中执行许多同时线程时容许外部存储器请求的时延,同时维持高指令执行吞吐量。然而,轻度加载的桶式多线程处理器可能出现问题。此处,轻度加载意味着执行很少(例如,一个或两个)可用(例如八个)硬件线程。在此等情形下,可能在闲置硬件线程上浪费许多时钟周期。
典型的桶式多线程处理器具有基于硬件线程的数目的固定流水线长度。通常,在每一时钟处,寄存器文件切换到用于给定流水线级的新线程。这意味着线程指令执行之间(例如,线程中的邻近指令之间)的最小时间等于所支持硬件线程的数目。因此,线程可执行下一条指令之前的延迟是固定的,与指令操作无关。此方法用于许多桶式多线程处理器中以保持处理器核心控制硬件简单。然而,如上文所指出,这对轻度加载的处理器来说是低效的。
为了解决轻度加载的桶式多线程处理器问题,可在处理器中使用可变长度流水线。此处,线程的指令可早早地完成,尽可能快地执行到寄存器的回写,且无需等待完整处理器流水线完成。这通过当指令在流水线中时跟踪线程的线程标识符(ID),且当完成寄存器回写时将线程ID重新插入到线程准备运行队列中来实现。一旦线程ID返回到线程准备运行队列中,便可重新调度线程,与传统的桶式多线程处理器实施方案中可能的相比,其潜在地实现线程的更快的重新调度。
可能随着可变流水线长度而出现的问题为单个时钟周期内的线程之间的寄存器回写冲突。在传统的桶式多线程实施方案中,此冲突将不会发生,因为回写周期在跨越线程的流水线的同一级处。因为线程在不同时钟周期处开始流水线,所以仅一个线程尝试在任何给定周期内执行回写。然而,在可变长度流水线的情况下,可能发生冲突。
为了解决寄存器回写冲突,检查指令寄存器回写以确定是否存在冲突。如果不存在冲突,那么一旦指令能够回写到寄存器,所述指令就可回写到寄存器。因此,关于在流水线的第二级处完成的移动指令,当第二级完成时,所述指令可在时钟周期处回写到寄存器。然而,如果存在冲突,那么用指令追踪延迟(例如,在时钟周期中)。因此,移动指令可能与完成时间较长(例如后期)的较早指令冲突。此处,可以给移动指令一个延迟,例如单个时钟周期。当移动指令完成时,查询延迟且防止移动指令执行回写。此处,移动指令保持在流水线中,直至延迟到期且回写可能完成为止。此时,可重新调度线程。
通过提供可变长度流水线,解决桶式多线程处理器的显著缺点。尽管在预期执行许多线程时通常使用桶式多线程处理器,但许多程序以执行单个线程开始,后来才改为使用更多线程。因此,对于许多程序,当流水线具有固定长度时,桶式多线程处理器可能低效,直至存在足够的并行度(例如硬件线程)为止。通过引入可变长度流水线,可改善此问题。下文提供额外细节和实例。
图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主体或从属。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实施外部接口,在所描绘的实例中,所述主机接口小芯片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)、图形双数据速率类型6 SDRAM(GDDR6 SDRAM)等等。非易失性存储器装置的实例包含但不限于与非(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可各自被实施为具有其它组合逻辑电路系统(例如加法器、移位器、比较器、AND门、OR门、XOR门或其任何合适的组合)或其它逻辑电路系统的状态机。这些组件还可包含一或多个寄存器或缓冲器以存储操作数或其它数据。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提供桶式轮循瞬时线程切换以维持较高的每时钟指令速率。
可编程原子运算符可由PAU 270执行,所述可编程原子运算符涉及对关于所请求数据的可编程原子运算符的请求。用户可准备编程代码以提供此类可编程原子运算符。举例来说,可编程原子运算符可为相对简单的多周期操作,例如浮点加法,或可为相对复杂的多指令操作,例如布隆过滤器插入(Bloom filter insert)。可编程原子运算符可与预定原子运算符相同或不同,只要它们是由用户而不是系统供应商定义的。对于这些操作,高速缓存控制器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-VISA含有支持高级语言运算符和数据类型的完整指令集。PAU 270可利用RISC-V ISA,但通常会支持更有限的指令集和有限的寄存器文件大小,以在包含在存储器控制器小芯片205内时减小单元的裸片大小。
如上文所提及,在将读取数据写入到高速缓存器210之前,存储器危险清除单元260将清除所保留高速缓存行的所设置的危险位。因此,当写入合并单元255接收到请求和读取数据时,存储器危险清除单元260可将复位或清除信号传输到高速缓存器210以复位所保留高速缓存行的所设置的存储器危险位。并且,复位此危险位还将释放涉及所指定(或所保留)高速缓存行的未决读取或写入请求,从而将未决读取或写入请求提供到入站请求多路复用器以供选择和处理。
图3说明根据实施例的可编程原子单元300(PAU)的实例中的组件,例如上文关于图1(例如,在存储器控制器140中)和图2(例如,PAU 270)所提到的组件。如所说明,PAU 300包含处理器305、本地存储器310(例如,SRAM)和用于本地存储器310的控制器315。
在实例中,处理器305为流水线式的,使得不同指令的多个阶段在每一时钟周期一起执行。处理器305还为桶式多线程处理器,具有在处理器305的每一时钟周期之后在不同寄存器文件(例如,含有当前处理状态的寄存器组)之间切换的电路系统。这实现了当前执行线程之间的高效上下文切换。在实例中,处理器305支持八个线程,从而产生八个寄存器文件。在实例中,寄存器文件中的一些或全部未集成到处理器305中,而是驻留在本地存储器310(寄存器320)中。这通过消除用于这些寄存器320的传统触发器来降低处理器305中的电路复杂性。
本地存储器310还可容纳高速缓存器330和用于原子运算符的指令325。原子指令325包括支持各种应用程序加载的原子运算符的指令集。当原子运算符例如由应用程序小芯片125请求时,对应于原子运算符的指令集由处理器305执行。在实例中,对原子指令325进行分区以建立指令集。在此实例中,由请求进程请求的特定可编程原子运算符可通过分区号识别可编程原子运算符。当利用PAU 300寄存(例如,加载到其上)可编程原子运算符时可建立分区号。用于可编程原子指令325的额外元数据还可存储在本地存储器310中,例如分区表。
原子运算符操纵高速缓存器330,当原子运算符的线程完成时,所述高速缓存器330通常被同步(例如,刷新)。因此,除了从例如裸片外存储器275或280的外部存储器初始加载之外,在可编程原子运算符线程的执行期间针对大多数存储器操作减少时延。
处理器305配置成具有可变长度流水线以解决由轻度加载处理器305时(例如使用少于所有可用线程时)的情形引起的低效问题。为了实现此情况,处理器305配置成在流水线结束之前的流水线中的一个级处启用指令完成。因此,假设流水线长度为八级,但指令可在两级(例如,寄存器移动指令)中或在六级(例如,双精度乘法)中完成,那么所述指令可分别在第二级和第六级处完成。完成在此上下文中指示指令准备好回写到寄存器。如上所述,且在下文关于图4的论述中,当多个指令试图在同一时间(例如,在同一时钟周期内)完成时,例如可变长度流水线会引起复杂性。为了解决此复杂性,处理器305配置成在插入到流水线中之前确定指令的完成时间。所述确定是对特定指令的查找,或对指令的类型的查找。当指令将完成时,所述查找因此提供数个时钟周期或一个处理器级。这是与处理器305的当前时钟周期相关的完成时间。因此,如果指令花费五个时钟周期来完成,那么完成时间为来自处理器的当前时钟周期的五个时钟周期。然而,可使用除时钟周期以外的其它计时元件,如下文所述,完成时间的点将确定与其它指令的寄存器回写冲突。因此,可使用指示这些度量的任何度量。
在实例中,为确定指令的完成时间,处理器305配置成确定完成时间小于流水线中的所有可能流水线级。此条件与下文关于图4所论述的固定完成时间指令一致。一般来说,冲突避免延迟技术适用于固定完成时间指令而不适用于可变完成时间指令。
处理器305配置成基于完成时间检测所述指令与不同指令之间的冲突。此处,所述不同指令在流水线中,且当完成时间等于不同指令的第二完成时间时发生冲突。因此,所述检测确认,在完成指令的瓶颈时,例如寄存器回写的单个周期,当前指令和不同指令两者将在同一时刻到达所述瓶颈。
为了跟踪冲突,处理器305可包含记分板(例如,寄存器回写记分板)。记分板为其中可标记指令完成的结构。因此,举例来说,当时钟周期用于确定完成时间时,记分板具有用于给定未来时钟周期的一个字段,当预期流水线中的指令(例如,不同指令)在所述周期之后完成时,所述字段被标记(例如,在逻辑一的情况下)。其它结构可用于表示时间将被使用,例如移位结构(例如寄存器)编码为使得每一位表示将来的周期数目,所述结构在每一时钟周期处向下移位一个。
处理器305配置成通过在记分板中查找完成时间所落在的时钟周期来检测冲突以获得结果。此结果接着由处理器305检查以检测不同指令将在所述时钟周期处执行寄存器回写。因此,所述指令与不同指令之间存在冲突。
处理器305配置成计算完成时间与未冲突完成时间之间的差。在实例中,当不存在冲突(例如,未冲突完成时间)时,处理器305使用记分板来展望未来周期。此差为完成延迟,其如果强制执行,将确保指令可回写到寄存器。如果不存在冲突,那么所述差将为零。在实例中,处理器305配置成写入将在记分板中的第二时钟周期处完成指令的指示作为将指令插入到流水线中的部分。此处,第二时钟周期对应于未冲突完成时间。因此,处理器305利用完成时间加上所述差来更新记分板,以实现对未来指令的冲突检测。
处理器305配置成将指令的完成延迟所述差。因此,如果指令可在流水线的第二级完成,但与不同指令冲突,并且给出一的差值来解决冲突,那么处理器305将在流水线中的第二级完成之后的时钟周期内执行指令的寄存器回写。
在实例中,为了支持延迟,处理器305可包含写入延迟结构(例如,图4的写入延迟电路系统或回写延迟组件445)。此处,处理器305配置成检测指令准备好在流水线中的一个级处执行寄存器回写。处理器305接着配置成针对与流水线中的所述级相对应的记录在写入延迟数据结构中执行读取。如果确定记录的值不为零,那么阻止指令执行寄存器回写。此处,当将记录实施为移位寄存器时,寄存器中的值可在每一时钟周期递减。因此,如果第二级指令准备好以一个循环延迟回写,那么记录中的值为一而非零,且因此指令的回写将被阻止,另一指令将执行回写。然而,在下一个时钟周期之后,第二级记录中的值将递减到零,且指令将能够执行回写。在实例中,处理器305配置成将所述差作为值写入到记录中,作为将指令插入到流水线中的部分。
由于线程指令可在不同时间(例如时钟周期、流水线级等)完成,因此重新调度其的灵活技术可包含当前在流水线中的线程ID的缓冲器(例如,流水线式线程ID缓冲器)。处理器305可配置成将指令的线程ID放置到流水线式线程ID缓冲器中作为将指令插入到流水线中的部分。接着,当指令完成时,处理器305配置成将线程ID从流水线式线程ID缓冲器移动到线程准备运行队列。此处,可提取每一线程ID,以便调度下一条指令。
图4说明根据实施例的通过用于桶式多线程处理器中的可变流水线长度的处理器组件的处理流程。如所说明,从准备运行队列获取线程ID。当将处理下一条指令时,从线程准备运行队列405获取线程ID,且获得所述线程的状态(线程状态组件)410。高速缓存所述线程的下一条指令(指令高速缓存组件415)。接下来,指令在指令破解组件420处被解码(例如,破解)成组成部分,例如操作数、指令类型等。
指令回写槽位组件425(例如,指令回写电路系统)检查指令并确定指令将在流水线150中的哪个级完成。在此上下文中,指令完成意味着指令将试图回写到寄存器文件435时的点。举例来说,移动指令(例如,将数据从一个寄存器移动到另一寄存器)可在流水线450的第二级处极为快速且完成,或在进入流水线的两个时钟周期内完成。相比之下,双精度加法指令可在流水线450的第四级处完成或花费四个时钟周期。这些类型的指令在流水线450的一个级内具有已知或固定的完成,且因此此处被称为固定完成时间指令。其它指令(例如,对裸片外存储器或对处理器外部组件(例如,协处理器、加密组件或其它IP块)的请求)可具有超出流水线级的完成时间,其也可为可变的,且因此被称为可变完成时间指令。
如果指令回写槽位425确定指令为可变完成时间指令,那么可使用线程自调度的形式。此处,处理器将按一定程度将线程重新调度的计时移交给外部或长期运行组件。为了实现此情况,线程ID随指令行进。因此,举例来说,当存储器请求指令进入流水线450以处理存储器请求时,指令的线程ID伴随存储器请求。此时,线程ID不再在线程准备运行队列405中,也不在任何其它所说明的结构中。因此,将不重新调度线程。然而,当存储器请求完成时,来自存储器的响应由处理器接收且存储在缓冲器465中。单独的缓冲器470可用于另一IP块(例如,协处理器)响应,缓冲器465可用于所有可变完成时间指令响应。多路复用器460确定与缓冲器465或470中的响应相对应的线程何时将被放回到线程准备运行队列中以用于重新调度。
如果指令为固定完成时间指令,那么指令回写槽位组件425检查寄存器回写记分板430以确定是否可在与当前指令相同的时钟周期处尝试任何其它寄存器回写。举例来说,如果在两个时钟周期以前,指令可在四个时钟周期内回写,且当前指令可在两个时钟周期内回写,那么这两个指令将能够在同一时钟周期内回写。在寄存器回写记分板430中跟踪此潜在冲突。寄存器回写记分板430跟踪哪些时钟周期不具有潜在回写。因此,当4周期指令由指令回写槽位组件425处理时,将第四时钟周期标记为指示4周期组件的回写。接着,两个周期之后,当处理2周期指令时,2周期指令可能完成时的时钟周期由4周期指令标记,指示寄存器回写冲突。
当指令回写槽位组件425检测到寄存器回写冲突时,指令回写槽位组件425通过基于来自寄存器回写记分板430的未冲突周期计算冲突指令的延迟而解决所述冲突。因此,如果冲突周期后的周期是空闲的,那么可为2周期指令提供1周期回写延迟。如果不存在冲突,那么为所述指令提供0周期回写延迟。
一旦指令回写槽位组件425确定寄存器回写延迟,指令回写槽位组件425就将寄存器回写延迟写入到回写延迟组件445。回写延迟组件445的实例实施方案可为移位寄存器的集合、流水线450中的每一级或流水线450中可提示寄存器回写的级的子集的一个寄存器。如所说明,从流水线450和回写延迟组件引出的箭头相对应,使得每一箭头的最顶部箭头对应于流水线450的第二级的回写、第二最顶部箭头对应于第四级,且最后一个箭头对应于第六级。
在每一时钟周期之后,回写延迟组件445的移位寄存器递减存储在其中的值。因此,如果2周期指令具有三个周期延迟,那么将数值三存储在对应于流水线450的第二级的移位寄存器中。在第一周期之后,寄存器中的值将为二,接着在另一周期之后为一,且最后在第三周期之后为零。
当指令准备好从流水线450回写时,查询回写指定回写延迟组件445中的哪个寄存器所在的级以确定回写是否将发生。举例来说,当流水线450的第四级完成时,4周期指令在回写延迟组件445中具有零,且因此可立即回写到寄存器文件435。然而,回写延迟组件445中对应于2周期指令的寄存器不具有零,且因此对于此指令将不会发生回写。确切地说,2周期指令的线程将保持在流水线450的第二级。在下一周期,用于第二级的回写延迟组件445寄存器将递减到零,且可继续进行对2周期指令的寄存器文件435的回写。
具有较晚完成时间(例如,较晚流水线级)的指令具有优先权。因此,在给定时钟周期内,如果准备将第六级和第四级处的指令回写到寄存器文件435,那么第六级指令将执行回写。这确保了最大回写延迟不会使回写超出流水线长度,这是施加在其它桶式多线程处理器上的典型延迟。当指令的延迟短于流水线长度时,那么在轻度加载的处理器中浪费较少的时钟周期,这是因为与流水线450中的每一级完成所花费的周期相比,较短周期指令可在更少周期内完成。
一旦完成对寄存器文件435的回写,便可重新调度线程。这通过流水线式线程ID组件440实现。流水线式线程ID组件440含有通过流水线450移动的指令的线程ID。当指令能够执行回写时,从流水线式线程ID组件440移除所述指令的线程ID且将所述指令的线程ID递送到多路复用器460以用于重新插入到线程准备运行队列405中。在实例中,多路复用器在任何其它源(例如,存储器响应)之前从流水线式线程ID组件440中选择可用线程ID。因此,缓冲器465或470维持来自可变完成时间指令的线程ID,直至不存在来自流水线式线程ID组件440的输入为止。
图5为根据实施例的用于桶式多线程处理器中的可变流水线长度的方法500的实例的流程图。方法500的操作由计算机硬件(例如,处理电路系统)执行。
在实例中,方法由存储器控制器(例如,存储器控制器140或存储器控制器205)中的PAU(例如,PAU 300或PAU 270)中的处理器(例如,处理器305)执行。在实例中,存储器控制器为小芯片(例如,存储器控制器140)。在实例中,存储器控制器小芯片集成到小芯片系统(例如,小芯片系统110)中。
在操作505处,在插入到桶式多线程处理器的流水线中之前确定指令的完成时间。在实例中,完成时间为时钟周期的数目。在实例中,确定指令的完成时间包含确定完成时间小于流水线中的所有可能流水线级。
在操作510处,基于完成时间检测指令与不同指令之间的冲突。此处,所述不同指令在流水线中,且当完成时间等于不同指令的第二完成时间时发生冲突。
在实例中,检测冲突包含在寄存器回写记分板中查找完成时间所落在的时钟周期以获得结果。接着,检查结果以检测所述结果指示不同指令将在时钟周期处执行寄存器回写。在实例中,方法500的操作扩展为包含将指令将在寄存器回写记分板中在第二时钟周期处完成的指示写入作为将指令插入到流水线中的部分。此处,第二时钟周期对应于未冲突完成时间。
在操作515处,计算完成时间与未冲突完成时间之间的差。在实例中,当时钟周期内测量完成时间时,所述差为时钟周期的第二数目。在实例中,最大延迟(例如,完成时间加上所述差)为八个时钟周期。
在操作520处,将指令的完成延迟所述差。在实例中,将指令的完成延迟所述差包含检测指令准备好在流水线中的一个级处执行寄存器回写,以及在写入延迟数据结构中对与流水线中的所述级相对应的记录执行读取。如果确定记录的值不为零,那么阻止指令执行寄存器回写。在实例中,方法500的操作可扩展为包含将所述差作为值写入到所述记录中,作为将指令插入到流水线中的部分。在实例中,方法500的操作可扩展为包含随着每一时钟周期递减所述值。
在实例中,方法500的操作可扩展为包含响应于指令的完成而将指令的线程ID从流水线式线程ID缓冲器移动到线程准备运行队列中。在实例中,线程ID插入到流水线式线程ID缓冲器中作为将指令插入到流水线中的部分。
图6说明实例机器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可进一步利用多个传送协议中的任一个(例如,帧中继、因特网协议(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中,根据实例3所述的标的物,其中,为确定指令的完成时间,指令回写电路系统配置成确定完成时间小于流水线中的所有可能流水线级。
在实例5中,根据实例4所述的标的物,其中最大延迟为八个时钟周期。
在实例6中,根据实例1至5中任一个所述的标的物,其中,为检测冲突,指令回写电路系统配置成:在寄存器回写记分板中查找完成时间所落在的时钟周期以获得结果;以及检测所述结果指示不同指令将在所述时钟周期处执行寄存器回写。
在实例7中,根据实例6所述的标的物,其中指令回写电路系统配置成:在寄存器回写记分板中写入指令将在第二时钟周期处完成的指示作为将指令插入到流水线中的部分,所述第二时钟周期与未冲突完成时间相对应。
在实例8中,根据实例1至7中任一个所述的标的物,其中,为将指令的完成延迟所述差,流水线配置成:检测指令准备好在流水线中的一个级处执行寄存器回写;在写入延迟电路系统的写入延迟数据结构中对与流水线中的所述级相对应的记录执行读取;确定记录的值不为零;以及防止指令执行寄存器回写。
在实例9中,根据实例8所述的标的物,其中指令回写电路系统配置成:将所述差作为值写入到记录中作为将指令插入到流水线中的部分。
在实例10中,根据实例8至9中任一个所述的标的物,其中写入延迟电路系统配置成:随着每一时钟周期递减所述值。
在实例11中,根据实例1至10中任一个所述的标的物,其中流水线配置成:响应于指令的完成而将指令的线程标识符(ID)从流水线式线程ID缓冲器移动到线程准备运行队列中,所述线程ID插入到流水线式线程ID缓冲器中作为将指令插入到流水线中的部分。
在实例12中,根据实例1到11中任一个所述的标的物,其中处理器包含在存储器控制器中的可编程原子单元中。
在实例13中,根据实例12所述的标的物,其中存储器控制器为小芯片系统中的小芯片。
实例14为一种方法,其包括:在插入到处理器的流水线中之前确定指令的完成时间;基于完成时间检测所述指令与不同指令之间的冲突,所述不同指令在流水线中,当完成时间等于不同指令的第二完成时间时检测冲突;计算完成时间与未冲突完成时间之间的差;以及将指令的完成延迟所述差。
在实例15中,根据实例14所述的标的物,其中完成时间为时钟周期的数目。
在实例16中,根据实例15所述的标的物,其中所述差为时钟周期的第二数目。
在实例17中,根据实例16所述的标的物,其中确定指令的完成时间包含确定完成时间小于流水线中的所有可能流水线级。
在实例18中,根据实例17所述的标的物,其中最大延迟为八个时钟周期。
在实例19中,根据实例14至18中任一个所述的标的物,其中检测冲突包含:在寄存器回写记分板中查找完成时间所落在的时钟周期以获得结果;以及检测所述结果指示不同指令将在所述时钟周期处执行寄存器回写。
在实例20中,根据实例19所述的标的物,其包括:在寄存器回写记分板中写入指令将在第二时钟周期处完成的指示作为将指令插入到流水线中的部分,所述第二时钟周期与未冲突完成时间相对应。
在实例21中,根据实例14至20中任一个所述的标的物,其中将指令的完成延迟所述差包含:检测指令准备好在流水线中的一个级处执行寄存器回写;在写入延迟数据结构中对与流水线中的所述级相对应的记录执行读取;确定记录的值不为零;以及防止指令执行寄存器回写。
在实例22中,根据实例21所述的标的物,其包括:将所述差作为值写入到记录中作为将指令插入到流水线中的部分。
在实例23中,根据实例21至22中任一个所述的标的物,其包括:随着每一时钟周期递减所述值。
在实例24中,根据实例14至23中任一个所述的标的物,其包括:响应于指令的完成而将指令的线程标识符(ID)从流水线式线程ID缓冲器移动到线程准备运行队列中,所述线程ID插入到流水线式线程ID缓冲器中作为将指令插入到流水线中的部分。
在实例25中,根据实例14至24中任一个所述的标的物,其中处理器包含在存储器控制器中的可编程原子单元中。
在实例26中,根据实例25所述的标的物,其中存储器控制器为小芯片系统中的小芯片。
实例27为一种包含指令的机器可读介质,所述指令在由处理器的电路系统执行时使处理器执行包括以下的操作:在插入到处理器的流水线中之前确定指令的完成时间;基于完成时间检测所述指令与不同指令之间的冲突,所述不同指令在流水线中,当完成时间等于不同指令的第二完成时间时检测冲突;计算完成时间与未冲突完成时间之间的差;以及将指令的完成延迟所述差。
在实例28中,根据实例27所述的标的物,其中完成时间为时钟周期的数目。
在实例29中,根据实例28所述的标的物,其中所述差为时钟周期的第二数目。
在实例30中,根据实例29所述的标的物,其中确定指令的完成时间包含确定完成时间小于流水线中的所有可能流水线级。
在实例31中,根据实例30所述的标的物,其中最大延迟为八个时钟周期。
在实例32中,根据实例27至31中任一个所述的标的物,其中检测冲突包含:在寄存器回写记分板中查找完成时间所落在的时钟周期以获得结果;以及检测所述结果指示不同指令将在所述时钟周期处执行寄存器回写。
在实例33中,根据实例32所述的标的物,其中操作包括:在寄存器回写记分板中写入指令将在第二时钟周期处完成的指示作为将指令插入到流水线中的部分,所述第二时钟周期与未冲突完成时间相对应。
在实例34中,根据实例27至33中任一个所述的标的物,其中将指令的完成延迟所述差包含:检测指令准备好在流水线中的一个级处执行寄存器回写;在写入延迟数据结构中对与流水线中的所述级相对应的记录执行读取;确定记录的值不为零;以及防止指令执行寄存器回写。
在实例35中,根据实例34所述的标的物,其中操作包括:将所述差作为值写入到记录中作为将指令插入到流水线中的部分。
在实例36中,根据实例34至35中任一个所述的标的物,其中操作包括:随着每一时钟周期递减所述值。
在实例37中,根据实例27至36中任一个所述的标的物,其中操作包括:响应于指令的完成而将指令的线程标识符(ID)从流水线式线程ID缓冲器移动到线程准备运行队列中,所述线程ID插入到流水线式线程ID缓冲器中作为将指令插入到流水线中的部分。
在实例38中,根据实例27到37中任一个所述的标的物,其中处理器包含在存储器控制器中的可编程原子单元中。
在实例39中,根据实例38所述的标的物,其中存储器控制器为小芯片系统中的小芯片。
实例40为一种系统,其包括:用于在插入到处理器的流水线中之前确定指令的完成时间的构件;用于基于完成时间检测所述指令与不同指令之间的冲突的构件,所述不同指令在流水线中,当完成时间等于不同指令的第二完成时间时检测冲突;用于计算完成时间与未冲突完成时间之间的差的构件;以及用于将指令的完成延迟所述差的构件。
在实例41中,根据实例40所述的标的物,其中完成时间为时钟周期的数目。
在实例42中,根据实例41所述的标的物,其中所述差为时钟周期的第二数目。
在实例43中,根据实例42所述的标的物,其中用于确定指令的完成时间的构件包含用于确定完成时间小于流水线中的所有可能流水线级的构件。
在实例44中,根据实例43所述的标的物,其中最大延迟为八个时钟周期。
在实例45中,根据实例40至44中任一个所述的标的物,其中用于检测冲突的构件包含:用于在寄存器回写记分板中查找完成时间所落在的时钟周期以获得结果的构件;以及用于检测所述结果指示不同指令将在所述时钟周期处执行寄存器回写的构件。
在实例46中,根据实例45所述的标的物,其包括:用于在寄存器回写记分板中写入指令将在第二时钟周期处完成的指示作为将指令插入到流水线中的部分的构件,所述第二时钟周期与未冲突完成时间相对应。
在实例47中,根据实例40至46中任一个所述的标的物,其中用于将指令的完成延迟所述差的构件包含:用于检测指令准备好在流水线中的一个级处执行寄存器回写的构件;用于在写入延迟数据结构中对与流水线中的所述级相对应的记录执行读取的构件;用于确定记录的值不为零的构件;以及用于防止指令执行寄存器回写的构件。
在实例48中,根据实例47所述的标的物,其包括:用于将所述差作为值写入到记录中作为将指令插入到流水线中的部分的构件。
在实例49中,根据实例47至48中任一个所述的标的物,其包括:用于随着每一时钟周期递减所述值的构件。
在实例50中,根据实例40至49中任一个所述的标的物,其包括:用于响应于指令的完成而将指令的线程标识符(ID)从流水线式线程ID缓冲器移动到线程准备运行队列中的构件,所述线程ID插入到流水线式线程ID缓冲器中作为将指令插入到流水线中的部分。
在实例51中,根据实例40至50中任一个所述的标的物,其中处理器包含在存储器控制器中的可编程原子单元中。
在实例52中,根据实例51所述的标的物,其中存储器控制器为小芯片系统中的小芯片。
实例53为至少一种包含指令的机器可读介质,所述指令在由处理电路系统执行时使处理电路系统执行操作以实施实例1至52中的任一个。
实例54为一种设备,其包括用以实施实例1至52中的任一个的构件。
实例55为一种系统,其用以实施实例1至52中的任一个。
实例56为一种方法,其用以实施实例1至52中的任一个。
以上详细描述包含对随附图式的参考,所述随附图式形成详细描述的一部分。所述图式借助于说明展示可实践本发明的具体实施例。这些实施例在本文中也称为“实例”。此类实例可包含除了所展示或所描述的那些元件之外的元件。然而,本发明人还预期其中仅提供所展示或所描述的那些元件的实例。此外,本发明人还预期使用关于特定实例(或其一或多个方面)或关于本文所示或所描述的其它实例(或其一或多个方面)而展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本文件中,如专利文件中常见,使用术语“一(a/an)”以包含一个或多于一个,这与“至少一个”或“一个或多个”的任何其它情形或使用无关。在本文件中,术语“或”用于指代非排它性或,使得除非另有指示,否则“A或B”可包含“A而非B”、“B而非A”以及“A和B”。在所附权利要求书中,术语“包含”和“在其中(in which)”用作相应术语“包括”和“其中(wherein)”的通俗英语等效物。此外,在所附权利要求书中,术语“包含”和“包括”是开放的,也就是说,包含除了权利要求项中列在这种术语之后的那些要素之外的要素的系统、装置、物件或过程仍被认为处于所述权利要求项的范围内。此外,在以下权利要求书中,术语“第一”、“第二”和“第三”等仅用作标签,且并不意欲对其对象施加数字要求。
以上描述意图为说明性的而非限制性的。举例来说,上述实例(或其一或多个方面)可彼此组合使用。例如本领域的普通技术人员在查阅以上描述后可使用其它实施例。应理解,所述实施例将不会用于解释或限制权利要求的范围或含义。另外,在以上具体实施方式中,可将各种特征分组在一起以简化本公开。不应将这一情况解释为意图未主张的公开特征对于任何权利要求来说是必需的。实际上,本发明主题可在于比特定所公开实施例的所有特征要少。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求作为一单独实施例而独立存在,且经考虑此类实施例可以各种组合或排列彼此组合。本发明的范围应该通过参考所附权利要求书以及此类权利要求书所授予的等效物的完整范围来确定。
Claims (26)
1.一种设备,其包括:
流水线电路系统,其用以实施流水线;
指令回写电路系统,其配置成:
在插入到所述流水线中之前确定指令的完成时间;
基于所述完成时间检测所述指令与不同指令之间的冲突,所述不同指令在所述流水线中,当所述完成时间等于所述不同指令的第二完成时间时检测所述冲突;以及
计算所述完成时间与未冲突完成时间之间的差;以及
写入延迟电路系统,其配置成将所述指令的完成延迟所述差。
2.根据权利要求1所述的设备,其中所述完成时间为时钟周期的数目。
3.根据权利要求2所述的设备,其中所述差为时钟周期的第二数目。
4.根据权利要求3所述的设备,其中,为确定所述指令的所述完成时间,所述指令回写电路系统配置成确定所述完成时间小于所述流水线中的所有可能流水线级。
5.根据权利要求4所述的设备,其中所述最大延迟为八个时钟周期。
6.根据权利要求1所述的设备,其中,为检测所述冲突,所述指令回写电路系统配置成:
在寄存器回写记分板中查找所述完成时间所落在的时钟周期以获得结果;以及
检测所述结果指示所述不同指令将在所述时钟周期处执行寄存器回写。
7.根据权利要求6所述的设备,其中所述指令回写电路系统配置成:
在所述寄存器回写记分板中写入所述指令将在第二时钟周期处完成的指示作为将所述指令插入到所述流水线中的部分,所述第二时钟周期与所述未冲突完成时间相对应。
8.根据权利要求1所述的设备,其中,为将所述指令的完成延迟所述差,所述流水线配置成:
检测所述指令准备好在所述流水线中的一个级处执行寄存器回写;
在所述写入延迟电路系统的写入延迟数据结构中对与所述流水线中的所述级相对应的记录执行读取;
确定所述记录的值不为零;以及
防止所述指令执行所述寄存器回写。
9.根据权利要求8所述的设备,其中所述指令回写电路系统配置成:
将所述差作为所述值写入到所述记录中作为将所述指令插入到所述流水线中的部分。
10.根据权利要求8所述的设备,其中所述写入延迟电路系统配置成:
随着每一时钟周期递减所述值。
11.根据权利要求1所述的设备,其中所述流水线配置成:
响应于所述指令的完成而将所述指令的线程标识符ID从流水线式线程ID缓冲器移动到线程准备运行队列中,所述线程ID插入到所述流水线式线程ID缓冲器中作为将所述指令插入到所述流水线中的部分。
12.根据权利要求1所述的设备,其中所述设备包含在存储器控制器中的可编程原子单元中。
13.根据权利要求12所述的设备,其中所述存储器控制器为小芯片系统中的小芯片。
14.一种方法,其包括:
在插入到处理器的流水线中之前确定指令的完成时间;
基于所述完成时间检测所述指令与不同指令之间的冲突,所述不同指令在所述流水线中,当所述完成时间等于所述不同指令的第二完成时间时检测所述冲突;
计算所述完成时间与未冲突完成时间之间的差;以及
将所述指令的完成延迟所述差。
15.根据权利要求14所述的方法,其中所述完成时间为时钟周期的数目。
16.根据权利要求15所述的方法,其中所述差为时钟周期的第二数目。
17.根据权利要求16所述的方法,其中确定所述指令的所述完成时间包含确定所述完成时间小于所述流水线中的所有可能流水线级。
18.根据权利要求17所述的方法,其中所述最大延迟为八个时钟周期。
19.根据权利要求14所述的方法,其中检测所述冲突包含:
在寄存器回写记分板中查找所述完成时间所落在的时钟周期以获得结果;以及
检测所述结果指示所述不同指令将在所述时钟周期处执行寄存器回写。
20.根据权利要求19所述的方法,其包括:
在所述寄存器回写记分板中写入所述指令将在第二时钟周期处完成的指示作为将所述指令插入到所述流水线中的部分,所述第二时钟周期与所述未冲突完成时间相对应。
21.根据权利要求14所述的方法,其中将所述指令的完成延迟所述差包含:
检测所述指令准备好在所述流水线中的一个级处执行寄存器回写;
在写入延迟数据结构中对与所述流水线中的所述级相对应的记录执行读取;
确定所述记录的值不为零;以及
防止所述指令执行所述寄存器回写。
22.根据权利要求21所述的方法,其包括:
将所述差作为所述值写入到所述记录中作为将所述指令插入到所述流水线中的部分。
23.根据权利要求21所述的方法,其包括:
随着每一时钟周期递减所述值。
24.根据权利要求14所述的方法,其包括:
响应于所述指令的完成而将所述指令的线程标识符ID从流水线式线程ID缓冲器移动到线程准备运行队列中,所述线程ID插入到所述流水线式线程ID缓冲器中作为将所述指令插入到所述流水线中的部分。
25.根据权利要求14所述的方法,其中所述处理器包含于存储器控制器中的可编程原子单元中。
26.根据权利要求25所述的方法,其中所述存储器控制器为小芯片系统中的小芯片。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/074,722 | 2020-10-20 | ||
US17/074,722 US11526361B2 (en) | 2020-10-20 | 2020-10-20 | Variable pipeline length in a barrel-multithreaded processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385246A true CN114385246A (zh) | 2022-04-22 |
Family
ID=81185087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111222968.5A Pending CN114385246A (zh) | 2020-10-20 | 2021-10-20 | 桶式多线程处理器中的可变流水线长度 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11526361B2 (zh) |
CN (1) | CN114385246A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847464B2 (en) | 2020-10-20 | 2023-12-19 | Micron Technology, Inc. | Variable pipeline length in a barrel-multithreaded processor |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002008893A1 (en) * | 2000-07-21 | 2002-01-31 | Antevista Gmbh | A microprocessor having an instruction format containing explicit timing information |
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 |
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 |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US9015399B2 (en) | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US8095735B2 (en) | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US8972958B1 (en) | 2012-10-23 | 2015-03-03 | Convey Computer | Multistage development workflow for generating a custom instruction set reconfigurable processor |
US8095779B2 (en) * | 2008-02-19 | 2012-01-10 | International Business Machines Corporation | System and method for optimization within a group priority issue schema for a cascaded pipeline |
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 |
US20180107591A1 (en) * | 2011-04-06 | 2018-04-19 | P4tents1, LLC | System, method and computer program product for fetching data between an execution of a plurality of threads |
US10430190B2 (en) | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
WO2019089816A2 (en) | 2017-10-31 | 2019-05-09 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
KR102407128B1 (ko) | 2018-01-29 | 2022-06-10 | 마이크론 테크놀로지, 인크. | 메모리 컨트롤러 |
US11461527B2 (en) | 2018-02-02 | 2022-10-04 | Micron Technology, Inc. | Interface for data communication between chiplets or other integrated circuits on an interposer |
CN111971652A (zh) | 2018-03-31 | 2020-11-20 | 美光科技公司 | 多线程自调度可重新配置计算架构的条件分支控制 |
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 |
KR102454405B1 (ko) | 2018-03-31 | 2022-10-17 | 마이크론 테크놀로지, 인크. | 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 효율적인 루프 실행 |
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 |
EP3776241B1 (en) | 2018-03-31 | 2023-06-28 | Micron Technology, Inc. | Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric |
WO2019191744A1 (en) | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue |
US11132233B2 (en) | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, 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 |
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 |
US11513839B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Memory request size management in a multi-threaded, self-scheduling processor |
US11119972B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | 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 |
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 |
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 |
US10846098B2 (en) * | 2018-05-29 | 2020-11-24 | Arm Limited | Execution pipeline adaptation |
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 |
US11526361B2 (en) | 2020-10-20 | 2022-12-13 | Micron Technology, Inc. | Variable pipeline length in a barrel-multithreaded processor |
-
2020
- 2020-10-20 US US17/074,722 patent/US11526361B2/en active Active
-
2021
- 2021-10-20 CN CN202111222968.5A patent/CN114385246A/zh active Pending
-
2022
- 2022-12-12 US US18/079,164 patent/US11847464B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847464B2 (en) | 2020-10-20 | 2023-12-19 | Micron Technology, Inc. | Variable pipeline length in a barrel-multithreaded processor |
Also Published As
Publication number | Publication date |
---|---|
US20220121450A1 (en) | 2022-04-21 |
US11847464B2 (en) | 2023-12-19 |
US20230106087A1 (en) | 2023-04-06 |
US11526361B2 (en) | 2022-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114385250B (zh) | 小芯片系统内的小芯片i/o信道的初始化定序 | |
CN114385240A (zh) | 组织可编程原子单元指令存储器的方法 | |
US11953989B2 (en) | Low-latency register error correction | |
US20240086200A1 (en) | Self-scheduling threads in a programmable atomic unit | |
CN114385241A (zh) | 完成可编程原子事务的方法 | |
CN116583831A (zh) | 向操作系统注册自定义原子操作 | |
CN114385236A (zh) | 传递可编程原子操作符到存储器控制器 | |
CN116636189A (zh) | 用于网络装置中的缓冲包的包仲裁 | |
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 | |
CN114385545B (zh) | 针对可编程原子操作的存储器存取边界检查 | |
US11614942B2 (en) | Reuse in-flight register data in a processor | |
CN114385326A (zh) | 桶式处理器中的线程重放到保留状态 | |
US20220121486A1 (en) | Rescheduling a failed memory request in a processor | |
US20220121483A1 (en) | Thread execution control in a barrel processor | |
WO2022086763A1 (en) | Thread scheduling control and memory splitting in a barrel processor | |
CN114385238A (zh) | 减小存储器控制器中的存储器操作的时延 |
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 |