CPU是什么?
在程序是怎样跑起来的这本书中我们首先被询问的一个问题是“程序是什么?它是有什么组成的?而CPU又与程序有什么关系呢?”,若我们能知道前两个,其实更容易将你带入讨论“CPU是什么?”这一话题中,你也能更加深入去理。首先这一章节读下来我知道程序的指令和操作是CPU执行的,而CPU是计算机的核心部位,就像我们所说的“大脑”。我知道了CPU是通过汇编语言(汇编语言编写的程序转化成机器语言的过程称为汇编,反之称为反汇编。)来说明运行的,这是因为汇编语言与机器语言基本上是一一对应,高级编程语言与之大不相同,因此被"OUT"。而CPU又有四部分构成——寄存器、控制器、运算器和时钟,但其中最重要的就是寄存器,因为寄存器的作用是用来暂存指令、数据等处理对象,而其它三个只是CPU运行的步骤罢了,寄存器才是目标,因此也可以说在整个程序进行过程中寄存器是被作为对象来描述的。所以我们若想了解CPU必须了解寄存器,在之后的阅读中我明白CPU也就是寄存器的一个大的集合。我想这张图更能体现:
然而这也说明寄存器不止一种(例如eax和ebp),而且不同种类的CPU其内部寄存器的数量、种类以及寄存器存储的数值范围都不同。但可根据功能将其大致分为八种:
在大致了解了CPU后也就能够讨论程序的运行流程了,首先自然是用户发出程序指令,之后就是造作系统将程序复制到内存中,最后就是CPU内的寄存器开始工作了。其中起决定性作用的是程序计数器,因为程序流程有三种——顺序执行、条件分支、循环,而条件分支与循环又包括跳转指令,因此它决定着程序的流程走向。下面这一列子更加通俗易懂:
但我认为标志寄存器是CPU运算时不可或缺的部分,因为CPU在进行运算时会先参考标志寄存器(负责存放溢出和奇偶校验的结果)的数值后进行判断是否执行跳转指令。在1.5节中我们可以知道对于解决跳转指令后无法实现函数的调用我们可以使用call指令和return指令,因为在通过跳转指令给程序计数器设定值后,需要储存地址,处理函数,最终再返回函数调用点。而单纯的跳转必然无法实现,这是我们就可以借助call指令将调用函数后要执行的指令地址存储在名为栈的主内存中,函数处理完毕后,再通过return指令将保存在栈中的地址设定在程序计数器中。通过这两个主要的程序流程就可以使这一程序变得非常流畅。例图可以更加清晰的表明这一事实:

CPU是什么?的更多相关文章
- 闰秒导致MySQL服务器的CPU sys过高
今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...
- 继电器是如何成为CPU的(1)
继电器是如何成为CPU的(1) ——<穿越计算机的迷雾>整理和总结 究竟是如何设计的电路,具有计算和控制的智力? 这一点也不高深.本系列文章从初中学的最简单的电路图说起,看看能不能从最初的 ...
- Linux上如何查看物理CPU个数,核数,线程数
首先,看看什么是超线程概念 超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的 ...
- 一个表缺失索引发的CPU资源瓶颈案例
背景 近几日,公司的应用团队反应业务系统突然变慢了,之前是一直比较正常.后与业务部门沟通了解详情,得知最近生意比较好,同时也在做大的促销活动,使得业务数据处理的量出现较大的增长,最终系统在处理时出现瓶 ...
- [原] KVM 虚拟化原理探究(3)— CPU 虚拟化
KVM 虚拟化原理探究(3)- CPU 虚拟化 标签(空格分隔): KVM [TOC] CPU 虚拟化简介 上一篇文章笼统的介绍了一个虚拟机的诞生过程,从demo中也可以看到,运行一个虚拟机再也不需要 ...
- [原] Cgroup CPU, Blkio 测试
关于Cgroup的简单测试 [toc] 简单介绍Cgroup (如果对cgroup熟悉可以忽略) 一般情况下,cgroup挂载到一个虚拟文件目录,然后可以通过文件系统的API对其操作. ># m ...
- %iowait和CPU使用率的正确认知
resources 理解 %IOWAIT (%WIO) LINUX系统的CPU使用率和LOAD Linux Performance Observability Tools How Linux CPU ...
- Linux下高cpu解决方案
昨天搞定了一个十万火急的issue,客户抱怨产品升级后系统会变慢和CPU使用率相当高,客户脾气很大,声称不尽快解决这个问题就退货,弄得我们 R&D压力很大,解决这个issue的任务分给了我,客 ...
- 《CPU的工作过程》
本文转载自inter官方网址:https://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_proces ...
- PC虚拟现实应用的性能分析与优化:从CPU角度切入
如今,虚拟现实 (VR) 技术正日益受到欢迎,这主要得益于遵循摩尔定律的技术进步让这一全新体验在技术上成为可能.尽管虚拟现实能给用户带来身临其境般的超凡体验,但相比传统应用,其具有双目渲染.低延迟.高 ...
随机推荐
- 解决cv2. imread、imwrite无法读取或保存中文路径图片问题
cv2.imwrite(filename, img) 修改为 cv2.imencode('.jpg', img)[1].tofile(filename) cv2.imread(filename, cv ...
- cyc_to_led
Entity: cyc_to_led File: cyc_to_led.v Diagram Generics Generic name Type Value Description MD_SIM_AB ...
- 【非插件实现】wordpress网站页脚添加,网站总访问数/今日访客数
1 /** 2 * 统计全站总访问量/今日总访问量/当前是第几个访客 3 * @return [type] [description] 4 */ 5 function wb_site_count_us ...
- Java面试题【3】
20)什么是线程安全? 含义:当多个线程访问某个方法时,不管你通过怎样的调用方式或者说这些线程如何交替的执行,我们在主程序中不需要去做任何的同步,这个类的结果行为都是我们设想的正确行为,那么我们就可以 ...
- C++设计模式 - 策略模式(Strategy)
组件协作模式: 现代软件专业分工之后的第一个结果是"框架与应用程序的划分","组件协作"模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用 ...
- 关于Guava Cache 需要注意的几点
一.元素过期策略 expireAfterWrite(long duration, TimeUnit unit):在元素[写入]或者[值更新]后的一段时间之后,自动移除元素. 当duration=0时, ...
- 解析 Go 编程语言数据类型:bool、整数、浮点数和字符串详细介绍
数据类型 数据类型是编程中的重要概念.数据类型指定了变量值的大小和类型.Go是静态类型的,这意味着一旦变量类型被定义,它只能存储该类型的数据. 基本数据类型 Go 有三种基本数据类型: bool:表示 ...
- 从模型到部署,教你如何用Python构建机器学习API服务
本文分享自华为云社区<Python构建机器学习API服务从模型到部署的完整指南>,作者: 柠檬味拥抱. 在当今数据驱动的世界中,机器学习模型在解决各种问题中扮演着重要角色.然而,将这些模型 ...
- NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
NL2SQL基础系列(1):业界顶尖排行榜.权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL.Text2DSL] Text-to-SQL(或者Text2S ...
- HarmonyOS SDK 助力新浪新闻打造精致易用的新闻应用
原生智能是HarmonyOS NEXT的核心亮点之一,依托HarmonyOS SDK丰富全面的开放能力,开发者只需通过几行代码,即可快速实现AI功能.新浪新闻作为鸿蒙原生应用开发的先行者之一,从有声资 ...