概述
前言
曾经对于电脑小白的我来说(现在依然是~~),如何判断电脑配置不好就看CPU、只要CPU牛逼了,那这电脑一定速度就快,以致于我上大学买笔记本也秉持了这“优良思想”。根本不管笔记本能不能压的住CPU,那玩个3A大作,温度飙得啊,简直烫熊掌啊。
所以这几天看了《程序是怎样跑起来的》,结合书中第一章的内容特地做个科普,防止有人跟我一样再栽跟头!
对程序员来说CPU是什么?
CPU简介
CPU也叫中央处理器(CPU,central processing unit),其作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。CPU 自产生以来,在逻辑结构、运行效率以及功能外延上取得了巨大发展。是电子计算机的主要设备之一(电子计算机三大核心部件就是CPU、内部存储器、输入/输出设备),电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令,对指令译码并执行指令的核心部件。功效主要为处理指令、执行操作、控制时间、处理数据。
CPU的内部结构解析
电脑上的程序从双击开始运行,离不开CPU的工作。CPU所负责的就是解释和运行最终转换成机器语言的程序内容。
CPU和内存都是由许多晶体管组成的电子部件,通常称为IC(Integrated Circuit,集成电路)。从功能方面来看,CPU的内部由寄存器、控制器、运算器和时钟四个部分构成,各部分之间由电流信号相互连通。
寄存器:可用来暂存指令、数据等处理对象,可以把它看作是内存的一种。根据CPU的种类不同,一个CPU内部会有数量不一的寄存器。
控制器:负责把内存上的指令、数据等读入寄存器,并根据指令的执行结果来控制整个计算机。
运算器:负责运算从内存读入寄存器的数据。
时钟:负责发出CPU开始计时的时钟信号(时钟信号的频率越高,CPU的运行速度越快)。不过也有些计算机的时钟位于CPU的外部。
内存
为了帮助我们更好地理解CPU,来认识一下内存。通常所说的内存指的是计算机的主存储器(main memory),简称主存,通常使用DRAM(动态随机存取存储器)芯片,DRAM可以对任何地址进行数据的读写操作,但需要保持稳定的电源供给并时常刷新(确保是最新数据)。其通过控制芯片等与CPU相连,主要负责存储指令和数据。 主存由可读写的元素构成,每个字节都带有一个地址编号。CPU可以通过该地址编号读取主存中的指令和数据,当然也可以写入数据。但有一点需要注意,主存中存储的指令和数据会随着计算机的关机而自动清除。
程序的运行
程序启动后,根据时钟信号,控制器会从内存中读取指令和数据。通过对这些指令加以解释和运行,运算器就会对数据进行运算,控制器根据该运算结果来控制计算机。可能有人不理解控制计算机什么意思。所谓的控制就是指数据运算以外的处理(主要是数据输入输出的时机控制)。例如内存和磁盘等媒介的输入输出、键盘和鼠标的输入等,都是控制的内容。
程序运行流程示例:
1、用高级语言编写程序
2、将程序编译后转换成机器语言的EXE文件
3、程序运行时,在内存中生成EXE文件的副本
4、CPU解释并执行程序内容
CPU中的寄存器
寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。
可以说CPU就是寄存器的集合体,CPU四个部分,作为程序员来说,最重要的就是理解寄存器,因为程序是把寄存器作为对象来描述的。
机器语言级别的程序是通过寄存器来处理的。也就是说使用高级语言编写的程序会在编译后转化成机器语言,然后再通过CPU内部的寄存器来处理。
不同的CPU,其内部寄存器的数量、种类以及寄存器存储的数值范围都是不同的。根据功能的不同,将寄存器可以分为八类
种类 | 功能 |
---|---|
累加寄存器(只有一个) | 存储执行运算的数据和运算后的数据 |
标志寄存器(只有一个) | 存储运算处理后的CPU的状态 |
程序计数器(只有一个) | 存储下一条指令所在内存的地址 |
基址寄存器(不止一个) | 存储数据内存的起始地址 |
变址寄存器(不止一个) | 存储基址寄存器的相对地址 |
通用寄存器(不止一个) | 存储任意数据 |
指令寄存器(只有一个) | 存储指令。CPU内部使用,程序员无法通过程序对该寄存器进行读写操作 |
栈寄存器(只有一个) | 存储栈区域的起始地址 |
我们在C语言中使用的数组就是通过基址寄存器和变址寄存器实现的。通过这两个寄存器,我们可以对主内存上特定的内存区域进行划分,从而实现类似于数组的操作。标志寄存器的作用是无论当前累加寄存器的运算结果是负数、零还是正数,标志寄存器都会将其保存(也负责存放溢出、和奇偶校验的结果)。而程序计数器则决定了程序的流程。可以说除了存储指令的指令寄存器不需要程序员太多关注,其它寄存器都是我们应该熟悉的。
CPU的处理其实很简单
其实CPU能执行的机器语言指令大体就四类,并不多。
类型 | 功能 |
---|---|
数据转送指令 | 寄存器和和内存、内存和内存、寄存器和外围设备之间的数据读写操作 |
运算指令 | 用累加寄存器执行算术运算、逻辑运算、比较运算和移位运算 |
跳转指令 | 实现条件分支、循环、强制跳转等 |
Call/return指令 | 函数的调用/返回调用前的地址 |
虽然高级编程语言编写的程序看起来非常复杂,但CPU实际处理的事情很简单。
最后放张3990X镇楼,跪舔( *︾▽︾)
最后
以上就是背后小蜜蜂为你收集整理的《程序是怎样跑起来的》对程序员来说CPU是什么?的全部内容,希望文章能够帮你解决《程序是怎样跑起来的》对程序员来说CPU是什么?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复