CN1122918C - 在多个并行的前端管道之间保持数据的同步的系统和方法 - Google Patents
在多个并行的前端管道之间保持数据的同步的系统和方法 Download PDFInfo
- Publication number
- CN1122918C CN1122918C CN98812943A CN98812943A CN1122918C CN 1122918 C CN1122918 C CN 1122918C CN 98812943 A CN98812943 A CN 98812943A CN 98812943 A CN98812943 A CN 98812943A CN 1122918 C CN1122918 C CN 1122918C
- Authority
- CN
- China
- Prior art keywords
- end pipelines
- information
- pipelines
- circuit
- congestion condition
- 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
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Abstract
本文叙述了一种对通过多个并行操作的前端管道(410)传播的信息保持同步的系统和方法。概括来说,这些多个管道因某个阻塞条件(460)而变得不同步,通过清理两个前端管道以及通过在不同时段有选择地将这些前端管道(410)从它们的阻塞条件中释放(470),重新建立同步。
Description
本发明涉及电子学领域。更具体来说,本发明涉及一种对通过多个并行管道传播的信息保持同步的系统和方法。
早期的微处理器包含被安排成能顺着指令管道顺序地处理指令的电路。为了提高效率,更新的微处理器(称为“管道式微处理器”)已经被设计成同时对几个指令操作。这是通过重叠在指令管道的各“前端”阶段(即最初几个处理阶段)所执行的诸操作以及在指令管道的各“后端”阶段(即最后几个处理阶段)所执行的诸操作而实现的。此外,还可以将所选择的处理阶段划分成若干子阶段,以进一步提高性能,正如在管道程度很深的微处理器(如位于美国加州Santa Clara的英特尔公司生产的Pentium Pro或Pentium II处理器)中的那样。
直到现在,对多前端管道的需求还没有表现出来。目前,微处理器中缺少多前端管道的原因可能是复杂性或者与体系结构的不适应性。如果两个或更多并行的前端管道在运行(即执行它们自己的任务但是针对的是相同的指令指针“IP”),这些前端管道的每个对应阶段都必须在有效性和信息内容上匹配。所以,要求前端管道保持相互之间的同步关系。
如果要实行多前端管道,则支持前端管道的逻辑结构的大小有可能会使它们不能被安置在互相非常邻近的位置。这会导致从一个前端管道向另一个传输事件时的延迟。“事件”的例子可包括(1)阻塞条件,它中止信息(例如一个或多个指令指针“IP”)在这些前端管道中的传播,直到该阻塞条件被撤销;或者(2)清理条件,它通常导致在某前端管道的各前端阶段中留下的所有信息被无效掉。由于事件是先由一个前端管道检测到、再由另一个检测到的,在一个前端管道中的信息会变得与该另一个前端管道的相应信息不一致。这样,这些前端管道就会变得不同步。
所以,最好能提供一种保持多个前端管道的各前端阶段的同步、并在某个可能导致前端管道暂时变得彼此之间不同步的事件发生之后提供同步方案的系统和方法。
本发明提供了一种方法,包含的各步骤是:
沿包括一个第一前端管道和一个第二前端管道的多个前端管道推进信息,多个前端管道是并行和互相同步的;
多个前端管道的每个基于一个阻塞信号经历一个阻塞条件,该阻塞信号导致多个前端管道变得互相不同步;以及
进行以下多种操作,使第一前端管道与第二前端管道同步:
使多个前端管道每个的至少一个选定处理阶段中的信息无效;
将相应于无效信息的信息重新加载到多个前端管道的每一个中,和
在撤销阻塞条件时推进多个前端管道的第一前端管道,与此同时,多个前端管道的第二前端管道保持闲置达预定的时间周期数,直到第一前端管道变得与第二前端管道同步。
本发明还提供了一种电子系统,包含:
总线;
与总线相连的微处理器,微处理器包含:
控制信息沿第一前端管道的推进的第一电路,第一电路包括用于保留至少两个指向第一前端管道的一个处理阶段的指令指针的一个存储部件和一个历史队列,该历史队列包含一个多路转换器,该多路转换器包括(1)接收该至少两个指令指针的第一指令指针的第一输入端,(2)与含有该至少两个指令指针的至少第二指令指针的存储单元相连的第二输入端,多路转换器的输出受阻塞条件的激活和去激活的控制;以及
第二电路包括一个缓冲器,第二电路控制信息沿第二前端管道的推进,并与第一电路共同操作以维持第一前端管道和第二前端管道之间的同步关系。
本发明还提供了一种微处理器,包含:
用于控制信息沿第一前端管道的推进的第一电路;
第一电路包括含有一个多路转换器的一个历史队列,用于保留至少两个指向第一前端管道的一个处理阶段的指令指针,该多路转换器包括(1)接收该至少两个指令指针的第一指令指针的第一输入端和(2)与含有该至少两个指令指针的至少第二指令指针的存储单元相耦合的第二输入端,多路转换器的输出受阻塞条件的激活和去激活的控制;和
与第一电路相耦合的第二电路,第二电路用来控制信息沿第二前端管道的推进并与第一电路协作运行,以保持第一前端管道与第二前端管道之间的同步关系,第二电路包括一个缓冲器,用于暂存第二前端管道在前一个时钟周期中输出的信息。
在一个实施例中,描述了一种对通过多个并行操作的前端管道传播的信息保持同步的方法。概括来说,这些前端管道因某个事件而变得彼此之间不同步。之后,执行若干操作,使这些前端管道彼此之间同步。
通过以下对本发明实施例的详细说明,本发明的特点和优点将变得显而易见,其中:
图1是以适合处理多个并行前端管道的微处理器实现的电子系统的框图。
图2是图1的微处理器中的多指令管道的前端部分的框图。
图3是在图1的微处理器内部实现的、用于重新同步图2的多个并行前端管道的逻辑电路的框图。
图4是为保持多个并行前端管道之间的信息的同步而执行的操作步骤的示意性流程图。
图5是响应第一前端管道中起源的TLB_MISS阻塞条件的图4的同步方案的示意性实施例。
图6是响应第二前端管道中起源的MIQ_FULL阻塞条件的图4的同步方案的示意性实施例。
图7是响应第一前端管道中起源的ICACHE_MISS阻塞条件的图4的同步方案的示意性实施例。
图8是响应转移目标缓冲器(BTB)预测与ICACHE_MISS阻塞条件的组合的图4的同步方案的示意性实施例。
本说明书描述一种对通过多个并行操作的指令管道的各前端阶段传播的信息进行同步的系统和方法。概括来说,这些多个管道因某个阻塞条件而变得不同步,通过清理(flushing)两个前端管道以及通过在不同时段有选择地将这些前端管道从它们的阻塞条件中释放,重新建立同步。
本文中经常用若干术语来描述某些硬件和特征。例如,“微处理器”是具有信息处理功能的单一集成电路(IC)的部件或多IC的部件。“电子系统”在广义上被定义为特征是有微处理器的任何产品,诸如任何类型的计算机(例如桌面机、膝上型、手体式、服务器等等)、无线电话和任何其它外设。“信号线路”在广义上被定义为任何信息载体,诸如一路或多路电线、总线(bus traces)、光纤以及无线通信频道。“信息”包括数据、有效性和/或地址(例如指令指针“IP”)和/或控制(例如操作码)。IP“较年轻”和“较老”,分别用来表示某IP是在另一个IP之前还是之后插入同一个前端管道中的。
参看图1,该图显示了具有本发明特点的电子系统100的示意性实施例。电子系统100包括至少一个与信号线150(诸如适合芯片集的处理机总线)相连的微处理器110。微处理器110包含的第一电路120和第二电路130,前者用于控制通过图2的第一(增强模式“EM”)前端管道(称为“第一前端管道”)200的前端阶段的信息的传播,后者用于控制通过图2的第二(英特尔值引擎“IVE”)前端管道(称为“第二前端管道”)250的各前端阶段的信息的传播。第一和第二电路120和130通过如图3中所述的接口140连接在一起。如图中虚线所示,在电子系统100中可以考虑实现“n”个微处理器(n是正整数)。
如图1中所示,第一电路120包括至少一个或多个信息存储单元121(例如指令高速缓存“I-cache”和/或翻译后备缓冲器“TLB”)和一个历史队列122。历史队列122用于向第一前端管道200某选定处理阶段(诸如下面在图2中所说明的“IPG”阶段)的IP插入。尽管图中未予表示,历史队列122的一个实施例包含一个多路转换器和一个存储单元。多路转换器包含至少两个输入—其中一个输入被配置成接收未排队的IP,另一个输入与该存储单元相连。多路转换器的选择,由第一电路120根据阻塞条件的激活或去激活来控制。存储单元可以包含一个缓冲器,缓冲器中含有选定个数的比基准IP更年轻的IP。这便于历史队列122保存一个前端管道阶段中的至少两个周期的信息。
第二电路130包括按指令提取单元(IFU)操作的电路、转移目标缓冲器(BTB)和溢出缓冲器131。IIP阶段连续地生成一连串排列好的(aligned)、向前穿过第二前端管道250的IP。BTB单元除了转移预测这个主要职责外,还处理同步。溢出缓冲器131临时存储最后一个时钟周期中“FE3”阶段的信息输出,如图2中所示。溢出缓冲器131提供了一种检索过早“溢出”(即传播出)图2的第二前端管道250的信息的手段。
这些电路120和130与图2的前端管道200和250相对应,它们相隔的一段物理距离,会导致涉及一个前端管道的某个事件(例如阻塞、清理等等)一直要到下一个时钟周期才能被另一个前端管道检测到。这导致这些前端管道变得异步,并且一如下文所述—要求有电路和相应方法来重新同步这些前端管道。
现在参看图2,该图显示了第一前端管道200和第二前端管道250二者中的各阶段。在一个实施例中,第一前端管道200的处理阶段包括输入指令指针(IIP)阶段210、指令指针生成(IPG)阶段220、提取(FET)阶段230和滚动(ROT)阶段240。在IIP阶段210期间,指令指针(IP)被生成并插入第一前端管道200,供以后用于从存储单元(诸如I-cache、TLB和/或任何其它类型的存储器)获取信息。
在IPG阶段220期间,图1的微处理器110可以在向FET阶段230传送期间置换比IIP阶段210中的当前IP更老的IP。这种替换通常要从历史队列122提供,以避免发生盖写条件—如图5中所示,当第一前端管道200即使在被阻塞之后也能接受新数据时,就会发生盖写条件。这就便于在发生阻塞条件期间落后第二前端管道250一个时钟周期的第一前端管道200变得更加容易与第二前端管道250重新同步。
在FET阶段230期间,用一个IP来从信息存储单元121提取信息(例如操作码)并且并行地进行TLB查找。如果信息不能及时被访问或(由TLB)翻译,就将在下一个周期断言(assert)一个阻塞条件。如果信息能及时被访问或翻译,就可以在ROT阶段期间处置该结果信息,以便计算出电子系统100的硬件与电子系统100所处理的该结果信息之间大小的差别(以字节计)。此外,在检测到有动态更新与飞行中的(inflight)IP相关联的代码空间的企图时,会发生一个自修改代码(SMC)事件。然而SMC事件与其它事件不同,它不导致发生阻塞条件;相反,SMC事件是由第二前端管道250的相关电路专门处理的。
第二前端管道250包括若干前端管道阶段,它们与第一前端管道200所关联的那些阶段相对应。这些阶段包括IIP阶段260、第一前端阶段(FE1)270、第二前端阶段(FE2)280和第三前端阶段(FE3)290。类似地,在IIP阶段260期间,一个与进入第一前端管道200的IP相同的IP进入第二前端管道250。其余的阶段(FE1、FE2和FE3阶段)被用来跟踪有效位和分级(stage)IP信息。溢出缓冲器131被用来接收FE3阶段290的信息输出并将该信息存储至少一个时钟周期。
当微处理器110处于IVE方式时,第二管道250每个阶段的有效的状态代表第一管道200中对应阶段的状态。例如,在IVE方式中,如果FE3阶段被无效掉,则第一管道200的ROT阶段的关联信息将不被使用。另一方面,当微处理器110处于EM方式时,不使用第二管道250的内容,而是使用第一管道200所提供的内容。本文中的讨论重点将放在微处理器100在IVE方式中的操作上,在这种方式中,两个管道的同步至关重要。
参看图3,该图显示了接口140的示意性实施例,该接口是在电路120与130之间实现的,目的是保持图2的前端管道200和250的同步。接口140在信号线300、3101~3102和3201~3204上传输IP和代表事件(例如清理和阻塞)的发生的各种信号。更具体来说,第一信号线300提供一个线性IP,它代表从高速缓冲存储器提取信息(例如代码数据)或执行TLB查找的请求的地址。伴随该IP可以是一个表示该IP有效的请求信号和/或一个清理信号。
本文中,“清理信号”一般指的是一种控制信号,它表示发生了一个清理条件,导致第二前端管道250中信息的无效。所以,为了保持同步,第一前端管道200中相应的信息需要被无效。如本实施例中所示,要用两个清理信号与其它信号(未予示出)的结合,才能使两个前端管道200和250上的信息无效。这些清理信号包括通过第二信号线3101传送的“BAC_TYPE”清理信号和通过第三信号线3102传送的“BTB_TYPE”清理信号。
根据图2和3,BAC_TYPE清理信号的启动导致多个事件发生:(1)在BAC_TYPE清理信号启动的同一个时钟周期上的FE1、FE2和FE3阶段270、280和290任一个中的信息的被无效;(2)FET阶段230和ROT阶段240中的信息的被无效,当前驻留在IIP阶段210中的IP前进到IPG阶段220,下一个时钟周期上特定阻塞条件(例如指令高速缓存缺失或TLB缺失)的撤销。然而,BTB_TYPE清理信号的启动,导致(1)同一个时钟周期上位于FE1和FE2阶段270和280(用于预测)的信息或位于FE1、FE2和FE3阶段270、280和290(用于同步)的信息的被无效;(2)位于FET阶段230的信息的被无效和在下一个时钟周期驻留在IIP阶段210中的IP前进到IPG阶段220。总之,哪一个清理条件都将第一前端管道200认可的阻塞条件废弃一个时钟(现在可以将各IP加载到IPG阶段)。清理条件也将第二前端管道250认可的阻塞条件废弃两个时钟周期(可以将新的IP加载到FE2阶段)。
如图2~3中进一步所示,接口140支持通过若干阻塞信号—即TLB_OP阻塞信号、TLB_MISS阻塞信号、ICACHE_MISS阻塞信号和MIQ_FULL阻塞信号,通知在前端管道200与250之间发生了阻塞条件。与FET阶段230相关联的“TLB_OP”阻塞信号,指示微处理器中的TLB已经在使用,不能及时服务FET阶段230中的飞行中的IP。其它三个阻塞条件与ROT阶段240中的飞行中的IP相关联。例如,“TLB_MISS”阻塞信号指示,某特定IP在TLB中没有翻译。当对应于特定IP的信息在指令高速缓存中不能获得时,“ICACHE_MISS”阻塞信号是活动的。“MIQ_FULL”阻塞信号指示,IAU(前端管道中FE3阶段后的下一个块)中的微指令队列已满,不能接受在FE3阶段290中返回的指令高速缓存信息。
如图4所示,现在说明在某个导致多个并行前端管道变得不同步的事件之后重新同步这些前端管道的过程。首先,将多个前端管道置于互相同步的状态(步骤410)。然后,某个事件要么由控制第一前端管道的电路要么由控制第二前端管道的电路启动(步骤420)。如果发生了一个事件,前端管道就变得互相不同步。例如,由控制第一前端管道的电路起源的阻塞条件导致第二前端管道领先第一前端管道至少一个周期。这种异步情况的发生,原因是控制前端管道的电路之间的信号延迟。
下一步,控制第二前端管道的电路(例如BTB)获得一个从第二前端管道的FE3阶段传出的、要存储到溢出缓冲器中的IP(步骤430)。然后,第一和第二管道被清理并被装入用于重新同步目的的IP(步骤440)。如果在两个前端管道都经历了清理条件后该事件仍然是活动的,则阻塞条件依然作用于前端管道200和250,以防止各IP在第一前端管道的IPG阶段以外和第二前端管道的FE2阶段以外的传播(步骤450-470)。
当阻塞条件被撤销时(步骤470),第一前端管道在第二前端管道变得活动之前继续信息的传播,传播的周期数是预定的“t”(例如t>=1)(步骤480和490)。这使第一前端管道能再次变得与第二前端管道同步。为了解释的需要,在以下各附图中叙述了这个过程的各个操作的例子。
现在参看图5,该图显示的示意性表中给出了通过第一和第二前端管道200和250的各前端处理阶段的信息流。本文中所说的信息包括由字母“A”、“B”、“C”、“D”和“E”代表的各IP。这些IP是顺序排列的IP,其中每个IP是前一个IP递增预定数量的字节(例如32个字节)后的结果。例如IP“B”是根据IP“A”得出的。
在第一周期(周期1)中,由第一电路启动一个TLB_MISS信号一此时第一(EM)前端管道与第二(IVE)前端管道是同步的。在第二周期(周期2),由于第一前端管道在周期1被阻塞,而第二前端管道直到周期2才检测到TLB_MISS信号,第一和第二前端管道就变得互相不同步。结果,第二前端管道的内容现在不同于第一前端管道的内容。所以,第一与第二前端管道之间的异步是由前端管道之间的信号延迟引起的。特别是,对于第二管道来说,IP“B”被迫被无效(由虚线表示),而IP“A”已经从第二前端管道输出到溢出缓冲器中。对于第一前端管道来说,IP“B”被阻塞在FET阶段中而IP“A”则被装入辅助管道(TLB_MISS管道)中。IP“A”在辅助管道中保持活动状态,一直到TLB_MISS阻塞信号被撤销。
在第三周期(周期3)中,第二电路发出BTB_TYPE清理,它将第二管道的FE1、FE2和FE3各阶段上的数据无效(表中以“X”表示)并将IP“A”装入第一和第二前端管道的IIP阶段。在周期4,第一电路检测到该BTB_TYPE清理信号,同时,IP“B”被装入第一和第二前端管道的IIP阶段。结果,当前在FET阶段中驻留的IP被无效,而在ROT阶段驻留的IP则没有意义—因为在IVE方式中,为了进一步无效ROT阶段,FE3阶段已经是无效的。
在下一个周期(周期5)中,TLB_MISS阻塞信号仍然是活动的。将新的IP“C”装入两个前端管道的IIP阶段,这是因为IP“B”被装入与IPG阶段关联的历史队列的存储单元中。这将第一前端管道设置得滞后第二前端管道预定数量的周期(例如一个周期)。
在周期6中,TLB_MISS阻塞信号被第一电路去激活。结果,在周期7中,IP“A”被传输到FET阶段,而较年轻的IP(IP“B”)则留在IPG阶段中。在周期8期间,第二电路检测到TLB_MISS阻塞信号已经被撤销,于是前进到第二前端管道。此时,前端管道已经重新建立了同步关系。
参看图6,该图表示的表中显示了MIQ_FULL阻塞信号断言时第一和第二前端管道的内容。在第一周期(周期1)中,当微指令队列已满、不能接收IP“A”的关联信息时,MIQ_FULL阻塞信号被启动。在第二周期(周期2)中,将新的IP“E”装入第一和第二前端管道的IIP阶段,并迫使ROT阶段中含有的IP“B”无效,使得下一个阶段将不处理IP“B”。相反,IP“B”随后将被BTB单元重新插入这两个前端管道中。
在周期2期间,第二电路发出一个BAC_TYPE清理信号,它使第二前端管道的FE1、FE2和FE3阶段上的信息无效并将IP“A”装入第一和第二前端管道的IIP阶段。在周期4,第一电路检测到该BAC_TYPE清理信号,以使FET和ROT阶段中的飞行的IP无效并将IP“B”重新装入第一和第二前端管道的IIP阶段。在下一个周期(周期5)中,MIQ_FULL阻塞信号仍然是激活的,因为微指令队列仍然是满的。此时,将IP“C”装入两个前端管道的IIP阶段并将IP“B”装入与IPG阶段关联的历史队列的某个存储单元中。此时,不能将其它IP装入前端管道中,直到阻塞条件被去除,如周期6和7中所示。
例如在周期8,MIQ_FULL阻塞信号被去激活。结果,通过将IP“A”装入FET阶段同时将IP“B”保留在IPG阶段,推进第一前端管道继续其信息传播,如周期9中所示。之后,在周期10中,第一和第二前端管道开始推进,以保持第一和第二前端管道之间的同步。
现在参看图7,图中的表表示的是根据ICACHE_MISS阻塞信号而产生的多个前端管道的内容。这当中的信息包括顺序排列的、由字母“A”、“B”、“C”、“D”“E”、“F”和“G”代表的各IP。在第一周期(周期1),多个前端管道互相同步。在周期2期间,由第一电路启动一个ICACHE_MISS阻塞信号。这导致第一和第二前端管道变得互相不同步。更具体来说,在周期3,第一前端管道允许将新的IP“F”装入其IIP阶段—因为IP“E”被装入历史队列的存储单元中。然而,由于第二前端管道在周期3之前没有检测到ICACHE_MISS阻塞信号,所以IP“B”已经从第二前端管道溢出到溢出缓冲器中。IP“B”一直在溢出缓冲器中保存到指令高速缓存返回代码数据并且IAU将IP“B”与所提取的该代码数据匹配。
例如在周期4~5,ICACHE_MISS阻塞信号仍然处于活动状态。在周期6,ICACHE_MISS阻塞信号被撤销,导致IP“D”在周期7被装入FET阶段。然而在周期7期间,第二前端管道仍然被阻塞,以便让第一前端管道与第二前端管道重新同步—如周期8所示。
参看图8,图中的表表示的是根据ICACHE_MISS阻塞信号和BTB预测的组合而产生的多个前端管道的内容。通常,在阻塞条件有效期间,BTB单元不预测。然而,由于信号延迟,BTB单元有可能在忘却有ICACHE_MISS阻塞信号被激活的事实的情况下开始预测。在这种情况下,通过在下一个周期导致发生一个BTB_TYPE清理条件来使BTB预测得以继续。这导致第一前端管道的特定阶段中的信息毫无必要地变得无效—如下文所示。
在周期1,第一电路激活ICACHE_MISS阻塞信号,通知在指令高速缓存中没有找到IP“B”的内容。然而,由于信号延迟,第二电路不知道这个阻塞条件而在周期2启动一个BTB_TYPE清理。BTB_TYPE清理导致将一个被预测的IP(称为“TB”,它是与IP“B”相关联的转移预测的目标)装入这两个前端管道的IIP阶段,并且导致与FE1和FE2阶段相关联的各IP被无效。由于ICACHE_MISS阻塞信号在周期2期间仍然是活动的,第二电路使第一前端管道中的IP“B”无效。
在周期3,TB的后续IP(称为“TB+1”)被装入这两个前端管道的IIP阶段,与此同时,第一前端管道的IP“B”被无效。在周期4,TB+1被推进到与IPG阶段相关联的历史队列并推进到第二前端管道的FE1阶段,而下一个后继IP(TB+2)现在则被装入两个IIP阶段。在周期5,ICACHE_MISS阻塞信号仍然是活动的。在周期6,ICACHE_MISS阻塞信号被撤销,导致TB将在周期7被推进到FET阶段。
尽管前端管道看起来要被重新同步,IP“B”已经被无效,由此扰乱了管道。所以,在周期8,激活一个BAC_TYPE清理,它使FE1、FE2和FE3阶段的飞行中的各IP无效并将IP“B”重新装入前端管道的IIP阶段。自此以后,如果如周期9~11中所示的那样没有另外的事件产生阻塞或清理条件,则前端管道就变得同步。
显然,在不偏离如后附的权利要求所陈述的更有概括性的精神和范围的情况下,可以对本发明作出各种修改和变动。所以本说明书和附图应被视为是示例性的而不是限制性的。
Claims (20)
1.一种方法,包含的各步骤是:
沿包括一个第一前端管道和一个第二前端管道的多个前端管道推进信息,多个前端管道是并行和互相同步的;
多个前端管道的每个基于一个阻塞信号经历一个阻塞条件,该阻塞信号导致多个前端管道变得互相不同步;以及
进行以下多种操作,使第一前端管道与第二前端管道同步:
使多个前端管道每个的至少一个选定处理阶段中的信息无效;
将相应于无效信息的信息重新加载到多个前端管道的每一个中,和
在撤销阻塞条件时推进多个前端管道的第一前端管道,与此同时,多个前端管道的第二前端管道保持闲置达预定的时间周期数,直到第一前端管道变得与第二前端管道同步。
2.权利要求1的方法,其特征在于,相应于无效信息的信息与被撤销信息一样。
3.权利要求2的方法,其特征在于经历阻塞条件的过程包括下列步骤:
在第一周期期间阻塞多个前端管道的第一前端管道;
在第二周期期间阻塞多个前端管道的第二前端管道,第二周期是在第一周期之后发生的。
4.权利要求3的方法,其特征在于在阻塞第一前端管道之前,经历阻塞条件的过程还包括由控制第一前端管道的电路在第一周期期间检测阻塞信号的步骤。
5.权利要求4的方法,其特征在于在阻塞第二前端管道之前,经历阻塞条件的过程还包括向控制第二前端管道的电路提供表示阻塞条件已经发生的信号的步骤。
6.权利要求1的方法,其特征在于阻塞信号是TLB OP阻塞信号、TLB MISS阻塞信号、ICACHF MISS阻塞信号和MIO FULL阻塞信号中的一个信号。
7.权利要求1的方法,其特征在于所述信息包括至少一个指令指针。
8.权利要求7的方法,其特征在于所述阻塞条件包括变换前视缓冲器(translation lookahead buffer)不能在第一前端管道的预定处理阶段及时地服务至少一个指令指针的事件。
9.权利要求7的方法,其特征在于所述阻塞条件包括该至少一个指令指针的变换没有驻留在变换前视缓冲器中的事件。
10.权利要求7的方法,其特征在于阻塞条件包括没有与该至少一个指令指针关联的信息驻留在预定高速缓冲存储器中的事件。
11.权利要求1的方法,其特征在于的重新加载步骤包括步骤:
从溢出缓冲器检索相应于无效信息的信息,溢出缓冲器接收第二前端管道的信息输出;
将从溢出缓冲器检索的信息同时加载到第一前端管道和第二前端管道二者中。
12.一种电子系统,包含:
总线;
与总线相连的微处理器,微处理器包含:
控制信息沿第一前端管道的推进的第一电路,第一电路包括用于保留至少两个指向第一前端管道的一个处理阶段的指令指针的一个存储部件和一个历史队列,该历史队列包含一个多路转换器,该多路转换器包括(1)接收该至少两个指令指针的第一指令指针的第一输入端,(2)与含有该至少两个指令指针的至少第二指令指针的存储单元相连的第二输入端,多路转换器的输出受阻塞条件的激活和去激活的控制;以及
第二电路包括一个缓冲器,第二电路控制信息沿第二前端管道的推进,并与第一电路共同操作以维持第一前端管道和第二前端管道之间的同步关系。
13.如权利要求12的电子系统,其特征在于信息包括多个顺序的指令指针。
14.如权利要求12所述的电子系统,其特征在于,第一电路供检测阻塞条件。
15.如权利要求12的电子系统,其特征在于第一电路能访问高速缓冲存储器的内容。
16.如权利要求12的电子系统,其特征在于缓冲器用于暂存第二前端管道在前一个时钟周期中输出的信息。
17.如权利要求16的电子系统,其特征在于第二电路进一步包括转移目标缓冲器,用于从缓冲器获得随后要被重新加载到第一前端管道和第二前端管道二者中的信息。
18.一种微处理器,包含:
用于控制信息沿第一前端管道的推进的第一电路;
第一电路包括含有一个多路转换器的一个历史队列,用于保留至少两个指向第一前端管道的一个处理阶段的指令指针,该多路转换器包括(1)接收该至少两个指令指针的第一指令指针的第一输入端和(2)与含有该至少两个指令指针的至少第二指令指针的存储单元相耦合的第二输入端,多路转换器的输出受阻塞条件的激活和去激活的控制;和
与第一电路相耦合的第二电路,第二电路用来控制信息沿第二前端管道的推进并与第一电路协作运行,以保持第一前端管道与第二前端管道之间的同步关系,第二电路包括一个缓冲器,用于暂存第二前端管道在前一个时钟周期中输出的信息。
19.如权利要求18的微处理器,其特征在于第一电路检测阻塞条件。
20.如权利要求18的微处理器,其特征在于第二电路进一步包括转移目标缓冲器,用于从缓冲器获得随后要被重新加载到第一前端管道和第二前端管道二者中的信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/002,774 US6044456A (en) | 1998-01-05 | 1998-01-05 | Electronic system and method for maintaining synchronization of multiple front-end pipelines |
US09/002,774 | 1998-01-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1285063A CN1285063A (zh) | 2001-02-21 |
CN1122918C true CN1122918C (zh) | 2003-10-01 |
Family
ID=21702442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN98812943A Expired - Fee Related CN1122918C (zh) | 1998-01-05 | 1998-12-22 | 在多个并行的前端管道之间保持数据的同步的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6044456A (zh) |
KR (1) | KR100389553B1 (zh) |
CN (1) | CN1122918C (zh) |
AU (1) | AU1945299A (zh) |
GB (1) | GB2348526B (zh) |
WO (1) | WO1999035565A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6542983B1 (en) * | 1999-10-01 | 2003-04-01 | Hitachi, Ltd. | Microcomputer/floating point processor interface and method |
US6477638B1 (en) * | 1999-10-01 | 2002-11-05 | Hitachi, Ltd. | Synchronized instruction advancement through CPU and FPU pipelines |
US6591360B1 (en) | 2000-01-18 | 2003-07-08 | Hewlett-Packard Development Company | Local stall/hazard detect in superscalar, pipelined microprocessor |
US6587940B1 (en) | 2000-01-18 | 2003-07-01 | Hewlett-Packard Development Company | Local stall/hazard detect in superscalar, pipelined microprocessor to avoid re-read of register file |
US6650943B1 (en) | 2000-04-07 | 2003-11-18 | Advanced Bionics Corporation | Fully implantable neurostimulator for cavernous nerve stimulation as a therapy for erectile dysfunction and other sexual dysfunction |
US6993641B2 (en) * | 2000-11-08 | 2006-01-31 | Pts Corporation | Stall control |
GB0027294D0 (en) * | 2000-11-08 | 2000-12-27 | Siroyan Ltd | Processors and methods of operating processors |
US6885895B1 (en) * | 2001-04-26 | 2005-04-26 | Advanced Bionics Corporation | Methods and systems for electrical and/or drug stimulation as a therapy for erectile dysfunction |
US20050240229A1 (en) * | 2001-04-26 | 2005-10-27 | Whitehurst Tood K | Methods and systems for stimulation as a therapy for erectile dysfunction |
GB2380828A (en) * | 2001-10-12 | 2003-04-16 | Siroyan Ltd | Simplified method of deleting unwanted instructions in a pipeline processor |
CN100365582C (zh) * | 2006-03-14 | 2008-01-30 | 上海科泰世纪科技有限公司 | 计算机操作系统事件同步对象扩展的数据处理方法 |
CN104184816B (zh) * | 2014-08-28 | 2018-04-24 | 哈尔滨工程大学 | 一种基于仿真成员事件时戳增量期望的前瞻量动态调整方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0150177A1 (en) * | 1983-07-11 | 1985-08-07 | Prime Computer, Inc. | Data processing system |
DE3878513T2 (de) * | 1987-03-20 | 1993-09-16 | Digital Equipment Corp | Vorrichtung und verfahren zur synchronisation von arithmetischen exceptionen in parallelen pipeline-ausfuehrungseinheiten. |
US5341482A (en) * | 1987-03-20 | 1994-08-23 | Digital Equipment Corporation | Method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions |
US4982402A (en) * | 1989-02-03 | 1991-01-01 | Digital Equipment Corporation | Method and apparatus for detecting and correcting errors in a pipelined computer system |
US5317734A (en) * | 1989-08-29 | 1994-05-31 | North American Philips Corporation | Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies |
US5179673A (en) * | 1989-12-18 | 1993-01-12 | Digital Equipment Corporation | Subroutine return prediction mechanism using ring buffer and comparing predicated address with actual address to validate or flush the pipeline |
US5193206A (en) * | 1989-12-27 | 1993-03-09 | Motorola, Inc. | Reduce instruction set microprocessor |
US5450555A (en) * | 1990-06-29 | 1995-09-12 | Digital Equipment Corporation | Register logging in pipelined computer using register log queue of register content changes and base queue of register log queue pointers for respective instructions |
DE4040197C2 (de) * | 1990-12-15 | 2003-04-24 | Truetzschler Gmbh & Co Kg | Vorrichtung zum Abtragen von Faserflocken aus in Reihe angeordneten Faserballen, z. B. aus Baumwolle, Chemiefasern o. dgl. |
US5428810A (en) * | 1991-03-15 | 1995-06-27 | Hewlett-Packard Company | Allocation of resources of a pipelined processor by clock phase for parallel execution of dependent processes |
US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
JPH05108587A (ja) * | 1991-10-18 | 1993-04-30 | Hitachi Ltd | 並列演算装置 |
US5826069A (en) * | 1993-09-27 | 1998-10-20 | Intel Corporation | Having write merge and data override capability for a superscalar processing device |
JP3699518B2 (ja) * | 1995-01-26 | 2005-09-28 | サン マイクロシステムズ インコーポレイテッド | パイプライン・プロセッサ内において、誤って予測された実行分岐後にアネックス内のヤング・ビットを回復する方法及び装置 |
US5655105A (en) * | 1995-06-30 | 1997-08-05 | Micron Technology, Inc. | Method and apparatus for multiple latency synchronous pipelined dynamic random access memory |
US5860000A (en) * | 1996-01-31 | 1999-01-12 | Hitachi Micro Systems, Inc. | Floating point unit pipeline synchronized with processor pipeline |
US5867724A (en) * | 1997-05-30 | 1999-02-02 | National Semiconductor Corporation | Integrated routing and shifting circuit and method of operation |
US6052771A (en) * | 1998-01-20 | 2000-04-18 | International Business Machines Corporation | Microprocessor with pipeline synchronization |
-
1998
- 1998-01-05 US US09/002,774 patent/US6044456A/en not_active Expired - Lifetime
- 1998-12-22 GB GB0014303A patent/GB2348526B/en not_active Expired - Fee Related
- 1998-12-22 AU AU19452/99A patent/AU1945299A/en not_active Abandoned
- 1998-12-22 WO PCT/US1998/027442 patent/WO1999035565A1/en active IP Right Grant
- 1998-12-22 KR KR10-2000-7007471A patent/KR100389553B1/ko not_active IP Right Cessation
- 1998-12-22 CN CN98812943A patent/CN1122918C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6044456A (en) | 2000-03-28 |
WO1999035565A1 (en) | 1999-07-15 |
KR20010033897A (ko) | 2001-04-25 |
CN1285063A (zh) | 2001-02-21 |
GB2348526A (en) | 2000-10-04 |
GB2348526B (en) | 2003-05-07 |
GB0014303D0 (en) | 2000-08-02 |
KR100389553B1 (ko) | 2003-06-27 |
AU1945299A (en) | 1999-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1122918C (zh) | 在多个并行的前端管道之间保持数据的同步的系统和方法 | |
CN100557570C (zh) | 多处理器系统 | |
CN104731719B (zh) | 一种缓存系统和方法 | |
EP0957428B1 (en) | Method and apparatus for fetching non-contiguous instructions in a data processing system | |
KR100411529B1 (ko) | 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치 | |
EP1662377B1 (en) | Branch predicting apparatus and branch predicting method using return address stacks | |
CN100538628C (zh) | 用于在simd结构中处理线程组的系统和方法 | |
GB2338325A (en) | Parallel discrete event simulation | |
JP3683808B2 (ja) | 命令履歴情報を持つ基本キャッシュ・ブロック・マイクロプロセッサ | |
US6112288A (en) | Dynamic configurable system of parallel modules comprising chain of chips comprising parallel pipeline chain of processors with master controller feeding command and data | |
CN101002169A (zh) | 微处理器架构 | |
JP2001297000A (ja) | 1次発行キューと2次発行キューを持つマイクロプロセッサ | |
EP1622035A2 (en) | Address translation information storing apparatus and address translation information storing method | |
JPH06119243A (ja) | 内部プロセッサレジスターコマンドのi/o空間アドレスへの変換 | |
CN1680917A (zh) | 用于跟踪完成表中更大量未完成指令的方法和处理器 | |
CN1581070A (zh) | 一种回应非标准返回序列的检测而选择性覆盖返回堆栈预测的装置及方法 | |
CN109791494B (zh) | 分支预测器搜索资格的流长度预测方法及系统 | |
Racunas et al. | Partitioned first-level cache design for clustered microarchitectures | |
CN102289361A (zh) | 对追踪数据流的关联 | |
CN109313554A (zh) | 用于在非均匀计算装置中进行调度的方法和设备 | |
CN1193141A (zh) | 在环型缓冲区中确定顺序优先级 | |
CN1295279A (zh) | 在处理系统中用于执行堆栈弹出与压入操作的装置和方法 | |
EP1994471B1 (en) | Collapsible front-end translation for instruction fetch | |
JP3629551B2 (ja) | 基本キャッシュ・ブロックを利用したマイクロプロセッサ | |
US8140761B2 (en) | Event tracking hardware |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20031001 Termination date: 20121222 |