CN101853227A - 基于空间要求的目标报告的mmio请求处理的机会改进 - Google Patents

基于空间要求的目标报告的mmio请求处理的机会改进 Download PDF

Info

Publication number
CN101853227A
CN101853227A CN201010161828A CN201010161828A CN101853227A CN 101853227 A CN101853227 A CN 101853227A CN 201010161828 A CN201010161828 A CN 201010161828A CN 201010161828 A CN201010161828 A CN 201010161828A CN 101853227 A CN101853227 A CN 101853227A
Authority
CN
China
Prior art keywords
processor
mmio
attribute
storer
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.)
Granted
Application number
CN201010161828A
Other languages
English (en)
Other versions
CN101853227B (zh
Inventor
D·J·哈里曼
A·F·格卢
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 CN101853227A publication Critical patent/CN101853227A/zh
Application granted granted Critical
Publication of CN101853227B publication Critical patent/CN101853227B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-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请求处理的机会改进。描述了用于(例如基于空间要求的目标报告的)存储器映射输入/输出(MMIO)请求处理的机会改进的方法和设备。在一个实施例中,处理器中的逻辑可检测将从输入/输出(I/O)装置传送的消息中的一个或多个位。一个或多个位可指明与I/O装置的一个或多个属性对应的存储器映射I/O(MMIO)信息。还公开了其它实施例。

Description

基于空间要求的目标报告的MMIO请求处理的机会改进
技术领域
一般来说,本公开涉及电子领域。更具体来说,本发明的实施例涉及例如基于空间要求的目标报告的存储器映射输入/输出(MMIO)请求处理的机会改进的技术。
背景技术
MMIO一般表示用于例如在计算机的处理器与外围装置之间执行输入/输出操作的机制。例如,可映射由处理器可寻址的存储器装置的指定或保留区域(例如用于读和写操作),以便选择输入/输出(“I/O”或“IO”)装置。这样,处理器与I/O装置之间的通信可通过存储器装置来执行。
处理器的MMIO访问的某种当前处理器和芯片组处理(例如在标记为“未缓存”(UC)的存储器中)可能受到一般比大多数实现所需的更为保守的传统兼容性问题支配(dictate)。通过定义例如写组合(WC)等新的存储器空间类型围绕这个方面已进行了一些尝试,但是这类方法可通过系统软件来配置,因此仅在要求新系统软件的实现时以及在可能的新应用软件是可接受时才可使用。这由于增加的成本和上市时间而往往不是可接受的,而相反可能需要容忍可能通常不需要保守的行为的执行结果。
发明内容
本发明提供了一种改进存储器映射输入/输出(MMIO)请求处理的处理器,所述处理器包括:检测将从输入/输出(I/O)装置传送的消息中的一个或多个位的第一逻辑,其中所述一个或多个位将指明与所述I/O装置的一个或多个属性对应的MMIO信息;存储所述MMIO信息的存储器;以及根据所述MMIO信息来访问所述存储器的MMIO区域的处理器核。
本发明还提供了一种改进存储器映射输入/输出(MMIO)请求处理的方法,包括:从输入/输出(I/O)装置接收包含一个或多个位的消息,其中所述一个或多个位将指明与所述I/O装置的一个或多个属性对应的MMIO信息;将所述MMIO信息存储在存储器中;以及根据所述MMIO信息来访问所述存储器的MMIO区域。
附图说明
参照附图来提供具体实施方式。附图中,参考标号最左边的数字标识首次出现该参考标号的附图。不同附图中相同的参考标号的使用表示相似或相同项。
图1、图4-5和图7示出可用来实现本文所述的各个实施例的计算系统的实施例的框图。
图2示出根据一个实施例的比较图。
图3示出根据一个实施例的报头(header)和MMIO范围属性。
图6示出根据一个实施例的方法的流程图。
具体实施方式
在以下描述中,提出许多具体细节,以便提供对各个实施例的透彻了解。但是,即使没有具体细节也可实施部分实施例。在其它情况下,没有详细描述众所周知的方法、过程、组件和电路,以免使具体实施例难于理解。
一些实施例涉及区分不同MMIO空间的请求处理要求的有效技术。在一个实施例中,装置(和/或一个实施例中它的关联驱动器软件)可配置成知道并且了解对该装置的MMIO访问的要求。通过提供将这个信息传递到主处理器/核/非核(uncore)/芯片组(它们又包括检测和处理装置特定信息的逻辑)的机制,缺省请求处理行为(例如与UC存储器实现关联)可有机会修改。此外,传统装置可保持为部分不受影响,因为它们保留缺省UC请求处理特性。
更具体来说,在一个实施例中,对于映射到相应I/O装置的特定存储器区域,新的I/O装置可指明请求处理要求,这使用为此目的定义的消息和/或随对该区域的处理器发起请求的完成消息包括的信息(More particularly,in one embodiment,new I/O devices may indicate therequest handling requirements,for particular memory regions mapped tothe respective I/O device,using a message defined for the purpose and/orinformation included with completion messages for processor initiatedrequests to that region)。这个信息可由处理器存储或缓存在例如缓冲器、数据高速缓存、专用高速缓存、TLB(转换后备缓冲器)、光晕滤波器(Bloom filter)中(例如,它可以是用于测试元件是否为集合的成员的空间有效概率数据结构),或者存储在适合指明请求处理属性的另外某种缓存或存储装置结构、例如本文中参照图2-7所述的存储装置中。在一个实施例中,缓存/存储信息可在预定义条件下清除,以便尝试确保没有使用陈旧信息。
相应地,一些实施例提供无需系统软件启用(enabling)或系统软件修改而改进MMIO性能的能力。因此,一些实施例支持未经修改的传统硬件和/或软件的继续使用,同时允许新硬件实现例如包括处理器的主机系统(host system)所容许的性能改进。
更具体来说,图1示出根据本发明的一个实施例的计算系统100的框图。系统100可包括一个或多个代理102-1至102-M(本文中统称为“多个代理102”或者更一般地称为“代理102”)。在一个实施例中,代理102的一个或多个可以是例如参照图4-5或图7所述的计算系统等计算系统的组件的任一个。
如图1所示,代理102可经由网络结构(network fabric)104进行通信。在一个实施例中,网络结构104可包括计算机网络,它允许各个代理(例如计算装置)传递数据。在一个实施例中,网络结构104可包括一个或多个互连(或者互连网络),它们经由串行(例如点对点)链路和/或共享通信网络进行通信。例如,一些实施例可便于允许与全缓冲双列直插存储器模块(FBD)的通信的链路上的组件调试或验证,例如,其中FBD链路是用于将存储器模块耦合到主控制器装置(例如处理器或存储集线器(memory hub))的串行链路。调试信息可从FBD通道主机传送,使得可通过通道业务轨迹捕捉工具(channel traffic trace capturetools)(例如一个或多个逻辑分析器)沿通道观测调试信息。
在一个实施例中,系统100可支持分层协议方案,它可包括物理层、链路层、路由选择层、传输层和/或协议层。结构104还可便于从点对点或共享网络的一个协议(例如缓存处理器或缓存感知存储控制器)到另一个协议的数据(例如采取分组形式)的传输。另外,在一些实施例中,网络结构104可提供遵守一个或多个高速缓存相干协议的通信。
此外,如图1中的箭头方向所示,代理102可经由网络结构104传送和/或接收数据。因此,对于通信,一些代理可利用单向链路,而其它代理可利用双向链路。例如,一个或多个代理(例如代理102-M)可传送数据(例如经由单向链路106),其它代理(例如代理102-2)可接收数据(例如经由单向链路108),而某些(某个)代理(例如代理102-1)可传送和接收数据(例如经由双向链路110)。
在一些情况下,I/O装置将知道与I/O装置所拥有的MMIO区域关联的排序(ordering)和数据处理要求(本文中又称作“属性”)。但是,当前方法可能要求系统配置软件对存储器类型范围寄存器(MemoryType Range Register,MTRR)或页面属性进行编程,以便使处理器/平台能够理解这些属性。因此,这限用于其中适当系统软件基础设施(systemsoftware infrastructure)存在的情况,并且一般可导致不良可缩放性(scalability)。
另一方面,一个实施例提供一种使I/O装置提供一个或多个MMIO区域属性(和/或关于I/O装置的排序和数据处理要求的数据)的机制,它们会存储在例如历史缓冲器、高速缓存或其它存储装置中。缺省MMIO属性会匹配当前UC行为,直到装置(例如直接或者经由互连装置、如交换机(switch))指明偏差是可接受的。这个指示可与较早请求的完成消息关联,或者通过对装置的访问所触发的消息(它可包括请求这种消息的指示,例如因为在处理器的对应存储装置/高速缓存中不存在与MMIO范围对应的条目(entry))。这个指示还可与装置自主传送的消息关联。
事务处理的各种方面可根据装置的要求来修改(但是,不要求处理器实现所有这些过程,并且在一些实施例中处理器可以仅执行子集)。例如,可描述下列属性:
(1)可预取(prefetchable)-一般没有读副作用(read side effects)并且返回读取的所有字节(all bytes on reads)而与字节启用无关(例如指明预期或要求哪些特定字节满足存储器请求),以及允许写合并(下面进一步论述)。例如,可预取的存储器具有在多次读取时返回相同数据并且在被读取时不改变任何其它装置状态的属性。
(2)直写类型缓存(write-through type caching)-当写入存储器存储单元时,所写入的值被立即写入存储器。直写通常与回写(write-back)形成对照,回写通常通过要求高速缓存线的独占所有权(exclusiveownership)、写入高速缓存线而不是存储器,来避免立即写入。在一个或多个这类写入之后,将“脏”(dirty)线写入存储器。
(3)例如组合/折叠/合并(combine/collapse/merge)写等写类型-将单独但依次增加地址顺序的存储器写组合成单个更大转移(transfer);准许使用字节启用(byte enables)来禁用未写入存储单元,但由于PCIe的字节启用语义,这在PCIe(外设组件互连(PCI)express)中一般是不可能的。合并写可涉及把对一个DWORD地址的单独但依次掩蔽(masked)(字节粒度)存储器写合并成单个更大转移,只要任何字节存储单元仅写入一次。另外,折叠写可涉及通过仅写入最近的数据,把对相同地址的依次存储器写入转换成单个转移。这在PCI中一般是不准许的,但WC存储器类型可用于执行这个操作。
(4)试探访问(speculative access)-MMIO存储器存储单元可具有副作用-它们可执行例如响应加载(loads)而重新引导系统等操作。一些微处理器使用例如无序执行和分支预测等“试探”技术来改进性能。在这类系统上,硬件微架构可试探地运行加载(和其它操作),这是编程人员不打算运行的,或者按照与编程人员所指定的不同的顺序运行。硬件确保这类操作的作用按照编程人员所预计的而出现,但是通常仅对于普通存储器而不是MMIO。普通存储器对加载、试探或其它没有副作用。如果对MMIO执行试探加载,则MIMO显然可呈现不良行为。为此,根据一个实施例,指明存储器的哪些区域准许试探加载而哪些区域不准许。
(5)存储器排序模型(memory ordering model)-一些计算机处理器可实现存储器排序模型,例如依次一致性、总存储排序、处理器一致性或弱排序。在一些实现中,较弱的存储器排序模型允许更简单的硬件,但是较强的存储器排序模型可能被一些编程人员假定用于并行应用(In some implementations,weaker memory ordering models allowsimpler hardware,but stringer memory ordering models may be assumedby some programmers for parallel applications)。
以下附图示出这种信息可如何用于改进对I/O装置的处理器访问的序列的性能。更具体来说,图2示出示例当前系统对比本发明的一个实施例(它产生性能改进)的示例代码序列(sample code sequence)和所产生的总线操作。
如图2所示,在一些当前系统中,对装置的所有处理器读被串行化-处理器操作停止,从而在进入下一个指令之前等待来自各读取的结果。在一个优化系统中(附图的右侧所示),对装置的数据读在状态寄存器读操作之后经过试探性流水线化(pipeline)。如果状态测试失败(例如跳过“OK”代码),则将丢弃来自数据读的结果。在状态读测试通过的情况下,将使用该数据值。注意,在两种情况下,读按顺序发生,因此不存在例如数据读在状态读之前将重排序的可能性。但是,可能可接受的是,在一些实施例中,数据读可在它们本身之间重排序(但这种情况在图中未示出)。
此外,为了使处理器/芯片组进行这种优化,在一些实施例中,I/O装置向处理器/芯片组传递存储器空间的属性。进行这种操作的一种方式是通过将属性包含在I/O装置所返回的每个读完成消息中。对于PCIe I/O装置,这可通过采用MMIO范围属性字段取代完成符ID字段(Completer ID field)(它可能没有架构定义用途)来完成,如图3所示。
更具体来说,图3示出根据一个实施例、具有取代完成符ID字段的MMIO范围属性的完成报头。先前保留的MRA(MMIO范围属性)位将指明包含MMIO范围属性的完成消息。没有缓存/存储MMIO属性的对MMIO范围(例如UC存储器的对齐(aligned)4K区域)的处理器访问将使用缺省UC处理来完成。当返回完成消息、从而指明与缺省UC属性不同的MMIO范围属性时,这个信息会被存储并且用于适当修改对相同区域的将来访问。
作为替代(或补充),在通过来自处理器的显式请求或者经由隐式请求(例如页面访问)所触发、I/O装置向处理器/芯片组发送指明MMIO范围和关联属性的消息的情况下,可使用消息协议。在一些实施例中,缓存条目会由处理器/芯片组维护(maintain),直到因高速缓存容量限制(例如使用LRU(最近最少使用)算法)或者因使条目无效的显式或隐式请求而逐出(evict)。由处理器对特定装置的配置空间的任何访问以改变存储器范围设定(例如PCIe BAR(基址寄存器))将使对应装置的缓存属性条目无效。作为一些实施例中的简化,在对装置进行任何PCIe配置访问时,或者(甚至更简单地)在执行任何PCIe配置写时,可使这些条目无效。在一些实施例中,使用消息协议,装置可显式请求无效或更新页面属性。
另外,例如在从一种操作模式改变为另一种操作模式时,装置可能想要改变给定区域的属性,使得它可将最积极(aggressive)或有效的属性用于其中这种使用是可接受的模式中,并且在需要时将这些属性改为不太积极或更保守的属性,而不是必须使用始终指明不太积极属性的更保守方法。这种技术例如可由图形卡使用,图形卡可将一组属性应用于分配供图形应用使用的板载存储器(on-card memory),但在相同的板载存储器重新分配供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可以是芯片组或者存储控制器集线器(memory controller hub)(MCH)。此外,正如将参照图7进一步所述,处理器402可经由点对点(PtP)连接与其它组件进行通信。另外,接口装置406可与一个或多个外围装置408-1至408-P(本文中统称为“外围装置408”或者更一般地称为“装置408”)进行通信。装置408可以是外围装置,它在一个实施例中按照PCIe规范进行通信。。
如图4所示,切换逻辑(switch logic)412可耦合在各种代理(例如外围装置408与接口装置406)之间。切换逻辑412可包括属性逻辑420,以便例如代表外围装置408中的一个或多个向接口装置406(或者例如图5的芯片组506等芯片组)和/或处理器402发送属性信息(例如参照图2-3所述的那些内容)。此外,如图所示,处理器402中的一个或多个可包括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可包括一个或多个高速缓存(未示出),它们在各个实施例中可以是专用和/或共享的。一般来说,高速缓存存储与存储在其它位置或者先前计算的原始数据对应的数据。为了减少存储器存取等待时间(memory access latency),一旦数据存储在高速缓存中,则可通过访问缓存副本而不是重取(refetch)或重新计算原始数据来进行将来的使用。高速缓存可以是存储由系统500的一个或多个组件使用的电子数据(例如包括指令)的任何类型的高速缓存,例如第1级(L1)高速缓存、第2级(L2)高速缓存、第3级(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耦合的图形接口(graphics interface)514。在一个实施例中,图形接口514可经由PCIe耦合到显示装置516。在本发明的一个实施例中,显示装置516(例如平板显示器)可通过例如信号转换器耦合到图形接口514,其中信号转换器将存储装置、如视频存储器或系统存储器(例如存储器512)中存储的图像的数字表示转换成由显示器516解释和显示的显示信号。
如图5所示,集线器接口518可将MCH 508耦合到输入/输出控制集线器(ICH)520。ICH 520可提供到耦合到计算系统500的输入/输出(I/O)装置的接口。ICH 520可通过外设桥(或控制器)524、例如可符合PCIe规范的外设组件互连(PCI)桥、通用串行总线(USB)控制器等耦合到总线522。桥524可提供处理器502与外围装置之间的数据通路。可使用其它类型的拓扑结构。多个总线例如也可通过多个桥或控制器耦合到ICH 520。例如,总线522可符合可从PCI特别兴趣小组(美国,俄勒冈州,波特兰)得到的PCI本地总线规范修订版3.0(2004年)(下文中称作“PCI总线”)。备选地,总线522可包括符合可从上述PCI特别兴趣小组(美国,俄勒冈州,波特兰)得到的PCI-X规范修订版3.0a(2003年)(下文中称作“PCI-X总线”)和/或PCI Express(PCIe)规范(PCIe规范,修订版2.0(2006年))的总线。此外,总线522可包括总线系统的其它类型和配置。此外,在本发明的各个实施例中,耦合到ICH520的其它外设可包括集成驱动电子器件(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持(例如数字视频接口(DVI))等等。
总线522可耦合到音频装置526、一个或多个磁盘驱动器528和网络适配器530(它在一个实施例中可以是NIC)。在一个实施例中,耦合到总线522的网络适配器530或其它装置可经由切换逻辑512(它在一些实施例中可以与图4的逻辑412相同或相似)与芯片组506进行通信。其它装置可耦合到总线522。另外,在本发明的一些实施例中,各种组件(例如网络适配器530)可耦合到MCH 508。此外,可组合处理器502和MCH 508,以便形成单个芯片。在一个实施例中,存储控制器510可设置在CPU 502的一个或多个中。此外,在一个实施例中,MCH 508和ICH 520可组合成外设控制集线器(PCH)。
另外,计算系统500可包括易失性和/或非易失性存储器(或存储装置)。例如,非易失性存储器可包括下列一个或多个:只读存储器(ROM),可编程ROM(PROM),可擦除PROM(EPROM),电EPROM(EEPROM),磁盘驱动器(例如528),软盘,光盘ROM(CD-ROM),数字多功能光盘(DVD),闪速存储器,磁-光盘,或者能够存储电子数据(例如包括指令)的其它类型的非易失性机器可读媒体。
在一个实施例中,存储器512可包括下列一个或多个:操作系统(O/S)532、应用程序(application)534和/或装置驱动程序(devicedriver)536。存储器512还可包括专用于MMIO操作的区域。作为存储器管理操作的一部分,可将存储器512中存储的程序和/或数据交换到磁盘驱动器528。应用程序534可(例如在处理器502上)运行,以便与耦合到网络505的一个或多个计算装置传递一个或多个分组。在一个实施例中,分组可以是一个或多个符号和/或值的序列,所述一个或多个符号和/或值的序列可通过(例如经由例如网络505等网络)从至少一个发送器传送到至少一个接收器的一个或多个电信号来编码。例如,各分组可具有报头,它包括可用于路由和/或处理分组的各种信息,例如源地址、目的地地址、分组类型等等。各分组还可具有有效载荷,它包括该分组正通过计算机网络(例如网络505)在各种计算装置之间传递的原始数据(或内容)。
在一个实施例中,应用程序534可利用O/S 532例如通过装置驱动程序536来与系统500的各种组件进行通信。因此,装置驱动程序536可包括网络适配器(530)特定命令,以便提供O/S 532与网络适配器530或者例如经由芯片组506耦合到系统500的其它I/O装置之间的通信接口。
在一个实施例中,O/S 532可包括网络协议栈。协议栈一般表示可运行以处理通过网络(505)所发送的分组的一组过程或程序,其中分组可符合指定协议。例如,TCP/IP(传输控制协议/因特网协议)分组可使用TCP/IP栈来处理。装置驱动程序536可指明例如经由协议栈将要处理的缓冲器538。
如图5所示,网络适配器530可包括属性逻辑420(参照图4所述),它可向CPU 502发送参照图2-3所述的属性信息。如同图4那样,CPU可包括接收属性信息的逻辑(例如逻辑422)。CPU还可包括存储属性信息的存储装置单元(例如高速缓存、缓冲器等)。另外,虽然逻辑420包含在图5的网络适配器530中,但是它可位于其它位置,例如切换逻辑512、芯片组506等内。
网络505可包括任何类型的计算机网络。网络适配器530还可包括直接存储器存取(DMA)引擎552,它将分组写入分配给可用描述符(descriptor)(例如存储在存储器512中)的缓冲器(例如存储在存储器512中),以便通过网络505传送和/或接收数据。另外,网络适配器530可包括网络适配器控制器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装置的交换机)生成,而无需来自另一个组件的查询,而是由装置本身发起(In some embodiments,the message is generated by an I/O device(or aswitch on behalf of the I/O device coupled to the switch)without a queryfrom another component and at the device’s own initiation)。在操作604,(例如由逻辑422)检测属性标记(indicia)(例如,诸如对于图3的MMIO属性所述之类的一个或多个位)。如果属性标记不存在,则方法600返回到操作602,以便接收另一个消息;否则,可存储(608)属性信息(例如,存储在例如参照图1-5或图7所述的处理器的存储装置(如高速缓存、缓冲器、表等等)中)。在操作610,MMIO区域例如可根据在操作608的存储信息(由诸如参照图1-5或图7所述之类的处理器/核)来访问。
图7示出根据本发明的一个实施例、设置成点对点(PtP)配置的计算系统700。具体来说,图7示出其中处理器、存储器和输入/输出装置通过多个点对点接口进行互连的系统。参照图1-6所述的操作可由系统700的一个或多个组件来执行。
如图7所示,系统700可包括若干处理器,为了清楚起见仅示出其中两个处理器,即处理器702和704。处理器702和704各自可包括实现与存储器710和712(它们可存储如参照权利要求2-3所述的MMIO区域)的通信的本地存储控制器集线器(MCH)706和708。存储器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所述的操作可实现为硬件(例如电路)、软件、固件、微码或者它们的组合,它们可作为计算机程序产品来提供,例如包括机器可读或计算机可读媒体,其上已存储有用于将计算机编程为执行本文所述过程的指令(或软件过程(software procedure))。另外,术语“逻辑”作为举例可包括软件、硬件或者软件和硬件的组合。机器可读媒体可包括例如参照图1-7所述的存储装置。另外,这类计算机可读媒体可作为计算机程序产品来下载,其中,程序可通过载波或其它传播媒体中所提供的数据信号、经由通信链路(例如总线、调制解调器或网络连接)从远程计算机(例如服务器)传递到请求计算机(例如客户机)。
说明书中提到“一个实施例”或“实施例”表示结合该实施例所述的具体特征、结构或特性可包含在至少一个实现中。词语“在一个实施例中”在本说明书的各个位置的出现可能或者可能不是全部指同一个实施例。
在描述和权利要求书中,还可使用术语“耦合”和“连接”及其派生。在本发明的一些实施例中,“连接”可用来指明两个或更多元件相互直接物理或电接触。“耦合”可表示两个或更多元件直接物理或电接触。但是,“耦合”也可表示两个或更多元件可能不是相互直接接触,但可仍然相互配合或交互。
因此,虽然已经通过结构特征和/或方法动作特定的语言来描述本发明的实施例,但是要理解,要求权益的主题可以不局限于所述的特定特征或动作。相反,特定特征和动作是作为实现要求权益的主题的示例形式来公开。

Claims (15)

1.一种改进存储器映射输入/输出(MMIO)请求处理的处理器,所述处理器包括:
检测将从输入/输出(I/O)装置传送的消息中的一个或多个位的第一逻辑,其中所述一个或多个位将指明与所述I/O装置的一个或多个属性对应的MMIO信息;
存储所述MMIO信息的存储器;以及
根据所述MMIO信息来访问所述存储器的MMIO区域的处理器核。
2.如权利要求1所述的处理器,其中,所述一个或多个属性将包括下列一个或多个:可预取属性、直写类型缓存属性、写类型属性、试探访问属性或者存储器排序模型属性。
3.如权利要求2所述的处理器,其中,所述写类型属性将包括组合写属性、折叠写属性或合并写属性中的一个或多个。
4.如权利要求1所述的处理器,其中,所述一个或多个位存在于与对于所述MMIO区域的处理器发起请求对应的完成消息中。
5.如权利要求1所述的处理器,其中,所述MMIO信息将包括关于所述IO装置的排序或数据处理要求的数据。
6.如权利要求1所述的处理器,其中,所述一个或多个位将由所述I/O装置响应在所述I/O装置所接收的请求而传送。
7.如权利要求1所述的处理器,其中,所述存储器将包括数据高速缓存、专用高速缓存、转换后备缓冲器或光晕滤波器中的一个或多个。
8.如权利要求1所述的处理器,还包括:访问所述存储器中与所述MMIO信息对应的所述MMIO区域的多个处理器核。
9.如权利要求1所述的处理器,其中,所述I/O装置将包括生成所述MMIO信息的逻辑。
10.一种改进存储器映射输入/输出(MMIO)请求处理的方法,包括:
从输入/输出(I/O)装置接收包含一个或多个位的消息,其中所述一个或多个位将指明与所述I/O装置的一个或多个属性对应的MMIO信息;
将所述MMIO信息存储在存储器中;以及
根据所述MMIO信息来访问所述存储器的MMIO区域。
11.如权利要求10所述的方法,还包括:在接收所述消息之后检测所述一个或多个位。
12.如权利要求10所述的方法,其中,所述一个或多个属性将包括下列一个或多个:可预取属性、直写类型缓存属性、写类型属性、试探访问属性或者存储器排序模型属性。
13.如权利要求10所述的方法,其中,接收所述消息包括接收与对于所述MMIO区域的处理器发起请求对应的完成消息。
14.如权利要求10所述的方法,还包括:响应在所述I/O装置接收请求,传送所述一个或多个位。
15.如权利要求10所述的方法,还包括:响应所述存储器中缺少与所述MMIO区域对应的条目而生成所述一个或多个位的请求。
CN201010161828.7A 2009-03-31 2010-03-29 改进存储器映射输入/输出请求处理的方法和处理器 Active CN101853227B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/415,913 2009-03-31
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/415913 2009-03-31

Publications (2)

Publication Number Publication Date
CN101853227A true CN101853227A (zh) 2010-10-06
CN101853227B CN101853227B (zh) 2014-06-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 Before (1)

Application Number Title Priority Date Filing Date
CN201080009574.5A Active CN102326156B (zh) 2009-03-31 2010-03-08 基于空间要求目标报告的对mmio请求处理的投机改进

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)

* Cited by examiner, † Cited by third party
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
US8819686B2 (en) * 2009-07-23 2014-08-26 Empire Technology Development Llc Scheduling threads on different processor cores based on memory temperature
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
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
CN107690622B9 (zh) * 2016-08-26 2020-09-22 华为技术有限公司 实现硬件加速处理的方法、设备和系统
US10929302B2 (en) 2018-06-08 2021-02-23 International Business Machines Corporation MMIO addressing using a translation table
US11321240B2 (en) 2018-06-08 2022-05-03 International Business Machines Corporation MMIO addressing using a translation lookaside buffer

Citations (2)

* Cited by examiner, † Cited by third party
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
US20060041710A1 (en) * 2004-08-23 2006-02-23 Stephen Silva Option ROM code acquisition

Family Cites Families (21)

* Cited by examiner, † Cited by third party
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
US5420991A (en) 1994-01-04 1995-05-30 Intel Corporation Apparatus and method for maintaining processing consistency in a computer system having multiple processors
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
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
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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
US20060041710A1 (en) * 2004-08-23 2006-02-23 Stephen Silva Option ROM code acquisition

Also Published As

Publication number Publication date
US20100250792A1 (en) 2010-09-30
DE202010018020U1 (de) 2013-09-10
WO2010117528A2 (en) 2010-10-14
US20120054380A1 (en) 2012-03-01
CN102326156B (zh) 2015-02-04
CN102326156A (zh) 2012-01-18
US8904045B2 (en) 2014-12-02
TWI506444B (zh) 2015-11-01
TW201135469A (en) 2011-10-16
CN101853227B (zh) 2014-06-04
DE112010001404T5 (de) 2013-01-24
US8055805B2 (en) 2011-11-08
WO2010117528A3 (en) 2011-01-27

Similar Documents

Publication Publication Date Title
CN101853227B (zh) 改进存储器映射输入/输出请求处理的方法和处理器
CN105900076B (zh) 用于处理多个交易的数据处理系统及方法
US5682512A (en) Use of deferred bus access for address translation in a shared memory clustered computer system
JP6746572B2 (ja) ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ
EP2476051B1 (en) Systems and methods for processing memory requests
TWI444828B (zh) PCI Express增強及延伸
US7600078B1 (en) Speculatively performing read transactions
US7120755B2 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
US8230179B2 (en) Administering non-cacheable memory load instructions
CN101802796B (zh) 防止多核处理器中的写回竞争
US20090164733A1 (en) Apparatus and method for controlling the exclusivity mode of a level-two cache
US20090187716A1 (en) Network On Chip that Maintains Cache Coherency with Invalidate Commands
GB2440617A (en) Page table access by a graphics processor
CN103927277A (zh) Cpu和gpu共享片上高速缓存的方法及装置
CN102023932A (zh) 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持
US6751705B1 (en) Cache line converter
CN101868786A (zh) 虚拟化环境中的地址转换缓存和i/o高速缓存性能改进
CN104321750B (zh) 在共享存储器编程中保持释放一致性的方法和系统
US7069394B2 (en) Dynamic data routing mechanism for a high speed memory cloner
US6892283B2 (en) High speed memory cloner with extended cache coherency protocols and responses
US20040111576A1 (en) High speed memory cloning facility via a source/destination switching mechanism
US20060190636A1 (en) Method and apparatus for invalidating cache lines during direct memory access (DMA) write operations
CN100552647C (zh) 具有多阶快取架构的处理模块
US7502917B2 (en) High speed memory cloning facility via a lockless multiprocessor mechanism
US20040111581A1 (en) Imprecise cache line protection mechanism during a memory clone operation

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