CN103207842A - 基于存储器访问数据结构执行直接高速缓存访问事务 - Google Patents

基于存储器访问数据结构执行直接高速缓存访问事务 Download PDF

Info

Publication number
CN103207842A
CN103207842A CN2013101108818A CN201310110881A CN103207842A CN 103207842 A CN103207842 A CN 103207842A CN 2013101108818 A CN2013101108818 A CN 2013101108818A CN 201310110881 A CN201310110881 A CN 201310110881A CN 103207842 A CN103207842 A CN 103207842A
Authority
CN
China
Prior art keywords
memory access
data structure
affairs
processor
attribute
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
CN2013101108818A
Other languages
English (en)
Other versions
CN103207842B (zh
Inventor
R.S.马杜卡鲁穆库马纳
S.穆思拉萨纳卢尔
R.哈加哈利
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 CN103207842A publication Critical patent/CN103207842A/zh
Application granted granted Critical
Publication of CN103207842B publication Critical patent/CN103207842B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0877Cache access modes
    • G06F12/0879Burst mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开用于基于存储器访问数据结构对直接高速缓存访问事务进行编码的装置、方法和系统的实施例。在一个实施例中,装置包括存储器访问逻辑和事务逻辑。存储器访问逻辑用于基于存储器访问数据结构确定是否允许存储器访问。事务逻辑用于基于存储器访问数据结构为事务指定直接高速缓存访问属性。

Description

基于存储器访问数据结构执行直接高速缓存访问事务
技术领域
本公开涉及信息处理领域,更具体地说,涉及信息处理系统中输入/输出设备与存储器之间的事务的领域。
背景技术
直接高速缓存访问“DCA”是允许将来自输入/输出(“I/O”)设备的数据置于处理器的高速缓存中的信息处理系统协议。可以使用DCA,通过在将数据置于系统存储器之前、替代将数据置于系统存储器、或与将数据置于系统存储器并行地将数据置于处理器的高速缓存中,或通过将数据置于系统存储器或中间高速缓存中并利用预取提示来触发将数据置于处理器的高速缓存中,来避免系统存储器访问等待时间和带宽限制。
DCA协议涉及:使用指定给每个I/O事务的DCA属性,这些DCA属性可以确定是对特定事务启用还是禁用DCA;将把数据置于哪个处理器高速缓存中;如何将数据置于处理器的高速缓存中(例如,置于多路高速缓存的哪一路中以及在什么样的行状态,如独占型或修正型);或DCA事务的其它细节。这些属性中的一些属性可以是实现或平台特有的,例如,在预取方法中,DCA属性可以包括多行预取的长度属性或预取跨距(stride)。
在外围总线事务中,通常将DCA属性从I/O设备传递给芯片集,该芯片集对处理器总线上的对应事务进行编码以将数据传递给处理器的高速缓存。例如,图1示出用于执行系统100中的DCA事务的已知方法,在系统100中,处理器110和120通过处理器总线105耦合到芯片集130。芯片集130通过外围总线135耦合到I/O设备140。处理器110包括核112和高速缓存113、核114和高速缓存115、核116和高速缓存117、以及核118和高速缓存119。处理器120包括核122和高速缓存123、核124和高速缓存125、核126和高速缓存127、以及核128和高速缓存129。
系统100中的DCA事务包括外围总线135上的I/O事务150,其中I/O事务150包括用于指定地址和/或数据的字段151和用于指定事务的DCA属性的字段152。芯片集130接收I/O事务150,将字段151和152的内容解码,并且如果需要,还对系统事务160进行编码。系统事务160包括用于指定地址和/或数据的字段161和用于指定事务的DCA属性的字段162。在图1中,系统事务160在处理器总线105上执行,并将目标锁定在高速缓存115上。
在不同的信息处理系统中使用不同的外围总线(如外围组件互连(“PCI”)、PCI-X、PCI-Express和通用串行总线(“USB”))可能需要不同的方法来传递I/O事务中的DCA属性。例如,因为当定义PCI-Express时不存在DCA,所以不存在独占地分配用于DCA使用的PCI-Express字段。因此,针对PCI-Express总线上的DCA事务的常规方法可以例如使用PCI-Express事务中的“标签”字段的有限的5位部分。
在不同I/O总线上使用此类不同的方法而不是标准方法可能限制DCA的广泛采用。
附图说明
附图中举例而不是限制性地示出本发明。
图1示出执行DCA事务的已知方法。
图2示出根据本发明的实施例可以在其中执行直接高速缓存访问事务的系统。
图3示出对域的I/O设备指定的实例。
图4示出利用DMA重新映射来支持虚拟化的实例。
图5示出I/O地址转换的实例。
图6示出根据本发明的实施例的存储器访问数据结构中的项。
图7示出根据本发明的实施例的用于执行直接高速缓存访问事务的方法。
具体实施方式
本发明可以在用于基于如下所述的存储器访问数据结构执行DCA事务的装置、方法或系统中实施。在以下描述中,阐述了诸如逻辑、电路和系统配置的众多具体细节,以便更充分地理解本发明。但是,本领域的技术人员将明白,在没有这些具体细节的情况下,也可以实现本发明。此外,没有详细示出一些熟知的结构、电路、技术等,以免不必要地使本发明晦涩难懂。
本发明的实施例的元件可以在硬件、软件、固件或硬件、软件或固件的任意组合中实现。术语硬件一般是指具有物理结构的元件,如电子、电磁、光、电-光、机械、电-机部件等。术语软件一般是指逻辑结构、方法、过程、程序、例行程序、进程、算法、公式、表达式等。术语固件一般是指在硬件结构(如闪速存储器或只读存储器)中实现或实施的逻辑结构、方法、过程、程序、例行程序、进程、算法、公式或表达式。固件的实例有微代码、可写控制存储结构和微程序控制结构。
图2是根据本发明的实施例的可以在其中执行直接高速缓存访问事务的系统200的图示。系统200包括处理器210和220、处理器总线205、存储器控制集线器(“MCH”)230、系统存储器240、输入/输出控制集线器(“ICH”)250、外围总线255、大容量存储设备/接口270、以及I/O设备2801-280K和285。系统200可以包括比上述元件更多或更少的元件。
处理器210和220可以是具有一个或多个执行核的任何组件,其中每个执行核可以基于各种不同类型的处理器中的任何一种处理器,例如来自英特尔公司的
Figure BDA00002998373800041
处理器系列、
Figure BDA00002998373800042
处理器系列或其它处理器系列中的处理器,或来自其它公司的任何其它通用或其它处理器。处理器210包括核212、214、216和218以及高速缓存213、215、217和219。处理器220包括核222、224、226和228以及高速缓存223、225、227和229。
处理器总线205可以是允许处理器210和220相互通信或与其它处理器或其它设备(如MCH230)通信的任何并行、连续、流水线、异步、同步或其它总线或点对点连接。
MCH230提供对分别诸如系统存储器240和ICH250的存储器和I/O设备的控制和配置。MCH230包括如下所述的用于与处理器总线205对接并对它上面的事务进行编码的总线接口单元231和DMA重新映射逻辑235。MCH230可以集成到芯片集上,该芯片集还集成其它组件(如ICH250)和/或多种功能性(如系统逻辑、总线桥接、存储器控制和I/O设备控制)。
系统存储器240可以是用于存储诸如程序代码和数据的信息的任何类型的存储器。系统存储器240通常用动态随机存取存储器(“DRAM”)或静态随机存取存储器(“SRAM”)来实现。系统存储器240可用于存储代码、数据或任何其它信息,它包括操作系统(“OS”)或虚拟机监视器(“VMM”)242的整体或部分、I/O驱动程序245、以及用于实现本发明的实现实施例的任何代码或数据,如存储器访问表248,如下所述。
大容量存储设备/接口270可以对接到任何类型的磁、光、或其它机器可访问介质,如光盘272、数字多用光盘273、软盘274和硬盘驱动器276。代码、数据和包括本发明的实施例的任何其它信息可以存储在任何这样的介质上并通过大容量存储设备/接口270访问。
ICH250可以包括多种外围功能,例如直接存储器访问(“DMA”)控制器、中断控制器、功率管理逻辑、计时器、I/O设备接口、以及诸如USB或低引脚数(“LPC”)接口的至外围总线255和/或任何其它总线或连接的接口。ICH250可以与诸如MCH230的任何其它组件一起集成到芯片集中。
ICH250直接对接到I/O设备285并通过外围总线255对接到I/O设备2801-280K。外围总线255可以是支持I/O事务的任何类型的总线,如PCI、PCI Express或工业标准体系结构(“ISA”)总线。I/O设备2801-280K和285可以是用于执行包括DMA请求在内的I/O功能的任何I/O设备,如输入设备控制器(如键盘、鼠标、跟踪球、定位设备)、介质卡(如音频、视频、图形卡)、网络卡和任何其它外围设备。
返回到MCH230,MCH230包括DMA重新映射逻辑235,该重新映射逻辑235在I/O事务中将I/O设备(如I/O设备2801-280K和285之一)映射到系统存储器240中的域(如下所述)。I/O事务通常是DMA请求(即,来自I/O设备的直接访问系统存储器240的请求),但也可以是任何其它类型的事务。DMA重新映射逻辑235提供硬件支持以促进或增强I/O设备指定和/或管理。或者,DMA重新映射逻辑235可以包含在除MCH230以外的任何其它组件(如ICH250)中。它也可以在处理器210或220、或任何其它处理器、协处理器、芯片集或其它设备中部分或整体地实现。
域抽象地定义为系统中的隔离环境,为其分配系统存储器240的子集。被允许直接访问分配给一个域的存储器的I/O设备称为指定给那个域的设备。域的隔离是通过阻止没有指定给它的设备访问分配给它的存储器来实现的。多个隔离域通过确保将所有I/O设备指定给某个域(可能是默认域)并限制所指定的每个设备只可访问分配给它的域的存储器而得以支持。
每个域具有不同于存储器的系统视图的存储器视图或物理地址空间。用于根据存储器的系统视图访问存储器的地址称为主机物理地址(“HPA”)。供一个域的资源用来访问它的物理地址空间的地址称为访客物理地址(“GPA”)。如果一个域的GPA空间与HPA空间相同或是HPA空间的子集,则认为该域不可重新定位。如果一个域的GPA空间经转换可以访问分配给它的HPA空间,则认为该域可以重新定位。GPA和HPA空间的逻辑分离提供加强存储器保护的基础。它需要地址保护,并且可能需要可以证实由指定给域的设备生成的GPA并可能将它们转换为有效HPA的转换机制。DMA重新映射逻辑235提供对称为DMA重新映射的这种功能性的硬件支持。
图3是示出对域的I/O设备指定的实例的图。I/O设备指定是指将I/O设备映射到系统存储器240中的域。映射由DMA重新映射逻辑235来支持。在图3中,将设备310映射到系统存储器240中的域340。域340可以具有用于设备310的一个或多个驱动程序342。
DMA重新映射逻辑235包括寄存器组320、DMA重新映射结构322和逻辑电路324。寄存器组320包括多个寄存器,这些寄存器提供对供DMA重新映射结构322、逻辑电路324和I/O设备的程序或驱动程序使用的控制或状态信息的存储。DMA重新映射结构322提供在GPA到HPA的重新映射或地址转换时所用的基本结构、存储或表。逻辑电路324包括用于执行重新映射或地址转换操作的电路。
可以采用多种方式来使用利用DMA重新映射逻辑235的I/O设备指定和/或管理,以便例如为OS提供隔离域。例如,OS可以定义一个域来包含它的关键代码和数据结构,并限制所有I/O设备对该域的访问。这种域隔离技术允许OS限制通过I/O设备和它们的驱动程序对它的代码和数据进行错误、无意或其它讹用。
DMA重新映射逻辑235还可用于支持虚拟化环境。一般来说,虚拟化环境是通过使用对系统和它的资源具有完全、直接控制的VMM软件创建系统(“虚拟机”或“VM”)的抽象来实现的,其中其它软件(“访客”)可以像是在对VM和它的资源的完全、直接控制下那样在这些系统上运行。VMM通过在VM之间分配和共享系统资源并将VM相互隔离以保护每个VM免受在其它VM上运行的访客的影响来维护虚拟化环境。
DMA重新映射逻辑235可用于通过将VMM映射到域、将每个VM映射到域并将各个I/O设备指定给对应于各个VM的各个域来支持虚拟化。因此,可以指定I/O设备的驱动程序只可在指定给它的VM中运行,并且可以允许该驱动程序与I/O设备直接交互,而不必向VMM传递控制。
图4示出利用DMA重新映射来支持虚拟化的实例。在图4中,在VM440上运行的访客包括设备驱动程序450、访客OS446以及应用程序442和444。在VM460上运行的访客包括设备驱动程序470、访客OS466以及应用程序462和464。设备驱动程序450和470分别是驱动、控制、对接、或支持I/O设备410和412的驱动程序。I/O设备410指定给VM440,而I/O设备412指定给VM460。
一般来说,访客(guest)通过例如在尝试I/O操作时陷入到(trapto)VMM420来通过VMM420访问系统资源。但是,由于设备410指定给VM440并且它的驱动程序450在VM440上运行,所以访容OS446和应用程序442与444可以不必陷入到VMM420便可访问设备401。类似地,设备410可以不必陷入到VMM420便可通过例如DMA请求来访问分配给它的域的存储器。DMA重新映射逻辑235通过将I/O设备所用的GPA转换为对应的HPA并拒绝I/O设备访问在分配给它的域之外的存储单元来支持这种能力。
图5示出I/O地址转换的实例。在图5中,I/O设备510指定给域A,而I/O设备512指定给域B。每个I/O设备可以执行对地址DMA_ADR的I/O请求或DMA请求。DMA重新映射逻辑235将来自I/O设备510的对DMA_ADR的请求映射到物理存储器520的段522,其中物理存储器的段522和524分配给域A。类似地,DMA重新映射逻辑235将来自I/O设备512的对DMA_ADR的请求映射到物理存储器520的段528,其中物理存储器的段526和528分配给域A。段522、524、526和528可以是根据系统的存储器管理模型的页的大小、或是物理存储器的一部分的任何其它大小。
系统存储器的访客视图540是从访客I/O设备的角度看的逻辑视图。访客I/O设备512将段542看作是系统的地址空间,而访客I/O设备510将段544看作是系统的地址空间。负责创建和管理域的VMM或其它软件为每个域分配物理存储器520,并在DMA重新映射逻辑235中建立GPA-HPA转换功能。
通过DMA重新映射逻辑235实现的地址转换功能取决于系统的物理存储器管理模型。例如,在将主机物理存储器作为邻接区域分配给域时,转换功能可以是简单的偏移量相加。或者,DMA重新映射逻辑235可能参考数据结构用于执行地址转换,例如在以页粒度管理主机物理存储器时。其它实施例可以使用数据结构来定义允许各个设备访问的地址范围。其它实施例也可以使用这些或其它技术的任意组合。
DMA重新映射逻辑235所参考的数据结构(“存储器访问数据结构”)可以是任何形式的数据结构,如单级或多级表。数据结构或数据结构的任何部分可以存储在DMA重新映射逻辑235可访问的任何存储空间中,例如存储在DMA重新映射结构322中或存储在系统存储器240中的存储器访问表248中。数据结构中的所有或部分信息可以在一个或多个存储空间中进行拷贝或复制,例如,来自存储器访问表248的项或DMA重新映射逻辑235的转换结果可以存储在DMA重新映射结构322中的转换后备或其它缓冲器中或存储在其它位置。
图6示出根据本发明的实施例的存储器访问数据结构中的项600。项600包括4个字段,其中每个字段可以包括任何数量的位单元。GPA字段610用于存储可供I/O设备用来访问系统存储器的GPA或GPA的一部分。根据如上所述的任何存储器地址转换功能,HPA字段620用于存储对应于存储在GPA字段610中的GPA的HPA或HPA的一部分。在一个实施例中,存储在GPA字段610和HPA字段620中的每个地址指定系统存储器的页的基本地址,以使得对系统存储器中的单个页的所有访问只需存储器访问数据结构中的一个项。在此类实施例中或在其它实施例中,存储器访问数据结构中的单个项可以表示地址范围而不是单个地址。
存储器访问属性字段630用于存储对应于字段610和620中的项的存储器访问属性。例如,存储器访问字段630可用于存储指示是否允许对对应地址或地址范围的DMA(或其它I/O)事务的值、指示是否必须在对对应地址或地址范围的DMA(或其它I/O)事务上窥探处理器高速缓存的值、以及与对对应地址或地址范围的DMA(或其它I/O)事务有关的任何其它值或指示符。
DCA属性字段640用于存储对应于字段610和620中的项的DCA属性。例如,DCA属性字段640可以包括:启用/禁用字段641,用于存储指示对对应地址或地址范围是启用还是禁用DCA的值;高速缓存策略字段642,用于存储指示供对对应地址或地址范围的DCA事务使用的高速缓存策略(例如,独占型或修正型)的值;系统事务类型字段643,用于存储指示供对对应地址或地址范围的DCA事务使用的系统事务类型的值;目标字段644,用于存储指示待用作对对应地址或地址范围的DCA事务的目标的处理器或高速缓存的身份的值;以及任何其它字段,用于存储与对对应地址或地址范围的DCA事务有关的值、指示符或属性(例如,在预取方法中,指多行预取的长度属性或预取跨距)。
图7示出根据本发明的实施例用于执行系统200中的DCA事务的方法700。在方框710,OS(或VMM)242配置DMA重新映射逻辑235,并根据DMA重新映射逻辑235的特定实现和所需的地址保护和/或转换功能来建立存储器访问数据结构248。
在方框720,I/O驱动程序245向OS(或VMM)242做出对存储器访问数据结构248中的项(如项500)启用DCA的请求。或者,该项可以是DMA重新映射逻辑235或系统200中的任何其它存储空间中的存储器访问数据结构内的项。在做出请求时,I/O驱动程序245提供待存储在项600中的所需的DCA属性。负责提供供I/O驱动程序245用来做出DCA请求并提供DCA属性的软件接口的OS(或VMM)242处理该请求。因此,项600内的整个DCA属性集可以包括由I/O驱动程序245提供的属性和由OS(或VMM)242提供的属性。作为方框710中的存储器访问数据结构248的建立的一部分,作为系统200的任何随后配置或在系统200中执行的处理的一部分,或者通过OS(或VMM)242进行的作为处理在方框720中的来自I/O驱动程序245的请求的一部分,可以将对应的GPA和HPA值存储在项600中。
在方框730,系统200中的I/O设备(如I/O设备180)向由项600中的GPA指定的地址或地址范围发出外围总线155上的I/O事务。与参照图1描述的已知方法不同,I/O设备不需要知道DCA,并且I/O事务可以是标准I/O事务,如DMA存储器写事务,从而不包含任何DCA属性。
在方框740,MCH230接收来自方框730的I/O事务,并且如果需要,将该I/O事务解码。在方框750,MCH230参考项600以确定对项500中的GPA启用DCA,从项600获得DCA属性,并且如果需要,将GPA转换为HPA。
在方框760,总线接口单元231基于存储在项600中的DCA属性编码并发出处理器总线105上的对应于方框730中的I/O事务的事务,以便将目标锁定为系统200中的高速缓存(例如,高速缓存213、215、217、219、223、225、227或229中的任何一个高速缓存)。
根据本发明的实施例设计的DMA重新映射逻辑235或任何其它元件可以在从创建到模拟到制作的各个阶段进行设计。表示设计的数据可以用多种方式来表示这个设计。首先,可以利用硬件描述语言或其它功能描述语言来表示硬件,这在模拟中可用。作为补充或替代,可以在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,在某个阶段,大多数设计达到能够用表示各种设备的物理布置的数据对其进行建模的程度。在使用常规半导体制作技术的情况下,表示设备布置模型的数据可以是指定在用来制造集成电路的掩模的不同掩模层上各种特征存在与否的数据。
在设计的任意表示中,数据可以存储在任何形式的机器可读介质中。经调制或以其它方式生成用来传送此类信息的光波或电波、存储器、或诸如盘的磁或光存储介质都可以作为机器可读介质。所有这些介质都可“携带”或“指示”该设计、或本发明的实施例中所用的其它信息,如错误恢复例行程序中的指令。当指示或携带信息的电载波得以传送时,在执行电信号的复制、缓冲或重新传送的程度,进行了新的复制。因此,通信提供者或网络提供者的动作可以构成物品(例如,载波)的复制,从而实施本发明的技术。
因此,公开了用于基于存储器访问数据结构执行DCA事务的本发明的实施例。虽然已经描述并在附图中示出了某些实施例,但是要了解,这些实施例只是说明而不是限制宽广的本发明,并且本发明并不局限于所示出和描述的具体结构和配置,本领域的技术人员在研究本公开之后可以联想到各种其它修改。在发展迅速并且难以预见到进一步改进的诸如此类的技术领域中,在不背离本公开的原理或随附权利要求的范围的前提下,通过促进技术进步可以容易地对所公开的实施例进行配置和细节方面的修改。

Claims (17)

1.一种用于执行直接高速缓存访问事务的处理器,包括:
存储器访问部件,用于基于存储器访问数据结构来确定是否允许存储器访问;以及
事务部件,用于基于所述存储器访问数据结构为事务指定直接高速缓存访问属性。
2.如权利要求1所述的处理器,其中所述事务部件还基于所述直接高速缓存访问属性来对所述事务进行编码。
3.如权利要求1所述的处理器,其中所述存储器访问部件还基于所述存储器访问数据结构转换存储器地址。
4.如权利要求1所述的处理器,其中所述存储器访问部件还基于所述存储器访问数据结构将访客地址转换为主机地址。
5.如权利要求1所述的处理器,还包括用于存储所述存储器访问数据结构的一部分的缓冲器。
6.如权利要求1所述的处理器,其中所述直接高速缓存访问属性包括直接高速缓存访问启用指示符、高速缓存策略指示符、事务类型指示符和目标高速缓存识别指示符之一。
7.一种用于执行直接高速缓存访问事务的系统,包括:
用于从存储器访问数据结构获得直接高速缓存访问事务的属性的部件;以及
用于为直接高速缓存事务指定所述属性的部件。
8.如权利要求7所述的系统,还包括用于在所述存储器访问数据结构中存储所述属性的部件。
9.如权利要求7所述的系统,还包括用于基于所述属性对处理器总线上的事务进行编码的部件。
10.如权利要求7所述的系统,还包括用于基于所述存储器访问数据结构转换存储器地址的部件。
11.如权利要求7所述的系统,其中所述属性包括直接高速缓存访问启用指示符、高速缓存策略指示符、事务类型指示符和目标高速缓存识别指示符之一。
12.一种用于执行直接高速缓存访问事务的系统,包括:
处理器,所述处理器包括基于存储器访问数据结构确定是否允许存储器访问的存储器访问逻辑和基于所述存储器访问数据结构为事务指定直接高速缓存访问属性的事务逻辑;以及
耦合到所述处理器的系统存储器。
13.如权利要求12所述的系统,其中所述事务逻辑还基于所述直接高速缓存访问属性来对所述事务进行编码。
14.如权利要求12所述的系统,其中所述存储器访问逻辑还基于所述存储器访问数据结构转换存储器地址。
15.如权利要求12所述的系统,其中所述存储器访问逻辑还基于所述存储器访问数据结构将访客地址转换为主机地址。
16.如权利要求12所述的系统,还包括用于存储所述存储器访问数据结构的一部分的缓冲器。
17.如权利要求12所述的系统,其中所述直接高速缓存访问属性包括直接高速缓存访问启用指示符、高速缓存策略指示符、事务类型指示符和目标高速缓存识别指示符之一。
CN201310110881.8A 2005-12-30 2006-12-18 用于执行直接高速缓存访问事务的处理器和系统 Expired - Fee Related CN103207842B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/323262 2005-12-30
US11/323,262 US7937534B2 (en) 2005-12-30 2005-12-30 Performing direct cache access transactions based on a memory access data structure
CN2006800501121A CN101351773B (zh) 2005-12-30 2006-12-18 基于存储器访问数据结构执行直接高速缓存访问事务

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2006800501121A Division CN101351773B (zh) 2005-12-30 2006-12-18 基于存储器访问数据结构执行直接高速缓存访问事务

Publications (2)

Publication Number Publication Date
CN103207842A true CN103207842A (zh) 2013-07-17
CN103207842B CN103207842B (zh) 2016-04-20

Family

ID=38110324

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310110881.8A Expired - Fee Related CN103207842B (zh) 2005-12-30 2006-12-18 用于执行直接高速缓存访问事务的处理器和系统
CN2006800501121A Expired - Fee Related CN101351773B (zh) 2005-12-30 2006-12-18 基于存储器访问数据结构执行直接高速缓存访问事务

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN2006800501121A Expired - Fee Related CN101351773B (zh) 2005-12-30 2006-12-18 基于存储器访问数据结构执行直接高速缓存访问事务

Country Status (4)

Country Link
US (1) US7937534B2 (zh)
KR (1) KR101179341B1 (zh)
CN (2) CN103207842B (zh)
WO (1) WO2007078958A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107436855A (zh) * 2016-05-25 2017-12-05 三星电子株式会社 用于具有可重配置多端口的pcie存储系统的qos认知io管理

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7937534B2 (en) 2005-12-30 2011-05-03 Rajesh Sankaran Madukkarumukumana Performing direct cache access transactions based on a memory access data structure
US8032672B2 (en) 2006-04-14 2011-10-04 Apple Inc. Increased speed of processing of audio samples received over a serial communications link by use of channel map and steering table
US7587663B2 (en) 2006-05-22 2009-09-08 Intel Corporation Fault detection using redundant virtual machines
US7555597B2 (en) * 2006-09-08 2009-06-30 Intel Corporation Direct cache access in multiple core processors
US9317309B2 (en) * 2006-12-28 2016-04-19 Hewlett-Packard Development Company, L.P. Virtualized environment allocation system and method
US8689288B2 (en) * 2007-04-16 2014-04-01 Samsung Electronics Co., Ltd. Apparatus and method for protecting system in virtualized environment
US20090006668A1 (en) * 2007-06-28 2009-01-01 Anil Vasudevan Performing direct data transactions with a cache memory
US7958314B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output I/O) hub/chipset resources
US7958313B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output (I/O) adapter resources
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
DE102011014450B4 (de) * 2010-03-31 2013-03-28 Intel Corporation Aktiven Speicher für virtuelle Maschinen mit gerichtetem I/O im laufenden Betrieb tauschen (Hot-Swapping)
WO2011120223A1 (en) * 2010-03-31 2011-10-06 Intel Corporation Hot-swapping active memory for virtual machines with directed i/o
US8984228B2 (en) 2011-12-13 2015-03-17 Intel Corporation Providing common caching agent for core and integrated input/output (IO) module
WO2013095337A1 (en) * 2011-12-19 2013-06-27 Intel Corporation A system and deterministic method for servicing msi interrupts using direct cache access
US8904068B2 (en) * 2012-05-09 2014-12-02 Nvidia Corporation Virtual memory structure for coprocessors having memory allocation limitations
US9547594B2 (en) 2013-03-15 2017-01-17 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US9405687B2 (en) 2013-11-04 2016-08-02 Intel Corporation Method, apparatus and system for handling cache misses in a processor
US9280290B2 (en) 2014-02-12 2016-03-08 Oracle International Corporation Method for steering DMA write requests to cache memory
US9715455B1 (en) 2014-05-05 2017-07-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Hint selection of a cache policy
CN104572509B (zh) * 2014-12-26 2017-11-07 中国电子科技集团公司第十五研究所 一种在龙芯计算平台上实现独立显卡显存分配的方法
US9606925B2 (en) 2015-03-26 2017-03-28 Intel Corporation Method, apparatus and system for optimizing cache memory transaction handling in a processor
US11017126B2 (en) * 2017-12-19 2021-05-25 Western Digital Technologies, Inc. Apparatus and method of detecting potential security violations of direct access non-volatile memory device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6163834A (en) * 1998-01-07 2000-12-19 Tandem Computers Incorporated Two level address translation and memory registration system and method
US6725289B1 (en) * 2002-04-17 2004-04-20 Vmware, Inc. Transparent address remapping for high-speed I/O
CN1531303A (zh) * 2003-03-12 2004-09-22 协议无关的客户端高速缓存系统和方法
CN1609826A (zh) * 2003-10-18 2005-04-27 鸿富锦精密工业(深圳)有限公司 遍历访问控制列表中许可权方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
CN1173271C (zh) * 1999-12-24 2004-10-27 仁宝电脑工业股份有限公司 具有双重高速缓冲映射存储器的高速缓冲存储器系统
US6636906B1 (en) * 2000-04-28 2003-10-21 Hewlett-Packard Development Company, L.P. Apparatus and method for ensuring forward progress in coherent I/O systems
JP4822598B2 (ja) * 2001-03-21 2011-11-24 ルネサスエレクトロニクス株式会社 キャッシュメモリ装置およびそれを含むデータ処理装置
US7937534B2 (en) 2005-12-30 2011-05-03 Rajesh Sankaran Madukkarumukumana Performing direct cache access transactions based on a memory access data structure

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6163834A (en) * 1998-01-07 2000-12-19 Tandem Computers Incorporated Two level address translation and memory registration system and method
US6725289B1 (en) * 2002-04-17 2004-04-20 Vmware, Inc. Transparent address remapping for high-speed I/O
CN1531303A (zh) * 2003-03-12 2004-09-22 协议无关的客户端高速缓存系统和方法
CN1609826A (zh) * 2003-10-18 2005-04-27 鸿富锦精密工业(深圳)有限公司 遍历访问控制列表中许可权方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RAM HUGGAHALLI,RAVI IYER,SCOTT TETRICK: "Direct Cache Access for High Bandwidth Network I/O", 《ISCA "05 PROCEEDINGS OF THE 32ND ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107436855A (zh) * 2016-05-25 2017-12-05 三星电子株式会社 用于具有可重配置多端口的pcie存储系统的qos认知io管理
CN107436855B (zh) * 2016-05-25 2022-07-01 三星电子株式会社 用于具有可重配置多端口的pcie存储系统的qos认知io管理

Also Published As

Publication number Publication date
CN103207842B (zh) 2016-04-20
US7937534B2 (en) 2011-05-03
CN101351773B (zh) 2013-05-01
WO2007078958A2 (en) 2007-07-12
KR20080080594A (ko) 2008-09-04
CN101351773A (zh) 2009-01-21
WO2007078958A3 (en) 2008-01-03
US20070156968A1 (en) 2007-07-05
KR101179341B1 (ko) 2012-09-03

Similar Documents

Publication Publication Date Title
CN101351773B (zh) 基于存储器访问数据结构执行直接高速缓存访问事务
TWI363967B (en) A computer hardware apparatus to utilize address window support for direct memory access translation
CN102473139B (zh) 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元
CN101236529B (zh) 用于访问分区系统中的存储器的方法和设备
CN100593160C (zh) 利用覆盖较大地址空间的转换表的地址转换性能增强
CN100585574C (zh) 对于直接存储器存取地址转换的高速缓存支持
CN102906702B (zh) 对适配器的地址空间的访客端访问
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
CN102906721B (zh) 与访问地址空间并行地对地址空间调整大小
JP5179597B2 (ja) 構成の仮想トポロジの変化
EP2988216B1 (en) Virtualizing physical memory in a virtual machine system
US8041920B2 (en) Partitioning memory mapped device configuration space
CN102483719B (zh) 基于块的非透明高速缓存
KR101480856B1 (ko) 컨텍스트 스위칭
CN100390764C (zh) 把虚拟存储器地址的数据传送到设备存储器的方法和系统
CN101606130A (zh) 在处理器系统的指令级使能资源分配标识的方法和装置
CN102947808A (zh) 用于适配器函数的转换格式的运行时确定
ES2523878T3 (es) Instrucciones de almacenamiento/almacenamiento de bloque para la comunicación con adaptadores
CN102906720A (zh) 启用/禁用计算环境的适配器
CN102906694A (zh) 用于与适配器进行通信的加载指令
US8650342B2 (en) System and method for distributed address translation in virtualized information handling systems
CN100594481C (zh) 允许运行在逻辑分区上的程序访问资源的方法与系统
CN1713134B (zh) 虚拟机控制结构译码器
US10866895B2 (en) Steering tag support in virtualized environments
US20220398017A1 (en) Independently controlled dma and cpu access to a shared memory region

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160420

Termination date: 20181218

CF01 Termination of patent right due to non-payment of annual fee