Memory 如何根据TLB大小和平均内存访问时间计算进程大小

Memory 如何根据TLB大小和平均内存访问时间计算进程大小,memory,tlb,page-tables,Memory,Tlb,Page Tables,在分页内存系统中,整个进程都加载到内存中(不是按需分页),您有一个35个条目的TLB。假设内存访问在任何一页中的概率是相同的(与正常情况不同)。如果TLB搜索时间为5nsec,内存访问时间为50nsec,那么如果有效访问时间为70nsec,页面中的进程有多大 如何计算进程的大小???此系统在进程中使用虚拟内存,为了访问内存,应将虚拟地址转换为物理地址。此翻译使用“页表”()的某些变体存储在同一物理内存中 在没有TLB的变体(大小为零的TLB条目)中,每个程序访问都需要从页表中读取翻译条目,才能进

在分页内存系统中,整个进程都加载到内存中(不是按需分页),您有一个35个条目的TLB。假设内存访问在任何一页中的概率是相同的(与正常情况不同)。如果TLB搜索时间为5nsec,内存访问时间为50nsec,那么如果有效访问时间为70nsec,页面中的进程有多大


如何计算进程的大小???

此系统在进程中使用虚拟内存,为了访问内存,应将虚拟地址转换为物理地址。此翻译使用“页表”()的某些变体存储在同一物理内存中

在没有TLB的变体(大小为零的TLB条目)中,每个程序访问都需要从页表中读取翻译条目,才能进行真正的访问。因此,有效(平均)内存访问时间将等于2*主内存访问时间

eff_time(TLB_size_0) = 2 * main_memory_access_time
TLB是一种优化(更多信息请查看手册),它缓存了几个最近使用的翻译(每个翻译条目描述1页)。在理想情况下,程序使用的所有虚拟地址都将命中TLB,并且只有TLB的延迟会增加到内存访问时间中。对于35个条目的TLB,当访问的页面不超过35页时,程序(或时间段)也是如此

但当程序进行统一内存访问并使用比TLB中存储的页面更多的页面(页面计数的大小更大)时,一些访问将需要执行“页面表漫游”(在1级页面表-1个额外内存访问的情况下)来重新填充一些TLB条目。如果1/5的程序内存访问未命中TLB(4/5不访问),则表示有效访问时间如下

eff_time (TLB_miss_rate_of_1_over_5) = (1-1/5) * full_access_time_with_TLB_hit + 1/5 * full_access_time_with_TLB_miss

其中,满访问时间点击是指在TLB中进行成功搜索并进行1次主存访问的时间,满访问时间点击是指进行不成功的TLB搜索、访问页表(通过读取主存)的时间,(如果MMU未优化,则可能重新填充TLB并重新进行搜索)然后执行应用程序所需的内存访问。

如何定义“有效访问时间”?什么是(这里使用的是书)以及为什么需要它?使用哪种MMU和页面漫游(是一个级别、两个级别还是更多级别)?@osgx我假设是一个级别。这是一个家庭作业问题,我只得到了这些。不,你没有。在做作业之前还有半学期的CS课程。你是如何定义“有效访问时间”的?你知道什么是TLB吗?@osgx我不知道“有效”访问时间与前面提到的访问时间是什么意思。我知道TLB是什么,它做了什么(虚拟地将页面映射到地址,并减少从所述地址访问信息的时间),一些想法被添加为答案;这里没有完整的解决方案。还要检查和查找有效访问时间的可能定义。