事务层分组格式
1.本技术是2020年9月23日提交的申请号为202011010974.x的同名专利申请的分案申请。
2.本技术要求享有于2019年11月20日提交的美国临时专利申请序列号62/938,096的权益,并且该申请以其整体通过引用并入本文。
技术领域
3.本公开涉及计算系统,并且具体地(但不排他地)涉及计算机接口。
背景技术:
4.半导体处理和逻辑设计中的发展已经允许可以存在于集成电路设备上的逻辑的量的增加。作为必然结果,计算机系统配置已经从系统中的单个或多个集成电路演变为存在于单独的集成电路上的多个核心、多个硬件线程和多个逻辑处理器,以及集成在此类处理器内的其他接口。处理器或集成电路典型地包括单个物理处理器管芯,其中处理器管芯可以包括任何数量的核心、硬件线程、逻辑处理器、接口、存储器、控制器中心等。随着处理能力随计算系统中设备数量的增加而增长,插座与其他设备之间的通信变得越来越重要。因此,互连已经从主要处理电气通信的更传统的多点总线发展到促进快速通信的充分发展的互连架构。不幸的是,由于对未来处理器以甚至更高速率消费的需求,对应的需求被置于现有互连架构的能力上。互连架构可以基于多种技术,包括快速外围组件互连(pcie)、通用串行总线等。
附图说明
5.图1示出了包括互连架构的计算系统的实施例。
6.图2示出了包括分层栈的互连架构的实施例。
7.图3示出了要在互连架构内生成或接收的请求或分组的实施例。
8.图4示出了用于互连架构的发射机和接收机对的实施例。
9.图5示出了通过示例链路耦合到第二设备的第一设备。
10.图6示出了示例分组格式。
11.图7a-7b示出了针对两个示例模式中的每一个的示例请求分组报头。
12.图8a-8b示出了针对两个示例模式中的每一个的请求分组报头的另一示例。
13.图9a-9b示出了用于针对两个示例模式中的每一个的用于输入/输出(i/o)事务的示例请求分组报头。
14.图10a-10b示出了针对两个示例模式中的每一个的示例配置分组报头。
15.图11a-11b示出了针对两个示例模式中的每一个的示例消息请求分组报头。
16.图12a-12b示出了针对两个示例模式中的每一个的示例完成分组报头。
17.图13示出了示例错误报告能力结构。
18.图14a-14b是示出用于生成并解析通过链路发送的分组的示例技术的流程图。
19.图15示出了针对包括多核心处理器的计算系统的框图的实施例。
20.图16示出了针对计算系统的框图的另一实施例。
具体实施方式
21.在以下描述中,阐述了许多具体细节(例如,特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线级和操作等的示例),以便提供对本公开的透彻理解。然而,对于本领域技术人员将显而易见的是,不一定采用这些具体细节来实践本公开中讨论的原则和解决方案。在其他实例中,没有详细地描述公知的组件或方法(例如,特定的和可替代的处理器架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现方式、特定代码形式的算法表示、特定断电和门控技术/逻辑以及计算机系统的其他具体操作细节),以避免不必要地模糊本公开。
22.尽管可以参考在诸如计算平台或微处理器之类的特定集成电路中的能量节约和能量效率来描述以下实施例,但是其他实施例也适用于其他类型的集成电路和逻辑器件。本文所描述的实施例的类似技术和教导可以应用于其他类型的电路或半导体器件,其也可以受益于更好的能量效率和能量节约。例如,所公开的实施例不限于台式计算机系统或ultrabooks
tm
。并且还可以用于其他设备,例如,手持设备、平板式计算机、其他薄型笔记本、片上系统(soc)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(pda)和手持pc。嵌入式应用典型地包括微控制器、数字信号处理器(dsp)、片上系统、网络计算机(netpc)、机顶盒、网络中心、广域网(wan)交换机或可以执行下面教导的功能和操作的任何其他系统。此外,本文所描述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于能量节约和效率的软件优化。
23.随着计算系统的发展,其中的组件变得更加复杂。因此,用于在组件之间耦合和通信的互连架构的复杂度也在增加,以确保针对最佳组件操作满足带宽要求。此外,不同的市场细分要求互连架构的不同方面适合市场的需要。例如,服务器要求更高的性能,而移动生态系统有时能够牺牲整体性能以节约功率。然而,大多数结构的唯一目的是以最大功率节约来提供可能的最高性能。下面讨论了多种互连,这些互连将潜在地受益于本文所描述的解决方案的方面。
24.一种互连结构架构包括快速外围组件互连(pci)(pcie)架构。pcie的主要目标是使得来自不同供应商的组件和设备能够在开放式架构中互操作,从而跨越多个市场细分:(台式的和移动的)客户端、(标准的和企业的)服务器以及嵌入式和通信设备。快速pci是针对各种未来的计算和通信平台定义的高性能的通用i/o互连。某些pci属性(例如,其使用模型、加载-存储架构和软件接口)已经通过其修订版进行维护,而先前的并行总线实现方式已经由高度可扩展的完全串行接口取代。快速pci的最近的版本利用点对点互连、基于交换机的技术和分组协议中的发展,以递送新的性能和特征水平。快速pci支持的高级特征中的一些包括功率管理、服务质量(qos)、热插拔/热交换支持、数据完整性和错误处理。
25.参考图1,示出了由互连一组组件的点对点链路组成的结构的实施例。系统100包括与控制器中心115耦合的处理器105和系统存储器110。处理器105包括任何处理元件,例如,微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器105通过前端总
线(fsb)106与控制器中心115耦合。在一个实施例中,fsb 106是如下面所描述的串行点对点互连。在另一实施例中,链路106包括符合不同的互连标准的串行、差分互连架构。
26.系统存储器110包括任何存储器设备,例如,随机存取存储器(ram)、非易失性(nv)存储器、固态存储器或可由系统100中的设备访问的其他存储器。系统存储器110通过存储器接口116与控制器中心115耦合。存储器接口的示例包括双倍数据速率(ddr)存储器接口、双通道ddr存储器接口和动态ram(dram)存储器接口。
27.在一个实施例中,控制器中心115是快速外围组件互连(pcie或pcie)互连层级中的根中心、根联合体或根控制器。控制器中心115的示例包括芯片组、存储器控制器中心(mch)、北桥、互连控制器中心(ich)、南桥和根端口控制器/中心。术语芯片组经常指代两个物理上分离的控制器中心,即,存储器控制器中心(mch)耦合到互连控制器中心(ich)。注意,当前系统经常包括与处理器105集成的mch,而控制器115以与下面所描述的方式类似的方式与i/o设备通信。在一些实施例中,可选地通过根联合体115来支持对等路由。
28.这里,控制器中心115通过串行链路119与交换机/桥接器120耦合。输入/输出模块117和121(也可以称为接口/端口117和121)包括/实现分层协议栈以提供控制器中心115与交换机120之间的通信。在一个实施例中,多个设备能够耦合到交换机120。
29.交换机/桥接器120将来自设备125的分组/消息向上游(即,沿着层级朝向根联合体向上)路由到控制器中心115,并且将来自处理器105或系统存储器110的分组/消息向下游(即,沿着层级远离根端口控制器向下)路由到设备125。在一个实施例中,交换机120被称为多个虚拟pci到pci桥接器设备的逻辑组装件。设备125包括要耦合到电子系统的任何内部或外部设备或组件,例如,i/o设备、网络接口控制器(nic)、插入卡、音频处理器、网络处理器、硬盘驱动器、存储设备、cd/dvd rom、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线(firewire)设备、通用串行总线(usb)设备、扫描仪和其他输入/输出设备。通常在pcie中,诸如设备之类的日常用语被称为端点。尽管没有具体示出,但是设备125可以包括pcie到pci/pci-x桥接器,以支持旧有的pci设备或其他版本的pci设备。pcie中的端点设备通常被分类为旧有的集成端点、pcie集成端点或根联合体集成端点。
30.图形加速器130也通过串行链路132与控制器中心115耦合。在一个实施例中,图形加速器130耦合到与ich耦合的mch。然后,将交换机120以及因此i/o设备125耦合到ich。i/o模块131和118还用于实现分层协议栈以在图形加速器130与控制器中心115之间进行通信。类似于上面关于mch的讨论,图形控制器或图形加速器130本身可以集成在处理器105中。应当认识到,图1中示出的组件(例如,105、110、115、120、125、130)中的一个或多个可以被增强以执行、存储和/或体现用于实现本文所描述的特征中的一个或多个的逻辑。
31.转到图2,示出了分层协议栈的实施例。分层协议栈200包括任何形式的分层通信栈,例如,快速路径互连(qpi)栈、pcie栈、下一代高性能计算互连栈或其他分层栈。尽管紧接着下面参考图1-4进行的讨论涉及pcie栈,但是相同的概念可以应用于其他互连栈。在一个实施例中,协议栈200是pcie协议栈,其包括事务层205、链路层210和物理层220。接口(例如,图1中的接口117、118、121、122、126和131)可以表示为通信协议栈200。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。
32.快速pci使用分组以在组件之间传送信息。在事务层205和数据链路层210中形成分组以将信息从发送组件运送到接收组件。当发送的分组流经其他层时,利用在这些层处
处理分组所必需的附加信息来对发送的分组进行扩展。在接收侧,发生相反的过程,并且分组从其物理层220表示变换为数据链路层210表示,并且(针对事务层分组)最终变换为可以由接收设备的事务层205处理的形式。
33.事务层
34.在一个实施例中,事务层205用于提供设备的处理核心与互连架构(例如,数据链路层210和物理层220)之间的接口。就这一点而言,事务层205的主要责任是对分组(即,事务层分组或tlp)的组装和拆分。转换层205典型地管理针对tlp的基于信用的流控制。pcie实现分离事务,即,请求和响应按时间分离的事务,从而在目标设备收集针对响应的数据时允许链路运送其他业务。
35.此外,pcie利用基于信用的流控制。在该方案中,设备在事务层205中通告接收缓冲器中的每一个的初始信用量。在链路的相对端处的外部设备(例如,图1中的控制器中心115),对由每个tlp消耗的信用的数量进行计数。如果事务没有超过信用限制,则该事务可以被发送。在接收到响应后,将恢复信用量。信用方案的一个优点是,只要没有达到信用限制,则信用返还的延迟将不会影响性能。
36.在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括用于将数据传送到存储器映射位置/从存储器映射位置传送数据的读取请求和写入请求中的一个或多个。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如,短地址格式(例如,32位地址)或长地址格式(例如,64位地址)。配置空间事务用于访问pcie设备的配置空间。针对配置空间的事务包括读取请求和写入请求。消息事务被定义以支持pcie代理之间的带内通信。
37.因此,在一个实施例中,事务层205组装分组报头/有效载荷206。当前分组报头/有效载荷的格式可以在pcie规范网站处的pcie规范中找到。
38.快速参考图3,示出了pcie事务描述符的实施例。在一个实施例中,事务描述符300是用于运送事务信息的机制。就这一点而言,事务描述符300支持对系统中的事务的标识。其他潜在用途包括跟踪对默认事务排序的修改以及事务与信道的关联。
39.事务描述符300包括全局标识符字段302、属性字段304和信道标识符字段306。在所示示例中,全局标识符字段302被描绘为包括本地事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符302对于所有未完成的请求是唯一的。
40.根据一种实现方式,本地事务标识符字段308是由请求代理生成的字段,并且本地事务标识符字段308对于对该请求代理而言要求完成的所有未完成请求是唯一的。此外,在该示例中,源标识符310唯一地标识pcie层级内的请求者代理。因此,本地事务标识符308字段连同源id 310一起提供层级域内的事务的全局标识。
41.属性字段304指定事务的特性和关系。就这一点而言,属性字段304潜在地用于提供允许对事务的默认处理进行修改的附加信息。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316和非窥探(no-snoop)字段318。这里,优先级子字段312可以由启动程序修改以向事务指派优先级。保留属性字段314被保留用于将来使用或供应商定义的使用。可以使用保留属性字段来实现使用优先级或安全属性的可能的使用模型。
42.在该示例中,排序属性字段316用于供应传达可以修改默认排序规则的排序类型的可选信息。根据一个示例实现方式,排序属性“0”表示要应用的默认排序规则,其中排序
属性“1”表示放宽排序,其中写入可以在相同方向上传递写入,并且读取完成可以在相同方向上传递写入。窥探属性字段318用于确定事务是否被窥探。如所示的,信道id字段306标识与事务相关联的信道。
43.链路层
44.链路层210(也称为数据链路层210)用作事务层205与物理层220之间的中间级。在一个实施例中,数据链路层210的责任是提供用于在链路的两个组件之间交换事务层分组(tlp)的可靠机制。数据链路层210的一侧接受由事务层205组装的tlp,应用分组序列标识符211(即,标识号或分组号),计算并应用错误检测码(即,crc 212),并且将经修改的tlp提交给物理层220以用于跨物理到外部设备的传输。
45.物理层
46.在一个实施例中,物理层220包括逻辑子块221和电子块222,以将分组物理地发送到外部设备。这里,逻辑子块221负责物理层220的“数字”功能。就这一点而言,逻辑子块包括用于准备用于由物理子块222传输的传出信息的发送部分,以及用于在将接收到的信息传递到链路层210之前标识并准备接收到的信息的接收机部分。
47.物理块222包括发射机和接收机。发射机由逻辑子块221供应符号,发射机将该符号串行化并发送到外部设备上。接收机被供应有来自外部设备的经串行化的符号,并且将接收到的信号变换为位流。位流被解串行化并且供应给逻辑子块221。在一个实施例中,采用8b/10b传输码,其中发送/接收十位符号。这里,特殊符号用于利用帧223对分组进行组帧。此外,在一个示例中,接收机还提供从传入串行流中恢复的符号时钟。
48.如上面所陈述的,尽管参考pcie协议栈的特定实施例讨论了事务层205、链路层210和物理层220,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(1)用于组装分组的第一层(即,事务层);用于对分组进行排序的第二层(即,链路层);以及用于发送分组的第三层(即,物理层)。作为具体示例,使用公共标准接口(csi)分层协议。
49.接下来参考图4,示出了pcie串行点对点结构的实施例。尽管示出了pcie串行点对点链路的实施例,但是串行点对点链路不限于此,因为串行点对点链路包括用于发送串行数据的任何传输路径。在所示的实施例中,基本pcie链路包括两个低电压差分驱动信号对:发送对406/412和接收对411/407。因此,设备405包括用于将数据发送到设备410的发送逻辑406以及用于从设备410接收数据的接收逻辑407。换言之,在pcie链路中包括两个发送路径(即,路径416和417)以及两个接收路径(即,路径418和419)。
50.传输路径指代用于传输数据的任何路径,例如,传输线路、铜线路、光线路、无线通信信道、红外通信链路或其他通信路径。两个设备(例如,设备405与设备410)之间的连接被称为链路(例如,链路415)。链路可以支持一个通道——每个通道表示差分信号对的集合(一对用于发送,一对用于接收)。为了扩展带宽,链路可以聚合由xn表示的多个通道,其中n是任何支持的链路宽度,例如,1、2、4、8、12、16、32、64或更宽。在一些实现方式中,每个对称通道包含一个发送差分对和一个接收差分对。不对称通道可以包含不相等的比率的发送对和接收对。一些技术可以利用对称通道(例如,pcie),而其他技术(例如,displayport)可以不利用对称通道并且甚至可以仅包括发送对或仅包括接收对,以及其他示例。
51.差分对指代用于发送差分信号的两个传输路径,例如,线路416和417。作为示例,
当线路416从低电压电平切换到高电压电平(即,上升沿)时,线路417从高逻辑电平驱动到低逻辑电平(即,下降沿)。差分信号潜在地展示出更好的电气特性,例如,更好的信号完整性(即,交叉耦合、电压过冲/下冲、振铃等)。这允许更好的时序窗口,从而实现更快的传输频率。
52.在pcie中,随着协议从4.0代演进到5.0代和6.0代,正在发生快速的进展。pcie 4.0可以支持具有有效带宽为64gb/s的16条通道链路,并扩展了针对重定时器和其他特征的支持。pcie 5.0维持了16通道链路宽度,同时将有效带宽加倍至128gb/s。为了维持这些带宽上的进步,pcie 6.0保留了16通道链路并采用与pcie的传统不归零(nrz)编码(例如,8b/10b,128b/130b)相反的脉冲幅度调制(pam)编码(例如,pam4编码),以增加在单个单位间隔(ui)内可以在串行信道上被发送的位数。因此,pcie 6.0将带宽从pcie 5.0中的32gt/s进一步加倍至64gt/s,从而实现了256gb/s的双向带宽。这样的链路可以有价值地应用于耦合设备,例如,深度学习和人工智能硬件加速器设备;高速图形处理器单元、张量处理器单元和其他深度学习处理器;高速存储器;以及深度学习应用、自动驾驶汽车、机器人技术和高性能存储器架构等各种新兴计算应用中的其他硬件,以及其他示例。pcie 6.0还包括低延迟前向纠错(fec)和其他功能以改进带宽效率,同时维持与先前的pcie代的向后兼容性以及与pcie 5.0中可用信道相似的信道范围。
53.虽然高速pam4编码允许链路实现新的且改进的应用,但此类链路可能更容易受到错误的影响。在一些实现方式中,链路和对应的协议可以被配置为在多种模式下操作,例如,当利用高速pam4编码时在flit模式下操作,以及当使用较低速度编码(例如,8b/10b、128b/130b nrz)时在另一模式(例如,非flit模式)下操作。例如,较高速度的模式可以利用前向纠错并且特别地从中受益。因此,可以实现flit模式,其在数据链路或逻辑phy层处将单个分组的传输细分为一个或多个定义的流控制单元或“flit”的集合。然而,这样的特征可以使接收机处的分组的解析复杂化。每个flit可以包括相应的报头,该报头具有与该flit和分组相对应的信息,从而允许在冗余时省略传统上针对分组报头保留的一些信息。在一些实现方式中,可以针对互连(例如,针对基于pcie 6.0的互连)定义两个(或更多个)单独的分组报头格式,其中第一分组报头格式用于利用flit进行分组传送的模式,并且不同的第二分组报头格式用于不利用flit的模式(例如,协议中定义的旧有模式),以及其他示例实现方式。在一些实现方式中,当以较低速度模式(例如,8b/10b、128b/130b nrz)操作时,可能期望利用flit来进行分组传送。
54.在pcie的情况下,事务层分组(tlp)报头结构已经缓慢地演进,但基本上保持不变。随着pam4编码的采用以及pcie 6.0向基于flit的数据完整性的转变,可以利用新的、经修订的tlp报头格式。新的flit模式tlp报头还可以解决以下事实:现有pcie tlp报头缺少剩余的保留位来扩展特征和信息,这些特征和信息可以在对应的分组报头字段中被通信。在一个示例实现方式中,flit模式tlp报头可以将传统的、正交的格式(fmt)和类型字段替换为完全解码的8位tlp类型字段,该8位tlp类型字段可以被编码有用于指示pcie中全部(或基本全部)现有的tlp类型的值,同时为no-op(nop)和end bad(edb)分组类型添加新的tlp类型。实际上,在flit模式的情况下,可以在任何其他tlp之前或之后发送任意数量的nop tlp,其中nop tlp被接收机丢弃而没有任何影响。此外,flit模式tlp报头可以添加新的扩展报头元素,以包括先前已经使用tlp前缀和pcie中的其他机制(包括进程地址空间标
识符(pasid)、tlp处理提示和安全tlp)被通信的内容,以及其他示例。其他示例修改可以包括向请求者和完成者id添加8位分段id(sbdf)、增加标签字段位(例如,12位、14位或16位)、移除过时的字段和元素(例如“字节计数”字段),以及其他示例修改。
55.在可以通过flit模式分组报头实现的示例益处中,报头可以为接收机的事务层提供用于鲁棒地解析传入tlp内容的能力,而无需依赖于来自物理层或数据链路层的tlp划分信息。作为另一示例,可以经由由tlp报头基础组成的灵活的tlp结构,通过在后面灵活地添加附加报头内容(例如,内容的零至7个附加双字(dw))来更好地促进分组的可扩展性。在一个示例中,pcie事务摘要可以在flit模式分组中由零到3dw的“尾部”代替。在一些实现方式中,报头基础的第一dw包括用于确定tlp的完整大小所要求的所有信息,包括报头本身、任何数据有效载荷和尾部(如果存在)。还可以修改end bad(edb)和poisoned tlp机制,并且在flit模式下经由后缀指示,如果存在后缀,则这些后缀紧跟它们所应用的tlp,并且对于poisoned,这些后缀通过支持对等和所有交换机的根联合体与tlp一起被端对端地传送。此外,可以指派针对flit模式报头定义的所有tlp类型的编码以进行流控制和路由来实现“转发兼容性”,使得可以在不要求对现有的交换机和pcie控制器硬件的通用模块进行修改的情况下分配新的操作码。
56.转向图5,示出了简化框图500,该简化框图500示出了将第一设备510耦合到第二设备515的示例pcie链路505。设备510、515中的每一个可以配备有一个或多个多重端口(例如,520、525)以支持到(例如,在相同或不同的管芯或封装上的)其他设备的一个或多个多重连接。端口(例如,520、525)可以包括发送电路和接收电路以及用于实现一种或多种控制对应的连接的操作的互连协议的逻辑(例如,以硬件电路实现)。例如,端口520、525可以各自包括用于实现基于pcie的协议的分层协议栈的电路。pcie协议(例如,pcie 6.0)可以支持flit模式和另一非flit模式两者。对应的协议电路(例如,端口520、525的协议电路)可以用于根据flit模式和非flit模式中的每一个来生成具有分组报头的分组(例如,530、535),例如在本文的示例中所讨论的。同样,在设备510、515(例如,对应于端口520、525的接收机)处的协议逻辑可以接收由另一设备生成并发送的分组(例如,530、535),并利用分组中的信息来标识分组的边界并解析分组及其内容(例如,使用例如在以下示例中讨论的字段)。
57.如上面所介绍的,在flit模式下,链路可以被配置为鲁棒地解析传入tlp内容,而无需依赖于来自物理层或数据链路层的tlp划分信息。另外地,与消耗所有保留位的这些非flit模式报头结构相比,flit模式pcie tlp报头可以包括对传统pcie tlp报头的若干改变以改进可扩展性。实际上,在某些情况下,传统的pcie tlp报头中缺少剩余空间可以导致信息在报头本身与tlp前缀之间被混合的实现方式,以及其他示例问题。在示例flit模式下,可以保留链路本地tlp前缀,但是端对端tlp前缀被移除并替换为更灵活的tlp结构,该tlp结构由定义的tlp报头基础组成,可选地后面带有报头内容的0-7个附加dw。此外,在一些实现方式中,pcie事务摘要机制由0-3dw的“尾部”代替。在一个示例中,flit模式报头基础的第一dw可以被格式化为包括用于确定tlp的完整大小所要求的所有信息,包括报头本身、任何数据有效载荷和任何尾部(如果存在)。
58.可以以示例flit模式tlp格式提供附加特征。例如,pcie end bad(edb)和poisoned tlp机制可以在flit模式下被修改,并且经由后缀指示,如果存在后缀,则这些后缀紧跟它们所应用的tlp,并且对于poisoned,这些后缀通过支持对等和所有交换机的根联
合体与tlp一起被端对端地传送。在某些情况下,在flit模式下,发射机用于完成整个tlp传输,从这种意义上说,发射机用于在每个指示的位置发送一些内容(包括有效载荷和尾部),并且不要提早结束tlp传输。在这种情况下,如果需要填充在传输开始时(例如,基于发射机用尽要发送的内容,在tlp的报头的字段中)指示的完整tlp大小,则发射机用于发送“填充物”内容,并且然后在传输后加上edb后缀。在其他情况下,可以通过edb后缀(或其他字段)指示tlp中的错误,并且对应的接收机可以丢弃带有这种edb指示的所有tlp而没有任何影响,以及其他示例特征。
59.转向图6,示出了示例flit模式分组(例如,tlp)格式的表示600。例如,flit模式分组格式可以包括:由字段的集合(例如,640、645)组成的报头基础605,这些字段可以由接收机解析以确定分组的总长度;以及其他信息,例如,分组的源的标识符、(例如,针对分组的目的地的)地址信息、事务标识符,以及其他示例信息。报头基础605的字段和格式可以基于并且对应于分组的类型。例如,某些分组类型的报头可以具有变化的长度(例如,3dw或4dw)、字段的组合和类型以及与分组类型相对应的其他变化的特性。一些报头字段可以出现在每种分组类型的报头中,例如,用于指示分组类型的类型字段(例如,640),以及其他示例。
60.在图6的示例中,除了报头基础之外,可以将附加字段选择性地添加到报头作为报头内容块或“正交报头内容(ohc)”。在一个示例中,可以将报头内容块的集合选择性地附加到报头基础605以形成分组的完整报头。例如,可以基于报头基础605中的正交报头内容(ohc)字段(例如,645)的编码来将报头内容块中的一个或多于一个报头内容块附加到报头基础或不将任何报头内容块附加到报头基础。在一些实现方式中,ohc字段可以使用独热编码或另一种编码技术来标识报头内容块(例如,610、615、620、625、630、635)中的哪个(如果有)要被包括在分组中。报头和/或报头内容块的字段可以进一步标识剩余分组的长度(例如,分组有效载荷)、分组中包括的后缀、尾部和/或前缀的存在和特征,以及其他分组组件。
61.在某些实例中,flit模式分组的事务层分组语法可以被定义为包括零个或多个1dw的本地tlp前缀、tlp报头基础(例如,基于分组类型,其长度为3dw或4dw)、tlp数据有效载荷(例如,长度为0到1024dw)、tlp尾部(如果存在)、0个或多个1dw的端到端后缀等。(例如,报头基础或报头内容块中的一个或多个的)分组报头的字段可以标识有效载荷的长度、报头内容块包括的组合、前缀、尾部、后缀的存在和特征以及其他信息,以允许接收机解析报头并确定报头和分组的长度。
62.在一个示例实现方式中,报头内容块中的一个或多个(例如,610、615、620、625、630、635)可以具有可变长度,其长度也可以在报头基础的字段中指示。例如,可以定义两种或更多种类型的报头内容块(例如,ohc-a(610)、ohc-b(615)、ohc-c(620)和ohc-e)。报头内容块类型中的至少一种(例如,ohc-e)可以具有多个可能的长度(例如,625、630、635)。在一个示例中,可以在报头基础中(例如,在报头基础的第一dw中)定义5位ohc字段,以标识要被附加到报头基础的报头内容块。在一个示例中,可以针对och字段(例如,ohc[4:0])定义编码,例如:
[0063]
00000b=不存在ohc
[0064]
xxxx1b=存在ohc-a
[0065]
xxx1xb=存在ohc-b
[0066]
xx1xxb=存在ohc-c
[0067]
00xxxb=不存在ohc-ex
[0068]
01xxxb=存在ohc-e1
[0069]
10xxxb=存在ohc-e2
[0070]
11xxxb=存在ohc-e4
[0071]
其中,“x”指示可能存在1或0,并且这些编码不是互斥的。
[0072]
可以允许报头内容块的任何组合存在于报头中(例如,存在ohc-b和ohc-c,而没有ohc-a或ohc-e)。在一些实现方式中,当指定两个或更多个报头内容块被包括在报头中时,可以将报头内容块定义为以定义的次序存在(例如,报头内容块在报头基础之后,并且然后以ohc-a、ohc-b、ohc-c、ohc-e的次序)。在一些实现方式中,报头内容块的内容可以取决于tlp类型而变化(例如,在图7b、8b、9b、10b、11b、12b的示例中示出的)。
[0073]
在一些实现方式中,当使用tlp处理提示(tph)时(例如,在存储器路由的请求tlp中),ohc-b报头内容块包括适当的处理提示(ph)、引导标签(st)、地址转换服务(ats)存储器属性(ama)和ama有效(av)值,以及其他示例。在一些实现方式中,不同于非flit模式报头,flit模式分组中的st字段不被字节使能或其他字段覆盖。当包括ohc-b时,如果没有正在使用tph,则ph字段和st字段可以被编码为全0。
[0074]
在某些情况下,使用字节使能来表达要被读取/写入的字节的地址/范围和/或使用进程地址空间标识符(pasid)的存储器请求分组可以通过特定报头内容块来合并这些字段(例如,ohc-a)。结果,不要求使用字节使能来表达要被读取/写入的字节的地址/范围并且不要求pasid的存储器请求可以省略特定报头内容块(例如,ohc-a)。当tlp包括ohc-a时,如果字节使能应用于tlp类型,则字节使能字段中的值可以被编码以准确地指示使能的字节。此外,如果当包括特定报头内容块(例如,ohc-a)时pasid是未知的或尚未被指派的,则特定报头内容块的pasid字段值可以全为0。
[0075]
某些类型的分组或事务可以总是涉及包括一个或多个定义的报头内容块。例如,io请求和配置请求可以总是利用其分组报头中具有字节使能的ohc-a块。作为另一示例,消息请求可以总是包括具有消息码[7:0]字段的特定报头内容块(例如,ohc-b),以及其他示例。例如,配置请求可以总是包括包含目的地分段字段的ohc-b块。在这种情况下,根联合体在“目的地分段”字段中指示正确的分段值(例如,即使仅实现了一个分段)。然后,完成者捕获在目的地分段中指示的分段值以及被指派的总线、设备、功能(bdf)值,并在使用完成者分段时将其作为其完成者分段值返回(例如,类似于当今返回bdf的方式(例如,作为分段、总线、设备、功能(sbdf)值))。因此,在一些实现方式中,所有配置完成还可以包括具有请求者分段和完成者分段字段两者的ohc-b块。在某些实例中,如果捕获的分段号为非零,则所有后续tlp在其报头中包括ohc-b块以及捕获的请求者/完成者分段值。对于请求,如果请求者分段为非零,则针对请求的所有完成包括ohc-b及其请求者分段和完成者分段值。在一些实现方式中,目的地分段字段可以被保存为针对tlp而不是配置请求被保留。
[0076]
在某些情况下,可以提供并定义一个或多个报头内容块(例如,ohc-c),以用于例如通过用于启用数据完整性、数据加密和其他特征的字段来促进数据安全性(例如,以支持pcie的新兴的完整性和数据加密特征)。因此,安全tlp可以包括这样的报头内容块以促进期望的(或要求的)安全级别或其他增强,以及其他示例报头内容块。
[0077]
图7a-12b示出了针对多个示例事务或分组类型中的每一个的相应的非flit模式和flit模式分组报头格式的示例。在一个示例中,非flit模式分组报头格式可以基于(或者甚至完全采用)旧有的分组格式(例如,现有的pcie分组报头格式)。虽然类型可以影响总长度以及对应的报头基础中包括的针对分组报头的字段中的一些,但是flit模式分组报头的报头基础可以基于通用原则的集合和/或包括字段的通用集合。在一个示例中,所有flit模式tlp(无论类型是什么)都可以包括完全解码的8b分组类型字段、标签字段、ohc字段、尾部大小字段以及其他示例。所有类型编码可以具有定义的报头大小和流控制参数。flit模式tlp报头基础中的标签字段可以相对于非flit标签[]字段(例如,12个或更多位(例如14位))被扩展。flit模式报头基础格式可以针对某些字段保留非flit模式报头的一般布局的一部分,但是将某些字段的位固定为空闲位以用于标签字段的扩展。非flit模式分组报头中包括的字节使能值可以被移出flit模式分组的报头基础,并且仅在需要时通过选择包括对应的一个或多个报头内容块(如ohc字段中指示的)被包括。类似地,字节计数字段、较低地址字段、字节计数修改(bcm)位以及传统上被包括在非flit模式报头中的其他字段可以被移除,并且甚至完全移除了flit模式报头(例如,其未被包括在任何报头内容块定义中),或者可以通过使用其他ohc字段定义来包括它们。
[0078]
除了上面描述的特征之外,flit模式报头还可以在请求者和完成者标识符中包括分段标识符(例如,8位sbdf值)。端到端tlp前缀可以并入报头内作为“第一类”或作为被选择性地包括在报头的末尾处的附加信息。可以允许将pasid值应用于所有flit模式存储器操作。flit模式下的引导标签可以是未过载的,并且ph、引导标签和ama/av字段可以被固定。轻量级通知(ln)可以在flit模式分组内被移除(并且反对ln机制)。可以通过尾部大小字段的编码来指示尾部,以帮助接收机确定分组的长度和特征。作为示例,可以定义以下编码以指示对应分组内的尾部的使用和大小:
[0079]
00b
–
无尾部
[0080]
01b
–
包含ecrc的1dw的尾部
[0081]
10b
–
2dw的尾部
–
内容保留
[0082]
11b
–
3dw的尾部,用于tlp安全性机制以及其他示例。在某些实例中,交换机和根联合体可以设置有附加电路或逻辑以支持对等实现方式、flit模式tlp与非flit模式tlp之间的映射。
[0083]
在flit模式分组与非flit模式分组之间,多个特征可以保持共有或相似。例如,根据非flit模式,对于消息请求,字节8-15的内容的定义可以保持不变。根据定义的非flit模式,ats转换请求可以遵循不变的存储器读取格式(例如,其中at=01b,从而区分转换请求)。类似地,根据先前定义的非flit模式,转换完成数据条目的格式可以保持不变。另外地,本地tlp前缀可以与非flit模式中定义的那些tlp前缀相比基本不变,以及其他特征。在某些实现方式中,如果捕获的分段号为非零,则ats无效请求、无效完成、页面请求、停止标记和prg响应消息可以包括具有请求者/完成者分段的特定报头内容块(例如,ohc-b)。
[0084]
图7a示出了针对用于64位寻址的非flit模式pcie请求报头格式的非flit模式报头格式,其包括传统pcie tlp报头字段,例如,3位格式字段、5位类型字段、业务类别(tc)字段、ln位、tlp提示(th)位、tlp摘要(td)字段、地址类型(at)字段、error poisoned(ep)字段、属性(attr)字段、长度字段、请求者id字段和地址字段。图7b示出了针对用于64位寻址
的pcie请求报头格式的flit模式报头格式。flit模式报头基础705包括flit模式类型、ohc和ts字段以及扩展的flit模式标签,以及传统的请求者id、attr、at、长度和地址字段。图7b还示出了针对请求类型分组定义的内容报头块(例如,ohc-a 710、ohc-b 715、ohc-c 720)(在图7a-12b的示例中被指定为“r”或“保留”的字段指示保留字段/位)。
[0085]
图8a示出了用于32位寻址的非flit模式pcie请求报头,其具有类似于图7a中的64位寻址请求报头的格式,但包括字节使能字段(例如,第一和最后dw字节使能(be)字段)和处理提示(ph)字段。图8b示出了用于32位寻址的对应的flit模式pcie请求报头字段,其包括报头基础805和对应的内容报头块810、815、820,这些内容报头块可以被添加到报头基础。图9a示出了用于i/o事务的非flit模式pcie请求报头格式。图9b示出了用于i/o事务的flit模式pcie请求报头格式,其包括对应的报头基础905和报头内容块910、915、920。
[0086]
图10a示出了用于配置事务的非flit模式pcie报头格式,其包括总线号、设备号和功能号字段以及寄存器号字段(以及上面讨论的字段)。图10b示出了用于配置事务的flit模式pcie报头格式,其包括对应的报头基础1005和报头内容块1010、1015、1020。
[0087]
图11a示出了包括消息码字段的非flit模式pcie消息请求报头格式。图11b示出了flit模式pcie消息请求报头格式。与图7b、8b、9b和10b中的示例不同,flit模式消息请求报头基础1105被定义为4dw而不是3dw。图11b还示出了针对消息请求被定义的报头内容块1110、1115、1120。
[0088]
图12a示出了非flit模式pcie完成报头格式,其包括完成者id字段、完成状态字段和较低地址字段以及先前讨论的其他字段。图12b示出了flit模式pcie完成报头格式,其包括例如上面的其他示例中的对应的ohc-a 1210、ohc-b 1215和ohc-c 1220报头内容块。
[0089]
虽然图7b、8b、9b、10b、11b、12b的示例示出了ohc-a、ohc-b和ohc-c报头内容块的相应的基于类型的实现方式,但是应当认识到的是,也可以定义其他报头内容块并且使其可用于被包括在flit模式报头中(并在报头基础的对应的ohc字段中被标识)。例如,ohc-e报头内容块(例如,如图6中示出的)也可以用于附加到报头基础(例如,在包括ohc-a、ohc-b和ohc-c报头内容块中的任何一个之后)。例如,ohc-e报头内容块的大小可以是可变的,并且被包括为1dw、2dw或4dw报头内容块,以及其他示例。在一些实现方式中,可以将ohc-e报头内容块指定为用于与tlp一起传送供应商定义的内容,其中供应商内容的性质决定了要使用ohc-e的1dw、2dw还是4dw版本,以及其他示例。
[0090]
在一些实现方式中,flit模式可以在flit模式报头基础中提供类型字段(例如,类型[7:0])的所有或基本上所有可编码值的预定义。尽管非flit模式pcie中的格式和类型字段编码是以有机的方式被开发并指派的,但实际上,这使得这种可扩展且变化的类型编码集的硬件采用难以实现。因此,在flit模式的一些实现方式中,可以预定义类型字段编码以及对应的路由、流控制(fc)类型、报头基础大小以及数据有效载荷是否与该类型相关联,使得硬件或pcie设备的其他逻辑可以被对应地配置为理解并处理潜在的编码类型中的每一种。例如,表1示出了针对flit模式报头基础中的type[7:0]字段的值的示例定义。在该示例中,路由在“描述”字段中指示,并且所使用的“报头基础”字段与已经定义的“报头基础”格式位于报头内的相同位置。在一些实现方式中,对于已经定义的tlp类型,flit模式路由规则遵循所指示的路由类型。尽管可以在名称上“保留”某些类型,但是在一种实现方式中,可以定义该类型的特征(例如,路由、流控制类型等),使得交换机和pcie端口控制器电路可以
前向兼容,并且能够针对尚未定义的操作进行基本处理和路由。
[0091]
表a
[0092]
[0093]
[0094]
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101]
[0102]
[0103][0104]
转向图13,示出了pcie高级错误报告扩展能力结构的示例扩展版本1300,其可以用于(例如,基于添加到报头的ohc-x块的潜在存在)启用通过flit模式pcie提供的更大的报头。例如,可以提供报头日志寄存器字段(例如,dw5-11),其附加到传统能力结构上,以及
其他示例修改。
[0105]
图14a是示出用于在基于pcie的互连的flit模式内生成分组的示例技术的流程图1400a。例如,设备可以与事务(例如,发送请求或消息或以完成进行响应或其他响应)相关地准备分组,以及其他示例。可以基于事务的性质或类型来确定1405分组的对应类型,并且可以生成1410对应的分组。例如,在pcie flit模式下,可以生成该分组以包括包含具有字段的报头基础的分组报头,该分组报头可以用于(例如,在报头基础的第一个dw中)标识分组的整个长度,以帮助接收设备解析分组。例如,报头基础可以包括类型字段(例如,以替换较早生成的pcie tlp报头的格式和类型字段)和报头内容字段,以标识定义的报头内容块的集合(如果有)中的哪个被附加到报头基础以形成flit模式tlp的报头,以及其他字段,例如,标签字段、长度字段、尾部大小字段等。设备可以使用发送设备的端口在链路上向另一设备发送1415所形成的分组。在一些实现方式中,当链路在flit模式下操作时,利用pam(例如,pam4)编码对链路上的数据进行编码。
[0106]
图14b是示出用于在基于pcie的互连中解析接收到的flit模式分组的示例技术的流程图1400b。当链路在pcie flit模式下操作时,设备可以在与将该设备通信地耦合到另一设备的链路连接的端口处接收由另一设备发送的分组。可以由接收设备基于被包括在分组的报头的报头基础中的字段来解析1425该分组,该字段包括类型字段和报头内容字段。可以根据被包括在报头基础中的字段(例如,类型字段、报头内容字段、长度字段和尾部大小字段)来确定1430接收到的分组的总长度。除了分组的长度之外,接收设备还可以确定分组的分段在何处开始和结束,例如,包括由报头内容字段指示的一个或多个报头内容块、报头的结尾、有效载荷和尾部,以及其他示例。根据该解析,接收设备可以处理该分组,并且在某些情况下,接收设备可以生成体现对应的响应的分组,以及其他示例。
[0107]
注意,上面描述的装置、方法和系统可以在前述的任何电子设备或系统中实现。作为具体说明,以下附图提供了用于利用如本文所描述的概念的示例性系统。随着下面的系统被更详细地描述,从上面的讨论中公开、描述并重新讨论了许多不同的互连。并且显而易见的是,上面描述的发展可以应用于这些互连、结构或架构中的任一个。
[0108]
参考图15,描绘了包括多核心处理器的计算系统的框图的实施例。处理器1500包括任何处理器或处理设备,例如,微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(soc)或用于执行代码的其他设备。在一个实施例中,处理器1500包括至少两个核心——核心1501和核心1502,其可以包括不对称核心或对称核心(所示实施例)。然而,处理器1500可以包括任何数量的处理元件,这些处理元件可以是对称或不对称的。
[0109]
在一个实施例中,处理元件指代用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核心和/或能够保持处理器的状态(例如,执行状态或架构状态)的任何其他元件。换言之,在一个实施例中,处理元件指代能够独立地与代码(例如,软件线程、操作系统、应用或其他代码)相关联的任何硬件。物理处理器(或处理器插座)典型地指代集成电路,该集成电路潜在地包括任何数量的其他处理元件,例如,核心或硬件线程。
[0110]
核心通常指代位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立地维持的架构状态与至少一些专用执行资源相关联。与核心不同,硬件线程典型地指代位于
集成电路上的能够维持独立架构状态的任何逻辑,其中独立地维持的架构状态共享对执行资源的访问权。如可以看出的,当某些资源是共享的并且其他资源专用于架构状态时,硬件线程和核心的命名法之间的界限重叠。然而通常地,核心和硬件线程被操作系统视为单独的逻辑处理器,其中操作系统能够单独地调度每个逻辑处理器上的操作。
[0111]
如图15中示出的,物理处理器1500包括两个核心——核心1501和核心1502。这里,核心1501和核心1502被认为是对称核心,即,具有相同配置、功能单元和/或逻辑的核心。在另一实施例中,核心1501包括乱序处理器核心,而核心1502包括有序处理器核心。然而,核心1501和核心1502可以从任何类型的核心(例如,本地核心、软件管理核心、适于执行本地指令集架构(isa)的核心、适于执行转换指令集架构(isa)的核心、共同设计的核心或其他已知的核心)中单独选择。在异构核心环境(即,非对称核心)中,可以利用某种形式的转换(例如,二进制转换)以在一个或两个核心上调度或执行代码。然而,为了进一步讨论,核心1501中示出的功能单元在下面进一步详细描述,因为核心1502中的单元在所描绘的实施例中以类似的方式操作。
[0112]
如所描绘的,核心1501包括两个硬件线程1501a和1501b,这些硬件线程也可以称为硬件线程槽1501a和1501b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器1500视为四个单独的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上面所提到的,第一线程与架构状态寄存器1501a相关联,第二线程与架构状态寄存器1501b相关联,第三线程可以与架构状态寄存器1502a相关联,并且第四线程可以与架构状态寄存器1502b相关联。这里,如上面所描述的,架构状态寄存器(例如,1501a、1501b、1502a和1502b)中的每一个可以被称为处理元件、线程槽或线程单元。如所示的,架构状态寄存器1501a在架构状态寄存器1501b中被复制,因此能够针对逻辑处理器1501a和逻辑处理器1501b存储单独的架构状态/上下文。在核心1501中,还可以针对线程1501a和线程1501b复制其他较小的资源,例如,分配器和重命名器块1530中的指令指针和重命名逻辑。可以通过分区来共享一些资源,例如,重新排序/引退单元1535中的重新排序缓冲器、iltb 1520、加载/存储缓冲器和队列。其他资源(例如,通用内部寄存器、(多个)页表基址寄存器、低级别数据高速缓存和数据tlb 1515、(多个)执行单元1540以及乱序单元1535的部分)是潜在地完全共享的。
[0113]
处理器1500通常包括其他资源,这些资源可以是完全共享的、通过分区共享的或由处理元件专用/专用于处理元件的。在图15中,示出了具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任一个,以及包括未描绘出的任何其他已知的功能单元、逻辑或固件。如所示的,核心1501包括简化的、代表性的乱序(ooo)处理器核心。但是可以在不同的实施例中利用有序处理器。ooo核心包括用于预测要执行/采用的分支的分支目标缓冲器1520和用于存储用于指令的地址转换条目的指令转换缓冲器(i-tlb)1520。
[0114]
核心1501还包括解码模块1525,该解码模块1525与获取单元1520耦合以对所获取的元素解码。在一个实施例中,获取逻辑包括分别与线程槽1501a、线程槽1501b相关联的单独的定序器。通常,核心1501与第一isa相关联,该第一isa定义/指定在处理器1500上可执行的指令。通常,作为第一isa的一部分的机器代码指令包括指令的一部分(称为操作码),该操作码引用/指定要执行的指令或操作。解码逻辑1525包括从其操作码识别这些指令并
在流水线中传递经解码的指令以进行由第一isa定义的处理的电路。例如,如下面更详细讨论的,在一个实施例中,解码器1525包括被设计为或适于识别特定指令(例如,事务指令)的逻辑。由于解码器1525进行的识别,架构或核心1501采取特定的预定义动作来执行与适当指令相关联的任务。重要的是要注意,可以响应于单个或多个指令来执行本文所描述的任务、块、操作和方法中的任何一个;其中一些指令可能是新的或旧的指令。注意,在一个实施例中,解码器1526识别相同的isa(或其子集)。可替代地,在异构核心环境中,解码器1526识别第二isa(第一isa的子集或不同的isa)。
[0115]
在一个示例中,分配器和重命名器块1530包括用于保留资源(例如,用于存储指令处理结果的寄存器文件)的分配器。然而,线程1501a和线程1501b潜在地能够乱序执行,其中分配器和重命名器块1530还保留其他资源,例如,用于跟踪指令结果的重新排序缓冲器。单元1530还可以包括寄存器重命名器,以将程序/指令参考寄存器重命名为处理器1500内部的其他寄存器。重新排序/引退单元1535包括诸如上面提到的重新排序缓冲器、加载缓冲器和存储缓冲器之类的组件以支持乱序执行和乱序执行的指令的稍后有序引退。
[0116]
在一个实施例中,(多个)调度器和执行单元块1540包括用于调度执行单元上的指令/操作的调度器单元。例如,浮点指令在具有可用的浮点执行单元的执行单元的端口上被调度。还包括与执行单元相关联的寄存器文件以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知的执行单元。
[0117]
较低级别数据高速缓存和数据转换缓冲器(d-tlb)1550耦合到(多个)执行单元1540。数据高速缓存用于存储最近使用/操作的元素,例如,数据操作数,其潜在地保持在存储器一致性状态中。d-tlb用于存储最近的虚拟/线性到物理地址转换。作为特定示例,处理器可以包括页表结构以将物理存储器分成多个虚拟页。
[0118]
这里,核心1501和核心1502共享对更高级别或更远的高速缓存(例如,与片上接口1510相关联的第二级高速缓存)的访问权。注意,更高级别或更远指代高速缓存级别增加或从(多个)执行单元进一步远离。在一个实施例中,更高级别高速缓存是最后一级数据高速缓存——处理器1500上的存储器层级中的最后高速缓存——例如,第二或第三级数据高速缓存。然而,更高级别高速缓存不限于此,因为它可以与指令高速缓存相关联或包括指令高速缓存。迹线高速缓存——一种类型的指令高速缓存——相反可以在解码器1525之后耦合以存储最近解码的迹线。这里,指令潜在地指代宏指令(即,由解码器识别的通用指令),其可以解码为多个微指令(微操作)。
[0119]
在所描绘的配置中,处理器1500还包括片上接口模块1510。历史上,下面更详细描述的存储器控制器已经被包括在处理器1500外部的计算系统中。在这种场景中,片上接口1510用于与处理器1500外部的设备(例如,系统存储器1575、芯片组(通常包括用于连接到存储器1575的存储器控制器中心和用于连接外围设备的i/o控制器中心)、存储器控制器中心、北桥或其他集成电路)进行通信。并且在这种场景中,总线1505可以包括任何已知的互连,例如,多点总线、点对点互连、串行互连、并行总线、一致(例如,高速缓存一致)总线、分层协议架构、差分总线和gtl总线。
[0120]
存储器1575可以专用于处理器1500或者与系统中的其他设备共享。存储器1575的类型的常见示例包括dram、sram、非易失性存储器(nv存储器)和其他已知的存储设备。注
意,设备1580可以包括图形加速器、与存储器控制器中心耦合的处理器或卡、与i/o控制器中心耦合的数据存储装置、无线收发器、闪存设备、音频控制器、网络控制器或其他已知的设备。
[0121]
然而,最近随着更多逻辑和设备被集成在诸如soc之类的单个管芯上,这些设备中的每一个可以合并在处理器1500上。例如,在一个实施例中,存储器控制器中心与处理器1500在同一封装和/或管芯上。这里,核心的一部分(核心上部分)1510包括一个或多个控制器,用于与诸如存储器1575或图形设备1580之类的其他设备相接合。包括用于与这种设备相接合的互连和控制器的配置通常被称为核心上(或非核心配置)。作为示例,片上接口1510包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路1505。然而,在soc环境中,甚至更多的设备(例如,网络接口、协处理器、存储器1575、图形处理器1580和任何其他已知的计算机设备/接口)可以集成在单个管芯或集成电路上以提供具有高功能和低功耗的小形状因子。
[0122]
在一个实施例中,处理器1500能够执行编译器、优化和/或转换器代码1577以编译、转换和/或优化应用代码1576,以支持本文所描述的装置和方法或与其相接合。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序集。通常,利用编译器来编译程序/应用代码是在多个阶段和多遍中完成的,以将高级别编程语言代码变换为低级别机器或汇编语言代码。然而,单遍编译器仍然可以用于简单编译。编译器可以利用任何已知的编译技术并且执行任何已知的编译器操作,例如,词法分析、预处理、解析、语义分析、代码生成、代码变换和代码优化。
[0123]
较大的编译器通常包括多个阶段,但是大多数情况下这些阶段被包括在两个一般阶段中:(1)前端,即,通常在该处可以进行句法处理、语义处理和一些变换/优化,以及(2)后端,即,通常在该处进行分析、变换、优化和代码生成。一些编译器指代中间部分,其说明了编译器的前端与后端之间的界定的模糊处。因此,对编译器的插入、关联、生成或其他操作的引用可以在前述阶段或遍中的任何一个以及编译器的任何其他已知的阶段或遍中进行。作为说明性示例,编译器潜在地在编译的一个或多个阶段中插入操作、调用、函数等,例如,在编译的前端阶段插入调用/操作,然后在变换阶段期间将调用/操作变换为较低级别的代码。注意,在动态编译期间,编译器代码或动态优化代码可以插入此类操作/调用,以及优化代码以便在运行时期间执行。作为特定说明性示例,可以在运行时期间动态地优化二进制代码(已编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。
[0124]
类似于编译器,诸如二进制转换器之类的转换器静态地或动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的引用可以指代:(1)动态地或静态地执行(多个)编译器程序、优化代码优化器或转换器,以编译程序代码、维护软件结构、执行其他操作、优化代码或转换代码;(2)执行包括操作/调用的主程序代码,例如,已经优化/编译的应用代码;(3)执行与主程序代码相关联的其他程序代码(例如,库),以维护软件结构、执行其他软件相关的操作或优化代码;或(4)其组合。
[0125]
现在参考图16,示出了根据本公开的实施例的第二系统1600的框图。如图16中示出的,多处理器系统1600是点对点互连系统,并且包括经由点对点互连1650耦合的第一处理器1670和第二处理器1680。处理器1670和1680中的每一个可以是处理器的某个版本。在一个实施例中,1652和1654是串行点对点一致互连结构的一部分。
[0126]
虽然仅示出了具有两个处理器1670、1680,但是应该理解的是,本公开的范围不限于此。在其他实施例中,一个或多个附加处理器可以存在于给定处理器中。
[0127]
处理器1670和1680被示为分别包括集成存储器控制器单元1672和1682。处理器1670还包括作为其总线控制器单元的一部分的点对点(p-p)接口1676和1678;类似地,第二处理器1680包括p-p接口1686和1688。处理器1670、1680可以使用p-p接口电路1678、1688经由点对点(p-p)接口1650交换信息。如图16中示出的,imc 1672和1682将处理器与相应的存储器(即,存储器1632和存储器1634)耦合,这些存储器可以是本地附接到相应处理器的主存储器的部分。
[0128]
处理器1670、1680各自使用点对点接口电路1676、1694、1686、1698经由单独的p-p接口1652、1654与芯片组1690交换信息。芯片组1690还经由接口电路1692沿着高性能图形互连1639与高性能图形电路1638交换信息。
[0129]
共享高速缓存(未示出)可以被包括在任一处理器中或两个处理器外部;而经由p-p互连与处理器连接,使得如果处理器被置于低功率模式,则任一处理器或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。
[0130]
芯片组1690可以经由接口1696耦合到第一总线1616。在一个实施例中,第一总线1616可以是外围组件互连(pci)总线,或者诸如快速pci总线或另一第三代i/o互连总线之类的总线,但本公开的范围不限于此。
[0131]
如图16中示出的,各种i/o设备1614连同将第一总线1616耦合到第二总线1620的总线桥1618一起耦合到第一总线1616。在一个实施例中,第二总线1620包括低引脚计数(lpc)总线。在一个实施例中,各种设备与第二总线1620耦合,包括例如,键盘和/或鼠标1622、通信设备1627和存储单元1628(例如,磁盘驱动器或其他大容量存储设备,其通常包括指令/代码和数据1630)。此外,音频i/o 1624被示为与第二总线1620耦合。注意,其他架构是可能的,其中所包括的组件和互连架构不同。例如,除了图16的点对点架构,系统可以实现多点总线或其他这样的架构。
[0132]
计算系统可以包括组件的各种组合。这些组件可以实现为ic、其部分、分立电子设备,或适配在计算机系统中的其他模块、逻辑、硬件、软件、固件或其组合,或者实现为以其他方式并入计算机系统的机箱内的组件。然而,应该理解,在其他实现方式中,可以省略所示出的组件中的一些组件,可以存在附加的组件,并且可以出现所示出的组件的不同布置。因此,上面描述的解决方案可以在下面示出或描述的互连中的一个或多个互连的任何部分中实现。
[0133]
在一个实施例中,处理器包括微处理器、多核心处理器、多线程处理器、超低电压处理器、嵌入式处理器或其他已知的处理元件。在所示的实现方式中,处理器充当主处理单元和中央中心,用于与系统的各种组件中的许多组件通信。作为一个示例,处理器被实现为片上系统(soc)。作为具体的说明性示例,处理器包括基于architecture core
tm
的处理器(例如,i3、i5、i7)或可从intel公司(santa clara,ca)获得的另一这种处理器。然而,应理解,其他低功率处理器(例如,可从sunnyvale,ca的advanced micro devices公司(amd)获得的;来自sunnyvale,ca的mips technologies公司的基于mips的设计;从arm控股公司或其客户或者其被许可者或采用者许可的基于arm的设计)代替地可以存在于其他实施例中,例如,apple a5/a6处理器、qualcomm snapdragon处理器或ti omap处理器。注意,
这种处理器的客户版本中的许多都是经修改和改变的;但是,这些处理器可以支持或识别执行如由处理器许可方阐述的所定义的算法的特定指令集。这里,微架构实现方式可以改变,但处理器的架构功能通常是一致的。下面将进一步讨论关于处理器在一个实现方式中的架构和操作的特定细节,以提供说明性示例。
[0134]
在一个实施例中,处理器与系统存储器通信。作为说明性示例,这在实施例中可以经由多个存储器设备来实现以提供给定量的系统存储器。作为示例,存储器可以符合基于联合电子器件工程委员会(jedec)低功率双倍数据速率(lpddr)的设计,例如,根据jedec jesd 209-2e(2009年4月发布)的当前lpddr2标准,或者被称为lpddr3或lpddr4的下一代lpddr标准,其将提供对lpddr2的扩展以增加带宽。在各种实现方式中,个体存储器设备可以具有不同的封装类型,例如,单管芯封装(sdp)、双管芯封装(ddp)或四管芯封装(13p)。在一些实施例中,这些设备直接焊接到主板上以提供较低轮廓的解决方案,而在其他实施例中,这些设备被配置为一个或多个存储器模块,这些存储器模块进而通过给定连接器耦合到主板。并且当然,其他存储器实现方式也是可能的,例如,其他类型的存储器模块,例如,不同种类的双列直插式存储器模块(dimm),包括但不限于microdimm、minidimm。在特定的说明性实施例中,存储器的大小在2gb和16gb之间,并且可以被配置为经由球栅阵列(bga)焊接到主板上的ddr3lm封装或lpddr2或lpddr3存储器。
[0135]
为了提供对诸如数据、应用、一个或多个操作系统等之类的信息的持久存储,大容量存储装置也可以耦合到处理器。在各种实施例中,为了实现更薄更轻的系统设计以及为了改进系统响应性,可以经由ssd实现该大容量存储装置。然而,在其他实施例中,大容量存储装置可以主要使用硬盘驱动器(hdd)来实现,其中较少量的ssd存储装置充当ssd高速缓存,以实现在断电事件期间对上下文状态和其他这样的信息的非易失性存储,从而可以在重新发起系统活动时发生快速上电。闪存设备可以例如经由串行外围接口(spi)耦合到处理器。该闪存设备可以提供对系统软件的非易失性存储,包括基本输入/输出软件(bios),以及系统的其他固件。
[0136]
在各种实施例中,系统的大容量存储装置由ssd单独实现或者实现为具有ssd高速缓存的磁盘驱动器、光驱动器或其他驱动器。在一些实施例中,大容量存储装置实现为ssd或hdd以及恢复(rst)高速缓存模块。在各种实现方式中,hdd提供在320gb-4太字节(tb)及以上之间的存储,而rst高速缓存利用容量为24gb-256gb的ssd实现。注意,这种ssd高速缓存可以被配置为单级高速缓存(slc)或多级高速缓存(mlc)选项,以提供适当级别的响应性。在仅ssd选项中,模块可以容纳在各种位置,例如,在msata或ngff槽中。作为示例,ssd的容量范围为120gb-1tb。
[0137]
各种外围设备可以经由低引脚计数(lpc)互连耦合到处理器。在所示的实施例中,各种组件可以通过嵌入式控制器耦合。这些组件可以包括键盘(例如,经由ps2接口耦合)、风扇和热传感器。在一些实施例中,触摸板也可以经由ps2接口耦合到ec。另外,诸如可信平台模块(tpm)(根据日期为2003年10月2日的可信计算组(tcg)tpm规范版本1.2)之类的安全性处理器也可以经由该lpc互连耦合到处理器。然而,应理解本公开的范围不限于此方面,并且对安全信息的安全处理和存储可以在另一受保护的位置(例如,安全性协处理器中的静态随机存取存储器(sram))进行,或者作为仅当受安全飞地(se)处理器模式保护时解密的加密数据二进制大对象。
[0138]
在特定实现方式中,外围端口可以包括高清晰度媒体接口(hdmi)连接器(其可以具有不同的形状因子,例如,全尺寸、迷你或微型);诸如根据通用串行总线修订版3.0规范(2008年11月)的全尺寸外部端口之类的一个或多个usb端口,当系统处于连接待机状态并插入到ac墙壁电源时,至少一个端口供电以对usb设备(例如,智能电话)充电。另外,还可以提供一个或多个thunderbolt
tm
端口。其他端口可以包括外部可访问的读卡器,例如,全尺寸sd-xc读卡器和/或用于wwan的sim读卡器(例如,8引脚读卡器)。对于音频,可以存在具有立体声和麦克风能力(例如,组合功能)的3.5mm插孔,支持插孔检测(例如,仅支持使用盖板中的麦克风的耳机或使用电缆形式的麦克风的耳机)。在一些实施例中,该插孔可以在立体声耳机与立体声麦克风输入之间重新分配任务。另外,可以提供电源插孔以耦合到ac块。
[0139]
系统可以以各种方式与外部设备通信,包括无线地。在某些实例中,存在各种无线模块,其中的每个无线模块可以对应于针对特定无线通信协议配置的无线电。一种用于诸如近场之类的短距离的无线通信的方式可以是经由近场通信(nfc)单元,nfc单元在一个实施例中可以经由smbus与处理器通信。注意,经由该nfc单元,彼此非常接近的设备可以通信。例如,用户可以通过将两个设备紧密地适配在一起使得系统能够与另一(例如)便携式设备(例如,用户的智能电话)进行通信,并且使得能够传送诸如识别信息、支付信息之类的信息,诸如图像数据之类的数据等。还可以使用nfc系统来执行无线功率传送。
[0140]
使用本文描述的nfc单元,用户可以通过利用这种设备中的一个或多个设备的线圈之间的耦合来边对边地碰撞设备并且边对边地放置设备以用于近场耦合功能(例如,近场通信和无线功率传送(wpt))。更具体地,实施例提供具有策略性成形并放置的铁氧材料的设备,以提供线圈的更好耦合。每个线圈具有与其相关联的电感,可以结合系统的电阻、电容和其他特征来选择电感,以便针对系统实现共同的共振频率。
[0141]
此外,附加的无线单元可以包括其他短距离无线引擎,包括wlan单元和蓝牙单元。使用wlan单元,可以实现根据给定的电气和电子工程师协会(ieee)802.11标准的wi-fi
tm
通信,同时经由蓝牙单元,可以发生经由蓝牙协议的短距离通信。这些单元可以经由例如usb链路或通用异步接收机发射机(uart)链路与处理器通信。或者这些单元可以根据快速外围组件互连
tm
(pcie
tm
)协议经由互连耦合到处理器,例如,根据快速pci
tm
规范基础规范版本3.0(2007年1月17日公布),或诸如串行数据输入/输出(sdio)标准之类的另一这种协议。当然,这些外围设备(其可以配置在一个或多个插入卡上)之间的实际物理连接可以通过使ngff连接器适配于主板的方式。
[0142]
另外,例如根据蜂窝或其他无线广域协议的无线广域通信可以经由wwan单元发生,该wwan单元进而可以耦合到订户身份模块(sim)。另外,为了使得能够接收和使用位置信息,还可以存在gps模块。wwan单元和诸如相机模块之类的集成捕获设备可以经由给定的usb协议(例如,usb 2.0或3.0链路,或uart或i2c协议)进行通信。再次,这些单元的实际物理连接可以经由使ngff插入卡适配于在主板上配置的ngff连接器。
[0143]
在特定实施例中,无线功能可以例如以wifi
tm 802.11ac解决方案来模块化地提供(例如,与ieee 802.11abgn向后兼容的插入卡),以支持windows 8 cs。该卡可以配置在内部槽中(例如,经由ngff适配器)。附加模块可以提供蓝牙能力(例如,具有向后兼容性的蓝牙4.0)以及无线显示功能。另外,nfc支持可以经由分离的设备或多功能设备提供,并且作为示例可以放置在机箱的右前部分以易于访问。另外附加的模块可以是wwan设备,
其可以提供对3g/4g/lte和gps的支持。该模块可以在内部(例如,ngff)槽中实现。可以针对wifi
tm
、蓝牙、wwan、nfc和gps提供集成天线支持,实现根据无线千兆比特(wigig)规范(2010年7月)从wifi
tm
到wwan无线电、无线千兆比特的无缝转变,反之亦然。
[0144]
如上面描述的,集成相机可以并入到盖板中。作为一个示例,该相机可以是高分辨率相机,例如,具有至少2.0兆像素(mp)的分辨率并且延伸到6.0mp或更高。
[0145]
为了提供音频输入和输出,可以经由数字信号处理器(dsp)实现音频处理器,该数字信号处理器可以经由高清晰度音频(hda)链路耦合到处理器。类似地,dsp可以与集成编码器/解码器(codec)和放大器通信,codec和放大器进而可以耦合到可以在机箱内实现的输出扬声器。类似地,放大器和codec可以耦合以接收来自麦克风的音频输入,在实施例中,麦克风可以经由双阵列麦克风(例如,数字麦克风阵列)来实现,以提供高质量的音频输入以便在系统内实现对各种操作的语音激活控制。还应注意,音频输出可以从放大器/codec提供给耳机插孔。
[0146]
在特定实施例中,数字音频编码解码器和放大器能够驱动立体声耳机插孔、立体声麦克风插孔、内部麦克风阵列和立体声扬声器。在不同的实现方式中,编码解码器可以集成到音频dsp中或者经由hd音频路径耦合到外围控制器中心(pch)。在一些实现方式中,除了集成立体声扬声器之外,还可以提供一个或多个低音扬声器,并且扬声器解决方案可以支持dts音频。
[0147]
在一些实施例中,处理器可以由外部电压调节器(vr)和集成在处理器管芯内部的多个内部电压调节器(称为完全集成的电压调节器(fivr))供电。在处理器中使用多个fivr使得能够将组件分组到分离的电源平面中,从而功率由fivr调节并仅提供给组中的那些组件。在功率管理期间,当处理器被置于特定低功率状态时,一个fivr的给定电源平面可以掉电或断电,而另一fivr的另一电源平面保持活动或完全供电。
[0148]
在一个实施例中,可以在一些深度睡眠状态期间使用维持电源平面来针对若干i/o信号使i/o引脚通电,例如,处理器与pch之间的接口,与外部vr的接口以及与ec的接口。该维持电源平面还对管芯上电压调节器供电,该管芯上电压调节器支持板载sram或在睡眠状态期间存储处理器上下文的其他高速缓冲存储器。维持电源平面还用于使处理器的唤醒逻辑通电,该唤醒逻辑监测并处理各种唤醒源信号。
[0149]
在功率管理期间,当其他电源平面在处理器进入特定深度睡眠状态时掉电或断电时,维持电源平面保持通电以支持上面引用的组件。然而,这可能导致当不需要这些组件时不必要的功耗或耗散。为此,实施例可以提供连接待机睡眠状态以使用专用电源平面来维护处理器上下文。在一个实施例中,连接待机睡眠状态有助于使用pch的资源进行处理器唤醒,该pch本身可以与处理器一起存在于封装中。在一个实施例中,连接待机睡眠状态有助于维持pch中的处理器架构功能直到处理器唤醒,这使得能够关闭在深度睡眠状态期间先前保持通电的所有不必要的处理器组件,包括关闭所有时钟。在一个实施例中,pch包含时间戳计数器(tsc)和用于在连接待机状态期间控制系统的连接待机逻辑。用于维持电源平面的集成电压调节器也可以驻留在pch上。
[0150]
在实施例中,在连接待机状态期间,集成电压调节器可以用作专用电源平面,其在处理器进入深度睡眠状态和连接待机状态时保持通电以支持存储处理器上下文(例如,关键状态变量)的专用高速缓冲存储器。该关键状态可以包括与架构、微架构相关联的状态变
量,调试状态和/或与处理器相关联的类似状态变量。
[0151]
可以在连接待机状态期间将来自ec的唤醒源信号发送到pch而不是处理器,从而pch而不是处理器可以管理唤醒处理。另外,tsc在pch中维护以有助于维持处理器架构功能。
[0152]
处理器中的功率控制可以导致增强的功率节省。例如,可以在核心之间动态地分配功率,个体核心可以改变频率/电压,并且可以提供多个深度低功率状态以实现非常低的功耗。另外,对核心或独立核心部分的动态控制可以通过在不使用组件时将组件断电来提供降低的功耗。
[0153]
在不同的实现方式中,诸如tpm之类的安全性模块可以集成到处理器中,或者可以是诸如tpm 2.0设备之类的分立设备。利用集成的安全性模块(也称为平台信任技术(ptt)),可以使能bios/固件以针对特定安全性特征公开特定硬件特征,包括安全指令、安全引导、防盗技术、身份保护技术、可信执行技术(txt)和可管理性引擎技术以及诸如安全键盘和显示器之类的安全用户接口。
[0154]
尽管已经关于有限数量的实施例描述了上面的概念,但是本领域技术人员将理解由此产生的许多修改和变型。所附权利要求旨在覆盖落入本公开的真实精神和范围内的所有这些修改和变化。
[0155]
设计可以经历从创建到仿真到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在仿真中有用,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外地,可以在设计过程的某些阶段产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在某个阶段达到表示各种设备在硬件模型中的物理放置的数据级别。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定对于用于制造集成电路的掩模而言在不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。存储器或诸如磁盘之类的磁或光存储装置可以是用于存储经由光波或电波发送的信息的机器可读介质,该光波或电波被调制或以其他方式生成以发送这样的信息。当发送指示或携带代码或设计的电载波时,在执行对电信号的复制、缓冲或重传的程度上,制作新的副本。因此,通信提供商或网络提供商可以将体现本公开的实施例的技术的诸如编码到载波中的信息之类的制品至少临时地存储在有形的机器可读介质上。
[0156]
如本文所使用的模块指代硬件、软件和/或固件的任何组合。作为示例,模块包括硬件(例如,微控制器),其与用于存储适合于由微控制器执行的代码的非暂时性介质相关联。因此,在一个实施例中,对模块的引用指代特别地被配置用于识别和/或执行要保持在非暂时性介质上的代码的硬件。此外,在另一实施例中,对模块的使用指代包括特别适合于由微控制器执行以执行预定操作的代码的非暂时性介质。并且,如可以推断的,在又一实施例中,术语模块(在该示例中)可以指代微控制器和非暂时性介质的组合。通常,示出为分离的模块界限通常变化并且潜在地重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,例如,晶体管、寄存器或其他硬件(例如,可编程逻辑器件)。
[0157]
在一个实施例中,对短语“用于”或“被配置用于”的使用指代对装置、硬件、逻辑或元件进行布置、放在一起、制造、提供以售卖、导入和/或设计以执行指定或确定的任务。在
该示例中,没有进行操作的装置或其元件仍“被配置用于”如果其被设计、耦合和/或互连以执行指定任务则执行所描述的指定任务。作为纯粹说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置用于”向时钟提供使能信号的逻辑门不包括可以提供1或0的每一个潜在的逻辑门。相反,逻辑门是以在操作期间1或0输出用于启用时钟的某种方式耦合的逻辑门。再次注意,对术语“被配置用于”的使用不要求操作,而是集中于装置、硬件和/或元件的潜在状态,其中在潜在状态下,装置、硬件和/或元件被设计为当装置、硬件和/或元件正在操作时执行特定任务。
[0158]
此外,在一个实施例中,对短语“能够/能够用于”和/或“可操作用于”的使用是指以这样的方式被设计为使得能够以指定方式使用装置、逻辑、硬件和/或元件的某种装置、逻辑、硬件和/或元件。如上文所提到的,在一个实施例中,对用于、能够用于或可操作用于的使用指代装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件没有在操作,但是以这样的方式被设计为使得能够以指定方式使用装置。
[0159]
如本文所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,对逻辑电平、逻辑值(logic value)或逻辑上的值(logical value)的使用还称为对1和0的使用,其简单地表示二进制逻辑状态。例如,1指代高逻辑电平,并且0指代低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其他表示。例如,十进制数十也可以表示为二进制值1010和十六进制字母a。因此,值包括能够保持在计算机系统中的信息的任何表示。
[0160]
此外,状态可以由值或值的部分表示。作为示例,诸如逻辑1之类的第一值可以表示默认或初始状态,而诸如逻辑0之类的第二值可以表示非默认状态。另外,在一个实施例中,术语重置和设置分别指代默认值或状态和更新后的值或状态。例如,默认值潜在地包括高逻辑值(即,重置),而更新后的值潜在地包括低逻辑值(即,设置)。注意,值的任何组合可以用于表示任意数量的状态。
[0161]
以下示例涉及根据本说明书的实施例。示例1是一种装置,包括:耦合到链路的端口;协议电路,其用于实现分层协议栈,其中,该协议电路用于:确定分组的分组类型;生成分组,其中,分组包括分组报头,该分组报头包括报头基础,并且该报头基础包括类型字段和报头内容字段,其中,该类型字段指示分组类型,该报头内容字段指示多个报头内容块中的哪个要被包括在具有报头基础的分组报头中,其中,报头基础的字段中的信息指示分组的总长度;其中,端口用于在链路上将分组发送到另一设备。
[0162]
示例2包括示例1的主题,其中,多个报头内容块中的每一个用于标识与分组相关联的不同的相应信息,并且报头内容字段指示在报头中不包括多个报头内容块中的任何一个、包括多个报头内容块的子集、或包括全部的多个报头内容块。
[0163]
示例3包括示例2的主题,其中,报头内容字段使用独热编码来标识多个报头内容块中的哪个要被包括在分组中。
[0164]
示例4包括示例2-3中任一示例的主题,其中,多个报头内容块包括:第一报头内容块,其用于指示字节使能值和进程地址空间标识符(pasid);第二报头内容块,其用于标识针对分组的分段信息;第三报头内容块,其用于标识针对分组的数据加密信息;以及第四报头内容块,其用于供应商定义的信息。
[0165]
示例5包括示例1-4中任一示例的主题,其中,多个报头内容块中的每一个包括一个双字(dw)的整数倍。
[0166]
示例6包括示例5的主题,其中,多个报头内容块中的一个特定报头内容块包括可变长度的报头内容块,并且该特定报头内容块的长度在报头内容字段中被指示。
[0167]
示例7包括示例6的主题,其中,特定报头内容块的长度选自1dw长度、2dw长度或4dw长度。
[0168]
示例8包括示例1-7中任一示例的主题,其中,分组符合基于快速外围组件互连(pcie)的协议。
[0169]
示例9包括示例8的主题,其中,在pcie flit模式下使用分组,其中,在非flit模式下使用不同的pcie分组格式。
[0170]
示例10包括示例9的主题,其中,非flit模式的分组格式包括具有格式字段、字节使能字段和比flit模式分组报头的类型字段短的类型字段的分组报头格式,并且不包括报头内容字段。
[0171]
示例11包括示例9-10中任一示例的主题,其中,flit模式利用pam编码,并且非flit模式利用不归零(nrz)编码。
[0172]
示例12包括示例1-11中任一示例的主题,其中,报头基础还包括尾部大小字段,该尾部大小字段用于指示尾部是否被包括在分组中。
[0173]
示例13包括示例1-12中任一示例的主题,其中,基于分组的类型,报头基础的长度为3双字(dw)或4dw,并且多个报头内容块中的每一个包括1dw的整数倍的相应长度。
[0174]
示例14是一种装置,包括:端口,其包括接收机,该接收机用于通过链路从另一设备接收分组,其中,分组包括分组报头,该分组报头包括报头基础,并且该报头基础包括类型字段和报头内容字段;以及协议电路,其用于:基于报头基础解析分组;根据至少类型字段和报头内容字段来确定分组的长度;以及基于报头内容字段的值来识别报头中包括的特定报头内容块。
[0175]
示例15包括示例14的主题,其中,链路是根据基于快速外围组件互连(pcie)的协议的,并且利用脉冲幅度调制(pam)编码。
[0176]
示例16包括示例14-15中任一示例的主题,其中,报头内容字段包括用于指示多个定义的报头内容块的子集被包括在分组报头中的值,其中,报头内容块的子集包括特定报头内容块。
[0177]
示例17包括示例16的主题,其中,基于分组的类型,报头基础的长度为3双字(dw)或4dw,并且多个报头内容块中的每一个包括1dw的整数倍的相应长度。
[0178]
示例18包括示例14-17中任一示例的主题,其中,长度是根据报头基础的第一dw中的字段被确定的,并且报头基础的第一dw中的字段包括:类型字段;报头内容字段;尾部大小字段;以及长度字段。
[0179]
示例19包括示例18的主题,其中,尾部大小字段用于指示尾部是否被包括在分组中。
[0180]
示例20包括示例14-19中任一示例的主题,其中,多个报头内容块中的每一个用于标识与分组相关联的不同的相应信息,并且报头内容字段指示在报头中不包括多个报头内容块中的任何一个、包括多个报头内容块的子集、或包括全部的多个报头内容块。
[0181]
示例21包括示例20的主题,其中,报头内容字段使用独热编码来标识多个报头内容块中的哪个要被包括在分组中。
[0182]
示例22包括示例20-21中任一示例的主题,其中,多个报头内容块包括:第一报头内容块,其用于指示字节使能值和进程地址空间标识符(pasid);第二报头内容块,其用于标识针对分组的分段信息;第三报头内容块,其用于标识针对分组的数据加密信息;以及第四报头内容块,其用于供应商定义的信息。
[0183]
示例23包括示例14-22中任一示例的主题,其中,多个报头内容块中的每一个包括一个双字(dw)的整数倍。
[0184]
示例24包括示例23的主题,其中,多个报头内容块中的一个特定报头内容块包括可变长度的报头内容块,并且该特定报头内容块的长度在报头内容字段中被指示。
[0185]
示例25包括示例24的主题,其中,特定报头内容块的长度选自1dw长度、2dw长度或4dw长度。
[0186]
示例26包括示例14-25中任一示例的主题,其中,分组符合基于快速外围组件互连(pcie)的协议。
[0187]
示例27包括示例26的主题,其中,在pcie flit模式下使用分组,其中,在非flit模式下使用不同的pcie分组格式。
[0188]
示例28包括示例27的主题,其中,非flit模式的分组格式包括具有格式字段、字节使能字段和比flit模式分组报头的类型字段短的类型字段的分组报头格式,并且不包括报头内容字段。
[0189]
示例29包括示例27-28中任一示例的主题,其中,flit模式利用pam编码,并且非flit模式利用不归零(nrz)编码。
[0190]
示例30是一种系统,包括:第一设备;以及通过链路耦合到第一设备的第二设备,其中,第二设备包括协议电路,该协议电路用于:确定要在链路上被发送的分组的分组类型;生成分组,其中,分组包括分组报头,该分组报头包括报头基础,并且该报头基础包括类型字段和报头内容字段,其中,该类型字段指示分组类型,该报头内容字段指示多个不同的报头内容块中的哪个要被包括在具有报头基础的分组报头中,报头基础的字段中的信息指示分组的总长度,并且第二设备用于在链路上将分组发送到第一设备。
[0191]
示例31包括示例30的主题,其中,链路是根据基于快速外围组件互连(pcie)的协议的,并且利用脉冲幅度调制(pam)编码。
[0192]
示例32包括示例31的主题,其中,第一设备和第二设备包括用于在flit模式或非flit模式下通过链路进行通信的逻辑,该flit模式利用pam编码,该非flit模式利用不归零(nrz)编码,该分组是基于flit模式分组格式的,并且在非flit模式下使用不同的分组格式。
[0193]
示例33包括示例32的主题,其中,非flit模式的分组格式包括具有格式字段、字节使能字段和比flit模式分组报头的类型字段短的类型字段的分组报头格式,并且不包括报头内容字段。
[0194]
示例34包括示例30-33中任一示例的主题,其中,第二设备包括处理器,并且第一设备包括图形卡或固态驱动器中的一个。
[0195]
示例35包括示例30-34中任一示例的主题,其中,多个报头内容块中的每一个用于
标识与分组相关联的不同的相应信息,并且报头内容字段指示在报头中不包括多个报头内容块中的任何一个、包括多个报头内容块的子集、或包括全部的多个报头内容块。
[0196]
示例36包括示例35的主题,其中,报头内容字段使用独热编码来标识多个报头内容块中的哪个要被包括在分组中。
[0197]
示例37包括示例35-36中任一示例的主题,其中,多个报头内容块包括:第一报头内容块,其用于指示字节使能值和进程地址空间标识符(pasid);第二报头内容块,其用于标识针对分组的分段信息;第三报头内容块,其用于标识针对分组的数据加密信息;以及第四报头内容块,其用于供应商定义的信息。
[0198]
示例38包括示例30-37中任一示例的主题,其中,多个报头内容块中的每一个包括一个双字(dw)的整数倍。
[0199]
示例39包括示例38的主题,其中,多个报头内容块中的一个特定报头内容块包括可变长度的报头内容块,并且该特定报头内容块的长度在报头内容字段中被指示。
[0200]
示例40包括示例39的主题,其中,特定报头内容块的长度选自1dw长度、2dw长度或4dw长度。
[0201]
示例41包括示例30-40中任一示例的主题,其中,报头基础还包括尾部大小字段,该尾部大小字段用于指示尾部是否被包括在分组中。
[0202]
示例42包括示例30-41中任一示例的主题,其中,基于分组的类型,报头基础的长度为3双字(dw)或4dw,并且多个报头内容块中的每一个包括1dw的整数倍的相应长度。
[0203]
示例43是一种方法,包括:确定要在链路上从第一设备被发送到第二设备的分组的分组类型;在第一设备处生成分组,其中,分组包括分组报头,该分组报头包括报头基础,并且该报头基础包括类型字段和报头内容字段,其中,该类型字段指示分组类型,该报头内容字段指示多个报头内容块中的哪个要被包括在具有报头基础的分组报头中,其中,报头基础的字段中的信息指示分组的总长度;以及在链路上将分组发送到第二设备。
[0204]
示例44包括示例43的主题,其中,多个报头内容块中的每一个用于标识与分组相关联的不同的相应信息,并且报头内容字段指示在报头中不包括多个报头内容块中的任何一个、包括多个报头内容块的子集、或包括全部的多个报头内容块。
[0205]
示例45包括示例44的主题,其中,报头内容字段使用独热编码来标识多个报头内容块中的哪个要被包括在分组中。
[0206]
示例46包括示例44-45中任一示例的主题,其中,多个报头内容块包括:第一报头内容块,其用于指示字节使能值和进程地址空间标识符(pasid);第二报头内容块,其用于标识针对分组的分段信息;第三报头内容块,其用于标识针对分组的数据加密信息;以及第四报头内容块,其用于供应商定义的信息。
[0207]
示例47包括示例43-46中任一示例的主题,其中,多个报头内容块中的每一个包括一个双字(dw)的整数倍。
[0208]
示例48包括示例47的主题,其中,多个报头内容块中的一个特定报头内容块包括可变长度的报头内容块,并且该特定报头内容块的长度在报头内容字段中被指示。
[0209]
示例49包括示例48的主题,其中,特定报头内容块的长度选自1dw长度、2dw长度或4dw长度。
[0210]
示例50包括示例43-49中任一示例的主题,其中,分组符合基于快速外围组件互连
(pcie)的协议。
[0211]
示例51包括示例50的主题,其中,在pcie flit模式下使用分组,其中,在非flit模式下使用不同的pcie分组格式。
[0212]
示例52包括示例51的主题,其中,非flit模式的分组格式包括具有格式字段、字节使能字段和比flit模式分组报头的类型字段短的类型字段的分组报头格式,并且不包括报头内容字段。
[0213]
示例53包括示例50-52中任一示例的主题,其中,flit模式利用pam编码,并且非flit模式利用不归零(nrz)编码。
[0214]
示例54包括示例43-53中任一示例的主题,其中,报头基础还包括尾部大小字段,该尾部大小字段用于指示尾部是否被包括在分组中。
[0215]
示例55包括示例43-54中任一示例的主题,其中,基于分组的类型,报头基础的长度为3双字(dw)或4dw,并且多个报头内容块中的每一个包括1dw的整数倍的相应长度。
[0216]
示例56是包括用于执行示例43-55中任一示例的方法的模块的系统。
[0217]
示例57是一种方法,包括:在第一设备的端口处通过链路从另一设备接收分组,其中,分组包括分组报头,该分组报头包括报头基础,并且该报头基础包括类型字段和报头内容字段;以及基于报头基础解析分组;根据至少类型字段和报头内容字段来确定分组的长度;以及基于报头内容字段的值来识别报头中包括的特定报头内容块。
[0218]
示例58包括示例57的主题,其中,链路是根据基于快速外围组件互连(pcie)的协议的,并且利用脉冲幅度调制(pam)编码。
[0219]
示例59包括示例57-58中任一示例的主题,其中,报头内容字段包括用于指示多个定义的报头内容块的子集被包括在分组报头中的值,其中,报头内容块的子集包括特定报头内容块。
[0220]
示例60包括示例59的主题,其中,基于分组的类型,报头基础的长度为3双字(dw)或4dw,并且多个报头内容块中的每一个包括1dw的整数倍的相应长度。
[0221]
示例61包括示例57-60中任一示例的主题,其中,长度是根据报头基础的第一dw中的字段被确定的,并且报头基础的第一dw中的字段包括:类型字段;报头内容字段;尾部大小字段;以及长度字段。
[0222]
示例62包括示例61的主题,其中,尾部大小字段用于指示尾部是否被包括在分组中。
[0223]
示例63包括示例57-62中任一示例的主题,其中,多个报头内容块中的每一个用于标识与分组相关联的不同的相应信息,并且报头内容字段指示在报头中不包括多个报头内容块中的任何一个、包括多个报头内容块的子集、或包括全部的多个报头内容块。
[0224]
示例64包括示例63的主题,其中,报头内容字段使用独热编码来标识多个报头内容块中的哪个要被包括在分组中。
[0225]
示例65包括示例63-64中任一示例的主题,其中,多个报头内容块包括:第一报头内容块,其用于指示字节使能值和进程地址空间标识符(pasid);第二报头内容块,其用于标识针对分组的分段信息;第三报头内容块,其用于标识针对分组的数据加密信息;以及第四报头内容块,其用于供应商定义的信息。
[0226]
示例66包括示例57-65中任一示例的主题,其中,多个报头内容块中的每一个包括
一个双字(dw)的整数倍。
[0227]
示例67包括示例66的主题,其中,多个报头内容块中的一个特定报头内容块包括可变长度的报头内容块,并且该特定报头内容块的长度在报头内容字段中被指示。
[0228]
示例68包括示例67的主题,其中,特定报头内容块的长度选自1dw长度、2dw长度或4dw长度。
[0229]
示例69包括示例57-68中任一示例的主题,其中,分组符合基于快速外围组件互连(pcie)的协议。
[0230]
示例70包括示例69的主题,其中,在pcie flit模式下使用分组,其中,在非flit模式下使用不同的pcie分组格式。
[0231]
示例71包括示例70的主题,其中,非flit模式的分组格式包括具有格式字段、字节使能字段和比flit模式分组报头的类型字段短的类型字段的分组报头格式,并且不包括报头内容字段。
[0232]
示例72包括示例70-71中任一示例的主题,其中,flit模式利用pam编码,并且非flit模式利用不归零(nrz)编码。
[0233]
示例73是一种系统,包括用于执行示例57-72中任一项的方法的模块。
[0234]
上面所阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的、能够由处理元件执行的指令或代码来实现。非暂时性机器可访问/可读介质包括以诸如计算机或电子系统之类的机器可读的形式提供(即,存储和/或传输)信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(ram)(例如,静态ram(sram)或动态ram(dram));rom;磁或光存储介质;闪速存储器设备;电存储设备;光存储设备;声学存储设备;用于保持从暂时(传播)信号(例如,载波、红外信号、数字信号)接收到的信息的其他形式的存储设备(其用于区别于可以从其接收信息的非暂时性介质);等等。
[0235]
用于对逻辑进行编程以执行本公开的实施例的指令可以存储在系统中的存储器(例如,dram、高速缓存、闪速存储器或其他存储装置)内。此外,可以经由网络或通过其他计算机可读介质的方式来分发指令。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不限于软盘、光盘、压缩盘只读存储器(cd-rom)和磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪速存储器,或用于经由电、光、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传输信息的有形的机器可读存储装置。因此,计算机可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
[0236]
贯穿本说明书对“一个实施例”或“实施例”的引用表示结合该实施例描述的特定的特征、结构或特性包括在本公开的至少一个实施例中。因此,贯穿本说明书各处出现的短语“在一个实施例中”或“在实施例中”不一定指代同一实施例。此外,特定的特征、结构或特性可以以任何适合的方式组合在一个或多个实施例中。
[0237]
在前述说明书中,已经参考具体的示例性实施例进行了详细描述。然而,将显而易见的是,在不偏离如所附权利要求书中阐述的本公开的更宽泛的精神和范围的情况下,可以对其进行各种修改和改变。说明书和附图因此应被视为说明意义而非限制意义的。此外,
对实施例和其他示范性语言的前述使用不一定指代同一实施例或同一示例,而是可以指代不同且独特的实施例以及潜在地指代同一实施例。
技术特征:
1.一种装置,所述装置包括:耦合到链路的端口;其中,所述端口包括:用于实现分层协议栈的协议逻辑单元,其中,所述协议逻辑单元包括事务层、数据链路层和物理层,其中,所述协议逻辑单元用于:在基于快速外围组件互连(pcie)的协议的flit模式下组装事务层分组(tlp),其中,所述tlp包括报头,所述报头包括用于指示所述tlp的类型的类型字段以及正交报头内容(ohc)字段,所述ohc字段被编码以指示所述报头中特定ohc的存在,其中,所述报头还包括所述特定ohc,其中,所述端口用于在所述链路上将所述tcp发送到另一设备。2.根据权利要求1所述的装置,其中,所述特定ohc在所述报头中的报头基础之后。3.根据权利要求1或2所述的装置,其中,所述特定ohc是从定义的ohc块集合中选择的,并且所述ohc块集合中的每个ohc块具有定义的格式。4.根据权利要求1至3中任一项所述的装置,其中,所述ohc块集合包括ohc-a块、ohc-b块、ohc-c块和至少一个ohc-e块。5.根据权利要求1至4中任一项所述的装置,其中,当ohc块要被包括在所述特定ohc中时,所述ohc块要如下排序:ohc-a块在ohc-b块之前,ohc-b块在ohc-c块之前,并且ohc-c块在ohc-e块之前。6.根据权利要求1至5中任一项所述的装置,其中,ohc-a块包括进程地址空间标识符(pasid)字段。7.根据权利要求1至6中任一项所述的装置,其中,所述ohc块集合包括ohc-e块的三个版本,所述ohc-e块的三个版本具有三种不同长度。8.根据权利要求1至7中任一项所述的装置,其中,所述ohc-e块的三个版本包括长度为一个双字(dw)的ohc-e1块、长度为两个dw的ohc-e2块和长度为四个dw的ohc-e4块。9.根据权利要求1至8中任一项所述的装置,其中,所述ohc块的内容基于在所述类型字段中标识出的tlp类型而变化。10.根据权利要求1至9中任一项所述的装置,其中,所述基于pcie的协议包括pcie 6代。11.根据权利要求1至10中任一项所述的装置,其中,所述协议逻辑单元包括在硬件电路中实现的逻辑单元。12.根据权利要求1至11中任一项所述的装置,其中,所述协议逻辑单元包括至少部分地在软件中实现的逻辑单元。13.一种方法,所述方法包括:在基于快速外围组件互连(pcie)的协议的flit模式下组装事务层分组(tlp),其中,所述tlp包括报头,所述报头的第一双字(dw)包括用于指示所述tlp的类型的类型字段以及正交报头内容(ohc)字段,所述ohc字段被编码以指示所述报头中一个或多个ohc块的存在,
其中,所述报头还包括所述一个或多个ohc块;以及通过与所述基于pcie的协议兼容的链路将所述tlp发送到另一设备。14.根据权利要求13所述的方法,其中,所述ohc块中的每一个包括一个dw的整数倍。15.根据权利要求13或14所述的方法,其中,在非flit模式下使用不同的pcie分组格式。16.根据权利要求13至15中任一项所述的方法,其中,所述非flit模式的分组格式包括具有格式字段、字节使能字段和比flit模式分组报头的类型字段短的类型字段的分组报头格式,并且不包括所述ohc字段。17.根据权利要求13至16中任一项所述的方法,其中,所述报头还包括尾部大小字段,所述尾部大小字段用于指示尾部是否被包括在所述tlp中。18.一种系统,包括用于执行权利要求13至17中任一项所述的方法的模块。19.一种系统,所述系统包括:第一设备;以及第二设备,所述第二设备通过链路耦合到所述第一设备,其中,所述第二设备包括协议逻辑单元,所述协议逻辑单元用于:在基于快速外围组件互连(pcie)的协议的flit模式下接收事务层分组(tlp),其中,所述tlp包括报头,所述报头包括用于指示所述tlp的类型的类型字段以及正交报头内容(ohc)字段,所述ohc字段被编码以指示所述报头中特定ohc的存在,其中,所述报头还包括所述特定ohc;以及根据报头基础的字段来确定所述tlp的总长度。20.根据权利要求19所述的系统,其中,所述链路基于所述基于pcie的协议,并且利用脉冲幅度调制(pam)编码。21.根据权利要求19至20中任一项所述的系统,其中,所述第一设备和所述第二设备包括用于在所述flit模式或非flit模式下通过所述链路进行通信的逻辑单元,所述非flit模式利用不归零(nrz)编码,并且在所述非flit模式下使用不同的分组格式。22.根据权利要求19至21中任一项所述的系统,其中,所述报头基础还包括:尾部大小字段;长度字段;标签字段;以及地址字段。23.根据权利要求19至22中任一项所述的系统,其中,所述第二设备包括处理器,并且所述第一设备包括图形卡或固态驱动器中的一个。24.根据权利要求19至23中任一项所述的系统,其中,所述协议逻辑单元还在涉及存储器的事务中使用所述tlp中的数据。25.根据权利要求19至24中任一项所述的系统,其中,所述协议逻辑单元包括在硬件电路中实现的逻辑单元。26.根据权利要求19至25中任一项所述的系统,其中,所述协议逻辑单元包括至少部分地在软件中实现的逻辑单元。
27.一种用于数据通信的方法,所述方法包括:经由与基于快速外围组件互连(pcie)的协议兼容的链路接收分组;解析所述分组,所述分组包括具有报头基础和一个或多个报头内容块的报头,其中,所述一个或多个报头内容块中的至少一个包括以下各项的值:处理提示(ph)、引导标签(st)、地址转换服务(ats)存储器属性(ama)和ama有效(av),并且其中,所述st是未过载的;以及基于所述解析的结果来处理所述分组。28.一种机器可读存储介质,包括存储在其上的多条指令,所述多条指令响应于被执行而使得计算设备进行以下操作:经由与基于快速外围组件互连(pcie)的协议兼容的链路接收分组;解析所述分组,所述分组包括具有报头基础和一个或多个报头内容块的报头,其中,所述一个或多个报头内容块中的至少一个包括以下各项的值:处理提示(ph)、引导标签(st)、地址转换服务(ats)存储器属性(ama)和ama有效(av),并且其中,所述st是未过载的;以及基于所述解析的结果来处理所述分组。
技术总结
事务层分组格式。一种设备包括协议逻辑,该协议逻辑用于确定分组的分组类型,并且生成并发送对应的分组。该分组包括具有报头基础的分组报头,该报头基础包括类型字段和报头内容字段。类型字段指示分组类型,并且报头内容字段指示多个报头内容块中的哪个要被包括在具有报头基础的分组报头中。报头基础的字段中的信息指示分组的总长度。信息指示分组的总长度。信息指示分组的总长度。
技术研发人员:D
受保护的技术使用者:英特尔公司
技术研发日:2020.09.23
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-12921.html