CN107077521A - 片上系统配置元数据 - Google Patents
片上系统配置元数据 Download PDFInfo
- Publication number
- CN107077521A CN107077521A CN201580063102.0A CN201580063102A CN107077521A CN 107077521 A CN107077521 A CN 107077521A CN 201580063102 A CN201580063102 A CN 201580063102A CN 107077521 A CN107077521 A CN 107077521A
- Authority
- CN
- China
- Prior art keywords
- calculation block
- meta data
- data file
- soc
- blocks
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- 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
-
- 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/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
识别拓扑元数据文件,其描述将被创建的片上系统(SoC)的拓扑,其中拓扑包括将由组构互连的多个计算块。对于多个计算块的每个计算块识别对应的计算块元数据文件,其中计算块元数据文件中的每个计算块元数据文件将描述对应的计算块的属性。解析拓扑元数据文件和计算块元数据文件以识别SoC的配置属性。基于配置属性生成SoC的中间表示。
Description
相关申请的交叉引用
本申请要求2014年12月20日提交的名称为“SYSTEM ON CHIP CONFIGURATIONMETADATA”的美国非临时专利申请No.14/578,418的权益和优先权,其通过引用整体结合在本文中。
技术领域
本公开涉及计算系统,并且具体地(但非排他地)涉及系统设计工具。
背景技术
半导体处理(processing)和逻辑设计的进步允许可以存在于集成电路设备上的逻辑的量的增加。作为推论,计算机系统配置已经从系统中的单个或多个集成电路演进为在单独集成电路上存在的多个核,多个硬件线程和多个逻辑处理器,以及集成在这类处理器内的其它接口。处理器或集成电路通常包括单个物理处理器管芯,其中处理器管芯可以包括任何数量的核,硬件线程,逻辑处理器,接口,存储器,控制器集线器等。
由于将更多的处理能力适应在更小的封装中的更大的能力,较小的计算设备在流行性方面已经增加。智能手机,平板电脑,超薄笔记本电脑和其它用户设备呈指数级增长。然而,这些较小的设备依赖于用于超过形状因数的数据存储和复杂处理的服务器。因此,高性能计算市场(即服务器空间)的需求也在增加。例如,在现代服务器中,通常不仅存在具有多个核的单个处理器,还存在用于增加计算能力的多个物理处理器(也称为多个套接口)。但随着处理能力随着计算系统中设备的数量的增长而增长,套接口和其它设备之间的通信变得更重要。
事实上,互连已经从主要处理电气通信的更传统的多点总线发展到促进快速通信的完全成熟的互连架构。不幸的是,随着对以甚至更高速率消耗的未来处理器的需求,对应的需求放在现有互连架构的能力上。
附图说明
图1示出包括互连架构的计算系统的实施例。
图2示出包括分层栈的互连架构的实施例。
图3示出在互连架构内要生成或接收的请求或分组的实施例。
图4示出用于互连架构的传送器和接收器对的实施例。
图5示出表示示例系统的简化框图。
图6示出表示包括使用拓扑和计算块元数据文件的示例设计工具的示例系统的简化框图。
图7A示出示例片上拓扑的至少部分的示例的表示。
图7B示出与图7B中所示的示例片上系统拓扑对应的拓扑元数据文件和计算块元数据文件之间的关系的表示。
图8A-8C是可以用于通过设计工具生成体现片上系统的中间表示的数据的示例元数据文件的部分。
图9示出包括多核处理器的计算系统的框图的实施例。
图10示出计算系统的框图的另一实施例。
在各种附图中的相同的附图标记和名称指示相同的元件。
具体实施方式
在下面的描述中,阐述了许多具体细节,例如具体类型的处理器和系统配置、具体硬件结构、具体架构和微架构细节、具体寄存器配置,具体指令类型、具体系统组件、具体测量/高度、具体处理器管线阶段(stage)和操作等的示例,以便提供对本发明的透彻理解。然而,对于本领域技术人员将显而易见的是,这些具体细节不需要被采用来实施本发明。在其它实例中,众所周知的组件或方法,例如具体和备选处理器架构,用于描述的算法的具体逻辑电路/代码,具体固件代码,具体互连操作,具体逻辑配置,具体制造技术和材料,具体编译器实现,处于代码形式的算法的具体表达,具体功率下降和门控技术/逻辑以及计算机系统的其它具体操作细节没有详细地描述以便避免不必要地模糊本发明。
尽管可以参考具体集成电路中的(诸如计算平台或微处理器中的)能量节约和能量效率来描述以下实施例,但是其它实施例可应用于其它类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于也可以从更好的能量效率和能量节约中受益的其它类型的电路或半导体设备。例如,所公开的实施例不限于桌上型计算机系统或Ultrabooks™。并且还可以用在其它设备中,例如手持设备,平板电脑,其它薄型笔记本电脑,片上系统(SOC)设备以及嵌入式应用。手持设备的一些示例包括蜂窝电话,因特网协议设备,数字照相机,个人数字助理(PDA)和手持PC。嵌入式应用通常包括微控制器,数字信号处理器(DSP),片上系统,网络计算机(NetPC),机顶盒,网络集线器,广域网(WAN)交换机或可以执行以下教导的功能和操作的任何其它系统。此外,本文描述的装置,方法和系统不限于物理计算设备,而是还可以涉及对于能量节约和效率的软件优化。如在下面的描述中将变得显而易见的,本文描述的方法,装置和系统(无论是参考硬件,固件,软件还是其组合)的实施例对于与性能考量相平衡的“绿色技术”未来至关重要。
随着计算系统进步,其中的组件变得更复杂。因此,在组件之间耦合和通信的互连架构在复杂度方面也在增加,以确保满足最佳组件操作的带宽要求。此外,不同的细分市场需求互连架构的不同方面,以适合市场的需要。例如,服务器需要更高的性能,而移动生态系统有时能够为了功率节省而牺牲整体性能。然而,在最大功率节省的情况下提供最高可能的性能是大多数组构的单一目的。下面讨论了多个互连,其会潜在地受益于本文所描述的本发明的方面。
一种互连组构架构包括外设组件互连(PCI)Express(PCIe)架构。 PCIe的主要目标是要使来自不同供应商的组件和设备能够在跨越多个细分市场(客户端(桌上型和移动型),服务器(标准和企业)以及嵌入式和通信设备)的开放架构中进行互操作。PCI Express是对于各种各样的未来计算和通信平台定义的高性能,通用I/O互连。一些PCI属性(例如其使用模型,加载存储架构和软件接口)已经通过其修订进行了维护,而先前的并行总线实现已被高度可缩放的完全串行接口所替代。PCI Express的最新版本利用了点到点互连,基于交换机的技术和分组化协议的进步以递送新级别的性能和特征。功率管理,服务质量(QoS),热插拔/热切换支持,数据完整性和错误处理在由PCI Express支持的一些高级特征中。
参考图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是外设组件互连Express(PCIe或PCIE)互连层级中的根集线器,根复合体(complex)或根控制器。控制器集线器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/DVDROM,监视器,打印机,鼠标,键盘,路由器,便携式存储设备,火线设备,通用串行总线(USB)设备,扫描仪和其它输入/输出设备。通常在PCIe术语中,例如设备,被称为端点。虽然没有具体示出,但是设备125可以包括PCIe到PCI/PCI-X桥接器以支持传统或其它版本PCI设备。PCIe中的端点设备通常被分类为传统,PCIe或根复合体集成端点。
图形加速器130还通过串行链路132耦合到控制器集线器115。在一个实施例中,图形加速器130耦合到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和131的接口可以表示为通信协议栈200。作为通信协议栈的表示也可以被称为实现/包括协议栈的模块或接口。
PCI Express使用分组来在组件之间传递信息。分组形成在事务层205和数据链路层210中,以将信息从传送组件携带到接收组件。当传送的分组流过其它层时,它们会被扩展有处理在那些层的分组必需的附加信息。在接收侧,发生反向处理,并且分组从其物理层220表示变换到数据链路层210表示,并且最终(对于事务层分组)变换为可由接收设备的事务层205处理的形式。
事务层
在一个实施例中,事务层205要在设备的处理核和诸如数据链路层210和物理层220的互连架构之间提供接口。在这方面,事务层205的主要责任是分组的组装和拆装(即事务层分组或TLP)。转换层205通常管理TLP的基于信用(credit)的流控制。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(即标识号或分组号)、计算并应用错误检测码(即CRC 212)并将修改的TLP提交到物理层220,以用于跨物理到外部设备的传送。
物理层
在一个实施例中,物理层220包括逻辑子块221和电气子块222以物理地将分组传送到外部设备。这里,逻辑子块221负责物理层221的“数字”功能。在这方面,逻辑子块包括准备用于通过物理子块222的传送的传出信息的传送部分和在将接收的信息传递到链路层210之前识别和准备接收的信息的接收部分。
物理块222包括传送器和接收器。传送器由逻辑子块221供应符号,传送器将其串行化并传送到外部设备。接收器提供有来自外部设备的串行化符号,并将接收的信号变换为位流。位流被去串行化并提供给逻辑子块221。在一个实施例中,采用8b/10b传送码,其中传送/接收十位符号。这里,使用特殊符号来使具有帧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。链路可以支持一个通道-每个通道表示差分信号对集合(一对用于传送,一对用于接收)。为了缩放带宽,链路可以聚合由xN表示的多个通道,其中N是任何支持的链路宽度,例如1、2、4、8、12、16、32、64或更宽。
差分对指用于传送差分信号的两条传送路径,例如线路416和417。作为示例,当线路416从低电压电平切换到高电压电平(即上升沿)时,线路417从高逻辑电平驱动到低逻辑电平(即下降沿)。差分信号潜在地展示出更好的电气特性,例如更好的信号完整性,即交叉耦合、电压过冲/下冲、振铃(ringing)等。这允许更好的定时窗口,其实现更快的传送频率。
传统的互连架构,包括PCI和PCIe,大量围绕传统计算设备(例如个人计算机(PC))的范例进行开发和标准化,其中芯片到芯片连接,即插即用和组件化架构是规范。更新的技术已经强调了通过智能手机、上网本、膝上型计算机和在市场上补充(complimenting)台式计算机的平板电脑的更小,更多移动计算。给定移动计算设备的减小的尺寸和紧致的形状因数,个人计算机已经变得更少模块化。在过去,替换图形卡、存储器和其它组件是相对常见的,访问或升级智能手机、平板电脑或其它这类设备的组件是不常见的。实际上,在一些市场中,预期的是,当需要升级时,拥有者购入或以其它方式使用全新的设备替换先前的设备,其中在过去的几年中,拥有者可能已经尝试通过升级单独组件来延长设备的生命期。在许多现代系统中,计算硬件正从模块化模型迁移到集成模型,其中多个组件集成在单板或片上系统(SoC)上。
一些人相信,朝向集成的趋势可能使包括现有的互连架构的传统的I/O技术过时,因为I/O技术开发的目的从实现芯片到芯片连接转移到实现SoC知识产权( IP)块(或“计算块”)集成。IP块可以指可重用的逻辑单元、电路或芯片布局。SoC可以包括多个IP块(包括相同IP块的多个实例)。在一些实例中,IP块可以支持在一些情况下由IP块中包括的一个或多个设备来促进的多个功能。
SoC和对应的I/O解决方案可以在各种不同的计算设备(包括平板电脑、电话和其它低成本的嵌入式平台)中提供,但是也可以提供到当前和下一代PC、服务器系统(除了其它示例之外)。诸如SoC的计算系统可以采用多个集成设备,例如多个IP块。在一些实现中,计算系统可以提供诸如通过操作系统或基本I/O系统(BIOS)的运行时间配置。例如,在启动时,BIOS可以访问寄存器(例如,各种设备的基地址寄存器(BAR)),并初始化和测试系统组件。然后,BIOS可以基于其初始化操作将信息传递到操作系统。
组构代理的寄存器可以被映射到存储器位置。例如,组构代理的寄存器可以驻留在存储器映射空间、I/O映射空间、配置空间等的任何一个中。在存储器映射空间中,地址字段可以是由BAR 号字段指示的BAR内的偏移。在一些实例中,取决于设备的BAR大小,对代理的存储器映射空间的访问可以是16位或48位地址之一。边带上的代理的BAR号可以或可以不匹配主接口上的其BAR。对于I/O映射空间,地址字段可以是由BAR号字段指示的BAR内的偏移,并且可以或可以不匹配主接口上的其BAR。在配置空间中,地址字段可以指示寄存器偏移,并且可以是16位地址字段(除了其它示例实现)。
设备驱动器可以使用由操作系统提供的API来访问设备的配置空间。可以通过将设备映射到系统的I/O端口地址空间或存储器映射地址空间来实现设备寻址。系统的固件、设备驱动器或操作系统可以对BAR进行编程以通过向控制器写配置命令来通知设备其地址映射。在一些情况下,在系统复位时,设备可以处于非活动状态,并且仍没有将地址指派到它们,操作系统或设备驱动器可以通过该地址与它们进行通信。在一些情况下,在引导系统时,可以利用BIOS或操作系统向设备的BAR指派地址(除了其它示例)。
在一些实现中,片上系统组构架构可以被定义用于互连SoC中的块。该组构可以提供标准化接口以使IP块能够跨CPU、平台控制器集线器(PCH)和SoC产品共享。这可以允许基于具体的市场需要跨一系列CPU、PCH和SoC产品重用IP块。符合该组构的IP块可作为代理连接到该组构。代理的主接口可以包括提供信息到组构以用于主接口上的流控制以及事务的仲裁和解码的主控制信号。主控制接口上的信息可以由组构使用,并且有时可以由组构转发到组构目标接口。主接口还可以利用命令和数据信号。这些信号上的信息可以由组构转发到所选的目标代理的目标命令和数据接口。除了命令和数据接口外,目标接口还具有控制接口,其可以在组构目标接口和代理目标接口之间携带流控制和解码信息。
组构可以定义要用于确定事务的目标的解码阶段。解码阶段用于确定事务的目标。组构可以使用解码阶段将由特定事务要求的信用与由解码目标可用的信用关联,并且当在命令阶段中已经授权事务时,将输入信号指引到解码的目标。可以支持多事务解码选项,包括源解码、组构解码、目标解码和减法解码的一个或多个。
在一些实现中可以支持源解码。通过源解码,组构可以呈现有事务的最终目的地的信息。接收事务的组构不需要解码命令以识别预计目标。解码的信息可以经由目的地ID字段来输送。如果代理实现源解码,则代理可以对目标进行解码,并使用其主控制和命令接口上的目的地ID字段向组构呈现此信息。可以在请求阶段发送目的地信息,以使组构请求仲裁器能够在看到命令之前进行路由选择决定。组构可以使用此信息将事务路由到目的地。
在多跳组构中,此信息可以跨组构携带到最终组构(在其上附连最后目标)。例如,识别的目的地可以由下一个组构用作“源解码”信息以路由事务,而不必再次解码它们。例如,上级组构可以在目标命令接口上将目的地ID呈现给下一跳组构。如果目的地代理附连在当前组构下面的另一个组构上,则可以将事务向下转发到另一组构,等等,直到到达最终目标(在最终组构上的)。
在一些实现中也可以支持组构解码。在一个示例中,点对点连接、基于组构的解码是隐含的。在多对一组构中,许多代理都具有相同的目标也可以是隐含的。然而,如果目标不是隐含已知的,则组构可以首先识别对应的事务命令以便执行解码。例如,组构可以通过使用特殊的示出命令协议来获取命令信息,其中代理将其命令属性(例如,传出事务的命令属性)暴露给组构,而不从其队列中卸载命令。备选地,代理可以接受到存储转发缓冲器的整个事务,其赋予组构对命令的访问。在任一情况下,组构可以维持附连的目标代理的所有配置寄存器的镜像或影子副本,以使组构执行解码。机制(影子寄存器通过其被编程)可以是组构具体的。例如,可以通过使用边带消息接口探听到代理的配置事务以在配置和枚举期间收集所要求的信息,或通过使用其它组构具体的机制来编程影子寄存器。
在一些实现中,组构可以基于目标的总线、设备和功能号(以及在一些情况下,目标的根空间标识符)来识别目标。为了解码涉及桥接器的事务,组构可以附加维持桥接器的辅助和从属总线号寄存器的影子副本。实际上,组构可以维持端点代理的BAR的影子副本、桥接器的基址寄存器和界限寄存器以及其它寄存器,例如存储器空间使能(MSE)、IO空间使能(IOSE)、功率管理功率状态和代理的功能电平复位(FLR)寄存器(除了其它示例)。
目标解码也可以由组构用来解码事务。通过目标解码,每个目标可以对于其自己的事务实现解码器,并且此能力可以由该组构用于基于目标的解码。如果目标解码控制信号由组构断言(assert),则代理对事务进行解码,并且稍后在N个时钟周期后断言命中或未命中(如果它是事务的目标)。目标解码的优点是通过对组构逻辑的最小改变来支持组构代理添加或除去的能力,尽管在一些情况下可以添加附加的延迟以完成解码周期。
转到图5,示出了简化的框图500,其示出了可用在SoC和SoC组构的开发中的示例系统。可以提供能够例如使用硬件描述语言(HDL)生成SoC的设计抽象的SoC设计工具505。为了简化SoC设计工具505的使用,并且使用SoC设计工具505来简化组构的设计和配置,可以提供元数据管理器510以与SoC设计工具505对接并且维持定义潜在多个SoC设计的子组件的固定属性的元数据520、525。还可以提供解码信息库515,其包括可以包括在并且用在由SoC设计工具505生成的特定组构定义的生成中。
SoC设计工具505可以呈现有描述SoC的组件的拓扑和特征的信息。该信息可以包括可能由SoC的互连组构要求的解码信息,以对要连接到该组构的各种IP块(和相关事务)进行解码。可以提供附加的细节来描述组构和IP块之间的接口,包括每个IP块支持的虚拟信道、由这些信道的每个支持的事务和事务大小、接口的数据总线宽度、接口的地址总线宽度(除了其它信息)。此信息可以用作用于确定(例如,自动使用SoC设计工具505的逻辑)用于SoC的最小缓冲器大小设置的基础,其将支持要包括在SoC中的IP块的组合。SoC设计工具505可以利用此信息来确定和生成SoC的模型(例如,在SoC的设计时间期间)。例如,该模型可以是描述具有用于保证具有期望的拓扑和IP块组合的SoC的功能性的最小配置的SoC的HDL模型。另外的信息也可以呈现给SoC设计工具,用于微调这类最小功能模型。例如,SoC设计工具505可以消耗描述单独IP块(或IP块的功能)的性能要求、质量服务要求、带宽特性和其它属性的附加信息。SoC设计工具505可用于自动调整SoC的配置(即,从确定的最小配置向上)以满足这些附加属性。
在之前系统中,在能够生成功能SoC模型的SoC设计工具已经可用的程度上,提供描述SoC拓扑的基础信息以及每个包括的IP块的特性已经是手动过程。例如,人类用户组可以定义数百行SoC特性,并将其作为对SoC设计工具的输入来提供。这可能是非常昂贵和耗时的任务。此外,手动定义SoC特性冒排印错误、不一致定义以及损害工作效果的其它人为错误的风险。
在一个实现中,可以提供系统来定义描述可重用的信息束或元数据(描述多个不同IP块的特性)的文件。可以识别选择元数据文件,所述元数据文件对应于已被选择用于包括在SoC内的特定IP块的实例。可以定义附加的元数据,所述元数据描述要采用用于SoC的具体拓扑。这类拓扑元数据可以链接到IP块元数据文件,以描述可由SoC设计工具505消耗以生成元数据文件中描述的SoC的功能配置的模型的完整的机器可解析信息集合。
解码信息也可以是预定义的,并且可以提供给解码信息库(例如,515),其可以同样由SoC设计工具505连同元数据文件一起消耗,以生成在元数据文件中描述的特定SoC的软件模型。解码信息可以包括可能由最后组构要求的任何信息以将要连接到组构的各种IP块(以及相关事务)解码。在一些实现中,解码信息和解码信息库515可以采用命名为“Decode Information Library”并且 2014年12月22日提交的美国专利申请序号No.14/579,565中描述的一个或多个特征,所述美国专利申请通过引用整体结合在本文中。
在一些实现中,SoC设计工具505可以包括一个或多个处理器542、一个或多个存储器元件544以及在软件和/或硬件中实现的附加组件,诸如配置工具546、元数据访问接口548 、HDL生成器550和解码库接口552。配置工具546可以消耗IP块元数据520和SoC拓扑元数据525文件,并且可以解析文件以识别期望的SoC的特性并且从这些提取的特性生成模型。IP块元数据520可以包括用于解码信息库515中对应于给定IP块的信息540的链接。在一些实例中,IP块元数据可以包括解码信息。实际上,解码信息条目540在一些实例中可以源于IP块元数据文件520。
可以提供一个或多个存储库来托管元数据文件520、525和/或解码信息条目540。可以提供API(例如,与元数据访问接口548和解码库接口552相联系)以允许配置工具546访问和利用元数据文件并解码对应于IP块的被识别用于到组构的连接的信息条目。实际上,可以访问SoC拓扑元数据文件525并且可以解析其以识别要包括在所提出的SoC中的IP块集合。配置工具546(或SoC设计工具505的另一组件)然后可以识别和检索对应于识别的IP块的IP块元数据文件520和/或解码信息条目540。配置工具546可以解析此数据以识别组构的另外特性。HDL生成器550可以利用此信息作为用于生成SoC的工作配置、其IP块和组构的模型的输入。在一些情况下,可以将该模型提供为体现在可用于定义预硅(pre-silicon)SoC的一个或多个HDL对象中的SoC设计的抽象。
在数字电路设计中,HDL可以定义电路和片上系统的设计抽象,以建模电子电路的结构、设计和操作,包括电路系统,诸如会在组构或SoC中实现的。HDL可以实现电子电路的精确正规的描述,其允许建模电路的自动分析、模拟和模拟测试。HDL对象或“程序”可以由用在生成由HDL对象建模的实际电路中的制造工具消耗。例如,可以将HDL程序编译(例如,使用工具505或另一工具)成物理电子组件的较低级规范,例如用于制造一个或多个建模的集成电路的掩模。一些SoC设计工具(例如,505)可以基于提供给它的输入来自动生成HDL对象,该输入对应于要在SoC上实现的功能性和设备,包括其组构。可以使用HDL来编写硬件的可执行规范,并且可以提供可以实现HDL对象内的语言语句的基础语义的工具,以向硬件设计者(或设计工具)提供在对应一件硬件(例如, SoC)被物理上创建之前(例如,在硅中)对其进行建模的能力。
在一个示例中,SoC设计工具505(例如,使用配置工具546或HDL生成器550)可以生成寄存器传输级(RTL)HDL对象。RTL是设计抽象,其可以根据硬件寄存器之间的数字信号(数据)流和对这些信号执行的逻辑运算来对同步数字电路建模。RTL可在一些HDL中用于创建电路的高级表示,从其中可以导出较低级表示和最终的实际布线。RTL HDL对象可以对包括寄存器和组合逻辑的电路元件进行建模。寄存器(例如,作为触发器实现的)可以将电路的操作与时钟信号的边沿同步,并且实现电路的存储器性质。组合逻辑可以提供电路中的逻辑功能(例如,如通过对应的逻辑门实现的)(除了其它示例)。电子设计自动化(EDA)工具可以消耗通过HDL对象提供的描述,以将对象转换成等效的硬件实现文件,用于设计和制造对应的(例如SoC的)集成电路。
在一些示例中,可以提供元数据编辑器530以允许用户或组织为特定的SoC拓扑和/或IP块定义元数据。元数据编辑器530可以包括一个或多个处理器554、一个或多个存储器元件556以及以硬件和/或软件中实现的用于实现元数据编辑器530的功能性的附加组件。这类组件可以包括例如编辑器558和用于允许用户与编辑器558对接的图形用户界面(GUI)560。在一些实例中,元数据编辑器530的多个实例可以被提供给多个IP块供应商,以允许供应商为他们生产的每个IP块定义IP块元数据文件。在其它实例中,元数据编辑器530可以被提供为服务,诸如允许各种实体访问和利用元数据编辑器530来创建、编辑和修改用于对应IP块的IP块元数据文件520的基于web或SOA服务。元数据编辑器530还可以用于允许一个或多个用户经由GUI 560与编辑器558交互以定义SoC拓扑元数据文件525。
在一些实现中,可以提供解码信息编辑器535,以允许用户与解码信息库515对接、定义解码信息以与组构的特定实例中的IP块关联以及甚至编辑解码信息540。例如,可以定义特定IP块和一个或多个库条目之间的关联、可以编辑库条目、可以生成新条目(包括定制条目)(除了其它任务)。在一个示例中,库编辑器535可以包括一个或多个处理器设备562、一个或多个存储器元件564并且可以提供实现在软件和/或硬件中的一个或多个组件,其促进库编辑器535的功能性。例如可以提供编辑器566来编辑或生成库条目(除了其它功能性)。此外,可以提供允许用户与解码信息库515交互的图形用户界面(GUI)568。
转到图6,示出了简化框图600,其示出包括SoC设计工具505、元数据管理器服务器510和解码信息库服务器515的示例系统。如上面注意到的,可重用的元数据文件(例如,520、525)和解码信息条目540可以从各种源(例如,605、610、615、620)创建。例如,可以规划要结合由一个或多个不同供应商提供的若干不同IP块的一个或多个实例的SoC。例如,可以由负责提供对应的IP块A的第一实体(对应于源610)来定义和提供(例如,通过网络)IP块元数据文件520a。类似的IP块元数据文件520b、520c、 520d可以由负责提供对应的IP块B、C和D的其它源615、620提供。在一些情况下,单个实体和源(例如,620)可以提供多个IP块(例如,块B和C )和对应的元数据文件(例如,520c、520d)。源和实体可以使用元数据编辑器的实例生成其IP块元数据文件。元数据文件520a-d可以被提供用于元数据存储库625中的访问和重用,或者可以在递送时间与对应的IP块捆绑。例如,IP块的许多特性可以是静态的,包括与配置SoC相关的那些特性。此外,多个SoC和其它系统可以利用相同IP块的实例。此外,这些各种系统可以全部由设计工具505建模。因此,可以使用相同的IP块元数据文件来生成两个不同系统的两个相异模型,所述两个不同的系统碰巧采用与IP块元数据文件对应的相同IP块的实例。
如上面注意到的,在一些实现中,SoC的组构可以被配置成支持事务的运行时间解码以及在SoC上实现的IP块的对应配置空间。在这些和其它示例中,解码信息库515还可以由设计工具505用于生成SoC的HDL模型,其结合连接到要在SoC上实现的组构的IP块的特定集合。在一些情况下,IP块元数据可以包括对该IP块上实现的设备和功能具体的解码信息。在一些实现中,可以查询解码信息库515以确定包括在特定IP块元数据文件(例如,520a-c)中的解码信息是否已经包括在库515中。在一些情况下,包括在IP块元数据文件(例如,520a-c)中的解码信息可以被提取以在解码信息库515中生成新的对应条目。IP块元数据文件可以包括到库中的条目的指针,所述条目结合与在IP块元数据文件中描述的IP块相关的解码信息。实际上,在一些情况下,IP块元数据文件(例如,520d)可以简单地指向解码信息库515中的现有条目540(代替描述在IP块元数据文件(例如,520d )的主体内相关的解码信息)。在任一实例中,设计工具505可以以编程方式识别映射到要包括在特定SoC设计中的IP块元数据文件和对应的IP块的适当的解码信息条目540。解码信息条目可以与IP块元数据文件一起使用,以生成SoC的功能版本的HDL模型。
也可以对于SoC的特定实现来定义SoC拓扑元数据文件525。例如,用户可以利用运行元数据编辑器的实例的个人计算设备705来定义描述期望的SoC的拓扑的SoC拓扑元数据文件525。这类元数据文件也可以是可重用的(例如,对于类似的SoC的不同版本),并且可以由SoC设计工具连同IP块元数据文件520和解码信息条目540一起使用以生成SoC的HDL模型。SoC拓扑元数据文件525可以定义要在SoC中包括哪些IP块、要用于互连IP块的组构和组构设备以及描述总体SoC拓扑的其它更高级细节。例如,SoC拓扑元数据可以识别覆盖端口的类型、组构中缓冲器的大小(例如,高于功能性要求的最小值)、PCI设备(和/或功能)号、IP块不应该置于其上的组构的具体端口号(例如,在其中组构使用在其仲裁方案中使用端口号(例如,较高端口号对应于较高优先级的情况下)的实例中)、信道映射信息(例如,定义IP块的信道如何映射到组构/系统信道、P2P信息(例如,除了系统存储器之外,定义哪些IP可以与其它IP对话))、作为组构的减法端口的端口的标识、解码器位置信息、组构段(segment)的内部数据路径宽度(除了其它信息)。
转到图7A,示出了简化框图700a,其表示SoC 705拓扑的简化示例。在此说明性示例中,可以使用可以实现一个或多个组构元件的两个组构设备710、715来实现组构,用于在IP块720a、720b、725、730、735a、735b之间的路由选择事务。例如,在图7A的示例中所示的拓扑中,IP块A(720a)、IP块B(725)、IP块C(730)和IP块D(735)可以各连接到组构设备A(710)的相应端口。IP块A(720b)的另一实例和IP块D(735b)的另一实例可以连接到组构设备B(715)的相应端口。另外,该组构可以提供到在SoC外部的其它设备的连接(例如,在端口740处)以及到包含到CPU和DRAM的连接的相干组构的连接。
如图7B的简化框图700b中所示的,可以定义SoC拓扑元数据文件525以描述图7A中所示的示例拓扑。此外,元数据文件520a-f集合可以被识别并且与SoC拓扑元数据文件一起使用,以组织定义SoC的配置需要的所有信息,其会满足用于提供SoC功能版本的最小要求。在一些实现中,SoC拓扑元数据文件525可以识别要包括在SoC中的IP块的每个,并且进一步提供到对应于IP块集合的IP块元数据文件520a-f的链接。
每个IP块(例如,720a、720b、725、730、735a、735b)可以连接到组构的相应端口。每个端口接口可以与要附连到端口的IP块对应的IP块元数据关联。IP块元数据可以包括设备信息,例如由IP块接口支持的信道数量(例如,虚拟信道)、所支持的事务的类型、信道事务类型组合的每个所支持的最大事务大小、数据总线宽度和接口的地址总线宽度(除了其它示例)。例如,IP块元数据可以包括与IP块如何执行信道映射、IP块支持的总线接口可选信号、允许总线宽度配置的强制信号的宽度等等有关的信息。例如,可以使用此信息来确定每信道大小最大值以及该组构的最小缓冲器大小设置。
用于IP块的IP块元数据还可以引用或提供解码信息库中的一个或多个条目,并且所引用的解码信息条目同样可以与该端口关联。在一些实例中,库解码信息的每个条目可以对应于由IP设备支持的相应功能。所述功能可以包括协议内的定义的功能。IP块还可以包括一个或多个相异的设备,每个设备配置成支持一个或多个相应的功能。例如,可以为支持基于PCI协议的组构定义所定义的PCI/PCIe功能集合。
各种不同的IP块可以包括用于执行一个或多个相同功能的电路和逻辑,并且每个可以与对应的解码信息库条目关联。因此,可以至少部分地通过定义为与IP块的对应元数据文件中的IP块关联的指定解码信息条目来定义IP块的功能。解码信息可以包括诸如所支持的功能的事务类型,关联的配置空间的特性(例如,对应的BAR)以及其它功能信息的信息。此信息可以由SoC设计工具用于定义组构的配置,使得可以支持涉及IP块的事务的解码。例如,解码信息可以用于定义在组构中的存储器和/或触发器的供应以容纳对应设备的影子或镜像寄存器或要连接到端口的IP块的功能(除了其它示例)。
例如,每个条目可以包括组构对特定设备解码事务会需要的所有解码信息。换句话说,每个条目可以对应于相应的预定义设备。各种IP块可以各实现相同的设备,并且从而利用在解码信息库中的相同的对应条目。备选地,每个解码信息库条目可以对应于预定义功能集合中的一个。例如,可以为支持基于PCI协议的组构定义所定义的PCI/PCIe功能集合。各种不同的IP块可以包括用于执行一个或多个相同功能的电路和逻辑,并且每个可以与对应的解码信息库条目关联。
例如,特定IP块,IP块“A”可以是由特定实体提供的块,并且块可以被配置成在定义的功能集合内执行两个相异的功能。因此,对应的IP块元数据可以识别对应于由IP块“A”支持的两个功能中的第一个功能的第一解码信息库条目,并且还可以识别与第二功能对应的另一预定义解码信息条目。第一解码信息条目可以包括在用于对该功能的事务进行解码的组构的特定实现中会需要的所有解码信息。类似地,另一条目可以包括足够的解码信息的集合,以允许组构对第二功能的事务进行解码。
在一些情况下,相同IP块的多个实例可以包括在单个SoC中。IP块的每个实例(例如,720a、720b和735a、735b)可以由相同的IP块元数据文件来描述,并且可以引用解码库中相同的两个解码信息条目,使得IP块的每个实例要连接到的相应的端口与在IP块元数据文件中描述或引用的设备信息和解码信息关联。因此,SoC设计工具可以简单地访问相同的IP块元数据文件,并为IP块的每个实例解码信息库,而不是独立为IP块的每个实例手动定义信息和解码信息。
如图7A中所示的,可以提供诸如路由器的组构设备710、715,并且每个都可以连接到多个IP块。在一些实现中,SoC设计工具可以开发单独IP块设备与它们连接到的组构设备的配置属性之间的层级关联。例如,层级的一个分支可以对应于设备组构A 710和连接到该组构的该部分的IP块720a、725、730、735a集合。组构设备710的端口可以与连接到其的相应IP块(例如,720a、725、730或735a)的配置信息关联。因此,组构设备710的配置可以基于IP块720a、725、730、735a的集合。同样地,组构设备715可以连接到其自己的IP块(例如,720b、735b)集合,并且组构设备715的配置可以基于对于来自对应的IP块元数据文件的IP块720b、735b的集合识别的配置信息集合。更进一步,一些组构设备(例如,710、715)可以连接到一个或多个其它组构设备。在这类实例中,到另一组构设备的连接可以使一个组构设备的配置信息的至少一部分与其它组构设备递归地关联。例如,从解码的角度来看,在层级的顶部(即最靠近CPU)的组构可以利用与在层级的其它段上的其它IP块有关的信息。此信息可以跨组构段递归地继承,使得一个组构段上的IP块可以将数据发送到另一个段上的IP块,并使它们成功地到达其目的地(例如,通过确保信道映射、信道计数、事务大小和其它信息跨组构传播)。
如上面注意到的,包括在对应的IP块元数据文件中的IP块的配置属性可以提供足够的信息来定义使建模的SoC进入最小功能条件必需的SoC的最小缓冲器设置和其它设置。在一些实现中,IP块元数据文件可以包括描述对应IP块的其它特性的还有的附加信息。作为示例,可以识别IP块的性能和服务质量(QoS)目标。例如,IP块元数据可以识别要保证或为IP块供应的持续带宽的量、具体的延迟保证(除了其它示例)。这些附加的配置属性可以由SoC设计工具用来改进对从包括在对应元数据文件中的其它属性确定的SoC的操作版本的最低要求。
在一些实例中,可以要求IP块元数据文件和拓扑元数据文件包括基线信息量,使得可以使用SoC设计工具对SoC的最小操作版本进行建模。在一些实现中,属性(例如各种IP块的性能和QoS属性)和拓扑可以是可选的,因为它们为SoC设计工具提供允许SoC生成超过最低功能配置的模型的属性。在一些实例中,用于描述所提出的SoC的任何元数据文件可以被编辑(例如由授权的实体或用户)来提供单独IP块、组构或拓扑的附加属性。由于确定了新的属性,这可以允许迭代地改进SoC设计,其中SoC设计工具基于通过附加信息修改的元数据文件集合生成SoC模型的新版本。
转到图8A-8C,为了示出一个或多个示例的目的而呈现一个或多个示范元数据文件的部分800a-c。例如,图8A中的部分800a可以示出SoC拓扑元数据文件的一部分。拓扑元数据文件可以符合SoC拓扑元数据文件的定义的语法,使得可以将拓扑元数据文件提供给SoC设计工具并由其解析以从拓扑元数据中确定SoC拓扑。在这类示例中,元数据文件可以被创建并且起源于各种不同源,只要它们采用SoC设计工具的支持的语法集合中的一个。
继续图8A的示例,此示例中所示的SoC拓扑元数据文件的部分800a可以包括设计者期望包括在规划的SoC的拓扑中的IP块(例如,“pcie”、“cunit”、“p2sb”、“spi”、“pmc”)和组构组件(例如,“psfl”、“psf2”)的定义。元数据文件还可以定义组件之间的关系和连接。例如,根据在此特定实现中采用的语法,SoC设计工具可以解析元数据以识别该组构设备“psfl”连接到“psf2”,以及IP块“pcie”连接到“psfl”以及IP块“cunit”、“p2sb”、“spi”和“pmc”连接到“psf2”。此外,还可以在SoC拓扑元数据中指定更高级(例如,SoC或组构级别)属性。作为示例,拓扑元数据可以指定功能或设备标识符,以便唯一地识别设备/功能组合的多个实例。例如,所期望的SoC的互连可以采用基于总线、设备和功能号的组合的命名参数。通过SoC拓扑元数据文件,可以在一些实现中定义(并修改)这些命名属性。
对于要包括在SoC中的每个指定的IP块(或组构设备),SoC拓扑元数据可以识别组件的类型。可以为每种类型的组件提供对应的IP块元数据文件,使得块的类型的名称可以由SoC设计工具用来识别和访问对应的IP块元数据文件,以基于包括在IP块元数据文件中的信息来配置组构的对应的端口。例如,IP块“spi”可以是“SPI”类型、块“cunit”可以是“CUNIT”类型、IP块“pcie”可以是“SPA”类型。换句话说,每个命名的块可以是IP块类的实例(例如,“pcie”是IP块类型“SPA”的实例)。例如,可以为块类型“SPA”识别IP块元数据文件,并且IP块元数据文件可以由SoC设计工具用于IP块实例“pcie”。 SoC拓扑元数据,例如图8A中所示的,还可以指定IP块的信道要如何映射。例如,可以定义IP块“PCIe”以将其信道映射到名为“VCOb”的信道、IP块“psfl”可以被约束成映射到信道“VCOb”和“VClb”的两个信道,等等。没有信道映射条目的条目可以将其信道映射到默认信道(除了其它示例)。
转到图8B,示出针对类型“SPA_01”的IP块的IP块元数据文件的部分800b。IP块元数据文件可用于定义对应IP块实例的属性。IP块元数据文件可以根据由SoC设计工具可解析的语法,使得IP块实例的属性可以由SoC设计工具自动识别。所描述的属性可以包括例如IP块的接口的信道(例如,虚拟信道)数量(例如,如由属性NUMCHAN定义的)、IP块支持的最大有效载荷大小(例如,Ma_Payload_Size属性)、每个新道的每个请求类型的长度(例如,描述信道0上的已发布类型请求的最大长度的CHO_P_MSTDATALENMax属性等)的示例(除了其它示例)。
IP块元数据文件可以包括对对应IP块的设备和/或功能的解码信息的引用。在一些实现中,IP块元数据文件可以包括对解码信息库中的预定义条目的引用或到其的链接。在其它实例中,IP块元数据文件可以包括解码信息的版本。实际上,包括在IP块元数据文件中的解码信息可以充当源(新条目从其中定义并被添加到解码信息库)。每个条目都可以被引用并重用于支持相同对应特征的其它IP块(除了其它示例)。在图8B的示例中,参数FunctionList可以定义由元数据的对应的IP块类型的实例支持的功能。例如,在图8B 的示例中,IP块类型“SPA_01”的实例可以支持功能“SPA_01_2”、“SPA_01_1”和“SPA_01_0”。 SoC设计工具在解析“SPA_01”IP块的实例的IP块元数据数据文件的此部分时,可以识别三个支持的功能,并尝试识别这些功能的解码信息是否已经包括在解码信息库的条目和/或IP块元数据文件的主体中。然后,SoC设计工具可以引用此解码信息来确定支持与如由对应的IP块实例提供的与这些功能有关的事务的解码的SoC的另外特性。
在本示例中,如图8C中所示的,“SPA_01”IP块的一个或多个功能的解码信息可以被包括在对应的IP块元数据文件中。例如,图8C中所示的部分800c可以是功能“SPA_01_01”的解码信息的一部分。如所示的,解码信息可以包括用在支持功能的事务的解码的信息。例如,解码信息可以描述BAR大小和类型、偏移、支持的报头类型、支持的事务(即,已经使能的)(除了其它细节)。
注意,上面描述的装置、方法和系统可以在如前面提到的任何电子设备或系统中实现。作为具体说明,下面的附图提供了用于利用如本文所描述的本发明的示范系统。由于下面的系统被更详细地描述,所以从上面的讨论中公开、描述和重考虑了多个不同的互连。并且如容易显而易见的,上面描述的进步可以应用于那些互连,组构或架构的任何一个中。
参考图9,描绘了包括多核处理器的计算系统的框图的实施例。处理器900包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)或用于执行代码的其它设备。在一个实施例中,处理器900包括至少两个核–核901和902,其可以包括不对称核或对称核(所示实施例)。然而,处理器900可以包括可以是对称的或不对称的任何数量的处理元件。
在一个实施例中,处理元件指用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽(slot)、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或任何其它元件,其能够保持处理器的状态,例如执行状态或架构状态。换句话说,在一个实施例中,处理元件指能够独立地与代码(例如软件线程、操作系统、应用或其它代码)关联的任何硬件。物理处理器(或处理器套接口)通常指集成电路,其可以潜在地包括任何数量的其它处理元件,例如核或硬件线程。
核通常指位于能够维持独立架构状态的集成电路上的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源关联。与核相比,硬件线程通常指位于能够维持独立架构状态的集成电路上的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可以看到的,当某些资源被共享并且其它资源专用于架构状态时,硬件线程和核的命名法之间的线重叠。还通常,操作系统将核和硬件线程视为单独的逻辑处理器,其中操作系统能够在每个逻辑处理器上单独调度操作。
如图9中所示的物理处理器900,包括两个核-核901和902。这里,核901和902被认为是对称核,即具有相同配置、功能单元和/或逻辑的核。在另一个实施例中,核901包括无序处理器核,而核902包括有序处理器核。然而,核901和902可以从任何类型的核(例如本地核、软件管理的核、适应于执行本机指令集架构(ISA)的核、适应于执行转换的指令集架构(ISA)的核、共同设计的核或其它已知的核)中单独地选择。在异构核环境(即非对称核)中,某种形式的转换(例如二进制转换)可被利用来在一个或两个核上调度或执行代码。还为了推动讨论,下面进一步详细描述了核901中示出的功能单元,因为核902中的单元以在所描绘的实施例中的类似的方式操作。
如所描绘的,核901包括两个硬件线程901a和901b,其也可以被称为硬件线程槽901a和901b。因此,在一个实施例中,诸如操作系统的软件实体潜在地将处理器900视为四个独立的处理器,即能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器901a关联、第二线程与架构状态寄存器901b关联、第三线程可以与架构状态寄存器902a关联并且第四线程可以与架构状态寄存器902b关联。这里,如上面所描述的,架构状态寄存器(901a、901b、902a和902b)的每个可以被称为处理元件、线程槽或线程单元。如所示的,架构状态寄存器901a在架构状态寄存器901b中复制,所以能够为逻辑处理器901a和逻辑处理器901b存储单独架构状态/上下文。在核901中,也可以为线程901a和901b复制其它较小的资源,例如分配器和重命名器块930中的指令指针和重命名逻辑。一些资源,例如重排序/引退单元935中的重排序缓冲器、ILTB 920、加载/存储缓冲器和队列可以通过分区共享。其它资源,例如通用内部寄存器、一个或多个页表基址寄存器、低级数据高速缓存和数据-TLB 915、一个或多个执行单元940以及无序单元935的部分是潜在完全共享的。
处理器900通常包括其它资源,其可以被完全共享、通过分区共享或由处理元件专用或专用于处理元件。在图9中,示出了具有处理器的说明性逻辑单元/资源的纯粹示范处理器的实施例。注意到,处理器可以包括或省略这些功能单元中的任何一个,以及包括未描绘的任何其它已知的功能单元、逻辑或固件。如所示的,核901包括简化的、代表性的无序(ooo)处理器核。但是,可以在不同的实施例中利用有序处理器。该ooo核包括用于预测要执行/采取的分支的分支目标缓冲器920,以及用于存储用于指令的地址转换条目的指令转换缓冲器(I-TLB)920。
核901还包括耦合到获取单元920的用于对获取的元件进行解码的解码模块925。在一个实施例中,获取逻辑包括分别与线程槽901a、901b关联的单独定序器。通常,核901与第一ISA关联,第一ISA定义/指定在处理器900上可执行的指令。作为第一ISA的一部分的机器代码指令通常包括指令的一部分(称作操作码),其引用/指定要执行的指令或操作。解码逻辑925包括从其操作码辨别这些指令的电路,并将解码的指令传递到管线中以用于如由第一ISA定义的处理。例如,如下面更详细地讨论的,在一个实施例中,解码器925包括设计成或适应于辨别诸如事务性指令的具体指令的逻辑。作为通过解码器925辨别的结果,架构或核901采取具体的预定义动作来执行与适当指令关联的任务。重要的是注意到,可以响应于单个或多个指令来执行本文描述的任何任务、块、操作和方法;其中一些可以是新的或旧的指令。注意在一个实施例中,解码器926辨别相同的ISA(或其子集)。备选地,在异构核环境中,解码器926辨别第二ISA(第一ISA的子集或相异的ISA)。
在一个示例中,分配器和重命名器块930包括分配器来保留资源,诸如用于存储指令处理结果的寄存器文件。然而,线程901a和901b潜在地能够进行无序执行,其中分配器和重命名器块930还保留其它资源,例如用于跟踪指令结果的重排序缓冲器。单元930还可以包括寄存器重命名器,以将程序/指令参考寄存器重命名到处理器900内部的其它寄存器。重排序/引退单元935包括诸如上面提到的重排序缓冲器、加载缓冲器和存储缓冲器的组件以支持无序执行及之后无序执行的指令的有序引退。
在一个实施例中,调度器和一个或多个执行单元块940包括用于在执行单元上调度指令/操作调度器单元。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元关联的寄存器文件以存储信息指令处理结果。示范执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其它已知执行单元。
较低级数据高速缓存和数据转换缓冲器(D-TLB)950耦合到一个或多个执行单元940。数据高速缓存要存储对元件(例如数据操作数)的最近使用/操作,其潜在地保持在存储器相干性状态。 D-TLB要存储最近的虚拟/线性到物理地址转换。作为具体示例,处理器可以包括用于将物理存储器分解成多个虚拟页的页表结构。
这里,核901和902共享对较高级或进一步超出高速缓存的访问,例如与片上接口910关联的第二级高速缓存。注意到,较高级或进一步超出指高速缓存级别增加或从进一步远离一个或多个执行单元。在一个实施例中,较高级的高速缓存是处理器900上的存储器层级中的末级数据高速缓存-末级高速缓存,例如第二级或第三级数据高速缓存。然而,较高级的高速缓存并不这样限制,因为它可以与指令高速缓存关联或包括指令高速缓存。追踪高速缓存-一种类型的指令高速缓存 -替代地可以在解码器925之后耦合以存储最近解码的追踪。这里,指令潜在地指可以解码成多个微指令(微操作)的宏指令(即由解码器辨别的通用指令)。
在所描绘的配置中,处理器900还包括片上接口模块910。历史上,下面更详细描述的存储器控制器已被包括在处理器900外部的计算系统中。在此情形中,片上接口910要与处理器900外部的设备进行通信,诸如系统存储器975、芯片组(通常包括连接到存储器975的存储器控制器集线器和用于连接外设设备的I/O控制器集线器)、存储器控制器集线器、北桥或其它集成电路。并且在此情形中,总线905可以包括任何已知的互连,诸如多点总线、点对点互连、串行互连、并行总线、相干(例如高速缓存相干)总线、分层协议架构、差分总线和GTL总线。
存储器975可以专用于处理器900或与系统中的其它设备共享。存储器975的常见类型的示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其它已知的存储设备。注意到,设备980可以包括耦合到存储器控制器集线器的图形加速器、处理器或卡、耦合到I/O控制器集线器的数据存储装置、无线收发器、闪存设备、音频控制器、网络控制器或其它已知的设备。
然而,近来,随着更多的逻辑和设备集成在诸如SOC的单个管芯上,这些器件的每个可以结合在处理器900上。例如在一个实施例中,存储器控制器集线器在与处理器900相同的封装上和/或管芯上。这里,核(核上部分)910的一部分包括用于与其它设备(例如存储器975或图形设备980)进行对接的一个或多个控制器。包括用于与这类设备对接的控制器和互连的配置通常被称为核上配置(或非核配置)。作为示例,片上接口910包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路905。然而,在SOC环境中,诸如网络接口、协处理器、存储器975、图形处理器980和任何其它已知的计算机设备/接口的甚至更多设备可以被集成在单个管芯或集成电路上以提供具有高功能性和低功耗的小的形状因数。
在一个实施例中,处理器900能够执行编译器、优化和/或转换器代码977来编译、转换和/或优化应用代码976以支持本文描述的装置和方法或与其进行对接。编译器通常包括用于将源文本/代码转换为目标文本/代码的程序或程序集合。通常,使用编译器编译程序/应用代码在多个阶段和程(pass)中完成,以将高级编程语言代码变换为低级机器或汇编语言代码。单程编译器还仍然可被利用于简单编译。编译器可以利用任何已知的编译技术并执行任何已知的编译器操作,例如词法分析、预处理、解析、语义分析、代码生成、代码变换和代码优化。
较大的编译器通常包括多个阶段,但是这些阶段更通常包括在两个通用阶段中:(1)前端,即通常可以发生语法处理、语义处理和一些变换/优化的地方,以及( 2)后端,即通常发生分析、变换、优化和代码生成的地方。一些编译器指中间,它示出编译器的前端和后端之间的模糊描述。因此,对编译器的插入、关联、生成或其它操作的引用可以在前面提到的阶段或者程的任何一个以及编译器的任何其它已知的阶段或程中发生。作为说明性示例,编译器潜在地将操作、调用、功能等插入编译的一个或多个阶段中,例如在编译的前端阶段中插入调用/操作,并且然后在变换阶段将调用/操作变换为较低级代码。注意到,在动态编译期间,编译器代码或动态优化代码可以插入这类操作/调用,以及优化代码供在运行时间期间执行。作为具体的说明性示例,可以在运行时间期间动态优化二进制代码(已编译代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。
类似于编译器,诸如二进制转换器的转换器静态地或动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码的执行或其它软件环境的引用可以指:(1)一个或多个编译程序、优化代码优化器或转换器的执行以动态或静态地编译程序代码、维持软件结构、执行其它操作、优化代码或转换代码;(2)包括操作/调用的主程序代码(例如已优化/编译的应用代码)的执行;(3)与主程序代码关联的其它程序代码(例如库)的执行,以维持软件结构、执行其它软件相关操作或优化代码;或(4)其组合。
接下来转向图10,描绘了根据本发明的片上系统(SOC)设计的实施例。作为具体的说明性示例,SOC 1000包括在用户设备(UE)中。在一个实施例中,UE指要由终端用户用于进行通信的任何设备,例如手持电话、智能电话、平板电脑、超薄笔记本、具有宽带适配器的笔记本或任何其它类似的通信设备。通常,UE连接到基站或节点,其本质上潜在地对应于GSM网络中的移动台(MS)。
这里,SOC 1000包括2个核-1006和1007。类似于上面的讨论,核1006和1007可以符合指令集架构,例如基于Intel®架构Core™的处理器、Advanced Micro Devices,Inc.(AMD)处理器、基于MlPS的处理器、基于ARM的处理器设计或其客户以及其被许可方或采用方。核1006和1007耦合到与总线接口单元1009和L2高速缓存1011关联的高速缓存控制1008以与系统1000的其它部分通信。互连1010包括片上互连,诸如IOSF、AMBA或潜在地实现本文描述的一个或多个方面的上面讨论的其它互连。
接口1010向其它组件提供通信信道,诸如用于与SIM卡对接的订户身份模块(SIM)1030、用于保持引导代码供核1006和1007执行以初始化和引导SOC 1000的引导rom 1035、用于与外部存储器(例如DRAM 1060)对接的SDRAM控制器1040、用于与非易失性存储器(例如,闪存1065)对接的闪存控制器1045、用于与外设对接的外设控制器1050(例如串行外设接口)、用于显示和接收输入(例如,触摸使能输入)的视频接口1025和视频编解码器1020、用于执行图形相关计算的GPU 1015等。这些接口的任何一个可以结合本文描述的本发明的方面。
另外,该系统示出了用于通信的外设,例如蓝牙模块1070、3G调制解调器1075、GPS1085和WiFi 1085。注意到,如上面陈述的,UE包括用于通信的无线电设备。因此,这些外设通信模块不是全部要求的。然而,在UE中,要包括用于外部通信的某种形式的无线电。
虽然已经关于有限数量的实施例描述了本发明,但是本领域技术人员将意识到其中的许多修改和变化。所附权利要求预计涵盖落入此本发明的真实精神和范围内的所有这类修改和变化。
设计可以经历从创建到模拟到制造的各种阶段。表示设计的数据可以以多种方式表示设计。首先,如在模拟中有用的,硬件可以使用硬件描述语言(HDL)或另一功能描述语言来表示。另外,具有逻辑和/或晶体管门的电路级模型可以在设计过程的一些阶段产生。此外,在某一阶段大多数设计达到表示硬件模型中的各种设备的物理放置的数据级别。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定用于生产集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。
在一些实现中,基于软件的硬件模型以及HDL和其它功能描述语言对象可以包括寄存器传输语言(RTL)文件(除了其它示例)。这类对象可以是机器可解析的,使得设计工具可以接受HDL对象(或模型)、为了所描述的硬件的属性而解析HDL对象并且从对象确定物理电路和/或片上布局。设计工具的输出可用于制造物理设备。例如,设计工具可以确定来自HDL对象的各种硬件和/或固件元件的配置,例如总线宽度、寄存器(包括尺寸和类型)、存储器块、物理链路路径、组构拓扑(除了会实现以实现HDL对象中建模的系统的其它属性)。设计工具可以包括用于确定片上系统(SoC)和其它硬件设备的拓扑和组构配置的工具。在一些实例中,HDL对象可以用作用于开发可以由制造设备用于制造所描述的硬件的模型和设计文件的基础。实际上,HDL对象本身可以被提供作为制造系统软件的输入以引起所描述的硬件。
在设计的任何表示中,数据可以以任何形式的机器可读介质存储。诸如盘的存储器或磁存储器或光存储装置可以是机器可读介质,其用于存储信息,所述信息经由调制或以其它方式生成以用于传送此类信息光波或电波传送。当传送指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重传送的程度上,进行新的复制。因此,通信提供商或网络提供商可以至少暂时在有形机器可读介质上存储体现本公开的实施例的技术的诸如编码到载波中的信息的物品。
如本文所使用的模块指硬件,软件和/或固件的任何组合。作为示例,模块包括与用于存储适应于由微控制器执行的代码的非暂时介质关联的诸如微控制器的硬件。因此,在一个实施例中,对模块的引用指硬件,其被特别配置成辨别和/或执行要在非暂时介质上保持的代码。此外,在另一个实施例中,模块的使用指包括代码的非暂时介质,其特别适应于由微控制器执行以执行预定操作。并且如可以推断的,在又一个实施例中,术语模块(在此示例中)可以指微控制器和非暂时介质的组合。通常单独示出的模块边界通常变化并潜在地重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器的硬件或诸如可编程逻辑设备的其它硬件。
在一个实施例中,短语“配置成”的使用指将装置、硬件、逻辑或元件布置、放在一起、制造、提供以销售、导入和/或设计以执行指定或确定的任务。在此示例中,未操作的装置或其元件仍“配置成”执行指定的任务(如果其被设置,耦合和/或互连以执行所述指定的任务)。作为纯粹的说明性示例,逻辑门可以在操作期间提供0或1。但是,“配置成”向时钟提供使能信号的逻辑门不包括可以提供1或0的每一个潜在逻辑门。替代地,逻辑门是以某种方式耦合的逻辑门(在运行期间,1或0输出要使能时钟)。再次注意,术语“配置成”的使用不要求操作,而是替代地聚焦于装置、硬件和/或元件的潜在状态,其中在潜在状态下,装置、硬件和/或元件设计成在装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,短语“到”,“能够/能够以”,“可操作以”的使用指以使能以指定的方式使用装置,逻辑,硬件和/或元件的这类方式设计的某一装置,逻辑,硬件和/或元件。注意如上面所述,在一个实施例中“到”,“能够”,“可操作以”的使用指装置,逻辑,硬件和/或元件的潜在状态,其中装置,逻辑,硬件和/或元件没有操作,而是以使能以指定的方式使用装置的这类方式设计。
如本文所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑的值的使用也称为l和0,它们简单地表示二进制逻辑状态。例如,1指高逻辑电平、0指低逻辑电平。在一个实施例中,诸如晶体管或闪存单元的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其它表示。例如,十进制数十也可以表示为二进制值1010和十六进制字母A。因此,值包括能够被保持在计算机系统中的信息的任何表示。
此外,状态可以由值或值的部分表示。作为示例,诸如逻辑1的第一值可以表示默认或初始状态,而第二值(例如逻辑0)可以表示非默认状态。另外,在一个实施例中,术语复位和设置分别指默认和更新的值或状态。例如,默认值潜在地包括高逻辑值,即复位,而更新的值潜在地包括低逻辑值,即设置。注意到,值的任何组合可被利用来表示任何数量的状态。
上面阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在由处理元件可执行的机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现。非暂时机器可访问/可读介质包括提供(即,存储和/或传送)以由机器(诸如计算机或电子系统)可读的形式信息的任何机制。例如,非暂时机器可访问介质包括随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保持从暂时(传播的)信号(例如载波,红外信号,数字信号)接收的信息的其它形式的存储设备;等,它们要与可以从其中接收信息的非暂时介质区分。
用于编程逻辑以执行本发明的实施例的指令可以存储在系统中的存储器内,诸如DRAM,高速缓存,闪存或其它存储装置。此外,指令可以经由网络或通过其它计算机可读媒体来分发。因此,机器可读介质可以包括用于存储或传送以由机器(例如,计算机)可读的形式的信息的任何机制,但不限于,软盘、光盘、光盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪存或用在经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)通过因特网的信息的传送中的有形的机器可读存储装置。因此,计算机可读介质包括适合用于存储或传送以由机器(例如,计算机)可读的形式的电子指令或信息的任何类型的有形机器可读介质。
以下示例涉及根据本说明书的实施例。一个或多个实施例可以提供装置、系统、机器可读存储装置、机器可读介质、基于硬件和/或基于软件的逻辑以及用于识别拓扑元数据文件的方法,其中拓扑元数据文件要描述要被创建的片上系统(SoC)的拓扑,并且拓扑要包括要由组构互连的多个计算块;对于多个计算块的每个识别对应的计算块元数据文件,其中计算块元数据文件的每个要描述对应的计算块的属性;解析拓扑元数据文件和计算块元数据文件以识别SoC的配置属性,并且基于配置属性生成SoC的中间表示。
在至少一个示例中,所识别的计算块元数据文件的每个识别解码信息库中的一个或多个条目,并且条目描述用于解码涉及对应的计算块的事务的信息。
在至少一个示例中,解码信息库包括多个条目。
在至少一个示例中,每个条目描述功能的配置空间的属性和功能的一个或多个支持的事务。
在至少一个示例中,配置空间包括相应的基地址寄存器(BAR)。
在至少一个示例中,属性包括BAR的类型和大小。
在至少一个示例中,中间表示要结合一个或多个影子寄存器以基于在与特定计算块关联的特定计算块元数据文件中识别的特定解码信息库条目来促进涉及多个计算块的特定计算块的事务的解码。
在至少一个示例中,要解析特定计算块元数据文件以识别对特定解码信息库条目和与中间表示的生成关联的特定解码信息库条目的引用。
在至少一个示例中,属性包括计算块的一个或多个的性能目标。
在至少一个示例中,属性包括由对应的计算块支持的信道的数量。
在至少一个示例中,属性包括对于由对应的计算块支持的信道的每个支持的最大有效载荷大小。
在至少一个示例中,属性包括对应的计算块的总线宽度。
在至少一个示例中,计算块元数据文件的至少第一计算块元数据文件来自第一源,第一计算块元数据文件对应于多个计算块中的第一计算块,第一计算块由与第一源关联的第一实体提供,计算块元数据文件的至少第二计算块元数据文件来自不同的第二源,第二计算块元数据文件对应于多个计算块的第二计算块,并且第二计算块由与第二源关联的第二实体提供。
在至少一个示例中,第一和第二计算块元数据文件各包括相应的文本数据,并且两者都根据用于计算块元数据文件的定义的语法。
在至少一个示例中,中间表示要在SoC上建模缓冲器大小,并且属性要用于确定SoC上的最小缓冲器大小设置。
在至少一个示例中,中间表示包括具有保证SoC的功能版本的配置的模型。
在至少一个示例中,中间表示包括硬件定义语言对象。
在至少一个示例中,多个计算块包括特定计算块的至少两个实例,并且公共计算块元数据文件要用于识别特定计算块的两个实例的每个的配置属性。
一个或多个实施例可以提供包括一个或多个处理器设备、一个或多个存储器元件、多个计算块元数据文件的存储库的系统,其中计算块元数据文件的每个描述多个计算块的对应计算块的属性,以及片上系统(SoC)设计工具。 SoC设计工具可以识别拓扑元数据文件,其中拓扑元数据文件描述要被创建的片上系统(SoC)的拓扑,并且拓扑要包括要由组构互连的多个计算块的子集。所述SoC设计工具还可以:对于多个计算块的每个计算块,识别多个计算块元数据文件中的对应计算块元数据文件;解析所述拓扑元数据文件和识别的计算块元数据文件以识别SoC的配置属性,以及基于配置属性生成SoC的中间表示。
整个本说明书中对“一个实施例”或“实施例”的引用意味着联系实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,整个本说明书的各种地方的短语“在一个实施例中”或“在实施例中”的出现不一定都指代相同的实施例。此外,特定特征、结构或特性可以以任何适合的方式组合在一个或多个实施例中。
在前述说明书中,已经参考具体示范实施例给出了详细描述。然而,将明显的是,在不脱离如所附权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图要被视为是以说明性意义而不是限制性意义。此外,实施例和其它示范语言的前述使用不一定指代相同的实施例或相同的示例,而是可以指代不同和相异的实施例并且潜在指代相同实施例。
Claims (21)
1.一种计算机可读介质,包括代码,所述代码当执行时将使计算设备:
识别拓扑元数据文件,其中所述拓扑元数据文件将描述将被创建的片上系统(SoC)的拓扑,并且所述拓扑将包括将由组构互连的多个计算块;
对于所述多个计算块中的每个计算块,识别对应的计算块元数据文件,其中所述计算块元数据文件中的每个计算块元数据文件将描述所述对应的计算块的属性;
解析所述拓扑元数据文件和所述计算块元数据文件,以便识别所述SoC的配置属性;以及
基于所述配置属性生成所述SoC的中间表示。
2.根据权利要求1所述的介质,其中所述识别的计算块元数据文件的每个识别解码信息库中的一个或多个条目,并且所述条目描述用于解码涉及所述对应的计算块的事务的信息。
3.根据权利要求2所述的介质,其中所述解码信息库将包括多个条目。
4.根据权利要求3所述的介质,其中每个条目描述功能的配置空间的属性和所述功能的一个或多个支持的事务。
5.根据权利要求4所述的介质,其中所述配置空间包括相应的基地址寄存器(BAR)。
6.根据权利要求5所述的介质,其中所述属性包括所述BAR的类型和大小。
7.根据权利要求2所述的介质,其中所述中间表示将结合一个或多个影子寄存器,以便基于在与所述特定计算块关联的特定计算块元数据文件中识别的特定解码信息库条目来促进涉及所述多个计算块中的特定计算块的事务的解码。
8.根据权利要求7所述的介质,其中将解析所述特定计算块元数据文件以识别对所述特定解码信息库条目和与所述中间表示的生成关联的所述特定解码信息库条目的引用。
9.根据权利要求1所述的介质,其中所述属性包括所述计算块中的一个或多个计算块的性能目标。
10.根据权利要求1所述的介质,其中所述属性包括由对应的计算块支持的信道的数量。
11.根据权利要求10所述的介质,其中所述属性包括对于由所述对应的计算块支持的所述信道中的每个信道支持的最大有效载荷大小。
12.根据权利要求1所述的介质,其中所述属性包括所述对应的计算块的总线宽度。
13.根据权利要求1所述的介质,其中所述计算块元数据文件的至少第一计算块元数据文件来自第一源,所述第一计算块元数据文件对应于所述多个计算块中的第一计算块,所述第一计算块由与所述第一源关联的第一实体提供,所述计算块元数据文件的至少第二计算块元数据文件来自不同的第二源,所述第二计算块元数据文件对应于所述多个计算块中的第二计算块,并且所述第二计算块由与所述第二源关联的第二实体提供。
14.根据权利要求13所述的介质,其中所述第一和第二计算块元数据文件各包括相应的文本数据,并且两者都根据用于计算块元数据文件的定义的语法。
15.根据权利要求1所述的介质,其中所述中间表示将在所述SoC上建模缓冲器大小,并且所述属性将用于确定所述SoC上的最小缓冲器大小设置。
16.根据权利要求15所述的介质,其中所述中间表示包括具有用于保证所述SoC的功能版本的配置的模型。
17.根据权利要求1所述的介质,其中所述中间表示包括硬件定义语言对象。
18.根据权利要求1所述的介质,其中所述多个计算块包括特定计算块的至少两个实例,并且公共计算块元数据文件将用于识别所述特定计算块的所述两个实例中的每个实例的配置属性。
19.一种方法,包括:
识别拓扑元数据文件,其中所述拓扑元数据文件描述将被创建的片上系统(SoC)的拓扑,并且所述拓扑将包括将由组构互连的多个计算块;
对于所述多个计算块中的每个计算块,识别对应的计算块元数据文件,其中所述计算块元数据文件中的每个计算块元数据文件描述所述对应的计算块的属性;
解析所述拓扑元数据文件和所述计算块元数据文件以识别所述SoC的配置属性;以及
基于所述配置属性生成所述SoC的中间表示。
20.一种系统,包括:
用于识别拓扑元数据文件的部件,其中所述拓扑元数据文件描述将被创建的片上系统(SoC)的拓扑,并且所述拓扑将包括将由组构互连的多个计算块;
用于对于所述多个计算块中的每个计算块,识别对应的计算块元数据文件的部件,其中所述计算块元数据文件中的每个计算块元数据文件描述所述对应的计算块的属性;
用于解析所述拓扑元数据文件和所述计算块元数据文件以识别所述SoC的配置属性的部件;以及
用于基于所述配置属性生成所述SoC的中间表示的部件。
21.一种系统,包括:
一个或多个处理器设备;
一个或多个存储器元件;
多个计算块元数据文件的存储库,其中所述计算块元数据文件中的每个计算块元数据文件描述多个计算块的对应计算块的属性;
一种片上系统(SoC)设计工具,用于:
识别拓扑元数据文件,其中所述拓扑元数据文件描述将被创建的片上系统(SoC)的拓扑,并且所述拓扑将包括将由组构互连的所述多个计算块的子集;
对于所述多个计算块中的每个计算块,识别所述多个计算块元数据文件中的对应计算块元数据文件;
解析所述拓扑元数据文件和所述识别的计算块元数据文件以识别所述SoC的配置属性;以及
基于所述配置属性生成所述SoC的中间表示。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/578,418 US9727679B2 (en) | 2014-12-20 | 2014-12-20 | System on chip configuration metadata |
US14/578418 | 2014-12-20 | ||
PCT/US2015/062030 WO2016099812A1 (en) | 2014-12-20 | 2015-11-21 | System on chip configuration metadata |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107077521A true CN107077521A (zh) | 2017-08-18 |
CN107077521B CN107077521B (zh) | 2021-08-24 |
Family
ID=56127297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580063102.0A Active CN107077521B (zh) | 2014-12-20 | 2015-11-21 | 片上系统配置元数据 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9727679B2 (zh) |
EP (1) | EP3234813A4 (zh) |
CN (1) | CN107077521B (zh) |
WO (1) | WO2016099812A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112005211A (zh) * | 2018-04-18 | 2020-11-27 | 赛灵思公司 | 用于异构片上系统的软件定义多域创建和隔离 |
CN114826907A (zh) * | 2022-04-22 | 2022-07-29 | 西安广和通无线通信有限公司 | PCIe的RC和EP模式切换方法、装置、设备和介质 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9699079B2 (en) * | 2013-12-30 | 2017-07-04 | Netspeed Systems | Streaming bridge design with host interfaces and network on chip (NoC) layers |
US9727679B2 (en) * | 2014-12-20 | 2017-08-08 | Intel Corporation | System on chip configuration metadata |
US10157160B2 (en) * | 2015-06-04 | 2018-12-18 | Intel Corporation | Handling a partition reset in a multi-root system |
US9990327B2 (en) | 2015-06-04 | 2018-06-05 | Intel Corporation | Providing multiple roots in a semiconductor device |
US9864828B1 (en) * | 2015-09-17 | 2018-01-09 | Xilinx, Inc. | Hardware acceleration device handoff for using programmable integrated circuits as hardware accelerators |
US9697320B2 (en) * | 2015-09-24 | 2017-07-04 | Qualcomm Incorporated | Rectilinear macros having non-uniform channel spacing |
US10331846B2 (en) * | 2015-12-30 | 2019-06-25 | Arteris, Inc. | Dynamic link serialization in network-on-chip |
US10235486B2 (en) | 2016-09-29 | 2019-03-19 | Intel Corporation | Method, apparatus and system for automatically deriving parameters for an interconnect |
US10255399B2 (en) * | 2016-10-31 | 2019-04-09 | Intel Corporation | Method, apparatus and system for automatically performing end-to-end channel mapping for an interconnect |
US20180232468A1 (en) * | 2017-02-16 | 2018-08-16 | Wipro Limited | METHODS AND SYSTEMS FOR TIMING CONSTRAINT GENERATION IN IP/SoC DESIGN |
US10599442B2 (en) | 2017-03-02 | 2020-03-24 | Qualcomm Incorporated | Selectable boot CPU |
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 |
US10755013B1 (en) * | 2018-11-13 | 2020-08-25 | Xilinx, Inc. | Automatic creation of high-level language callable library for a hardware core |
US11113176B2 (en) | 2019-01-14 | 2021-09-07 | Microsoft Technology Licensing, Llc | Generating a debugging network for a synchronous digital circuit during compilation of program source code |
US10810343B2 (en) | 2019-01-14 | 2020-10-20 | Microsoft Technology Licensing, Llc | Mapping software constructs to synchronous digital circuits that do not deadlock |
US11093682B2 (en) | 2019-01-14 | 2021-08-17 | Microsoft Technology Licensing, Llc | Language and compiler that generate synchronous digital circuits that maintain thread execution order |
US11106437B2 (en) | 2019-01-14 | 2021-08-31 | Microsoft Technology Licensing, Llc | Lookup table optimization for programming languages that target synchronous digital circuits |
US11275568B2 (en) * | 2019-01-14 | 2022-03-15 | Microsoft Technology Licensing, Llc | Generating a synchronous digital circuit from a source code construct defining a function call |
US11144286B2 (en) | 2019-01-14 | 2021-10-12 | Microsoft Technology Licensing, Llc | Generating synchronous digital circuits from source code constructs that map to circuit implementations |
US11550917B2 (en) * | 2019-06-28 | 2023-01-10 | Intel Corporation | Standardized interface for intellectual property blocks |
FR3103585B1 (fr) * | 2019-11-22 | 2023-04-14 | Stmicroelectronics Grand Ouest Sas | Procédé de gestion de la configuration d’accès à des périphériques et à leurs ressources associées d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant |
FR3103584B1 (fr) | 2019-11-22 | 2023-05-05 | St Microelectronics Alps Sas | Procédé de gestion du débogage d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant |
FR3103586B1 (fr) | 2019-11-22 | 2023-04-14 | St Microelectronics Alps Sas | Procédé de gestion du fonctionnement d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant |
CN111488723B (zh) * | 2020-04-01 | 2023-12-26 | 北京中电华大电子设计有限责任公司 | 一种基于脚本的soc芯片存储控制器自动化仿真验证方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188910A1 (en) * | 2001-06-08 | 2002-12-12 | Cadence Design Systems, Inc. | Method and system for chip design using remotely located resources |
US8090564B1 (en) * | 2003-11-03 | 2012-01-03 | Synopsys, Inc. | Automatic generation of transaction level bus simulation instructions from bus protocol |
US20130086296A1 (en) * | 2011-09-29 | 2013-04-04 | Sridhar Lakshmanamurthy | Providing Multiple Decode Options For A System-On-Chip (SoC) Fabric |
EP2626800A1 (en) * | 2012-02-09 | 2013-08-14 | Altera Corporation | Configuring a programmable device using high-level language |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020066088A1 (en) | 2000-07-03 | 2002-05-30 | Cadence Design Systems, Inc. | System and method for software code optimization |
US6757882B2 (en) | 2001-06-16 | 2004-06-29 | Michael Y. Chen | Self-describing IP package for enhanced platform based SOC design |
US6658633B2 (en) | 2001-10-03 | 2003-12-02 | International Business Machines Corporation | Automated system-on-chip integrated circuit design verification system |
US6941538B2 (en) | 2002-02-22 | 2005-09-06 | Xilinx, Inc. | Method and system for integrating cores in FPGA-based system-on-chip (SoC) |
US7769929B1 (en) | 2005-10-28 | 2010-08-03 | Altera Corporation | Design tool selection and implementation of port adapters |
DE102005055067A1 (de) | 2005-11-18 | 2007-05-24 | Robert Bosch Gmbh | Vorrichtung und Verfahren zum Beheben von Fehlern bei einem wenigstens zwei Ausführungseinheiten mit Registern aufweisenden System |
US7958479B2 (en) * | 2007-12-04 | 2011-06-07 | Alcatel-Lucent Usa Inc. | Method and apparatus for describing and testing a system-on-chip |
US7949915B2 (en) * | 2007-12-04 | 2011-05-24 | Alcatel-Lucent Usa Inc. | Method and apparatus for describing parallel access to a system-on-chip |
US7873068B2 (en) | 2009-03-31 | 2011-01-18 | Intel Corporation | Flexibly integrating endpoint logic into varied platforms |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US20150309808A1 (en) * | 2010-12-31 | 2015-10-29 | Morphing Machines Pvt Ltd | Method and System on Chip (SoC) for Adapting a Reconfigurable Hardware for an Application in Runtime |
US20130117232A1 (en) * | 2011-11-09 | 2013-05-09 | Microsoft Corporation | Snapshots of database models |
US9031909B2 (en) * | 2011-11-29 | 2015-05-12 | Microsoft Technology Licensing, Llc | Provisioning and/or synchronizing using common metadata |
US9436623B2 (en) | 2012-09-20 | 2016-09-06 | Intel Corporation | Run-time fabric reconfiguration |
US8719746B1 (en) | 2012-11-26 | 2014-05-06 | Lsi Corporation | Reduction of metal fill insertion time in integrated circuit design process |
US20140244932A1 (en) | 2013-02-27 | 2014-08-28 | Advanced Micro Devices, Inc. | Method and apparatus for caching and indexing victim pre-decode information |
US8839171B1 (en) | 2013-03-31 | 2014-09-16 | Atrenta, Inc. | Method of global design closure at top level and driving of downstream implementation flow |
EP3087495A4 (en) * | 2013-12-23 | 2017-08-23 | Intel Corporation | Integrated component interconnect |
US9699079B2 (en) * | 2013-12-30 | 2017-07-04 | Netspeed Systems | Streaming bridge design with host interfaces and network on chip (NoC) layers |
US9455706B2 (en) | 2014-06-24 | 2016-09-27 | Advanced Micro Devices, Inc. | Dual-rail encoding |
US9846660B2 (en) | 2014-11-12 | 2017-12-19 | Xilinx, Inc. | Heterogeneous multiprocessor platform targeting programmable integrated circuits |
US9727679B2 (en) | 2014-12-20 | 2017-08-08 | Intel Corporation | System on chip configuration metadata |
US20160179161A1 (en) | 2014-12-22 | 2016-06-23 | Robert P. Adler | Decode information library |
-
2014
- 2014-12-20 US US14/578,418 patent/US9727679B2/en active Active
-
2015
- 2015-11-21 WO PCT/US2015/062030 patent/WO2016099812A1/en active Application Filing
- 2015-11-21 EP EP15870613.5A patent/EP3234813A4/en not_active Withdrawn
- 2015-11-21 CN CN201580063102.0A patent/CN107077521B/zh active Active
-
2017
- 2017-08-07 US US15/670,317 patent/US20180060473A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188910A1 (en) * | 2001-06-08 | 2002-12-12 | Cadence Design Systems, Inc. | Method and system for chip design using remotely located resources |
US8090564B1 (en) * | 2003-11-03 | 2012-01-03 | Synopsys, Inc. | Automatic generation of transaction level bus simulation instructions from bus protocol |
US20130086296A1 (en) * | 2011-09-29 | 2013-04-04 | Sridhar Lakshmanamurthy | Providing Multiple Decode Options For A System-On-Chip (SoC) Fabric |
EP2626800A1 (en) * | 2012-02-09 | 2013-08-14 | Altera Corporation | Configuring a programmable device using high-level language |
CN103324511A (zh) * | 2012-02-09 | 2013-09-25 | 阿尔特拉公司 | 配置可编程设备的方法、可编程设备及机器可读存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112005211A (zh) * | 2018-04-18 | 2020-11-27 | 赛灵思公司 | 用于异构片上系统的软件定义多域创建和隔离 |
CN114826907A (zh) * | 2022-04-22 | 2022-07-29 | 西安广和通无线通信有限公司 | PCIe的RC和EP模式切换方法、装置、设备和介质 |
CN114826907B (zh) * | 2022-04-22 | 2023-08-11 | 西安广和通无线通信有限公司 | PCIe的RC和EP模式切换方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3234813A1 (en) | 2017-10-25 |
US20160180001A1 (en) | 2016-06-23 |
US20180060473A1 (en) | 2018-03-01 |
US9727679B2 (en) | 2017-08-08 |
EP3234813A4 (en) | 2018-08-15 |
WO2016099812A1 (en) | 2016-06-23 |
CN107077521B (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077521A (zh) | 片上系统配置元数据 | |
KR101815173B1 (ko) | 코히어런스 프로토콜 테이블 | |
CN105718390B (zh) | 共享存储器链路中的低功率进入 | |
CN105793829B (zh) | 用于集成组件互连的装置、方法和系统 | |
CN110036380A (zh) | 用于高速互连中低延迟的双模phy | |
CN104932996B (zh) | 用于控制链路接口的未使用硬件的功率消耗的方法、装置和系统 | |
CN107430567A (zh) | 共享缓冲存储器路由 | |
CN109154924A (zh) | 多个上行链路端口设备 | |
CN110262923A (zh) | 带内重定时器寄存器访问 | |
CN107430569A (zh) | 多芯片封装链路 | |
CN107003838B (zh) | 解码信息库 | |
CN108595355A (zh) | 用于测量电路的物理单元中的等待时间的方法、装置和系统 | |
CN109844725A (zh) | 点对点互连中的非对称通道 | |
CN107003971A (zh) | 用于高性能互连中的嵌入式流通道的方法、装置、系统 | |
US10120774B2 (en) | Coherence protocol tables | |
CN107112042A (zh) | 数据信号的边沿感知同步 | |
CN109643299A (zh) | 在具有现有tlp定义的pcie上的持久存储器写入语义 | |
CN108292267A (zh) | 总线-装置-功能地址空间的推测性枚举 | |
CN107005492B (zh) | 用于芯片上网络上的多播和缩减通信的系统 | |
CN107750476A (zh) | 边带导体谐振减轻 | |
CN109582998A (zh) | 小巧PCIe端点的根复合体集成端点仿真 | |
CN107078850A (zh) | 边带奇偶校验处理 | |
CN107003944B (zh) | 跨分布式存储器的指针追踪 | |
CN107111584A (zh) | 到片上网络的接口的高带宽核 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |