CN107430553B - 用于存储器管理单元的命令驱动转换预取 - Google Patents
用于存储器管理单元的命令驱动转换预取 Download PDFInfo
- Publication number
- CN107430553B CN107430553B CN201680014533.2A CN201680014533A CN107430553B CN 107430553 B CN107430553 B CN 107430553B CN 201680014533 A CN201680014533 A CN 201680014533A CN 107430553 B CN107430553 B CN 107430553B
- Authority
- CN
- China
- Prior art keywords
- mmu
- address
- instruction
- prefetched
- conversion
- 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.)
- Expired - Fee Related
Links
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/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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- 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/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- 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/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了用于预取装置的存储器管理单元MMU中的地址转换的方法和系统。在一实施例中,所述MMU从所述装置的上游组件接收预取命令,所述预取命令包含指令的地址;从所述装置的存储器中的转换表预取所述指令的转换;以及将所述指令的所述转换存储在与所述MMU相关联的转换高速缓冲存储器中。
Description
技术领域
本公开的实施例涉及用于存储器管理单元的命令驱动转换预取。
背景技术
系统芯片(SoC)装置可包含一或多个中心处理器、一或多个互连件(或总线)、一或多个周边装置(或上游装置)和一或多个从属装置。此类SoC装置可进一步包含耦合到处理器的存储器管理单元(MMU)以及耦合到一或多个周边装置的一或多个系统MMU(SMMU)。SMMU以与处理器的MMU转换处理器内存存取的地址大致相同的方式提供用于周边装置业务的地址转换服务。
MMU的主要功能包含地址转换、内存保护和属性控制。地址转换是输入地址向输出地址的转换。转换信息存储于MMU参考以执行地址转换的转换表中。MMU可将完整的转换存储于转换高速缓冲存储器中以避免在下次接收到至同一存储器块的输入地址时存取所述转换表。
MMU转换高速缓冲存储器中的需求遗漏对系统性能和系统成本有负面影响,例如,导致存储器时延(延迟)增加、带宽利用减少以及用以隐藏延迟的缓冲增加。将此类需求遗漏的数量减到最少的当前解决方案包含尝试“预测”将来需要什么转换并且将其置于转换高速缓冲存储器中。具体地,这些解决方案预测将来需要先前使用的和邻近的转换。为了使此预测方案较好地执行,需要较高程度的时间/空间局部性。在空间/时间局部性受限的情况下,预测通常不准确,且因此导致预测方案执行不佳。
发明内容
下文呈现与同本文所公开的用于存储器管理单元的命令驱动转换预取的机制相关联的一或多个方面和/或实施例相关的简要概述。由此,不应将以下概述视为与所有预期方面和/或实施例相关的广泛概述,也不应认为以下概述识别与所有预期方面和/或实施例相关的关键或到关重要的要素,或描绘与任何特定方面和/或实施例相关联的范围。因此,以下概述具有以下唯一目的:以简化形式呈现和与本文中所公开的机构相关的一或多个方面及/或实施例相关的某些概念以先于下文呈现的具体实施方式。
一种预取装置的MMU中的地址转换的方法包含:通过所述MMU从所述装置的上游组件接收预取命令,所述预取命令包含指令的地址;通过所述MMU从所述装置的存储器中的转换表预取所述指令的转换;以及通过所述MMU将所述指令的所述转换存储在与所述MMU相关联的转换高速缓冲存储器中。
一种用于预取装置的MMU中的地址转换的设备包含:配置成从所述装置的上游组件接收预取命令的逻辑,所述预取命令包含指令的地址;配置成从所述装置的存储器中的转换表预取所述指令的转换的逻辑;以及配置成将所述指令的所述转换存储在与所述MMU相关联的转换高速缓冲存储器中的逻辑。
一种用于预取装置的MMU中的地址转换的设备包含:用于通过所述MMU从所述装置的上游组件接收预取命令的装置,所述预取命令包含指令的地址;用于通过所述MMU从所述装置的存储器中的转换表预取所述指令的转换的装置;以及用于通过所述MMU将所述指令的所述转换存储在与所述MMU相关联的转换高速缓冲存储器中的装置。
一种用于预取装置的MMU中的地址转换的非暂时性计算机可读媒体包含:从所述装置的上游组件接收预取命令的至少一个指令,所述预取命令包含指令的地址;从所述装置的存储器中的转换表预取所述指令的转换的至少一个指令;以及将所述指令的所述转换存储在与所述MMU相关联的转换高速缓冲存储器中的至少一个指令。
所属领域的技术人员基于附图和具体实施方式将明白与本文中所公开的机制相关联的其它目标和优点。
附图说明
由于在结合附图考虑时通过参考以下详细描述更好地理解本公开实施例及其许多附带优点,因此将容易获得对本公开实施例及其许多附带优点的更全面了解,所述附图只是为了说明而不是限制本公开而呈现,且其中:
图1说明根据本公开的实施例的无线通信系统的高级系统架构。
图2说明根据本公开的一个方面的可用于操作环境中的示范性移动装置,其可使用无线技术来确定位置。
图3说明根据本公开的实施例的服务器。
图4A和4B说明根据本公开的各种方面的示范性系统。
图5说明根据本公开的一方面的地址转换中涉及的步骤。
图6说明根据本公开的一方面的示范性转换高速缓冲存储器条目。
图7说明根据本公开的一方面的示范性预取程序。
图8说明根据本公开的一方面的用于中央处理器的示范性处理器指令。
图9说明根据本公开的一方面的示范性指令集。
图10说明根据本公开的一方面的示范性转换后备缓冲器(TLB)预取指令。
图11说明根据本公开的一方面的后续TLB预取地址的实例描述。
图12说明根据本公开的一方面的用于预取MMU中的地址转换的示范性流程。
图13为配置成支持如本文教示的通信的设备的若干样本方面的另一简化框图。
具体实施方式
本文公开了用于预取装置的存储器管理单元(MMU)中的地址转换的方法和系统。在一实施例中,MMU从所述装置的上游组件接收预取命令,所述预取命令包含指令的地址;从所述装置的存储器中的转换表预取所述指令的转换;且将所述指令的所述转换存储在与所述MMU相关联的转换高速缓冲存储器中。
本公开的这些和其它方面描述于针对本公开的具体实施例的以下描述和相关附图中。可在不脱离本公开范围的情况下设计替代性实施例。另外,将不会详细描述本公开的众所周知的元件,或将省略所述元件,以免混淆本公开的相关细节。
本文使用词语“示范性”和/或“实例”来意指“充当实例、例子或说明”。本文中描述为“示范性”和/或“实例”的任何实施例未必应理解为比其它实施例优选或有利。同样,术语“本公开的实施例”并不要求本公开的所有实施例包含所论述的特征、优点或操作模式。
此外,依据待由(例如)计算装置的元件执行的动作的序列来描述某些实施例。将认识到,本文中所描述的各种动作可由特定电路(例如,专用集成电路(ASIC))、由通过一或多个处理器执行的程序指令或由所述两者的组合来执行。另外,本文中所描述的这些动作序列可被视为全部在任何形式的计算机可读存储媒体内体现,所述计算机可读存储媒体中存储有对应的计算机指令集,所述计算机指令在执行时将使得相关联的处理器执行本文中所描述的功能性。因此,本公开的各种方面可以多种不同形式来体现,预期其全部属于所主张的主题的范围内。另外,对于本文中所描述的实施例中的每一者来说,任何此类实施例的对应形式可在本文中被描述为(例如)“经配置以(执行所描述的动作)的逻辑”。
通常,除非明确地另外陈述,否则如贯穿本公开所使用的短语“经配置以……的逻辑”希望调用至少部分用硬件实施的实施例,且不希望映射到独立于硬件的仅软件实施方案。并且,将了解,各种块中的经配置逻辑或“经配置以……的逻辑”不限于特定逻辑门或元件,而一般指执行本文中所描述的功能性的能力(经由硬件抑或硬件与软件的组合)。因此,如各种块中所说明的经配置逻辑或“经配置以……的逻辑”尽管共享词语“逻辑”,但其未必实施为逻辑门或逻辑元件。对于所属领域的一般技术人员来说,通过审阅下文更详细描述的实施例,各种块中的逻辑之间的其它交互或协作将变得显而易见。
在本文中被称作用户设备(UE)的客户端装置可以是移动的或固定的,且可以与无线电接入网络(RAN)通信。如本文中所使用,术语“UE”可以可互换地被称作“接入终端”或“AT”、“无线装置”、“订户装置”、“订户终端”、“订户台”、“用户终端”或UT、“移动终端”、“移动台”及其变体。通常,UE可以经由RAN与核心网络通信,且通过核心网络,UE可以与因特网等外部网络连接。当然,对于UE来说,连接到核心网络和/或因特网的其它机制也是可能的,例如经由有线接入网络、WiFi网络(例如,基于IEEE 802.11等)等等。UE可通过许多类型的装置中的任一者来体现,所述装置包含(但不限于)PC卡、紧凑式闪存装置、外部或内部调制解调器、无线或有线电话,等等。UE可通过其向RAN发送信号的通信链路被称为上行链路信道(例如,反向业务信道、反向控制信道、接入信道等)。RAN可通过其向UE发送信号的通信链路被称为下行链路或前向链路信道(例如,寻呼信道、控制信道、广播信道、前向业务信道等)。如本文中所使用,术语业务信道(TCH)可指上行链路/反向抑或下行链路/前向业务信道。
图1说明根据本公开的实施例的无线通信系统100的高级系统架构。无线通信系统100含有UE 1……N。UE 1……N可包含蜂窝式电话(包含“智能电话”)、个人数字助理(PDA)、寻呼机、膝上型计算机、平板计算机、台式计算机等。举例来说,在图1中,UE 1……2被说明为蜂窝式呼叫电话,UE 3……5被说明为蜂窝式触摸屏电话或“智能电话”,且UE N被说明为台式计算机或PC。
参看图1,UE 1……N经配置以经由物理通信接口或层(图1中被展示为空中接口104、106、108)及/或直接有线连接而与接入网络(例如,RAN 120、接入点125等等)通信。空中接口104和106可符合给定蜂窝式通信协议(例如,CDMA、EVDO、eHRPD、GSM、EDGE、W-CDMA、LTE等),而空中接口108可符合无线IP协议(例如,IEEE 802.11)。RAN 120包含经由空中接口(例如,空中接口104和106)而服务于UE的多个接入点。RAN 120中的接入点可以被称作接入节点或AN、接入点或AP、基站或BS、节点B、eNode B等等。这些接入点可为地面接入点(或地面站)或卫星接入点。RAN 120经配置以连接到核心网络140,所述核心网络可执行多种功能,包含桥接由RAN 120服务的UE与由RAN 120或完全不同RAN服务的其它UE之间的电路交换(CS)呼叫,且也可调解包交换(PS)数据与例如因特网175的外部网路的交换。因特网175包含许多路由代理和处理代理(为方便起见,图1中未展示)。在图1中,将UE N示出为直接连接到因特网175(即,例如经由WiFi或基于802.11的网络等以太网连接而与核心网络140分离)。因特网175可由此用以经由核心网络140桥接UE N与UE 1……N之间的包交换数据通信。图1中还展示与RAN 120分开的接入点125。接入点125可独立于核心网络140连接到因特网175(例如,经由例如FiOS的光通信系统、线缆调制解调器等)。空中接口108可经由本地无线连接(例如,在一实例中为IEEE 802.11)而服务UE 4或UE 5。UE N被展示为台式计算机,其具有到因特网175的有线连接,例如到调制解调器或路由器的直接连接,在一实例中调制解调器或路由器可对应于接入点125自身(例如,对于具有有线连接性及无线连接性两者的WiFi路由器)。
参看图1,将服务器170示出为连接到因特网175、核心网路140,或两者。服务器170可实施为多个结构上分开的服务器,或可替代性地对应于单一服务器。如下文将更详细地描述,服务器170经配置以支持用于可经由核心网络140和/或因特网175连接到服务器170的UE的一或多个通信服务(例如,因特网协议话音(VoIP)会话、即按即说(PTT)会话、群组通信会话、社交联网服务等),和/或将内容(例如,网页下载)提供到UE。
本公开的各种实施例可实施于多种装置中的任一个上,例如图2中的移动装置200。移动装置200可对应于图1中的UE 1……N中的任一个。参考图2,为简单起见,图2的框图中说明的各种特征和功能使用共同总线216连接在一起以表示这些各种特征和功能以操作方式耦合在一起。所属领域的技术人员将认识到,必要时可提供并调适其它连接、机制、特征、功能等来以操作方式耦合并配置实际便携式无线装置。此外,还认识到,图2的实例中说明的特征或功能中的一或多个可以进一步细分,或图2中说明的特征或功能中的两个或更多个可以组合。
虽然移动装置(例如,移动装置200)的内部组件可通过不同硬件配置体现,但在图2中展示内部硬件组件的基础高级移动装置配置。移动装置200可包含一或多个广域网(WAN)收发器204,其可连接到一或多个天线202。WAN收发器204包括用于与图1中的RAN 120通信和/或检测到/来自RAN 120的信号、和/或直接与网络内的其它移动装置通信的合适的装置、硬件和/或软件。在一个方面中,WAN收发器204可包括适合于与无线基站的CDMA网络通信的CDMA通信系统;但是,在其它方面中,无线通信系统可包括另一种类型的蜂窝式电话网络,例如TDMA或GSM。另外,可使用任何其它类型的广域无线联网技术,例如WiMAX(IEEE802.16)等。移动装置200还可包含一或多个局域网(LAN)收发器206,其可连接到一或多个天线202。LAN收发器206包括用于与图1中的接入点125通信和/或检测到/来自接入点125的信号、和/或直接与网络内的其它移动装置通信的合适的装置、硬件和/或软件。在一个方面中,LAN收发器206可包括适合于与一或多个无线接入点通信的Wi-Fi(802.11x)通信系统;然而在其它方面中,LAN收发器206包括另一类型的局域网、个人局域网(例如,蓝牙)。另外,可使用任何其它类型的无线联网技术,例如超宽带、ZigBee、无线USB等。
如本文中所使用,缩写的术语“无线接入点”(WAP)可以用于指接入点125和/或RAN120。具体地,在下文呈现的描述中,当使用术语“WAP”时,应理解,实施例可包含可利用来自多个接入点125、多个RAN 120或两者的任何组合的信号的移动装置200。移动装置200利用的WAP的特定类型可取决于操作环境。此外,移动装置200可在各种类型的WAP之间进行动态选择,以便达成准确的位置解决方案。在其它实施例中,各种网络元件可以对等方式操作,借此,例如,可用WAP来代替移动装置200,或反过来也一样。其它对等实施例可包含代替一或多个WAP起作用的另一移动装置(未图示)。
SPS接收器208还可包含于移动装置200中。SPS接收器208可连接到一或多个天线202以用于接收卫星信号。SPS接收器208可以包括用于接收和处理SPS信号的任何合适硬件和/或软件。SPS接收器208在适当时从其它系统请求信息和操作,并使用由任何合适的SPS算法获得的测量结果来执行确定移动装置200的位置所必需的计算。
运动传感器212可以耦合到处理器210以提供移动和/或定向信息,所述信息与从由WAN收发器204、LAN收发器206和SPS接收器208接收到的信号导出的运动数据无关。借助于实例,运动传感器212可利用加速度计(例如,MEMS装置)、陀螺仪、地磁传感器(例如,指南针)、高度计(例如,气压高度计)和/或任何其它类型的移动检测传感器。此外,运动传感器212可以包含多个不同类型的装置且组合其输出以便提供运动信息。举例来说,运动传感器212可以使用多轴加速度计和定向传感器的组合以提供计算二维和/或三维坐标系统中的位置的能力。
处理器210可经由总线216连接到WAN收发器204、LAN收发器206、SPS接收器208以及运动传感器212。处理器210可包含提供处理功能以及其它计算和控制功能性的一或多个微处理器、微控制器和/或数字信号处理器。处理器210还可耦合到用于存储数据和软件指令的存储器214,所述软件指令用于执行移动装置200内的经编程功能性。存储器214可在处理器210上(例如,在同一IC封装内),且/或所述存储器可为处理器外部的存储器并且经由共同总线216(或其它数据总线)功能性地耦合。
移动装置200可包含用户接口218,其提供任何合适的接口系统,例如,允许用户与移动装置200交互的麦克风/扬声器220、小键盘222和显示器224。麦克风/扬声器220提供使用WAN收发器204和/或LAN收发器206的语音通信服务。小键盘222包括用于用户输入的任何合适按钮。显示器224包括任何合适的显示器(例如,背光式LCD显示器),并且可进一步包含用于额外用户输入模式的触摸屏显示器。
如本文所使用,移动装置200可为可经配置以获取从一或多个无线通信装置或网络发射的无线信号且向一或多个无线通信装置或网络发射无线信号的任何便携式或可移动装置或机器。如图2中所示,移动装置200表示此类便携式无线装置。因此,作为实例而非限制,移动装置200可包含无线电装置、蜂窝式电话装置、计算装置、个人通信系统(PCS)装置或其它相似的可移动的装备有无线通信的装置、器具或机器。并且,“移动装置”既定包含所有装置,包含无线装置、计算机、膝上型计算机等,所述装置能够(例如)经由因特网、Wi-Fi或其它网络与服务器通信,并且不管卫星信号接收、辅助数据接收和/或位置相关的处理是在装置处、在服务器处还是在与网络相关联的另一装置处发生。上述各项的任何可操作组合也被视为“移动装置”。
各种实施例还可在多种市售服务器装置中的任一个上实施,例如图3中说明的服务器300。在一实例中,服务器300可对应于图1中的服务器170的一个实例配置。在图3中,服务器300包含耦合到易失性存储器302和例如磁盘驱动器303的大容量非易失性存储器的处理器301。服务器300还可包含耦合到处理器301的软盘驱动器、压缩光盘(CD)或DVD光盘驱动器306。服务器300还可包含网络接入端口304,其耦合到处理器301以用于建立与网络307(例如,耦合到其它广播系统计算机及服务器或耦合到因特网的局域网)的数据连接。
下表提供贯穿本公开所使用的某些术语的定义:
表1-术语和定义
图4A到B说明根据本公开的一方面的示范性系统400A和400B。系统400A/400B可并入图2中的移动装置200或图3中的服务器300中。系统400A/400B的组件包含一或多个中央处理器,例如处理器402(其可对应于图2中的处理器210或图3中的处理器301);一或多个互连件(或总线),例如互连件412和414(其可对应于图2中的总线216);一或多个周边装置(或上游装置),例如装置A-C 410A-C;以及一或多个从属装置,例如存储器406(其可对应于图2中的存储器214或图3中的易失性存储器302和/或磁盘驱动器303)以及从属装置408。存储器406可包含可由MMU 404、SMMU 416和/或SMMU 418存取以提取地址转换的转换表422,如本文中所描述。装置A-C 410A-C可包含装置(例如图2中的移动装置200)的任何其它组件,其从MMU 404/SMMU 416、418的角度为“上游”的。也就是说,装置A-C 410A-C可为体现系统400A/400B的装置的任何组件,MMU 404/SMMU 416、418从所述组件接收命令/指令,所述组件例如图形处理单元(GPU)、数字信号处理器(DSP)、周边组件高速互连(PCIe)根联合体、USB接口、LAN接口、通用异步接收器/发射器(UART)等。从属装置408可为体现系统400A/400B的装置的任何“下游”组件,所述组件接收来自MMU 404/SMMU 416、418的输出。举例来说,从属装置408可包含系统寄存器、存储器映射输入/输出、装置互连件等。
如图4A/4B中所说明,MMU 404耦合到处理器402。如将了解,虽然图4A/4B说明MMU404为处理器402的一部分,但MMU 404仍可在外部耦合到处理器402。
如上所述,系统400A/400B还包含SMMU 416和418。SMMU以与处理器的MMU(例如MMU404)转换处理器内存存取的地址大致相同的方式提供用于上游装置业务的地址转换服务。如图4A/4B中所说明,每个SMMU 416/418分别包含或耦合到一或多个转换高速缓冲存储器426/428。尽管图4A/4B中未说明,但MMU 404也可包含或耦合到一或多个转换高速缓冲存储器。
参看图4A/4B,每个组件包含“S”和/或“M”,指示其相对于上游装置为“从属装置”和/或相对于下游装置为“主控装置”。如图4A/4B中所说明,SMMU(例如SMMU 416和418)驻留于系统装置的主控端口与系统从属装置之间。举例来说,如图4A/4B中所说明,SMMU 416和418驻留于装置A-C 410A-C的主控端口与系统从属装置(例如,系统互连件412)之间。
单个SMMU可服务单个周边装置或多个周边装置,这视系统拓扑、吞吐量需求等而定。图4A/4B说明实例拓扑,其中装置A 410A具有专用SMMU 416,而装置B 410B和C 410C共用SMMU 418。应注意,尽管图4A/4B中所示的箭头说明了所示组件之间的单向通信,但其仅展示经由MMU 404以及SMMU 416和418的示范性通信。如所属领域中已知,系统400A/400B中的组件之间的通信可为双向的。
MMU(例如MMU 404和SMMU 416和418)的主要功能包含地址转换、内存保护和属性控制。地址转换是输入地址向输出地址的转换。转换信息存储于MMU参考以执行地址转换的转换表中,例如图4A/4B中的转换表422。地址转换有两个主要好处。首先,其允许装置对较大物理地址空间进行定址。举例来说,32位装置(即,能够参考232个地址位置的装置)可通过MMU转换其地址,以使得其可参考更大的地址空间(例如36位地址空间或40位地址空间)。其次,其允许装置具有分配于存储器中的缓冲器的连续视图,而不管存储器缓冲器典型地片段化、物理上不连续以及跨物理存储器空间分散。
转换表(例如图4A/4B中的转换表422)含有针对一系列输入地址执行地址转换所需的信息。其由以多级“树”结构布置的一组子表构成。使用输入地址的子片段对每个子表进行编索引。每个子表由转换表描述符构成。存在三种基本类型的描述符:1)无效描述符,其不含有效信息;2)表描述符,其含有到下一级子表的基地址且可含有与在遍历期间遇到的所有后续描述符相关的转换信息(例如存取许可);以及3)块描述符,其含有用于计算最终输出地址的基输出地址以及与块描述符相关的属性/权限。
横越转换表以执行地址转换的过程被称为“转换表遍历”。通过使用输入地址的子片段以编索引至转换子表中以及在遇到块描述符之前找到下一地址来完成转换表遍历。转换表遍历由一或多个“步骤”构成。转换表遍历的每个“步骤”涉及:1)对转换表的存取,其包含读取(以及潜在地更新)转换表,以及2)更新转换表,其包含(但不限于)计算待参考的下一地址。每个步骤取决于来自遍历的前一步骤的结果。针对第一步骤,存取的第一转换表条目的地址为转换表基地址以及待转换的输入地址的一部分的函数。针对每个后续步骤,存取的转换表条目的地址为来自前一步骤的转换表条目和输入地址的一部分的函数。
在遇到块描述符且计算出最终转换状态之后完成转换表遍历。如果遇到无效的转换表描述符,那么遍历出现“错误”并且在更新页表之后必须中止或重试以使用有效的转换表描述符(块或表描述符)替换无效的转换表描述符。由转换表遍历的所有先前步骤形成的合并信息确定“转换”的最终转换状态,并且因此影响地址转换(输出地址、存取权限等)的最终结果。
地址转换为将输入地址和属性集变换为输出地址和属性(从最终转换状态导出)的过程。图5说明根据本公开的一方面的地址转换中涉及的步骤。图5中所说明的流程可由SMMU(例如图4A/4B中的SMMU 416或418)执行。
在510处,SMMU执行安全状态查询。SMMU能够在安全执行域与非安全执行域之间共享。SMMU基于传入事务的特性来确定所述事务属于哪个域。与安全状态相关联的事务能够存取安全资源和非安全资源两者。与非安全状态相关联的事务只能存取非安全资源。
在520处,SMMU执行上下文查询。每个传入事务与一“流ID”相关联。SMMU将所述“流ID”映射到一上下文。所述上下文确定SMMU将如何处理事务:1)绕过地址转换,以将默认变换应用于属性,但不发生地址转换(即,不查询转换表),2)出现错误,由此软件通常被告知错误,并且SMMU终止所述事务,使得不将其向下游发送到其既定目标,或3)执行转换,由此查询转换表以执行地址转换并定义属性。转换需要一个或两个转换上下文库的资源(分别用于单级转换和嵌套式转换)。转换上下文库定义用于转换、默认属性和权限的转换表。
在530处,SMMU执行转换表遍历。如果事务需要转换,那么查询转换表以确定对应于输入地址的输出地址和属性。如果事务映射到旁路上下文,那么不需要转换。替代地,应用默认属性且不执行地址转换。
在540处,SMMU执行权限校验。转换过程定义管控对所转换的存储器的每个区域的存取的权限。权限指示针对给定区域允许哪些类型的存取(即,读取/写入)以及针对存取是否需要较高权限级别。完成转换后,将存取的存储器的区域的所定义权限与事务的属性进行比较。如果所述权限允许与事务相关联的存取,那么允许事务向下游传播到其既定目标。如果事务没有足够权限,那么SMMU提出错误,并且不允许事务向下游传播。
在550处,SMMU执行属性控制。除地址转换之外,SMMU还管控与每个事务相关联的属性。属性将此类事物指示为存取的存储器的类型(例如,装置、正常等)、存储器区域是否可共享、指示是否应高速缓存存储器区域的提示等。SMMU通过合并/覆盖来自若干资源的信息来确定传出事务的属性,例如1)传入属性,由此传入属性通常仅在绕过转换时影响输出属性,2)SMMU寄存器中的静态编程值,和/或3)转换表条目。
在560处,SMMU应用一偏移值。每个转换表条目定义连续范围的输入地址的输出地址映射和属性。转换表可映射各种大小的输入地址范围。因此,转换表条目中指示的输出地址为所映射的范围的基输出地址。为了计算最终输出地址,基输出地址与从输入地址和范围大小确定的偏移值结合:
Output_address=base_output_address+(input_address mod range_size)
换句话说,输入和输出地址的N个最低有效位是相同的,其中N由通过给定转换表条目映射的地址范围的大小来确定。
在图5中说明的转换表遍历过程的最后一个步骤处,所得转换状态表示完整的转换。完整的转换可存储于转换高速缓冲存储器(例如图4A/4B中的转换高速缓冲存储器426/428)中,以避免在下次将至同一存储器块的输入地址发布到SMMU时必须执行转换表遍历的所有步骤。
在图5中所说明的转换表过程的任何步骤(除最后一个步骤外)处,所得转换状态表示部分完整的转换。部分完整的转换可存储于转换高速缓冲存储器中,以避免在下次将至相同(或邻近)存储器块的输入地址发布到SMMU时必须执行转换表遍历的所有相同步骤。通过执行转换遍历的剩余步骤来完成部分完整的转换。
有时被称作转换后备缓冲器(TLB)的转换高速缓冲存储器包含一或多个转换高速缓冲存储器条目。转换高速缓冲存储器存储呈以下形式中的一或多种的转换表信息:1)完全完整的转换,其含有完成转换所需的所有信息,2)部分完整的转换,其仅含有完成转换所需的部分信息,从而必须从转换表或其它转换高速缓冲存储器检索其余信息,和/或3)转换表数据。
转换高速缓冲存储器(例如图4A/4B中的转换高速缓冲存储器426/428)帮助使转换后续地址所需的平均时间减到最少:1)减少在转换过程期间存取转换表所需的存取的平均数量,和2)将转换和/或转换表信息保持在快速存储装置中。存取转换高速缓冲存储器通常比含有转换表的主存储器存储更快。具体地,参看图5,代替在530处执行转换表遍历,SMMU可执行转换高速缓冲存储器查询以确定请求的地址是否已存在于转换高速缓冲存储器中。如果是,那么SMMU可跳过530处的转换表遍历而进行到540。
图6说明根据本公开的一方面的示范性转换高速缓冲存储器条目600。转换高速缓冲存储器条目600由标签片段610和数据片段620构成。标签片段610包括在转换高速缓冲存储器的搜索(或查询)期间可与搜索比较字进行比较的一或多个字段。这些字段中的一个可为指示转换高速缓冲存储器条目600是否填入有意义的/有效信息的有效位612。其它字段可包含地址空间标识符、虚拟机ID、安全状态、异常级别和/或转换类型,所有这些共同形成“上下文信息”614。
其它字段可包含匹配地址范围616,转换高速缓冲存储器条目可(或可不)针对所述匹配地址范围保持有效转换信息。地址范围616可被编码为开始和结束地址值或通过地址和地址掩码编码。其它字段(未图示)可包含用于TLB无效用途的无效地址范围。在一些情况下,无效地址范围和匹配地址范围始终为等量的,且因此可使用相同存储装置/字段(例如地址范围616)一起表示为一个字段。
数据片段620包括含有来自转换表和/或转换过程的信息的一或多个数据子片段622。每个子片段622可存储用于以下的数据:一个1)完全完整的转换,2)部分完整的转换,或3)转换表条目。
保持完全完整的转换的数据子片段(例如数据子片段622)含有一或多个数据字段。这些字段中的一个可包含指示子片段622中存储的数据是否有效的有效位(未图示)。在仅存在一个数据子片段622的转换高速缓冲存储器条目中,通常不需要有效位,因为标签片段610中的有效位612足以指示数据子片段622是否含有有效信息。数据子片段622进一步包含由执行地址转换过程的所有步骤产生的用以编码基地址626的一个字段以及用以编码最终转换状态624的一或多个字段。所述字段可包含:1)可编码与完整的转换相关的存取权限的一或多个字段,2)可编码与完整的转换相关的存储器属性的一或多个字段,3)可编码与完整的转换相关的高速缓冲存储器属性的一或多个字段,或4)可编码与完整的转换相关的系统特定信息的一或多个字段。
保持部分完整的转换的数据子片段(例如数据子片段622)含有一或多个数据字段。这些字段中的一个可包含指示子片段中存储的数据是否有效的有效位(未图示)。在仅存在一个数据子片段的转换高速缓冲存储器条目中,通常不需要有效位,因为标签片段610中的有效位612足以指示数据子片段622是否含有有效信息。数据子片段622进一步包含由执行地址转换过程的步骤中的一或多个产生的用以编码基地址626的一个字段以及用以编码最终转换状态624的一或多个字段。所述字段可包含:1)可编码与部分完整的转换相关的存取权限的一或多个字段,2)可编码与部分完整的转换相关的存储器属性的一或多个字段,3)可编码与部分完整的转换相关的高速缓冲存储器属性的一或多个字段,或4)可编码与部分完整的转换相关的系统特定信息的一或多个字段。
保持转换表数据转换的数据子片段622可含有一或多个数据字段。这些字段中的一个可包含指示子片段622中存储的数据是否有效的有效位。在仅存在一个数据子片段的转换高速缓冲存储器条目中,通常不需要有效位,因为标签片段中含有的有效位612足以指示数据子片段622是否含有有效信息。数据子片段622可进一步包含保持/存储转换表条目的一个字段。
用于完整转换的转换高速缓冲存储器由一或多个(例如,N个)转换高速缓冲存储器条目构成,且每个转换高速缓冲存储器条目保持用于一个完整转换的信息。
MMU转换高速缓冲存储器中的需求遗漏对系统性能和系统成本有负面影响,例如,导致存储器时延(延迟)增加、带宽利用减少以及用以隐藏延迟的缓冲增加。将此类需求遗漏的数量减到最少的先前技术解决方案包含尝试“预测”将来需要什么转换并且将其置于转换高速缓冲存储器中。具体地,这些解决方案预测将来需要先前使用的和邻近的转换。这就需要较高程度的时间/空间局域性以较好地执行。预测方案易出错,且因此可能导致预测“不正确”。当空间/时间局域性受限时,预测方案也会执行不佳。
为了将需求遗漏的数量减到最少,本公开允许上游装置(例如图4A/4B中的装置A-C410A-C)通过传送命令和存储器请求两者的共享接口(图4A中的互连件412/414)或直接通过私有接口(图4B中的接口420A-B)将预取命令发布到MMU(例如SMMU 416或418)。上游装置可具有其需要的未来地址的先验知识,且可因此将预取命令发布到MMU以使MMU转换高速缓冲存储器(例如,TLB)预加载有这些未来地址的地址转换,从而避免在上游装置随后请求所述地址时转换高速缓冲存储器中的“需求遗漏”。由于所公开的机制减少(或消除)了需求遗漏的数量,因此减少了通过MMU的延迟,其使得系统性能得以改进且减少系统成本。应注意,术语“预取命令”和“预取指令”在本文中可互换地使用。
至MMU的命令可采取针对单个地址或针对多个地址发布预取的形式。针对单个地址,MMU可从存储器中的转换表预取转换,并且将所述转换载入/填充至转换高速缓冲存储器中。针对多个地址,MMU可从存储器中的转换表预取(与每个地址相关联的)转换,并且将所述转换载入/填充至转换高速缓冲存储器中。
如上文简单提及,将来自上游装置(例如图4A/4B中的装置A-C 410A-C)的命令传达到SMMU(例如图4A/4B中的SMMU 416或418)有两种方式。举例来说,可在系统总线(例如图4A中的互连件412/414)的地址信道上发送预取命令以及额外信令,所述额外信令用以区分预取命令与“正常的”读取或写入事务且指示预取命令类型和/或参数。在此情况下,预取命令可通过相同总线接口与常规读取/写入事务时间复用。地址的地址位[11:0]可(任选地)用于编码预取命令信息(例如命令类型和/或预取命令参数)。应注意,使用地址位[11:0]编码预取命令信息为提供预取命令类型和/或预取命令参数的“额外”信令的替代。
替代地,上游装置(或其它预取生成引擎)与SMMU之间可存在单独的专用预取接口,而非在系统总线(例如图4A的412/414)的地址信道上发送预取命令。这展示于图4B中,其中系统400B对应于图4A的系统400A,除了装置A 410A与SMMU 416之间的私有预取接口420A、装置410B与SMMU 418之间的私有预取接口420B以及装置410C与SMMU 418之间的私有预取接口420C。因此,在系统400B中,装置B 410B可例如直接通过私有预取接口420B而非通过互连件414将预取命令发送到SMMU 418。在此情况下,由于预取命令不通过系统总线412/414发送,因此所述预取命令不需要包含用以将其与“正常”读取或写入事务区分开的额外信令,而是仅需要包含用以指示预取命令类型和/或参数的信令。
为了在上游装置处产生预取命令,上游装置硬件可基于上游装置将(最终)产生的未来地址的先验知识而自动地自生成预取命令。即使上游装置硬件不是100%自觉未来地址,其仍可推测(或粗略估计/猜测)未来将需要的未来地址且发布“推测性”转换预取命令。
替代地,为了在上游装置处产生预取命令,(例如命令寄存器中)存取存储器映射命令的装置软件可触发命令驱动预取。举例来说,上游装置可写入转换预取命令寄存器(例如,定位于地址“B”处),其触发例如命令所指定的对地址“C”的预取。这些存储器映射命令可驻留于上游装置中或替代地在SMMU中(在此情况下,不存在从上游装置到SMMU的显式预取命令传达)。
在一实施例中,替代或除了上游装置产生预取命令,转换高速缓冲存储器预取指令可通过写入软件代码的用户插入到软件代码中,从而帮助提高软件的性能。替代地或另外,在编译程序可在指令流和/或数据流中导出未来地址的情况下,预取指令可通过编译程序插入。
图7说明根据本公开的一方面的示范性预取程序。图7中所说明的流程可由SMMU(例如图4A/4B中的SMMU 416或418)执行。此外,如下文所论述,图7中所说明的流程可由MMU(例如图4A/4B中的MMU 404)执行。在710处,SMMU从上游装置接收一或多个预取命令。预取命令指示应提取地址转换的地址(或地址的区间/集合)。
作为此步骤的延伸,上游装置可进一步将预取命令分类为“推测性的”或“非推测性的”。此信息可由SMMU使用以通过(例如)使非推测性预取命令优先于推测性预取命令来影响服务质量。如上所述,推测性预取转换是指未来可能(即,比不可能更可能)需要的转换,而非推测性预取转换是指未来肯定需要的转换。作为此步骤的进一步延伸,上游装置可进一步使用开始地址以及如何产生待转换/预取的邻近N个地址的描述符来指定一组地址,如下文参看图11所描述。
随后,在720处,SMMU转换在一或多个预取命令中指示的一或多个地址。如上文参看图5所讨论,转换步骤中的一个为首先验证转换是否已在转换高速缓冲存取器中。如果是,那么不需要做更多的转换工作且终止图7的预取程序(流程可任选地进行到760)。然而,如果必须执行转换,且在转换期间遇到出错(730),那么可(任选地)在740处默默忽略所述错误。“默默忽略”所述错误是指终止预取命令(并产生适当的命令终止响应)且不在SMMU中登入/记录与命令驱动转换预取相关的任何错误。也就是说,SMMU终止预取命令且不将错误报告发送至上游装置,从而将所述错误视为没有发生错误。应注意,在一些情况下,可基于错误的性质而忽略特定错误,或者可忽略与预取命令/指令相关的所有错误。
在750处,如果转换尚未存在于转换高速缓冲存储器中,且转换为成功的,那么SMMU用来自720的转换填充转换高速缓冲存储器。
随后,在760处,SMMU终止一或多个预取命令,并产生预取命令响应。所述预取命令未被转递且未向下游传播到系统/存储器。因此,不对与预取命令相关的预取地址执行存储器存取。预取命令响应向发布预取命令的上游装置指示接收到一或多个预取命令且(任选地)指示所述预取命令的成功/失败。
由于不需要SMMU等待来自系统(下游)存储器的响应,因此可立即将预取命令响应返回至上游装置。在单独的专用预取接口存在于上游装置与SMMU之间的情况下,可重复使用读取/写入响应信道以携载产生的预取命令响应。因此,当产生在读取/写入响应信道上发射的预取命令响应时,强制SMMU遵循总线协议和总线排序模块。
在替代实施例中,如果上游装置为能够执行来自软件的指令的“处理器”,例如图4A/4B中的处理器402,那么可将转换预取指令添加至处理器指令集以使得用户软件(或编译程序)能够机会性地将转换预取插入指令流中。在执行此指令时,将转换预取命令传达至对其进行处理的SMMU。应注意,从MMU 404的角度看处理器402为上游装置,即使MMU 404可物理地集成到处理器402中。由此,上文参考SMMU讨论的预取命令处理同样适用于集成到处理器中的MMU。
图8说明根据本公开的一方面的用于中央处理器(例如图4A/4B中的处理器402)的示范性处理器指令800。处理器指令的指令集为一或多个处理器指令的集合。处理器(例如图4A/4B中的处理器402)执行指令800或将其路由至能够执行指令800的协同处理器或实体。指令(例如指令800)含有用以编码指令/操作类型的操作代码(操作码)802以及一组零个(0)或更多个操作数804a-n。操作数804为执行指令800的过程的输入。指令800可具有零个或更多个操作数/输入804。
上述预取命令可被实施为用于采用能够接收所述指令并执行转换高速缓冲存储器预取的MMU的处理器的预取指令。图9说明根据本公开的一方面的示范性指令集900。如图9中所说明,指令集900包含1……N-1个指令910和1……M-1个预取指令920。在MMU转换高速缓冲存储器为TLB的情况下,预取指令920可为一或多个TLB预取指令。
图10说明根据本公开的一方面的示范性TLB预取指令1000A和1000B。TLB预取指令1000A和1000B可对应于图9中的预取指令920。尽管被说明为TLB预取指令,但应了解,TLB预取指令1000A和1000B可适用于任何类型的转换高速缓存存储器。
每个TLB预取指令1000A和1000B含有操作码字段1010A和1010B,其将TLB预取指令与主要指令(例如,图9中的指令910)区分开。如由TLB预取指令1000A所说明,操作码字段1010A任选地包含TLB预取操作码信息。如果需要超过一个TLB预取类型并且不存在明确的TLB操作码字段,那么需要TLB操作码。
替代地,如由TLB预取指令1000B所说明,TLB预取操作码信息可为单独的TLB操作码字段1012B。TLB操作码字段1012B通过MMU解释,且用于指示TLB预取的类型。如果需要超过一个TLB预取类型,那么需要TLB操作码。
TLB预取指令1000A和1000B进一步包含TLB预取开始地址1020A和1020B。TLB预取开始地址1020A或1020B为所需的,且指示开始TLB预取的地址。如下文参看图11所讨论,视TLB指令类型而定,MMU可按照TLB预取指令执行超过一个TLB预取。
TLB预取指令1000A和1000B进一步包含零个或更多个TLB预取操作数1030A和1030B以描述用于后续TLB预取地址的地址集合。存在用于描述后续TLB预取地址的若干种可能性,如图11中所说明。具体地,图11说明具有各种示范性TLB预取操作数(例如TLB预取操作数1030A和1030B)的可对应于TLB预取指令1000A和1000B的若干示范性TLB预取指令。
参考图11,TLB预取指令1110可仅包含TLB预取开始地址,例如TLB预取开始地址1020A或1020B。替代地,TLB预取指令1120可包含步幅计数(即TLB预取的数量)。将基于TLB操作码/指令类型暗示或固定步幅(即后续TLB预取之间的地址范围)。
作为另一替代,TLB预取指令1130可包含步幅操作数(例如后续TLB预取之间的地址范围),并且将基于TLB操作码/指令类型来暗示或固定步幅计数。
作为另一替代,TLB预取指令1140可包含步幅计数(即TLB预取的数量)以及明确的步幅值/操作数。
可结合存储器块描述符(例如开始地址、高度和宽度)来使用类似变体以发布仅与存储块相关的预取。举例来说,TLB预取指令1150可包含TLB预取开始地址以及明确的宽度、高度、步幅和步幅计数操作数。作为另一实例,TLB预取指令1160可包含TLB预取开始地址以及明确的宽度、高度和步幅操作数。作为又一实例,TLB预取指令1170可包含TLB预取开始地址以及明确的宽度、高度和步幅计数操作数。
单个预取指令可指示MMU预取单个地址或多个地址。为了预取多个地址,预取指令(或命令)可例如指示MMU预取地址1000+n*(m=4094),n=0至3。例如,为了实现这个,单个预取指令可指定参数n=步幅计数(例如,图11中的1140)或m=Stride(例如,图11中的1130)。这些参数可被提供为与预取指令一起发送至MMU及/或再使用地址位[11:0]的额外位。
图12说明用于预取MMU(例如图4A/4B中的MMU 404或SMMU 416/418)中的地址转换的示范性流程。在1210处,MMU从上游组件(例如图4A/4B中的装置410A/B/C)接收预取命令(例如图10中的TLB预取指令1000A/B)。预取命令可包含指令(例如图8中的指令800)的地址(例如图10中的TLB预取开始地址1020A/B)。预取命令还可包含指定待由MMU预取的多个目标地址的一或多个参数。上游组件可为装置的中心处理器,例如图4A/4B中的处理器402。
在一实施例中,MMU可经由共享的系统互连件(例如图4A/4B中的互连件412)耦合至上游组件。在所述情况下,预取命令可包含向MMU指示所述预取命令为预取命令的至少一个字段。MMU还可包含与预取命令相关的其它字段,并且一些字段可在与预取命令相关联的地址位[11:0]上进行编码。替代地,MMU可经由专用于在上游组件与MMU之间传达预取命令的互连件(例如图4B中的接口420A-B)耦合至上游组件。
在一实施例中,预取命令可由上游组件或软件编译程序产生。替代地,预取命令可存在于由上游组件执行的人可读软件代码中。
在一实施例中,所述指令可为预取与一或多个目标地址相关的可能为上游组件所需的转换的指令。替代地或另外,所述指令可为预取与一或多个目标地址相关的确保为上游组件所需的转换的指令。
在1220处,MMU从装置的存储器(例如图4A/4B中的存储器406)中的转换表(例如图4A/4B中的转换表422)预取指令的转换(例如,转换高速缓冲存储器条目600)。
在1230处,MMU将指令的转换存储在与MMU相关联的转换高速缓冲存储器(例如图4A/4B中的转换高速缓冲存储器426/428)中。MMU并不将预取命令转递到装置的下游组件。
尽管图12中未说明,但所述流程可进一步包含确定指令的转换是否存在于转换高速缓冲存储器中。在此情况下,1220处从转换表预取指令的转换可基于指令的转换不存在于转换高速缓冲存储器中来执行,且确定、1220处的预取以及1230处的存储可在从装置的上游组件接收到预取命令之后执行。
此外,尽管图12中未说明,但所述流程可包含确定在预取期间是否出现错误。基于在预取期间出现错误,MMU可终止预取命令的执行。另外,基于在预取期间出现错误,MMU可忽略所述错误。
更进一步地,尽管图12中未说明,但所述流程可包含终止预取命令的执行,并将指示是否成功地接收和/或执行预取命令的一或多个响应发送至上游组件。
图13说明表示为一系列互相关功能模块的实例MMU设备1300。如本文所论述,MMU设备1300包含用于接收的模块1302、用于预取的模块1304和用于存储的模块1306。这些模块可对应于MMU的硬件电路,或可为可由MMU设备1300或对应的处理器执行的软件模块。因此,图13的模块的功能性可以与本文中的教示一致的各种方式实施。在一些设计中,这些模块的功能性可被实施为一或多个电气组件/电路。在一些设计中,这些块的功能性可被实施为包含一或多个MMU组件/电路的处理系统。在一些设计中,这些模块的功能性可使用例如一或多个集成电路(例如,ASIC)的至少一部分来实施。如本文所论述,集成电路可包含处理器、软件、其它相关组件,或其某一组合。因此,不同模块的功能性可例如实施为集成电路的不同子组、实施为一组软件模块的不同子组,或其组合。并且,将了解,(例如集成电路和/或一组软件模块的)给定子组可提供多于一个模块的功能性的至少一部分。
另外,由图13表示的组件和功能以及本文所描述的其它组件和功能可使用任何合适的装置来实施。此装置也可至少部分地使用如本文教示的对应结构来实施。举例来说,上文与图13的“用于……的模块”组件结合所描述的组件也可对应于类似地指定的“用于……的装置”功能性。因此,在一些方面中,这些装置中的一或多个可使用如本文教示的处理器组件、集成电路或其它合适结构中的一或多个来实施。此外,图13中说明的各种模块可被称为“经配置以执行对应功能性的逻辑”。
所属领域的技术人员将了解,可使用多种不同技术及技艺中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
此外,所属领域的技术人员将了解,结合本文所公开的实施例而描述的各种说明性逻辑块、模块、电路和算法步骤可实施为电子硬件、计算机软件或两者的组合。为清晰地说明硬件与软件的此可互换性,上文已大体就其功能性来描述了各种说明性组件、块、模块、电路和步骤。此功能性是实施为硬件还是软件取决于特定应用和施加于整个系统的设计约束。熟练的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但这样的实施决策不应被解释为会引起脱离本公开的范围。
可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其经设计以执行本文所描述的功能的任何组合来实施或执行结合本文中所公开的实施例而描述的各种说明性逻辑块、模块和电路。通用处理器可为微处理器,但在替代方案中,处理器可为任何常规的处理器、控制器、微控制器或状态机。处理器也可实施为计算装置的组合,例如DSP和微处理器的组合、多个微处理器、与DSP核心结合的一或多个微处理器,或任何其它此类配置。
结合本文中所公开的实施例而描述的方法、序列及/或算法可直接以硬件、以由处理器执行的软件模块或以两者的组合来体现。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM,或所属领域中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成整体。处理器和存储媒体可驻留在ASIC中。ASIC可驻留于用户终端(例如,UE)中。在替代方案中,处理器和存储媒体可以作为离散组件驻留在用户终端中。
在一或多个示范性实施例中,所述功能可以在硬件、软件、固件或其任何组合中实施。如果实施于软件中,则可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体发射。计算机可读媒体包含计算机存储媒体与包含促进计算机程序从一处传送到另一处的任何媒体的通信媒体两者。存储媒体可为可由计算机存取的任何可用媒体。借助于实例而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携带或存储呈指令或数据结构的形式的所需程序代码且可由计算机存取的任何其它媒体。并且,适当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电及微波等无线技术从网站、服务器或其它远程源传输软件,那么所述同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电及微波等无线技术包含于媒体的定义中。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘通常用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
虽然前述公开内容示出本发明的说明性实施例,但应注意,在不脱离如所附权利要求书界定的本发明的范围的情况下,可以在本文中做出各种改变和修改。无需以任何特定次序来执行根据本文中所述的本公开的实施例的方法权利要求的功能、步骤及/或动作。此外,尽管可能以单数形式描述或主张本公开的元件,但除非明确陈述限于单数形式,否则也涵盖复数形式。
Claims (30)
1.一种预取装置的存储器管理单元MMU中的地址转换的方法,其包括:
通过所述MMU从所述装置的上游组件接收预取命令,所述预取命令包含指令的地址,在对所述指令的所述地址的请求被从所述上游组件接收之前,所述预取命令由所述MMU接收;
在所述MMU从所述上游组件接收对所述指令的所述地址的所述请求之前,通过所述MMU从所述装置的存储器中的转换表预取所述指令的所述地址的转换;
在所述MMU从所述上游组件接收对所述指令的所述地址的所述请求之前,通过所述MMU将所述指令的所述地址的所述转换存储在与所述MMU相关联的转换高速缓冲存储器中;以及
通过所述MMU从所述上游组件接收对所述指令的所述地址的所述请求。
2.根据权利要求1所述的方法,其进一步包括:
确定所述指令的所述地址的所述转换是否存在于所述转换高速缓冲存储器中,
其中基于所述指令的所述地址的所述转换不存在于所述转换高速缓冲存储器中来执行所述从所述转换表预取所述指令的所述地址的所述转换,且
其中在从所述装置的所述上游组件接收到所述预取命令之后执行所述确定、所述预取和所述存储。
3.根据权利要求1所述的方法,其进一步包括:
确定在所述预取期间是否出现错误;以及
基于所述预取期间出现所述错误,终止所述预取命令的执行。
4.根据权利要求3所述的方法,其进一步包括:
基于所述预取期间出现所述错误,忽略所述错误。
5.根据权利要求1所述的方法,其进一步包括:
终止所述预取命令的执行;以及
将指示是否成功地接收和/或执行所述预取命令的一或多个响应发送到所述上游组件。
6.根据权利要求1所述的方法,其中所述上游组件包括所述装置的中央处理器。
7.根据权利要求1所述的方法,其中所述预取命令包括指定由所述MMU预取的多个目标地址的一个或多个参数。
8.根据权利要求1所述的方法,其中所述MMU经由共享的系统互连件耦合到所述上游组件。
9.根据权利要求8所述的方法,其中所述预取命令包括向所述MMU指示所述预取命令为预取命令的至少一个字段。
10.根据权利要求9所述的方法,其中所述至少一个字段编码于所述预取命令的位[11:0]中。
11.根据权利要求1所述的方法,其中所述MMU经由专用于在所述上游组件与所述MMU之间传达预取命令的互连件耦合到所述上游组件。
12.根据权利要求1所述的方法,其中所述预取命令通过所述上游组件或软件编译程序产生。
13.根据权利要求1所述的方法,其中所述预取命令存在于通过所述上游组件执行的人可读软件代码中。
14.根据权利要求1所述的方法,其中所述预取命令包括预取与指令的一或多个目标地址相关的可能为所述上游组件所需的转换的指令。
15.根据权利要求1所述的方法,其中所述预取命令包括预取与指令的一或多个目标地址相关的确保为所述上游组件所需的转换的指令。
16.根据权利要求1所述的方法,其中所述MMU并不将所述预取命令转递到所述装置的下游组件。
17.一种用于预取装置的存储器管理单元MMU中的地址转换的设备,其包括:
配置成从所述装置的上游组件接收预取命令的所述MMU的逻辑电路,所述预取命令包含指令的地址,在对所述指令的所述地址的请求被从所述上游组件接收之前,所述预取命令由所述MMU接收;
配置成在所述MMU从所述上游组件接收对所述指令的所述地址的所述请求之前,从所述装置的存储器中的转换表预取所述指令的所述地址的转换的所述MMU的逻辑电路;
配置成在所述MMU从所述上游组件接收对所述指令的所述地址的所述请求之前,将所述指令的所述地址的所述转换存储在与所述MMU相关联的转换高速缓冲存储器中的所述MMU的逻辑电路;以及
配置成从所述上游组件接收对所述指令的所述地址的所述请求的所述MMU的逻辑电路。
18.根据权利要求17所述的设备,其进一步包括:
配置成确定所述指令的所述转换是否存在于所述转换高速缓冲存储器中的所述MMU的逻辑电路,
其中从所述转换表预取所述指令的所述地址的所述转换是基于所述指令的所述转换不存在于所述转换高速缓冲存储器中来执行的,且
其中在从所述装置的所述上游组件接收到所述预取命令之后执行所述确定、所述预取以及所述存储。
19.根据权利要求17所述的设备,其进一步包括:
配置成确定在所述预取期间是否出现错误的所述MMU的逻辑电路;以及
配置成基于在所述预取期间出现所述错误而终止所述预取命令的执行的所述MMU的逻辑电路。
20.根据权利要求17所述的设备,其进一步包括:
配置成终止所述预取命令的执行的所述MMU的逻辑电路;以及
配置成将指示是否成功地接收和/或执行所述预取命令的一或多个响应发送到所述上游组件的所述MMU的逻辑电路。
21.根据权利要求17所述的设备,其中所述预取命令包括指定由所述MMU预取的多个目标地址的一个或多个参数。
22.根据权利要求17所述的设备,其中所述MMU经由共享的系统互连件耦合到所述上游组件。
23.根据权利要求17所述的设备,其中所述MMU经由专用于在所述上游组件与所述MMU之间传达预取命令的互连件耦合到所述上游组件。
24.根据权利要求17所述的设备,其中所述预取命令通过所述上游组件或软件编译程序产生。
25.根据权利要求17所述的设备,其中所述预取命令存在于通过所述上游组件执行的人可读软件代码中。
26.根据权利要求17所述的设备,其中所述预取命令包括预取与指令的一或多个目标地址相关的可能为所述上游组件所需的转换的指令。
27.根据权利要求17所述的设备,其中所述预取命令包括预取与指令的一或多个目标地址相关的确保为所述上游组件所需的转换的指令。
28.根据权利要求17所述的设备,其中所述MMU并不将所述预取命令转递到所述装置的下游组件。
29.一种用于预取装置的存储器管理单元MMU中的地址转换的设备,其包括:
用于通过所述MMU从所述装置的上游组件接收预取命令的装置,所述预取命令包含指令的地址,在对所述指令的所述地址的请求被从所述上游组件接收之前,所述预取命令由所述MMU接收;
用于在所述MMU从所述上游组件接收对所述指令的所述地址的所述请求之前,通过所述MMU从所述装置的存储器中的转换表预取所述指令的所述地址的转换的装置;
用于在所述MMU从所述上游组件接收对所述指令的所述地址的所述请求之前,通过所述MMU将所述指令的所述地址的所述转换存储在与所述MMU相关联的转换高速缓冲存储器中的装置;以及
用于通过所述MMU从所述上游组件接收对所述指令的所述地址的所述请求的装置。
30.一种用于预取装置的存储器管理单元MMU中的地址转换的非暂时性计算机可读媒体,其包括:
指示所述MMU从所述装置的上游组件接收预取命令的至少一个指令,所述预取命令包含指令的地址,在对所述指令的所述地址的请求被从所述上游组件接收之前,所述预取命令由所述MMU接收;
指示所述MMU在所述MMU从所述上游组件接收对所述指令的所述地址的所述请求之前,从所述装置的存储器中的转换表预取所述指令的转换的至少一个指令;
指示所述MMU在所述MMU从所述上游组件接收对所述指令的所述地址的所述请求之前,将所述指令的所述转换存储在与所述MMU相关联的转换高速缓冲存储器中的至少一个指令;以及
指示所述MMU从所述上游组件接收对所述指令的所述地址的所述请求的至少一个指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/672,133 | 2015-03-28 | ||
US14/672,133 US9792215B2 (en) | 2015-03-28 | 2015-03-28 | Command-driven translation pre-fetch for memory management units |
PCT/US2016/019314 WO2016160182A1 (en) | 2015-03-28 | 2016-02-24 | Command-driven translation pre-fetch for memory management units |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430553A CN107430553A (zh) | 2017-12-01 |
CN107430553B true CN107430553B (zh) | 2019-01-18 |
Family
ID=55521827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680014533.2A Expired - Fee Related CN107430553B (zh) | 2015-03-28 | 2016-02-24 | 用于存储器管理单元的命令驱动转换预取 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9792215B2 (zh) |
EP (1) | EP3278228B1 (zh) |
CN (1) | CN107430553B (zh) |
WO (1) | WO2016160182A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9959214B1 (en) | 2015-12-29 | 2018-05-01 | Amazon Technologies, Inc. | Emulated translation unit using a management processor |
US10402332B2 (en) * | 2016-05-24 | 2019-09-03 | Xilinx, Inc. | Memory pre-fetch for virtual memory |
US11803325B2 (en) * | 2018-03-27 | 2023-10-31 | Micron Technology, Inc. | Specifying media type in write commands |
US10909045B2 (en) * | 2018-12-20 | 2021-02-02 | Arm Limited | System, method and apparatus for fine granularity access protection |
US10725928B1 (en) * | 2019-01-09 | 2020-07-28 | Apple Inc. | Translation lookaside buffer invalidation by range |
US11422946B2 (en) | 2020-08-31 | 2022-08-23 | Apple Inc. | Translation lookaside buffer striping for efficient invalidation operations |
US11615033B2 (en) | 2020-09-09 | 2023-03-28 | Apple Inc. | Reducing translation lookaside buffer searches for splintered pages |
CN117785738B (zh) * | 2024-02-23 | 2024-05-14 | 超睿科技(长沙)有限公司 | 页表预取方法、装置、芯片及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1139222A1 (en) * | 2000-03-31 | 2001-10-04 | Texas Instruments Incorporated | Prefetch for TLB cache |
CN1410893A (zh) * | 2002-04-09 | 2003-04-16 | 智慧第一公司 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
CN101266576A (zh) * | 2008-05-15 | 2008-09-17 | 中国人民解放军国防科学技术大学 | 一种面向数据流的Cache管理方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0752644A3 (en) | 1995-07-07 | 2001-08-22 | Sun Microsystems, Inc. | Memory management unit incorporating prefetch control |
US6128703A (en) * | 1997-09-05 | 2000-10-03 | Integrated Device Technology, Inc. | Method and apparatus for memory prefetch operation of volatile non-coherent data |
US7793067B2 (en) | 2005-08-12 | 2010-09-07 | Globalfoundries Inc. | Translation data prefetch in an IOMMU |
US8615643B2 (en) | 2006-12-05 | 2013-12-24 | Microsoft Corporation | Operational efficiency of virtual TLBs |
US8397049B2 (en) | 2009-07-13 | 2013-03-12 | Apple Inc. | TLB prefetching |
US8244978B2 (en) | 2010-02-17 | 2012-08-14 | Advanced Micro Devices, Inc. | IOMMU architected TLB support |
US9092358B2 (en) | 2011-03-03 | 2015-07-28 | Qualcomm Incorporated | Memory management unit with pre-filling capability |
US9378150B2 (en) | 2012-02-28 | 2016-06-28 | Apple Inc. | Memory management unit with prefetch ability |
KR102069273B1 (ko) | 2013-03-11 | 2020-01-22 | 삼성전자주식회사 | 시스템 온 칩 및 그 동작방법 |
WO2014143055A1 (en) | 2013-03-15 | 2014-09-18 | Intel Corporation | Mechanism for facilitating dynamic and efficient management of translation buffer prefetching in software programs at computing systems |
-
2015
- 2015-03-28 US US14/672,133 patent/US9792215B2/en not_active Expired - Fee Related
-
2016
- 2016-02-24 WO PCT/US2016/019314 patent/WO2016160182A1/en active Application Filing
- 2016-02-24 CN CN201680014533.2A patent/CN107430553B/zh not_active Expired - Fee Related
- 2016-02-24 EP EP16709211.3A patent/EP3278228B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1139222A1 (en) * | 2000-03-31 | 2001-10-04 | Texas Instruments Incorporated | Prefetch for TLB cache |
CN1410893A (zh) * | 2002-04-09 | 2003-04-16 | 智慧第一公司 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
CN101266576A (zh) * | 2008-05-15 | 2008-09-17 | 中国人民解放军国防科学技术大学 | 一种面向数据流的Cache管理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3278228A1 (en) | 2018-02-07 |
CN107430553A (zh) | 2017-12-01 |
WO2016160182A1 (en) | 2016-10-06 |
US9792215B2 (en) | 2017-10-17 |
US20160283384A1 (en) | 2016-09-29 |
EP3278228B1 (en) | 2020-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430553B (zh) | 用于存储器管理单元的命令驱动转换预取 | |
CN107636626A (zh) | 用于存储器管理单元(mmu)的转换的推测性预取 | |
CN105144122B (zh) | 外部可编程存储器管理单元 | |
EP1313012A1 (en) | Java DSP acceleration by byte-code optimization | |
US11012070B2 (en) | Electronic device and method thereof for grip recognition | |
US20170011010A1 (en) | Method for displaying web content and electronic device supporting the same | |
CN109634899A (zh) | 针对pcie进行sris模式选择的系统、方法和装置 | |
US10846228B2 (en) | Instruction cache management based on temporal locality | |
US8954676B2 (en) | Cache with scratch pad memory structure and processor including the cache | |
US20160253318A1 (en) | Apparatus and method for processing text | |
CN108196814A (zh) | 语音输入方法及相关产品 | |
CN113326094A (zh) | 宿主机的内存映射方法、装置、电子设备及计算机可读介质 | |
CN108536480A (zh) | 输入法配置方法及相关产品 | |
CN104052510A (zh) | 用于减轻宽带射频干扰的方法、装置以及系统 | |
US11068185B2 (en) | Electronic device and tethering method thereof | |
KR20160004712A (ko) | 비인가 주파수 대역에서 무선 통신하는 방법 및 이를 구현하는 전자장치 | |
EP4293502A1 (en) | Processing unit, computing device and instruction processing method | |
US9727997B2 (en) | Electronic device and method of providing handwriting animation | |
CN108011687A (zh) | 数据处理方法及装置 | |
US8862785B2 (en) | System and method for redirecting input/output (I/O) sequences | |
US20160364830A1 (en) | Asynchronous translation of computer program resources in graphics processing unit emulation | |
CN109992394B (zh) | 进程处理方法和装置、电子设备、计算机可读存储介质 | |
US20160314006A1 (en) | Method for processing dynamic language and electronic device using the same | |
CN116701299B (zh) | 一种目录管理方法及相关装置 | |
CN114879962B (zh) | 一种实现批量系统调用的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190118 Termination date: 20210224 |