计算机与时间

computer-time.jpg 计算机 (computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。
简化一下,就是按程序自动执行的电子设备。这里有个关键字“自动”
计算机在进行计算时,当然不需要通过操作设备(通过计算器按钮)直接与其打交道,而是将每个可能的操作存储成位的模式(10000000,10000002)见注1。计算机通过读存储器而获取指令,并将每个位模式解释成要执行任务的操作。这通常为取指导-执行周期(fetch-execute-cycle)。因为这种执行是周期性的和无限的,在计算机中每秒要运行几百或几十亿次。 见注2
这种重复的取指-执行周期由伟大的数学家冯 诺依曼确定
具体操作步骤如下:

  • 从存储器中取一个指令模式。
  • 确定并从存储器中取得该指令所需的数据
  • 在 运算器中对数据进行处理
  • 将运算的结果存储到存储器中。
  • 返回到第一步 见注3
以上是计算机工作的基础理论,那么回到文章中开始的问题,计算机是如何实现自动的,换句话说,这种自动的能力是由什么器件如何驱动的?
答案是定时测量 注4
很多计算机的活动都是定时测量驱动的,而定时测量由基于固定频率振荡器和几个硬件电路完成的。
所以有人把振荡器的作用比作电源,确实不为过,如果没有振荡器,我们现在的计算机将无从谈起,确切的说是冯 诺依曼体系结构的计算机。
通过上边的分析,我们发现时间与计算机有着非常微妙的关系。
赫兹 这是一个计算机与时间有着密切关系的概念。
1Hz = 1/s,即在单位时间内完成振动的次数,单位为赫兹(1赫兹=1次/秒)。注5
时钟频率 &时钟周期 CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed)。通常所说的某某CPU是多少GHz的,而这个多少GHz就是“CPU的主频”。很多人认为CPU的主频就是其运行速度,其实不然。CPU的主频表示在CPU内数字脉冲信号震荡的速度。
时钟周期也称为振荡周期,定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。
如果时钟频率为1Ghz 那么时钟周期为1ns
指令周期 指令周期:是指执行一条指令所占用的全部时间,一个指令周期通常含1~4个机器周期。(冯诺依曼取指执行步骤)
如果一个时钟周期为1ns 则指令周期一般为1-4ns
时钟中断 &频率 时钟中断告诉内核已经过了一定的时间,中断频率与硬件体系结构相关。较慢的节拍(周期)10ms,较快的为1ms。
时间分片 Linux 的进程调度基于分时(time sharing )技术:多个进程以"时间多路复用"方式工运行。因为CPU的时间被分成片(slice),给每个可运行的进行分配一片。如果当前运行的进程的时间时间片或时限到期时,该进程还没有运行完毕,进程切换就可以发生。
分时依赖前时钟中断。
一个时间片必须持续多长时间? 时间片的长短对系统性能很关键,它既不能太长也不能太短,关于时间片计算参见 注6
总结 计算机的自动运行离不开周期震荡,与时间有着密不可分的关系。
如上文提到的中断,进程调度
以及进程的时间统计,线程的sleep时间 wait 时间等等。
【计算机与时间】本文涉及到的核心概念都是有必然关联的,对后述学习进程调度,jvm指令执行以及jvm内存模型有一定帮助。
  • 注1 《计算机组成及汇编语言原理》附录c
  • 注2 《计算机组成及汇编语言原理》2.2.1 P32
  • 注3 《计算机组成及汇编语言原理》P34
  • 注4 《深入理解Linux内核》P228
  • 注5 https://baike.baidu.com/item/%E6%B5%B7%E5%9B%A0%E9%87%8C%E5%B8%8C%C2%B7%E9%B2%81%E9%81%93%E5%A4%AB%C2%B7%E8%B5%AB%E5%85%B9/2125965?fromtitle=%E8%B5%AB%E5%85%B9&fromid=28252&fr=aladdin
  • 注6 《深入理解Linux内核》P229

    推荐阅读