深入理解计算机系统 - 存储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寄存器

执行 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:电压)
    - 显然,频率增加,功率会增大
  • 解决办法:多核处理器
    - 用多个小处理器核取代单个大处理器,每个小核能独立地与其他核并行地执行程序

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

|清风|

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值