zoukankan      html  css  js  c++  java
  • 20145336张子扬 《信息安全系统设计基础》第7周学习总结

    20145336张子扬 《信息安全系统设计基础》第7周学习总结

    教材学习内容总结

    学习目标:

    • 了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
    • 理解局部性原理
    • 理解缓存思想
    • 理解局部性原理和缓存思想在存储层次结构中的应用
    • 高速缓存的原理和应用

    三种常见存储技术:RAM、ROM和磁盘

    随机访问存储器RAM分为静态RAM(SRAM)和动态RAM(DRAM)

    SRAM

    用来作为高速缓存储存器,SRAM将每个位存储在一个双稳态的存储器单元里,每个单元是用一个六晶体管电路来实现的。它可以无限制地保持在两个不同的电压配置或状态之一。

    SRAM的双稳态特性,只要有电,它就会永远地保持它的值,即使有干扰,如电子噪音,来扰乱电压,当干扰消除,电路也能恢复到稳定值。

    DRAM

    用来作为贮存以及图形系统的帧缓冲区

    对干扰特别敏感,当电容的电压被扰乱之后,它就永远不会恢复了。暴露在光线下会导致电容电压改变。

    从DRAM中读出超单元

    1. 存储器发送行地址2,DRAM将行2的整个内容考至内部行缓冲区
    2. 存储器发送列地址1,DRAM考出超单元(2,1)中的8位

    增强的DRAM

    • 快页模式(FPM DRAM)
    • 数据拓展输出(EDO DRAM)
    • 双倍数据速率同步(DDR SDRAM)
    • 视频(VRAM)
    • Rambus DRAM(RARAM)

    非易失性存储器(ROM)

    即使是在断电后,他们依然保存着它们的信息。

    • PROM只能被编程一次
    • 可擦写可编程ROM(EPROM):能用紫外线光照清楚单元内容,1000次
    • 闪存(flashmemory)

    访问主存

    数据流通过总线的共享电子电路在处理器和主存之间传递,每次CPU和贮存之间的数据传送都是通过总线事物完成的

    读事务:从主存传送数据到CPU

    写事务:从CPU传送数据到主存

    总线是一组并行的导线,能携带地址、数据和控制信号

    I/O桥将系统总线的电子信号翻译成存储器总线的电子信号

    存储器读写事务

    movl A,%eax

    1. CPU将地址A放到系统总线上。I/O桥将信号传递到系统总线
    2. 主存感觉到了存储器总线上的地址信号,从存储器总线读地址,从DRAM取出数据字,并将数据写道存储器总栈
    3. I/O桥将存储器总线信号翻译成系统总线信号,然后沿着系统总线传递。

    movl %eax,A

    1. CPU将地址放到系统总线上。存储器从存储总线读地址,并等待数据到达
    2. cpu将%eax中的数据字拷贝到系统总线
    3. 主存从存储器总线独处数据字,并且将这些位存储到DRAM中

    磁盘存储

    由盘片构成,每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴,使得盘片以固定的旋转速率旋转,通常是5400~15000转每分钟(RPM)

    每个表面是由一组称为磁道的同心圆组成;每个磁道被划分成一组扇区;每个扇区包含相等数量的数据位(通常是512字节);这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙分隔开,这些间隙中不存在数据位。间隙存储用来标识扇区的格式化位。

    记录密度:磁道一英寸的段可以放入的位数

    磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数

    面密度:记录密度与磁道密度的乘积

    磁盘容量=字节数平均扇区数磁道数表面数盘面数

    任何时刻,所有的读写头都位于同一柱面上。

    磁盘以扇区大小的块来读写数据。

    对扇区的访问时间有三个主要的部分:寻道时间、旋转时间和传送时间

    寻道时间:为了读取某个目标扇区的内容,传动臂把读/写头首先定位到包含目标扇区的磁道上,所需时间即为寻道时间

    寻道时间:依赖于读写头以前的位置和转动臂在盘面上移动的速度。

    最大旋转时间 = 1/最大旋转数率*1000ms/sec

    平均旋转时间 = (1/2) * 最大旋转时间*1000ms/sec

    平均传送时间 = (1/最大旋转数率) * (1/每磁道的平均扇区数)*1000ms/sec

    连接到I/O设备

    像图形卡、监视器、鼠标、键盘和磁盘这样的输入输出设备,都是通过I/O总线连接到CPU和主存的

    系统总线和存储器总线是与CPU相关的,I/O总线设计成与底层CPU无关。

    访问磁盘

    CPU使用一种存储器映射I/O技术来向I/O设备发出命令,在使用存储器映射I/O的系统中,地址空间中有一块地址是为与I/O设备通信保留的,称为I/O端口。当一个设备连接到总线时,它与一个或多个端口相连。

    直接存储器访问:设备可以自己执行读或者写总线事务,而不需要CPU干涉的过程。这种数据传送称为DMA传送。

    固体磁盘

    一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中机械驱动器;闪存翻译层是一个硬件/固件设备,替代磁盘控制器,将对逻辑块的请求翻译成对底层物理设备的访问。

    性能特性

    顺序读和写(CPU按顺序访问逻辑磁盘块)性能相当,顺序读比顺序写稍快一点。

    随机顺序访问逻辑块时,写比读慢一个数量级。

    优点是由半导体构成,没有移动的部件,随机访问时间比旋转磁盘要快、能耗低、结实

    缺点反复写之后SSD更容易磨损

    局部性原理

    他们倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

    时间局部性

    在有一个良好时间局部性的程序中,引用过一次存储器位置很可能在不远的将来再次被多次引用

    硬件层:引入高速缓存存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。

    操作系统级:统使用主存作为虚拟地址空间最近被引用块的高速缓存,用主存来缓存磁盘文件系统中最近被使用的磁盘块。

    对程序数据引用的局部性

    顺序访问:

    步长为k的引用模式:每隔k个元素进行访问。

    一般来说,随着步长增加,空间局部性下降。

    在第一幅图中,访问顺序是很规整的步长为1,拥有良好的局部性

    在第二幅途中,访问顺序很杂乱,步长为2,没有第一幅图的局部性那么好,访问时间也会增加

    存储器层次结构

    存储技术:不同的存储技术的访问时间差异很大,速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小,CPU和主存之间的速度差距在增大

    高速缓存与缓存:是一个小而快速的存储设备,它作为存储在更大、更慢的设备中的数据对象的缓冲区域。

    存储器层次结构的中心思想:对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。

    数据总是以块大小为传送单元在第k层与第k+1层之间来回拷贝。任一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。

    缓存命中

    当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。

    缓存不命中

    即第k层中没有缓存数据对象d。这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块.

    通用的高速缓存存储器结构

    • m:每个存储器地址有m位,形成M=2^m个不同的地址
    • S:这个数组中有S=2^s个高速缓存组
    • E:每个组包含E个高速缓存行
    • B:每个行是由一个B=2^b字节的数据块组成的

    标记位:t=m-(b+s)个,唯一的标识存储在这个高速缓存行中的块

    高速缓存的大小/容量C:C=SEB

    地址最大数量:M=2^m

    组索引位数量:s=log2(S)

    块偏移位移数量:b=log2(B)

    直接映射高速缓存:高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步:1组选择2行匹配3字抽取

    直写:立即将w的高速缓存块写回到紧接着的第一层中 ,但是每次写都会引起总线流量

    写回:只有当替换算法要驱逐更新过的块时,才能把它写到紧接着的低一层中,由于局部性,写回能显著减少总线流量,但是增加了复杂性。高速缓存必须为每个高速缓存行维护一个额外的修改位,表明这个高速缓存块是否被修改过

    写分配:加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块,但是每次不命中都会导致一个块从低一层传送到高速缓存

    非写分配:避开高速缓存,直接把这个字写到低一层中

    教材学习中的问题和解决过程

    在学习硬件缓存的放置策略时,书上说k+1的0、4、8、12放在k的块1,k+的1、5、9、13放在k的块2,如果说现在地k+1层的块4要放置在第k层,理应放在块1中,如果现在块1有数据,块2却没数据,k+1层的块4会依然放在k层的块1中还是放在空的块2中。

    在git上传代码时,git remote add origin + 网页链接时输错路劲了,导致git无法上传。在请教同学后,知道了git remote rm origin可以删除路径,成功解决了困难。

    代码调试中的问题和解决过程

    代码托管链接:https://git.oschina.net/Zziyang/CS05

    本周代码托管截图

    学习进度条

     代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
    目标 5000行 30篇 400小时  
    第二周 0/0 1/2 19/20  
    第三周 80/80 1/3 25/44  
    第四周 110/190 1/4 23/67  
    第五周 60/250 2/6 26/93  
    第六周 80/330 2/8 25/118  
    第七周 60/390 1/9 25/133  
  • 相关阅读:
    20080531 Windows 下安装 Bugzilla
    20080823 windows + apache + mod_python 的安装
    20080519 在 Windows Server 2003 下安装 SQL Server 2000 提示“无法验证产品密钥”
    20080508 Borland CodeGear 卖了
    20080520 Javascript 随机数产生办法
    20090613 批量操作 Windows Live Mail 邮件的办法
    20080726 Castle项目创始人加入微软
    20080511 php send_mail()
    20080618 ASP.NET Ajax clientside framework failed to load
    20081105 Microsoft Word 2007 中鼠标操作失效的解决办法
  • 原文地址:https://www.cnblogs.com/20145336yang/p/6014327.html
Copyright © 2011-2022 走看看