CN111752863A - 用于专用地址映射的系统、设备和方法 - Google Patents
用于专用地址映射的系统、设备和方法 Download PDFInfo
- Publication number
- CN111752863A CN111752863A CN202010111385.4A CN202010111385A CN111752863A CN 111752863 A CN111752863 A CN 111752863A CN 202010111385 A CN202010111385 A CN 202010111385A CN 111752863 A CN111752863 A CN 111752863A
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- mapping
- physical address
- processor
- 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
Images
Classifications
-
- 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/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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及用于专用地址映射的系统、设备和方法。在一个示例中,设备包括:页表电路,该页表电路用于接收虚拟地址并且用于从中生成物理地址的至少一部分;以及映射规则表,该映射规则表耦合至页表电路,该映射规则表用于接收系统存储器的页的映射元数据,并基于该映射元数据来输出该页的映射规则。描述并要求保护其他实施例。
Description
技术领域
实施例涉及在处理器中执行地址映射。
背景技术
现代服务器和客户端计算平台具有多个动态随机存取存储器(DRAM)通道,这些通道形成系统存储器,并使用可配置的地址映射将物理地址映射到特定通道。但是,不幸的是,此映射在引导时是固定的,并且因此无法以专用的方式进行优化。因此,平台设计方通常会选择在一般情况下最佳地执行、但并未针对任何特定应用进行优化的地址映射规则。这种静态引导地址映射会导致单个应用级别下的次优解决方案。
附图说明
图1是包括本发明的实施例的处理器的部分的框图。
图2是根据本发明的实施例的方法的流程图。
图3是根据本发明的另一实施例的方法的流程图。
图4A是图示根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。
图4B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。
图5A与图5B图示了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。
图6是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器的框图。
图7是根据本发明的一个实施例的系统的框图。
图8是根据本发明的实施例的第一更具体的示例性系统的框图。
图9是根据本发明的实施例的第二更具体的示例性系统的框图。
图10是根据本发明的实施例的SoC的框图。
图11是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在各个实施例中,处理器被配置成用于对要从处理器提供给存储器的物理地址的至少一部分执行动态和可编程的选择性地址解码,以优化由执行中的给定应用(或此类应用的工作负荷段)进行的存储器访问。以此方式,可以为在应用执行期间发生的存储器访问实现减少的等待时间和/或增加的带宽,从而提高性能。
虽然本文在硬件电路的上下文中描述了实施例以基于从应用接收的提示信息来置换物理地址的至少某些地址位,但是应理解,本发明的范围不限于此方面并且在其他情况下,本文所述的动态专用地址映射技术可以在处理器的其他部分、系统存储器本身内执行和/或通过固件和/或软件来执行。
在处理器内,执行中的应用或其他软件使用虚拟地址(VA)发出存储访问事务(例如,读取或写入请求)。进而,在本文中通常称为存储器管理单元(MMU)的处理器硬件可以将此VA转换为物理地址(PA),该处理器硬件可以包括一个或多个转换后备缓冲器(TLB)、页表结构等。进而,该物理地址被提供给执行实际存储器访问的系统存储器(例如,动态随机存取存储器(DRAM))。通常,该地址转换方案通过首先使用页表将页地址从虚拟地址空间转换为物理地址空间来操作。进而,给定的计算平台具有(在引导时设置的)静态的物理到存储器的通道映射方案,该方案用于将所得的物理地址映射到针对系统存储器的给定存储器通道。此类物理到通道的映射方案是静态的,使得一旦在引导期间进行设置,就无法在引导周期期间进行更新。
在实施例中,可以在VA到PA转换与物理到通道映射方案之间提供附加的物理到物理地址映射。更具体地,可以执行对地址位的某个子集的一组可配置的置换,以例如基于给定的工作负荷、应用或指令的其他分组来动态地修改该物理到通道映射方案,以优化存储器访问。
在实施例中,应用可以例如在应用初始化时和/或当应用请求分配存储器的一页或多页时、将关于其存储器访问特性或其他操作参数的提示信息提供给操作系统(OS)内核或其他管理程序软件。进而,基于此信息,OS内核可以针对页设置所谓的映射元数据。进而,该映射元数据可以用于动态地控制该第三物理到物理地址映射,以实现存储器访问优化。在实施例中,该映射元数据可以被实现为一个或多个映射元位,该一个或多个映射元位在由OS内核分配时被写入页中。此类映射元位可以与关于页的其他元数据一起被存储。
下面的表1示出了在创建页时、如由内核所配置、逐页包括的示例元数据。注意,此类元数据仅在创建页时由内核写入,并且此后无法被更新。进而,该元数据的至少映射元位可以被存储在页表条目中,以在如本文所述的地址转换期间准备访问。在实施例中,映射元位可以用于置换物理地址的位的子集。
表1
PAGE_PRESENT | 页驻留在存储器中,并且没有被换出 |
PAGE_PROTNONE | 页驻留但不可访问 |
PAGE_RW | 若页可被写入则被设置 |
PAGE_USER | 若页可以从用户空间访问则被设置 |
PAGE_DIRTY | 若页被写入则被设置 |
PAGE_ACCESSED | 若页被访问则被设置 |
MAPPING BIT(S) | 在页分配时被设置 |
如上文所述,这些映射元位可以在页面创建时逐页被设置。在一些情况下,本文的动态地址映射技术可以例如,通过将这些位设置为零(其可以在OS内核的控制下执行)被禁用。
一个实施例中,经由软件接口提供的提示信息可以用于提供对特定页内步长模式的请求。在不同的示例中,应用可以指定希望利用的确切元位或可以指定要利用的页的类别,该OS可以基于系统支持的内容对其进行转换。进而,OS内核可以使用此信息来为要由应用使用的所有页设置适当的映射元位。注意,当应用访问由另一进程(例如,用于系统调用的内核)创建的页时,它会经由此类映射元位继承该进程的任何页内步长模式。
使用实施例,提供了页内映射方案,该方案可以将系统存储器的细粒度特性考虑在内。例如,可以优化系统存储器,以实现更好的等待时间、更好的带宽、或两个极端之间的变化的折衷。例如,在实施例中,可以以细粒度的方式在多个可用的存储器通道之间分配存储器业务流量。例如,对于输入/输出(I/O)工作负荷,跨此类可用的存储器通道的细粒度分布(例如,在单个高速缓存行或少量连续高速缓存行的基础上)可以优化存储器业务流量。
因此,实施例在地址映射方案中提供了软件定义的物理到存储器地址转换层。更特别地,在本文的实施例中,可能发生物理地址的页偏移部分内的一个或多个位的某种置换或变换,以提供多个交织模式中针对特定应用工作负荷可能更协调的所选择的一个交织模式。注意,在实施例中,此类映射元数据在本文中也称为映射选择位,该映射元数据可以与物理页编号一起存储在页表条目中。
现在参考图1,示出了包括本发明的实施例的处理器的部分的框图,即处理器100的涉及执行专用的地址映射的部分。如图所示,处理器100包括被配置成用于接收虚拟地址105的部分的页表电路110。在所示的实施例中,虚拟地址105可以被分为虚拟页编号部分102和页偏移部分104。在图1的实施例中,虚拟页编号部分102可以由36位形成,页偏移部分104可以由12位形成。理解本发明的范围在这方面不受限制,并且在其他实施例中虚拟地址可以采用其他宽度和形式。
在任何情况下,将虚拟页编号部分102提供给页表电路110。在实施例中,页表电路110可以包括多个分页结构,每个分页结构用于存储最近被访问的虚拟地址到物理地址转换的部分。结果,页表电路110输出形成物理地址115的部分的物理页编号部分112(进一步包括页偏移部分114)。
理解存储在页表电路110中的页表信息可以进一步包括附加信息,包括与页表中存在的转换的页相关联的元数据。为了执行如本文所述的地址置换,该页元数据可包括可用作映射选择位的每页一个或多个元位(metabits)。因此,如图1所示,页表电路110将此类映射选择位118提供给映射规则表120。尽管图1的实施例示出为单独的表结构,但在某些情况下,映射规则表120可以位于页表电路110内。在实施例中,映射规则表120可以包括多个条目,每个条目用于存储映射规则。基于所接收的映射选择位,可以访问这些多个映射规则中的给定的一个映射规则,并且将所选择的映射规则输出到置换电路130。
如图所示,置换电路130除了接收该映射规则之外,还接收页偏移部分114的部分。更具体地,置换电路130耦合以接收页偏移部分的位11:6。置换电路130可以根据该所接收的映射规则对这些位进行置换。以此方式,置换电路130输出页偏移部分114的该部分的相同值;然而,这些值根据置换重新分布,从而得到不同顺序的位。
因此,如图所示,输出物理地址150包括一组置换位,即如图所示的页偏移部分154的位11:6(其中有位到秩(r)、列(c)、通道(ch)和区块(b)的不同示例映射)。注意,页偏移部分154的高速缓存行部分不被置换。此外,包括用于标识所得到的物理地址150的行、列和区块的至少部分的位的物理页编号部分152也不被置换。
注意,VA 105的页偏移部分104不被转换,而是直接连接到经转换的物理页编号部分112以形成物理地址115。注意,映射选择位118可以从与物理页编号部分112相同的分页表结构中获得。在页偏移部分114的位11:6被置换的实施例中,最大数目的可能的置换是26个、即64个可能的置换。
因此,所得到的经变换的或经置换的物理地址150提供了物理页编号部分152,该物理页编号部分152具有常规应用的单个解码规则(其中提供行、列和区块信息),以及页偏移部分154的软件定义的可置换部分,该可置换部分可以具有一组不同解码规则中的、基于应用定向信息来选择的一个解码规则。注意,虽然各种不同的置换是可能的,但下文表2示出了实现不同性能优化的页偏移位的多种可能的重新排序。
表2
R C C C Ch B->最大带宽
R C Ch C C B->带宽
R C Ch C B C->中等带宽,中等等待时间
R C Ch B C C->最长等待时间
如表2所示,通过对用于访问行(r)、列(c)、通道(ch)或区块(b)中的一个或多个的页偏移位执行不同的置换,可以实现针对所得到的存储器访问的关于带宽和等待时间的不同性能优化。应理解,这些示例置换仅用于说明,并且许多其他置换是可能的。此外,应理解,利用此类附加的置换,还可以实现针对存储器访问的其他优化,包括针对存储器功耗的优化。应理解,虽然在图1的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
现在参考图2,所示为根据本发明的实施例的方法的流程图。如图2所示,方法200是用于控制系统存储器的专用地址映射的方法。在实施例中,方法200可以由响应于来自应用或其他源的分配请求而配置存储器页的OS内核或其他管理程序来执行。在各个实施例中,方法200可以由硬件电路、固件、软件、和/或其组合来执行。
如图所示,方法200开始于接收来自应用的对分配存储器的一个或多个页的请求(框210)。更具体地,可以针对一定数量的存储器接收该请求。除了对存储器分配的请求之外,应用可以进一步提供对关于应用的工作负荷的访问特性的标识。例如,此类访问特性可以包括关于带宽消耗、等待时间要求、功耗、可靠性等的信息。
控制接下来传到框220,在框220中,可以至少部分地基于访问特性来确定映射规则集中的映射规则。如本文所述,针对对页的页内访问可能存在多个地址映射。在实施例中,OS内核可以确定所选择的映射以最好地满足应用的访问特性。
为了实现该映射规则,可以将页的一个或多个元位设置为标识所确定的映射规则(框230)。在实施例中,1个元位到6个元位之间的元位可用于标识给定的映射规则,该给定的映射规则可被存储在如本文所述的映射规则表中。除了映射元位之外,还可以设置与页相关联的附加位来标识页属性(框240)。例如,元位可能与页驻留、访问保护信息、写入能力等有关。最后,在框250处,可以将经分配的页报告给应用。应理解,虽然在图2的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
现在参考图3,示出的是根据本发明的另一实施例的方法的流程图。如图3所示,方法300是用于在应用的执行期间形成地址的专用地址映射的方法。由此,方法300可以由处理器的地址映射电路(诸如,存储器管理单元、转换后备缓冲器和/或附加电路)执行。无论如何,方法300可以由硬件电路、固件、软件、和/或其组合来执行。
如图所示,方法300开始于从应用接收虚拟地址(框310)。应理解,可以结合存储器请求(例如,读取或写入请求)来接收该虚拟地址。可以使用页表电路从该虚拟地址获得物理地址(框320)。例如,对于64位虚拟地址,该地址的位47:12可用于从一组页表中获得物理页地址。
仍然参考图3,接下来在框330处,也可以从页表中获得页的映射元位。如上文所述,此类一个或多个映射元位可用于访问映射规则表。因此,在框340处,可以使用映射元位来访问该映射规则表以获得映射规则。例如,映射表可以包括多个条目,该多个条目中的每一个条目存储给定的映射规则。可以基于元位来对这些条目中的给定条目作出访问以获得映射规则。
仍然参考图3,接下来在框350处,该映射规则可以用于置换虚拟地址的页偏移的预定位。例如,在一个实施例中,可以根据该映射规则对虚拟地址的页偏移部分的位11:6进行置换。此后,在框360处,可以使用具有页偏移的这些置换的预定位的物理地址来访问页的给定高速缓存行。以此方式,在读取请求的上下文中,该应用提供有被请求的数据,并且进而在写入请求的上下文中,可以将写入信息写入高速缓存行。应理解,虽然在图3的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
图4A是图示根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图4B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图4A和图4B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图4A中,处理器流水线400包括取出级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也被称为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、写回/存储器写入级418、异常处置级422和提交级424。
图4B示出处理器核490,该处理器核490包括前端单元430,该前端单元430耦合到执行引擎单元450,并且前端单元430和执行引擎单元450两者都耦合到存储器单元470。核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核490可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元430包括分支预测单元432,该分支预测单元432耦合到指令高速缓存单元434,该指令高速缓存单元434耦合到指令转换后备缓冲器(TLB)436,该指令转换后备缓冲器436耦合到指令取出单元438,该指令取出单元438耦合到解码单元440。解码单元440(或解码器)可对指令进行解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元440可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核490包括用于存储某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元440中或以其他方式在前端单元430内)。解码单元440耦合至执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括重命名/分配器单元452,该重命名/分配器单元452耦合到引退单元454和一个或多个调度器单元的集合456。(多个)调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元456耦合到(多个)物理寄存器堆单元458。(多个)物理寄存器堆单元458中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆保存一个或多个不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,是将要执行的下一指令的地址的指令指针)等。在一个实施例中,(多个)物理寄存器组单元458包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元458由引退单元454重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器以及(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。引退单元454和(多个)物理寄存器堆单元458耦合到(多个)执行集群460。(多个)执行集群460包括一个或多个执行单元的集合462和一个或多个存储器访问单元的集合464。执行单元462可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可仅包括一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元456、(多个)物理寄存器堆单元458和(多个)执行集群460示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元464的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合464耦合到存储器单元470,该存储器单元470包括数据TLB单元472,该数据TLB单元472耦合到数据高速缓存单元474,该数据高速缓存单元474耦合到第2级(L2)高速缓存单元476。数据TLB单元472可以包括如本文所述的置换电路473,以基于选择映射规则来置换物理地址的预定位,以优化如本文所述的存储器访问。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元470中的数据TLB单元472。指令高速缓存单元434进一步耦合到存储器单元470中的第2级(L2)高速缓存单元476。L2高速缓存单元476耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线400:1)指令取出438执行取出级402和长度解码级404;2)解码单元440执行解码级406;3)重命名/分配器单元452执行分配级408和重命名级410;4)(多个)调度器单元456执行调度级412;5)(多个)物理寄存器堆单元458和存储器单元470执行寄存器读取/存储器读取级414;执行集群460执行执行级416;6)存储器单元470和(多个)物理寄存器堆单元458执行写回/存储器写入级418;7)各单元可牵涉到异常处置级422;以及8)引退单元454和(多个)物理寄存器堆单元458执行提交级424。
核490可支持一个或多条指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON之类的任选的附加扩展)),其中包括本文中所描述的(多条)指令。在一个实施例中,核490包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述寄存器重命名,但应当理解,寄存器重命名可在有序架构中被使用。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第1级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图5A与图5B图示了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)之一。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图5A是根据本发明的实施例的单个处理器核以及它至管芯上互连网络502的连接及其第二级(L2)高速缓存的本地子集504的框图。在一个实施例中,指令解码器500支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存506允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间的访问。尽管在一个实施例中(为了简化设计),标量单元508和向量单元510使用分开的寄存器集合(分别为标量寄存器512和向量寄存器514),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第1级(L1)高速缓存506读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集504是全局L2高速缓存的部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核对应一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集504的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集504中,并且可以与其他处理器核访问它们自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在该处理器核自身的L2高速缓存子集504中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向512位宽。
图5B是根据本发明的各实施例的图5A中的处理器核的一部分的展开图。图5B包括L1高速缓存504的L1数据高速缓存506A部分,以及关于向量单元510和向量寄存器514的更多细节。具体而言,向量单元510是16宽向量处理单元(VPU)(见16宽ALU 528),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU利用混合单元520支持对寄存器输入的混合,利用数值转换单元522A-B支持数值转换,并且利用复制单元524支持对存储器输入的复制。写掩码寄存器526允许断言所得的向量写入。
图6是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器600的框图。图6中的实线框示出具有单个核602A、系统代理610、一个或多个总线控制器单元的集合616的处理器600,而虚线框的可选附加示出具有多个核602A-N、系统代理单元610中的一个或多个集成存储器控制器单元的集合以及专用逻辑608的替代处理器600。
因此,处理器600的不同实现可包括:1)CPU,其中专用逻辑608是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核602A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核602A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核602A-N是大量通用有序核。由此,处理器600可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器,等等。处理器可以实现在一个或多个芯片上。处理器600可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层级结构包括核内的一个或多个级别的高速缓存604A-N(其中一个可以包括如本文所述的现场扫描控制器和其他电路)、一个或多个共享高速缓存单元的集合606、以及耦合至集成存储器控制器单元的集合614的外部存储器(未示出)。共享高速缓存单元的集合606可包括一个或多个中间级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合,中间级别的高速缓存诸如第2级(L2)、第3级(L3)、第4级(L4)或其他级别的高速缓存。尽管在一个实施例中,基于环的互连单元612将专用逻辑608、共享高速缓存单元的集合606以及系统代理单元610/(多个)集成存储器控制器单元614互连,但替代实施例可使用任何数量的公知技术来将此类单元互连。在一个实施例中,在一个或多个高速缓存单元606与核602A-N之间维持一致性。
在一些实施例中,核602A-N中的一个或多个能够实现多线程化。系统代理单元610包括协调和操作核602A-N的那些组件。系统代理单元610可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核602A-N以及集成图形逻辑608的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核602A-N在架构指令集方面可以是同构的或异构的;即,核602A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够仅执行该指令集的子集或者执行不同的指令集。
图7-10是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图7,所示出的是根据本发明一个实施例的系统700的框图。系统700可包括一个或多个处理器710、715,这些处理器耦合至控制器中枢720。在一个实施例中,控制器中枢720包括图形存储器控制器中枢(GMCH)790和输入/输出中枢(IOH)750(其可以在分开的芯片上);GMCH 790包括存储器控制器和图形控制器,存储器740和协处理器745耦合到该存储器控制器和图形控制器;IOH 750将输入/输出(I/O)设备760耦合到GMCH 790。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器740和协处理器745直接耦合到处理器710,并且控制器中枢720与IOH 750处于单个芯片中。
附加的处理器715的任选性在图7中通过虚线来表示。每一处理器710、715可包括本文中所描述的处理核中的一个或多个,并且可以是处理器600的某一版本。
存储器740可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢720经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接795来与(多个)处理器710、715进行通信。
在一个实施例中,协处理器745是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢720可包括集成图形加速器。
在物理资源710、715之间会存在包括架构、微架构、热、功耗特性等的一系列品质度量方面的各种差异。
在一个实施例中,处理器710执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器710将这些协处理器指令识别为具有应当由附连的协处理器745执行的类型。因此,处理器710在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器745。(多个)协处理器745接受并执行所接收的协处理器指令。
现在参考图8,所示出的是根据本发明的实施例的第一更具体的示例性系统800的框图。如图8中所示,多处理器系统800是点对点互连系统,并且包括经由点对点互连850耦合的第一处理器870和第二处理器880。处理器870和880中的每一个可以是处理器800的某一版本。在本发明的一个实施例中,处理器870和880分别是处理器710和710,而协处理器838是协处理器745。在另一实施例中,处理器870和880分别是处理器710和协处理器745。
处理器870和880示出为分别包括集成存储器控制器(IMC)单元872和882。处理器870还包括作为其总线控制器单元的一部分的点对点(P-P)接口876和878;类似地,第二处理器880包括P-P接口886和888。处理器870、880可以经由使用点对点(P-P)接口电路878、888的P-P接口850来交换信息。如图8中所示,IMC 872和882将处理器耦合到相应的存储器,即存储器832和存储器834,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器870、880可各自经由使用点对点接口电路876、894、886、898的各个P-P接口852、854来与芯片组890交换信息。芯片组890可以任选地经由高性能接口839来与协处理器838交换信息。在一个实施例中,协处理器838是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组890可经由接口896耦合到第一总线816。在一个实施例中,第一总线816可以是外围组件互连(PCI)总线、或者诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图8中所示,各种I/O设备814可连同总线桥818一起耦合到第一总线816,该总线桥816将第一总线816耦合到第二总线820。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器815耦合到第一总线816。在一个实施例中,第二总线820可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线820,这些设备包括例如键盘和/或鼠标822、通信设备827以及存储单元828,该存储单元828诸如可包括指令/代码和数据830的盘驱动器或者其他大容量存储设备。此外,音频I/O 824可耦合至第二总线820。注意,其他架构是可能的。例如,代替图8的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图9,所示为根据本发明的实施例的更具体的第二示例性系统900的框图。图8和图9中的类似元件使用类似附图标记,且在图9中省略了图8的某些方面以避免使图9的其他方面模糊。
图9图示出处理器870、880可分别包括集成存储器和I/O控制逻辑(“CL”)872和882。由此,CL 872、882包括集成存储器控制器单元,并包括I/O控制逻辑。图9示出不仅存储器832、834耦合至CL 872、882,而且I/O设备914也耦合至控制逻辑872、882。传统I/O设备915耦合至芯片组890。
现在参考图10,示出的是根据本发明的实施例的SoC 1000的框图。图10中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图10中,(多个)互连单元1002被耦合到:应用处理器1010,其包括一个或多个核的集合602A-N(包括组成高速缓存单元604A-N)以及(多个)共享高速缓存单元606;系统代理单元610;(多个)总线控制器单元616;(多个)集成存储器控制器单元614;一个或多个协处理器的集合1020,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及用于耦合到一个或多个外部显示器的显示单元1040。在一个实施例中,(多个)协处理器1020包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
本文中所公开的机制的实施例可被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图8中图示的代码830)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中所描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的表示处理器中的各种逻辑的表示性指令来实现,该表示性指令在由机器读取时使得该机器制造用于执行本文中所描述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或制造设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态的有形安排,其包括存储介质,诸如:硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中所描述的结构、电路、装置、处理器和/或系统特征。此类实施例也可被称为程序产品。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核来处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图11是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图11示出可使用x86编译器1102来编译利用高级语言1104的程序,以生成可由具有至少一个x86指令集核的处理器1106原生执行的x86二进制代码1116。具有至少一个x86指令集核的处理器1116表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的实质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1104表示可操作用于生成x86二进制代码1106(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1116上执行。类似地,图11示出可以使用替代的指令集编译器1102来编译利用高级语言1108的程序,以生成可以由不具有至少一个x86指令集核的处理器1110(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码1114。指令转换器1112用于将x86二进制代码1106转换成可以由不具有x86指令集核的处理器1114原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1110相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。由此,指令转换器1112通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1106的软件、固件、硬件或其组合。
以下示例涉及进一步的实施例。
在一个示例中,一种设备包括:页表电路,该页表电路用于从中生成物理地址的至少一部分;以及映射规则表,该映射规则表耦合至页表电路,该映射规则表用于接收系统存储器的页的映射元数据,并基于该映射元数据来输出该页的映射规则。
在示例中,内核用于至少部分地基于为其分配页的应用的存储器访问特性来写入页的映射元数据。
在示例中,该设备用于将关于存储器访问特性的提示信息提供给内核。
在示例中,该设备进一步包括置换电路,该置换电路用于基于映射规则来置换物理地址的页偏移部分的子集。
在示例中,该设备进一步包括存储器控制器,该存储器控制器用于接收包括物理地址的页偏移部分的经置换的子集的物理地址并将包括物理地址的页偏移部分的经置换的子集的物理地址发送到系统存储器,以使得能够访问该页。
在示例中,针对具有第一映射元数据的第一页,第一页的连续高速缓存行用于被存储在系统存储器的不同区块中。
在示例中,针对具有第二映射元数据的第二页,第二页的连续高速缓存行用于被存储在系统存储器的第一通道中。
在示例中,对于具有第二映射元数据的第二页,第一多个连续的高速缓存行用于被存储在系统存储器的第一通道的相同区块中。
在示例中,对于具有第三映射元数据的第三页,第二多个连续的高速缓存行用于被存储在系统存储器的第一通道的相同区块中,第二多个连续的高速缓存行大于第一多个连续的高速缓存行。
在示例中,页表电路包括用于存储针对多个页表的转换信息的存储设备,多个页表中的至少一个页表用于存储映射元数据。
在另一示例中,一种方法包括:在处理器的页表电路中,接收来自应用的虚拟地址,该虚拟地址与存储器中的页相关联;从一个或多个页表中获得针对该虚拟地址的物理地址;获得页的一个或多个映射元位;使用一个或多个映射元位访问映射规则表以获得映射规则;使用映射规则置换物理地址的页偏移部分的预定部分;以及将包括页偏移部分的经置换的预定部分的物理地址发送到存储器,以访问存储在页中的高速缓存行。
在示例中,该方法进一步包括从一个或多个页表获得一个或多个映射元位。
在示例中,一个或多个映射元位基于应用的访问特性。
在示例中,该方法进一步包括:在将页分配给应用期间,在页中写入一个或多个映射元位。
在示例中,该方法进一步包括:将具有第一值的一个或多个映射元位写入页以优化由应用对存储器的存储器访问;以及将具有第二值的一个或多个第二映射元位写入第二页以优化由第二应用对存储器的存储器访问。
在示例中,该方法进一步包括在将一个或多个映射元位写入页之后,防止对一个或多个映射元位的更新。
在另一示例中,一种计算机可读介质包括指令,该指令用于执行如以上示例中的任一项所述的方法。
在进一步示例中,一种计算机可读介质包括数据,该数据用于由至少一个机器使用以制造至少一个集成电路来执行如以上示例中的任一项所述的方法。
在又进一步示例中,一种设备包括用于执行如以上示例中的任一项所述的方法的装置。
在另一示例中,一种系统包括处理器,处理器包括:至少一个核,该至少一个核包括存储器管理单元,该存储器管理单元包括:高速缓存存储器,该高速缓存存储器用于存储多个页表的转换信息,该存储器管理单元用于接收虚拟地址的至少一部分,并用于从中生成物理地址的至少一部分;映射规则表,该映射规则表用于接收动态随机存取存储器的页的映射元数据,并基于该映射元数据来输出该页的映射规则;以及置换电路,该置换电路用于基于映射规则来置换物理地址的页偏移部分的子集。该处理器还包括:存储器控制器,该存储器控制器耦合至至少一个核,该存储器控制器用于将具有页偏移部分的经置换的子集的物理地址发送到动态随机存取存储器。该系统进一步包括耦合至处理器的动态随机存取存储器。
在示例中,内核用于至少部分地基于为其分配页的应用的存储器访问特性来写入页的映射元数据,该应用用于将关于存储器访问特性的提示信息提供给内核。
在示例中,置换电路用于基于第一映射规则来置换具有第一映射元数据的第一页的第一物理地址,以使得第一页的连续高速缓存行被存储在动态随机存取存储器的不同区块中。
在示例中,置换电路用于基于第二映射规则来置换具有第二映射元数据的第二页的第二物理地址,以使得第二页的连续高速缓存行被存储在动态随机存取存储器的第一通道中。
应理解,以上示例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文中可互换地使用。如本文中所示用,这些术语以及术语“逻辑”用来单独地或以任何组合指模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路和/或任何其他类型的物理硬件组件。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置为用于执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置、或者一种或多种机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备实行本文中所描述的方法与技术中的一者或多者。
实施例可被实现在代码中,并且可被存储在非暂态存储介质上,该非暂态存储介质具有存储于其上的指令,这些指令可以被用于将系统编程为用于执行这些指令。实施例还可被实现在数据中,并且可被存储在非暂态存储介质上,该非暂态存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行一个或多个操作。仍进一步实施例可以在包括信息的计算机可读存储介质中实现,所述计算机可读存储介质当被制造在SoC或其他处理器中时将配置SoC或其他处理器执行一个或多个操作。该存储介质可包括但不限于:任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)与静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
尽管已参照有限数量的实施例描述了本发明,但是本领域技术人员将从其中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。
Claims (26)
1.一种用于在系统中映射地址的设备,所述设备包括:
页表电路,所述页表电路用于接收虚拟地址并用于从中生成物理地址的至少一部分;以及
映射规则表,所述映射规则表耦合至所述页表电路,所述映射规则表用于接收系统存储器的页的映射元数据,并基于所述映射元数据来输出所述页的映射规则。
2.如权利要求1所述的设备,其特征在于,内核用于至少部分地基于为其分配所述页的应用的存储器访问特性来写入所述页的所述映射元数据。
3.如权利要求2所述的设备,其特征在于,所述设备用于将关于所述存储器访问特性的提示信息提供给所述内核。
4.如权利要求1所述的设备,进一步包括置换电路,所述置换电路用于基于所述映射规则来置换所述物理地址的页偏移部分的子集。
5.如权利要求4所述的设备,进一步包括存储器控制器,所述存储器控制器用于接收包括所述物理地址的所述页偏移部分的经置换的子集在内的物理地址并将包括所述物理地址的所述页偏移部分的经置换的子集的所述物理地址发送到所述系统存储器,以使得能够访问所述页。
6.如权利要求3所述的设备,其特征在于,针对具有第一映射元数据的第一页,所述第一页的连续高速缓存行用于被存储在所述系统存储器的不同区块中。
7.如权利要求6所述的设备,其特征在于,针对具有第二映射元数据的第二页,所述第二页的连续高速缓存行用于被存储在所述系统存储器的第一通道中。
8.如权利要求7所述的设备,其特征在于,针对具有所述第二映射元数据的所述第二页,第一多个连续的高速缓存行用于被存储在所述系统存储器的所述第一通道的相同区块中。
9.如权利要求8所述的设备,其特征在于,针对具有第三映射元数据的第三页,第二多个连续的高速缓存行用于被存储在所述系统存储器的所述第一通道的所述相同区块中,所述第二多个连续的高速缓存行大于所述第一多个连续的高速缓存行。
10.如权利要求1所述的设备,其特征在于,所述页表电路包括用于存储针对多个页表的转换信息的存储设备,所述多个页表中的至少一个页表用于存储所述映射元数据。
11.一种用于对存储器的地址进行映射的方法,所述方法包括:
在处理器的页表电路中,接收来自应用的虚拟地址,所述虚拟地址与存储器中的页相关联;
从一个或多个页表中获得针对所述虚拟地址的物理地址;
获得所述页的一个或多个映射元位;
使用所述一个或多个映射元位访问映射规则表以获得映射规则;
使用所述映射规则置换所述物理地址的页偏移部分的预定部分;以及
将包括所述页偏移部分的经置换的预定部分的物理地址发送到所述存储器,以访问存储在所述页中的高速缓存行。
12.如权利要求11所述的方法,进一步包括从所述一个或多个页表获得所述一个或多个映射元位。
13.如权利要求11所述的方法,其特征在于,所述一个或多个映射元位基于所述应用的访问特性。
14.如权利要求11所述的方法,进一步包括:在将所述页分配给所述应用期间,在所述页中写入所述一个或多个映射元位。
15.如权利要求14所述的方法,进一步包括:
将具有第一值的所述一个或多个映射元位写入所述页以优化由所述应用对所述存储器的存储器访问;以及
将具有第二值的一个或多个第二映射元位写入第二页以优化由第二应用对所述存储器的存储器访问。
16.如权利要求15所述的方法,进一步包括在将所述一个或多个映射元位写入所述页之后,防止对所述一个或多个映射元位的更新。
17.一种计算机可读存储介质,包括计算机可读指令,所述计算机可读指令在被执行时用于实现如权利要求11至16中任一项所述的方法。
18.一种用于对地址进行映射的系统,所述系统包括:
处理器,所述处理器包括:
至少一个核,所述至少一个核包括:
存储器管理单元,所述存储器管理单元包括:
高速缓存存储器,所述高速缓存存储器用于存储多个页表的转换信息,其中,所述存储器管理单元用于接收虚拟地址的至少一部分,并且用于从中生成物理地址的至少一部分;
映射规则表,所述映射规则表用于接收动态随机存取存储器的页的映射元数据,并基于所述映射元数据来输出所述页的映射规则;以及
置换电路,所述置换电路用于基于所述映射规则来置换所述物理地址的页偏移部分的子集;以及
存储器控制器,所述存储器控制器耦合到所述至少一个核,所述存储器控制器用于将具有所述页偏移部分的经置换的子集的所述物理地址发送到所述动态随机存取存储器;并且
所述动态随机存取存储器耦合至所述处理器。
19.如权利要求18所述的系统,其特征在于,内核用于至少部分地基于为其分配所述页的应用的存储器访问特性来写入所述页的所述映射元数据,所述应用用于将关于所述存储器访问特性的提示信息提供给所述内核。
20.如权利要求18所述的系统,其特征在于,所述置换电路用于基于第一映射规则来置换具有第一映射元数据的第一页的第一物理地址,以使得所述第一页的连续高速缓存行被存储在所述动态随机存取存储器的不同区块中。
21.如权利要求20所述的系统,其特征在于,所述置换电路用于基于第二映射规则来置换具有第二映射元数据的第二页的第二物理地址,以使得所述第二页的连续高速缓存行被存储在所述动态随机存取存储器的第一通道中。
22.一种用于在系统中映射地址的设备,所述设备包括:
页表装置,所述页表装置用于接收虚拟地址并用于从中生成物理地址的至少一部分;以及
映射规则表装置,所述映射规则表装置耦合至所述页表装置,所述映射规则表装置用于接收系统存储器的页的映射元数据,并基于所述映射元数据来输出所述页的映射规则。
23.如权利要求22所述的设备,其特征在于,内核用于至少部分地基于为其分配所述页的应用的存储器访问特性来写入所述页的所述映射元数据。
24.如权利要求23所述的设备,其特征在于,所述设备用于将关于所述存储器访问特性的提示信息提供给所述内核。
25.如权利要求22所述的设备,进一步包括置换装置,所述置换装置用于基于所述映射规则来置换所述物理地址的页偏移部分的子集。
26.如权利要求25所述的设备,进一步包括存储器控制装置,所述存储器控制装置用于接收包括所述物理地址的所述页偏移部分的经置换的子集的物理地址并将包括所述物理地址的所述页偏移部分的经置换的子集的所述物理地址发送到所述系统存储器,以使得能够访问所述页。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/367,592 US10936507B2 (en) | 2019-03-28 | 2019-03-28 | System, apparatus and method for application specific address mapping |
US16/367,592 | 2019-03-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752863A true CN111752863A (zh) | 2020-10-09 |
Family
ID=69423108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010111385.4A Pending CN111752863A (zh) | 2019-03-28 | 2020-02-24 | 用于专用地址映射的系统、设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10936507B2 (zh) |
EP (1) | EP3716080A1 (zh) |
CN (1) | CN111752863A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113239078A (zh) * | 2021-05-17 | 2021-08-10 | 国网河南省电力公司信息通信公司 | 一种基于联盟链的数据快速查询方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12019759B2 (en) * | 2021-01-07 | 2024-06-25 | Nxp B.V. | Data processing system and method for protecting data in the data processing system |
CN114185818B (zh) * | 2022-02-15 | 2022-08-02 | 摩尔线程智能科技(北京)有限责任公司 | 基于扩展页表的gpu访存自适应优化方法及装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958133B2 (en) * | 2005-04-27 | 2011-06-07 | At&T Intellectual Property Ii, L.P. | Application conversion of source data |
US7752417B2 (en) * | 2006-06-05 | 2010-07-06 | Oracle America, Inc. | Dynamic selection of memory virtualization techniques |
US7822941B2 (en) | 2006-06-05 | 2010-10-26 | Oracle America, Inc. | Function-based virtual-to-physical address translation |
US20110161597A1 (en) * | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Combined Memory Including a Logical Partition in a Storage Memory Accessed Through an IO Controller |
US8799553B2 (en) * | 2010-04-13 | 2014-08-05 | Apple Inc. | Memory controller mapping on-the-fly |
WO2012033662A2 (en) * | 2010-09-10 | 2012-03-15 | Rambus Inc. | Memory controller and method for tuned address mapping |
US9256369B2 (en) * | 2012-04-18 | 2016-02-09 | Samsung Electronics Co., Ltd. | Programmable memory controller |
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9465622B2 (en) * | 2012-10-17 | 2016-10-11 | Samsung Electronics Co., Ltd. | Application defined computing component configuration |
US20160253123A1 (en) * | 2014-03-19 | 2016-09-01 | Bruce Ledley Jacob | NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System |
US20160062911A1 (en) | 2014-08-27 | 2016-03-03 | Advanced Micro Devices, Inc. | Routing direct memory access requests in a virtualized computing environment |
US9904635B2 (en) * | 2015-08-27 | 2018-02-27 | Samsung Electronics Co., Ltd. | High performance transaction-based memory systems |
US9671970B2 (en) * | 2015-10-27 | 2017-06-06 | International Business Machines Corporation | Sharing an accelerator context across multiple processes |
US9710254B2 (en) * | 2015-10-28 | 2017-07-18 | International Business Machines Corporation | Replacing an accelerator firmware image without operating system reboot |
US20170286216A1 (en) | 2016-04-01 | 2017-10-05 | Intel Corporation | Energy efficient read/write support for a protected memory |
US10528476B2 (en) * | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Embedded page size hint for page fault resolution |
US10268585B2 (en) | 2016-06-28 | 2019-04-23 | Intel Corporation | Memory controller that forces prefetches in response to a present row address change timing constraint |
US10319461B2 (en) | 2016-06-29 | 2019-06-11 | Intel Corporation | Low-overhead mechanism to detect address faults in ECC-protected memories |
US10289847B2 (en) * | 2016-07-29 | 2019-05-14 | Qualcomm Incorporated | Updating virtual memory addresses of target application functionalities for an updated version of application binary code |
-
2019
- 2019-03-28 US US16/367,592 patent/US10936507B2/en active Active
-
2020
- 2020-01-31 EP EP20154783.3A patent/EP3716080A1/en active Pending
- 2020-02-24 CN CN202010111385.4A patent/CN111752863A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113239078A (zh) * | 2021-05-17 | 2021-08-10 | 国网河南省电力公司信息通信公司 | 一种基于联盟链的数据快速查询方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200310979A1 (en) | 2020-10-01 |
US10936507B2 (en) | 2021-03-02 |
EP3716080A1 (en) | 2020-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645135B2 (en) | Hardware apparatuses and methods for memory corruption detection | |
US10078519B2 (en) | Apparatus and method for accelerating operations in a processor which uses shared virtual memory | |
JP7416393B2 (ja) | テンソル並べ替えエンジンのための装置および方法 | |
WO2017172354A1 (en) | Hardware apparatuses and methods for memory performance monitoring | |
US9317441B2 (en) | Indexed page address translation to reduce memory footprint in virtualized environments | |
KR101787851B1 (ko) | 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법 | |
US10108554B2 (en) | Apparatuses, methods, and systems to share translation lookaside buffer entries | |
EP3550437A1 (en) | Adaptive spatial access prefetcher apparatus and method | |
EP3716080A1 (en) | System, apparatus and method for application specific address mapping | |
US20140189417A1 (en) | Apparatus and method for partial memory mirroring | |
TWI830927B (zh) | 用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體 | |
US10956327B2 (en) | Systems and methods for mitigating dram cache conflicts through hardware assisted redirection of pages (HARP) | |
US20180004681A1 (en) | Systems, Apparatuses, and Methods for Platform Security | |
US11023382B2 (en) | Systems, methods, and apparatuses utilizing CPU storage with a memory reference | |
US9229874B2 (en) | Apparatus and method for compressing a memory address | |
JP7456570B2 (ja) | 権限横断リニアプローブに対する防護のためのシステム、方法および装置 | |
US20220414022A1 (en) | Apparatus, system, and method for secure memory access control | |
WO2022271143A1 (en) | Inter-cluster shared data management in sub-numa cluster | |
CN113849427A (zh) | 用于处理器中的细粒度地址空间选择的系统、装置和方法 |
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 |