CN107003838A - 解码信息库 - Google Patents
解码信息库 Download PDFInfo
- Publication number
- CN107003838A CN107003838A CN201580063497.4A CN201580063497A CN107003838A CN 107003838 A CN107003838 A CN 107003838A CN 201580063497 A CN201580063497 A CN 201580063497A CN 107003838 A CN107003838 A CN 107003838A
- Authority
- CN
- China
- Prior art keywords
- entry
- decoded information
- calculation block
- identified
- medium according
- 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
- 238000004364 calculation method Methods 0.000 claims abstract description 33
- 230000006870 function Effects 0.000 claims description 73
- 230000015654 memory Effects 0.000 claims description 55
- 238000013461 design Methods 0.000 claims description 48
- 238000000034 method Methods 0.000 claims description 21
- 230000014509 gene expression Effects 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 7
- 230000002776 aggregation Effects 0.000 claims description 4
- 238000004220 aggregation Methods 0.000 claims description 4
- 238000003860 storage Methods 0.000 description 33
- 238000004891 communication Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 12
- 238000004519 manufacturing process Methods 0.000 description 10
- 239000000872 buffer Substances 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 239000004744 fabric Substances 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000005611 electricity Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000014616 translation Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000003032 molecular docking Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000012160 loading buffer Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000012536 storage buffer Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- -1 ILTB 920 Substances 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000009940 knitting Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000877 morphologic effect Effects 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- 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
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- 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
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/08—Intellectual property [IP] blocks or IP cores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Computer Networks & Wireless Communication (AREA)
- Bus Control (AREA)
Abstract
对于将针对互连结构定义的多个端口中的每一个而标识相应计算块以连接到端口。针对所标识的计算块中的每一个而标识解码信息库中的一个或多个条目。基于解码信息库中的所标识的条目而生成片上***的结构的中间表示。
Description
相关申请的交叉引用
本申请要求2014年12月22日提交的题为“DECODE INFORMATION LIBRARY”的美国非临时专利申请号14/579,565的权益和优先权,其通过引用并入本文。
技术领域
本公开关于计算***,并且特别地(但不排他地)涉及***设计工具。
背景技术
半导体处理和逻辑设计的进步已经允许可存在于集成电路设备上的逻辑的数量的增加。作为推论,计算机***配置已经从***中的单个或多个集成电路演变成存在于单独集成电路上的多个核、多个硬件线程和多个逻辑处理器以及集成在这样的处理器内的其它接口。处理器或集成电路典型地包括单个物理处理器管芯,其中处理器管芯可包括任何数量的核、硬件线程、逻辑处理器、接口、存储器、控制器中心等。
由于使更多处理能力适于较小的封装的更大能力,较小的计算设备已经在普及度方面增加。智能电话、平板电脑、超薄笔记本电脑和其它用户设备呈指数级增长。然而,这些较小的设备依赖于超过形状因子的用于数据存储和复杂处理两者的服务器。因此,高性能计算市场中的需求(即服务器空间)也已经增加。例如,在现代服务器中,典型地不仅存在具有多个核的单个处理器,而且存在多个物理处理器(也被称为多个插槽(socket))以增加计算能力。但是随着处理能力连同计算***中设备的数量一起增加,插槽与其它设备之间的通信变得更加关键。
事实上,互连已经从主要处理电气通信的更传统的多点总线成长到促进快速通信的完全成熟的互连架构。遗憾的是,随着对未来处理器以更高速率消耗的需求,对应的需求置于现有互连架构的能力上。
附图说明
图1图示包括互连架构的计算***的实施例。
图2图示包括分层栈的互连架构的实施例。
图3图示要在互连架构内生成或接收的请求或分组的实施例。
图4图示用于互连架构的器和接收器对的实施例。
图5图示表示示例性***的简化框图。
图6图示表示包括示例性解码信息库的示例性***的简化框图。
图7图示将解码信息库条目映射到结构(fabric)的端口的表示。
图8A-8L是用于结合解码信息库使用的工具的示例性图形用户接口的截屏。
图9图示用于包括多核处理器的计算***的框图的实施例。
图10图示用于计算***的框图的另一个实施例。
在各种附图中的相同的参考标号和指定指示相同的元件。
具体实施方式
在以下描述中,阐述许多具体细节,诸如具体类型的处理器和***配置、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体***组件、具体测量/高度、具体处理器流水线级和操作等的示例,以便提供本发明的透彻理解。然而,对本领域技术人员将明显的是:这些具体细节不需要用于实践本发明。在其它实例中,尚未详细描述公知的组件或方法,诸如具体和替代处理器架构、用于所述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现方式、在代码中的算法的具体表达、具体断电和门控技术/逻辑以及计算机***的其它具体操作细节,以便避免不必要地使本发明模糊。
虽然可参照在具体集成电路中(诸如在计算平台或微处理器中)的能量节约和能量效率来描述以下实施例,但是其它实施例适用于其它类型的集成电路和逻辑设备。本文所述的实施例的类似技术和教导可应用于也可从更好的能量效率和能量节约受益的其它类型的电路或半导体设备。例如,公开的实施例不限于台式计算机***或UltrabooksTM。并且还可用于其它设备中,诸如手持设备、平板电脑、其它薄型笔记本电脑、片上***(SOC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、片上***、网络计算机(NetPC)、机顶盒、网络中心、广域网(WAN)交换机或者可以执行下面教导的功能和操作的任何其它***。此外,本文所述的装置、方法和***不限于物理计算设备,而是还可涉及用于能量节约和效率的软件优化。如将在下面描述中变得容易地明显的,本文所述的方法、装置和***的实施例(无论参考硬件、固件、软件还是其组合)对与性能考虑平衡的“绿色技术”未来是至关重要的。
随着计算***进步,其中的组件正变得更加复杂。作为结果,在组件之间耦合和通信的互连架构在复杂性方面也日益增加,以确保针对最佳组件操作满足带宽要求。此外,不同的市场部门需要互连架构的不同方面,以适应市场的需求。例如,服务器需要更高的性能,而移动生态***有时能够为功率节省而牺牲整体性能。然而,大多数结构的唯一目的是以最大功率节省来提供最高的可能性能。下面,讨论许多互连,这将潜在地受益于本文所述的发明的方面。
一个互连结构架构包括快速***组件互连(PCI)(PCIe)架构。PCIe的主要目标是使得来自不同厂商的组件和设备能够在开放架构中跨越多个市场部门互操作;客户端(台式和移动)、服务器(标准和企业)以及嵌入式和通信设备。快速PCI是针对各种各样的未来计算和通信平台定义的高性能通用I/O互连。一些PCI属性(诸如其使用模型、加载-存储架构和软件接口)已经通过其修订来维护,而先前的并行总线实现方式已经由高度可扩展的完全串行接口取代。快速PCI的最新版本利用点对点互连、基于交换机的技术和分组化协议中的进步来递送新的性能水平和特征。功率管理、服务质量(QoS)、热插拔/热交换支持、数据完整性和错误处理在由快速PCI支持的高级特征中的一些之中。
参考图1,图示由互连组件集合的点对点链路组成的结构的实施例。***100包括处理器105和***存储器110,其耦合到控制器中心115。处理器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中,诸如设备之类的术语(vernacular)通常被称为端点。虽然未被具体示出,但是设备125可包括PCIe到PCI/PCI-X桥以支持遗留或其它版本PCI设备。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是PCIe协议栈,其包括事务层205、链路层210和物理层220。接口(诸如图1中的接口117、118、121、122、126和131)可被表示为通信协议栈200。作为通信协议栈的表示也可被称为实现/包括协议栈的模块或接口。
快速PCI使用分组来在组件之间通信信息。在事务层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。在图示的示例中,描绘包括本地事务标识符字段308和源标识符字段310的全局标识符字段302。在一个实施例中,全局事务标识符302对于所有未完成的(outstanding)请求是唯一的。
根据一个实现方式,本地事务标识符字段308是由请求代理产生的字段,并且它对于需要针对该请求代理的完成的所有未完成的请求是唯一的。此外,在该示例中,源标识符310唯一地标识PCIe层级结构内的请求者代理。相应地,本地事务标识符308字段连同源ID310一起提供层级结构域内的事务的全局标识。
属性字段304指定事务的特性和关系。在这方面,属性字段304潜在地用于提供允许事务的默认处理的修改的附加信息。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316和无侦听(snoop)字段318。这里,优先级子字段312可由启动器(initiator)修改以向事务分配优先级。保留属性字段314被留置保留用于未来或厂商定义的使用。使用优先级或安全性属性的可能的使用模型可使用保留属性字段来实现。
在该示例中,排序属性字段316用于供应可选信息,该可选信息传达可修改默认排序规则的排序类型。根据一个示例性实现方式,“0”的排序属性表示将应用默认排序规则,其中“1”的排序属性表示松弛排序,其中写入可以在相同方向上传递写入,并且读取完成可以在相同方向上传递写入。侦听属性字段318用于确定事务是否被侦听。如所示的,通道ID字段306标识事务与之相关联的通道。
链路层
链路层210(也被称为数据链路层210)充当事务层205与物理层220之间的中间级。在一个实施例中,数据链路层210的责任是提供用于在链路的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受由事务层205组装的TLP,应用分组序列标识符211,即标识号或分组号,计算并应用错误检测码,即CRC 212,并且向物理层220提交经修改的TLP以供跨物理到外部设备的传输。
物理层
在一个实施例中,物理层220包括逻辑子块221和电气子块222以向外部设备物理地传送分组。这里,逻辑子块221负责物理层221的“数字”功能。在这方面,逻辑子块包括:传送部分以准备用于供物理子块222传送的传出信息,以及接收部分以在将接收的信息传递到链路层210之前标识和准备接收的信息。
物理块222包括传送器和接收器。传送器由逻辑子块221供应有符号,传送器串行化该符号并将其传送到外部设备上。接收器被供应有来自外部设备的串行化符号,并将接收的信号变换成位流。位流被解串行化(deserialize)并供应给逻辑子块221。在一个实施例中,采用8b/10b传输码,其中传送/接收十位符号。这里,特殊符号用于制定(frame)具有帧223的分组。另外,在一个示例中,接收器还提供从传入的串行流恢复的符号时钟。
如上所陈述的,虽然参照PCIe协议栈的具体实施例来讨论事务层205、链路层210和物理层220,但是分层协议栈不限于此。事实上,可包括/实现任何分层协议。作为示例,被表示为分层协议的端口/接口包括:(1)组装分组的第一层,即事务层;定序分组的第二层,即链路层;以及传输分组的第三层,即物理层。作为具体示例,利用普通标准接口(CSI)分层协议。
接下来参考图4,图示PCIe串行点对点结构的实施例。虽然图示PCIe串行点对点链路的实施例,但是串行点对点链路不限于此,因为它包括用于传输串行数据的任何传输路径。在所示的实施例中,基本PCIe链路包括两个低电压差分驱动信号对:传送对406/411和接收对412/407。相应地,设备405包括:向设备410传送数据的传送逻辑406,以及从设备410接收数据的接收逻辑407。换句话说,在PCIe链路中包括两个传送路径(即路径416和417)以及两个接收路径(即路径418和419)。
传送路径是指用于传送数据的任何路径,诸如传输线、铜线、光线、无线通信信道、红外通信链路或其它通信路径。两个设备(诸如设备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)块(或“计算块”)集成转移。IP块可以指可重用的逻辑单元、电路或芯片布局。SoC可以包括多个IP块,其包括相同IP块的多个实例。在一些实例中,IP块可以支持多个功能,在一些情况下所述多个功能由IP块中包括的一个或多个设备来促进。
除了其它示例之外,SoC和对应的I/O解决方案尤其可以在包括平板电脑、电话和其它低成本嵌入式平台的各种各样的不同计算设备中提供,并且被提供给当前和下一代PC、服务器***。转到图5,示出包括采用多个集成设备的计算***的操作***的***的简化框图500,诸如包括多个IP块的SoC。计算***可以包括操作***505,其适于配置***上的设备。可以提供基本I/O***(BIOS)510,其可以初始化和测试***硬件组件。用于各种设备的配置信息可以被存储在设备的寄存器515(例如基址寄存器(BAR))中。BIOS可以在运行时间时(例如在引导时)读取寄存器,并将信息传递给OS。
结构代理的寄存器可以被映射到存储器位置。例如,结构代理的寄存器可以驻留在存储器映射空间、I/O映射空间、配置空间和私有配置寄存器(CR)空间中的任何一个中。在存储器映射空间中,地址字段可以是由BAR号字段指示的BAR内的偏移。在一些实例中,对代理的存储器映射空间的访问可以是32位或64位地址之一,这取决于设备的BAR大小。在边带上的代理的BAR号可以或可以不匹配其在主接口上的BAR号。对于I/O映射空间,地址字段可以是在由BAR号字段指示的BAR内的偏移,并且可以或可以不匹配其在主接口上的BAR。在配置空间中,地址字段可以指示寄存器偏移,并且可以是16位地址字段。对于CR空间,除了其它示例性实现方式之外,地址尤其可以指示平面(flat)16位或48位空间。
设备驱动器可以使用由操作***提供的API来访问设备的配置空间。可以通过将设备映射到***的I/O端口地址空间或存储器映射地址空间中来使能设备寻址。***的固件、设备驱动器或操作***可以编程BAR,以通过向控制器写入配置命令来通知设备其地址映射。在一些情况下,设备可在***重置时处于非活动状态,并且还不具有分配给它们的操作***或设备驱动器可以通过其来与它们通信的地址。在一些情况下,除了其它示例之外,BIOS或操作***尤其可以用于在***被引导时向设备的BAR分配地址。
在一些实现方式中,可以定义片上***结构架构以供在互连SoC中的块中使用。结构可以提供标准化的接口,以使得IP块能够跨CPU、平台控制器中心(PCH)和SoC产品共享。这可以允许IP块基于具体市场需求而跨一系列的CPU、PCH和SoC产品重用。符合该结构的IP块可以连接到结构作为代理。代理的主接口可以包括主控制信号,该主控制信号向结构提供信息以用于主接口上的流控制以及事务的仲裁和解码。主控制接口上的信息可以由结构使用,并且有时可由结构转发到结构目标接口。主接口还可以利用命令和数据信号。关于这些信号的信息可以由结构转发到所选目标代理的目标命令和数据接口。除了命令和数据接口之外,目标接口还具有控制接口,该控制接口可以携带结构目标接口与代理目标接口之间的流控制和解码信息。
结构可以定义要用于确定事务的目标的解码阶段。解码阶段用于确定事务的目标。结构可以使用解码阶段来将由特定事务所需的信用与由经解码的目标可用的信用相关联,并且在事务已经在命令阶段中被授权时将放置(put)信号引导到经解码的目标。可以支持多个事务解码选项,其包括源解码、结构解码、目标解码和减法解码中的一个或多个。
在一些实现方式中可以支持源解码。使用源解码,可以向结构呈现事务的最终目的地的信息。接收事务的结构不需要解码命令来标识预期目标。经解码的信息可以经由目的地ID字段来传达。如果代理实现源解码,则代理可以解码目标并在其主控制和命令接口上使用目的地ID字段来向结构呈现该信息。可以在请求阶段中发送目的地信息,以使得结构请求仲裁器能够在看到命令之前做出路由决策。结构可以使用该信息来将事务路由到目的地。
在多跳结构中,可以跨结构将该信息携带到在其上附着最后目标的最终结构。例如,所标识的目的地可以由下一个结构用作“源解码”信息以路由事务,而不必再次对其解码。例如,上级结构可以通过目标命令接口向下一跳结构呈现目的地ID。如果目的地代理附着在当前结构下面的另一个结构上,可以将事务向下转发到另一个结构,等等,直到达到最终目标(在最终结构上)。
在一些实现方式中还可以支持结构解码。在一个示例中,点对点连接、基于结构的解码是隐含的。在多对一结构中,许多代理都具有相同的目标也可能是隐含的。然而,如果目标不是隐含地已知的,则结构可以首先标识对应的事务命令,以便执行解码。结构可例如通过使用特殊示出命令协议来获取命令信息,其中代理将(例如传出事务的)其命令属性暴露给结构而不从其队列中卸载命令。替代地,代理可以将整个事务接受到存储和转发缓冲器中,所述存储和转发缓冲器给予结构对命令的访问。在任一个情况下,结构可以维持附着的目标代理的所有配置寄存器的镜像或影子副本,以便使结构执行解码。通过其编程影子寄存器的机制可以是结构特定的。例如,可以或者通过侦听到代理的配置事务、使用边带消息接口来在配置和枚举期间收集所需信息或者通过使用其它结构特定的机制来编程影子寄存器。
在一些实现方式中,结构可以基于目标的总线、设备和功能号(以及在一些情况下,目标的根空间标识符)来标识目标。为了解码涉及PCIe P2P桥的事务,结构可以另外维持桥的辅助和下级总线号寄存器的影子副本。实际上,除了其它示例之外,结构尤其可以维持端点代理的BAR的影子副本、桥的基础和限制寄存器以及其它寄存器,诸如代理的存储空间使能(MSE)、IO空间使能(IOSE)、功率管理功率状态以及功能级重置(FLR)寄存器。
转到图6,示出简化框图600,其图示可以用于SoC和SoC结构的开发中的示例性***。可以提供结构配置工具605,其能够例如使用硬件描述语言(HDL)生成结构并且在一些情况下还是SoC的设计抽象。为了简化SoC设计工具605的使用,并且使用SoC设计工具605来使结构的设计和配置简化,可以提供包括潜在解码信息的多个卷、或条目615的解码信息库610,潜在解码信息可以被包括在由SoC设计工具605生成的特定结构定义中并且用于由SoC设计工具605生成的特定结构定义的生成中。解码信息可以包括可能被(从HDL定义生成的)最后结构需要以解码将连接到结构的各种IP块(和相关事务)的任何信息。此外,解码信息编辑器620可被提供以允许用户与解码信息库615对接,定义解码信息以与结构的特定实例中的IP块相关联,并且甚至编辑解码信息620。
在一些实现方式中,结构配置工具605可以包括一个或多个处理器625、一个或多个存储器元件620以及在软件和/或硬件中实现的附加组件,诸如结构配置工具630、解码库接口640和HDL生成器645。结构配置工具630可以消耗通过解码信息库610提供的解码信息条目615。在一些情况下,解码库接口640可以提供允许结构配置工具630访问和利用解码信息条目的API,所述解码信息条目对应于针对到结构的连接标识的IP块。结构配置工具630可以基于指定的解码信息615来定义结构的特性,以生成结构的模型来支持所标识的IP块。在一些情况下,模型可以被提供为由SoC设计工具605生成的设计抽象或并入由SoC设计工具605生成的设计抽象中,诸如在一个或多个HDL对象中体现的可以用于定义预硅SoC的抽象。
在数字电路设计中,HDL可以定义电路和片上***的设计抽象,以建模包括电路的***的电子电路的结构、设计和操作,诸如将在结构或SoC中实现的。HDL可以实现电子电路的精确的形式描述,其允许建模的电路的自动化分析、仿真和仿真测试。HDL对象或“程序”可以由用于在生成由HDL对象建模的实际电路中使用的制造工具消耗。例如,HDL程序可以被编译(例如使用工具605或另一个工具)成物理电子组件的较低级规范,诸如用于制造一个或多个建模的集成电路的掩模(mask)。一些SoC设计工具(例如605)可以基于提供给它的输入来自动化HDL对象的生成,所述输入对应于将在包括其结构的SoC上实现的功能性和设备。HDL可以用于写入用于硬件的可执行规范,并且可以提供可以在HDL对象内实现语言语句的底层语义的工具,以给硬件设计者(或设计工具)提供在硬件(例如SoC)的对应片段被物理地创建(例如在硅中)之前对其建模的能力。
在一个示例中,SoC设计工具605(例如使用结构配置工具635或HDL生成器645)可以生成寄存器传送级(RTL)HDL对象。RTL是设计抽象,该设计抽象可以在硬件寄存器之间的数字信号(数据)流和在那些信号上执行的逻辑操作方面来建模同步数字电路。RTL可以用在一些HDL中以创建电路的高级表示,从所述高级表示中可以导出较低级表示和最终实际的布线。RTL HDL对象可以建模包括寄存器和组合逻辑的电路元件。寄存器(例如被实现为触发器(flip-flop))可以将电路的操作同步到时钟信号的边沿,并且实现针对电路的存储器性质。除了其它示例之外,组合逻辑尤其可以提供电路中的逻辑功能(例如,如通过对应的逻辑门实现)。电子设计自动化(EDA)也可以消耗通过HDL对象提供的描述,以将对象转换成等效硬件实现文件以供在设计和制造(例如SoC的)对应的印刷电路板和集成电路中使用。
转到图7,示出简化框图700,其图示解码信息库的条目到结构的端口的链接。在该特定示例中,可以使用可以并入SoC中的一个或多个结构设备(例如705、710)来实现该结构。例如,第一结构设备705可以包括端口1、2和3。每个端口可以用于将相应的IP块连接到结构。在该示例中,端口1包括IP块“A”的实例(IP A(1)),端口2包括IP块“B”的实例(IP B),并且端口3包括IP块“A”的第二实例(IP A(2))。每个IP块可以支持可需要解码的一个或多个功能。该功能可以包括协议内的定义的功能(例如在PCIe的规范中定义的功能)。IP块还可以包括一个或多个不同的设备,每个设备被配置成支持一个或多个相应的功能。相应地,用户可以部分地通过从解码信息库610中选择解码信息条目并将这些与IP块相关联来定义IP块的特征。例如,每个条目可以包括将被结构需要以解码针对特定设备的事务的所有解码信息。换句话说,每个条目可以对应于相应的预定义的设备。各种IP块可以均实现相同的设备,并且从而利用解码信息库中的相同的对应条目。替代地,每个解码信息库条目可以对应于预定义功能集合中的一个。例如,可以针对支持基于PCI的协议的结构而定义定义的PCI/PCIe功能集合。各种不同的IP块可包括执行相同功能中的一个或多个的电路和逻辑,并且可以均与对应的解码信息库条目相关联。
例如,IP块“A”可以是由实体提供的块,并且该块可被配置成执行定义的功能集合内的两个不同的功能。相应地,用户可以标识在解码信息库610中对应于由IP块“A”支持的两个功能中的第一个功能的预定义条目——条目1,并且可以标识对应于该第二功能的另一个预定义解码信息条目——条目4。条目1可以包括将在结构的特定实现方式中需要以解码针对该功能的事务的所有解码信息。类似地,条目4可以包括足够的解码信息的集合,以允许结构解码针对第二功能的事务。用户可以选择适当的解码信息条目来将条目与IP块相关联。此外,条目与IP块之间的关联可以被保存并且方便地重用于该结构或者利用类似协议的另一个结构中的IP块的任何其它实例。例如,用户可以单次创建IP块“A”与一个或多个可重用的库条目(例如条目1和4)之间的关联,并且重用该关联用于IP块的每个实例(例如IP A(1)、IP A(2)、IP A(3))。
为了配置结构,可以将对应于将连接到给定结构端口的IP块的解码信息条目集合分配给该端口。例如,对于结构705的端口2,将库条目条目2和条目3分配给端口2,以提供针对由IP块B实现的两个功能(或替代地,两个设备)的解码信息。SoC设计工具605可以利用分配的解码信息条目中的信息来确定对应于端口(例如端口2)的结构的配置。这例如可以包括在结构中提供存储器和/或触发器以适应将连接到端口的IP块的对应设备或功能的影子或镜像寄存器。对应地,可以针对将使IP块连接到它的结构的端口中的每一个定义库条目。SoC设计工具可以利用分配的条目中的信息来生成建模结构设备(例如705或710)的HDL对象,该结构设备被配置成支持将连接到结构设备(例如在SoC上)的端口的一组IP块(例如分别为IP A(1)、IP B和IP A(2)或IP A(3)、IP C和IP D)。
在一些实现方式中,解码信息库(例如610)可以是可扩展的。如上所指出的,在一些示例中,解码信息库的条目可以包括子集,该子集对应于在诸如PCIe之类的协议的规范中定义的功能(或设备)的离散集。然而,一些IP块(例如IP D)可包括在离散集外的功能(或设备),诸如针对与结构的兼容性调节的专用或定制功能。在这样的实例中,可以定义定制解码信息条目(例如条目n)。将并入定制IP块中的定制条目也可以被分配给端口(其将连接到定制IP块),并且可以由SoC设计工具利用以生成建模端口的HDL对象,所述端口被配置成支持定制IP块。
返回到图6,可以使用库编辑器620来执行涉及解码信息库610的各种任务。例如,除了其它任务之外,尤其可以定义特定IP块与一个或多个库条目之间的关联,可以编辑库条目,可以生成新条目(包括定制条目)。在一个示例中,可以使用一个或多个处理器设备650、一个或多个存储器元件655来实现库编辑器620,并且可以提供以软件和/或硬件来实现的促进库编辑器620的功能性的一个或多个组件。例如,除了其它功能性之外,编辑器660尤其可以被提供以编辑或生成库条目。此外,可以提供允许用户与解码信息库610交互的图形用户接口(GUI)665。
图8A-8L图示供解码信息库使用的示例性软件工具的截屏800a-1。例如,图8A示出具有包括活动列表的窗口802的截屏800a的视图,用户可以从该活动列表中选择执行涉及解码信息库的活动。在该示例中,用户已经在创建RTL活动内选择全局解码步骤子动作。该动作可以包括对应于各种设备(或用于各种功能)的解码信息库条目的检查和分配。可以呈现窗口804以总结解码信息库的条目。用户可以选择条目中的特定一个来查看条目的细节。例如,图8B示出用户接口截屏800b的视图,其图示用户对特定库条目“pcie4x1”的选择以及选择的库条目的属性的对应呈现(在窗口806、808中)。例如,窗口806可以总结已经针对设备“pcie4x1”实现能够在结构中支持的定义的功能集合中的哪一个。这些选择的功能可以描述由该设备支持的功能。在一些实例中,用户可以通过选择和/或不选择该组中的功能(例如通过与窗口806的控件(例如复选框)的交互)而被授权编辑对应于设备的库条目。此外,窗口808可以提供允许用户在每个功能的基础上编辑解码信息(例如如图8C的示例800c中所示)的支持的功能(例如功能0-7)的视图。
可以在解码信息库中定义解码参数,诸如描述将被包括在用于该功能的设备中的配置空间的参数。例如,除了其它信息之外,参数尤其可以描述BAR的类型(例如I/O或存储器空间BAR)、设备的BAR的大小(例如1MB、4kB等)。此外,除了其它示例性信息之外,解码信息条目尤其可以描述关于功能(或设备)支持的所有事务(例如配置事务、I/O事务、存储器读取、存储器写入、原子操作等)以及是以目标还是主模式处理事务、事务的大小(例如64BWr、4B MWr)(在每个事务类型的基础上(例如发布(posted)、非发布、完成))。相应地,可以在每个功能的基础上定义事务信息。
转到图8D,示出用户接口的视图800d。用户可以选择以更细的粒度级别查看针对设备或功能定义的条目的解码信息。例如,用户可以选择在窗口804中查看设备“pcie4xl”的支持的事务,并引起窗口810的显示。在该示例中,窗口810针对由设备(例如“pcie4x1”)支持的每个功能示出定义的事务集合中的哪些由每个功能支持。例如,根据哪些事务要由或不由对应的功能支持,可以从针对每个功能(例如功能0-3)示出的可能事务的列表选择或取消选择事务。另外,用户可以编辑由每个功能支持的定义的事务(例如通过窗口810)。
图8E示出用户接口的另一个视图800e。在该示例中,用户选择(在窗口804中)查看特定设备(例如“pcie4x1”)的BAR配置细节。可以响应于示出解码信息而呈现对应的窗口812,该解码信息描述针对设备的每个支持的功能(例如功能0-3)的BAR配置。例如,针对对应于功能的每个BAR,除了其它潜在信息之外,尤其可以定义BAR类型、大小和通道。关于支持的事务、虚拟化BAR配置和其它属性,可以通过诸如窗口812之类的接口来查看和编辑(例如由授权的用户)BAR配置信息。
可以针对库中的任何解码信息条目查看和编辑解码信息。例如,图8F和8G示出通过窗口804对另一个设备(例如“uah”)的选择以及对应解码信息条目的细节的呈现(例如在窗口810、812中)。同样可以编辑这些细节,以通过GUI修改或补充设备的解码信息条目。
转到图8H,示出GUI的另一个视图800h,其包括用于选择解码信息条目将被分配给的特定结构设备的接口814。在一个示例中,用户可以通过从活动列表窗口802选择指定子***活动来导航到窗口814。如图8H的特定示例中所图示,根据特定设计,多个结构设备旨在用于包括在SoC中。每个结构设备可以包括用于将结构设备连接到一个或多个IP块的一个或多个端口。通过窗口814,可以选择结构设备中的将针对其分配解码信息的特定的一个。响应于选择结构设备中的一个,可以呈现一个或多个附加窗口(例如816、818)以示出对应于选择的结构设备的结构端口,诸如图8I的示例中所示。通过窗口816,用户可以选择所选择的结构设备的端口中的特定一个,并且可以呈现对应于选择的端口的配置窗口818。通过配置窗口818,用户可以选择将连接到端口的IP块中包括哪些设备(例如如图8J的示例中所示)。设备的选择可以使得向选择的端口分配对应的解码信息条目(例如由“设备名称”指针指定)。在其中IP块包括多个设备的情况下,可以选择多个设备(在窗口818中)并且将多个解码信息条目分配给端口。在其中在每个功能基础上(即,而不是在每个设备基础上)组织解码信息库的实现方式中,用户可以选择将连接到结构端口的IP块所支持的功能中的每一个,并且对应的库条目可以被分配给端口。在任一实例中,用户还可以定义针对每个选择的设备(或功能)的号码标识符(例如通过与窗口818的交互)。在一些情况下,可以针对相同的IP块以及从而针对端口定义相同设备或功能的多个实例。相应地,每个实例(设备或功能)可以被(由用户)分配用于端口的唯一号码标识符(以给予对应的解码实例“个性”)。这可以允许由唯一的总线标识符、设备标识符和功能标识符组合来识别每个功能(和对应的解码信息条目)。此外,如图8K中所示,解码信息可以被类似地分配给选择的结构的每个端口(再次通过窗口816、818)。
现在转到图8L,除了提供用于编辑和分配解码信息库条目的用户接口之外,还可以提供用户接口来定义将包括在n SoC中的结构设备(和其它组件)的方面。例如,如截屏8001中所示,可以提供窗口820以允许用户定义(或编辑)将包括在n SoC中的结构设备的属性。在可以被定义的属性之中,可以定义结构端口的数量。可以将解码信息条目分配给定义的端口中的每一个。此外,例如可以通过使用窗口802导航到属性的类别来查看和编辑属性。
如上所指出的,用户可以利用设计工具的各种用户接口(诸如图8A-8L中所示的那些)以定义结构和/或结构将并入其中的SoC的属性。该属性可以包括被包括在分配给结构的端口的一组可重用解码信息库条目中的属性。虽然可以在结构设备特定的基础上手动输入其它属性,但是解码信息库的使用可以促进针对每个结构端口的IP块特定的解码信息的快速和准确的定义。在一些实例中,设计工具可以利用这些输入来自动生成HDL对象(诸如RTL HDL对象),以建模结构,所述结构将支持到计划的IP块集合的连接。
要指出的是,上述装置、方法和***可在如前述的任何电子设备或***中实现。作为具体说明,下面的附图提供用于利用如本文所述的该发明的示范性***。因为更详细地描述下面的***,从以上讨论中公开、描述和重新拜访许多不同的互连。并且如容易地明显的,上述进展可应用于任何那些互连、结构或架构。
参考图9,描绘用于包括多核处理器的计算***的框图的实施例。处理器900包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上***(SOC)或执行代码的其它设备。在一个实施例中,处理器900包括至少两个核——核901和902,其可以包括不对称核或对称核(图示的实施例)。然而,处理器900可包括任何数量的处理元件,其可以是对称或不对称的。
在一个实施例中,处理元件是指用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持针对处理器的状态(诸如执行状态或架构状态)的任何其它元件。换句话说,在一个实施例中,处理元件是指能够与代码(诸如软件线程、操作***、应用或其它代码)独立地相关联的任何硬件。物理处理器(或处理器插槽)典型地是指集成电路,该集成电路潜在地包括任何数量的其它处理元件,诸如核或硬件线程。
核通常是指位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。与核形成对比,硬件线程典型地是指位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可以看到的,当某些资源被共享并且其它资源专用于架构状态时,硬件线程与核的命名法之间的界限重叠。然而,通常核和硬件线程由操作***视为单独的逻辑处理器,其中操作***能够单独调度每个逻辑处理器上的操作。
如图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在相同封装和/或管芯上。这里,核的一部分(核上(on-core)部分)910包括用于与其它设备(诸如存储器975或图形设备980)对接的一个或多个控制器。包括用于与这样的设备对接的互连和控制器的配置通常被称为核上(或非核(un-core)配置)。作为示例,片上接口910包括:用于片上通信的环形互连,以及用于片外通信的高速串行点对点链路905。然而,在SOC环境中,甚至更多设备(诸如网络接口、协处理器、存储器975、图形处理器980和任何其它已知计算机设备/接口)可被集成在单个管芯或集成电路上,以提供具有高功能性和低功率消耗的小形状因子。
在一个实施例中,处理器900能够执行编译器、优化和/或转换器代码977,以编译、转换和/或优化应用代码976来支持本文所述的装置和方法或者与其对接。编译器通常包括程序或程序集以将源文本/代码转换为目标文本/代码。通常,利用编译器编译程序/应用代码在多个阶段和多遍(pass)中完成,以将高级编程语言代码变换成低级机器或汇编语言代码。然而,单遍编译器仍然可用于简单编译。编译器可利用任何已知的编译技术并执行任何已知的编译器操作,诸如词法分析、预处理、解析、语义分析、代码生成、代码变换和代码优化。
较大的编译器通常包括多个阶段,但是这些阶段最通常被包括在两个一般阶段内:(1)前端,即通常其中可发生语法处理、语义处理和一些变换/优化,以及(2)后端,即通常其中发生分析、变换、优化和代码生成。一些编译器是指中间,其图示编译器的前端与后端之间的描绘(delineation)的模糊。因此,对编译器的***、关联、生成或其它操作的引用可在任何前述的阶段或遍以及编译器的任何其它已知阶段或遍中发生。作为说明性示例,编译器潜在地在编译的一个或多个阶段中***操作、调用、函数等,诸如在编译的前端阶段中***调用/操作以及然后在变换阶段期间将调用/操作变换成较低级代码。要指出的是,在动态编译期间,编译器代码或动态优化代码可***这样的操作/调用,以及优化代码以供在运行时间期间执行。作为具体的说明性示例,可在运行时间期间动态优化二进制代码(已编译的代码)。这里,程序代码可包括动态优化代码、二进制代码或其组合。
类似于编译器,转换器(诸如二进制转换器)或者静态或者动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码或其它软件环境的执行的引用可指:(1)一个或多个编译器程序、优化代码优化器或转换器的或者动态或者静态的执行,以编译程序代码、维持软件结构、执行其它操作、优化代码或者转换代码;(2)包括操作/调用的主程序代码的执行,诸如已经被优化/编译的应用代码;(3)与主程序代码相关联的其它程序代码(诸如库)的执行以维持软件结构、执行其它软件相关的操作或优化代码;或者(4)其组合。
接下来转到图10,描绘根据该发明的片上***(SOC)设计的实施例。作为具体的说明性示例,SOC 1000被包括在用户设备(UE)中。在一个实施例中,UE是指将由终端用户用于通信的任何设备,诸如手持电话、智能电话、平板电脑、超薄笔记本电脑、具有宽带适配器的笔记本电脑或者任何其它类似的通信设备。通常UE连接到基站或节点,该基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。
这里,SOC 1000包括2个核——1006和1007。类似于以上讨论,核1006和1007可符合指令集架构,诸如基于Intel® Architecture Core™处理器、Advanced Micro Device公司(AMD)处理器、基于MlPS的处理器、基于ARM的处理器设计或其客户以及被许可者或采用者。核1006和1007耦合到与总线接口单元1009和L2高速缓存1011相关联的高速缓存控制1008以与***1000的其它部件通信。互连1010包括片上互连(诸如IOSF、AMBA或以上讨论的其它互连),其潜在地实现本文所述的一个或多个方面。
接口1010提供通信信道给其它组件,诸如订户身份模块(SIM)1030以与SIM卡对接,引导rom 1035以保持引导代码以供核1006和1007执行以初始化和引导SOC 1000,SDRAM控制器1040以与外部存储器(例如DRAM 1060)对接,闪存控制器1045以与非易失性存储器(例如闪存1065)对接,外设控制1050(例如串行外设接口)以与外设对接,视频编解码器1020和视频接口1025以显示和接收输入(例如触摸使能的输入), 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输出将使能时钟。再次指出,术语“被配置成”的使用不需要操作,代替地聚焦于装置、硬件和/或元件的潜伏状态,其中在潜伏状态中,装置、硬件和/或元件被设计成当装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,短语“以(to)”、“能够(capable of)/以(to)”和或“可操作以(operable to)”的使用是指以使得能够以指定的方式使用装置、逻辑、硬件和/或元件的方式设计的一些装置、逻辑、硬件和/或元件。如上所指出的,在一个实施例中,以(to)、能够以(capable to)或可操作以(operable to)的使用是指装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件不是正在操作,但是被以这样的方式设计以使得能够以指定的方式使用装置。
如本文所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知的表示。通常逻辑电平、逻辑值(logic value)或逻辑性值(logical value)的使用也被称为1和0,其简单地表示二进制逻辑状态。例如,1是指高逻辑电平,并且0是指低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可能能够保存单个逻辑值或多个逻辑值。然而,已经使用了计算机***中的值的其它表示。例如十进制数十也可被表示为二进制值1010和十六进制字母A。因此,值包括能够被保持在计算机***中的信息的任何表示。
此外,状态可由值或值的部分表示。作为示例,第一值(诸如逻辑一)可表示默认或初始状态,而第二值(诸如逻辑零)可表示非默认状态。另外,在一个实施例中,术语重置和设置分别是指默认和更新的值或状态。例如,默认值潜在地包括高逻辑值,即重置,而更新的值潜在地包括低逻辑值,即设置。要指出的是,值的任何组合可用于表示任何数量的状态。
以上阐述的方法、硬件、软件、固件或代码的实施例可经由处理元件可执行的指令或代码来实现,所述指令或代码被存储在机器可访问、机器可读、计算机可访问或计算机可读介质上。非暂时性机器可访问/可读介质包括以由机器(诸如计算机或电子***)可读的形式提供(即,存储和/或传输)信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪速存储器设备;电学存储设备;光学存储设备;声学存储设备;其它形式的存储设备,其用于保持从暂时(传播的)信号(例如载波、红外信号、数字信号)接收的信息;等等,它们将与可从中接收信息的非暂时性介质区分开来。
用于编程逻辑以执行该发明的实施例的指令可被存储在***中的存储器内,诸如DRAM、高速缓存、闪速存储器或其它存储装置。此外,指令可以经由网络或通过其它计算机可读介质的方式来分发。从而,机器可读介质可包括用于以由机器(例如计算机)可读的形式存储或传输信息的任何机制,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪速存储器或者在通过互联网、经由电学、光学、声学或其它形式的传播信号(例如载波、红外信号、数字信号等)传输信息中使用的有形的机器可读存储装置。相应地,计算机可读介质包括适合于以由机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的有形的机器可读介质。
下面的示例关于根据本说明书的实施例。一个或多个实施例可提供一种装置、***、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑以及方法,以对于将针对互连结构定义的多个端口中的每一个而标识将连接到端口的相应计算块。可以针对所标识的计算块中的每一个而标识解码信息库中的一个或多个条目。可以基于解码信息库中的所标识的条目而生成片上***的结构的中间表示。
在至少一个示例中,解码信息库将包括多个条目。
在至少一个示例中,每个条目包括计算块的配置空间的属性。
在至少一个示例中,每个条目标识计算块的一个或多个支持的功能。
在至少一个示例中,所述属性包括计算块的基址寄存器(BAR)的属性。
在至少一个示例中,所述属性包括BAR的类型。
在至少一个示例中,所述属性包括BAR的大小。
在至少一个示例中,每个条目对应于多个功能中的相应的一个。
在至少一个示例中,多个功能包括定义的基于***组件互连(PCI)的功能的集合。
在至少一个示例中,针对计算块中的每一个,所标识的条目将包括对应于由相应计算块支持的功能的条目。
在至少一个示例中,每个条目对应于包括在计算块之一中的多个设备中的相应的一个。
在至少一个示例中,多个端口包括第一端口和第二端口,第一计算块将连接到第一端口,第二计算块将连接到第二端口,将针对第一计算块标识第一解码信息条目集合,将针对第二计算块标识第二解码信息条目集合,其中第一解码信息条目集合和第二解码信息条目集合共同具有至少一个条目。
在至少一个示例中,第一解码信息条目集合与第二解码信息条目集合不同。
在至少一个示例中,中间表示将表示结构的存储器结构,并且存储器结构的表示将基于条目。
在至少一个示例中,存储器结构将包括影子寄存器,以存储用于在解码涉及计算块的事务中使用的配置信息。
在至少一个示例中,存储器结构包括影子寄存器,以对计算块中的至少一个的寄存器的至少一部分成镜像。
一个或多个实施例可提供一种方法、装置、***、机器可读存储装置、机器可读介质、基于硬件和/或软件的逻辑,包括解码信息库管理器,以:维持解码信息库,解码信息库包括可重用条目集合,条目的集合中的每一个对应于多个功能中的相应的一个,并且每个条目将包括将由互连结构用于解码涉及对应功能的事务的信息。接口可以将来自解码信息库的条目提供给硬件设计工具。
在至少一个示例中,集合中的每个条目将描述:对应的基址寄存器(BAR)的类型;对应的BAR的大小;以及对应于相应功能的支持的事务的属性。
一个或多个实施例可提供一种***,包括:至少一个处理器设备;在一个或多个存储器元件中维持的解码信息库;以及硬件设计工具。解码信息库包括可重用解码信息条目集合,条目的集合中的每一个将对应于多个功能中的相应的一个,并且每个条目将包括将由互连结构用于解码对应于相应功能的事务的解码信息。硬件设计工具消耗解码信息库的一个或多个条目,以生成硬件描述语言对象来表示互连结构以互连计算块集合。
在至少一个示例中,硬件设计工具将针对多个结构中的每一个生成相应的HDL对象,其中多个结构包括:第一结构以互连第一计算块集合,以及第二、不同的结构以互连第二、不同的计算块集合。
遍及本说明书对“一个实施例”或“实施例”的引用意味着,结合实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在遍及本说明书的各种地方中的出现不一定都是指相同的实施例。另外,特定特征、结构或特性可以以任何合适的方式组合在一个或多个实施例中。
在前述说明书中,已经参照具体示例性实施例给出了详细描述。然而,将明显的是,可以在不脱离如在随附权利要求中阐述的本发明的更宽泛的精神和范围的情况下对其作出各种修改和改变。说明书和附图相应地要以说明性含义而不是约束性含义来对待。另外,实施例和其它示范性语言的前述使用不一定是指相同的实施例或相同的示例,而是可以是指不同且有区别的实施例,以及潜在地相同的实施例。
Claims (22)
1.一种计算机可读介质,其包括代码,所述代码在被执行时将使得计算设备:
对于将针对互连结构定义的多个端口中的每一个而标识将连接到端口的相应计算块;
针对所标识的计算块中的每一个而标识解码信息库中的一个或多个条目;以及
基于解码信息库中的所标识的条目而生成片上***的结构的中间表示。
2.根据权利要求1所述的介质,其中解码信息库将包括多个条目。
3.根据权利要求2所述的介质,其中每个条目包括计算块的配置空间的属性。
4.根据权利要求3所述的介质,其中每个条目标识计算块的一个或多个支持的功能。
5.根据权利要求3所述的介质,其中所述属性包括计算块的基址寄存器(BAR)的属性。
6.根据权利要求5所述的介质,其中所述属性包括BAR的类型。
7.根据权利要求6所述的介质,其中所述属性包括BAR的大小。
8.根据权利要求2所述的介质,其中每个条目对应于多个功能中的相应的一个。
9.根据权利要求8所述的介质,其中多个功能包括定义的基于***组件互连(PCI)的功能的集合。
10.根据权利要求8所述的介质,其中针对计算块中的每一个,所标识的条目将包括对应于由相应计算块支持的功能的条目。
11.根据权利要求2所述的介质,其中每个条目对应于包括在计算块之一中的多个设备中的相应的一个。
12.根据权利要求1所述的介质,其中多个端口包括第一端口和第二端口,第一计算块将连接到第一端口,第二计算块将连接到第二端口,将针对第一计算块标识第一解码信息条目集合,将针对第二计算块标识第二解码信息条目集合,其中第一解码信息条目集合和第二解码信息条目集合共同具有至少一个条目。
13.根据权利要求12所述的介质,其中第一解码信息条目集合与第二解码信息条目集合不同。
14.根据权利要求1所述的介质,其中中间表示将表示结构的存储器结构,并且存储器结构的表示将基于条目。
15.根据权利要求14所述的介质,其中存储器结构将包括影子寄存器,以存储用于在解码涉及计算块的事务中使用的配置信息。
16.根据权利要求15所述的介质,其中存储器结构包括影子寄存器,以对计算块中的至少一个的寄存器的至少一部分成镜像。
17.一种装置,包括:
解码信息库管理器,以:
维持解码信息库,其中解码信息库包括可重用条目集合,条目的集合中的每一个将对应于多个功能中的相应的一个,并且每个条目将包括将由互连结构用于解码涉及对应功能的事务的信息;以及
接口,以将来自解码信息库的条目提供给硬件设计工具。
18.根据权利要求17所述的装置,其中集合中的每个条目将描述:
对应的基址寄存器(BAR)的类型;
对应的BAR的大小;以及
对应于相应功能的支持的事务的属性。
19.一种***,包括:
至少一个处理器设备;
在一个或多个存储器元件中维持的解码信息库,其中解码信息库包括可重用解码信息条目集合,条目的集合中的每一个将对应于多个功能中的相应的一个,并且每个条目将包括将由互连结构用于解码对应于相应功能的事务的解码信息;以及
硬件设计工具,以消耗解码信息库的一个或多个条目,以生成硬件描述语言对象来表示互连结构以互连计算块集合。
20.根据权利要求20所述的***,其中硬件设计工具将针对多个结构中的每一个生成相应的HDL对象,其中多个结构包括:第一结构以互连第一计算块集合,以及第二、不同的结构以互连第二、不同的计算块集合。
21.一种方法,包括:
对于将针对互连结构定义的多个端口中的每一个而标识将连接到端口的相应计算块;
针对所标识的计算块中的每一个而标识解码信息库中的一个或多个条目;以及
基于解码信息库中的所标识的条目而生成片上***的结构的中间表示。
22.一种***,包括:
对于将针对互连结构定义的多个端口中的每一个而标识将连接到端口的相应计算块的装置;
针对所标识的计算块中的每一个而标识解码信息库中的一个或多个条目的装置;以及
基于解码信息库中的所标识的条目而生成片上***的结构的中间表示的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/579565 | 2014-12-22 | ||
US14/579,565 US20160179161A1 (en) | 2014-12-22 | 2014-12-22 | Decode information library |
PCT/US2015/062563 WO2016105818A1 (en) | 2014-12-22 | 2015-11-25 | Decode information library |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107003838A true CN107003838A (zh) | 2017-08-01 |
CN107003838B CN107003838B (zh) | 2022-04-26 |
Family
ID=56129303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580063497.4A Active CN107003838B (zh) | 2014-12-22 | 2015-11-25 | 解码信息库 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160179161A1 (zh) |
EP (1) | EP3238108A4 (zh) |
CN (1) | CN107003838B (zh) |
WO (1) | WO2016105818A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727679B2 (en) | 2014-12-20 | 2017-08-08 | Intel Corporation | System on chip configuration metadata |
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 |
GR20180100189A (el) * | 2018-05-03 | 2020-01-22 | Arm Limited | Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming |
US11550917B2 (en) * | 2019-06-28 | 2023-01-10 | Intel Corporation | Standardized interface for intellectual property blocks |
CN115357309B (zh) * | 2022-10-24 | 2023-07-14 | 深信服科技股份有限公司 | 一种数据处理方法、装置、***和计算机可读存储介质 |
Citations (12)
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 |
US20030005396A1 (en) * | 2001-06-16 | 2003-01-02 | Chen Michael Y. | Phase and generator based SOC design and/or verification |
US20030009658A1 (en) * | 2001-06-16 | 2003-01-09 | Chen Michael Y. | Self-describing IP package for enhanced platform based SOC design |
CN1666202A (zh) * | 2002-04-25 | 2005-09-07 | Arc国际公司 | 管理集成电路设计的装置和方法 |
CN101313281A (zh) * | 2005-11-18 | 2008-11-26 | 罗伯特·博世有限公司 | 用于在包括至少两个具有寄存器的执行单元的***中消除错误的装置和方法 |
CN101523349A (zh) * | 2006-10-02 | 2009-09-02 | 特兰斯蒂有限公司 | 计算机***和改编计算机***以使其支持寄存器窗口架构的方法 |
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 |
CN103279696A (zh) * | 2013-06-03 | 2013-09-04 | 中国科学院微电子研究所 | EDA软件的License监控方法和*** |
CN103324511A (zh) * | 2012-02-09 | 2013-09-25 | 阿尔特拉公司 | 配置可编程设备的方法、可编程设备及机器可读存储介质 |
US20140244932A1 (en) * | 2013-02-27 | 2014-08-28 | Advanced Micro Devices, Inc. | Method and apparatus for caching and indexing victim pre-decode information |
CN104049948A (zh) * | 2013-03-16 | 2014-09-17 | 英特尔公司 | 指令仿真处理器、方法和*** |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9436623B2 (en) * | 2012-09-20 | 2016-09-06 | Intel Corporation | Run-time fabric reconfiguration |
US8839171B1 (en) * | 2013-03-31 | 2014-09-16 | Atrenta, Inc. | Method of global design closure at top level and driving of downstream implementation flow |
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 |
-
2014
- 2014-12-22 US US14/579,565 patent/US20160179161A1/en not_active Abandoned
-
2015
- 2015-11-25 CN CN201580063497.4A patent/CN107003838B/zh active Active
- 2015-11-25 EP EP15874022.5A patent/EP3238108A4/en not_active Withdrawn
- 2015-11-25 WO PCT/US2015/062563 patent/WO2016105818A1/en active Application Filing
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100489865C (zh) * | 2001-06-08 | 2009-05-20 | 韵律设计***公司 | 使用远程资源的芯片设计方法和*** |
US20020188910A1 (en) * | 2001-06-08 | 2002-12-12 | Cadence Design Systems, Inc. | Method and system for chip design using remotely located resources |
US20030005396A1 (en) * | 2001-06-16 | 2003-01-02 | Chen Michael Y. | Phase and generator based SOC design and/or verification |
US20030009658A1 (en) * | 2001-06-16 | 2003-01-09 | Chen Michael Y. | Self-describing IP package for enhanced platform based SOC design |
CN1666202A (zh) * | 2002-04-25 | 2005-09-07 | Arc国际公司 | 管理集成电路设计的装置和方法 |
US8090564B1 (en) * | 2003-11-03 | 2012-01-03 | Synopsys, Inc. | Automatic generation of transaction level bus simulation instructions from bus protocol |
US20090044044A1 (en) * | 2005-11-18 | 2009-02-12 | Werner Harter | Device and method for correcting errors in a system having at least two execution units having registers |
CN101313281A (zh) * | 2005-11-18 | 2008-11-26 | 罗伯特·博世有限公司 | 用于在包括至少两个具有寄存器的执行单元的***中消除错误的装置和方法 |
CN101523349A (zh) * | 2006-10-02 | 2009-09-02 | 特兰斯蒂有限公司 | 计算机***和改编计算机***以使其支持寄存器窗口架构的方法 |
US20130086296A1 (en) * | 2011-09-29 | 2013-04-04 | Sridhar Lakshmanamurthy | Providing Multiple Decode Options For A System-On-Chip (SoC) Fabric |
CN103324511A (zh) * | 2012-02-09 | 2013-09-25 | 阿尔特拉公司 | 配置可编程设备的方法、可编程设备及机器可读存储介质 |
US20140244932A1 (en) * | 2013-02-27 | 2014-08-28 | Advanced Micro Devices, Inc. | Method and apparatus for caching and indexing victim pre-decode information |
CN104049948A (zh) * | 2013-03-16 | 2014-09-17 | 英特尔公司 | 指令仿真处理器、方法和*** |
CN103279696A (zh) * | 2013-06-03 | 2013-09-04 | 中国科学院微电子研究所 | EDA软件的License监控方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN107003838B (zh) | 2022-04-26 |
WO2016105818A1 (en) | 2016-06-30 |
EP3238108A4 (en) | 2018-08-08 |
US20160179161A1 (en) | 2016-06-23 |
EP3238108A1 (en) | 2017-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077521B (zh) | 片上***配置元数据 | |
CN104756097B (zh) | 一致性协议表 | |
CN109154924B (zh) | 多个上行链路端口设备 | |
CN105793829B (zh) | 用于集成组件互连的装置、方法和*** | |
CN105593830B (zh) | 用于测量电路的物理单元中的等待时间的方法、装置和*** | |
CN104932996B (zh) | 用于控制链路接口的未使用硬件的功率消耗的方法、装置和*** | |
CN104050138B (zh) | 用于执行链路训练与均衡的装置、***、和方法 | |
CN113868173B (zh) | 扁平化端口桥 | |
CN110036380A (zh) | 用于高速互连中低延迟的双模phy | |
CN107003838A (zh) | 解码信息库 | |
CN110262923A (zh) | 带内重定时器寄存器访问 | |
CN107430569A (zh) | 多芯片封装链路 | |
CN107924380A (zh) | 使用业务类别分配高速缓存的方法、装置和*** | |
CN108337910A (zh) | 用于软件定义的互连交换机的架构 | |
CN109844725A (zh) | 点对点互连中的非对称通道 | |
CN107112042A (zh) | 数据信号的边沿感知同步 | |
CN105765544A (zh) | 多芯片封装链路 | |
CN107003971A (zh) | 用于高性能互连中的嵌入式流通道的方法、装置、*** | |
CN107005477A (zh) | 用于片上网络的基于链路延迟的路由装置 | |
CN109643299A (zh) | 在具有现有tlp定义的pcie上的持久存储器写入语义 | |
CN108292267A (zh) | 总线-装置-功能地址空间的推测性枚举 | |
CN107750476A (zh) | 边带导体谐振减轻 | |
CN107078850A (zh) | 边带奇偶校验处理 | |
CN107003944B (zh) | 跨分布式存储器的指针追踪 | |
Di Paolo Emilio | Design Techniques of Embedded System |
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 |