首页> 中国专利> 在多个并行的前端管道之间保持数据的同步的系统和方法

在多个并行的前端管道之间保持数据的同步的系统和方法

摘要

本文叙述了一种对通过多个并行操作的前端管道(410)传播的信息保持同步的系统和方法。概括来说,这些多个管道因某个阻塞条件(460)而变得不同步,通过清理两个前端管道以及通过在不同时段有选择地将这些前端管道(410)从它们的阻塞条件中释放(470),重新建立同步。

著录项

  • 公开/公告号CN1285063A

    专利类型发明专利

  • 公开/公告日2001-02-21

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN98812943.4

  • 申请日1998-12-22

  • 分类号G06F9/38;

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人吴立明;王忠忠

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 13:46:10

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-02-19

    未缴年费专利权终止 IPC(主分类):G06F9/38 授权公告日:20031001 终止日期:20121222 申请日:19981222

    专利权的终止

  • 2003-10-01

    授权

    授权

  • 2001-02-28

    实质审查请求的生效

    实质审查请求的生效

  • 2001-02-21

    公开

    公开

说明书

本发明涉及电子学领域。更具体来说,本发明涉及一种对通过多个并行管道传播的信息保持同步的系统和方法。

早期的微处理器包含被安排成能顺着指令管道顺序地处理指令的电路。为了提高效率,更新的微处理器(称为“管道式微处理器”)已经被设计成同时对几个指令操作。这是通过重叠在指令管道的各“前端”阶段(即最初几个处理阶段)所执行的诸操作以及在指令管道的各“后端”阶段(即最后几个处理阶段)所执行的诸操作而实现的。此外,还可以将所选择的处理阶段划分成若干子阶段,以进一步提高性能,正如在管道程度很深的微处理器(如位于美国加州Santa Clara的英特尔公司生产的Pentium Pro或Pentium Ⅱ处理器)中的那样。

直到现在,对多前端管道的需求还没有表现出来。目前,微处理器中缺少多前端管道的原因可能是复杂性或者与体系结构的不适应性。如果两个或更多并行的前端管道在运行(即执行它们自己的任务但是针对的是相同的指令指针“IP”),这些前端管道的每个对应阶段都必须在有效性和信息内容上匹配。所以,要求前端管道保持相互之间的同步关系。

如果要实行多前端管道,则支持前端管道的逻辑结构的大小有可能会使它们不能被安置在互相非常邻近的位置。这会导致从一个前端管道向另一个传输事件时的延迟。“事件”的例子可包括(1)阻塞条件,它中止信息(例如一个或多个指令指针“IP”)在这些前端管道中的传播,直到该阻塞条件被撤销;或者(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中所示的那样没有另外的事件产生阻塞或清理条件,则前端管道就变得同步。

显然,在不偏离如后附的权利要求所陈述的更有概括性的精神和范围的情况下,可以对本发明作出各种修改和变动。所以本说明书和附图应被视为是示例性的而不是限制性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号