CN115577402A - 设备之间的安全直接对等存储器访问请求 - Google Patents
设备之间的安全直接对等存储器访问请求 Download PDFInfo
- Publication number
- CN115577402A CN115577402A CN202210427061.0A CN202210427061A CN115577402A CN 115577402 A CN115577402 A CN 115577402A CN 202210427061 A CN202210427061 A CN 202210427061A CN 115577402 A CN115577402 A CN 115577402A
- Authority
- CN
- China
- Prior art keywords
- memory
- host
- memory protection
- mpc
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 369
- 238000000034 method Methods 0.000 claims abstract description 64
- 230000004044 response Effects 0.000 claims description 36
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 33
- 239000000463 material Substances 0.000 description 24
- 238000013519 translation Methods 0.000 description 23
- 230000014616 translation Effects 0.000 description 23
- 238000012545 processing Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 12
- 239000003795 chemical substances by application Substances 0.000 description 10
- 238000007667 floating Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000011144 upstream manufacturing Methods 0.000 description 5
- 238000007792 addition Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 208000033748 Device issues Diseases 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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 physical, e.g. cell, word, block
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/145—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
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)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
本公开总体涉及设备之间的安全直接对等存储器访问请求。一种集成电路的实施例包括用于执行以下操作的电路:在存储器保护缓存中存储用于非主机存储器的存储器保护信息,以及基于所存储的存储器保护信息来对针对非主机存储器的已转化访问请求执行一个或多个存储器保护检查。公开并且要求保护了其他实施例。
Description
技术领域
本公开总体涉及存储器技术,具体地涉及存储器管理技术。
背景技术
大多数现代计算机系统使用存储器虚拟化,以实现最优的存储器使用和安全性。传统上,快速外围组件互连(Peripheral Component Interconnect Express,PCIe)设备只观察未转化的地址,而不是主机物理地址(Host Physical Address,HPA),并且将会以给定的未转化地址发送读取或写入请求。在主机侧,处理器的输入/输出存储器管理单元(input/output memory management unit,IOMMU)将接收来自设备的读取/写入请求,将指定的地址转化成HPA,并且完成设备的存储器访问(读取/写入)。为了将设备只隔离到特定的地址,软件将对设备和IOMMU进行编程以使用未转化的地址,这些未转化的地址例如是虚拟地址(Virtual Address,VA)、访客物理地址(Guest Physical Address,GPA)或者输入/输出虚拟地址(Input/Output Virtual Address,IOVA)。HPA是用于在所有地址转化已发生之后访问所有平台资源的物理地址,所述转化包括在虚拟化环境中从GPA到HPA或者从访客虚拟地址(Guest Virtual Address,GVA)到GPA再到HPA或者访客输入/输出虚拟地址(Guest Input/Output Virtual Address,GIOVA)到GPA再到HPA的任何转化,并且它在非虚拟化环境中通常被简单称为物理地址(Physical Address,PA)。
地址转化服务(Address Translation Service,ATS)是PCIe协议的扩展。ATS的当前版本是PCIe规范的一部分,该规范由PCI特别兴趣小组(PCI Special Interest Group,PCI-SIG)维护,并且会员可在https://pcisig.com/specifications/处访问该规范,它在本文中可被称为“ATS规范”。除其他事项外,ATS允许了设备缓存地址转化并且处理页出错(传统PCIe设备要求存储器锁定),这促进了对各种特征的支持,这些特征包括设备转化后备缓冲器(Device Translation Lookaside Buffer,Dev-TLB)和共享虚拟存储器。ATS还提供了对缓存一致性链路的支持,比如计算机快速链路(Computer Express Link,CXL)缓存协议,该协议完全在物理地址上操作。ATS允许了PCIe设备向转化代理(例如,IOMMU)请求地址转化,例如,从VA到HPA。这种能力允许了设备在内部将所得到的转化存储在Dev-TLB中,ATS规范也将Dev-TLB称为地址转化缓存(address translation cache,ATC),并且允许了设备随后经由主机到设备链路(例如,PCIe接口或缓存一致性接口(例如,CXL、NVLink和加速器的缓存一致性互连(Cache Coherent Interconnect for Accelerators,CCIX))直接使用所得到的HPA来访问主存储器。因此,ATS将传统PCIe存储器访问分割成多个阶段,包括(i)转化请求,其中设备请求将VA转化成HPA;(ii)已转化请求,其中设备用给定的HPA请求读取/写入;以及(iii)可选的页请求,其中设备向IOMMU提出请求,请求在转化请求失败之后为其分配新的页。
发明内容
本公开的第一实施例提供了一种装置,包括:存储器保护缓存,用于存储用于非主机存储器的存储器保护信息;以及与所述存储器保护缓存耦合的电路,用于基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
本公开的第二实施例提供了一种集成电路,包括用于执行以下操作的电路:在输入/输出存储器保护单元(IO-MPU)中存储用于主机存储器的存储器保护信息;以及将所存储的存储器保护信息与通信地耦合到主机的设备的存储器保护缓存(MPC)进行同步。
本公开的第三实施例提供了一种方法,包括:在存储器保护缓存中存储用于非主机存储器的存储器保护信息;以及基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
本公开的第四实施例提供了至少一种非暂态机器可读介质,其包括多个指令,所述多个指令响应于在计算设备上被执行,使得所述计算设备执行以下操作:在存储器保护缓存中存储用于非主机存储器的存储器保护信息,以及基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
附图说明
在附图的各图中以示例方式而不是限制方式图示了本发明的各种实施例,其中:
图1A是根据一实施例的集成电路的示例的框图;
图1B是根据一实施例的集成电路的另一示例的框图;
图2A至图2B是根据一实施例的方法的示例的流程图;
图3是根据一实施例的装置的示例的框图;
图4A是根据一实施例的分布式计算系统的示例的框图;
图4B是根据一实施例的分布式计算系统的另一示例的框图;
图4C是根据各个实施例的存储器保护缓存结构的示例的说明图;
图5A是根据一实施例的方法的示例的流程图;
图5B是根据一实施例的方法的另一示例的流程图;
图6是根据一实施例的分布式计算系统的另一示例的框图;
图7是根据一实施例的分布式计算系统的另一示例的框图;
图8A是根据一实施例的分布式计算系统的另一示例的框图;
图8B是根据一实施例的方法的另一示例的流程图;
图9A是根据本发明的实施例图示出示例性有序管线和示例性寄存器重命名、无序发出/执行管线两者的框图;
图9B是根据本发明的实施例图示出要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发出/执行架构核心两者的框图;
图10A-图10B图示出更具体的示例性有序核心架构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一;
图11是根据本发明的实施例的处理器的框图,该处理器可以具有多于一个核心、可以具有集成的存储器控制器并且可以具有集成的图形;
图12-图15是示例性计算机架构的框图;以及
图16是根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。
具体实施方式
本文论述的实施例以各种方式提供了用于存储器保护缓存(memory protectioncache,MPC)的技术和机制。本文描述的技术可以被实现在一个或多个电子设备中。可以利用本文描述的技术的电子设备的非限制性示例包括任何种类的移动设备和/或固定设备,例如相机、蜂窝电话、计算机终端、桌面型计算机、电子阅读器、传真机、一体机、膝上型计算机、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如,刀片式服务器、机架安装式服务器、其组合,等等)、机顶盒、智能电话、平板个人计算机、超便携个人计算机、有线电话、这些的组合,等等。更一般而言,本文描述的技术可以被用于各种电子设备之中的任何一种中,所述设备包括集成电路,该集成电路可操作以基于存储在MPC中的存储器保护信息对针对非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
在接下来的描述中,论述了许多细节以提供对本公开的实施例的更透彻说明。然而,本领域技术人员将会清楚,没有这些具体细节也可以实现本公开的实施例。在其他情况下,以框图形式而不是详细示出公知的结构和设备,以避免模糊本公开的实施例。
注意,在实施例的相应附图中,用线条来表示信号。一些线条可能更粗,以指示出更大数目的构成信号路径,和/或在一端或多端具有箭头,以指示出信息流的方向。这种指示并不旨在进行限制。更确切地说,这些线条与一个或多个示例性实施例结合使用来帮助更容易地理解电路或逻辑单元。由设计需要或偏好决定的任何所表示的信号可以实际上包括可在任一方向上行进并且可利用任何适当类型的信号方案来实现的一个或多个信号。
在整个说明书各处,以及在权利要求中,术语“连接”的意思是直接连接,例如在所连接的事物之间的电连接、机械连接或者磁连接,而没有任何中间设备。术语“耦合”的意思是直接或间接连接,例如在所连接的事物之间的直接电连接、机械连接或者磁连接,或者通过一个或多个无源或有源中间设备的间接连接。术语“电路”或“模块”可以指被布置为与彼此合作来提供期望的功能的一个或多个无源和/或有源组件。术语“信号”可以指至少一个电流信号、电压信号、磁信号、或者数据/时钟信号。“一”和“该”的含义包括多数指代。“在……中”的含义包括“在……中”和“在……上”。
术语“设备”根据该术语的使用上下文一般可以指装置。例如,设备可以指层或结构的堆叠、单个结构或层、具有有源和/或无源元件的各种结构的连接,等等。一般而言,设备是三维结构,具有沿着x-y-z笛卡儿坐标系的x-y方向的平面和沿着z方向的高度。设备的平面也可以是包括该设备的装置的平面。就本文使用的而言,术语“设备”也可以概括地指输入/输出源或目标(例如,源设备、目标设备,等等)。
术语“缩放”一般是指将某个设计(图解和布局)从一个工艺技术转换到另一个工艺技术并随后减小布局面积。术语“缩放”一般也指在同一技术节点内减小布局和器件的大小。术语“缩放”还可以指相对于另一参数(例如,电力供应水平)对信号频率进行的调整(例如,减慢或加速——即分别是缩小或放大)。
术语“基本上”、“接近”、“大致”、“近似”和“大约”一般是指在目标值的+/-10%内。例如,除非在其使用的明确上下文中另有说明,否则术语“基本上等于”、“大约等于”和“大致等于”的意思是在这样描述的事物之间没有超过偶然的差异。在本领域中,这种差异通常不超过预定目标值的+/-10%。
要理解,这样使用的术语在适当的情况下是可互换的,从而使得本文描述的发明的实施例例如能够按与本文图示或以其他方式描述的那些不同的其他朝向来操作。
除非另有指明,否则使用序数形容词“第一”、“第二”和“第三”等等来描述共同对象只是表明相似对象的不同实例被引用,而并不旨在暗示这样描述的对象必须在时间上、空间上、排名上或者以任何其他方式处于给定的序列中。
说明书中和权利要求书中的术语“左”、“右”、“前”、“后”、“顶”、“底”、“上”、“下”等等——如果有的话——是用于描述性目的的,而并不一定用于描述永久的相对位置。例如,本文使用的术语“在……上方”、“在……下方”、“前侧”、“后侧”、“顶”、“底”、“在……上方”、“在……下方”和“在……上”指的是一个组件、结构或材料相对于设备内的其他引用的组件、结构或材料的相对位置,其中这种物理关系是值得注意的。这些术语在本文中仅被用于描述性目的,而且主要是在设备z轴的上下文内被使用的,因此可相对于设备的方向。因此,在本文提供的附图的上下文中在第二材料“上方”的第一材料也可在第二材料的“下方”,如果该设备相对于提供的附图的上下文被颠倒方向的话。在材料的上下文中,一个材料被布置在另一材料上方或下方可直接接触或者可具有一个或多个居间的材料。另外,一个材料被布置在两个材料之间可与这两个层直接接触或者可具有一个或多个居间的层。与之不同,在第二材料“上”的第一材料是与该第二材料直接接触的。在组件装配的上下文中要作出类似的区分。
术语“在……之间”可在设备的z轴、x轴或y轴的上下文中被使用。在两个其他材料之间的材料可与这些材料中的一者或两者接触,或者它可通过一个或多个居间的材料而与其他两个材料都分隔开。在两个其他材料“之间”的材料因此可以与其他两个材料中的任一者接触,或者它可以通过居间的材料而耦合到其他两个材料。在两个其他设备之间的设备可以与这些设备中的一者或两者直接连接,或者它可以通过一个或多个居间的设备而与其他两个设备都分隔开。
当在本说明书各处以及权利要求书中使用时,由术语“……中的至少一个”或者“……中的一个或多个”联接的项目的列表可意指列出的术语的任何组合。例如,短语“A、B或C中的至少一者”可意指A;B;C;A和B;A和C;B和C;或者A、B和C。要指出,附图中具有与任何其他图中的元素相同的标号(或名称)的那些元素可以按与所描述的方式相似的任何方式来操作或工作,但不限于此。
此外,本公开中论述的组合逻辑和时序逻辑的各种元素既可涉及物理结构(例如,与门、或门或者异或门),也可涉及实现作为所论述的逻辑的布尔等同的逻辑结构的器件的合成的或者以其他方式优化的集合。
参考图1A,集成电路100的一实施例可以包括电路113,该电路被配置为在存储器保护缓存(MPC)中存储用于非主机存储器的存储器保护信息,并且基于所存储的存储器保护信息来对针对非主机存储器的已转化访问请求执行一个或多个存储器保护检查。例如,非主机存储器可以对应于本地设备存储器、存储器池、远程存储器池,等等。在一些实施例中,电路113可以被进一步配置为将所存储的存储器保护信息与主机的存储器保护单元(memory protection unit,MPU)(例如,输入/输出MPU(input/output MPU,IO-MPU))同步。例如,电路113可以被配置为在没有主机干预的情况下向非主机存储器提供安全直接对等(peer-to-peer,P2P)存储器访问(例如,对于针对非主机存储器的已转化访问请求,绕过主机的根端口),和/或基于存储在MPC中的存储器保护信息来阻止或允许对非主机存储器的直接P2P存储器访问请求。在一些实施例中,电路113可以进一步被配置为确定已转化访问请求是否来自主机,并且如果确定是这样,则绕过对已转化访问请求的一个或多个存储器保护检查。电路113还可以被配置为基于在已转化访问请求中接收到的信息来确定已转化访问请求是否未命中MPC,并且如果确定是这样,则请求主机的MPU为已转化访问请求填充存储器保护信息。例如,电路113可以被配置为通知请求者重试未命中MPC的已转化访问请求,以及保持信息。
参考图1B,集成电路150的一实施例可以包括电路153,该电路被配置为在IO-MPU中存储用于主机存储器的存储器保护信息,并且使所存储的存储器保护信息与通信地耦合到主机的设备(例如,I/O设备)的MPC同步。例如,主机存储器可以对应于系统存储器、主存储器,等等。在一些实施例中,电路153可以被进一步配置。例如,电路153可以被配置为在IO-MPU处接收来自设备的MPC填充请求,在IO-MPU处执行主机权限表格游查并且验证访问权限,并且以MPC填充响应的形式从IO-MPU向设备返回信息。在一些实施例中,电路153可以进一步被配置为在IO-MPU处接收来自系统软件的使MPC信息无效的请求。响应于该请求,电路153可以被配置为向设备生成MPC无效请求,并且从设备接收MPC无效响应。例如,电路153也可以被配置为更新跟踪信息和/或通知系统软件关于MPC无效响应。
参考图2A至图2B,方法200的一个实施例可以包括在方框221处在MPC中存储用于非主机存储器的存储器保护信息,并且在方框222处基于所存储的存储器保护信息来对针对非主机存储器的已转化访问请求执行一个或多个存储器保护检查。方法200的一些实施例还可以包括在方框223处将所存储的存储器保护信息与主机的MPU同步。例如,方法200可以包括在方框224处在没有主机干预的情况下向非主机存储器提供安全直接P2P存储器访问(例如,对于针对非主机存储器的访问请求,绕过主机的根端口),和/或在方框225处基于存储在MPC中的存储器保护信息来阻止或允许对非主机存储器的直接P2P存储器访问请求。方法200的一些实施例还可以包括在方框226处确定已转化访问请求是否来自主机,并且如果确定是这样,则在方框227处绕过对已转化访问请求的一个或多个存储器保护检查。方法200还可以包括在方框228处基于在已转化访问请求中接收到的信息来确定已转化访问请求是否未命中MPC,并且如果确定是这样,则在方框229处请求主机的MPU为已转化访问请求填充存储器保护信息。例如,方法200可以包括在方框230处通知请求者重试未命中MPC的已转化访问请求,以及保持信息。
参考图3,装置300的一实施例可以包括MPC 331,用于存储用于非主机存储器的存储器保护信息,以及与MPC 331耦合的电路333,用于基于所存储的存储器保护信息来对针对非主机存储器的已转化访问请求执行一个或多个存储器保护检查。例如,非主机存储器可以对应于本地设备存储器、存储器池、远程存储器池,等等。在一些实施例中,电路333可以被进一步配置为将所存储的存储器保护信息与主机的MPU(例如,IO-MPU)同步。例如,电路333可以被配置为在没有主机干预的情况下向非主机存储器提供安全直接P2P存储器访问(例如,对于针对非主机存储器的已转化访问请求,绕过主机的根端口),和/或基于存储在MPC 331中的存储器保护信息来阻止或允许对非主机存储器的直接P2P存储器访问请求。在一些实施例中,电路333可以进一步被配置为确定已转化访问请求是否来自主机,并且如果确定是这样,则绕过对已转化访问请求的一个或多个存储器保护检查。电路333还可以被配置为基于在已转化访问请求中接收到的信息来确定已转化访问请求是否未命中MPC,并且如果确定是这样,则请求主机的MPU为已转化访问请求填充存储器保护信息。例如,电路333可以被配置为通知请求者重试未命中MPC的已转化访问请求,以及保持信息。
一些实施例提供了用于设备之间的安全直接P2P存储器访问请求的技术。分布式安全地址转化服务(ATS)架构的实施例可以包括在快速外围组件互连(PCIe)和/或计算机快速链路(CXL)设备之间实现高性能的直接P2P通信,同时维持与审查已转化存储器请求相关联的更高安全性条的技术。传统上,P2P存储器请求被主机反射/反弹(例如,通过在整个输入/输出(I/O)层次体系中配置访问控制服务(access control service,ACS)设置),以便执行存储器保护检查。一个问题是,主机反射/反弹的P2P存储器请求会造成I/O瓶颈(例如,特别是对于高度填充的I/O层次体系),增大P2P流量的端到端延时,并且对于分解式云平台而言,不能很好地缩放。
一些实施例利用用于分布式安全ATS架构的技术克服了上述的一个或多个问题,该架构使得扩展能够在更接近设备存储器/池的地方构建MPC,以执行存储器保护检查。一些实施例还提供了用于使得MPC与驻留在主机(例如,包括中央处理器单元(CPU)和根复合体的SoC设备)内部的IO-MPU保持同步的协议和/或消息的技术。有利的是,分布式安全ATS架构的一些实施例可以消除对主机反射/反弹已转化存储器请求的需要,从而改善了与P2P存储器请求相关联的延时和性能,并且还可以实现安全直接P2P通信。
参考图4A,分布式计算系统400的一实施例包括与系统存储器433耦合的SoC主机设备422。主机设备422包括与根复合体424通信地耦合的一个或多个CPU 423。根复合体424包括两个或更多个根端口425a和425b(统称为根端口425)、I/O存储器管理单元(I/Omemory management unit,IOMMU)426、以及IO-MPU 427。例如,主机设备422和根复合体424可以支持PCIe和CXL通信接口。主机设备422可以通信地耦合到I/O层次体系,该层次体系可以具有一个或多个带有本地存储器/池的I/O设备或者加速器。例如,系统400可以对应于具有分解式组件的云平台,这些组件包括直接通过根端口425和/或通过一个或多个交换机455的一个或多个外部设备441至444。例如,连接的设备441至444和/或交换机455也可以支持PCIe和CXL通信接口。如图所示,设备444、441和442经由交换机455连接到主机设备422,而设备443直接连接到根端口425b。各种设备441至444可以提供对诸如设备本地存储器461和463以及存储器池462(统称为非主机存储器)之类的非主机存储器的访问。
在一些实施例中,根复合体包括提供DMA重映射和中断重映射能力的IOMMU 426,连接I/O层次体系的PCIe/CXL根端口425,以及为已转化DMA请求验证权限的IO-MPU 427。在一些实施例中,IO-MPU 427可以在IOMMU 426的内部实现。
在示例操作中,设备441可以是具有设备本地存储器461的目标设备A(例如,图形处理单元(graphic processing unit,GPU)、现场可编程门阵列(field programmablegate array,FPGA),等等),设备442可以是具有存储器池462的目标设备B,设备443可以是具有设备本地存储器463的目标设备C(例如,另外的I/O或者加速器设备),并且设备444可以是源设备。
在示例场景中,源设备444向目标设备生成P2P请求。未转化的P2P请求通过交换机455,并且具有被设置为00b的地址转化(address translation,AT)属性。PCIe/CXL交换机455向上游发送未转化的P2P请求,以确保这些请求在被重引导到目标设备之前被转化代理(例如,IOMMU 426)进行转化。向上游发送未转化的请求确保了两个设备使用相同的语言,并且根复合体424可以根据需要来执行地址转化和访问检查。为了处理所需要的转化,系统软件可以在整个I/O层次体系中设置(0x1)ACS控制字段(例如,ACS P2P请求重引导使能,ACS P2P完成重引导使能,等等)。
为了提供安全的ATS,IO-MPU 427在允许已转化请求前进到存储器结构或者将其引导到I/O结构之前验证已转化请求(例如,利用权限表)。IO-MPU 427将验证已转化请求中的物理地址是被主机允许的。在一些实施例中,IO-MPU 427使用一组表格,这些表格指定设备对于每个物理页可以具有的权限。如果IO-MPU 427确定访问被允许,则IO-MPU 427允许已转化请求前进到其目的地。否则,IO-MPU 427阻止该访问。
在传统系统中,所有已转化的P2P请求仍然需要被引导到主机以执行地址检查。系统软件通过在整个I/O层次体系中清除(0x0)ACS控制字段“ACS直接转化P2P使能”来实现这一点。例如,源设备向传统目标设备发送AT=10b的已转化请求,PCIe/CXL交换机455接收来自下游端口的传入请求并且将其引导到上游,请求通过PCIe/CXL根端口425a到达,并且IO-MPU 427执行权限检查以确保请求的存储器访问被允许。在验证成功之后,根复合体424将请求重引导到下游(假定被访问的地址落在传统目标设备所暴露的存储器范围内),PCIe/CXL交换机455接收此请求,然后将其向下传递到传统目标设备。当源设备向定位为对等设备的传统目标设备B发出DMA请求时,可以利用类似的流程。
总而言之,传统目标设备可能接收到三种类型的请求,包括:1)源自CPU核心423的未转化请求(例如,源RID=根端口RID,AT=00b);2)源自对等设备、被反射/路由/反弹到SoC 422以进行地址转化、然后被重引导到传统目标设备的未转化请求(例如,源RID=根端口RID,AT=00b);以及3)源自对等设备、被反射/路由/反弹到SoC 422以进行安全ATS和/或IO-MPU 427检查、然后被引导到传统目标设备的已转化请求(例如,源RID=根端口RID,AT=10b或者00b)。一些根复合体可以将AT类型从10b转化到00b,因为已转化请求被向下游发送到传统目标设备,而其他根复合体可以将AT类型按原样保持为10b。
到达SoC/主机设备422并且被引导到对等设备I/O结构的任何事务在此被称为主机反射/反弹事务。对于分解式架构而言,去到主机以执行存储器保护检查的一个问题是,主机检查可能会造成I/O瓶颈并且增大存储器延时。一些实施例有利地提供了技术扩展,以为分解式和异构计算和I/O环境两者都实现高性能的安全直接P2P存储器访问。
一些实施例可以提供存储器保护缓存(MPC),该缓存可以在设备上实现(例如,更靠近设备本地存储器、存储器池,等等),以对已转化请求执行存储器保护检查,从而消除将已转化请求反弹到主机设备(例如,SoC)的需要。MPC可以被配置为与主机IO-MPU交互,以获取存储器保护信息并随后在设备上本地缓存存储器保护信息,以实现高性能的P2P通信,同时还维持与由主机实现的安全ATS和/或IO-MPU架构相关联的更高安全性条。
图4A示出了根据一些实施例的具有MPC扩展的示例平台。目标设备A和B具有本地MPC,该MPC被配置为缓存来自IO-MPU 427的存储器保护信息并且审查传入的已转化请求。源设备444可以遵循上述流程,去到SoC 422以获取地址转化信息,并且将该信息缓存在其设备转化后备缓冲器(translation lookaside buffer,TLB)(例如,本地地址转化缓存(address translation cache,ATC))中。然而,被引导到对等设备或者对等存储器池的已转化请求可以利用改进的或者优化的路径(例如,经由1-2-3或者a-b-c示出),该路径不要求已转化请求去到SoC 422进行权限检查。
参考图4B,分布式计算系统480的一实施例可以与系统400类似地被配置。在这个示例中,设备442(例如,目标设备B)包括ATC和MPC两者。ATC被用于转化出站请求(例如,设备442是源设备),而MPC被用于验证入站请求(例如,设备442是目标)。根据支持这些设备的(一个或多个)功能所需要的,系统480中的任何设备可以包括ATC和/或MPC。
一些实施例可以提供一种用于使得设备暴露私有存储器或者存储器池能力以实现存储与存储器相关联的权限的MPC的技术。该设备被配置为查找MPC缓存,以便在允许请求到达存储器之前验证传入的存储器读取/写入请求。成功通过了权限检查的请求正常进行,以读取或者写入存储器(根据请求),而未能通过权限检查的请求被阻止访问该存储器。在一些实施例中,MPC存储页粒度的读取和写入权限。在其他实施例中,MPC可以存储额外的页粒度权限(例如,执行权限)。
图4C示出了MPC结构490的实施例。在结构490中,MPC被配置为按源请求者ID的粒度、请求者ID+进程地址空间ID(Process Address Space ID,PASID)的粒度、域ID的粒度或者这些项的任何组合来存储页权限。此扩展的实施例使得能够实现更细粒度的保护/过滤,其中系统软件或者协调代理可以允许来自一个设备的直接P2P请求,但不允许来自另一个设备的直接P2P请求,或者来自指派给一个软件域的设备接口的直接P2P请求,但不允许来自另一个软件域/设备接口的直接P2P请求,等等。
因为目标设备接收到的存储器请求可以是(i)源自对等设备并且被直接发送到目标设备(例如,从源设备444到(一个或多个)目标设备A和/或B的直接P2P请求),(ii)源自CPU 423或者在CPU 423上运行的软件,或者(iii)源自对等设备但被反弹到CPU 423(例如,从源设备444到目标设备C的请求),所以如果(1)请求中的AT字段不是10b,或者(2)在已转化请求中接收到的请求者ID匹配与启动PCIe/CXL层次体系的PCIe/CXL根端口相关联的请求者ID,其中该PCIe/CXL层次体系与目标设备连接,则一些实施例可提供绕过MPC检查的技术(例如,对于目标设备C而言可能不需要MPC检查)。一些实施例提供了一种用于使得系统软件通过PCIe配置能力(例如,MPC能力)或者MMIO机制而在目标设备中配置PCIe/CXL根端口请求者ID值的技术。
参考图5A,当新事务到达目标设备端口时,方法520的一实施例可以在方框521处开始。在接收到新的存储器请求时,目标设备将决定是否要求MPC检查。目标设备基于在请求中接收到的AT字段和请求者ID字段值作出这个决定。例如,如果在方框523处AT字段==10b(表明该事务对应于已转化请求),则方法520接下来可以在方框525处确定已转化请求中的请求者ID是否与MPC设置中配置的PCIe/CXL根端口源RID相匹配。如果不是(表明直接P2P请求),则方法520可以前进到在方框527处调用MPC检查流程。否则(表明主机反弹/反射请求),则方法520可以前进到在方框529处继续对请求进行正常处理。在方框529处绕过MPC检查的情况下,MPC不被查找,并且存储器读取/写入流程正常工作。如果目标设备确定MPC检查是必要的,则目标设备会执行MPC查找。
参考图5B,方法540的一实施例可以在方框542处开始来进行MPC检查流程。方法540包括在方框544处基于在已转化请求中接收到的信息来查找MPC。如果在方框546处在MPC中找到匹配的条目(例如,表明MPC命中),则方法540包括在方框548处对照匹配的MPC条目来验证权限。例如,目标设备将存储在MPC中的权限与存储器请求所请求的访问权利进行比较,并且要么存储器访问被准予,要么被阻止(例如,如下文进一步详细描述)。例如,当入站请求具有与MPC中的现有条目相同的源RID、PASID等等和地址(例如,在页粒度上)时,就会找到匹配的条目。
如果在方框546处没有找到匹配的条目(例如,表明MPC未命中),则方法540包括在方框550处调用MPC填充流程(例如,填入未命中信息),然后再前进到方框548。如果在方框552处访问检查通过,则方法540继续在方框554处正常处理该请求。否则,方法540前进到在方框556处阻止存储器访问,并且在方框558处调用存储器访问错误流程。
参考图6,分布式计算系统600的一实施例可以与系统400类似地被配置。在示例MPC填充流程中,目标设备向上游(例如,在编号为1、2的箭头处)朝着IO-MPU发送“MPC填充请求”。然后PCIe/CXL根端口与IO-MPU一起工作以获得页权限(例如,在编号为3的箭头处),并且PCIe/CXL根端口向下游向目标设备返回“MPC填充响应”(例如,在编号为4、5的箭头处)。在一些实施例中,IO-MPU基于在MPC填充请求中接收到的信息(例如,源RID,可选的PASID,地址,...)来查找和/或游查由系统软件设置的权限表,以帮助生成MPC填充响应(例如,与PCIe/CXL根端口一起工作)。如果MPC填充请求跨越了多于一页,则IO-MPU可以用多于一个填充响应来作出响应以填充目标设备中的多个MPC条目。目标设备可以自由地将大于其MPC中支持的页大小的页大小分解成多个条目,但一般至少支持4KB页大小。
设备一般将会与设备上的存储器池、设备支持的页大小以及主机使用的预期页大小成比例地来设置MPC的大小。此外,使用和性能要求可能会影响到可向目标设备提出请求的并发源设备的数目,从而要求额外的MPC条目来存储其关联权限。在一些实施例中,MPC填充请求可以包括表格1中列出的以下信息/字段:
表格1
在一些实施例中,MPC填充响应可以包括表格2中列出的以下信息/字段:
表格2
参考图7,分布式计算系统700的一实施例可以与系统400类似地被配置。系统700的一些实施例可以保留(例如,缓冲)所关注的存储器请求,同时“MPC填充”流程完成,并且必要的权限检查可以被执行。例如,从源设备到目标设备A的直接P2P请求(例如,编号为1-2-3的箭头)可能导致MPC缓存中的未命中,然后是对IO-MPU的MPC填充请求。系统700的一些实施例可以利用增强型CXL和/或PCIe P2P协议来对P2P请求利用非发布(Non-Posted,NP)写入。例如,NP写入可以从目标设备A被返回到源设备,并且带有重试消息(例如,编号为4-5-6的箭头)。在这个示例中,在MPC未命中的情况下,目标设备可以向源设备返回重试,从而将设备设计简化为不缓冲(例如,保留)未决事务。在一些实施例中,目标设备也可以将保持信息(例如,等待时间、队列深度,等等)与重试消息一起返回,使得源设备能够在目标设备填满MPC的同时保持一小段时间(例如,而不是源设备发送新请求和接收多次重试)。在一些实施例中,额外地或者替换地,目标设备可以在MPC被填充之后通知源设备(例如,目标设备向源设备发出继续指令),以使得源设备能够重提交该请求。
参考图8A,分布式计算系统800的一实施例可以与系统400类似地被配置。因为MPC缓存了页权限和所有权信息,所以系统软件可能需要一种在与页相关联的权限/属性被修改时使MPC中的缓存线/条目无效的方式。一些实施例可以包括IO-MPU和MPC之间的以下消息:(1)MPC无效请求;以及(2)MPC无效响应。系统软件可以修改IO-MPU使用的权限表(例如,在一些实施例中,主机权限表),然后对与IO-MPU中的缓存相关联以及用于每个MPC的无效进行排队。目标设备将以“MPC无效请求”(例如,编号为1-2-3的箭头)的形式接收这样的无效请求。然后,目标设备基于无效请求中指定的标准使MPC中的(一个或多个)缓存线/条目无效,并且将“MPC无效响应”(例如,编号为4-5-6的箭头)向上游发送回到IO-MPU。
在一些实施例中,MPC无效请求可以包括表格3中列出的以下信息/字段:
表格3
在一些实施例中,MPC无效响应可以包括表格4中列出的以下信息/字段:
字段 | 描述 |
请求者ID | 实现MPC的设备的请求者ID |
无效标签 | 在MPC无效请求中接收到的标签 |
表格4
表格5列出了与MPC的各种标签结合使用的信息的示例:
表格5
参考图8B,在存储器访问错误流程被调用时,用于处理存储器访问错误的方法860的一实施例开始于方框862。方法860可以包括在方框864处确定存储器访问错误是否对应于发布的存储器写入请求,并且如果是,则在方框866处放弃写入,如果否,则对于其他类型的请求在方框868处向源设备返回适当的错误响应(UR,CA,等等)。
一些实施例还可以包括一种扩展来使能错误记录功能。例如,方法860的一些实施例还可以包括在方框870处确定是否为MPC检查使能了故障记录,并且如果是,则前进到在方框872处用事务信息来更新错误日志,并且在方框874处基于设置的标准和/或频率来生成错误中断。
在一些实施例中,目标设备提供一寄存器或者一组寄存器来捕捉故障事务信息。在一些实施例中,目标设备可以提供一寄存器,系统软件可以在该寄存器中配置存储器备份的错误日志(即,存储在存储器中的错误日志)及其相应的大小。在一些实施例中,如果使能了故障记录,则目标设备可以为每个故障事务来生成错误中断。或者,在一些实施例中,可以基于由系统软件指定的标准(例如,当错误日志达到系统软件配置的阈值时,或者在每N个错误之后,等等)来生成错误中断。在一些实施例中,IO-MPU提供提示/偏好以及MPC填充响应消息,即是否在特定的MPC条目组合上记录访问违规的错误。
因为MPC未命中将导致传入的存储器请求的额外存储器访问延时(例如,发送MPC填充请求和接收MPC填充响应的往返延时),所以一些实施例可以在MPC中预配置一个或多个存储器范围以及适当的权限和所有权信息。这种预配置可以使得设备能够执行粗粒度存储器保护检查,并且将减轻为每个页-域组合来缓存/获取权限的负担。在MPC也由PCIe/CXL交换机实现的一些实施例中,配置可以使得交换机具有为更靠近设备的地方服务“MPC填充请求”的能力,而不是要求一直到IO-MPU。
本领域的技术人员将会明白,各种各样的设备都可从上述实施例中受益。以下示例性核心架构、处理器和计算机架构是可以有益地纳入本文描述的技术的实施例的设备的非限制性示例。
示例性核心架构、处理器和计算机架构
可以按不同的方式、为了不同的目的、在不同的处理器中实现处理器核心。例如,这种核心的实现方式可以包括:1)旨在用于通用计算的通用有序核心;2)旨在用于通用计算的高性能通用无序核心;3)主要旨在用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可以包括:1)CPU,包括旨在用于通用计算的一个或多个通用有序核心和/或旨在用于通用计算的一个或多个通用无序核心;以及2)协处理器,包括主要旨在用于图形和/或科学(吞吐量)的一个或多个专用核心。这样的不同处理器导致不同的计算机系统架构,这些架构可包括:1)协处理器在与CPU分开的芯片上;2)协处理器在与CPU相同的封装件中、分开的管芯上;3)协处理器与CPU在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可以在同一管芯上包括所描述的CPU(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)、上述的协处理器以及额外的功能。接下来描述示例性核心架构,然后是对示例性处理器和计算机架构的描述。
示例性核心架构
有序和无序核心框图
图9A是根据本发明的实施例图示出示例性有序管线和示例性寄存器重命名、无序发出/执行管线两者的框图。图9B是根据本发明的实施例图示出要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发出/执行架构核心两者的框图。图9A-图9B中的实线框示出了有序管线和有序核心,而虚线框的可选添加示出了寄存器重命名、无序发出/执行管线和核心。考虑到有序方面是无序方面的子集,将描述无序方面。
在图9A中,处理器管线900包括取得阶段902、长度解码阶段904、解码阶段906、分配阶段908、重命名阶段910、调度(也称为调遣或发出)阶段912、寄存器读取/存储器读取阶段914、执行阶段916、写回/存储器写入阶段918、异常处理阶段922、以及提交阶段924。
图9B示出了处理器核心990包括与执行引擎单元950耦合的前端单元930,并且两者都耦合到存储器单元970。核心990可以是精简指令集计算(reduced instruction setcomputing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心、或者混合或替换核心类型。作为另外一个选项,核心990可以是专用核心,例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元930包括分支预测单元932,分支预测单元932耦合到指令缓存单元934,指令缓存单元934耦合到指令转化后备缓冲器(translation lookaside buffer,TLB)936,指令TLB 936耦合到指令取得单元938,指令取得单元938耦合到解码单元940。解码单元940(或解码器)可以对指令进行解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。可以利用各种不同的机制来实现解码单元940。适当机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(readonly memory,ROM),等等。在一个实施例中,核心990包括微代码ROM或其他介质,其为某些宏指令存储微代码(例如,在解码单元940中或者以其他方式在前端单元930内)。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括重命名/分配器单元952,其耦合到引退单元954和一组一个或多个调度器单元956。(一个或多个)调度器单元956表示任何数目的不同调度器,包括预留站、中央指令窗口,等等。(一个或多个)调度器单元956耦合到(一个或多个)物理寄存器文件单元958。(一个或多个)物理寄存器文件单元958中的每一者表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一个指令的地址的指令指针),等等。在一个实施例中,(一个或多个)物理寄存器文件单元958包括向量寄存器单元、写入掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可以提供架构式向量寄存器、向量掩码寄存器、以及通用寄存器。(一个或多个)物理寄存器文件单元958与引退单元954重叠以说明可用来实现寄存器重命名和无序执行的各种方式(例如,利用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;利用(一个或多个)未来文件、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器文件;利用寄存器图谱和寄存器的池;等等)。引退单元954和(一个或多个)物理寄存器文件单元958耦合到(一个或多个)执行集群960。(一个或多个)执行集群960包括一组一个或多个执行单元962和一组一个或多个存储器访问单元964。执行单元962可以对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集合的若干个执行单元,但其他实施例可以只包括一个执行单元或者全部执行所有功能的多个执行单元。(一个或多个)调度器单元956、(一个或多个)物理寄存器文件单元958和(一个或多个)执行集群960被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点管线、和/或存储器访问管线,它们各自具有其自己的调度器单元、(一个或多个)物理寄存器文件单元和/或执行集群——并且在单独的存储器访问管线的情况下,实现了某些实施例,其中只有此管线的执行集群具有(一个或多个)存储器访问单元964)。还应当理解,在使用分开管线的情况下,这些管线中的一个或多个可以是无序发出/执行的,并且其余的是有序的。
存储器访问单元964的集合耦合到存储器单元970,存储器单元970包括数据TLB单元972,数据TLB单元972耦合到数据缓存单元974,数据缓存单元974耦合到第2级(L2)缓存单元976。在一个示例性实施例中,存储器访问单元964可以包括加载单元、存储地址单元、以及存储数据单元,它们中的每一者耦合到存储器单元970中的数据TLB单元972。指令缓存单元934进一步耦合到存储器单元970中的第2级(L2)缓存单元976。L2缓存单元976耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发出/执行核心架构可以实现管线900如下:1)指令取得938执行取得和长度解码阶段902和904;2)解码单元940执行解码阶段906;3)重命名/分配器单元952执行分配阶段908和重命名阶段910;4)(一个或多个)调度器单元956执行调度阶段912;5)(一个或多个)物理寄存器文件单元958和存储器单元970执行寄存器读取/存储器读取阶段914;执行集群960执行执行阶段916;6)存储器单元970和(一个或多个)物理寄存器文件单元958执行写回/存储器写入阶段918;7)在异常处理阶段922中可涉及各种单元;以及8)引退单元954和(一个或多个)物理寄存器文件单元958执行提交阶段924。
核心990可以支持一个或多个指令集(例如,x86指令集(带有已随着较新版本添加的一些扩展);加州森尼维尔市的MIPS技术公司的MIPS指令集;加州森尼维尔市的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON),包括本文描述的(一个或多个)指令。在一个实施例中,核心990包括逻辑来支持压缩数据指令集扩展(例如,AVX1、AVX2),从而允许了被许多多媒体应用使用的操作被利用压缩数据来执行。
应当理解,核心可以支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按各种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心针对该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式取得和解码,然后是同时多线程处理,例如像超线程处理技术中那样)。
虽然是在无序执行的情境中描述寄存器重命名的,但应当理解,寄存器重命名可以被用在有序架构中。虽然处理器的图示实施例还包括分开的指令和数据缓存单元934/974和共享的L2缓存单元976,但替换实施例可针对指令和数据两者具有单个内部缓存,例如,第1级(L1)内部缓存或者多级别的内部缓存。在一些实施例中,系统可以包括内部缓存和在核心和/或处理器外部的外部缓存的组合。或者,所有缓存可以在核心和/或处理器外部。
具体示例性有序核心架构
图10A-图10B图示出更具体的示例性有序核心架构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一。逻辑块通过高带宽互连网络(例如,环状网络)与某些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑进行通信,这取决于应用。
图10A是根据本发明的实施例的单个处理器核心及其与管芯上互连网络1002以及与其第2级(L2)缓存的本地子集1004的连接的框图。在一个实施例中,指令解码器1000支持具有压缩数据指令集扩展的x86指令集。L1缓存1006允许低延时访问以将存储器缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器集合(分别是标量寄存器1012和向量寄存器1014)并且在它们之间传送的数据被写入到存储器,然后被从第1级(L1)缓存1006读回,但本发明的替换实施例可以使用不同的方案(例如,使用单个寄存器集合或者包括允许数据在两个寄存器文件之间传送而不被写入和读回的通信路径)。
L2缓存的本地子集1004是全局L2缓存的一部分,全局L2缓存被划分成单独的本地子集,每处理器核心有一个本地子集。每个处理器核心具有到其自己的L2缓存的本地子集1004的直接访问路径。处理器核心所读取的数据被存储在其L2缓存子集1004中并且可被迅速访问,所述访问与其他处理器核心访问其自己的本地L2缓存子集并行进行。处理器核心所写入的数据被存储在其自己的L2缓存子集1004中并且在必要时被从其他子集冲刷出。环状网络确保了共享数据的一致性。环状网络是双向的,以允许诸如处理器核心、L2缓存和其他逻辑块之类的代理在芯片内与彼此进行通信。每个环状数据路径在每方向上是1012比特宽的。
图10B是根据本发明的实施例的图10A中的处理器核心的一部分的扩展视图。图10B包括L1缓存1006的L1数据缓存1006A部分,以及关于向量单元1010和向量寄存器1014的更多细节。具体而言,向量单元1010是16宽的向量处理单元(vector processing unit,VPU)(参见16宽的ALU 1028),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持利用调配单元1020来调配寄存器输入,利用数值转换单元1022A-B进行数值转换,以及利用复制单元1024对存储器输入进行复制。写入掩码寄存器1026允许断言结果向量写入。
图11是根据本发明的实施例的处理器1100的框图,处理器1100可以具有多于一个核心,可以具有集成的存储器控制器,并且可以具有集成的图形。图11中的实线框示出了具有单个核心1102A、系统代理1110和一组一个或多个总线控制器单元1116的处理器1100,而虚线框的可选添加示出了具有多个核心1102A-N、系统代理单元1110中的一组一个或多个集成存储器控制器单元1114以及专用逻辑1108的替换处理器1100。
因此,处理器1100的不同实现方式可以包括:1)其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核心)并且核心1102A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心或者两者的组合)的CPU;2)其中核心1102A-N是大量的主要旨在用于图形和/或科学(吞吐量)的专用核心的协处理器;以及3)其中核心1102A-N是大量的通用有序核心的协处理器。因此,处理器1100可以是通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(many integrated core,MIC)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个衬底的一部分和/或可利用多种工艺技术中的任何一者被实现在一个或多个衬底上,这些技术例如是BiCMOS、CMOS或NMOS。
存储器层次体系包括在核心1102A-N内的各个缓存1104A-N的一个或多个级别、一组或者一个或多个共享缓存单元1106以及耦合到该组集成存储器控制器单元1114的外部存储器(未示出)。该组共享缓存单元1106可以包括一个或多个中间级别缓存(例如,第2级(L2)、第3级(L3)、第4级(L4)或者其他级别的缓存),最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在一个实施例中基于环的互连单元1112互连集成图形逻辑1108、该组共享缓存单元1106以及系统代理单元1110/(一个或多个)集成存储器控制器单元1114,但替换实施例也可使用任何数目的公知技术来互连这种单元。在一个实施例中,在一个或多个缓存单元1106和核心1102A-N之间维持一致性。
在一些实施例中,核心1102A-N中的一个或多个能够进行多线程处理。系统代理1110包括协调和操作核心1102A-N的那些组件。系统代理单元1110可以包括例如功率控制单元(power control unit,PCU)和显示单元。PCU可以是或者可以包括对核心1102A-N和集成图形逻辑1108的功率状态进行调节所需要的逻辑和组件。显示单元用于驱动一个或多个在外部连接的显示器。
核心1102A-N就架构指令集而言可以是同构的或者异构的;也就是说,核心1102A-N中的两个或更多个可能能够执行同一指令集,而其他的核心可能能够只执行该指令集的子集或者不同的指令集。
示例性计算机架构
图12-图15是示例性计算机架构的框图。本领域中已知的用于膝上型电脑、桌面型电脑、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置,也是适当的。总之,能够包含本文公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般是适当的。
现在参考图12,示出了根据本发明的一个实施例的系统1200的框图。系统1200可以包括一个或多个处理器1210、1215,它们耦合到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(graphics memory controller hub,GMCH)1290和输入/输出中枢(Input/Output Hub,IOH)1250(它们可在分开的芯片上);GMCH 1290包括与存储器1240和协处理器1245耦合的存储器和图形控制器;IOH1250将输入/输出(I/O)设备1260耦合到GMCH 1290。或者,存储器和图形控制器中的一者或两者被集成在处理器内(如本文所述),存储器1240和协处理器1245直接耦合到处理器1210,并且控制器中枢1220与IOH 1250在单个芯片中。
额外的处理器1215的可选性在图12中用虚线表示。每个处理器1210、1215可以包括本文描述的处理核心中的一个或多个,并且可以是处理器1100的某个版本。
存储器1240可以例如是动态随机存取存储器(dynamic random access memory,DRAM)、相变存储器(phase change memory,PCM)、或者两者的组合。对于至少一个实施例,控制器中枢1220经由多点分支总线(例如,前端总线(frontside bus,FSB))、点到点接口(例如,快速通道互联(QuickPath Interconnect,QPI))或者类似的连接1295与(一个或多个)处理器1210、1215进行通信。
在一个实施例中,协处理器1245是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1220可以包括集成的图形加速器。
在物理资源1210、1215之间,就包括架构特性、微架构特性、热特性、功率消耗特性等等在内的价值度量的范围而言,可以有各种差异。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1210将这些协处理器指令识别为应当由附接的协处理器1245执行的类型。因此,处理器1210在协处理器总线或其他互连上向协处理器1245发出这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器1245接受并且执行接收到的协处理器指令。
现在参考图13,其中示出了根据本发明的实施例的第一更具体示例性系统1300的框图。如图13中所示,多处理器系统1300是点到点互连系统,并且包括经由点到点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一者可以是处理器1100的某个版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。
处理器1370和1380被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元1372和1382。处理器1370还包括点到点(P-P)接口1376和1378作为其总线控制器单元的一部分;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可利用P-P接口电路1378、1388经由点到点(P-P)接口1350交换信息。如图13中所示,IMC 1372和1382将处理器耦合到各自的存储器,即存储器1332和存储器1334,存储器1332和存储器1334可以是在本地附接到各自处理器的主存储器的一部分。
处理器1370、1380可以各自利用点到点接口电路1376、1394、1386、1398经由个体P-P接口1352、1354与芯片组1390交换信息。芯片组1390可以可选地经由高性能接口1339和互连1392与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可以被包括在任一处理器中,或者在两个处理器之外,但经由P-P互连与处理器连接,从而使得任一个或两个处理器的本地缓存信息在处理器被置于低功率模式中的情况下可被存储在该共享缓存中。
芯片组1390可以经由接口1396耦合到第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI总线或另一种第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图13所示,各种I/O设备1314可以耦合到第一总线1316,以及将第一总线1316耦合到第二总线1320的总线桥1318。在一个实施例中,一个或多个额外的处理器1315,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或者任何其他处理器,耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(low pin count,LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1320,包括例如键盘和/或鼠标1322、通信设备1327和存储单元1328,例如盘驱动器或者其他大容量存储设备,其中该存储单元1328可以包括指令/代码和数据1330。另外,音频I/O 1324可以耦合到第二总线1320。注意,其他架构是可能的。例如,取代图13的点到点架构,系统可以实现多点分支总线或者其他这种架构。
现在参考图14,其中示出了根据本发明的实施例的第二更具体示例性系统1400的框图。图13和图14中的相似元素带有相似的标号,并且图13的某些方面被从图14中省略以避免模糊图14的其他方面。
图14图示出处理器1370、1380可以分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括集成存储器控制器单元并且包括I/O控制逻辑。图14图示出不仅存储器1332、1334耦合到CL 1472、1482,而且I/O设备1414也耦合到控制逻辑1472、1482。传统I/O设备1415耦合到芯片组1390。
现在参考图15,其中示出了根据本发明的实施例的SoC 1500的框图。图11中的相似元素带有相似的标号。另外,虚线框是更先进SoC上的可选特征。在图15中,(一个或多个)互连单元1502耦合到:应用处理器1510,其包括一组一个或多个核心1102A-N和(一个或多个)共享缓存单元1106;系统代理单元1110;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;一组或一个或多个协处理器1520,其可以包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(static randomaccess memory,SRAM)单元1530;直接存储器访问(direct memory access,DMA)单元1532;以及显示单元1540,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1520包括专用处理器,例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
可以用硬件、软件、固件或者这种实现方案的组合来实现本文公开的机制的实施例。本发明的实施例可以被实现为在包括以下项的可编程系统上执行的计算机程序或程序代码:至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。
程序代码,例如图13中所示的代码1330,可以被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可以按已知的方式被应用到一个或多个输出设备。对于本申请而言,处理系统包括任何具有处理器的系统,例如:数字信号处理器(digitalsignal processor,DSP)、微控制器、专用集成电路(application specific integratedcircuit,ASIC)、或者微处理器。
可以用高级别过程式或面向对象的编程语言来实现程序代码以与处理系统进行通信。如果希望,也可以用汇编或机器语言来实现程序代码。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是经编译或者经解译的语言。
至少一个实施例的一个或多个方面可以由被存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些指令在被机器读取时,使得该机器制作逻辑来执行本文描述的技术。这种被称为“IP核心”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。
这种机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂态有形布置,包括诸如以下项之类的存储介质:硬盘,任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可改写致密盘(compact disk rewritable,CD-RW)、以及磁光盘),半导体设备(诸如,只读存储器(read-only memory,ROM),诸如动态随机存取存储器(dynamic random access memory,DRAM)、静态随机存取存储器(static random access memory,SRAM)之类的随机存取存储器(randomaccess memory,RAM),可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM),闪速存储器,电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM),相变存储器(phase change memory,PCM)),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态有形机器可读介质,其包含指令或者包含定义本文描述的结构、电路、装置、处理器和/或系统特征的设计数据,例如硬件描述语言(Hardware Description Language,HDL)。这种实施例也可以被称为程序产品。
仿真(包括二进制转化、代码变形,等等)
在一些情况下,指令转换器可被用于将指令从源指令集转换到目标指令集。例如,指令转换器可将指令转化(例如,利用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或者以其他方式转换到要被核心处理的一个或多个其他指令。可以用软件、硬件、固件或者其组合来实现指令转换器。指令转换器可以在处理器上、在处理器外、或者一部分在处理器上而一部分在处理器外。
图16是根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。在图示的实施例中,指令转换器是软件指令转换器,但是可替换地,可以用软件、固件、硬件或者其各种组合来实现指令转换器。图16示出了高级别语言1602的程序可被利用x86编译器1604来编译以生成x86二进制代码1606,x86二进制代码1606可由具有至少一个x86指令集核心的处理器1616原生执行。具有至少一个x86指令集核心的处理器1616表示任何这样的任意处理器:这种处理器可通过兼容地执行或以其他方式处理(1)英特尔x86指令集核心的指令集的实质部分或者(2)目标为在具有至少一个x86指令集核心的英特尔处理器上运行的应用或其他软件的目标代码版本,来执行与具有至少一个x86指令集核心的英特尔处理器基本上相同的功能,以便实现与具有至少一个x86指令集核心的英特尔处理器基本上相同的结果。x86编译器1604表示可操作来生成x86二进制代码1606(例如,目标代码)的编译器,x86二进制代码1606在带有或不带有额外的链接处理的情况下可在具有至少一个x86指令集核心的处理器1616上被执行。类似地,图16示出了高级别语言的程序1602可被利用替换指令集编译器1608来编译以生成替换指令集二进制代码1610,替换指令集二进制代码1610可由没有至少一个x86指令集核心的处理器1614(例如,具有执行加州森尼维尔市的MIPS技术公司的MIPS指令集和/或执行加州森尼维尔市的ARM控股公司的ARM指令集的核心的处理器)原生执行。指令转换器1612用于将x86二进制代码1606转换成可由没有x86指令集核心的处理器1614原生执行的代码。这个转换后的代码不太可能与替换指令集二进制代码1610相同,因为能够做到这一点的指令转换器是难以制作的;然而,转换后的代码将实现一般操作并且由来自替换指令集的指令构成。因此,指令转换器1612表示通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件或者其组合。
附加注释和示例
示例1包括一种装置,包括:存储器保护缓存,用于存储用于非主机存储器的存储器保护信息,以及与所述存储器保护缓存耦合的电路,用于基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
示例2包括如示例1所述的装置,其中,所述电路还用于将所存储的存储器保护信息与主机的存储器保护单元进行同步。
示例3包括如示例2所述的装置,其中,所述电路还用于在没有所述主机干预的情况下提供对所述非主机存储器的安全直接对等存储器访问(例如,对于针对所述非主机存储器的已转化访问请求,绕过所述主机的根端口)。
示例4包括如示例2至3中的任一项所述的装置,其中,所述电路还用于基于存储在所述MPC中的存储器保护信息来阻或允许对所述非主机存储器的直接P2P存储器访问请求。
示例5包括如示例2至4中的任一项所述的装置,其中,所述电路还用于确定所述已转化访问请求是否来自所述主机,并且,如果确定是,则绕过对所述已转化访问请求的所述一个或多个存储器保护检查。
示例6包括如示例2至5中的任一项所述的装置,其中,所述电路还用于基于在所述已转化访问请求中接收到的信息来确定所述已转化访问请求是否未命中所述存储器保护缓存,并且,如果确定是,则请求所述主机的存储器保护单元为所述已转化访问请求填充存储器保护信息。
示例7包括如示例6所述的装置,其中,所述电路还用于通知请求者重试未命中所述存储器保护缓存的已转化访问请求,以及保持信息。
示例8包括一种集成电路,包括:电路,用于在存储器保护缓存中存储用于非主机存储器的存储器保护信息,并且基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
示例9包括如示例8所述的集成电路,其中,所述电路还用于将所存储的存储器保护信息与主机的存储器保护单元进行同步。
示例10包括如示例9所述的集成电路,其中,所述电路还用于在没有所述主机干预的情况下提供对所述非主机存储器的安全直接对等存储器访问。
示例11包括如示例9至10中的任一项所述的集成电路,其中,所述电路还用于对于针对所述非主机存储器的已转化访问请求,绕过所述主机的根端口。
示例12包括如示例9至11中的任一项所述的集成电路,其中,所述电路还用于确定所述已转化访问请求是否来自所述主机,并且,如果确定是,则绕过对所述已转化访问请求的所述一个或多个存储器保护检查。
示例13包括如示例9至12中的任一项所述的集成电路,其中,所述电路还用于基于在所述已转化访问请求中接收到的信息来确定所述已转化访问请求是否未命中所述存储器保护缓存,并且,如果确定是,则请求所述主机的存储器保护单元为所述已转化访问请求填充存储器保护信息。
示例14包括如示例13所述的集成电路,其中,所述电路还用于通知请求者重试未命中所述存储器保护缓存的已转化访问请求,以及保持信息。
示例15包括一种方法,包括:在存储器保护缓存中存储用于非主机存储器的存储器保护信息,并且基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
示例16包括如示例15所述的方法,还包括:将所存储的存储器保护信息与主机的存储器保护单元进行同步。
示例17包括如示例16所述的方法,还包括:在没有所述主机干预的情况下提供对所述非主机存储器的安全直接对等存储器访问。
示例18包括如示例16至17中的任一项所述的方法,还包括:对于针对所述非主机存储器的已转化访问请求,绕过所述主机的根端口。
示例19包括如示例16至18中的任一项所述的方法,还包括:确定所述已转化访问请求是否来自所述主机,并且,如果确定是,则绕过对所述已转化访问请求的所述一个或多个存储器保护检查。
示例20包括如示例16至19中的任一项所述的方法,还包括:基于在所述已转化访问请求中接收到的信息来确定所述已转化访问请求是否未命中所述存储器保护缓存,并且,如果确定是,则请求所述主机的存储器保护单元为所述已转化访问请求填充存储器保护信息。
示例21包括如示例20所述的方法,还包括:通知请求者重试未命中所述存储器保护缓存的已转化访问请求,以及保持信息。
示例22包括一种装置,包括:用于在存储器保护缓存中存储用于非主机存储器的存储器保护信息的设备,以及用于基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查的设备。
示例23包括如示例22所述的装置,还包括:用于将所存储的存储器保护信息与主机的存储器保护单元进行同步的设备。
示例24包括如示例23所述的装置,还包括:用于在没有所述主机干预的情况下提供对所述非主机存储器的安全直接对等存储器访问的设备。
示例25包括如示例23至24中的任一项所述的装置,还包括:用于对于针对所述非主机存储器的已转化访问请求绕过所述主机的根端口的设备。
示例26包括如示例23至25中的任一项所述的装置,还包括:用于确定所述已转化访问请求是否来自所述主机的设备,以及,如果确定是,用于绕过对所述已转化访问请求的所述一个或多个存储器保护检查的设备。
示例27包括如示例23至26中的任一项所述的装置,还包括:用于基于在所述已转化访问请求中接收到的信息来确定所述已转化访问请求是否未命中所述存储器保护缓存的设备,以及,如果确定是,用于请求所述主机的存储器保护单元为所述已转化访问请求填充存储器保护信息的设备。
示例28包括如示例27所述的装置,还包括:用于通知请求者重试未命中所述存储器保护缓存的已转化访问请求以及保持信息的设备。
示例29包括至少一种非暂态机器可读介质,其包括多个指令,所述多个指令响应于在计算设备上被执行,使得所述计算设备执行以下操作:在存储器保护缓存中存储用于非主机存储器的存储器保护信息,以及基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
示例30包括如示例29所述的至少一种非暂态机器可读介质,包括多个另外指令,所述另外指令响应于在所述计算设备上被执行,使得所述计算设备执行以下操作:将所存储的存储器保护信息与主机的存储器保护单元进行同步。
示例31包括如示例30所述的至少一种非暂态机器可读介质,包括多个另外指令,所述另外指令响应于在所述计算设备上被执行,使得所述计算设备执行以下操作:在没有所述主机干预的情况下提供对所述非主机存储器的安全直接对等存储器访问。
示例32包括如示例30至31中的任一项所述的至少一种非暂态机器可读介质,包括多个另外指令,所述另外指令响应于在所述计算设备上被执行,使得所述计算设备执行以下操作:对于针对所述非主机存储器的已转化访问请求,绕过所述主机的根端口。
示例33包括如示例30至32中的任一项所述的至少一种非暂态机器可读介质,包括多个另外指令,所述另外指令响应于在所述计算设备上被执行,使得所述计算设备执行以下操作:确定所述已转化访问请求是否来自所述主机,并且,如果确定是,则绕过对所述已转化访问请求的所述一个或多个存储器保护检查。
示例34包括如示例30至33中的任一项所述的至少一种非暂态机器可读介质,包括多个另外指令,所述另外指令响应于在所述计算设备上被执行,使得所述计算设备执行以下操作:基于在所述已转化访问请求中接收到的信息来确定所述已转化访问请求是否未命中所述存储器保护缓存,并且,如果确定是,则请求所述主机的存储器保护单元为所述已转化访问请求填充存储器保护信息。
示例35包括如示例34所述的至少一种非暂态机器可读介质,包括多个另外指令,所述另外指令响应于在所述计算设备上被执行,使得所述计算设备执行以下操作:通知请求者重试未命中所述存储器保护缓存的已转化访问请求,以及保持信息。
示例36包括一种集成电路,其包括:电路,用于在输入/输出存储器保护单元(IO-MPU)中存储用于主机存储器的存储器保护信息,并且将所存储的存储器保护信息与通信地耦合到主机的设备的存储器保护缓存(MPC)进行同步。
示例37包括如示例36所述的集成电路,其中,所述电路还用于在所述IO-MPU处接收来自所述设备的MPC填充请求。
示例38包括如示例37所述的集成电路,其中,所述电路还用于响应于所述MPC填充请求而在所述IO-MPU处执行主机权限表游查并且验证访问权限,并且以MPC填充响应的形式从所述IO-MPU向所述设备返回信息。
示例39包括如示例36至38中的任一项所述的集成电路,其中,所述电路还用于在所述IO-MPU处接收来自系统软件的使MPC信息无效的请求。
示例40包括如示例39所述的集成电路,其中,所述电路还用于响应于所述请求而向所述设备生成MPC无效请求,并且接收来自所述设备的MPC无效响应。
示例41包括如示例40所述的集成电路,其中,所述电路还用于执行以下操作中的一个或多个:更新跟踪信息,以及通知所述系统软件关于所述MPC无效响应。
示例42包括如示例36至41中的任一项所述的集成电路,其中,所述主机存储器包括系统存储器。
本文描述了用于MPC的技术和架构。在以上描述中,出于说明目的,记载了许多具体细节,以便提供对某些实施例的透彻理解。然而,本领域技术人员将会清楚,没有这些具体细节也可实现某些实施例。在其他情况中,以框图形式示出了结构和设备以避免模糊描述。
本说明书中提及“一个实施例”或“一实施例”的意思是结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书中各种地方出现短语“在一个实施例中”不一定都指的是同一实施例。
本文的详细描述的一些部分是按照对计算机存储器内的数据比特的操作的算法和符号表示来呈现的。这些算法描述和表示是被计算领域的技术人员用来最有效地将其工作的实质传达给本领域的其他技术人员的手段。算法在这里并且一般而言被设想为是通向期望结果的步骤的自洽序列。这些步骤是要求对物理量进行物理操纵的那些步骤。通常(但并非一定),这些量采取能够被存储、传送、组合、比较和以其他方式操纵的电信号或磁信号的形式。已证明有时,主要是出于习惯用法的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等等,是方便的。
然而,应当记住,所有这些和类似的术语都将与适当的物理量相关联,并且只是应用到这些量的方便标签。除非从本文的论述中清楚看出另有具体声明,否则要明白在整个说明书各处,利用诸如“处理”或“计算”或“运算”或“确定”或“显示”等之类的术语的论述指的是计算机系统或类似的电子计算设备的动作和过程,这些动作和过程将计算机系统的寄存器和存储器内的被表示为物理(电子)量的数据操纵和变换成计算机系统存储器或寄存器或其他这种信息存储、传输或显示设备内的被类似地表示为物理量的其他数据。
某些实施例还涉及用于执行本文的操作的装置。这个装置可以是为要求的目的而专门构造的,或者其可以包括由存储在计算机中的计算机程序选择性地激活或重配置的通用计算机。这种计算机程序可被存储在计算机可读存储介质中,例如但不限于任何类型的盘(包括软盘、光盘、CD-ROM和磁光盘)、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)(例如动态RAM(dynamic RAM,DRAM))、EPROM、EEPROM、磁卡或光卡、或者适合用于存储电子指令并且耦合到计算机系统总线的任何类型的介质。
本文给出的算法和显示并不固有地与任何特定的计算机或其他装置相关。各种通用系统可与根据本文的教导的程序一起使用,或者可证明,构造更专门的装置来执行所要求的方法步骤,是方便的。各种这些系统的必需结构将从本文的描述中显现。此外,某些实施例不是参考任何特定的编程语言来描述的。将会明白,可以使用各种编程语言来实现如本文所述的这种实施例的教导。
除了本文描述的以外,还可以对所公开的实施例及其实现方式做出各种修改,而不脱离其范围。因此,应当从说明意义而不是限制意义上来解释本文的说明和示例。应当仅通过参考所附权利要求来衡量本发明的范围。
Claims (25)
1.一种装置,包括:
存储器保护缓存,用于存储用于非主机存储器的存储器保护信息;以及
与所述存储器保护缓存耦合的电路,用于基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
2.如权利要求1所述的装置,其中,所述电路还用于:
将所存储的存储器保护信息与主机的存储器保护单元进行同步。
3.如权利要求2所述的装置,其中,所述电路还用于:
在没有所述主机干预的情况下提供对所述非主机存储器的安全直接对等存储器访问。
4.如权利要求2至3中任一项所述的装置,其中,所述电路还用于:
基于存储在所述存储器保护缓存中的存储器保护信息来阻止或允许对所述非主机存储器的直接对等存储器访问请求。
5.如权利要求2至3中任一项所述的装置,其中,所述电路还用于:
确定所述已转化访问请求是否来自所述主机;并且,如果确定是,
则绕过对所述已转化访问请求的所述一个或多个存储器保护检查。
6.如权利要求2至3中任一项所述的装置,其中,所述电路还用于:
基于在所述已转化访问请求中接收到的信息来确定所述已转化访问请求是否未命中所述存储器保护缓存;并且,如果确定是,
则请求所述主机的存储器保护单元为所述已转化访问请求填充存储器保护信息。
7.如权利要求6所述的装置,其中,所述电路还用于:
通知请求者重试未命中所述存储器保护缓存的已转化访问请求,以及保持信息。
8.一种集成电路,包括用于执行以下操作的电路:
在输入/输出存储器保护单元(IO-MPU)中存储用于主机存储器的存储器保护信息;以及
将所存储的存储器保护信息与通信地耦合到主机的设备的存储器保护缓存(MPC)进行同步。
9.如权利要求8所述的集成电路,其中,所述电路还用于:
在所述IO-MPU处接收来自所述设备的MPC填充请求。
10.如权利要求9所述的集成电路,其中,所述电路还用于:
响应于所述MPC填充请求而在所述IO-MPU处执行主机权限表游查并且验证访问权限;以及
以MPC填充响应的形式从所述IO-MPU向所述设备返回信息。
11.如权利要求8至10中任一项所述的集成电路,其中,所述电路还用于:
在所述IO-MPU处接收来自系统软件的使MPC信息无效的请求。
12.如权利要求11所述的集成电路,其中,所述电路还用于:
响应于所述请求而向所述设备生成MPC无效请求;以及
接收来自所述设备的MPC无效响应。
13.如权利要求12所述的集成电路,其中,所述电路还用于:
执行以下操作中的一个或多个:更新跟踪信息,以及通知所述系统软件关于所述MPC无效响应。
14.如权利要求13所述的集成电路,其中,所述主机存储器包括系统存储器。
15.一种方法,包括:
在存储器保护缓存中存储用于非主机存储器的存储器保护信息;以及
基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
16.如权利要求15所述的方法,还包括:
将所存储的存储器保护信息与主机的存储器保护单元进行同步。
17.如权利要求16所述的方法,还包括:
在没有所述主机干预的情况下提供对所述非主机存储器的安全直接对等存储器访问。
18.如权利要求16至17中任一项所述的方法,还包括:
对于针对所述非主机存储器的已转化访问请求,绕过所述主机的根端口。
19.如权利要求16至17中任一项所述的方法,还包括:
确定所述已转化访问请求是否来自所述主机;并且,如果确定是,
则绕过对所述已转化访问请求的所述一个或多个存储器保护检查。
20.如权利要求16至17中任一项所述的方法,还包括:
基于在所述已转化访问请求中接收到的信息来确定所述已转化访问请求是否未命中所述存储器保护缓存;并且,如果确定是,
则请求所述主机的存储器保护单元为所述已转化访问请求填充存储器保护信息。
21.如权利要求20所述的方法,还包括:
通知请求者重试未命中所述存储器保护缓存的已转化访问请求,以及保持信息。
22.至少一种非暂态机器可读介质,其包括多个指令,所述多个指令响应于在计算设备上被执行,使得所述计算设备执行以下操作:
在存储器保护缓存中存储用于非主机存储器的存储器保护信息,以及
基于所存储的存储器保护信息来对针对所述非主机存储器的已转化访问请求执行一个或多个存储器保护检查。
23.如权利要求22所述的至少一种非暂态机器可读介质,包括多个另外指令,所述另外指令响应于在所述计算设备上被执行,使得所述计算设备执行以下操作:
将所存储的存储器保护信息与主机的存储器保护单元进行同步。
24.如权利要求23所述的至少一种非暂态机器可读介质,包括多个另外指令,所述另外指令响应于在所述计算设备上被执行,使得所述计算设备执行以下操作:
在没有所述主机干预的情况下提供对所述非主机存储器的安全直接对等存储器访问。
25.如权利要求23至24中任一项所述的至少一种非暂态机器可读介质,包括多个另外指令,所述另外指令响应于在所述计算设备上被执行,使得所述计算设备执行以下操作:
对于针对所述非主机存储器的已转化访问请求,绕过所述主机的根端口。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/352,631 | 2021-06-21 | ||
US17/352,631 US20220405212A1 (en) | 2021-06-21 | 2021-06-21 | Secure direct peer-to-peer memory access requests between devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115577402A true CN115577402A (zh) | 2023-01-06 |
Family
ID=84283467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210427061.0A Pending CN115577402A (zh) | 2021-06-21 | 2022-04-22 | 设备之间的安全直接对等存储器访问请求 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220405212A1 (zh) |
CN (1) | CN115577402A (zh) |
DE (1) | DE102022107196A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023004229A1 (en) * | 2021-07-18 | 2023-01-26 | Elastics.cloud, Inc. | Composable infrastructure enabled by heterogeneous architecture, delivered by cxl based cached switch soc and extensible via cxloverethernet (coe) protocols |
US11914543B2 (en) | 2021-12-06 | 2024-02-27 | Arm Limited | PCIe communications |
US11741021B2 (en) * | 2022-01-18 | 2023-08-29 | Vmware, Inc. | Trust domains for peripheral devices |
US20240045804A1 (en) * | 2022-08-01 | 2024-02-08 | Memverge, Inc. | Cache coherency for shared memory |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4648030A (en) * | 1983-09-22 | 1987-03-03 | Digital Equipment Corporation | Cache invalidation mechanism for multiprocessor systems |
US8706942B2 (en) * | 2004-12-29 | 2014-04-22 | Intel Corporation | Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices |
US20190042455A1 (en) * | 2018-05-04 | 2019-02-07 | Intel Corporation | Globally addressable memory for devices linked to hosts |
US11392511B2 (en) * | 2019-09-25 | 2022-07-19 | Intel Corporation | Secure address translation services using a permission table |
US11567803B2 (en) * | 2019-11-04 | 2023-01-31 | Rambus Inc. | Inter-server memory pooling |
-
2021
- 2021-06-21 US US17/352,631 patent/US20220405212A1/en active Pending
-
2022
- 2022-03-28 DE DE102022107196.0A patent/DE102022107196A1/de active Pending
- 2022-04-22 CN CN202210427061.0A patent/CN115577402A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102022107196A1 (de) | 2022-12-22 |
US20220405212A1 (en) | 2022-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106575218B (zh) | 持久性存储屏障处理器、方法、系统和指令 | |
CN106708753B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
US9471494B2 (en) | Method and apparatus for cache line write back operation | |
CN115577402A (zh) | 设备之间的安全直接对等存储器访问请求 | |
CN108268385B (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
CN106293626B (zh) | 持久性提交处理器、方法、装置、制品和电子设备 | |
US9886397B2 (en) | Load and store ordering for a strongly ordered simultaneous multithreading core | |
US10547680B2 (en) | Systems, methods, and apparatuses for range protection | |
CN109661656B (zh) | 用于利用条件所有权请求的智能存储操作的方法和装置 | |
US9207940B2 (en) | Robust and high performance instructions for system call | |
US10387072B2 (en) | Systems and method for dynamic address based mirroring | |
US20210073129A1 (en) | Cache line demote infrastructure for multi-processor pipelines | |
US9418024B2 (en) | Apparatus and method for efficient handling of critical chunks | |
US20190370038A1 (en) | Apparatus and method supporting code optimization | |
EP3910482B1 (en) | Apparatus and method for processing efficient multicast operation | |
CN115934584A (zh) | 设备私有存储器中的存储器访问跟踪器 | |
CN115481053A (zh) | 对共享存储器区域的独立地受控的dma和cpu访问 | |
US20230418773A1 (en) | Device, system, and method for inspecting direct memory access requests | |
CN114661626A (zh) | 用于选择性地丢弃软件预取指令的设备、系统和方法 | |
US20170371701A1 (en) | Apparatuses, methods, and systems for granular and adaptive hardware transactional synchronization | |
CN114661635A (zh) | 具有错误时并行解压缩的经压缩的高速缓存存储器 | |
US10528470B1 (en) | System, apparatus and method to suppress redundant store operations in a processor | |
CN113885943A (zh) | 处理单元、片上系统、计算装置及方法 | |
US20230409197A1 (en) | Pasid granularity resource control for iommu | |
US20220414022A1 (en) | Apparatus, system, and method for secure memory access control |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |