计算机基础_程序是怎样跑起来的_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万+

在F1C100s上跑GBA游戏:手把手教你用Buildroot配置SDL和移植gpsp模拟器

本文详细介绍了在全志F1C100s开发板上配置Buildroot、移植SDL库和gpsp模拟器的完整流程,帮助开发者实现在ARM9平台上流畅运行GBA游戏。内容涵盖环境配置、交叉编译、常见问题解决及性能优化技巧,特别针对'段错误'和'无声音'等典型问题提供实用解决方案。

weixin_42566424的博客 397

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

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

weixin_42513054的博客 2万+

Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的理论简述和python仿真实现(附源码)

经典论文Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的学习与编程仿真,提供源码

m0_59701926的博客 1237

FC游戏Hack实战:从零开始修改游戏数据

本文以《忍者神龟3》为例,详细介绍了从零开始进行FC游戏Hack的完整实战流程。通过使用FCEUX模拟器和调试器,结合“递减法”精准定位生命值内存地址,并利用十六进制编辑器修改关键指令,最终实现“无限生命”效果。文章旨在引导读者理解游戏数据修改的核心原理与操作技巧,重温经典的同时深入计算机程序运行机制。

weixin_28366353的博客 356

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

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

yuhang_17的博客 9237

FUMA实战:5分钟搞定GWAS数据中的Independent SNPs和Lead SNPs筛选

本文详细介绍了如何使用FUMA平台快速筛选GWAS数据中的Independent SNPs和Lead SNPs。通过解析核心概念、分步实战演示和结果解读,帮助研究人员在5分钟内从海量显著关联位点中提炼出独立且具代表性的遗传信号,为后续功能注释和基因定位奠定高效基础。

weixin_29201859的博客 425

帅地这些年看过的书

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

帅地 1127

gem5-gpu教程01 部署(实测可跑通)

这将GPGPU-Sim更新为与gem5-gpu兼容的最新版本。此版本是已知可用于gem5 gpu的最新版本。

qq_20388971的博客 1404

Kappa函数:测量一致性并计算置信区间的R语言包

Kappa函数是一种常用的统计量,用于衡量两个评估者之间的一致性。在R语言中,有一个名为"vcd"的包提供了计算Kappa函数以及相应的置信区间的功能。本文将介绍如何使用"vcd"包来计算Kappa函数的值,并进一步计算置信区间。Kappa函数的值介于-1和1之间,值越接近1表示评估者之间的一致性越高,值越接近-1表示评估者之间的一致性越低,值接近0表示评估者之间的一致性接近于随机。通过以上步骤,我们成功地使用R语言中的"vcd"包计算了Kappa函数的值和置信区间。接下来,我们可以使用"vcd"包中的。

2301_79331230的博客 1875

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

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

m0_73349801的博客 4131

TRON 主网节点搭建-2024最新详细版文档

TRON主网节点搭建以前,大概说明一下本次使用的服务器配置,本次从搭建部署到节点完成同步的时间大约为36小时。

J_Lee 4057

计算机是怎么跑起来的?

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

码农皮邱 596

【存算一体架构实战】四、突破编译壁垒:手把手实现AI模型到存算硬件的自动映射

摘要:存算一体硬件的性能优势难以充分释放,核心瓶颈在于传统编译器无法高效适配"计算-存储融合"的新型架构。本文系统剖析传统编译流程在存算硬件上的三大痛点:数据布局不匹配导致90%带宽浪费、算子映射效率低使硬件利用率不足30%、缺乏专用优化_pass导致延迟居高不下。通过构建MLIR-PIM编译框架,实现从AI模型到存算硬件的全自动化映射,核心流程包括:TensorFlow模型→MLIR Dialect转换→存算优化_pass→硬件指令生成。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 241

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

01 CPU是什么

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

qq_53800744的博客 2187

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

程序是怎样跑起来的-第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

静静燃烧的雪的专栏 1031

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

Vickers' Farmland 2785

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

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

cllstc的博客 1176

计算机硬件基础-CPU

计算机硬件基础-CPU

weixin_45370502的博客 1146

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

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

青少年趣味编程 1228

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

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

DeviL丶、的博客 3196

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

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

DMLTZY的专栏 751

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

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

Bossfrank的博客 453

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

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

维克先生的博客 4142

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

书籍与单片机一起的理解

m0_55093622的博客 314
上一篇: 中间件_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、付费专栏及课程。

余额充值