首页 / 专利库 / 电脑零配件 / 硬件 / 多管芯硬件处理器和方法

多管芯硬件处理器和方法

阅读:343发布:2024-02-09

专利汇可以提供多管芯硬件处理器和方法专利检索,专利查询,专利分析的服务。并且描述了与具有多个被互连的管芯的 硬件 处理器有关的方法和装置。在一个 实施例 中,硬件处理器包括多个物理上分开的管芯并包括互连,该互连用于将这些物理上分开的管芯电气地耦合在一起。在另一实施例中,一种用于形成硬件处理器的方法包括:提供多个物理上分开的管芯;以及利用互连将这些物理上分开的管芯电气地耦合在一起。,下面是多管芯硬件处理器和方法专利的具体信息内容。

1.一种硬件处理器,包括:
多个物理上分开的管芯;
互连,用于将所述多个物理上分开的管芯电气地耦合在一起;
所述多个物理上分开的管芯中的第一管芯的第一发射机电路
所述多个物理上分开的管芯中的第二管芯的第二接收机电路,所述第二管芯的所述第二接收机电路通过所述互连的、与所述互连的时钟通道对应的至少一个数据通道被耦合至所述第一管芯的所述第一发射机电路;以及
时钟电路,用于:从所述第一发射机电路接收将所述第二接收机电路改变到操作频率以及针对所述操作频率的时钟计时率的请求;引起在数据存储设备中从对于针对不同操作频率中的每个单个频率的第一时钟计时率以及对于针对不同操作频率中的每个单个频率的不同的第二时钟计时率的多个预定的时钟相位布置查找用于所述操作频率以及针对所述操作频率的时钟计时率的预定的时钟相位布置;以及使所述第二接收机电路利用用于所述时钟通道上的所述操作频率和针对所述操作频率的时钟计时率的预定的时钟相位布置在所述至少一个数据通道上接收来自所述第一发射机电路的数据。
2.如权利要求1所述的硬件处理器,其中,针对所述操作频率的第一时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置两者与针对所述操作频率的不同的第二时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置不同。
3.如权利要求1所述的硬件处理器,其中,所述时钟电路用于:当在开环模式中以用于所述操作频率和针对所述操作频率的时钟计时率的预定的时钟相位布置更新了所述时钟电路之后,切换到调整所述操作频率的闭环模式。
4.如权利要求1所述的硬件处理器,其中,每个物理上分开的管芯是完全相同的。
5.如权利要求1所述的硬件处理器,进一步包括高速缓存一致性电路,所述高速缓存一致性电路用于在单个高速缓存一致性域中管理所述多个物理上分开的管芯中的一个管芯的第一高速缓存和所述多个物理上分开的管芯中的另一管芯的第二高速缓存。
6.如权利要求1所述的硬件处理器,进一步包括高速缓存一致性电路,所述高速缓存一致性电路用于在单个高速缓存一致性域中管理所述多个物理上分开的管芯中的每个管芯中的高速缓存。
7.如权利要求1所述的硬件处理器,其中,多个物理上分开的管芯中的每个管芯中的高速缓存一致性电路是能够在主模式和从模式之间切换的。
8.如权利要求1-7中的任一项所述的硬件处理器,其中,所述多个物理上分开的管芯中的第一管芯和第二管芯在单个平面内延伸,并且所述多个物理上分开的管芯中的第三管芯横向地与所述单个平面间隔开。
9.一种方法,包括:
利用互连将多个物理上分开的管芯电气地耦合在一起,其中,所述多个物理上分开的管芯中的第一管芯的第一发射机通过所述互连的、与所述互连的时钟通道对应的至少一个数据通道被电气地耦合至所述多个物理上分开的管芯中的第二管芯的第二接收机电路;
从所述第一发射机电路接收将所述第二接收机电路改变到操作频率和针对所述操作频率的时钟计时率的请求;
在数据存储设备中执行从对于针对不同操作频率中的每个单个频率的第一时钟计时率以及对于针对不同操作频率中的每个单个频率的不同的第二时钟计时率的多个预定的时钟相位布置查找用于所述操作频率以及针对所述操作频率的时钟计时率的预定的时钟相位布置;以及
利用所述第二接收机电路、利用用于所述时钟通道上的所述操作频率和针对所述操作频率的时钟计时率的预定的时钟相位布置、在所述至少一个数据通道上接收来自所述第一发射机电路的数据。
10.如权利要求9所述的方法,其中,针对所述操作频率的第一时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置两者与针对所述操作频率的不同的第二时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置不同。
11.如权利要求9所述的方法,其中,进一步包括:当在开环模式中以用于所述操作频率和针对所述操作频率的时钟计时率的预定的时钟相位布置更新了时钟电路之后,切换到调整所述操作频率的闭环模式。
12.如权利要求9所述的方法,其中,所述第一管芯和所述第二管芯是完全相同的物理上分开的管芯。
13.如权利要求9所述的方法,进一步包括:提供高速缓存一致性电路,所述高速缓存一致性电路用于在单个高速缓存一致性域中管理所述多个物理上分开的管芯中的一个管芯的第一高速缓存和所述多个物理上分开的管芯中的另一管芯的第二高速缓存。
14.如权利要求9所述的方法,进一步包括:提供高速缓存一致性电路,所述高速缓存一致性电路用于在单个高速缓存一致性域中管理所述多个物理上分开的管芯中的每个管芯中的高速缓存。
15.如权利要求9所述的方法,进一步包括,在所述多个物理上分开的管芯中的能够在主模式和从模式之间切换的每个管芯中提供高速缓存一致性电路。
16.如权利要求9-15中的任一项所述的方法,进一步包括:将所述多个物理上分开的管芯中的第一管芯和第二管芯附接在单个平面中,并且以与所述单个平面横向地间隔开的取向来附接所述多个物理上分开的管芯中的第三管芯。
17.一种非暂态机器可读介质,存储有代码,所述代码当由机器执行时,使所述机器执行包括以下步骤的方法:
利用互连将多个物理上分开的管芯电气地耦合在一起,其中,所述多个物理上分开的管芯中的第一管芯的第一发射机通过所述互连的、与所述互连的时钟通道对应的至少一个数据通道被耦合至所述多个物理上分开的管芯中的第二管芯的第二接收机电路;
从所述第一发射机电路接收将所述第二接收机电路改变到操作频率和针对所述操作频率的时钟计时率的请求;
在数据存储设备中执行从对于针对不同操作频率中的每个单个频率的第一时钟计时率以及对于针对不同操作频率中的每个单个频率的不同的第二时钟计时率的多个预定的时钟相位布置查找用于所述操作频率以及针对所述操作频率的时钟计时率的预定的时钟相位布置;以及
利用所述第二接收机电路、利用用于所述时钟通道上的操作频率和针对操作频率的时钟计时率的预定的时钟相位布置、在所述至少一个数据通道上接收来自所述第一发射机电路的数据。
18.如权利要求17所述的非暂态机器可读介质,其中,针对所述操作频率的第一时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置两者与针对所述操作频率的不同的第二时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置不同。
19.如权利要求17所述的非暂态机器可读介质,其中,所述方法进一步包括:当在开环模式中以用于所述操作频率和针对所述操作频率的时钟计时率的预定的时钟相位布置更新了时钟电路之后,切换到调整所述操作频率的闭环模式。
20.如权利要求17所述的非暂态机器可读介质,其中,所述第一管芯和所述第二管芯是完全相同的物理上分开的管芯。
21.如权利要求17所述的非暂态机器可读介质,其中,所述方法进一步包括:提供高速缓存一致性电路,所述高速缓存一致性电路用于在单个高速缓存一致性域中管理所述多个物理上分开的管芯中的一个管芯的第一高速缓存和所述多个物理上分开的管芯中的另一管芯的第二高速缓存。
22.如权利要求17所述的非暂态机器可读介质,其中,所述方法进一步包括:提供高速缓存一致性电路,所述高速缓存一致性电路用于在单个高速缓存一致性域中管理所述多个物理上分开的管芯中的每个管芯中的高速缓存。
23.如权利要求17所述的非暂态机器可读介质,其中,所述方法进一步包括,在所述多个物理上分开的管芯中的能够在主模式和从模式之间切换的每个管芯中提供高速缓存一致性电路。
24.如权利要求17-23中的任一项所述的非暂态机器可读介质,其中,所述方法进一步包括:将所述多个物理上分开的管芯中的第一管芯和第二管芯附接在单个平面中,并且以与所述单个平面横向地间隔开的取向来附接所述多个物理上分开的管芯中的第三管芯。
25.一种硬件处理器,包括:
多个物理上分开的管芯;
互连,用于将所述多个物理上分开的管芯电气地耦合在一起;
所述多个物理上分开的管芯中的第一管芯的第一发射机电路;
所述多个物理上分开的管芯中的第二管芯的第二接收机电路,所述第二管芯的所述第二接收机电路通过所述互连的、与所述互连的时钟通道对应的至少一个数据通道被电气地耦合至所述第一管芯的所述第一发射机电路;以及
用于执行以下操作的装置:从所述第一发射机电路接收将所述第二接收机电路改变到操作频率以及针对所述操作频率的时钟计时率的请求;引起在数据存储设备中从对于针对不同操作频率中的每个单个频率的第一时钟计时率以及对于针对不同操作频率中的每个单个频率的不同的第二时钟计时率的多个预定的时钟相位布置查找用于所述操作频率以及针对所述操作频率的时钟计时率的预定的时钟相位布置;以及使所述第二接收机电路利用用于所述时钟通道上的所述操作频率和针对所述操作频率的时钟计时率的预定的时钟相位布置在所述至少一个数据通道上接收来自所述第一发射机电路的数据。

说明书全文

多管芯硬件处理器和方法

相关申请的交叉引用

[0001] 本专利申请要求2016年10月10日提交的美国临时专利申请第62/406362号的权益,该美国临时专利申请通过引用被整体结合于此。

技术领域

[0002] 本公开总体上关于电子学,更具体地,本公开的实施例关于具有多个被互连的管芯的硬件处理器。

背景技术

[0003] 处理器或处理器集合执行来自指令集(例如,指令集架构(ISA))的指令。指令集是计算机架构的关于编程的部分,并且一般包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处置以及外部输入和输出(I/O)。附图说明
[0004] 在所附附图中以示例方式而非限制方式图示本公开,在附图中,类似的附图标记指示类似的要素,其中:
[0005] 图1图示根据本公开的实施例的硬件处理器。
[0006] 图2A图示根据本公开的实施例的硬件处理器。
[0007] 图2B图示根据本公开的实施例的硬件处理器。
[0008] 图3图示根据本公开的实施例的硬件处理器。
[0009] 图4图示根据本公开的实施例的第一管芯的发射机电路,该第一管芯的发射机电路通过互连耦合至第二管芯的接收机电路。
[0010] 图5图示根据本公开的实施例的针对第一时钟计时(clocking)率的数据时序图和时钟时序图。
[0010] 图6图示根据本公开的实施例的针对第二时钟计时率的数据时序图和时钟时序图。
[0012] 图7图示根据本公开的实施例的第一管芯的发射机电路,该第一管芯的发射机电路通过互连耦合至第二管芯的接收机电路。
[0013] 图8图示根据本公开的实施例的针对第一时钟计时率的数据时序图和时钟时序图。
[0014] 图9图示根据本公开的实施例的针对第二时钟计时率的数据时序图和时钟时序图。
[0015] 图10图示根据本公开的实施例的用于互连编程的流程图
[0016] 图11图示根据本公开的实施例的时钟相位布置。
[0017] 图12图示根据本公开的实施例的包括时钟相位布置的表。
[0018] 图13图示根据本公开的实施例的数字延迟相环(DLL)延迟线和数字相位内插电路。
[0019] 图14图示根据本公开的实施例的用于通过互连进行频率转变的流程图。
[0020] 图15图示根据本公开的实施例的接收机电路的时钟计时架构。
[0021] 图16图示根据本公开的实施例的用于1X(1倍)和2X(2倍)时钟计时率模式的时钟时序图。
[0022] 图17图示根据本公开的实施例的用于1X和2X时钟计时率模式的时钟时序图。
[0023] 图18图示根据本公开的实施例的包括通道修复电路的发射机电路的发射数据路径。
[0024] 图19图示根据本公开的实施例的针对发射机电路的1X时钟计时率模式的时钟时序图。
[0025] 图20图示根据本公开的实施例的针对发射机电路的2X时钟计时率模式的时钟时序图。
[0026] 图21图示根据本公开的实施例的包括时钟跨越缓冲器的接收机电路的接收机数据路径。
[0027] 图22图示根据本公开的实施例的针对接收机电路的1X时钟计时率模式的时钟时序图。
[0028] 图23图示根据本公开的实施例的针对接收机电路的2X时钟计时率模式的时钟时序图。
[0029] 图24图示根据本公开的实施例的硬件处理器,该硬件处理器具有经由互连共享资源的两个管芯。
[0030] 图25图示根据本公开的实施例的用于硬件处理器的基础结构管理控制器,该硬件处理器具有经由互连共享资源的两个管芯。
[0031] 图26图示根据本公开的实施例的用于硬件处理器的基础结构管理控制器,该硬件处理器具有经由互连共享资源的四个管芯。
[0032] 图27图示根据本公开的实施例的用于硬件处理器的基础结构管理控制器,该硬件处理器具有经由互连共享资源的六个管芯。
[0033] 图28图示根据本公开的实施例的用于硬件处理器的基础结构管理控制器,该硬件处理器具有经由互连而被耦合的六个管芯。
[0034] 图29图示根据本公开的实施例的用于多管芯处理器中的数据交换的平面通信拓扑。
[0035] 图30图示根据本公开的实施例的用于多管芯处理器中的数据交换的分层式主从通信拓扑。
[0036] 图31A-图31B图示根据本公开的实施例的用于主从引导和独立于管芯的引导的流程图。
[0037] 图32图示根据本公开的实施例的硬件处理器。
[0038] 图33图示根据本公开的实施例的硬件处理器。
[0039] 图34图示根据本公开的实施例的硬件处理器。
[0040] 图35A-图35B图示根据本公开的实施例的用于针对I/O和时钟跨越的发射机电路和接收机电路启动序列的流程图。
[0041] 图36图示根据本公开的实施例的流程图。
[0042] 图37图示根据本公开的实施例的流程图。
[0043] 图38A是图示根据本公开的实施例的示例性有序流线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图
[0044] 图38B是图示根据本公开的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框图。
[0045] 图39A是根据本公开的实施例的单个处理器核以及其到管芯上互连网络的连接以及它的第2级(L2)高速缓存的本地子集的框图。
[0046] 图39B是根据本公开的实施例的图39A中的处理器核的部分的展开图。
[0047] 图40是根据本公开的实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形器件的处理器的框图。
[0048] 图41是根据本公开的一个实施例的系统的框图。
[0049] 图42是根据本公开的实施例的更具体的示例性系统的框图。
[0050] 图43所示的是根据本公开的实施例的第二更具体的示例性系统的框图。
[0051] 图44示出的是根据本公开的实施例的芯片上系统(SoC)的框图。
[0052] 图45是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。

具体实施方式

[0053] 在以下描述中,陈述了众多特定细节。然而,应当理解,可不通过这些特定细节来实践本公开的实施例。在其他实例中,未详细示出公知的电路、结构和技术,以免使对本说明书的理解模糊。
[0054] 在说明书中提到“一个实施例”、“实施例”、“示例实施例”等指示所描述的实施例可包括特定的特征、结构或特性,但是,每一个实施例可以不一定包括该特定的特征、结构或特性。此外,此类短语不一定是指同一个实施例。此外,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识范围之内的。
[0055] (例如,硬件)处理器或处理器集合执行来自指令集(例如,指令集架构(ISA))的指令。指令集是计算机架构的关于编程的部分,并且一般包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处置以及外部输入和输出(I/O)。应当注意,术语“指令”在本文中可以指宏指令或指微指令,该宏指令例如,提供给处理器供执行的指令,该微指令例如,由处理器的解码单元(解码器)对宏指令解码所产生的指令。(例如,具有一个或多个核以对指令解码和/或执行指令的)处理器可例如在执行算术、逻辑或其他功能时对数据操作。
[0056] 处理器可形成在单个管芯上,例如,在集成电路的单个(半导体)上。在一个实施例中,单个管芯可能具有妨害或移除管芯的某些功能的(例如,制造)误差或缺陷。这种工艺缺陷的责任会随管芯面积增加而增加,制造投资也冒着(例如,大型)处理器的构建损失的险。处理器可形成于在一次设计发布中具有所有硬件功能的单个管芯(例如,制造)上,例如,处理器可能在那些新能不在原始的设计发布中的情况下不使硬件支持的特征被增加、增强或优化。
[0057] 本文中的某些实施例提供多个物理上分开的(例如,分立的)管芯,这些管芯用于由互连(例如,电气地)连接在一起以形成处理器。本文中的某些实施例在那个互连上提供单个(例如,单片的)高速缓存一致性域。本文中的某些实施例包括:不对通过互连(例如,在管芯之间)(例如,被发射和/或接收的)数据进行分组化(packeting)和/或不对该数据进行串行化。本文中的某些实施例降低与单个(例如,大)管芯尺寸相关联的风险。本文中的某些实施例允许从被复制多次以创建(例如,较大的)单片域的同一管芯(和/或管芯的镜像版本)来形成处理器。本文中的某些实施例允许用于良率恢复和/或管芯可测试性的冗余。例如,不同管芯和/或不同组的管芯可通过最少的工作或无需重新设计工作来允许各种各样的独有的处理器(例如,SKU)。本文中的某些实施例允许对设计周期是制造一个还是多个管芯(例如,从单个管芯分裂出的2路或4路)的单片式设计作出晚期决策。本文中的某些互连包括透明队列,该透明队列用于跨越例如可在后(post silicon)调整的时钟域和/或功率域。在某些实施例中,如果这两个域正以相同的频率运行但在不同的功率源上运行,则(例如,具有透明队列的)互连可没有等待时间影响。在某些实施例中,收发机电路(例如,发射机电路和接收机电路)在发射机电路和收发机电路两者上都包括透明队列,例如,其中数据正跨越物理管芯边界,例如,跨越功率域,其中每个管芯具有不同的功率源。
[0058] 本文中的某些实施例提供跨多个管芯的单片式高速缓存域(例如,允许非常高的交叉带宽但同时具有最低等待时间和功率影响)。本文中的某些实施例允许以二维(例如,X-Y)和/或三维(例如,X-Y-Z)放大。本文中的某些实施例提供了较大管芯连接至较小管芯(例如,在其管芯上具有不同数量的物理连接的多个管芯)。本文中的某些实施例允许根据管芯之间的多个(例如,任何)协议(例如,不限于单个协议)的传输。本文中的某些实施例提供网格回环(loopback)(例如,微)架构,从而例如容忍管芯间的差异。本文中的某些实施例将条目添加到查找表(LUT)中,以指示数据(例如,高速缓存行)是否将跨越物理管芯边界,例如,是否将通过两个管芯之间的互连。本文中的某些实施例允许按需的独立(例如,功率和/或高速缓存)域,从而例如通过禁用(例如,网格)互连的行和/或列来有助于良率恢复。本文中的某些实施例允许一个管芯以与那个硬件处理器的另一管芯不同的频率来运行。本文中的某些传输协议实现多个管芯之间的高速互连和/或管芯边界的无缝跨越。替代于将那些协议用作管芯至管芯连接,本文中的某些实施例可使用其他解决方案,例如,利用插入器
[0059] 多个管芯之间的互连的某些实施例提供以下一项或多项:(例如,非常高的)增加的带宽(BW)、减少的引脚数但允许全截面BW,1/4引脚用于管芯的4x(4倍)频率,1/2引脚用于动态1x/2x(1倍/2倍)模式,例如,1x(1倍):伴随着低功率和/或等待时间影响的半BW(例如,操作频率与管芯匹配,因为1/2引脚,1/2 BW),无分组化(例如,对于任何管芯至管芯连接)以实现最小等待时间影响,更低的频率和/或更低的错误率(例如,类似于或低于硅上的错误率的错误率)(例如,不允许在管芯间互连链路上利用的错误保护或允许对在管芯间互连链路上利用的管芯上互连的错误保护),并且例如,2x(2倍):伴随着增加的功率和/或等待时间的全BW全性能,操作频率相对于管芯频率加倍,以及用于在这两种模式之间切换的(多个)算法。多个管芯之间的互连的某些实施例提供互连的减少的等待时间和/或增加的带宽,例如,远低于当前的管芯至管芯互连技术和/或等于或基本上等于管芯上互连。
[0060] 本文中的某些实施例提供了在高带宽和低等待时间电气互连上共享处理器主资源,使得访问远程管芯资源的性能基本上类似于或非常接近单片式制造的集成管芯的性能。本文中的某些实施例提供共享处理器基础结构资源以例如利用电气互连来实现对功率、热、时钟计时、重置、配置和错误处置的直接管理,使得访问远程管芯资源的性能基本上类似于或非常接近单片式制造的集成管芯的性能。本文中的某些实施例降低与单个大管芯尺寸相关联的制造良率风险。本文中的某些实施例允许缩放到(例如,更大)数量的功能逻辑电路组件,以为良率恢复和/或诸如管芯可测试性之类的特殊用例提供冗余。本文中的某些实施例允许对设计周期上是制造一个还是多个管芯(例如,从单个管芯分裂出的2路或4路)的单片式设计作出晚期(例如,或者在任何时刻做)决策。
[0061] 本文中的某些实施例允许组合不相似的管芯实现随时间推移对针对一些管芯的设计完成分阶段或允许一些管芯以更成熟或特殊的制造工艺来制造,并且允许更好地将来自先前产品的一些较旧的管芯货币化。本文中的某些实施例允许组合不相似的管芯和/或多个管芯以利用最少重新设计工作或无需重新设计工作来实现各种各样的独特处理器产品(例如,SKU)。
[0062] 本文中的某些实施例提供了较大管芯连接至较小管芯和/或在其管芯上具有不同数量的物理连接的多个管芯。本文中的某些实施例允许从被复制多次以创建较大的单片域的相同和/或镜像版本的管芯来形成处理器。本文中的某些实施例允许以二维(例如,笛卡尔坐标系中的X轴和Y轴)和/或三维(例如,笛卡尔坐标系中的X轴、Y轴和Z轴)放大。
[0063] 本文中的某些实施例提供用于提供低等待时间、高带宽的管芯至管芯一致性连接的电路(例如,PHY),例如,基本上与单片体验类似。本文中的某些实施例提供等同于单片情况的性能中性和功率节省能力。本文中的某些实施例提供晶片中的各个管芯成为经封装的模块化管芯产品的紧密结合的流程。本文中的某些实施例提供将若干模块化管芯(例如,异构模块化管芯)分片的可模块化性和可扩展性。尽管存在管芯之间的私有边带消息收发的管芯暴露,但本文中的某些实施例允许管芯无缝地且不受安全保护妨碍地彼此影响。
[0064] 图1图示根据本公开的实施例的硬件处理器100。虽然未描绘,但是可利用例如下文所讨论的某些电路(例如,(多个)解码单元、(多个)执行单元、(多个)核、高速缓存一致性电路、(多个)高速缓存和其他组件)。在一个实施例中,单个管芯102上的处理器组件可经由互连被耦合在一起,该互连诸如图1中图示的网格互连。例如,管芯102可包括通过网格互连彼此通信的组件108和组件110。在一个实施例中,物理上分开的管芯102用于通过互连106与物理上分开的管芯104通信。管芯和/或互连可包括用于在管芯102与管芯104之间传输数据的收发机。注意,本文中的单向箭头可以不要求单向通信,例如,它可以指示双向通信(例如,去往或来自那个组件)。通信路径中的任一组合或所有组合可用于本文中的某些实施例。
[0065] 在一个实施例中,管芯102和管芯104中的每一个都是完全相同的。在另一实施例中,管芯104是管芯102的镜像。在一个实施例中,管芯102和管芯104不同,例如,每个管芯表示单个管芯设计的已被裂开为多个物理管芯且随后经由互连被连结在一起(例如,被电气耦合在一起)的部分。
[0066] 在一个实施例中,管芯的网格互连不依赖于至另一管芯的连接来起作用,例如,例如如果互连106不起作用或不存在,则数据信号(例如,请求和/或回答)可被往回循环到那个管芯中。在一个实施例中,此类信号不是阻挡信号(例如,不是围栏)。
[0067] 多个物理上分开的管芯中的每个管芯中的高速缓存一致性电路是可以在主模式和从模式之间切换的。在一个实施例中,管理电路(例如,控制器)用于将多个物理上分开的管芯中的每个管芯中的高速缓存一致性电路中的一个电路设置为主电路,并且例如将其余高速缓存一致性电路设置为相对于该主电路的从电路。高速缓存一致性电路可以在控制器内,该控制器例如图25-28中的(多个)控制器。
[0068] 图2A图示根据本公开的实施例的硬件处理器200A。在所描绘的实施例中,管芯202和管芯204比管芯206、管芯208、管芯210和管芯212小。所描绘的管芯中的每个管芯经由互连(INT)耦合到邻近管芯。管芯202被描绘为具有与管芯206之间的两个连接(例如,分立互连)。管芯204被描绘为具有与管芯208之间的不同数量的(例如,三个)连接(例如,分立互连)。管芯206被描绘为具有与管芯208之间的四个连接(例如,分立互连)。管芯210被描绘为具有与管芯212之间的不同数量的(例如,三个)连接(例如,分立互连)。
[0069] 管芯的网格互连的交点(例如,管芯206的交点214或交点216)可以是例如由电路组件进入网格互连的接入点。在一个实施例中,在其相应的管芯上具有不同尺寸的多个(例如,任何)网格配置通过本文中的某些实施例被耦合在一起。在一个实施例中,具有网格互连的管芯耦合至不具有网格互连的管芯,例如,管芯218在图2A中被描绘为通过单个互连(INT)耦合至管芯206的网格互连。
[0070] 图2B图示根据本公开的实施例的硬件处理器200B。在所描绘的实施例中,管芯202和管芯204比管芯206、管芯220、管芯222和管芯212小。管芯220被描绘为包括与管芯222不同的网格互连,例如,具有不同数量的交点。图2B图示在某些实施例中,多个管芯中的某些管芯可以是不同的(例如,在一个实施例中,它们不是对称的)。图2B图示在某些实施例中,管芯上的网格互连可以与不同管芯上的另一网格互连不同(例如,在一个实施例中,它们不是对称的)。
[0071] 图3图示根据本公开的实施例的硬件处理器300。为清楚起见,未在每个管芯中示出网格互连,但是可以如在图1或图2中那样利用网格互连。图3图示三维堆叠式架构。多个管芯可在任何单个方向上延伸(例如,利用在每个管芯之间的(多个)互连)。在所描绘的实施例中,管芯302和管芯304在第一单个平面上延伸,并且管芯306和管芯308在不同的第二单个平面上延伸,该不同的第二单个平面与第一单个平面横向地间隔开。管芯可附接至另一基板(例如,安装基板(未描绘))。
[0072] 在某些实施例中,第一管芯例如经由该第一管芯与一个或多个其他管芯之间的电气连接(例如,往和/或返于这一个或多个其他管芯)与这一个或多个其他管芯通信。可在管芯中的一个或多个管芯中和/或在管芯之间的互连中利用(例如,包括发射机电路和/或接收机电路的)收发机。收发机(例如,收发机电路)可包括物理传输层(例如,PHY)电路(例如,输入/输出PHY或I/O PHY)。收发机可用于多个管芯之间的通信,多个管芯例如包括分裂管芯处理器布置的多个管芯。在一个实施例中,多个管芯中的一个或多个管芯的I/O端口(例如,网格线)中的一个或多个I/O端口电气耦合至另一个或多个管芯的I/O端口(例如,网格线)。在一个实施例中,多个管芯中的一个或多个管芯包括管芯内的网格互连,并且每个网格互连可使该管芯的I/O端口(例如,网格线)中的一个或多个I/O端口(例如,在管芯边界跨越处)电气耦合至另一管芯的网格互连的I/O端口(例如,网格线)。可定制管芯的电气耦合以实现优化的功率和等待时间性能。耦合(例如,线)可以是双向的,可以是单向的,或可以是双向和单向两者的组合。连接多个管芯收发机(例如,I/O PHY)并允许多个管芯收发机之间的信令的物理介质可以是互连或其他电气连接。
[0073] 收发机(例如,I/O PHY)通道和/或互连通道(例如,通信通道)可以是可编程的以便以处理器(例如,网格互连)(例如,管芯上)线数据传输速率(例如,数据速率)的倍数运行。例如,数据的时钟计时(例如,时钟计时率)的一倍(1X)(例如,PHY)速率可以是互连和/或收发机(例如,PHY I/O)(例如,通道)数据传输速率(例如,数据速率)与管芯(例如,网格互连或网格线)数据传输速率(例如,数据速率)之间的1:1比率。例如,数据的时钟计时(例如,时钟计时率)的两倍(2X)(例如,PHY)速率可以是互连和/或收发机(例如,PHY I/O)(例如,通道)数据传输速率(例如,数据速率)与管芯(例如,网格互连或网格线)数据传输速率(例如,数据速率)之间的2:1比率。在一个实施例中,互连与收发机的直接耦合至该互连的多个部分具有相同的数据速率,例如,与管芯的内部(例如,网格内)互连数据速率不同。作为另一示例,其他比率是可能的,例如,3X、4X、5X、6X、7X、8X、9X、10X等。用于收发机(例如,PHY I/O)的时钟计时方案可以是源同步的(例如,用于针对每个线的更高带宽性能)或共时钟的(例如,用于更低带宽目标)。
[0074] 图4图示根据本公开的实施例的第一管芯的发射机电路402,该第一管芯的发射机电路402通过互连406耦合至第二管芯的接收机电路404。图4示出将两个管芯连接在一起以例如用于这两个管芯之间的数据传送的收发机(例如,PHY I/O)的高级别(例如,源同步的时钟计时)电路图。发射机电路402包括产生(例如,放大)信号的多个发射机(412A、412B、412C、412D)。接收机电路404包括接收所发射的信号的多个接收机(414A、414B、414C、414D)(例如,采样器)。互连406包括多个通道(416A、416B、416C、416D)。在某些实施例中,互连可具有这些通道中的任何一个或多个通道。在某些实施例中,互连可包括多个的这些通道中的每个通道。在一个实施例中,这些通道中的每个通道是互连的分立的线。虽然描绘了单个数据通道416,但是可利用多个数据通道(例如,包括收发机电路402和/或接收机电路404的组件中的一个或多个组件的一个或多个相应实例),例如,其中单个时钟通道与那些多个数据通道相关联。
[0075] 在某些实施例中,收发机电路402、互连406和/或接收机电路404(例如,那些组件中的任何一个,或其任何组合)包括用于改变操作频率和/或针对那个操作频率的时钟速率的电路(例如,时钟电路)。在某些实施例中,为一个或多个操作频率和/或针对那一个或多个操作频率的一个或多个时钟计时率确定(例如,预先确定)(例如,如本文中所讨论的)时钟相位布置。作为示例,将从第一管芯发射至第二管芯的数据可由第一管芯的发射机电路402接收,且随后通过互连406、经由接收机电路404被发送到第二管芯。第一管芯可以正以某个操作频率操作,并且第二管芯可以正以某个(例如,相同的)操作频率操作,但是时钟电路(例如,时钟电路408)可(例如,对于同一时钟周期)从多个时钟相位布置调整针对该操作频率的时钟相位布置(例如以及针对该操作频率的时钟计时率)。例如,针对操作频率的时钟相位布置可选择为使得在传输期间没有数据丢失或有最少量的数据丢失。在一个实施例中,管芯内互连以相对于被耦合至该管芯内互连的一个或多个管芯的不同(例如,管芯间)互连的操作频率的多个时钟计时率操作。
[0076] 作为一个示例,发射机电路402可从第一管芯的数据生成器421接收将被发射到接收机电路404(例如,包括接收机电路404的第二管芯)的数据。第一管芯的数据生成器421可以是第一管芯的处理器(例如,包括用于对指令解码的解码器以及用于执行经解码的指令以生成数据的执行单元的处理器)。将被发射的数据可包括第一数据(例如,数据流)(例如,数据D0)和(例如,分开的)第二数据(例如,数据流)(例如,数据D1)。
[0077] 来自发射机电路402(例如,发射机侧)的(例如,来自或基于第一管芯中的时钟信号的)的时钟信号可连同(例如,并发地连同)被发送到接收机电路404的数据(例如,有效载荷数据)一起被发送(例如,被转发)。时钟电路420可以是(例如,第一管芯中的网格的)第一管芯的内部(例如,主)时钟。时钟电路410可以是例如与第一管芯的内部(例如,主)时钟分开的单独的时钟生成器、和/或发射机电路402的专用时钟电路。多路复用器可根据控制信号来选择并输出多个输入中的一个输入。多路复用器(mux)428可被设置成例如基于控制信号提供来自时钟电路410或时钟电路420的时钟信号。多路复用器428可由功率管理电路432例如基于从功率管理电路(例如,功率管理控制器)接收的控制信号来控制。功率管理电路可控制操作频率和/或时钟计时率的切换,该操作频率和/或时钟计时率例如第一管芯中和/或(例如,经由互连被连接至第一管芯的)第二管芯中的操作频率和/或时钟计时率。可采用(例如,I/O PHY中的)本地和/或专用时钟电路(例如,时钟电路410)(例如,锁相环(PLL)电路)以通过过滤(例如,网格)障碍时钟抖动分量来实现更高的I/O带宽。
[0078] 在所描绘的实施例中,多路复用器428输出所接收的时钟信号(例如,图5和图6中的方波时钟信号)作为对多路复用器424的控制信号。多路复用器424还可从有效信号电路418取得第二输入,例如使得当该有效信号电缆418指示无效(例如,逻辑零)时,该多路复用器424不提供输出。随后,多路复用器424可例如经由发射机412B将数据(例如,有效载荷数据)从其输出端输出到数据通道416B。
[0079] 多路复用器430可被包括,使得来自多路复用器428的时钟信号输出通过多路复用器424和多路复用器430两者,以便例如复制经过多路复用器424的延迟。多路复用器430可具有作为接地的第一输入以及作为功率源的第二输入。在所描绘的实施例中,多路复用器430(例如,经由发射机412C)将其信号输出到时钟通道416C,并且(例如,经由发射机412D)将其信号输出到时钟逆通道416D。
[0080] 虽然在本文中的某些附图中将两个数据源(例如,D0和D1)(例如,将跨越管芯边界而至另一管芯的两个线或两个信号)描绘为共享单个数据通道,但是应理解,单个数据源(例如,线或信号)可利用单个数据通道,例如,数据通道412。
[0081] 例如,对于每个不同的操作频率,电路400的一个或多个组件可以是可从第一时钟计时率切换到不同的第二时钟计时率的。
[0082] 通过启用(例如,数据)有效信号(例如,仅当数据在连接(例如,数据链路,例如,链路的一个或多个通道)上的数据活跃(例如,将被用于数据传送)时才活跃),可采用时钟控来节省功率。有效信号控制器418可例如在第一管芯用于将数据发送到第二管芯时生成有效信号。在某些实施例中,数据信号(例如,数据有效载荷)与控制信号分开。有效信号电路418(例如,有效信号控制器)可以是功率管理电路(例如,功率管理控制器)的部分。功率管理电路可以是管芯的组件。每个管芯可具有其自身的功率管理控制器。有效信号电路418可断言有效或无效信号,例如以例如通过关闭接收机414B和/或414C(分别)来启动或停止从第一管芯(例如,从发射机电路402)到第二管芯(例如,到接收机电路404)接收和/或传递数据,和/或将数据传递出第二管芯(例如,传递出接收机电路404)。重定时器电路425可基于时钟相位布置对(例如,出自接收机414A的)数据有效信号重定时。
[0083] 接收机电路404可在互连406的有效通道416A上接收有效信号,在互连406的数据通道416B上接收数据信号,和/或在互连406的时钟通道416C和/或时钟通道416D上接收时钟信号(或逆信号、或作为选通信号的那些信号的组合)。重定时器电路425可对有效信号重定时,使得该有效信号与同该有效信号一起发送的(多个)数据和/或时钟信号同步。例如,可为一个或多个数据流发送有效数据信号,并且可将那个信号输出到AND(与)门422。AND门422可接收来自接收机电路404的时钟电路408的时钟信号,例如使得AND门422的输出被用于开启多个接收机414B和414C中的一个接收机(例如,其中在控制信号输入到接收机414B中之前,NOT(非)门(反相器)被包括)。如图5中所示,这允许数据从源D0、随后从源D1、随后再次从源D0的串行发射,并允许重复那个过程,使得数据信号在D0与D1之间交替(例如,服从于无论什么数据信号正在被输出,例如,逻辑高(例如,一)或逻辑低(例如,零))。多路复用器426可因此在从接收机414B输出数据与从接收机414C输出数据之间交替。控制信号(例如,AND门422的输出)用于在从接收机414B源送输出与从接收机414C源送输出之间切换多路复用器426输入。
[0084] 所描绘的时钟电路408接收来自发射机电路402的一个或多个输入时钟信号,并且用于将时钟边沿中的一个或多个时钟边沿与所接收的时钟信号(例如,数据通道416B上的有效载荷数据,该数据通道416B可以是多于一个的数据通道)对齐,使得所接收的数据被正确地接收(例如,使得从发射机电路402发送的数据与在接收机电路404处接收的数据匹配)。在一个实施例中,时钟电路408还使所接收的时钟信号的相位(并且不是频率)移位以根据需要将该相位与所接收的数据信号(例如,数据通道416B上的有效载荷数据)对齐。
[0085] 在一个实施例中,接收机电路404的时钟电路408包括电路,该电路用于将来自发射机电路402的所接收的时钟信号(例如,波形)的(例如,源同步的)时钟边沿与对应的所接收的数据信号(例如,不同于时钟信号)对齐(例如,相对于对应的所接收的数据信号(例如,不同于时钟信号)移位)以实现高性能定时,例如使得数据信号中的数据不被更改、不丢失、不被损坏、或不发生以上情况的组合。时钟电路408可包括时钟相位延迟生成器408A(例如,DLL电路)和/或相位内插器电路408B。在一个实施例中,由相位内插器(例如,相位内插器电路408B)执行时钟相位布置。在一个实施例中,相位内插器是调整时钟信号的相位(例如,对相位移位)的电路。在一个实施例中,相位内插器具有对于每个时钟相位的步长粒度等级(例如,2个、4个、6个、8个、10个、12个等),例如,步长粒度等级被均等地间隔开,并且该相位内插器可在那些步长中的任一步长处设置上升时钟边沿和/或下降时钟边沿,例如,如下文中参考图13进一步所讨论。
[0086] 可在接收机管芯的接收机电路404处采用时钟电路408(例如,包括延迟锁定环(DLL)电路)以适当地对齐源同步的时钟计时边沿以实现高性能定时(例如,从而实现有效的高速信令)。DLL电路可以是放置在数字电路的时钟路径中的负延迟门。在一个实施例中,时钟电路408是接收机电路404的组件。可采用(例如,I/O PHY中的)本地和/或专用时钟电路(例如,时钟电路410)(例如,锁相环(PLL)电路)以通过过滤(例如,网格)障碍时钟抖动分量来实现更高的I/O带宽。PLL电路可以是生成其相位与输入信号的相位有关的输出信号的控制电路。虽然存在不同类型的PLL电路,但是一个示例是具有在反馈环路中的可变频率振荡器和相位检测器的电路,例如,其中振荡器生成周期信号,并且相位检测器将那个信号的相位与输入周期信号的相位进行比较并调整振荡器以保持相位匹配。PLL可以是全数字PLL(ADPLL)。在一个实施例中,DLL电路使用可变相位(例如,延迟)块,并且PLL电路使用可变频率块。时钟电路408可包括控制寄存器409,该控制寄存器409例如用于存储时钟相位布置设置,例如,用于使时钟电路408应用那些设置。
[0087] 为了维持发射机电路和/或接收机电路(例如,I/O PHY)的高功率效率,可采用诸如以下技术:低摇摆信令,时钟门控,以及聚合多个(例如,大量)被服务的数据通道之间的源同步的时钟计时功率。例如,可以为2个、3个、4个、4个、6个、7个、8个、16个、32个、64个、128个、256个等数据通道中的每个数据通道或其任何子集利用一个被转发的源同步的时钟。数据通道416B仅是示例,并且可利用多个通道。在某些实施例中,时钟相位延迟生成器
408A(例如,DLL电路)为操作频率的时钟速率生成锁(例如,非时钟)时序(例如,如在图16中)(例如,如分别在图6和图7中的90度或180度的时钟相位锁定)。在某些实施例中,相位内插器电路408B将那些时钟信号细分为更精细的粒度。在某些实施例中,时钟电路408利用(例如,在当前数据发射之前)预定的时钟相位布置数据,例如,时钟相位延迟生成器408A(例如,DLL电路)和/或相位内插器电路408B两者利用预定的时钟相位布置数据。在一个实施例中,时钟相位延迟生成器408A是时钟相位控制器或时钟相位调整器。在一个实施例中,时钟相位延迟生成器408A维持到达(例如,第二管芯的)接收机(例如,采样器)的时钟相对于从(例如,第一管芯的)发射机进入的一个或多个输入时钟的某个相位关系。在某些实施例中,时钟相位延迟生成器408A生成时钟相位延迟,并且相位内插器电路408B用于进一步将那些时钟信号细分成更精细的粒度。在一个实施例中,时钟相位延迟生成器408A查找并利用锁代码以获得特定的时钟计时率和/或操作频率,和/或相位内插器电路408B查找并利用缓冲器设置以获得针对特定的时钟计时率和/或操作频率的相位内插器。例如,(例如,DLL的)锁代码可针对(例如,多个点中的)每个频率和/或每个进程电压和/或温度点而改变,并且相位内插器电路可执行那个(例如,DLL)锁代码内的(例如,更精细粒度的)时钟(例如,边沿)布置。一旦针对操作频率和时钟计时率的(例如,预定的)时钟相位布置被查找到并被更新到电路(例如,时钟电路408)中,数据就可由接收机电路接收,例如被输出到数据缓冲器434(例如,如在图21中)。
[0088] 图5图示根据本公开的实施例的针对第一时钟计时率的数据时序图501和时钟时序图502。在所描绘的实施例中,时钟时序图501图示用于针对1X时钟计时率相对于在接收机处接收的时钟信号来对数据进行时钟计入(clock in)的时钟信号的180度偏移(例如,图16中的clock_180)。数据时序图501图示可在时钟的每个下降沿读入1X时钟计时率的数据(例如,使利用图4的电路400传输的D0数据和D1数据交替)。如本文中所讨论,可利用(例如,相对于数据时序的)预定的时钟相位布置来布置时钟边沿。
[0089] 图6图示根据本公开的实施例的针对第二时钟计时率的数据时序图601和时钟时序图602。在所描绘的实施例中,时钟时序图601图示用于针对2X时钟计时率相对于在接收机处接收的时钟信号来对数据进行时钟计入的时钟信号的90度偏移(例如,图16中的clock_90)。数据时序图601图示可在时钟的上升沿和下降沿中的每个边沿处读入2X时钟计时率的数据(例如,使利用图4的电路400传输的D0数据和D1数据交替)。如本文中所讨论,可利用(例如,相对于数据时序的)预定的时钟相位布置来布置时钟边沿。
[0090] 图7图示根据本公开的实施例的第一管芯的发射机电路702,该第一管芯的发射机电路702通过互连706耦合至第二管芯的接收机电路704。图7示出将两个管芯连接在一起以例如用于这两个管芯之间的数据传送的收发机(例如,PHY I/O)的高级别(例如,源同步的时钟计时)电路图。发射机电路702包括产生(例如,放大)信号的多个发射机(712A、712B、712C、712D)。接收机电路704包括接收所发射的信号的多个接收机(714A、714B、714C、714D、
714E、714F)。互连706包括多个通道(716A、716B、716C、716D)。在某些实施例中,互连可具有这些通道中的任何一个或多个通道。在某些实施例中,互连可包括多个的这些通道中的每个通道。在一个实施例中,这些通道中的每个通道是互连的分立的线。虽然描绘了两个数据通道(即,数据通道716B和716D),但是可利用单个或者三个或更多个数据通道(例如,包括收发机电路702和/或接收机电路704的组件中的一个或多个组件的一个或多个相应实例),例如,其中单个时钟通道与那些多个数据通道相关联。例如,可通过以下方式使用单个数据源(例如,D0):将控制信号线从时钟电路710移除到多路复用器724,和/或移除多路复用器
724,和/或直接将数据从数据通道716B输出到单个接收机(例如,接收机714E)而不使用多路复用器726。
[0091] 在某些实施例中,收发机电路702、互连706和/或接收机电路704(例如,那些组件中的任何一个,或其任何组合)包括用于改变操作频率和/或针对那个操作频率的时钟速率的电路(例如,时钟电路)。在某些实施例中,为一个或多个操作频率和/或针对那一个或多个操作频率的时钟计时率确定(例如,预先确定)(例如,如本文中所讨论的)时钟相位布置。作为示例,将从第一管芯发射至第二管芯的数据(例如,有效载荷数据)可由发射机电路702接收,且随后通过互连706、经由接收机电路704被发送到第二管芯。第一管芯可以正以某个操作频率操作,并且第二管芯可以正以某个(例如,相同的)操作频率操作(例如,切换至某个(例如,相同的)操作频率),但是时钟电路(例如,时钟电路708)可(例如,对于同一时钟周期)从多个时钟相位布置调整针对该操作频率的时钟相位步骤(例如以及针对该操作频率的时钟计时率)。例如,针对操作频率的时钟相位布置可选择为使得在传输期间没有数据丢失或有最少量的数据丢失。
[0092] 作为一个示例,发射机电路702可接收来自第一管芯的数据生成器720和或数据生成器730(例如,它们可被组合为单个数据生成器)的、将被发射到接收机电路704(例如,包括接收机电路704的第二管芯)的数据。第一管芯的数据生成器720和/或数据生成器730可以是第一管芯的一个或多个处理器(例如,每个处理都包括用于对指令解码的解码器以及用于执行经解码的指令以生成数据的执行单元)。将被发射的数据可包括以下任何数据:第一数据(例如,数据流)(例如,数据D0)、(例如,分开的)第二数据(例如,数据流)(例如,数据D1)、(例如,分开的)第三数据(例如,数据流)(例如,数据D2)、(例如,分开的)第四数据(例如,数据流)(例如,数据D3)、或它们的任何组合。
[0093] 来自发射机电路702(例如,发射机侧)的(例如,来自或基于第一管芯中的时钟信号的)的时钟信号可连同(例如,并发地连同)被发送到接收机电路704的数据(例如,有效载荷数据)一起被发送(例如,被转发)。时钟电路710可以是(例如,第一管芯中的网格的)第一管芯的内部(例如,主)时钟、例如与第一管芯的内部(例如,主)时钟分开的单独的时钟生成器、和/或发射机电路702的专用时钟电路。
[0094] 作为互连706的组件或与互连706分开的组件,电路700(或本文中的其他电路)可包括用于将控制信号(例如,经由发射机电路702)从第一管芯(例如,经由接收机电路704)发送到第二管芯的控制通道。控制信号可由功率管理电路740(例如,功率管理控制器)发送,例如,被发送到接收机电路704(例如,接收机电路704的时钟电路708和/或第二管芯)。控制信号可在闭环模式与开环模式之间切换电路(例如,时钟电路)。功率管理电路可控制操作频率和/或时钟计时率的切换,该操作频率和/或时钟计时率例如第一管芯中和/或(例如,经由互连被连接至第一管芯的)第二管芯中的操作频率和/或时钟计时率。可采用(例如,I/O PHY中的)本地和/或专用时钟电路(例如,时钟电路710)(例如,锁相环(PLL)电路)以通过过滤(例如,网格)障碍时钟抖动分量来实现更高的I/O带宽。在一个实施例中,第一管芯用于基于使用来请求第二管芯(例如,第一管芯和第二管芯两者)以不同的频率和/或时钟计时率操作,例如,以(例如,单个)频率操作,并且当数据被备份(例如,在第一管芯中的缓冲器中)时增加时钟计时率,和/或以(例如,单个)频率操作,并且当数据未被备份(例如,第一管芯中的空的或未被填充的缓冲器)时降低时钟计时率。
[0095] 在所描绘的实施例中,时钟电路710输出时钟信号(例如,图8和图9中的方波时钟信号)作为对多路复用器724和/或多路复用器734的控制信号。多路复用器724随后可例如经由发射机712B将数据(例如,有效载荷数据)从该多路复用器724的输出端输出到数据通道716B,和/或多路复用器734随后可例如经由发射机712D将数据(例如,有效载荷数据)从该多路复用器734的输出端输出到数据通道716D。时钟信号可从发射机电路702被发射到发射机712,通过(例如,互连706的)时钟(例如,选通)通道716被发射到接收机电路704的接收机714C,以及例如随后被发射到时钟电路708。
[0096] 虽然在本文中的某些附图中将两对数据源(例如,D0/D1和D2/D3)(例如,将跨越管芯边界而至另一管芯的四个线或四个信号)描绘为共享单个数据通道,但是应理解,单个数据源(例如,线或信号)可利用单个数据通道,例如,数据通道716B或数据通道716D。
[0097] 例如,对于每个不同的操作频率,电路700的一个或多个组件可以是可从第一时钟计时率切换到不同的第二时钟计时率的。
[0098] 通过启用(例如,数据)控制信号(例如,仅当数据在连接(例如,数据链路,例如,链路的一个或多个通道)上的数据活跃(例如,将被用于数据传送)时才活跃),可采用时钟门控来节省功率。例如,当第一管芯用于将数据发射到第二管芯时,功率管理电路740(例如,功率管理控制器)可生成有效数据和/或频率改变和/或时钟计时率改变信号。在某些实施例中,数据信号(例如,数据有效载荷)与控制信号分开。功率管理电路可以是管芯的组件。每个管芯可具有其自身的功率管理控制器。功率管理电路可断言有效信号或无效信号,例如以例如通过关闭(多个)发射机和/或(多个)接收机(分别)来启动或停止从第一管芯(例如,从发射机电路702)到第二管芯(例如,到接收机电路704)接收和/或传递数据,和/或将数据传递出第二管芯(例如,传递出接收机电路704)。
[0099] 接收机电路704可接收互连706的控制通道716A上的(例如,用于改变频率和/或时钟计时率的)控制信号、互连706的数据通道716B上的数据信号、互连706上的数据通道716D上的数据信号、和/或互连706的时钟通道716C上的时钟信号(或逆信号、或作为选通信号的那些信号的组合)。例如,功率管理电路740可将信号发送到接收机电路704(例如,接收机电路704的时钟电路708)以为接收机电路704(例如,接收机电路704的时钟电路708)启用某个频率和/或时钟计时率,例如,与发射机电路702相同的频率和/或时钟计时率。
[0100] 接收机722可接收来自接收机电路704的时钟电路708的时钟信号,例如使得接收机722的输出用于开启多个接收机714B和714E中的一个接收机(例如,其中NOT门(或反相器)被包括在进入接收机714B的控制信号输入之前)(并且例如关闭该对中的另一个接收机),和/或开启多个接收机714D和714F中的一个接收机(例如,其中NOT门(或反相器)被包括在进入接收机714D的控制信号输入之前)(并且例如关闭该对中的另一个接收机)。如图8中所示,这允许数据从源D0、随后从源D1、随后再次从源D0的串行发射,并且重复那个过程,使得数据信号在D0与D1之间切换(例如,服从于无论什么数据信号正被输出,例如,逻辑高(例如,一)或逻辑低(例如,零)),和/或这允许数据从源D2、随后从源D3、随后再次从源D2的串行发射,并且重复那个过程,使得数据信号在D2与D3之间切换(例如,服从于无论什么数据信号正被输出,例如,逻辑高(例如,一)或逻辑低(例如,零))。多路复用器726可因此在从接收机714B输出数据与从接收机714E输出数据之间交替。控制信号(例如,接收机722的输出)(例如,在源同步的时钟已经过DLL/PI/时钟分配电路后的所接收的源同步的时钟)可用于在从接收机714B源送输出和从接收机714E源送数据之间切换多路复用器726输入。多路复用器728可因此在从接收机714D输出数据与从接收机714F输出数据之间交替。控制信号(例如,接收机722的输出)(例如,在源同步的时钟已经过DLL/PI/时钟分配电路后的所接收的源同步的时钟)可用于在从接收机714D源送输出和从接收机714F源送数据之间切换多路复用器728输入。
[0101] 所描绘的时钟电路708接收来自发射机电路702的一个或多个输入时钟信号,并且用于将时钟边沿中的一个或多个时钟边沿与所接收的时钟信号(例如,数据通道716B和/或数据通道716D上的有效载荷数据,这些数据通道可以是多于两个的数据通道)对齐,使得所接收的数据被正确地接收(例如,使得从发射机电路702发送的数据与在接收机电路704处接收的数据匹配)。在一个实施例中,时钟电路708还使所接收的时钟信号的相位(并且不是频率)移位以根据需要将该相位与所接收的数据信号(例如,数据通道716B和/或数据通道716D上的有效载荷数据)对齐。
[0102] 在一个实施例中,接收机电路704的时钟电路708包括电路,该电路用于将来自发射机电路702的所接收的时钟信号(例如,波形)的(例如,源同步的)时钟边沿与对应的所接收的数据信号(例如,不同于时钟信号)对齐(例如,相对于对应的所接收的数据信号(例如,不同于时钟信号)移位)以实现高性能定时,例如使得数据信号中的信号不被更改、不丢失、不被损坏、或不发生以上情况的组合。时钟电路708可包括时钟相位延迟生成器708A(例如,DLL电路)和/或相位内插器电路708B。在一个实施例中,由相位内插器(例如,相位内插器电路708B)执行时钟相位布置。在一个实施例中,相位内插器是调整时钟信号的相位(例如,对相位移位)的电路。在一个实施例中,相位内插器具有对于每个时钟相位的步长粒度等级(例如,2个、4个、6个、8个、10个、12个等),例如,步长粒度等级被均等地间隔开,并且该相位内插器可在那些步长中的任一步长处设置上升时钟边沿和/或下降时钟边沿,例如,如下文中参考图13进一步所讨论。
[0103] 可在接收机管芯的接收机电路704处采用时钟电路708(例如,包括延迟锁定环(DLL)电路)以适当地对齐源同步的时钟计时边沿以实现高性能定时(例如,从而实现有效的高速信令)。DLL电路可以是放置在数字电路的时钟路径中的负延迟门。在一个实施例中,时钟电路708是接收机电路704的组件。可采用(例如,I/O PHY中的)本地和/或专用时钟电路(例如,时钟电路710)(例如,锁相环(PLL)电路)以通过过滤(例如,网格)障碍时钟抖动分量来实现更高的I/O带宽。PLL电路可以是生成其相位与输入信号的相位有关的输出信号的控制电路。虽然存在不同类型的PLL电路,但是一个示例是具有在反馈环路中的可变频率振荡器和相位检测器的电路,例如,其中振荡器生成周期信号,并且相位检测器将那个信号的相位与输入周期信号的相位进行比较并调整振荡器以保持相位匹配。PLL可以是全数字PLL(ADPLL)。在一个实施例中,DLL电路使用可变相位(例如,延迟)块,并且PLL电路使用可变频率块。时钟电路708可包括控制寄存器709,该控制寄存器709例如用于存储时钟相位布置设置,例如,用于使时钟电路708应用那些设置。
[0104] 为了维持发射机电路和/或接收机电路(例如,I/O PHY)的高功率效率,可采用诸如以下技术:低摇摆信令,时钟门控,以及聚合多个(例如,大量)被服务的数据通道之间的源同步的时钟计时功率。例如,可以为2个、3个、4个、4个、6个、7个、8个、16个、32个、64个、128个、256个等数据通道中的每个数据通道或其任何子集利用一个被转发的源同步的时钟。数据通道716B仅是示例,并且可利用多个通道。在某些实施例中,时钟相位延迟生成器
708A(例如,DLL电路)为操作频率的时钟速率生成锁(例如,非时钟)时序(例如,如在图16中)(例如,如分别在图8和图9中的90度或180度的时钟相位锁定)。在某些实施例中,相位内插器电路708B将那些时钟信号细分为更精细的粒度。在某些实施例中,时钟电路708利用(例如,在当前数据发射之前)预定的时钟相位布置数据,例如,时钟相位延迟生成器708A(例如,DLL电路)和/或相位内插器电路708B两者利用预定的时钟相位布置数据。在一个实施例中,时钟相位延迟生成器708A是时钟相位控制器或时钟相位调整器。在一个实施例中,时钟相位延迟生成器708A维持到达(例如,第二管芯的)接收机(例如,采样器)的时钟相对于从(例如,第一管芯的)发射机进入的一个或多个输入时钟的某个相位关系。在某些实施例中,时钟相位延迟生成器708A生成时钟相位延迟,并且相位内插器电路708B用于进一步将那些时钟信号细分成更精细的粒度。在一个实施例中,时钟相位延迟生成器708A查找并利用锁代码以获得特定的时钟计时率和/或操作频率,和/或相位内插器电路708B查找并利用缓冲器设置以获得针对特定的时钟计时率和/或操作频率的相位内插器。例如,(例如,DLL的)锁代码可针对(例如,多个点中的)每个频率和/或每个进程、电压和/或温度点而改变,并且相位内插器电路可执行那个(例如,DLL)锁代码内的(例如,更精细粒度的)时钟(例如,边沿)布置。一旦针对操作频率和时钟计时率的(例如,预定的)时钟相位布置被查找到并被更新到电路(例如,时钟电路708)中,数据就可由接收机电路接收,例如被输出到数据缓冲器735和/或数据缓冲器736(例如,如在图21中)。在一个实施例中,第一管芯包括一个或多个发射机电路(例如,图4中的发射机电路402或图7中的发射机电路702),并且第二管芯包括一个或多个接收机电路(例如,图4中的接收机电路404或图7中的接收机电路704)。
附加地或替代地,第二管芯可包括一个或多个发射机电路(例如,图4中的发射机电路402或图7中的发射机电路702),并且第一管芯可包括一个或多个接收机电路(例如,图4中的接收机电路404或图7中的接收机电路704),以便例如允许在这些管芯之间的双向通信。
[0105] 图8图示根据本公开的实施例的针对第一时钟计时率的数据时序图801和时钟时序图802。在所描绘的实施例中,时钟时序图801图示用于针对1X时钟计时率相对于在接收机处接收的时钟信号来对数据进行时钟计入的时钟信号的180度偏移(例如,图16中的clock_180)。数据时序图801图示可在时钟的每个下降沿读入1X时钟计时率的数据(例如,使利用图7的电路700传输的D0数据和D1数据交替,和/或使利用图7的电路700传输的D2数据和D3数据交替)。如本文中所讨论,可利用(例如,相对于数据时序的)预定的时钟相位布置来布置时钟边沿。
[0106] 图9图示根据本公开的实施例的针对第二时钟计时率的数据时序图901和时钟时序图902。在所描绘的实施例中,时钟时序图901图示用于针对2X时钟计时率相对于在接收机处接收的时钟信号来对数据进行时钟计入的时钟信号的90度偏移(例如,图16中的clock_90)。数据时序图901图示可在时钟的上升沿和下降沿中的每个边沿读入2X时钟计时率的数据(例如,使利用图7的电路700传输的D0数据和D1数据交替,和/或使利用图7的电路700传输的D2数据和D3数据交替)。如本文中所讨论,可利用(例如,相对于数据时序的)预定的时钟相位布置来布置时钟边沿。
[0107] 在一个实施例中,I/O PHY电路(例如,一个管芯的发射机电路和另一个或多个管芯的接收机电路)能够(例如,快速地)在多个不同的时钟计时率(例如,数据速率)(例如,1X、2X、4X等)之间改变,和/或时钟频率速率改变,以便例如支持在管芯的网格中采用的互连。在某些实施例中,针对例如在初始引导时的多个(例如,所有)可能的时钟计时率(例如,数据速率)和/或频率来校准用于(例如,接收机)时钟计时边沿对准的一个或多个时钟电路(例如,延迟锁定环(DLL)和相位内插器(PI))。在其中采用数字控制DLL+PI的实施例中,用于时钟计时率(例如,数据速率)中的每一个的校准信息、以及操作频率配置被存储(例如,存储在例如时钟电路中的存储器阵列中),并且当电路(例如,管芯)发起(例如,连接两个或更多个管芯的互连的)时钟计时率(例如,数据速率)和/或频率改变时被召回。这也可针对模拟控制的DLL+DP电路来实现,例如,通过使用模-数(A/D)转换器将模拟偏置点转换为数字信息以存储在存储器阵列中,并且当更新操作点时使用数-模(D/A)转换器往回转换为模拟偏置点。这些被召回的时钟(例如,DLL+PI)校准设置可用于覆盖当前时钟(例如,DLL+PI)校准设置以允许快速的时钟(例如,DLL+PI)锁和/或对新设置和/或操作点的校准。本文中的某些实施例允许在不同的时钟计时率(例如,数据速率)和/或频率之间的迅速转变。
[0108] 本文中的某些实施例提供新颖的电路和算法以允许运行中(on the fly)的快速且动态的I/O时钟计时率(例如,数据速率)和/或频率改变。在一个实施例中,通过经调谐的时钟相位(例如,通过DLL自动跟踪电路和训练PI扫描的组合)来促进管芯之间的I/O时序(例如,时钟计时率和/或操作频率)。在一个实施例中,训练全都发生在同一时刻(例如,一个训练会话)(例如,在制造时,在最终用户利用处理器前)。I/O时钟计时架构可以是源同步的,例如,被调谐至相对于一个或多个数据通道的特定相位关系以使I/O时序裕度最大化的被转发的时钟。图4和图7图示高级别时钟计时架构的示例。图5、图6、图8和图9图示描绘了相对于数据眼(例如,图5、图6、图8和图9中的每个图中的上部的数据眼D0和D1)的1X(单个时钟计时率)和2X(双倍时钟计时率)时钟计时关系。在某些实施例中,对时钟选通布置的细粒度控制允许最大性能。某些实施例通过针对小相位步长粒度(例如,1或约1皮秒(ps)递增)的DLL+PI的组合来实现这一点。图13(在下文中进一步讨论)示出DLL以及数字型PI内的数字延迟线的示例电路架构细节。那个DLL+PI的输出可以是一个时钟(例如,使用两个时钟边沿来定时)、或两个输出(例如,使用每个时钟的一个时钟边沿来定时)、或四个输出(例如,在4X时钟计时率的情况下)(例如,针对每个周期使用每个时钟的一个时钟边沿对所有4个数据位定时,或者替代地针对每个周期向外发送2个时钟并使用每个时钟的两个时钟边沿来对所有4个数据位定时)。注意,图5、图6、图8和图9示出单个时钟输出(例如,针对1X时钟计时率使用一个时钟边沿,或针对2X时钟计时率使用两个边沿来定时),但是图13示出两个输出以示出该电路和方法也可通过将每个时钟周期的仅一个时钟边沿用于定时而用于2X时钟计时。在某些实施例中,经调谐的时钟相位对于每个频率点以及那个频率点处的时钟计时率将是唯一的(例如,以及对于管芯内硬件和/或管芯至管芯的每个实例化是唯一的)。
[0109] 图10图示根据本公开的实施例的用于互连(例如,I/O)编程的流程图1000。流程图可被包括在管芯内(例如,发射机电路和/或接收机电路内)的电路(例如,有限状态机(FSM))中。图11图示根据本公开的实施例的时钟相位布置1100。参考图10和图11两者,可将(例如,第一管芯的)(例如,发射机电路的)时钟电路(例如,图4中的时钟电路410或时钟电路420或者图7中的时钟电路710)(例如,管芯的网格的PLL)设置到(例如,新的)所需的操作频率1002(例如,400兆赫兹(MHz)、500MHz、600MHz、700MHz、800MHz、900MHz、1千兆赫兹(GHz)、2GHz、3GHz、4GHz、5GHz等)。可在流程图1000中将(例如,第二管芯的)(例如,接收机电路的)时钟电路锁定到那个所需的(例如,网格)操作频率1004。时钟电路随后可在流程图1000中扫描其设置(例如,DLL设置和PI设置)1006以找到例如允许数据被发射(例如,“通过”而不是“失败”)的时钟相位布置(例如,值)(例如,代码)(例如,L1和R1代码)(例如,如参考图11所讨论)。在一个实施例中,扫描(例如,启用并测试)多个时钟相位布置(中的例如每个时钟相位布置)(例如,用于同一频率的时钟边沿布置),以找到失败-通过代码以及通过-失败代码,以便例如确定时钟相位布置(例如,DLL+PI)设置。对于每个时钟相位布置(例如,DLL+PI相位)设置,数据连同时钟信号(例如,其相位由DLL+PI代码设置确定)可从第一管芯被发射,并通过I/O链路(例如,互连)由第二管芯接收。一些时钟相位布置相对于由第二管芯正确地捕获数据而言可能是过早的(例如,“失败”),而一些时钟相位布置可允许由第二管芯正确地捕获数据(例如,“通过”)。在一个实施例中,找到通过的多个(例如,所有)时钟相位布置(例如,用于实现那些布置的设置)以及失败的多个(例如,所有)时钟相位布置,以便例如确定针对最好的(例如,最大定时裕度)可靠定时的最优设置。
[0110] 图11展示这些相位关系的示例。例如,可多次关闭并开启(例如,从高到低,随后从低到高)要发射的每个信号(例如,D0、D1、D2或D3)以生成图11中的眼图1102。(例如,与值“3”的设置对应的)失败-通过代码是眼图1102的与特定时钟(例如,DLL+PI)相位布置(例如,用于实现那个布置的(例如,接收机)时钟电路设置)对应的眼开口的左边沿,例如,眼图1102中由L1指示的“通过”前导边沿布置。(例如,与值“7”的设置对应的)通过-失败代码是眼图1102的与特定时钟(例如,DLL+PI)相位布置(例如,用于实现那个布置的(例如,接收机)时钟电路设置)对应的眼开口的右边沿,例如,眼图1102中由“拖尾”边沿布置R1指示。这些代码可以是用于实现那个布置的(例如,用于DLL和/或相位内插器的)设置,例如,代码可以是对存储了实现那个布置的电路设置值的存储阵列的索引。在一个实施例中,通过时钟相位(例如,边沿)布置数据的时钟相位布置数据(例如,左(L1)和右(R1))可用于确定最优时钟相位布置代码(OCP)。最优时钟相位布置(例如,针对L1和R1的OCP1)可以是与L1与R之间的中间相位对应的时钟相位布置(例如,DLL+PI设置),例如,OCP1=L1+(R1-L1)/2。在图
11中,这与针对OCP1的值“5”的设置对应。时钟相位布置(例如,DLL+PI设置)(例如,一个或多个时钟相位布置代码)可存储在存储器中。例如,图12图示根据本公开的实施例的包括时钟相位布置(例如,布置数据)的表1200。表1200仅是可能的数据结构格式和其他格式的示例。表可包括针对第一管芯(例如,管芯D1)经由耦合(例如,互连)将数据发射到第二管芯(例如,管芯D2)和/或第二管芯(例如,D2)经由耦合(例如,互连)将数据发射到第一管芯(例如,D1)的一个或多个条目。表1200的行1201包括针对以单个频率(例如,第一频率(f1))从管芯D1(例如,管芯D1的发射机电路)被发送到管芯D2(例如,管芯D2的接收机电路)的数据的多个时钟计时率的数据(例如,预定的时钟相位布置)。表1200的行1203包括针对以单个频率(例如,第一频率(f1))从管芯D2(例如,管芯D2的发射机电路)被发送到管芯D1(例如,管芯D1的接收机电路)的数据的多个时钟计时率的数据(例如,预定的时钟相位布置)。如本文中所讨论,可预先(例如,在处理器的运行时之前和/或在生成要发射的数据之前)用该数据填充表1200。使用来自图11的上述示例,表1200的行1201的条目1202可包括针对以单个频率(例如,第一频率f1)在D1至D2之间被发送的数据的多个时钟计时率的预定的时钟相位布置数据(例如,用于左时钟边沿布置、右时钟边沿布置或最优时钟相位布置的中心的代码)。在该示例中,条目1202包括对于第一操作频率f1处的第一时钟计时率(例如1X)的针对左时钟边沿(L1)的值(“3”)、针对最优时钟相位布置(OSP1)的中心的值“5”、以及针对右时钟边沿(R1)的值“7”。值1、值2、值3等可以指特定值,但是数字1、2、3等不一定是针对时钟相位布置的代码值或其他设置。可针对某个频率针对每个时钟计时率(以及例如管芯发射机电路和管芯接收机电路组合)执行对时钟相位布置(例如,代码)的扫描。
[0111] 在一个实施例中,最优时钟相位布置(例如,OCP=L+(R-L)/2)会导致分数。针对该分数结果的一个选项是向上或向下舍入OCP值(例如,总是执行相同的舍入类型)。第二选项是采用分数(例如,半步长)PI设置,例如,如果标准PI步长是整数(例如,1ps),则使用分数(例如,半步长)来生成那个整数步长的分数(例如,0.5)(例如,0.5ps)。作为示例,在OCP计算的结尾处,如果需要X.5(例如,6.5)的设置,则电路可去往PI设置X(例如,6),并且随后开启半步长设置以达到X.5(例如,6.5)。可(例如,在计算的结尾处)开启(例如,时钟电路中的)半步长硬件电路以增加半个步长。这么做的一个优势在于避免为了减小步长尺寸而增加PI电路的更多面积(例如,两倍的面积)。例如,如果PI用于在100ps之间内插,并且PI步长被选择为1ps,则可一次一个地开启100个晶体管(例如,参考图13所讨论的可变反相器)引脚,以实现1ps、2ps、3ps、4ps、……、100ps设置。因此为了实现45.5ps设置,一个实施例将会将整个内插器改变为每个为0.5ps的200个步长以生成45.5ps。在该示例中,现在这可利用200个晶体管引脚。然而,另一实施例使用原始的100个引脚,并且还仅增加一个晶体管半引脚,因此,为了实现45.5ps设置,45个完整的晶体管引脚和单个的半引脚被开启以达到
45.5ps设置。
[0112] 参考图10,例如,对于那个特定的操作频率(以及例如管芯发射机和管芯接收机组合),在流程图1000中,在步骤1010,可存储(多个)时钟相位布置(例如,一个或多个代码)。可针对每个操作频率重复(以及存储步骤1010)扫描步骤1006和/或计算步骤1008(如果被执行)直到完成步骤1012(例如,操作的频率点),和/或可针对每个时钟电路(例如,针对管芯内的每个DLL+PI实例化)以及针对被连接的所有管芯重复(以及存储步骤1010)扫描步骤
1006和/或计算步骤1008(如果被执行)。一旦完成,此处的互连编程(例如,表1200)完成步骤1014。随后可利用管芯间连接,例如,如下文中参考图14所讨论。
[0113] 作为(例如,接收机电路中的)时钟电路的示例,图13图示根据本公开的实施例的数字延迟锁定环(DLL)延迟线和数字相位内插器电路1300。在一个实施例中,电路(例如,图4的时钟电路408和/或图7的时钟电路708)包括电路1300的实例。在某些实施例中,例如为了抵消管芯至管芯以及管芯内的工艺、电压和/或温度变化,可优化每时钟通道(例如,被转发的源同步的时钟)的数据通道的比率以实现最佳性能。例如,可使用每多个(例如,32个、
64个、128个、256个、512个等)数据通道的单个被转发的源同步的时钟(例如,单个时钟通道),以便例如实现所需的粒度(例如,针对每个单个时钟相位的多个均等间隔的步长)(例如,在相邻的所接收的时钟边沿之间的多个步长)。在某些实施例中,用于时钟电路的每个操作点的控制这些数据通道的时钟电路(例如,DLL和PI)调谐信息例如由于物理(例如,工艺、电压和/或温度)变化和/或管芯上唯一的功率递送条件对于每个管芯将是唯一的。在一个实施例中,管芯至管芯连接(例如,互连)包括总共2048个数据通道,这总共2048个数据通道通过这些I/O通道将多个管芯连接在一起,随后使用每时钟通道(例如,时钟信号)128个数据通道的示例,将校准并存储用于总共32个独有的管芯跨越的独有的时钟设置(例如,时钟相位布置)(例如,DLL+PI)信息(2048/32=64个独有的I/O块实例以包括32个跨越)。电路
1300是包括DLL+PI两者功能的相位生成硬件的示意图。示意图的中心处的缓冲器1302是数字DLL延迟线,并且每个缓冲器生成延迟的(例如,几皮秒的)延迟值(例如,X数量的)。每个门(例如,门1308)可包括内插器电路1304和/或内插器电路1306,但是为清楚起见,仅描绘被连接至节点4和节点5的内插器(例如,多路复用)电路。内插器电路因此允许序列中的任何两个缓冲器(例如,如图中所示的节点ck2和ck3、或ck4和ck5)被路由到在示意图的顶部和底部处示出的数字相位内插器。相位内插通过改变两个“竞争的”可变反相器的强度来工作。例如,如果想要使ck4的相位失相于在示意图的顶部处的(上升沿)内插器电路1304,则将会启用mix_r_en[30:0]电路1310的所有31个引脚并禁用所有的mix_r_enb[30:0]电路
1312引脚,以便例如实现所需的粒度。如果想要ck5的相位失相于同一(上升沿)内插器电路
1304,则将完成正好相反的过程:禁用所有的mix_r_en[30:0]电路1310引脚并且启用所有的mix_r_enb[30:0]电路1312引脚,以便例如实现所需的粒度。如果想要正好处于ck4和ck5的中间的相位以失相于输出1314处的同一内插器电路1304,则将会正好启用一半的mix_r_en[30:0]电路1310引脚并且还正好启用一半的mix_r_enb[30:0]电路1312引脚,以便例如实现所需的粒度。如果想要处于ck4与ck5之间的通路的四分之一处的相位,则将会启用mix_r_en[30:0]电路1310引脚中的四分之三引脚并且启用mix_r_enb[30:0]电路1312引脚中的四分之一引脚等,以便例如实现所需的粒度。在示出的示意图的特定情况下,可在DLL延迟线的序列化时钟(ck)相位之间内插31个步长,但是可例如通过添加进一步的缓冲器/混合电路以实现所需粒度来实现任何数量。例如,如果想要使ck4的相位失相于在示意图的底部处的(下降沿)内插器电路1306,则将会启用mix_f_en[30:0]电路1316的所有31个引脚并禁用所有的mix_f_enb[30:0]电路1318引脚,以便例如实现所需的粒度。如果想要ck5的相位失相于同一(下降沿)内插器电路1306,则将完成正好相反的过程:禁用所有的mix_f_en[30:0]电路1316引脚并且启用所有的mix_f_enb[30:0]电路1318引脚,以便例如实现所需的粒度。如果想要正好处于ck4和ck5的中间的相位以失相于输出1320处的同一内插器电路1306,则将会正好启用一半的mix_f_en[30:0]电路1316引脚并且还正好启用一半的mix_f_enb[30:0]电路1318引脚,以便例如实现所需的粒度。如果想要处于ck4与ck5之间的通路的四分之一处的相位,则将会启用mix_f_en[30:0]电路1316引脚中的四分之三引脚并且启用mix_f_enb[30:0]电路1318引脚中的四分之一引脚等,以便例如实现所需的粒度。在示出的示意图的特定情况下,可在DLL延迟线的序列化时钟(ck)相位之间内插(例如,时钟相位粒度的)31个步长,但是可例如通过添加进一步的缓冲器/混合电路来实现任何数量。表
1200或其他数据结构可存储用于按需布置时钟相位的设置(例如,用于混合电路(例如,电路1310、1312、1314、1316)的设置)。输出1314和输出1320可(例如,由图4的时钟电路408和/或图7的时钟电路708)发送到接收机(例如,图4中的接收机414B、414C中的一个或多个、和/或图7中的接收机714B、714D、714E、714F中的一个或多个),以便例如对进入接收机的数据进行时钟计时(例如,对合适将数据锁存到锁存电路中进行触发)。
[0114] 图14图示根据本公开的实施例的用于通过互连进行频率转变的流程图1400。电路(例如,FSM)可利用流程图1400。在一个实施例中,第一管芯将数据发送到第二管芯和/或第二管芯从第一管芯接收数据利用该流程1400。在一个实施例中,当第一管芯导致例如第二管芯中和/或第一管芯与第二管芯之间的互连中的操作频率和/或时钟计时率的转变时,流程1400发生。流程1400包括:1402——使管芯之间的(例如,仅从第一管芯至第二管芯的)互连(和/或第二管芯和/或第二管芯上的网格互连)停止,例如,经由互连的环形屏障和/或回压信号电路来停止;1404——将时钟电路(例如,图4中的时钟电路410和/或时钟电路420或图7中的时钟电路710)锁定到新的所需操作频率和/或时钟计时率;1406:——对于每个时钟电路(例如,图4中的接收机时钟电路408或图7中的接收机时钟电路708)、对于(例如,所有)管芯上的(例如,所有)实例化检取所存储的(多个)时钟相位布置,例如,(多个)OCP值和/或其他DLL+PI设置;1408——将所有时钟电路(例如,DLL)置于开环模式;1410——利用在检取步骤1406中检取到的时钟相位布置数据更新时钟相位布置(例如,覆盖现有设置);1412——将时钟电路(例如,图4中的接收机时钟电路408或图7中的接收机时钟电路708)往回置于闭环模式(例如,使得时钟电路根据经更新的时钟相位布置来运行);以及1414——恢复互连通信量(例如,仅从第一管芯至第二管芯)(例如,释放回压和/或由环形屏障设置的屏障)(例如,和/或恢复第一管芯和/或第二管芯中的网格内通信量)。
[0115] 在某些实施例中,一旦正常操作后引导已开始,电路就拾取存储在用于所需的起始频率和/或时钟计时率的存储器(例如,阵列)中的时钟相位布置(例如,DLL+PI)信息,并且用该数据(例如,代码)来更新时钟电路(例如,DLL+PI)。可对于(例如,被耦合的接收机电路的)每个时钟电路(例如,DLL+PI)实例化来做此。在一个而实施例中,电路用于:首先,(例如,通过使用回压机制)使互连中的数据传送停止;其次,将时钟电路(例如,DLL)置于开环模式并对于每个实例化和每个管芯、对于所需的操作频率和/或时钟计时率用管芯的相应时钟电路(例如,经训练的DLL+PI)代码来更新时钟电路(例如,DLL+PI)代码;第三,一旦代码被更新,就将时钟电路(例如DLL)往回置于闭环模式(例如,以允许时钟电路执行自动跟踪来补偿温度和电压漂移,例如与改变操作频率和/或时钟计时率不同);并且第四,(例如,通过释放回压、数据通信量停止机制)恢复互连上的数据转移。在一个实施例中,对来自电路的流程的总结是:对于每个频率操作点和/或针对那些频率操作点的时钟计时率对I/O(例如,(多个)时钟电路)时钟相位调谐;(例如,在处理器的首次引导启动序列时)将值存储在存储阵列中;每当期望频率和/或时钟计时率时,(例如,从寄存器/存储器)检取时钟相位信息;以及用这些值来更新时钟电路(例如,DLL+PI)以获得与否则将需要长得多的时间的自动校准/训练形成对照的快速更新(例如,本文中的某些实施例无缝地或在运行中进行到不同频率和/或时钟计时率的转变,例如,在1个、2个、3个、4个、5个、6个、7个、8个、9个或10个时钟周期内,例如,以允许经训练的代码从存储器阵列被检取并被更新到(多个)时钟计时电路(例如,DLL+PI偏移)控制寄存器)(例如,图4中的控制寄存器409或图7中的控制寄存器709)。在一个实施例中,当在正常操作期间发起频率和/或时钟计时率转变时(例如,接收机电路从发射机电路接收改变时钟计时率和/或操作频率的请求),通过互连而在管芯之间的数据流临时被停止(例如,达1个、2个、3个、4个、5个、6个、7个、8个、9个或10个时钟周期)以允许(例如,DLL+PI)时钟调谐更新来获得新操作点。在一个实施例中,功率管理电路(例如,功率管理控制器)引起(例如,控制)频率和/或时钟计时率转变。
[0116] 图15图示根据本公开的实施例的接收机电路1500的时钟计时架构。接收机电路1500可被用作DLL电路(例如,图4中的时钟相位延迟生成器(例如,DLL电路)408A或图7中的时钟相位延迟生成器(例如,DLL电路)708A)。接收机电路1500包括本地时钟缓冲器1502,该本地时钟缓冲器1502用于清除所接收的时钟(例如,所接收的(多个)时钟信号(例如,时钟正(clkp)和/或时钟负(clkn)))的边沿并且可去除时钟抖动。QLS是正交传感器。有限状态机(FSM)1504可包括第一状态和第二状态,在第一状态下,电路处于闭环模式(例如,在这种情况下,其中的设置可能无法改变),在第二状态下,电路处于开环模式(例如,在这种情况下,其中的设置可被改变)。
[0117] 图16图示根据本公开的实施例的用于1X和2X时钟计时率模式的时钟时序图(1604、1608)。时钟时序图(例如,其中,水平轴是时间的流逝,竖直轴是数据信号)1602和1606图示参考时钟,时钟时序图1604图示相对于参考时钟1602的180度偏移(例如,1X时钟计时率模式),并且时钟时序图1608图示相对于参考时钟1606的90度偏移(例如,2X时钟计时率模式)。本文中的时钟电路可例如根据针对特定电路的(例如,经训练的)时钟相位布置设置(例如,图12中的表1200)来执行(例如,进一步的)偏移。在一个实施例中,时钟电路(例如,图4中的时钟相位延迟生成器408A或图7中的时钟相位延迟生成器708A)用于当频率和/或时钟计时率改变将发生时查找用于(例如,以1X或2X模式)设置时钟时序图的设置,并且利用例如在数据结构中、例如来自表12的那些被查找到的值(例如,用于图中的点A和点B)。
例如,在2X模式中,线A被描绘为相对于线B的更长的时间流逝(例如,以指示电路已刻意地增加经训练的偏移以优化时钟相位设置),但是210°设置(例如,将30°的经训练偏移增加到
180°偏移)是示例。
[0118] 图17图示根据本公开的实施例的用于1X和2X时钟计时率模式的时钟时序图1700。示图1700图示网格(例如,互连)数据A(例如,D0)和数据B(例如,D1)以及例如针对1X模式和
2X模式的多管芯(例如,结构)互连(例如,MDFI)接收机和发射机信号。图17图示对于同一频率相比处于1X模式和2X模式的数据信号的时钟信号。本文中的MDFI或其他电路可用在服务器中。
[0119] 图18图示根据本公开的实施例的包括通道修复电路的发射机电路1803的发射数据路径1800。发射数据路径1800包括管芯部分1801(例如,第一管芯)和发射机电路1803,例如,具有在它们之间的互连。在一个实施例中,发射机电路被用作图4中的发射机电路402或图7中的发射机电路702。通道修复多路复用器(mux)可从不是正在运行的(例如,需要修复的)通道(例如,线)与正在运行的通道(例如,线)之间切换。所导致的示例延迟通过本文中的某些组件来列举。
[0120] 作为一个示例,发射机电路1802可从第一管芯的数据生成器1820A和/或数据生成器1820B接收将被发射到接收机电路(例如,包括接收机电路的第二管芯)的数据。第一管芯的数据生成器1820A和/或数据生成器1820B可以是第一管芯的处理器(例如,包括用于将指令解码为经解码的指令的解码器以及用于执行经解码的指令以生成数据的执行单元的处理器)。将被发射的数据可包括第一数据(例如,数据流)(例如,数据D0)和(例如,分开的)第二数据(例如,数据流)(例如,数据D1)。
[0121] 来自发射机电路1802(例如,发射机侧)的(例如,来自或基于第一管芯中的时钟信号的)的时钟信号可连同(例如,并发地连同)被发送到接收机电路1804的数据(例如,有效载荷数据)一起被发送(例如,被转发)。时钟电路1820可以是(例如,第一管芯中的网格的)第一管芯的内部(例如,主)时钟。时钟电路1810可以是例如与第一管芯的内部(例如,主)时钟分开的单独的时钟生成器、和/或发射机电路1802的专用时钟电路。多路复用器可根据控制信号来选择并输出多个输入中的一个输入。多路复用器(mux)1828可例如基于控制信号提供来自时钟电路1810或时钟电路1820的时钟信号。多路复用器1828(和/或其他控制信号)可由功率管理电路1832例如基于从功率管理电路(例如,功率管理控制器)接收的控制信号来控制。功率管理电路可控制操作频率和/或时钟计时率的切换,该操作频率和/或时钟计时率例如第一管芯中和/或(例如,经由互连被连接至第一管芯的)第二管芯中的操作频率和/或时钟计时率。可采用(例如,I/O PHY中的)本地和/或专用时钟电路(例如,时钟电路1810)(例如,锁相环(PLL)电路)以通过过滤(例如,网格)障碍时钟抖动分量来实现更高的I/O带宽。
[0122] 发射机1803(例如,放大器)可(例如,从请求方,例如,请求互连和/或第二管芯以更快或更慢的频率和/或时钟计时率来接收数据的第一管芯)接收信号,该信号指示发射机电路1802将处于哪个(例如,时钟计时)模式,例如,1X或2X时钟计时率模式。发射机1805可接收指示数据有效的信号,例如,如上文中参考图4所讨论。多路复用器1828用于发送时钟信号(或者可无需使用多路复用器1828直接发送时钟信号)。电路组件1817和那个电路组件的其他此类实例可以是例如用于基于信号(例如,时钟)的上升沿来执行动作以及基于信号(例如,时钟)的下降沿来执行动作的上升沿触发的多路复用器和下降沿触发的多路复用器,例如,串行化器电路。
[0123] 发射机(TX)选择电路块1809可接收指示发射机电路(以及耦合至互连1806的接收机电路)将处于第一时钟计时模式还是第二(或是其他)时钟计时模式的信号。如参考图4所讨论,可利用正时钟信号(TxCLKP)和负时钟信号(TxCLKN),或者可利用单个时钟信号(例如,TxCLKP)(例如,如参考图7所讨论)。发射机(TX)有效电路块1811可接收指示发射机电路(以及耦合至互连1806的接收机电路)是否将发射数据的信号,例如,如上文中参考图4所讨论。发射机(TX)时钟电路块1813可接收用于将被发送的数据的时钟信号。发射机(TX)数据电路块1815可接收要例如以第一时钟计时模式或第二(或其他)时钟计时模式发射(例如,发射到耦合至互连1806的接收机电路)的数据的一个或多个数据信号。LCB一般可以是指本地时钟缓冲器1502,该本地时钟缓冲器1502用于清除所接收的时钟(例如,所接收的(多个)时钟信号)的边沿,并且可去除时钟抖动。在某些实施例中,使用调试电路1807以发送用于对电路进行扫描(例如,训练)的模式。例如,调试电路1807可多次发送信号(例如,D0、D1、D2或D3)(例如,关闭和开启)(例如,从高到低,随后从低到高)以生成图11中的眼图1102,以便例如根据图10中的流程图1000来训练电路(例如,从而生成图12中的表1200)。指示发射机电路1802将处于哪个(例如,时钟计时)模式中(例如,1X或2X时钟计时模式)的(例如,由发射机1803接收的)(例如,来自请求方的,例如,请求互连和/或第二管芯以更快或更慢的频率和/或时钟计时率接收数据的第一管芯)时钟计时率信号可进一步在针对每个时钟计时率的模式之间切换发射机数据电路块1815。TD[*]可以指发射数据路径,并且星号可以用针对那个通道的号来替换,例如,数据D0可在TD[0]上被发射。在一个实施例中,发射机电路1802可(例如,向互连1806)输出时钟信号(例如,TxCLKP或TxCLKN中的任一个或两者)、以及一个或多个数据信号(例如,TD[*],其中*是通道号)、有效信号(例如,TValidP或TValidN中的任一个或两者)、时钟计时率信号(例如,TSelect,例如,是一个或多个位)、或上述各项的任何组合。输出正信号和负信号的电路可将输入端上的反相器用于那个电路以使正信号反相来产生负信号。在某些实施例中,例如,给定可能实现多管芯处理器的I/O(例如,PHY)(例如,高)通道计数,冗余的通道可被包括在I/O(例如,PHY)中,以例如允许硅后处理和封装后组件缺陷修复。在高层级上的一种修复方案包括在TX通道和RX通道两者内的相邻I/O通道之间的被多路复用的路径,这些被多路复用的路径可被适当地编程以修复例如由于硅后处理缺陷和/或封装(例如,互连)组件缺陷而导致的任何缺陷通道。
[0124] 图19图示根据本公开的实施例的针对发射机电路的1X时钟计时率模式的时钟时序图1900。在一个实施例中,时钟时序图1900用于例如处于1X时钟计时率模式的图18中的电路。
[0125] 图20图示根据本公开的实施例的针对发射机电路的2X时钟计时率模式的时钟时序图2000。在一个实施例中,时钟时序图2000用于例如处于2X时钟计时率模式的图18中的电路。
[0126] 图21图示根据本公开的实施例的包括时钟跨越缓冲器的接收机电路2104的接收机数据路径2100。RD[*]可以指接收机数据路径,并且星号可以用针对那个通道的号来替换,例如,数据D0可在RD[0]上被接收。在一个实施例中,接收机电路2104(例如,经由互连2106,例如,在一个实施例中,互连2106耦合至图18中的互连1806或与图18中的互连1806相同)被耦合到发射机电路。接收机电路2104包括用于例如从互连2106接收信号的一个或多个输入端。所描绘的接收机电路2104包括用于接收一个或多个时钟信号的时钟接收机2103(例如,以获得信号RxCLKP(其中P代表正)和/或RxCLKN(其中N代表负))、有效信号接收机
2111(例如,以获得信号RValidP和/或RValidN)、时钟计时率接收机2109(例如,以获得信号RSelect)、一个或多个数据接收机(2115A、2115B)(例如,以获得RD[0]和RD[1],其中0和1是两个不同通道(例如,信号)的示例),但是可利用上述各项的任何组合。在一个实施例中,接收机电路2104被耦合至图18中的发射机电路1802,使得每个TD[*]被耦合至相应的RD[*](例如,以便交替地发送数据D1和数据D1),TxCLKP被耦合至RxCLKP,TxCLKN被耦合至RxCLKN,TValidP被耦合至RValidP,TValidN被耦合至RValidN,TSelect被耦合至RSelect,或上述方式的任何组合。
[0127] 接收机电路2104包括时钟电路2108(例如,DLL或DLL+PI)。在一个实施例中,时钟电路2108接收来自发射机电路(例如,图18的发射机电路1802)的时钟信号,以将来自发射机电路的所接收的时钟信号(例如,波形)的(例如,源同步的)时钟边沿与(多个)对应的所接收的(例如,与时钟信号不同的)数据信号对齐(例如,相对于(多个)对应的所接收的数据信号对来自发射机电路的所接收的时钟信号的时钟边沿移位)以获得高性能定时,例如使得数据信号中的数据不被更改,不丢失,不被损坏,或不发生以上情况的任何组合。时钟电路2108可包括时钟相位延迟生成器(例如,DLL电路)和/或相位内插器电路,例如,如本文中所讨论。在一个实施例中,由相位内插器(例如,相位内插器电路)执行时钟相位布置。在一个实施例中,相位内插器是调整时钟信号的相位(例如,对相位移位)的电路。在一个实施例中,相位内插器具有对于每个时钟相位的步长粒度等级(例如,2个、4个、6个、8个、10个、12个等),例如,步长粒度等级被均等地间隔开,并且该相位内插器可在那些步长中的任一步长处设置上升时钟边沿和/或下降时钟边沿,例如,如参考图13进一步所讨论。
[0128] 可在接收机管芯的接收机电路2104处采用时钟电路2108(例如,包括延迟锁定环(DLL)电路)以适当地对齐源同步的时钟计时边沿以实现高性能定时(例如,从而实现有效的高速信令)。DLL电路可以是放置在数字电路的时钟路径中的负延迟门。在一个实施例中,时钟电路2108是接收机电路2104的组件。可采用(例如,I/O PHY中的)本地和/或专用时钟电路(例如,图4中的时钟电路410)(例如,锁相环(PLL)电路)以通过过滤(例如,网格)障碍时钟抖动分量来实现更高的I/O带宽。PLL电路可以是生成其相位与输入信号的相位有关的输出信号的控制电路。虽然存在不同类型的PLL电路,但是一个示例是具有在反馈环路中的可变频率振荡器和相位检测器的电路,例如,其中振荡器生成周期信号,并且相位检测器将那个信号的相位与输入周期信号的相位进行比较并调整振荡器以保持相位匹配。PLL可以是全数字PLL(ADPLL)。在一个实施例中,DLL电路使用可变相位(例如,延迟)块,并且PLL电路使用可变频率块。时钟电路2108可包括控制寄存器2107,该控制寄存器2107例如用于存储时钟相位布置设置,例如,用于使时钟电路2108应用那些设置。
[0129] 接收机缓冲器同步器2152可利用时钟信号(例如,基于时钟相位布置设置的经修改的时钟信号)以:(例如,利用接收机2115、接收机2115B、锁存器(例如,触发器)2154C和/或锁存器(例如,触发器)2154D)对数据进行时钟计入;(例如,利用接收机2111和/或锁存器(例如,触发器)2154A)对有效信号进行时钟计入;(例如,利用接收机2109和/或锁存器(例如,触发器)2154B)对时钟计时率信号进行时钟计入;或者进行以上操作的任何组合。在某些实施例中,那些数据项中的一个或多个可被发送到相应的缓冲器(例如,缓冲器2150A、2150B、2150C和2150D)。接收机缓冲器同步器2152可接收这些信号(例如,基于时钟相位布置设置的经修改的时钟信号)中的一个或多个,以对数据进行缓冲并将对应的数据信号发送到管芯2103,例如,发送针对有效数据(例如,Valid)、时钟计时率(例如,Select[])、和/或数据(例如,有效载荷)(例如,数据A[*]和/或数据B[*])的(例如,与从接收机被发送的信号匹配或基本上匹配的)对应信号集合,例如针对被转发的时钟信号的信号集合。
[0130] 图22图示根据本公开的实施例的针对接收机电路的1X时钟计时率模式的时钟时序图2200。在一个实施例中,时钟时序图2200用于例如处于1X时钟计时率模式的图21中的电路。
[0131] 图23图示根据本公开的实施例的针对接收机电路的2X时钟计时率模式的时钟时序图2300。在一个实施例中,时钟时序图2300用于例如处于2X时钟计时率模式的图21中的电路。
[0132] 如本文中所讨论的处理器可包括本文中讨论的特征或电路中的一个或多个。处理器可形成在集成电路的单个制造上(例如,作为单个管芯)。在一个实施例中,单个管芯可能具有妨害或移除管芯的某些功能的制造工艺缺陷。这种工艺缺陷的责任会随管芯面积增加而增加。处于构造损失风险的制造投资会随(例如,大型处理器的)管芯面积增加而增加。处理器可形成于在一次设计发布中具有所有硬件功能的单个制造上,并且在那些新能力不在原始的设计发布中的情况下不使硬件支持的特征被增加、增强或优化。本文中的某些实施例可提供对上述问题的解决方案。
[0133] 本文中的某些实施例提供在高带宽和低等待时间电气互连上共享处理器主资源,使得访问远程管芯资源的性能相比单片式制造的集成管芯的性能更好、相同、或基本上相同(例如,非常接近)。本文中的某些实施例提供共享处理器基础结构资源以例如利用电气互连来实现对功率、热、时钟计时、重置、配置、错误处置等和它们的组合的亲近管理,使得访问(例如,在第一管芯与第二管芯之间的)管芯资源的性能相比单片式制造的集成管芯的性能更好、相同、或基本上相同(例如,非常接近)。本文中的某些实施例降低与单个大管芯尺寸相关联的制造良率风险。本文中的某些实施例允许缩放到更大数量的功能逻辑组件,以为良率恢复和/或诸如管芯可测试性之类的特殊用例提供冗余。本文中的某些实施例允许对设计周期是制造一个还是多个管芯(例如,从单个管芯设计分裂出的2路或4路)的单片式设计作出晚期决策。
[0134] 本文中的某些实施例允许组合不相似的管芯实现随时间推移对针对一些管芯的设计完成分阶段或允许一些管芯以更成熟或特殊的制造工艺来制造,并且允许更好地将来自先前产品的一些较旧的管芯货币化。本文中的某些实施例允许组合不相似的管芯和/或多个管芯以利用最少重新设计工作或无需重新设计工作来实现各种各样的独特处理器产品(例如,库存单元(SKU))。
[0135] 本文中的某些实施例提供了较大(例如,面积)管芯连接至较小(例如,面积)管芯或在其管芯上具有不同数量的物理连接的多个管芯。本文中的某些实施例允许从被复制多次以创建较大的单片域的相同和/或(多个)镜像版本的管芯来形成处理器。本文中的某些实施例允许以二维(例如,X-Y)和/或三维(例如,X-Y-Z)放大。
[0136] 图24图示根据本公开的实施例的硬件处理器2400,该硬件处理器2400具有经由互连2406共享资源的两个管芯(2402、2404)。虽然未描绘,但是可利用例如下文所讨论的某些电路(例如,(多个)解码单元、(多个)执行单元、(多个)核、高速缓存一致性电路、(多个)高速缓存或其他组件)。在一个实施例中,单个管芯2402上的处理器组件可经由电气互连被耦合在一起,该电气互连诸如图24中图示的高带宽和低等待时间互连。例如,在例如其中第一管芯2402的组件通过电气互连2406与第二管芯2404的组件通信的情况下,管芯2402可包括(例如,彼此通信的)组件2408中的一个或多个组件,并且管芯2404可包括(例如,彼此通信的)组件2410中的一个或多个组件。在一个实施例中,组件包括存储器(例如,在例如一致的管芯存储器中的高速缓存)。在一个实施例中,一致的管芯存储器是包括例如用于管理在例如一个或多个管芯中的高速缓存一致性的高速缓存一致性电路的电路。在一个实施例中,物理上分开的管芯2402用于通过互连2406与物理上分开的管芯2404通信。在一个实施例中,单个管芯2402上的处理器组件可经由电气互连被耦合在一起,该电气互连诸如图2中所图示的在每个管芯中描绘的(例如,管芯内)网格互连(2420、2422)。例如,管芯2402可包括组件2408中的一个或多个组件,这一个或多个组件可例如经由互连2420来与组件2408中的其他组件通信。例如,管芯2404可包括组件2410中的一个或多个组件,这一个或多个组件可例如经由互连2422来与组件2410中的其他组件通信。管芯和/或互连可包括用于在管芯2402与管芯2404之间传输数据的收发机(例如,本文中公开的(多个)接收机电路的一个或多个实例和/或(多个)发射机电路的一个或多个实例)。注意,本文中的单向箭头可以不要求单向通信,例如,它可以指示往返于那个组件的双向通信。通信路径中的任一或所有组合可用于本文中的某些实施例。在一个实施例中,管芯2402和管芯2404中的每一个都是完全相同的。在另一实施例中,管芯2404是管芯2402的镜像(例如,反转的镜像)。在一个实施例中,管芯2402和管芯2404不同,例如,每个管芯表示单个管芯设计的已被裂开为多个物理管芯且随后经由互连2406被连结在一起(例如,被电气耦合在一起)的部分。
[0137] 本文中的某些实施例提供跨被耦合的(例如,邻近或堆叠的)管芯的合并的基础结构。本文中的某些实施例提供基础结构消息收发电气互连,该基础结构消息收发电气互连支持以下一项或多项:多管芯接合和/或统一管理、以及管芯独立管理。基础结构管理可包括对以下各项的管理:电源、热、时钟、引导/重置、掉电/节流/超频模式、调试、测试、可靠性/可维护性、安全、性能监测和分析、配置/控制、和/或上述各项的任何组合。在某些实施例中,管芯之间的电气互连能够进行早期线信令,并且更复杂的消息收发使处于单片式主-从分层式模式的多管芯结合和/或统一管理能够对于广泛领域的处理器提供低等待时间和响应性支配权,具有对中央管理的显着增加的能力。本文中的某些实施例将多个物理上分开的管芯中的每个管芯中的基础结构电路中的一个基础结构电路中的管理电路指定为主电路,而将其他电路指定为相对于该主电路的从电路。
[0138] 在某些实施例中,管芯之间的电气互连以及分别连接到每个管芯启用独立于管芯的模式以提供单独可寻址的管芯访问,这意味着在封装内隔离管芯和管芯功能以独立地测试每个管芯,或者在早期部件遭受低制造良率时有条件地禁用经封装的产品中的一些管芯。多个物理上分开的管芯中的每个管芯中的基础结构电路是可以在主模式和从模式之间切换的。多个物理上分开的管芯中的每个管芯中的高速缓存一致性电路是可以在主模式和从模式之间切换的。可在可以在主模式和从模式之间切换的多个物理上分开的管芯中的每个管芯中提供高速缓存一致性电路。例如作为高速缓存的部分,可根据高速缓存一致性协议来利用高速缓存一致性电路,高速缓存一致性协议例如,四状态修改(M)、独占(E)、共享(S)和无效(I)(MESI)协议、或五状态修改(M)、独占(E)、共享(S)、无效(I)和转发(F)(MESIF)协议。高速缓存一致性电路可对于(例如,存储在存储器中的)数据项的多个副本在那个数据项的一个副本被改变时提供对该数据项的其他副本的更新,以便例如确保共享操作数的数据值以及时的方式贯穿系统被传播。
[0139] 在某些实施例中每个管芯具有独立地引导的能力以支持管芯制造缺陷测试和表征,例如,凭借相同的独立于管芯的测试装置在管芯被封装且合并的管芯被连接的情况下也是有效的。在某些实施例中,每个管芯具有并发地协商安全状态和处理错误状态的能力,以使主通信能够通过加密和故障容纳开销无障碍地通过。多个物理上分开的管芯中的第一管芯和第二管芯可在单个平面内延伸,并且多个物理上分开的管芯中的第三管芯可横向地与那个单个平面间隔开。
[0140] 在某些实施例中,主-从分层式引导/重置/功率管理支持将若干模块化管芯分片的模块化和可扩展性和/异构的模块化管芯,同时实现对可控制基础结构的产品特定的范围的可扩展访问。在某些实施例中,高产量制造(HVM)和测试革新提供晶片中的各个管芯到经封装的模块化管芯产品的紧密结合的流程。这可包括对于针对晶片-管芯-拣选和封装类流程的HVM测试的支持以及支持源自远程管芯属性的熔丝设置的熔丝编程。在某些实施例中,尽管存在管芯之间的私有边带消息收发的管芯暴露,但安全革新实现也允许管芯在没有非原生提议开销以及具有(例如,无限的)资源访问的情况下进行事务。
[0141] 图25图示根据本公开的实施例的用于硬件处理器2500的基础结构管理控制器(2508、2518),该硬件处理器2500具有经由互连2506共享资源的两个管芯(2502、2504)。图25图示根据本公开的实施例的硬件处理器2500。虽然未描绘,但是可利用例如下文所讨论的某些电路(例如,(多个)功率控制器、(多个)热传感器、(多个)电压传感器、(多个)PLL、(多个)熔丝阵列、或其他组件)。在一个实施例中,单个管芯2502上的处理器组件可经由电气互连被耦合在一起,该电气互连诸如图2中所图示的在每个管芯中描绘的(例如,管芯内)网格互连(2520、2522)。例如,管芯2502可包括组件2528中的一个或多个组件,这一个或多个组件可例如经由互连2520来与组件2528中的其他组件通信。例如,管芯2504可包括组件
2538中的一个或多个组件,这一个或多个组件可例如经由互连2522来与组件2538中的其他组件通信。管芯2504的组件2538中的任何组件和管芯2502的组件2528中的任何组件可通过电气互连2506来彼此通信。在一个实施例中,物理上分开的管芯2502用于通过互连2506与物理上分开的管芯2504通信。管芯和/或互连可包括用于在管芯2502与管芯2504之间传输数据的收发机(例如,本文中公开的(多个)接收机电路的一个或多个实例和/或(多个)发射机电路的一个或多个实例)。注意,本文中的单向箭头可以不要求单向通信,例如,它可以指示双向通信(例如,去往或来自那个组件)。通信路径中的任一或所有组合可用于本文中的某些实施例。在一个实施例中,管芯2502和管芯2504中的每一个都是完全相同的。在另一实施例中,管芯2504是管芯2502的镜像。在一个实施例中,管芯2502和管芯2504不同,例如,每个管芯表示单个管芯设计的已被裂开为多个物理管芯且随后经由互连被连结在一起(例如,被电气耦合在一起)的部分。在一个实施例中,管芯的电气互连不依赖于至另一管芯的连接来起作用,例如,例如如果互连2506不起作用或不存在,则数据信号(例如,请求和/或回答)可被往回循环到那个管芯中。在一个实施例中,此类信号不是阻挡信号(例如,不是围栏)。
[0142] 图26图示根据本公开的实施例的用于硬件处理器2600的基础结构管理控制器2620,该硬件处理器2600具有经由互连2601共享资源的四个管芯(2602、2604、2606、2608)。
为清楚起见,未在每个管芯中示出网格互连,但是可以如在图24或图25中那样利用网格互连。图26图示三维堆叠式架构。多个管芯可利用在每个管芯之间的(多个)电气互连在任何单个方向上延伸。在所描绘的实施例中,管芯2602和管芯2604在第一单个平面上延伸,并且管芯2606和管芯2608在不同的第二单个平面上延伸,该不同的第二单个平面与第一单个平面横向地间隔开。管芯可附接至另一基板(例如,安装基板(未描绘))。控制器2620可控制仅管芯2606中的功能。附加地或替代地,控制器2620可控制这些管芯中的一个或多个管芯(2602、2604、2608)中的功能。控制器2620可控制管芯中的一个或多个管芯的收发机(例如,本文中公开的(多个)接收机电路的一个或多个实例和/或(多个)发射机电路的一个或多个实例)。在一个实施例中,控制器2620控制在其自身的管芯2606中的收发机。在一个实施例中,控制器2620控制在管芯中的每个(例如,所有)管芯中的收发机。
[0143] 本文中的某些实施例提供合并的基础结构互连。本文中的某些互连例如在管芯设计后、在封装组装时和/或在平台组装时支持允许指定主管芯的双向引导握手信号和/或双向消息收发。本文中的某些互连支持管芯状态的指示,以便例如在回压(例如,信用通过)中和/或在长期缺乏就绪时启用这两个保持消息以允许自动响应消息(例如,非Power OK(功率良好))。本文中的某些互连例如甚至对于在管芯之间传递的阶段也支持逐阶段消息递送资源信用管理。本文中的某些互连对于管芯以相同的时钟频率操作的情况、支持管芯至管芯不受限时钟不确定性和/或全带宽匹配。
[0144] 本文中的某些互连支持在引导序列中(例如,非常早地)被向上提升到全功能以允许主管芯管理(多个)管芯引导流程(例如,对于大多数引导流程),从而例如允许系统功率管理单元和单个引导服务提供核以在整个多管芯处理器上运行BIOS。本文中的某些互连支持安全状态和/或功能/环境错误状态的传递以启用被解析的状态的单片式域,该被解析的状态的单片式域允许完整的管芯至管芯通信而无需附加的性能降低的解决方案(例如,加密),或允许不由于未见的错误而具有错过的故障容纳。本文中的某些互连支持用于通用边带消息收发(例如,控制数据和/或时钟数据)互连的分开的物理信道,而无需与第二专用功率管理边带消息收发互连之间的共享资源。这可支持不对死锁承担责任的功率/时钟/重置管理的无障碍专用信道。本文中的某些互连支持被称为边带地址桥的可编程消息地址转换以启用通过远侧管芯路由器和指定解码的寻址,该远侧路由器和指定解码在管芯被构造时不为发射管芯所知。
[0145] 本文中的某些实施例例如经由一个或多个控制器提供主、从指定。在某些实施例中,跨管芯的主-从资源管理由永久地在封装构造处指定主管芯的(多个)管芯凸块支持。例如,在引导期间,对那个值的读取将指示(例如,基础结构管理)控制器作为主设备继续或保持内部进展直到主设备接管。在某些实施例中,在当在晶片拣选中的测试中的操作命令在测试下的未封装管芯表现为没有从管芯的主管芯。在每个管芯都作为主管芯并独立地操作且没有其他管芯的这种情况下,可隔离管芯至管芯互连,例如,被带到安全信号值和所提供的回环路径(例如,对于如果被利用将耦合至互连的端口)。
[0146] 图27图示根据本公开的实施例的用于硬件处理器2700的基础结构管理控制器(2720、2722、2724、2726、2728、2730),该硬件处理器2700具有经由互连2701共享资源的六个管芯(2702、2704、2706、2708、2710、2712)。在所描绘的实施例中,管芯2710和管芯2712(例如,在面积上)比管芯2702、管芯2704、管芯2706和管芯2708小。图27图示在某些实施例中,多个管芯中的某些管芯可以是不同的(例如,在一个实施例中,它们不是对称的)。图27图示在某些实施例中,管芯上的基础结构管芯上互连可与不同管芯上的另一基础结构管芯上互连不同(例如,下一个实施例中,它们不是同一管芯的副本,或者不是关于同一管芯的对称体)。在一个实施例中,控制器2720是主控制器,而其他控制器是相对于那个主控制器的从控制器(例如,处于那个主控制器的控制)。
[0147] 图28图示根据本公开的实施例的用于硬件处理器2800的基础结构管理控制器(2822、2824、2826、2828、2830),该硬件处理器2800具有经由互连2801被耦合的六个管芯(2802、2804、2806、2808、2810、2712)。在所描绘的实施例中,管芯2810和管芯2812比管芯2802、管芯2804、管芯2806和管芯2808小。图28图示在某些实施例中,多个管芯中的某些管芯可以是不同的(例如,在一个实施例中,它们不是对称的)。图28图示在某些实施例中,管芯上的基础结构管芯上互连可与不同管芯上的另一基础结构管芯上互连不同(例如,下一个实施例中,它们不是同一管芯的副本,或者不是关于同一管芯的对称体)。在一个实施例中,控制器(2820、2822、2824、2826、2828、2830)中的每个控制器都是主控制器,例如,无一控制器是相对于另一主控制器的从控制器。
[0148] 在某些实施例中(例如,在每个管芯被单独地制造和/或测试的情况下,例如,即便当每个管芯根据本公开要利用互连被组装在多管芯封装中时),例如为经寻址以跨越第一管芯(例如,但是另一管芯不被连接至那个第一管芯边界,或者(例如,还)不期望或不启用跨越那个管芯边界的通信)的管芯边界的任何通信量提供回环能力。在一个实施例中,由控制器提供回环能力。如果(例如,跨越管芯边界的)请求是非通告请求(例如,所请求的事务引起响应以指示所请求的事务的成功或失败),则控制器可返回“不支持的请求”消息,和/或合法地引退/终止阻止正尝试跨越到另一管芯的消息。在一个实施例中,除非经专门授权,否则在管芯的发送组件处阻止将跨越管芯边界的消息(例如,通信量),但是在某些情况下(例如,广播消息用于将数据发送到多个管芯),妨碍消息可能不是期望的,因此,(例如,(多个)接收机管芯的)控制器可引退/终止/阻止那些消息。由于弹性或回环性质,对这些消息的引退、终止和/或阻止被图示为返回箭头(例如,返回箭头2840)。某些实施例因此可提供管芯之间的隔离。
[0149] 本文中的某些实施例提供合并的基础结构引导流。本文中的某些实施例提供多个物理上分开的分立管芯,这些物理上分开的分立管芯用于被电气地互连耦合至平台基础结构状态信令或用于通过主管芯(例如,具有主资格的管芯)来接收平台基础结构状态。在一个实施例中,这两种情况在引导序列的分开的时刻发生在同一平台中。本文中的某些实施例例如甚至在主-从单片式合并式管芯模式将最终管理来自主管芯的流的多个部分的情况下,也提供对用于一些序列的独立于管芯的引导流的重新使用。
[0150] 图29图示根据本公开的实施例的用于多管芯处理器2900中的数据交换的平面通信拓扑2902。在所描绘的实施例中,拓扑2902表示类似于如在具有多个处理器插槽/封装的平台中所见多个独立处理器的平面通信结构。
[0151] 图30图示根据本公开的实施例的用于多管芯处理器3000中的数据交换的分层式主从通信拓扑3004。在所描绘的实施例中,拓扑3004表示类似于如有平台所见的、如在具有单个处理器插槽/封装的平台中所见的单个处理器的分层式主-从通信结构。图26-30图示可通过引导启动的各个阶段来使用的两个结构的组合,例如,平面拓扑常支配早期阶段,而随着处理器在更大程度上被启用,分层式拓扑接管。
[0152] 图31A-图31B图示根据本公开的实施例的用于主从引导和独立于管芯的引导的流程图3100。流程图中的被划去的部分指示在根据本文中的实施例的引导期间可被移除的步骤。在另一实施例中,可利用那些被划去的部分。流程3100包括:在流程的左列(例如,对于管芯1)、中间列(例如,对于管芯2)和右列(例如,对于管芯3)提供多个物理上分开的管芯。三个管芯被用作示例,并且可利用任何数量的管芯。管芯被电气地耦合,例如,利用电气互连将多个物理上分开的管芯耦合在一起以形成硬件处理器。流程阶段3102以用于指示平台功率和时钟就绪的广播信号来发起序列。在该阶段,每个管芯被视为独立的处理器。流程阶段3104描绘由控制器(例如,硬件控制器)(例如,图25-图28中的(多个)控制器)针对基础结构启动而采取的动作。在所描绘的实施例中,在该阶段的结尾处启用用于主-从基础结构管理的管芯至管芯电气互连。流程阶段3106描绘聚合从处理器就绪指示的革新,并且例如仅发起主处理器用于更高级别的控制器功能。流程阶段3108动作是主控制器(例如,基础结构控制器)的设置和相关的基础结构的启动。来自本文中讨论的管芯至管芯基础结构电气互连的能力使主管芯能够将启动命令传递至从管芯并接收确收。流程阶段3110标识所有管芯已实现对于将被释放的重置的就绪的同步(synch)点。流程阶段3112包括由主控制器(例如,基础结构控制器)采取以启用广泛的处理器功能集的大的动作阶段。这可包括处理器核以及处理器核中的微代码。流程阶段3114具有拥有如BIOS配置和启用功能那样的最高管理级别的动作。流程阶段3116是流程的完成,因为具有向操作系统(OS)和软件的切换。管芯可包括经编程的或可编程熔丝,例如用于存储信息(例如,敏感信息,诸如但不限于加密密钥或制造商代码)的数据存储。划线部分可以是被添加以如本文中所讨论从多个管芯形成处理器的附加功能和消息。在某些实施例中,模块化管芯基础结构互连在本文中所讨论的管芯互连(例如,管芯间互连)之间。在一个实施例中,启用互连是开启(例如,第一管芯中的)发射机电路和(例如,第二管芯中的)接收机电路(并且例如在(例如,第一管芯中的)发射机电路和(例如,第二管芯中的)接收机电路之间建立通信),该发射机电路和接收机电路例如本文中公开的(多个)接收机电路的一个或多个实例和/或(多个)发射机电路的一个或多个实例。在本文中的某些实施例中,基础结构控制器包括例如如本文中所讨论的功率管理电路。在某些实施例中,网格互连是单个管芯内的例如连接那个管芯的组件的互连(例如,管芯内互连)。
[0153] 本文中的某些实施例提供跨管芯的合并的网格。本文中的某些实施例提供多个物理上分开的(例如,分立的)管芯,这些管芯用于由电气互连被电气地耦合在一起以形成更大的处理器(并且例如具有更多能力)。本文中的某些实施例提供跨多个管芯的单个共享的高速缓存一致性域以在整个处理器上形成单片式高速缓存域。多个物理上分开的管芯中的第一管芯和第二管芯可被附接在单个平面中,并且在与那个单个平面横向地间隔开的取向上附接多个物理上分开的管芯中的第三管芯。本文中的某些实施例提供电气互连以实现低等待时间、高带宽的管芯至管芯一致的互连连接,例如,与单片式体验相同或基本上相同。相对于单个管芯的带宽性能等同性是可实现的,例如,虽然时钟不确定性补偿和互锁的排队的时钟跨越与低路由路径跨越相同或几乎逼近,但是等待时间和空闲功率节省能力可使相对于单个管芯(例如,单片式)情况的功耗增长最小化。本文中的某些实施例提供对甚至跨管芯的端对端目的地资源信用管理的支持。分开的管芯可在用于源至目的地信用管理以及用于事务合并器(例如,在路由中使用的网格“时钟极性”)的事务资源状态中呈现显着的不确定性。本文中的某些实施例利用在收发机电路(例如,系统结构-结构交叉电路)中执行的排队和分派解决了在跨越进入另一管芯结构时的资源/路由不确定性。本文中的某些实施例利用高性能时钟跨越(例如,一个或多个缓冲器,其可被称为透明队列(TQ),例如,如在图21中的集群缓冲器中)提供极低的管芯跨越等待时间和/或解决时钟对齐不确定性。
[0154] 虽然未描绘,但是在贯穿所有附图的某些附图中,可利用例如如本文中所讨论的某些电路(例如,(多个)解码单元、(多个)执行单元、(多个)核、高速缓存一致性电路、(多个)高速缓存或其他组件)。
[0155] 图32图示根据本公开的实施例的硬件处理器3200。为清楚起见,未在每个管芯中示出网格互连,但是可以如在图1、图2A、图2B、图33或图34中那样利用网格互连。图32图示三维堆叠式架构。多个管芯可利用在每个管芯之间的(多个)电气互连在任何单个方向上延伸。在所描绘的实施例中,管芯3202和管芯3204在第一单个平面上延伸,并且管芯3206和管芯3208在不同的第二单个平面上延伸,该不同的第二单个平面与第一单个平面横向地间隔开。管芯可附接至另一基板(例如,安装基板(未描绘))。
[0156] 在一个实施例中,将硅插入器(例如,si-插入器)用作物理制造技术来实现多管芯架构。在该实现中,可在形成所有其他管芯的基底的不同管芯(例如,硅)中实现用于在两个或更多个管芯之间实现桥接的金属线。基底管芯可具有硅通孔(TSV),用于将功率递送至管芯和/或将I/O信号继续向外路由至板/外部连接器。或者,基底管芯可不具有TSV,并且可通过某种形式的外围线键合来提供功率递送和I/O突破。
[0157] 本文中的某些实施例提供多个物理上分开的分立管芯,这些管芯用于由电气互连被电气地耦合在一起以形成更大且更有能力的处理器。本文中的某些实施例在那个互连上提供单个共享的高速缓存一致性域以在整个处理器上形成单片式高速缓存域。本文中的某些实施例包括与每个管芯内部数据传输的原生协议的通信,并且不需要使通过管芯之间的电气互连被发射或接收的数据分组化的开销,也不需要对这些数据串行化的开销。本文中的某些实施例允许根据管芯之间的单个或多个同时事务协议的传输。
[0158] 本文中的某些实施例允许多个管芯具有相对时钟对齐不确定性、不同的功率源、不同的管芯制造工艺偏斜、以及不同的管芯温度。本文中的某些实施例允许一个管芯以与那个硬件处理器的另一个或多个管芯不同的频率来运行。本文中的某些实施例允许互连具有可分割的独立的功率域、时钟域和/或重置域,以便例如通过禁用网格互连的行和/或列来有助于良率恢复。在某些实施例中,电气互连允许(例如,非常高的)交叉带宽,但还具有最小的等待时间和功率影响。本文中的某些实施例提供网格回环设计,从而例如容忍管芯至管芯差异。
[0159] 本文中的某些实施例将条目添加到(例如,收发机内的)查找表(LUT)中,以指示数据(例如,高速缓存行)是否将跨越物理管芯边界以通过两个管芯之间的互连。本文中的某些传输协议实现多个管芯之间的(例如,高速)互连和/或管芯边界的无缝跨越。替代于将那些协议用作管芯至管芯连接,本文中的某些实施例可使用其他解决方案,例如,利用插入器。本文中的某些互连包括(例如,收发机中的)结构仲裁块电路,该结构仲裁块电路用于在不迫使源针对潜在指示延迟的情况下适配事务目的地资源状态中的不确定性,并且将事务合并器适配到远程管芯结构中的开放事务路由槽中。在某些实施例中,电气互连结构仲裁块电路(例如,控制器)位于接收机电路或发射机电路中的一个处。本文中的某些互连包括硅后可调谐缓冲器(例如,透明队列(TQ)),例如,用于支持高带宽和低等待时间以实现时钟对齐不确定性、不同功率源、不同管芯制造工艺偏斜和/或不同管芯温度之中的管芯交叉。在某些实施例中,如果尽管管芯处于不同的功率源、不同的管芯制造工艺偏斜和不同的管芯温度而两个域仍正以相同的频率和经管理的时钟不确定性运行,则电气互连缓冲器可不具有等待时间影响。在某些实施例中,电气互连缓冲器位于接收机电路或发射机电路中的仅一个处。在某些实施例中,互连缓冲器位于发射机电路和接收机电路两者处。
[0160] 图33图示根据本公开的实施例的硬件处理器3300。在所描绘的实施例中,管芯3302和管芯3304比管芯3306、管芯3308、管芯3310和管芯3312小。所描绘的管芯中的每个管芯经由(例如,管芯间)互连(INT)耦合到邻近管芯。管芯3302被描绘为与管芯3306之间具有两个分立的互连,例如,包括本文中公开的(多个)接收机电路的一个或多个实例和/或(多个)发射机电路的一个或多个实例的互连。管芯3304被描绘为具有与管芯3308之间的不同数量的(例如,三个)分立的互连。管芯3306被描绘为具有与管芯3308之间的四个分立的互连。管芯3310被描绘为具有与管芯3312之间的不同数量的(例如,三个)分立的互连。管芯的网格互连的交点(例如,管芯3306的交点3314或交点3316)可以是由电路组件进入网格互连的接入点。在一个实施例中,在其相应的管芯上具有不同尺寸的多个(例如,任何)网格配置通过本文中的某些实施例被耦合在一起。在一个实施例中,具有网格互连的管芯耦合至不具有网格互连的管芯,例如,管芯3318在图33中被描绘为通过单个互连(INT)耦合至管芯
3306的网格互连。虽然在某些实施例中讨论的网格互连,但是可利用其他互连拓扑(例如,环形、星形、树形、完全连接的网格、部分连接的网格等)。
[0161] 图34图示根据本公开的实施例的硬件处理器3400。在所描绘的实施例中,(例如,具有相同尺寸的)管芯3402和管芯3404比管芯3406、管芯3408、管芯3410和管芯3412小。管芯3406被描绘为包括与管芯3408不同的网格互连,例如,具有不同数量的交点(例如,交点3414)和/或收发机(例如,收发机3416)。图34图示在某些实施例中,多个管芯中的某些管芯可以是不同的(例如,在一个实施例中,它们不是对称的)。图34图示在某些实施例中,管芯上的网格互连可以与不同管芯上的另一网格互连不同(例如,在一个实施例中,它们不是对称的)。
[0162] 本文中的某些实施例供应一致性资源和网格事务。本文中的某些实施例提供主管芯控制器,用于跨所有管芯发现资源条件,以建立资源能力、资源地址表和/或路由性能偏置表。主控制器的某些实施例遍历预期可能的资源,并且通过读取远程熔丝或寄存器且基于成功的握手来扣除。主控制器的某些实施例具有预编程的映射集合,用于配置资源表(例如,信用)、网格查找表(LUT)、地址转换服务(例如,系统地址映射)等以允许跨管芯的网格遍历。所选择的预编程的映射可基于所标识的资源。
[0163] 多个管芯之间的电气互连(例如,和/或(多个)收发机电路)的某些实施例提供与管芯上集成(例如,网格)互连的带宽匹配的非常高的带宽。多个管芯之间的电气互连(例如,和/或(多个)收发机电路)的某些实施例提供(例如,非常)低的等待时间,例如,该等待时间与管芯上集成互连的等待时间匹配或基本上匹配。本文中的某些互连(例如,和/或(多个)收发机电路)包括与每个管芯内部数据传输的原生协议的通信,和/或不需要对通过管芯之间的电气互连被发射或接收的数据分组化的开销,也不需要对这些数据的串行化的开销(例如,使对互连的等待时间影响最小化)。本文中的某些互连(例如,和/或(多个)收发机电路)包括在不需要错误保护的情况下对通信的带宽降低,作为增加数据传送效率和实现减少的等待时间的方法。本文中的某些互连(例如,和/或(多个)接收机电路)包括利用用于更新并转变电气互连的时序同步的最小(例如,单个数位)时钟周期的运行中的动态传送速率转变(例如,与管芯上通信总线频率改变匹配)。
[0164] 本文中的某些互连(例如,和/或(多个)收发机电路)提供减少的引脚计数,但允许全截面带宽(BW)(例如,时钟计时率),诸如,伴随着与管芯内的数据频率相比的4X数据速率而使用的1/4引脚,或者伴随着与管芯内的数据频率相比的2X数据速率而使用的1/2引脚。本文中的某些互连(例如,和/或(多个)收发机电路)提供减少的引脚计数,但允许可选择带宽(BW),诸如,对于与管芯内的数据频率相比的4X数据速率的2X带宽,或者对于与管芯内的数据频率相比的2X数据速率的1X带宽。本文中的某些互连(例如,和/或(多个)收发机电路)包括在作为两种模式的第一(例如,1X)带宽与不同的第二(例如,2X)带宽之间的动态且迅速的转变,这两种模式有条件地提供带宽性能方面的益处相对于在功率节省以及由进入低抖动时钟计时率中的附加时钟跨越导致的等待时间的降低的损失方面的益处的最优选择,和/或降低高性能传送可能具有的错误率。本文中的某些互连(例如,和/或(多个)收发机电路)提供第一(例如,1x)带宽模式与不同的第二(例如,更高或更低的)(例如,2x)带宽模式之间的动态且迅速的转变。本文中的某些互连(例如,和/或(多个)收发机电路)包括通信量流控制电路,该通信量流控制电路用于当转变时,例如当在时钟计时率(例如,1X、2X、4X等)之间转变时,和/或当在不同的操作频率(例如,频率速率)之间转变时,临时使通信量停止。
[0165] 本文中的某些互连(例如,和/或(多个)收发机电路)供应针对对于每个实例化和对于每个管芯的每个带宽(例如,时钟计时率)和频率模式对接收机、发射机和/或时钟计时电路的单独且独立的调谐,以便例如补偿管芯内和管芯至管芯工艺变化以及时域温度和电压变化。本文中的某些互连(例如,和/或(多个)收发机电路)包括允许在处理器级的适当处置(例如,重新引导等)的通信错误检测机制(例如,奇偶性或类似)
[0166] 本文中的某些实施例提供电气互连(例如,和/或(多个)收发机电路),该电气互连(例如,和/或(多个)收发机电路)已利用用于运行时改变期间的迅速参数查找的存储促进对发射机和接收机电路参数的多个变量的引导时多点表征扫描,运行时改变例如时钟频率、电压电平或时钟计时率(例如,1X、2X、4X等)的改变。本文中的某些实施例提供电气互连(例如,和/或(多个)收发机电路),该电气互连(例如,和/或(多个)收发机电路)提供对所存储的发射机和接收机电路参数重表征的周期性刷新,以重新捕捉改变的环境和电路条件。本文中的电气互连(例如,和/或(多个)收发机电路)的某些实施例在关键的运行时操作期间提供迅速的处理器时钟转变、功率转变和/或数据速率转变,并且例如仅在引导时或运行时中的不是处理器性能敏感的时期期间应用低运行多点扫描表征和参数记录。本文中的电气互连(例如,和/或(多个)收发机电路)的某些实施例提供管芯至管芯交换,该管芯至管芯交换优化显式的状态更新(例如,Rx DLL被锁定,Tx PLL被锁定,Tx占空比校正器(DCC)被锁定等)和/或减少来自假设定时器的等待时间。本文中的电气互连(例如,和/或(多个)收发机电路)的某些实施例提供在多点扫描表征之后是互连电路内的自主管理,例如,其不需要来自固件、BIOS和/或驱动器的管理。
[0167] 图35A-图35B图示根据本公开的实施例的用于针对I/O和时钟跨越的发射机电路和/或接收机电路启动序列的流程图。流程3500包括:3502——提供多个物理上分开的管芯;以及利用互连将这些物理上分开的管芯电气地耦合在一起以形成硬件处理器。流程3500包括用于高带宽I/O发射和接收电路以及用于低等待时间排队管芯至管芯时钟跨越的启动序列。在一个实施例中,功率管理电路(例如,功率管理控制器)引起(例如,控制)频率和/或时钟计时率转变。在一个实施例中,主控制器是管芯中的(例如,单个)控制器(例如,图25-图28中的(多个)控制器),例如,根据流程3500操作。流程3500包括:3504——将时钟电路(例如,接收机(Rx)时钟电路,例如,Rx DLL)置于开环模式;3506——查找针对频率、时钟计时率和/或电压值的(多个)新值(例如,(多个)时钟边沿布置),并将其应用于时钟电路(例如,接收机(Rx)时钟电路,例如,Rx DLL);3508——将时钟电路(例如,接收机(Rx)时钟电路,例如,Rx DLL)置于闭环模式;3510——时钟电路(例如,接收机(Rx)时钟电路,例如,Rx DLL)(例如,经由消息)指示它已被利用那些新值(例如,(多个)时钟边沿布置)锁定到闭环模式中;3512——根据那些新值来操作时钟电路(例如,接收机(Rx)时钟电路,例如,Rx DLL);3514——启用跨越管芯至管芯连接的数据(例如,启用队列,诸如,图21中的队列
2150A-2150D);3516——使互连的管芯至管芯线上的数据同步;3518——根据新值来启用(例如,Rx管芯上的)时钟电路;以及3520——对通信量解除阻挡,并且将完成发信令至主控制器。这可对于每个管芯(例如,经由互连被连接的分开的管芯中的每个管芯)来执行。
3522——可在主控制器(例如,主管芯)处聚合来自(例如,所有)其他管芯的完成信号。
[0168] (例如,主)控制器(例如,功率管理控制器)的某些实施例遍历预期可能的资源,并且通过读取远程熔丝或(多个)能力寄存器并基于管芯之间的成功握手来扣除。(例如,主)控制器(例如,功率管理控制器)的某些实施例具有预编程的映射集合以配置资源表(例如,信用)、网格查找表(LUT)(例如,图12中的表1200)、地址转换服务(例如,系统地址映射)等,以允许跨管芯的网格遍历。所选择的预编程的映射可基于所标识的资源。
[0169] (例如,电路,诸如但不限于功率管理电路的)某些实施例包括(例如,用于信用管理的)资源表:该硬件可存在于管芯内的许多组件中。它可以是由源到给定的目的地所拥有的资源的集合。一个示例是高速缓存控制器将请求发送到存储器控制器,例如,其中,高速缓存控制器需要与存储器控制器对应的信用的集合以进行发送。利用模块化管芯的实施例,可跨越管芯边界传递这些资源。在一个实施例中,主控制器具有预设映射,并且可例如在无需握手的情况下利用适当的值来对这些信用池编程。当存在可用的优化(例如诸如,非均匀存储器访问(NUMA)域,其中,资源被给予本地代理)时,主控制器还可更好地管理这些资源。
[0170] (例如,电路,诸如但不限于功率管理电路的)某些实施例包括用于互连的查找表(LUT),例如,其中与互连交互的每个电路(例如,接收机电路和/或发射机电路)包括对查找表的访问,以获得关于如何将通信量从源路由至目的地(例如,从从第一管芯上的核将数据发送到第二管芯上的高速缓存(例如,高速缓存控制器))的细节。可使用基于物理地址的散列函数来理解核将会将数据(例如,有效载荷数据)发送到哪个高速缓存控制器。散列输出可以是标识(ID)号。ID可用于向LUT表索引,并且LUT表输出供控制器(例如,发射机电路)知晓向哪里发送这些事务的指示(例如,以及其他信息)。LUT可由主控制器编程,并且可基于需要改变值。在针对模块化管芯的实施例中,主控制器可基于实例化结果来知晓附加的资源是可用的,随后对LUT表编程以包括去往(多个)远程管芯的路由信息。在一个实施例中,LUT将具有附加的位以向网格控制器通知这些事务正跨过管芯。LUT可被构建得足够大以覆盖远程管芯条目。例如,如果管芯0具有互连ID0-63,管芯1具有互连ID64-127,管芯2具有互连ID128-191,管芯4具有互连ID192-255,则LUT表可以从0-255。这是超集设计,并且可使用被构建的上限的预设概念。
[0171] (例如,电路,诸如但不限于功率管理电路的)某些实施例包括地址转换服务,例如,高速缓存控制器,其中,对于给定的物理地址,应当被路由至哪个存储器控制器。在此的细节可在系统引导和BIOS通过发现服务后由BIOS编程以确定知晓多少存储器资源被填充。但是在引导期间,主控制器可进行足够编程以具有用于供处理器从固件引导的路径,并且这可涉及主控制器对物理地址的至少被映射至固件的范围进行编程。
[0172] 本文中的某些实施例提供被定义为可缩放的(例如,可具有多于一个维度的分片)、灵活的(例如,连接不同种类的管芯(例如,不是相同的电路))、功率高效的(例如,支持时钟门控、真实I/O动态电压/频率缩放(DVFS)等)、低等待时间的(例如,高性能)、高带宽的、和/或高度可行/可制造的(例如,低的位错误率)的架构。本文中的某些实施例提供为数据中心用例构建的架构,数据中心用例常具有诸如低等待时间、高带宽、面积高效和低功率之类的冲突的要求。本文中的某些实施例提供无需牺牲性能而产生面积高效的、功率高效的强健的解决方案的架构。为了实现高度功率高效的、低等待时间的、面积高效的以及高连接性的解决方案,本文中的某些实施例提供可被减少例如因子x的数量的连接。在某些实施例中,为了实现高带宽,该架构动态地切换至(例如,乘以因子x的)更高速度,以便在无等待时间代价或适度的等待时间代价的情况下实现全带宽。
[0173] 图36图示根据本公开的实施例的流程图3600。流程3600包括:3602——提供多个物理上分开的管芯;以及3604——利用互连将这些物理上分开的管芯电气地耦合在一起以形成硬件处理器。
[0174] 图37图示根据本公开的实施例的流程图3700。流程3700包括:3702——利用互连将多个物理上分开的管芯电气地耦合在一起,其中,多个物理上分开的管芯中的第一管芯的第一发射机通过互连的、与该互连的时钟通道对应的至少一个数据通道被电气地耦合至多个物理上分开的管芯中的第二管芯的第二接收机电路;3704——从第一发射机电路接收将第二接收机电路改变到操作频率和针对该操作频率的时钟计时率的请求;3706——在数据存储设备中执行从对于针对不同操作频率中的每个单个频率的第一时钟计时率以及对于针对不同操作频率中的每个单个频率的不同的第二时钟计时率的多个预定的时钟相位布置查找用于操作频率以及针对该操作频率的时钟计时率的预定的时钟相位布置;以及3708——利用第二接收机电路、利用用于时钟通道上的操作频率和针对该操作频率的时钟计时率的预定的时钟相位布置、在至少一个数据通道上接收来自第一发射机电路的数据。
[0175] 在一个实施例中,硬件处理器包括:多个物理上分开的管芯;以及互连,该互连用于将这些物理上分开的管芯电气地耦合在一起。每个物理上分开的管芯可以是完全相同的。硬件处理器可进一步包括高速缓存一致性电路,该高速缓存一致性电路用于在单个高速缓存一致性域中管理多个物理上分开的管芯中的一个管芯的第一高速缓存和多个物理上分开的管芯中的另一管芯的第二高速缓存。硬件处理器可进一步包括高速缓存一致性电路,该高速缓存一致性电路用于在单个高速缓存一致性域中管理多个物理上分开的管芯中的每个管芯中的高速缓存。多个物理上分开的管芯中的每个管芯中的高速缓存一致性电路是可以在主模式和从模式之间切换的。多个物理上分开的管芯中的第一管芯和第二管芯可在单个平面内延伸,并且多个物理上分开的管芯中的第三管芯可横向地与那个单个平面间隔开。
[0176] 在另一实施例中,一种用于形成硬件处理器的方法包括:提供多个物理上分开的管芯;以及利用互连将这些多个物理上分开的管芯电气地耦合在一起。该提供步骤可包括提供多个完全相同的物理上分开的管芯。该方法可进一步包括:高速缓存一致性电路用于在单个高速缓存一致性域中管理多个物理上分开的管芯中的一个管芯的第一高速缓存和多个物理上分开的管芯中的另一管芯的第二高速缓存。该方法可进一步包括:提供高速缓存一致性电路,该高速缓存一致性电路用于在单个高速缓存一致性域中管理多个物理上分开的管芯中的每个管芯中的高速缓存。该方法进一步包括,在多个物理上分开的管芯中的能够在主模式和从模式之间切换的每个管芯中提供高速缓存一致性电路。该方法可进一步包括:将多个物理上分开的管芯中的第一管芯和第二管芯附接在单个平面中,并且以与那个单个平面横向地间隔开的取向来附接多个物理上分开的管芯中的第三管芯。
[0177] 在一个实施例中,一种硬件处理器包括:多个物理上分开的管芯;互连,用于将多个物理上分开的管芯电气地耦合在一起;多个物理上分开的管芯中的第一管芯的第一发射机电路;多个物理上分开的管芯中的第二管芯的第二接收机电路,第二管芯的第二接收机电路通过互连的、与该互连的时钟通道对应的至少一个数据通道被电气地耦合至第一管芯的第一发射机电路;以及时钟电路,该时钟电路用于:从第一发射机电路接收将第二接收机电路改变到操作频率以及针对该操作频率的时钟计时率的请求;引起在数据存储设备中从对于针对不同操作频率中的每个单个频率的第一时钟计时率以及对于针对不同操作频率中的每个单个频率的不同的第二时钟计时率的多个预定的时钟相位布置查找用于该操作频率以及针对该操作频率的时钟计时率的预定的时钟相位布置;以及使第二接收机电路利用用于时钟通道上的操作频率和针对该操作频率的时钟计时率的预定的时钟相位布置在至少一个数据通道上接收来自第一发射机电路的数据。针对操作频率的第一时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置两者可与针对所述操作频率的不同的第二时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置不同。时钟电路可以:当在开环模式中以用于操作频率和针对该操作频率的时钟计时率的预定的时钟相位布置更新了该时钟电路之后,切换到调整操作频率的闭环模式。每个物理上分开的管芯可以是完全相同的。硬件处理器可进一步包括高速缓存一致性电路,该高速缓存一致性电路用于在单个高速缓存一致性域中管理多个物理上分开的管芯中的一个管芯的第一高速缓存和多个物理上分开的管芯中的另一管芯的第二高速缓存。硬件处理器可进一步包括高速缓存一致性电路,该高速缓存一致性电路用于在单个高速缓存一致性域中管理多个物理上分开的管芯中的每个管芯中的高速缓存。硬件处理器可进一步包括在多个物理上分开的管芯中的能够在主模式和从模式之间切换的每个管芯中的高速缓存一致性电路。多个物理上分开的管芯中的第一管芯和第二管芯可在单个平面内延伸,并且多个物理上分开的管芯中的第三管芯可横向地与那个单个平面间隔开。
[0178] 在另一实施例中,一种方法包括:利用互连将多个物理上分开的管芯电气地耦合在一起,其中,多个物理上分开的管芯中的第一管芯的第一发射机通过互连的、与该互连的时钟通道对应的至少一个数据通道被电气地耦合至多个物理上分开的管芯中的第二管芯的第二接收机电路;从第一发射机电路接收将第二接收机电路改变到操作频率和针对该操作频率的时钟计时率的请求;在数据存储设备中执行从对于针对不同操作频率中的每个单个频率的第一时钟计时率以及对于针对不同操作频率中的每个单个频率的不同的第二时钟计时率的多个预定的时钟相位布置查找用于该操作频率以及针对该操作频率的时钟计时率的预定的时钟相位布置;以及利用第二接收机电路、利用用于时钟通道上的操作频率和针对该操作频率的时钟计时率的预定的时钟相位布置、在至少一个数据通道上接收来自第一发射机电路的数据。针对操作频率的第一时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置两者可与针对所述操作频率的不同的第二时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置不同。该方法可包括:当在开环模式中以用于操作频率和针对该操作频率的时钟计时率的预定的时钟相位布置更新了时钟电路之后,切换到调整操作频率的闭环模式。该方法可包括:其中,第一管芯和第二管芯是完全相同的物理上分开的管芯。该方法可进一步包括:提供高速缓存一致性电路,该高速缓存一致性电路用于在单个高速缓存一致性域中管理多个物理上分开的管芯中的一个管芯的第一高速缓存和多个物理上分开的管芯中的另一管芯的第二高速缓存。该方法可包括:提供高速缓存一致性电路,该高速缓存一致性电路用于在单个高速缓存一致性域中管理多个物理上分开的管芯中的每个管芯中的高速缓存。该方法可包括,在多个物理上分开的管芯中的能够在主模式和从模式之间切换的每个管芯中提供高速缓存一致性电路。该方法可包括:将多个物理上分开的管芯中的第一管芯和第二管芯附接在单个平面中,并且以与那个单个平面横向地间隔开的取向来附接多个物理上分开的管芯中的第三管芯。
[0179] 在又一实施例中,一种非暂态机器可读介质存储有代码,该代码当由机器执行时使该机器执行方法,该方法包括:利用互连将多个物理上分开的管芯电气地耦合在一起,其中,多个物理上分开的管芯中的第一管芯的第一发射机通过互连的、与该互连的时钟通道对应的至少一个数据通道被电气地耦合至多个物理上分开的管芯中的第二管芯的第二接收机电路;从第一发射机电路接收将第二接收机电路改变到操作频率和针对该操作频率的时钟计时率的请求;在数据存储设备中执行从对于针对不同操作频率中的每个单个频率的第一时钟计时率以及对于针对不同操作频率中的每个单个频率的不同的第二时钟计时率的多个预定的时钟相位布置查找用于该操作频率以及针对该操作频率的时钟计时率的预定的时钟相位布置;以及利用第二接收机电路、利用用于时钟通道上的操作频率和针对该操作频率的时钟计时率的预定的时钟相位布置、在至少一个数据通道上接收来自第一发射机电路的数据。针对操作频率的第一时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置两者可与针对所述操作频率的不同的第二时钟计时率的预定的时钟相位布置的前导边沿布置和拖尾边沿布置不同。该方法可包括:当在开环模式中以用于操作频率和针对该操作频率的时钟计时率的预定的时钟相位布置更新了时钟电路之后,切换到调整操作频率的闭环模式。该方法可包括:其中,第一管芯和第二管芯是完全相同的物理上分开的管芯。该方法可进一步包括:提供高速缓存一致性电路,该高速缓存一致性电路用于在单个高速缓存一致性域中管理多个物理上分开的管芯中的一个管芯的第一高速缓存和多个物理上分开的管芯中的另一管芯的第二高速缓存。该方法可包括:提供高速缓存一致性电路,该高速缓存一致性电路用于在单个高速缓存一致性域中管理多个物理上分开的管芯中的每个管芯中的高速缓存。该方法包括,在多个物理上分开的管芯中的能够在主模式和从模式之间切换的每个管芯中提供高速缓存一致性电路。该方法可包括:将多个物理上分开的管芯中的第一管芯和第二管芯附接在单个平面中,并且以与那个单个平面横向地间隔开的取向来附接多个物理上分开的管芯中的第三管芯。
[0180] 在另一实施例中,一种硬件处理器包括:多个物理上分开的管芯;互连,用于将多个物理上分开的管芯电气地耦合在一起;多个物理上分开的管芯中的第一管芯的第一发射机电路;多个物理上分开的管芯中的第二管芯的第二接收机电路,第二管芯的第二接收机电路通过互连的、与该互连的时钟通道对应的至少一个数据通道被电气地耦合至第一管芯的第一发射机电路;以及用于以下操作的装置:从第一发射机电路接收将第二接收机电路改变到操作频率以及针对该操作频率的时钟计时率的请求;引起在数据存储设备中从对于针对不同操作频率中的每个单个频率的第一时钟计时率以及对于针对不同操作频率中的每个单个频率的不同的第二时钟计时率的多个预定的时钟相位布置查找用于该操作频率以及针对该操作频率的时钟计时率的预定的时钟相位布置;以及使第二接收机电路利用用于时钟通道上的操作频率和针对该操作频率的时钟计时率的预定的时钟相位布置在至少一个数据通道上接收来自第一发射机电路的数据。
[0181] 在有益实施例中,硬件处理器包括:多个物理上分开的管芯;以及用于将这些物理上分开的管芯电气地耦合在一起的装置。
[0182] 在另一实施例中,一种装置包括数据存储设备,该数据存储设备存储代码,该代码当由硬件处理器执行时使硬件处理器执行本文中公开的任何方法。装置可以如在具体实施方式中所述。方法可以如在具体实施方式中所述。
[0183] 在又一实施例中,一种非暂态机器可读介质存储有代码,该代码当由机器执行时使机器执行包括如本文中所公开的任何方法的方法。
[0184] 指令集可包括一种或多种指令格式。给定的指令格式可定义各种字段(例如,位的数量、位的位置)以指定将要执行的操作(例如,操作码)以及将对其执行该操作的(多个)操作数和/或(多个)其他数据字段(例如,掩码),等等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,可将给定指令格式的指令模板定义为具有该指令格式的字段(所包括的字段通常按照相同顺序,但是至少一些字段具有不同的位的位置,因为较少的字段被包括)的不同子集,和/或定义为具有以不同方式进行解释的给定字段。由此,ISA的每一条指令使用给定的指令格式(并且如果经定义,则按照该指令格式的指令模板中的给定的一个指令模板)来表达,并包括用于指定操作和操作数的字段。例如,示例性ADD(加法)指令具有特定的操作码和指令格式,该特定的指令格式包括用于指定该操作码的操作码字段和用于选择操作数(源1/目的地以及源2)的操作数字段;并且该ADD指令在指令流中的出现将使得在操作数字段中具有选择特定操作数的特定的内容。已经推出和/或发布了被称为高级向量扩展(AVX)(AVX1和AVX2)和利用向量扩展(VEX)编码方案的SIMD扩展集(参见例如2017年7月的 64和IA-32架构软件开发者手册;并且参见2017年4月的架构指令集扩展编程参考;英特尔是英特尔公司或其在美国和/或其他国家的子公司的商标)。本文中的某些实施例根据或不根据通用串行总线(USB)标准来通信(例如,发送数据)。
示例性核架构、处理器和计算机架构
[0185] 处理器核能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。示例性核架构
有序和乱序核框图
[0186] 图38A是图示根据本公开的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图38B是示出根据本公开的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图38A-图38B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
[0187] 在图38A中,处理器流水线3800包括取出级3802、长度解码级3804、解码级3806、分配级3808、重命名级3810、调度(也被称为分派或发布)级3812、寄存器读取/存储器读取级3814、执行级3816、写回/存储器写入级3818、异常处置级3822和提交级3824。
[0188] 图38B示出处理器核3890,该处理器核3890包括前端单元3830,该前端单元3830耦合到执行引擎单元3850,并且前端单元3830和执行引擎单元3850两者都耦合到存储器单元3870。核3890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核3890可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
[0189] 前端单元3830包括分支预测单元3832,该分支预测单元3832耦合到指令高速缓存单元3834,该指令高速缓存单元3834耦合到指令转换后备缓冲器(TLB)3836,该指令转换后备缓冲器3836耦合到指令取出单元3838,该指令取出单元3838耦合到解码单元3840。解码单元3840(或解码器或解码单元)可对指令(例如,宏指令)解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元3840可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核3890包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元3840中,或以其他方式在前端单元3830内)。解码单元3840耦合到执行引擎单元3850中的重命名/分配器单元3852。
[0190] 执行引擎单元3850包括重命名/分配器单元3852,该重命名/分配器单元3852耦合到引退单元3854和一个或多个调度器单元的集合3856。(多个)调度器单元3856表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元3856耦合到(多个)物理寄存器堆单元3858。(多个)物理寄存器堆单元3858中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元3858包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元3858由引退单元3854重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元3854和(多个)物理寄存器堆单元3858耦合到(多个)执行集群3860。(多个)执行集群3860包括一个或多个执行单元的集合3862以及一个或多个存储器访问单元的集合3864。执行单元3862可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元3856、(多个)物理寄存器堆单元3858和(多个)执行集群3860示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元3864的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
[0191] 存储器访问单元的集合3864耦合到存储器单元3870,该存储器单元3870包括数据TLB单元3872,该数据TLB单元3872耦合到数据高速缓存单元3874,该数据高速缓存单元3874耦合到第二级(L2)高速缓存单元3876。在一个示例性实施例中,存储器访问单元3864可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元3870中的数据TLB单元3872。指令高速缓存单元3834还耦合到存储器单元3870中的第二级(L2)高速缓存单元3876。L2高速缓存单元3876耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
[0192] 作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线3800:1)指令取出3838执行取出级3802和长度解码级3804;2)解码单元3840执行解码级3806;3)重命名/分配器单元3852执行分配级3808和重命名级3810;4)(多个)调度器单元
3856执行调度级3812;5)(多个)物理寄存器堆单元3858和存储器单元3870执行寄存器读取/存储器读取级3814;执行集群3860执行执行级3816;6)存储器单元3870和(多个)物理寄存器堆单元3858执行写回/存储器写入级3818;7)各单元可牵涉到异常处置级3822;以及8)引退单元3854和(多个)物理寄存器堆单元3858执行提交级3824。
[0193] 核3890可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核3890包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
[0194] 应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如 超线程化技术中的同时多线程化)。
[0195] 尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元3834/3874以及共享的L2高速缓存单元3876,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。具体的示例性有序核架构
[0196] 图39A-图39B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
[0197] 图39A是根据本公开的实施例的单个处理器核以及它至管芯上互连网络3902的连接及其第二级(L2)高速缓存的本地子集3904的框图。在一个实施例中,指令解码单元3900支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存3906允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元3908和向量单元3910使用分开的寄存器集合(分别为标量寄存器3912和向量寄存器3914),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(L1)高速缓存
3906读回,但是本公开的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
[0198] L2高速缓存的本地子集3904是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集3904的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集3904中,并且可以与其他处理器核访问其自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自身的L2高速缓存子集3904中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
[0199] 图39B是根据本公开的实施例的图39A中的处理器核的一部分的展开图。图39B包括L1高速缓存3904的L1数据高速缓存3906A部分,以及关于向量单元3910和向量寄存器3914的更多细节。具体地,向量单元3910是16宽向量处理单元(VPU)(见16宽ALU3928),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元3920支持对寄存器输入的混合,通过数值转换单元3922A-B支持数值转换,并且通过复制单元3924支持对存储器输入的复制。写掩码寄存器3926允许掩蔽所得的向量写入。
[0200] 图40是根据本公开的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器4000的框图。图40中的实线框图示具有单个核4002A、系统代理4010、一个或多个总线控制器单元的集合4016的处理器4000,而虚线框的任选增加图示具有多个核4002A-N、系统代理单元4010中的一个或多个集成存储器控制器单元的集合4014以及专用逻辑4008的替代处理器4000。
[0201] 因此,处理器4000的不同实现可包括:1)CPU,其中专用逻辑4008是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核4002A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核4002A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核4002A-N是大量通用有序核。因此,处理器4000可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。
处理器4000可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
[0202] 存储器层次结构包括核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元的集合4006、以及耦合到集成存储器控制器单元的集合4014的外部存储器(未示出)。共享高速缓存单元的集合4006可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元4012将集成图形逻辑4008、共享高速缓存单元的集合4006以及系统代理单元4010/(多个)集成存储器控制器单元4014互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元4006与核4002A-N之间维持一致性。
[0203] 在一些实施例中,一个或多个核4002A-N能够实现多线程化。系统代理4010包括协调和操作核4002A-N的那些部件。系统代理单元4010可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核4002A-N以及集成图形逻辑4008的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
[0204] 核4002A-N在架构指令集方面可以是同构的或异构的;即,核4002A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。示例性计算机架构
[0205] 图41-44是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
[0206] 现在参考图41,所示出的是根据本公开一个实施例的系统4100的框图。系统4100可以包括一个或多个处理器4110、4115,这些处理器耦合到控制器中枢4120。在一个实施例中,控制器中枢4120包括图形存储器控制器中枢(GMCH)4190和输入/输出中枢(IOH)4150(其可以在分开的芯片上);GMCH4190包括存储器和图形控制器,存储器4140和协处理器4145耦合到该存储器和图形控制器;IOH4150将输入/输出(I/O)设备4160耦合到GMCH4190。
或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器4140和协处理器4145直接耦合到处理器4110,并且控制器中枢4120与IOH4150处于单个芯片中。存储器4140可包括高速缓存一致性和/或互连管理模块4140A,其例如用于存储代码,该代码当被执行时使处理器执行本公开的任何方法。
[0207] 附加的处理器4115的任选性在图41中通过虚线来表示。每一处理器4110、4115可包括本文中描述的处理核中的一个或多个,并且可以是处理器4000的某一版本。
[0208] 存储器4140可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢4120经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接4195来与(多个)处理器4110、4115进行通信。
[0209] 在一个实施例中,协处理器4145是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢4120可以包括集成图形加速器。
[0210] 在物理资源4110、4115之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
[0211] 在一个实施例中,处理器4110执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器4110将这些协处理器指令识别为具有应当由附连的协处理器4145执行的类型。因此,处理器4110在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器4145。(多个)协处理器4145接受并执行所接收的协处理器指令。
[0212] 现在参见图42,所示出的是根据本公开的实施例的第一更具体的示例性系统4200的框图。如图42中所示,多处理器系统4200是点对点互连系统,并且包括经由点对点互连4250耦合的第一处理器4270和第二处理器4280。处理器4270和4280中的每一个都可以是处理器4000的某一版本。在本公开的一个实施例中,处理器4270和4280分别是处理器4110和
4115,而协处理器4238是协处理器4145。在另一实施例中,处理器4270和4280分别是处理器
4110和协处理器4145。
[0213] 处理器4270和4280示出为分别包括集成存储器控制器(IMC)单元4272和4282。处理器4270还包括作为其总线控制器单元的一部分的点对点(P-P)接口4276和4278;类似地,第二处理器4280包括P-P接口4286和4288。处理器4270、4280可以经由使用点对点(P-P)接口电路4278、4288的P-P接口4250来交换信息。如图42中所示,IMC4272和4282将处理器耦合到相应的存储器,即存储器4232和存储器4234,这些存储器可以是本地附连到相应处理器的主存储器的部分。
[0214] 处理器4270、4280可各自经由使用点对点接口电路4276、4294、4286、4298的各个P-P接口4252、4254来与芯片组4290交换信息。芯片组4290可以任选地经由高性能接口4239来与协处理器4238交换信息。在一个实施例中,协处理器4238是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
[0215] 共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
[0216] 芯片组4290可以经由接口4296耦合到第一总线4216。在一个实施例中,第一总线4216可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
[0217] 如图42中所示,各种I/O设备4214可连同总线桥4218一起耦合到第一总线4216,该总线桥4218将第一总线4216耦合到第二总线4220。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器4215耦合到第一总线4216。在一个实施例中,第二总线4220可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线4220,这些设备包括例如键盘和/或鼠标4222、通信设备4227以及存储单元4228,该存储单元4228诸如可包括指令/代码和数据4230的盘驱动器或者其他大容量存储设备。此外,音频I/O4224可以被耦合到第二总线4220。注意,其他架构是可能的。例如,代替图42的点对点架构,系统可以实现多分支总线或其他此类架构。
[0218] 现在参考图43,示出的是根据本公开的实施例的第二更具体的示例性系统4300的框图。图42和43中的类似元件使用类似的附图标记,并且从图43中省略了图42的某些方面以避免混淆图43的其他方面。
[0219] 图43图示处理器4270、4280可分别包括集成存储器和I/O控制逻辑(“CL”)4272和4282。因此,CL4272、4282包括集成存储器控制器单元,并包括I/O控制逻辑。图43图示不仅存储器4232、4234耦合到CL4272、4282,而且I/O设备4314也耦合到控制逻辑4272、4282。传统I/O设备4315被耦合到芯片组4290。
[0220] 现在参考图44,示出的是根据本公开的实施例的SoC 4400的框图。图40中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图44中,(多个)互连单元4402被耦合到:应用处理器4410,其包括一个或多个核的集合202A-N的集合以及(多个)共享高速缓存单元4006;系统代理单元4010;(多个)总线控制器单元4016;(多个)集成存储器控制器单元4014;一个或多个协处理器的集合4420,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元4430;直接存储器访问(DMA)单元4432;以及用于耦合到一个或多个外部显示器的显示单元4440。在一个实施例中,(多个)协处理器4420包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
[0221] 本文公开的(例如,机制的)各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本公开的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
[0222] 可将程序代码(诸如,图42中图示的代码4230)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器
[0223] 程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
[0224] 至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
[0225] 此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
[0226] 因此,本公开的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。仿真(包括二进制变换、代码变形等)
[0227] 在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。图45是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图45示出可使用x86编译器4504来编译高级语言4502形式的程序,以生成可由具有至少一个x86指令集核的处理器4516原生执行的x86二进制代码4506。具有至少一个x86指令集核的处理器4516表示通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的实质部分,或
2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器4504表示可操作用于生成x86二进制代码4506(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器4516上执行。类似地,图45示出可以使用替代的指令集编译器4508来编译高级语言4502形式的程序,以生成可以由不具有至少一个x86指令集核的处理器4514(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码4510。指令转换器4512用于将x86二进制代码4506转换成可以由不具有x86指令集核的处理器4514原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码4510相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器4512通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码4506的软件、固件、硬件或其组合。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈