CN104516822B - 一种内存访问方法和设备 - Google Patents
一种内存访问方法和设备 Download PDFInfo
- Publication number
- CN104516822B CN104516822B CN201310456953.4A CN201310456953A CN104516822B CN 104516822 B CN104516822 B CN 104516822B CN 201310456953 A CN201310456953 A CN 201310456953A CN 104516822 B CN104516822 B CN 104516822B
- Authority
- CN
- China
- Prior art keywords
- address
- physical address
- virtual address
- virtual
- physical
- 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
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/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]
-
- 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
本发明实施例公开了内存访问方法和设备,应用于计算机信息技术领域。本实施例的内存访问方法中,当TLB中缺失第一虚拟地址对应的信息时,为了使得计算机系统可以访问该第一虚拟地址对应的内存,计算机系统会将第一虚拟地址进行转换获取第二虚拟地址,并根据第一虚拟地址对应的第一物理地址和第二虚拟地址对应的第二物理地址之间的预置的关系计算第一物理地址,然后再根据第一物理地址访问内存。这样当发现TLB缺失某一虚拟地址比如第一虚拟地址对应的信息时,可以不需要从计算机系统内存的页表中得到虚拟地址和物理地址的转换关系,而是可以直接计算得到该第一虚拟地址对应的第一物理地址,降低了对TLB缺失处理的开销。
Description
技术领域
本发明涉及计算机信息技术领域,特别涉及内存访问方法和设备。
背景技术
计算机在执行应用程序的过程中,需要访问内存中加载的程序,计算机在访问内存时是通过被访问内存的物理地址来访问,而在计算机中对内存的管理一般采用分页内存管理,在分页内存管理条件下计算机会为内存生成虚拟地址以方便管理。
目前在计算机中会通过旁路转换缓冲(Translation look aside buffer,TLB)来储存经常被使用的页表(即页表的一个子集),还储存物理地址对应的虚拟地址的信息,该页表中储存着内存的物理地址,计算机可以通过TLB将虚拟地址转换为物理地址,并完成内存的访问。当计算机中的TLB发生缺失时,计算机会获取TLB中缺失的页表指针等信息以访问页表,从分页内存管理下的虚拟地址及从页表中获取对应的物理地址,并替换TLB中的相应表项,使得一般对于TLB缺失处理的开销比较大。
发明内容
本发明实施例提供内存访问方法和设备,降低了对TLB缺失处理的开销。
本发明实施例第一方面提供一种内存访问方法,包括:
接收内存的访问请求,所述访问请求中包括待访问内存的第一虚拟地址;
如果所述第一虚拟地址未储存在旁路转换缓冲TLB中,将所述第一虚拟地址进行转换获取第二虚拟地址;
根据所述第二虚拟地址对应的第二物理地址与所述第一虚拟地址对应的第一物理地址之间的预置的关系计算所述第一物理地址;
根据所述第一物理地址访问所述待访问内存。
本发明实施例第一方面的第一种可能实现方法中,所述将所述第一虚拟地址进行转换获取第二虚拟地址具体包括:将所述第一虚拟地址转换为所述第一虚拟地址递增方向或递减方向的第n个虚拟地址作为第二虚拟地址;所述n为大于0的正整数。
结合本发明实施例第一方面或第一方面的第一种可能实现方法,在本发明实施例第一方面的第二种可能实现方法中,根据所述第二虚拟地址对应的第二物理地址与所述第一虚拟地址对应的第一物理地址之间的预置的关系计算所述第一物理地址,具体包括:
如果所述第一虚拟地址和第二虚拟地址对应连续的物理地址,计算所述第二物理地址连续的物理地址得到所述第一物理地址;
如果所述第二物理地址和第一物理地址非连续,且所述第二物理地址与第一物理地址对应的内存单元之间相隔为时m,若所述第一物理地址对应的内存单元是所述第二物理地址递增方向物理地址的内存单元,则计算所述第二物理地址递增方向的第m+1个物理地址得到所述第一物理地址;若所述第一物理地址对应的内存单元是所述第二物理地址递减方向物理地址的内存单元,则计算所述第二物理地址递减方向的第m+1个物理地址得到所述第一物理地址,所述m是大于0的正整数。
在本发明实施例第一方面的第三种可能实现方法中,所述接收内存的访问请求之前,还包括:
为连续的虚拟地址分配对应的物理地址,所述物理地址部分或全部连续;
将虚拟地址和物理地址的对应关系储存到所述TLB中,并储存物理地址对应的标记位,所述标记位用于指示所述连续的虚拟地址对应物理地址之间是否连续。
结合本发明实施例第一方面的第三种可能实现方式,在本发明实施例第一方面的第四种可能实现方式中:
所述将所述第一虚拟地址进行转换获取第二虚拟地址,具体包括:将所述第一虚拟地址转换为与所述第一虚拟地址连续的第二虚拟地址;
所述根据所述第二虚拟地址对应的第二物理地址与所述第一虚拟地址对应的第一物理地址之间的预置的关系计算所述第一物理地址,具体包括:如果所述第二物理地址的标志位指示所述连续的虚拟地址对应的物理地址之间连续,则计算所述第二物理地址连续的物理地址得到所述第一物理地址。
结合本发明实施例第一方面的第三种可能实现方法,在本发明实施例第一方面的第五种可能实现方法中,所述方法还包括:
将所述第一虚拟地址和第一物理地址的信息储存到所述TLB中。
结合本发明实施例第一方面的第五种可能实现方法,在本发明实施例第一方面的第六种可能实现方法中,所述将所述第一虚拟地址和第一物理地址的信息储存到所述TLB中,具体包括:
将所述第一虚拟地址和计算的第一物理地址的对应关系储存到所述TLB;
将所述第一物理地址对应的标记位从计算机系统内存的页表中传递到所述TLB中。
本发明实施例第二方面提供一种内存访问设备,包括:
请求接收单元,用于接收内存的访问请求,所述访问请求中包括待访问内存的第一虚拟地址;
获取单元,用于如果所述请求接收单元接收的访问请求中第一虚拟地址未储存在旁路转换缓冲TLB中,将所述第一虚拟地址进行转换获取第二虚拟地址;
地址计算单元,用于根据所述转换单元转换的第二虚拟地址对应的第二物理地址与所述第一虚拟地址对应的第一物理地址之间的预置的关系计算所述第一物理地址;
访问单元,用于根据所述地址计算单元计算的第一物理地址访问所述待访问内存。
本发明实施例第二方面的第一种可能实现方式中,所述获取单元,具体用于将所述第一虚拟地址转换为所述第一虚拟地址递增方向或递减方向的第n个虚拟地址作为第二虚拟地址;所述n为大于0的正整数。
结合本发明实施例第二方面或第二方面的第一种可能实现方法,在本发明实施例第二方面的第二种可能实现方法中,所述地址计算单元,具体用于如果所述第一虚拟地址和第二虚拟地址对应连续的物理地址,计算所述第二物理地址连续的物理地址得到所述第一物理地址;
如果所述第二物理地址和第一物理地址非连续,且所述第二物理地址与第一物理地址对应的内存单元之间相隔为m时,若所述第一物理地址对应的内存单元是所述第二物理地址递增方向物理地址的内存单元,则计算所述第二物理地址递增方向的第m+1个物理地址得到所述第一物理地址;若所述第一物理地址对应的内存单元是所述第二物理地址递减方向物理地址的内存单元,则计算所述第二物理地址递减方向的第m+1个物理地址得到所述第一物理地址,所述m是大于0的正整数。
在本发明实施例第二方面的第三种可能实现方法中,还包括:
地址分配单元,用于为连续的虚拟地址分配对应的物理地址,所述物理地址部分或全部连续;
对应储存单元,用于将虚拟地址和物理地址的对应关系储存到所述TLB中,并储存物理地址对应的标记位,所述标记位用于指示所述连续的虚拟地址对应的物理地址是否连续。
结合本发明实施例第二方面的第三种可能实现方式,在本发明实施例第二方面的第四种可能实现方式中:
所述获取单元,具体用于将所述第一虚拟地址转换为与所述第一虚拟地址连续的第二虚拟地址;
所述地址计算单元,具体用于如果所述第二物理地址的标志位指示所述连续的虚拟地址对应的物理地址之间连续,则计算所述第二物理地址连续的物理地址得到所述第一物理地址。
结合本发明实施例第二方面的第三种可能实现方法,在本发明实施例第二方面的第五种可能实现方法中,还包括:
信息储存单元,用于将所述第一虚拟地址和第一物理地址的信息储存到所述TLB中。
结合本发明实施例第二方面的第五种可能实现方法,在本发明实施例第二方面的第六种可能实现方法中,所述信息储存单元具体包括:
对应关系储存单元,用于将所述第一虚拟地址和计算的第一物理地址的对应关系储存到所述TLB;
传递单元,用于将所述第一物理地址对应的标记位从计算机系统内存的页表中传递到所述TLB中。
本实施例的内存访问方法中,当TLB中缺失第一虚拟地址对应的信息时,为了使得计算机系统可以访问该第一虚拟地址对应的内存,计算机系统会将第一虚拟地址进行转换获取第二虚拟地址,并根据第一虚拟地址对应的第一物理地址和第二虚拟地址对应的第二物理地址之间的预置的关系计算第一物理地址,然后再根据第一物理地址访问内存。这样当发现TLB缺失某一虚拟地址比如第一虚拟地址对应的信息时,可以不需要从计算机系统内存的页表中得到虚拟地址和物理地址的转换关系,而是可以直接计算得到该第一虚拟地址对应的第一物理地址,降低了对TLB缺失处理的开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种内存访问方法的流程图;
图2是本发明实施例提供的另一种内存访问方法的流程图;
图3是本发明实施例提供的另一种内存访问方法的流程图;
图4是本发明实施例提供的另一种内存访问方法的流程图;
图5a是本发明实施例中TLB中储存虚拟地址和物理地址的一种结构示意图;
图5b是本发明实施例中TLB中储存虚拟地址和物理地址的另一种结构示意图;
图6是本发明实施例提供的一种内存访问设备的结构示意图;
图7是本发明实施例提供的另一种内存访问设备的结构示意图;
图8是本发明实施例提供的另一种内存访问设备的结构示意图;
图9是本发明实施例提供的另一种内存访问设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种内存访问方法,主要是应用于包括处理器、TLB和内存的计算机系统中,由处理器所执行的方法,流程图如图1所示,包括:
步骤101,接收内存的访问请求,访问请求中包括待访问内存的第一虚拟地址。
步骤102,判断第一虚拟地址是否储存在旁路转换缓冲TLB,如果为储存即未命中,则该TLB可能缺失了,计算机需要执行步骤103。
可以理解,在计算机系统中是采用分页内存管理方式来管理计算机系统中的内存的,为了方便管理,计算机系统会为内存生成虚拟地址,并通过页表的形式将内存的物理地址储存在内存中,一段连续的虚拟地址可以对应一段连续的物理地址,也可以对应不连续的物理地址。这样在页表中还会储存着用于指示连续的虚拟地址对应的物理地址之间是否连续的标记位,具体地,一个物理地址对应一个标记位,该标记位用于指示两个连续的虚拟地址是否对应该物理地址与向后或向前连续的物理地址;且页表中还可以储存各个物理地址对应内存单元的其它信息,比如用户对该内存单元的使用权限信息等,这里内存单元是指计算机系统中储存数据的最小划分单元。计算机系统可以将内存中经常被使用的页表及页表中包括的物理地址对应的虚拟地址保存到TLB中,这样在进行虚拟地址和物理地址之间的转换时,查找的内容比较少,可以大大加快虚拟地址与物理地址之间的转换,从而可以加快内存的访问效率,其中TLB是位于内存和处理器之间的独立装置,从处理器发出的访问请求需要向TLB查询物理地址,之后才能送入内存中进行读写数据。
当计算机系统在执行某项功能时,需要先访问内存中加载的与该功能相关的信息,而在需要访问内存时,计算机系统会触发本实施例的方法。计算机系统的处理器在运行的过程中,会不停地执行指令(指令为应用程序的代码),当遇到访问待访问内存的指令时,处理器一般通过如下的过程来执行一条指令:取指令、对指令进行译码即解析、执行、访问内存和写回。在这个过程中,处理器中的其中一个单元在遇到访问待访问内存的指令时,会向另一个单元发送内存的访问请求,当另一单元接收到访问请求后,会根据访问请求中包括的第一虚拟地址到TLB中查找是否储存有该第一虚拟地址,如果没有储存即未命中TLB,则说明该TLB可能缺失了,在本实施例中,计算机系统可以通过下述步骤103到105来得到该第一虚拟地址对应的物理地址以进行内存访问;可以想到的是,如果第一虚拟地址命中了TLB即第一虚拟地址已经储存在TLB中,则可以直接执行步骤106,即在TLB中查找到与第一虚拟地址对应的第一物理地址,并根据查找到的第一物理地址访问待访问内存。
步骤103,将第一虚拟地址进行转换获取第二虚拟地址。
具体地,在获取第二虚拟地址时,计算机系统可以将第一虚拟地址转换为第一虚拟地址递增方向或递减方向的第n个虚拟地址作为第二虚拟地址,其中n为大于0的正整数。比如将第一虚拟地址转换为与第一虚拟地址连续的第二虚拟地址,一般情况下,虚拟地址是通过虚拟页号(Virtual Page Number,VPN)来表示,在转换为连续的第二虚拟地址时,计算机系统可以在第一虚拟地址的虚拟页号基础上加1或减1得到第二虚拟地址的虚拟页号,从而得到第二虚拟地址。
步骤104,根据第二虚拟地址对应的第二物理地址与第一虚拟地址对应的第一物理地址之间的预置的关系计算第一物理地址。其中第一物理地址和第二物理地址之间的关系可以是用户根据实际需要预先储存到计算机系统中的。
步骤105,根据步骤104中计算的第一物理地址访问待访问内存。
具体地,计算机系统可以先根据第二虚拟地址的虚拟页号,在TLB中找到与第二虚拟地址相对应的信息包括第二物理地址和标记位等;然后需要确定第二物理地址和第一物理地址之间的关系,比如根据第二物理地址对应的标记位可知,该第一物理地址和第二物理地址连续,则直接在第二物理地址的基础上得到与第二物理地址连续的物理地址即可得到第一物理地址;而如果第一虚拟地址和第二虚拟地址对应的物理地址之间具有一定的计算规律,则根据该计算规律计算得到第一物理地址,比如连续的各个虚拟地址对应的物理地址中,相邻物理地址的内存单元之间的间隔都是m,则第一物理地址为第二物理地址递增方向或递减方向的第m+1个内存单元的物理地址,这里m是大于0的正整数。
其中,如果在TLB中也没有储存第二虚拟地址,则计算机系统可以按照步骤103和104的方法,将第二虚拟地址进行转换获取另一虚拟地址,并根据第二虚拟地址和另一虚拟地址对应的物理地址之间的关系,通过另一虚拟地址对应的物理地址计算该第二物理地址,从而再按照上述步骤104的方法计算得到第一物理地址。这样可以按照上述步骤103和104中所述的方法,逐个计算得到TLB中缺失的物理地址信息,并最终计算得到第一物理地址以进行内存的访问。
需要说明的是,上述在TLB缺失第一虚拟地址时,通过计算得到第一虚拟地址对应的第一物理地址的方法,主要是针对连续的虚拟地址对应连续的物理地址;或针对连续的虚拟地址对应不连续的物理地址,而这些不连续的物理地址相互之间有一定的计算规律等情况而言的,这样才能根据TLB中未缺失的信息计算得到缺失的物理地址。且上述连续的物理地址指示相邻的内存单元对应的物理地址。
可见,本实施例的内存访问方法中,当TLB中缺失第一虚拟地址对应的信息时,为了使得计算机系统可以访问该第一虚拟地址对应的内存,计算机系统会将第一虚拟地址进行转换获取到第二虚拟地址,并根据第一虚拟地址对应的第一物理地址和第二虚拟地址对应的第二物理地址之间的预置的关系计算第一物理地址,然后再根据第一物理地址访问内存。这样当发现TLB缺失某一虚拟地址比如第一虚拟地址对应的信息时,可以不需要从计算机系统内存中储存的页表中得到虚拟地址和物理地址的转换关系,而是可以直接计算得到该第一虚拟地址对应的第一物理地址,降低了对TLB缺失处理的开销。
在一个具体的实施例中,参考图2所示,计算机系统在执行上述步骤104时,具体可以通过如下步骤1041和1042来实现,具体地:
步骤1041,判断第一虚拟地址和第二虚拟地址是否对应连续的物理地址,如果是,则执行步骤1042;如果不连续,且第二物理地址和第一物理地址之间也没有一定的规律,则不能直接计算得到第一物理地址,需要通过访问计算机系统内存中储存的页表来得到第一虚拟地址对应的第一物理地址。
步骤1042,计算第二物理地址连续的物理地址得到第一物理地址,这里第二物理地址连续的物理地址是指与第二物理地址对应内存单元相邻的另一内存单元的物理地址。
在本实施例中,计算机系统可以通过TLB中储存的第二虚拟地址对应的标记位,得知该第二物理地址是否与第一虚拟地址对应的第一物理地址连续,如果连续,则可以通过第二物理地址计算得到第一物理地址,即可以通过在该第二物理地址的物理页号(Physical Frame Number,PFN)的基础上加1或减1得到第一物理地址的物理页号,进而得到第一物理地址。
需要说明的是,如果通过上述步骤1041判断第二物理地址和第一物理地址非连续,但是第二物理地址与第一物理地址对应的内存单元之间相隔为m(m为大于0的正整数)时,则若第一物理地址对应的内存单元是第二物理地址递增方向物理地址的内存单元,则计算机系统会计算第二物理地址递增方向的第m+1个物理地址得到第一物理地址;若第一物理地址对应的内存单元是第二物理地址递减方向物理地址的内存单元,则计算机系统会计算第二物理地址递减方向的第m+1个物理地址得到第一物理地址,具体地,可以在第二物理地址的物理页号的基础上加m+1或减m+1得到第一物理地址的物理页号,进而得到第一物理地址。
需要说明的是,上述步骤101到106是在TLB中已经储存了经常被使用的页表后计算机系统所执行的内存访问方法,在另一个具体的实施例中,计算机系统还可以执行如下的步骤来实现TLB中页表的储存,流程图如图3所示,包括:
步骤201,为连续的虚拟地址分配对应的物理地址,这些物理地址部分或全部连续。
步骤202,根据步骤201中的分配,将虚拟地址和物理地址的对应关系储存到TLB中,并储存物理地址对应的标记位,该标记位用于指示连续的虚拟地址对应的物理地址之间是否连续。
这样通过上述步骤201和202,将虚拟地址和物理地址的对应关系储存在TLB中,并储存物理地址对应的标记位,可以方便在TLB缺失时,根据该标记位确定连续的虚拟地址对应的物理地址之间的关系,并直接计算缺失的物理地址以进行内存访问。
在这种情况下,计算机系统在执行上述步骤103时,是将第一虚拟地址转换为与第一虚拟地址连续的第二虚拟地址;而在执行上述步骤104时,计算机系统会先在TLB中找到第二物理地址对应的标记位,如果第二物理地址的标志位指示连续的虚拟地址对应的物理地址之间连续,则计算第二物理地址连续的物理地址得到第一物理地址。
另外,需要说明的是,在其它具体的实施例中,当计算机系统通过上述步骤101到106可以计算得到第一物理地址后,即可实现内存的访问,但是TLB中缺失的物理地址对应的一些信息还是需要从内存中页表中传递到TLB中的,比如物理地址的权限信息等属性信息和标记位等。则计算机系统具体可以通过如下的步骤来实现将第一虚拟地址和第一物理地址的信息储存到TLB中,流程图如图4所示,包括:
步骤301,将第一虚拟地址和计算的第一物理地址的对应关系储存到TLB。
步骤302,将第一物理地址对应的其它信息比如标记位从计算机系统内存的页表中传递到TLB中,即执行页表传递(Page Table Walk)的步骤。其中第一物理地址对应的其它信息还可以包括用户对该第一物理地址的使用权限信息等。
上述步骤301和302之间并没有绝对的顺序关系,且步骤301和302与步骤105之间也没有绝对的顺序关系,可以同时执行也可以顺序执行,图4中所示的只是一种具体的实现方式。
以下以一个具体的实施例来说明本发明实施例提供的内存访问方法,在本实施例中,以连续的地址是递增的地址为例说明,在其它实施例中,连续的地址还可以是递减的地址,在此不进行赘述。
(1)参考图5a所示,在一种情况下,计算机系统将虚拟内存(Virtual Memory)中的连续的虚拟地址11000、12000、13000和14000分别映射到物理内存(Physical Memory)中的物理地址1000、2000、3000和5000,则将连续的虚拟地址映射到3个连续的物理地址,和2个非连续的物理地址中。
在本实施例中,计算机系统将内存的物理地址以页表的形式进行储存在内存中,并记录每个物理地址对应的标记位,如果标记位的值为“1”,则指示某一物理地址及其向后连续的另一物理地址分别对应连续的虚拟地址;如果标记位的值为“0”,则指示某一物理地址向后连续的另一物理地址并没有映射与该某一物理地址对应虚拟地址连续的另一虚拟地址。且计算机系统会将经常用到的部分页表信息及页表中物理地址对应的虚拟地址储存到TLB中,一项TLB对应储存一个虚拟地址对应的所有信息包括物理地址和标记位等信息,且每一项TLB通过寄存器标识(ASID)来标识。且在TLB中储存的虚拟地址和物理地址分别使用虚拟页号和物理页号来标记,比如虚拟地址11000的虚拟页号为11,物理地址1000的物理页号为1。
假设整个页表在内存中的物理地址为a,给定某个虚拟地址b,通过一定的计算方法比如a+b得到另一个物理地址c,此时物理地址c对应的内存中储存着虚拟地址b对应的物理地址,这个过程称为页表索引,通过页表索引的过程,计算机可以找到虚拟地址对应的物理地址,然后将物理地址和虚拟地址的对应关系储存到TLB中。
当计算机系统需要访问虚拟地址12000对应的内存,而该虚拟地址对应的信息在TLB中缺失时,计算机系统会将该虚拟地址转换为与该虚拟地址连续的虚拟地址11000;根据虚拟地址11000对应的标记位1,得知该虚拟地址11000对应物理地址向后连续的物理地址映射了与该虚拟地址11000连续的虚拟地址12000,则根据转换为的虚拟地址11000对应的物理地址1000计算得到虚拟地址12000对应的物理地址为2000;最后计算机系统就会根据该物理地址2000来访问内存。
(2)参考图5b所示,在另一种情况下,计算机系统将虚拟内存中的连续的虚拟地址11000、12000和13000和14000分别映射到物理内存中的物理地址1000、3000和5000,则将连续的虚拟地址映射非连续的物理地址,但是这些非连续的物理地址中,相邻的物理地址之间的间隔都是一样的,是具有一定的规律性的。
在本实施例中,当计算机系统需要访问虚拟地址12000对应的内存,而该虚拟地址对应的信息在TLB中缺失时,计算机系统会将该虚拟地址转换为与该虚拟地址连续的虚拟地址11000;根据虚拟地址11000和12000之间对应的物理地址的对应关系,即系统中预置的11000到13000这段连续的虚拟地址对应的物理地址中,相邻的物理地址对应的内存之间间隔一个内存单元,则根据转换为的虚拟地址11000对应的物理地址1000,计算该物理地址向后两个内存单元的物理地址3000即得到了虚拟地址12000对应的物理地址;最后计算机系统就会根据该物理地址3000来访问内存。
本发明实施例还提供一种内存访问设备即上述的计算机系统,其结构示意图如图6所示,包括:
请求接收单元10,用于接收内存的访问请求,所述访问请求中包括待访问内存的第一虚拟地址。
获取单元11,用于如果所述请求接收单元10接收的访问请求中第一虚拟地址未储存在旁路转换缓冲TLB中,将所述第一虚拟地址进行转换获取第二虚拟地址。具体地,获取单元11可以将第一虚拟地址转换为第一虚拟地址递增方向或递减方向的第n个虚拟地址作为第二虚拟地址;所述n为大于0的正整数,比如获取单元11在第一虚拟地址的虚拟页号基础上加1或减1得到第二虚拟地址的虚拟页号,进而得到第二虚拟地址。
地址计算单元12,用于根据所述获取单元11转换的第二虚拟地址对应的第二物理地址与所述第一虚拟地址对应的第一物理地址之间的预置的关系计算所述第一物理地址。
具体地,地址计算单元12,具体用于如果所述第一虚拟地址和第二虚拟地址对应连续的物理地址,计算所述第二物理地址连续的物理地址得到所述第一物理地址。而如果第一虚拟地址和第二虚拟地址对应的物理地址之间具有一定的计算规律,则地址计算单元12会根据该计算规律计算得到第一物理地址,比如第二物理地址和第一物理地址非连续,且第二物理地址与第一物理地址对应的内存单元之间相隔为m时,若第一物理地址对应的内存单元是第二物理地址递增方向物理地址的内存单元,则地址计算单元12计算第二物理地址递增方向的第m+1个物理地址得到所述第一物理地址;若所述第一物理地址对应的内存单元是所述第二物理地址递减方向物理地址的内存单元,则地址计算单元12计算第二物理地址递减方向的第m+1个物理地址得到第一物理地址,其中m是大于0的正整数。
访问单元13,用于根据所述地址计算单元12计算的第一物理地址访问所述待访问内存。
本实施例的内存访问设备中,当TLB中缺失第一虚拟地址对应的信息时,为了使得内存访问设备可以访问该第一虚拟地址对应的内存,获取单元11会将第一虚拟地址进行转换获取第二虚拟地址,并由地址计算单元12根据第一虚拟地址对应的第一物理地址和第二虚拟地址对应的第二物理地址之间的预置的关系计算第一物理地址,然后访问单元13再根据第一物理地址访问内存。这样当发现TLB缺失某一虚拟地址比如第一虚拟地址对应的信息时,可以不需要从计算机系统内存中储存的页表中得到虚拟地址和物理地址的转换关系,而是可以直接计算得到该第一虚拟地址对应的第一物理地址,降低了对TLB缺失处理的开销。
参考图7所示,在一个具体的实施例中,内存方法设备除了可以包括如图6所示的结构外,还可以包括地址分配单元14、对应储存单元15和查询访问单元16,其中:
地址分配单元14,用于为连续的虚拟地址分配对应的物理地址,所述物理地址部分或全部连续;
对应储存单元15,用于根据地址分配单元14的分配,将虚拟地址和物理地址的对应关系储存到所述TLB中,并储存物理地址对应的标记位,所述标记位用于指示所述连续的虚拟地址对应的物理地址是否连续。
查询访问单元16,用于如果所述请求接收单元10接收的访问请求中第一虚拟地址命中旁路转换缓冲TLB,在所述TLB中查询与所述第一虚拟地址对应的第一物理地址,并根据所述第一物理地址访问所述待访问内存。
本实施例中,可以通过地址分配单元14和对应储存单元15将虚拟地址和物理地址的对应关系储存在TLB中,并储存物理地址对应的标记位,可以方便在TLB缺失时,获取单元11根据该标记位确定连续的虚拟地址对应的物理地址之间的关系,并直接计算缺失的物理地址以进行内存访问。当TLB未缺失时,则通过查询访问单元16访问待访问内存。具体地,获取单元11具体将所述第一虚拟地址转换为与所述第一虚拟地址连续的第二虚拟地址;而地址计算单元12,具体在所述第二物理地址的标志位指示所述连续的虚拟地址对应的物理地址之间连续,则计算所述第二物理地址连续的物理地址得到所述第一物理地址。
参考图8所示,在一个具体的实施例中,内存方法设备除了可以包括如图6所示的结构外,还可以包括信息储存单元17,用于将所述第一虚拟地址和第一物理地址的信息储存到所述TLB中。在具体的实施例中,信息储存单元17可以通过对应关系储存单元170和传递单元171来实现,具体地:
对应关系储存单元170,用于将所述第一虚拟地址和计算的第一物理地址的对应关系储存到所述TLB;
传递单元171,用于将所述第一物理地址对应的其它信息比如标记位从计算机系统内存的页表中传递到所述TLB中,即执行页表传递(Page Table Walk)的过程。且第一物理地址对应的其它信息还可以包括用户对该第一物理地址的使用权限信息等。
本发明实施例还提供另一种内存访问设备,结构示意图如图9所示,包括分别连接到总线上的存储器20、处理器21、输入装置23和输出装置24,其中:
存储器20中用来储存从输入装置23输入的数据,且还可以储存处理器21处理数据的必要文件等信息,本实施例中存储器21包括内存和TLB;输入装置23和输出装置24是内存访问设备与其他设备通信的端口,还可以包括内存访问设备外接的设备比如显示器、键盘、鼠标和打印机等。
处理器21,用于接收内存的访问请求,所述访问请求中包括待访问内存的第一虚拟地址;如果所述第一虚拟地址未储存在旁路转换缓冲TLB中,将所述第一虚拟地址进行转换获取第二虚拟地址;根据所述第二虚拟地址对应的第二物理地址与所述第一虚拟地址对应的第一物理地址之间的预置的关系计算所述第一物理地址;并根据所述地址计算单元计算的第一物理地址访问所述待访问内存。可以想到的是,如果所述第一虚拟地址已经储存在旁路转换缓冲TLB,处理器21还用于在所述TLB中查询与所述第一虚拟地址对应的第一物理地址,并根据所述第一物理地址访问所述待访问内存。
具体地,处理器21在获取第二虚拟地址时,将所述第一虚拟地址转换为所述第一虚拟地址递增方向或递减方向的第n个虚拟地址作为第二虚拟地址;所述n为大于0的正整数。比如在第一虚拟地址的虚拟页号基础上加1或减1得到第二虚拟地址的虚拟页号,进而得到第二虚拟地址。处理器21在计算第一物理地址时,如果所述第一虚拟地址和第二虚拟地址对应连续的物理地址,处理器21会计算所述第二物理地址连续的物理地址得到所述第一物理地址。而如果第一虚拟地址和第二虚拟地址对应的物理地址之间具有一定的计算规律,则处理器21会根据该计算规律计算得到第一物理地址,比如如果所述第二物理地址和第一物理地址非连续,且所述第二物理地址与第一物理地址对应的内存单元之间相隔为m时,若所述第一物理地址对应的内存单元是所述第二物理地址递增方向物理地址的内存单元,则计算所述第二物理地址递增方向的第m+1个物理地址得到所述第一物理地址;若所述第一物理地址对应的内存单元是所述第二物理地址递减方向物理地址的内存单元,则计算所述第二物理地址递减方向的第m+1个物理地址得到所述第一物理地址,所述m是大于0的正整数。
进一步地,处理器21还可以用于为连续的虚拟地址分配对应的物理地址,所述物理地址部分或全部连续;并将虚拟地址和物理地址的对应关系储存到所述TLB中,并储存物理地址对应的标记位,所述标记位用于指示所述连续的虚拟地址对应的物理地址之间是否连续。这样将虚拟地址和物理地址的对应关系储存在TLB中,并储存物理地址对应的标记位,可以方便在TLB缺失时,转换单元11根据该标记位确定连续的虚拟地址对应的物理地址之间的关系,并直接计算缺失的物理地址以进行内存访问。
进一步地,当处理器21在计算了第一物理地址后,还可以用于将所述第一虚拟地址和第一物理地址的信息储存到所述TLB中。具体地,将所述第一虚拟地址和计算的第一物理地址的对应关系储存到所述TLB;并将所述第一物理地址对应的其它信息比如标记位从计算机系统内存的页表中传递到所述TLB中,即执行页表传递(Page Table Walk)的过程。且第一物理地址对应的其它信息还可以包括用户对该第一物理地址的使用权限信息等。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光盘等。
以上对本发明实施例所提供的内存访问方法和设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种内存访问方法,其特征在于,包括:
接收内存的访问请求,所述访问请求中包括待访问内存的第一虚拟地址;
如果所述第一虚拟地址未储存在旁路转换缓冲TLB中,将所述第一虚拟地址进行转换获取第二虚拟地址;
根据所述第二虚拟地址对应的第二物理地址与所述第一虚拟地址对应的第一物理地址之间的预置的关系计算所述第一物理地址;
根据所述第一物理地址访问所述待访问内存。
2.如权利要求1所述的方法,其特征在于,所述将所述第一虚拟地址进行转换获取第二虚拟地址具体包括:将所述第一虚拟地址转换为所述第一虚拟地址递增方向或递减方向的第n个虚拟地址作为第二虚拟地址;所述n为大于0的正整数。
3.如权利要求1或2所述的方法,其特征在于,根据所述第二虚拟地址对应的第二物理地址与所述第一虚拟地址对应的第一物理地址之间的预置的关系计算所述第一物理地址,具体包括:
如果所述第一虚拟地址和第二虚拟地址对应连续的物理地址,计算所述第二物理地址连续的物理地址得到所述第一物理地址;
如果所述第二物理地址和第一物理地址非连续,且所述第二物理地址与第一物理地址对应的内存单元之间相隔为m时,若所述第一物理地址对应的内存单元是所述第二物理地址递增方向物理地址的内存单元,则计算所述第二物理地址递增方向的第m+1个物理地址得到所述第一物理地址;若所述第一物理地址对应的内存单元是所述第二物理地址递减方向物理地址的内存单元,则计算所述第二物理地址递减方向的第m+1个物理地址得到所述第一物理地址,所述m是大于0的正整数。
4.如权利要求1所述的方法,其特征在于,所述接收内存的访问请求之前,还包括:
为连续的虚拟地址分配对应的物理地址,所述物理地址部分或全部连续;
将虚拟地址和物理地址的对应关系储存到所述TLB中,并储存物理地址对应的标记位,所述标记位用于指示所述连续的虚拟地址对应的物理地址之间是否连续。
5.如权利要求4所述的方法,其特征在于,所述将所述第一虚拟地址进行转换获取第二虚拟地址,具体包括:将所述第一虚拟地址转换为与所述第一虚拟地址连续的第二虚拟地址;
所述根据所述第二虚拟地址对应的第二物理地址与所述第一虚拟地址对应的第一物理地址之间的预置的关系计算所述第一物理地址,具体包括:如果所述第二物理地址的标志位指示所述连续的虚拟地址对应的物理地址之间连续,则计算所述第二物理地址连续的物理地址得到所述第一物理地址。
6.如权利要求4所述的方法,其特征在于,所述方法还包括:
将所述第一虚拟地址和第一物理地址的信息储存到所述TLB中。
7.如权利要求6所述的方法,其特征在于,所述将所述第一虚拟地址和第一物理地址的信息储存到所述TLB中,具体包括:
将所述第一虚拟地址和计算的第一物理地址的对应关系储存到所述TLB;
将所述第一物理地址对应的标记位从计算机系统内存的页表中传递到所述TLB中。
8.一种内存访问设备,其特征在于,包括:
请求接收单元,用于接收内存的访问请求,所述访问请求中包括待访问内存的第一虚拟地址;
获取单元,用于如果所述请求接收单元接收的访问请求中第一虚拟地址未储存在旁路转换缓冲TLB中,将所述第一虚拟地址进行转换获取第二虚拟地址;
地址计算单元,用于根据所述转换单元转换的第二虚拟地址对应的第二物理地址与所述第一虚拟地址对应的第一物理地址之间的预置的关系计算所述第一物理地址;
访问单元,用于根据所述地址计算单元计算的第一物理地址访问所述待访问内存。
9.如权利要求8所述的设备,其特征在于,所述获取单元,具体用于将所述第一虚拟地址转换为所述第一虚拟地址递增方向或递减方向的第n个虚拟地址作为第二虚拟地址;所述n为大于0的正整数。
10.如权利要求8或9所述的设备,其特征在于,所述地址计算单元,具体用于如果所述第一虚拟地址和第二虚拟地址对应连续的物理地址,计算所述第二物理地址连续的物理地址得到所述第一物理地址;
如果所述第二物理地址和第一物理地址非连续,且所述第二物理地址与第一物理地址对应的内存单元之间相隔为m时,若所述第一物理地址对应的内存单元是所述第二物理地址递增方向物理地址的内存单元,则计算所述第二物理地址递增方向的第m+1个物理地址得到所述第一物理地址;若所述第一物理地址对应的内存单元是所述第二物理地址递减方向物理地址的内存单元,则计算所述第二物理地址递减方向的第m+1个物理地址得到所述第一物理地址,所述m是大于0的正整数。
11.如权利要求8所述的设备,其特征在于,还包括:
地址分配单元,用于为连续的虚拟地址分配对应的物理地址,所述物理地址部分或全部连续;
对应储存单元,用于将虚拟地址和物理地址的对应关系储存到所述TLB中,并储存物理地址对应的标记位,所述标记位用于指示所述连续的虚拟地址对应的物理地址是否连续。
12.如权利要求11所述的设备,其特征在于,所述获取单元,具体用于将所述第一虚拟地址转换为与所述第一虚拟地址连续的第二虚拟地址;
所述地址计算单元,具体用于如果所述第二物理地址的标志位指示所述连续的虚拟地址对应的物理地址之间连续,则计算所述第二物理地址连续的物理地址得到所述第一物理地址。
13.如权利要求11所述的设备,其特征在于,还包括:
信息储存单元,用于将所述第一虚拟地址和第一物理地址的信息储存到所述TLB中。
14.如权利要求13所述的设备,其特征在于,所述信息储存单元具体包括:
对应关系储存单元,用于将所述第一虚拟地址和计算的第一物理地址的对应关系储存到所述TLB;
传递单元,用于将所述第一物理地址对应的标记位从计算机系统内存的页表中传递到所述TLB中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310456953.4A CN104516822B (zh) | 2013-09-29 | 2013-09-29 | 一种内存访问方法和设备 |
PCT/CN2014/086355 WO2015043379A1 (zh) | 2013-09-29 | 2014-09-12 | 一种内存访问方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310456953.4A CN104516822B (zh) | 2013-09-29 | 2013-09-29 | 一种内存访问方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104516822A CN104516822A (zh) | 2015-04-15 |
CN104516822B true CN104516822B (zh) | 2018-01-23 |
Family
ID=52742021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310456953.4A Active CN104516822B (zh) | 2013-09-29 | 2013-09-29 | 一种内存访问方法和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104516822B (zh) |
WO (1) | WO2015043379A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108140216B (zh) * | 2015-09-30 | 2021-10-15 | 丹佛斯有限公司 | 与公用事业仪表的移动应用通信 |
CN107391394A (zh) * | 2017-08-03 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种处理多命名空间lba的方法及装置 |
CN111552653B (zh) * | 2020-05-14 | 2021-01-29 | 上海燧原科技有限公司 | 页表的读取方法、装置、设备及计算机存储介质 |
CN112000592B (zh) * | 2020-07-27 | 2023-08-22 | 瑞芯微电子股份有限公司 | 一种模块间数据交互的方法和装置 |
CN114116541A (zh) * | 2020-08-27 | 2022-03-01 | 华为技术有限公司 | 确定物理地址的方法及芯片系统 |
CN112965921B (zh) * | 2021-02-07 | 2024-04-02 | 中国人民解放军军事科学院国防科技创新研究院 | 一种多任务gpu中tlb管理方法及系统 |
CN114817081A (zh) * | 2022-03-02 | 2022-07-29 | 阿里巴巴(中国)有限公司 | 内存访问方法、装置和输入输出内存管理单元 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6715057B1 (en) * | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
CN1928839A (zh) * | 2005-09-09 | 2007-03-14 | 中国科学院计算技术研究所 | 一种远程内存服务器及其实现方法 |
JP2008009926A (ja) * | 2006-06-30 | 2008-01-17 | Toshiba Corp | 情報処理装置、情報処理システムおよびアドレス変換方法 |
CN102124525A (zh) * | 2008-02-27 | 2011-07-13 | 密克罗奇普技术公司 | 虚拟存储器接口 |
CN102707899A (zh) * | 2011-03-04 | 2012-10-03 | 索尼公司 | 虚拟存储器系统、虚拟存储器控制方法和程序 |
CN103116556A (zh) * | 2013-03-11 | 2013-05-22 | 无锡江南计算技术研究所 | 内存静态划分虚拟化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8412911B2 (en) * | 2009-06-29 | 2013-04-02 | Oracle America, Inc. | System and method to invalidate obsolete address translations |
-
2013
- 2013-09-29 CN CN201310456953.4A patent/CN104516822B/zh active Active
-
2014
- 2014-09-12 WO PCT/CN2014/086355 patent/WO2015043379A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6715057B1 (en) * | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
CN1928839A (zh) * | 2005-09-09 | 2007-03-14 | 中国科学院计算技术研究所 | 一种远程内存服务器及其实现方法 |
JP2008009926A (ja) * | 2006-06-30 | 2008-01-17 | Toshiba Corp | 情報処理装置、情報処理システムおよびアドレス変換方法 |
CN102124525A (zh) * | 2008-02-27 | 2011-07-13 | 密克罗奇普技术公司 | 虚拟存储器接口 |
CN102707899A (zh) * | 2011-03-04 | 2012-10-03 | 索尼公司 | 虚拟存储器系统、虚拟存储器控制方法和程序 |
CN103116556A (zh) * | 2013-03-11 | 2013-05-22 | 无锡江南计算技术研究所 | 内存静态划分虚拟化方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015043379A1 (zh) | 2015-04-02 |
CN104516822A (zh) | 2015-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104516822B (zh) | 一种内存访问方法和设备 | |
CN105830022B (zh) | 访问文件的方法和装置 | |
CN102792285B (zh) | 用于处理数据的装置和方法 | |
US8880544B2 (en) | Method of adapting a uniform access indexing process to a non-uniform access memory, and computer system | |
CN106104499B (zh) | 存储器设备及用于操作高速缓冲存储器的方法 | |
US9298384B2 (en) | Method and device for storing data in a flash memory using address mapping for supporting various block sizes | |
CN101290613B (zh) | Fft处理器的数据存储系统和方法 | |
KR101844521B1 (ko) | 크로스-페이지 프리페칭 방법, 장치, 및 시스템 | |
CN103907099B (zh) | 高速缓存一致性计算机系统中未缓存的短地址转换表 | |
US20110153979A1 (en) | Modified b+ tree to store nand memory indirection maps | |
CN106911743B (zh) | 小文件的写聚合、读聚合方法及系统和客户端 | |
CN105830059A (zh) | 文件访问方法、装置及存储设备 | |
CN110018971A (zh) | 缓存替换技术 | |
CN109521962A (zh) | 一种元数据查询方法、装置、设备及计算机可读存储介质 | |
EP3173952A1 (en) | System and method for removing hash table entries | |
CN115904255B (zh) | 一种数据请求方法、装置、设备及存储介质 | |
CN105359142B (zh) | 哈希连接方法和装置 | |
JP2021534496A (ja) | 階層キャッシュシステムにおけるプリフェッチ管理 | |
CN103488727A (zh) | 基于周期对数的二维时序数据存储和查询方法 | |
GB2581938A (en) | Configuration state registers grouped based on functional affinity | |
RU2010138732A (ru) | Система обновления карты и программа обновления карты с использованием динамической кэш-памяти | |
CN103377141B (zh) | 高速存储区的访问方法以及访问装置 | |
CN108763106B (zh) | 一种基于交叉存储的Cache实现方法 | |
Musuvathi et al. | An incremental heap canonicalization algorithm | |
US20100281082A1 (en) | Subordinate Multiobjects |
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 |