高速缓存

计算机的高速缓存

十年热恋 提交于 2019-11-26 19:57:21
计算机的高速缓存 高速缓存的工作原理 字与字块的概念 字:是指存放在一个存储单元中的二进制代码组合 字块:存储在连续的存储单元中而被看作是一个单元的一组字 字与字块和主存的总容量 字的地址表示方法和计算方法 块地址和块内地址b的计算 高速缓存的命中率 CPU可以从高速缓存中和主存中获取数据,前者的效率比后者高。 命中率:判断CPU从高速缓存中获取数据几率的指标。 命中率的计算公式 访问效率 访问缓存-主存系统平均ta的计算 计算命中率、访问效率和平均时间的例题 访问效率: 平均访问时间: 高速缓存的替换时机 高速缓存的替换策略 随机算法 先进先出的算法(FIFO) 把高速缓存看做是一个先进先出队列 优先替换最先进入队列的字块 最不经常使用的算法(LFU) 优先淘汰最不经常使用的字块 需要额外的空间纪录字块的使用频率 最近少使用算法(LRU) 优先淘汰一段时间内没有使用的字块 有多种实现方法,一般使用双向链表 把当前访问节点置于链表前面(保证链表头部节点是最近使用的) 来源: https://blog.csdn.net/weixin_42581477/article/details/99062643

.net cache对象高速缓存机制

做~自己de王妃 提交于 2019-11-26 14:52:57
在.net中微软给我们提供高速缓存机制,很好的缓解了服务器的压力。.net中提供了aspx页面缓存,cache对象缓存,sql数据库缓存。 这里我只对cache对象缓存使用和背景说下自己的观点。 经常使用动软的代码生成器,在抽象工厂模式下的采用对象缓存创建DAL层实例。一直没有考虑这里的原理,今天翻阅《ASP.NET3.5高级编程》这本书中的高级缓存,突然明白了一个道理,这就是所谓的“学而不思则罔,思而不学则殆”。我们长期在工作的环境下,反而会不去学习思考一些事情,一些代码只知道复制过来,实现了某个功能就行,这样长期下去对自己的职业成长是有影响的。 大家熟知在BS的开发模式下,并行用户是有很多的,而页面的代码,类中对象是共享访问还是有各自独立的实例。很显然每个用户的数据是分离的,是线程独立的。譬如:每个用户的sessionid不同,每个人的实例对象也是不同。例如,一个student类,我的student和其他用户是不一样的,我的studentid,姓名,年龄都是和其他人不同的。这个唯一性是比较好理解吧。 这样的结果就是如果在短时间内,大量用户并行访问网站,就会造成每个会话都会分配一系列的内存空间,短时间内内存得不到释放,系统的访问速度就会降低,性能受到很大影响。 微软给我提供cache缓存对象,缓存是存储在web服务器中应用程序的应用程序域里,所有用户共享使用

深入iOS系统底层之CPU寄存器介绍

南笙酒味 提交于 2019-11-26 02:28:42
一弹指六十刹那,一刹那九百生灭。 --《仁王经》 组件 计算机是一种数据处理设备,它由CPU和内存以及外部设备组成。CPU负责数据处理,内存负责存储,外部设备负责数据的输入和输出,它们之间通过总线连接在一起。CPU内部主要由控制器、运算器和寄存器组成。控制器负责指令的读取和调度,运算器负责指令的运算执行,寄存器负责数据的存储,它们之间通过CPU内的总线连接在一起。每个外部设备(例如:显示器、硬盘、键盘、鼠标、网卡等等)则是由外设控制器、I/O端口、和输入输出硬件组成。外设控制器负责设备的控制和操作,I/O端口负责数据的临时存储,输入输出硬件则负责具体的输入输出,它们间也通过外部设备内的总线连接在一起。 上面的计算机系统结构图中我们可以看出 硬件系统的这种组件化的设计思路总是贯彻到各个环节。在这套设计思想(冯.诺依曼体系架构)里面,总是有一部分负责控制、一部分负责执行、一部分则负责存储,它之间进行交互以及接口通信则总是通过总线来完成。这种设计思路一样的可以应用在我们的软件设计体系里面:组件和组件之间通信通过事件的方式来进行解耦处理,而一个组件内部同样也需要明确好各个部分的职责(一部分负责调度控制、一部分负责执行实现、一部分负责数据存储)。 缓存 一个完整的CPU系统里面有控制部件、运算部件还有寄存器部件。其中寄存器部件的作用就是进行数据的临时存储。既然有内存作为数据存储的场所