原理:程序访问局部性

        在较短时间内由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内
        时间:在一小段时间内,最近被访问过的程序和数据很可能再次被访问
        空间:在最近的未来要用到的信息很可能与现在正在使用的信息在程序空间上是相邻或相近的
主存和缓存按块存储
---- Cache的容量很小,它保存的内容只是主存内容的一个子集,且Cache与主存的数据交换是以块(cache line)为单位的。为了把信息放到Cache中,必须应用某种函数把主存地址定位到Cache中,这称为地址映射
 
---- 在信息按这种映射关系装入Cache后,CPU执行程序时,会将程序中的主存地址变换成Cache地址,这个变换过程叫做地址变换。
 
Cache的地址映射方式有直接映射、全相联映射和组相联映射。

全相联方式

地址映象规则:主存的任意一块可以映象到Cache中的任意一块
1. 主存与缓存分成相同大小的数据块。
2. 主存的某一数据块可以装入缓存的任意一块空间中。
cache与主存之间的数据交换是以“块”为单位进行的。一个“块”中包含若干个“字”,字长由实际情况确定。
习惯上,cache中的“块”称“行”,主存中称“块”。cache的“行”与主存的“块”存储容量相同
cache中的标记与cache的“行”一一对应的。如果某一块主存数据块拷贝到cache中的某一行,该cache行就会形成相应的标记。PPT中主存共有255个地址块,2的8次方等于255,因此需要8位来标记
 
在全相联映射方式中,将内存地址的前m位的块号与cache中所有行的标记同时在比较器中做比较。若块号命中,按b位字地址从cache中读取一个字;若未命中,则按内存地址从主存中读取这个字


直接映射

在直接映射方式中,首先用区内块号找到cache中的对应行,然后用地址中的区号与此行的标记在比较器中做比较。若符合命中,在cache中找到了对应的块,然后用地址中的低b位(块内地址)读取所需的字。若未命中,按内存地址从主存中读取这个字


组相联映射

 
主存分区,Cache分组,主存每个区的块数与Cache的分组数相同。如图,一个区分为4块,因此cache
分为4个组。
组件采用直接映射,主存块存放到哪个组是固定的。一个内存字块对应的cache的组号=字块号%cache组数。
组内采用全相联映射,存到该组哪一行是灵活的。
 
在组相联映射方式中,首先用cache组号找到cache的相应组,然后将区号与该组每一行的区号同时比较,哪一行的标记相符即该行命中。再以内存地址中的块内地址检索此行对应的字。
 

Cache地址映射的更多相关文章

  1. ****** 三十四 ******、软设笔记【存储器系统】-Cache存储器

    Cache存储器 Cache(高速缓冲存储器) 高速缓冲存储器是位于主存与CPU之间的一级存储器,有静态存储芯片(SRAM)组成,容量比较小,速度比主存高得多,接近于CPU的速度,单位成本比内存高.C ...

  2. Intel x86_64 Architecture Background 3

    多层次的cache结构解决了CPU和DRAM之间处理速度不一致的问题,在Intel体系架构下,CPU核心和主存DRAM之间有着三层的cache.其中一层缓存L1和二层缓存L2在CPU核心(core)中 ...

  3. 主存与Cache的地址映射

    最近在复习计算机体系结构,选用的教材是名闻遐迩的<计算机体系结构 量化研究方法 第五版>(Computer Architecture A Quantitative Approach), 关 ...

  4. 主存和cache的地址映射

    cache是一种高速缓冲寄存器,是为解决CPU和主存之间速度不匹配而采用的一项重要技术. 主存与cache的地址映射方式有全相联方式.直接方式和组相联方式三种. 直接映射(directmapping) ...

  5. cache与MMU与总线仲裁

    为了以合理的价格,设计容量和速度满足计算机系统的需求,计算机体系结构设计者设计出了存储器的层次结构. "Cache-主存"和"主存-辅存"是最常见的两种层次结构 ...

  6. s3c6410_MMU地址映射过程详述

    参考: 1)<ARM1176 JZF-S Technical Reference Manual>: Chapter 3 System Control Coprocessor Chapter ...

  7. 内存管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现

    http://blog.csdn.net/pi9nc/article/details/23334659 注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料 ...

  8. TMS320C64x DSP L1 L2 Cache架构(1)——C64x Cache Architecture

    [前沿]研究生阶段从事于DSP和FPGA技术的相关研究工作,学习并整理了大量的技术资料,包括TI公司的官方文档和网络上的详细笔记,花费了大量的时间和精力总结了前人的工作成果.无奈工作却从事于嵌入式技术 ...

  9. Something about cache

    http://www.tyut.edu.cn/kecheng1/2008/site04/courseware/chapter5/5.5.htm 5.5 高速缓冲存储器cache 随着CPU时钟速率的不 ...

随机推荐

  1. 域渗透-凭据传递攻击(pass the hash)完全总结

    总结下PtH具体形式(wmicexec.powershell.msf等) 0x01 PtH攻击原理 && 黄金白银票据 PtH攻击原理 wiki  https://en.wikiped ...

  2. Cocos2d-x 学习笔记(11.7) Repeat RepeatForever

    1. 成员变量 Repeat: unsigned int _times; //create参数 unsigned int _total; //执行的次数 float _nextDt; //startW ...

  3. TomCat中间件漏洞复现总汇

    TomCat中间件漏洞复现 前言 在渗透测试过程中,遇到php的站相对多一点,所以对apache了解的也多一点.TomCat中间件的站了解的比较少一点,这是自己第一次搭建环境测试漏洞,所以在自己摸索的 ...

  4. 【Dubbo】Zookeeper+Dubbo项目demo搭建

    一.Dubbo的注解配置 在Dubbo 2.6.3及以上版本提供支持. 1.@Service(全路径@org.apache.dubbo.config.annotation.Service) 配置服务提 ...

  5. Linux的一些常用命令(一)

    linux 快捷键1.ls 列出本地址上文件, -a 列出所有(包括隐藏文件) -l 按照列表方式显示 -t 按照时间方式排序 2.touch 创建文件 3.  echo 'abc' > 文件名 ...

  6. java 链接mysql

    import java.sql.*; public class ConnectSql { static final String JDBC_DRIVER = "com.mysql.jdbc. ...

  7. 查看java内存情况的几个常用命令

    java 命令简单查看jvm内存使用状况 jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序, ...

  8. css定位 双飞翼

    <!doctype html><html><head><meta charset="utf-8"><title>双飞翼& ...

  9. 微信小程序--获取用户地理位置名称(无须用户授权)的方法

    准备 1.在http://lbs.qq.com/网站申请key 2.在微信小程序后台把apis.map.qq.com添加进request合法域名 效果 添加封装 /** * 发起网络请求 * @par ...

  10. 基于Groovy搭建Ngrinder脚本调试环境

    介绍 最近公司搭建了一套压力测试平台,引用的是开源的项目 Ngrinder,做了二次开发,在脚本管理方面,去掉官方的SVN,引用的是Git,其他就是做了熔断处理等. 对技术一向充满热情的我,必须先来拥 ...