深入理解计算机系统 - 存储设备2

总线

总线是一组并行的导线,能携带地址,数据和控制信号,有的总线设计使数据和地址信号共享同一组总线;多个设备可以共享同一组总线
深入理解计算机系统 - 存储设备2

  • 系统总线:连接CPU和I/O桥接器(其中包含内存控制器)
  • 内存总线:连接I/O桥接器和主存
  • I/O总线:通过I/O桥接器将I/O总线与系统总线和内存总线相连,众多I/O设备可以共享I/O总线
  • 总线接口:CPU通过内部的总线接口电路在总线上发起读写事务

CPU访问主存

执行 movq A,%rax:地址A的内容被加载到rax寄存器:CPU发起读事务:如图

读步骤

  • CPU将地址A放到系统总线上
  • I/O桥将信号传递给内存总线
  • 主存读取地址信号,从DRAM读取数据,写到内存总线
  • 数据传到系统总线
  • CPU从总线上读取数据,将其复制到rax寄存器
    深入理解计算机系统 - 存储设备2

执行 movq %rax,A:将rax寄存器值加载到地址A:CPU发起写事务

写步骤

  • CPU将地址A放到系统总线上
  • I/O桥将信号传递给内存总线
  • 主存读取地址信号,并等待数据到达
  • CPU将rax寄存器数据复制到总线
  • 主存读取内存总线数据,并存储到DRAM中

CPU访问磁盘

I/O端口

  • CPU使用内存映射的技术来向I/O设备发送指令;
  • 地址空间中有一块地址是为与I/O设备通信而保留的;
  • 每个这样的地址称为一个I/O端口;
  • 当一个设备与I/O总线相连时,它将被映射到一个或多个端口,即根据I/O设备,地址空间会分配一个或多个地址给这个I/O设备

读步骤

假设磁盘控制器映射到端口0XA0

  • CPU发送一个命令字,告诉磁盘发起一个读,同时还会发送中断信息等
  • CPU发送要读的逻辑块
  • CPU发送要存储到主存的地址
  • 磁盘收到来自CPU的命令
  • 磁盘将逻辑块信息翻译成扇区地址,读取扇区内容
  • 磁盘将扇区内容直接传送到主存
  • 传送完成后,磁盘给CPU发送一个中断信息,告诉CPU已完成命令

说明

  • CPU发送完指令后就立即开始做其他事情,而不是等待磁盘读取完毕,一个1Ghz的CPU处理器时钟周期为1ns,而磁盘读取的时间需要ms级的时间,若一直等待,会造成资源的浪费,故指令发送完后,即开始做其他事情,知道中断信号的到来
  • 磁盘设备可以自己执行总线事务而不需要CPU干涉,这个过程就是DMA,这种数据传送称为DMA传送(Direct Memory Access transfer)

关于CPU速度问题

计算机经过这么多年的发展,各方面的速度都有很大的提升,但存储设备的访问速度一直都赶不上CPU的速度,甚至差距越来越大,而如今,CPU的主频提升也遇到了障碍;

  • 原因:处理器功耗的公式:P = fCV²(f:时钟频率,C:电容,V:电压)
    - 显然,频率增加,功率会增大
  • 解决办法:多核处理器
    - 用多个小处理器核取代单个大处理器,每个小核能独立地与其他核并行地执行程序

所以计算机速度越来越快,并不是因为时钟频率一直在增加,而是处理器地核心数量增加的结果