CN105793829B - 用于集成组件互连的装置、方法和*** - Google Patents
用于集成组件互连的装置、方法和*** Download PDFInfo
- Publication number
- CN105793829B CN105793829B CN201380081348.1A CN201380081348A CN105793829B CN 105793829 B CN105793829 B CN 105793829B CN 201380081348 A CN201380081348 A CN 201380081348A CN 105793829 B CN105793829 B CN 105793829B
- Authority
- CN
- China
- Prior art keywords
- configuration parameters
- configuration
- data structure
- data
- devices
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4265—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0038—System on Chip
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Information Transfer Systems (AREA)
- Microcomputers (AREA)
Abstract
访问数据结构,该数据结构定义集成电路设备中的一个或超过一个集成块的配置参数。基于该数据结构中定义的相应配置参数来配置集成块中的一个或超过一个。在运行时间之前设置配置参数并将配置参数永久存储在该数据结构中。
Description
领域
本公开涉及计算***,且具体地(而非排他地)涉及点对点互连。
背景技术
半导体处理和逻辑设计方面的进展已允许可存在于集成电路器件上的逻辑数量的增加。因此,计算机***配置已经从***中的单个或多个集成电路发展到各个集成电路上存在的多个核、多个硬件线程和多个逻辑处理器、以及此类处理器内集成的其它接口。处理器或集成电路典型地包括单个物理处理器管芯,其中处理器管芯可包括任意数量的核、硬件线程、逻辑处理器、接口、存储器、控制器中枢等等。
由于将更多处理功率装配在更小封装中的能力越来越强,更小的计算设备越来越受欢迎。智能手机、平板、超薄笔记本以及其它用户设备已指数地增长。然而,这些更小的设备依赖于服务器进行超出形状因数的数据存储和复杂处理。作为结果,高性能计算市场(即服务器空间)的需求也已经增加。例如,在现代服务器中,典型地不仅存在具有多个核的单个处理器,而且存在多个物理处理器(也称为多个插槽),以用于增加计算能力。但由于处理能力随着计算***中的设备的数量增长,插槽与其它设备之间的通信变得更关键。
实际上,互连已经从主要处理电通信的更传统的多分支总线增长为便于快速通信的充分发展的互连架构。不幸的是,随着未来处理器在甚至更高速率下消耗的需求,对现有互连架构的能力寄予了相应的需求。
附图说明
图1示出包括互连架构的计算***的实施例。
图2示出包括分层栈的互连架构的实施例。
图3示出将在互连架构内产生或接收的请求或分组的实施例。
图4示出用于互连架构的发射机和接收机对的实施例。
图5示出示例***中的示例配置属性数据结构的简化表示。
图6是包括配置工具的示例***的简化框图。
图7是示出示例配置数据产生时的示例流程的框图。
图8是示出***的示例传输层的简化框图。
图9是示出设备-设备数据传输中的技术的流程图。
图10示出示例互连架构的简化框图。
图11A-11D是示出可在芯片上***(SoC)架构和其它***中采用的示例技术的流程图。
图12示出包括多核处理器的计算***的框图的实施例。
图13示出包括多核处理器的计算***的框图的另一实施例。
图14示出处理器的框图的实施例。
图15示出包括处理器的计算***的框图的另一实施例。
图16示出包括多个处理器的计算***的块的实施例。
图17示出实现为芯片上***(SoC)的示例***。
具体实施方式
在以下描述中,阐明了众多具体细节,如具体类型的处理器和***配置的示例、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体***组件、具体测量/高度、具体处理器流水线级和操作等,以提供对本发明的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如具体或替代的处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、代码中算法的具体表达、具体掉电和功率限制技术/逻辑、以及计算机***的其它具体操作细节,以避免不必要地模糊本发明。
尽管参考特定集成电路中(诸如计算平台或微处理器中)的节能和能效描述了以下实施例,但是其它实施例适用于其它类型的集成电路和逻辑器件。可将本文中所描述的多个实施例的类似技术和教导应用于也可受益于更佳的能效和节能的其他类型的电路或半导体器件。例如,所公开的实施例不限于台式计算机***或超极本TM。并且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、片上***(SOC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、因特网协议设备、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、芯片上***、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可执行以下教导的功能和操作的任何其他***。此外,此处所描述的设备、方法,以及***也不仅限于物理计算设备,但是,也可以涉及对于节能和效率的软件优化。如将在以下描述中容易变得明显地,本申请中描述的方法、装置和***的实施例(不论是参考硬件、固件、软件还是其组合)对于与性能考虑相平衡的“绿色技术”未来是关键的。
随着计算***的进步,本文的各组件可变得更加复杂。结果,用于在这些组件之间进行耦合和通信的互连架构也增加了复杂性以确保满足带宽要求来用于最优组件操作。此外,不同的市场细分要求互连架构的不同方面来适合该市场的需求。例如,服务器需要较高的性能,而移动生态***有时能够牺牲整体性能来换取功率节省。然而,大多数结构的单一目的是使用最大功率节省来提供最高可能性能。在下文中,讨论了多个互连,它们将潜在地从在此描述的本公开的各方面中获益。
一种互连结构架构包括***部件互连(PCI)快速(Express)(PCIe)架构。PCIe的主要目标是使得来自不同供应商的各组件和器件能够在开放架构中互操作,横跨多个市场细分;客户机(台式机和移动)、服务器(标准和企业),以及嵌入式和通信设备。PCI快速是针对各种各样的将来计算和通信平台定义的高性能、通用I/O互连。一些PCI属性,如其使用模型、加载-存储架构、以及软件接口,已通过其各版本得到维持,而先前的并行总线实现已被高度可伸缩、完全串行的接口所替换。PCI快速的更新近版本利用点对点互连、基于交换机的技术、以及分组化协议的进步,来产生新的性能水平和特征。功率管理、服务质量(QoS)、热插拔/热切换支持、数据完整性、以及出错处理是PCI快速所支持的高级特征中的一些。
参考图1,示出了包括互连一组组件的点对点链路的结构的实施例。***100包括耦合到控制器中枢115的处理器105和***存储器110。处理器105包括任何处理元件,如微处理器、主处理器、嵌入式处理器、协处理器、或其他处理器。处理器105通过前侧总线(FSB)106耦合到控制器中枢115。在一个实施例中,如下所述,FSB 106是串行点对点互连。在另一实施例中,链路106包括兼容不同的互连标准的串行、差分互连架构。
***存储器110包括任何存储器设备,如随机存取存储器(RAM)、非易失性(NV)存储器、或可由***100中的器件访问的其他存储器。***存储器110通过存储器接口116耦合到控制器中枢115。存储器接口的示例包括双数据率(DDR)存储器接口、双通道DDR存储器接口、以及动态RAM(DRAM)存储器接口。
在一个实施例中,控制器中枢115是***部件互连快速(PCIe或PCIE)互连分层结构中的根中枢、根联合体、或根控制器。控制器中枢115的示例包括芯片组、存储器控制器中枢(MCH)、北桥、互连控制器中枢(ICH)、南桥、以及根控制器/中枢。通常,术语芯片组指的是两个物理上分开的控制器中枢,即耦合到互连控制器中枢(ICH)的存储器控制器中枢(MCH)。注意,当前***通常包括与处理器105集成在一起的MCH,而控制器115用于按下述类似的方式与I/O设备通信。在一些实施例中,通过根联合体115来可任选地支持对等路由。
在此,控制器中枢115通过串行链路119耦合到交换机/桥接器120。输入/输出模块117和121(也可被称为接口/端口117和121)包括/实现用于提供控制器中枢115与交换机120之间的通信的分层协议栈。在一个实施例中,多个设备能够被耦合到交换机120。
交换机/桥接器120将来自设备125的分组/消息上行地路由(即沿分层结构向上朝根联合体)、下行地向控制器中枢115路由(即,沿分层结构向下远离根控制器),从处理器105或***存储器110向设备125路由。在一个实施例中,交换机120被称为多个虚拟PCI到PCI桥接设备的逻辑组装件。设备125包括要耦合到电子***的任何内部或外部设备或组件,如I/O设备、网络接口控制器(NIC)、插卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪、以及其他输入/输出设备。通常,在PCIe常用语中,诸如设备,被称为端点。虽然并未具体示出,但设备125可包括用于支持传统或其他版本PCI设备的PCIe到PCI/PCI-X桥接器。PCIe中的端点设备通常被分类成传统、PCIe、或根联合体集成端点。
图形加速器130也通过串行链路132耦合到控制器中枢115。在一个实施例中,图形加速器130耦合到MCH,MCH耦合到ICH。交换机120以及相应的I/O设备125随后耦合到ICH。I/O模块131和118也用于实现分层协议栈,以用于在图形加速器130与控制器中枢115之间通信。类似于以上的MCH讨论,图形控制器或图形加速器130本身可集成在处理器105中。
转向图2,示出了分层协议栈的实施例。分层协议栈200包括任何形式的分层通信栈,如快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈、或其他分层栈。虽然紧接着以下参考图1-4的讨论与PCIe栈有关,但相同的概念可应用于其它互连栈。在一个示例中,协议栈200是包括事务层205、链路层210、以及物理层220的PCIe协议栈。接口,诸如图1中的接口117、118、121、122、126、以及331,可被表示为通信协议栈200。表示为通信协议栈也可被称为实现/包括协议栈的模块或接口。
PCI Express使用分组在各组件之间传达信息。分组被形成在事务层205和数据链路层210中以将信息从发送组件携带至接收组件。随着发送的分组流过其它层,它们被扩充以具有在那些层处理分组所必需的附加信息。在接收侧,逆过程发生并且分组从其物理层220表示转变为数据链路层210表示,并最终(对于事务层分组)转变为可由接收设备的事务层205处理的形式。
事务层
在一个实施例中,事务层205用于提供设备的处理核与互连架构(如数据链路层210和物理层220)之间的接口。就此,事务层205的主要责任是对分组(即,事务层分组,或即TLP)的组装和分解。事务层205通常管理TLP的基于信用的流控制。PCIe实现拆分事务,即请求和响应由时间分开的事务,从而允许链路在目标设备收集响应的数据时携带其他话务。
另外,PCIe利用基于信用的流控制。在这一方案中,设备在事务层205中广告各接收缓冲区中的每一个的初始信用量。在该链路的相对端的外部设备,如图1中的控制器中枢115,对每一TLP所消耗的信用的数量进行计数。如果事务没有超出信用限制,则该事务可被传送。在接收到响应后,信用量恢复。信用方案的优点是信用返回的等待时间不影响性能,假定没有遇到信用限制的话。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间、以及消息地址空间。存储器空间事务包括向存储器映射的位置/从存储器映射的位置转移数据的读请求和写请求中的一个或超过一个。在一个实施例中,存储器空间事务能够使用两个不同的地址格式,例如短地址格式(如32位地址)或长地址格式(如64位地址)。配置空间事务被用于访问PCIe设备的配置空间。到配置空间的事务包括读请求和写请求。消息空间事务(或即,简单地,消息)被定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层205组装分组头部/净荷206。当前分组头部/净荷的格式可在PCIe规范网站处的PCIe规范中找到。
快速参考图3,示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符300是用于携带事务信息的机制。就此,事务描述符300支持***中事务的标识。其他可能用途包括跟踪默认事务排序的修改和事务与信道的关联。
事务描述符300包括全局标识符字段302、属性字段304以及信道标识符字段306。在所示示例中,全局标识符字段302被示为包括局部事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符302对所有未完成请求而言是唯一的。
根据一个实现,局部事务标识符字段308是由发出请求的代理所生成的字段,并且它对于需要对该发出请求的代理来完成的所有未完成的请求而言是唯一的。此外,在该示例中,源标识符310唯一地标识PCIe分层结构内的请求者代理。因此,与源ID 310一起,局部事务标识符308字段提供事务在分层结构域内的全局标识。
属性字段304指定事务的特性和关系。就此,属性字段304潜在地被用来提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316以及无监视字段318。在此,优先级子字段312可由发起者修改以向事务分配优先级。保留属性字段314被保留以供将来使用或供应商定义的用途。使用优先级或安全属性的可能的使用模型可以使用该保留属性字段来实现。
在该示例中,排序属性字段316被用来提供传达可修改默认排序规则的排序的类型的可任选信息。根据一个示例实现,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示松散的排序,其中写可在同一方向上传递各个写,并且读完成可以在同一方向上传递各个写。监听属性字段318被用来确定事务是否被监听。如图所示,信道ID字段306标识事务与之相关联的信道。
链路层
链路层210(也被称为数据链路层210)担当事务层205与物理层220之间的中间级。在一个实施例中,数据链路层210的责任是提供用于在链路的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受事务层205所组装的TLP,应用分组序列标识符211(即标识号或分组号),计算并应用错误检测码(即CRC212),并将经修改的TLP提供给物理层220以供跨物理层传输给外部设备。
物理层
在一个实施例中,物理层220包括用于将分组物理地传送给外部设备的逻辑子块221和电气子块222。在此,逻辑子块221负责物理层221的“数字”功能。就此,逻辑子块包括用于准备外出信息以供物理子块222传输的传送部分以及用于在将接收到的信息传递给链路层210之前标识并准备该接收到的信息的接收机部分。
物理块222包括发射机和接收机。发射机由逻辑子块221来提供码元,发射机将这些码元串行化并向外部设备传送。来自外部设备的串行化的码元被提供给接收机,并且接收机将接收到的信号转换成位流。位流被解串行化并被提供给逻辑子块221。在一个实施例中,采用8b/10b传输码,其中10位码元被传送/接收。在此,特殊码元被用于将分组分成各个帧223。另外,在一个示例中,接收机还提供从传入串行流恢复的码元时钟。
如上所述,虽然参考PCIe协议栈的特定实施例讨论了事务层205、链路层210以及物理层220,但分层协议栈不限于此。实际上,可包括/实现任何分层协议。作为示例,被表示为分层协议的端口/接口包括:(1)用于组装分组的第一层,即事务层;用于将分组序列化的第二层,即链路层;以及用于传送分组的第三层,即物理层。作为特定示例,利用通用标准接口(CSI)分层协议。
接着参考图4,示出了PCIe串行点对点结构的实施例。虽然示出了PCIe串行点对点链路的实施例,但串行点对点链路不限于此,因为它包括用于传送串行数据的任何传输路径。在所示实施例中,基本PCIe链路包括两个低电压的、差分地驱动的信号对:传送对406/411和接收对412/407。因此,设备405包括用于将数据传送给设备410的传输逻辑406和用于从设备410接收数据的接收逻辑407。换言之,两个传送路径(即,路径416和417)和两个接收路径(即,路径418和419)被包括在PCIe链路中。
传输路径可以指用于传送数据的任何路径,如传输线、铜线、光学线路、无线通信信道、红外通信链路、或其他通信路径。诸如设备405和设备410等两个设备之间的连接被称为链路,如链路415。链路可以支持多条通道(lane)——每条通道表示一组差分信号对(一个对用于传输,一个对用于接收)。为了扩展带宽,链路可以聚集表示为xN的多条通道,其中N是任何所支持的链路宽度,如1、2、4、8、12、16、32、64或更宽。
差分对可以指用于传送差分信号的两条传输路径,如路线416和417。作为示例,在路线416从低电平转换为高电平(即上升沿)时,路线417从高逻辑电平驱动到低逻辑电平(即,下降沿)。差分信号可能示出更好的电气特性,如更好的信号完整性,即交叉耦合、电压过冲/下冲、振铃,等等。这样允许更好的定时窗口,从而实现更快的传输频率。
包括PCI和PCIe的传统互连架构大部分围绕着诸如个人计算机(PC)之类的传统计算设备的范例开发和标准化,其中芯片-芯片连接、即插即用以及组件化的架构以成为常态。更新的技术着重于利用智能手机、笔记本、膝上计算机以及平板的更小、更移动的计算,从而在市场中作为桌面计算机的互补。在移动计算设备的更小尺寸和紧凑形状因数的前提下,个人计算机已变得不那么模块化。在过去相对常见替换图形卡、存储器和其它组件的情况下,访问或升级智能手机、平板或其它此类设备的组件并不常见。实际上,在一些市场中,所预期的是当需要升级时,拥有者以旧换新或以其它方式将先前设备替换为全新的设备,而在过去,拥有者可能尝试通过升级各个组件来延长设备的寿命。在许多当代***中,计算硬件从模块化的型号迁移至集成型号,其中多个组件被集成在单个板或芯片上***(SoC)上。
一些人认为集成的趋势可能会使包括现有的互连架构的传统I/O技术被淘汰,因为I/O技术发展的目的从实现芯片-芯片连接向实现SoC知识产权(IP)块集成迁移。本公开描述了基于受信任和已建立的互连架构的原则通过多个改进构建的机制,这些机制可通过更短产品循环、更高的硅应用灵活性、降低的成本、降低的功率和改善的用户体验来提供有意义的价值。除了其它示例之外,这样的改进I/O解决方案不仅可针对平板、手机以及其它低成本嵌入式平台进行优化,而且可针对当前和下一代PC进行优化。
PCI和PCIe已经无处不在地被部署作为PC的本地I/O架构(例如机架内的芯片-芯片)。此外,诸如通过结合平台CPI使用的平台控制中枢(PCH)、I/O控制器中枢(ICH)或其它中枢设备提供的大多数集成功能被***软件被视为PCI或PCIe功能。替代的和可胜任的加载/存储架构缺少PCI/PCIe的许多特征和改良、进行不同的基本操作假定(例如关于事务排序规则)、并已经发展成针对其它计算平台,因此使用针对PC类型平台中的这些平台开发的块可招致显著的附加硬件和软件成本。
加载/存储已被视为CPU的“原生语言”,导致诸如PCI/PCIe之类的加载/存储I/O架构在现代计算中承担基本角色的环境。例如,基于控制器的I/O技术(例如USB、SATA、UniPro)可使用加载/存储I/O来将它们的控制器连接至CPU。通过提供连接至CPU的直接低级接口,加载/存储I/O相比于基于控制器的I/O可提供灵活性和性能益处。因为对实现新特征和能力的依赖更少,所以该灵活性对于实现技术过渡(比如如今具有存储)是特别有吸引力的。
除了其它示例之外,以下详细描述的本公开、特征、组件和示例可解决这些问题中的至少一些。具体而言,详细描述了可基于现有的互连架构的原理(包括PCI和PCIe的规范)构建的改进的组合。在一个示例实现中,提出了高度集成的PCI(HIPCI)架构,其中可包括以下能力中的一种或超过一种:除了其它潜在的特征和功能之外,(1)即时设备配置,可消除在运行时间使用程序寄存器来标识静态设备配置值;(2)硬件/软件架构,用于允许具有基本传输服务层的分层驱动程序模型(例如在已建立的PCI和/或PCIe功能和协议的至少部分上建立,并将其提供为服务),该模型通过直接操作***(OS)支持而被支持,包括允许与诸如通用串行总线(USB)类栈之类的其它协议类一起使用的软件桥接;(3)用于不需要***存储器缓冲的直接设备-设备通信的框架;(4)经优化的IP块接口,用于SoC和多芯片封装(MCP)IP块集成。这些和其它特征以及它们的原理可整体或部分地被采用,并且可彼此独立地被采用。此外,除其它示例之外,虽然本申请中的许多示例在SoC的背景或应用之内讨论这些特征,但应当理解这些特征的应用正好可以适当地与其它***和组件(诸如例如PCH、ICH、I/O中枢(IOH)或甚至单功能组件)相关地使用。
图5是包括采用多个集成设备的计算***的操作***的***的简化框图500,该计算***比如包括多个IP块(本申请中也称为***块、集成块或简称为块)的SoC。该计算***可包括操作***505,该操作***适于配置该***上的设备。可提供初始化并测试***硬件组件的基本I/O***(BIOS)510。各个设备的配置信息可被存储在这些设备的寄存器515中。BIOS可在运行时间(例如启动时)读取寄存器并将信息传递给OS。在一些实现中,可附加地提供机器可读即时配置数据结构520,可将***设备的配置信息的全部或部分存储在该数据结构中,以由OS 505直接读取和访问以配置***硬件。在一些实例中,数据结构520可全部或部分地代替寄存器515,从而允许通过将一些配置活动委托给软件来减少、压缩、或以其它方式优化寄存器空间。
旨在用于电话/平板和其它嵌入式***的许多IP块缺少自发现/配置“即插即用”机制。除了其它示例之外,此类机制原本是被开发用于比如当用户通过添加/去除PCI/PCIe加入卡、***USB设备来修改硬件配置时,允许***自配置。虽然看起来自配置对于集成在***内的逻辑块(例如不能被去除或替换的逻辑块)的用途有限,但“即插即用”配置的一些益处仍会丧失,比如通过提供此类特征的架构提供的结构。例如,在没有此类结构的情形下,随着可能的***/设备配置的矩阵增长庞大至不可管理并且因厂商而异,开发者和操作***以及虚拟化厂商的负担增加。在此类实例中,即便是设备配置的简单方面也可能因块而异,从而使此类***的设计、构建以及配置进一步复杂。
在改进的***中,硬件的发现和配置可至少部分地从运行时间移至构建时间。例如,可在设计时间标识SOC内包括的设备的静态属性,并在可由OS(或中枢控制器)直接访问的机器可读数据结构(例如520)中永久存储的数据中描述该静态属性。可通过OS有效地、即时地标识或配置此类属性。可将诸如PCI/PCIe能力寄存器之类的能力寄存器的全部或多个部分重新定义为存储在即时配置数据结构中的设备(例如IP块)元数据。例如,此类元数据结构(例如520)可包括传统地存储在配置寄存器中的在引导之后不被修改的信息。在一些实现中,该数据结构可以是XML或其它机器可读的数据文件。
在一些实现中,可在***设计时间利用IP块元数据。可配置该元数据以由计算机辅助设计(CAD)或SOC(或其它***)设计中利用的其它工具使用。可提供能读取元数据并基于元数据中包括的IP块信息来自动配置互连结构和其它块的此类工具。工具可进一步利用IP块元数据中的信息来将期望的IP块的集合集成到SoC、MCP等等中。
使用即时配置元数据(例如通过数据结构520)可允许运行时间设备配置减少。可将此类结构(例如520)存储在主***存储器中。此外,在一些实现中,在运行时间使用的状态寄存器和配置寄存器可保持不变或可被优化,例如用于提高现场封包的密度。或者,例如,可修改用于这些操作的机制,以经由主存储器中的数据结构而不是经由配置寄存器来操作。可假定集成***具有设备(例如IP块)的固定组。在集成***的设计期间,可假定设备的某些属性和配置是静态的。可在IP块元数据中描述集成设备的集合的静态属性,并将它们存储在软件层级可访问的一个或超过一个数据结构中。此外,在一些实现中,例如通过***固件(例如***BISO或其它固件)或操作***,通过修改与静态属性对应的元数据值,可在软件层级重新定义“静态”属性中的一些。例如,在将控制移交给操作***之前,***固件可通过在元数据结构之内写入替代值或通过替换替代的元数据结构(例如通过将替代的存储器指针提供给操作***),来修改***存储器内存储的元数据值。
在一些实例中,可从根据已定义模式来提供此类元数据的各种源来获得描述特定IP块的静态属性的元数据(例如使得元数据与在集成***的设计时间使用的工具和/或操作***等等兼容)。在一个示例中,在设计时间,可标识或配置要集成在SoC中的多个不同IP块的相应属性。例如,可标识的属性包括比如由PCI定义的属性之类的厂商ID、设备ID和/或类码。可配置的其它属性包括资源分配(诸如存储器映射的IO空间、中断向量)和/或IP块自身的属性(诸如由每个IP块支持的相应的最大净荷尺寸(MAX_PAYLOAD_SIZE))。可在元数据中定义相应的最大净荷尺寸(MAX_PAYLOAD_SIZE),并将其存储在由操作***访问的数据结构中以配置其***的硬件。在一个示例中,应用可请求涉及具有在元数据中定义的不兼容的最大净荷尺寸属性的两个设备之间的数据交换的服务。在一些实例中,操作***会基于不兼容性认为该服务非法而不允许。在其它实例中,操作***可临时修改这些设备中的一个设备的最大净荷尺寸,使得所请求的服务被允许。在一些实现中,该数据结构可包括至寄存器值的链接。在一些实例中,可使即时配置数据结构的值和改变在寄存器层级自动地反映(例如基于这些链接)。在一些实现中,可定义已定义的元数据模式,并且该定义可将相应的寄存器映射至该模式(以及该模式中描述的值)。附加地,除其它示例之外,可执行对元数据的验证,例如以检查该元数据被正确地格式化、符合相应的协议规范、并描述适用于特定背景的配置或块,比如最大净荷尺寸或另一示例属性是否使该块适用于***内的一个或超过一个特定用途。
转到图6,示出了简化框图600,该图示出了根据一些示例实施例的用于产生和使用即时配置元数据的示例***。在图6的特定示例中,提供了示例配置工具605,该配置工具可与主控IP块元数据630、635、640的元数据服务或源(例如610、615、620)交互。配置工具605可通过经由一个或超过一个网络645(诸如私有或公开网络,包括因特网)与元数据源(例如610、615、620)交互,来获得元数据(例如630、635、640)。其它工具(诸如装订器工具650、CAD工具、或其它***设计工具)可利用(例如由配置工具605)根据该元数据产生的IP块元数据或其它配置数据。此类工具可包括用于使用描述IP块的元数据或其它数据的功能,和用于将多个IP块和管芯上通信结构组合以使多个IP块能互操作的通信结构。除了其它示例之外,在一些实现中,还可使用此类工具以将这些IP块专用的任何软件逻辑组合或集成到***固件/软件(例如操作***)中,以将针对使用这些工具设计的特定IP块和/或通信结构来调整***软件。
除了其它可能的示例(诸如将本申请中描述的示例组件的功能组合在一起的组件)之外,在一个示例中,配置工具605可包括一个或超过一个数据处理器设备655、一个或超过一个存储器元件660、以及一个或超过一个其它基于软件和/或硬件的组件,诸如查询引擎665、元数据管理器670、配置引擎675。查询引擎665可包括用于对于针对配置工具605标识的多个IP块中的每个IP块标识元数据的相应源(例如610、615、620)的逻辑。在一些实例中,可指定IP块的组(诸如由工程师选择的包括在SoC或MCP中的IP块的特定组)。在一些示例中,可根据特定模式(例如根据统一XML模板)来标准化由一个或超过一个源(例如610、615、620)提供的元数据(例如630、635、640)。每个IP块的元数据(例如630、635、640)可描述该IP块的属性,并根据已定义的模式来格式化该描述。在一些实例中,元数据源可对应于制造商、厂商、或与该特定IP块相关联的其它组织。在标识该源之后,查询引擎665可查询该源以寻找用于相应IP块的元数据。元数据引擎670可管理针对IP块的该分组中的每个IP块的IP块元数据的查询和获取。例如,在获取用于IP块的指定组的一组IP块元数据之后,元数据引擎可使该组元数据对于配置引擎675可用。
在一个示例中,配置引擎675可包括用于确定如何在诸如SoC之类的***内集成和配置该组IP块的逻辑。配置引擎675的逻辑可接受要集成在建议***中的IP块的该组IP块元数据作为输入,并在无人类指导的情形下自动确定用于该组IP块的建议布局和配置。除了其它示例之外,这可包括:确定管芯上的IP块的布局(或布局限制)、时序限制、IP块之间的兼容性、各个块的能力、各个块支持的传输、IP块的驱动程序、时钟频率、在***中提供的门的数量、要分配给每个IP块的***资源的类型和量。除了其它示例之外,配置引擎675的子逻辑可对描述各种IP块(诸如布局管理器680、兼容性引擎685、能力管理器690)的属性的元数据执行各种检查和分析。例如,配置引擎675可使用模式生成器695产生配置数据,以描述针对包括由所获取的IP块元数据描述的该组IP块的***确定的配置信息。
在一些实现中,例如由配置引擎675产生的配置数据可由装订器工具650消费以产生SoC和SoC结构的模型,该模型可被制造以具体化由配置引擎675确定并在配置数据中描述的***配置。虽然在一些实例中,***设计者可围绕在该***上运行的OS来设计***,但在一些实现中,装订器工具(例如650)或其他工具可进一步利用配置数据来产生包含IP块的特定组的***的配置的概览。除了其它示例之外,OS设计者可据此将OS调整为由配置引擎675确定并在由配置引擎产生的配置数据中描述的该***的设计时规范。实际上,除了其它示例之外,在一些实现中,可将配置工具605和装订器工具650的功能组合。
在一些示例中,为了增强IP块元数据机制的可用性,可向每个IP块或设备分配唯一的标识符,并且可将描述相应的IP块或设备的元数据(以及元数据的源)映射至唯一的标识符(实际上是厂商ID/设备ID组合)。
在一些实现中,除了硬件配置方面之外,可创建相似的CAD机制,以自动产生所需的固件/软件设置和驱动程序,以最优地操作给定平台中存在的硬件。例如,可自动地产生Linux内核配置参数,以包括***中集成(并且通过相应元数据集描述)的多个块所需的驱动程序。
可使用配置元数据来改善IP集成自动化。将通用接口定义与即时配置的机制组合(通过基于***的聚集组件的元数据的数据记录来实现),对于来自不同源的多个IP块的SoC集成可实现高度的自动化。如上所述,可定义按照机器可读格式(例如XML)的用于SoC集成的元数据的统一模板。例如,通过使用公共信号接口,可建立厂商中立的兼容性和互操作性机制,可将其结果发布为与被评价的IP块相关联的元数据并馈送至装订工具中,以促成对于集成的SoC的整体信心度量。可标记包含有不完整或失败的测试结果的块,除非该工具能够利用例如通过即时配置建立的配置信息来确定特定IP块的特定错误情况或限制将不会影响集成出的SoC的功能或性能。作为示例,可确定特定IP块的最大净荷尺寸的限制将不会限制建议的SoC(包括该IP块)作为整体的功能或性能。除了以上描述的多个方面之外,除了其它示例之外,可提供工具,该工具能够建立一致的SoC等价物以用于等待时间管理(例如LTR)和平台内的活动对准(例如OBFF),并且提供模拟和验证工具以及测试套装以建立和维持一致实现。
转到图7,示出了装订器705(或配置工具)的示例实现的简化框图,该装订器用于产生描述***(诸如多个IP块的集成***)的配置的配置数据710。在该具体示例中,装订器705产生包括IP块配置信息的数据库和附加内容(例如用于该集合中的IP块的构建附加内容)的数据710。在一个示例中,可根据指定配置属性的IP块元数据715产生配置数据710,这些属性诸如相应的IP块的传输模式、能力、存储器资源需求、时序属性、净荷限制以及其它静态、半静态或缺省的属性。也可在装订器处访问每个IP块的构建附加数据720。例如,构建附加数据可包括描述“软IP块”或在设计阶段的IP块的数据。可使用寄存器传送语言(RTL)或另一硅前设计语言来实现构建附加内容。在一些实现中,构建附加数据720可被包括在IP块元数据中。IP块兼容测试结果数据725也可被装订器705消费,并描述IP块的兼容性和兼容分析的结果,包括对指定包括在SoC或MCP中的各个IP块之间的互操作性和兼容性的程度。(例如测试引擎730的)测试或验证逻辑可对IP元数据715和/或构建附加内容720的机器可读部分执行这些验证、兼容性和兼容测试,以产生测试结果数据725。利用从数据715、720、725获得的与能力、配置参数以及块间的兼容性和功能有关的信息,装订器逻辑705可确定***(诸如集成***)的配置属性(例如布局配置、时钟配置、所支持的传输、IP块之间的可互操作性配置等等)并在机器可读配置数据710中描述结果。配置数据710可包括相应的SoC和其组件的基本完整的描述,除了可能的其它信息之外,包括用于合成以构建SoC的RTL代码、合成指导、限制、以及其它信息、该SoC专用/适用的OS源文件、测试结果、用户文档。除了其它潜在的用途之外,如以上其它示例中所示,配置数据710可例如用于指导***和***OS的设计者,并形成即时配置数据结构(例如520)的基础。
如上所述,可在描述基于硬件的“硬”IP块的配置和属性的数据中具体化硅前“软”IP块,“硬”IP块可基于相应的软IP块中实现在硅中。虽然在本情境下软IP块区别于硬IP块,当应当理解“IP块”(即未特别提及“硬”或“软”IP块)的特征和用途的讨论在一些情境下可应用于硬和/或软IP块。
可实现提供已定义和受信任的高性能互连传输协议和架构(诸如PCI和PCIe)的***,作为通过可由用于集成在***中的可能任何IP块的驱动程序或其它上层逻辑充分利用的传输层的服务。传统PCI可支持规范定义的类驱动程序软件栈,其中对于每个特定设备类型在寄存器接口层级定义特定的PCI/PCIe类/子类/编程接口(PI)。在改进的架构中,可在改进的PCI或PCIe平台上提供并支持明确定义的分层模型,其中一般地定义了应用规范定义的PCI或PCIe架构的原理或特征的至少部分的服务(例如数据传输)、信令和设备管理。如图8所示,集成***内的诸如IP块之类的多个设备(例如805、810、815)可具有IP块专用的驱动程序或其它上层协议和逻辑(例如820、825、830),这些驱动程序或其它上层协议和逻辑可对接并消费通过***中的所有设备(例如805、810、815)可用的已定义PCI传输层835提供的基于PCI/PCIe的传输服务。例如,可针对设备(例如805、810、815)中的每一个在该PCI传输层835基础的顶部构建设备专用的驱动程序。
在一些实现中,对于***(例如SoC)中的各个设备开发的驱动程序可基于分层架构,该分层架构包括已定义、统一的基于PCI的传输层835。使用这样定义的传输层可降低***开发成本,因为开发者可构建经受时间考验的传输架构(例如PCI/PCIe),而不是对于特定设备从头开始构建新的传输机制。除了其它示例之外,可利用被建立以简化硬件增值特征的产品化的硬件机制的统一集合(诸如I/O虚拟化增强和数据移动引擎)来改进上市时间和平台强健性。
在诸如图8中所示示例之类的一些示例中,PCI传输层可包括一组已定义模式840。每个模式可提供相应层级的服务,该服务提供一组已定义PCI/PCIe传输特征。一些组件应用可充分利用PCI/PCIe性能增强的、效率增强的、或节能的功能和协议,而PCI/PCIe的更简单版本即可满足其它组件应用。相应地,可封装多种不同的模式,从而提供不同层级的PCI/PCIe传输和相应特征。例如,在一个实例中(诸如图8中所示实例),最高模式(“模式5”)基于强健的PCI/PCIe传输模型,诸如支持硬件分散/聚集功能的多队列模型。另一模式“模式4”提供稍稍简化的PCI/PCIe传输模型,诸如与模式4相似但不带有硬件分散/聚集的模型。此外,进一步简化的模式“模式3”提供根据支持并使用***存储器中的固定缓冲器和总线主控的简化模型的基于PCI/PCIe的传输服务。另一模式“模式2”进一步被简化,提供具有固定缓冲器(例如在存储器映射的I/O(MMIO)基址寄存器(BAR)存储器中)但没有总线主控(例如该组件是目标而不是发送方)的简化模式。在图8的示例中,通过示例PCI传输层模式提供的最简单模式是没有总线主控且仅有对于数据移动的字节流支持(例如使用x86MOVS指令以用于CPU定向数据移动)的“模式1”。
提供PCI传输层的***中的每个单独的组件可支持PCI传输层的模式(例如840)中的一个或多个。此外,一些组件可具有可通过PCI传输层提供的模式增强的核或原生传输(例如非PCI/PCIe)。例如,在一些选择的实例中,USB设备可使用通过PCI传输层提供的模式中的特定模式来发送数据。实际上,例如,可由特定设备(例如IP块)来选择性地使用PCI传输层的各种模式,例如在一些类别的事务中使用这些模式中的一个,在其它事务中使用这些模式中的另一个。
在一些实现中,由***软件通过对于该设备标识的特定PCI类码(或子类或编程接口)来发现“PCI传输”。例如,可将一个或超过一个PCI类分配给“PCI传输”,表明该类包括支持已定义的PCI传输服务的硬件。每个这样的类可具有用于PCI传输的每个潜在用途的子类。例如,一个子类可对应于存储,另一个子类用于联网,另一个子类用于经由PCI传输的USB,另一个子类用于经由PCI传输的HID,等等。在一些实现中,PCI中的类/子类/PI可应用于特定功能,因此对于该功能可使用PCI传输或不使用PCI传输,然而,单个硬件组件可实现多个功能接口,因此可具有一个功能使用PCI传输,而另一功能不使用PCI传输(例如第二功能可绑定至现有的设备驱动程序,比如WiFi)。此外,该设备的PCI子类可用于标识将哪个上层协议绑定在该设备的PCI传输层上。例如,在一个示例中,过程间的通信逻辑、与用于人类接口设备(HID)现有栈的绑定、或其它上层协议可绑定在特定设备的PCI传输层上。此外,除了其它示例之外,在一些示例中,对设备的相应PCI编程接口(PI)的标识可用于定义哪些PCI传输层机制可由该设备使用(诸如通过PCI传输层模式向特定PCI PI的严格或非正式映射)。在一些示例中,除了其它示例之外,例如通过提供API以供设备驱动程序在运行时间对特定任务请求PCI传输服务,可按照较不太静态的方式实现映射。
PCI传输层的实现可定义多个操作模式。在一些实现中,可提供一个或超过一个寄存器或其它数据结构,这些寄存器或其它数据结构定义***的哪些组件已经使用并且支持哪些PCI传输层模式。实际上,由组件采用的该组模式可以是静态配置属性,并且可被定义在永久保持在***存储器中的数据结构(例如520)中,以实现对***OS、软件应用或其它***元件的直接和即时访问。实际上,在一些实现中,可在与设备相对应的IP块元数据中定义由设备支持的PCI传输层。寄存器和/或元数据可进一步定义其中特定设备(例如SoC的IP块)使用各种PCI传输层模式的应用或其它条件。为了说明,除了其它可能的无限制的变化性的示例之外,在一个示例中,实现PCI传输层并支持多个不同的编程接口和绑定到不同栈的***可支持例如多功能无线电模块,该多功能无线电模块可能例如具有使用专用驱动程序(如今是常态)的WiFi PCIe功能、使用示例PCI传输层的特定模式(例如使用图8的示例的示例模式4的编程接口)来绑定至MBIM栈的WWAN功能、以及使用PCI传输层模式(例如前一示例的模式2或3)的另一个的不同编程接口绑定至音频栈的蓝牙功能。
在另一示例中,传感器附接使用模型可进一步利用能将PCI传输层绑定至(例如)USB和HID的现有软件栈的***。与现有HID软件栈互操作的能力可简化将平台传感器用于用户交互的特征构造,例如,可使各种各样的触摸和/或成像传感器作为诸如鼠标或轨迹垫之类的已知指点设备对于应用可见。虽然因为设备趋向于使用具有不同优化点的不同的传送机制,所以先前的解决方案已经难以证实对PCI/PCIe的合理的主机(例如根联合体)优化,但除了其它示例益处和用途之外,建立PCI传输层和服务的附加益处是,基于作为基础的传输机制的通用集合的广泛使用,定义的层可实现在加载/存储层级的一组微基准测试的定义。
在一些实现中,在PCI传输层的使用中,可实现增强和标准化的点对点(或“设备对设备”)传送。例如,传统的解决方案严重依赖于边带数据路径来实现设备对设备传送,然而这会导致有限的硅和板灵活性和超出成本。在一些***中,可提供用于检测和配置直接点对点连接的架构(在一些情况下,至少部分地基于PCI传输层而构建)。此类连接可从简单的连接(诸如将音频流从数字信号处理器(DSP)块引导至输出设备)到使用支持PCI传输层的结构连接的多处理器***中的核-核通信(包括但不限于使用交换机、非透明桥等等形成的PCIe结构)。在一些实现中,除了其它潜在的优点之外,可实现与通过直接专用点对点数据路径实现的功率水平可比拟并在一些情况下更好的功率水平,同时降低成本并提高设备/平台灵活性。
在一个示例中,可通过与PCI传输层的其它用途不同的(例如映射至一个或超过一个唯一子类的)PCI传输层来提供直接点对点传送(或简称为“对等传送”或“直接传送”)功能。可在***的各个设备之间建立各种不同的对等传送路径。可将对等传送的这些不同类别进一步分成子层。例如,在一个示例中,可基于对于参与对等传送的设备中的一个或二者标识的PCI子类来发现用于支持音频/视频(AV)传输的连接的一般类型。例如,可查询传送中的源设备以确定该传送的附加属性,诸如要传输的数据的精确类型。在一些实现中,可标识要应用对等传送的事务或应用的属性,并且可通过软件(例如OS)基于所涉及设备的配置属性来建立对等传送的相应配置(例如根据由OS访问的数据结构(例如520)中包括的IP块元数据而查明)。可根据对所涉及源和宿设备确定的兼容性以及传送的类型(例如数据类型、执行对等传送的应用的类型、等等)来配置对等传送。
图9示出用于配置第一源设备与第二宿设备(即用于接收来自源设备的传送数据)之间的对等传送的示例流程的示例流程图900。在一个示例中,软件应用或其它程序可在905请求特定服务,该特定服务涉及将数据从一个源设备传送到另一宿设备。可基于该请求来标识源和宿设备。例如,可基于已标识的相应设备的能力(例如由OS或中枢根据配置元数据的数据结构)来标识一组一个或超过一个候选源元件。在其它实例中,可明确地标识源和宿设备。此外,在一些实例中,还可标识对于要传输的数据类型适合的传输类型(诸如通过PCI传输层提供的特定模式)。可确定(例如经由PCI传输层的服务提供的)对等传送类型内的源和宿设备的兼容性。除了其它示例分类之外,例如,可基于源设备的类/子类/PI的标识910来确定兼容性。如果所标识的源设备的类/子类/PI与请求不兼容,则该请求会失败。还可在915确定该宿设备的类/子类/PI与该请求是否兼容。如果该源和宿设备兼容,则可使用选择的(例如PCI传输层的)编程接口将该源设备配置成以该宿设备为目标。该传送可继续,直到接收到结束该对等传送的请求(例如在925)。该宿设备可被配置成继续接受数据但停止处理数据(930),例如以辅助在结束传送时可能在宿和源之间出现的竞争状况。为了圆满完成对等传送,然后可在935禁用源设备并将其返回至开始状态(例如以准备潜在的未来事务)。类似地,也可在940禁用宿设备并将其返回至开始状态。
如先前示例中所暗示,可根据宿设备的PCI/PCIe类/子类/PI的串接所定义的分类器来标识设备的配置属性(例如支持的传输模式、能力等等)。每个类/子类/PI可与能够提供或参与相应类型的服务的设备的类别相关联,并且可进一步用于标识设备之间的兼容性。可将设备的配置属性(例如按照类/子类/PI)暴露给软件,该软件包括在该***上运行的特定应用。除了其它示例之外,在一些情况下,如果应用标识该***缺少用于执行诸如对等传送之类的特定事务的设备,则该应用可编程地诉诸于通过在软件中执行附加步骤来弥补所标识的硬件的短处。
在一些实现中,可在运行时间动态地提供一些数据路径,以允许通过确定与该对等传输相对应的特定活动的***资源来允许对等通信。除了其它示例之外,可关闭确定不在特定对等传输事务中使用的其它资源。这样的直接传输的动态使用可使SoC活动仅限于对于特定工作负荷活动的那些块,从而确保包括SoC结构元件、缓冲器等等的其它资源在直接传输活动期间被电源门控。在一些实现中,诸如SoC之类的***中的IP块可包括专用的数据移动器和异构的I/O优化的核,这些专用的数据移动器和异构的I/O优化的核可使以I/O为中心的工作负荷从诸如更大核和***存储器之类的中央资源被卸下以引入附加的效率。
在一些实现中,可提供切换机制以供对等传送使用(比如与AV传输相关),以在应用或平台操作模式改变时辅助例如来自不同源的数据流的无中断(例如故障、失真、等等)的转换。例如,可使用切换机制以从主控CPU正在执行音频处理的模式切换,但将该任务卸下至专用引擎并关机以节能。此外,在一些情况下,还可提供(诸如PCI/PCIe中定义的)业务量类别(TC)/虚拟信道(VC)差异化,以将对等传送业务量与停转(诸如在TC0/VC0上)隔离。替代地,除了其它示例之外,例如,可将除了其它PCI/PCIe特征之外的诸如灵活排序(RO)和ID排序(IDO)之类的排序属性应用于对等传输业务量,以投机地允许不阻断对等传送业务量。
通常可在为连接两个组件而定义的高速串行物理接口的情境下考虑传统PCIe,其中两个组件可在单个PC板上通过线连接器、缆线等等来连接。也已经对于管芯上集成实现PCI/PCIe架构,然而集成管芯上的PCI/PCIe的传统解决方案诉诸于诸如英特尔芯片上***结构(IOSF)之类的专用接口。虽然开发此类专用结构和SoC集成技术和方法的成本在一些情况下可被认为合理,但在最小部署或再现成本下实现与其它专用技术互操作的SoC技术的PCI/PCIe原理的已定义架构会产生显著的益处。例如,可通过使用内部和外部来源的IP块来实现各种各样的新***和***灵活性。例如,为了便于IP块集成,可定义在IP块与SoC的余下部分之间的明确定义的接口。此外,可一般地建立用于将IP块彼此连接并与SoC的其它部分连接的工具和技术以及建立用于IP块的操作环境的架构(包括编程模型和其它软件相关的多个方面)。
图10示出用于示出各种PCI/PCIe架构模型的简化框图。传统PCI/PCIe***中的设备间的传输通常根据模型1005来构思,其中两个分立的组件(诸如主机和设备)经由利用事务、数据链路以及物理层实现的传统PCIe链路来连接。此外,在一些情况下,可利用PIPE物理层接口。PIPE接口传统地已被实现为MAC/PHY接口,但也在集成***内使用,诸如IP块接口(诸如美国专利No.8,395,416中描述,该专利文献通过引用结合在本申请中)。如模型1010中所示,通过对使用此类链路连接的IP块组件的极少修改或不作修改,可成功地部署使用PIPE接口或“PIPE-L链路”实现的IP块接口。然而,在一些情况下,基于PIPE-L的解决方案可能遭受一些缺陷,诸如硅区域的非最优使用。在另外的第三类别的链路中,可定义并提供区域优化块接口(AOB)链路,该链路剥离对数据链路和物理层逻辑的依赖,并针对互连架构的实现来优化硅的使用。AOB链路可便于实现诸如模型1015中所示那样的IP块之间的直接事务层-事务层接口。除了其它示例之外,在此类实现中,IP块的上游层自身可实现将IP块彼此连接并连接至诸如核和主存储器之类的***中央资源的“结构”。
在一个示例中,可提供AOB链路接口,该接口包括信号库,该信号库提供事务层-事务层信令的灵活性,同时保持在陈旧的传统PCI/PCIe架构中建立的传统分立组件信令模型(例如1005)的核心功能。在以下示例中,一般地,所描述的链路接口具有所有能力。然而,给定实例可能不要求所有能力,并且在这些情况下可实现简单子集。
在一个示例中,AOB链路接口可包括与PCI/PCIe架构的多个基本方面一致的可被产生或消费的所有类型的TLP。例如,PCIe区分三种类别的事务层分组(TLP),即:通告(posted)、非通告(non-posted)和完成,并基于这三种类型来定义排序规则。AOB链路接口的“发射机”侧基于来自“接收机”的流控制信息来确定TLP传输的正确顺序。在AOB链路接口的一些实现中,不使用基于信用的流控制(比如传统的PCI/PCIe),可提供握手机制。为了提供AOB链路接口的此类握手和其它特征,可提供已定义信号的库。例如,在AOB链路接口的一个示例中,信号和语义可包括:
在一些实现中,可对头部采用PCI/PCIe中的头部的格式化。然而,除了其它示例之外,在一些实例中,可将头部定义成在尺寸上比传统的PCI/PCIe头部更小,以例如用于窄化集成***中实现的链路宽度。如前面表格中的Up/Dn和Dn/Up标注所示,一些信号可被潜在的宿设备断言为在潜在的源设备上游(即Up/Dn),由此影响该源设备(例如保持信号)。替代地,数据的发送方可断言其它信号以包括与所发送(或待发送)数据相关的信息(即Dn/Up),诸如无效信号。
转到图11A-11D,图11A-11D是示出可在SoC架构和其它***中采用的示例技术的流程图1100a-1100d。例如,在图11A的示例中,可将配置元数据永久存储在操作***或其它***软件可访问的数据结构中,并描述***上的多个设备的各种(在一些情况下为静态的)配置参数。在一些情况下,可将设备集成到***中,例如作为IP块、芯片或SoC的其它组件。可例如在运行时间在1105标识现有的(例如运行时间之前的)数据结构,其中***设备中的一个或超过一个的配置参数在该数据结构中已有定义。可在1110(例如使用操作***)通过访问和读取该数据结构来标识每个设备的特定配置参数。可至少部分地基于在1110从该数据结构标识的这些配置参数来配置这些设备。除了其它示例之外,例如,通过***固件(例如BIOS)的扫描,可在运行时间标识和定义这些设备中的一个或超过一个的其它配置参数,并可将这些其它配置参数与从数据结构中标识的配置参数相关地使用,以配置相应的设备。
在图11B中,可在1120例如通过操作***或其它***软件来访问基于或包括设备配置元数据的数据结构。可将配置元数据永久存储在数据结构中,该配置元数据描述***上的设备以及作为整体的***(例如SoC)的各种(在一些情况下为静态的)配置参数。配置参数还可用于在1125标识设备的该逻辑(例如驱动程序或其它硬件和/或软件逻辑)被绑定至并使用标准化的传输层。该传输层可以是被提供作为由其它设备使用的服务的PCIe传输层,包括将其它协议作为它们的原生协议来使用的设备。在一些实例中,传输层可定义多个模式,并且可在1130根据配置参数来确定该设备支持或使用的传输层模式的子集。在一个示例中,可(在运行时间之前)预定义配置参数并且配置参数指示***中的设备的类、子类和/或编程接口,并且可根据该设备的相应类、子类和/或编程接口分类来标识该设备对传输层的绑定和使用、以及设备使用的传输层模式。
转到图11C,在一些示例中,可在1140标识服务请求,诸如***上的软件应用的服务请求。可将该服务请求标识为与直接的设备-设备、或对等的数据传送相关联。可标识包括用于通过设备-设备数据传送来执行所请求的服务的至少部分的能力的第一和第二设备。可在145确定设备-设备数据传送中的第一设备与第二设备的兼容性。除了其它示例之外,可基于配置数据结构和/或设备寄存器中存储的设备配置信息来标识设备的能力并确定它们的兼容性。如果第一和第二设备是兼容的,则可在1150配置第一设备(也可能配置第二设备)以执行设备-设备数据传送。除了其它示例之外,当第一和第二设备完成设备-设备数据传送(或“对等传送”)时,可使该数据传送中未涉及的其它设备暂时空闲或不活动。
在图11D中,流程图1100d示出了示例,包括在1160标识描述要包括在芯片上***(SoC)或其它集成***中的一组设备的数据。除了其它示例之外,该数据可包括设备元数据、构建附加信息、测试结果、用户文档。可在1165对于该组设备中的每个设备获取该数据。例如,可对于该组中的每个设备标识相应的数据源,并且可查询这些数据源以查询该数据。例如,可通过装订器或其它***设计工具来处理从已标识的源的查询返回的数据,以在1170确定包括该组设备的集成***的配置。除了其它示例之外,可产生描述所确定配置的***配置数据并将其用于产生配置数据结构,以在该***内使用、在该***的操作***配置的自动设计中使用。
注意,如上所述,上述装置、方法以及***可被实现在任何电子设备和***中。作为具体说明,以下附图提供了用于利用在此描述的发明的示例性***。在用更多细节描述以下***时,公开、描述以及重访了来自以上讨论的多个不同的互连。并且如显而易见的,上述进步可适用于这些互连、构造、或架构中的任一个。
参考图12,描绘了包括多核处理器的计算***的框图的实施例。处理器1200包括任何处理器或处理设备,诸如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、芯片上***(SOC)或用于执行代码的其他设备。在一个实施例中,处理器1200包括至少两个核——核1201和1202,这两个核可包括不对称核或对称核(所示实施例)。然而,处理器1200可包括可以是对称的或非对称的任何数量的处理元件。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持处理器的诸如执行状态或架构状态之类的状态的任何其他元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作***、应用、或其他代码之类的代码独立地相关联的任何硬件。典型地,物理处理器(或处理器插槽)指的是集成电路,该集成电路潜在地包括任何数量的其它处理元件(诸如核或硬件线程)。
核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用的执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如所看到的那样,当某些资源是共享的而其他资源是专用于架构状态的时候,硬件线程与核的术语之间的界线交叠。但核和硬件线程常常***作***视为单个的逻辑处理器,其中,操作***能够分别在每一个逻辑处理器上调度操作。
如图12所示的物理处理器1200包括两个核——核1201和1202。在此,核1201和1202被视为对称核,即这些核具有相同的配置、功能单元和/或逻辑。在另一实施例中,核1201包括无序处理器核,而核1202包括有序处理器核。然而,可从任何类型的核中分别选择核1201和1202,诸如原生核、软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行经转换指令集架构(ISA)的核、共同设计的核或其它已知核。在异构核环境(即,非对称核)中,一些形式的转换(如二进制转换)可被用来在一个或这两个核上调度或执行代码。不过,为进一步讨论,以下将进一步详细描述在核1201中示出的功能单元,因为核1202中的单元以在所示实施例中的类似方式操作。
如所描绘的那样,核1201包括两个硬件线程1201a和1201b,它们也可被称为硬件线程槽1201a和1201b。因此,在一个实施例中,诸如操作***之类的软件实体潜在地将处理器1200视为四个单独的处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上文所暗指的那样,第一线程与架构状态寄存器1201a相关联,第二线程与架构状态寄存器1201b相关联,第三线程可与架构状态寄存器1202a相关联,并且第四线程可与架构状态寄存器1202b相关联。在此,如上所述,可将架构状态寄存器(1201a、1201b、1202a和1202b)中的每一个称为处理元件、线程槽或线程单元。如所示出的那样,架构状态寄存器1201a被复制在架构状态寄存器1201b中,因此能够为逻辑处理器1201a和逻辑处理器1201b存储单独的架构状态/上下文。在核1201中,也可复制用于线程1201a和1201b的其他较小资源,诸如,指令指针以及分配器和重命名块1230中的重命名逻辑。可通过分区来共享诸如重排序器/引退单元1235中的重排序缓冲器、ILTB 1220、加载/存储缓冲器和队列之类的一些资源。可潜在地完全共享诸如通用内部寄存器、页表基寄存器、低层级数据高速缓存和数据TLB 1215、执行单元1240和无序单元1235的多个部分之类的其他资源。
处理器1200通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由处理元件专用/专用于处理元件。在图12中,示出具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任何单元,并包括未描绘出的任何其他已知的功能单元、逻辑或固件。如所示出的那样,核1201包括简化的、代表性的无序(OOO)处理器核。但是,在不同实施例中,可利用有序处理器。OOO核包括用于预测要被执行/进行的分支的分支目标缓冲器1220以及用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)1220。
核1201进一步包括耦合至取出单元1220的解码模块1225,用于解码取出的元素。在一个实施例中,取出逻辑包括分别与线程槽1201a、1201b相关联的单个的序列发生器。通常,核1201与第一ISA相关联,该第一ISA定义/指定在处理器1200上可执行的指令。作为第一ISA的部分的机器代码指令常包括引用/指定要被执行的指令或操作的指令的部分(被称为操作码)。解码逻辑1225包括从这些指令的操作码识别出这些指令并在流水线上传递经解码的指令以进行第一ISA所定义的处理的电路。例如,如下文更详细讨论地,在一个实施例中,解码器1225包括设计成或适合于识别诸如事务性指令之类的特定指令的逻辑。作为由解码器1225识别的结果,架构或核1201采取特定的、预定的动作以执行与适当指令相关联的任务。重要的是应注意,本文中所描述的任务、块、操作和方法中的任何一个可响应于单条或多条指令来执行;它们中的一些可以是新指令或旧指令。注意,在一个实施例中,解码器1226识别相同的ISA(或其子集)。或者,在异构核环境中,解码器1226识别第二ISA(第一ISA的子集或不同的ISA)。
在一个示例中,分配器和重命名器块1230包括用于预留资源的分配器,诸如,用于存储指令处理结果的寄存器组。然而,线程1201a和1201b潜在地能够进行无序执行,其中,分配器和重命名器块1230还保留其他资源(诸如,用于跟踪指令结果的重排序缓冲器)。单元1230还可包括寄存器重命名器,其用于将程序/指令引用寄存器重命名为处理器1200内部的其他寄存器。重排序/引退单元1235包括用于支持被无序执行的指令的无序执行和稍后的有序引退的、诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件。
在一个实施例中,调度器和执行单元块1240包括调度器单元,其用于在多个执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器组,其用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其他已知的执行单元。
较低层级的数据高速缓存和数据转换缓冲器(D-TLB)1250耦合至执行单元1240。数据高速缓存用于存储最近使用/操作的元素(诸如,数据操作数),潜在地在存储器一致性状态下保持这些元素。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。
在此,核1201和1202共享对较高级或进一步的高速缓存的访问,如与片上接口1210相关联的第二级高速缓存。注意,较高层级或进一步远离指的是高速缓存层级增加或进一步远离执行单元。在一个实施例中,较高级高速缓存是末级数据高速缓存——处理器1200上的存储器层次中的最后级高速缓存,诸如第二或第三级数据高速缓存。然而,较高级高速缓存不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存(指令高速缓存的类型)可耦合在解码器1225之后,用于存储最近经解码的跟踪。在此,指令可能引用宏指令(即,解码器所识别的通用指令),该宏指令可解码成多个微指令(微操作)。
在所描绘的配置中,处理器1200还包括片上接口模块1210。历史上,存储器控制器(以下将更详细地描述)已被包括在处理器1200外部的计算***中。在该场景中,片上接口121与处理器1200外部的器件通信,处理器1200外部的器件诸如***存储器1275、芯片组(通常包括存储器控制器中枢以连接到存储器1275以及I/O控制器中枢以连接到***器件)、存储器控制器中枢、北桥、或其它集成电路。并且在该场景中,总线1205可包括任何已知的互连,诸如,多分支总线、点对点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议架构、差分总线以及GTL总线。
存储器1275可专用于处理器1200或可由处理器1200与***中的其他设备共享。存储器1275的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)以及其他已知的存储设备。注意,设备1280可包括耦合到存储器控制器中枢的图形加速器、处理器或卡,耦合到I/O控制器中枢的数据存储设备,无线收发机,闪存设备,音频控制器,网络控制器或其他已知设备。
然而,最近,随着更多的逻辑和器件被集成在单个管芯上(如SOC),这些器件中的每一个可被合并在处理器1200上。例如,在一个实施例中,存储器控制器中枢与处理器1200处于同一封装和/或管芯上。在此,核的一部分(核上部分)1210包括与诸如存储器1275和/或图形器件1280之类的其它器件进行对接的一个或超过一个控制器。通常将包括互连和用于与此类设备对接的控制器的配置称为核上(或非核配置)。作为示例,片上接口1210包括用于片上通信的环互连和用于片外通信的高速串行点对点链路1205。然而,在SOC环境中,可将诸如网络接口、协处理器、存储器1275、图形处理器1280以及任何其他已知计算机设备/接口之类的甚至更多设备集成到单个管芯或集成电路上,以提供具有高功能和低功耗的小形状因子。
在一个实施例中,处理器1200能够执行编译器、优化和/或转换器代码1277以编译、转换和/或优化应用代码1276,以支持本申请中描述的装置和方法或与本申请中描述的装置和方法相连接。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序集合。通常,利用编译器对程序/应用代码的编译是在多个级和多次运行中完成的,以将高级编程语言代码转换成低级机器或汇编语言代码。不过,对于简单编译,仍可利用单次运行编译器。编译器可利用任何已知的编译技术,并执行任何已知的编译器操作,诸如词法分析、预处理、解析、语义分析、代码生成、代码转换以及代码优化。
更大的编译器通常包括多个级,但多数时候这些级被包括在两个一般级中:(1)前端,一般而言,即在其中可进行语法处理、语义处理以及一些转换/优化,(2)后端,一般而言,即在其中可进行分析、转换、优化以及代码生成。一些编译器指的是中端,其示出了编译器的前端与后端之间的界定的模糊。因此,对***、关联、生成或编译器的其它操作的引用可在编译器的上述级或运行中的任一个以及任何其它已知的级或运行中进行。作为说明性示例,编译器可能在编译的一个或超过一个级中***操作、调用、函数等等,诸如在编译的前端级***调用/操作,然后在转换级期间将这些调用/操作转换成较低级代码。注意,在动态编译期间,编译器代码或动态优化代码可***这样的操作/调用,并优化代码以供在运行时间期间执行。作为特定的说明性示例,可在运行时间期间动态地优化二进制代码(已经是经编译的代码)。在此,程序代码可包括动态优化代码、二进制代码或其组合。
与编译器类似,诸如二进制转换器之类的转换器将代码静态地或动态地转换以优化和/或转换代码。因此,对代码、应用代码、程序代码或其它软件环境的执行的引用可表示:(1)执行编译器程序、优化代码优化器或转换器,以动态地或静态地编译程序代码、维护软件结构、执行其它操作、优化代码或转换代码;(2)执行包括操作/调用的主程序代码,诸如已经被优化/编译的应用代码;(3)执行与主程序代码相关联的其它程序代码(诸如库),以维护软件结构、执行其它软件相关操作、或用于优化代码;或(4)上述的组合。
现在参考图13,示出了多核处理器的实施例的框图。如图13的实施例中所示,处理器1300包括多个域。具体而言,核域1330包括多个核1330A-1330N,图形域1360包括具有媒体引擎1365的一个或超过一个图形引擎,以及***代理与1310。
在各个实施例中,***代理域1310处理功率控制事件和功率管理,使得域1330和1360的各个单元(例如核和/或图形引擎)是独立可控的,以根据给定单元中发生的活动(或不活动)在适当的功率模式/水平下操作(例如活动、加速、睡眠、休眠、深度睡眠或其它高级配置电源接口类似的状态)。域1330和1360中的每一个可在不同的电压和/或功率下操作,并且域中的各个单元各自可能在独立的频率和电压下操作。注意,虽然仅以三个域示出,但是会理解,本发明的范围不限于这方面,并且附加的域可存在于其他实施例中。
如所示,每个核1330除各种执行单元和附加的处理元件之外,还包括多个低级高速缓存。在此,各个核彼此耦合并且耦合至由末级高速缓存(LLC)的多个单元或片1340A-1340N形成的共享的高速缓存存储器;这些LLC通常包括存储和高速缓存控制器功能,并在核之间以及可能的图形引擎之间被共享。
如所见,环状互连1350将核耦合在一起,并通过各自位于核与LLC片之间的耦合处的多个环分支1352A-1352N来提供核域1330、图形域1360以及***代理电路1310之间的互连。如图13中可见,互连1350用于携带各种信息,包括地址信息、数据信息、确认信息、以及监听/无效信息。虽然示出了环状互连,但可利用任何已知的管芯上的互连或结构。作为说明性示例,可按照相似的方式来利用以上讨论的结构中的一些(例如另一管芯上互连、芯片上***结构(OSF)、高级微控制器总线架构(AMBA)互连、多维网状网结构、或其它已知的互连架构)。
如进一步所看到的那样,***代理域1310可包括显示引擎1312,该显示引擎可提供对相关联的显示器的控制以及到它的接口。***代理域1310可包括其它单元,诸如:集成存储器控制器1320,提供到***存储器(例如利用多个DIMM实现的DRAM)的接口;一致性逻辑1322,用于执行存储器一致性操作。可以存在多个接口以实现处理器与其他电路之间的互连。例如,在一个实施例中,提供至少一个直接媒体接口(DMI)1316接口以及一个或超过一个PCIeTM接口1314。显示引擎和这些接口典型地通过PCIeTM桥1318耦合至存储器。再进一步,为了提供诸如附加的处理器或其它电路之类的其它代理之间的通信,可提供一个或超过一个其它接口。
现在参考图14,示出了代表性核的框图;具体而言是诸如来自图13的核1330之类的核的后端的逻辑块。一般而言,图14中所示的结构包括无序处理器,该无序处理器具有前端单元1470,该前端单元用于取出传入指令、执行各种处理(例如高速缓存、解码、分支预测等等)并向无序(OOO)引擎1480传递指令/操作。OOO引擎1480对经解码的指令执行进一步处理。
具体地,在图14的实施例中,无序引擎1480包括分配单元1482,该分配单元用于接收来自前端单元1470的经解码的指令(可以是一个或超过一个微指令或微操作的形式),并将它们分配给诸如寄存器等等之类的适当的资源。接下来,将指令提供给预留站1484,该预留站预留并调度资源以在多个执行单元1486A-1486N中的一个执行单元上执行。可存在各样各样类型的执行单元,包括例如算术逻辑单元(ALU)、加载和存储单元、向量处理单元(VPU)、浮点执行单元、等等。将来自这些不同执行单元的结果提供给重排序缓冲器(ROB)1488,该重排序缓冲器获取未排序的结果并将它们返回至正确的程序顺序。
仍参考图14,注意前端单元1470和无序引擎1480耦合至存储器分层结构的不同层级。具体而言,所示指令级高速缓存1472耦合至中级高速缓存1476,该中级高速缓存又耦合至末级高速缓存1495。在一个实施例中,末级高速缓存1495在芯片上单元(有时称为非核)1490中实现。作为示例,单元1490与图13的***代理1310相似。如上所讨论,非核1490与***存储器1499通信,在所示实施例中,***存储器1499通过ED RAM实现。注意,无序引擎1480之内的各个执行单元1486与一级高速缓存1474通信,一级高速缓存也与中级高速缓存1476通信。注意,附加的核1430N-2-1430N可耦合至LLC 1495。尽管在图14的实施例以这样的高级别示出,然而要理解可能存在各种变型和附加组件。
转到图15,形成具有处理器的示例性计算机***的框图,处理器包括用于执行指令的执行单元,其中示出了实现根据本发明的一个实施例的一个或超过一个特征的一个或超过一个互连。根据本发明,诸如根据在此所描述的实施例,***1500包括诸如处理器1502之类的组件,该处理器用于使用包括逻辑的执行单元以执行算法来处理数据。***1500代表基于PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理***,不过也可使用其它***(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本***1500执行可从美国华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作***的某个版本,不过也可使用其他操作***(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。
实施例不限于计算机***。本发明的替代实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的一些示例包括:蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用可包括:微控制器、数字信号处理器(DSP)、芯片上***、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机、或可执行参照至少一个实施例的一个或超过一个指令的任何其他***。
在该示出的实施例中,处理器1502包括用于实现算法的一个或超过一个执行单元1508,该算法用于执行至少一条指令。可在单处理器桌面或服务器***的上下文中描述一个实施例,但是可将替代实施例包括在多处理器***中。***1500是“中枢”***架构的示例。计算机***1500包括用于处理数据信号的处理器1502。作为一个说明性示例,处理器1502包括例如,复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或任何其他处理器设备(诸如,数字信号处理器)。处理器1502耦合到处理器总线1510,该处理器总线110在处理器1502与***1500中的其他组件之间传输数据信号。***1500的元件(例如,图形加速器1512、存储器控制器中枢1516、存储器1520、I/O控制器中枢1524、无线收发机1526、闪存BIOS 1528、网络控制器1534、音频控制器1536、串行扩展端口1538、I/O控制器1540等)执行为熟悉本领域的人员所共知的它们的常规功能。
在一个实施例中,处理器1502包括第一级(L1)内部高速缓存存储器1504。取决于架构,处理器1502可以具有单个的内部高速缓存或多个层级的内部高速缓存。其他实施例包括内部高速缓存和外部高速缓存两者的组合,这取决于特定实现和需求。寄存器组1506用于将不同类型的数据存储在各种寄存器中,各种寄存器包括整数寄存器、浮点寄存器、向量寄存器、区块化(banked)寄存器、影子寄存器(shadow register)、检查点寄存器、状态寄存器以及指令指针寄存器。
执行单元1508(包括执行整数和浮点操作的逻辑)也位于处理器1502中。在一个实施例中,处理器1502包括用于存储微代码的微代码(ucode)ROM,该微代码在被执行时将执行用于某些宏指令的算法或处理复杂的场景。在此,微代码是潜在地可更新的,以便为处理器1502处理逻辑缺陷/修补。对于一个实施例,执行单元1508包括用于处理紧缩指令集1509的逻辑。通过将紧缩指令集109包括在通用处理器1502以及用于执行指令的相关联的电路的指令集中,可以使用通用处理器1502中的紧缩数据来执行由许多多媒体应用程序使用的操作。如此,通过将处理器的数据总线的全宽度用于对紧缩数据执行操作,加速了许多多媒体应用并且更高效地执行了紧缩数据。这潜在地消除了跨处理器的数据总线来传输较小的数据单元以执行一个或超过一个操作(一次对一个数据元素执行)的需求。
执行单元1508的替换实施例也可以用于微控制器、嵌入式处理器、图形设备、DSP及其他类型的逻辑电路。***1500包括存储器1520。存储器1520包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。主存储器1520存储将由可由处理器1502执行的数据信号来表示的指令和/或数据。
值得注意的是,可在图15所示的一个或超过一个互连上利用本发明的任意上述特征或方面。例如,未示出的用于耦合处理器1502的内部单元的管芯上互连(ODI)实现上述本发明的一个或超过一个方面。或者,本发明与处理器总线1510(例如其它已知的高性能计算互联)、到存储器1520的高带宽存储器路径1518、到图形加速器1512的点到点链路(例如,快速***组件互连(PCIe)兼容的结构)、控制器中枢互连1522、用于耦合其他所示部件的I/O或其它互连(例如,USB、PCI、PCIe)相关联。此类组件的一些示例是音频控制器1536、固件中枢(闪存BIOS)1528、无线收发机1526、数据存储设备1524、包括用户输入和键盘接口1542的传统I/O控制器1510、串行扩展端口1538(诸如,通用串行总线(USB))以及网络控制器1534。数据存储设备1524可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
现在参照图16,所示出的是根据本发明实施例的第二***1600的框图。如图16所示,多处理器***1600是点对点互连***,且包括经由点对点互连1650耦合的第一处理器1670和第二处理器1680。处理器1670和1680中的每一个都可以是处理器的某一版本。在一个实施例中,1652和1654是串行、点对点一致性互连结构(诸如高性能架构)的一部分。因此,可在QPI架构中实现本发明。
虽然仅以两个处理器1670、1680来示出,但应理解本发明的范围不限于此。在其他实施例中,在给定处理器中可存在一个或超过一个附加处理器。
处理器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,这些存储器可以是本地附连到各自处理器的主存储器的多个部分。
处理器1670、1680可各自使用点对点接口电路1676、1694、1686、1698经由各个P-P接口1652、1654与芯片组1690交换信息。芯片组还1690经由接口电路1692沿着高性能图形互连1639与高性能图形电路1638交换信息。
共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,使得如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组1690可经由接口1696耦合至第一总线1616。在一个实施例中,第一总线1616可以是***组件互连(PCI)总线,或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图16所示,各种I/O设备1614可连同总线桥1618一起耦合到第一总线1616,总线桥1618将第一总线1616耦合到第二总线1620。在一个实施例中,第二总线1620可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1620,在一个实施例中,这些设备包括例如键盘和/或鼠标1622、通信设备1627以及存储单元1628,存储单元1628诸如可包括指令/代码和数据1630的盘驱动器或其他大容量存储设备。此外,音频I/O 1624可耦合至第二总线1620。值得注意的是,其他架构也是可能的,其中所包括的部件和互连架构不同。例如,代替图16的点对点架构,***可以实现多分支总线或其他此类架构。
接下来参考图17,描绘了根据本发明的各实施例的芯片上***(SOC)设计的实施例。作为特定的说明性示例,SOC 1700被包括在用户装备(UE)中。在一个实施例中,UE是指由最终用户用于通信的任何设备,诸如,手持式电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。UE常常连接到基站或节点,该基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。
在此,SOC 1700包括2个核——1706和1707。核1706和1707可符合指令集架构,诸如,基于架构核TM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1706和1707耦合到与总线接口单元1709和L2高速缓存1711相关联的高速缓存控制装置1708,以便与***1700的其他部分进行通信。互连1710包括可能实现所描述的公开的一个或超过一个方面的诸如IOSF、AMBA或上文讨论的其他互连之类的芯片上互连。
接口1710可以提供到其他组件的通信信道,其他组件诸如,与订户标识模块(SIM)卡对接的SIM 1730、用于保存供核1706和1707执行以初始化并引导SOC 1700的引导代码的引导ROM 1735、用于与外部存储器(例如,DRAM 1760)对接的SDRAM控制器1740、用于与非易失性存储器(例如,闪存1765)对接的闪存控制器1745、用于与***设备对接的***控制装置1750(例如,串行***接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1720和视频接口1725、用于执行图形相关的计算的GPU 1715等。这些接口中的任一个可纳入本申请中描述的本发明的多个方面。
另外,***可以包括用于通信的***设备,诸如,蓝牙模块1770、3G调制解调器1775、GPS 1785以及Wi-Fi 1785。注意,如上所述,UE包括用于通信的无线电装置。结果,这些***通信模块不都是需要的。然而,在UE中,将包括用于外部通信的某种形式的无线电装置。
虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神和范围的所有此类修改和变型。
设计会经历多个级,从创新到模拟到制造。表示设计的数据可用多种方式来表示该设计。首先,像仿真中有用的那样,可使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可在设计过程的一些级产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个级都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁或光存储设备(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光或电波来发送的,调制或以其他方式生成这些光或电波以传送这些信息。当发送指示或承载代码或设计的电载波达到实现该电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储具体化本发明的多个实施例的技术的制品(诸如,被编码成载波的信息)。
在本文中使用的模块指的是硬件、软件、和/或固件的任意组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微处理器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。
在一个实施例中,使用短语‘被配置成’指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定和/或所确定的任务。在该示例中,没有操作的装置或其元件仍然“被配置成”执行指定任务,如果它被设计、耦合、和/或互连以执行所述指定任务的话。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但逻辑门“被配置成”向时钟提供启用信号不包括可提供1或0的每一潜在逻辑门。而是,该逻辑门是以在操作期间所输出的1或0用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语‘被配置成’不要求操作,而是集中于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用术语‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上注意的,在一个实施例中,用于、能够、或能用于指的是装置、逻辑、硬件、和/或元件的潜在状态,潜在该装置、逻辑、硬件、和/或元件没有正在操作而是被以如下方式设计:以指定方式来启用装置的使用。
如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机***中的值的其它表示。例如,十进制数字10也可被表示为二进制值1010和十六进制字母A。因此,值包括能保持在计算机***中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值可能包括高逻辑值,即重置,而已更新的值可能包括低逻辑值,即置位。注意,值的任何组合可用来表示任意数量的状态。
上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取、机器可读、计算机可存取、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子***之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可存取介质包括:诸如静态RAM(SRAM)或动态RAM(DRAM)之类的随机存取存储器(RAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;其它形式的用于保持从瞬态(传播)信号(例如载波、红外信号、数字信号)接收的信息的存储设备等等,这些信号与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本发明的诸个实施例的指令可被存储在***的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)中。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形的机器可读介质。
以下示例涉及根据本说明书的各实施例。一个或超过一个实施例可提供装置、***、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:访问数据结构,该数据结构定义集成电路设备中的一个或超过一个集成块的配置参数;以及基于该数据结构中定义的相应配置参数来配置所述集成块中的一个或超过一个集成块,其中配置参数在运行时间之前被设置并被永久存储在该数据结构中。
在至少一个示例中,所述配置参数基于对于所述一个或超过一个集成块保持的元数据。
在至少一个示例中,所述配置参数中的至少一些在集成电路设备的构建时间时被定义。
在至少一个示例中,在该数据结构中定义的配置参数的至少部分包括***组件互连(PCI)快速(PCIe)能力。
在至少一个示例中,所述配置参数包括由相应设备支持的传输模式,其中所述传输模式包括在已定义的传输层中的模式。
在至少一个示例中,所述数据结构对于所述一个或超过一个集成块中的每个集成块标识所述集成块的相应的PCI类、子类以及编程接口。
在至少一个示例中,所述集成电路设备中的一个或超过一个寄存器在运行时间基于所述数据结构中定义的配置信息被填充。
在至少一个示例中,可访问在运行时间从与一个或超过一个集成块相关联的寄存器的查询产生的数据。
在至少一个示例中,可接收标识所述一个或超过一个集成块中的至少一个集成块的附加配置参数的数据,其中附加的配置参数在运行时间被发现。
在至少一个示例中,由操作***执行所述配置,并从BIOS接收所述数据。
在至少一个示例中,所述***中的一个或超过一个寄存器链接至数据结构并通过所述数据结构中定义的配置参数来填充,可改变所述数据结构中定义的所述配置参数中的特定配置参数,其中基于特定寄存器值与所述数据结构之间的链接来更新所述特定寄存器值以反映对所述特定配置参数的改变。
在至少一个示例中,提供装置,该装置包括:集成电路,包括处理元件和多个集成块;永久存储器,用于保持所述多个集成块中的至少一个集成块在运行时间之前的多个配置参数;以及逻辑,用于基于多个配置参数来配置所述多个集成块中的至少一个集成块,并用于根据所述永久存储器来服务对用于所述多个集成块中的至少一个集成块的状态寄存器的访问。
在至少一个示例中,提供***,该***包括:至少一个数据处理器;多个设备;数据结构,被存储在存储器中并定义所述多个设备中的一个或超过一个的配置参数,其中配置参数被永久定义,并且操作***基于该数据结构中定义的相应配置参数来访问该数据结构并配置所述设备中的一个或超过一个设备。
在至少一个示例中,所述多个设备中的至少部分包括IP块。
在至少一个示例中,该***包括芯片上***。
在至少一个示例中,提供装置,该装置包括:***存储器,用于存储数据结构,该数据结构定义***中的一个或超过一个设备的配置参数;以及配置逻辑,用于基于该数据结构中定义的相应配置参数来配置所述设备中的一个或超过一个设备,其中配置参数在该***的运行时间之前被设置并被永久存储在该数据结构中。该数据结构能由操作***修改。
一个或超过一个实施例可提供装置、***、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:提供至少一个上协议层和标准化传输层,其中传输层采用加载/存储架构并包括多个已定义传输模式,其中上协议层利用通过所述模式中的至少一个特定模式提供的服务。
在至少一个示例中,使传输层可由***内的不同设备中的每个设备使用。
在至少一个示例中,上协议层和标准化传输层由该***中的多个设备中的特定设备的驱动程序使用。
在至少一个示例中,该***包括芯片上***。
在至少一个示例中,多个设备被集成到该***中。
在至少一个示例中,多个设备中的每一个设备具有利用传输层的相关联的驱动程序。
在至少一个示例中,该传输层包括基于PCI的传输服务。
在至少一个示例中,该传输层包括基于PCIe的传输服务。
在至少一个示例中,该传输层基于第一传输协议,且上协议层基于不同的第二协议。
在至少一个示例中,多个模式包括至少五个模式。
在至少一个示例中,多个模式中的特定模式包括允许多个队列和分散/聚集的模式。
在至少一个示例中,多个模式中的另一模式包括不具有分散/聚集的简化模式。
在至少一个示例中,多个模式中的另一模式包括没有***存储器中的固定缓冲器的简化模式,并且该简化模式包括总线主控。
在至少一个示例中,多个模式中的第三模式包括不具有总线主控的简化模式。
在至少一个示例中,多个模式中的另一模式包括不具有总线主控的提供对于数据移动的字节流支持的简化模式。
在至少一个示例中,上层协议利用传输层的多个模式中的两个或超过两个。
在至少一个示例中,上层协议利用传输层的多个模式中的非全部模式。
在一个或超过一个实施例中,可提供***,该***包括:至少一个数据处理器;互连结构;第一设备,包括用于访问并利用标准化传输层的第一传输逻辑,其中传输层采用加载/存储架构并包括多个已定义的传输模式。该***可包括第二设备,该第二设备包括第二传输逻辑,该第二传输逻辑访问并利用标准化传输层。
在至少一个示例中,可提供至少一个存储器元件以存储至少一个数据结构,该至少一个数据结构用于对于至少第一和第二设备定义相应设备支持所述多个模式中的哪个模式。
在至少一个示例中,该***可包括配置逻辑,该配置逻辑用于基于该数据结构中标识的配置属性来配置第一和第二设备。
在至少一个示例中,第一传输逻辑被定义为利用多个模式中的第一子集,第二传输逻辑被定义为利用多个模式中的不同的第二子集。
在至少一个示例中,第一设备包括第一IP块,第二设备包括第二IP块。
在至少一个示例中,该***包括芯片上***(SoC)。
一个或超过一个实施例可提供装置、***、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:访问数据结构,该数据结构定义***中的一个或超过一个设备的配置参数;以及根据配置参数来标识所述设备中的特定设备的逻辑绑定于标准化传输层,其中该传输层采用加载/存储架构并包括多个已定义的传输模式,并确定将多个模式中的哪一个应用于该特定设备。
在至少一个示例中,基于该数据结构中定义的相应的配置参数来配置所述设备中的一个或超过一个。
在至少一个示例中,所述配置参数在所述***的运行时间之前被设置并被永久存储在所述数据结构中。
在至少一个示例中,确定特定设备的逻辑使用多个模式中的特定模式的条件。
在至少一个示例中,促成使用多个模式中的特定模式传输来自该特定设备的数据。
在至少一个示例中,将该数据从该特定设备直接传输至所述设备中的另一设备。
在至少一个示例中,基于该数据结构中定义的相应的配置参数来配置所述设备中的一个或超过一个。
一个或超过一个实施例可提供装置、***、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:确定第一设备与第二设备对于设备-设备数据传输的兼容性,并配置第一设备以用于设备-设备数据传输,其中兼容性基于第一设备的分类和第二设备的分类,第一设备的分类基于第一设备的类、子类和编程接口(PI),第二设备的分类基于第二设备的类、子类和编程接口(PI)。
在至少一个示例中,根据标识对于每个设备的配置信息的数据结构来确定兼容性。
在至少一个示例中,配置参数在该***的运行时间之前被永久设置在该数据结构中,并且该数据结构被永久存储在***存储器中。
在至少一个示例中,配置逻辑进一步用于标识服务请求,并针对该服务请求来配置设备-设备数据传送。
在至少一个示例中,该服务请求包括软件应用的服务请求。
在至少一个示例中,该配置逻辑用于基于该服务请求将第一设备标识为源,并基于该服务请求将第二设备标识为宿。
在至少一个示例中,该配置逻辑进一步用于:接收对末端服务的请求;基于对末端服务的请求来禁用设备-设备数据传送中的第一设备;并基于对末端服务的请求来禁用设备-设备数据传送中的第二设备。
在至少一个示例中,从软件应用接收对末端服务的请求,其中软件应用还产生服务请求。
在至少一个示例中,配置逻辑用于根据对于***中的设备保持的静态配置数据来确定第一与第二设备之间的设备-设备数据传送是否是合法事务。
在至少一个示例中,配置逻辑用于根据配置数据来确定第一与第二设备之间的设备-设备数据传输的传输类型。
在至少一个示例中,设备-设备传输使用由第一和第二设备支持的公共的基于PCI的传输层。
在至少一个示例中,该传输层包括多个模式,根据配置数据确定第一和第二设备所支持的模式的相应子集,并且基于第一和第二设备所支持的模式的子集来确定传输类型。
在至少一个示例中,可基于标识的服务请求来确定兼容性。
在至少一个示例中,基于服务请求来标识第一和第二设备包括标识第一和第二设备中的每一个的能力,并且确定第一和第二设备的相应能力使得能在用于该服务请求的设备-设备数据传输中使用第一和第二设备。
在至少一个示例中,可访问存储在存储器中的静态配置数据,以确定第一设备与第二设备对于设备-设备数据传输的兼容性。
在至少一个示例中,该服务请求包括软件应用的服务请求。
在至少一个示例中,设备-设备数据传输包括基于PCI的设备-设备数据传输。
在至少一个示例中,设备-设备数据传输包括基于PCIe的设备-设备数据传输。
在至少一个示例中,设备可以是SOC中的集成块。
一个或超过一个实施例可提供装置、***、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:使用已定义的互连来实现通信,其中该通信经由基于PCI的协议栈的事务层来实现,并且该通信放弃数据链路层控制数据和物理层控制逻辑控制数据。
在至少一个示例中,已定义的互连包括已定义的一组控制信号。
在至少一个示例中,该组控制信号包括实现对下游设备的功率门控的功率门控信号。
在至少一个示例中,该组控制信号用于支持通告、非通告、以及完成类型的分组。
在至少一个示例中,分组中的每一个包括头部和净荷。
在至少一个示例中,该组控制信号定义握手。
在至少一个示例中,定义握手的控制信号包括保持信号和有效信号。
在至少一个示例中,控制信号包括保持头部通告信号、保持头部非通告信号、保持头部完成信号、保持净荷通告信号、保持净荷非通告信号、保持净荷完成信号。
在至少一个示例中,控制信号包括头部通告有效信号、头部非通告有效信号、头部完成有效信号、净荷通告有效信号、净荷非通告有效信号、净荷完成有效信号。
在至少一个示例中,保持信号在被断言时用于指示不向断言该信号的设备发送特定相应类型的数据。
在至少一个示例中,有效信号用于指示由断言该信号的设备发送的特定相应类型的数据是有效的。
在至少一个示例中,第一和第二设备各自包括相应的集成IP块。
在至少一个示例中,该***包括芯片上***(SoC)。
一个或超过一个实施例可提供装置、***、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:标识数据,该数据标识要包括在芯片上***(SoC)中的一组设备;获取该组设备中的每个设备的配置元数据;以及基于配置元数据来确定该SoC中的设备的配置。
在至少一个示例中,确定设备的配置包括基于配置元数据来确定SoC上的设备的物理布局。
在至少一个示例中,确定设备的配置包括基于配置元数据来确定SoC的时钟。
在至少一个示例中,确定设备的配置包括确定该组设备中的相应设备之间的兼容性。
在至少一个示例中,根据在该组设备中的相应设备之间执行的兼容性测试来确定兼容性,并且使用相应设备的相应配置元数据来执行兼容性测试。
在至少一个示例中,确定设备的配置包括确定该组设备中的每个设备的能力。
在至少一个示例中,每个设备的配置元数据包括每个设备相应的构建附加内容。
在至少一个示例中,确定该组设备的静态配置信息以永久存储以供在所得SoC的配置期间访问。
在至少一个示例中,标识该设备的配置元数据的相应源,并查询该配置元数据的相应源。
在至少一个示例中,源中的至少一个包括与相应设备的供应商相关联的数据服务器。
在至少一个示例中,源的至少一个包括存储多个不同设备的配置元数据的数据库。
在至少一个示例中,产生配置数据结构,该配置数据结构用于描述SoC中的设备的已确定配置。
在至少一个示例中,该配置数据结构是机器可读的数据结构。
在至少一个示例中,配置数据结构适用于确定SoC的操作***的配置。
在至少一个示例中,标识要包括在芯片上***(SoC)中的该组设备的数据至少部分是用户定义的,并且在没有进一步的用户干涉的情形下确定该SoC中的设备的配置。
在至少一个示例中,配置元数据是机器可读的,并且根据定义模板来结构化。
在至少一个示例中,根据从配置元数据确定的SoC中的设备的配置确定SoC的操作***的配置。
在至少一个示例中,配置元数据根据已定义的模板。
在至少一个示例中,提供装订器工具,该装订器工具可阅读配置元数据以确定该组设备中的每个设备的配置属性。该装订器工具可查询多个源以获取配置元数据。该装订器工具可确定SoC的互连结构。
本申请文件中通篇对“一个实施例”或“实施例”的引用意指结合所述实施例描述的特定的特征、结构或特性被包括在本发明的至少一个实施例中。如此,在整篇说明书中的不同位置出现短语“在一个实施例中”或“在实施例中”不一定都是指同一个实施例。此外,在一个或超过一个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。相应地,应当将说明书和附图应认为是说明性的而不是限制性的。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。
Claims (25)
1.一种用于配置计算设备的装置,所述装置包括:
集成电路,包括处理元件和多个集成块;
永久存储器,用于保持一数据结构,所述数据结构包括在所述多个集成块中的至少一个集成块的运行时间之前定义的第一配置参数集;
通过基本I/O***BIOS能访问的一个或多个寄存器,用于存储第二配置参数集,其中所述永久存储器能由将被所述集成电路的所述处理元件执行的操作***来直接访问;以及
逻辑,用于基于所述第一配置参数集来配置所述多个集成块中的所述至少一个集成块,并用于根据所述永久存储器来服务针对用于所述多个集成块中的所述至少一个集成块的状态寄存器的访问。
2.如权利要求1所述的装置,其特征在于,所述配置参数基于对于所述一个或超过一个集成块保持的元数据。
3.如权利要求1所述的装置,其特征在于,在所述集成电路的构建时间定义所述配置参数中的至少一些。
4.如权利要求1所述的装置,其特征在于,所述逻辑还用于:
访问在运行时间从与所述一个或超过一个集成块相关联的寄存器的查询产生的数据。
5.如权利要求4所述的装置,其特征在于,所述寄存器包括状态寄存器和配置寄存器中的一个或超过一个。
6.如权利要求1所述的装置,其特征在于,所述数据结构被存储在***存储器中。
7.如权利要求1所述的装置,其特征在于,所述集成电路包括芯片上***。
8.一种用于配置计算设备的方法,包括:
访问数据结构,所述数据结构保持集成电路设备中的一个或超过一个集成块的第一配置参数集;
通过基本I/O***BIOS访问一个或多个寄存器,其中所述一个或多个寄存器用于存储第二配置参数集,所述一个或多个寄存器与所述数据结构分开,并且所述数据结构能由***软件直接访问;以及
基于所述第一配置参数集和所述第二配置参数集中的相应配置信息来配置所述集成块中的一个或超过一个,
其中在运行时间之前设置所述配置参数并将所述配置参数永久存储在所述数据结构中。
9.如权利要求8所述的方法,其特征在于,所述配置参数基于对于所述一个或超过一个集成块保持的元数据。
10.如权利要求8所述的方法,其特征在于,在所述集成电路设备的构建时间定义所述配置参数中的至少一些。
11.如权利要求8所述的方法,其特征在于,所述数据结构中定义的所述配置参数的至少部分包括***组件互连PCI快速PCIe能力。
12.如权利要求8所述的方法,其特征在于,所述配置参数包括由相应设备支持的传输模式,其中所述传输模式包括已定义的传输层中的模式。
13.如权利要求8所述的方法,其特征在于,所述数据结构对于所述一个或超过一个集成块中的每个集成块标识所述集成块的相应的PCI类、子类以及编程接口。
14.如权利要求8所述的方法,其特征在于,所述集成电路设备中的一个或超过一个寄存器在运行时间基于所述数据结构中定义的配置信息被填充。
15.如权利要求8所述的方法,其特征在于,所述配置还包括:
访问在运行时间从与所述一个或超过一个集成块相关联的寄存器的查询产生的数据。
16.如权利要求8所述的方法,其特征在于,进一步包括:
接收标识所述一个或超过一个集成块中的至少一个集成块的附加配置参数的数据,其中在运行时间发现所述附加配置参数。
17.如权利要求16所述的方法,其特征在于,由操作***执行所述配置,并从所述基本I/O***BIOS接收所述数据。
18.如权利要求8所述的方法,其特征在于,其中所述***中的一个或超过一个寄存器链接至数据结构并通过所述数据结构中定义的配置参数来填充,所述方法还包括改变所述数据结构中定义的所述配置参数中的特定配置参数,其中基于特定寄存器值与所述数据结构之间的链接来更新所述特定寄存器值以反映对所述特定配置参数的改变。
19.一种用于配置计算设备的***,包括用于执行如权利要求8-18中的任一项所述的方法的装置。
20.如权利要求19所述的***,其特征在于,所述装置包括至少一个机器可访问存储介质,所述至少一个机器可访问存储介质具有存储于其上的代码,所述代码可被执行以使机器执行如权利要求8-18中的任一项所述的方法。
21.一种用于配置计算设备的***,包括:
至少一个数据处理器;
多个设备;
数据结构,被存储在存储器中并保持所述多个设备中的一个或超过一个设备的第一配置参数集,其中所述第一配置参数集被永久定义;
一个或多个寄存器;以及
操作***,用于:
访问所述数据结构以标识所述第一配置参数集;
通过基本I/O***BIOS访问所述一个或多个寄存器以标识第二配置参数集;以及
基于所述第一配置参数集和所述第二配置参数集中中定义的相应信息来配置所述设备中的一个或超过一个设备。
22.如权利要求21所述的***,其特征在于,所述多个设备的至少部分包括IP块。
23.如权利要求21所述的***,其特征在于,所述***包括芯片上***。
24.一种用于配置计算设备的装置,包括:
***存储器,用于存储数据结构,所述数据结构保持***中的一个或超过一个设备的第一配置参数集,其中所述数据结构能由***软件直接访问;
逻辑,用于通过基本I/O***BIOS访问一个或多个寄存器,其中所述一个或多个寄存器用于存储第二配置参数集,所述一个或多个寄存器与所述数据结构分开;以及
配置逻辑,用于基于所述第一配置参数集和所述第二配置参数集中的相应配置信息来配置所述设备中的一个或超过一个设备,
其中所述配置参数在所述***的运行时间之前被设置并被永久存储在所述数据结构中。
25.如权利要求24所述的装置,其特征在于,所述数据结构能***作***修改。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/077512 WO2015099660A1 (en) | 2013-12-23 | 2013-12-23 | Integrated component interconnect |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105793829A CN105793829A (zh) | 2016-07-20 |
CN105793829B true CN105793829B (zh) | 2020-01-21 |
Family
ID=53479337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380081348.1A Active CN105793829B (zh) | 2013-12-23 | 2013-12-23 | 用于集成组件互连的装置、方法和*** |
Country Status (6)
Country | Link |
---|---|
US (2) | US10423552B2 (zh) |
EP (1) | EP3087495A4 (zh) |
JP (1) | JP6311164B2 (zh) |
KR (1) | KR101894230B1 (zh) |
CN (1) | CN105793829B (zh) |
WO (1) | WO2015099660A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11811897B2 (en) | 2021-07-29 | 2023-11-07 | SK Hynix Inc. | Method for data processing of frame receiving of an interconnection protocol and storage device |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013105967A1 (en) * | 2012-01-13 | 2013-07-18 | Intel Corporation | Efficient peer-to-peer communication support in soc fabrics |
KR101894230B1 (ko) | 2013-12-23 | 2018-09-04 | 인텔 코포레이션 | 통합된 컴포넌트 인터커넥트 |
JP2015176214A (ja) * | 2014-03-13 | 2015-10-05 | 株式会社東芝 | 通信装置 |
US9830289B2 (en) | 2014-09-16 | 2017-11-28 | Apple Inc. | Methods and apparatus for aggregating packet transfer over a virtual bus interface |
US9971397B2 (en) | 2014-10-08 | 2018-05-15 | Apple Inc. | Methods and apparatus for managing power with an inter-processor communication link between independently operable processors |
JP6525555B2 (ja) * | 2014-11-04 | 2019-06-05 | キヤノン株式会社 | 情報処理装置、その制御方法及びプログラム |
US9727679B2 (en) * | 2014-12-20 | 2017-08-08 | Intel Corporation | System on chip configuration metadata |
US10042794B2 (en) | 2015-06-12 | 2018-08-07 | Apple Inc. | Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link |
CN105718333A (zh) * | 2016-01-26 | 2016-06-29 | 山东超越数控电子有限公司 | 双路服务器主板主从cpu切换装置及其切换控制方法 |
US10085214B2 (en) | 2016-01-27 | 2018-09-25 | Apple Inc. | Apparatus and methods for wake-limiting with an inter-device communication link |
US10572390B2 (en) | 2016-02-29 | 2020-02-25 | Apple Inc. | Methods and apparatus for loading firmware on demand |
US10198364B2 (en) | 2016-03-31 | 2019-02-05 | Apple Inc. | Memory access protection apparatus and methods for memory mapped access between independently operable processors |
US11270053B2 (en) * | 2016-07-08 | 2022-03-08 | efabless corporation | Systems and methods for assembling and developing an SoC efficiently using templates and designer input data |
US10775871B2 (en) | 2016-11-10 | 2020-09-15 | Apple Inc. | Methods and apparatus for providing individualized power control for peripheral sub-systems |
US10591976B2 (en) | 2016-11-10 | 2020-03-17 | Apple Inc. | Methods and apparatus for providing peripheral sub-system stability |
US10911292B1 (en) * | 2017-03-30 | 2021-02-02 | Amazon Technologies, Inc. | Controlling peer-to-peer communication |
CN106971007B (zh) * | 2017-04-28 | 2021-05-28 | 成都优易数据有限公司 | 一种利用数据结构控制的数据处理与数据分析框架 |
US10346226B2 (en) | 2017-08-07 | 2019-07-09 | Time Warner Cable Enterprises Llc | Methods and apparatus for transmitting time sensitive data over a tunneled bus interface |
US20190095554A1 (en) * | 2017-09-28 | 2019-03-28 | Intel Corporation | Root complex integrated endpoint emulation of a discreet pcie endpoint |
US10331612B1 (en) * | 2018-01-09 | 2019-06-25 | Apple Inc. | Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors |
US10896476B2 (en) * | 2018-02-22 | 2021-01-19 | Netspeed Systems, Inc. | Repository of integration description of hardware intellectual property for NoC construction and SoC integration |
US10642951B1 (en) * | 2018-03-07 | 2020-05-05 | Xilinx, Inc. | Register pull-out for sequential circuit blocks in circuit designs |
US11381514B2 (en) | 2018-05-07 | 2022-07-05 | Apple Inc. | Methods and apparatus for early delivery of data link layer packets |
US10430352B1 (en) | 2018-05-18 | 2019-10-01 | Apple Inc. | Methods and apparatus for reduced overhead data transfer with a shared ring buffer |
US10673648B1 (en) * | 2018-07-06 | 2020-06-02 | Netronome Systems, Inc. | Network interface device that sets an ECN-CE bit in response to detecting congestion at an internal bus interface |
US10585699B2 (en) | 2018-07-30 | 2020-03-10 | Apple Inc. | Methods and apparatus for verifying completion of groups of data transactions between processors |
US10719376B2 (en) | 2018-08-24 | 2020-07-21 | Apple Inc. | Methods and apparatus for multiplexing data flows via a single data structure |
US10789110B2 (en) | 2018-09-28 | 2020-09-29 | Apple Inc. | Methods and apparatus for correcting out-of-order data transactions between processors |
US10838450B2 (en) | 2018-09-28 | 2020-11-17 | Apple Inc. | Methods and apparatus for synchronization of time between independently operable processors |
JP6700564B1 (ja) * | 2018-12-28 | 2020-05-27 | 富士通クライアントコンピューティング株式会社 | 情報処理システム |
JP7419662B2 (ja) * | 2019-03-19 | 2024-01-23 | 富士フイルムビジネスイノベーション株式会社 | マルチプロセッサシステム |
EP4080844A4 (en) * | 2020-01-22 | 2022-12-21 | Huawei Technologies Co., Ltd. | PCIE-BASED DATA TRANSMISSION METHOD AND DEVICE |
EP4084423A4 (en) * | 2020-01-22 | 2023-01-11 | Huawei Technologies Co., Ltd. | METHOD AND DEVICE FOR DATA TRANSMISSION ON PCIE BASE |
US20210311871A1 (en) * | 2020-04-06 | 2021-10-07 | Samsung Electronics Co., Ltd. | System and method for aggregating server memory |
US20210013999A1 (en) * | 2020-06-04 | 2021-01-14 | Intel Corporation | Latency-Optimized Mechanisms for Handling Errors or Mis-Routed Packets for Computer Buses |
US11848980B2 (en) * | 2020-07-09 | 2023-12-19 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in a distributed computing system |
US20210224213A1 (en) * | 2021-03-19 | 2021-07-22 | Intel Corporation | Techniques for near data acceleration for a multi-core architecture |
WO2023004229A1 (en) | 2021-07-18 | 2023-01-26 | Elastics.cloud, Inc. | Composable infrastructure enabled by heterogeneous architecture, delivered by cxl based cached switch soc and extensible via cxloverethernet (coe) protocols |
TW202324986A (zh) | 2021-12-09 | 2023-06-16 | 韓商愛思開海力士有限公司 | 用於互連協定的錯誤處理的方法、控制器以及儲存裝置 |
CN117389693B (zh) * | 2023-12-12 | 2024-04-05 | 麒麟软件有限公司 | 一种硬件虚拟化***io层安全检测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1449526A (zh) * | 2000-08-30 | 2003-10-15 | 因芬尼昂技术股份公司 | 电子装置通用序列总线连接状态的辨识 |
TW200951730A (en) * | 2008-05-22 | 2009-12-16 | Ibm | System-on-chip (SOC), design structure and method |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6321282B1 (en) | 1999-10-19 | 2001-11-20 | Rambus Inc. | Apparatus and method for topography dependent signaling |
GB2368669B (en) * | 2000-10-31 | 2005-06-22 | Advanced Risc Mach Ltd | Integrated circuit configuration |
US7107362B2 (en) * | 2003-05-19 | 2006-09-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Integrated circuit with configuration based on parameter measurement |
JP4052265B2 (ja) * | 2004-03-05 | 2008-02-27 | 日本電気株式会社 | 情報処理装置とデバイスドライバのロード方法並びにプログラム |
TW200801952A (en) * | 2006-06-02 | 2008-01-01 | Via Tech Inc | Method for setting up a peripheral component interconnect express (PCIE) |
US7457900B2 (en) * | 2006-06-20 | 2008-11-25 | Intel Corporation | Method for discovering and partitioning PCI devices |
GB2452571A (en) | 2007-09-10 | 2009-03-11 | Advanced Risc Mach Ltd | Interconnect component generation within an integrated circuit |
CN101650670B (zh) | 2008-08-14 | 2013-01-09 | 鸿富锦精密工业(深圳)有限公司 | 可共享应用程序配置参数的电子***及其方法 |
BR112012001098A2 (pt) * | 2009-07-09 | 2015-09-01 | Crescendo Therapeutics Llc | Método de cicatrização de feridas e modulação de cicatriz |
TWI399647B (zh) * | 2009-10-15 | 2013-06-21 | Wistron Corp | 回復電腦系統之基本輸出入系統之方法及相關電腦系統 |
GB2496886A (en) | 2011-11-24 | 2013-05-29 | Melexis Technologies Nv | Determining network address of integrated circuit network node |
KR101894230B1 (ko) | 2013-12-23 | 2018-09-04 | 인텔 코포레이션 | 통합된 컴포넌트 인터커넥트 |
-
2013
- 2013-12-23 KR KR1020167013464A patent/KR101894230B1/ko active IP Right Grant
- 2013-12-23 JP JP2016532131A patent/JP6311164B2/ja active Active
- 2013-12-23 CN CN201380081348.1A patent/CN105793829B/zh active Active
- 2013-12-23 WO PCT/US2013/077512 patent/WO2015099660A1/en active Application Filing
- 2013-12-23 EP EP13900423.8A patent/EP3087495A4/en not_active Withdrawn
- 2013-12-23 US US15/038,582 patent/US10423552B2/en active Active
-
2019
- 2019-09-23 US US16/579,481 patent/US20200019522A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1449526A (zh) * | 2000-08-30 | 2003-10-15 | 因芬尼昂技术股份公司 | 电子装置通用序列总线连接状态的辨识 |
TW200951730A (en) * | 2008-05-22 | 2009-12-16 | Ibm | System-on-chip (SOC), design structure and method |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11811897B2 (en) | 2021-07-29 | 2023-11-07 | SK Hynix Inc. | Method for data processing of frame receiving of an interconnection protocol and storage device |
Also Published As
Publication number | Publication date |
---|---|
US10423552B2 (en) | 2019-09-24 |
KR101894230B1 (ko) | 2018-09-04 |
CN105793829A (zh) | 2016-07-20 |
KR20160074645A (ko) | 2016-06-28 |
US20160299860A1 (en) | 2016-10-13 |
EP3087495A1 (en) | 2016-11-02 |
JP6311164B2 (ja) | 2018-04-18 |
JP2017503238A (ja) | 2017-01-26 |
EP3087495A4 (en) | 2017-08-23 |
WO2015099660A1 (en) | 2015-07-02 |
US20200019522A1 (en) | 2020-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105793829B (zh) | 用于集成组件互连的装置、方法和*** | |
CN109154924B (zh) | 多个上行链路端口设备 | |
US20210303482A1 (en) | Sharing memory and i/o services between nodes | |
CN107077521B (zh) | 片上***配置元数据 | |
CN110262923B (zh) | 带内重定时器寄存器访问 | |
JP6147840B2 (ja) | ルートポート及びRPIE(RootPortIntegratedEndpoint)のレジューム時間を向上させるための方法、装置及びシステム | |
CN108614783B (zh) | 一致性协议表 | |
CN108604209B (zh) | 扁平化端口桥 | |
JP2017504089A5 (zh) | ||
CN112925735A (zh) | 易扩展管芯上结构接口 | |
CN108292267B (zh) | 用于配置装置的方法、***和设备 | |
CN111797040A (zh) | 多个协议层封装互连的虚拟链路状态 | |
JP2021090188A (ja) | ストリーミングファブリックインタフェース | |
CN107003838B (zh) | 解码信息库 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |