21得票3回答
x86设置页面脏位的速度有多快?

从软件角度看,当一条指令使内存页变脏时,核心实际上标记该页为脏状态的延迟是多少? 换句话说,如果一条指令使页面变脏,下一条指令能否读取PTE并查看设置的脏位? 我不关心实际经过的周期时间,只关心是否存在软件可见窗口,在此窗口中脏位尚未设置。 我似乎找不到参考手册中的任何保证。

20得票2回答
比mremap()更快的内存页面移动方法是什么?

我一直在尝试使用mremap()函数。我希望能够以更高的速度移动虚拟内存页,至少比复制它们要快。我有一些算法的想法,可以利用能够快速移动内存页的优势。问题是下面的程序显示,mremap()非常慢,至少在我的i7笔记本电脑上,与按字节复制相比,速度要慢得多。 测试源代码如何工作?mmap() ...

20得票5回答
在什么情况下使用大页面可以提高速度?

现代x86 CPU具有支持比传统的4K更大的页面大小的能力(即2MB或4MB),并且有操作系统工具(Linux,Windows)可以访问此功能。上面提到的Microsoft链接指出,大页面“增加了翻译缓冲区的效率,这可以提高经常访问的内存性能”。但这并不能预测大页面是否会改善任何特定情况。我对...

19得票1回答
TLB是否在多个核之间共享?

我听说TLB由MMU而不是CPU缓存维护。 那么,一个TLB存在于CPU上并在所有处理器之间共享,还是每个处理器都有自己的TLB缓存? 请问有人能解释一下MMU和L1、L2缓存之间的关系吗?

17得票1回答
TLB与页表

页面表将每个虚拟页面与其关联的物理帧相关联。TLB也是这样做的,只不过它仅包含页面表的一个子集。 如果页面表执行相同的操作并具有更多数据,那么TLB的目的是什么? TLB的目的是加快虚拟地址到物理地址的转换速度。当CPU访问虚拟地址时,它会首先检查TLB以查找已经缓存的映射,如果没有找到...

16得票1回答
建议Prolog处理器利用大页。

有没有支持使用大页面(每个内存页面2MB/4MB)而不是普通的4Kb内存页面的Prolog实现。 理想情况下,我希望能向解释器/编译器/运行时声明,对于某些特定应用程序,可以使用X个大页面作为各种堆栈/划痕内存的空间。 当然,并非所有应用程序都能受益于此,但我相信有不少应用程序能够从中受益...

15得票3回答
TLB命中是否可能导致内存页面错误?

在UC伯克利由John Kubiatowicz (Prof. Kuby)主讲的操作系统视频讲座中,他提到TLB命中并不意味着相应的页已经在主存中。仍然可能出现页面故障。 从技术上讲,TLB是页面表项的高速缓存,由于并非所有页面表项都在主存中有相应的页可用。对于TLB也可能是如此。TLB命中可能...

15得票1回答
Intel处理器TLB ASID标记有多少位?如何处理“ASID溢出”? TLB(转换后备缓存)ASID标记的位数因特尔处理器为多少?如何处理“ASID溢出”?

根据一些操作系统教材,为了加快上下文切换速度,人们在TLB标记字段中为每个进程添加ASID,这样我们就不需要在上下文切换时刷新整个TLB。 我听说一些ARM和MIPS处理器确实在TLB中有ASID。但我不确定英特尔x86处理器是否有ASID。 同时,似乎ASID通常比PID(32位)少一些...

14得票1回答
如何解释perf iTLB-loads,iTLB-load-misses?

我有一个测试用例要观察性能,它是通过iTLB加载和iTLB加载不命中来实现的 perf stat -e dTLB-loads,dTLB-load-misses,iTLB-loads,iTLB-load-misses -p 22479 并获得输出: 进程ID“22479”的性能计数器统计信息...

12得票1回答
Linux(x86-64)中支持多个巨页面大小吗?

Linux系统在x86-64架构下是否支持多个大页大小(例如除4KB基本页大小外的2MB和1GB大小)? 如果是,是否有一种方法可以指定给定分配使用哪个大页大小? 换句话说,我的问题是,在执行mmap()时是否使用了"MAP_HUGETLB"标志,它将映射默认大小的巨大页面分配。是否有任何方式...