CN110235101A - 可变转换后备缓冲器(tlb)编索引 - Google Patents
可变转换后备缓冲器(tlb)编索引 Download PDFInfo
- Publication number
- CN110235101A CN110235101A CN201880006348.8A CN201880006348A CN110235101A CN 110235101 A CN110235101 A CN 110235101A CN 201880006348 A CN201880006348 A CN 201880006348A CN 110235101 A CN110235101 A CN 110235101A
- Authority
- CN
- China
- Prior art keywords
- page
- tlb
- processor
- memory
- size
- 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
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/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
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
-
- 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/656—Address space sharing
-
- 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/657—Virtual address space management
-
- 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]
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
处理器包括:转换后备缓冲器(TLB),其包括多个路,其中每个路与相应的页面大小相关联;以及处理核心,其通信地耦合到所述TLB,以:执行与虚拟存储器页面相关联的进程;识别多个路中的第一路,其中第一路与第一页面大小相关联;使用虚拟存储器页面和第一路的第一页面大小来确定索引值;使用索引值来确定第一路的第一TLB条目;以及使用存储在第一TLB条目中的存储器地址转换来将第一虚拟存储器页面转换为第一物理存储器页面。
Description
相关申请
本申请要求于2017年1月13日提交的美国临时申请号62/446,181的优先权,该临时申请的内容通过引用被并入本文。
技术领域
本公开涉及处理器,且更具体地,涉及包括转换后备缓冲器(TLB)的处理器,转换后备缓冲器包括支持可变页面大小的索引。
背景技术
处理器(例如中央处理单元(CPU))可执行包括系统软件(例如操作系统)和用户软件应用的软件应用。在处理器上执行的软件应用被称为操作系统的进程。操作系统可同时或连续地处理多个进程。进程可包括指令的执行以访问硬件存储设备(例如存储器和/或设备寄存器)。在一些实现中,进程可使用虚拟地址来访问存储设备中的位置,其中虚拟地址可与特定进程相关联。与处理器相关联的存储器管理单元可将进程特定的虚拟地址转换成与存储设备相关联的物理地址。
附图说明
从下面给出的详细描述中和从本公开的各种实施方式的附图中,本公开将被更充分地理解。然而,附图不应被理解为将本公开限制到特定的实施方式,但仅为了解释和理解。
图1示出根据本公开的实施方式的计算系统。
图2示出根据本公开的实施方式的TLB条目。
图3示出使用直接映射的TLB来确定真实地址。
图4示出根据本公开的实施方式的包括指示TLB条目是否是所有进程所共有的标记的TLB条目。
图5示出根据本公开的实施方式的包括用于设置不同的TLB方案的控制寄存器502的计算系统。
图6是示出根据本公开的实施方式的用于使用控制来使路与页面大小相关联的方法的方框图。
具体实施方式
在一些实现中,处理器可支持可使用虚拟地址的公共范围(被称为虚拟地址空间)的多个进程的执行。存储器管理单元可将由不同进程使用的同一虚拟地址映射到与存储设备(例如存储器)相关联的不同物理地址。相反,在一些实现中,存储器管理单元可将由同一进程使用的不同虚拟地址映射到同一物理地址。与处理器相关联的存储器管理单元可被编程为实现将由进程使用的虚拟地址转换成物理地址的逻辑功能(被称为虚拟存储器映射)。
虚拟存储器映射可包括数据结构以存储与从虚拟地址到物理地址的转换相关联的属性值。因为存储在虚拟存储器映射中的信息可以很大,所以处理器可使用转换后备缓冲器(TLB)来缓存虚拟存储器映射的一部分。虚拟存储器映射的缓存的部分可存储在高速缓存存储器中且比未存储在TLB中的映射数据更快地被取回,因而提高处理器的性能。当处理器使用虚拟地址来发起对存储器中的地址的访问时,与处理器相关联的存储器管理单元可首先搜索TLB以确定虚拟到物理地址转换是否已经存储在TLB中。使用TLB的成功的虚拟到物理地址转换被称为TLB命中,以及使用TLB的失败的转换被称为TLB未命中。
当TLB未命中出现时,存储器管理单元可能需要查找在存储器中存储的页表中的转换。页表查找与使用用于地址转换的TLB比较是更慢的路径。在一些实现中,在经由页表得到虚拟地址的物理地址之后,处理器可将从虚拟地址到物理地址的最后转换存储在TLB中用于未来的地址转换请求。
在一些实现中,可使用页面和页表来实现虚拟到物理地址转换。在某个范围中的连续虚拟地址被映射到连续物理地址。通常,为了效率,在2的幂的字节的块中指定该范围。此外,页面在范围的边界上被对准。例如,可预先规定页面具有6096个字节(4KB),即,在4KB边界上对准的虚拟地址的每个4KB映射到物理地址的4KB。
存储在存储器中的预定位置中的页表包含从虚拟地址到物理地址的所有映射。因为页面是固定大小,所以只有在页面中的第一字节的地址需要被映射。使用页面的虚拟到物理地址转换被称为分页(paging)。
在分页中,一旦确定了在页面中的第一字节的虚拟到真实地址转换,就可通过将偏移添加到第一字节的转换来得到在页面中的任何其它地址的映射。通常,第一虚拟地址和第一物理页面总是被对准到页面大小,允许在分页中的连接操作而不是加法操作的应用。
不同的进程可使用可转换成不同的物理地址的相同范围的虚拟地址。不同的技术可用于使用TLB来将由不同进程使用的同一虚拟地址映射到不同的物理地址。例如在一些实现中,TLB只为当前正在处理器上执行的进程存储条目。这要求当在处理器上执行的当前进程改变到另一进程时(即,在上下文切换时)TLB被冲掉(即,所有映射从高速缓存器移除)。在一些其它实现中,TLB的条目可存储唯一地识别与TLB条目相关联的进程的进程标识符。当为了虚拟到物理地址转换而访问TLB时,进程标识符可用于选择与进程相关联的物理地址的范围。因此,存储在TLB条目中的进程标识符可帮助为相应的进程确定映射。
图1示出根据本公开的实施方式的计算系统100。计算系统100可包括处理器(例如中央处理单元(CPU))102和经由总线系统108连接到彼此的存储器。盘106可经由总线108耦合到处理器102和存储器104以在存储器没有用于任务的足够空间的情况下提供交换空间。存储器104和盘106可存储程序(包括系统应用和用户应用)和与程序相关联的数据。处理器102可使用存储器104来执行任务例如系统应用和用户应用以存储程序的指令和与程序相关联的数据。
在一个实施方式中,处理器102还可包括一个或多个处理核心110和存储器管理单元(MMU)112。一个或多个处理核心可包括用于执行与任务相关联的指令的执行流水线逻辑118。在一个实施方式中,在处理核心110上执行的任务不直接使用存储器的物理地址来访问存储器104。替代地,任务通过虚拟地址(也被称为线性地址)来访问虚拟存储器。耦合到处理核心110和存储器的存储器管理单元112可将虚拟存储器的虚拟地址映射到存储器104的物理地址。虚拟地址的空间可分成被称为页面的固定大小的单元。虚拟地址的页面可相应地映射到在存储器104的物理地址的空间中的固定大小的单元(被称为存储器帧)内。
在一个实施方式中,存储器104可包括用于存储在虚拟地址的页面到物理地址之间的映射的页表114。映射可包括在页面的标识符(或页号)到存储器帧的标识符(或存储器帧号)之间的映射。存储器帧号确定被分配到任务的存储器104的区域。
在一个实施方式中,页表114可包括一个或多个页表条目(PTE)116。在一个实施方式中,页表114的页表条目116可被加载到存储器管理单元112的页表寄存器126内,使得存储器管理单元112可执行存储器地址映射。每个页表条目可存储根据虚拟地址页号而识别的一个或多个存储器帧号。在一个实施方式中,在处理核心110上执行的任务可通过指定一个或多个虚拟地址范围来分配存储器的块。虚拟地址可包括包含指示虚拟地址页号的一个或多个位(例如高阶20位)的第一部分和指示在对应于页面的存储器帧内的字节偏移的位(例如低阶12位)的第二部分。存储器管理单元112可使用虚拟地址页号来识别存储在页表条目116中的存储器帧号并组合所识别的存储器帧号和偏移字节以形成用于访问存储器104的物理地址。
在一个实施方式中,处理核心110还可包括用于存储转换后备表(TLB)的高速缓存器120。在经由页表114(其是慢路径)确定虚拟到物理地址转换之后,地址映射可存储在TLB条目122中作为可由处理核心110访问的本地拷贝。响应于对访问同一虚拟地址的随后请求,处理核心110可首先搜索TLB 120以查找虚拟到物理地址转换。如果处理核心110能够在TLB 120中找到映射,处理核心110可快速解析地址映射而不需要经历慢分页过程。
在一个实施方式中,存储器管理单元112可包括检查对任务的存储器访问权限以阻止某些类型的存储器访问(例如由杂散访问引起的那些存储器访问)的逻辑。在一个实施方式中,每个页表条目116可包括一个或多个状态位以指示在将页表条目中的页号映射到存储器帧号之前需要被检查的某些页面访问状态。TLB条目122可相应地包括存储在数据字段中的信息,如那些在页表条目116中的信息。
图2示出根据本公开的实施方式的TLB条目200。如图2所示,TLB条目200可包括用于存储属性值的多个字段。在一个实施方式中,TLB条目200可包括有效性字段202、虚拟地址字段204、物理地址字段206、进程标识符字段208、权限字段210和高速缓存控制字段212。
有效性字段202可存储指示TLB条目是否是有效的有效性标记。例如,有效性标记可以是一位标记,其在标记值是一时指示有效的TLB条目并在标记值是零时指示无效的TLB条目。虚拟地址字段204可存储虚拟存储器页面的标识符,且物理地址字段206可存储与由虚拟地址字段204识别的虚拟存储器帧对应的物理存储器帧的标识符。TLB条目200可以可选地包括用于识别与虚拟存储器地址相关联的进程的进程标识符字段208。当在TLB条目200中没有进程标识符时,每当有到另一进程的上下文切换时,TLB条目被冲掉。
TLB条目200还可包括用于存储有用信息的其它字段。例如,权限字段210可存储与存储器位置相关联的一组权限标记(例如读、写、执行),且高速缓存控制字段212可存储与高速缓存权限(例如不可高速缓存、写回、直写)相关联的标记。
在一个实施方式中,每个进程标识符唯一地与相应的进程相关联,相应的进程与TLB中的条目相关联。可选地,TLB条目200可包括间接标识符。因此,每个进程可与一组间接标识符相关联。如果存储在TLB条目中的间接标识符属于与进程相关联的该组标识符,则TLB条目对那个进程是有效的。同一间接标识符可与多个进程相关联,允许TLB条目在多个进程之间被共享。例如在一个实现中,每个页面可与一个或多个标识符相关联。每个进程也可与一个或多个标识符相关联。如果与页面相关联的标识符匹配与进程相关联的标识符,该进程被确定为具有对页面的访问权限(例如读、写、执行)。
在虚拟到物理地址转换期间,处理核心可搜索TLB条目或TLB条目的子集,用于识别地址转换。存在不同的方法来组织并搜索在TLB中的虚拟到物理地址转换。
在一些实现中,基于虚拟地址来直接对TLB条目编索引,其中根据虚拟地址来搜索每个TLB条目。这种类型的TLB被称为完全关联的TLB。在一些实现中,TLB条目可包括进程标识符字段以存储可将TLB条目关联到特定进程的进程标识符值。表1是用于搜索包括进程标识符的完全关联的TLB的一段伪代码。
表1
实际上,完全关联的TLB可能太昂贵而不能实现大量TLB条目。
在其它实现中,虚拟地址可包含将虚拟地址直接映射到TLB条目的信息而没有在完全关联的TLB中使用的搜索过程。这种类型的TLB被称为直接映射的TLB。TLB被组织成TLB页面,且对于每个TLB页面只有一个TLB条目被检查。为此目的,由进程使用的虚拟地址可包括虚拟地址段(被称为标签)、索引段(被称为索引)和偏移段(被称为偏移)。标签可用于识别与虚拟地址相关联的TLB页面,且索引可用于确定在TLB页面内的TLB条目。如果虚拟地址不在TLB页面中,则它是TLB未命中。
图3示出使用直接映射的TLB 300来确定真实地址。如图3所示,虚拟页面302可包括标签304、索引306和偏移308。在虚拟页面302中的标签304可用于确定当前TLB阵列300是否与虚拟页面302相关联;如果虚拟页面302与TLB阵列310相关联,则索引306可用于确定在TLB阵列310内的TLB条目。TLB条目可存储虚拟页面到物理页面映射。可通过连结(或相加)物理页面与偏移308来确定物理地址。表2是用于使用直接映射的TLB来确定物理地址的一段伪代码。
表2
直接映射的TLB遭受TLB条目冲突。例如,映射使用共同TLB条目的两个虚拟页面302是禁止的。例如,如果TLB阵列310包括从0到63编索引的64个条目,则虚拟页面0和虚拟页面64将与在0处被编索引的同一TLB条目相关联。如果进程使用在0、64、0、64等的序列中的虚拟页面,则TLB阵列可频繁地被加载和逐出,且TLB未命中频繁地出现。这可能降低TLB性能。在一些实现中,直接映射的TLB可包括被称为N路关联TLB的多个(例如N=2,4,8)TLB阵列,其中每个TLB阵列被称为“路”。这可通过将条目布置为具有N列的二维阵列来表示。TLB阵列的N路增加TLB命中的机会并减小TLB未命中的比率。表3是用于使用N路关联TLB来确定物理地址的一段伪代码。
表3
使用基于页面的地址转换,存储器以页面大小(例如4KB)的倍数被分配。当所需的存储器比页面大小更小时,这可能导致存储器空间使用的浪费。例如,如果页面大小是4KB,但仅仅需要1KB的存储器,则存储器的页面(4KB)的分配可以使3KB的存储器不被使用(或浪费)。页面大小越大,存储器空间就越可能浪费。然而,较大的页面大小可能需要较少的TLB条目来映射相同数量的真实存储器,因而减小TLB未命中的数量并提高TLB映射的速度。因此,在页面大小和性能之间存在折衷。在一些实现中,TLB表可包括不同页面大小的页面(例如大的页面大小和小的页面大小)。
实现TLB以支持在直接映射的TLB或N路关联TLB中的不同页面大小的一种方式是根据页面大小来对TLB条目编索引。然而,这种方法需要在TLB中的不同位置处对不同页面大小的条目编索引。TLB的可选实现可包括使用在TLB条目中的标记来指示页面大小(例如页面大小标记=“1”,指示大的页面大小;页面大小标记=“0”,指示小的页面大小)。如图3所示的标签304可包括足够的位以存储最大的页面大小。小的页面大小可存储在标签304的较低位。假定TLB支持两个页面大小(例如大和小),表4是用于使用N路关联TLB来确定物理地址的一段伪代码。
表4
然而,这个解决方案可使多个相邻的小页面映射到同一索引,这可引起额外的冲突,从而增加TLB未命中的数量并降低性能。
另一解决方案是为不同的页面大小提供不同的索引,这可使同一路从不同的行被读取。如果使用存储器阵列来实现TLB的一个路(或列),则存储器阵列可能需要支持在一个时钟周期中的多个行的读出。这要求该阵列是多端口阵列。多端口阵列可以比单端口阵列更大和更慢,从而引起更低的性能。
在一个实施方式中,可使用大于或等于页面大小的数量(M)的多个(N)路来实现N路TLB。例如,如果TLB支持M(例如4)个页面大小,则N路TLB可包括N≥M(例如4)路。然后,每路可与特定的页面大小相关联。这可以是固定映射,或可以动态地可改变。表5是用于使用N路关联TLB来确定物理地址的一段伪代码。在表5的例子中,存在两个页面大小(“LargePageSize”和“SmallPageSize”),且一些路使用一个(LargePageSize)以及一些路使用另一个(SmallPageSize)。代码包括可将页面大小转换成索引值的控制函数(TO_INTEGER())。
表5
在一个实施方式中,可以预先确定一个路的页面大小。在另一实施方式中,一个路的页面大小可由执行指令的处理核心设置。例如,处理核心可通过将页面大小写到与处理核心相关联的控制寄存器来规定与一个路相关联的页面大小。可选地,处理核心可通过写到控制寄存器来在固定的一组页面大小之间选择。
某些虚拟到物理地址映射对所有进程是共有的。这些共有的映射可包括与公共库相关联的那些映射和由所有进程使用的系统相关映射。如果每个进程由进程标识符识别,则与这些公共映射相关联的多个TLB条目可能是存储与不同进程相关联的这些相同的映射所需的。这可创建重复的TLB条目(即,使用相同映射的那些进程)。为了减少重复的TLB条目,本公开的实施方式提供在TLB条目中的标记以指示TLB条目是否可应用于所有进程。
图4示出根据本公开的实施方式的包括标记402的TLB条目400,标记402指示TLB条目是否是所有进程所共有的。如图4所示的TLB条目400包括如图2所示的TLB条目200的所有字段。TLB条目400还可包括指示TLB条目400是否与所有进程相关联的通配符标记402。例如,通配符标记402可指示与所有进程的相关性——如果通配符标记402的值被设置为一(“1”),以及不与所有进程相关联——如果通配符标记402的值被设置为零(“0”)。在可选的实施方式中,不是有明确的通配符标记,而是一个或多个指定的进程标识符可被视为通配符。
在一些实现中,TLB条目可包括与通配符标记相关联的条目和不与通配符标记相关联的条目。对于这样的情况,处理核心可基于规则来做出决定。规则可规定如果对虚拟地址映射有两个匹配(作为通配符的一个匹配和其中进程标识符确切地匹配的一个匹配),则处理核心选择其中进程标识符确切地匹配的一个匹配。通配符标记的这个重写可允许进程与不同的页面特性(例如不同的权限)相关联。例如,内核页面对于使用通配符条目的所有非内核进程可被标记为只读,但它可包括对内核进程的通配符重写以允许读和写权限。
与操作系统相关联的映射可集中于某个范围的虚拟地址。例如,一般在虚拟页面0或1开始分配代码。这意味着某些虚拟页号可以比其它虚拟页号出现在更多的进程中(例如虚拟页面0或1)。某些虚拟页号的频繁使用使与这些虚拟页号相关联的TLB条目更可能跨多个进程被使用,从而增加那些TLB条目的冲突率。
本公开的实施方式提供在TLB表的行中更均匀地分布进程的编索引方案。在一个实施方式中,每个进程与不同的编索引方案相关联以使两个不同进程的相同编号的虚拟页面能够放置在两个不同编号的行中。例如,对于每个进程,TLB索引可与唯一值组合。实现该组合的有效方式是使用异或操作来组合TLB索引与唯一值。在另一实施方式中,与进程相关联的值相对于所有进程并不是唯一的。即使值不是唯一的,值和TLB索引的异或仍然可产生虚拟页面索引在TLB中的不同行中的分布。
如果TLB条目已经与唯一进程标识符相关联且进程标识符的长度(即,位的数量)大于或等于TLB索引的长度,则进程标识符可用作与TLB索引组合(例如使用异或操作符)的唯一值。表6是用于使用N路关联TLB的进程标识符来加扰TLB索引的一段伪代码。
表6
表6中的这个代码指向单个页面大小。索引值的加扰也可应用于多个页面大小。在表6中的代码指向单个路(即直接映射的)TLB。多个值的加扰也可应用于具有多路的TLB。在一个实施方式中,TLB可包括多个路。处理核心可通过控制器寄存器来规定一个路是否使用索引加扰。在一个实施方式中,控制寄存器可规定哪些路被加扰以及哪些路不被加扰。在一个实施方式中,被规定为加扰的路可以不存储与所启用的通配符标记相关联的TLB条目。
在一个实施方式中,可能有多个页面大小以及加扰。不同的路可与不同的页面大小相关联。此外,每个路可在有或没有索引加扰的情况下被寻址。这些行为可以是固定的,或可以例如通过在控制器寄存器中设置值来动态地被确定。
图5示出根据本公开的实施方式的包括用于设置不同的TLB方案的控制寄存器502的计算系统500。如图5所示的计算系统500包括与在图1中示出的系统100的硬件元件类似的硬件元件。系统500还包括与处理核心110相关联的大量控制寄存器(例如通用寄存器(GPR))。处理核心110可经由控制寄存器来在TLB条目122中设置参数。在一个例子中,一组控制寄存器502可相应地与一组路相关联,且处理核心110可使用该组控制寄存器502来设置与每个路相关联的页面大小。在另一例子中,处理核心可使用该组控制寄存器502来设置在每个路的TLB条目中的索引是否被加扰。
图6是示出根据本公开的实施方式的用于使用控制来使一个路与页面大小相关联的方法的方框图。参考图6,在602,处理核心110可执行与虚拟存储器页面相关联的指令。
在604,处理核心110可识别转换后备缓冲器(TLB)的多个路中的第一路,其中第一路与第一页面大小相关联。
在606,处理核心110可使用虚拟存储器页面和第一路的第一页面大小来确定索引值。
在608,处理核心110可使用索引值来确定第一路的第一TLB条目。
在610,处理核心110可使用存储在第一TLB条目中的存储器地址转换来将第一虚拟存储器页面转换成第一物理存储器页面。此外,处理核心110可执行第二指令以访问存储器设备的第一物理存储器页面。
本公开的例子1是一种方法,其包括:执行与包括页面大小指示符或索引值中的至少一个的虚拟存储器页面相关联的进程;基于页面大小指示符或索引值中的至少一个来确定第一页面大小;基于第一页面大小来确定转换后备缓冲器(TLB)的第一路,TLB包括多个路;基于来自第一路的虚拟存储器页面来确定包括在虚拟存储器页面和物理存储器页面之间的映射的第一TLB条目;以及基于物理存储器页面来访问与处理器相关联的存储器。
本公开的例子2是处理系统,其包括:转换后备缓冲器(TLB),其包括多个路,其中每个路与页面大小相关联;处理核心,其通信地耦合到TLB,以执行与包括页面大小指示符或索引值中的至少一个的虚拟存储器页面相关联的进程;基于页面大小指示符或索引值中的至少一个来确定第一页面大小;基于第一页面大小来确定TLB的第一路;基于来自第一路的虚拟存储器页面来确定包括在虚拟存储器页面和物理存储器页面之间的映射的第一TLB条目;以及基于物理存储器页面来访问与处理器相关联的存储器。
虽然关于有限数量的实施方式描述了本公开,但本领域中的技术人员将从那里认识到很多修改和变化。意图是所附权利要求涵盖如落在本公开的真实精神和范围内的所有这样的修改和变化。
设计可经历从创建到模拟到制造的各种阶段。表示设计的数据可以用很多方式表示该设计。首先,如在模拟中有用的,可使用硬件描述语言或另一功能描述语言来表示硬件。此外,可在设计进程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大部分设计在某个阶段达到表示在硬件模型中的各种设备的物理放置的数据的级别。在常规半导体制造技术被使用的情况下,表示硬件模型的数据可以是规定在掩模的不同掩模层上的用于产生集成电路的各种特征的存在或缺乏的数据。在设计的任何表示中,数据可存储在任何形式的机器可读介质中。存储器或磁性或光学存储装置例如磁盘可以是机器可读介质以存储经由光波或电波传输的信息,光波或电波被调制或以另外方式被产生以传输这样的信息。当指示或携带代码或设计的电载波在电信号的拷贝、缓冲或重新传输被执行的程度上被传输时,新拷贝被制造。因此,通信提供商或网络提供商可在有形机器可读介质上至少临时地存储物品,例如被编码到载波内的信息,体现本公开的实施方式的技术。
如本文使用的模块指硬件、软件和/或固件的任何组合。作为例子,模块包括硬件,例如微控制器,其与非临时介质相关联以存储适合于由微控制器执行的代码。因此,对模块的提及在一个实施方式中指硬件,其特别配置成识别和/或执行在非临时介质上保持的代码。此外在另一实施方式中,模块的使用指包括代码的非临时介质,代码特别适合于由微控制器执行以执行预定操作。而且如可被推断出的,在又一实施方式中,术语“模块”(在这个例子中)可以指微控制器和非临时介质的组合。经常地,被示为分开的模块边界通常改变并可能重叠。例如,第一和第二模块可共享硬件、软件、固件或其组合,同时可能保留某个独立的硬件、软件或固件。在一个实施方式中,术语“逻辑”的使用包括硬件,例如晶体管、寄存器或其它硬件,例如可编程逻辑设备。
短语“配置成”的使用在一个实施方式中指布置、装配、制造、许诺销售、进口和/或设计装置、硬件、逻辑或元件以执行所指定或确定的任务。在这个例子中,未正在操作的装置或其元件仍然“配置成”执行指定任务,如果它被设计、耦合和/或互连以执行所述指定任务。作为纯粹示例性的例子,逻辑门可在操作期间提供0或1。但“配置成”向时钟提供使能信号的逻辑门不包括可提供1或0的每个潜在逻辑门。替代地,逻辑门是以某种方式耦合的逻辑门,使得在操作期间1或0输出启用时钟。再一次注意,术语“配置成”的使用并不需要操作,但替代地聚焦于装置、硬件和/或元件的潜伏状态,其中在潜伏状态中,当装置、硬件和/或元件正操作时,装置、硬件和/或元件设计成执行特定的任务。
此外,短语“以”、“能够”和/或“可操作来”的使用在一个实施方式中指被设计成以特定的方式实现装置、逻辑、硬件和/或元件的使用的一些装置、逻辑、硬件和/或元件。如上注意,以、能够或可操作来的使用在一个实施方式中指装置、逻辑、硬件和/或元件的潜伏状态,其中装置、逻辑、硬件和/或元件没有正在操作,但被设计成以特定的方式实现装置的使用。
如在本文使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知的表示。逻辑电平、逻辑值(logic values)或逻辑值(logical values)的使用常常也被称为1和0,其简单地表示二进制状态。例如,1指高逻辑电平而0指低逻辑电平。在一个实施方式中,存储单元例如晶体管或闪存单元也许能够保持单个逻辑值或多个逻辑值。然而,在计算机系统中的值的其它表示被使用。例如,十进制数据10也可被表示为910的二进制值和十六进制字母A。因此,值包括能够在计算机系统中保持的信息的任何表示。
而且,状态可由值或值的部分表示。作为例子,第一值例如逻辑一可表示默认或初始状态,而第二值例如逻辑零可表示非默认状态。此外,术语“重置”和“置位”在一个实施方式中分别指默认或已更新的值或状态。例如,默认值可能包括高逻辑值,即,重置,而已更新的值可能包括低逻辑值,即,置位。注意,值的任何组合可用于表示任何数量的状态。
可经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的由处理元件可执行的指令或代码来实现上面阐述的方法、硬件、软件、固件或代码的实施方式。非临时机器可访问/可读介质包括提供(即,存储和/或传输)以由机器例如计算机或电子系统可读的形式的信息的任何机制。例如,非临时机器可访问介质包括:随机存取存储器(RAM)例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪存设备;电气存储设备;光学存储设备;声存储设备;用于保持从临时(传播的)信号(例如载波、红外信号、数字信号)接收的信息的其它形式的存储设备;等等,这些存储器与可从那里接收信息的非临时介质区分开。
用于对逻辑编程以执行本公开的实施方式的指令可存储在系统中的存储器例如DRAM、高速缓存器、闪存或其它存储装置中。此外,指令可经由网络或借助于其它计算机可读介质被分发。因此,机器可读介质可包括用于存储或传输以由机器(例如计算机)可读的形式的信息的任何机制,但不限于软盘、光学盘、光盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或有形机器可读存储装置,其在信息通过互联网经由电气、光学、声或其它形式的传播信号(例如载波、红外信号、数字信号等)的传输中被使用。因此,计算机可读介质包括适合于存储或传输电子指令或以由机器(例如计算机)可读的形式的信息的任何类型的有形机器可读介质。
在整个这个说明书中对“一个实施方式”或“实施方式”的提及意指结合该实施方式所述的特定特征、结构或特性被包括在本公开的至少一个实施方式中。因此,短语“在一个实施方式中”或“在实施方式中”在整个这个说明书中的不同地方中的出现并不一定都指同一实施方式。此外,可在一个或多个实施方式中以任何适当的方式组合特定特征、结构或特性。
在前述描述中,关于特定的示例性实施方式给出详细描述。然而将明显,可对其做出各种修改和变化而不偏离如在所附权利要求中阐述的本公开的更宽的精神和范围。说明书和附图相应地在示例性意义而不是限制性意义上被看待。此外,实施方式和其它示例性语言的前述使用并不一定指同一实施方式或同一例子,但可以指不同和独特的实施方式以及可能同一实施方式。
Claims (20)
1.一种处理器,包括:
转换后备缓冲器(TLB),其包括多个路,其中每个路与相应的页面大小相关联;以及
处理核心,其通信地耦合到所述TLB,以:
执行与虚拟存储器页面相关联的指令;
识别所述多个路中的第一路,其中所述第一路与第一页面大小相关联;
使用所述虚拟存储器页面和所述第一路的所述第一页面大小来确定索引值;
使用所述索引值来确定所述第一路的第一TLB条目;以及
使用存储在所述第一TLB条目中的存储器地址转换来将所述第一虚拟存储器页面转换成第一物理存储器页面。
2.如权利要求1所述的处理器,其中不同的路与不同的页面大小相关联。
3.如权利要求1所述的处理器,其中所述多个路中的每个路的所述页面大小是预先确定的值。
4.如权利要求1所述的处理器,其中所述处理核心用于执行页面大小分配指令以将所述第一页面大小分配到所述第一路。
5.如权利要求1所述的处理器,其中所述索引值确定在所述TLB中的所述TLB条目的位置,以及其中不同的索引值对应于在不同路中的不同TLB条目。
6.如权利要求1所述的处理器,其中每个路与相应的不同页面大小相关联。
7.如权利要求1所述的处理器,其中所述指令与由进程标识符识别的进程相关联,以及其中为了转换所述第一虚拟存储器地址,所述处理核心基于所述第一虚拟存储器页面的虚拟地址或所述进程标识符中的至少一个来转换。
8.如权利要求1所述的处理器,其中所述第一TLB条目还与通配标识符相关联,所述通配标识符当被设置时指示第一TLB条目是所有进程所共有的。
9.一种方法,包括:
执行与虚拟存储器页面相关联的指令;
识别转换后备缓冲器(TLB)的多个路中的第一路,其中所述第一路与第一页面大小相关联;
使用所述虚拟存储器页面和所述第一路的所述第一页面大小来确定索引值;
使用所述索引值来确定所述第一路的第一TLB条目;以及
使用存储在所述第一TLB条目中的存储器地址转换来将所述第一虚拟存储器页面转换成第一物理存储器页面。
10.如权利要求9所述的方法,其中不同的路与不同的页面大小相关联。
11.如权利要求9所述的方法,其中所述多个路中的每个路的所述页面大小是预先确定的值。
12.如权利要求9所述的方法,还包括:
执行页面大小分配指令以将所述第一页面大小分配到所述第一路。
13.一种处理器,包括:
转换后备缓冲器(TLB),其包括多个路;以及
处理核心,其通信地耦合到所述TLB,以:
识别所述多个路中的第一路;
基于虚拟存储器页面和如下的值来确定索引值:唯一地被分配到所述第一路或由指令唯一地分配的值;
使用所述索引值来确定所述第一路的第一TLB条目;以及
使用存储在所述第一TLB条目中的存储器地址转换来将所述第一虚拟存储器页面转换成第一物理存储器页面。
14.如权利要求13所述的处理器,其中为了确定所述索引值,所述处理核心:
从所述虚拟存储器页面中选择多个位;以及
在所选择的多个位和所述唯一值之间执行异或。
15.如权利要求13所述的处理器,其中为了确定所述索引值,所述处理核心基于从所述虚拟存储器页面选择的位来确定所述索引值。
16.如权利要求13所述的处理器,其中所述多个路中的每个路与相应的唯一值相关联。
17.如权利要求13所述的处理器,其中所述处理核心对不同的路使用不同的方法来确定所述索引值。
18.如权利要求17所述的处理器,其中用于确定所述索引值的方法由程序修改。
19.如权利要求13所述的处理器,其中所述指令与由进程标识符识别的进程相关联,以及其中为了转换所述第一虚拟存储器地址,所述处理核心基于所述第一虚拟存储器页面的虚拟地址或所述进程标识符中的至少一个来转换。
20.如权利要求19所述的处理器,其中所述进程标识符用于提供所述唯一值。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762446181P | 2017-01-13 | 2017-01-13 | |
US62/446181 | 2017-01-13 | ||
US15/868,513 US10719451B2 (en) | 2017-01-13 | 2018-01-11 | Variable translation-lookaside buffer (TLB) indexing |
US15/868513 | 2018-01-11 | ||
PCT/US2018/013484 WO2018132653A1 (en) | 2017-01-13 | 2018-01-12 | Variable translation-lookaside buffer (tlb) indexing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110235101A true CN110235101A (zh) | 2019-09-13 |
Family
ID=62839678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880006348.8A Pending CN110235101A (zh) | 2017-01-13 | 2018-01-12 | 可变转换后备缓冲器(tlb)编索引 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10719451B2 (zh) |
EP (1) | EP3568753B1 (zh) |
KR (1) | KR102281928B1 (zh) |
CN (1) | CN110235101A (zh) |
WO (1) | WO2018132653A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180300253A1 (en) * | 2017-04-13 | 2018-10-18 | Advanced Micro Devices, Inc. | Translate further mechanism |
US10866904B2 (en) * | 2017-11-22 | 2020-12-15 | Arm Limited | Data storage for multiple data types |
US10915459B2 (en) | 2018-10-29 | 2021-02-09 | International Business Machines Corporation | Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes |
US10846239B2 (en) * | 2018-11-29 | 2020-11-24 | Marvell Asia Pte, Ltd. | Managing translation lookaside buffer entries based on associativity and page size |
US11055232B2 (en) | 2019-03-29 | 2021-07-06 | Intel Corporation | Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS |
WO2021061466A1 (en) * | 2019-09-24 | 2021-04-01 | Alibaba Group Holding Limited | Memory management unit, address translation method, and processor |
CN114385516A (zh) * | 2020-10-21 | 2022-04-22 | 澜起科技股份有限公司 | 计算系统以及用于共享不同计算设备的设备存储器的方法 |
US11513963B2 (en) * | 2021-03-11 | 2022-11-29 | Western Digital Technologies. Inc. | Data storage device and method for application identifier handler heads-up for faster storage response |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6854046B1 (en) * | 2001-08-03 | 2005-02-08 | Tensilica, Inc. | Configurable memory management unit |
CN101203837A (zh) * | 2005-04-07 | 2008-06-18 | Ati技术公司 | 虚拟存储器系统中段处理的方法和装置 |
CN101346706A (zh) * | 2005-12-29 | 2009-01-14 | 英特尔公司 | 虚拟转换后备缓冲器 |
CN101727405A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 虚拟地址高速缓冲存储器和方法以及处理器 |
US20140006747A1 (en) * | 2012-06-29 | 2014-01-02 | Broadcom Corporation | Systems and methods for processing instructions when utilizing an extended translation look-aside buffer having a hybrid memory structure |
CN104272279A (zh) * | 2012-05-10 | 2015-01-07 | Arm有限公司 | 具有缓存和转换后备缓冲器的数据处理装置 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5712998A (en) * | 1993-07-13 | 1998-01-27 | Intel Corporation | Fast fully associative translation lookaside buffer with the ability to store and manage information pertaining to at least two different page sizes |
US5479627A (en) * | 1993-09-08 | 1995-12-26 | Sun Microsystems, Inc. | Virtual address to physical address translation cache that supports multiple page sizes |
US5765209A (en) * | 1993-09-23 | 1998-06-09 | Hewlett-Packard Co. | Method and apparatus to eliminate redundant mapping in a TLB utilizing variable sized pages |
US5526504A (en) * | 1993-12-15 | 1996-06-11 | Silicon Graphics, Inc. | Variable page size translation lookaside buffer |
DE69428881T2 (de) * | 1994-01-12 | 2002-07-18 | Sun Microsystems Inc | Logisch adressierbarer physikalischer Speicher für ein Rechnersystem mit virtuellem Speicher, das mehrere Seitengrössen unterstützt |
US5907867A (en) * | 1994-09-09 | 1999-05-25 | Hitachi, Ltd. | Translation lookaside buffer supporting multiple page sizes |
JP3740195B2 (ja) * | 1994-09-09 | 2006-02-01 | 株式会社ルネサステクノロジ | データ処理装置 |
US5630087A (en) * | 1994-11-02 | 1997-05-13 | Sun Microsystems, Inc. | Apparatus and method for efficient sharing of virtual memory translations |
US5895501A (en) * | 1996-09-03 | 1999-04-20 | Cray Research, Inc. | Virtual memory system for vector based computer systems |
US6370632B1 (en) * | 1997-11-18 | 2002-04-09 | Intrinsity, Inc. | Method and apparatus that enforces a regional memory model in hierarchical memory systems |
US6728858B2 (en) * | 2001-03-30 | 2004-04-27 | Intel Corporation | Method and apparatus including heuristic for sharing TLB entries |
US6732238B1 (en) * | 2001-06-08 | 2004-05-04 | Tensilica, Inc. | Set-associative cache memory having variable time decay rewriting algorithm |
KR100450675B1 (ko) * | 2002-03-19 | 2004-10-01 | 삼성전자주식회사 | 성능향상 및 전력소모를 감소시킬 수 있는 tlb |
US20050182903A1 (en) * | 2004-02-12 | 2005-08-18 | Mips Technologies, Inc. | Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer |
GB2456813B (en) * | 2008-01-24 | 2012-03-07 | Advanced Risc Mach Ltd | Diagnostic context construction and comparison |
US9058284B1 (en) * | 2012-03-16 | 2015-06-16 | Applied Micro Circuits Corporation | Method and apparatus for performing table lookup |
US9507729B2 (en) * | 2013-10-01 | 2016-11-29 | Synopsys, Inc. | Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor |
US9514059B2 (en) | 2014-12-22 | 2016-12-06 | Texas Instruments Incorporated | Hiding page translation miss latency in program memory controller by selective page miss translation prefetch |
US10489303B2 (en) * | 2016-03-10 | 2019-11-26 | Arm Limited | Multi-range lookup in translation lookaside buffer |
US10037283B2 (en) * | 2016-08-12 | 2018-07-31 | Advanced Micro Devices, Inc. | Updating least-recently-used data for greater persistence of higher generality cache entries |
-
2018
- 2018-01-11 US US15/868,513 patent/US10719451B2/en active Active
- 2018-01-12 EP EP18739168.5A patent/EP3568753B1/en active Active
- 2018-01-12 WO PCT/US2018/013484 patent/WO2018132653A1/en unknown
- 2018-01-12 KR KR1020197023470A patent/KR102281928B1/ko active IP Right Grant
- 2018-01-12 CN CN201880006348.8A patent/CN110235101A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6854046B1 (en) * | 2001-08-03 | 2005-02-08 | Tensilica, Inc. | Configurable memory management unit |
CN101203837A (zh) * | 2005-04-07 | 2008-06-18 | Ati技术公司 | 虚拟存储器系统中段处理的方法和装置 |
CN101346706A (zh) * | 2005-12-29 | 2009-01-14 | 英特尔公司 | 虚拟转换后备缓冲器 |
CN101727405A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 虚拟地址高速缓冲存储器和方法以及处理器 |
CN104272279A (zh) * | 2012-05-10 | 2015-01-07 | Arm有限公司 | 具有缓存和转换后备缓冲器的数据处理装置 |
US20140006747A1 (en) * | 2012-06-29 | 2014-01-02 | Broadcom Corporation | Systems and methods for processing instructions when utilizing an extended translation look-aside buffer having a hybrid memory structure |
Also Published As
Publication number | Publication date |
---|---|
US20180203806A1 (en) | 2018-07-19 |
KR102281928B1 (ko) | 2021-07-23 |
KR20190105623A (ko) | 2019-09-17 |
EP3568753B1 (en) | 2021-12-22 |
EP3568753A1 (en) | 2019-11-20 |
EP3568753A4 (en) | 2020-09-23 |
US10719451B2 (en) | 2020-07-21 |
WO2018132653A1 (en) | 2018-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110235101A (zh) | 可变转换后备缓冲器(tlb)编索引 | |
KR102231792B1 (ko) | 하이브리드 메모리 모듈 및 그것의 동작 방법 | |
CN102473139B (zh) | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 | |
US7089398B2 (en) | Address translation using a page size tag | |
US10592424B2 (en) | Range-based memory system | |
JP5628404B2 (ja) | キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ | |
US10210096B2 (en) | Multi-stage address translation for a computing device | |
US6560690B2 (en) | System and method for employing a global bit for page sharing in a linear-addressed cache | |
US8966219B2 (en) | Address translation through an intermediate address space | |
US9405703B2 (en) | Translation lookaside buffer | |
US10019377B2 (en) | Managing cache coherence using information in a page table | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
JP6821879B2 (ja) | 非対称セットの結合キャッシュ | |
US11403222B2 (en) | Cache structure using a logical directory | |
US9817762B2 (en) | Facilitating efficient prefetching for scatter/gather operations | |
US20160140042A1 (en) | Instruction cache translation management | |
JP2003067357A (ja) | 不均一メモリ・アクセス(numa)データ処理システムおよびその操作方法 | |
JP2020529656A (ja) | アドレス変換キャッシュ | |
JP2013065325A (ja) | アドレス変換方法及び装置 | |
US20200341909A1 (en) | Cache data location system | |
US20230401161A1 (en) | Translation support for a virtual cache | |
US20130297877A1 (en) | Managing buffer memory | |
JP2007048296A (ja) | 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム | |
JP2004530962A (ja) | キャッシュメモリおよびアドレス指定方法 | |
WO2023064609A1 (en) | Translation tagging for address translation caching |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190913 |