高速缓存

Linux内存管理原理

本文以32位机器为准,串讲一些内存管理的知识点。 1. 虚拟地址、物理地址、逻辑地址、线性地址 虚拟地址又叫线性地址。linux没有采用分段机制,所以逻辑地址和虚拟地址(线性地址)(在用户态,内核态逻辑地址专指下文说的线性偏移前的地址)是一个概念。物理地址自不必提。内核的虚拟地址和物理地址,大部分只差一个线性偏移量。用户空间的虚拟地址和物理地址则采用了多级...

CPU高速缓存行与内存关系 及并发MESI 协议

先来一个整体图 一. 大致关系: CPU Cache --> 前端总线 FSB (下图中的Bus) --> Memory 内存 CPU 为了更快的执行代码。于是当从内存中读取数据时,并不是只读自己想要的部分。而是读取足够的字节来填入高速缓存行。根据不同的 CPU ,高速缓存行大小不同。如 X86 是 32BYTES ,而 ALPHA 是 64...

CSAPP阅读笔记-存储器层次结构-第六章-P400-P462

6.1 存储技术 1.随机访问存储器(RAM),是易失性存储器,掉电存储信息会丢失,与之相对的是非易失性存储器(ROM),它掉电后存储信息不丢失,但前者访问速度较快,但容量有限,通常只有几百或几千兆字节。 2.它分为静态RAM(SRAM)和动态RAM(DRAM),前者更快,价格也更高,密集度更低。 3.磁盘由盘片构成,一个盘片两个面,盘片中央有旋转轴以固定...

Linux12-内存管理

Linux内核第12章 内核不能像用户空间那样奢侈地使用内存,内核与用户空间不同,它不具备这种能力,它不支持简单便捷的内存分配方式。比如,内核一般不能睡眠,此外处理内存分配错误对内核来说也很困难。正是因为这些限制和内存分配机制不能太复杂,所以在内核中获取内存要比在用户空间复杂得多。 12.1 页 内核把物理页作为内存管理的基本单位。尽管处理器的最小可寻址单...

文件系统中对页高速缓存的操作

本文从read函数入手,主要讲述从页缓冲,一直到具体的块请求被提交给块设备驱动程序的过程,以下是本文讲述的一张概图,也是对本文的一个概括,可以结合本图,首先由一个从全局上有个清楚的认识,然后再去查看具体的代码,当然本文只是从大体流程上对页缓冲的处理流程进行分析,还有很多小的细节没有搞清楚,后面还需要继续研究。 1.具体文件系统 我们知道通用文件系统也就是虚...

计组-高速缓存

高速缓存 为了减低成本,增加cpu访问主存的性能,一般都会在主存与cpu之间增加小容量的缓存,可以采用这种方式的一个很主要原因就是程序执行的局部性。 程序的局部性 自我理解程序的局部性就是大多数时候程序都是按照代码一行行的执行可能发生条件转移指令但是程序跳转的范围也不是特别的大。比如for循环情况 for(int i = 0 ; i < 1000 ;...

linux查看CPU高速缓存(cache)信息

一、Linux下查看CPU Cache级数,每级大小 dmesg | grep cache 实例结果如下: 二、查看Cache的关联方式 在/sys/devices/system/cpu/中查看相应的文件夹 如查看cpu0 的一级缓存中的有多少组, $ cat /sys/devices/system/cpu/cpu0/cache/index0/numbe...

32位x86处理器编程架构

1. IA-32架构的基本执行环境 1.1 寄存器的扩展   为了在汇编语言程序中使用经过扩展(Extend) 的寄存器:  在32位模式下,为了生成32位物理地址,处理器需要使用32位的指令指针寄存器。标志寄存器也扩展到32位,第16位和原先保持一致。  32位处理器依然需要以段位单位访问内存,即,只分一个段,段地基地址是0x00000000,段地长度(...

供多处理器系统中的高速缓存同步中使用的转发状态

这里所述的是一种具有五种状态的高速缓存同步协议,该五种状态为:修改、排它、共享、无效和转发(MESIF)。所述MESIF高速缓存同步协议包括转发(F)状态,该状态指明单个数据副本,从所述数据副本中能够产生另一个副本。利用F状态下的超高速缓冲存储器行来响应对超高速缓冲存储器行的副本的请求。在一个实施例中,将新创建的副本置于F状态下并将先前处于F状态下的超高速...

内存管理:01存储器层次结构

         在日常的编程中,我们简单的把存储器系统看成一个线性的字节数组,但实际的存储系统并不是这样的。          存储器系统是一个由具有不同容量,不同成本,不同访问时间的若干存储设备组成的层次结构,从上到下依次是:寄存器,高速缓存存储器,主存,硬盘,网络文件。层次越高,容量越小,成本越高,访问时间越短,高层的存储设备是底层存储设备的缓存区。...