CN110647358B - 同步多线程处理器 - Google Patents
同步多线程处理器 Download PDFInfo
- Publication number
- CN110647358B CN110647358B CN201810686511.1A CN201810686511A CN110647358B CN 110647358 B CN110647358 B CN 110647358B CN 201810686511 A CN201810686511 A CN 201810686511A CN 110647358 B CN110647358 B CN 110647358B
- Authority
- CN
- China
- Prior art keywords
- data
- pipeline
- interruptible
- pipelines
- cache
- 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
- 230000001360 synchronised effect Effects 0.000 title description 5
- 238000013500 data storage Methods 0.000 claims abstract description 27
- 239000012536 storage buffer Substances 0.000 claims abstract description 19
- 239000000872 buffer Substances 0.000 claims description 35
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 4
- 238000004519 manufacturing process Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/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/3861—Recovery, e.g. branch miss-prediction, exception handling
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)
- Advance Control (AREA)
Abstract
一种同步多线程处理器,包括:索引RAM、存储缓存器、数据高速缓存器以及至少两条流水线,其中:所述至少两条流水线,分别与所述索引RAM、所述存储缓存器以及所述数据高速缓存器均连接,适于访问所述数据高速缓存器;每一条流水线存在一一对应的数据缓存区,且所述数据缓存区用于:当对应的流水线接收到的待存储数据的位数大于所述对应的流水线的最大数据位数时,存储所述数据存储指令对应数据的一部分;数据移位器,适于将不同流水线对应的数据缓存区中的数据进行移位,以恢复所述待存储数据,并将所述待存储数据存储至所述存储缓存器。上述方案能够在实现数据实时存储的同时,使用较低位数的流水线来支持较高位数的处理器。
Description
技术领域
本发明涉及处理器领域,尤其涉及一种同步多线程处理器。
背景技术
高速缓存器是内存子系统中的一个组成部分。高速缓存器可以临时存储内存数据,从而为处理器提供快速访问。高速缓存器的缓存结构可以是多层的,例如一级高速缓存和二级高速缓存。在现有技术中,高速缓存器根据存储的数据不同,又可以分为数据高速缓存器和指令高速缓存器。
同步多线程(Simultaneous Multi-Threading,SMT)是一种优化片上资源利用效率的技术。在SMT处理器中,存储资源可以被不同的硬件线程复用,例如浮点单元、算术逻辑单元和高速缓存等的计算资源被多个线程共享。
在现有技术中,处理器在进行流水线操作时,若此时并发有数据存储操作,则通常需要在流水线上的操作指令完成之后再进行数据存储操作,无法在流水线繁忙时实现实时的数据存储。
此外,在现有技术中,当处理器的位数较大时,为满足处理器的需求,相应的流水线对应的处理位数也需要与处理器的位数相同。然而,随着处理器的位数增大,增加相应流水线对应的处理位数需要的成本越来越高。
发明内容
本发明实施例解决的是在实现数据实时存储的同时,如何使用较低位数的流水线来支持较高位数的处理器。
为解决上述技术问题,本发明实施例提供一种同步多线程处理器,包括:索引RAM、存储缓存器、数据高速缓存器以及至少两条流水线,其中:所述至少两条流水线,分别与所述索引RAM、所述存储缓存器以及所述数据高速缓存器均连接,适于访问所述数据高速缓存器;其中:每一条流水线对应一个独立的线程,其中的至少一条流水线为可中断流水线,至少一条流水线为非可中断流水线,且所述中断流水线适于在接收到数据存储指令时停止当前所执行的非数据存储指令,并执行所述数据存储指令;每一条流水线存在一一对应的数据缓存区,且所述数据缓存区用于:当对应的流水线接收到的待存储数据的位数大于所述对应的流水线的最大数据位数时,存储所述待存储数据的一部分;数据移位器,适于将不同流水线对应的数据缓存区中的数据进行移位,以恢复所述待存储数据,并将所述待存储数据存储至所述存储缓存器。
可选的,所述至少两条流水线中的至少一条流水线包括:可中断流水支线、非可中断流水支线以及数据合并器,其中:所述可中断流水支线包括可中断缓存区,所述可中断缓存区用于在所述可中断流水支线接收到中断指令时,存储在接收到所述中断指令之前运行指令及对应的数据;所述非可中断流水支线包括非可中断缓存区,所述非可中断缓存区用于存储所述非可中断流水支线运行时生成的中间数据;所述数据合并器,适于对所述可中断缓存区中的中间数据、所述非可中断缓存区中的中间数据以及所述流水线对应的存储缓存器中存储的数据进行合并,以得到所述流水线对应的运行结果。
可选的,所述可中断流水支线顺序执行接收到的指令。
可选的,每一条流水线还包括:待定存储区,所述待定存储区用于存储对应流水线上前一条指令执行时对应的结果数据。
可选的,所述同步多线程处理器还包括:与每一条流水线一一对应设置的分级缓存器组,其中:第i条流水线对应的分级缓存器组中的每一个分级缓存器,适于缓存所述第i条流水线执行相应指令时所对应的中间数据,1<i≤N,N为流水线总数。
可选的,所述可中断流水线对应的分级缓存器组,还适于存储所述非可中断流水线执行相应指令时所对应的中间数据。
可选的,所述非可中断流水线在执行相应指令时对应的输出结果包括:所述非可中断流水线在执行相应指令时对应的中间数据,以及所述可中断流水线所存储的所述非可中断流水线执行相应指令时所对应的中间数据的合并结果。
可选的,所述可中断流水线对应的分级缓存器组包括:定时清除单元,适于在定时时长达到预设时长时,清除所述可中断流水线上的非加载指令。
可选的,所述可中断流水线,还适于在未执行操作指令且不存在缓存冲突时,监听外部请求。
可选的,所述同步多线程处理器还包括:仲裁单元,与所有流水线均耦接,适于当检测到任意两条流水线上的访问指令冲突时,对发生冲突的流水线上的访问指令进行排序,以使得所述发生冲突的流水线上的访问指令按顺序访问。
可选的,所述存储缓存器与每一条流水线一一对应。
可选的,所述存储缓存器与每一条流水线一一对应。
可选的,所有流水线均为支持同步多线程的流水线。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
在同步多线程处理器中设置有至少两条流水线,且其中至少一条流水线为可中断流水线。可中断流水线在接收到数据存储指令时停止当前所执行的非数据存储指令,转而执行接收到的数据存储指令。因此,当接收到数据存储指令时,存在至少一条流水线可以执行接收到的数据存储指令,从而实现实时地进行数据存储操作。此外,当待存储数据的位数大于对应流水线的最大数据位数时,将待存储数据分成多个部分,由不同的流水线对应的数据缓存区存储,通过对不同流水线对应的数据缓存区中的数据进行移位,从而得到待存储数据,故能够实现使用较低位数的流水线来支持较高位数的处理器。
进一步,通过仲裁单元检查不同流水线上的访问指令是否发生冲突。当仲裁单元检测到任意两条流水线上的访问指令冲突时,对发生访问冲突的流水线上的访问指令进行排序,使得发生冲突的流水线上的访问指令按顺序进行访问。
附图说明
图1是现有的一种同步多线程处理器的结构示意图;
图2是本发明实施例中的一种同步多线程处理器的结构示意图;
图3是本发明实施例中的一种同步多线程处理器的工作原理示意图;
具体实施方式
参照图1,给出了现有的一种处理器的结构示意图。图1中,流水线(Pipeline)101分别与索引RAM(Tag RAM)102、存储缓存器(Store Buffer)103、数据高速RAM(Data RAM)104以及指令管理单元(Request Management)105连接。索引RAM 102、存储缓存器103以及数据高速RAM 104均为存储单元。
数据加载指令可以通过指令管理单元105输出至流水线101。当图1中的处理器进行数据加载处理时,所有的加载指令都会经过流水线101。当流水线101上有数据加载指令时,先检查索引RAM 102中是否存在与数据加载指令对应的地址,也即判断数据加载指令是否在索引RAM 102中命中。当索引RAM 102中存在数据加载指令对应的地址时,可以直接从数据高速RAM 104中读取数据加载指令对应的数据,并将读取到的数据返回至流水线101。
当图1中的处理器进行数据存储时,待存储的数据直接被存储到存储缓存器103中。当流水线101处于空闲阶段时,存储缓存器103中存储的数据经由流水线101发送至数据高速RAM 104。
由上可见,现有技术中的处理器,当流水线处于繁忙状态时,无法实现实时的数据存储。
此外,在现有技术中,当处理器的位数较大时,为满足处理器的需求,相应的流水线对应的处理位数也需要与处理器的位数相同。然而,随着处理器的位数增大,增加相应流水线对应的处理位数需要的成本越来越高。
例如,处理器的位数为128位,现有技术中,需要流水线同样支持128位数据的处理能力。但是,支持128位数据存储能力的流水线对应的成本远高于支持64位数据存储能力的流水线。
在本发明实施例中,在同步多线程处理器中设置有至少两条流水线,且其中至少一条流水线为可中断流水线。可中断流水线在接收到数据存储指令时停止当前所执行的非数据存储指令,转而执行接收到的数据存储指令。因此,当接收到数据存储指令时,存在至少一条流水线可以执行接收到的数据存储指令,从而实现实时地进行数据存储操作。此外,当待存储数据的位数大于对应流水线的最大数据位数时,将待存储数据分成多个部分,由不同的流水线对应的数据缓存区存储,通过对不同流水线对应的数据缓存区中的数据进行移位,从而得到待存储数据,故能够实现使用较低位数的流水线来支持较高位数的处理器。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
本发明实施例提供了一种同步多线程处理器,包括:索引RAM、存储缓存器、数据高速缓存器以及至少两条流水线。在本发明实施例中,同步多线程处理器中的流水线均可以为支持同步多线程的流水线。
在实际应用中可知,索引RAM可以用于存储高速缓存数据索引地址,其主要功能是辅助高速缓存、CPU的通信与存取寻址数据。
在具体实施中,所有的流水线均分别与索引RAM、存储缓存器以及数据高速缓存器连接。所有的流水线均能够访问数据高速缓存器,且每一条流水线均可以对应一个独立的线程。
在本发明实施例中,在所有的流水线中,存在至少一条流水线为可中断流水线,至少一条流水线为非可中断流水线,其中,可中断流水线可以为实现如下功能的流水线:在接收到数据存储指令时停止执行当前所执行的非数据存储指令,并执行接收到的数据存储指令;非可中断流水线可以为实现如下功能的流水线:在接收到数据存储指令时,先继续执行当前所执行的操作指令,并在完成当前所执行的操作指令后,执行接收到的数据存储指令。
在本发明实施例中,同步多线程处理器所包括的流水线的个数可以为2个,也可以为更多个。当同步多线程处理器所包括的流水线的个数为2个时,其中一条流水线为非可中断流水线,另一个为可中断流水线。当同步多线程处理器所包括的流水线的个数为3个以上时,可中断流水线的个数可以仍为一个,其他的流水线均为非可中断流水线;或者,非可中断流水线的个数为一个,其他的流水线均为可中断流水线;或者,非可中断流水线的个数与可中断流水线的个数均为多个。
在具体实施中,同步多线程处理器中还可以设置有分级存储器组。针对每一条流水线,可以设置与之一一对应的分级存储器组。例如,对于第i条流水线,可以设置与之一一对应的第i分级缓存器组。
每一条分级缓存器组可以包括多级缓存器。当第i条流水线在执行相应指令时,分级缓存器组中的缓存器可以缓存第i条流水线在执行相应指令时对应的中间数据。
例如,针对第1条流水线,对应设置有第1分级缓存器组。假设第1条流水线上的操作指令经过a、b、c三个步骤,则在第1分级缓存器组中,第1个缓存器可以存储步骤a对应的中间数据,第2个缓存器可以存储步骤b对应的中间数据,第3个缓存器可以存储步骤c对应的中间数据。
在具体实施中,不同的流水线可以共用同一个索引RAM以及共用同一个存储缓存器,不同的流水线也可以存在一一对应的索引RAM以及一一对应的存储缓存器。在本发明一实施例中,针对不同的流水线,存在与之一一对应的索引RAM以及一一对应的存储缓存器。
下面以同步多线程处理器包括2条流水线为例,对本发明上述实施例中提供的同步多线程处理器进行详细说明。
参照图2,给出了本发明实施例中的一种同步多线程处理器的结构示意图。图2中,同步多线程处理器包括两条流水线:第一流水线201、第二流水线207,第一流水线201为非可中断流水线,第二流水线207为可中断流水线。
针对第一流水线201,设置有与之对应的第一索引RAM 202、第一存储缓存器203以及第一分级缓存寄存器组209;相应地,针对第二流水线207,设置有与之对应的第二索引RAM 205、第二存储缓存器206以及第二分级缓存寄存器组210。
第一流水线201可以与第一索引RAM 202、第一存储缓存器203以及第一分级缓存寄存器组209进行通信。第二流水线207可以与第二索引RAM 205、第二存储缓存器206以及第二分级缓存寄存器组210进行通信。
下面对本发明上述实施例中提供的同步多线程处理器的工作过程进行说明。
当第一流水线201上有数据加载指令时,先检查第一索引RAM 202中是否存在与数据加载指令对应的地址,也即判断数据加载指令是否在第一索引RAM 202中命中。当检测到第一索引RAM 202中存在数据加载指令对应的地址时,可以直接从数据高速RAM 204中读取数据加载指令对应的数据,并将读取到的数据返回至第一流水线201。
当检测到第一索引RAM 202中不存在数据加载指令对应的地址时,则从数据高速RAM 204中找到数据加载指令对应的数据并读取,经由第一流水线201输出,并将读取出的数据存储到第一索引RAM 202中。
若第一流水线201处于繁忙状态的同时检测到数据存储指令,则可以获取第二流水线207的当前状态。当第二流水线207处于空闲状态时,则可以直接将数据存储指令输出至第二流水线207。第二流水线207在接收到数据存储指令后,可以将需要存储的数据存储至第二存储缓存器206,或者将需要存储的数据存储至数据高速RAM 204中。
当第二流水线207处于繁忙状态时,则可以先判断第二流水线207上当前执行的操作指令是否为数据存储指令。若第二流水线207上当前执行的操作指令是数据存储指令,则当前接收到的数据存储指令可以在之前的数据存储指令执行完成后执行;若第二流水线207上当前执行的操作指令不是数据存储指令,则可以将第二流水线207上当前执行的操作指令停止,并执行接收到的数据存储指令。在将接收到的数据存储指令执行完成后,可以继续执行之前没有执行完成的操作指令。由于之前执行的操作指令对应中间数据仍存储在第二分级缓存寄存器组210中,因此无需从头开始执行之前没有执行完成的操作指令,而是可以从中断执行的步骤开始继续执行。
例如,第二流水线207在接收到数据存储指令之前,执行数据加载指令,且执行到第三个步骤。当第二流水线207在接收到数据存储指令时,停止执行数据加载指令,并执行数据存储指令。当完成数据存储指令的执行后,从第三个步骤开始继续执行数据加载指令。
由此可见,在本发明实施例中,在同步多线程处理器中设置有至少两条流水线,且其中至少一条流水线为可中断流水线。可中断流水线在接收到数据存储指令时停止当前所执行的非数据存储指令,转而执行接收到的数据存储指令。因此,当接收到数据存储指令时,存在至少一条流水线可以执行接收到的数据存储指令,从而实现实时地进行数据存储操作。
在具体实施中,可中断流水线对应的分级缓存器组,还可以存储非可中断流水线执行相应指令时对应的中间数据。此时,非可中断流水线在执行相应指令时对应的输出结果包括:非可中断流水线在执行相应指令时对应的中间数据,以及可中断流水线所存储的非可中断流水线执行相应指令时所对应的中间数据。
换而言之,非可中断流水线在执行相应指令时对应的输出结果是由:非可中断流水线在执行相应指令时对应的中间数据,与可中断流水线所存储的非可中断流水线执行相应指令时所对应的中间数据的合并结果。
例如,同步多线程处理器包括两条流水线:流水线1,流水线2,流水线1为非可中断流水线,流水线2为可中断流水线,流水线1对应第1分级缓存器组,流水线2对应第2分级缓存器组。当流水线1在执行相应的操作指令时,生成的中间数据除了存放在第1分级缓存器组中之外,还可以存放在第2分级缓存器组中,且第1分级缓存器组中存储的中间数据与第2分级缓存器组中存储的中间数据相同。
在输出流水线1上的操作指令对应的结果时,输出结果为:第1分级缓存器组中存储的中间数据与第2分级缓存器组中存储的中间数据的合并。通过数据合并,可以保障流水线1上的输出结果的正确性。
在具体实施中,当可中断流水线上没有执行相应的操作指令,且与其他非可中断流水线不存在缓存冲突时,可中断流水线可以实时监听外部请求。可中断流水线监听到的外部请求可以是数据访问指令,也可以为数据存储指令或其他指令。
在本发明实施例中,同步多线程处理器还可以包括仲裁单元,仲裁单元可以与所有的流水线均耦接。当仲裁单元检测到任意两条流水线上的访问指令冲突时,可以对发生冲突的流水线上的访问指令进行排序并依次访问,以使得发生冲突的流水线上的访问指令按顺序访问。
参照图2,同步多线程处理器包括两条流水线:第一流水线201和第二流水线207。当仲裁单元208检测到第一流水线201上的访问指令1与第二流水线207上的访问指令2发生冲突时,则可以随机对访问指令1和访问指令2进行排序,以使得访问指令1与访问指令2先后依次执行,从而避免冲突。
在实际应用中,任意两条流水线上的访问指令发生冲突可以是指:两条流水线上的访问指令对应的访问地址相同,也可以是指被访问地址不能够被同时访问。可以理解的是,访问指令发生冲突还可以为其他的场景,此处不做赘述。
在具体实施中,可能会存在流水线接收到的待存储数据的位数大于流水线自身所支持的最大数据位数的情况。例如,CPU支持128位数据存储,但是流水线支持的最大数据位数为64位。此时,无法通过64位的流水线来对128位的数据进行存储。
为解决上述技术问题,在本发明实施例中,针对每一条流水线,可以设置一一对应的数据缓存区,数据缓存区的位数与流水线对应的最大数据位数相等。
当流水线接收到的待存储数据的位数大于自身的最大数据位数时,可以通过与流水线一一对应的数据缓存区来存储待存储数据的一部分。换而言之,当流水线接收到的待存储数据的位数大于自身的最大数据位数时,可以将待存储数据划分成N个部分。
在本发明实施例中,当存在N条流水线处于空闲状态时,待存储数据的N个部分可以一一分配至空闲状态的N条流水线,每一条流水线对应的数据缓存区中存储其中一个部分的数据。
例如,待存储数据为128位数据,流水线对应的最大数据位数为64位,流水线1与流水线2均处于空闲状态,因此,将待存储数据分为2个部分,并通过流水线1对应的数据缓存区存储128位数据中的前64位,通过流水线2对应的数据缓存区存储128位数据中的后64位。
在本发明实施例中,当处于空闲状态的流水线的个数小于N时,待存储数据的N个部分可以分配至空闲状态的M条流水线。此时,其中的至少一条流水线上分配有待存储数据的多个部分,且多个部分可以在不同时隙发送至该流水线。
例如,待存储数据为128位数据,流水线对应的最大数据位数为64位,仅有流水线1处于空闲状态。将待存储数据分为2个部分,在时隙1,将待存储数据的前64位发送至流水线1,由流水线1对应的数据缓存区存储;在时隙2,将待存储数据的后64位发送至流水线1,同样由流水线1对应的数据缓存区存储,且待存储数据的前64位与后64位对应的存储位置不同。
通过上述方法,可以将待存储数据发送至多条流水线对应的数据缓存区中,或者将待存储数据分多次发送至同一条流水线中。本发明实施例中提供的同步多线程处理器还可以包括数据移位器。数据移位器可以与一条或者多条流水线耦接,且与一条或多条流水线对应的存储缓存器耦接。
在本发明实施例中,数据移位器可以将不同流水线对应的数据缓存区中的数据进行移位,从而恢复待存储数据,并将恢复出的待存储数据存储至存储缓存器。
当待存储数据被发送至多条流水线时,可以通过数据移位器将不同流水线对应的数据缓存区中的数据进行移位,从而恢复出待存储数据,并将待存储数据存储至存储缓存器。当待存储数据分多次发送至同一条流水线时,可以通过数据移位器将同一条流水线不同时隙接收到的数据进行移位,从而恢复出待存储数据,并将待存储数据存储至存储缓存器。
参照图3,给出了本发明实施例中的一种同步多线程处理器工作原理示意图。
图3中,同步多线程处理器包括两条流水线,分别为流水线1以及流水线2。流水线1以及流水线2均支持64位数据的运算和处理,流水线1存在对应的数据缓存区,流水线2存在对应的数据缓存区。当待存储的数据为128位时,单独的任一条流水线均无法一次性实现128位数据的存储。
当通过流水线1进行128位的待存储数据的存储时,同步多线程处理器将128位的待存储数据换分为两个64位的数据,并将前64位数据发送至流水线1,由流水线1对应的数据缓存区存储;将后64位数据发送至流水线2,由流水线2对应的数据缓存区存储。
之后,通过数据移位器,将流水线1对应的数据缓存区中的前64位数据与流水线2对应的数据缓存区中的后64位数据进行合并,得到128位数据并存储至存储缓存器中。
在具体实施中,同步多线程处理器中的至少两条流水线中,存在至少一条流水线,该流水线包括可中断流水支线、非可中断流水支线以及数据合并器。
在本发明实施例中,可中断流水支线可以包括中断缓存区。当可中断流水支线接收到中断指令时,可以通过中断缓存区来存储接收到中断指令之前所运行的指令及所运行的指令对应的数据。
非可中断流水支线可以包括非可中断缓存区,非可中断缓存区可以存储非可中断流水支线运行时生成的中间数据。
数据合并器可以对可中断缓存区中的中间数据、非可中断缓存区中的中间数据以及流水线对应的存储缓存器中存储的数据进行合并,从而得到流水线对应的运行结果。
可以理解的是,在本发明实施例中,同步多线程处理器中的任一条流水线均可以由可中断流水支线、非可中断流水支线以及数据合并器组成,同步多线程处理器中也可以仅有部分流水线是由可中断流水支线、非可中断流水支线以及数据合并器组成。
在具体实施中,可中断流水支线可以顺序执行接收到的指令,从而保证执行顺序的正确性,以确保执行结构的准确性。
在具体实施中,在完成待存储数据的存储后,数据存储结果会返回至流水线。若流水线上当前存在其他正在运行的指令,则有可能会对当前正在运行的指令造成一定的影响。
为解决上述问题,在本发明实施例中,针对每一条流水线,还可以包括待定存储区,通过待定存储区存储对应流水线上前一条指令执行时对应的结果数据,使得流水线可以安全地向前执行其他待执行指令。
在具体实施中,在可中断流水线对应的分级缓存器组中,还可以包括定时清除单元。定时清除单元可以在定时时长达到预设时长时,清除相应可中断流水线上的非加载指令。
在实际应用中,定时时长可以根据具体的应用场景自行设定,本发明实施例对此不做赘述。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (13)
1.一种同步多线程处理器,其特征在于,包括:索引RAM、存储缓存器、数据高速缓存器、至少两条流水线以及数据移位器,其中:
所述至少两条流水线,分别与所述索引RAM、所述存储缓存器以及所述数据高速缓存器均连接,适于访问所述数据高速缓存器;其中:每一条流水线对应一个独立的线程,其中的至少一条流水线为可中断流水线,至少一条流水线为非可中断流水线,且所述可中断流水线适于在接收到数据存储指令时停止当前所执行的非数据存储指令,并执行所述数据存储指令;
每一条流水线存在一一对应的数据缓存区,且所述数据缓存区用于:当对应的流水线接收到的待存储数据的位数大于所述对应的流水线的最大数据位数时,存储所述待存储数据的一部分;
所述数据移位器,适于将不同流水线对应的数据缓存区中的数据进行移位,以恢复所述待存储数据,并将所述待存储数据存储至所述存储缓存器。
2.如权利要求1所述的同步多线程处理器,其特征在于,所述至少两条流水线中的至少一条流水线包括:可中断流水支线、非可中断流水支线以及数据合并器,其中:
所述可中断流水支线包括可中断缓存区,所述可中断缓存区用于在所述可中断流水支线接收到中断指令时,存储在接收到所述中断指令之前运行指令及对应的数据;
所述非可中断流水支线包括非可中断缓存区,所述非可中断缓存区用于存储所述非可中断流水支线运行时生成的中间数据;
所述数据合并器,适于对所述可中断缓存区中的中间数据、所述非可中断缓存区中的中间数据以及所述流水线对应的存储缓存器中存储的数据进行合并,以得到所述流水线对应的运行结果。
3.如权利要求2所述的同步多线程处理器,其特征在于,所述可中断流水支线顺序执行接收到的指令。
4.如权利要求1所述的同步多线程处理器,其特征在于,每一条流水线还包括:待定存储区,所述待定存储区用于存储对应流水线上前一条指令执行时对应的结果数据。
5.如权利要求1所述的同步多线程处理器,其特征在于,还包括:与每一条流水线一一对应设置的分级缓存器组,其中:第i条流水线对应的分级缓存器组中的每一个分级缓存器,适于缓存所述第i条流水线执行相应指令时所对应的中间数据,1<i≤N,N为流水线总数。
6.如权利要求5所述的同步多线程处理器,其特征在于,所述可中断流水线对应的分级缓存器组,还适于存储所述非可中断流水线执行相应指令时所对应的中间数据。
7.如权利要求6所述的同步多线程处理器,其特征在于,所述非可中断流水线在执行相应指令时对应的输出结果包括:所述非可中断流水线在执行相应指令时对应的中间数据,以及所述可中断流水线所存储的所述非可中断流水线执行相应指令时所对应的中间数据的合并结果。
8.如权利要求5所述的同步多线程处理器,其特征在于,所述可中断流水线对应的分级缓存器组包括:定时清除单元,适于在定时时长达到预设时长时,清除所述可中断流水线上的非加载指令。
9.如权利要求1所述的同步多线程处理器,其特征在于,所述可中断流水线,还适于在未执行操作指令且不存在缓存冲突时,监听外部请求。
10.如权利要求1所述的同步多线程处理器,其特征在于,还包括:仲裁单元,与所有流水线均耦接,适于当检测到任意两条流水线上的访问指令冲突时,对发生冲突的流水线上的访问指令进行排序,以使得所述发生冲突的流水线上的访问指令按顺序访问。
11.如权利要求1所述的同步多线程处理器,其特征在于,所述存储缓存器与每一条流水线一一对应。
12.如权利要求1所述的同步多线程处理器,其特征在于,所述索引RAM与每一条流水线一一对应。
13.如权利要求1~12任一项所述的同步多线程处理器,其特征在于,所有流水线均为支持同步多线程的流水线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810686511.1A CN110647358B (zh) | 2018-06-27 | 2018-06-27 | 同步多线程处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810686511.1A CN110647358B (zh) | 2018-06-27 | 2018-06-27 | 同步多线程处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110647358A CN110647358A (zh) | 2020-01-03 |
CN110647358B true CN110647358B (zh) | 2021-11-23 |
Family
ID=69009062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810686511.1A Active CN110647358B (zh) | 2018-06-27 | 2018-06-27 | 同步多线程处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110647358B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666339B (zh) * | 2020-05-26 | 2023-10-24 | 和芯星通科技(北京)有限公司 | 一种多线程数据同步方法 |
CN113672286A (zh) * | 2021-07-30 | 2021-11-19 | 科络克电子科技(上海)有限公司 | 一种流水线求值器、移动轨迹分析处理装置、方法及设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436631B2 (en) * | 2001-03-05 | 2016-09-06 | Pact Xpp Technologies Ag | Chip including memory element storing higher level memory data on a page by page basis |
US7657891B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
CN100451951C (zh) * | 2006-01-26 | 2009-01-14 | 深圳艾科创新微电子有限公司 | Risc cpu中的5+3级流水线设计方法 |
DE102008010943A1 (de) * | 2008-02-25 | 2009-09-03 | Fujitsu Siemens Computers Gmbh | Verfahren zur Behandlung von Unterbrechungsaufforderungen bei einem Prozessor |
US8181003B2 (en) * | 2008-05-29 | 2012-05-15 | Axis Semiconductor, Inc. | Instruction set design, control and communication in programmable microprocessor cores and the like |
CN101957744B (zh) * | 2010-10-13 | 2013-07-24 | 北京科技大学 | 一种用于微处理器的硬件多线程控制方法及其装置 |
CN104778138B (zh) * | 2015-04-20 | 2018-03-06 | 中国科学院光电技术研究所 | 一种内核多线程直接存储驱动实现方法 |
US10678544B2 (en) * | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
-
2018
- 2018-06-27 CN CN201810686511.1A patent/CN110647358B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110647358A (zh) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9411778B2 (en) | Multiprocessor system and synchronous engine device thereof | |
US9898409B2 (en) | Issue control for multithreaded processing | |
US9639466B2 (en) | Control mechanism for fine-tuned cache to backing-store synchronization | |
US20090113181A1 (en) | Method and Apparatus for Executing Instructions | |
US20130232322A1 (en) | Uniform load processing for parallel thread sub-sets | |
CN110959154B (zh) | 用于线程本地存储数据访问的私有高速缓存 | |
US20240004666A1 (en) | Floating-point supportive pipeline for emulated shared memory architectures | |
US9798543B2 (en) | Fast mapping table register file allocation algorithm for SIMT processors | |
EP2808783A1 (en) | Smart cache and smart terminal | |
KR101639853B1 (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 | |
US10866902B2 (en) | Memory aware reordered source | |
CN110908716B (zh) | 一种向量聚合装载指令的实现方法 | |
US10073782B2 (en) | Memory unit for data memory references of multi-threaded processor with interleaved inter-thread pipeline in emulated shared memory architectures | |
CN110647358B (zh) | 同步多线程处理器 | |
CN105027075A (zh) | 具有共享前端单元的处理核 | |
CN112130901A (zh) | 基于risc-v的协处理器、数据处理方法及存储介质 | |
CN112527729A (zh) | 一种紧耦合异构多核处理器架构及其处理方法 | |
US10152329B2 (en) | Pre-scheduled replays of divergent operations | |
CN102193828B (zh) | 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目 | |
US20220220644A1 (en) | Warp scheduling method and stream multiprocessor using the same | |
CN110647357B (zh) | 同步多线程处理器 | |
KR101639854B1 (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조 | |
JP5382113B2 (ja) | 記憶制御装置及びその制御方法 | |
Takada et al. | Real-time scalability of nested spin locks | |
JP2023509813A (ja) | Simt指令処理方法及び装置 |
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 |