2017-2018-1 20155339 《信息安全系统设计基础》第九周学习总结
2017-2018-1 20155339 《信息安全系统设计基础》第九周学习总结
教材学习内容总结
存储技术
- 在简单模型中,存储器系统是一个线性的字节数组,而cpu是能够在一个常数时间内访问每个存储器的位置。实际上,存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。
- 主存中的数据和指令的缓冲区域称为高速缓存存储器设备。
- 随机访问存储器RAM:
1.RAM分为静态和动态两类:
静态RAM:用来作为高速缓存存储器,每个位存储在一个双稳态的存储器单元里。双稳态:电路可以无限期的保持在两个不同的电压配置或者状态之一。由于SRAM的双稳态特性,只要有电,它就会永远地保持它的值,即使有干扰,例如电子噪音来扰乱电压,当干扰消除后,电路就会恢复到稳定值。高速缓存存储器,即可以在CPU芯片上,也可以在片下。
2.动态RAM:将每个位存储为对一个电容的充电。这个电容非常小,通常为为30×10-15法拉。当电容的电压被扰乱之后,它就永远不会再恢复了。暴露在光线下会导致电容电压改变。用于主存以及图形系统的帧缓冲区。 - DRAM芯片中的单元(位)被分成了d个超单元,每个超单元都由w个DRAM单元组成, 一个d*w的DRAM共存储dw位信息。超单元被组织成一个r行c列的长方形阵列,rc=d。每个超单元的地址用(i,j)来表示(从零开始)。设计成二维矩阵是为了降低芯片上地址引脚的数量。
- 每个DRAM信号被连接到称为内存控制器的电路,电路每次传输量为8位。行地址i称为RAS请求;列地址j称为CAS请求共享相同的DRAM地址引脚。
- 组织成二维阵列而不是线性数组的一个原因是降低芯片上地址引脚的数量。
- 二维阵列组织的缺点是必须分两步发送地址,这增加了访问时间。
- 增强的DRAM:快页模式DRAM、扩展数据输出DRAM、同步DRAM、双倍数据速率同步DRAM、视频RAM
- 非易失性存储器(ROM):
1.PROM:只能被编程一次。
2.EPROM:可擦写可编程ROM,紫外线光照清除单元内容,可擦写次数数量级1000。
3.E2PROM:电子可擦除PROM,可以直接在印制电路卡上编程,可擦写次数数量级10^5。
4.FLASH:闪存,基于EEPROM。(固态硬盘SSD基于闪存)
能被重编程的次数和对他们进行重编程所用的机制不同。
-
总线:数据流通过称为总线的共享电子电路在处理器和DRAM之间传送。这是一组并行的导线,能携带地址、数据和控制信号。
-
总线事务:CPU和主存之间的数据传送的过程。读事务,从主存传数据到CPU;写事务,从CPU传数据到主存。
-
I/O桥:将系统总线的电子信号翻译成存储器总线的电子信号。系统总线连接CPU和I/O桥,控制总线连接I/O桥和主存。
-
由盘片构成,每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴,使得盘片以固定的旋转速率旋转,通常是5400~15000转每分钟(RPM)
-
每个表面是由一组称为磁道的同心圆组成;每个磁道被划分成一组扇区;每个扇区包含相等数量的数据位(通常是512字节);这些数据编码在扇区上的磁性材料中。扇区之间由一些 间隙分隔开,这些间隙中不存在数据位。
-
一个磁盘上可以记录的最大位数称为它的最大容量/容量。
-
磁盘容量由记录密度、磁道密度、面密度决定
-
磁盘用读写头来读写存储在磁性表面的位,而读写头连接到一个转动臂一端。寻道就是通过沿着半径轴前后移动这个转动臂,使得驱动器可以将读写头定位在盘面上的任何磁道上。
-
任何时刻,所有的读写头都位于同一柱面上。
-
在传动臂末端的读/写头在磁盘表面高度约0.1微米处一层薄薄的气垫上飞翔,速度大约为80km/h。
-
磁盘以扇区大小的块来读写数据。
-
寻道时间:为了读取某个目标扇区的内容,转动臂把读/写头首先定位到包含目标扇区的磁道上,所需时间即为寻道时间,约等于最大旋转时间。
-
旋转时间:定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。依赖于当读写头到达目标扇区时盘面的位置和磁盘旋转速度。
-
平均旋转时间是Tmax的一半。
-
传送时间:读写并传送该扇区内容的时间。平均传送时间为:(1/最大旋转数率) * (1/每磁道的平均扇区数)
-
逻辑磁盘块:磁盘控制器维持着逻辑块号与实际的磁盘扇区之间的映射关系
-
现代磁盘构造复杂,有多个盘面,这些盘面上有不同的记忆区。为了对操作系统隐藏这样的复杂性,现代磁盘将他们的构造呈现为一个简单的试图,一个B个扇区大小的逻辑块的序列,编号为0,1,...,B-1。
-
连接到I/O设备:I/O总线比系统总线和存储器总线速度慢,但是可以容纳更多的第三方I/O设备
-
系统总线和存储器总线是与CPU相关的,I/O总线设计成与底层CPU无关。
-
CPU使用一种存储器映射I/O技术来向I/O设备发出命令,在使用存储器映射I/O的系统中,地址空间中有一块地址是为与I/O设备通信保留的,称为I/O端口。当一个设备连接到总线时,它与一个或多个端口相连。
-
直接存储器访问:设备可以自己执行读或者写总线事务,而不需要CPU干涉的过程。这种数据传送称为DMA传送。
-
固态硬盘是一种基于闪存的存储技术。
-
一个硬盘包由一个或者多个闪存芯片和内存翻译层组成,闪存芯片替代旋转磁盘中的机械驱动器,而闪存翻译层将对逻辑块的请求翻译成对底层物理设备的访问。
-
不同的存储技术有不同的价格和性能折中
-
不同存储技术的价格和性能属性以截然不同的速率变化着
局部性
- 局部性原理:计算机程序倾向于引用邻近于其它最近引用过的数据项的数据项,或者最近引用过的数据项本身的倾向性。
- 一个编写良好的计算机程序常常具有良好的局部性,即倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。有良好局部性的程序比局部性差的程序运行得更快。
- 分为时间局部性和空间局部性
- 时间局部性:被引用过一次的存储器位置很可能在不远的将来被再次引用。
- 空间局限性:如果一个存储器被引用了,在不远的将来很可能会引用附近的一个存储器位置。
- 语言中数组在存储器中是按照行顺序存放的,所以按照行优先顺序执行的代码的局部性要好于按列优先顺序的代码。
- 程序指令是存放在存储器中的,CPU必须取出(读出)这些指令。
- 代码区别与程序数据的一个重要属性就是在运行时指令是不能被修改的。
- 重复引用同一个变量的程序具有良好的时间局部性。
- 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。
- 对于取指令来说,循环具有良好的时间和空间局部性。循环体越小,迭代次数越多局部性越好。
存储器层次结构
- 高速缓存是一个小而快速的存储设备,作为存储在更大、更慢的设备中的数据对象的缓冲区域。每一层存储器被划分成连续的数据对象片,称为块,每个块都有唯一的对象和名字。数据总是以块大小为传送单元在第k层和第k+1层之间来回拷贝。
- 当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。
- 缓存命中:程序需要的数据块恰好缓存在第k层。
- 缓存不命中:第k层中没有缓存需要的数据,从第k+1层读取一个数据块可能会替换(驱逐)一个现存的块。
- 缓存不命中种类:冷不命中、强制性不命中(冷缓存)、冲突不命中(限制性的放置策略)、容量不命中(工作集的大小超过缓存的大小)
- 缓存管理:某种形式的逻辑必须管理缓存,而管理缓存的逻辑可以是硬件、软件,或者两者的集合。
高速缓存存储器
- 每个内存地址有m位,一个机器的高速缓存被组织成一个有S个高速缓存组的数组,每个组包含E个高速缓存行,每个行由B字节的数据块组成。
- 高速缓存的结构可以用元组(S,E,B,m)来描述。
其中:
m:每个存储器地址有m位,形成M=2^m个不同的地址
S:这个数组中有S=2^s个高速缓存组
E:每个组包含E个高速缓存行
B:每个行是由一个B=2^b字节的数据块组成的 - 高速缓存的大小C=SEB。
- 直接映射高速缓存中的组选择:高速缓存从w的地址中间抽取出s个组索引位。
- 直接映射高速缓存中的行匹配:确定是否有字w的一个拷贝存储在组i包含的一个高速缓存行中。
- 直接映射高速缓存中的字选择:快偏移提供了所需要的字的第一个字节的偏移。
- 直接映射高速缓存中不命中时的行替换:替换策略是用新取出的行替换当前的行。
- 组相连高速缓存中的组选择:与直接映射高速缓存中的组选择一样,组索引位标识组。
- 高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步:组选择、行匹配、字抽取
- 写命中:
1.直写:立即将w的高速缓存块写回到紧接着的低一层中
2.写回:尽可能的推迟存储器更新,只有当替换算法要驱逐更新过的块时,才把它写回紧接着的低一层中 - 写不命中:
1.写分配:加载相应的第一层中的块到高速缓存中,然后更新这个高速缓存块
2.非写分配:避开高速缓存,直接把这个字写到第一层中。 - 高速缓存大小的影响:提高命中率、增加命中时间。
- 块大小的影响:提高命中率、对不命中处罚有负面影响。
- 相联度的影响:降低抖动的可能性、增加命中时间、增加不命中处罚。
- 写策略的影响:高速缓存越往下层越可能使用写回而不是直写。
高速缓存对程序性能的影响
- 一个程序从存储系统中读数据的速率称为读吞吐量,或者读带宽,通常以兆字节每秒(MB/s)为单位。
- 与存储器访问总数相比,不命中率是一个较好的性能指示
教材学习中的问题和解决过程
(一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )
- 6.2 计算这样一个磁盘的容量。它有2个盘片,10 000个柱面,每条磁道平均有400个扇区,每个扇区平均有512个字节
- 解答:(512/400)4001000022= 8 192 000 000 字节 = 8.192GB
- 6.3 估计访问下面的一个磁盘上的一个扇区需要的时间(以ms为单位)。
- 解答:平均旋转时间t=0.5(60s/15000RPM)1000ms/s=2ms
平均传送时间t2=60/150001/5001000=0.008
代码调试中的问题和解决过程
- 问题1:XXXXXX
- 问题1解决方案:XXXXXX
代码托管
上周考试错题总结
无
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
- [20166306](https://home.cnblogs.com/u/0831j/)
- 结对照片
- 结对学习内容
第六章内容
其他(感悟、思考等,可选)
学习方法需要改进,学习效率感觉不是很高
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 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 | |
第五周 | 300/1300 | 2/9 | 30/90 | |
第六周 | 706/2006 | 1/10 | 50+/140+ | |
第七周 | 838/2838 | 1/11 | 23/163 | |
第八周 | 150/3088 | 2/13 | 40/203 | |
第九周 | 1235/4323 | 3/16 | 27/280 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:24小时
-
实际学习时间:27小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)