当前位置: 首页 > news >正文

1.2.6存储结构-磁盘管理:单缓冲区与双缓冲区读取、流水线周期、计算流水线执行时间

1.2.6存储结构-磁盘管理:单缓冲区与双缓冲区读取、流水线周期、计算流水线执行时间

  • 流水线周期
  • 计算流水线执行时间

微秒,时间单位,符号μs(英语:microsecond ),1微秒等于百万分之一秒(10的负6次方秒),1毫秒等于千分之一秒(10的负3次方秒)。

假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为15μs(微秒),由缓冲区送至用户区的时间是5μs,在用户区内系统对每块数据处理时间为11μs,若用户需要将大小为10个磁盘块的Doc1文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用单缓冲区需要花费的时间为(201)μs;采用双缓冲区需要花费的时间为(156)μs。

这道题中处理数据有三个步骤:

  1. 从磁盘读入到缓冲区(15μs)
  2. 从缓冲区读入到(内存)用户区(5μs)
  3. 处理(内存)用户区数据(1μs)

单缓冲区:
步骤1和2都需要访问临界资源——缓冲区,所以需要合并成一个操作阶段。
使用缓冲区时不能并行,必须分开执行,时间为15μs+5μs20μs;其次处理数据1μs。
构造成流水线后,整个过程划分为2个阶段,1. 从磁盘读入到缓冲区(15μs),同时从缓冲区读入到用户区(5μs),共20μs,2. 处理(内存)用户去数据(1μs)。 根据流水线处理公式,
流水线执行时间=20μs+1μs+(10-1)×20μs=201μs

双缓冲区:
可以实现读入到缓冲区2和从缓冲区1读入到用户区的并发。
读入缓冲区,和从缓冲区读入用户区,可以对不同的缓冲区进行,也就是说,步骤1和2可以并行处理。
对于这里构造成流水线后,整个过程划分为3个阶段: 1. 从磁盘读入到缓冲区(15μs),2. 从缓冲区读入到用户区(5μs),3. 处理(内存)用户去数据(1μs)。 根据流水线执行公式,
流水线执行时间=15μs+5μs+1μs+(10-1)×15μs=156μs

图解如下

请添加图片描述

流水线周期

流水线应用过程中,会将需要处理的工作分为N个阶段,最耗时的那一段所消耗的时间称为流水线周期。
如:使用流水线技术执行100条指令,每条指令取指2ms,分析4ms,执行1ms,则流水线周期为4ms。

计算流水线执行时间

延续上面场景,将1个任务的执行过程可分成N个阶段,假设每个阶段完成时间为t,则完成该任务所需的时间为Nt。若以传统的方式,则完成k个任务的时间为kNt;而使用流水线技术执行,且花费的时间是Nt+(k-1)t。也就是说。除了第一个任务需要完整的时间外,其他都通过并行,节省了大量的时间。所以流水线的执行时间可通俗的表达为:

流水线执行时间=第1条指令的执行时间+(n−)×流水线周期流水线执行时间=第1条指令的执行时间+(n-)×流水线周期 流水线执行时间=1条指令的执行时间+(n)×流水线周期
注意:n表示需要处理的任务数量

考试时,又需要注意一个细节,流水线的执行时间计算,进一步可以分为理论情况与实际情况两种不同的方式。

比如:
某计算机系统,一条指令的执行时间需要经历取指(2ms),分析(4ms),执行(1ms)三个阶段,现要执行100条指令,利用流水线技术需要多长时间?

理论上来说,1条指令的执行时间为:2ms+4ms+1ms=7ms
所以:理论流水线执行时间=2ms+4ms+1ms+(100-1)×4ms=403ms

而实际上,真正做流水线处理时,考虑到处理的复杂性,会将指令的每个执行阶段的时间都统一为流水线周期,即1条指令的执行时间为:4ms+4ms+4ms=12ms
所以:实际流水线执行时间=4ms+4ms+4ms+(100-1)×4ms=408ms

考试时80%以上的概率采用理论公式计算,如果理论公式计算结果无正确选项,再用实际公式计算。

http://www.lryc.cn/news/2665.html

相关文章:

  • 【pytest接口自动化测试】结合单元测试框架pytest+数据驱动模型+allure
  • 展锐平台WIFI吞吐问题解决方案
  • 全局向量的词嵌入(GloVe)
  • 华为OD机试 - 特异性双端队列(Python),真题含思路
  • 【Linux】操作系统进程概念
  • C语言const的用法详解
  • Day886.MySQL的“饮鸩止渴”提高性能的方法 -MySQL实战
  • 08- 数据升维 (PolynomialFeatures) (机器学习)
  • 2023备战金三银四,Python自动化软件测试面试宝典合集(二)
  • 笔试题-2023-紫光展锐-数字芯片设计【纯净题目版】
  • WordPress网站日主题Ri主题RiProV2主题开启了验证码登录但是验证码配置不对结果退出登录后进不去管理端了
  • 自动驾驶感知——毫米波雷达
  • 取电芯片全协议都可兼容
  • 自己总结优化代码写法
  • Java体系最强干货分享—挑战40天准备Java面试,最快拿到offer!
  • 云计算|OpenStack|错误记录和解决方案(不定时更新)
  • 项目实战-NewFixedThreadPool线程池
  • 导数与微分总复习——“高等数学”
  • Linux软件安装
  • 【表面缺陷检测】基于YOLOX的PCB表面缺陷检测(全网最详细的YOLOX保姆级教程)
  • 【C#基础】C# 程序基础语法解析
  • 【webpack】webpack 中的插件安装与使用
  • 生物素-磺基-活性酯,Sulfo-NHS Biotin科研用试剂简介;CAS:119616-38-5
  • Debain安装命令
  • 2023-02-10 - 6 聚合
  • Servlet实现表白墙
  • [python入门㊸] - python测试函数
  • 通讯录文件操作化
  • 为什么 Web3 社交将超越其 Web2 同行
  • 当资深程序员深夜去“打劫”会发生什么?——打家劫舍详解