计算机基础_程序是怎样跑起来的_01_CPU是什么?

《计算机是怎样跑起来的》 || 第二章 • 试着制造一台计算机 第二章 • 试着制造一台计算机 【00】基础知识 【01】三种最重要的IC 【02】元件收集 【03】连接各元件 阅读详情

CPU是什么?

0、热身问题

  1. 程序是什么?
    指示计算机每一步动作的一组指令。
  2. 程序由什么组成?
    指令和数据。
  3. 什么是机器语言?
    CPU可以直接识别并使用的语言。
  4. 正在运行的程序存储在什么位置?
    内存。
  5. 什么是内存地址?
    内存中,用来表示指令和数据存储位置的数值(类比“门牌号”)。
  6. 计算机的构成元件中,负责程序的解释和运行的是哪个?
    CPU。

之前只知道CPU是中央处理器(Central Processing Unit),相当于计算机的大脑,它的内部由数百万至数百亿个晶体管构成,但其实了解这些还是远远不够的。


1、CPU的内部结构解析

CPU的功能:解释和运行机器语言的程序内容。

CPU的组成:

  1. 寄存器:负责暂存指令、数据等处理对象;
  2. 控制器:负责把内存上的指令、数据读入寄存器,并根据指令的执行结果来控制整个计算机;
  3. 运算器:负责运算从内存读入寄存器的数据;
  4. 时钟:负责发出CPU开始计时的时钟信号。

各部分之间由电流信号相互流通。

接着简单说一下内存(后面又章节会提到)。

内存指的是计算机的主存储器(mian memory),简称主存。主存通过控制芯片等CPU相连,主要负责存储指令和数据。CPU可以通过地址编号读取主存中的指令和数据。

程序的运行机制:程序启动后,根据时钟信号,控制器会从主存中读取指令和数据到寄存器中,进而对这些指令和数据加以解释和运行,运算器对数据进行运算,控制器再根据结果来控制计算机。


2、CPU是寄存器的集合体

CPU的四个构成部分中,我认为寄存器是最重要的,因为程序是把寄存器作为对象来描述的。

不同的CPU内部的寄存器的数量、种类以及寄存器存储的数值范围都是不同的。

根据寄存器的种类,大致分为八类,如下表所示。

表1 寄存器的主要种类和功能
寄存器功能
累计寄存器(accumulator register)存储执行运算的数据和运算后的数据
标志寄存器(flag register)存储运算处理后的CPU状态
程序计数器(program register)存储下一条指令所在内存的地址
基址寄存器(base register)存储数据内存的起始地址
变址寄存器(index register)存储基址寄存器的相对地址
通用寄存器(general register)存储任意数据
指令寄存器(instruction register)存储指令
(CPU内部使用,程序员无法操作)
栈寄存器(stack register)存储栈区域的起始地址

对于程序员来说,CPU就是具有各种功能的寄存器的“集合体”。

一般而言,程序计数器、标志寄存器、累加寄存器、指令寄存器和栈寄存器只有一个。而基址寄存器、变址寄存器、通用寄存器一般不止一个。

后面会经常提及这些寄存器,所以每个寄存器的大致功能要记住,才不会看得一头雾水。


3、决定程序流程的程序计数器

以“123和456这两个数值相加,并将结果输出到显示器上”这个例子来展示程序执行的流程。

备注:一般数据和指令都是存储在多个地址上的,即一个数据或者一个指令可能会占据多个字节,但是本例为便于说明,把数据和指令分配到一个地址上。

在这里插入图片描述

地址0100是程序运行的开始位置,当操作系统把程序加载到内存后,会将程序计数器设定为“0100”。

CPU的控制器会参照程序计数器的值从内存中读取相应指令并执行,每执行完一个指令,程序计数器的值加1,即“0101”。

注:若指令占据多个内存地址时,程序计数器的值则加上加上相应的数值。


4、条件分支和循环机制

程序流程分为:

  1. 顺序执行:按照地址内容的顺序执行指令。
  2. 条件分支:根据条件执行任意地址的指令。
  3. 循环分支:重复执行同一地址的指令。

顺序执行,霉执行一个指令,程序计数器的值就加1(若指令占多个内存地址时,则加上相应的数值)。

条件分支和循环分支,机器语言的指令就可以将程序计数器的值设为任意地址。

以“输出123的绝对值到显示器”的程序为例。

在这里插入图片描述

当执行到地址为“0102”的指令时,此时累加寄存器的值大于0,则跳转执行地址为“0104”的指令,这就是条件分支。


5、函数的调用机制

函数调用机制:通过把程序计数器的值设定成函数的存储地址来实现的。

在编译高级变成语言的程序后,函数调用的处理会转换成机器语言的“call”指令,函数结束的处理会转成机器语言的“return”指令。

call指令:在程序计数器的值被设定为函数的入口地址前,call指令会把函数执行结束后要执行的指令地址存储到栈的主存内。

return指令:函数执行完毕后,通过函数出口执行return指令,把保存在栈中的指令的内存地址设定到程序计数器。

下面以“调用MyFunc函数”的C语言程序片段举例。

在这里插入图片描述


6、通过地址和索引实现数组

再次回顾一下基址寄存器和变址寄存器的功能。

基址寄存器(base register):存储数据内存的起始地址。

变址寄存器(index register) :存储基址寄存器的相对地址。

假设计算机内存上划分着“0x 0000 0000 ~ 0x FFFF FFFF”这些内存地址,我们可以使用一个32位的寄存器来查看我们需要的内存地址。

但是,假设我们要查看“0x 1000 0000 ~ 0x 1000 FFFF”的地址时,我们也可以使用两个寄存器来操作,这样就更方便。

在这里插入图片描述


7、CPU的处理其实很简单

虽然高级编程语言编写的程序看起来很复杂,但是CPU实际处理的事情很简单。CPU能执行的机器语言指令很少,只是通过不断的重复执行某个运算而已。

表2 机器语言指令的主要类型和功能
类型功能
数据传送指令寄存器和内存、内存和内存、寄存器和外围设备之间的数据读写操作
运算指令用累加寄存器执行算术运算、逻辑运算、比较运算、移位运算
跳转指令实现条件分支、循环、强制跳转等
call / return 指令函数的调用 / 返回调用前的地址

8、补充:比特和字节

8.1、比特

比特bit是二进制位(Binary digit)的简称,一个二进制包含的信息量成为一比特bit。

比特(bit)是计算机内部数据存储的最小单位。

二进制在效率和成本方面的优势为全世界所接受,现在电脑所有的信息都是二进制的,就是0和1组成的。

8.2、字节

字节Byte是计算机数据处理的最小单位。

习惯上用大写的“B”表示,每个字节有8个二进制位,其中最右边的一位为最低位,最左边的一位为最高位,每个二进制位的值不是0就是1。

一个字节由8个二进制位组成,即“1 Byte = 8 bit”,这也是计算机设计时规定的。

相关换算:
1 Byte = 8 bit
1 KB = 1024 Byte = 1024 * 1 Byte = 1024 * 8 bit = 8 Kb

注意:K是1024,即2^10,并不是1000。
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB

8.3、字

字和字节都是计算机的存储单元。

字由若干个字节组成,一个字节是8个比特bit。

字的位数叫做字长,即cpu一次处理二进制代码的位数。

字长与计算架构有关,比如32位机,一个字就是32位,换算成字节就是4字节;同样的64位机,一个字就是64位,也就是8字节。字也是计算机一次处理数据的最大单位。

字 与 字节的换算:
32位计算机:1字 = 32位 = 4字节
64位计算机:1字 = 64位 = 8字节

8.4、32位机和64位机

我们的电脑是32位还是64位主要是受到电脑cpu、主板硬件决定的,32位的cpu一次处理32位数据,64位的就处理64位数据。

简单理解就是64位在性能上远远强于32位。

比如32位操作系统最大支持4G内存,如果电脑内存小于4G的话,是不能安装64位操作系统的。

那为什么是4G呢?

这个在后面讲“内存”时我们会说,现在先简单地提一下。

首先呢,4G指的是4GB。32位指的是CPU的32位地址线,可以访问2^32个不同的地址单元。一个地址单元是1Byte。

2^32 * 1 B 
= 2^2 * 2^10 * 2^10 * 2^10 B 
= 4 * 1024 * 1024 * 1024 B 
= 4 * 1024 MB 
= 4 GB

注:如有错误,敬请指正。

程序员应如何理解CPU:上篇 文章目录什么是机器指令 你可能会想,作为程序员,我们需要理解CPU吗? 是的,如果你想彻底理解操作系统的话。 在后面的课程中你会发现,仅仅依赖软件是无法完成某些特定的功能的,比如,我们在《程序员如何理解内存》这一节中提到的虚拟内存,这项功能的实现需要依赖CPU的配合才能完成。因此在这一节中,将重点讲解一下作为程序员应该知道哪些CPU相关的知识。   什么是机器指令 你肯定已经知道了,CP... 阅读详情

相关推荐

01【计算机基础、Java概述】

01【计算机基础、Java概述】 一、计算机的基础 1.1 计算机基础 1.1.1 计算机基础概述 Java是一门编程语言,语言有英语、法语、俄罗斯语等,仅我们国家就有汉语、藏语、满语等,但不管是什么语言,都是用来沟通的介质。其表达意思的本质都是一样的,程序员编程的本质就是让计算机去工作,而编程语言就是程序员与计算机沟通的介质程序员要想让计算机工作,必须知道计算机能干什么,怎么干的,这也就是我们必须学习计算机基础的原因; 程序员用编程语言写程序,最终开发出的结果就是一个软件,这些软件必须运行在操作系统

緑水長流*z 1万+

史上最通俗易懂的CPU知识!一分钟秒懂主频、核心、线程、架构!

史上最通俗易懂的CPU知识!一分钟秒懂主频、核心、线程、架构! 我们都说CPU相当于人类的大脑,在日常生活中,人脑是术业有专攻,有人天生适合搞艺术,有人天生适合搞科学。CPU作为计算机的大脑,其实也是这样的。下面就带大家了解一下CPU知识以及怎么选择合适的CPU。 cpu CPU知识科普 CPU有几个重要的参数:主频、核心、线程、缓存、架构。那么他们到底是什么意思,又有啥联系呢?以下知识通俗易懂,看完秒懂。 一、主频 我们常在CPU的..

theVirtual的博客 2万+

要配置西门子G120XA变频器实现**端子启停**和**Modbus RTU(485)频率给定

如有问题,可通过STARTER软件在线诊断Modbus通讯状态。要配置西门子G120AX变频器实现。

微:13763355074 4849

计算机术语中的cpu是指什么意思是,什么叫cpu_cpu是什么意思_电脑cpu意思介绍 - 系统家园...

很多用户都知道电脑里有cpu,电脑的大脑就是cpu,但是不知道什么叫cpu,cpu具体是什么意思,英文的全称是central processingunit也就是中央处理器。下面来看看详细的cpu介绍吧。什么叫cpuCPU是英文:Central Processing Unit的缩写,Central ProcessingUnit的译文为--中央处理器。因此,CPU就是中央处理器的简称。那么中央处理器又...

weixin_42513054的博客 2万+

整理笔记——二极管

二极管是一种由半导体材料制成的一种具有单向导电性能的电子元器件,二极管的核心是PN结。加在二极管两端的电压和通关的电流被成为,二极管的伏安特性曲线​​​二极管的正向特性:起初正向电压较小时,正向电流几乎没有,称之为死区,此时二极管处于截止状态。当电压差超过截止电压(0.5V或者0.7V),电流随着电压上升,开始增加缓慢,随后急剧增大,二极管的电阻变小进入导通状态,此时电压变化较小。二极管的反向特性:起初反向电流很小,不随电压二变化,此时成为反向饱和电流;当方向电压达到二极管的反向击穿电压。

#include 811

波束形成算法:LCMV实现(MATLAB)

阵列信号处理,波束成形,

weixin_43601588的博客 1万+

电脑小白必看!CPU 到底是啥?一张图带你轻松搞懂「电脑大脑」

CPU,又称中央处理器,是计算机的主要设备之一,功能主要是解释计算机指令以及处理计算机软件中的数据,是电脑的核心部分,相当于人体的大脑。

yuhang_17的博客 9242

麒麟系统下的多媒体革命:VLC在kylinV10上的性能优化与调试技巧

本文详细介绍了在麒麟kylinV10系统上优化VLC多媒体播放性能的实战技巧,特别针对飞腾FT-2000/4硬件平台。从源码编译调优到硬件加速配置,提供全面的性能提升方案,帮助开发者在国产操作系统上构建高效媒体播放环境。

weixin_29168675的博客 457

帅地这些年看过的书

大家好,我是帅地。好久没有给大家推荐书籍了,我一般很少给大家推荐书籍,因为自己没看过的,基本不推,只推荐我自己看过且自己自认为不错的书籍。因为我自己本身是凭借着扎实的基础拿到大厂 offer 的,所以我一直跟大家强调基础的重要性,而且学完这些基础书籍,自己也会莫名自信,当然,不得不说,工作后,其实基础知识还是很少用到。但这并不能阻碍我们对的学习,特别是未来要找工作面试的在校生!今天这篇文章做了一下汇总,把自己看过的基础捋了一遍,大家以后要学某门知识时,可以来参考一波。

帅地 1127

忆阻器(二)——忆阻模拟器

除了真实的器件,我们也可以用运放和乘法器来搭忆阻模拟器。这节将介绍数学模型、matlab仿真及multisim仿真。 一、数学模型 忆阻分为磁控和荷控两种,这里介绍三次非线性磁控忆阻模型: {I=W(φ)VW(φ)=a+3bφ2dφdt=V \begin{cases} I=W(\varphi)V \\ W(\varphi)=a+3b \varphi ^2\\ \frac{d \varphi }{dt}=V \end{cases} ⎩⎪⎨⎪⎧​I=W(φ)VW(φ)=a+3bφ2dtdφ​=V​ 这里的WWW

http://www.icfgblog.com/ 1万+

二、FM1288调试方案-工具软件使用

分析音频数据的软件需要满足以下几点:1、能打开原始pcm音频文件;2、基本的音频播放软件的操作;3、能查看分析音频数据的频率成分;4、能查看分析音频音量幅度;5、能完成基本音频处理:降噪、音量增幅限幅、滤波和均衡;

优快云mianfeixiazai001的博客 1294

科普:什么是CPU?CPU和芯片关系?CPU怎么做的?CPU有什么用?不同CPU有什么区别?我们怎么选CPU?

如果说CPU是大脑,那么电子产品里面其他芯片就相当于小脑、脑干之类的,这个比喻不是很准确,反正就是负责内容不一样吧,有些芯片负责记忆,有些芯片负责升压降压(改变电源电压),而CPU只是相当于大脑思考的那部分,CPU不会记东西哦。作为整个系统的核心,CPU也是整个系统最高的执行单元,因此CPU已成为决定性能的核心部件。概念上不是一回事,但是口语中我们常说的芯片通常在指代CPU(因为他太重要了),很多电子设备中,主要的芯片,被叫做主控芯片=主芯抄片,往往都是CPU,或者是和CPU概念很类似的SoC,MCU。

m0_73349801的博客 4131

MFC属性网格控件(CMFCPropertyGridCtrl)完全指南:构建专业属性编辑界面

本文详细介绍了MFC中的CMFCPropertyGridCtrl控件的使用方法。主要内容包括:控件基础用法(初始化、添加属性、事件处理)、高级设置(自定义外观、创建属性类型、动态更新)、派生类实现(自定义绘制、搜索过滤功能)、界面集成技巧(对话框布局、属性编辑器)以及实际应用示例。文章重点讲解了如何通过继承和自定义实现复杂功能,并提供了性能优化、多语言支持等最佳实践方案。该控件适用于需要大量参数配置的应用程序,能够创建类似Visual Studio属性窗口的专业界面。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 155

计算机是怎么跑起来的?

01 在学习工作中,经常会遇到些让我脑子短路无法回血的问题? 你去评估下这项目需要几台机器能维持稳定性,CPU要几核,内存要多大? X模块偶发出现内存飙升的情况,你追查下原因顺便想想如何优化? 瞬间,鸦雀无声甚至气氛一度及其尴尬。作为一个CURD男孩,写代码就是一把梭复制粘贴,那能管那么宽?仔细一想,我也是学过计算机组成原理、操作系统原理的男孩,岂能说怂就怂? 这时,冯·诺依曼、寄存...

码农皮邱 596

Python与CAD系列基础篇(二)创建点和直线并修改样式

①通过pyautocad连接AutoCAD进行处理②通过ezdxf处理dxf格式文件。创建和编辑点和直线的方法,并演示如何修改它们的样式、颜色和线型。

weixin_43894929的博客 3036

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

01 CPU是什么

通过阅读汇编语言代码可了解机器语言程序运行情况,对程序员而言“CPU是寄存器的集合体”,寄存器用于处理数据(如存储、加法运算等),其种类通过名字区分(如示例中的eax、ebp),内存存储场所则通过地址编号区分;寄存器可存储指令或数据,数据分为“运算数值”和“内存地址数值”,前者由累加寄存器存储,后者由基址寄存器、变址寄存器等存储(如代码示例中的eax是累加寄存器,ebp是基址寄存器)。​ 指令实现,该指令在跳转至函数入口地址前,会将调用点的下一条指令地址(如示例中的 0154)存入栈中;

qq_53800744的博客 2187

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

程序是怎样跑起来的-第01章 对程序猿来说CPU是什么

程序是怎样跑起来的 How Program Works/program |ˈprəʊgræm, American -grəm| 程序 Standing on Shoulders of Giants./shoulder |ˈʃəʊldə(r)| 肩/giant |ˈdʒaɪənt| 巨人 集成开发环境(IDE,Integrated Development Envir

静静燃烧的雪的专栏 1032

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C语言程序设计基础(01)—— 计算机与程序设计基础

整理了一点计算机组成及基本原理和C语言程序设计的一些基础知识

Vickers' Farmland 2786

01——微型计算机基础概论

1)微型计算机的发展微型计算机的发展是以微处理器的更新换代为标志。自1946年第一台计算机产生(Eniac) 计算机经历了电子管、晶体管、集成电路、大规模及超大规模计算机的发展更替。按性能、价格和体积等指标,计算机可分为:巨型机、大型机、中型机、小型机 和微型机五大类。2)微型计算机的工作过程冯 • 诺依曼计算机的原理:每台计算机都有各种类型的机器指令,这些指令按照存放在存储器中,在中央控制系统的下,按依次取出执行,这就是冯诺依曼的核心原理,即存储程序的工作原理。

cllstc的博客 1176

计算机硬件基础-CPU

计算机硬件基础-CPU

weixin_45370502的博客 1146

自制CPU、CPU设计与制作 学习视频集

自制CPU、CPU设计与制作 学习视频集

青少年趣味编程 1229

电脑小白?不用怕!计算机从零开始之计算机基础 -- day01 计算机基础知识

1. 计算机概念 计算机(computer)俗称电脑,是现代一种可以进行数值计算又可以进行逻辑计算,还具有存储记忆功能,能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。 2. 计算机应用 科学计算领域:天文、地质、数学、几何物理等。 数据处理领域:企业管理、人口统计、图书管理、仓存物流、金融讯息等。 3. 计算机分类 运算规模和用途:巨型机、大型机、中型机、小型机、工作站、微型机...

DeviL丶、的博客 3196

《计算机是怎样跑起来的》读书笔记

《计算机是怎样跑起来的》 矢泽久雄

DMLTZY的专栏 752

【计算机组成原理】读书笔记第一期:对程序员来说CPU是什么

本文是《程序是怎样跑起来的》的读书笔记。这本书相当于计算机组成原理的图解趣味版,示例与图表很多,通俗易懂,值得推荐。本文总结了其第一章中有关CPU结构和程序执行流程中寄存器的操作的内容。

Bossfrank的博客 453

计算机知识01:计算机基础知识入门

1. 计算机运行流程 如果不是很了解电脑运行流程的话,我们可以类比一下,假设电脑是一个人体,那么每个元件对应到哪个地方呢?可以这样思考: CPU=脑袋:每个人会做的事情都不一样(微指令集的差异),但主要都是通过脑袋来进行判断与控制身体各部分的活动; 内存=脑袋中放置正在被思考的数据的区块:在实际活动过程中,我们的大脑需要有外界刺激的数据 (例如光线、环境、语言等) 来分析,那这些互动数据暂时存放的...

维克先生的博客 4143

以单片机思维理解书籍《程序是如何跑起来的》-01

书籍与单片机一起的理解

m0_55093622的博客 315
上一篇: 中间件_Redis_06_Redis的事务
下一篇: 计算机基础_程序是怎样跑起来的_02_计算机的数据使用二进制数表示的
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

窝在角落里学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值