深入理解计算机系统(一) —— 计算机系统的硬件组成

参考书籍《深入理解计算机系统》

1 基础结构

在这里插入图片描述

  • 总线:贯穿系统的电子管道,作用是携带信息字节并负责在各个部件传递。通常总线被设计成传送定长的字节块。不同系统字节数(字长)不尽相同。
  • I/O设备:系统与外界的联系通道,如图中的键盘、鼠标、显示器和磁盘都是I/O设备,每个I/O设备都通过一个控制器或适配器与I/O总线连接。
  • 主存(主存储器):是一个临时存储设备,在处理器执行程序时被用来存放程序和数据。物理上主存由一组DRAM(动态随机存取存储器)芯片组成;逻辑上主存是一个线性的字节数组,每个字节都有唯一地址,这些地址从零开始。
  • 处理器(CPU):解释(或执行)主存中指令的引擎,其核心是程序计数器(PC:),任何时间点PC都指向主存中的某条机器语言指令。
  • 寄存器:寄存器文件是一个小的存储设备,由一些字长大小的寄存器组成,每个寄存器都有唯一的名字。

2 高速缓存

在这里插入图片描述

  • 原理:
    根据机械原理,较大的存储设备要比较小的存储设备运行慢,但是快速设备造价比较高。典型的寄存器文件只存储几百字节,主存可以存放几百万字节,但是寄存器文件读取速率比主存快近100倍。
    针对这种差异,设计了高速缓存,如图L1可以存储数万字节,L1访问速度几乎和寄存器文件一样快;L2通过一条特殊总线连接到处理器,L2访问开销比L1大近5倍。
    L1和L2高速缓存是用 静态随机访问存储器(SRAM) 这种硬件技术实现的。

3 层级结构的存储设备

在这里插入图片描述
存储器分层结构的主要思想是当前层次上的存储器作为下一层级上的存储器的高速缓存,如:寄存器文件是L1的高速缓存,而L1又是L2的高速缓存。

4 虚拟存储器

虚拟存储器其实是一个抽象的概念,并不是硬件结构,但是理解它也比较重要,所以放在一起记录。
在这里插入图片描述
虚拟存储器是为使每个进程看到的存储器空间都是一致的,提供给进程一种好像在独占的使用主存的假象。称之为虚拟地址空间。
如图所示是Linux进程的虚拟地址空间设计,最上面的四分之一(0xC0000000 ~ 0xFFFFFFFF)是预留给操作系统中的代码和数据的,这一部分对所有进程都一样,底部的四分之三(0x00000000 ~ 0xC0000000)是用来存放用户进程定义的代码和数据的。下面简单介绍一下用户空间各个区的功能:

  • 程序代码和数据:代码从同一固定地址开始(0x08048000),紧接着是全局变量相对应的数据区。代码和数据区由可执行目标文件直接初始化,进程一旦开始运行时就被确定了大小;
  • 堆:用来存放malloc函数的结果,堆在运行时动态的扩展和收缩;
  • 共享库:用来存放标准库和数学库这样的共享库代码及其数据的区域;
  • 栈:位于用户地址顶部,编译器用它来实现函数调用,和堆一样,栈在程序执行器间可以动态的扩展和收缩。特别的,当调用一个函数时,栈会增长,从函数返回时,栈就会收缩,所以递归层次过深可能会导致栈溢出;同时临时数据也存放在此区域,故创建过大的临时数据时,也会导致栈溢出的问题;
  • 内核虚拟存储器:内核时操作系统总是驻留在存储器中的部分,应用程序不允许读写这个区域的内容或者直接调用这个区域的内核代码定义的函数。

5 磁盘结构

  • 磁盘构造:磁盘由一个或多个盘片构成,每个盘片有两面,如下:
    1.表面覆盖磁性记录材料;
    2.磁道:每个表面由一组称为磁道的同心圆组成,每个磁道被划分为一组包含相等数据量(通常为512字节)的扇区,扇区之间由间隙隔开;
    3.盘片中间有一个旋转主轴,其使得盘片以固定的旋转速率旋转;
    4.传动臂:连接读/写头的一个物理结构;
    在这里插入图片描述
  • 磁盘操作:
    1.寻道:通过移动传动臂,驱动器可以将读/写头定位在盘面的任何磁道上,这样的机械运动称为寻道;
    2.磁盘旋转:读/写头到了期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下,读/写头在磁盘表面高度大约位0.1微米处的薄气垫上,两者的相对运动速度可达约80km/h;
    在这里插入图片描述
  • 对扇区的访问时间:主要有三部分:寻道时间、旋转时间和传送时间,如下:
    1.寻道时间:通常为6~9ms,甚至可高达20ms;
    2.旋转时间:此时间依赖于读/写头到达目标扇区时盘面的位置和磁盘的旋转速度;
    3.传送时间:此时间依赖于旋转速度和每条磁道的扇区数目;
  • 经验值:对SRAM中的双字访问时间约4ns,对DRAM约60ns,

6 访问磁盘

  • CPU使用存储器映射I/O的技术来向I/O设备发射命令,以磁盘读为例:
    1.第一条指令是发送一个命令字,它告诉磁盘发起一个读,此条指令还会发送其他的参数,例如当读完成时,是否中断CPU;
    2.第二条指令指明应该读的逻辑块号;
    3.第三条指令指明该存储器磁盘扇区内容的主存地址;
  • 数据传输(DMA直接存储器访问):磁盘控制器收到CPU的读命令之后,将逻辑块号翻译成一个扇区地址,读该扇区的内存,然后将这些内容直接传送到主存,此过程无需CPU干涉;
  • 内容被安全存储在主存中后,磁盘控制器会给CPU发送一个中断信号,使CPU暂停当前工作跳转到一个操作系统函数,此函数会记录I/O已经完成,然后将控制返回到CPU被中断的地方;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值