CN115827513A - 利用可编程交织粒度的用于cxl类型-2设备的可扩展地址解码方案 - Google Patents

利用可编程交织粒度的用于cxl类型-2设备的可扩展地址解码方案 Download PDF

Info

Publication number
CN115827513A
CN115827513A CN202210978992.XA CN202210978992A CN115827513A CN 115827513 A CN115827513 A CN 115827513A CN 202210978992 A CN202210978992 A CN 202210978992A CN 115827513 A CN115827513 A CN 115827513A
Authority
CN
China
Prior art keywords
devices
processor
memory
cxl
logic circuitry
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
Application number
CN202210978992.XA
Other languages
English (en)
Inventor
A·K·艾纳曼德拉姆
R·古普塔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN115827513A publication Critical patent/CN115827513A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0669Configuration or reconfiguration with decentralised address assignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/409Mechanical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

描述了涉及利用可编程交织粒度的、用于计算快速链路TM或CXLTM类型‑2设备的可扩展地址解码方案的方法和装置。在实施例中,配置器逻辑电路系统确定针对耦合到处理器的插槽的多个设备的交织粒度和地址范围大小。用于耦合到处理器的插槽的多个设备中的两个或更多个设备的单个系统地址解码器(SAD)规则被存储在存储器中。指向来自多个设备中的第一设备的存储器访问事务根据SAD规则被路由到第一设备。还公开并要求保护其他实施例。

Description

利用可编程交织粒度的用于CXL类型-2设备的可扩展地址解 码方案
技术领域
本公开总体上涉及电子学领域。更具体地,实施例涉及利用可编程交织粒度的用于计算快速链路TM(Compute Express LinkTM,CXLTM)类型-2设备的可扩展地址解码方案。
背景技术
计算快速链路TM或CXLTM是用于高速处理器或CPU(中央处理单元)至设备以及至存储器的通信的开放式标准互连,旨在加速下一代数据中心性能。CXL被建立在外围组件互连快速(Peripheral Component Interconnect express,PCIe)物理和电气接口上,具有在三个关键领域中的协议:输入/输出(Input/Output,“I/O”或“IO”)、存储器和缓存一致性。
附图说明
参考所附附图提供详细描述。在附图中,附图标记最左边的(一个或多个)数字标识该附图标记在其中首次出现的附图。相同的附图标记在不同附图中的使用指示类似或相同的项。
图1图示出可用于实现一个或多个实施例的系统的框图。
图2图示出具有含有可变存储器容量的多个设备的处理器插槽的框图,该处理器插槽可由一个或多个实施例使用。
图3和图4图示出样本系统地址映射配置,这些配置可用于一个或多个实施例中。
图5图示出根据实施例的、用于提供利用可编程交织粒度的用于设备的可扩展地址解码方案的方法的流程图。
图6A是图示出根据实施例的示例性有序管线以及示例性寄存器重命名、乱序发出/执行管线两者的框图。
图6B是图示根据实施例的要包括在处理器中的有序体系结构核心的示例性实施例和示例性的寄存器重命名、乱序发出/执行体系结构核心两者的框图。
图7图示根据实施例的SOC(片上系统)封装的框图。
图8是根据实施例的处理系统的框图。
图9是根据一些实施例的具有一个或多个处理器核心的处理器的实施例的框图。
图10是根据实施例的图形处理器的框图。
具体实施方式
在下列描述中,阐述了众多特定细节以便提供对各实施例的全面理解。然而,在没有这些特定细节的情况下,也可实施各实施例。在其他实例中,未详细描述公知的方法、过程、组件和电路,以免使特定实施例变得模糊。此外,实施例的各方面可使用各种手段来执行,诸如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)、或硬件与软件的某种组合。出于本公开的目的,对“逻辑”的引用将意指硬件(诸如,逻辑电路系统,或更一般地,电路系统或电路)、软件、固件或它们的某种组合。
如上文所提及,CXL可用于高速处理器/CPU至设备以及至存储器的通信。此外,一些当前世代的服务器CPU使用平面地址解码方案,其要求CPU硅针对每个CXL类型-2x16设备(其中“x16”指16个数据通道)支持一个系统地址解码器(System Address Decoder,SAD)规则。例如,在一些服务器处理器中,六个SAD规则可被用于将六个x16 CXL类型-2设备映射为系统存储器映射中的独立物理地址范围。这些地址范围是非交织的。然而,未来的服务器/独立式CPU将需要支持增强的CXL功能(例如,增加CXL x16端口、x4/x8设备(其中x4和x8分别指四个数据通道和八个数据通道)等的数量)。
使用平面地址解码需要SAD规则的数量逐代增加,从而呈现出可扩展性问题,例如:(a)需要预测未来使用模型并估计每个插槽的CXL类型-2设备的数量,由于快速演变的CXL生态系统,因这可能是具有挑战性的;和/或(b)考虑新的使用模型,标准做法是通过保守以及在最坏情况配置中扩大CXL类型-2设备所需的SAD规则的数量的规模来考虑体系结构净空。使用平面地址解码方法的净效果是CPU硅供应的SAD规则的数量的增加,以考虑最坏情况使用模型。这增加了存储器等待时间,因为SAD规则处于全部存储器请求的关键等待时间路径中。
为此,一些实施例提供利用可编程交织粒度的用于CXL类型-2设备的可扩展的地址解码方案。实施例解决了关于供应用于映射CPU/处理器插槽中的多个CXL类型-2设备的系统地址解码器规则(又名SAD规则、主机SAD规则或更一般地,地址解码器)的可扩展性问题。一些实施例可以在没有任何一致性缓存存储器的情况下被实现,并通过利用主机管理的存储器来实现。此外,虽然一些实施例是参照CXL讨论的,但实施例不限于此,并且任何一致性或非一致性互连/接口(例如,包括PCIe、超路径互连(Ultra Path Interconnect,UPI)、Gen-Z结构(fabric)/协议、开放一致性加速器处理器接口(Open CoherentAccelerator Processor Interface,OpenCAPI)、用于加速器的缓存一致性互连(CacheCoherent Interconnect for Accelerator,CCIX)、NVidia
Figure BDA0003799564360000031
链路(NVLinkTM)、超传输TM互连等)可以代替CXL或结合CXL被使用。
相比之下,平面地址解码方案将需要每个CXL x16类型-2设备使用单独的SAD规则(没有交织)将其映射到系统存储器,从而导致:(1)更高的存储器等待时间:平面地址解码导致针对每个CPU插槽的增加数量的SAD规则;进而,这不利地影响存储器等待时间,因为SAD规则处于全部存储器请求的关键等待时间路径中;和/或(2)降低的配置灵活性:平面地址解码要求硬件为映射CXL类型-2设备供应固定数量的SAD规则,以及SAD规则的数量规定可以附接到插槽的CXL类型-2设备的最大数量,从而严重限制了发布后的灵活性。
此外,实施例利用动态可编程的交织粒度(Interleave Granularity,IG)在主机SAD处提供单个(或至少减少数量的)(一个或多个)CXL类型-2 SAD规则。在主机SAD级别处的单个CXL类型-2 SAD规则映射处理器插槽内的全部CXL类型-2设备所需的聚合存储器容量。为了支持大存储器大小,一个实施例使用高阶物理地址比特来交织这些设备。此外,由于CXL类型-2设备存储器大小因设备而异,相对于固定交织粒度,至少一个实施例使用可编程交织粒度。
在实施例中,在引导期间或者甚至在运行时期间(诸如,在系统管理模式(SystemManagement Mode,SMM)下),软件(例如,具有监督访问权的应用、安全驱动程序、内核、操作系统(Operating System,OS)或具有对本文所讨论的配置寄存器/存储结构的读/写访问权的其他软件等)、统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI)、BIOS(基本输入输出系统)、其他固件(诸如,选项只读存储器(Option ROM)、在设备上运行的安全固件、主板管理控制器(Baseboard Management Controller,BMC)固件等)或其他逻辑(本文统称为图1的“配置器逻辑”101(其可以位于各种位置,例如包括,如各实施例中的图1及其后所示)基于填充的设备的大小和数量来动态地确定适当的交织粒度,并且相对应地初始化或配置处理器硬件。相比之下,现有技术使用多个CXL类型-2SAD规则。
因此,一些实施例允许代到代的体系结构可扩展性供给:(1)针对全部事务的降低的存储器等待时间,其中为CXL类型-2设备保留单个SAD规则(或至少减少数量的SAD规则),从而导致相对于先前解决方案的显著更低数量的SAD规则条目;进而,这使针对全部存储器受限的事务(包括非CXL目标,诸如,双倍数据速率(Double Data Rate,DDR)存储器、HBM等)的等待时间简档受益,并在没有额外开销的情况下改善整体系统性能;和/或(2)现场配置灵活性,允许终端用户在线程发布后确定/更改要被填充用于其平台供给的CXL类型-2设备的数量,而不必在产品化之前做出前期决策。
图1图示出可用于实现一个或多个实施例的系统100的框图。例如,图1示出了从处理器核心(或更简单地,“核心”)102到(一个或多个)CXL类型-2存储器设备101-1…101-N的事务的样本流,这些设备经由IO端口104-1…104-N耦合到系统100。虽然一些实施例是参照x16实例讨论的,但实施例不限于此,并且不同数量的通道可被用于IO设备/端口(诸如,x4、x8、x32、x64、x128等)。此外,FlexBusTM被示出为选项,因为它是多协议感知高速总线,并且可以利用CXL、PCIe或UPI来操作;然而,实施例不限于使用FlexBus,并且其他类型的协议/总线/互连可被使用。
在实施例中,到CXL类型-2地址范围的存储器访问事务(例如,读或写事务)由以下阶段组成(以存储器读操作/事务为例):(a)地址映射查找:读事务首先被路由到适当的缓存和归属地代理(Home Agent,CHA)106-1至106-M切片(例如,在非核心结构上);(b)CHA地址解码:一旦事务到达CHA,CHA管线中的(一个或多个)SAD规则就生成该特定事务针对的特定CXL代理(x16)的ID(标识符),并将其路由到该特定的CXL x16代理;以及(c)CXL代理或主机管理的设备存储器(HDM)地址解码(例如,108-1…108-N):CXL代理/端点主控目标CXL类型-2设备,该目标CXL类型-2设备进而主控由核心102发起的事务所请求的物理地址。在各实施例中,在上文的阶段(a)下被使用的地址映射可以存储在解码器逻辑可以访问的任何位置中。此外,读/写事务可以由核心发起(并且地址映射可以存储在核心或耦合至核心的存储器/缓存中)。此外,(一个或多个)SAD规则可以存储在CHA可访问的任何存储器设备、结构桥接逻辑或事务的路径中的任何逻辑(包括靠近或耦合到处理器核心的逻辑)中。
如图1中所示,在本示例中,每个代理(即,104-1至104-N)可具有连接至其的最多4个x4设备(尽管实施例不限于x4设备,并且具有不同数量的通道的设备可以被使用,如本文所讨论)。该事务通过在CXL代理级别处实现的HDM解码器阶段(图1中标记为HDM地址解码器108-1至108-N)。HDM解码器生成事务所针对的正确的(x4)端口ID。然后该事务被路由到正确的x4端口,然后端点设备(例如,设备101-1…101-N中的一个)将所请求的数据返回到核心102。
在一些当前的处理器中,六个条目可以为CXL类型-2设备在CHA SAD规则中被预留。在该方案中,为了支持在插槽的任何CXL端口后面的CXL类型-2设备,所需的SAD规则条目的数量等于CXL端口的数量,其中每个SAD规则针对插槽中的唯一的CXL类型-2设备。在该示例中,针对每个插槽仅6个CXL类型-2设备可被支持。如果需要更多的CXL类型-2设备,则需要在硬件中供应额外的SAD规则条目。CHA SAD规则位于到存储器的关键等待时间路径中,并且全部事务都被要求通过该管线。因此,SAD规则条目数量的任何增加都增加全部受存储器限制事务(包括非CXL存储器范围)的等待时间,从而不利地对整体系统性能。
为此,在一个实施例中,在主机SAD级别处的单个CXL类型-2SAD规则条目为CXL类型-2设备预留,无论附接到插槽的类型-2设备的数量如何。这解决了根本的可扩展性问题。此CXL类型-2SAD规则映射插槽中的全部CXL类型-2设备所需的聚合存储器大小,并使用高阶物理地址比特来使它们交织。取决于设备总数,交织粒度可以在引导时或在运行时期间(如前所讨论)(例如,由配置器逻辑101)动态地确定和编程。
图2图示出具有含有可变存储器容量的多个CXL类型-2设备的处理器插槽200的框图,该处理器插槽200可由一个或多个实施例使用。图2示出了一个或多个实施例可以如何在平台级别实现。
如图2中所示,CPU/处理器202包括四个CXL x16代理(204-0…204-3),其中每个代理都具有含有2GB(代理0)、7GB(代理1)、3GB(代理2)、6GB(代理3)的可变存储器容量所附接的CXL类型-2设备(206-1…206-4)。虽然CXL类型-2设备(206-1…206-4)具有不同的存储器,但实施例不限于此,并且CXL类型-2设备中的两个或更多个CXL类型-2设备可具有相同的大小。
图3和图4图示出样本系统地址映射配置300和样本系统地址映射配置400,这些配置可用于一个或多个实施例中。在一些当前实现方式中,以上讨论的图2的总数将作为单独的、非交织的地址范围被映射到地址空间,如图3中所示。因此,每个类型-2设备消耗单独的、非交织的SAD规则(例如,针对图3中所示的示例的四个CXL设备的总共18GB的地址空间),因此如前所述,呈现出可扩展性问题。
图4图示出根据实施例的样本系统地址映射配置400。相比之下,配置400仅使用单个SAD规则402(例如,针对插槽中全部CXL类型-2设备206-1…206-4或其中的至少多个),该单个SAD规则402可以存储在CHA切片0到M中的一个或多个。此外,在至少一个实施例中,设备206-1至206-4经由交换机的一个或多个层次体系耦合到处理器插槽。在图4的示例中,用于四个设备206-1…206-4的总地址空间为32GB,具有8GB的高阶物理地址比特(例如,PA[33:33]或A[33:33],其中“PA”和“A”两者都指物理地址),它们是交织的和可扩展的。非存在存储器(Non-Existent Memory,NXM)设备406-1至406-4针对每个设备可占用8GB的提醒容量,如本文中将进一步(例如,参考图5)讨论。在实施例中,使用高阶(而不是低阶)地址比特,部分原因是低阶地址比特可能在用于寻址。然而,实施例不限于使用高阶地址比特,取决于实现方式,可以使用其他地址比特(例如,特定比特、低比特等)。
更具体地,图5图示出根据实施例的、用于提供利用可编程交织粒度的用于CXL类型-2设备提供可扩展地址解码方案的方法500的流程图。方法500的一个或多个操作可以由图1-图4的一个或多个组件(例如,包括配置逻辑101)执行。
参考图1-图5,在操作502处,逻辑(诸如,可以被实现为配置逻辑101、处理器102等的一部分的发现逻辑)例如在引导时或在运行时期间(如上文所讨论)发现CXL类型-2设备总数和容量。在操作504处,当单个CXL类型-2SAD 402规则映射到可变大小的CXL设备(206-1至206-N)并且它们需要交织时,逻辑(诸如,配置逻辑101、处理器102等)在操作508处确定交织粒度,并且在操作510处针对配置确定适当的地址范围大小。这些值可基于CXL类型-2设备配置而变化,因此可以例如在运行时期间、在引导时等由具有适当权限级别的软件代理动态地计算。
在操作508处,逻辑(诸如,配置逻辑101、处理器102等)通过以下方式计算CXL类型-2地址范围的交织粒度:
(a)使用发现的总数中最大设备的存储器大小(即,在图1-图4的示例中需要7GB的存储器的设备B 206-2)作为起点;因此,在本示例中,IG会大于或等于7GB(其是非2的幂值);以及
(b)由于如果使用2的幂粒度(例如,以允许更简单的管线逻辑和更低的路径延迟,并且从而对于性能更好)完成则存储器交织可更高效率,因此逻辑(诸如,配置逻辑101、处理器102等)将额外的容量作为“填充器”范围填充到在操作502处发现的最大大小的设备容量(例如,在图1-图4的示例中,针对7GB设备的下一个更高的2的幂会是8GB;因此,在操作508处计算的IG会是8GB,其对应于更高阶的物理地址比特(例如,PA[33:33]),其中额外的1GB(即,8GB-7GB)被视为“物理地址填充”,并且被称为NXM,但不同的设备可以有不同的地址填充量,如图4所示)。
在操作510处,逻辑(诸如,配置逻辑101、处理器102等)用于计算类型-2地址范围的大小。在图1-图4的示例中,有四个CXL类型-2设备206-1至206-4(即,NUM_CXL_TYPE2_DEVICES(数量_CXL_类型2_设备)=4)。IG(在填充1GB后)先前已从操作508被确定为8GB。因此,SAD规则大小=IG*NUM_CXL_TYPE2_DEVICES=8GB*4=32GB。
替代地,在操作504处,当单个CXL类型-2SAD 402规则映射到相同大小的CXL设备(206-1至206-N)时,逻辑(诸如,配置逻辑101、处理器102等)在操作512处确定针对配置的交织粒度和适当的地址范围大小。这种交织粒度仍会以与操作508处相同的方式被确定,即,通过确定CXL设备中的至少一个的容量(因为全部设备具有相同的大小),并填充到下一2的幂。地址范围大小会以与操作510处类似的方式被确定,即,通过将设备数量乘以交织粒度值。
在操作514处,逻辑(诸如,配置逻辑101、处理器102等)为通过操作508-510或512确定的新配置编程/更新硬件。在实施例中,逻辑(诸如,配置逻辑101、处理器102等)对处理器控制和状态寄存器(Control and Status Register,CSR)编程。更具体地,单个SAD规则402映射到全部CXL类型-2设备。在图1-图4和可变大小CXL设备的示例中:
SAD规则大小=32GB;并且
SAD规则交织粒度=基于地址比特[33]的8GB
如上文所提及,由于不同的设备容量,在地址映射中创建可变大小的NXM地址预留/未使用区域(例如,参见图4)。这些NXM区域由逻辑(诸如,配置逻辑101、处理器102等)例如经由以下各项向操作系统报告为无用的/预留的/填充的范围:一个或多个寄存器(诸如,CSR寄存器)、一个或多个表(诸如,一致性设备属性表(Coherent Device AttributeTable,CDAT)、CXL早期发现表(CXL Early Discovery Table,CEDT)等)、高级配置和功率接口(Advanced Configuration and Power Interface,ACPI)表、一个或多个结构(诸如,CXL固定存储器窗口结构(CXL Fixed Memory Window Structure,CFMWS))等。
此外,用于IG确定的填充范围在本文中被称为NXM区域,并且可能纯粹是为了对齐目的而存在(在图4中示出为项406-1至406-4)。此外,请求代理可能误导针对NXM范围的事务。为了避免OS错误,标准的NXM行为可以由CXL代理实现为:(1)到NXM区域的读事务返回全1(或全0)模式(或指示NXM区域无法访问的某一其他指定值);以及(2)到NXM区域的写事务被静默地丢弃(例如,没有任何错误消息),或替代地返回地址无效的消息。
因此,在一个或多个实施例中,针对每个插槽分配/映射单个CXL类型-2SAD规则。类型-2设备使用高阶地址比特交织,并基于发现的设备总数,在引导时或在运行时期间(如上文所讨论),交织粒度(例如,由配置逻辑101)动态地计算/确定并初始化到处理器硬件中。
另外,一些实施例可应用于计算系统中,该计算系统包括诸如参考图1及以下各图讨论的那些处理器之类的一个或多个处理器(例如,其中,该一个或多个处理器可包括一个或多个处理器核心),该计算系统包括例如桌面型电脑、工作站、计算机服务器、服务器刀片、或移动计算设备。移动计算设备可包括智能电话、平板、UMPC(超移动个人计算机)、膝上型电脑、超级本TM计算设备、可穿戴设备(诸如,智能手表、智能指环、智能手环、或智能眼镜)等。
示例性核心体系结构、处理器和计算机体系结构
处理器核心能以不同方式、出于不同的目的、并且在不同的处理器中实现。例如,此类核心的实现方式可包括:1)旨在用于通用计算的通用有序核心;2)旨在用于通用计算的高性能通用乱序核心;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可包括:1)CPU(中央处理单元),其包括旨在用于通用计算的一个或多个通用有序核心和/或旨在用于通用计算的一个或多个通用乱序核心;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核心。此类不同的处理器导致不同的计算机系统体系结构,这些计算机系统体系结构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核心,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)片上系统,其可以将所描述的CPU(有时被称为(一个或多个)应用核心或(一个或多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核心体系结构,随后描述示例性处理器和计算机体系结构。
示例性核心体系结构
图6A是图示出根据实施例的示例性有序管线以及示例性寄存器重命名、乱序发出/执行管线两者的框图。图6B是图示根据实施例的要包括在处理器中的有序体系结构核心的示例性实施例和示例性的寄存器重命名、乱序发出/执行体系结构核心两者的框图。图6A-图6B中的实线框图示有序管线和有序核心,而虚线框的任选的增加图示寄存器重命名、乱序发出/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图6A中,处理器管线600包括取得(fetch)阶段602、长度解码阶段604、解码阶段606、分配阶段608、重命名阶段610、调度(也被称为调遣或发出)阶段612、寄存器读取/存储器读取阶段614、执行阶段616、写回/存储器写入阶段618、异常处置阶段622和提交阶段624。
图6B示出处理器核心690,该处理器核心690包括前端单元630,该前端单元630耦合到执行引擎单元650,并且前端单元630和执行引擎单元650两者都耦合到存储器单元670。核心690可以是精简指令集计算(reduced instruction set computing,RISC)核、复杂指令集计算(complex instruction set computing,CISC)核、超长指令字(very longinstruction word,VLIW)核、或混合或替代的核类型。作为又一选项,核心690可以是专用核心,诸如例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元630包括分支预测单元632,该分支预测单元632耦合到指令缓存单元634,该指令缓存单元634耦合到指令转译后备缓冲器(translation lookaside buffer,TLB)636,该指令转译后备缓冲器636耦合到指令取得单元638,该指令取得单元638耦合到解码单元640。解码单元640(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元640可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmable logicarray,PLA)、微代码只读存储器(read only memory,ROM)等。在一个实施例中,核心690包括用于存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元640中或以其他方式在前端单元630内)。解码单元640耦合到执行引擎单元650中的重命名/分配器单元652。
执行引擎单元650包括重命名/分配器单元652,该重命名/分配器单元652耦合到引退单元654和一个或多个调度器单元的集合656。(一个或多个)调度器单元656表示任何数量的不同调度器,包括预留站、中央指令窗等。(一个或多个)调度器单元656耦合至(一个或多个)物理寄存器堆单元658。(一个或多个)物理寄存器堆单元658中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩(packed)整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器堆单元658包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供体系结构向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器堆单元658由引退单元654重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)未来的堆、(一个或多个)历史缓冲器、和(一个或多个)引退寄存器堆;使用寄存器图谱和寄存器池,等等)。引退单元654和(一个或多个)物理寄存器堆单元658耦合到(一个或多个)执行集群660。(一个或多个)执行集群660包括一个或多个执行单元的集合662以及一个或多个存储器访问单元的集合664。执行单元662可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(一个或多个)调度器单元656、(一个或多个)物理寄存器堆单元658和(一个或多个)执行集群660示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线,和/或各自具有其自身的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群的存储器访问管线——并且在分开的存储器访问管线的情况下,实现其中仅该管线的执行集群具有(一个或多个)存储器访问单元664的某些实施例)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,并且其余管线可以是有序的。
存储器访问单元的集合664耦合到存储器单元670,该存储器单元670包括数据TLB单元672,该数据TLB单元672耦合到数据缓存单元674,该数据缓存单元674耦合到第二级(L2)缓存单元676。在一个示例性实施例中,存储器访问单元664可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元670中的数据TLB单元672。指令缓存单元634被进一步耦合到存储器单元670中的第二级(L2)缓存单元676。L2缓存单元676耦合到一个或多个其他级别的缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名、乱序发出/执行核体系结构可如下所述地实现管线600:1)指令取得638执行取得阶段602和长度解码阶段604;2)解码单元640执行解码阶段606;3)重命名/分配器单元652执行分配阶段608和重命名阶段610;4)(一个或多个)调度器单元656执行调度阶段612;5)(一个或多个)物理寄存器堆单元658和存储器单元670执行寄存器读取/存储器读取阶段614;执行集群660执行执行阶段616;6)存储器单元670和(一个或多个)物理寄存器堆单元658执行写回/存储器写入阶段618;6)各单元可涉及异常处置阶段622;以及8)引退单元654和(一个或多个)物理寄存器堆单元658执行提交阶段624。
核心690可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的可选的附加扩展)),其中包括本文中描述的(一个或多个)指令。在一个实施例中,核心690包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
图7图示根据实施例的SOC封装的框图。如图7中所图示,SOC702包括一个或多个中央处理单元(Central Processing Unit,CPU)核心720、一个或多个图形处理器单元(Graphics Processor Unit,GPU)核心730、输入/输出(I/O)接口740以及存储器控制器742。可将SOC封装702的各组件耦合至诸如本文中参考其他附图所讨论的互连或总线。另外,SOC封装702可包括更多或更少的组件,诸如本文中参考其他附图所讨论的那些组件。进一步地,SOC封装702的每个组件可包括一个或多个其他组件,例如,如参考本文中的其他附图所讨论的组件。在一个实施例中,在一个或多个集成电路(Integrated Circuit,IC)管芯上提供SOC封装702(以及其组件),例如,该一个或多个集成电路管芯被封装到单个半导体器件中。
如图7中所图示,SOC封装702经由存储器控制器742耦合至存储器760。在实施例中,存储器760(或其部分)可以被集成在SOC封装702上。
I/O接口740可例如经由诸如本文中参考其他附图所讨论的互连和/或总线而耦合至一个或多个I/O设备770。(一个或多个)I/O设备770可包括以下各项中的一项或多项:键盘、鼠标、触摸板、显示器、图像/视频捕捉设备(诸如,相机或摄像机/视频录像机)、触摸屏、扬声器等等。
图8是根据实施例的处理系统800的框图。在各实施例中,系统800包括一个或多个处理器802以及一个或多个图形处理器808,并且可以是单处理器桌面型系统、多处理器工作站系统或具有大量处理器802或处理器核心807的服务器系统。在一个实施例中,系统800是被并入到在移动设备、手持式设备或嵌入式设备中使用的片上系统(system-on-a-chip,SoC或SOC)集成电路内的处理平台。
系统800的实施例可以包括以下各项或可被并入在以下各项内:基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台)、移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,系统800是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统800还可以包括可穿戴设备、与可穿戴设备耦合、或被集成在可穿戴设备内,该可穿戴设备诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,数据处理系统800是电视机或机顶盒设备,该电视机或机顶盒设备具有一个或多个处理器802以及由一个或多个图形处理器808生成的图形界面。
在一些实施例中,一个或多个处理器802各自包括一个或多个处理器核心807,该一个或多个处理器核心807用于处理指令,这些指令当被执行时,执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核心807中的每一个都被配置成用于处理特定的指令集809。在一些实施例中,指令集809可促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)的计算。多个处理器核心807各自可以处理不同的指令集809,不同的指令集809可包括用于促进对其他指令集的仿真的指令。处理器核心807还可包括其他处理设备,诸如,数字信号处理器(Digital Signal Processor,DSP)。
在一些实施例中,处理器802包括缓存存储器804。取决于体系结构,处理器802可具有单个内部缓存或多级的内部缓存。在一些实施例中,缓存存储器在处理器802的各种组件之间被共享。在一些实施例中,处理器802也使用外部缓存(例如,第三级(L3)缓存或最后一级缓存(Last Level Cache,LLC))(未示出),可使用已知的缓存一致性技术在处理器核心807之间共享该外部缓存。寄存器堆806附加地被包括在处理器802中,寄存器堆806可包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器802的设计。
在一些实施例中,处理器802耦合至处理器总线810以在处理器802与系统800中的其他组件之间传输通信信号(诸如,地址、数据)或控制信号。在一个实施例中,系统800使用示例性“中枢”系统体系结构,该示例性“中枢”系统体系结构包括存储器控制器中枢816和输入输出(I/O)控制器中枢830。存储器控制器中枢816促进存储器设备与系统800的其他组件之间的通信,而I/O控制器中枢(ICH)830提供经由本地I/O总线至I/O设备的连接。在一个实施例中,存储器控制器中枢816的逻辑被集成在处理器内。
存储器设备820可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储器设备、或具有合适的性能以充当进程存储器的某个其他存储器设备。在一个实施例中,存储器设备820可以作为用于系统800的系统存储器来操作,以存储数据822和指令821用于在一个或多个处理器802执行应用或进程时使用。存储器控制器中枢816也与可选的外部图形处理器812耦合,该可选的外部图形处理器812可与处理器802中的一个或多个图形处理器808通信以执行图形和媒体操作。
在一些实施例中,ICH 830使外围设备能够经由高速I/O总线连接到存储器设备820和处理器802。I/O外围设备包括但不限于音频控制器846、固件接口828、无线收发器826(例如,Wi-Fi、蓝牙)、数据存储设备824(例如,硬盘驱动器、闪存等)以及用于将传统(legacy)(例如,个人系统2(PS/2))设备耦合至系统的传统I/O控制器840。一个或多个通用串行总线(Universal Serial Bus,USB)控制器842连接输入设备(诸如,键盘和鼠标844的组合)。网络控制器834也可以耦合至ICH 830。在一些实施例中,高性能网络控制器(未示出)耦合至处理器总线810。将会理解,所示的系统800是示例性的而非限制性的,因为也可以使用以不同方式配置的其他类型的数据处理系统。例如,I/O控制器中枢830可被集成在一个或多个处理器802内,或者存储器控制器中枢816和I/O控制器中枢830可被集成到分立的外部图形处理器中,该分立的外部图形处理器诸如外部图形处理器812。
图9是处理器900的实施例的框图,该处理器900具有一个或多个处理器核心902A至902N、集成存储器控制器914以及集成图形处理器908。图9的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件可以类似于本文中其他地方描述的任何方式操作或运行,但不限于此。处理器900可包括附加的核心,这些附加的核心多达由虚线框表示的附加核心902N并包括由虚线框表示的附加核心902N。处理器核心902A至902N中的每个处理器核心包括一个或多个内部缓存单元904A至904N。在一些实施例中,每个处理器核心也具有对一个或多个共享缓存单元906的访问权。
内部缓存单元904A至904N和共享缓存单元906表示处理器900内的缓存存储器层次体系。缓存存储器层次体系可包括每个处理器核心内的至少一个级别的指令和数据缓存以及一个或多个级别的共享的中级缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)、或其他级别的缓存,其中,在外部存储器之前的最高级别的缓存被分类为LLC。在一些实施例中,缓存一致性逻辑维持各种缓存单元906与904A至904N之间的一致性。
在一些实施例中,处理器900还可包括一个或多个总线控制器单元的集合916和系统代理核心910。一个或多个总线控制器单元916管理外围总线的集合,诸如,一个或多个外围组件互连总线(例如,PCI、PCI快速(PCI Express))。系统代理核心910提供对各处理器组件的管理功能。在一些实施例中,系统代理核心910包括用于管理对各种外部存储器设备(未示出)的访问的一个或多个集成存储器控制器914。
在一些实施例中,处理器核心902A至902N中的一个或多个处理器核心包括针对同时多线程操作的支持。在此类实施例中,系统代理核心910包括用于在多线程处理期间对核心902A至902N进行协调和操作的组件。系统代理核心910可附加地包括功率控制单元(power control unit,PCU),该PCU包括用于调节处理器核心902A至902N和图形处理器908的功率状态的逻辑和组件。
在一些实施例中,处理器900附加地包括用于执行图形处理操作的图形处理器908。在一些实施例中,图形处理器908与共享缓存单元的集合906以及系统代理核心910耦合,该系统代理核心910包括一个或多个集成存储器控制器914。在一些实施例中,显示控制器911与图形处理器908耦合,以将图形处理器输出驱动至一个或多个所耦合的显示器。在一些实施例中,显示控制器911可以是经由至少一个互连而与图形处理器耦合的分开的模块,或者可以集成在图形处理器908或系统代理核心910内。
在一些实施例中,基于环的互连单元912用于耦合处理器900的内部组件。然而,可以使用替代的互连单元,诸如点到点互连、交换式互连、或其他技术,包括本领域中公知的技术。在一些实施例中,图形处理器908经由I/O链路913而与环形互连912耦合。
示例性I/O链路913表示各种各样的I/O互连中的至少一者,该I/O互连包括促进各种处理器组件与高性能嵌入式存储器模块918(诸如,eDRAM(或嵌入式DRAM)模块)之间的通信的封装上I/O互连。在一些实施例中,处理器核心902A至902N和图形处理器908中的每一者都将嵌入式存储器模块918用作共享的最后一级缓存。
在一些实施例中,处理器核心902A至902N是执行相同的指令集体系结构的同构核心。在另一个实施例中,处理器核心902A至902N就指令集体系结构(instruction setarchitecture,ISA)方面而言是异构的,其中处理器核心902A至902N中的一个或多个执行第一指令集,而其他核中的至少一个核执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核心902A至902N就微体系结构方面而言是异构的,其中具有相对较高的功耗的一个或多个核心与具有较低的功耗的一个或多个功率核心耦合。此外,处理器900可在一个或多个芯片上实现,或者被实现为除其他组件之外还具有所图示的组件的SoC集成电路。
图10是图形处理器1000的框图,该图形处理器1000可以是分立的图形处理单元,或者可以是与多个处理核心集成的图形处理器。在一些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射的I/O接口并且利用被放置到处理器存储器中的命令进行通信。在一些实施例中,图形处理器1000包括用于访问存储器的存储器接口1014。存储器接口1014可以是至本地存储器、一个或多个内部缓存、一个或多个共享的外部缓存、和/或至系统存储器的接口。
在一些实施例中,图形处理器1000还包括显示控制器1002,该显示控制器1002用于将显示输出数据驱动到显示设备1020。显示控制器1002包括用于显示器的一个或多个叠加平面以及多层的视频或用户界面元素的合成的硬件。在一些实施例中,图形处理器1000包括用于将媒体编码到一种或多种媒体编码格式、从一种或多种媒体编码格式解码媒体、或在一种或多种媒体编码格式之间对媒体转码的视频编解码器引擎1006,这一种或多种媒体编码格式包括但不限于:移动图像专家组(Moving Picture Experts Group,MPEG)格式(诸如,MPEG-2)、高级视频译码(Advanced Video Coding,AVC)格式(诸如,H.264/MPEG-4AVC)、以及电影和电视工程师协会(Society of Motion Picture&TelevisionEngineers,SMPTE)321M/VC-1、和联合图像专家组(Joint Photographic Experts Group,JPEG)格式(诸如,JPEG、以及运动JPEG(Motion JPET,MJPEG)格式)。
在一些实施例中,图形处理器1000包括块图像传送(block image transfer,BLIT)引擎1004,用于执行二维(two-dimensional,2D)栅格化器操作,包括例如,位边界块传送。然而,在一个实施例中,使用图形处理引擎(graphics processing engine,GPE)1010的一个或多个组件执行3D图形操作。在一些实施例中,图形处理引擎1010是用于执行图形操作(包括三维(three-dimensional,3D)图形操作和媒体操作)的计算引擎。
在一些实施例中,GPE 1010包括用于执行3D操作的3D管线1012,3D操作诸如使用作用于3D基元形状(例如,矩形、三角形等)的处理函数来渲染三维图像和场景。3D管线1012包括可编程和固定功能元件,该可编程和固定功能元件执行元件内的各种任务和/或生成到3D/媒体子系统1015的执行线程。虽然3D管线1012可用于执行媒体操作,但是GPE 1010的实施例还包括媒体管线1016,该媒体管线1016专门用于执行媒体操作,诸如,视频后处理和图像增强。
在一些实施例中,媒体管线1016包括固定功能或可编程逻辑单元,用于代替、或代表视频编解码器引擎1006来执行一个或多个专业的媒体操作,诸如视频解码加速、视频去隔行、以及视频编码加速。在一些实施例中,媒体管线1016附加地包括线程生成单元以生成用于在3D/媒体子系统1015上执行的线程。所生成的线程在3D/媒体子系统1015中所包括的一个或多个图形执行单元上执行用于媒体操作的计算。
在一些实施例中,3D/媒体子系统1015包括用于执行由3D管线1012和媒体管线1016生成的线程的逻辑。在一个实施例中,管线向3D/媒体子系统1015发送线程执行请求,该3D/媒体子系统1015包括用于对于对可用的线程执行资源的各种请求进行仲裁和调遣的线程调遣逻辑。执行资源包括用于处理3D线程和媒体线程的图形执行单元的阵列。在一些实施例中,3D/媒体子系统1015包括用于线程指令和数据的一个或多个内部缓存。在一些实施例中,该子系统还包括用于在线程之间共享数据并用于存储输出数据的共享存储器,其包括寄存器和可寻址存储器。
在以下描述中,陈述了众多特定细节以提供更透彻的理解。然而,对于本领域的技术人员将显而易见的是,可以在没有这些特定细节中的一个或多个细节的情况下实践本文中描述的实施例。在其他实例中,未描述公知的特征以免混淆当前实施例的细节。
以下示例涉及进一步的实施例。示例1包括一种装置,该装置包括:配置器逻辑电路系统,用于确定针对耦合到处理器的插槽的多个设备的交织粒度和地址范围大小;存储器,用于存储针对耦合到处理器的插槽的多个设备中的两个或更多个设备的单个系统地址解码器(SAD)规则;其中指向来自多个设备的第一设备的存储器访问事务根据SAD规则路由到第一设备。示例2包括示例1的装置,其中配置器逻辑电路系统用于根据来自以下各项中的一项的信息进行操作:基本输入输出系统(Basic Input Output System,BIOS)、统一可扩展固件接口(UEFI)、选项只读存储器(Option Read Only Memory,选项ROM)和底板管理控制器(BMC)固件。示例3包括示例1的装置,其中多个设备中的至少一个包括以下各项中的一项:计算快速链路(CXL)类型-2设备、外围组件互连快速(PCIe)设备、超路径互连(UPI)设备、Gen-Z结构(fabric)/协议设备、开放一致性加速器处理器接口(OpenCAPI)设备、用于加速器的缓存一致性互连(CCIX)设备、NVidia
Figure BDA0003799564360000191
链路(NVLinkTM)设备和超传输TM互连设备。示例4包括示例1的装置,其中指向第一设备的存储器访问事务用于响应于根据SAD规则的查找而被路由到与第一设备相关联的输入-输出(IO)端口。示例5包括示例1的装置,包括发现逻辑电路系统,用于确定耦合到处理器的插槽的多个设备的大小和数量。示例6包括示例5的装置,其中发现逻辑电路系统用于将所确定的大小和数量存储在多个寄存器中,其中多个寄存器能够由配置器逻辑电路系统访问。示例7包括示例1的装置,包括发现逻辑电路系统,用于在引导时或在运行时期间确定耦合到处理器的插槽的多个设备的大小和数量。示例8包括示例7的装置,其中发现逻辑电路系统用于在运行时期间使用系统管理模式(SMM)确定耦合到处理器的插槽的多个设备的大小和数量。示例9包括示例1的装置,其中配置器逻辑电路系统用于基于来自多个设备中的最大大小的设备的大小来确定交织粒度。示例10包括示例1的装置,其中配置器逻辑电路系统用于基于来自多个设备中的最大大小的设备的大小来确定交织粒度,其中所确定的大小用于被填充到下一2的幂大小。示例11包括示例1的装置,其中配置器逻辑电路系统用于基于多个设备的交织粒度乘以数量来确定地址范围大小。示例12包括示例1的装置,其中多个设备经由交换机的一个或多个层次体系被耦合到处理器插槽。
示例13包括一种或多种非瞬态计算机可读介质,包括一个或多个指令,这一个或多个指令当在处理器上执行时将处理器配置成用于执行一个或多个操作以引起:配置器逻辑电路系统确定针对耦合到处理器的插槽的多个设备的交织粒度和地址范围大小;存储器存储用于耦合到处理器的插槽的多个设备中的两个或更多个设备的单个系统地址解码器(SAD)规则;其中指向来自多个设备中的第一设备的存储器访问事务根据SAD规则被路由到第一设备。示例14包括示例13的一种或多种计算机可读介质,进一步包括一个或多个指令,这一个或多个指令当在至少一个处理器上执行时将该至少一个处理器配置成用于执行一个或多个操作以引起:配置器逻辑电路系统根据来自以下各项中的一项的信息进行操作:基本输入输出系统(BIOS)、统一可扩展固件接口(UEFI)、选项只读存储器(选项ROM)和底板管理控制器(BMC)固件。示例15包括示例13的一种或多种计算机可读介质,其中多个设备中的至少一个包括以下各项中的一项:计算快速链路(CXL)类型-2设备、外围组件互连快速(PCIe)设备、超路径互连(UPI)设备、Gen-Z结构/协议设备、开放一致性加速器处理器接口(OpenCAPI)设备、用于加速器的缓存一致性互连(CCIX)设备、NVidia
Figure BDA0003799564360000201
链路(NVLinkTM)设备和超传输TM互连设备。示例16包括示例13的一种或多种计算机可读介质,进一步包括一个或多个指令,这一个或多个指令当在至少一个处理器上执行时将该至少一个处理器配置成用于执行一个或多个操作以引起:指向第一设备的存储器访问事务响应于根据SAD规则的查找而被路由到与第一设备相关联的输入-输出(IO)端口。示例17包括示例13的一种或多种计算机可读介质,进一步包括一个或多个指令,这一个或多个指令当在至少一个处理器上执行时将该至少一个处理器配置成用于执行一个或多个操作以引起:发现逻辑电路系统确定耦合到处理器的插槽的多个设备的大小和数量。示例18包括示例13的一种或多种计算机可读介质,进一步包括一个或多个指令,这一个或多个指令当在至少一个处理器上执行时将该至少一个处理器配置成用于执行一个或多个操作以引起:发现逻辑电路系统在启动时或在运行时期间确定耦合到处理器的插槽的多个设备的大小和数量。示例19包括示例18的一种或多种计算机可读介质,进一步包括一个或多个指令,这一个或多个指令当在至少一个处理器上执行时将该至少一个处理器配置成用于执行一个或多个操作以引起:发现逻辑电路系统在运行时期间使用系统管理模式(SMM)确定耦合到处理器的插槽的多个设备的大小和数量。示例20包括示例13的一种或多种计算机可读介质,进一步包括一个或多个指令,这一个或多个指令当在至少一个处理器上执行时将该至少一个处理器配置成用于执行一个或多个操作以引起:配置器逻辑电路系统基于来自多个设备中的最大大小设备的大小来确定交织粒度。示例21包括示例13的一种或多种计算机可读介质,进一步包括一个或多个指令,这一个或多个指令当在至少一个处理器上执行时将该至少一个处理器配置成用于执行一个或多个操作以引起:配置器逻辑电路系统基于来自多个设备中的最大大小设备的大小来确定交织粒度,其中所确定的大小用于被填充到下一2的幂大小。示例22包括示例13的一种或多种计算机可读介质,进一步包括一个或多个指令,这一个或多个指令当在至少一个处理器上执行时将该至少一个处理器配置成用于执行一个或多个操作以引起:配置器逻辑电路系统基于多个设备的交织粒度乘以数量来确定地址范围大小。
示例23包括一种方法,该方法包括:在配置器逻辑电路系统处确定针对耦合到处理器的插槽的多个设备的交织粒度和地址范围大小;存储用于耦合到处理器的插槽的多个设备中的两个或更多个设备的单个系统地址解码器(SAD)规则;其中指向来自多个设备中的第一设备的存储器访问事务根据SAD规则被路由到第一设备。示例24包括示例23的方法,进一步包括引起配置器逻辑电路系统根据来自以下各项中的一项的信息进行操作:基本输入输出系统(BIOS)、统一可扩展固件接口(UEFI)、选项只读存储器(选项ROM)和底板管理控制器(BMC)固件。示例25包括示例23的方法,其中多个设备中的至少一个包括以下各项中的一项:计算快速链路(CXL)类型-2设备、外围组件互连快速(PCIe)设备、超路径互连(UPI)设备、Gen-Z结构/协议设备、开放一致性加速器处理器接口(OpenCAPI)设备、用于加速器的缓存一致性互连(CCIX)设备、NVidia
Figure BDA0003799564360000221
链路(NVLinkTM)设备和超传输TM互连设备。
示例26包括一种设备,该设备包括用于执行如任何在前示例中阐述的操作的装置。示例27包括一种机器可读存储装置,其包括机器可读指令,该机器可读指令当被执行时,用于实现任何在前示例中所阐述的操作或实现任何在前示例中所阐述的装置。
在各实施例中,参考图1及以下等等所讨论的一个或多个操作可由参考附图中的任何附图所讨论的一个或多个组件(在本文中可互换地被称为“逻辑”)执行。
在各实施例中,本文中(例如,参考图1及以下各图)所讨论的操作可实现为硬件(例如,逻辑电路系统)、软件、固件、或其组合,其可作为计算机程序产品被提供,例如,包括一种或多种有形的(例如,非瞬态的)机器可读或计算机可读介质,其上存储有指令(或软件程序),这些指令(或软件程序)用于对计算机编程以执行本文中所讨论的过程。机器可读介质可包括诸如参考附图所讨论的那些存储设备之类的存储设备。
另外,此类计算机可读介质可作为计算机程序产品来下载,其中该程序可通过在载波或其他传播介质中提供的数据信号、经由通信链路(例如,总线、调制解调器或网络连接)从远程计算机(例如,服务器)传输到作出请求的计算机(例如,客户端)。
在本说明书中对“一个实施例”或“实施例”的引用意指结合该实施例描述的特定特征、结构和/或特性可被包括在至少一个实现方式中。在本说明书各处出现的短语“在一个实施例中”可以或可以不全指代同一实施例。
并且,在说明书和权利要求书中,可使用术语“耦合的”和“连接的”以及它们的派生词。在一些实施例中,可以使用“连接的”来表示两个或更多个元件彼此直接物理或电气接触。“耦合的”可意指两个或更多个元件直接的物理或电气接触。然而,“耦合的”还可意指两个或更多个元件彼此可不直接接触,但仍可彼此相互配合或相互作用。
因此,尽管已经用对结构特征和/或方法动作特定的语言描述了各实施例,但是将理解,所要求保护的主题可以不限于所描述的特定特征或动作。相反,特定特征和动作作为实现要求保护的主题的样本形式被公开。

Claims (17)

1.一种用于提供具有可编程交织粒度的可扩展地址解码方案的装置,所述装置包括:
配置器逻辑电路系统,用于确定针对耦合到处理器的插槽的多个设备的交织粒度和地址范围大小;
存储器,用于存储用于耦合到所述处理器的所述插槽的所述多个设备中的两个或更多个设备的单个系统地址解码器SAD规则;
其中指向来自所述多个设备中的第一设备的存储器访问事务用于根据所述SAD规则被路由到所述第一设备。
2.如权利要求1所述的装置,其中所述配置器逻辑电路系统用于根据来自以下各项中的一项的信息进行操作:基本输入输出系统(BIOS)、统一可扩展固件接口(UEFI)、选项只读存储器(选项ROM)和底板管理控制器(BMC)固件。
3.如权利要求1所述的装置,其中所述多个设备中的至少一个包括以下各项中的一项:计算快速链路(CXL)类型-2设备、外围组件互连快速(PCIe)设备、超路径互连(UPI)设备、Gen-Z结构/协议设备、开放一致性加速器处理器接口(OpenCAPI)设备、用于加速器的缓存一致性互连(CCIX)设备、
Figure FDA0003799564350000011
链路(NVLinkTM)设备和超传输TM互连设备。
4.如权利要求1所述的装置,其中指向所述第一设备的所述存储器访问事务用于响应于根据所述SAD规则的查找而被路由到与所述第一设备相关联的输入-输出(IO)端口。
5.如权利要求1所述的装置,包括发现逻辑电路系统,用于确定耦合到所述处理器的所述插槽的所述多个设备的大小和数量。
6.如权利要求5所述的装置,其中所述发现逻辑电路系统用于将所确定的大小和数量存储在多个寄存器中,其中所述多个寄存器能够由所述配置器逻辑电路系统访问。
7.如权利要求1所述的装置,包括发现逻辑电路系统,用于在引导时或在运行时期间确定耦合到所述处理器的所述插槽的所述多个设备的大小和数量。
8.如权利要求7所述的装置,其中所述发现逻辑电路系统用于在运行时期间使用系统管理模式(SMM)确定耦合到所述处理器的所述插槽耦合的所述多个设备的大小和数量。
9.如权利要求1所述的装置,其中所述配置器逻辑电路系统用于基于来自所述多个设备中的最大大小的设备的大小来确定所述交织粒度。
10.如权利要求1所述的装置,其中所述配置器逻辑电路系统用于基于来自所述多个设备中的最大大小的设备的大小来确定所述交织粒度,其中所确定的大小被填充到下一2的幂大小。
11.如权利要求1所述的装置,其中所述配置器逻辑电路系统用于基于所述多个设备的交织粒度乘以数量来确定所述地址范围大小。
12.如权利要求1所述的装置,其中所述多个设备经由交换机的一个或多个层次体系被耦合到处理器插槽。
13.一种方法,包括:
在配置器逻辑电路系统处确定针对耦合到处理器的插槽的多个设备的交织粒度和地址范围大小;
将用于耦合到所述处理器的所述插槽的所述多个设备中的两个或更多个设备的单个系统地址解码器SAD规则存储在存储器中;
其中指向来自所述多个设备中的第一设备的存储器访问事务根据所述SAD规则被路由到所述第一设备。
14.如权利要求13所述的方法,进一步包括引起所述配置器逻辑电路系统根据来自以下各项中的一项的信息进行操作:基本输入输出系统(BIOS)、统一可扩展固件接口(UEFI)、选项只读存储器(选项ROM)和底板管理控制器(BMC)固件。
15.如权利要求13所述的方法,其中所述多个设备中的至少一个包括以下各项中的一项:计算快速链路(CXL)类型-2设备、外围组件互连快速(PCIe)设备、超路径互连(UPI)设备、Gen-Z结构/协议设备、开放一致性加速器处理器接口(OpenCAPI)设备、用于加速器的缓存一致性互连(CCIX)设备、
Figure FDA0003799564350000031
链路(NVLinkTM)设备和超传输TM互连设备。
16.一种设备,包括用于执行如任一前述权利要求阐述的方法的装置。
17.一种包括机器可读指令的机器可读存储装置,所述机器可读指令在被执行时,用于实现如任何前述权利要求中所述的方法或实现如任何前述权利要求中阐述的装置。
CN202210978992.XA 2021-09-17 2022-08-16 利用可编程交织粒度的用于cxl类型-2设备的可扩展地址解码方案 Pending CN115827513A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/478,828 US20230086222A1 (en) 2021-09-17 2021-09-17 Scalable address decoding scheme for cxl type-2 devices with programmable interleave granularity
US17/478,828 2021-09-17

Publications (1)

Publication Number Publication Date
CN115827513A true CN115827513A (zh) 2023-03-21

Family

ID=82786791

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210978992.XA Pending CN115827513A (zh) 2021-09-17 2022-08-16 利用可编程交织粒度的用于cxl类型-2设备的可扩展地址解码方案

Country Status (4)

Country Link
US (1) US20230086222A1 (zh)
EP (1) EP4152167A1 (zh)
KR (1) KR20230041593A (zh)
CN (1) CN115827513A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11874776B2 (en) 2021-06-25 2024-01-16 Intel Corporation Cryptographic protection of memory attached over interconnects
CN117785755B (zh) * 2024-02-23 2024-05-28 北京超弦存储器研究院 Cxl内存模组及资源配置方法、控制芯片、介质和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054455A1 (en) * 2010-08-31 2012-03-01 Qualcomm Incorporated Non-Uniform Interleaving Scheme In Multiple Channel DRAM System
US10628308B2 (en) * 2018-05-24 2020-04-21 Qualcomm Incorporated Dynamic adjustment of memory channel interleave granularity

Also Published As

Publication number Publication date
US20230086222A1 (en) 2023-03-23
EP4152167A1 (en) 2023-03-22
KR20230041593A (ko) 2023-03-24

Similar Documents

Publication Publication Date Title
US20220335563A1 (en) Graphics processing unit with network interfaces
CN111506534B (zh) 具有非阻塞高性能事务信用系统的多核总线架构
TWI620128B (zh) 在中央處理單元與圖形處理單元間分享資源之裝置與系統
JP4386373B2 (ja) ロジカルパーティショニングされた処理環境におけるリソース管理のための方法および装置
US7526608B2 (en) Methods and apparatus for providing a software implemented cache memory
US9058164B2 (en) Power consumption reduction in a multiprocessor system
EP4152167A1 (en) Scalable address decoding scheme for cxl type-2 devices with programmable interleave granularity
CN115951978A (zh) 用于分解式3D结构化SoC的原子性处置
JP2006172468A (ja) システム内部のデータ転送を処理する装置および方法
US20190042432A1 (en) Reducing cache line collisions
CN112948285A (zh) 灵活高速缓存分配技术的基于优先级的高速缓存行驱逐算法
CN115793960A (zh) 对融合有复制或变换操作的经压缩流进行验证
EP4020230A1 (en) Application programming interface for fine grained low latency decompression within processor core
US8667200B1 (en) Fast and highly scalable quota-based weighted arbitration
EP4198717A1 (en) Register file virtualization: applications and methods
EP4124965A1 (en) Scalable access control checking for cross-address-space data movement
US20230032236A1 (en) Data streaming accelerator
US20230289229A1 (en) Confidential computing extensions for highly scalable accelerators
EP4020231B1 (en) Speculative decompression within processor core caches
EP4020185A1 (en) Instruction and micro-architecture support for decompression on core
US20140136793A1 (en) System and method for reduced cache mode
US10452401B2 (en) Hints for shared store pipeline and multi-rate targets
US20220100511A1 (en) Delayed cache writeback instructions for improved data sharing in manycore processors
Ham et al. Low-overhead General-purpose Near-Data Processing in CXL Memory Expanders

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication