精华内容
下载资源
问答
  • TLB和cache的关系

    千次阅读 2018-03-06 15:50:59
    一)TLB1)TLB的概述TLB是一个内存管理单元用于改进虚拟地址到物理地址转换速度缓存.TLB是位于内存中页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址取数据.分页与页表概念性...

    一)TLB

    1)TLB的概述

    TLB是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存.

    TLB是位于内存中的页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据.


    分页与页表

    概念性内容不再阐述。直接给出解释。

    MMU为内存管理单元,其作为硬件用于将虚拟地址映射为物理地址。上图右边部分,箭头所述部分内容即采用MMU完成地址映射。

    虚拟地址通过多级页表映射后对应末级页表项,末级页表项中存放的是物理地址页框号。即一个虚拟地址,通过MMU找到对应的物理页框号,通过虚拟地址后12位作为页内偏移,索引到具体物理地址上的内容。

    页表项的结构:

    长度为32位,其中最后20位为页框号内容,“在/不在“位表示当前页表项对应的物理页框是位于内存中还是位于物理磁盘上,“保护”位指定当前页面是否可读、写、执行,“修改”位指明当前物理页面是否是一个脏页,即是否已经被写入到磁盘上。


    2)tlb的原理

    当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找.
    TLB中保存着虚拟地址(前20位)和页框号的对映关系,如果匹配到虚拟地址就可以迅速找到页框号(页框号可以理解为页表项),通过页框号与虚拟地址后12位的偏移组合得到最终的物理地址.

    如果没在TLB中匹配到虚拟地址,就出现TLB丢失,需要到页表中查询页表项,如果不在页表中,说明要读取的内容不在内存,需要到磁盘读取.

    TLB是MMU中的一块高速缓存,也是一种Cache.

    在分页机制中,TLB中的数据和页表的数据关联,不是由处理器维护,而是由OS来维护,TLB的刷新是通过装入处理器中的CR3寄存器来完成.

    如果MMU发现在TLB中没有命中,它在常规的页表查找后,用找到的页表项替换TLB中的一个条目.

    3)tlb的刷新原则

    当进程进行上下文切换时重新设置cr3寄存器,并且刷新tlb.

    有两种情况可以避免刷tlb.
     第一种情况是使用相同页表的进程切换.
     第二种情况是普通进程切换到内核线程.

    lazy-tlb(懒惰模式)的技术是为了避免进程切换导致tlb被刷新.
    当普通进程切换到内核线程时,系统进入lazy-tlb模式,切到普通进程时退出该模式.

     

     

    二)cache 
    1)cache的概念:
    cache是为了解决处理器与慢速DRAM(慢速DRAM即内存)设备之间巨大的速度差异而出现的.
    cache属于硬件系统,linux不能管理cache.但会提供flush整个cache的接口.
    cache分为一级cache,二级cache,三级cache等等.一级cache与cpu处于同一个指令周期.


    例如:查看当前系统的cache.

    dmidecode -t cache

    # dmidecode 2.9
    SMBIOS 2.6 present.

    Handle 0x0700, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 1
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 128 KB
            Maximum Size: 128 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Data
            Associativity: 8-way Set-associative

    Handle 0x0701, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 2
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 1024 KB
            Maximum Size: 2048 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 8-way Set-associative

    Handle 0x0702, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 3
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 4096 KB
            Maximum Size: 4096 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 16-way Set-associative

    分别是:
    1级cache:128KB
    2级cache:1024KB
    3级cache:4096KB

    2)Cache的存取单位(Cache Line)

    CPU从来不从DRAM直接读/写字节或字,从CPU到DRAM的每次读或写的第一步都要经过L1 cache,每次以整数行读或写到DRAM中.
    Cache Line是cache与DRAM同步的最小单位.
    典型的虚拟内存页面大小为4KB,而典型的Cache line通常的大小为32或64字节.
    CPU 读/写内存都要通过Cache,如果数据不在Cache中,需要把数据以Cache Line为单位去填充到Cache,即使是读/写一个字节.
    CPU 不存在直接读/写内存的情况,每次读/写内存都要经过Cache.

    3)Cache的工作模式

    数据回写(write-back):这是最高性能的模式,也是最典型的,在回写模式下,cache内容更改不需要每次都写回内存,直到一个新的 cache要刷新或软件要求刷新时,才写回内存.
    写通过(write-through):这种模式比回写模式效率低,因为它每次强制将内容写回内存,以额外地保存cache的结果,在这种模式写耗时,而读和回写模一样快,这都为了内存与cache相一致而付出的代价.
    预取 (prefectching):一些cache允许处理器对cache line进行预取,以响应读请求,这样被读取的相邻内容也同时被读出来,如果读是随机的,将会使CPU变慢,预取一般与软件进行配合以达到最高性能.


    注:
    大部分的cache允许软件在某个区域设置模式,一个区域可能是回写,另一个可能是预取.用户一般不能改变cache的模式, 这些通常由设备驱动程序来控制.
    预取通常由软件通过所谓的cache隐函数madvise进行控制.

    例如:查看当前系统的cache在哪种模式下工作

    dmidecode -t cache

    # dmidecode 2.9
    SMBIOS 2.6 present.

    Handle 0x0700, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 1
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 128 KB
            Maximum Size: 128 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Data
            Associativity: 8-way Set-associative

    Handle 0x0701, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 2
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 1024 KB
            Maximum Size: 2048 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 8-way Set-associative

    Handle 0x0702, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 3
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 4096 KB
            Maximum Size: 4096 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 16-way Set-associative
            
    结果表明都是回写,如下:
    Operational Mode: Write Back

     

    三)内存一致性

    write back会涉及内存一致性,涉有到一系列的问题:

    1)多处理要系统更新cache时,一个处理器修改了cache的内容,第二个处理器将不能访问这个cache,直到这个cache的内容被写内存.
    在现代处理器中硬件已经做了精心的设计,确保这种事情不会发生,硬件负责保持cache在各个CPU之间一致.

    2)外围硬件设备可以通过DMA(Direct Memory Access)访问内存,而不让处理器知道,也不会利用cache,这样在内存和cache之间就会出现不同步的情况.
    管理DMA的操作是操作系统的工作,比如设备驱动程序,它将保证内存与cache的一致性.

    3)当在cache中的数据比内存中的数据老时,称为stale.如果软件初始化DMA,使设备和RAM之间传递数据,那么软件必须告诉 CPU,cache中的条目必须失效.

    4)当在cache中的数据比内存中的数据新时,称为dirty.在设备驱动程序允许一个设备经DMA从内存读数据时,它必须确保所有的dirty 条目写进内存.也叫做flushing或sync cache

    展开全文
  • TLB和cache关系

    2014-01-14 14:48:27
    一)TLB 1)TLB的概述 ...TLB是一个内存管理单元用于改进虚拟地址到...TLB是位于内存中页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址取数据. 2)tlb的原理 当cpu对数据

    http://blog.csdn.net/witsmakemen/article/details/18222251

    一)TLB

    1)TLB的概述

    TLB是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存.

    TLB是位于内存中的页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据.

    2)tlb的原理

    当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找.
    TLB中保存着虚拟地址(前20位)和页框号的对映关系,如果匹配到虚拟地址就可以迅速找到页框号(页框号可以理解为页表项),通过页框号与虚拟地址后12位的偏移组合得到最终的物理地址.

    如果没在TLB中匹配到虚拟地址,就出现TLB丢失,需要到页表中查询页表项,如果不在页表中,说明要读取的内容不在内存,需要到磁盘读取.

    TLB是MMU中的一块高速缓存,也是一种Cache.

    在分页机制中,TLB中的数据和页表的数据关联,不是由处理器维护,而是由OS来维护,TLB的刷新是通过装入处理器中的CR3寄存器来完成.

    如果MMU发现在TLB中没有命中,它在常规的页表查找后,用找到的页表项替换TLB中的一个条目.

    3)tlb的刷新原则

    当进程进行上下文切换时重新设置cr3寄存器,并且刷新tlb.

    有两种情况可以避免刷tlb.
     第一种情况是使用相同页表的进程切换.
     第二种情况是普通进程切换到内核线程.

    lazy-tlb(懒惰模式)的技术是为了避免进程切换导致tlb被刷新.
    当普通进程切换到内核线程时,系统进入lazy-tlb模式,切到普通进程时退出该模式.

     

     

    二)cache 
    1)cache的概念:
    cache是为了解决处理器与慢速DRAM(慢速DRAM即内存)设备之间巨大的速度差异而出现的.
    cache属于硬件系统,linux不能管理cache.但会提供flush整个cache的接口.
    cache分为一级cache,二级cache,三级cache等等.一级cache与cpu处于同一个指令周期.


    例如:查看当前系统的cache.

    dmidecode -t cache

    # dmidecode 2.9
    SMBIOS 2.6 present.

    Handle 0x0700, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 1
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 128 KB
            Maximum Size: 128 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Data
            Associativity: 8-way Set-associative

    Handle 0x0701, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 2
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 1024 KB
            Maximum Size: 2048 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 8-way Set-associative

    Handle 0x0702, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 3
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 4096 KB
            Maximum Size: 4096 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 16-way Set-associative

    分别是:
    1级cache:128KB
    2级cache:1024KB
    3级cache:4096KB

    2)Cache的存取单位(Cache Line)

    CPU从来不从DRAM直接读/写字节或字,从CPU到DRAM的每次读或写的第一步都要经过L1 cache,每次以整数行读或写到DRAM中.
    Cache Line是cache与DRAM同步的最小单位.
    典型的虚拟内存页面大小为4KB,而典型的Cache line通常的大小为32或64字节.
    CPU 读/写内存都要通过Cache,如果数据不在Cache中,需要把数据以Cache Line为单位去填充到Cache,即使是读/写一个字节.
    CPU 不存在直接读/写内存的情况,每次读/写内存都要经过Cache.

    3)Cache的工作模式

    数据回写(write-back):这是最高性能的模式,也是最典型的,在回写模式下,cache内容更改不需要每次都写回内存,直到一个新的 cache要刷新或软件要求刷新时,才写回内存.
    写通过(write-through):这种模式比回写模式效率低,因为它每次强制将内容写回内存,以额外地保存cache的结果,在这种模式写耗时,而读和回写模一样快,这都为了内存与cache相一致而付出的代价.
    预取 (prefectching):一些cache允许处理器对cache line进行预取,以响应读请求,这样被读取的相邻内容也同时被读出来,如果读是随机的,将会使CPU变慢,预取一般与软件进行配合以达到最高性能.


    注:
    大部分的cache允许软件在某个区域设置模式,一个区域可能是回写,另一个可能是预取.用户一般不能改变cache的模式, 这些通常由设备驱动程序来控制.
    预取通常由软件通过所谓的cache隐函数madvise进行控制.

    例如:查看当前系统的cache在哪种模式下工作

    dmidecode -t cache

    # dmidecode 2.9
    SMBIOS 2.6 present.

    Handle 0x0700, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 1
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 128 KB
            Maximum Size: 128 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Data
            Associativity: 8-way Set-associative

    Handle 0x0701, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 2
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 1024 KB
            Maximum Size: 2048 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 8-way Set-associative

    Handle 0x0702, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 3
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 4096 KB
            Maximum Size: 4096 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 16-way Set-associative
            
    结果表明都是回写,如下:
    Operational Mode: Write Back

     

    三)内存一致性

    write back会涉及内存一致性,涉有到一系列的问题:

    1)多处理要系统更新cache时,一个处理器修改了cache的内容,第二个处理器将不能访问这个cache,直到这个cache的内容被写内存.
    在现代处理器中硬件已经做了精心的设计,确保这种事情不会发生,硬件负责保持cache在各个CPU之间一致.

    2)外围硬件设备可以通过DMA(Direct Memory Access)访问内存,而不让处理器知道,也不会利用cache,这样在内存和cache之间就会出现不同步的情况.
    管理DMA的操作是操作系统的工作,比如设备驱动程序,它将保证内存与cache的一致性.

    3)当在cache中的数据比内存中的数据老时,称为stale.如果软件初始化DMA,使设备和RAM之间传递数据,那么软件必须告诉 CPU,cache中的条目必须失效.

    4)当在cache中的数据比内存中的数据新时,称为dirty.在设备驱动程序允许一个设备经DMA从内存读数据时,它必须确保所有的dirty 条目写进内存.也叫做flushing或sync cache.

    展开全文
  • TLB和cache

    2014-07-22 14:19:50
    TLB是位于内存中页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址取数据. 2)tlb的原理 当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找. TLB中保存着虚拟...

    一)TLB

    1)TLB的概述

    TLB是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存.

    TLB是位于内存中的页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据.

    2)tlb的原理

    当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找.
    TLB中保存着虚拟地址(前20位)和页框号的对映关系,如果匹配到虚拟地址就可以迅速找到页框号(页框号可以理解为页表项),通过页框号与虚拟地址后12位的偏移组合得到最终的物理地址.

    如果没在TLB中匹配到虚拟地址,就出现TLB丢失,需要到页表中查询页表项,如果不在页表中,说明要读取的内容不在内存,需要到磁盘读取.

    TLB是MMU中的一块高速缓存,也是一种Cache.

    在分页机制中,TLB中的数据和页表的数据关联,不是由处理器维护,而是由OS来维护,TLB的刷新是通过装入处理器中的CR3寄存器来完成.

    如果MMU发现在TLB中没有命中,它在常规的页表查找后,用找到的页表项替换TLB中的一个条目.

    3)tlb的刷新原则

    当进程进行上下文切换时重新设置cr3寄存器,并且刷新tlb.

    有两种情况可以避免刷tlb.
     第一种情况是使用相同页表的进程切换.
     第二种情况是普通进程切换到内核线程.

    lazy-tlb(懒惰模式)的技术是为了避免进程切换导致tlb被刷新.
    当普通进程切换到内核线程时,系统进入lazy-tlb模式,切到普通进程时退出该模式.

     

     

    二)cache 
    1)cache的概念:
    cache是为了解决处理器与慢速DRAM(慢速DRAM即内存)设备之间巨大的速度差异而出现的.
    cache属于硬件系统,linux不能管理cache.但会提供flush整个cache的接口.
    cache分为一级cache,二级cache,三级cache等等.一级cache与cpu处于同一个指令周期.


    例如:查看当前系统的cache.

    dmidecode -t cache

    # dmidecode 2.9
    SMBIOS 2.6 present.

    Handle 0x0700, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 1
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 128 KB
            Maximum Size: 128 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Data
            Associativity: 8-way Set-associative

    Handle 0x0701, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 2
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 1024 KB
            Maximum Size: 2048 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 8-way Set-associative

    Handle 0x0702, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 3
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 4096 KB
            Maximum Size: 4096 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 16-way Set-associative

    分别是:
    1级cache:128KB
    2级cache:1024KB
    3级cache:4096KB

    2)Cache的存取单位(Cache Line)

    CPU从来不从DRAM直接读/写字节或字,从CPU到DRAM的每次读或写的第一步都要经过L1 cache,每次以整数行读或写到DRAM中.
    Cache Line是cache与DRAM同步的最小单位.
    典型的虚拟内存页面大小为4KB,而典型的Cache line通常的大小为32或64字节.
    CPU 读/写内存都要通过Cache,如果数据不在Cache中,需要把数据以Cache Line为单位去填充到Cache,即使是读/写一个字节.
    CPU 不存在直接读/写内存的情况,每次读/写内存都要经过Cache.

    3)Cache的工作模式

    数据回写(write-back):这是最高性能的模式,也是最典型的,在回写模式下,cache内容更改不需要每次都写回内存,直到一个新的 cache要刷新或软件要求刷新时,才写回内存.
    写通过(write-through):这种模式比回写模式效率低,因为它每次强制将内容写回内存,以额外地保存cache的结果,在这种模式写耗时,而读和回写模一样快,这都为了内存与cache相一致而付出的代价.
    预取 (prefectching):一些cache允许处理器对cache line进行预取,以响应读请求,这样被读取的相邻内容也同时被读出来,如果读是随机的,将会使CPU变慢,预取一般与软件进行配合以达到最高性能.


    注:
    大部分的cache允许软件在某个区域设置模式,一个区域可能是回写,另一个可能是预取.用户一般不能改变cache的模式, 这些通常由设备驱动程序来控制.
    预取通常由软件通过所谓的cache隐函数madvise进行控制.

    例如:查看当前系统的cache在哪种模式下工作

    dmidecode -t cache

    # dmidecode 2.9
    SMBIOS 2.6 present.

    Handle 0x0700, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 1
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 128 KB
            Maximum Size: 128 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Data
            Associativity: 8-way Set-associative

    Handle 0x0701, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 2
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 1024 KB
            Maximum Size: 2048 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 8-way Set-associative

    Handle 0x0702, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 3
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 4096 KB
            Maximum Size: 4096 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 16-way Set-associative
            
    结果表明都是回写,如下:
    Operational Mode: Write Back

     

    三)内存一致性

    write back会涉及内存一致性,涉有到一系列的问题:

    1)多处理要系统更新cache时,一个处理器修改了cache的内容,第二个处理器将不能访问这个cache,直到这个cache的内容被写内存.
    在现代处理器中硬件已经做了精心的设计,确保这种事情不会发生,硬件负责保持cache在各个CPU之间一致.

    2)外围硬件设备可以通过DMA(Direct Memory Access)访问内存,而不让处理器知道,也不会利用cache,这样在内存和cache之间就会出现不同步的情况.
    管理DMA的操作是操作系统的工作,比如设备驱动程序,它将保证内存与cache的一致性.

    3)当在cache中的数据比内存中的数据老时,称为stale.如果软件初始化DMA,使设备和RAM之间传递数据,那么软件必须告诉 CPU,cache中的条目必须失效.

    4)当在cache中的数据比内存中的数据新时,称为dirty.在设备驱动程序允许一个设备经DMA从内存读数据时,它必须确保所有的dirty 条目写进内存.也叫做flushing或sync cache.

    展开全文
  • TLBcache的深入分析

    万次阅读 2014-06-17 14:56:30
    TLB是位于内存中页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址取数据. 2)tlb的原理 当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找. TLB中保存着虚拟地址...
    一)TLB
    1)TLB的概述
    TLB是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存.
    TLB是位于内存中的页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据.

    2)tlb的原理
    当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找.
    TLB中保存着虚拟地址(前20位)和页框号的对映关系,如果匹配到虚拟地址就可以迅速找到页框号,通过页框号与虚拟地址后12位的偏移组合得到最终的物理地址.
    页框号可以理解为页表项
    如果没在TLB中匹配到虚拟地址,就出现TLB丢失,需要到页表中查询页表项,如果不在页表中,说明要读取的内容不在内存,需要到磁盘读取.
    TLB是MMU中的一块高速缓存,也是一种Cache.
    在分页机制中,TLB中的数据和页表的数据关联,不是由处理器维护,而是由OS来维护,TLB的刷新是通过装入处理器中的CR3寄存器来完成.
    如果MMU发现在TLB中没有命中,它在常规的页表查找后,用找到的页表项替换TLB中的一个条目.

    3)tlb的刷新原则
    当进程进行上下文切换时重新设置cr3寄存器,并且刷新tlb.
    有两种情况可以避免刷tlb.
    第一种情况是使用相同页表的进程切换.
    第二种情况是普通进程切换到内核线程.
    lazy-tlb(懒惰模式)的技术是为了避免进程切换导致tlb被刷新.
    当普通进程切换到内核线程时,系统进入lazy-tlb模式,切到普通进程时退出该模式.

    二)cache

    1)cache的概念:
    cache是为了解决处理器与慢速DRAM设备之间巨大的速度差异而出现的.
    cache属于硬件系统,linux不能管理cache.但会提供flush整个cache的接口.
    cache分为一级cache,二级cache,三级cache等等.一级cache与cpu处于同一个指令周期.

    例如:查看当前系统的cache.
    dmidecode -t cache
    # dmidecode 2.9
    SMBIOS 2.6 present.
    Handle 0x0700, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 1
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 128 KB
            Maximum Size: 128 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Data
            Associativity: 8-way Set-associative
    Handle 0x0701, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 2
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 1024 KB
            Maximum Size: 2048 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 8-way Set-associative
    Handle 0x0702, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 3
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 4096 KB
            Maximum Size: 4096 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 16-way Set-associative
    分别是:
    1级cache:128KB
    2级cache:1024KB
    3级cache:4096KB

    2)Cache的存取单位(Cache Line)
    CPU从来不从DRAM直接读/写字节或字,从CPU到DRAM的每次读或写的第一步都要经过L1 cache,每次以整数行读或写到DRAM中.
    Cache Line是cache与DRAM同步的最小单位.
    典型的虚拟内存页面大小为4KB,而典型的Cache line通常的大小为32或64字节.
    CPU读/写内存都要通过Cache,如果数据不在Cache中,需要把数据以Cache Line为单位去填充到Cache,即使是读/写一个字节.
    CPU不存在直接读/写内存的情况,每次读/写内存都要经过Cache.

    3)Cache的工作模式
    数据回写(write-back):这是最高性能的模式,也是最典型的,在回写模式下,cache内容更改不需要每次都写回内存,直到一个新的cache要刷新或软件要求刷新时,才写回内存.
    写通过(write-through):这种模式比回写模式效率低,因为它每次强制将内容写回内存,以额外地保存cache的结果,在这种模式写耗时,而读和回写模一样快,这都为了内存与cache相一致而付出的代价.
    预取(prefectching):一些cache允许处理器对cache line进行预取,以响应读请求,这样被读取的相邻内容也同时被读出来,如果读是随机的,将会使CPU变慢,预取一般与软件进行配合以达到最高性能.

    注:
    大部分的cache允许软件在某个区域设置模式,一个区域可能是回写,另一个可能是预取.用户一般不能改变cache的模式,这些通常由设备驱动程序来控制.
    预取通常由软件通过所谓的cache隐函数madvise进行控制.
    例如:查看当前系统的cache在哪种模式下工作
    dmidecode -t cache
    # dmidecode 2.9
    SMBIOS 2.6 present.
    Handle 0x0700, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 1
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 128 KB
            Maximum Size: 128 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Data
            Associativity: 8-way Set-associative
    Handle 0x0701, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 2
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 1024 KB
            Maximum Size: 2048 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 8-way Set-associative
    Handle 0x0702, DMI type 7, 19 bytes
    Cache Information
            Socket Designation: Not Specified
            Configuration: Enabled, Not Socketed, Level 3
            Operational Mode: Write Back
            Location: Internal
            Installed Size: 4096 KB
            Maximum Size: 4096 KB
            Supported SRAM Types:
                    Unknown
            Installed SRAM Type: Unknown
            Speed: Unknown
            Error Correction Type: Single-bit ECC
            System Type: Unified
            Associativity: 16-way Set-associative
           
    结果表明都是回写,如下:
    Operational Mode: Write Back

    三)内存一致性
    内存一致性涉有到一系列的问题:
    1)多处理要系统更新cache时,一个处理器修改了cache的内容,第二个处理器将不能访问这个cache,直到这个cache的内容被写内存.
    在现代处理器中硬件已经做了精心的设计,确保这种事情不会发生,硬件负责保持cache在各个CPU之间一致.
    2)外围硬件设备可以通过DMA(Direct Memory Access)访问内存,而不让处理器知道,也不会利用cache,这样在内存和cache之间就会出现不同步的情况.
    管理DMA的操作是操作系统的工作,比如设备驱动程序,它将保证内存与cache的一致性.
    3)当在cache中的数据比内存中的数据老时,称为stale.如果软件初始化DMA,使设备和RAM之间传递数据,那么软件必须告诉CPU,cache中的条目必须失效.
    4)当在cache中的数据比内存中的数据新时,称为dirty.在设备驱动程序允许一个设备经DMA从内存读数据时,它必须确保所有的dirty条目写进内存.也叫做flushing或sync cache.
    展开全文
  • TLB - Cache - Page命中关系小结 前置知识——CPU根据虚地址访存流程 ①访问虚地址读取虚页号 → 访问基址寄存器读取页表起始地址 → 拼接起始地址虚页号得到页表地址 → 依据页表地址访问对应页表项 → 根据...
  • 一)TLB 1)TLB的概述 TLB是一个内存管理单元用于改进虚拟地址到物理地址...当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找.TLB中保存着虚拟地址(前20位)页框号对映关系,如 果匹配到虚拟地址就...
  • TLB是位于内存中页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址取数据. 2)tlb的原理 当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找. TLB中保存着虚拟...
  • TLB、页表、Cache、主存之间访问关系 首先,程序员应该给出一个逻辑地址。通过逻辑地址去查询TLB和页表(一般是同时查询,TLB是页表子集,所以TLB命中,页表一定命中;但是页表命中,TLB不一定命中),以确定该...
  • TLB cache 原理

    2020-04-17 15:53:47
    虚拟地址物理地址映射关系存储在页表中,而现在页表又是分级。64位系统一般都是3~5级。常见配置是4级页表,就以4级页表为例说明。分别是PGD、PUD、PMD、PTE四级页表。在硬件上会有一个叫做页表基地址寄存器...
  • TLB中ASIDnG bit的关系

    千次阅读 2018-07-18 00:12:01
    TLB是硬件上一个cache,用于提升访问页表(这里应该是二级页表)速度。MMU在将虚拟地址转换成物理地址时首先去TLB中找合适entry,如果能找到,则立即返回物理地址;如果TLB中找不到,则需访问Memory中页表,且会...
  • CPU Cache处理器通常会在芯片中包含硬件缓存以提高内存访问性能  L1: 通常分为指令缓存数据缓存  L2: 同时缓存指令数据  L3: 更大一级缓存可选 一级缓存通常按虚拟内存地址空间寻址,二级及以上按...
  • TLB、PCID与ASID故事

    2019-11-17 11:44:23
    最近学习过程中了解到TLB和PCID、ASID等概念,突然发现自己将TLB与Cache的概念容易搞混。于是深入了解这几个名词和关系,本周做一些总结。本文的各部分内容分布如下: TLB的引入 TLB与Cache PCID和ASID的引入与作用...
  • CACHE & TLB(二)

    千次阅读 2013-03-11 15:15:38
    四.虚拟高速缓存  1.虚拟高速缓存概念     ... 在高速缓存建立映射表之后,如果虚拟地址物理地址映射关系发生变化,而从虚拟高速缓存来看,虚拟地址不变,所以依然会命中而直接返回,从
  • 首先引入 cache 高速缓存,来缓解高速 cpu 低速内存之间拖带关系。然后是虚拟内存机制,虚拟内存能够很好帮助程序员避免麻烦内存管理与冲突等问题,并且将内存作为模块化独立出来。 上一篇博客回顾:计...
  • 【转】Cache工作原理

    2018-08-16 17:24:55
    1. TLBCache的关系 TLB是位于内存的页表cache,用于改进物理地址到虚拟地址的转换的缓存。Cache是为缓和CPU存储器之前的速度差异而增加的高速缓存,有多级cache结构。 CPU访问时,EPN(Effective Page ...
  • 了解虚拟地址物理地址的关系; 掌握如何通过设置MMU来控制虚拟地址到物理地址的转化; 了解MMU的内存访问权限机制; 了解TLBCache、Write buffer的原理,使用时的注意事项; 通过实例深刻掌握上述要点;
  • 1.了解虚拟地址物理地址的关系 2.掌握如何控制MMU来控制虚拟地址到物理地址的转化 3.了解MMU内存方位权限 4.了解TLBCache、Write buffer的原理,使用时的注意事项 Cache简述及协处理器指令Cache简述及协处理...
  • 了解虚拟地址物理地址的关系; 掌握如何通过设置MMU来控制虚拟地址到物理地址的转化; 了解MMU的内存访问权限机制; 了解TLBCache、Write buffer的原理,使用时的注意事项; 通过实例深刻掌握上述要点...
  • 了解虚拟地址物理地址的关系 掌握如何通过设置 MMU 来控制虚拟地址到物理地址的转化 了解 MMU 的内存访问权限机制 了解 TLBCache、Write Buffer 的原理,使用时的注意事项 通过实例深刻掌握上述要点 内存...
  • 内存管理单元MMU

    2019-09-27 11:42:03
    参考文献: [1] 《嵌入式系统软件操作...4. TLBCache、Write buffer原理,使用时注意事项 MMU提供一种内存保护硬件机制。内存保护用来防止地址越界防止操作越权。采用内存保护机制每个应用程序都...
  • 杂记,整理

    2012-03-20 09:22:33
    MMU作用: 提供虚拟地址和物理地址映射, 内存访问权限保护和Cache缓存控制等硬件支持。 TLB: Translation Lookaside Buffer,转换旁路缓存,TLB是MMU核心部件,它缓存少量虚拟地址与物理地址转换关系,...
  • kernel 内存 I/O

    2016-08-09 22:07:10
    提供虚拟地址和物理地址映射、内存访问权限保护和cache缓存控制等硬件支持TLB(translation lookaside buffer):转换旁路缓存,TLB是MMU核心部件,它缓存少量虚拟地址与物理地址转换关系,是转换表cacheTTW...
  • TLB中没有所需虚拟地址与物理地址转换关系时,会去主存储器转换表中获取相应关系,并缓存到TLB中。 2.3 DTLB/ITLB:数据TLB/指令TLB。 2.4 C:高速缓存。 2.5 B:缓冲。 CPU数据访问流程 Linux内存管理 ...
  • MMU

    2017-03-13 19:29:00
    高性能处理器一般会提供一个内存管理单元(MMU),该单元辅助操作系统进行内存管理,提供虚拟地址和物理地址映射、内存访问权限保护和Cache缓存控制等硬件支持 TLB:Translation Lookaside Buffer,即转换旁路...
  • 本篇文章是学习了《linux内核设计与实现》...缓存部分虚拟地址物理地址映射关系。 TTW 当TLB没有时候,经过TTW转换后报错到TLB中; 页: 内核把物理页作为内存管理基本单位,MMC通常都是以页为单位...
  • 文章目录OSlab2学习笔记:学习重点TLBcache、MMU、页表等存在位置是怎样?有什么关系?(结合访存过程谈)什么时候用虚拟地址/物理地址?内存控制块page2pa为什么可以得到物理地址两级页表机制页目录自映射...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

tlb和cache的关系