CN114721726B - 一种多线程组并行获取指令的方法、处理器及电子设备 - Google Patents
一种多线程组并行获取指令的方法、处理器及电子设备 Download PDFInfo
- Publication number
- CN114721726B CN114721726B CN202210649453.1A CN202210649453A CN114721726B CN 114721726 B CN114721726 B CN 114721726B CN 202210649453 A CN202210649453 A CN 202210649453A CN 114721726 B CN114721726 B CN 114721726B
- Authority
- CN
- China
- Prior art keywords
- instruction
- access request
- linked list
- memory access
- invalid
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000010586 diagram Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及一种多线程组并行获取指令的方法、处理器及电子设备,属于计算机技术领域。该方法包括获取来自N个线程组的并行的N个指令访存请求;对于命中指令缓存的目标指令访存请求,判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求,链表用于按照时间先后顺序记录未命中指令缓存的失效访存请求;在存在访问地址与该目标指令访存请求相同的失效访存请求时,响应链表中访问地址与该目标指令访存请求相同的失效访存请求,并返回对应的指令,待响应完访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。该方法保证了指令访存的公平性和时效性。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种多线程组并行获取指令的方法、处理器及电子设备。
背景技术
处理器取指性能十分重要,通常会设计指令缓存来缓解取指访问的延时问题,如果取指请求命中指令缓存则可以立即获得指令,如果取指请求没有命中指令缓存,则需要发送该取指请求到下一级缓存或者主存去获取指令。
为了能提高取指效率,设计一个支持多线程组并行读取指令的指令缓存是十分必要的。而一个支持多线程组并行读取指令的指令缓存,必须要提供足够的访存带宽以及优化资源共享能力,以保证资源分配的合理性和取指请求响应的公平性、时效性。
然而,对于目前支持多个线程组并行取指的指令缓存,通常设计上会优先考虑吞吐率,不保证多个线程组读取相同指令时的处理顺序,即不保证按取指请求的访问顺序返回指令,使得取指请求响应的公平性、时效性难以得到保证,进而导致指令执行效率和***性能下降。
发明内容
鉴于此,本申请的目的在于提供一种多线程组并行获取指令的方法、处理器及电子设备,以解决现有并行多线程组并行获取指令的方法无法保证取指请求响应的公平性和时效性,导致指令执行效率和***性能下降的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种多线程组并行获取指令的方法,包括:获取来自N个线程组的并行的N个指令访存请求,一个线程组对应一个指令访存请求,N为大于等于2的整数;对于命中指令缓存的目标指令访存请求,判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求,其中,所述链表用于按照时间先后顺序记录未命中所述指令缓存的失效访存请求;在所述链表中存在访问地址与该目标指令访存请求相同的失效访存请求时,响应所述链表中访问地址与该目标指令访存请求相同的失效访存请求,并返回对应的指令,待响应完所述链表中访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
本申请实施例中,通过引入链表来记录未命中指令缓存的失效访存请求,使得每当有命中指令缓存的目标指令访存请求时,先判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求,若存在这样的失效访存请求,则表明在该目标指令访存请求之前还有未返回指令的指令访存请求,则需要优先对这样的失效访存请求进行处理,待这样的失效访存请求处理完,再返回该目标指令访存请求所命中的指令,避免出现访问地址相同,但后面的指令访存请求先于前面的指令访存请求获取到指令的情况,以保证指令访存的公平性和时效性,从而能提高指令执行效率和优化***性能。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中。
本申请实施例中,将未命中指令缓存的失效访存请求按照时间先后顺序记录在链表中,一方面保证了未命中指令缓存的失效访存请求不会丢失,另一方面,通过按时间顺序管理未命中的失效访存请求,从而不会出现后请求的线程组可以先获得指令数据的情况。
结合第一方面实施例的一种可能的实施方式,将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中,包括:对于同一时刻存在资源访问冲突的多个失效访存请求,根据所述多个失效访存请求各自的请求优先级,按照请求优先级从高到低的顺序将所述多个失效访存请求依次记录在所述链表中。
本申请实施例中,对于同一时刻存在资源访问冲突的多个失效访存请求,由于此时多个失效访存请求之间存在资源访问竞争,为了保证取指的公平性,在将这些失效访存请求记录在链表中时,按照请求优先级从高到低的顺序将多个失效访存请求依次记录在链表中,这样后续在对同一时刻存在资源访问冲突的多个失效访存请求进行处理时,可以保证按照优先级从高到低的顺序进行处理,以便获得更好的执行效率。
结合第一方面实施例的一种可能的实施方式,在所述将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中之后,所述方法还包括:按照所述链表中记录的失效访问请求的时间先后顺序,依次从后级缓存处获取所述链表中的失效访问请求对应的指令,并将获取到的指令存储到所述指令缓存中。
本申请实施例中,在从后级缓存处获取失效访问请求对应的指令时,按照链表中记录的失效访问请求的时间先后顺序去获取,这样可以保证先记录在链表中的失效访问请求可以先于后记录于链表中的失效访问请求获得对应的指令,保证了保证指令访存的公平性和时效性。
结合第一方面实施例的一种可能的实施方式,在所述将获取到的指令存储到所述指令缓存中之后,所述方法还包括:按照时间先后顺序,依次响应所述链表中已获取到对应指令的失效访问请求,并返回对应的指令;删除所述链表中已响应过的失效访存请求。
本申请实施例中,在响应链表中已获取到对应指令的失效访问请求时,按照时间先后顺序进行响应,以先记录在链表中的失效访问请求可以先于后记录于链表中的失效访问请求获得对应的指令,保证了保证指令访存的公平性和时效性,同时,删除链表中已响应过的失效访存请求,以避免重复响应以及释放更多链表空间。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:在所述链表中不存在访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
本申请实施例中,在链表中不存在访问地址与该目标指令访存请求相同的失效访存请求时,直接返回该目标指令访存请求所命中的指令,以保证取指的连续性和时效性。
结合第一方面实施例的一种可能的实施方式,一个线程组对应一个计时器,每个计时器用于记录对应的指令访存请求未命中所述指令缓存,且未被记录在所述链表中的时间,该时间用于确定失效访存请求记录在所述链表中的先后顺序。
本申请实施例中,通过计时器来记录对应的指令访存请求未命中指令缓存,且未被记录在链表中的时间,以便于在将各个失效访存请求记录在链表中时,按照计时器所记录的时间从大到小的顺序依次将对应的失效访存请求记录在链表中,这样便可实现按照时间先后顺序将失效访存请求记录在链表中的目的。
第二方面,本申请实施例还提供了一种处理器,包括:N个指令取指单元和指令缓存;每个所述指令取指单元,用于基于线程组下发指令访存请求,N为大于等于2的整数;指令缓存,用于接收来自N个线程组的并行的N个指令访存请求;对于命中所述指令缓存的目标指令访存请求,判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求,其中,所述链表用于按照时间先后顺序记录未命中所述指令缓存的失效访存请求;在所述链表中存在访问地址与该目标指令访存请求相同的失效访存请求时,响应所述链表中访问地址与该目标指令访存请求相同的失效访存请求,并返回对应的指令;待响应完所述链表中访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
结合第二方面实施例的一种可能的实施方式,所述指令缓存,还用于将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中。
结合第二方面实施例的一种可能的实施方式,所述指令缓存,在将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中时,具体用于:对于同一时刻存在资源访问冲突的多个失效访存请求,根据所述多个失效访存请求各自的请求优先级,按照请求优先级从高到低的顺序将所述多个失效访存请求依次记录在所述链表中。
结合第二方面实施例的一种可能的实施方式,所述指令缓存,在将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中之后,还用于按照所述链表中记录的失效访问请求的时间先后顺序,依次从后级缓存处获取所述链表中的失效访问请求对应的指令,并将获取到的指令存储到所述指令缓存中。
结合第二方面实施例的一种可能的实施方式,所述指令缓存,在将获取到的指令存储到所述指令缓存中之后,还用于按照时间先后顺序,依次响应所述链表中已获取到对应指令的失效访问请求,并返回对应的指令;删除所述链表中已响应过的失效访存请求。
结合第二方面实施例的一种可能的实施方式,所述指令缓存,还用于在所述链表中不存在访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
结合第二方面实施例的一种可能的实施方式,所述指令缓存包括:缓存区、与所述N个线程组一一对应的N个输入端口及N个输出端口、主控单元;缓存区,用于缓存指令;每个输入端口用于接收一个所述指令访存请求,每个输出接口用于输出对应的指令访存请求对应的指令;主控单元,用于检查每个所述指令访存请求命中所述缓存区的命中情况;对于命中的目标指令访存请求,判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求;在所述链表中存在访问地址与该目标指令访存请求相同的失效访存请求时,响应所述链表中访问地址与该目标指令访存请求相同的失效访存请求,并返回对应的指令;待响应完所述链表中访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
本申请实施例中,在指令缓存内部采用与N个线程组相匹配的N个输入端口及N个输出端口来保证可以并行取指,通过对主控单元的控制逻辑进行优化,便可实现基于简单的硬件结构实现在支持高并发访问指令缓存的同时,保证多线程组并发访存的公平性和时效性的目的。
结合第二方面实施例的一种可能的实施方式,所述指令缓存,还包括:失效控制单元,用于将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中,以及删除所述链表中已响应过的失效访存请求。
本申请实施例中,通过单独设置一个失效控制单元来对链表进行管理,以便于更好的对链表进行管理,利于提高取指的效率。
结合第二方面实施例的一种可能的实施方式,所述指令缓存还包括:与所述N个线程组一一对应的N个计时器,每个计时器用于记录对应的指令访存请求未命中所述指令缓存,且未被记录在所述链表中的时间,该时间用于确定失效访存请求记录在所述链表中的先后顺序。
第三方面,本申请实施例还提供了一种电子设备,包括本体和如上述第二方面实施例和/或结合第二方面实施例的任一种可能的实施方式提供的处理器。
本申请的其他特征和优点将在随后的说明书阐述。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种处理器的结构示意图。
图2示出了本申请实施例提供的一种指令缓存的结构示意图。
图3示出了本申请实施例提供的一种主控单元的结构示意图。
图4示出了本申请实施例提供的又一种指令缓存的结构示意图。
图5示出了本申请实施例提供的一种链表的结构示意图。
图6示出了本申请实施例提供的又一种处理器的结构示意图。
图7示出了本申请实施例提供的一种电子设备的结构示意图。
图8示出了本申请实施例提供的一种多线程组并行获取指令的方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。术语“多个”除非另有说明外,否则指的是两个及两个以上。
鉴于目前支持多个线程组并行取指的指令缓存,无法保证按取指请求的访问顺序返回指令,使得取指请求响应的公平性、时效性难以得到保证,进而导致指令执行效率和***性能下降的问题。本申请实施例提供了一种全新的多线程组并行获取指令的方法,在支持高并发访问指令缓存的同时,能保证多线程组并发访存的公平性和时效性,进而能提高指令执行效率和优化***性能。
为了便于理解,下面将结合图1所示的处理器进行说明。本申请所提供的处理器在支持多线程组并发取指的同时,能保证多线程组并发访存的公平性和时效性。该处理器包括:并行取指的N个指令取指单元和指令缓存,每个指令取指单元均与指令缓存电连接。
为了支持多线程组并发取指,N为大于等于2的整数,具体数值可以根据并行取指的需求来决定,比如,若需要支持8个线程组并发取指,则N为8,若需要支持16个线程组并发取指,则N为16。
每个指令取指单元的功能一致,均用于基于线程组向指令缓存下发用于获取指令的指令访存请求,每个指令访存请求中携带有全局的访问地址,可以基于该访问地址进行取指。同一个时刻,一个指令取指单元可以仅基于一个线程组向指令缓存下发一个指令访存请求。一个指令取指单元可以包含多个线程组,指令取指单元可以通过仲裁机制从多个线程组中选出一个线程组去访问指令缓存。一个线程组中可以包括多个(如16、32、64等)获取同一个指令的线程,将获取同一指令的多个线程划分到同一个线程组,以便于通过发送一个指令访存请求便可同时获取到多个线程所需的指令。
其中,指令取指单元在通过仲裁机制从多个线程组中选出一个线程组去访问指令缓存时,可以基于现有技术中的仲裁逻辑从多个线程组中选出一个线程组去访问指令缓存,例如,可以基于线程组的请求优先级顺序进行仲裁,选出请求优先级最低或最高的一个线程组去访问指令缓存。
指令缓存,用于接收来自N个线程组的并行的N个指令访存请求,并检查每个指令访存请求命中指令缓存的命中情况,也即检查每个指令访存请求命中指令缓存中缓存的指令的命中情况;对于命中指令缓存的目标指令访存请求,判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求,其中,链表用于按照时间先后顺序记录未命中指令缓存的失效访存请求;在链表中存在访问地址与该目标指令访存请求相同的失效访存请求时,则先响应链表中访问地址与该目标指令访存请求相同的失效访存请求,并返回对应的指令;待响应完链表中访问地址与该目标指令访存请求相同的失效访存请求时,再返回该目标指令访存请求所命中的指令。
其中,指令访存请求命中指令缓存是指基于该指令访存请求中携带的访问地址可以从指令缓存中获取到对应的指令,则表示命中,若不能从指令缓存中获取到对应的指令,则表示未命中或失效。也即在指令缓存的访问地址与目标指令访存请求相同的访问地址的位置存储有对应的指令时,则该目标指令访存请求会命中该指令缓存,否则不能命中该指令缓存。
本申请实施例中,通过引入链表来记录未命中指令缓存的失效访存请求,使得每当有命中指令缓存的目标指令访存请求时,先判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求,若存在这样的失效访存请求,则表明在该目标指令访存请求之前还有未返回指令的指令访存请求,则需要优先对这样的失效访存请求进行处理,待这样的失效访存请求处理完,再返回该目标指令访存请求所命中的指令,避免出现访问地址相同,但后面的指令访存请求先于前面的指令访存请求获取到指令的情况,以保证指令访存的公平性和时效性。
指令缓存,还用于在链表中不存在访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令,也即,在链表中不存在访问地址与该目标指令访存请求相同的失效访存请求时,直接向该目标指令访存请求对应的指令取指单元返回该目标指令访存请求所命中的指令。
对于未命中指令缓存的失效访存请求(未命中指令缓存的指令访存请求即为失效访存请求),则指令缓存,还用于将未命中指令缓存的失效访存请求按照时间先后顺序记录在链表中。这样后续在对链表中记录的这些失效访存请求进行处理时,可以保证按照先记录先处理的顺序进行处理。
其中,每一个线程组对应一个计时器,对于支持N个线程组并行取指的指令缓存,则对应有N个计时器,N个线程组与N个计时器一一对应。每个计时器用于记录对应的指令访存请求未命中指令缓存,且未被记录在链表中的时间,该时间用于确定失效访存请求记录在链表中的先后顺序。通过计时器来记录指令访存请求失效且未被记录在链表中的时间,以便于在将各个失效访存请求记录在链表中时,按照计时器所记录的时间从大到小的顺序依次将对应的失效访存请求记录在链表中,这样便可实现按照时间先后顺序将失效访存请求记录在链表中的目的。
其中,当某一个线程组对应的指令访存请求未命中指令缓存,则对应的计时器便开始计时,直至该失效访存请求记录在链表中时停止计时。之后便会重置该计时器(即将计时时间清零)。对于同一时刻不存在资源访问冲突的多个失效访存请求,指令缓存可以根据计时器记录的时间来控制调度,可以从所有失效访存请求中选取一个计时时间最长的失效访存请求,将其记录在链表中,然后重置这个失效访存请求对应的计时器,接下来,指令缓存再依次从剩余的失效访存请求中挑选计时时间最长的失效访存请求,将其记录在链表中,然后重置这个失效访存请求对应的计时器,依次循环下去,这样便可实现按照时间先后顺序将失效访存请求记录在链表中的目的。
对于存在资源访问冲突的多个失效访存请求(这多个失效访存请求失效在同一缓存行),由于存在资源竞争,为了更好的保证指令访存的公平性和时效性,指令缓存在将未命中指令缓存的失效访存请求按照时间先后顺序记录在链表中时,具体用于:对于同一时刻存在资源访问冲突的多个失效访存请求,根据多个失效访存请求各自的请求优先级,按照请求优先级从高到低的顺序将多个失效访存请求依次记录在链表中。这样后续在对同一时刻存在资源访问冲突的多个失效访存请求进行处理时,可以保证按照优先级从高到低的顺序进行处理。可以理解的是,对于同一时刻存在资源访问冲突的多个失效访存请求,也可以是随机的将各个失效访存请求依次记录在链表中。因此,不能将本申请按照请求优先级从高到低的顺序将多个失效访存请求依次记录在链表中的优选方式理解成是对本申请的限制。
需要说明的是,对于并行的N个指令访存请求的命中情况大致可以分为3种:第一种,N个指令访存请求全部命中;第二种,N个指令访存请求部分命中,部分未命中;第三种,N个指令访存请求全部未命中。 其中,对于部分未命中或全部未命中的指令访存请求,又可以进一步判断是否存在资源访问冲突。如果多个失效访存请求访问指令缓存中的同一缓存行,则访问同一缓存行的这多个失效访存请求存在资源访问冲突,否则不存在资源访问冲突。
指令缓存,在将未命中指令缓存的失效访存请求按照时间先后顺序记录在链表中之后,还用于按照链表中记录的失效访问请求的时间先后顺序,依次从后级缓存(如下一级缓存或者主存)处获取链表中的失效访问请求对应的指令,并将获取到的指令存储到指令缓存中。在从后级缓存处获取链表中的失效访问请求对应的指令时,该失效访问请求会进入等待状态,如果在失效访问请求进入等待状态期间,如果有其他目标指令访存请求继续命中这个失效访存请求所对应的指令,则目标指令访存请求需要等待。待链表中访问地址与该目标指令访存请求相同的失效访存请求处理完后,才返回该目标指令访存请求所命中的指令。
指令缓存,在将获取到的指令存储到指令缓存中之后,还用于按照时间先后顺序,依次响应链表中已获取到对应指令的失效访问请求,并返回对应的指令,之后删除链表中已响应过的失效访存请求。
为了支持N个线程组并行取指,该指令缓存的内部带宽需要与支持N个线程组并行取指的带宽相匹配,一种实施方式下,如图2所示,该指令缓存包括:缓存区、与N个线程组一一对应的N个输入端口及N个输出端口、主控单元。N个输入端口、N个输出端口均与主控单元连接,主控单元还通过N条数据线与缓存区连接,以便于主控单元可以并行访问缓存区。
缓存区,用于缓存指令,该缓存区包括多个缓存行,每个缓存行包括多列,例如,该缓存区的大小为512行*256列。一种可选实施方式下,该缓存区内置有缓存控制单元(图中未示出),用于从缓存行中读取指令或将指令写入缓存行。可以理解的是,该缓存控制单元也可以是内置在主控单元内,或者与主控单元、缓存行并行分离设置。
每个输入端口用于接收一个指令访存请求,并将接收到的指令访存请求发送给主控单元进行处理。每个输出接口用于输出对应的指令访存请求对应的指令,可选地,输出接口在主控单元的控制下输出对应的指令访存请求对应的指令。
主控单元,用于检查每个指令访存请求命中缓存区的命中情况;对于命中的目标指令访存请求,判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求;在链表中存在访问地址与该目标指令访存请求相同的失效访存请求时,响应链表中访问地址与该目标指令访存请求相同的失效访存请求,并通过对应的输出端口返回对应的指令;待响应完链表中访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令,也即通过该目标指令访存请求对应的输出端口向对应的指令取指单元返回指令。主控单元,还用于在链表中不存在访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令,即通过该目标指令访存请求对应的输出端口向对应的指令取指单元返回指令。
N个指令访存请求同时送入指令缓存的主控单元,主控单元首先检查各个指令访存请求的指令命中情况,可能所有指令访存请求均为命中,则进一步判断链表中是否存在访问地址与目标指令访存请求相同的失效访存请求,若链表中不存在访问地址与目标指令访存请求相同的失效访存请求,则每个指令访存请求均可以直接获得各自的指令,并返回数据至指令取指单元执行后续指令流水。如果所有的指令访存请求中存在未命中的失效访存请求,且没有资源访问冲突,则主控单元,还用于将未命中指令缓存的失效访存请求,按照时间先后顺序记录在链表中。对于同一时刻存在资源访问冲突的多个失效访存请求,则主控单元在将未命中指令缓存的失效访存请求按照时间先后顺序记录在链表中时,具体用于:对于同一时刻存在资源访问冲突的多个失效访存请求,根据多个失效访存请求各自的请求优先级,按照请求优先级从高到低的顺序将多个失效访存请求依次记录在链表中。
主控单元,在将未命中指令缓存的失效访存请求按照时间先后顺序记录在链表中之后,还用于按照链表中记录的失效访问请求的时间先后顺序,依次从后级缓存处获取链表中的失效访问请求对应的指令,并将获取到的指令存储到指令缓存中。
主控单元,在将获取到的指令存储到指令缓存中之后,还用于按照时间先后顺序,依次响应链表中已获取到对应指令的失效访问请求,并返回对应的指令;之后删除链表中已响应过的失效访存请求。
其中,该指令缓存还包括与N个线程组一一对应的N个计时器,N个计时器可以内置在主控单元内,一种实施方式下,如图3所示,主控单元可以包括与N个线程组一一对应的N个计时器以及仲裁器。需要说明的是,N个计时器也可以不设置在主控单元内,如可以是与主控单元并行设置。因此,不能将内置在主控单元内的方案理解成是对本申请的限制。
每个计时器用于记录对应的指令访存请求未命中指令缓存,且未被记录在链表中的时间,该时间用于确定失效访存请求记录在链表中的先后顺序。仲裁器可以根据各个计时器记录的时间,按照计时时间从大到小的顺序依次将对应的失效访存请求记录在链表中,这样便可实现按照时间先后顺序将失效访存请求记录在链表中的目的。
其中,当某个线程组的指令访存请求命中指令时,会重置计时器,或者当某个线程组的失效访存请求被记录在链表中时也会重置计时器。对于不存在资源访问冲突的多个失效访存请求,仲裁器可以根据计时器记录的时间来控制调度,可以从所有失效访存请求中选取一个计时时间最长的失效访存请求,将其记录在链表中,然后重置这个失效访存请求的计时器,接下来,仲裁器再依次从剩余的失效访存请求中挑选计时时间最长的失效访存请求,将其记录在链表中,然后重置这个失效访存请求的计时器,依次循环下去,这样便可实现按照时间先后顺序将失效访存请求记录在链表中的目的。
为了便于对链表进行管理,一种实施方式下,可以单独设置一个失效控制单元来对链表进行管理,其余的执行逻辑仍然由主控单元来完成。在该种实施方式下,如图4所示,该指令缓存还包括失效控制单元,失效控制单元与主控单元通过N条数据线连接,以便于主控单元与失效控制单元之间可以并行访问。
此时,主控单元用于将未命中指令缓存的失效访存请求按照时间先后依次发送给失效控制单元,失效控制单元用于将未命中指令缓存的失效访存请求按照时间先后顺序记录在链表中。通过按时间顺序管理未命中(失效)的失效访存请求,可以保证多线程组竞争访问访存,特别是访问相同的指令的时效性,不会出现后请求的线程组可以先获得指令数据的情况。
在图4所示的实施方式下,仍然由主控单元,按照链表中记录的失效访问请求的时间先后顺序,依次从后级缓存处获取链表中的失效访问请求对应的指令,并将获取到的指令存储到指令缓存中,在将获取到的指令存储到指令缓存中之后,主控单元按照时间先后顺序,依次响应链表中已获取到对应指令的失效访问请求,并返回对应的指令,之后将已响应过的失效访存请求告知失效控制单元,由失效访存请求删除链表中已响应过的失效访存请求。
其中,链表的数量可以是一个,此时,指令缓存的所有缓存行对应同一个链表;当然,链表的数量也可以是多个,例如可以是每一个缓存行对应一个链表,或者每几个缓存行对应一个链表。如果是每一个缓存行对应一个链表,则每个链表仅记录失效在该链表对应的缓存行的失效访存请求,也即该链表仅记录访问地址在该缓存行的失效访存请求。为了降低硬件开销,可以是所有缓存行共享同一个链表,可以通过不同的颜色(如红、黄、蓝、绿、白、黑等颜色)来区分链表中的哪些失效访存请求是指向同一缓存行的,其中,指向同一缓存行的失效访存请求在链表中的颜色相同。和/或,通过箭头来将指向同一缓存行的失效访存请求串起来,其示意图如图5所示。从图5中可以看出,指向同一缓存行的失效访存请求在链表中的颜色相同,此外,指向同一缓存行的失效访存请求还可以用箭头按照先后顺序串起来。
处理器除了包含N个指令取指单元和指令缓存外,还可以包括指令调度单元,为了能并行处理指令取指单元下发的指令,相应的指令调度单元的数量也可以为N个,N个指令调度单元与N个指令取指单元一一对应,其示意图如图6所示。指令取指单元从指令缓存处获取到指令后,将获取到的指令发送给指令取指单元执行后续操作。
本申请所示的处理器,可以是在现有主流处理器的架构上进行改进而得到,使其在支持高并发访问指令缓存的同时,能保证多线程组并发访存的公平性和时效性。其中,现有的主流处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)、图形处理器(Graphics Processing Unit,GPU)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable GateArray,FPGA),或者,也可以是微处理器或者其他任何常规的处理器等。
基于同样的发明构思,本申请实施例还提供了一种的电子设备,该电子设备包括本体和上述的处理器。其中,本体可以包括收发器、通讯总线及存储器等。一种实施方式下,该电子设备的结构示意如图7所示。
所述收发器、所述存储器、处理器各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。其中,收发器可以用于收发数据。存储器可以用于存储数据。
其中,存储器可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
其中,上述的电子设备,包括但不限于智能手机、平板、电脑、服务器等。
电子设备实施例所提供的处理器,其实现原理及产生的技术效果和前述处理器实施例相同,为简要描述,电子设备实施例部分未提及之处,可参考处理器实施例中相应内容。
基于同样的发明构思,本申请实施例还提供了一种多线程组并行获取指令的方法,如图8所示。下面将结合图8,对本申请实施例提供的多线程组并行获取指令的方法进行说明。
S1:获取来自N个线程组的并行的N个指令访存请求。
可以是指令缓存获取来自N个线程组的并行的N个指令访存请求,一个线程组对应一个指令访存请求,N为大于等于2的整数。
其中,这N个指令访存请求可以是来自于N个指令取指单元,一种实施方式下,同一个时刻,一个指令取指单元可以仅基于一个线程组向指令缓存下发一个指令访存请求。
S2:对于命中指令缓存的目标指令访存请求,判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求。
可以是指令缓存在获取来自N个线程组的并行的N个指令访存请求后,检查每个指令访存请求命中指令缓存的命中情况,对于命中指令缓存的目标指令访存请求,则判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求。其中,链表用于按照时间先后顺序记录未命中指令缓存的失效访存请求。
在链表中存在访问地址与该目标指令访存请求相同的失效访存请求时,执行S3;在链表中不存在访问地址与该目标指令访存请求相同的失效访存请求时,执行S4。
S3:响应链表中访问地址与该目标指令访存请求相同的失效访存请求,并返回对应的指令,待响应完链表中访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
在链表中存在访问地址与该目标指令访存请求相同的失效访存请求时,指令缓存响应链表中访问地址与该目标指令访存请求相同的失效访存请求,并返回对应的指令,待响应完链表中访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
S4:返回该目标指令访存请求所命中的指令。
在链表中不存在访问地址与该目标指令访存请求相同的失效访存请求时,直接返回该目标指令访存请求所命中的指令。
在检查每个指令访存请求命中指令缓存的命中情况时,对于未命中指令缓存的失效访存请求,该多线程组并行获取指令的方法还包括将未命中指令缓存的失效访存请求按照时间先后顺序记录在链表中。
其中,一个线程组对应一个计时器,也即计时器的数量也为N,N个计时器与N个线程组一一对应,每个计时器用于记录对应的指令访存请求未命中指令缓存,且未被记录在链表中的时间,该时间用于确定失效访存请求记录在链表中的先后顺序。
对于同一时刻存在资源访问冲突的多个失效访存请求,在将未命中指令缓存的失效访存请求按照时间先后顺序记录在链表中的过程可以是:对于同一时刻存在资源访问冲突的多个失效访存请求,根据多个失效访存请求各自的请求优先级,按照请求优先级从高到低的顺序将多个失效访存请求依次记录在链表中。
在将未命中指令缓存的失效访存请求按照时间先后顺序记录在链表中之后,该多线程组并行获取指令的方法还包括:按照链表中记录的失效访问请求的时间先后顺序,依次从后级缓存处获取链表中的失效访问请求对应的指令,并将获取到的指令存储到指令缓存中。
在将获取到的指令存储到指令缓存中之后,该多线程组并行获取指令的方法还包括:按照时间先后顺序,依次响应链表中已获取到对应指令的失效访问请求,并返回对应的指令;删除链表中已响应过的失效访存请求。
方法实施例所涉及的指令缓存,其实现原理及产生的技术效果和前述处理器实施例中相同,为简要描述,方法实施例部分未提及之处,可参考处理器实施例中相应内容。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (17)
1.一种多线程组并行获取指令的方法,其特征在于,包括:
获取来自N个线程组的并行的N个指令访存请求,一个线程组对应一个指令访存请求,N为大于等于2的整数;
对于命中指令缓存的目标指令访存请求,判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求,其中,所述链表用于按照时间先后顺序记录未命中所述指令缓存的失效访存请求;
在所述链表中存在访问地址与该目标指令访存请求相同的失效访存请求时,响应所述链表中访问地址与该目标指令访存请求相同的失效访存请求,并返回对应的指令,待响应完所述链表中访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中。
3.根据权利要求2所述的方法,其特征在于,将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中,包括:
对于同一时刻存在资源访问冲突的多个失效访存请求,根据所述多个失效访存请求各自的请求优先级,按照请求优先级从高到低的顺序将所述多个失效访存请求依次记录在所述链表中。
4.根据权利要求2所述的方法,其特征在于,在所述将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中之后,所述方法还包括:
按照所述链表中记录的失效访问请求的时间先后顺序,依次从后级缓存处获取所述链表中的失效访问请求对应的指令,并将获取到的指令存储到所述指令缓存中。
5.根据权利要求4所述的方法,其特征在于,在所述将获取到的指令存储到所述指令缓存中之后,所述方法还包括:
按照时间先后顺序,依次响应所述链表中已获取到对应指令的失效访问请求,并返回对应的指令;
删除所述链表中已响应过的失效访存请求。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述链表中不存在访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
7.根据权利要求1-6任一项所述的方法,其特征在于,一个线程组对应一个计时器,每个计时器用于记录对应的指令访存请求未命中所述指令缓存,且未被记录在所述链表中的时间,该时间用于确定失效访存请求记录在所述链表中的先后顺序。
8.一种处理器,其特征在于,包括:
N个指令取指单元,每个所述指令取指单元,用于基于线程组下发指令访存请求,N为大于等于2的整数;
指令缓存,用于接收来自N个线程组的并行的N个指令访存请求;对于命中所述指令缓存的目标指令访存请求,判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求,其中,所述链表用于按照时间先后顺序记录未命中所述指令缓存的失效访存请求;在所述链表中存在访问地址与该目标指令访存请求相同的失效访存请求时,响应所述链表中访问地址与该目标指令访存请求相同的失效访存请求,并返回对应的指令;待响应完所述链表中访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
9.根据权利要求8所述的处理器,其特征在于,所述指令缓存,还用于将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中。
10.根据权利要求9所述的处理器,其特征在于,所述指令缓存,在将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中时,具体用于:对于同一时刻存在资源访问冲突的多个失效访存请求,根据所述多个失效访存请求各自的请求优先级,按照请求优先级从高到低的顺序将所述多个失效访存请求依次记录在所述链表中。
11.根据权利要求9所述的处理器,其特征在于,所述指令缓存,在将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中之后,还用于按照所述链表中记录的失效访问请求的时间先后顺序,依次从后级缓存处获取所述链表中的失效访问请求对应的指令,并将获取到的指令存储到所述指令缓存中。
12.根据权利要求11所述的处理器,其特征在于,所述指令缓存,在将获取到的指令存储到所述指令缓存中之后,还用于按照时间先后顺序,依次响应所述链表中已获取到对应指令的失效访问请求,并返回对应的指令;删除所述链表中已响应过的失效访存请求。
13.根据权利要求8所述的处理器,其特征在于,所述指令缓存,还用于在所述链表中不存在访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
14.根据权利要求8-13任一项所述的处理器,其特征在于,所述指令缓存包括:
缓存区,用于缓存指令;
与所述N个线程组一一对应的N个输入端口及N个输出端口,每个输入端口用于接收一个所述指令访存请求,每个输出接口用于输出对应的指令访存请求对应的指令;
主控单元,用于检查每个所述指令访存请求命中所述缓存区的命中情况;对于命中的目标指令访存请求,判断链表中是否存在访问地址与该目标指令访存请求相同的失效访存请求;在所述链表中存在访问地址与该目标指令访存请求相同的失效访存请求时,响应所述链表中访问地址与该目标指令访存请求相同的失效访存请求,并返回对应的指令;待响应完所述链表中访问地址与该目标指令访存请求相同的失效访存请求时,返回该目标指令访存请求所命中的指令。
15.根据权利要求14所述的处理器,其特征在于,所述指令缓存,还包括:
失效控制单元,用于将未命中所述指令缓存的失效访存请求按照时间先后顺序记录在所述链表中,以及删除所述链表中已响应过的失效访存请求。
16.根据权利要求14所述的处理器,其特征在于,所述指令缓存,还包括:与所述N个线程组一一对应的N个计时器,每个计时器用于记录对应的指令访存请求未命中所述指令缓存,且未被记录在所述链表中的时间,该时间用于确定失效访存请求记录在所述链表中的先后顺序。
17.一种电子设备,其特征在于,包括本体和如权利要求8-16任一项所述的处理器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210649453.1A CN114721726B (zh) | 2022-06-10 | 2022-06-10 | 一种多线程组并行获取指令的方法、处理器及电子设备 |
PCT/CN2022/114241 WO2023236355A1 (zh) | 2022-06-10 | 2022-08-23 | 一种多线程组并行获取指令的方法、处理器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210649453.1A CN114721726B (zh) | 2022-06-10 | 2022-06-10 | 一种多线程组并行获取指令的方法、处理器及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114721726A CN114721726A (zh) | 2022-07-08 |
CN114721726B true CN114721726B (zh) | 2022-08-12 |
Family
ID=82233035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210649453.1A Active CN114721726B (zh) | 2022-06-10 | 2022-06-10 | 一种多线程组并行获取指令的方法、处理器及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114721726B (zh) |
WO (1) | WO2023236355A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11822922B2 (en) | 2021-12-31 | 2023-11-21 | International Business Machines Corporation | Miss-driven instruction prefetching |
CN114721726B (zh) * | 2022-06-10 | 2022-08-12 | 成都登临科技有限公司 | 一种多线程组并行获取指令的方法、处理器及电子设备 |
CN116431315B (zh) * | 2023-06-07 | 2023-08-29 | 成都登临科技有限公司 | 批处理任务的处理方法、装置、电子设备及存储介质 |
CN117472803B (zh) * | 2023-12-28 | 2024-03-29 | 北京微核芯科技有限公司 | 原子指令执行方法、装置及电子设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5442760A (en) * | 1989-09-20 | 1995-08-15 | Dolphin Interconnect Solutions As | Decoded instruction cache architecture with each instruction field in multiple-instruction cache line directly connected to specific functional unit |
JP2005309762A (ja) * | 2004-04-21 | 2005-11-04 | Fujitsu Ltd | スレッド切替制御装置。 |
CN1797326A (zh) * | 2004-12-21 | 2006-07-05 | 三菱电机株式会社 | 控制电路以及控制方法 |
CN101542412A (zh) * | 2005-04-14 | 2009-09-23 | Mips技术公司 | 用于多线程处理器中自动低功率模式调用的装置和方法 |
CN104375958A (zh) * | 2013-08-15 | 2015-02-25 | 国际商业机器公司 | 高速缓存存储器管理事务性存储器访问请求 |
CN105677580A (zh) * | 2015-12-30 | 2016-06-15 | 杭州华为数字技术有限公司 | 访问缓存的方法和装置 |
CN108351835A (zh) * | 2015-11-23 | 2018-07-31 | 英特尔公司 | 用于高速缓存控制操作的指令和逻辑 |
CN109964207A (zh) * | 2016-11-11 | 2019-07-02 | 微软技术许可有限责任公司 | 用于时间行程调试和分析的基于高速缓存的跟踪 |
CN110059020A (zh) * | 2015-04-23 | 2019-07-26 | 华为技术有限公司 | 扩展内存的访问方法、设备以及*** |
CN111176855A (zh) * | 2018-11-09 | 2020-05-19 | 微软技术许可有限责任公司 | 在用户空间中建立线程之间的队列 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100399299C (zh) * | 2005-10-28 | 2008-07-02 | 中国科学院计算技术研究所 | 一种高速缓存失效的处理器访存指令处理方法 |
US8108625B1 (en) * | 2006-10-30 | 2012-01-31 | Nvidia Corporation | Shared memory with parallel access and access conflict resolution mechanism |
CN102156633A (zh) * | 2011-04-18 | 2011-08-17 | 北京北大众志微***科技有限责任公司 | 预执行指导的数据预取方法及*** |
GB2532424B (en) * | 2014-11-18 | 2016-10-26 | Ibm | An almost fair busy lock |
JP7014965B2 (ja) * | 2018-06-06 | 2022-02-02 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
CN114579479A (zh) * | 2021-11-16 | 2022-06-03 | 中国科学院上海高等研究院 | 基于指令流混合模式学习的低污染缓存预取***及方法 |
CN114721726B (zh) * | 2022-06-10 | 2022-08-12 | 成都登临科技有限公司 | 一种多线程组并行获取指令的方法、处理器及电子设备 |
-
2022
- 2022-06-10 CN CN202210649453.1A patent/CN114721726B/zh active Active
- 2022-08-23 WO PCT/CN2022/114241 patent/WO2023236355A1/zh unknown
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5442760A (en) * | 1989-09-20 | 1995-08-15 | Dolphin Interconnect Solutions As | Decoded instruction cache architecture with each instruction field in multiple-instruction cache line directly connected to specific functional unit |
JP2005309762A (ja) * | 2004-04-21 | 2005-11-04 | Fujitsu Ltd | スレッド切替制御装置。 |
CN1797326A (zh) * | 2004-12-21 | 2006-07-05 | 三菱电机株式会社 | 控制电路以及控制方法 |
CN101542412A (zh) * | 2005-04-14 | 2009-09-23 | Mips技术公司 | 用于多线程处理器中自动低功率模式调用的装置和方法 |
CN104375958A (zh) * | 2013-08-15 | 2015-02-25 | 国际商业机器公司 | 高速缓存存储器管理事务性存储器访问请求 |
CN110059020A (zh) * | 2015-04-23 | 2019-07-26 | 华为技术有限公司 | 扩展内存的访问方法、设备以及*** |
CN108351835A (zh) * | 2015-11-23 | 2018-07-31 | 英特尔公司 | 用于高速缓存控制操作的指令和逻辑 |
CN105677580A (zh) * | 2015-12-30 | 2016-06-15 | 杭州华为数字技术有限公司 | 访问缓存的方法和装置 |
CN109964207A (zh) * | 2016-11-11 | 2019-07-02 | 微软技术许可有限责任公司 | 用于时间行程调试和分析的基于高速缓存的跟踪 |
CN111176855A (zh) * | 2018-11-09 | 2020-05-19 | 微软技术许可有限责任公司 | 在用户空间中建立线程之间的队列 |
Non-Patent Citations (2)
Title |
---|
Niagara: a 32-way multithreaded Sparc processor;P. Kongetira 等;《IEEE》;20050620;21-29 * |
一种多线程程序内存***模拟器Trace驱动仿真方法;朱鹏飞 等;《计算机研究与发展》;20150615;1266-1277 * |
Also Published As
Publication number | Publication date |
---|---|
CN114721726A (zh) | 2022-07-08 |
WO2023236355A1 (zh) | 2023-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114721726B (zh) | 一种多线程组并行获取指令的方法、处理器及电子设备 | |
US6532509B1 (en) | Arbitrating command requests in a parallel multi-threaded processing system | |
US6832280B2 (en) | Data processing system having an adaptive priority controller | |
US6681300B2 (en) | Read lock miss control and queue management | |
US9727497B2 (en) | Resolving contention between data bursts | |
US7370152B2 (en) | Memory controller with prefetching capability | |
US11960945B2 (en) | Message passing circuitry and method | |
CN114356223A (zh) | 存储器的访问方法及装置、芯片、电子设备 | |
US20110022802A1 (en) | Controlling data accesses to hierarchical data stores to retain access order | |
JPH09244952A (ja) | 主メモリへの帯域幅を保持するシステム | |
US10990543B1 (en) | Apparatus and method for arbitrating access to a set of resources | |
US5913231A (en) | Method and system for high speed memory address forwarding mechanism | |
CN114721727B (zh) | 一种处理器、电子设备及多线程共享的指令预取方法 | |
US7028142B2 (en) | System and method for reducing access latency to shared program memory | |
JP4504134B2 (ja) | システム制御装置、投機フェッチ方法および情報処理装置 | |
CN109313611B (zh) | 用于处理数据的设备和方法 | |
US8977815B2 (en) | Control of entry of program instructions to a fetch stage within a processing pipepline | |
JP3873589B2 (ja) | プロセッサシステム | |
CN114063923A (zh) | 数据读取方法、装置、处理器及电子设备 | |
US8966221B2 (en) | Translating translation requests having associated priorities | |
JP2003348183A (ja) | 通信制御装置 | |
JPH0784971A (ja) | コンピュータシステム | |
CN115587052A (zh) | 一种缓存性能的处理方法及其相关设备 | |
CN113835673A (zh) | 一种用于降低多核处理器加载延时的方法、***及装置 | |
CN115469976A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |