原理:程序访问局部性

        在较短时间内由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内
        时间:在一小段时间内,最近被访问过的程序和数据很可能再次被访问
        空间:在最近的未来要用到的信息很可能与现在正在使用的信息在程序空间上是相邻或相近的
主存和缓存按块存储
---- 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. RSA-演变过程、原理、特点(加解密及签名)及公钥私钥的生成

    本篇是iOS逆向开发总结的第一篇文章,是关于iOS密码学的相关技术分析和总结,希望对大家有所帮助,如果有错误地方欢迎指正. 一.前言 密码学的历史追溯到2000年前,相传古罗马凯撒大帝为了防止敌方截获 ...

  2. java-i++的原理探究

    先看例子: package com.test; publick class Auto{ public static void main(String[] args){ Auto inc=new Aut ...

  3. C++中哪些函数不能声明为virtual?

    首先要明确,virtual是用于支持类多态的关键字,所以出现在类声明之外的地方都是错误的.由此可以断定下文的1. 普通函数(即非类成员函数)不能是virtual的,否则不能通过编译,virtual只能 ...

  4. 百万年薪python之路 -- 面向对象之三大特性

    1.面向对象之三大特性 1.1封装 封装:就是把一堆代码和数据,放在一个空间,并且可以使用 对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封 ...

  5. 手写一个简单的ElasticSearch SQL转换器(一)

    一.前言 之前有个需求,是使ElasticSearch支持使用SQL进行简单查询,较新版本的ES已经支持该特性(不过貌似还是实验性质的?) ,而且git上也有elasticsearch-sql 插件, ...

  6. 基于TORCS和Torch7实现端到端连续动作自动驾驶深度强化学习模型(A3C)的训练

    基于TORCS(C++)和Torch7(lua)实现自动驾驶端到端深度强化学习模型(A3C-连续动作)的训练 先占坑,后续内容有空慢慢往里填 训练系统框架 先占坑,后续内容有空慢慢往里填 训练系统核心 ...

  7. TCP Socket服务端客户端(二)

    本文服务端客户端封装代码转自https://blog.csdn.net/zhujunxxxxx/article/details/44258719,并作了简单的修改. 1)服务端 此类主要处理服务端相关 ...

  8. 本地客户端(自己的电脑)连接远程Oracle数据库(服务器端),客户端安装步骤

    如果本地自己的电脑没有安装Oracle(服务器端数据库),那就要单独安装HA-Instant Client-v11.2.0.3.0.exe(oracle_client客户端) 如果本地安装了Oracl ...

  9. 在windows下用with open 打开html文件报gbk错误

    with open('xx.html'  , 'rb' ,enconding='utf-8')as f:    可能原因是由于HTML是在Linux下开发的,与windons 系统编码不兼容

  10. Redis bin目录和info命令

    1.Redis bin目录和info命令 概述: bin目录是说我们的redis的安装目录中的bin目录,里面存放着一些可执行文件 info命令会列出当前连接的Redis实例的所有指标信息 下面我就对 ...