CSAPP--存储器及程序的局部性】的更多相关文章

作为一名程序员,你需要理解计算机存储系统的层次结构,他对应用程序的性能有着巨大的影响,如果程序所需要的数据存储在cpu的寄存器中,那么指令在执行期间,就可以花费零个周期来进行访问,而在Cache中则需要1~30个周期,主存中需要50~200周期,而在磁盘中则需要几千万个周期. 我们需要能够了解系统如何将数据在存储器系统层次结构中上下移动的,这样编写应用程序时我们可以将数据项存储在层次结构较高的地方,那样cpu可以快速的访问到. 存储技术 利用存储器的层次来介绍一下存储器概念. 最高为CPU中的寄…
CSAPP 5 - 优化程序性能 1. 概述 首当其冲的,还是要编写出好的算法和数据结构,优化内部结构 其次才是编写出能让编译器 易优化的,高效的可执行代码.这点在特定的机器上可能有着特定的不同的优化,但有一些基本的优化仍然是相同的. 消除不必要的工作,让代码消耗时间在期望执行的任务上.包括消除或减少函数调用.条件测试.内存引用:同时熟悉处理器如何工作,利用反汇编知道它究竟如何执行操作,从而调整程序获得最大的速度. 利用好处理器的指令级并行能力,同时执行多条指令 2. 利用好编译器自身优化 gc…
程序员学习汇编代码的需求随着时间的推移发生了变化,开始时只要求程序员能直接用汇编语言编写程序,现在则要求他们能够阅读和理解编译器产生的代码. 下面是针对32位机器 数据格式 Intel用术语“字”(word)表示16位数据类型,32位数称为双字(double words),64位数称为四字(quad words),下面是C语言数据类型在32位机器上的字节长度: 大多数GCC生成的汇编代码指令都有一个字符后缀,表面操作数的大小,例如movb传送字节,movw传送字,movl传送双字,但是汇编代码也…
原文链接 /* * Copyright 徐洪志(西北农林科技大学.信息工程学院). All rights reserved. * Data: 2012-4-20 */ // // 此程序是演示了1D和2D纹理存储器的使用 #include <stdio.h> #include <cutil_inline.h> #include <iostream> using namespace std; texture<float> texRef1D; // 1D tex…
在没有专门研究存储器系统之前,我们依赖的存储器模型是一个很简单的概念,也就是把它看成一个线性数组,CPU 能在一个常数时间内访问任何一个存储器位置.虽然在研究别的问题时,这是一个有效的模型,但是它不能反映存储器系统的实际工作方式. 存储器系统(memory system)是一个具有不同容量.成本.访问时间的存储器层次结构.CPU 寄存器保存着最常用的数据:靠近 CPU 的小的.快速的高速缓存存储器(cache)作为一部分存储在相对慢速的主存储器(简称主存)中的数据:主存用来暂时存放存储在容量大.…
目录 随机访问存储器(Random-Access-Memory) 静态RAM 动态RAM 增强的DRAM 非易失性存储器 磁盘存储 磁盘构成 磁盘容量 磁盘操作 逻辑磁盘块 访问磁盘和连接I/O设备 固态硬盘 局部性 存储器层次结构 缓存 高速缓存存储器 如何编写高速缓存友好的代码 存储器结构围绕着局部性:具有良好局部性的程序倾向于访问邻近的数据项集合. 随机访问存储器(Random-Access-Memory) 静态RAM 只要有电就保持不变无需刷新. 读取速度快. 对干扰不敏感. 造价贵,主…
6 存储器层次结构 存储器系统(memory system)是一个具有不同容量.成本和访问时间的存储设备的层次结构.CPU 寄存器保存着最常用的数据.靠近 CPU 的小的.快速的高速缓存存储器(cache memory)作为一部分存储在相对慢速的主存储器(main memory)中的数据和指令的缓冲区域.主存暂时存放在容量较大的.慢速磁盘上的数据,而这些磁盘常常又作为存储在通过网络连接的其他机器的磁盘或磁带上的区域的缓冲区域. 具有良好局部性的程序倾向于一次又一次地访问相同的数据项集合,或者是倾…
系统级编程漫游 系统级编程提供学生从用户级.程序员的视角认识处理器.网络和操作系统,通过对汇编器和汇编代码.程序性能评测和优化.内存组织层次.网络协议和操作以及并行编程的学习,理解底层计算机系统对应用程序的影响,能够在编写高级语言代码的同时,思考低层次的影响与优化,即能够在系统层级进行编程及程序的优化. 编译系统的组成 一个程序的生命周期从高级语言的编写开始,然后被转化为一系列的低级机器语言指令,这些指令按照一种称为可执行目标程序的格式打包,并以二进制磁盘文件的形式存储起来. Unix系统中,这…
Cache存储器 Cache(高速缓冲存储器) 高速缓冲存储器是位于主存与CPU之间的一级存储器,有静态存储芯片(SRAM)组成,容量比较小,速度比主存高得多,接近于CPU的速度,单位成本比内存高.Cache存储了频繁访问内存的数据. (1)Cache原理.命中率.失效率 使用Cache改善系统性能的主要依据是程序的局部性原理. 命中率.失效率 Cache的访问命中率为h(通常1-h就是Cache的失效率),Cache的访问周期时间是t1,主存储器的访问周期时间是t2,则整个系统的平均访存时间就…
在csapp的描述中,虚拟内存的形象更加具化,虚拟内存被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组,内存充当了磁盘的缓存,粗呢内存的许多概念与SRAM缓存是相似的.虚拟页面有以下三种状态: 未分配(pte的有效位为0,且pte的地址段为空) 未缓存(pte的有效位为0,且pte的地址段指向磁盘的某一位置) 已缓存(pte的有效位为1,且pte的地址段指向内存的某一位置) 这是将物理地址的范围扩大到除了内存之外,还包含磁盘.虚拟地址照常根据MMU进行多级页表转换,得到的地址可能是…