CN114385326A - 桶式处理器中的线程重放到保留状态 - Google Patents
桶式处理器中的线程重放到保留状态 Download PDFInfo
- Publication number
- CN114385326A CN114385326A CN202111215316.9A CN202111215316A CN114385326A CN 114385326 A CN114385326 A CN 114385326A CN 202111215316 A CN202111215316 A CN 202111215316A CN 114385326 A CN114385326 A CN 114385326A
- Authority
- CN
- China
- Prior art keywords
- thread
- scheduling
- pipeline
- memory
- 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
Links
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/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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
-
- 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/466—Transaction processing
-
- 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
-
- 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
-
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microcomputers (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文中描述用于桶式处理器中的线程重放到保留状态的装置和技术。一种设备包含桶式处理器,所述桶式处理器包含临时存储器;以及线程调度电路;其中所述桶式处理器经配置以通过使用所述线程调度电路执行操作,所述操作包含如下操作:在时钟循环上将当前线程调度为放入用于所述桶式处理器的管线中,所述桶式处理器将在每一时钟循环上调度线程;将所述当前线程存储于所述临时存储器中;检测在调度所述当前线程的所述循环之后的时钟循环上无线程可用;以及响应于检测到在所述后续时钟循环上无线程可用,基于所述临时存储器的内容重复调度所述当前线程。
Description
技术领域
本公开涉及小芯片,且具体来说,涉及桶式处理器中的线程重放到保留状态。
背景技术
小芯片是一种用于集成各种处理功能的新兴技术。通常,小芯片系统由离散模块(各自被称为“小芯片”)构成,所述离散模块集成在中介层上,并且在许多实例中视需要通过一或多个已建立的网络互连,以向系统提供所要功能。中介层和所包含的小芯片可封装在一起,以便于与较大系统的其它部件互连。每一小芯片可包含一或多个个别集成电路(IC)或“芯片”,其可能与离散电路部件组合,且通常耦合到相应衬底以便于附接到中介层。系统中的大多数或所有小芯片可个别地配置以用于通过一或多个已建立的网络进行通信。
小芯片作为系统的个别模块的配置不同于在单芯片上实施的此类系统,所述芯片在一个衬底(例如,单个裸片)上含有不同装置块(例如,知识产权(IP)块),例如片上系统(SoC),或集成在印刷电路板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,更低的功耗、更少的等待时间等),并且小芯片提供比单裸片芯片更高的生产效益。这些生产效益可包含良率提高或者开发成本和时间减少。
小芯片系统可包含例如一或多个应用程序(或处理器)小芯片和一或多个支持小芯片。在此,应用程序小芯片与支持小芯片之间的区别只是对小芯片系统可能的设计场景的参考。因此,举例来说,合成视觉小芯片系统可包含(仅借助于实例)用于产生合成视觉输出的应用程序小芯片,以及支持小芯片,例如存储器控制器小芯片、传感器接口小芯片或通信小芯片。在典型的用例中,合成视觉设计者可设计应用程序小芯片并从其它方获取支持小芯片。因此,由于避免设计和生产支持小芯片中所包含的功能,因此减少了设计支出(例如,在时间或复杂性方面)。小芯片还支持原本可能很困难的IP块紧密集成,例如使用不同的处理技术或使用不同的特征大小(或利用不同的接触技术或间距)制造的IP块。因此,可以模块化方式组装具有不同物理、电气或通信特性的多个IC或IC组件,以提供实现所需功能的组件。小芯片系统还可促进调适以适应将并入有小芯片系统的不同较大系统的需求。在实例中,IC或其它组件可针对特定功能的功率、速度或发热进行优化,如同传感器可能发生的情况一样,相比于在单个裸片上尝试与其它装置集成,所述IC或其它组件可更容易地与其它装置集成。此外,通过减小裸片的整体大小,小芯片的良率往往高于更复杂的单裸片装置的良率。
发明内容
本公开的一方面提供一种设备,其包括:桶式处理器,其包括:临时存储器;以及线程调度电路;其中所述桶式处理器经配置以通过使用所述线程调度电路执行操作,所述操作包含如下操作:在时钟循环上将当前线程调度为放入用于所述桶式处理器的管线中,所述桶式处理器将在每一时钟循环上调度线程;将所述当前线程存储于所述临时存储器中;检测在调度所述当前线程的所述循环之后的时钟循环上无线程可用;以及响应于检测到在所述后续时钟循环上无线程可用,基于所述临时存储器的内容重复调度所述当前线程。
本公开的另一方面提供一种方法,其包括:在包含线程调度电路的桶式处理处在时钟循环上将当前线程调度为放入用于桶式处理器的管线中,所述桶式处理器将在每一时钟循环上调度线程;将所述当前线程存储于临时存储器中;检测在调度所述当前线程的所述循环之后的时钟循环上无线程可用;以及响应于检测到在所述后续时钟循环上无线程可用,基于所述临时存储器的内容重复调度所述当前线程。
本公开的另一方面提供一种设备,其包括:小芯片系统中的存储器控制器小芯片,所述存储器控制器小芯片包括:可编程原子单元,所述可编程原子单元包括:桶式处理器,所述桶式处理器包括:临时存储器;以及线程调度电路;其中所述桶式处理器经配置以通过使用所述线程调度电路执行操作,所述操作包含:在时钟循环上将当前线程调度为放入用于桶式处理器的管线中,所述桶式处理器将在每一时钟循环上调度线程;将所述当前线程存储于所述临时存储器中;检测在调度所述当前线程的所述循环之后的时钟循环上无线程可用;以及响应于检测到在所述后续时钟循环上无线程可用,基于所述临时存储器的内容重复调度所述当前线程。
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
图1A和1B说明根据实施例的小芯片系统的实例。
图2说明根据实施例的存储器控制器小芯片的实例的组件。
图3说明根据实施例的可编程原子单元(PAU)的实例中的组件。
图4是说明根据实施例的管线中的控制和数据流的框图。
图5是根据实施例的用于桶式处理器中的线程执行控制的方法的实例的流程图。
图6是机器的实例的框图,本公开的实施例可利用所述机器、在所述机器中或通过所述机器进行操作。
具体实施方式
下文所描述的图1A-1B提供小芯片系统和在其中操作的组件的实例。所说明的小芯片系统包含存储器控制器。此存储器控制器包含可编程原子单元(PAU),所述可编程原子单元用于响应于对可编程原子操作的存储器请求而执行自定义程序、可编程原子操作。下文将相对于图2和3描述关于PAU的额外细节。PAU的处理器可以是桶式多线程和管线式的。
桶式多线程处理器内的电力管理可为在平衡性能和处理量的同时进行管理的越来越难的任务。在多线程处理系统中,当不存在准备好执行的线程时,处理器可前进到低功率状态。低功率状态与就绪状态之间的循环可造成时延,同时线程等待处理器实现就绪状态。替代技术增加了电路复杂性,例如门控某些逻辑块的时钟或计算管线的对于给定线程不需要的其它耗电方面。此外,当处理器逻辑在空闲与作用中状态之间切换时,这些技术带来其自身的电力成本。
本公开论述用于当不存在可用于管线处理的线程时重放或重复当前线程的调度的控制机制。通过保持调度器输出,计算管线中的逻辑保持于稳定状态。由于从空闲到作用中双态切换逻辑状态带来的功率消耗被消除。因此,改进的控制机制减少了总体功耗。
本控制机制提供的显著优点包含与其它所提出的解决此问题的系统相比减少的电路复杂性,功耗的总体减少,以及要实施的额外电路最少。
图1A和1B说明根据实施例的小芯片系统110的实例。图1A是安装在外围板105上的小芯片系统110的表示,所述外围板可通过例如外围组件互连高速(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、DDR6)。小芯片系统或个别小芯片到外部装置的连接(例如,较大系统可通过所要接口(例如,PCIE接口)。在实例中,例如,可通过主机接口小芯片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(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可各自被实施为具有其它组合逻辑电路(例如加法器、移位器、比较器、与门、或门、异或门或其任何合适的组合)或其它逻辑电路的状态机。这些组件还可包含一或多个寄存器或缓冲器以存储操作数或其它数据。PAU270可实施为一或多个处理器核心或控制电路,以及具有其它组合逻辑电路或其它逻辑电路的各种状态机,且还可包含一或多个寄存器、缓冲器或存储器以存储地址、可执行指令、操作数和其它数据,或可实施为处理器。
写入合并单元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,并设置存储在存储器危险寄存器中的对应于原子操作中所使用的存储器行的存储器地址的危险位,以确保不对所述存储器行执行其它操作(读取、写入或原子),然后在原子操作完成后清除所述危险位。为执行可编程原子操作的PAU270提供的额外、直接数据路径允许额外的写入操作,而不会受到由通信网络的带宽施加的任何限制,并且不会增加通信网络的任何拥塞。
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-V ISA含有支持高级语言运算符和数据类型的完整指令集。PAU 270可利用RISC-V ISA,但通常会支持更有限的指令集和有限的寄存器文件大小,以在包含在存储器控制器小芯片205内时减小单元的裸片大小。
如上文所提及,在将读取数据写入到高速缓存210之前,存储器危险清除单元260将清除所保留高速缓存行的所设置的危险位。因此,当写入合并单元255接收到请求和读取数据时,存储器危险清除单元260可将复位或清除信号发射到高速缓存210以复位保留的高速缓存行的所设置存储器危险位。并且,复位此危险位还将释放涉及所指定(或所保留)的高速缓存行的未决读取或写入请求,从而将未决读取或写入请求提供到入站请求多路复用器以供选择和处理。
图3说明根据实施例的可编程原子单元(PAU)300的实例中的组件,例如上文关于图1(例如,在存储器控制器140中)和图2(例如,PAU 270)所提到的组件。如所说明,PAU300包含处理器305、本地存储器310(例如,SRAM)和用于本地存储器310的控制器315。
在一实例中,处理器305是桶式处理器,具有用以在处理器305的每一时钟循环之后即刻在不同寄存器堆(例如,含有当前处理状态的寄存器集合)之间切换的电路。虽然本文在存储器控制器小芯片205的PAU 300中的实例实施方案中论述处理器305,但处理器305的配置和操作还可用于存储器控制器小芯片205的其它功能(例如,执行内置原子操作),或可以用于多种其它情境,包含但不限于小芯片系统110的其它小芯片中。桶式处理器的此配置实现当前执行的线程之间的高效情境切换。在实例中,处理器305支持八个线程,从而产生八个寄存器堆。在实例中,寄存器堆330中的一些或全部未集成到处理器305中,而是驻留在本地存储器310中。这通过消除用于这些寄存器的传统触发器来降低处理器305中的电路复杂性。
本地存储器310也可容纳用于原子操作320的高速缓存和指令。原子指令320包括支持各种应用程序加载的原子操作的指令集。当例如由应用程序小芯片125请求原子操作时,对应于所述原子操作的指令集由处理器305执行。在一实例中,指令320驻留于本地存储器310的分区中。在此实例中,由请求进程请求的特定可编程原子操作可通过分区号识别可编程原子操作。当可编程原子操作向PAU 300登记(例如,加载到其上)时可建立分区号。用于例如分区表等可编程原子指令的额外元数据也可存储于本地存储器310中。
原子操作操纵高速缓存325,当用于原子操作的线程完成时所述高速缓存大体上经同步(例如,清空)。因此,除从例如裸片外存储器275或280等外部存储器的初始加载以外,在可编程原子操作线程的执行期间针对大多数存储器操作的时延减少。
例如处理器305等桶式处理器可被配置成以旋转方式服务于若干线程。处理器305被配置有线程调度电路335以迭代通过调度的队列且识别准备好执行的线程。线程调度队列可包含指令、操作、操作数、线程识别符,或关于线程的其它元数据。
线程调度电路335识别准备好执行的第一线程且注入到计算管线中。例如线程元数据等线程信息保存于后备存储装置中用于稍后参考。如果在后续循环期间不存在准备好执行的其它线程,那么线程调度电路335将进入空闲状态。具体地,线程调度电路335沿着计算管线传播线程是无效线程的信号,并且接着使用来自后备存储装置的线程信息重新投送或重放先前线程。通过再次使用先前线程,计算管线中的逻辑保持于稳定状态。因此,当处理器305空闲时计算管线中的组件不必断电,存储和加载状态,或执行其它复杂操作。虽然计算管线确实使用电力来重放同一线程指令,但此电力小于将用以改变门状态的电力。
线程调度电路335提供桶式处理器中的线程重放到保留状态。线程调度电路335经配置以在时钟循环期间调度当前线程以放入用于桶式处理器305的管线中。桶式处理器335用以尝试在每一时钟循环上调度线程。
线程调度电路335更新或造成更新临时存储器中的当前线程。在一实例中,临时存储器包括寄存器。寄存器可为用于线程调度电路335或处理器305的专用寄存器,具有从处理器305或线程调度电路335到寄存器的直接数据路径。寄存器可为用以存储特定信息的有限的大小,例如四位、6位、8位等。在一实例中,寄存器用以存储线程识别符和线程元数据。
在另一实施方案中,寄存器可存储于桶式处理器305的本地随机存取存储器中,例如本地存储器310。在此实施方案中,寄存器可具有本地存储器310中的预留地址空间供线程调度电路335使用。
线程调度电路335检测到在当前线程被调度的循环之后的时钟循环上无线程可用于调度。举例来说,在一实施例中,在处置八个同时线程,每一线程被分配时钟循环的处理器中,线程调度电路335可检测到在接下来七个时钟循环(七个其它线程)期间无线程可用于服务。在另一实例实施例中,仅考虑作用中线程用于调度。因此,当所有其它线程忙碌,例如等待存储器响应时,这些线程可能未准备好重新调度。在此情况下,调度器检测到无线程可用于服务,且将当前线程重新调度到下一可用循环。所有其它线程忙碌的检测花费一个循环,因此当前线程在其第一次尝试执行之后可被重新调度两个循环。
响应于检测到在后续时钟循环上无线程可用,线程调度电路335基于临时存储器的内容重新调度、重放或重复调度当前线程。在一实例中,线程调度电路响应于检测到在后续时钟循环上无线程可用而重写或造成重写线程到临时存储器。
信号可经断言以指示循环是有效的还是无效的。因此,有效循环信号可经断言或传播通过计算管线以指示当前线程或线程的指令是有效的线程或指令。这可在线程或指令通过管线的第一时间执行。当线程或指令经重放而有效地使处理器305空闲时,信号可经改变为无效循环信号以向计算管线指示线程是重放的线程。在此情况下,计算管线可基于经断言无效循环信号而保持稳定状态。
因此,在一实施例中,与调度当前线程以放入管线相结合,线程调度电路335基于当前线程的指令而传播或造成传播有效循环信号到管线以致使管线更改状态。
当不同线程可用于调度时,随后可从管线中的停滞释放当前线程。因此,当线程调度电路335检测到线程队列中具有用于管线的有效的指令的线程时,线程调度电路335调度不同线程。线程调度电路335可将不同线程识别符存储于临时存储器中,所述临时存储器又将致使管线获取用于新识别线程的指令且将其传递到计算管线中。另外,线程调度电路335可基于不同线程的指令而传播或造成传播有效循环信号到管线以致使管线更改状态。
如图3所示,线程调度电路335集成在桶式处理器305中,且桶式处理器305包含于可编程原子单元205中。可编程原子单元205包含于存储器控制器中。在一实例中,存储器控制器是小芯片系统110中的小芯片(例如,存储器控制器小芯片220或存储器控制器小芯片140)。
图4是说明根据实施例的管线中的控制和数据流的框图。线程调度器335经配置以服务于若干线程调度队列405A-N(此处统称为405)。线程调度队列405可包含用于每一线程的信息和为对应线程排队的指令。队列内容可包含线程识别符、指令、优先级信息、状态或状态旗标,或类似物。
当线程调度器335调度线程时,其从选定队列获得信息。例如线程识别符等线程信息发送到计算管线410。计算管线410包含各种组件,其使用线程识别符来获取要执行的指令,执行存储器操作以从源地址或多个源地址获得操作数数据,使用指令获得结果,且将结果存储到目的地地址。在计算管线410中执行的动作是作为原子操作执行的。
在图4中所示的实例中,线程信息馈送到多路复用器(MUX)415中且存储于临时存储装置420中。临时存储装置420可为由线程调度器335专用的寄存器或其它后备存储器。线程信息传播到计算管线410。
有效信号425用作到MUX 415的选择信号,以控制计算管线410使用来自临时存储装置420的值还是来自线程调度器335的数据。当新线程被调度时,有效信号425被设定成指示线程是有效的,且用于新线程的线程信息存储于临时存储装置420中且传递到计算管线410。当无其它线程准备好调度时,有效信号425被设定成指示线程是无效的(例如,正在再循环)。在此情况下,同一线程信息从临时存储装置420获取且传播到计算管线410。计算管线410还接收有效信号425且当有效信号425被设定成指示线程是无效的时,计算管线410将维持稳定状态且不改变状态。这允许计算管线410停滞或空闲而不改变其电力状态。换句话说,计算管线410中没有组件断电,且不存储状态用于稍后恢复。
当不同线程准备好被调度时,有效信号425改变为指示不同线程是有效的(例如,逻辑一)。不同线程识别符或其它信息发送到MUX 415。此线程信息存储于临时存储器420中,代替先前线程识别符。线程信息还被传递到计算管线410以执行。
图5是根据实施例的用于桶式处理器中的线程重放到保留状态的方法的实例的流程图。方法500的操作由计算机硬件执行,例如相对于图1A-1B(例如,存储器控制器小芯片)、图2、图3或图6(例如,处理电路)所描述。在505,将当前线程调度为放入用于桶式处理器(例如,处理器305)的管线中。线程调度电路(例如,线程调度电路335)在时钟循环上调度线程。桶式处理器经配置以尝试在每一时钟循环上调度线程。
在一实施例中,与将当前线程调度为放入管线相结合,基于当前线程的指令将有效循环信号传播到管线以致使管线更改状态。在一实施例中,将无效循环信号传播到管线用以致使管线维持状态。
在510,将当前线程存储于例如临时存储装置420等临时存储器中。在一实施例中,临时存储器包括寄存器。在又一实施例中,寄存器存储于桶式处理器的本地随机存取存储器中。
在515,线程调度电路检测到在后续时钟循环上无线程可用。
在520,响应于检测到在调度当前线程的循环之后的时钟循环上无线程可用,线程调度电路基于临时存储器的内容重新调度、重放或重复调度当前线程。当无其它线程准备好被调度时,线程调度电路可响应于检测到在后续时钟循环上无线程可用而将线程重写到临时存储器。
在一实施例中,重复调度当前线程包括重复调度当前线程的指令。与线程相关联的指令可为原子操作。原子操作可为内置原子或可编程原子操作。原子操作可作为原子指令320存储于本地存储器310中。
方法500还包含确定不同线程可用于调度,并且接着将不同线程的指令调度为放入管线中的操作。此不同线程存储于临时存储器中,且基于不同线程的指令将有效循环信号传播到管线以致使管线更改状态。
在一实施例中,线程调度电路集成在桶式处理器中,桶式处理器包含于可编程原子单元中,且可编程原子单元包含于存储器控制器中。在又一实施例中,存储器控制器是例如小芯片系统110等小芯片系统中的小芯片。
图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中,实例1到2的主题包含其中临时存储器包括寄存器。
在实例4中,实例3的主题包含其中寄存器存储于桶式处理器的本地随机存取存储器中。
在实例5中,实例1到4的主题包含其中重复调度当前线程包括重复调度当前线程的指令。
在实例6中,实例1到5的主题包含其中桶式处理器将无效循环信号传播到管线以致使管线维持状态。
在实例7中,实例1到6的主题包含其中桶式处理器将:确定不同线程可用于调度;将不同线程的指令调度为放入管线中;将不同线程存储于临时存储器中;以及基于不同线程的指令将有效循环信号传播到管线以致使管线更改状态。
在实例8中,实例1到7的主题包含其中线程调度电路响应于检测到在后续时钟循环上无线程可用而将线程重写到临时存储器。
在实例9中,实例1到8的主题包含其中线程调度电路集成在桶式处理器中,桶式处理器包含于可编程原子单元中,且可编程原子单元包含于存储器控制器中。
在实例10中,实例9的主题包含其中存储器控制器是小芯片系统中的小芯片。
实例11是一种方法,其包括:在包含线程调度电路的桶式处理处在时钟循环上将当前线程调度为放入用于桶式处理器的管线中,桶式处理器将在每一时钟循环上调度线程;将当前线程存储于临时存储器中;检测在调度当前线程的循环之后的时钟循环上无线程可用;以及响应于检测到在后续时钟循环上无线程可用,基于临时存储器的内容重复调度当前线程。
在实例12中,实例11的主题包含与将当前线程调度为放入管线中相结合,基于当前线程的指令将有效循环信号传播到管线以致使管线更改状态。
在实例13中,实例11到12的主题包含其中临时存储器包括寄存器。
在实例14中,实例13的主题包含其中寄存器存储于桶式处理器的本地随机存取存储器中。
在实例15中,实例11到14的主题包含其中重复调度当前线程包括重复调度当前线程的指令。
在实例16中,实例11到15的主题包含将无效循环信号传播到管线以致使管线维持状态。
在实例17中,实例11到16的主题包含:确定不同线程可用于调度;将不同线程的指令调度为放入管线中;将不同线程存储于临时存储器中;以及基于不同线程的指令将有效循环信号传播到管线以致使管线更改状态。
在实例18中,实例11到17的主题包含响应于检测到在后续时钟循环上无线程可用而将线程重写到临时存储器。
在实例19中,实例11到18的主题包含其中线程调度电路集成在桶式处理器中,桶式处理器包含于可编程原子单元中,且可编程原子单元包含于存储器控制器中。
在实例20中,实例19的主题包含其中存储器控制器是小芯片系统中的小芯片。
实例21是一种包含指令的机器可读媒体,所述指令当由具有线程调度电路的桶式处理器执行时致使桶式处理器:在时钟循环上将当前线程调度为放入用于桶式处理器的管线中,桶式处理器将在每一时钟循环上调度线程;将当前线程存储于临时存储器中;检测在调度当前线程的循环之后的时钟循环上无线程可用;以及响应于检测到在后续时钟循环上无线程可用,基于临时存储器的内容重复调度当前线程。
在实例22中,实例21的主题包含用以与将当前线程调度为放入管线中相结合,基于当前线程的指令将有效循环信号传播到管线以致使管线更改状态的指令。
在实例23中,实例21到22的主题包含其中临时存储器包括寄存器。
在实例24中,实例23的主题包含其中寄存器存储于桶式处理器的本地随机存取存储器中。
在实例25中,实例21到24的主题包含其中重复调度当前线程包括重复调度当前线程的指令。
在实例26中,实例21到25的主题包含用以将无效循环信号传播到管线以致使管线维持状态的指令。
在实例27中,实例21到26的主题包含用于以下操作的指令:确定不同线程可用于调度;将不同线程的指令调度为放入管线中;将不同线程存储于临时存储器中;以及基于不同线程的指令将有效循环信号传播到管线以致使管线更改状态。
在实例28中,实例21到27的主题包含用以响应于检测到在后续时钟循环上无线程可用而将线程重写到临时存储器的指令。
在实例29中,实例21到28的主题包含其中线程调度电路集成在桶式处理器中,桶式处理器包含于可编程原子单元中,且可编程原子单元包含于存储器控制器中。
在实例30中,实例29的主题包含其中存储器控制器是小芯片系统中的小芯片。
实例31是一种用于桶式处理器中的线程重放到保留状态的设备,所述设备包括:用于在包含线程调度电路的桶式处理器处在时钟循环上将当前线程调度为放入用于桶式处理器的管线中的构件,桶式处理器将在每一时钟循环上调度线程;用于将当前线程存储于临时存储器中的构件;用于检测在调度当前线程的循环之后的时钟循环上无线程可用的构件,以及用于响应于检测到在后续时钟循环上无线程可用而基于临时存储器的内容重复调度当前线程的构件。
在实例32中,实例31的主题包含用于与将当前线程调度为放入管线中相结合,基于当前线程的指令将有效循环信号传播到管线以致使管线更改状态的构件。
在实例33中,实例31到32的主题包含其中临时存储器包括寄存器。
在实例34中,实例33的主题包含其中寄存器存储于桶式处理器的本地随机存取存储器中。
在实例35中,实例31到34的主题包含其中重复调度当前线程包括重复调度当前线程的指令。
在实例36中,实例31到35的主题包含用于将无效循环信号传播到管线以致使管线维持状态的构件。
在实例37中,实例31到36的主题包含:用于确定不同线程可用于调度的构件;用于将不同线程的指令调度为放入管线中的构件;用于将不同线程存储于临时存储器中的构件;以及用于基于不同线程的指令将有效循环信号传播到管线以致使管线更改状态的构件。
在实例38中,实例31到37的主题包含用于响应于检测到在后续时钟循环上无线程可用而将线程重写到临时存储器的构件。
在实例39中,实例31到38的主题包含其中线程调度电路集成在桶式处理器中,桶式处理器包含于可编程原子单元中,且可编程原子单元包含于存储器控制器中。
在实例40中,实例39的主题包含其中存储器控制器是小芯片系统中的小芯片。
实例41是一种设备,其包括:小芯片系统中的存储器控制器小芯片,存储器控制器小芯片包括:可编程原子单元,可编程原子单元包括:桶式处理器,桶式处理器包括:临时存储器;以及线程调度电路;其中桶式处理器经配置以通过使用线程调度电路执行操作,所述操作包含:在时钟循环上将当前线程调度为放入用于桶式处理器的管线中,桶式处理器将在每一时钟循环上调度线程;将当前线程存储于临时存储器中;检测在调度当前线程的循环之后的时钟循环上无线程可用;以及响应于检测到在后续时钟循环上无线程可用,基于临时存储器的内容重复调度当前线程。
在实例42中,实例41的主题包含其中桶式处理器经配置以通过使用线程调度电路执行操作,包含与将当前线程调度为放入管线中相结合,基于当前线程的指令将有效循环信号传播到管线以致使管线更改状态。
在实例43中,实例41到42的主题包含其中临时存储器包括寄存器。
在实例44中,实例43的主题包含其中寄存器存储于桶式处理器的本地随机存取存储器中。
在实例45中,实例41到44的主题包含其中重复调度当前线程包括重复调度当前线程的指令。
在实例46中,实例41到45的主题包含其中桶式处理器经配置以通过使用线程调度电路执行操作,包含将无效循环信号传播到管线以致使管线维持状态。
在实例47中,实例41到46的主题包含其中桶式处理器经配置以通过使用线程调度电路执行操作,包含:确定不同线程可用于调度;将不同线程的指令调度为放入管线中;将不同线程存储于临时存储器中;以及基于不同线程的指令将有效循环信号传播到管线以致使管线更改状态。
在实例48中,实例41到47的主题包含其中桶式处理器经配置以通过使用线程调度电路执行操作,包含响应于检测到在后续时钟循环上无线程可用而将线程重写到临时存储器。
实例49是包含指令的至少一个机器可读媒体,所述指令在由处理电路执行时致使所述处理电路执行操作以实施实例1到48中的任一个。
实例50是包括用以实施实例1到48中的任一个的构件的设备。
实例51是用以实施实例1到48中的任一个的系统。
实例52是用以实施实例1到48中的任一个的方法。
以上详细描述包括对附图的参考,所述附图形成所述详细描述的一部分。图式借助于说明展示可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。此类实例可包含除了所示出或所描述的那些元件之外的元件。然而,本发明人还预期其中仅提供所示或所描述的那些元件的实例。此外,本发明人还预期使用相对于特定实例(或其一个或更多个方面)或相对于本文展示或描述的其它实例(或其一个或更多个方面)而展示或描述的那些元件的任何组合或排列的实例(或其一个或更多个方面)。
在本文件中,如专利文件中常见,使用术语“一”以包含一个或多于一个,这与“至少一个”或“一个或更多个”的任何其它例子或用途无关。在此文档中,除非另外指示,否则术语“或”用于指代非排他性的或,使得“A或B”可以包含“A而非B”、“B而非A”,以及“A和B”。在所附权利要求书中,术语“包含”和“在其中(in which)”用作相应术语“包括”和“其中(wherein)”的通俗等效术语。此外,在以下权利要求书中,术语“包含”和“包括”为开放式的,即,包含除权利要求书中在此术语之后列出的那些元件之外的元件的系统、装置、物品或过程仍被视为在权利要求书的范围内。此外,在以下权利要求书中,术语“第一”、“第二”和“第三”等仅用作标签,并且并不意欲对其对象施加数字要求。
以上描述在于为说明性的而非限制性的。举例来说,上文所描述的实例(或其一或多个方面)可以彼此组合使用。如所属领域的一般技术人员在查阅以上描述后可使用其它实施例。所述摘要在遵守以下理解的情况下提交:其将不会用于解释或限制权利要求的范围或含义。同样,在以上详细描述中,可以将各种特性分组在一起以简化本公开。此情况不应解释为期望未要求的揭示特征对任何权利要求来说是必需的。实际上,本发明主题可在于比特定公开的实施例的所有特征要少。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求作为一单独实施例而独立存在,且预期此些实施例可以各种组合或排列彼此组合。本发明的范围应该通过参考所附的权利要求书以及所述权利要求书所授予的等效物的完整范围来确定。
Claims (25)
1.一种设备,其包括:
桶式处理器,其包括:
临时存储器;以及
线程调度电路;
其中所述桶式处理器经配置以通过使用所述线程调度电路执行操作,所述操作包含如下操作:
在时钟循环上将当前线程调度为放入用于所述桶式处理器的管线中,所述桶式处理器将在每一时钟循环上调度线程;
将所述当前线程存储于所述临时存储器中;
检测在调度所述当前线程的所述循环之后的时钟循环上无线程可用;以及
响应于检测到在所述后续时钟循环上无线程可用,基于所述临时存储器的内容重复调度所述当前线程。
2.根据权利要求1所述的设备,其中所述桶式处理器将与将所述当前线程调度为放入所述管线中相结合,基于所述当前线程的指令将有效循环信号传播到所述管线以致使所述管线更改状态。
3.根据权利要求1所述的设备,其中所述临时存储器包括寄存器。
4.根据权利要求3所述的设备,其中所述寄存器存储于所述桶式处理器的本地随机存取存储器中。
5.根据权利要求1所述的设备,其中重复调度所述当前线程包括重复调度所述当前线程的指令。
6.根据权利要求1所述的设备,其中所述桶式处理器将无效循环信号传播到所述管线以致使所述管线维持状态。
7.根据权利要求1所述的设备,其中所述桶式处理器将:
确定不同线程可用于调度;
将所述不同线程的指令调度为放入所述管线中;
将所述不同线程存储于所述临时存储器中;以及
基于所述不同线程的所述指令将有效循环信号传播到所述管线以致使所述管线更改状态。
8.根据权利要求1所述的设备,其中所述线程调度电路响应于检测到在所述后续时钟循环上无线程可用而将所述线程重写到所述临时存储器。
9.根据权利要求1所述的设备,其中所述线程调度电路集成在所述桶式处理器中,所述桶式处理器包含于可编程原子单元中,且所述可编程原子单元包含于存储器控制器中。
10.根据权利要求9所述的设备,其中所述存储器控制器是小芯片系统中的小芯片。
11.一种方法,其包括:
在包含线程调度电路的桶式处理处在时钟循环上将当前线程调度为放入用于桶式处理器的管线中,所述桶式处理器将在每一时钟循环上调度线程;
将所述当前线程存储于临时存储器中;
检测在调度所述当前线程的所述循环之后的时钟循环上无线程可用;以及
响应于检测到在所述后续时钟循环上无线程可用,基于所述临时存储器的内容重复调度所述当前线程。
12.根据权利要求11所述的方法,其包括与将所述当前线程调度为放入所述管线中相结合,基于所述当前线程的指令将有效循环信号传播到所述管线以致使所述管线更改状态。
13.根据权利要求11所述的方法,其中所述临时存储器包括寄存器。
14.根据权利要求13所述的方法,其中所述寄存器存储于所述桶式处理器的本地随机存取存储器中。
15.根据权利要求11所述的方法,其中重复调度所述当前线程包括重复调度所述当前线程的指令。
16.根据权利要求11所述的方法,其包括将无效循环信号传播到所述管线以致使所述管线维持状态。
17.根据权利要求11所述的方法,其包括:
确定不同线程可用于调度;
将所述不同线程的指令调度为放入所述管线中;
将所述不同线程存储于所述临时存储器中;以及
基于所述不同线程的所述指令将有效循环信号传播到所述管线以致使所述管线更改状态。
18.根据权利要求11所述的方法,其包括响应于检测到在所述后续时钟循环上无线程可用而将所述线程重写到所述临时存储器。
19.根据权利要求11所述的方法,其中所述线程调度电路集成在所述桶式处理器中,所述桶式处理器包含于可编程原子单元中,且所述可编程原子单元包含于存储器控制器中。
20.根据权利要求19所述的方法,其中所述存储器控制器是小芯片系统中的小芯片。
21.一种设备,其包括:
小芯片系统中的存储器控制器小芯片,所述存储器控制器小芯片包括:
可编程原子单元,所述可编程原子单元包括:
桶式处理器,所述桶式处理器包括:
临时存储器;以及
线程调度电路;
其中所述桶式处理器经配置以通过使用所述线程调度电路执行操作,所述操作包含:
在时钟循环上将当前线程调度为放入用于桶式处理器的管线中,所述桶式处理器将在每一时钟循环上调度线程;
将所述当前线程存储于所述临时存储器中;
检测在调度所述当前线程的所述循环之后的时钟循环上无线程可用;以及
响应于检测到在所述后续时钟循环上无线程可用,基于所述临时存储器的内容重复调度所述当前线程。
22.根据权利要求21所述的设备,其中所述桶式处理器经配置以通过使用所述线程调度电路执行操作,包含与将所述当前线程调度为放入所述管线中相结合,基于所述当前线程的指令将有效循环信号传播到所述管线以致使所述管线更改状态。
23.根据权利要求21所述的设备,其中所述临时存储器包括寄存器。
24.根据权利要求23所述的设备,其中所述寄存器存储于所述桶式处理器的本地随机存取存储器中。
25.根据权利要求21所述的设备,其中重复调度所述当前线程包括重复调度所述当前线程的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/075,013 | 2020-10-20 | ||
US17/075,013 US20220121485A1 (en) | 2020-10-20 | 2020-10-20 | Thread replay to preserve state in a barrel processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385326A true CN114385326A (zh) | 2022-04-22 |
Family
ID=81186241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111215316.9A Pending CN114385326A (zh) | 2020-10-20 | 2021-10-19 | 桶式处理器中的线程重放到保留状态 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220121485A1 (zh) |
CN (1) | CN114385326A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11803391B2 (en) * | 2020-10-20 | 2023-10-31 | Micron Technology, Inc. | Self-scheduling threads in a programmable atomic unit |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060123423A1 (en) * | 2004-12-07 | 2006-06-08 | International Business Machines Corporation | Borrowing threads as a form of load balancing in a multiprocessor data processing system |
US8051418B1 (en) * | 2005-03-21 | 2011-11-01 | Oracle America, Inc. | Techniques for providing improved affinity scheduling in a multiprocessor computer system |
US8327188B2 (en) * | 2009-11-13 | 2012-12-04 | Oracle America, Inc. | Hardware transactional memory acceleration through multiple failure recovery |
JP5408356B2 (ja) * | 2010-08-10 | 2014-02-05 | 富士通株式会社 | スケジューラプログラム、マルチコアプロセッサシステムおよびスケジューリング方法 |
CN104471587B (zh) * | 2012-05-16 | 2018-01-23 | 诺基亚技术有限公司 | 处理器中的方法,装置和计算机程序产品 |
US9317297B2 (en) * | 2012-09-27 | 2016-04-19 | Intel Corporation | Replay execution of instructions in thread chunks in the chunk order recorded during previous execution |
-
2020
- 2020-10-20 US US17/075,013 patent/US20220121485A1/en active Pending
-
2021
- 2021-10-19 CN CN202111215316.9A patent/CN114385326A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220121485A1 (en) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669486B2 (en) | Initialization sequencing of chiplet I/O channels within a chiplet system | |
US11985078B2 (en) | Packet arbitration for buffered packets in a network device | |
US11953989B2 (en) | Low-latency register error correction | |
US20240086200A1 (en) | Self-scheduling threads in a programmable atomic unit | |
WO2022086772A1 (en) | Programmable atomic operator resource locking | |
CN114385236A (zh) | 传递可编程原子操作符到存储器控制器 | |
US11847464B2 (en) | Variable pipeline length in a barrel-multithreaded processor | |
US11698791B2 (en) | On-demand programmable atomic kernel loading | |
CN114385326A (zh) | 桶式处理器中的线程重放到保留状态 | |
CN114385538B (zh) | 电路中的管线合并 | |
US11614942B2 (en) | Reuse in-flight register data in a processor | |
CN114385327A (zh) | 基于线程的处理器暂停 | |
US20220121483A1 (en) | Thread execution control in a barrel processor | |
US20220121486A1 (en) | Rescheduling a failed memory request in a processor | |
US20220121487A1 (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 |