标签:web 区域 无限 习题 evo 引用 head 参考资料 次数
随机访问存储器(Random-Access Memory, RAM)分为两类:静态的和动态的。静态
RAM(SRAM)比动态RAM(DRAM)更快,但也贵得多。SRAM用来作为高速缓存存储
器,既可以在CPU芯片上,也可以在片下。DRAM用来作为主存以及图形系统的帧缓冲
区。典型地,一个桌面系统的SRAM不会超过几兆字节,但是DRAM却有几百或几千兆
字节。
DRAM芯片封装在内存模块(memory module)中,它插到主板的扩展槽上。
系统使用的240个引脚的双列直插内存模块(Dual Inline Memory Module, DIMM)
Core i7
,它以64位为块传送数据到内存控制器和从内存控制器传出数据。
有许多种DRAM存储器,而生产厂商试图跟上迅速增长的处理器速度,市场上就会
定期推出新的种类。每种都是基于传统的DRAM单元,并进行一些优化,
提高访问基本DRAM单元的速度。
磁盘是广为应用的保存大量数据的存储设备,存储数据的数量级可以达到几百到几千
千兆字节,而基于RAM的存储器只能有几百或几千兆字节。不过,从磁盘上读信息的时
间为毫秒级,比从DRAM读慢了10万倍,比从SRAM读慢了100万倍。
磁盘是由盘片(platter)构成的。每个盘片有两面或者称为表面(surface),表面覆盖着
磁性记录材料。盘片中央有一个可以旋转的主轴(spindle),它使得盘片以固定的旋转速率
(rotational rate)旋转,通常是5400^-15 000转每分钟(Revolution Per Minute, RPM)。磁
盘通常包含一个或多个这样的盘片,并封装在一个密封的容器内。
固态硬盘(Solid State Disk, SSD)是一种基于闪存的存储技术,在某
些情况下是传统旋转磁盘的极有吸引力的替代产品。展示了它的基本思想。SSD
封装插到I/O总线上标准硬盘插槽(通常是USB或SATA)中,行为就和其他硬盘一样,
处理来自CPU的读写逻辑磁盘块的请求。一个SSD封装由一个或多个闪存芯片和闪存翻
译层((flash translation layer)组成,闪存芯片替代传统旋转磁盘中的机械驱动器,而闪存
翻译层是一个硬件/固件设备,扮演与磁盘控制器相同的角色,将对逻辑块的请求翻译成
对底层物理设备的访问。
程序员应该理解局部性原理,因为一般而言,有良好局部性的程序比局部性差的程序
运行得更快。现代计算机系统的各个层次,从硬件到操作系统、再到应用程序,它们的设
计都利用了局部性。在硬件层,局部性原理允许计算机设计者通过引人称为高速缓存存储
器的小而快速的存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。
在操作系统级,局部性原理允许系统使用主存作为虚拟地址空间最近被引用块的高速缓
存。类似地,操作系统用主存来缓存磁盘文件系统中最近被使用的磁盘块。局部性原理在
应用程序的设计中也扮演着重要的角色。例如,Web浏览器将最近被引用的文档放在本地
磁盘上,利用的就是时间局部性。大容量的Web服务器将最近被请求的文档放在前端磁
盘高速缓存中,这些缓存能满足对这些文档的请求,而不需要服务器的任何干预。
图展示了存储器层次结构中缓存的一般性概念。第k -} 1层的存储器被划分成连
续的数据对象组块(chunk),称为块(block)。每个块都有一个唯一的地址或名字,使之区
别于其他的块。块可以是固定大小的(通常是这样的),也可以是可变大小的(例如存储在
Web服务器上的远程HTML文件)。例如,图中第k+1层存储器被划分成16个大
小固定的块,编号为0-15.
存储技术和计算机软件的一些基本的和持久的属性:
#define N 1000
typedef struct
{
int vel[3];
int acc[3];
} point;
point p [N]
void
{
cleari(point *p, int n)
int i,J;
for (i=0; i<n; i++)
{
for (j=0; j<3; j++) p [i].vel [j]=0;
for(j=0; j<3; j++)
p [i] .acc [j]=0;
}
}
void
{
clear2(point *p,
int n)
int i,J
for (i=0; i<n; i++)
{
for (j=0; j<3; j++)
{
p [i].vel [j]=0;
p [i7.acc [j]=0;
}
}
}
void clear3(point *p,int n)
{
int i,j;
for (j=0; j<3; j++)
{
for (i=0; i<n; i++)
p [i].vel [j] =0;
for (i=0; i<n; i++)
p [i].acc[j]=0;
}
}
解决这个问题的关键在子想象出数组是如何在内存中排列的,然后分析引用模式。函数’clearl以
步长为1的引用模式访问数组,因此明显地具有最好的空间局部性。函数clear2依次扫描N个结
构中的每一个,这是好的,但是在每个结构中,它以步长不为1的模式跳到下列相对于结构起始位
置的偏移处:0, 12, 4, 16, 8, 20。所以clear2的空间局部性比clean的要差。函数c工ear3
不仅在每个结构中跳来跳去,而且还从结构跳到结构,所以单ear3的空间局部性比clear2和
clean都要差。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 | |
第五周 | 400/900 | 2/6 | 6/30 | |
第六周 | 200/1100 | 1/7 | 6/30 | |
第七周 | 500/1600 | 2/9 | 6/36 | |
第八周 | 300/1900 | 1/10 | 6/42 | |
第九周 | 1000/2900 | 3/13 | 6/48 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:6小时
实际学习时间:6小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
2017-2018-1 20155228 《信息安全系统设计基础》第九周学习总结
标签:web 区域 无限 习题 evo 引用 head 参考资料 次数
原文地址:http://www.cnblogs.com/besti20155228/p/7857329.html