CN101344843B - 一种指令级并行处理方法 - Google Patents

一种指令级并行处理方法 Download PDF

Info

Publication number
CN101344843B
CN101344843B CN2007101185895A CN200710118589A CN101344843B CN 101344843 B CN101344843 B CN 101344843B CN 2007101185895 A CN2007101185895 A CN 2007101185895A CN 200710118589 A CN200710118589 A CN 200710118589A CN 101344843 B CN101344843 B CN 101344843B
Authority
CN
China
Prior art keywords
instruction
bifurcated
thread
architectural
instruction sequence
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.)
Expired - Fee Related
Application number
CN2007101185895A
Other languages
English (en)
Other versions
CN101344843A (zh
Inventor
梅思行
宋继强
劳詠仪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Simplight Nanoelectronics Co ltd
Original Assignee
BEIJING SIMPLIGHT NANOELECTRONICS Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING SIMPLIGHT NANOELECTRONICS Co Ltd filed Critical BEIJING SIMPLIGHT NANOELECTRONICS Co Ltd
Priority to CN2007101185895A priority Critical patent/CN101344843B/zh
Publication of CN101344843A publication Critical patent/CN101344843A/zh
Application granted granted Critical
Publication of CN101344843B publication Critical patent/CN101344843B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

本发明披露了一种基于单个处理器核的指令处理方法及处理器。所述方法包括步骤:确定属于同一个应用程序的多个指令序列彼此不相关;在所述多个指令序列之前插入分叉指令,在其之后插入接合指令;由此,所述处理器核将以分叉指令和接合指令标注的多个指令序列并行执行。通过分叉和接合指令,软件可以在同一应用程序的多个功能块之间建立虚拟的多线程机制,从而提高应用程序的运行速度。

Description

一种指令级并行处理方法
技术领域
本发明涉及处理器,具体地说涉及处理器架构下的指令级并行处理。
背景技术
超标量是指处理器设有多条指令流水线,可以并行执行指令,确保处理器可以在同一时钟周期内执行多个指令。超标量能够立竿见影地改善处理器性能。当指令之间不存在相关时,它们在流水线中是可以重叠起来并行执行的。这种指令序列中存在的潜在并行性称为指令级并行(ILP)。提高超标量处理器资源利用率的关键问题是如何在程序中找到足够的指令级并行。
一种常规的超标量实现方法是采用编译器对指令进行重新排序。假定一个程序包括指令i0、i1、i2、i3、i4...,其中i1依赖于i0,i3依赖于i2。编译器重新排序时,可以将指令i2和i0编成一组,指令i3和i1编成另一组,先后发射。这样的处理器称之为顺序执行机。但是,编译器无法有效解决多个基本程序块之间的指令并行性。
另一种超标量实现方法是乱序执行。乱序执行的原理采用硬件窗来观察指令序列,通过在两条相关指令中插入不相关的指令,使整条流水线顺畅。一种乱序执行的做法包括取指或译码后的指令按序放入重排序缓冲器,乱序执行,并且按序提交;在提交前需要临时寄存器来存放结果。乱序执行需要复杂的硬件配置。另外,对于彼此之间存在指令并行性的基本程序块,需要将基本程序块解开,然后再乱序执行。然而,这样做的结果是增大了目标代码的长度,消耗了过多的资源和功率。
因此,迫切地需要有一种能够克服以上问题的新的指令并行处理方法。
发明内容
根据第一方面,本发明提供一种基于单个处理器核的指令处理方法,包括步骤:确定属于同一个应用程序的多个指令序列彼此不相关;在所述多个指令序列之前插入分叉指令,在其之后插入接合指令;由此,所述处理器核将以分叉指令和接合指令标注的多个指令序列并行执行。
根据第二方面,提供一种计算机程序产品,包括计算机可读介质,计算机可读介质存储包含彼此不相关的多个指令序列,分叉指令和接合指令的一个应用程序;其中,在所述多个指令序列之前插入分叉指令,在其之后插入接合指令;由此以分叉指令和接合指令标注的多个指令序列将由单个多线程处理器核并行执行。
根据第三方面,提供一种处理器,所述处理器包括多个架构性存储器,线程控制器,指令发射单元和执行引擎;所述多个架构性存储器分别为多个指令序列提供独立的指令和数据存放,所述多个指令序列来自同一应用程序并且由分叉指令和接合指令标注为彼此独立;当多个指令序列中的运行指令序列被译码出分叉指令的时候,线程控制器激活多个指令序列中的其它指令序列,指令发射单元并行读取所述多个指令序列的指令并且将其发射到执行引擎;执行引擎为多个指令序列共享,对来自指令发射单元的所述多个指令序列的指令加以执行;当译码出接合指令的时候,线程控制器关闭所述其它指令序列。
根据第四方面,提供一种指令集,包括分叉指令和接合指令,供编译产生适于在单个多线程处理器核上运行的应用程序,所述应用程序包含彼此不相关的多个指令序列;其中,在所述多个指令序列之前插入分叉指令,在其之后插入接合指令;由此以分叉指令和接合指令标注的多个指令序列将由单个多线程处理器核并行执行。
根据第五方面,提供一种基于多线程处理器的指令处理方法,所述方法包括:从多个指令序列中的一个运行指令序列译码出分叉指令,所述多个指令序列自同一应用程序并且由分叉指令和接合指令标注为彼此独立;激活多个指令序列中的其它指令序列,并且将所述其它指令序列和运行指令序列并行执行;当译码出接合指令时,关闭所述其它指令序列。
通过分叉和接合指令,软件可以在同一应用程序的多个功能块之间建立虚拟的多线程机制,从而提高应用程序的运行速度。
附图说明
下面将参照附图对本发明的优选实施方案进行更详细的说明,其中:
图1是根据本发明的执行分叉和接合指令过程的示意图;
图2是采用分叉和接合指令之后的多个功能块处理顺序示意图;
图3是采用主分叉和次分叉之后的多个功能块处理顺序示意图;
图4示意了采用分叉和接合指令的三个场景图;
图5是实施本发明的双线程处理器核的结构框图;以及
图6是本发明的一个应用实例的示意图。
具体实施方式
应用程序一般包括多个功能块f0,f1,f2,f3...,部分功能块之间不具有相关性。为了加速应用程序在处理器核上的处理,办法之一是将应用程序的指令级并行最大化。本发明提供了两个指令,分叉(FORK)和接合(JOINT)指令。通过这两个指令和多线程处理器,软件可以在同一应用程序的多个功能块之间建立虚拟的多线程机制,从而提高应用程序的运行速度。
图1是根据本发明的执行分叉和接合指令过程的示意图。
如图1所示,开始时一个线程的程序计数值(PC)被启用,该线程的指令被提取和执行。
当从该线程中提取出分叉指令,表明分叉指令之后存在一个独立于当前执行线程的基本程序块或功能块时,则从当前执行线程分出一个新的线程,而且启用专属于新线程的PC值。当前执行线程称为被分线程。分出线程的PC值由处理器的取指单元自动计算。它通过将被分线程的PC和分叉指令中的地址偏移相加得到。
在一个实施方案中,在处理器的取指单元中独立维持多个PC,以便当对应的线程被启用的时候能够交替取出指令。
当在被分线程中提取到接合指令,表明分出线程执行完毕的时候被分线程被禁用。接合指令后的指令将仅在被分线程和分出线程中的指令提取完成的时候才能被提取。
分叉指令和接合指令可以由编译器自动加入,也可以由程序员手工写入。
图2是采用分叉和接合指令之后的多个功能块处理顺序示意图。如图2所示,多个功能块f0,f1,f2和f3同属于一个应用程序,其中功能块f1和f2之间无相关性。
鉴于功能块f1和f2之间无相关性,可以并行执行。通过在功能块f0的指令之后插入一个分叉指令FORK,功能块f1与功能块f2分开,并行执行。
然后,通过在功能块f1和f2之后在功能块f3之前插入接合指令,应用程序重新恢复单线程执行。
为了进一步支持来自同一应用程序的多个线程,最大化地实现指令级并行ILP和执行单元利用,本发明允许在分叉线程基础上进行进一步的分叉。原分叉称为主分叉,再次分出的称为次分叉。采用主、次分叉,可以允许至少可达4个数据无关的指令序列同时以单独的线程并行执行。
图3是采用主分叉和次分叉之后的多个功能块的排序图。如图3所示,多个功能块f0,f1,f2和f3同属于一个应用程序。功能块f1和f2之间不相关。功能块f1包括彼此不相关的子功能块f1_a和f1_b,功能块f2包括彼此不相关的子功能块f2_a和f2_b。
鉴于功能块f1和f2之间不相关,通过在功能块f0的指令之后插入一个主分叉指令,功能块f1与功能块f2分开,并行执行。
然后,通过在功能块f1的指令之中,子功能块f1_a和f1_b之前插入一个次分叉指令,子功能块f1_a和f1_b并行执行。
接着,通过在功能块f1_a和f1_b之后插入从接合指令,功能块f1重新顺序执行。
类似地,通过在功能块f2的指令之中,子功能块f2_a和f2_b之前插入另一个次分叉指令,子功能块f2_a和f2_b并行执行。然后,在相应的时刻,通过在功能块f2_a和f2_b之后插入另一从接合指令,功能块f2重新顺序执行。
然后,通过在功能块f1和f2之后在功能块f3之前插入主接合指令,应用程序重新恢复单线程执行。
需要注意,根据本发明,对主分叉和次分叉进行了不同的处理。它们之间的差别是主分叉的被分线程和分出线程使用了不同的架构性存储器,包括不同的通用寄存器(GPR)组(即GPR0和GPR1)、控制寄存器CR(CR0和CR1)和执行单元内的内部寄存器。而来自次分叉的被分线程和分出线程使用相同GPR、CR和内部寄存器组的不同部分,取决于线程如何从主程序被分出。以GPR为例,如果功能块f1使用0-31个GPR,则子功能块f1_a使用第0-15个GPR,功能块f1_b使用第16-31个GPR。
由于主线程需要独立的GPR,次线程不需要独立的GPR,因此可以有效节约硬件资源。
在一个例子中,GPR0,CR0和第一组内部寄存器对编程人员来说是可见的;GPR1,CR1和第二组内部寄存器仅对硬件、编译器和调度程序(scheduler)来说是可见的。
图4示意了分叉和接合指令的三个场景图。场景1和2描述主分叉和次分叉之间的不同点。场景3展示了如何从主程序中分出多达四个线程。类似于场景1和2,从主分叉分出的线程使用不同的GPR(PC0使用GPR0,PC1使用GPR1),而自次分叉分出的线程使用相同的GPR(PC0和PC2使用GPR0,PC1和PC3使用GPR1)。
如前文提到,在多线程操作中采用GPR0和GPR1可以提供较大的灵活性和充分的存储空间。在一个实施方案中,当处于单一线程模式或者在双重次线程模式(也就是场景1和2)中时,写到GPR0的结果总是被写到GPR1的相同索引(index)。它允许分出线程中的指令在分叉指令被接收之后立刻执行,无需在执行之前将运算元从GPR0拷贝到GPR1。调度程序将会告诉执行单元从哪里取得运算元和执行结果该写到哪里。在分出线程的指令完成之后,利用专用私有指令恢复返回值指令(RRET)将执行结果从GPR1复制回GPR0。在一个例子中,这一个指令仅对硬件、SL2编译器和调度程序是看得见的。它将会在归还控制给主程序线程之前由编译器插入在接合指令之后。因此,整个多线程机制对应用程序编程人员是透明的。
根据本发明,为了最大化ILP,在两个层次上支持虚拟多线程。粗略层面上允许两个独立功能块同时在两个线程中执行。精细层面由调度程序将两个数据无关的指令放在单独的两个线程中自动进行。这两个层面的双线程支持可以有四个线程同时被执行。
图5是实施本发明的双线程处理器核的结构框图。该处理器核经配置可以同时处理来自同一应用程序的两个线程,即线程0和线程1。线程0和线程1的指令分别独立存储在指令高速缓冲存储器(简称指令高速缓存)的不同区域。换句话说,不同线程的指令高速缓存或其区域应当在物理或逻辑上是分离的。
如图5所示,处理器核包括取指单元510、指令发射单元530和共享的执行引擎550。取指单元510从指令高速缓存502分别取出线程0和1的指令。指令发射单元530从中选择可执行的指令,送往执行引擎550执行。
指令高速缓存502可以集成于处理器核内,也可以位于处理器核外。
下文进一步说明处理器核的具体结构。
取指单元510包括两个程序计数器(PC)PC0和PC1、取指逻辑单元512、指令缓冲单元514、和PC控制器516。
PC0和PC1产生分别指明线程0和线程1的下一组指令地址的程序计数(PC)值。PC0和PC1可以是能够产生程序计数值的常规设计的计数器,也可以包括增量计数器、分支检测逻辑和其它并非本发明关键的特征。在一个例子中,PC0和PC1分别由start_pc0和start_pc1信号提供初始PC值。
取指逻辑单元512对PC0和PC1产生的PC值进行处理,并且将处理后的PC值送往指令高速缓存。所述处理可以是交替选择PC值,也可以是将PC值并行送往指令高速缓存。
在一个优选实施方案中,取指逻辑单元512是一个多路选择器,用于在每个时钟周期交替从PC0和PC1产生的两个PC值中选择一个PC值,并且将之送往指令高速缓存。
指令高速缓存502根据接收到的PC值,取出相应的指令,并且将之送给指令缓冲单元514。优选地,当指令高速缓存未命中时,可以从外部SDRAM存储器提取指令。另外,处理器核可以为每个线程配备进出指令高速缓存的专用线路,以避免这2个线程发生冲突。
指令缓冲单元514接收和存放来自指令高速缓存的线程0和线程1的指令,维持每个线程的程序次序并且为指令发射单元530提供每个线程的指令。在一个优选实施方案中,指令缓冲单元514为每个线程提供数个(比如4)指令缓冲区。如此,即便在由于分支预测或指令高速缓存未命中而导致指令提取停顿的时候,指令缓冲区也保持足够的指令供执行用。
如果指令缓冲单元514发现某个线程的指令缓冲区满,则发该线程缓冲区满信号buf_full给PC控制器516,后者将指示该线程对应的程序计数器,PC0或PC1,使之暂停计数。
指令发射单元530从指令缓冲单元514接收线程0和线程1的指令,并且对线程0和线程1的指令进行冲突检查;然后将通过冲突检查的指令发射给执行引擎550。指令发射单元530可以选择任一线程的指令,而不管上一次选择的指令来自哪一个线程。
执行引擎550包括存取单元(LS)552,算术逻辑/存取(ALU/LS)单元554,算术逻辑(ALU)556,乘法累加单元(MAC)558和固定功能单元560。固定功能单元560包含专用运算硬件,执行比如快速傅立叶变换(FFT)。
执行引擎550可以包括任意数量的执行单元,每个执行单元可以采用一般意义上的常规设计。
对于不同的待执行指令,处理器核可以选择不同的指令执行单元接收该指令并且加以执行。根据指令选择指令执行单元属于常规技术,不是本发明的关键所在。
在一个优选实施方案中,双线程处理器核是一个多发射超标量机。比如,指令发射单元可以将例如4个指令同时送往不同的执行单元。多发射特征可以令处理器核利用现有的指令级并行(ILP)来实现性能目标,而不需要过高的时钟频率。在一个例子中,每个时钟周期发射的指令可以按任意需要的组合从候选线程的指令中选取,比如可以限定为每个时钟周期每线程一个指令,也可以允许从同一线程发射多个指令。
在一个优选实施方案中,算术逻辑/存取(ALU/LS)单元254通过连接线向PC控制器216提供信号,指示PC控制器216条件分支此前被错误预测并且需要恢复正确的PC值。需要说明,算术逻辑/存取(ALU/LS)单元254也可以由具有算术逻辑功能的其它指令执行单元代替。
处理器核也包括两个通用寄存器组GPR0和GPR1,分别存放两个线程的操作数,便于执行单元读取。另外,也可以供执行单元回写两个线程的执行结果。GPR0例如是由32个32比特寄存器构成的寄存器组,用于线程0。GPR1例如是由32个16比特的寄存器构成的寄存器组,为线程1所用。处理器核还可以包括两个控制寄存器(CR),或者其它的架构性存储器。
处理器核还包括线程控制器540,它根据某个线程的运行线程(active_thread)信号控制与该线程相关PC值的产生与指令的提取。在进一步优选的实施方案中,如果当前运行的线程(比如线程0)判断有新的独立线程(比如线程1)需要执行的时候,则产生运行线程信号。这样,线程控制器540通知前述的取指逻辑单元512与指令缓冲单元514,允许取指逻辑单元512选择与该线程有关的PC值,将之送往指令高速缓存502,并且允许指令缓冲单元514接收该线程的指令。
由上文可见,本发明采用独立的架构性存储器为2个线程提供各自指令和数据的存放,同时流水线被统一而且为2个线程共享,从而取得较好的负载平衡和硬件利用。
当处理器核译码到分叉指令的时候,一个新的运行线程信号(active-thread)作用在线程控制器540上。基于该信号,线程控制器540激活一个新的线程,即分出线程。分出线程的起始PC位置由分叉指令提供。该起始PC位置一般是相对被分线程的当前位置而言的相对位置。此后,分出线程开始运行,通过该分出线程的PC使取指单元510开始取分出线程的指令。当译码到接合指令的时候,与分出线程有关的“运行线程”信号将被清零,并且清零后的该信号作用在线程控制器540上。然后,分出线程被关闭,而不再取指令。结果,处理器核返回单线程模式。
需要说明,以上的双线程处理器仅属举例。本发明同样可以运行在采用基于单个可编程引擎进行多线程处理的多线程处理器中。
本发明可以处理同一程序不同层次的指令并行度。比如,可以并行处理不同的功能块,或者同一功能块内的不同部分。本发明可以在程序运行的过程中动态地去分叉和接合,有效提高了处理器资源的利用。
本发明有广泛的应用。以视频编解码算法为例。在该算法中,图像帧被分割为一行行称为宏块(MB)的子块。宏块按照光栅扫描次序逐一处理。在一个实施例中,利用宏块处理次序来增加指令级并行性,办法是将前一宏块在一个功能块中处理,将下一宏块在另一功能块中处理。
图6示意了两个宏块中不同的功能如何在P帧编码中同时执行。从图6中可见,在时刻T,在前一宏块中完成了运动补偿(MC),变换(T),量化(Q),逆变换(T-1)和逆量化(Q-1),而在当前宏块中计算了计算量大的整数运动估计IME。类似的,在稍后的时刻T’,前一宏块执行解块滤波,当前宏块选择了IME模式。同样,在时刻T”,当前宏块正在执行子像素运动估计(subpelME),而前一宏块采用熵编码。
显而易见,在此描述的本发明可以有许多变化,这种变化不能认为偏离本发明的精神和范围。因此,所有对本领域技术人员显而易见的改变,都包括在本权利要求书的涵盖范围之内。

Claims (8)

1.一种基于单个处理器核的指令处理方法,包括步骤:确定属于同一个应用程序的多个指令序列彼此不相关;在所述多个指令序列中的每个指令序列之前插入分叉指令,在其之后插入接合指令;由此,所述处理器核将以分叉指令和接合指令标注的多个指令序列并行执行;
所述分叉包括主分叉和次分叉,所述次分叉为在所述主分叉基础上再次分出的分叉。
2.如权利要求1所述的指令处理方法,其特征在于所述分叉是主分叉,被分指令序列与分出指令序列各自采用不同的架构性存储器。
3.如权利要求1所述的指令处理方法,其特征在于所述分叉是次分叉,被分指令序列与分出指令序列共享架构性存储器。
4.如权利要求1所述的指令处理方法,其特征在于所述指令序列是功能块。
5.如权利要求1所述的指令处理方法,其特征在于包括步骤:当处于单一线程模式或者在次分叉模式中时,写到归属于该单一线程或者次分叉的架构性存储器中的结果也被写到其它架构性存储器中;当确定有主分叉时,当遇到分叉指令后立刻执行分出线程的指令,无需在执行该指令之前再将数据从主分叉所在的构架性存储器拷贝到新分出线程的构架性存储器中;在主分叉的分出线程的指令完成之后,将执行结果从所述新分出线程的架构性存储器复制回所述主分叉所在的架构性存储器中。
6.一种处理器,所述处理器包括多个架构性存储器,线程控制器,指令发射单元和执行单元;所述多个架构性存储器分别为多个指令序列提供独立的指令和数据存放,所述多个指令序列来自同一应用程序并且由分叉指令和接合指令标注为彼此独立;当多个指令序列中的运行线程被译码出分叉指令的时候,线程控制器激活多个指令序列中的分出线程指令序列,指令发射单元并行读取所述多个指令序列的指令并且将其发射到执行单元;执行单元为多个指令序列共享,对来自指令发射单元的所述多个指令序列的指令加以执行;当译码出接合指令的时候,线程控制器关闭所述分出线程指令序列;
所述分叉包括主分叉和次分叉,所述次分叉为在所述主分叉基础上 再次分出的分叉。
7.如权利要求6所述的处理器,其特征在于所述分叉是主分叉,被分指令序列与分出指令序列各自采用所述多个架构性存储器中的不同架构性存储器。
8.如权利要求6所述的处理器,其特征在于所述分叉是次分叉,被分指令序列与分出指令序列共享所述多个架构性存储器中的一个架构性存储器。 
CN2007101185895A 2007-07-10 2007-07-10 一种指令级并行处理方法 Expired - Fee Related CN101344843B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101185895A CN101344843B (zh) 2007-07-10 2007-07-10 一种指令级并行处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101185895A CN101344843B (zh) 2007-07-10 2007-07-10 一种指令级并行处理方法

Publications (2)

Publication Number Publication Date
CN101344843A CN101344843A (zh) 2009-01-14
CN101344843B true CN101344843B (zh) 2012-11-21

Family

ID=40246854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101185895A Expired - Fee Related CN101344843B (zh) 2007-07-10 2007-07-10 一种指令级并行处理方法

Country Status (1)

Country Link
CN (1) CN101344843B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101986265B (zh) * 2010-10-29 2013-09-25 浙江大学 一种基于Atom处理器的指令并行分发方法
US9747108B2 (en) * 2015-03-27 2017-08-29 Intel Corporation User-level fork and join processors, methods, systems, and instructions
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US9940136B2 (en) 2015-06-26 2018-04-10 Microsoft Technology Licensing, Llc Reuse of decoded instructions
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10095519B2 (en) 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
CN110795903B (zh) * 2019-09-12 2023-08-15 中科寒武纪科技股份有限公司 指令处理方法、装置及相关产品
CN115934337A (zh) * 2022-12-19 2023-04-07 格睿通智能科技(深圳)有限公司 一种易于应用扩展的mcu处理器内核方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李庆华,阮幼林,刘干,蒋盛益,杨世达.一个调度Fork-Join任务图的最优算法.软件学报16 5.2005,16(5),684-690.
李庆华,阮幼林,刘干,蒋盛益,杨世达.一个调度Fork-Join任务图的最优算法.软件学报16 5.2005,16(5),684-690. *

Also Published As

Publication number Publication date
CN101344843A (zh) 2009-01-14

Similar Documents

Publication Publication Date Title
CN101344843B (zh) 一种指令级并行处理方法
CN110249302B (zh) 在处理器核上同时执行多个程序
EP2783280B1 (en) An accelerated code optimizer for a multiengine microprocessor
EP2783281B1 (en) A microprocessor accelerated code optimizer
US7269712B2 (en) Thread selection for fetching instructions for pipeline multi-threaded processor
US5627983A (en) Processor architecture providing out-of-order execution
US9286075B2 (en) Optimal deallocation of instructions from a unified pick queue
EP2783282B1 (en) A microprocessor accelerated code optimizer and dependency reordering method
CN104583957B (zh) 具有无消歧乱序加载存储队列的重新排序的推测性指令序列
US10078518B2 (en) Intelligent context management
CN104823168B (zh) 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和系统
US7475225B2 (en) Method and apparatus for microarchitecture partitioning of execution clusters
CN104424158A (zh) 基于通用单元的高性能处理器系统和方法
TW201303736A (zh) 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段
EP3491514A1 (en) Transactional register file for a block-based processor
KR20080043378A (ko) 복수의 병렬 클러스터들을 포함하는 계층 프로세서의스케쥴링 메카니즘
GB2520731A (en) Soft-partitioning of a register file cache
US10102003B2 (en) Intelligent context management
US7562206B2 (en) Multilevel scheme for dynamically and statically predicting instruction resource utilization to generate execution cluster partitions
CN114787772A (zh) 用于微处理器中累加寄存器结果的指令处理
US10860327B2 (en) Methods for scheduling that determine whether to remove a dependent micro-instruction from a reservation station queue based on determining a cache hit/miss status of a load micro-instruction once a count reaches a predetermined value and an apparatus using the same
Chappell et al. Microarchitectural support for precomputation microthreads
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
Fung Gpu computing architecture for irregular parallelism
JPH10187464A (ja) マルチスカラ・プログラムを作成する方法およびシステム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SUZHOU SIMPLNANO ELECTRONICS CO., LTD.

Free format text: FORMER OWNER: BEIJING SIMPLIGHT NANOELECTRONICS CO., LTD.

Effective date: 20140430

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100088 HAIDIAN, BEIJING TO: 215021 SUZHOU, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20140430

Address after: 215021 international science and Technology Park, 1355 Jinji Lake Avenue, Suzhou Industrial Park, Suzhou, Jiangsu, A0305

Patentee after: SUZHOU SIMPLIGHT NANOELECTRONICS CO.,LTD.

Address before: 100088 Beijing City, Haidian District Zhichun Road Jinqiu International Building No. 6 room 1001 building B

Patentee before: BEIJING SIMPLIGHT NANOELECTRONICS Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121121