2017-2018-1 20155314 《信息安全系统设计基础》第13周学习总结
学习目标
找出全书你认为最重要的一章,深入重新学习一下,要求(期末占10分):
- 完成这一章所有习题
- 详细总结本章要点
- 给你的结对学习搭档讲解你的总结并获取反馈
第6章学习要点:
- 了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
- 理解局部性原理
- 理解缓存思想
- 理解局部性原理和缓存思想在存储层次结构中的应用
- 高速缓存的原理和应用
本章要点详细总结
第6章 存储器层次结构
6.1 存储技术
6.1.1 随机访问存储器
- 随机访问存储器(RAM)(易失性存储器)
- 静态RAM(SRAM)
- 动态RAM(DRAM)
- 传统的DRAM
- 内存模块(MM)
- 增强的DRAM
- 快页模式DRAM(FPM DRAM)
- 扩展数据输出DRAM(EDO DRAM)
- 同步DRAM(SDRAM)
- 双倍数据速率同步DRAM(DDR SDRAM)
- 视频RAM(VRAM)
- 只读存储器(ROM)(非易失性存储器)
- 可编程ROM(PROM)
- 可擦写可编程ROM(EPROM)
- 电子可擦除PROM(EEPROM)
- 闪存(FLASH)
- 固态硬盘(SSD)
- 访问主存
6.1.2 磁盘存储
- 磁盘构造
- 磁盘容量
- 记录密度(recording density)(位/英寸)
- 磁道密度(track density)(道/英寸)
- 面密度(areal density)(位/平方英寸)
计算公式:
- 磁盘操作
- 寻道时间
- 旋转时间
- 传送时间
- 逻辑磁盘块
- 连接I/O设备
连接到总线的设备:
- 通用串行总线(USB)
- 图形卡(或适配器)
- 主机总线适配器
- 其他设备(如网络适配器)
- 访问磁盘
6.1.3 固态硬盘
6.1.4 存储技术趋势
- 不同的存储技术有不同的价格和性能折中
- 不同存储技术的价格和性能属性以截然不同的速率变化着
6.2 局部性
- 局部性原理
- 两种不同的形式:
- 时间局部性
- 空间局部性
- 有良好局部性的程序比局部性差的程序运行得更快
6.2.1 对程序数据引用的局部性
- 随着步长的增加,空间局部性下降
6.2.2 取指令的局部性
6.2.3 局部性小结
- 重复引用相同变量的程序有良好的时间局部性
- 对于:
- 具有步长为k的引用模式的程序,步长越小,空间局部性越好
- 具有步长为1的引用模式的程序有良好的空间局部性
- 在内存中以大步长跳来跳去的程序的空间局部性会很差
- 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好
6.3 存储器层次结构
- 存储技术
- 计算机软件
- 典型的存储器层次结构
6.3.1 存储器层次结构中的缓存
- 缓存命中
- 缓存不命中
- 缓存不命中的种类
- 缓存管理
6.3.2 存储器层次结构概念小结
- 利用时间局部性
- 利用空间局部性
6.4 高速缓存存储器
6.4.1 通用的高速缓存存储器组织结构
6.4.2 直接映射高速缓存
6.4.3 组相联高速缓存
6.4.4 全相联高速缓存
6.4.5 有关写的问题
6.4.6 一个真实的高速缓存层次结构的解剖
6.4.7 高速缓存参数的性能影响
6.5 编写高速缓存友好的代码
6.6 综合:高速缓存对程序性能的影响
6.6.1 存储器山
6.6.2 重新排列循环以提高空间局部性
6.6.3 在程序中利用局部性
了解三种常见存储技术:RAM/ROM/磁盘;
RAM有SRAM和DRAM,特点和应用;
ROM有PROM,EPROM,E2PROM,FLASH;
磁盘是重点,涉及到后面的i/o和文件系统,做好相关练习
磁盘结构:盘片、磁道、扇区、间隙、柱面;磁盘驱动器
磁盘容量
访问时间:寻道、旋转、传送
逻辑磁盘块:这个很重要,内存可以看成字节数组、磁盘可以看成块数组
总线
数据总线、控制总线、地址总线
系统总线、存储总线、I/O总线:p395图要理解
读写事务:P389图要能理解
6.2 节
局部性原理:时间局部性、空间局部性,有能力者理解一下p429最后一段“存储器山”
数据引用局部性
取指令局部性
6.3 节
存储层次结构:系统观(1+1>2)(举一反三:对称不对称加密形成的混合加密系统,混合动力汽车...)
中心思想:每层存储设备都是下一层的“缓存”
对照p408的表理解
6.4节
高速缓存结构(S,E,B,m):高速缓存组、高速缓存行、块
映射
命中
缓存管理
本章考试错题总结(CH06)
- 有关高速缓存的说法正确的是()
A. 高速缓存的容量可以用C=SEB来计算
B. 高速缓存容量为2048,高速缓存结构为( 32 ,8,8,32)
C. 直接映射高速缓存要:组选择、行匹配、字抽取
D. 当程序访问大小为2的幂的数组时,直接映射高带缓存中常发生冲突不命中
【错选】A B C
【答案】A C D
- The following table gives the parameters for a number of di erent caches. For each cache, determine the number of cache sets (S), tag bits (t), set index bits (s), and block o set bits (b)
A. 第三行S为1
B. 第一行t为24
C. 第二行b为5
D. 第三行s的值为0
【错选】A D
【答案】A C D
【解析】p427
- 下面说法正确的是()
A. CPU通过内存映射I/O向I/O设备发命令
B. DMA传送不需要CPU的干涉
C. SSD是一种基于闪存或Flash的存储技术
D. 逻辑磁盘块的逻辑块号可以翻译成一个(盘面,磁道,扇区 )三元组。
【错选】B C D
【答案】A B C D
【解析】p413 411
- 有关磁盘操作,说法正确的是()
A. 对磁盘扇区的访问时间包括三个部分中,传送时间最小。
B. 磁盘以字节为单位读写数据
C. 磁盘以扇区为单位读写数据
D. 读写头总处于同一柱面
【错选】A C D
【答案】A C
【解析】p409
上周考试错题总结
实验测试
- 实验4,Linux中通过把设备抽象成文件来简化操作的,我们可以用open/read/write/close来像访问文件一样访问设备, 这里需要一个结构提供设备驱动程序接口,这个结构是()
A. struct file
B. struct inode
C. struct file_operations
D. struct UTMP
【错选】B
【答案】C
【解析】在系统内部,I/O设备的存取操作通过特定的入口点来进行,而这组特定的入口点恰恰是由设备驱动程序提供的。通常这组设备驱动程序接口是由结构file_operations结构体向系统说明的,它定义在include/linux/fs.h中
- 实验1中使用mount命令时,会涉及到()的修改。
A. /etc/fstab
B. /etc/hosts
C. /etc/passwd
D. /etc/exports
【错选】B
【答案】D
【解析】nfs服务器的配置,配置文件/etc/exports:
ro 该主机对该共享目录有只读权限
rw 该主机对该共享目录有读写权限
root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
no_root_squash 客户机用root访问该共享文件夹时,不映射root用户
all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
anonuid 将客户机上的用户映射成指定的本地用户ID的用户
anongid 将客户机上的用户映射成属于指定的本地用户组ID
sync 资料同步写入到内存与硬盘中
async 资料会先暂存于内存中,而非直接写入硬盘
insecure 允许从这台机器过来的非授权访问
- 实验1中需要交叉编译,因为程序要在ARM实验箱的Linux中执行,交叉编译是在ARM实验箱中完成的,hello程序也是在ARM实验箱中执行的。
A. 正确
B. 错误
【错选】A
【答案】B
【解析】交叉编译在UBuntu虚拟机中完成,执行是在ARM实验箱的Linux中完成。
- 实验1:mount -t nfs -o nolock 192.168.0.56:/root/share /host,其中的IP是()的IP
A. Windows 宿主机
B. Ubuntu虚拟机
C. ARM实验箱
D. 以上都不对
【错选】A
【答案】B
【解析】嵌入式开发中,通过nfs系统把Ubuntu虚拟机的一个目录映射成ARM实验箱的Linux系统的一个目录进行调试是一个惯用法,程序调试没有问题了,再烧写到实验箱的Linux的系统中,这样实验箱重启了程序也可以用了。
- 实验1中Windows宿主机,Ubuntu虚拟机,ARM实验箱三者IP要在同一网段,操作中是根据()的IP来确定网段的。
A. Windows 宿主机
B. Ubuntu虚拟机
C. ARM实验箱
D. 以上都可以
【错选】A
【答案】C
【解析】ARM实验箱的IP修改要重新烧录Linux系统,Windows 宿主机,Ubuntu虚拟机的IP比较容易修改,所以我们在超级终端中通过ifconfig查看ARM实验箱的IP,把Windows 宿主机,Ubuntu虚拟机的IP改成和ARM实验箱同一个网段。
结对学习中的问题和解决过程
学习搭档(20155323)无法打开Y86-64模拟器界面
解决方法
这是Y86-64模拟器的Makefile中配置GUI相关路径错误导致的,解决方法是将两个GUI路径分别设置为TKLIBS=-L/usr/lib -ltk8.5 -ltcl8.5
和TKINC=-I/usr/include/tcl8.5
即可,如下图:
成功打开Y86-64模拟器:
代码托管
本周结对学习情况
- 20155323
- 结对学习内容
- 教材第6章 存储器层次结构
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
- 计划学习时间:5小时
- 实际学习时间:2小时