Computer Systems A Programmer’s Perspective II (深入理解计算机系统 第六章 )

存储器层次结构

The Memory Hierarchy

MEMORY SYSTEM
  • 存储器系统实际上并非一个线性的字节数组,它是一个具有不同容量,成本和访问时间的存储设备的层次结构.
    • Cpu寄存器保存着最常用的数据.
    • Cache Memory ,高速缓存存储器作为一部分存储在相对慢速的主存(main memory)中的数据和指令的缓冲区域.
    • Main Memory ,暂时存放存储在容量较大的,慢速磁盘上的数据.
    • 磁盘也常常作为存储在通过网络连接的其他机器的磁盘或磁带上的数据的缓冲区域.
  • 访问不同层次的数据,速度差别非常大
    space cpu register cache main memory disk
    access period 0 1-30 50-200 10,000,000+

Storage Technologies

RAM (RANDOM-ACCESS-MEMORY).

SRAM 比DRAM 更快.

  1. static RAM 可做高速缓存存储器,将每个位存储在一个双稳态bistable的存储器单元里.每个单元用一个六晶体管电路来实现. 参考 倒转的钟摆 模型.
  2. dynamic RAM 主存以及图形系统的帧缓冲区.将每个位存储为对一个电容的充电.每个单元由一个电容和一个访问晶体管组成.不稳定容易受干扰.
      晶体管数 相对访问时间 持续性 敏感 相对花费 应用
    SRAM 6 1 Y N 100 高速缓存存储器
    DRAM 1 10 N Y 1 主存,帧缓冲区
  3. 传统的DRAM 访问 芯片的单元访问 . 重点,重读.
  4. memory module .

DRAM芯片包装在存储器模块中,插到主板的扩展槽上. 常见的包装包括168个引脚的双列直插存储器模块 ( Dual Inline Memory Moedule,DIMM),它以64位为块传送数据到存储控制器和从存储控制器传入数据. 例如下图 memory1.png

基本思想,上图示例模块中用8个64M bit的DRAM芯片,总共存储64MB(兆字节),芯片编号0-7. 每个超单元存储主存的一个字节.而相应超单元地址同为(i,j)的8个超单元来表示主存中字节地址为A处的64位双字. 要读取存储器地址A处的一个64位字节,存储控制器将A转换成一个超单元地址(i,j),并发送到存储器模块,然后存储器模块再将i,j广播到每个DRAM . 每个DRAM输出它的(i,j)超单元的8位内容. 模块中的电路收集这些输出,把它们合并成一个64位双字,再返回给存储控制器.

  • 技术发展
  • 非易失性存储器
    • PROM
    • ROM
    • flash memory | Solid State Disk ,SSD
  • 访问主存

    数据流通过总线(Bus)的共享电子电路在处理器和DRAM主存之间传输.

DISK STORAGE
  • structure 构造.
    • 磁盘是由盘片 Platter 构成的.每个(Platter)有两面或者称为表面(surface),表面覆盖着磁性记录材料.
    • Platter中央有一个可以旋转的主轴(Spindle). 它使得盘片以固定的旋转速率旋转.通常是5400-15000转每分钟. (Revolution per Minute ,RPM)
    • 每个表面由一组磁道(track)的同心圆组成的.每个磁道被划分为一组扇区(sector).每个扇区包含相同数量的数据位.(通常是512字节).
    • 扇区之间由一些间隙(gap)隔开.间隙存储用于标识扇区的格式化位.

    #+imgs/memory1.png wpid-memory1.png

    1. 柱面 ,是相同编号的磁道的合集.
    2. 磁盘容量 由记录密度,磁道密度和面密度决定.
      磁盘容量 扇区字节数 磁道盘区数 表面磁道数 盘片表面数 磁盘盘片数
      以上共计30.72GB. 512字节 300扇区 20000磁道 2 5盘片
  • 磁盘操作.

    磁盘用 读写磁头( read/write head) 来读写存储在磁性表面的位,磁头连接在一个传动臂(actuator)一端. 磁头在磁盘表面高度约0.1微米处的一层薄薄的气垫上飞翔,速度80km/h. !!!!!

    1. seek time 寻道
    2. rotational latency 旋转
    3. transfer time. 传送
    4. 访问一个磁盘扇区中的512个字节的时间主要是寻道时间和旋转延迟, 而找到后访问连续后续字节几乎不用时间.
  • 逻辑磁盘块 磁盘控制器维护着逻辑块号和实际(物理)磁盘扇区之间的映射关系.

    当操作系统想要执行一个I/O操作时,例如读取,操作系统会发送一个命令到磁盘控制器,让它读取某个逻辑块号,控制器上的固件执行一个快速表查找,将一个逻辑块号翻译成一个(盘面,磁道,扇区)的三元组.此三元组唯一的标识了对应的物理扇区.控制器依据三元组控制磁头移动到适当的柱面,等待扇区移动到磁头下,将读写头感知到的位放到控制器上的一个小缓冲区中,然后拷贝到主存中.

  • 连接到I/O设备

    像图形卡,监视器,鼠标键盘和磁盘这样的I/O设备,都是通过I/O总线,例如intel的外围设备互连(PCI)总线连接到CPU和主存的. 三种总线:

    1. 存储器总线,
    2. 系统总线,
    3. I/O总线 包括USB通用串行总线; 图形卡适配器;主机总线适配器

    bus.png

    #+imgs/bus.png wpid-bus.png

Locality

局部性原理 (principle of locality) 编写良好的程序有良好的局部性,倾向于引用邻近于其他最近引用过的数据项的数据项或者本身. 持久的概念

  • 时间局限性.
  • 空间局限性.
  • 硬件上的高速缓存存储器来保存最近被引用的指令和数据项.
  • 操作系统级局部性原理允许系统使用主存作为虚拟地址空间最近被引用块的高速缓存.
  • 主存也用来缓存磁盘文件系统中最近被引用的磁盘块.
  • 程序设计中,web浏览器把最近引用的网页缓存在本地,时间局限性.
LOCALITY OF REFERENCES TO PROGRAM DATA .

LOCALITY OF INSTRUCTION FETCHES . 取指令的局部性.

for循环具有很好的空间局部性和时间局部性.

SUMMARY
  1. 重复引用同一个变量的程序有良好的时间局部性.
  2. 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好
  3. 对于取指令来说,循环有很好的时间和空间的局部性.循环体越小,迭代次数越多则局部性越好.

The Memory Hierarchy

hierarchy.pngcache.png

Cache Memories

#+imgs/hierarchy.png wpid-hierarchy1.png#+imgs/cache.png wpid-cache1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(转自豆瓣) 本书适用于那些想要写出更快、更可靠程序的程序员。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好的理解程序的行为为什么是这样的,以及效率低下是如何造成的。粗略来看,计算机系统包括处理器和存储器硬件、编译器、操作系统和网络互连环境。而通过程序员的视角,读者可以清晰地明白学习计算机系统的内部工作原理会对他们今后作为计算机科学研究者和工程师的工作有进一步的帮助。它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络互连做好准备。 本书的主要论题包括:数据表示、C程序的机器级表示、处理器结构,程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级I/O、网络编程和并发编程。书中所覆盖的内容主要是这些方面是如何影响应用和系统程序员的。例如,在讲述数据表示时,本书说明了用来表示数字的表示方法是有限的,它能够近似地表示整数和实数,但是这种表示方法是有限制的,程序员必须了解。在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互连时,本书描述了并发服务器如何能有效地处理来自多个客户端的请求。 本书基于Intel兼容(IA32)机器,在Unix或者相关的操作系统(例如,Linux)上执行C程序。虽然书中包括了一些帮助读者将Java转化成C的提示,但是还是要求读者对C或者C++有一定的了解。 本书英文版久负盛名,被众多专业人士称为“最伟大的计算机教材”之一,著名的美国卡内基梅隆大学计算机科学系一直将本书作为教材使用,程序员眼中的透彻讲述计算机系统的扛鼎之作。作者Randal E. Bryant是卡耐基梅隆大学的计算机科学系主任,ACM和IEEE双院士(Fellow),其研究成果多次获得ACM和IEEE颁发的大奖。 本书共分十三章,分别介绍了信息的表示和处理、程序的机器级表示、处理器体系结构、存储器层次结构、静态和动态链接、虚拟存储器、系统级I/O、网络编程和并发编程等精彩内容。其目的是解释计算机系统的所有本质概念,并向读者展示这些概念是如何实际地影响应用程序的正确性、性能和实用性。与其他主要针对系统构造人员的系统类书籍不同,这本书是写给程序员的,是从程序员的角度来描述的。本书为软件和硬件之间搭起了一个桥梁,它给出了一种帮助读者分别从硬件和软件的角度去理解一个程序及其行为的途径,这也填补了国内计算机系统教学中的一个空白。本书的最大优点是帮助读者理解概念,让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户应用。 本书提供了大量的例子和练习及部分答案。尤其值得一提的是,对于每一个基本概念都有相应的笔头或程序试验,加深读者的理解。
经典计算机操作系统教材第三版,详细内容可见亚马逊。 https://www.amazon.com/Computer-Systems-Programmers-Perspective-Engineering/dp/0134123832/ref=sr_1_2?ie=UTF8&qid=1541476471&sr=8-2&keywords=computer+systems+a+programmer's+perspective Computer systems: A Programmer’s Perspective explains the underlying elements common among all computer systems and how they affect general application performance. Written from the programmer’s perspective, this book strives to teach readers how understanding basic elements of computer systems and executing real practice can lead them to create better programs. Spanning across computer science themes such as hardware architecture, the operating system, and systems software, the Third Edition serves as a comprehensive introduction to programming. This book strives to create programmers who understand all elements of computer systems and will be able to engage in any application of the field--from fixing faulty software, to writing more capable programs, to avoiding common flaws. It lays the groundwork for readers to delve into more intensive topics such as computer architecture, embedded systems, and cyber security. This book focuses on systems that execute an x86-64 machine code, and recommends that programmers have access to a Linux system for this course. Programmers should have basic familiarity with C or C++. Personalize Learning with MasteringEngineering MasteringEngineering is an online homework, tutorial, and assessment system, designed to improve results through personalized learning. This innovative online program emulates the instructor’s office hour environment, engaging and guiding students through engineering concepts with self-paced individualized coaching With a wide range of activities available, students can actively learn, understand, and retain even the most difficult concepts.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值