CN117336381A - 多个上行链路端口设备 - Google Patents
多个上行链路端口设备 Download PDFInfo
- Publication number
- CN117336381A CN117336381A CN202311432940.3A CN202311432940A CN117336381A CN 117336381 A CN117336381 A CN 117336381A CN 202311432940 A CN202311432940 A CN 202311432940A CN 117336381 A CN117336381 A CN 117336381A
- Authority
- CN
- China
- Prior art keywords
- pcie
- port
- socket
- processor
- link
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 29
- 230000005540 biological transmission Effects 0.000 claims description 11
- 230000002093 peripheral effect Effects 0.000 claims description 10
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 42
- 230000015654 memory Effects 0.000 description 81
- 238000005192 partition Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 17
- 238000013461 design Methods 0.000 description 15
- 238000003860 storage Methods 0.000 description 14
- 239000000872 buffer Substances 0.000 description 12
- 230000001427 coherent effect Effects 0.000 description 11
- 230000004044 response Effects 0.000 description 11
- 230000007704 transition Effects 0.000 description 11
- 238000007726 management method Methods 0.000 description 10
- 238000011144 upstream manufacturing Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 8
- 238000005457 optimization Methods 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 230000014616 translation Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 239000004744 fabric Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 241000170489 Upis Species 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 230000000153 supplemental effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 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
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 208000033498 Non-syndromic pontocerebellar hypoplasia Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000006880 cross-coupling reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 208000017262 paroxysmal cold hemoglobinuria Diseases 0.000 description 1
- 208000004351 pontocerebellar hypoplasia Diseases 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4072—Drivers or receivers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Systems (AREA)
Abstract
设备被提供有两个或更多个上行链路端口,其用于经由两个或更多个链路将设备连接到一个或多个插口,其中,插口中的每一个包括一个或多个处理核心,并且两个或更多个链路中的每一个都符合特定互连协议。设备还包括I/O逻辑,其用于:识别将被发送到一个或多个处理核心以进行处理的数据,确定与数据相关联的亲和属性,以及基于亲和属性来确定两个或更多个链路中的哪一个用于将数据发送到一个或多个处理核心。
Description
本申请为分案申请,其原申请是于2018年11月26日(国际申请日为2017年05月29日)向中国专利局提交的专利申请,申请号为201780032402.1,发明名称为“多个上行链路端口设备”。
技术领域
概括而言,本公开内容涉及计算机开发领域,并且更具体而言,涉及配置计算机互连链路。
背景技术
半导体处理和逻辑设计的进步已经允许增加集成电路设备上可以存在的逻辑的量。作为必然的结果,计算机系统配置已经从系统中单个或多个集成电路发展到个别集成电路上存在多个核心、多个硬件线程和多个逻辑处理器,以及集成在这样处理器内的其他接口。处理器或集成电路通常包括单个物理处理器管芯,其中,处理器管芯可以包括任何数量的核心、硬件线程、逻辑处理器、接口、存储器、控制器集线器等。
作为用于在较小的封装中装配较大的处理能力的能力的结果,较小的计算设备已经越发普及。智能手机、平板计算机、超薄笔记本和其他用户装备已呈指数级增长。然而,这些较小的设备依赖于服务器,无论是对于数据存储还是对于超出形状因子的复杂处理。因此,高性能计算市场(即,服务器空间)中的需求也已经增加。例如,在现代服务器中,通常不仅存在具有多个核心的单个处理器,而且还存在用于增加计算能力的多个物理处理器(还被称为多个插口(socket))。但随着处理能力随着计算系统中设备的数量而增长,插口和其他设备之间的通信变得更加关键。
附图说明
图1示出了根据一个实施例的包括用于连接计算机系统中的I/O设备的串行点对点互连的系统的简化框图。
图2示出了根据一个实施例的分层协议栈的简化框图。
图3示出了事务描述符的实施例。
图4示出了串行点对点链路的实施例。
图5示出了潜在的多处理器系统配置的实施例。
图6示出了多插口系统的实施例。
图7A-7C示出了包括多上行链路端口设备的实施例。
图8示出了对包括多上行链路端口设备的示例性系统的表示。
图9示出了包括多核处理器的计算系统的框图的实施例。
图10示出了包括多个处理器插口的计算系统的块的实施例。
各个附图中同样的附图标记和名称指示同样的元素。
具体实施方式
在以下描述中,阐述了许多特定细节(例如,特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定处理器管线阶段、特定互连层、特定分组/事务配置、特定事务名称、特定协议交换、特定链路宽度、特定实施方式和操作等的示例),以便提供对本公开内容的透彻理解。然而,对于本领域技术人员而言可以显而易见的是,这些特定细节对于实践本公开内容的主题而言不一定需要被采用。在其他实例中,已经避免了对已知组件或方法(例如,特定和替代处理器架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、低级互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实施方式、代码中算法的特定表达、特定断电和门控技术/逻辑以及计算机系统的其他特定操作细节)的详细描述,以便避免不必要地模糊本公开内容。
尽管可以参考特定集成电路(例如,计算平台或微处理器)中的节能、能效、处理效率等来描述以下实施例,但是其他实施例也适用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于也可以受益于这样的特征的其他类型的电路或半导体设备。例如,所公开的实施例不限于服务器计算机系统、桌上型计算机系统、膝上型计算机、UltrabooksTM,而是还可以用于其他设备(例如,手持式设备、智能手机、平板计算机、其他薄笔记本、片上系统(SOC)设备和嵌入式应用)中。手持式设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持式PC。这里,可以应用用于高性能互连的类似技术来提高低功率互连中的性能(或甚至节省功率)。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或任何其他可以执行以下教导的功能和操作的系统。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可以涉及针对节能和效率的软件优化。如可以在以下描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件或其组合)可以被认为对于用性能考虑因素平衡的“绿色技术”未来是至关重要的。
随着计算系统的发展,其中的组件变得越来越复杂。用于在组件之间耦合和通信的互连架构的复杂性也已增加,以确保满足最佳组件操作的带宽需求。此外,不同的细分市场需要互连架构的不同方面以适应相应的市场。例如,服务器需要更高的性能,而移动生态系统有时能够为功率节省而牺牲整体性能。然而,大多数结构的单个目的是在最大功率节省的情况下提供最高性能。此外,各种不同的互连可以潜在地受益于本文描述的主题。
根据本文描述的一个或多个原理(以及其他示例),可以潜在地改进外围组件互连(PCI)快速(PCIe)互连结构架构和QuickPath互连(QPI)结构架构(以及其他示例)。例如,PCIe的主要目标是使来自不同供应商的组件和设备能够在开放式架构中互操作,以跨越多个细分市场;客户端(桌上型的和移动的)、服务器(标准的和企业的)以及嵌入式和通信设备。PCI快速是针对各种各样的未来的计算和通信平台而定义的高性能通用I/O互连。一些PCI属性(例如,其使用模型,加载-存储架构和软件接口)已通过其修订版被维护,而先前的并行总线实施方式已被高度可扩展的完全串行接口所取代。更近期的PCI快速的版本利用了点对点互连、基于交换机的技术和分组协议的优点,以递送新水平的性能和特征。功率管理、服务质量(QoS)、热插拔/热交换支持、数据完整性和错误处理在PCI快速支持的一些高级功能中。尽管本文的主要讨论是参考新的高性能互连架构(例如,UltraPath互连(UPI)),但是本文描述的本公开内容的各方面可以应用于其他互连架构,例如PCIe兼容架构、QPI兼容架构、MIPI兼容架构、高性能架构或其他已知的互连架构。
参见图1,示出了由互连一组组件的点对点链路组成的结构的实施例。系统100包括耦合到控制器集线器115的处理器105和系统存储器110。处理器105可以包括任何处理元件,例如微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器105通过前端总线(FSB)106耦合到控制器集线器115。在一个实施例中,FSB 106是如以下描述的串行点对点互连。在另一实施例中,链路106包括符合不同互连标准的串行差分互连架构。系统100的一个或多个组件可以被提供有逻辑(以硬件和/或软件形式)以实现本文描述的特征。
系统存储器110包括任何存储器设备,例如随机存取存储器(RAM)、非易失性(NV)存储器或可由系统100中的设备访问的其他存储器。系统存储器110通过存储器接口116耦合到控制器集线器115。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器115可以包括(例如,PCIe互连层级中的)根集线器、根复合体(root 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/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、Firewire设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备。通常在PCIe白话中,例如设备,被称为端点。尽管没有具体示出,但是设备125可以包括桥(例如,PCIe到PCI/PCI-X桥)以支持传统或其他版本的设备或由这样的设备支持的互连结构。
图形加速器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栈、UPI栈或其他分层栈。在一个实施例中,协议栈200可以包括事务层205、链路层210和物理层220。接口(例如,图1中的接口117、118、121、122、126和131)可以表示为通信协议栈200。表示为通信协议栈还可以被称为实现/包括协议栈的模块或接口。
分组可以用于在组件之间传送信息。可以在事务层205和数据链路层210中形成分组以将信息从发送组件携带到接收组件。当发送的分组流经其他层时,它们被扩展有用于处理那些层处的分组的另外的信息。在接收侧处,发生反向过程,并且分组从其物理层220表示变换为数据链路层210表示,并且最终(对于事务层分组)变换为可以由接收设备的事务层205处理的形式。
在一个实施例中,事务层205可以提供设备的处理核心和互连架构之间的接口,例如数据链路层210和物理层220。在这方面中,事务层205的主要职责可以包括分组的(即,事务层数据分组或TLP)组装(assembly)和解组装(disassembly)。转换层205还可以管理用于TLP的基于信用的流控制。在一些实施方式中,可以利用拆分事务(即,具有由时间分隔的请求和响应的事务)以允许链路携带其他业务,而目标设备针对响应收集数据,以及其他示例。
基于信用的流控制可以用于实现利用互连结构的虚拟信道和网络。在一个示例中,设备可以在事务层205中针对接收缓冲器中的每一个通告初始信用量。在链路的相对端处的外部设备(例如,图1中的控制器集线器115)可以计算每个TLP消费的信用数量。如果事务未超过信用额度,则事务可以被发送。在接收了响应时,一定量的信用被恢复。这样的信用方案的优点的一个示例是,只要没有遇到信用额度,信用返还的延时就不影响性能,以及其他潜在的优点。
在一个实施例中,四个事务地址空间可以包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括用于传送去往/来自存储器映射位置的数据的读取请求和写入请求中的一个或多个。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如短地址格式(例如,32比特地址)或长地址格式(例如,64比特地址)。配置空间事务可以用于访问连接到互连的各种设备的配置空间。去往配置空间的事务可以包括读取请求和写入请求。还可以定义消息空间事务(或简称为消息)以支持互连代理之间的带内通信。因此,在一个示例性实施例中,事务层205可以组装分组报头/有效载荷206。
快速参考图3,示出了事务层分组描述符的示例性实施例。在一个实施例中,事务描述符300可以是用于携带事务信息的机制。在这方面中,事务描述符300支持对系统中的事务的标识。其他潜在用途包括跟踪默认事务排序的修改以及事务与信道的关联。例如,事务描述符300可以包括全局标识符字段302、属性字段304和信道标识符字段306。在示出的示例中,全局标识符字段302被描绘为包括本地事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符302对于所有未完成的请求是唯一的。
根据一个实施方式,本地事务标识符字段308是由请求代理生成的字段,并且对于需要针对该请求代理完成的所有未完成请求可以是唯一的。此外,在该示例中,源标识符310唯一地标识互连层级内的请求者代理。因此,与源ID 310一起,本地事务标识符308字段提供层级域内的事务的全局标识。
属性字段304指定事务的特性和关系。在这方面中,属性字段304潜在地用于提供允许修改事务的默认处理的另外的信息。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316和非窥探字段318。这里,优先级子字段312可以由发起者修改以将优先级指派给事务。保留属性字段314被保留用于将来或供应商定义的使用。可以使用保留属性字段来实现使用优先级或安全性属性的可能使用模型。
在该示例中,排序属性字段316用于提供传达可以修改默认排序规则的排序类型的可选信息。根据一个示例性实施方式,排序属性“0”表示要应用默认排序规则,其中,排序属性“1”表示放松的排序(relaxed ordering),其中,写入可以沿相同方向传递写入,并且读取完成可以沿相同方向传递写入。窥探属性字段318用于确定事务是否被窥探。如示出的,信道ID字段306标识与事务相关联的信道。
回到图2的讨论,链路层210(还被称为数据链路层210)可以充当事务层205和物理层220之间的中间阶段。在一个实施例中,数据链路层210的职责是提供用于在链路上的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受由事务层205组装的TLP,应用分组序列标识符211(即,标识号或分组号),计算并应用错误检测码(即,CRC212),并将修改的TLP提交给物理层220以用于跨物理到外部设备的传输。
在一个示例中,物理层220包括逻辑子块221和电气子块222,以物理地将分组发送到外部设备。这里,逻辑子块221负责物理层221的“数字”功能。在这方面中,逻辑子块可以包括用于准备供物理子块222发送的传出信息的发送部分以及用于在将所接收的信息传递到链路层210之前识别和准备所接收的信息的接收部分。
物理块222包括发送器和接收器。发送器由逻辑子块221提供符号,发送器将所述符号串行化并发送到外部设备上。接收器被提供有来自外部设备的串行化的符号,并将接收的信号变换成比特流。比特流被反序列化并被提供给逻辑子块221。在一个示例性实施例中,采用了8b/10b传输码,其中,10比特符号被发送/接收。这里,特殊符号用于用帧223对分组进行成帧。此外,在一个示例中,接收器还提供从传入串行流恢复的符号时钟。
如上所述,尽管参考协议栈(例如,PCIe协议栈)的特定实施例讨论了事务层205、链路层210和物理层220,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议并采用本文讨论的特征。作为示例,表示为分层协议的端口/接口可以包括:用于组装分组的第一层,即事务层;用于对分组进行排序的第二层,即链路层;以及用于发送分组的第三层,即物理层。作为具体示例,利用了如本文描述的高性能互连分层协议。
接下来参考图4,示出了串行点对点结构的示例性实施例。串行点对点链路可以包括用于发送串行数据的任何发送路径。在示出的实施例中,链路可以包括两个低压差分驱动信号对:发送对406/411和接收对412/407。因此,设备405包括用于将数据发送到设备410的发送逻辑406以及用于从设备410接收数据的接收逻辑407。换言之,两个发送路径(即,路径416和417)以及两个接收路径(即,路径418和419)被包括在链路的一些实施方式中。
发送路径指代用于发送数据的任何路径,例如传输线、铜线、光线、无线通信信道、红外通信链路或其他通信路径。两个设备(例如,设备405和设备410)之间的连接被称为链路(例如,链路415)。链路可以支持一个通道——每个通道标识一组差分信号对(一对用于传输、一对用于接收)。为了扩展带宽,链路可以聚合由xN表示的多个通道,其中,N是任何支持的链路宽度,例如1、2、4、8、12、16、32、64或更宽。
差分对可以指代两个发送路径(例如,线路416和417)以用于发送差分信号。作为示例,当线路416从低电压电平切换到高电压电平(即,上升沿)时,线路417从高逻辑电平驱动到低逻辑电平(即,下降沿)。差分信号潜在地表现出更好的电特性,例如更好的信号完整性,即交叉耦合、电压过冲/下冲、振铃等其他示例性优点。这允许更好的定时窗口,这实现了更快的传输频率。
在一个实施例中,可以提供诸如UPI之类的高性能互连。UPI可以包括下一代高速缓存相干的基于链路的互连。作为一个示例,UPI可以用于高性能计算平台(例如,工作站或服务器)中,包括在其中PCIe或另一互连协议通常用于连接处理器、加速器、I/O设备等的系统中。然而,UPI并不限于此。相反,UPI可以用于本文描述的系统或平台的任何一个中。此外,所开发的个别想法可以应用于其他互连和平台,例如PCIe、MIPI、QPI等。
为了支持多个设备,在一个示例性实施方式中,UPI可以包括指令集架构(ISA)不可知(agnostic)(即,UPI能够在多个不同的设备中被实现)。在另一场景中,UPI还可以用于连接高性能I/O设备,而不仅仅是处理器或加速器。例如,高性能PCIe设备可以通过适当的转换桥(即,UPI到PCIe)耦合到UPI。此外,UPI链路可以由许多基于UPI的设备(例如,处理器)以各种方式(例如,星形、环形、网格等)利用。图5示出了多个潜在的多插口配置的示例性实施方式。如描绘的,双插口配置505可以包括两个UPI链路;然而,在其他实施方式中,可以利用一个UPI链路。对于较大的拓扑,可以利用任何配置,只要标识符(ID)是可指派的并且存在某种形式的虚拟路径,以及其他另外或替代的特征。如示出的,在一个示例中,四插口配置510具有从每个处理器到另一处理器的UPI链路。但是在配置515中示出的八插口实施方式中,并非每个插口都通过UPI链路彼此直接连接。然而,如果处理器之间存在虚拟路径或信道,则配置被支持。支持的处理器的范围在本机域中包括2-32个。可以通过使用节点控制器之间的多个域或其他互连来达到更高数量的处理器,以及其他示例。
UPI架构包括分层协议架构的定义,在一些示例中包括协议层(相干、非相干、以及可选地其他基于存储器的协议)、路由层、链路层和物理层。此外,UPI还可以包括与功率管理器(例如,功率控制单元(PCU))、针对测试和调试设计(DFT)、故障处理、寄存器、安全性以及其他示例相关的增强。
PCIe已成为用于促进现代计算系统中的本地I/O连接的流行解决方案。具体而言,PCIe可以用于在系统CPU和芯片组组件之间提供I/O链路,例如通过平台控制器集线器耦合到CPU的各种设备,例如网络接口控制器(NIC)、存储控制器、图形处理单元(GPU)和其他这样的设备。PCIe还可以用于实现管芯上和封装内链路以及其他本地I/O解决方案。
PCIe和其他点对点互连可以被设计为主要支持树拓扑,并且可以不支持单个设备与根集线器、CPU、PCH等之间的“冗余”链路,以提供增强的可靠性、可用性和可维护性(RAS)、性能或其他特征。PCIe性能已经与存储器系统性能和相干结构性能在相同量级上,因此即使对于有能力的平台,高性能设备的带宽需求也可能非常繁重。例如,x6 Gen 4PCIe设备可以沿每个方向维持接近30GB/s,所述30GB/s在某个实施方式中可以容易地使两个DDR信道饱和。实际上,一些系统中的合计可支撑的PCIe Gen3带宽已显著增加,而(例如由于每个插口的存储器带宽增加)PCIe通道计数已仅仅适度地增加(例如,40到48个通道)。PCIe带宽也促使我们在我们的双插口相干平台中具有三个(而不是两个)相干的链路。
在一个实施方式中,单个设备(例如,个别的NIC、固态驱动器(SSD)、GPU等)可以被提供有多个端口以实现设备与托管一个或多个CPU核心的插口之间的多个链路(例如,PCIe链路)。可以利用来自单个设备的多个上游链路来提供某些系统增强并支持新的用例。例如,可以利用多个上游链路来增加设备可用的带宽。例如,设备可以被提供有超过以最大可用数据速率从单个x16可实践的带宽要求的带宽要求(例如,PCIe Gen3中的8GT/sx16和PCIe Gen4中的16GT/s x16)。在一些实例中,多个设备上行链路还可以在系统中实现更好的高速缓存(例如,最后一级高速缓存(LLC))利用,并且帮助管理处理器间链路的敏感带宽需求(例如,在多插口系统中)。多个设备上游链路还可以用于优化I/O和核心亲和性(affinity)(例如,在多插口系统中)并且实现针对工作负载优化、故障转移和增加的容错以及其他目的和示例的灵活的系统配置。
转到图6,示出了简化框图600,其示出了用于在多插口系统中互连多个处理器插口和设备的示例性系统和本地I/O连接。例如,可以提供多个处理器插口605、610,每个所述处理器插口具有多个处理器核心(例如,615a-h)。插口可以体现为计算机板上的接受单个物理芯片的物理连接器。本公开内容内的插口还可以指代已经焊接或以其他方式连接到板或平台并且与平台上的一个或多个其他设备本地互连的单个物理芯片。许多主板可以具有多个插口,所述插口转而可以接受包括一个或多个处理器或核心的芯片。实际上,在本公开内容中,核心可以是逻辑执行单元(例如,CPU或其他处理器),并且可以另外地包括本地高速缓存以及其他功能单元。核心(例如,615a-h)可以是能够独立地执行程序或线程的,并且插口(例如,605、610)或平台(具有多个多核插口)可以允许使用多个核心(例如,615a-h)来进行多个线程和程序的并发执行。
可以在插口605、610上提供下游端口,以将插口本地连接到各种其他设备(例如,620、625、630、635、640),例如存储器控制器、GPU、NIC、外围设备和其他设备。此外,每个插口605、610可以以动态随机存取存储器(DRAM)或其他本地存储器元件(例如,645a-b)的形式分配系统存储器的一部分。工作负载和数据可以经由在平台上实现的链路的结构在平台内被共享。例如,核心(例如,615a-d和615e-h)可以通过利用定义的互连协议的结构来互连。插口间消息传送和事务可以正在促进使用利用诸如UPI、QPI等的高性能互连协议的处理器间链路650。支持到DRAM 645a-b和外部设备(例如,620、625、630、635、640)的连接的端口可以支持和利用各种互连技术以使用这样的变化的技术来实现到设备的连接。例如,可以在每个插口605、610上提供一个或多个PCIe端口(和PCIe控制器),以促进各种PCIe兼容设备(例如,支持PCIe兼容链路的设备)的可能的连接。例如,在该示例中,设备620可以通过PCIe链路660(以及插口605的PCIe端口)直接与插口605互连,并且设备635和640同样可以分别经由相应的PCIe链路665、670直接连接到插口610。可以提供另外的端口以使用诸如QPI、DDR4、MIPI、AMBA、PCI、UPI、TSMI以及其他示例之类的其他互连技术来支持链路。例如,设备624、630可以使用非PCIe链路675、680来连接到插口605。
链路(例如,660、665、670、675、680)可以提供设备(例如,620、625、630、635、640)和插口605、610及其核心(例如,615a-h)和存储器(例如,645a-b)之间的接口。此外,处理器间链路(例如,650)可以有效地互连平台的所有元素,并且允许与一个插口(例如,610)相关联的处理和存储器资源可用于不直接连接到插口(例如,610)、但是连接到经由处理器间链路650连接的另一插口(例如,605)的设备(例如,620)。然而,这样的事务可能是昂贵的,这是因为事务不仅要遍历将设备(例如,620)连接到第一处理器或插口(例如,605)的链路(例如,660),而且然后还要在一个或多个处理器间链路(例如,650)上被路由以到达目的地核心(例如,615g)和/或相关联的存储器(例如,645b),其可另外地涉及高速缓存相干性管理(以及用于实现其的另外的处理器间业务)。这样的业务吸收处理器间链路650的带宽,其可以替代地被设计为主要支持处理器到处理器的消息传送和事务(而不是设备发起的业务)。因此,可以基于假设、预测或策略来设计一些系统,所述假设、预测或策略是涉及特定外部设备(例如,620)的事务可以主要仅使用与其直接连接的插口(例如,605)相关联的处理和存储器资源的,但这样的严格的事务边界在实践中可能难以实现。
涉及外部设备的事务可以包括在设备(例如,620)和一个或多个核心(例如,615a-h)之间交换的请求(例如,读取、写入、中断、链路状态消息传送等)和响应(例如,完成、数据、确认等)。从核心发送到设备(例如,620、625、630、635、640)的分组、消息和其他数据沿远离核心的“下游”方向(并且在下游链路或下行链路、处理器的端口(或其对应的插口605)上)行进。源自设备处并从设备发送到核心的数据沿“上游”方向向上返回到核心,并且因此据称在上游链路或上行链路、设备(例如,620、625、630、635、640)的端口上行进。实际上,在一个惯例中,可以将设备的用于实现与处理器、核心或处理器插口的连接的任何端口认为是上游或上行链路端口。
转到图7A-7C,虽然传统上设备被提供有单个上行链路端口,但是设备可以被增强而被提供有多个上行链路端口,以通过多个链路将单个设备直接连接到单个处理器或插口或甚至多个插口。例如,在图7A中,示出了在两个上行链路端口设备705的实施方式。设备705上提供的多个上行链路端口710、715可以用于通过链路720、725将设备705连接到多插口系统中的多个不同(互连)插口(例如,605、610)。这可以用于帮助缓解正在处理器间链路650上被路由的设备发起的业务。例如,可以是这种情况:甚至单个链路可以为给定设备(例如,705)和插口(例如,605、610)之间的所有事务提供足够的带宽。然而,对于系统更紧迫的约束可以用于通过利用设备705的多个端口710、715来将PCIe业务引导到最直接地将设备705连接到该业务的目的地的该链路来减少处理器间链路(例如,605)上的处理器间业务(例如,UPI业务)。在一些本地互连技术中,可以基于以下假设来设计互连规范:单个设备将始终具有单个上行链路端口,并且另外的逻辑可以在多端口设备705处被维护和利用以确定使用其链路中的哪一个来发送特定数据。例如,在确定使用哪个链路(以及多插口系统中的哪个插口(例如,605或610)的情况下),设备705可以考虑或预测链路(例如,720或725)中的哪一个具有与特定事务属性(例如,I/O活动的类型、链路与定义的设备配对或标识之间的关系(例如,NIC或存储队列对,或虚拟化I/O设备实例))的亲和性,以使得适当的链路(例如,720或725)用于最直接地将业务路由到适当的CPU插口、插口的相关联的系统存储器(DRAM、3DX-Point等)和/或插口内的特定核心。实际上,在许多情况下,当I/O相关业务从一个插口传达到另一插口时,两个插口(例如,605、610)之间的相干性业务具有直接性能。因此,在一些情况下,正确地将设备发起的业务引导到两个或更多个上行链路中的适当的上行链路可以用于不仅通过移除对可用UPI(或其他处理器间)带宽的依赖性来简化I/O密集工作负载,而且还允许非I/O工作负载具有更多可用的UPI带宽。通过引导I/O去往适当的插口(在多上行链路端口设备(例如,705)上)的处理器间链路带宽减少通过允许较小(即,较低的通道计数)处理器间链路来具有较低功耗和成本的益处,以及其他示例性优点。
转到7B,设备705还可以被提供有两个或更多个上行链路端口(例如,710、715),以连接到单个插口(例如,在多插口或单插口系统中)。实际上,在其他实施方式中,可以在设备705上提供三个或更多个上行链路端口,以允许设备使用两个或更多个多个上行链路来连接到第一插口,并且使用上行链路中的另一个来连接到另一插口,以及其他实施方式。在图7B的示例中,设备705的多个上行链路端口710、715可以实现设备705与插口605之间的多个链路730、735(例如,PCIe链路)。这样的实施方式可以用于在设备705和插口605之间建立与单个链路将允许的带宽相比更多的带宽。例如,特定设备(例如,705)的一些活动可能需要与来自单个PCIe链路的可用带宽相比更多的带宽。例如,设备705可以是GP-GPU/加速器,或者可以是用于(经由链路730、735)连接到利用极高性能以太网、InfiniBand和其他高性能计算(HPC)结构或高性能存储以及其他示例的平台的设备。
在图7C所示的又一示例中,设备705可以被提供有用于实现一个或多个逻辑分区的功能,以允许单个设备出现并且在逻辑上充当两个不同的设备。这样的特征可以在多插口系统(类似于图7C的示例)内被利用,其中,每个设备分区750、755被指派给在设备705上提供并通过对应的端口(例如,710或715)连接到多插口系统中的插口之一(例如,605或610)的多个上行链路端口710、715中的相应的上行链路端口。用于在第分区中的第一分区(分区A 750)和第一插口605之间交换的数据可以在链路740上被发送,并且用于在分区中的第二分区(分区B 755)和第二插口610之间交换的数据可以在链路745上被发送。在一些示例中,可以预期的是由分区750、755中的任何一个发起的业务将不会遍历处理器间链路650,这是因为每个插口605、610将其指派的分区视为其“自己的”。
在一些实施方式中,设备705还可以被提供有分区管理逻辑760,以允许设备的分区被选择性地启用(和禁用)。例如,设备705可以以分区模式或未分区模式操作,由分区管理逻辑760控制。在未分区模式下,设备705可以充当单个单一设备并作为单个单一设备将其自身呈现给系统(类似于图7A的示例)。在分区被启用的情况下,设备705可以定义多达设备上提供的上行链路端口的数量的多个分区(例如,在图7C的情况下,分区管理逻辑760可以启用与上行链路端口710和715相对应的两个分区)。在这样的示例中,系统可以充当相干双插口系统(例如,如图7A所示)或两个独立的一插口系统(例如,如图7C所示)操作。选择性分区可以向终端用户提供用于基于他们打算运行的工作负载来配置系统的灵活性。在平台需要具有两个冗余设备(其中,一个连接到多个插口中的每一个)的实例中,分区可以用于通过提供单个可分区设备(如图7C的示例中)(而不是两个单独的冗余设备以及其他示例)来降低成本、改进性能和降低功耗。
转到图8,示出了简化框图800,其示出了另外的细节,所述另外的细节可以被并入实现两个或更多个上行链路端口(例如,710、715)的示例性设备(例如,705)以及利用这样的设备的平台中。在一个示例中,设备705可以包括其自己的处理器和其上存储有代码的存储器,所述代码用于由处理器执行以实现诸如PCIe逻辑810、功率管理逻辑815、排序逻辑820、端口策略逻辑825和寄存器830之类的组件。替代地,可以通过硬件和电子逻辑电路来至少部分地实现这些组件中的一个或多个。如先前示例中指出的,上行链路端口710、715可以允许设备与系统805的一个或多个插口或处理器(图8中未示出)对接。系统805可以包括软件,所述软件包括操作系统835、一个或多个应用840和驱动程序(例如,845a-b、850等)以支持连接到系统805的设备。本地系统的设备和插口(以及插口的复合核心)均可以与操作系统835共享共同的系统映像。在操作系统835上运行的应用840可以包括用于使用连接到系统的各种设备(例如,705、855)中的一个或多个的功能,并且通过对应的设备驱动程序(例如,845a-b、850)发送和接收数据来与设备(通过操作系统835)交互。
在一个示例中,设备705可以是PCIe兼容设备并且可以拥有PCIe逻辑810以实现与PCIe规范(例如,PCIe基本规范修订版3.0)的要求一致的链路、寄存器、能力、数据结构和功能。因此,PCIe逻辑810可以包括用于实现PCIe的链路训练、消息传送和状态转换的分层协议栈,以及用于实现PCIe状态机和其他特征的逻辑。从系统的角度来看,被发送到多端口设备705或从多端口设备705接收的数据可以看起来与从单端口PCIe设备发送的数据没有不同。然而,由于PCIe(和其他点对点互连技术)可以基于单端口范例的假设,因此另外的I/O功能(例如,815、820、825等)可以在设备705上被提供以补充和启用使用多个链路的PCIe兼容通信。
作为示例,互连协议可以指定对于协议兼容链路上的事务所期望的某些规则或策略。例如,PCIe定义了事务排序范例,其假设树形拓扑结构,其中,在任何一对请求者和完成者之间只有一条可能的路径。虽然本文的示例中的一些集中于其中在设备和主机之间提供两个(或更多个)链路的情况,但是应当理解,这可以推广到其他拓扑。对于多端口设备,当多个事务可以涉及在不同链路上(甚至在不同的插口之间)发送和接收的数据时,为设备管理这些事务的排序使得对事务排序规则、策略或互连协议的定义的遵从变得复杂并且可能会危害所述遵从。例如,PCIe排序规则假设从不存在冗余路径,并且作为结果不能本机地确保PCIe生产者/消费者排序模型要求针对利用一个或多个多上行链路端口设备的配置被遵循。
在一些实施方式中,为了帮助解决在利用多个上行链路端口的设备上协商协议排序规则的复杂性,排序逻辑820可以另外包括用于识别其中不需要排序并且可以预留排序逻辑820的补充排序功能(及其相关联的开销)的任何机会(例如,特定事务)的功能。实际上,排序逻辑820可以仅识别其中需要排序的那些事务并且针对所有其他事务放弃排序任务。例如,同时,高度期望的是辨识其中不需要排序的情况,这是因为当必须在多个链路之间强制执行排序时可能存在显著的开销,并且因此仅在特别需要时才应当这样做。幸运的是,PCIe已经提供了用于排序放松的框架,例如通过PCIe的放松的排序(RO)和基于ID的排序(IDO)可以用于识别事务或数据流的排序要求,并且这些以及设备或协议特定技术可以用于确定何时默认排序要求可以被放松。例如,在保守方法中,排序逻辑820可以对除了明确指示为适合于PCIe放松的排序的事务之外的所有事务强制执行排序。
如果排序被确定要应用,则排序逻辑820可以具有用于针对对应协议(例如,在PCIe逻辑中)补充标准排序功能并且在多个链路(例如,在设备和单个插口之间或多个插口之间)上针对设备705管理排序的功能。作为示例,在提供多个PCIe兼容的上行链路的实施方式中,由于由多个设备上行链路提供的独立数据路径,因此使用有序读取完成和/或有序写入的基线PCI/PCIe排序强制语义可能不足以实现排序规则。在一个示例中,补充排序逻辑(例如,820)可以通过刷新和/或增强的基于多标记的方法来实现多个上行链路上的排序强制。
在用于促进多上行链路设备上的PCIe排序的基于刷新的方法的情况下,排序逻辑820可以利用PCIe中定义的现有刷新技术(例如,零长度读取)来允许由设备805执行刷新(例如,在不利用基于软件的干预或修改的情况下)。零长度读取可以实现为单个数据字(DW)的存储器读取请求,其中,没有字节被启用。这样的读取请求可以由设备705(根据排序逻辑820的排序)发出以请求刷新。在一些情况下,在利用零长度读取(或另一事务)来实现刷新的情况下,可以首先确定在刷新事务被触发之前是否需要刷新。例如,可以跳过零长度读取,例如,如果设备已经在从完成器中读取数据的话,在这种情况下,正被读取的数据的返回也意味着刷新完成。刷新语义允许设备确保先前发出的发布的写入已在其PCI快速目的地处完成。请求可以包括指向与要被刷新的发布的写入相同的设备的地址(例如,通过识别和使用与要刷新的发布的写入之一相同的地址)。在一些情况下,如果多个写入操作指向不同的目的地,则可能必要的是执行多个刷新操作,例如,以使得对写入的每个不同的存储器区域执行刷新。例如,保守方法可以对每个对齐的4KB存储器区域实现不同的刷新操作,其中,自先前的刷新操作以来已经执行了任何写入操作,以及其他示例性实施方式。
多端口设备705的排序逻辑820可以辨识其中同步是用于例如通过检测单个设备“线程”的动作(例如,单个DMA操作的服务)何时已导致写入在设备的链路中的多于一个上被发出来确保正确排序的场景。然后,排序逻辑820可以确定要同步设备的链路中的哪一个,例如,在其中通过在一个链路上的刷新操作的方式设备已在两个链路上写入数据的情况下,所述刷新操作当被完成时,允许写入设置标志或触发要在另一链路上发出的MSI。在一些情况下,在发起同步动作之前,可以发出刷新请求并刷新针对设备的其他链路接收的读取完成。例如,在其中通过在一个链路上的刷新操作的方式设备已在两个链路上写入数据的情况下,所述刷新操作当被完成时,允许写入设置标志或触发在另一链路上发出的MSI。
在用于促进多上行链路设备上的PCIe排序的增强的基于标志的方法的情况下,排序逻辑820可以在多端口设备(例如,705)的要在其上添加事务的所有链路上发送单独的标志写入。标志可以是关于已经执行写入的指示符。在一些情况下,可以将标志设置在与设备或设备的特定端口相对应的寄存器中。在一些情况下,指针(例如,与缓冲器结构结合使用)可以用作标志,其指示数据已被写入缓冲器的特定部分,以及其他示例。无论实施方式如何,驱动程序、存储器管理系统、操作系统或其他软件都可以利用标志来识别何时已经执行了写入(例如,与多链路设备的潜在的两个或更多个端口上的写请求相结合)以确定如何对涉及在设备(例如,705)的多个上行链路端口上接收的请求的读取、完成或其他事务进行排序。在一些示例中,可以修改用于其硬件/软件通信的数据结构以实现发送这样的多个标志写入。如果这样做,则这些标志的位置将影响性能,并且如果多个标志在相同高速缓存行中或不同的高速缓存行中,则将有益的是基于对于特定平台最佳的标准来提供用于协调的灵活性。
PCIe逻辑810(或其他协议逻辑)可以允许设备705及其链路个别地支持针对特定互连协议定义的各种链路功率(例如,L0、L1、L2等)和设备状态(例如,D0、D1、D2、D3等)。然而,在一些情况下,多上行链路设备的端口710、715的多个链路之一处的状态转换可能受到链路中的另一个上的状态转换的影响或驱动。考虑到下游的、主机发起的业务(正由设备接收)可以出现在多于一个链路上并因此出现在设备的多于一个端口上的可能性,设备功率状态可能在多端口设备上唯一地受到影响。在这样的情况下,设备可以保持在相对较高的功率状态下以准备好处理主机请求。在一些实施方式中,功率管理逻辑可以在确定转换到和保持哪个设备功率状态时考虑其多个端口中的每个端口的链路的状态。设备状态可以影响多个链路中的全部并引起所有链路一起转换进和转换出适当的链路功率状态。例如,在PCIe中,对于诸如D1、D2、D3之类的架构功率状态以及诸如D0ix之类的非架构情况,设备可以将所有链路一起转换进和转换出适当的相同链路功率状态(例如,转换到D3状态中以及转换出D3状态)。在其他情况下,功率管理逻辑可以识别用于将其链路中的链路保持在一个功率状态下并且将其链路中的另一链路保持在不同功率状态下的机会,以及其他示例。
如在以上描述的其他示例中指出的,可以利用多端口设备来使用专用链路将相同设备连接到多个不同的插口(例如,图7A所示)。可以在这样的设备(例如,705)上提供另外的逻辑(例如,825)以引导设备选择端口(和链路)中的哪一个用于发送各种设备发起的业务。在一些实例中,策略可以被定义(并且存储在设备的存储器中)以在针对业务确定适当端口(例如,710或715)时向策略逻辑825提供指导。在一些实施方式中,策略可以涉及定义某些类型的业务或具有用于特定端口的某些属性的业务的亲和性。实际上,策略或指导可以将某些业务映射到设备端口中的特定端口。因此,策略逻辑825可以确定特定数据是否具有与设备的策略之一相对应的属性,并确定特定数据是否针对设备端口中的特定端口具有亲和性。如果这样的确定能够被做出,则设备705可以使数据在对应的端口(例如,710或715)上被发送。针对其多个链路进行不完美的业务分布确定可以是可接受的,例如,在多插口系统中,因为处理器间链路可以确保业务最终路由到其目的地,因此即使由设备705选择的端口是将业务递送到目的地的次优链路也是如此。
可以定义策略以指导策略逻辑825确定用于发送上游业务的适当端口。作为示例,可以针对线程特定亲和性来定义策略,以使得对应于某些线程的业务(例如,控制业务、MSI、核心处理)指向某些端口(例如,基于对应于如由操作系统生成的线程的进程ID)。在另一示例中,可以针对存储器块特定亲和性来定义策略,以使得去往使用上游端口中的特定端口而更有效地到达的特定存储器块的数据使用特定端口指向目的地。此外,在业务响应于CPU发起的请求(例如,门铃写入)的情况下,策略可以要求策略逻辑825识别特定核心或插口(例如,来自请求的请求者ID)并将识别的请求者映射到设备端口中的特定端口(例如,710或715),以使得响应于该请求而发送的数据直接(或最直接地)在将设备705连接到请求者资源的端口上被发送。例如,可以通过驱动程序特定的或平台特定的知识来获得请求者到端口的这样的映射,以将请求者ID集与正确的插口(并且从而端口)相关联。在另一示例中,设备705的驱动程序(例如,845a-b)可以通过标记被发送到设备(例如,用端口或插口标识符)的工作描述符数据来明确地引导亲和性策略。策略逻辑825可以识别工作描述符中包括的标签,确定与标签相对应的端口(例如,710或715),并且使响应于工作描述符而由设备705生成的业务在对应的端口上被发送。
在一些实施方式中,系统的操作系统835可以帮助定义基于存储器的亲和性,例如,通过将映射传送到设备驱动程序(例如,845a-b),所述映射标识哪个存储器(例如,通过地址)是可通过哪个插口(并且从而连接到该插口的端口)直接访问的。在又一示例中,插口可以向设备705发送提示数据,策略逻辑825可以使所述提示数据被高速缓存在设备705处并且稍后被访问以动态地适应CPU的配置并且以向后兼容的方式实现新的存储器映射机制。例如,在一些情况下,驱动程序845a-b、操作系统835、应用840或在系统805上执行的其他逻辑可以(例如,从映射)确定特定类型的业务之间的亲和性(例如,由多端口设备(例如,705)发起的业务的类型或由多端口设备响应下游业务而发送的业务的类型),并且可以通过附加到被发送到设备的数据的提示来使亲和性被指示给设备(及其策略逻辑825)。在一些情况下,提示可以附加到与提示中指示的亲和性应用于的业务无关的下游业务。在其他情况下,提示可以被包括在提示应用于的类型的业务中。响应于提示,策略逻辑825可以确定用于发送(对应类型的)后续业务的端口。在一些情况下,策略逻辑825可以从提示确定策略(例如,确定寻址到落入给定地址范围内的特定目的地的业务总是在多个上行链路端口中的特定上行链路端口上被发送),以及其他示例。
在另一示例中,可以定义策略以使端口策略逻辑825将设备705的某些功能或活动映射到特定核心或插口。例如,可以首先需要通过来自系统CPU的指令启用能够使用设备705来实现的每个特征、功能或活动。在一个示例中,当用于启用特定设备活动的指令被接收时,端口策略逻辑825可以识别指令的源(例如,指令从特定核心或者插口到达设备端口中的特定端口710、715上等),并且然后定义策略,以使结合该活动由设备705生成的所有业务都在相同的链路(初始指令到达其上)上被发送,以及其他示例。实际上,可以专门针对操作系统835、平台和设备705定制策略。因此,用户(或甚至操作系统)可以定义用于结合特定多端口设备应用的策略。
管理和与多端口设备705的寄存器和配置空间(例如,830)的交互也可以是复杂的,例如在指定严格的链路到设备范例的系统中。主机系统(例如,805)可以是托管设备本地连接到的插口的物理计算系统,并且所有插口核心、设备和操作系统可以共享公共系统映像。主机系统软件可以包括操作系统835和一个或多个应用840。在一些实施方式中,主机系统软件可以预期在所有活动链路以下找到不同的设备。例如,操作系统835可以假设到设备(例如,705、855)的每个链路去往不同的设备,并且从而无法本机地辨识这些链路中的两个或更多个实际上连接到相同设备(例如,705)。此外,如图8的示例所示,一些平台上的每个链路可以需要不同的驱动程序845a、845b、850,从而引起潜在相同的驱动程序(例如,845a、845b)的多个实例被绑定到相同设备(例如,705)。在一个实施方式中,设备705可以向每个上行链路呈现PCIe配置空间,其中,供应商ID、设备ID、类/子类/编程接口(PI)对于每个上行链路是相同的,并且每个上行链路绑定到相同驱动程序的不同的实例(例如,845a和845b)。在一些实例中,多个驱动程序实例845a、845b中的驱动程序实例可以被指定为主要驱动程序而其余实例被指定为第二驱动程序。可以在相关联的设备特定配置空间(例如,通过特定比特值)、设备特定寄存器、描述符或其他机制中进行将冗余驱动程序实例指定为主要的或从属的。设备驱动程序(例如,主要或从属驱动程序)可以查询设备,并且设备可以指示其链路中的特定链路将要被指定为主要接口。被指定为从属的驱动程序(例如,845b)在一些实施方式中可以不发起设备705动作,但是可以仅被允许对来自操作系统835的需要的信号和消息进行响应。对于主要驱动程序(例如,845a),驱动程序用于如通常那样配置和操作设备705。在一些情况下,从属驱动程序可以利用对应的配置和存储器映射的I/O(MMIO)资源来帮助主机操作系统835在设备705的多个链路之间进行区分。然后,操作系统835可以使用该信息来帮助建立端口和/或插口亲和性。对于被架构的驱动程序(例如,非易失性存储器快速(NVMe)驱动程序,其中,主要/从属概念用于由“设备中(in box)”设备驱动程序理解),可以使用相干的PCIe配置比特/字段来在主要/从属链路之间进行区分(例如,通过位于PCIe链路能力3寄存器中的比特)并且同时指示驱动程序或指派的地址空间之间的关系(例如,它们均“属于”相同设备)。在一些实施方式中,软件和/或硬件机制(例如,便笺空间)可以另外地提供其中多个驱动程序实例已被绑定到多端口设备以促进驱动程序实例之间的通信的实施方式。
尽管前面的公开内容将其讨论和示例集中在多端口PCIe设备上,但是应当领会,以上原理和特征可以结合符合除PCIe之外的替代互连协议的其他多端口设备来实现(例如,它们也类似地针对单个设备上行链路进行调整)。同样地,虽然UPI作为潜在的处理器间(例如,插口到插口)链路协议)而被提到,但是其他链路技术可以替代地被使用。此外,尽管示例中的一些已经讨论了与两个插口系统相结合使用多端口设备,但是还应当认识到,以上原理可以等同地适用于使用三个、四个或更多个插口的系统。此外,利用这些特征、插口和设备的主机系统可以包括或体现各种计算设备和系统中的任何一种,包括大型机、服务器系统、个人计算机、移动计算机(例如,平板计算机、智能手机、个人数字系统等)、智能家电、游戏或娱乐控制台和机顶盒,以及其他示例。
例如,参考图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还包括解码模块925,其耦合到提取单元920以解码所提取的元素。在一个实施例中,提取逻辑包括分别与线程槽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控制器集线器的数据存储装置、无线收发器、闪存设备、音频控制器、网络控制器或其他已知的设备。设备980可以具有传统的单上行链路端口设计,或者可以被提供有多个上行链路端口,例如在以上示例中。
然而,最近,随着更多逻辑和设备正被集成在诸如SOC的单个管芯上,这些设备中的每一个可以被包括在处理器900上。例如,在一个实施例中,存储器控制器集线器与处理器900在相同封装和/或管芯上。这里,核心的一部分(核心上的部分)910包括一个或多个控制器,其用于与诸如存储器975或设备980之类的其他设备对接。包括互连和用于与这样的设备对接的控制器的该配置通常被称为核心上(on-core)(或非核心配置(un-coreconfiguration))。作为示例,片上接口910包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路905。然而,在SOC环境中,甚至更多的设备(例如,网络接口、协处理器、存储器975、设备980和任何其他已知的计算机设备/接口)可以集成在单个管芯或集成电路上以提供具有高功能和低功耗的小形状因子。
在一个实施例中,处理器900能够执行编译器、优化和/或转换器代码977以编译、转换和/或优化应用代码976以支持本文描述的装置和方法或与其对接。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序集。通常,用编译器编译程序/应用代码是在多个阶段和多遍中完成的,以将高级编程语言代码转换成低级机器或汇编语言代码。然而,单遍编译器仍可以用于简单编译。编译器可以利用任何已知的编译技术并执行任何已知的编译器操作,例如词法分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。
较大的编译器通常包括多个阶段,但是大多数情况下这些阶段被包括在两个一般阶段内:(1)前端,即通常句法处理、语义处理和一些变换/优化可以发生的地方,以及(2)后端,即通常分析、转换、优化和代码生成发生的地方。一些编译器引用中间部分,其说明了编译器的前端和后端之间描绘的模糊。作为结果,对编译器的插入、关联、生成或其他操作的引用可以在上述阶段或遍中的任何阶段或遍中以及编译器的任何其他已知阶段或遍中发生。作为说明性示例,编译器潜在地在编译的一个或多个阶段中插入操作、调用、函数等,例如在编译的前端阶段插入调用/操作,并且然后在变换阶段期间将调用/操作变换成更低级的代码。请注意,在动态编译期间,编译器代码或动态优化代码可以插入这样的操作/调用,以及优化代码以用于在运行期间执行。作为特定说明性示例,可以在运行时期间动态地优化二进制代码(已编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。
与编译器类似,转换器(例如,二进制转换器)静态地或动态地转换代码以用于优化和/或转换代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的引用可以指代:(1)动态地或静态地执行编译器程序、优化代码优化器或转换器以编译程序代码、维护软件结构、执行其他操作、优化代码或转换代码;(2)执行包括操作/调用的主程序代码,例如已优化/编译的应用代码;(3)执行与主程序代码相关联的其他程序代码(例如,库),以维护软件结构、执行其他软件相关操作或优化代码;或(4)其组合。
现在参考图10,示出了根据本公开内容的实施例的第二系统1000的框图。如图10所示,多处理器系统1000是点对点互连系统,并且包括经由点对点互连1050耦合的第一处理器1070和第二处理器1080。处理器1070和1080中的每一个可以是处理器的某个版本。在一个实施例中,1052和1054是串行点对点相干互连结构(例如,高性能架构)的部分。作为结果,本文描述的构思可以在UPI架构内被实现。
虽然仅示出具有两个处理器1070、1080,但应当理解,本公开内容的范围不限于此。在其他实施例中,一个或多个另外的处理器可以存在于给定处理器中。
示出了处理器1070和1080分别包括集成存储器控制器单元1072和1082。处理器1070还包括点对点(P-P)接口1076和1078以作为其总线控制器单元的部分;类似地,第二处理器1080包括P-P接口1086和1088。处理器1070、1080可以使用P-P接口电路1078、1088经由点对点(P-P)接口1050交换信息。如图10所示,IMC 1072和1082将处理器耦合到相应的存储器,即存储器1032和存储器1034,其可以是本地附接到相应处理器的主存储器的部分。
处理器1070、1080均使用点对点接口电路1076、1094、1086、1098经由个别P-P接口1052、1054与芯片组1090交换信息。芯片组1090可以连接到一个或多个设备(包括具有多个上行链路端口的设备)(例如,高性能图形电路1038),以及通过接口电路1092沿着高性能互连1039启用的链路与这样的设备交换信息,以及其他示例。
共享高速缓存(未示出)可以被包括在处理器中或两个处理器外部;而经由P-P互连与处理器连接,以使得如果处理器被置于低功率模式下,则任何一个或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。
芯片组1090可以经由接口1096耦合到第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(PCI)总线,或者诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本公开内容的范围不限于此。
如图10所示,各种I/O设备1014耦合到第一总线1016以及将第一总线1016耦合到第二总线1020的总线桥1018。在一个实施例中,第二总线1020包括低引脚数(LPC)总线。在一个实施例中,各种设备耦合到第二总线1020,包括例如键盘和/或鼠标1022、通信设备1027和存储单元1028,所述存储单元例如通常包括指令/代码和数据1030的磁盘驱动器或其他大容量存储设备。此外,音频I/O 1024被示出为耦合到第二总线1020。注意,其他架构是可能的,其中,所包括的组件和互连架构是变化的。例如,代替图10的点对点架构,系统可以实现多点总线或其他这样的架构。
虽然已经关于有限数量的实施例描述了本文的构思,但是本领域技术人员将从中领会到许多修改和变型。所附权利要求旨在覆盖落入本公开内容的真实精神和范围内的所有这样的修改和变型。
设计可以经历从创建到模拟到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在模拟中有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。另外,可以在设计过程的一些阶段处产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在某个阶段处达到表示硬件模型中各种设备的物理布置的数据级别。在其中使用传统半导体制造技术的情况下,表示硬件模型的数据可以是指定用于生产集成电路的掩模在不同掩模层上存在或不存在各种特征的数据。在一些实施方式中,这样的数据可以以诸如图形数据系统II(GDS II)、开放艺术品系统交换标准(OASIS)或类似格式之类的数据库文件格式来存储。
在一些实施方式中,基于软件的硬件模型以及HDL和其他功能描述语言对象可以包括寄存器传送语言(RTL)文件,以及其他示例。这样的对象可以是机器可解析的,以使得设计工具可以接受HDL对象(或模型)、解析HDL对象以获得所描述的硬件的属性,并且从对象确定物理电路和/或片上布局。设计工具的输出可以用于制造物理设备。例如,设计工具可以确定来自HDL对象的各种硬件和/或固件元素的配置,例如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、结构拓扑以及为了实现在HDL对象中建模的系统而将被实现的其他属性。设计工具可以包括用于确定片上系统(SoC)和其他硬件设备的拓扑和结构配置的工具。在一些实例中,HDL对象可以用作用于开发可以由制造设备用于制造所描述的硬件的模型和设计文件的基础。实际上,可以提供HDL对象本身作为制造系统软件的输入以产生所描述的硬件。
在设计的任何表示中,数据可以被存储在任何形式的机器可读介质中。存储器或诸如盘(disc)之类的磁或光存储装置可以是机器可读介质,其用于存储经由调制或以其他方式生成以发送这样的信息的光波或电波发送的信息。当发送指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重传的程度上,制作新的副本。因此,通信提供者或网络提供者可以将体现本公开内容的实施例的技术的诸如被编码到载波中的信息之类的制品至少临时地存储在有形的机器可读介质上。
本文使用的模块指代硬件、软件和/或固件的任何组合。作为示例,模块包括与用于存储适于由微控制器执行的代码的非暂时性介质相关联的硬件(例如,微控制器)。因此,在一个实施例中,对模块的引用指代特别配置为辨识和/或执行用于被保存在非暂时性介质上的代码的硬件。此外,在另一实施例中,模块的使用指代包括特别适于由微控制器执行以执行预定操作的代码的非暂时性介质。并且,如可以推断的,在又一实施例中,术语模块(在该示例中)可以指代微控制器和非暂时性介质的组合。通常,被示出为单独的模块界限通常是变化的并且潜在地重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,例如晶体管、寄存器或其他硬件,例如可编程逻辑设备。
在一个实施例中,短语“被配置为”的使用指代布置、组合、制造、提供以售卖、进口和/或设计用于执行指定或确定的任务的装置、硬件、逻辑或元素。在该示例中,不正在操作的装置或其元素仍“被配置为”执行指定任务,如果其被设计、耦合和/或互连以执行所述指定的任务。作为纯粹说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置为”将使能信号提供给时钟的逻辑门不包括可以提供1或0的每个潜在的逻辑门。相反,逻辑门是以在操作期间1或0输出用于启用时钟的某种方式耦合的逻辑门。再次注意到,术语“被配置为”的使用不要求操作,而是集中于装置、硬件和/或元素的潜在状态,其中,在潜在状态下,装置、硬件和/或元素被设计为当装置、硬件和/或元素正在操作时执行特定任务。
此外,在一个实施例中短语“用于”、“能够/能”和/或“可操作以”的使用指代被设计为以这样的方式来实现以指定方式使用装置、逻辑、硬件和/或元素的某种装置、逻辑、硬件和/或元素。如以上提到的,在一个实施例中,用于、能够或可操作以的使用指代装置、逻辑、硬件和/或元素的潜在状态,其中,装置、逻辑、硬件和/或元素没有正在操作,而是以实现以指定方式使用装置的方式被设计。
如本文使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑上的的使用值还被称为1和0,其简单地表示二进制逻辑状态。例如,1表示高逻辑电平,并且0表示低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可以是能够保存单个逻辑值或多个逻辑值的。然而,已经使用了计算机系统中的其他值表示。例如,十进制数十还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的任何信息表示。
此外,状态可以由值或值的部分表示。作为示例,诸如逻辑一之类的第一值可以表示默认或初始状态,而诸如逻辑零之类的第二值可以表示非默认值。另外,在一个实施例中,术语复位和置位分别指代默认值或状态和更新的值或状态。例如,默认值潜在地包括高逻辑值,即复位,而更新的值潜在地包括低逻辑值,即置位。注意,值的任何组合可以用于表示任何数量的状态。
以上阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的可由处理元件执行的指令或代码来实现。非暂时性机器可访问/可读介质包括提供(即,存储和/或发送)采用可由诸如计算机或电子系统之类的机器读取的形式的信息的任何机构。例如,非暂时性机器可访问介质包括随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储器设备;电存储设备;光存储设备;声存储设备;用于保存从暂时性(传播的)信号(例如,载波、红外信号、数字信号)接收到的信息的其他形式的存储设备;等等,其区别于可从其接收信息的非暂时性介质。
用于对逻辑进行编程以执行本公开内容的实施例的指令可以存储在系统中的存储器内,所述存储器例如DRAM、高速缓存、闪速存储器或其他存储装置。此外,指令可以经由网络或通过其他计算机可读介质来分布。因此,机器可读介质可以包括用于存储或发送采用机器(例如,计算机)可读形式的信息的任何机构,而不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或用于经由电、光、声或其他形式的传播的信号(例如,载波、红外信号、数字信号等)在互联网上的信息传输的有形的机器可读存储装置。因此,计算机可读介质包括适合于存储或发送采用机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
实施例的方面可以包括以下示例中的一个或组合:
示例1是一种装置,包括:设备,包括两个或更多个上行链路端口,其用于经由两个或更多个链路将设备连接到一个或多个插口,其中,插口中的每一个包括一个或多个处理核心,并且两个或更多个链路中的每一个符合特定互连协议。装置还可以包括I/O逻辑,其用于:识别将被发送到一个或多个处理核心以进行处理的数据;确定与数据关联的亲和属性;以及基于亲和属性来确定两个或更多个链路中的哪一个用于将数据发送到一个或多个处理核心。
示例2可以包括示例1的主题,其中,一个或多个插口包括两个或更多个插口,并且两个或更多个上行链路端口均连接到两个或更多个插口中的相应的插口。
示例3可以包括示例2的主题,其中,该装置还包括分区逻辑,其用于将设备作为两个或更多个逻辑设备实例呈现给两个或更多个插口,其中,逻辑设备实例中的每一个对应于两个或更多个插口中的相应的插口并经由两个或更多个上行链路端口中的相应的上行链路端口进行连接。
示例4可以包括示例3的主题,其中,分区逻辑用于选择性地实现将设备划分成两个或更多个逻辑设备实例。
示例5可以包括示例1-4中任一项的主题,其中,特定互连协议适用于具有单个上行链路端口的设备。
示例6可以包括示例1-5中任一项的主题,其中,I/O逻辑还用于识别在设备处接收的请求,数据将响应于所述请求而被发送,并且亲和属性对应于请求。
示例7可以包括示例6的主题,其中,亲和属性包括请求者标识符,I/O逻辑还用于识别两个或更多个上行链路端口中的特定上行链路端口对应于请求者标识符,并且基于请求者标识符来在特定上行链路端口上发送数据。
示例8可以包括示例7的主题,其中,请求者标识符标识处理核心中的特定处理核心。
示例9可以包括示例6的主题,其中,请求在两个或更多个上行链路端口中的特定上行链路端口上被接收,并且数据将基于在特定上行链路端口上接收的请求而在特定上行链路端口上被发送。
示例10可以包括示例6的主题,其中,请求包括来自设备的驱动程序的工作描述符,亲和属性包括由驱动程序插入工作描述符中的提示,并且I/O逻辑用于基于提示来确定数据将在两个或更多个上行链路端口中的特定上行链路端口上被发送。
示例11可以包括示例1-10中任一项的主题,其中,两个或更多个上行链路端口用于连接到由两个或更多个链路连接的单个插口。
示例12可以包括示例1-11中任一项的主题,还包括功率管理逻辑,其用于:针对两个或更多个链路中的对应于数据的发送的特定链路,确定到特定功率状态的链路状态转换;以及使两个或更多个链路中的另一链路也基于特定链路的所述链路状态转换而转换到特定功率状态。
示例13可以包括示例1-12中任一项的主题,其中,特定互连协议包括基于外围组件快速互连(PCIe)的协议。
示例14可以包括示例1-13中任一项的主题,其中,设备包括PCIe兼容设备。
示例15是一种系统,包括:存储器;处理器;操作系统;特定驱动程序的第一实例,其中,特定驱动程序用于设备类型,并且特定驱动程序的第一实例被指派给第一互连链路以将处理器连接到设备的特定实例;以及特定驱动程序的第二实例,其中,特定驱动程序的第二实例被指派给第二互连链路以将处理器连接到设备的特定实例,其中,设备的特定实例包括两个或更多个上行链路端口,特定驱动程序的第一实例被指定为主要实例,并且操作系统使用特定驱动程序的第一实例来与设备的特定实例通信。
示例16可以包括示例15的主题,其中,处理器包括多个插口,多个插口中的每一个包括一个或多个处理核心,第一互连链路将设备的特定实例连接到多个插口中的第一插口,并且第二互连链路将设备的特定实例连接到多个插口中的第二插口。
示例17可以包括示例15-16中任一项的主题,其中,特定驱动程序的第一实例用于:确定工作请求对应于多个插口中的特定插口;将提示附加到工作请求,以识别由设备的特定实例针对工作请求生成的数据将在两个或更多个上行链路端口中的特定上行链路端口上被发送;以及将具有提示的工作请求发送到设备的特定实例。
示例18是一种系统,包括:处理器,其包括多个插口,其中,每个插口包括一个或多个处理核心,并且多个插口通过一个或多个处理器间链路互连。系统还可以包括特定设备,其包括两个或更多个上行链路端口,所述上行链路端口用于经由两个或更多个链路将特定设备连接到多个插口中的两个或更多个,其中,两个或更多个链路中的每一个都符合特定互连协议。特定设备还包括端口策略逻辑,所述逻辑用于:识别将被发送到处理器以进行处理的数据;以及根据一个或多个策略来确定两个或更多个链路中的哪一个用于发送数据,其中,一个或多个策略用于尝试将数据在一个或多个处理器间链路上的路由最小化。
示例19可以包括示例18的主题,其中,多个插口中的每一个连接到相应的本地存储器块,数据包括对本地存储器块中的特定本地存储器块的写入请求,并且策略用于尝试引导数据到两个或更多个链路中的特定链路,其将特定设备连接到直接连接到特定本地存储器块的插口。
示例20可以包括示例18-19中任一项的主题,还包括另一设备,其包括单个上行链路端口,其中,另一设备经由链路连接到插口中的特定插口。
示例21可以包括示例18-20中任一项的主题,还包括用于特定设备的一个或多个驱动程序和操作系统。
示例22可以包括示例18-21中任一项的主题,其中,特定互连协议包括基于外围组件快速互连(PCIe)的协议,并且一个或多个处理器间链路使用基于UltraPath互连(UPI)的协议。
示例23是一种方法,包括:识别将由设备发送到处理器的数据,其中,处理器包括多个插口,多个插口中的每一个包括一个或多个处理核心,设备包括两个或更多个上行链路端口,其经由两个或更多个相应的链路将设备连接到多个插口中的两个或更多个,并且两个或更多个链路中的每一个都符合特定互连协议;确定与数据相关联的亲和属性;基于亲和属性来确定两个或更多个链路中的特定链路用于将数据发送到一个或多个处理核心;以及使用两个或更多个上行链路端口中的对应于特定链路的特定上行链路端口来将数据发送到处理器。
示例24可以包括示例23的主题,其中,特定互连协议适用于具有单个上行链路端口的设备。
示例25可以包括示例23-24中任一项的主题,还包括在设备处接收请求,其中,数据将响应于请求而被发送,并且亲和属性对应于请求。
示例26可以包括示例25的主题,其中,亲和属性包括请求者标识符,并且确定特定链路包括确定特定链路对应于请求者标识符。
示例27可以包括示例26的主题,其中,请求者标识符标识处理核心中的特定处理核心。
示例28可以包括示例25的主题,其中,请求在特定上行链路端口上被接收,并且数据将基于在特定上行链路端口上接收的请求而在特定上行链路端口上被发送。
示例29可以包括示例25的主题,其中,请求包括来自设备的驱动程序的工作描述符,亲和属性包括由驱动程序插入工作描述符中的提示,并且数据基于提示而被确定为在两个或更多个上行链路端口中的特定上行链路端口上被发送。
示例30可以包括示例23-29中任一项的主题,其中,两个或更多个上行链路端口用于连接到由两个或更多个链路连接的单个插口。
示例31可以包括示例23-30中任一项的主题,还包括:针对两个或更多个链路中的对应于数据的发送的特定链路,确定到特定功率状态的链路状态转换;以及基于特定链路的链路状态转换来使两个或更多个链路中的另一链路也转换到特定功率状态。
示例32可以包括示例23-31中任一项的主题,其中,特定互连协议包括基于外围组件快速互连(PCIe)的协议。
示例33可以包括示例23-32中任一项的主题,其中,设备包括PCIe兼容设备。
示例34是一种系统,其包括用于执行示例23-33中任一项的方法的单元。
示例35可以包括示例34的主题,其中,单元包括其上存储有指令的计算机可读介质,并且指令能够由机器执行以使机器执行对应于权利要求23-33中任一项的步骤。
示例36可以包括示例35的主题,其中,机器包括设备的处理器。
贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合实施例描述的特定的特征、结构或特性被包括在本公开内容的至少一个实施例中。因此,贯穿本说明书在各处出现的短语“在一个实施例中”或“在实施例中”不一定都指代相同实施例。此外,特定的特征、结构或特性可以以任何合适的方式组合在一个或多个实施例中。
在前面的说明书中,已经参考具体的示例性实施例给出了详细说明。然而,将显而易见的是,可以对其进行各种修改和改变,而不脱离本公开内容的如所附权利要求中阐述的更宽的精神和范围。说明书和附图因此应当被认为是说明性意义的而非限制性意义的。此外,前面对实施例和其他示例性语言的使用不一定指代相同实施例或相同示例,而是可以指代不同和独特的实施例以及潜在相同的实施例。
Claims (25)
1.一种装置,包括:
网络适配器,包括:
第一外围组件互连快速PCIe端口,其中,所述第一PCIe端口包括第一协议电路模块,用于实现符合基于PCIe的协议的第一多通道链路,所述第一多通道链路包括至少8个通道;以及
第二PCIe端口,
其中,所述第二PCIe端口包括第二协议电路模块,用于实现符合所述基于PCIe的协议的第二多通道链路,并且所述第二多通道链路包括至少8个通道;
其中,所述第一PCIe端口和所述第二PCIe端口用于将所述网络适配器连接到一个或多个计算设备,所述第一PCIe端口经由所述第一多通道链路将所述网络适配器连接到所述一个或多个计算设备的第一处理器插口,并且所述第二PCIe端口经由所述第二多通道链路将所述网络适配器连接到所述一个或多个计算设备的第二处理器插口。
2.如权利要求1所述的装置,其中,所述网络适配器进一步包括用于以下操作的电路模块:
识别来自网络的数据;以及
确定是通过所述第一PCIe端口还是所述第二PCIe端口来发送所述数据。
3.如权利要求2所述的装置,其中,所述电路模块用于识别所述数据的属性并且基于所述属性通过所述第一PCIe端口或所述第二PCIe端口来发送所述数据。
4.如权利要求2所述的装置,其中,所述网络适配器进一步包括第三端口,用于通过非PCIe通道耦合到网络。
5.如权利要求4所述的装置,其中,所述第三端口用于经由以太网耦合到所述网络。
6.如权利要求4所述的装置,其中,所述第三端口用于经由InfiniBand通道耦合到所述网络。
7.如权利要求4所述的装置,其中,所述第三端口是所述装置用于耦合到所述网络的唯一端口。
8.如权利要求1所述的装置,其中,所述第一PCIe端口包括16个通道,并且所述第二PCIe端口包括16个通道。
9.如权利要求1所述的装置,其中,所述一个或多个计算设备包括特定计算设备,并且所述第一插口和所述第二插口是同一特定计算设备的插口。
10.如权利要求1所述的装置,其中,所述第一插口位于所述一个或多个计算设备中的第一计算设备上,并且所述第二插口位于所述一个或多个计算设备中的单独的第二计算设备上。
11.如权利要求1所述的装置,其中,所述基于PCIe的协议包括PCIe第3代协议,并且所述第一PCIe端口和所述第二PCIe端口中的每个支持8千兆传输/秒(GT/s)的数据速率。
12.如权利要求1所述的装置,其中,所述基于PCIe的协议包括PCIe第4代协议,并且所述第一PCIe端口和所述第二PCIe端口中的每个支持16GT/s的数据速率。
13.一种方法,包括:
在网络适配器的特定端口处接收来自网络的数据,其中,所述数据是通过非外围组件互连快速PCIe通道在所述特定端口处被接收的;
所述网络适配器包括用于实现包括8个或更多个通道的第一PCIe链路的第一PCIe端口和用于实现包括8个或更多个通道的第二链路的第二PCIe端口;
所述第一PCIe链路将所述网络适配器耦合到第一处理器插口,并且所述第二PCIe链路将所述网络适配器耦合到处理器第二插口;
在所述网络适配器处,基于所述数据的属性确定是否通过所述第一PCIe端口或所述第二PCIe端口中的所选择的一个来发送所述数据;以及
通过所选择的PCIe端口来发送所述数据。
14.如权利要求13所述的方法,其中,所述特定端口经由以太网通道耦合到所述网络。
15.如权利要求13所述的方法,其中,所述特定端口经由InfiniBand通道耦合到所述网络。
16.如权利要求13所述的方法,其中,所述第一插口和所述第二插口位于同一板上。
17.如权利要求13所述的方法,其中,所述特定端口是所述网络适配器到所述网络的唯一连接。
18.一种系统,包括:
与第一处理器设备相关联的第一插口;
与第二处理器设备相关联的第二插口;以及
网络适配器,包括:
第一外围组件互连快速PCIe端口,其中,所述第一PCIe端口包括第一协议电路模块,用于实现符合基于PCIe的协议的第一多通道链路,并且所述第一多通道链路包括至少8个物理通道;以及
第二PCIe端口,
其中,所述第二PCIe端口包括第二协议电路模块,用于实现符合所述基于PCIe的协议的第二多通道链路,并且所述第二多通道链路包括至少8个物理通道;
其中,所述第一PCIe端口和所述第二PCIe端口将所述网络适配器连接到一个或多个计算设备,所述第一PCIe端口经由所述第一多通道链路将所述网络适配器连接到所述一个或多个计算设备的第一插口,并且所述第二PCIe端口经由所述第二多通道链路将所述网络适配器连接到所述一个或多个计算设备的第二插口。
19.如权利要求18所述的系统,其中,所述网络适配器包括用于耦合到网络的以太网接口。
20.如权利要求18所述的系统,其中,所述网络适配器包括用于耦合到网络的InfiniBand接口。
21.如权利要求18所述的系统,其中,所述第一插口和所述第二插口分别将所述第一处理器和所述第二处理器连接到板;或者其中,所述第一插口和所述第二插口通过处理器间总线互连。
22.如权利要求21所述的系统,其中,所述处理器间总线是基于UltraPath互连(UPI)协议的。
23.如权利要求18所述的系统,进一步包括服务器,其中,所述服务器包括所述第一处理器设备、所述第二处理器设备和所述网络适配器。
24.一种机器可读介质,其包括指令,当所述指令被执行时,使机器执行如权利要求13至17中的任一项所述的方法。
25.一种装置,包括用于执行如权利要求13至17中的任一项所述的方法的模块。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/200,260 US10503684B2 (en) | 2016-07-01 | 2016-07-01 | Multiple uplink port devices |
US15/200,260 | 2016-07-01 | ||
CN201780032402.1A CN109154924B (zh) | 2016-07-01 | 2017-05-29 | 多个上行链路端口设备 |
PCT/US2017/034916 WO2018004916A1 (en) | 2016-07-01 | 2017-05-29 | Multiple uplink port devices |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780032402.1A Division CN109154924B (zh) | 2016-07-01 | 2017-05-29 | 多个上行链路端口设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117336381A true CN117336381A (zh) | 2024-01-02 |
Family
ID=60787768
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780032402.1A Active CN109154924B (zh) | 2016-07-01 | 2017-05-29 | 多个上行链路端口设备 |
CN202311432940.3A Pending CN117336381A (zh) | 2016-07-01 | 2017-05-29 | 多个上行链路端口设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780032402.1A Active CN109154924B (zh) | 2016-07-01 | 2017-05-29 | 多个上行链路端口设备 |
Country Status (3)
Country | Link |
---|---|
US (3) | US10503684B2 (zh) |
CN (2) | CN109154924B (zh) |
WO (1) | WO2018004916A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700975B (zh) * | 2016-01-08 | 2019-05-24 | 华为技术有限公司 | 一种中央处理器cpu热移除、热添加方法及装置 |
US10503684B2 (en) * | 2016-07-01 | 2019-12-10 | Intel Corporation | Multiple uplink port devices |
US10387358B2 (en) * | 2017-02-13 | 2019-08-20 | Mellanox Technologies, Ltd. | Multi-PCIe socket NIC OS interface |
US11347662B2 (en) * | 2017-09-30 | 2022-05-31 | Intel Corporation | Method, apparatus, system for early page granular hints from a PCIe device |
US10992967B2 (en) * | 2017-12-05 | 2021-04-27 | Sony Interactive Entertainment LLC | Ultra high-speed low-latency network storage |
US10489341B1 (en) * | 2018-06-25 | 2019-11-26 | Quanta Computer Inc. | Flexible interconnect port connection |
CN110825485A (zh) * | 2018-08-07 | 2020-02-21 | 华为技术有限公司 | 数据处理的方法、设备和服务器 |
US10521388B2 (en) * | 2018-09-28 | 2019-12-31 | Intel Corporation | Multi-uplink device enumeration and management |
TWI703446B (zh) * | 2019-01-29 | 2020-09-01 | 瑞昱半導體股份有限公司 | 介面轉接電路 |
US11973650B2 (en) * | 2019-04-25 | 2024-04-30 | Liqid Inc. | Multi-protocol communication fabric control |
US10860512B2 (en) * | 2019-04-26 | 2020-12-08 | Dell Products L.P. | Processor interconnect link training system |
US11106612B2 (en) * | 2019-09-20 | 2021-08-31 | Apple Inc. | Coordinating operations of multiple communication chips via local hub device |
CN111858458B (zh) * | 2020-06-19 | 2022-05-24 | 苏州浪潮智能科技有限公司 | 一种互联通道的调整方法、装置、系统、设备和介质 |
US11775452B2 (en) * | 2020-07-23 | 2023-10-03 | MemRay Corporation | Non-volatile memory controller device and non-volatile memory device |
CN112235817B (zh) * | 2020-10-16 | 2022-04-01 | 重庆邮电大学 | 一种5g通信系统资源分配方法 |
US11194745B1 (en) * | 2020-10-28 | 2021-12-07 | EMC IP Holding Company LLC | Replication enhancement method for write-intensive IoT applications |
US11442776B2 (en) | 2020-12-11 | 2022-09-13 | Liqid Inc. | Execution job compute unit composition in computing clusters |
EP4020295A1 (en) * | 2020-12-22 | 2022-06-29 | INTEL Corporation | Platform security mechanism |
US11741227B2 (en) | 2021-06-22 | 2023-08-29 | Intel Corporation | Platform security mechanism |
US20220263770A1 (en) * | 2021-02-18 | 2022-08-18 | Intel Corporation | Application-to-application resource reservation schemes for precision networking |
US11620245B2 (en) | 2021-05-09 | 2023-04-04 | Mellanox Technologies, Ltd. | Multi-socket network interface controller with consistent transaction ordering |
US20210397530A1 (en) * | 2021-06-25 | 2021-12-23 | Intel Corporation | Methods and apparatus to transmit central processing unit performance information to an operating system |
US20230214346A1 (en) * | 2021-12-30 | 2023-07-06 | Ati Technologies Ulc | Allocating peripheral component interface express (pcie) streams in a configurable multiport pcie controller |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6611891B1 (en) * | 1998-11-23 | 2003-08-26 | Advanced Micro Devices, Inc. | Computer resource configuration mechanism across a multi-pipe communication link |
US6470410B1 (en) * | 1998-11-23 | 2002-10-22 | Advanced Micro Devices, Inc. | Target side concentrator mechanism for connecting multiple logical pipes to a single function utilizing a computer interconnection bus |
US7809969B2 (en) | 2005-12-28 | 2010-10-05 | Intel Corporation | Using asymmetric lanes dynamically in a multi-lane serial link |
US20090144476A1 (en) | 2007-12-04 | 2009-06-04 | Xiaohua Cai | Hot plug in a link based system |
WO2010132943A1 (en) | 2009-05-20 | 2010-11-25 | Chronologic Pty. Ltd. | Jitter reduction method and apparatus for distributed synchronised clock architecture |
US9176909B2 (en) * | 2009-12-11 | 2015-11-03 | Nvidia Corporation | Aggregating unoccupied PCI-e links to provide greater bandwidth |
US9288555B2 (en) | 2011-11-01 | 2016-03-15 | Plexxi Inc. | Data center network architecture |
CN103167594B (zh) * | 2011-12-19 | 2015-05-27 | 华为技术有限公司 | 一种上行发射功率控制方法及用户设备 |
US9134984B2 (en) * | 2012-05-11 | 2015-09-15 | Hobnob, Inc. | Virtual network adapter |
US9137173B2 (en) * | 2012-06-19 | 2015-09-15 | Advanced Micro Devices, Inc. | Devices and methods for interconnecting server nodes |
US20140281067A1 (en) | 2013-03-15 | 2014-09-18 | Debendra Das Sharma | Apparatus, system, and method for performing link training and equalization |
US9489322B2 (en) * | 2013-09-03 | 2016-11-08 | Intel Corporation | Reducing latency of unified memory transactions |
WO2016003408A1 (en) * | 2014-06-30 | 2016-01-07 | Hewlett-Packard Development Company, L.P. | Runtime drive detection and configuration |
US9842075B1 (en) * | 2014-09-12 | 2017-12-12 | Amazon Technologies, Inc. | Presenting multiple endpoints from an enhanced PCI express endpoint device |
US9921768B2 (en) * | 2014-12-18 | 2018-03-20 | Intel Corporation | Low power entry in a shared memory link |
US10503684B2 (en) * | 2016-07-01 | 2019-12-10 | Intel Corporation | Multiple uplink port devices |
TWI760615B (zh) * | 2019-06-05 | 2022-04-11 | 瑞昱半導體股份有限公司 | 用於進行記憶裝置之寫保護指令之偵測控制的方法、控制晶片以及電子裝置 |
-
2016
- 2016-07-01 US US15/200,260 patent/US10503684B2/en active Active
-
2017
- 2017-05-29 CN CN201780032402.1A patent/CN109154924B/zh active Active
- 2017-05-29 CN CN202311432940.3A patent/CN117336381A/zh active Pending
- 2017-05-29 WO PCT/US2017/034916 patent/WO2018004916A1/en active Application Filing
-
2019
- 2019-12-06 US US16/706,637 patent/US20200183876A1/en not_active Abandoned
-
2021
- 2021-01-20 US US17/153,751 patent/US11657015B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20180004703A1 (en) | 2018-01-04 |
US10503684B2 (en) | 2019-12-10 |
CN109154924A (zh) | 2019-01-04 |
WO2018004916A1 (en) | 2018-01-04 |
US20210165756A1 (en) | 2021-06-03 |
US20200183876A1 (en) | 2020-06-11 |
US11657015B2 (en) | 2023-05-23 |
CN109154924B (zh) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109154924B (zh) | 多个上行链路端口设备 | |
CN110036380B (zh) | 用于高速互连中低延迟的双模phy | |
CN107077521B (zh) | 片上系统配置元数据 | |
CN105793829B (zh) | 用于集成组件互连的装置、方法和系统 | |
CN108614783B (zh) | 一致性协议表 | |
CN105793830B (zh) | 一种在节点之间共享存储器和i/o服务的装置、方法、系统 | |
TWI570565B (zh) | 池式記憶體位址轉譯之技術 | |
CN108337910B (zh) | 用于软件定义的互连交换机的架构 | |
JP6147840B2 (ja) | ルートポート及びRPIE(RootPortIntegratedEndpoint)のレジューム時間を向上させるための方法、装置及びシステム | |
CN108604209B (zh) | 扁平化端口桥 | |
CN110262923B (zh) | 带内重定时器寄存器访问 | |
CN108292267B (zh) | 用于配置装置的方法、系统和设备 | |
CN111797040A (zh) | 多个协议层封装互连的虚拟链路状态 | |
US10120774B2 (en) | Coherence protocol tables | |
JP2021090188A (ja) | ストリーミングファブリックインタフェース | |
CN107003838B (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 |