实际上关于本文所要探讨的内容,早在19年就在 关于可计算、图灵机及CPU性能 中进行了梳理。所以本文简要串联下逻辑,其余内容可以参见之前的这篇文章。

计算机和操作系统的核心自然是为 计算 服务的,那么什么问题是可被计算的呢?这就是可计算理论探讨的问题。

但是理论过于抽象,而图灵机就可以认为是该理论的模型,即 计算模型 。图灵机可以等价于任何有限逻辑数学过程的终极强大逻辑机器。除了图灵机之外,还有其他的计算模型,比如寄存器机

关于此处的内容,参见维基百科的定义。可以在维基百科上顺着图灵机找到很多相关的概念索引,值得试试看。

那么 计算模型 如何变成现实呢?冯·诺伊曼结构

该结构思想和我们之前学过的知识点有非常大的联系,主要是:

  • 存储和计算分离:plusar消息队列可还记得?当然了,plusar的存储和计算分离是消息队列历史演进中产生的思想。
  • 更进一步的是,逻辑和控制分离:各种设计模式、编程思想,重点就是控制流程和业务逻辑的分离。

该结构五大件:控制器、运算器、存储器、输入、输出。算法都讲究空间复杂度和时间复杂度,为什么呢?和五大件一对比,很自然得出推论:

  • 存储器:对应空间
  • 控制器和运算器组成的执行单元:对应时间

一个程序占用执行单元时间长了,自然时间复杂度就高。你用的多了,其他程序不就用的少了?一个程序占用存储器的空间越多,空间复杂度越高。虽然有虚拟内存机制,好像内存(存储单元)大小是相对无限的,但是过大内存占用,会导致频繁的缺页,拉高磁盘负载,进而又反过来影响执行单元的执行。

假设: 执行单元不再是晶体管实现,而是变成了量子计算机,且量子计算器的计算能力无穷。那么请问,到那时,时间复杂度还是重要的标准吗?

再回到 计算 上,现阶段计算的重要指标就是速度,如何评估速度呢?两个维度:

  1. 响应时间:单位任务完成的时间
  2. 吞吐量:单位时间完成的任务

这两个维度太棒了,响应时间偏向于个体,吞吐量偏向于整体。

那么单个任务的执行时间,在这里就是CPU的执行时间,CPU执行时间 = CPU时钟周期数 * 周期时间。

当CPU当做是一个需要口号121 121来指挥的机器,喊口号时工作(喊得越快跑的越快),不喊口号时停止。那么这个机器完成一项任务的总时间,自然就等于喊口号的数量 * 喊口号的频率。

这里更建议阅读一下《编码:隐匿在计算机软硬件背后的语言》,可以理解为什么CPU需要时钟周期,也即底层硬件结构:实际上就是 组合逻辑电路和时序逻辑电路组成,需要统一的口号(心跳)来协调工作。

同时,建议阅读《计算机组成》第一章。

CPU执行时间 = CPU时钟周期数 * 周期时间,而CPU时钟周期数 = 指令数 * 平均每条指令的执行时间。

所以:CPU执行时间(响应时间) = 指令数 * 平均每条指令的执行时间 * 周期时间。

这里你可能会想问,为什么是 平均每条指令的执行时间呢? 其实答案也在《编码》中,不同指令对应操作不同的硬件单元,不同的硬件单元对应的电路组成不一样,所以总的执行时间也不相同。类似的,电脑上打开文本文档和打开IDEA哪个快呢?

为什么要推算响应时间的公式呢?答案还是 计算 的重要指标:速度,也即缩短响应时间,加快执行。

所以我们看到计算机的主频相比之前变高不少,对应就是降低了周期时间,但也受着约束,这块内容请参加之前的文章。

而指令数的下降一方面是程序本身优化,另一方面是引入新硬件结构支持更复杂的指令。

最后 平均每条指令执行时间(CPI),对应如下方面:

  1. 流水线技术:单个CPU上采用多级流水线同时执行多条指令,使得CPI降低,增大吞吐量
  2. 并行技术:多个CPU同时执行多条指令,使得CPU降低,增大吞吐量
  3. 缓存技术:通过在内存和CPU之间加入多级缓存,降低CPI

关于计算抽象就说到这里。通过本文的分析,也就引出了下文的指令集,指令集是对CPU整体硬件的抽象,并且流水线技术是对指令执行重要的优化。

其他内容参见: 关于可计算、图灵机及CPU性能 ,与本文相互补充。

计算抽象:可计算理论、模型与计算机相关推荐

  1. 计算是计算机科学独有的方法,大学计算机基础教学中的计算思维培养.doc

    大学计算机基础教学中的计算思维培养 龚沛曾 杨志强 ? 2012-06-26 08:58:58 来源:<中国大学教学>2012年第05期 摘要:首先仔细地分析了计算思维的定义,提出了计算思 ...

  2. 怎么利用计算机计算潮流计算,电力系统潮流计算的目的是什么

    电力系统潮流计算的目的是什么 潮流计算是研究电力系统稳态运行情况的一种基本电气计算,常规潮流计算的任务是根据给定的运行条件和网路结构确定整个系统的运行状态,如各母线上的电压(幅值及相角).网络中的功率 ...

  3. 计算是计算机科学独有的方法,大学计算机基础教学中的计算思维培养

    大学计算机基础教学中的计算思维培养 摘要:首先仔细地分析了计算思维的定义,提出了计算思维由意识.方法和能力三个层次的内容组成:然后指出了计算机基础教学中计算思维的无意识.潜移默化教学的现状:最后提出计 ...

  4. 超计算(Hyper computation)模型

    超计算(Hyper computation)模型 作者:Xyan Xcllet 链接:https://www.zhihu.com/question/21579465/answer/106995708 ...

  5. 【视频课】Pytorch模型分析进阶(可视化,参数量与计算量,计算速度)

    课程内容 本次课程内容是Pytorch的高阶使用部分,要求大家预先要熟练掌握Pytorch.总课程大纲包括Pytorch模型结构的分析,Pytorch模型速度与计算量分析,Pytorch模型可视化3部 ...

  6. 用计算机计算的定义,计算(数学用语)_百度百科

    计算,数学用语,是一种将单一或复数之输入值转换为单一或复数之结果的一种思考过程.[1] 中文名 计算外文名 calculate 适用范围 数理科学 计算定义 编辑 语音 计算的定义有许多种使用方式,有 ...

  7. 雾计算机和云计算机哪个好,怎么理解云计算和雾计算还有边缘计算

    此外,<数据时代 2025>还预测,2025 年数据量产生的大主体将由消费者转移到企业,届时企业产生的数据量将占到数据总量的 60%.企业领导者将可以从这些海量数据信息和其价值中获得新的商 ...

  8. R语言使用randomForest包构建随机森林模型(Random forests)、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB

    R语言使用randomForest包中的randomForest函数构建随机森林模型(Random forests).使用importance函数查看特征重要度.使用table函数计算混淆矩阵评估分类 ...

  9. R语言使用rpart包构建决策树模型、使用prune函数进行树的剪枝、交叉验证预防过拟合、plotcp可视化复杂度、rpart.plot包可视化决策树、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用rpart包构建决策树模型.使用prune函数进行树的剪枝.使用10折交叉验证选择预测误差最低的树来预防过拟合.plotcp可视化决策树复杂度.rpart.plot包可视化最终决策树.使用t ...

最新文章

  1. CentOS 7更新时出现Multilib version problems
  2. 深度学习中的线代基础
  3. 有关Visual Studio 2008 SP1和SQL Server 2008的一些说明
  4. android内存碎片化怎么处理,安卓越用越卡毛病有解了!ColorOS内存反碎片化引擎让手机久用不卡...
  5. main函数中argc的区别argv
  6. 深入浅出统计学 第一章 数据的可视化
  7. 如何对付费广告流量进行标记?
  8. 安装texlive并用latex编写一段中文,最后生成pdf文件
  9. centos 下载文件很慢_CentOS镜像下载
  10. HDU 6168 Numbers 思维 水题
  11. 华为鸿蒙ota真机测试,华为鸿蒙OS 2.0测试版继续推进:新增机型一览
  12. mysql查询数据1168_mysql merge报错ERROR 1168
  13. 爬虫初学——爬取京东商品的评论(二)
  14. WEB CTF入门题解析
  15. 【饥饿游戏搜索算法】基于饥饿游戏搜索算法求解单目标优化问题(HGS)含Matlab源码
  16. Unity3D引擎各大插件免费下载地址
  17. 采用 redis主从 + 哨兵(sentinel) + vip漂移搭建一套redis高可用集群
  18. RAID磁盘阵列故障
  19. 调用百度ai接口实现图片文字识别详解
  20. 图像超分辨率综述学习之:Deep Learning for Image Super-resolution A Survey

热门文章

  1. 烏托邦:起源魔法圖案攻略
  2. 【独家】彩虹最新6.6版本/免授权/后台同步官方版本升级
  3. STM8系列5大主流成员(S,L,T,AF,AL)
  4. 小白入门Arduino,一步一图搭建开发环境
  5. 基于python+django框架+Mysql数据库的在线电子书阅读系统设计与实现
  6. OpenJudge NOI题库 1.5编程基础之循环控制
  7. Linux系统搭建jupyter notebook
  8. vue 动态组件使用教程
  9. html点击图标出现日历,日历图标的纯CSS实现
  10. 3dmax第二次安装遇到的问题及解决方案