CN102326156B - 基于空间要求目标报告的对mmio请求处理的投机改进 - Google Patents
基于空间要求目标报告的对mmio请求处理的投机改进 Download PDFInfo
- Publication number
- CN102326156B CN102326156B CN201080009574.5A CN201080009574A CN102326156B CN 102326156 B CN102326156 B CN 102326156B CN 201080009574 A CN201080009574 A CN 201080009574A CN 102326156 B CN102326156 B CN 102326156B
- Authority
- CN
- China
- Prior art keywords
- mmio
- processor
- attribute
- equipment
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Communication Control (AREA)
Abstract
描述了用于对存储器映射的输入/输出(MMIO)请求处理的投机改进(例如,基于空间要求的目标报告)的方法和装置。在一个实施例中,处理器中的逻辑可检测要从输入/输出(I/O)设备发送的消息中的一个或多个位。这一个或多个位可指示与该I/O设备的一个或多个属性相对应的存储器映射I/O(MMIO)信息。还公开了其它实施例。
Description
技术领域
本发明一般涉及电子学领域。更具体地,本发明的实施例涉及用于基于例如空间要求的目标报告的对存储器映射输入/输出(MMIO)请求处理的投机改进的技术。
背景技术
MMIO一般涉及用于例如在计算机中的处理器与外围设备之间执行输入/输出操作的机制。例如,存储器设备中的可由处理器寻址(例如以供读和写操作)的指定或保留区域可被映射以选择输入/输出(“I/O”或“IO”)设备。以此方式,处理器与I/O设备之间的通信可通过存储器设备来执行。
一些当前处理器和芯片组对由处理器进行的MMIO访问(例如在标记为“未高速缓存”(UC)的存储器中)的处理会受传统兼容性问题支配,该处理一般比多数实现所必需的处理保守。已围绕此问题通过限定诸如写结合(WC)之类的新存储器空间类型来进行了一些尝试,但这些方法可由系统软件配置,因此仅可在需要实现新系统软件时以及可能有新应用软件可接受时被使用。通常这是不可接受的,因为用于市场化的成本和时间提高,且替代地可能需要忍受几乎总是不必要保守的行为的性能后果。
附图简述
参照附图提供详细描述。在附图中,附图标记中最左边的数字标识该附图标记首次出现的附图。在不同附图中使用相同的附图标记表示相似或相同的项目。
图1、4-5和7示出计算系统的实施例的框图,这些计算系统可用于实现本文讨论的各个实施例。
图2示出根据实施例的比较图。
图3示出根据实施例的首部和MMIO范围属性。
图6示出根据实施例的方法的流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对各实施例的透彻理解。然而,在没有这些具体细节的情况下也可实践某些实施例。在其它实例中,并未对公知方法、程序、组件以及电路进行详细描述以免模糊具体实施例。
一些实施例涉及区分对不同MMIO空间的请求处理要求的高效技术。在一个实施例中,设备(和/或一实施例中的相关驱动程序软件)可被配置成知晓并理解对该设备的MMIO访问的要求。通过提供用于将该信息通信至主机处理器/核/非核/芯片组(其又可包括用于检测和处理设备专属信息的逻辑)的机制,可投机地修改默认请求处理行为(例如与UC存储器实现相关联)。此外,传统设备可保持部分地不受影响,因为它们保持默认UC请求处理特性。
更具体地说,在一个实施例中,新I/O设备可指示请求处理要求,对于映射至相应I/O设备的特定存储器区,该指示操作利用针对其目的定义的消息和/或用于处理器发起的对该区域的请求的完成消息所包括的信息。该信息可被处理器存储或高速缓存在例如缓冲器、数据高速缓存、专用高速缓存、TLB(转换后备缓冲器)、布鲁姆(Bloom)过滤器(例如,该过滤器可以是空间高效的概率数据结构,用于测试一元素是否是集合的成员)中,或在一些其它适于指示请求处理属性的高速缓存结构或存储结构(诸如本文参照图2-7所讨论的存储设备)中。在实施例中,经高速缓存/存储的信息在预定义条件下可被清除,以试图确保陈旧信息不被使用。
相应地,一些实施例提供提高MMIO性能的能力,而无须系统软件启用或系统软件修改。因此,一些实施例支持未经修改的传统硬件和/或软件的继续使用,同时允许新硬件实现性能提高,例如,由包括处理器的主机系统所允许。
更具体地,图1示出根据本发明的实施例的计算系统100的框图。系统100可包括一个或多个代理102-1到102-M(本文共同称为“多个代理102”或更普遍的“代理102”)。在实施例中,代理102中的一个或多个可以是诸如参照图4-5或7所讨论的计算系统之类的计算系统的组件中的任一个。
如图1所示,代理102可经由网络结构104通信。在一个实施例中,网络结构104可包括允许各代理(诸如计算设备)通信数据的计算机网络。在实施例中,网络结构104可包括经由串行(例如,点对点)链路和/或共享的通信网络通信的一个或多个互连(或互连网络)。例如,某些实施例可便于部件在允许与完全缓冲双列直插式存储器模块(FBD)通信的链路上调试或验证,例如,其中FBD链路是用于将存储器模块耦合到主机控制器设备(诸如处理器或存储器中枢)的串行链路。调试信息可从FBD通道主机传输,以使得调试信息可沿着通道由通道通信量跟踪捕获工具(诸如一个或多个逻辑分析器)观测。
在一个实施例中,系统100可支持分层协议方案,该分层协议方案可包括物理层、链路层、路由层、传输层和/或协议层。对于点对点或共享网络,结构104还可便于数据(例如以分组形式)从一个协议(例如,高速缓存处理器或高速缓存知晓存储器控制器)传输到另一协议。而且,在某些实施例中,网络结构104可提供遵守一个或多个高速缓存一致协议的通信。
此外,如图1中的箭头方向所示,代理102可经由网络结构104传输和/或接收数据。因此,某些代理可利用单向链路通信,而其它代理可利用双向链路通信。例如,一个或多个代理(诸如代理102-M)可(例如,经由单向链路106)传输数据,其它代理(诸如代理102-2)可(例如,经由单向链路108)接收数据,而某些代理(诸如代理102-1)可(例如,经由双向链路110)传输和接收数据。
在一些情况下,I/O设备将知晓与该I/O设备所拥有的MMIO区域相关的排序和数据处理要求(在本文中也称为“属性”)。然而,当前方法可能需要系统配置软件来对存储器类型范围寄存器(MTRR)或页面属性编程,以使处理器/平台能领会这些属性。因此,这样会将用途限制于适当的系统软件基础结构存在的情况,且通常会导致糟糕的可扩展性。
替代地,一实施例为I/O设备提供一种机制,该机制用于提供一个或多个MMIO区域属性(和/或该I/O设备的排序数据和数据处理要求),该一个或多个MMIO区域属性(和/或该I/O设备的排序数据和数据处理要求)可能被存储在例如历史缓冲器、高速缓存或其它存储设备中。默认MMIO属性可匹配当前UC行为,直到设备(例如直接地或经由诸如开关之类的互连设备)指示偏差是可接受的。该指示可与较早请求的完成消息相关联,或经由对设备的访问所触发的消息(该指示可包括请求此类消息的指示,例如由于在处理器的相应存储器/高速缓存中无对应于MMIO范围的条目)。该指示还可与由设备自主发送的消息相关联。
可基于设备的要求来修改事务处理的各个方面(然而,不要求处理器来实现所有这些过程,且在一些实施例中,处理器仅执行子集)。例如,可描述以下属性:
(1)可预取——一般没有读取副作用且不管字节使能(byte enable)(例如指示那些特定字节是满足存储器请求所需要或要求的)如何均返回读取时的所有字节,并允许写合并(在下文中进一步讨论)。例如,可预取的存储器具有在读取多次时返回相同数据以及在它被读取时不改变任何其它设备状态的属性。
(2)统写(write-through)型高速缓存——当存储器位置被写入时,所写的值被立即写入存储器。统写通常与写回(write-back)形成对比,写回避免立即写入,且通常通过要求对高速缓存行的排他所有权来写入高速缓存行而不写入存储器。在一次或多次此类写入之后,“脏(dirty)”行被写入存储器。
(3)诸如组合/坍塌/合并写入之类的写入类型——将分离但连续的地址升序的存储器写入组合成单次较大传输;允许利用字节使能来禁用未经写入的位置,虽然这在PCIe(外围部件互连(PCI)高速)中由于PCIe的字节使能语义而一般是不可能的。合并写入可包括,如果任何字节位置仅被写入一次,则将对一个DWORD地址的分离但连续的遮蔽(字节粒度)存储器写入合并到单个较大的写入中。此外,坍塌写入可包括通过仅写入最近的数据,将对同一地址的连续存储器写入转换成单次传输。这在PCI中一般是不允许的,尽管WC存储器类型可用于执行该操作。
(4)投机访问——MMIO存储器位置可能具有副作用——它们可能执行诸如响应于载荷而重启系统之类的操作。一些微处理器使用诸如无序执行和转移预测之类的“投机”技术来提高性能。在此类系统上,硬件微架构可投机地执行程序员不打算执行的载荷(以及其它操作),或按照与程序员所指定的顺序不同的顺序来执行载荷。硬件确保此类操作的效果看起来与程序员所打算的一样,但通常仅对普通存储器是如此,MMIO则不然。普通存储器对投机或其它载荷均无副作用。如果对MMIO执行投机载荷,则MMIO显然会呈现坏的行为。为此,根据一个实施例,指示存储器的哪些区域允许投机载荷,而哪些区域不允许。
(5)存储器排序模型——一些计算机处理器可实现诸如循序一致性、总存储排序、处理器一致性或弱排序之类的存储器排序模型。在一些实现中,较弱的存储器排序模型允许较简单的硬件,但一些程序员可能采取较强(stringer)存储器排序模型以用于并行应用。
下图示出了如何将这种信息排序用于提高处理器对I/O设备的访问的序列的性能。更具体地,图2示出了样本当前系统相对于本发明的实施例的样本代码序列和由此导致的总线操作(本发明的实施例导致了性能提高)。
如图2所示,在一些当前系统中,所有对设备的处理器读取被串行化——在进行至下一指令之前,处理器操作停止以等待每次读取的结果。在经优化的系统中(如该图右侧所示),对设备的数据读取在状态寄存器读取操作后方被投机地流水线化。如果状态测试失败(例如,“OK”代码被跳过),则来自数据读取的结果将被丢弃。在状态读取测试通过的情况下,这些数据值将被使用。注意,在这两种情况下,这些读取按顺序进行,因此不存在例如数据读取会在状态读取之前被重新排序的可能。然而,在一些实施例中(虽然未在附图中示出),这些数据读取可自身进行重新排序可能是可接受的。
此外,在一些实施例中,对于进行此类优化的处理器/芯片组,I/O设备将存储器空间的属性通信至处理器/芯片组。一种实现此目的的方法是通过在由I/O设备所返回的每个读取完成消息中包括这些属性。对于PCIe I/O设备,这可通过用MMIO范围属性字段来代替完成者ID字段(该完成者ID字段可能不具有架构限定的用途)来实现,如图3所示。
更具体地,图3示出根据实施例的用MMIO范围属性代替完成者ID字段的完成首部。之前保留的MRA(MMIO范围属性)位可指示包括MMIO范围属性的完成消息。对无高速缓存的/存储的MMIO属性的MMIO范围(例如UC存储器的对准4K区域)的处理器访问可利用默认UC处理来完成。当返回完成消息,指示与默认UC属性不同的MMIO范围属性时,该信息可被存储并用于适当地修改对同一区域的未来访问。
替代地(或作为附加),在由来自处理器的明确请求或通过隐含请求(诸如页面访问)来触发,从而I/O设备会向处理器/芯片组发送指示MMIO范围和相关属性的消息的情况下,可使用消息协议。在一些实施例中,可由该处理器/芯片组保持经高速缓存的条目,直到这些条目由于高速缓存容量限制(例如使用LRU(最近最少使用)算法)或由于使条目无效的明确或隐含请求而被逐出。处理器对特定设备的配置空间(例如PCIe BAR(基地址寄存器))的任何改变存储器范围设定的访问会使经高速缓存的相应设备的属性条目无效。在一些实施例中,作为简化,当对设备进行任何PCIe配置访问或(甚至更简单)当执行任何PCIe配置写入时,可使这些条目无效。在一些实施例中,利用消息协议,设备可明确地请求使页面属性无效或更新页面属性。
此外,例如当从一种操作模式变化至另一种操作模式时,设备可能想要改变给定区域的属性,从而它可在此类使用可接受的模式下使用最积极或高效的属性,并在需要时将这些属性改变成较不积极或更保守的属性,而不是必须使用始终指示较不积极属性的较保守方法。例如,该技术可由图形卡使用,该图形卡可将一组属性应用于被分配由图形应用使用的卡上存储器,但当相同的卡上存储器被重新分配由GP-GPU(通用编程图形处理单元)实现使用时应用不同的属性组。
如图3所示,字节4的0至6位可用于所指示的MMIO范围属性。位值和相应的指示以表格形式在图3的底部示出。取决于该实现,可使用设定位或清除位来选择选项。
可使用各种类型的计算系统来实现本文中讨论的实施例(诸如参照图2-3所讨论的那些实施例)。例如,图4示出了根据实施例的计算系统400的部分的框图。在一个实施例中,系统400的各个部件可由参照图1所讨论的代理102-1和/或102-M中的一个来实现。将在此参照图6讨论与计算系统400的一些操作相关的更多细节。
系统400可包括一个或多个处理器402-1到402-N(本文共同称为“多个处理器402”或更普遍的“处理器402”)。处理器402-1到402-N中的每一个可包括多个部件,诸如私有或共享高速缓存、执行单元、一个或多个核,等等。此外,处理器402可通过总线404与诸如接口设备406之类的其它部件通信。在一实施例中,接口设备406可以是芯片组或存储器控制器中枢(MCH)。此外,如将参照图7进一步讨论,处理器402可经由点对点(PtP)连接与其它部件通信。另外,接口设备406可与一个或多个外围设备408-1到408-P(在本文中统称为“外围设备408”或更一般的“设备408”)通信。在一实施例中,设备408可以是根据PCIe规范通信的外围设备。
如图4所示,开关逻辑412可耦合在各个代理(例如外围设备408和接口设备406)之间。开关逻辑412可包括属性逻辑420,该属性逻辑420用于例如代表外围设备408中的一个或多个向接口设备406(或诸如图5的芯片组506之类的芯片组)和/或处理器402发送属性信息(诸如参照图2-3所讨论的那些属性信息)。此外,如图所示,处理器402中的一个或多个可包括MMIO逻辑422,MMIO逻辑422用于从属性逻辑420和/或外围设备直接接收信息。处理器可包括存储单元(或高速缓存),该存储单元用于存储属性/MMIO信息。此外,即使逻辑420被示为包括在开关逻辑412中,但它也可位于系统400中的任何位置,诸如位于接口设备406中。
图5示出计算系统500的实施例的框图。图1的代理102中的一个或多个和/或图4的系统400可包括计算系统500中的一个或多个部件。计算系统500可包括耦合到互连网络(或总线)504的一个或多个中央处理单元(CPU)502(在本文中可将其统称为“多个处理器502”或更一般地称为“处理器502”)。处理器502可以是任何类型的处理器,诸如通用处理器、网络处理器(它可处理在计算机网络505上传达的数据)等(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。此外,处理器502可具有单核或多核设计。具有多核设计的处理器502可将不同类型的处理器核集成在同一集成电路(IC)管芯上。同样,具有多核设计的处理器502可被实现为对称或不对称多处理器。
处理器502可包括一个或多个高速缓存(未示出),在各实施例中该一个或多个高速缓存可以是专用的和/或共享的。一般而言,高速缓存存储与其它位置存储的原始数据相对应的数据或先前计算出的数据。为了减少存储器访问等待时间,一旦将数据存储在高速缓存中,就可通过访问经高速缓存的副本而非重新取出或重新计算原始数据来进行将来的使用。该高速缓存可以是用于存储由系统500的一个或多个部件使用的电子数据(例如,包括指令)的任何类型的高速缓存,诸如一级(L1)高速缓存、二级(L2)高速缓存、三级(L3)高速缓存、中级高速缓存、末级高速缓存(LLC)等。
芯片组506可附加地耦合到互连网络504。在一实施例中,芯片组506可以与图4的接口设备406相同或相似。此外,芯片组506可包括存储器控制器中枢(MCH)508。MCH 508可包括耦合到存储器512的存储器控制器510。存储器512可存储数据,例如包括由处理器502或与计算系统500的组件通信的任意其它设备执行的指令序列。在实施例中,存储器512可与图4的存储器411相同或相似。同样,在本发明的一个实施例中,存储器512可包括一个或多个易失性存储(或存储器)设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)等。还可使用诸如硬盘之类的非易失性存储器。可将诸如多个处理器和/或多个系统存储器之类的另外的设备耦合到互连网络504。
MCH 508还可包括(例如,在实施例中经由图形加速器)耦合到显示设备516的图形接口514。在一个实施例中,图形接口514可经由PCIe耦合到显示设备516。在本发明的实施例中,显示设备516(诸如平板显示器)可通过例如信号转换器耦合到图形接口514,该信号转换器将诸如视频存储器或系统存储器(例如,存储器512)之类的存储设备中存储的图像的数字表示转换成由显示器516解释和显示的显示信号。
如图5所示,中枢接口518可将MCH 508耦合到输入/输出控制中枢(ICH)520。ICH 520可向耦合到计算系统500的输入/输出(I/O)设备提供接口。ICH 520可通过诸如可遵守PCIe规范的外围组件互连(PCI)桥、通用串行总线(USB)控制器等等外围桥(或控制器)524耦合到总线522。桥524可在处理器502和外围设备之间提供数据路径。可使用其它类型的布局。同样,多个总线可例如通过多个桥或控制器耦合到ICH 520。例如,总线522可遵守可从美国俄勒冈州波特兰市的PCI专用业务组获得的PCI本地总线规范版本3.0(2004)(在下文中称为“PCI总线”)。或者,总线522可包括遵守可从上述美国俄勒冈州波特兰市的PCI专用业务组获得的PCI-X规范版本3.0a(2003)(在下文中称为“PCI-X总线”)和/或PCI快速(PCIe)规范(PCIe规范,修订2.0,2006)的总线。此外,总线522可包括总线系统的其它类型和配置。另外,在本发明的各实施例中,耦合到ICH 520的其它外围组件可包括集成的驱动电子(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持(例如,数字视频接口(DVI))等。
总线522可耦合到音频设备526、一个或多个盘驱动器528以及网络适配器530(在实施例中可以是NIC)。在一个实施例中,耦合至总线522的网络适配器530或其它设备可经由开关逻辑512(在一些实施例中,开关逻辑512可与图4的逻辑412相同或相似)与芯片组506通信。其它设备可耦合到总线522。同样,在本发明的一些实施例中,各部件(诸如网络适配器530)可耦合到MCH 508。此外,可组合处理器502和MCH 508,以形成单个芯片。在实施例中,可在CPU 502的一个或多个中设置存储器控制器510。此外,在实施例中,MCH 508和ICH 520可被组合成外围控制中枢(PCH)。
另外,计算系统500可包括易失性和/或非易失性存储器(或存储)。例如,非易失性存储器可包括以下的一个或多个:只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电RPROM(EEPROM)、盘驱动器(例如,528)、软盘、紧致盘ROM(CD-ROM)、数字多功能盘(DVD)、闪存、磁光盘或能够储存电子数据(例如,包括指令)的其它类型的非易失性机器可读介质。
在一实施例中,存储器512可包括以下中的一个或多个:操作系统(O/S)532、应用程序534和/或设备驱动程序536。存储器512还可包括MMIO操作专用的区域。作为存储器管理操作的一部分,可将存储在存储器512中的程序和/或数据交换到盘驱动器528中。应用程序534可(例如在处理器502上)执行以便与耦合到网络505的一个或多个计算设备通信一个或多个分组。在实施例中,分组可以是可由从至少一个发送器发送到至少一个接收器(例如,通过诸如网络505之类的网络)的一个或多个电信号编码的一个或多个码元和/或值的序列。例如,每个分组可具有包括可用于路由和/或处理该分组的各种信息(诸如源地址、目的地地址、分组类型等)的首部。每个分组还可具有包括该分组正通过计算机网络(诸如网络505)在各计算设备之间传送的原始数据(或内容)的有效载荷。
在实施例中,应用程序534可利用O/S 532来例如通过设备驱动程序536与系统500的各部件通信。因此,设备驱动程序536可包括网络适配器(530)专用命令,以便例如经由芯片组506在O/S 532和网络适配器530或耦合到系统500的其它I/O设备之间提供通信接口。
在实施例中,O/S 532可包括网络协议栈。协议栈一般指的是一组过程或程序,可执行该组过程或程序以处理通过网络(505)发送的分组,其中分组可遵守指定协议。例如,可利用TCP/IP(传输控制协议/网际协议)栈来处理TCP/IP分组。设备驱动程序536可例如经由协议栈指示要处理的缓冲器538。
如图5所示,网络适配器530可包括属性逻辑420(参照图4讨论),属性逻辑420可将参照图2-3所讨论的属性信息发送至CPU 502。如同图4,CPU可包括用于接收属性信息的逻辑(例如逻辑422)。此外,CPU可包括用于存储属性信息的存储单元(诸如高速缓存、缓冲器等)。此外,虽然在图5中逻辑420被包括在网络适配器530中,但它也可位于别的地方,诸如在开关逻辑512、芯片组506中等等。
网络505可包括任何类型的计算机网络。网络适配器530还可包括直接存储器访问(DMA)引擎552,该DMA引擎552将分组写入分配给可用描述符(例如,存储在存储器512中)的缓冲器(例如,存储在存储器512中),以便通过网络505发送和/或接收数据。另外,网络适配器530可包括网络适配器控制器554,该网络适配器控制器554可包括用于执行适配器相关操作的逻辑(诸如一个或多个可编程处理器)。在实施例中,适配器控制器554可以是MAC(介质访问控制)部件。网络适配器530还可包括存储器556,诸如任意类型的易失性/非易失性存储器(例如,包括一个或多个高速缓存和/或参照存储器512讨论的其它存储器类型)。在实施例中,存储器556可存储网络适配器530的属性信息(诸如参照图2-3所讨论的那些属性信息)。
图6示出根据实施例的访问MMIO区域的方法600的流程图。在一个实施例中,参照图1-5和7讨论的各部件可用于执行参照图6讨论的操作中的一个或多个。
参照图1-6,在操作602,接收消息(例如从逻辑422处的逻辑420)。在一些实施例中,该消息由I/O设备(或代表耦合至开关的I/O设备的开关)在没有来自另一部件的询问的情况下在该设备自身发起时产生。在操作604,(例如由逻辑422)检测到属性标记(例如诸如与图3的MMIO属性一起讨论的那些位之类的一个或多个位)。如果属性标记不存在,则方法600返回至操作602以接收另一消息;否则,可在608存储属性信息(例如存储在诸如参照图1-5或7所讨论的处理器之类的处理器的存储设备(诸如高速缓存、缓冲器、表等等)中)。在操作610,可例如基于操作608所存储的信息来访问MMIO区(通过诸如参照图1-5或7所讨论的那些处理器/核之类的处理器/核)。
图7示出了根据本发明实施例的以点对点(PtP)结构布置的计算系统700。具体地,图7示出其中处理器、存储器和输入/输出设备通过多个点对点接口互连的系统。参照图1-6讨论的操作可由系统700的一个或多个部件来执行。
如图7所示,系统700可包括若干处理器,但为了清楚起见仅示出了其中两个处理器702、704。处理器702和704可分别包括本地存储器控制器中枢(MCH)706和708,以实现与存储器710和712的通信(存储器710和712可存储诸如参照权利要求2-3所讨论的MMIO区之类的MMIO区)。存储器710和/或712可存储诸如参考图5的存储器512讨论的数据之类的各种数据。如图7所示,处理器702和704还可包括诸如参考图4和5讨论的高速缓存之类的一个或多个高速缓存。
在实施例中,处理器702和704可以是参考图5讨论的处理器502之一。处理器702和704可分别使用点对点(PtP)接口电路716和718经由PtP接口714来交换数据。同样,处理器702和704可各自使用点对点接口电路726、728、730和732经由各PtP接口722和724与芯片组720交换数据。芯片组720还可例如利用PtP接口电路737经由高性能图形接口736与高性能图形电路734交换数据。
在至少一个实施例中,开关逻辑412可耦合在芯片组720与系统700的其它部件之间,这些其它部件诸如经由总线740通信的那些部件。然而,本发明的其它实施例可存在于图7的系统700内的其它电路、逻辑单元或设备中。而且,本发明的其它实施例可分布在图7中所示若干电路、逻辑单元或设备中。此外,芯片组720可包括逻辑420(参照图2-6所讨论),且处理器702、704可包括逻辑422(参照图2-6所讨论)。此外,逻辑420可位于系统700中的其它位置,诸如在逻辑412、通信设备746中等等。
芯片组720可利用PtP接口电路741与总线740通信。总线740可具有与其通信的一个或多个设备,诸如总线桥742和I/O设备743。经由总线744,总线桥742可与诸如键盘/鼠标745、通信设备746(诸如可与计算机网络505通信的调制解调器、网络接口设备或其它通信设备)、音频I/O设备、和/或数据存储设备748之类的其它设备通信。数据存储设备748可存储由处理器702和/或704执行的代码749。
在本发明的各实施例中,本文中例如参考图1-7讨论的操作可被实现为硬件(例如,电路)、软件、固件、微代码或其组合,它们可作为计算机程序产品来提供,该计算机程序产品例如包括其上存储有指令(或软件程序)的机器可读或计算机可读介质,这些指令用于对计算机进行编程以执行本文所讨论的过程。并且,作为示例,术语“逻辑”可包括软件、硬件或软件和硬件的组合。机器可读介质可包括诸如参考图1-7所讨论的存储设备之类的存储设备。此外,这种计算机可读介质可作为计算机程序产品来下载,其中该程序可经由通信链路(例如,总线、调制解调器或网络连接)通过设置在载波或其它传播介质中的数据信号从远程计算机(例如,服务器)传输到作出请求的计算机(例如,客户机)。
在本说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性可包括在至少一个实现中。在本说明书各处出现的短语“在一个实施例中”可以或可不全指代同一实施例。
并且,在说明书和权利要求书中,可使用术语“耦合”和“连接”以及它们的派生词。在本发明的某些实施例中,“连接”可用于指示两个或多个元件相互直接物理接触和/或电接触。“耦合”可表示两个或多个元件直接物理或电气接触。然而,“耦合”还可表示两个或多个元件相互不直接接触,但仍相互配合和/或相互作用。
因此,虽然用结构特征和/或方法动作专属语言描述了本发明的实施例,但是应当理解所保护的主题可不限于所描述的具体特征或动作。相反,该特定特征和动作被公开作为实现所保护主题的样本形式。
Claims (20)
1.一种用于对存储器映射输入/输出MMIO请求处理的投机改进的处理器,所述处理器包括:
第一逻辑,用于检测要从输入/输出I/O设备发送的消息中的一个或多个位,其中所述一个或多个位用于指示与所述I/O设备的一个或多个属性相对应的MMIO信息;以及
第二逻辑,用于基于所述MMIO信息访问存储器中的MMIO区,其中所述I/O设备生成所述消息,并且所述一个或多个位由所述I/O设备响应于在所述I/O设备处接收的请求而发送,其中用指示来通知关于存储在所述MMIO区中的数据的从未高速缓存行为的偏差的可接受性,其中所述指示与较早请求的完成消息相关联。
2.如权利要求1所述的处理器,其特征在于,所述一个或多个属性包括以下的一个或多个:可预取属性、统写型高速缓存属性、写入型属性、投机访问属性或存储器排序模型属性。
3.如权利要求2所述的处理器,其特征在于,所述写入型属性包括组合写入属性、坍塌写入属性或合并写入属性中的一个或多个。
4.如权利要求1所述的处理器,其特征在于,所述一个或多个位存在于与处理器发起的对所述MMIO区的请求相对应的完成消息中。
5.如权利要求1所述的处理器,其特征在于,所述MMIO信息包括所述I/O设备的排序数据或数据处理要求。
6.如权利要求1所述的处理器,其特征在于,所述处理器包括所述存储器。
7.如权利要求1所述的处理器,其特征在于,所述请求响应于所述存储器中缺少与所述MMIO区相对应的条目而产生。
8.如权利要求1所述的处理器,其特征在于,所述存储器包括数据高速缓存、专用高速缓存、转换后备缓冲器或布鲁姆过滤器中的一个或多个。
9.如权利要求1所述的处理器,其特征在于,所述第一逻辑、所述存储器以及所述第二逻辑中的一个或多个在同一集成电路管芯上。
10.如权利要求1所述的处理器,其特征在于,还包括多个处理器核,用于访问所述存储器中与所述MMIO信息相对应的MMIO区。
11.如权利要求10所述的处理器,其特征在于,所述第一逻辑、所述存储器以及所述多个处理器核中的一个或多个在同一集成电路管芯上。
12.如权利要求1所述的处理器,其特征在于,所述I/O设备包括用于产生MMIO信息的逻辑。
13.如权利要求1所述的处理器,其特征在于,开关逻辑用于产生所述MMIO信息,其中所述开关逻辑耦合在所述处理器与I/O设备之间。
14.一种用于对存储器映射输入/输出MMIO请求处理的投机改进的方法,所述方法包括:
从输入/输出I/O设备接收包括一个或多个位的消息,其中所述一个或多个位用于指示与所述I/O设备的一个或多个属性相对应的MMIO信息;
其中基于所述MMIO信息访问存储器中的MMIO区,其中所述I/O设备生成所述消息,并且所述一个或多个位是响应于在所述I/O设备处接收请求而发送的,其中用指示来通知关于存储在所述MMIO区中的数据的从未高速缓存行为的偏差的可接受性,其中所述指示与较早请求的完成消息相关联。
15.如权利要求14所述的方法,其特征在于,还包括在接收所述消息之后检测所述一个或多个位。
16.如权利要求14所述的方法,其特征在于,所述一个或多个属性包括以下的一个或多个:可预取属性、统写型高速缓存属性、写入型属性、投机访问属性或存储器排序模型属性。
17.如权利要求16所述的方法,其特征在于,所述写入型属性包括组合写入属性、坍塌写入属性或合并写入属性中的一个或多个。
18.如权利要求14所述的方法,其特征在于,接收所述消息包括接收与处理器发起的对所述MMIO区的请求相对应的完成消息。
19.如权利要求14所述的方法,其特征在于,还包括将所述MMIO信息存储在所述存储器中。
20.如权利要求14所述的方法,其特征在于,还包括响应于所述存储器中缺少与所述MMIO区相对应的条目而产生对所述一个或多个位的请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/415,913 US8055805B2 (en) | 2009-03-31 | 2009-03-31 | Opportunistic improvement of MMIO request handling based on target reporting of space requirements |
US12/415,913 | 2009-03-31 | ||
PCT/US2010/026558 WO2010117528A2 (en) | 2009-03-31 | 2010-03-08 | Opportunistic improvement of mmio request handling based on target reporting of space requirements |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102326156A CN102326156A (zh) | 2012-01-18 |
CN102326156B true CN102326156B (zh) | 2015-02-04 |
Family
ID=42785657
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080009574.5A Active CN102326156B (zh) | 2009-03-31 | 2010-03-08 | 基于空间要求目标报告的对mmio请求处理的投机改进 |
CN201010161828.7A Active CN101853227B (zh) | 2009-03-31 | 2010-03-29 | 改进存储器映射输入/输出请求处理的方法和处理器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010161828.7A Active CN101853227B (zh) | 2009-03-31 | 2010-03-29 | 改进存储器映射输入/输出请求处理的方法和处理器 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8055805B2 (zh) |
CN (2) | CN102326156B (zh) |
DE (2) | DE112010001404T5 (zh) |
TW (1) | TWI506444B (zh) |
WO (1) | WO2010117528A2 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8055805B2 (en) | 2009-03-31 | 2011-11-08 | Intel Corporation | Opportunistic improvement of MMIO request handling based on target reporting of space requirements |
US8924975B2 (en) * | 2009-07-23 | 2014-12-30 | Empire Technology Development Llc | Core selection for applications running on multiprocessor systems based on core and application characteristics |
US8819686B2 (en) * | 2009-07-23 | 2014-08-26 | Empire Technology Development Llc | Scheduling threads on different processor cores based on memory temperature |
US8356122B2 (en) | 2010-01-08 | 2013-01-15 | International Business Machines Corporation | Distributed trace using central performance counter memory |
US9268611B2 (en) | 2010-09-25 | 2016-02-23 | Intel Corporation | Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores |
US8943248B2 (en) * | 2011-03-02 | 2015-01-27 | Texas Instruments Incorporated | Method and system for handling discarded and merged events when monitoring a system bus |
CN103268278B (zh) * | 2013-06-14 | 2016-12-28 | 苏州国芯科技有限公司 | 支持多核处理器的sram控制器及其跟踪信息处理方法 |
US20150074219A1 (en) * | 2013-07-12 | 2015-03-12 | Brocade Communications Systems, Inc. | High availability networking using transactional memory |
US9959224B1 (en) * | 2013-12-23 | 2018-05-01 | Google Llc | Device generated interrupts compatible with limited interrupt virtualization hardware |
US9524114B2 (en) | 2015-01-27 | 2016-12-20 | Futurewei Technologies, Inc. | Optimizing synchronous write via speculation |
ES2830355T3 (es) * | 2016-08-26 | 2021-06-03 | Huawei Tech Co Ltd | Procedimiento, dispositivo y sistema para implementar el procesamiento de aceleración de hardware |
US11321240B2 (en) | 2018-06-08 | 2022-05-03 | International Business Machines Corporation | MMIO addressing using a translation lookaside buffer |
US10929302B2 (en) | 2018-06-08 | 2021-02-23 | International Business Machines Corporation | MMIO addressing using a translation table |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681311B2 (en) * | 2001-07-18 | 2004-01-20 | Ip-First, Llc | Translation lookaside buffer that caches memory type information |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5561780A (en) * | 1993-12-30 | 1996-10-01 | Intel Corporation | Method and apparatus for combining uncacheable write data into cache-line-sized write buffers |
US5680565A (en) * | 1993-12-30 | 1997-10-21 | Intel Corporation | Method and apparatus for performing page table walks in a microprocessor capable of processing speculative instructions |
US5956753A (en) * | 1993-12-30 | 1999-09-21 | Intel Corporation | Method and apparatus for handling speculative memory access operations |
US5751995A (en) * | 1994-01-04 | 1998-05-12 | Intel Corporation | Apparatus and method of maintaining processor ordering in a multiprocessor system which includes one or more processors that execute instructions speculatively |
US5420991A (en) * | 1994-01-04 | 1995-05-30 | Intel Corporation | Apparatus and method for maintaining processing consistency in a computer system having multiple processors |
ZA954460B (en) * | 1994-09-30 | 1996-02-05 | Intel Corp | Method and apparatus for processing memory-type information within a microprocessor |
US5819079A (en) * | 1995-09-11 | 1998-10-06 | Intel Corporation | Instruction fetch on demand for uncacheable memory which avoids memory mapped I/O side effects in a processor with speculative instruction fetch |
US6009488A (en) * | 1997-11-07 | 1999-12-28 | Microlinc, Llc | Computer having packet-based interconnect channel |
US7213081B2 (en) * | 2001-06-29 | 2007-05-01 | Fujitsu Limited | Dynamic determination of memory mapped input output range granularity for multi-node computer system |
US7581026B2 (en) * | 2001-12-28 | 2009-08-25 | Intel Corporation | Communicating transaction types between agents in a computer system using packet headers including format and type fields |
US6944617B2 (en) * | 2001-12-28 | 2005-09-13 | Intel Corporation | Communicating transaction types between agents in a computer system using packet headers including an extended type/extended length field |
US7099318B2 (en) * | 2001-12-28 | 2006-08-29 | Intel Corporation | Communicating message request transaction types between agents in a computer system using multiple message groups |
US7206865B2 (en) * | 2003-03-28 | 2007-04-17 | Intel Corporation | Apparatus and method for combining writes to I/O |
US7127560B2 (en) * | 2003-10-14 | 2006-10-24 | International Business Machines Corporation | Method of dynamically controlling cache size |
US7539832B2 (en) * | 2004-08-23 | 2009-05-26 | Hewlett-Packard Development Company, L.P. | Option ROM code acquisition |
US7814292B2 (en) | 2005-06-14 | 2010-10-12 | Intel Corporation | Memory attribute speculation |
US8423682B2 (en) * | 2005-12-30 | 2013-04-16 | Intel Corporation | Address space emulation |
JP5103823B2 (ja) * | 2006-08-18 | 2012-12-19 | 富士通株式会社 | 情報処理装置および入出力要求制御方法 |
US20080147903A1 (en) * | 2006-10-11 | 2008-06-19 | Paul Gregory Curtis | Method and Apparatus for Implementing Commands in Input/Output (IO) Hub |
US8654634B2 (en) * | 2007-05-21 | 2014-02-18 | International Business Machines Corporation | Dynamically reassigning virtual lane resources |
US8312219B2 (en) * | 2009-03-02 | 2012-11-13 | International Business Machines Corporation | Hybrid caching techniques and garbage collection using hybrid caching techniques |
US8055805B2 (en) | 2009-03-31 | 2011-11-08 | Intel Corporation | Opportunistic improvement of MMIO request handling based on target reporting of space requirements |
-
2009
- 2009-03-31 US US12/415,913 patent/US8055805B2/en not_active Expired - Fee Related
-
2010
- 2010-03-08 WO PCT/US2010/026558 patent/WO2010117528A2/en active Application Filing
- 2010-03-08 CN CN201080009574.5A patent/CN102326156B/zh active Active
- 2010-03-08 DE DE112010001404T patent/DE112010001404T5/de not_active Ceased
- 2010-03-08 DE DE202010018020U patent/DE202010018020U1/de not_active Expired - Lifetime
- 2010-03-29 TW TW099109306A patent/TWI506444B/zh active
- 2010-03-29 CN CN201010161828.7A patent/CN101853227B/zh active Active
-
2011
- 2011-11-08 US US13/292,069 patent/US8904045B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681311B2 (en) * | 2001-07-18 | 2004-01-20 | Ip-First, Llc | Translation lookaside buffer that caches memory type information |
Also Published As
Publication number | Publication date |
---|---|
WO2010117528A2 (en) | 2010-10-14 |
DE202010018020U1 (de) | 2013-09-10 |
US8904045B2 (en) | 2014-12-02 |
CN102326156A (zh) | 2012-01-18 |
TW201135469A (en) | 2011-10-16 |
DE112010001404T5 (de) | 2013-01-24 |
WO2010117528A3 (en) | 2011-01-27 |
CN101853227A (zh) | 2010-10-06 |
TWI506444B (zh) | 2015-11-01 |
US8055805B2 (en) | 2011-11-08 |
US20120054380A1 (en) | 2012-03-01 |
CN101853227B (zh) | 2014-06-04 |
US20100250792A1 (en) | 2010-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102326156B (zh) | 基于空间要求目标报告的对mmio请求处理的投机改进 | |
US7707383B2 (en) | Address translation performance in virtualized environments | |
US20190095343A1 (en) | Low-latency accelerator | |
US9158725B2 (en) | Flexible control mechanism for store gathering in a write buffer | |
US9547597B2 (en) | Selection of post-request action based on combined response and input from the request source | |
US9251077B2 (en) | Accelerated recovery for snooped addresses in a coherent attached processor proxy | |
CN102023932A (zh) | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 | |
CN103927277A (zh) | Cpu和gpu共享片上高速缓存的方法及装置 | |
US9229868B2 (en) | Data recovery for coherent attached processor proxy | |
US10635589B2 (en) | System and method for managing transactions | |
US9251076B2 (en) | Epoch-based recovery for coherent attached processor proxy | |
CN115577402A (zh) | 设备之间的安全直接对等存储器访问请求 | |
US6629213B1 (en) | Apparatus and method using sub-cacheline transactions to improve system performance | |
US8706974B2 (en) | Snoop request management in a data processing system | |
WO2022133879A1 (en) | Device, system, and method for inspecting direct memory access requests | |
JP2001043133A (ja) | マルチプロセッサ・システムにおいてライトスルー・ストア・オペレーションでキャッシュ・コヒーレンシを維持するための方法およびシステム | |
CN103124962A (zh) | 优化环协议和技术 | |
US20240231834A1 (en) | Boot initialization without home node involvement | |
US20230103000A1 (en) | Hardware managed address translation service for integrated devices | |
US20220414029A1 (en) | Device, method, and system to identify a page request to be processed after a reset event |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |