在程序是怎样跑起来的这本书中我们首先被询问的一个问题是“程序是什么?它是有什么组成的?而CPU又与程序有什么关系呢?”,若我们能知道前两个,其实更容易将你带入讨论“CPU是什么?”这一话题中,你也能更加深入去理。首先这一章节读下来我知道程序的指令和操作是CPU执行的,而CPU是计算机的核心部位,就像我们所说的“大脑”。我知道了CPU是通过汇编语言(汇编语言编写的程序转化成机器语言的过程称为汇编,反之称为反汇编。)来说明运行的,这是因为汇编语言与机器语言基本上是一一对应,高级编程语言与之大不相同,因此被"OUT"。而CPU又有四部分构成——寄存器、控制器、运算器和时钟,但其中最重要的就是寄存器,因为寄存器的作用是用来暂存指令、数据等处理对象,而其它三个只是CPU运行的步骤罢了,寄存器才是目标,因此也可以说在整个程序进行过程中寄存器是被作为对象来描述的。所以我们若想了解CPU必须了解寄存器,在之后的阅读中我明白CPU也就是寄存器的一个大的集合。我想这张图更能体现:

然而这也说明寄存器不止一种(例如eax和ebp),而且不同种类的CPU其内部寄存器的数量、种类以及寄存器存储的数值范围都不同。但可根据功能将其大致分为八种:

在大致了解了CPU后也就能够讨论程序的运行流程了,首先自然是用户发出程序指令,之后就是造作系统将程序复制到内存中,最后就是CPU内的寄存器开始工作了。其中起决定性作用的是程序计数器,因为程序流程有三种——顺序执行、条件分支、循环,而条件分支与循环又包括跳转指令,因此它决定着程序的流程走向。下面这一列子更加通俗易懂:

但我认为标志寄存器是CPU运算时不可或缺的部分,因为CPU在进行运算时会先参考标志寄存器(负责存放溢出和奇偶校验的结果)的数值后进行判断是否执行跳转指令。在1.5节中我们可以知道对于解决跳转指令后无法实现函数的调用我们可以使用call指令和return指令,因为在通过跳转指令给程序计数器设定值后,需要储存地址,处理函数,最终再返回函数调用点。而单纯的跳转必然无法实现,这是我们就可以借助call指令将调用函数后要执行的指令地址存储在名为栈的主内存中,函数处理完毕后,再通过return指令将保存在栈中的地址设定在程序计数器中。通过这两个主要的程序流程就可以使这一程序变得非常流畅。例图可以更加清晰的表明这一事实:      

CPU是什么?的更多相关文章

  1. 闰秒导致MySQL服务器的CPU sys过高

    今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...

  2. 继电器是如何成为CPU的(1)

    继电器是如何成为CPU的(1) ——<穿越计算机的迷雾>整理和总结 究竟是如何设计的电路,具有计算和控制的智力? 这一点也不高深.本系列文章从初中学的最简单的电路图说起,看看能不能从最初的 ...

  3. Linux上如何查看物理CPU个数,核数,线程数

    首先,看看什么是超线程概念 超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的 ...

  4. 一个表缺失索引发的CPU资源瓶颈案例

    背景 近几日,公司的应用团队反应业务系统突然变慢了,之前是一直比较正常.后与业务部门沟通了解详情,得知最近生意比较好,同时也在做大的促销活动,使得业务数据处理的量出现较大的增长,最终系统在处理时出现瓶 ...

  5. [原] KVM 虚拟化原理探究(3)— CPU 虚拟化

    KVM 虚拟化原理探究(3)- CPU 虚拟化 标签(空格分隔): KVM [TOC] CPU 虚拟化简介 上一篇文章笼统的介绍了一个虚拟机的诞生过程,从demo中也可以看到,运行一个虚拟机再也不需要 ...

  6. [原] Cgroup CPU, Blkio 测试

    关于Cgroup的简单测试 [toc] 简单介绍Cgroup (如果对cgroup熟悉可以忽略) 一般情况下,cgroup挂载到一个虚拟文件目录,然后可以通过文件系统的API对其操作. ># m ...

  7. %iowait和CPU使用率的正确认知

    resources 理解 %IOWAIT (%WIO) LINUX系统的CPU使用率和LOAD Linux Performance Observability Tools How Linux CPU ...

  8. Linux下高cpu解决方案

    昨天搞定了一个十万火急的issue,客户抱怨产品升级后系统会变慢和CPU使用率相当高,客户脾气很大,声称不尽快解决这个问题就退货,弄得我们 R&D压力很大,解决这个issue的任务分给了我,客 ...

  9. 《CPU的工作过程》

    本文转载自inter官方网址:https://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_proces ...

  10. PC虚拟现实应用的性能分析与优化:从CPU角度切入

    如今,虚拟现实 (VR) 技术正日益受到欢迎,这主要得益于遵循摩尔定律的技术进步让这一全新体验在技术上成为可能.尽管虚拟现实能给用户带来身临其境般的超凡体验,但相比传统应用,其具有双目渲染.低延迟.高 ...

随机推荐

  1. NF-ResNet:去掉BN归一化,值得细读的网络信号分析 | ICLR 2021

    论文提出NF-ResNet,根据网络的实际信号传递进行分析,模拟BatchNorm在均值和方差传递上的表现,进而代替BatchNorm.论文实验和分析十分足,出来的效果也很不错.一些初始化方法的理论效 ...

  2. 论文阅读小结(B/S和C/S结构)

    论文阅读小结 一.B/S 和 C/S 软件体系结构选择 1) C/S . B/S 结构概述 C/S 结构,即 Client/Server (客户机 / 服务器 ), C/S 结构软件分为客户机和服务器 ...

  3. OpenHarmony支持HDMI接口声卡适配说明

      高清多媒体接口(High Definition Multimedia Interface,HDMI  )是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号.HDMI可用于机顶盒.DV ...

  4. 直播预告丨OpenHarmony标准系统多媒体子系统之视频解读

    5月19日(周四)晚上19点,OpenHarmony开源开发者成长计划知识赋能第五期"掌握OpenHarmony多媒体的框架原理"的第五节直播课,即将开播! 深开鸿资深技术专家胡浩 ...

  5. 李东山:如何让 OpenHarmony 支持低功耗蓝牙芯片 GR551x

    编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献.分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点. 李东山 深圳市汇顶 ...

  6. Go 语言中 For 循环:语法、使用方法和实例教程

    for循环用于多次执行特定的代码块,每次都可以使用不同的值.每次循环执行都称为一次迭代.for循环可以包含最多三个语句: 语法 for 语句1; 语句2; 语句3 { // 每次迭代要执行的代码 } ...

  7. Qt多语言动态切换

    有个软件,里面做了13种语言,销售要求实现重新设置软件语言后,不需要重启软件,就可以看到软件显示出对应的语言.   软件中所有需要翻译的地方都是用的 tr(QString) 来做的,并且软件是多个窗口 ...

  8. pip提示升级pip版本

    今天在进行pip安装库的时候发现下面出现一段黄色的字体,如下图: 自由翻译: 大概意思就是说我现在安装的pip的版本是 20.0.2,最新版本是 20.1,希望我可以更新到最新的版本,并告诉了我怎么安 ...

  9. 攻防世界 debug

    题目 分析过程 丢到PE里面 一开始,我看到下面的脱壳提示,以为是我没见过的壳,下载了相关工具脱壳--发现脱了后又出现没见过的脱壳提示,根据提示脱壳弄出来的东西怪怪的 卡题,查了资料 学到一个新知识点 ...

  10. 鸿蒙智联生态产品《接入智慧生活App开发指导》(官方更新版)

    原文:https://mp.weixin.qq.com/s/BDC-12aiZz2EhtjYLR7QIg,点击链接查看更多技术内容. 在HarmonyOS Connect生态产品应用开发过程中,很多开 ...