CN104899159B - 高速缓冲存储器Cache地址的映射处理方法和装置 - Google Patents

高速缓冲存储器Cache地址的映射处理方法和装置 Download PDF

Info

Publication number
CN104899159B
CN104899159B CN201410080762.7A CN201410080762A CN104899159B CN 104899159 B CN104899159 B CN 104899159B CN 201410080762 A CN201410080762 A CN 201410080762A CN 104899159 B CN104899159 B CN 104899159B
Authority
CN
China
Prior art keywords
cache
address
page
index1
physical address
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.)
Active
Application number
CN201410080762.7A
Other languages
English (en)
Other versions
CN104899159A (zh
Inventor
崔泽汉
陈荔城
陈明宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201410080762.7A priority Critical patent/CN104899159B/zh
Priority to PCT/CN2015/073789 priority patent/WO2015131853A1/zh
Publication of CN104899159A publication Critical patent/CN104899159A/zh
Priority to US15/257,506 priority patent/US9984003B2/en
Application granted granted Critical
Publication of CN104899159B publication Critical patent/CN104899159B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/653Page colouring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

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

本发明实施例提供一种高速缓冲存储器Cache地址的映射处理方法和装置。该方法实施例包括获取处理核发送的访问地址所对应的物理地址,物理地址包括物理页面号PPN和页偏移;将物理地址映射成Cache地址,Cache地址依次包括Cache Set Index1、Cache Tag、Cache Set Index2,以及CacheBlock Offset;其中,位于高位的Cache Set Index1和位于低位的Cache SetIndex2共同组成Cache Set Index,且Cache Set Index1位于PPN的覆盖范围内。本发明各实施例通过将大页面PPN的某些位映射到Cache的Set Index中,因此可以被操作系统用来着色,满足同时使用大页面技术和页着色划分Cache技术的需求,并获得大页面和页着色划分Cache的性能提升。

Description

高速缓冲存储器Cache地址的映射处理方法和装置
技术领域
本发明实施例涉及数据存储技术,尤其涉及一种高速缓冲存储器Cache地址的映射处理方法和装置。
背景技术
随着数据集的增大和处理器核数的增多,页表缓冲(Translation LookasideBuffer;简称TLB)和高速缓冲存储器(Cache)面临着更严峻的挑战。TLB竞争问题:在多数体系结构中,每次访存都需要先查询页表,把虚拟地址转换为物理地址,然后用物理地址索引Cache。页表通常很大,分级存储在内存中。TLB作为页表的缓冲,缓存少量经常使用的页表项,存储在离CPU核很近的位置,这样如果要查询的虚实映射关系存储在TLB中,即TLB访问命中(Hit),可以大大加速虚实地址转换过程。但是如果TLB经常访问缺失(Miss),仍然需要到内存中分多级查找页表得到对应的页表项,需要经历很长的访问延迟。随着大数据时代数据集的不断增大,这种TLB的竞争只会越来越激烈,从而导致更大比例的TLB miss,严重影响性能。Cache竞争问题:在大多数的多核体系结构中,最后一级Cache(Last LevelCache;简称LLC)为多核所共享,这样核与核之间就会对LLC产生竞争,导致进程之间相互替换cache,使cache利用率下降。特别是,有些程序的局部性比较差,但是访问频繁、工作集很大,这样就会占用较多的LLC容量,从而严重影响其他进程的性能。随着核数的增多,LLC的竞争问题会越来越严重。
现有技术中一般通过大页面(Huge Page)和页着色划分Cache(Page-Coloringbased Cache Partition)技术进行性能优化。其中,进程需要的页表项数为工作集大小/页面大小,进程的工作集随着应用需求会不断增大,这时候增大页面大小,可以显著的减少进程所需要的页表项数。比如,普通页面为4KB,使用2MB的大页面,可以把进程需要的页表项数降低512倍,大大减轻TLB的竞争压力,减少TLB Miss,从而提高性能。
一种减少LLC竞争的方法是,静态或动态的把LLC划分给不同的核(进程),使之相互隔离,不产生竞争,这种技术称为划分cache(Cache Partition)。页着色(page-coloring)是一种软件实现划分cache的方法,具有易于使用、不需要修改硬件的优点。图1为现有技术页着色划分Cache的原理示意图,如图1所示,图1显示了页着色划分Cache的原理。从操作系统的角度,物理地址PA可以分为两部分:物理页面号(Physical Page Number;PPN)和页偏移(Page Offset);从Cache的角度,物理地址(Physical Address;简称PA)可以分为三部分:高速缓冲存储器标签(Cache Tag)、高速缓冲存储器集合索引(Cache SetIndex)和高速缓冲存储器块偏移(Cache Block Offset)。其中操作系统可以控制PPN,但是不能控制Page Offset,假设Page Offset的位数为N,则2N即为页面大小。PPN和Cache SetIndex的交集称为着色位(color bits)。操作系统通过控制PPN(即控制着色位),可以使地址映射到指定的Cache Set中。这样,给不同的进程分配不同的着色位,即可以使其映射到不同的Cache Set中,从而实现相互隔离。
图2为现有技术中大页面与页着色划分Cache的矛盾示意图,如图2所示,大页面的Page Offset域的位数变多(因为页面更大,需要更多位表示页内偏移),而PPN域的位数变少,并不再与Cache set index相交。没有着色位的存在,使得操作系统不能再通过控制PPN的方式,控制Cache Set Index。因此在现有的硬件体系结构下,大页面技术和页着色划分Cache技术存在矛盾,导致两者无法同时使用。
发明内容
本发明各实施例针对现有技术中大页面技术和页着色划分Cache技术无法同时使用的缺陷,提供一种高速缓冲存储器Cache地址的映射处理方法和装置。
本发明实施例一方面提供一种高速缓冲存储器Cache地址的映射处理方法,包括:
获取处理核发送的访问地址所对应的物理地址,所述物理地址包括物理页面号PPN和页偏移;
将所述物理地址映射成Cache地址,所述Cache地址依次包括第一高速缓冲存储器集合索引Cache Set Index1、高速缓冲存储器标签Cache Tag、第二高速缓冲存储器集合索引Cache Set Index2,以及高速缓冲存储器块偏移Cache Block Offset;其中,位于高位的所述Cache Set Index1和位于低位的所述Cache Set Index2共同组成高速缓冲存储器集合索引Cache Set Index,且所述Cache Set Index1位于所述PPN的覆盖范围内。
本发明实施例另一方面还提供另一种高速缓冲存储器Cache地址的映射处理方法,包括:
获取处理核发送的访问地址所对应的伪物理地址,所述伪物理地址包括伪物理页面号和伪页偏移;其中,所述伪物理页面号中包括第一地址部分,所述伪页偏移包括第二地址部分,所述第一地址部分与所述第二地址部分大小相同;
通过将所述第一地址部分与所述第二地址部分互换位置以完成将所述伪物理地址映射成真实物理地址,所述真实物理地址包括真实物理页面号PPN和页偏移;其中,所述PPN包括所述第二地址部分,所述页偏移包括所述第一地址部分;
将所述真实物理地址映射成Cache地址,所述Cache地址包括高速缓冲存储器标签Cache Tag、高速缓冲存储器集合索引Cache Set Index,以及高速缓冲存储器块偏移CacheBlock Offset;其中,所述第一地址部分位于所述Cache Set Index的覆盖范围内。
本发明实施例另一方面提供一种高速缓冲存储器Cache地址的映射处理装置,包括:
第一获取模块,用于获取处理核发送的访问地址所对应的物理地址,所述物理地址包括物理页面号PPN和页偏移;
第一映射模块,用于将所述物理地址映射成Cache地址,所述Cache地址依次包括第一高速缓冲存储器集合索引Cache Set Index1、高速缓冲存储器标签Cache Tag、第二高速缓冲存储器集合索引Cache Set Index2,以及高速缓冲存储器块偏移Cache BlockOffset;其中,位于高位的所述Cache Set Index1和位于低位的所述Cache Set Index2共同组成高速缓冲存储器集合索引CacheSet Index,且所述Cache Set Index1位于所述PPN的覆盖范围内。
本发明实施例另一方面还提供另一种高速缓冲存储器Cache地址的映射处理装置,包括:
第二获取模块,获取处理核发送的访问地址所对应的伪物理地址,所述伪物理地址包括伪物理页面号和伪页偏移;其中,所述伪物理页面号中包括第一地址部分,所述伪页偏移包括第二地址部分,所述第一地址部分与所述第二地址部分大小相同;
第二映射模块,用于通过将所述第一地址部分与所述第二地址部分互换位置以完成将所述伪物理地址映射成真实物理地址,所述真实物理地址包括真实物理页面号PPN和页偏移;其中,所述PPN包括所述第二地址部分,所述页偏移包括所述第一地址部分;
第三映射模块,用于将所述真实物理地址映射成Cache地址,所述Cache地址包括高速缓冲存储器标签Cache Tag、高速缓冲存储器集合索引Cache Set Index,以及高速缓冲存储器块偏移Cache Block Offset;其中,所述第一地址部分位于所述Cache Set Index的覆盖范围内。
本发明实施例提供的高速缓冲存储器Cache地址的映射处理方法和装置,通过将大页面PPN的某些位映射到Cache的Set Index中,因此可以被操作系统用来着色,满足同时使用大页面技术和页着色划分Cache技术的需求,并获得大页面和页着色划分Cache的性能提升。
附图说明
图1为现有技术页着色划分Cache的原理示意图;
图2为现有技术中大页面与页着色划分Cache的矛盾示意图;
图3为本发明高速缓冲存储器Cache地址的映射处理方法一实施例流程图;
图4为本发明方法实施例一应用场景示意图;
图5为本发明方法实施例另一应用场景示意图;
图6为本发明高速缓冲存储器Cache地址的映射处理方法另一实施例流程图;
图7为本发明方法实施例再一应用场景示意图;
图8为本发明方法实施例伪物理地址到真实物理地址的映射方法示意图;
图9为本发明高速缓冲存储器Cache地址的映射处理装置一实施例示意图;
图10为本发明高速缓冲存储器Cache地址的映射处理装置另一实施例示意图。
具体实施方式
由于现有技术中,大页面的PPN和Cache Set Index没有重叠,导致无法通过控制大页面的PPN来实现页着色划分Cache,出现这种矛盾的根本原因是,操作系统操作的物理地址和索引cache的物理地址是同一个地址,因此使用大页面时,必然不能满足页着色的需求。本发明各实施例提供一种解决方案,满足同时使用大页面技术和页着色划分Cache技术的需求。
图3为本发明高速缓冲存储器Cache地址的映射处理方法一实施例流程图,如图3所示,该方法包括:
步骤301,获取处理核发送的访问地址所对应的物理地址,所述物理地址包括物理页面号PPN和页偏移;
步骤302,将所述物理地址映射成Cache地址,所述Cache地址依次包括第一高速缓冲存储器集合索引Cache Set Index1、高速缓冲存储器标签Cache Tag、第二高速缓冲存储器集合索引Cache Set Index2,以及高速缓冲存储器块偏移Cache Block Offset;其中,位于高位的所述Cache Set Index1和位于低位的所述Cache Set Index2共同组成高速缓冲存储器集合索引Cache Set Index,且所述Cache Set Index1位于所述PPN的覆盖范围内。
以下结合具体硬件的应用场景来对该方法实施例进行详细的介绍,图4为本发明方法实施例一应用场景示意图,本发明方法实施例的应用场景为多核处理器,多核处理器包含:多核、TLB、多级私有Cache、共享的LLC、内存(Memory)等,如图4所示:
处理核(例如Core0)发出的访存地址为虚拟地址VA,由虚拟物理页面号VPN和虚拟页偏移Page Offset组成,通过查询TLB得到物理地址PA,由物理页面号PPN和页偏移PageOffset组成。物理地址PA通过映射(map)得到索引各级Cache的地址,其中一些位作为SetIndex,找到对应Set中的所有Cache Line,然后PA的一些位作为Tag与这些Cache Line中的tag进行并行比较,确定是否Cache命中。如果Cache不命中,物理地址PA被传递给更下一级Cache,直至传递给内存。
本方法实施例对物理地址索引Cache的方式进行了改进,即改变物理地址到Cache地址的映射关系,将Set Index改为由两部分构成:一部分与现有方式相同,由紧挨BlockOffset的一些地址位构成,这样可以使连续的Cache line具有不同的Cache Set,避免连续访问时造成Cache冲突;另一部分由物理地址高位的一些地址位构成,为大页面PPN的一部分。如图4所示的,物理地址PA映射成的Cache地址依次包括第一高速缓冲存储器集合索引Cache Set Index1、高速缓冲存储器标签Cache Tag、第二高速缓冲存储器集合索引CacheSet Index2,以及高速缓冲存储器块偏移Cache Block Offset;其中,位于高位的所述Cache Set Index1和位于低位的所述Cache Set Index2共同组成高速缓冲存储器集合索引Cache Set Index,且所述Cache Set Index1位于所述PPN的覆盖范围内,Cache SetIndex1作为着色位,操作系统可以控制VPN到PPN的映射关系,控制着色位,使页面映射到指定的一组set中,从而实现大页面的页着色划分cache。
在上述方法实施例中,Cache Set Index1和Cache Set Index2的大小可以相同,也可以不同。
图5为本发明方法实施例另一应用场景示意图,与图4的区别仅在于,物理地址PA映射成的Cache地址不同,作为另一种实现方式,映射后的Cache地址中的Cache Tag也可以分成两部分,具体地如图5所示,Cache Tag包括位于高位的第一高速缓冲存储器标签CacheTag1和位于低位的第二高速缓冲存储器标签Cache Tag2;且所述Cache Set Index1位于所述Cache Tag1和所述Cache Tag2之间。进一步地,Cache Tag1和Cache Tag2的大小可以相等,也可以不等。
上述方法实施例中,将物理地址映射成Cache地址具体可以发生在某一级Cache或所有Cache的映射关系上,并且可以通过可编程寄存器控制完成。
图6为本发明高速缓冲存储器Cache地址的映射处理方法另一实施例流程图,如图6所示,该方法包括:
步骤601,获取处理核发送的访问地址所对应的伪物理地址,所述伪物理地址包括伪物理页面号和伪页偏移;其中,所述伪物理页面号中包括第一地址部分,所述伪页偏移包括第二地址部分,所述第一地址部分与所述第二地址部分大小相同;
步骤602,通过将所述第一地址部分与所述第二地址部分互换位置以完成将所述伪物理地址映射成真实物理地址,所述真实物理地址包括真实物理页面号PPN和页偏移;其中,所述PPN包括所述第二地址部分,所述页偏移包括所述第一地址部分;
步骤603,将所述真实物理地址映射成Cache地址,所述Cache地址包括高速缓冲存储器标签Cache Tag、高速缓冲存储器集合索引Cache Set Index,以及高速缓冲存储器块偏移Cache Block Offset;其中,所述第一地址部分位于所述Cache Set Index的覆盖范围内。
以下结合具体硬件的应用场景来对该方法实施例进行详细的介绍,图7为本发明方法实施例再一应用场景示意图,本发明方法实施例的应用场景为多核处理器,多核处理器包含:多核、TLB、多级私有Cache、共享的LLC、内存(Memory)等,如图7所示:
处理核(例如Core0)发出的访存地址为虚拟地址VA,由虚拟物理页面号VPN和虚拟页偏移Page Offset组成,通过查询TLB得到伪物理地址pseudo-PA,由伪物理页面号PPN和伪页偏移Page Offset组成。其中,在伪物理页面号中包括预定大小的第一地址部分,在伪页偏移包括第二地址部分,且第一地址部分与第二地址部分大小相同。本发明实施例在Cache之前增加一层伪物理地址空间pseudo-PA,操作系统管理伪物理地址空间,对其进行大页面管理和页着色管理。在索引Cache之前,先对伪物理地址pseudo-PA进行映射真正的物理地址PA,物理地址PA通过映射(map)得到索引各级Cache的地址,其中一些位作为SetIndex,找到对应Set中的所有Cache Line,然后PA的一些位作为Tag与这些Cache Line中的tag进行并行比较,确定是否Cache命中。如果Cache不命中,物理地址PA被传递给更下一级Cache,直至传递给内存。
图8为本发明方法实施例伪物理地址到真实物理地址的映射方法示意图,如图8所示,从伪物理地址页面号pseudo-PPN中选出一些位作为着色位即第一地址部分,再从PageOffset中选出同样多的位(位于Cache Set Index内)即第二地址部分,把两者进行位置换,在得到的真实物理地址PA中,着色位位于Page Offset中,并最终通过物理地址PA到Cache地址的映射关系,映射到Cache Set Index中。
本发明方法实施例在索引Cache之前,映射部件先将伪物理地址pseudo-PA转换为真实物理地址PA,用于索引Cache和内存。映射关系将操作系统的着色位(例如位于PPN的低位)映射到Cache Set Index所在的位置。
在图7中,操作系统管理的是伪物理地址空间pseudo-PA,TLB中填充的是虚拟地址VA到伪物理地址pseudo-PA的映射关系。特殊的,图7中的L1Cache仍然使用伪物理地址pseudo-PA访问,只有当访存到达最后一级cache(LLC)时,才将伪物理地址pseudo-PA转换为真实物理地址PA。当然,伪物理地址pseudo-PA到真实物理地址PA转换的位置不局限于图7所示的LLC前,也可以位于L1Cache前,或L2前。图7中伪物理地址pseudo-PA到真实物理地址PA的映射关系实现如下效果:使伪物理地址空间的大页面的着色位(pseudo-PPN的一部分),经过映射后,映射到真实物理地址的低位,并最终映射到Cache地址的Set Index中。
上述方法实施例中,将伪物理地址映射成真实的物理地址具体可以发生在某一级Cache或所有Cache的映射关系上,并且可以通过可编程寄存器控制完成。
本发明实施例提供的高速缓冲存储器Cache地址的映射处理方法,通过将大页面PPN的某些位映射到Cache的Set Index中,因此可以被操作系统用来着色,满足同时使用大页面技术和页着色划分Cache技术的需求,并获得大页面和页着色划分Cache的性能提升;而且所有的改动都只是地址映射关系的改变,不增加额外的电路;地址映射的改动能保证一一映射,不需要操作系统管理。
图9为本发明高速缓冲存储器Cache地址的映射处理装置一实施例示意图,如图9所示,该装置包括第一获取模块901和第一映射模块902,其中,第一获取模块901用于获取处理核发送的访问地址所对应的物理地址,所述物理地址包括物理页面号PPN和页偏移;第一映射模块902用于将所述物理地址映射成Cache地址,所述Cache地址依次包括第一高速缓冲存储器集合索引Cache Set Index1、高速缓冲存储器标签Cache Tag、第二高速缓冲存储器集合索引Cache Set Index2,以及高速缓冲存储器块偏移Cache Block Offset;其中,位于高位的所述Cache Set Index1和位于低位的所述Cache Set Index2共同组成高速缓冲存储器集合索引Cache Set Index,且所述Cache Set Index1位于所述PPN的覆盖范围内。
在装置实施例中,Cache Set Index1和Cache Set Index2的大小可以相等,或不等。第一映射模块902还用于,将所述Cache Tag分成位于高位的第一高速缓冲存储器标签Cache Tag1和位于低位的第二高速缓冲存储器标签Cache Tag2;且所述Cache Set Index1位于所述Cache Tag1和所述Cache Tag2之间。其中,所述Cache Tag1和所述Cache Tag2的大小可以相等,或不等。
本发明装置实施例具体可以执行上述如图3、4和5所示的方法,具体功能此处不再赘述。
图10为本发明高速缓冲存储器Cache地址的映射处理装置另一实施例示意图,如图10所示,该装置包括第二获取模块101、第二映射模块102和第三映射模块103,其中,第二获取模块101获取处理核发送的访问地址所对应的伪物理地址,所述伪物理地址包括伪物理页面号和伪页偏移;其中,所述伪物理页面号中包括第一地址部分,所述伪页偏移包括第二地址部分,所述第一地址部分与所述第二地址部分大小相同;第二映射模块102用于通过将所述第一地址部分与所述第二地址部分互换位置以完成将所述伪物理地址映射成真实物理地址,所述真实物理地址包括真实物理页面号PPN和页偏移;其中,所述PPN包括所述第二地址部分,所述页偏移包括所述第一地址部分;第三映射模块103用于将所述真实物理地址映射成Cache地址,所述Cache地址包括高速缓冲存储器标签Cache Tag、高速缓冲存储器集合索引Cache Set Index,以及高速缓冲存储器块偏移Cache Block Offset;其中,所述第一地址部分位于所述Cache Set Index的覆盖范围内。
本发明装置实施例具体可以执行上述如图6、7和8所示的方法,具体功能此处不再赘述。
本发明实施例提供的高速缓冲存储器Cache地址的映射处理装置,通过将大页面PPN的某些位映射到Cache的Set Index中,因此可以被操作系统用来着色,满足同时使用大页面技术和页着色划分Cache技术的需求,并获得大页面和页着色划分Cache的性能提升;而且所有的改动都只是地址映射关系的改变,不增加额外的电路;地址映射的改动能保证一一映射,不需要操作系统管理。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (12)

1.一种高速缓冲存储器Cache地址的映射处理方法,其特征在于,包括:
获取处理核发送的访问地址所对应的物理地址,所述物理地址包括物理页面号PPN和页偏移;
将所述物理地址映射成Cache地址,所述Cache地址依次包括第一高速缓冲存储器集合索引Cache Set Index1、高速缓冲存储器标签Cache Tag、第二高速缓冲存储器集合索引Cache Set Index2,以及高速缓冲存储器块偏移Cache Block Offset;其中,位于高位的所述Cache Set Index1和位于低位的所述Cache Set Index2共同组成高速缓冲存储器集合索引Cache Set Index,且所述Cache Set Index1位于所述PPN的覆盖范围内,所述CacheSet Index1为着色位,并且所述Cache Tag包括位于高位的第一高速缓冲存储器标签CacheTag1和位于低位的第二高速缓冲存储器标签Cache Tag2;且所述Cache Set Index1位于所述Cache Tag1和所述Cache Tag2之间;所述Cache Tag2位于所述Cache Set Index1和所述Cache Set Index2之间;
其中,将所述物理地址映射成Cache地址,包括:
将所述PPN映射成所述Cache Tag1和所述Cache Set Index1;
将所述页偏移映射成所述Cache Tag2、所述Cache Set Index2以及所述Cache BlockOffset。
2.根据权利要求1所述的方法,其特征在于,所述Cache Set Index1和所述Cache SetIndex2的大小相等。
3.根据权利要求2所述的方法,其特征在于,所述Cache Tag1和所述Cache Tag2的大小相等。
4.根据权利要求1所述的方法,其特征在于,所述将所述物理地址映射成Cache地址具体通过可编程寄存器控制完成。
5.根据权利要求1或4所述的方法,其特征在于,所述将所述物理地址映射成Cache地址在任一一级Cache前进行。
6.一种高速缓冲存储器Cache地址的映射处理方法,其特征在于,包括:
获取处理核发送的访问地址所对应的伪物理地址,所述伪物理地址包括伪物理页面号和伪页偏移;其中,所述伪物理页面号中包括第一地址部分,所述伪页偏移包括第二地址部分,所述第一地址部分与所述第二地址部分大小相同;
通过将所述第一地址部分与所述第二地址部分互换位置以完成将所述伪物理地址映射成真实物理地址,所述真实物理地址包括真实物理页面号PPN和页偏移;其中,所述PPN包括所述第二地址部分,所述页偏移包括所述第一地址部分;
将所述真实物理地址映射成Cache地址,所述Cache地址包括高速缓冲存储器标签Cache Tag、高速缓冲存储器集合索引Cache Set Index,以及高速缓冲存储器块偏移CacheBlock Offset;其中,所述第一地址部分位于所述Cache Set Index的覆盖范围内。
7.根据权利要求6所述的方法,其特征在于,所述将所述伪物理地址映射成真实物理地址具体通过可编程寄存器控制完成。
8.根据权利要求6或7所述的方法,其特征在于,所述将所述伪物理地址映射成真实物理地址在任一一级Cache前进行。
9.高速缓冲存储器Cache地址的映射处理装置,其特征在于,包括:
第一获取模块,用于获取处理核发送的访问地址所对应的物理地址,所述物理地址包括物理页面号PPN和页偏移;
第一映射模块,用于将所述物理地址映射成Cache地址,所述Cache地址依次包括第一高速缓冲存储器集合索引Cache Set Index1、高速缓冲存储器标签Cache Tag、第二高速缓冲存储器集合索引Cache Set Index2,以及高速缓冲存储器块偏移Cache Block Offset;其中,位于高位的所述Cache Set Index1和位于低位的所述Cache Set Index2共同组成高速缓冲存储器集合索引Cache Set Index,且所述Cache Set Index1位于所述PPN的覆盖范围内,所述Cache Set Index1为着色位,并且,所述Cache Tag分成位于高位的第一高速缓冲存储器标签Cache Tag1和位于低位的第二高速缓冲存储器标签Cache Tag2;且所述Cache Set Index1位于所述Cache Tag1和所述Cache Tag2之间;所述Cache Tag2位于所述Cache Set Index1和所述Cache Set Index2之间;
其中,所述第一映射模块用于:
将所述PPN映射成所述Cache Tag1和所述Cache Set Index1;
将所述页偏移映射成所述Cache Tag2、所述Cache Set Index2以及所述Cache BlockOffset。
10.根据权利要求9所述的装置,其特征在于,所述Cache Set Index1和所述Cache SetIndex2的大小相等。
11.根据权利要求9所述的装置,其特征在于,所述Cache Tag1和所述Cache Tag2的大小相等。
12.一种高速缓冲存储器Cache地址的映射处理装置,其特征在于,包括:
第一获取模块,获取处理核发送的访问地址所对应的伪物理地址,所述伪物理地址包括伪物理页面号和伪页偏移;其中,所述伪物理页面号中包括第一地址部分,所述伪页偏移包括第二地址部分,所述第一地址部分与所述第二地址部分大小相同;
第一映射模块,用于通过将所述第一地址部分与所述第二地址部分互换位置以完成将所述伪物理地址映射成真实物理地址,所述真实物理地址包括真实物理页面号PPN和页偏移;其中,所述PPN包括所述第二地址部分,所述页偏移包括所述第一地址部分;
第二映射模块,用于将所述真实物理地址映射成Cache地址,所述Cache地址包括高速缓冲存储器标签Cache Tag、高速缓冲存储器集合索引Cache Set Index,以及高速缓冲存储器块偏移Cache Block Offset;其中,所述第一地址部分位于所述Cache Set Index的覆盖范围内。
CN201410080762.7A 2014-03-06 2014-03-06 高速缓冲存储器Cache地址的映射处理方法和装置 Active CN104899159B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201410080762.7A CN104899159B (zh) 2014-03-06 2014-03-06 高速缓冲存储器Cache地址的映射处理方法和装置
PCT/CN2015/073789 WO2015131853A1 (zh) 2014-03-06 2015-03-06 高速缓冲存储器Cache地址的映射处理方法和装置
US15/257,506 US9984003B2 (en) 2014-03-06 2016-09-06 Mapping processing method for a cache address in a processor to provide a color bit in a huge page technology

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410080762.7A CN104899159B (zh) 2014-03-06 2014-03-06 高速缓冲存储器Cache地址的映射处理方法和装置

Publications (2)

Publication Number Publication Date
CN104899159A CN104899159A (zh) 2015-09-09
CN104899159B true CN104899159B (zh) 2019-07-23

Family

ID=54031833

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410080762.7A Active CN104899159B (zh) 2014-03-06 2014-03-06 高速缓冲存储器Cache地址的映射处理方法和装置

Country Status (3)

Country Link
US (1) US9984003B2 (zh)
CN (1) CN104899159B (zh)
WO (1) WO2015131853A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766259B (zh) * 2016-08-23 2021-08-20 华为技术有限公司 页表缓存的访问方法、页表缓存、处理器芯片和存储单元
US20180349036A1 (en) * 2017-06-01 2018-12-06 Seagate Technology Llc Data Storage Map with Custom Map Attribute
CN109299021B (zh) * 2017-07-24 2023-06-16 阿里巴巴集团控股有限公司 页迁移方法、装置和中央处理器
CN109857681B (zh) * 2017-11-30 2023-07-18 华为技术有限公司 高速缓存cache地址映射方法以及相关设备
US11262937B2 (en) 2020-05-01 2022-03-01 Micron Technology, Inc. Balancing data for storage in a memory device

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652872A (en) * 1994-03-08 1997-07-29 Exponential Technology, Inc. Translator having segment bounds encoding for storage in a TLB
US5860151A (en) * 1995-12-07 1999-01-12 Wisconsin Alumni Research Foundation Data cache fast address calculation system and method
US6581140B1 (en) * 2000-07-03 2003-06-17 Motorola, Inc. Method and apparatus for improving access time in set-associative cache systems
CN1486463A (zh) * 2001-01-15 2004-03-31 �����ɷ� 高速缓存及寻址方法
CN1517882A (zh) * 2003-01-16 2004-08-04 矽统科技股份有限公司 内存地址的重新映射方法
US20060026364A1 (en) * 2004-07-30 2006-02-02 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US20100077149A1 (en) * 2008-09-20 2010-03-25 Moyer William C Method and Apparatus for Managing Cache Reliability
CN101727405A (zh) * 2008-10-20 2010-06-09 株式会社东芝 虚拟地址高速缓冲存储器和方法以及处理器
US20120297139A1 (en) * 2011-05-20 2012-11-22 Samsung Electronics Co., Ltd. Memory management unit, apparatuses including the same, and method of operating the same

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100450675B1 (ko) 2002-03-19 2004-10-01 삼성전자주식회사 성능향상 및 전력소모를 감소시킬 수 있는 tlb
US20040078544A1 (en) * 2002-10-18 2004-04-22 Silicon Integrated Systems Corporation Memory address remapping method
JP2011198091A (ja) * 2010-03-19 2011-10-06 Toshiba Corp 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
CN102184142B (zh) 2011-04-19 2015-08-12 中兴通讯股份有限公司 一种利用巨页映射降低cpu资源消耗的方法和装置
CN102819497B (zh) * 2012-05-31 2015-09-30 华为技术有限公司 一种内存分配方法、装置及系统
CN103455443B (zh) 2013-09-04 2017-01-18 华为技术有限公司 一种缓存管理方法和装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652872A (en) * 1994-03-08 1997-07-29 Exponential Technology, Inc. Translator having segment bounds encoding for storage in a TLB
US5860151A (en) * 1995-12-07 1999-01-12 Wisconsin Alumni Research Foundation Data cache fast address calculation system and method
US6581140B1 (en) * 2000-07-03 2003-06-17 Motorola, Inc. Method and apparatus for improving access time in set-associative cache systems
CN1486463A (zh) * 2001-01-15 2004-03-31 �����ɷ� 高速缓存及寻址方法
CN1517882A (zh) * 2003-01-16 2004-08-04 矽统科技股份有限公司 内存地址的重新映射方法
US20060026364A1 (en) * 2004-07-30 2006-02-02 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US20100077149A1 (en) * 2008-09-20 2010-03-25 Moyer William C Method and Apparatus for Managing Cache Reliability
CN101727405A (zh) * 2008-10-20 2010-06-09 株式会社东芝 虚拟地址高速缓冲存储器和方法以及处理器
US20120297139A1 (en) * 2011-05-20 2012-11-22 Samsung Electronics Co., Ltd. Memory management unit, apparatuses including the same, and method of operating the same

Also Published As

Publication number Publication date
WO2015131853A1 (zh) 2015-09-11
US20160371198A1 (en) 2016-12-22
CN104899159A (zh) 2015-09-09
US9984003B2 (en) 2018-05-29

Similar Documents

Publication Publication Date Title
US11354230B2 (en) Allocation of distributed data structures
CN104899159B (zh) 高速缓冲存储器Cache地址的映射处理方法和装置
CN110998549B (zh) 地址转换缓存
CN102662860B (zh) 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法
US9612975B2 (en) Page cache device and method for efficient mapping
CN105893269A (zh) 一种Linux系统下内存管理方法
EP2472412B1 (en) Explicitly regioned memory organization in a network element
KR102661020B1 (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US9256545B2 (en) Shared memory access using independent memory maps
CN110892387B (zh) 存储器节点控制器
KR20160122278A (ko) 프리페칭을 갖는 변환 색인 버퍼
EP3262513B1 (en) Data caching
CN102662869B (zh) 虚拟机中的内存访问方法和装置及查找器
CN104169892A (zh) 并发访问的组相联溢出缓存
US20130111132A1 (en) Cache Memory That Supports Tagless Addressing
GB2551756A (en) Apparatus and method for performing address translation
CN110869916B (zh) 用于两层写时复制的方法和装置
US20160170896A1 (en) N-ary tree for mapping a virtual memory space
CN112631962A (zh) 存储管理装置、存储管理方法、处理器和计算机系统
US11256630B2 (en) Cache address mapping method and related device
CN104077176B (zh) 增加虚拟机标识符域的方法及装置
CN106528453B (zh) 基于复合尺度页的页表分区管理装置和方法
CN111651380B (zh) 一种基于描述符表的参数加载方法
US20120324167A1 (en) Multicore processor system and multicore processor
CN104378295A (zh) 表项管理装置及表项管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant