操作系统内功篇:硬件结构之CPU是如何运行的?

本文分5个小结,分别是图灵机工作方式,冯诺依曼结构,总线线路位宽和CPU位宽,程序执行的基本过程, a=1+2的具体执行过程。

一 图灵机的工作方式

图灵机由纸带,读写头组成。读写头上有一些部件例:存储单元,控制单元,运算单元。

 存储单元用来存储存放数据,存储单元也叫图灵机的状态。控制单元用来判断字符是数据还是指令,运算单元用来数据的运算。

纸带就好比内存,由一个个连续的小格子组成了纸带,就好比多个存储单元构成了内存。每个小格子都可以写入字符。字符就是数据。

举个例子:计算1+2,图灵机怎么做处理?

1)读写头将[1,2,+]三个字符写入到三个纸带的小格子上。读写头处在1的位置。

2)读写头将1写入到存储单元(图灵机的状态),右移读写头,将2也写入到存储单元。再次右移,发现是+运算符,读写头将运算符加入到控制单元,控制单元发现是个运算符便会通知运算单元做运算。

3)将运算结果返回给控制单元,控制单元再把结果传给读写头,读写头右移将结果写入格子中。

二 冯诺依曼结构

采用冯诺依曼结构是因为:用较少的钱可以做出速度不错的计算机。

冯诺依曼和其他科学家规定了沿用图灵机的设计并将二进制进行计算和存储。并将计算机基本结构定义为5个部分,中央处理器(CPU),内存,输入输出设备,总线。

2.1 内存

内存: 启动的程序和数据都存在内存中,内存的存储单位是字节。每个存储单元里面存储的就是一串二进制数字。内存的地址是从全0开始编号,自增长排序,最后一个位置的地址自然就是内存大小转化为字节数-1。

2.2 CPU

CPU: 平常谈到的CPU大致就是32位宽和64位宽。区别在于32位宽的CPU一次可计算32位,也就是4字节大小的数字,64位一个意思,一次可计算8字节大小的数字。CPU内部还有一些比较重要的组件,寄存器,控制单元,逻辑运算单元。控制单元负责控制CPU工作,逻辑运算单元负责计算的。

额外补充:寄存器分类: 1)通用寄存器,存放运算数据。 2)程序计数器,pc指针,eip,存储下一条二进制指令在内存的地址。 3)指令寄存器,存储程序计数器指向的指令的具体内容。 为什么有了内存了,还要寄存器? 因为CPU和内存很远,为了提高效率所以就有了寄存器。

2.3 总线

 总线分类: 地址总线,数据总线,控制总线。用于CPU和内存之间或者是CPU和其他设备之间的通信。 1)地址总线:CPU将要操作的内存的地址是哪个 2)数据总线:同于读写发送和接收的数据 3)控制总线:接收发送信号。举个例子,输入设备将数据输入到计算机,计算机将数据输出到输出设备就需要用到控制总线。

2.4 输入输出设备

输入输出设备:不用说,就是外设。

输入输出设备是计算机系统中用于与外部世界交换信息的设备。它们可以帮助用户输入数据到计算机系统中,或者将计算机系统处理的数据输出给用户或其他设备。

三 总线线路位宽和CPU位宽

数据的传输就是通过操作电压,高电压是1低电压是0,高低电压构成的信号,就是类似 1010 这样的二进制数据。十进制就表示为10。

如果只有一条线路,一次就只能有一个高电压或者低电压,就说明一次只能表示一个1或者只能表示一个0。那么想传输1010就得进行四次的高低电平的转换。一次一位这样的传输称为串行(学过初中物理都知道电路有串联和并联两种,这里就和电路一个意思),这样传输时非常慢的,上一个1或者0传输完才轮到下一个1或者0传输。

为了提高效率就不能串行,就得并行。所以总线线路的位宽最好能一次就可以访问到所有的内存地址,CPU想要操作内存地址就需要用到地址总线。所以如果一个内存的大小时是4GB,那么就需要用到32条线路。因为2的32次方是4G。

CPU的位宽:指的是中央处理器(CPU)一次能够处理的数据位数。例如,一个32位CPU可以一次处理32位的数据。CPU的位宽不要小于线路位宽。比如32位宽的CPU控制40位宽的地址总线和数据总线的话,就要考虑到兼容什么的,所以一般CPU位宽和线路位宽一样就行。 注意:64位宽的CPU不一定比32位宽的就快,因为很少的程序能计算比4字节还大的数字。其次,如果是CPU是32位宽,装8GB的内存条也是浪费的,因为32为CPU只能计算4字节的数字,8GB的内存条地址范围太大。

四 程序执行的基本过程

指令是由CPU一条一条执行的。大致分四步。

1) CPU读取程序计数器中的下一条二进制指令在内存的地址。然后CPU的控制单元操作地址总线访问指定的内存地址,接着通过数据总线将地址存储的二进制指令存入指令寄存器中。

2) CPU利用解码单元对代码解码,由代码解析为汇编再解析成二进制机器码。

3) CPU分析指令寄存器中的值,确定指令的类型和参数,如果是计算类型的指令就交给CPU的逻辑运算单元,如果是存储类型指令,就交给控制单元。做完工作将结果存回寄存器或者将寄存器的值写回到内存。

4) CPU执行完后,程序计数器的值自增,自增的大小,由CPU的位宽决定,32位宽的CPU就自增4。64位宽的CPU就会自增8.。

这四步称为一个CPU指令执行周期。

补充:汇编语言中,常见的指令可以按照其功能进行分类,包括数据传输指令、运算指令、跳转指令和其他类型的指令。这些分类是为了更好地组织和理解不同类型的指令。

1) 数据传输指令:比如store/load是内存和寄存器间数据传输的指令。mov是将一个地址的数据动到另一个地址中。

2) 运算指令:这类指令用于进行各种算术和逻辑运算操作。它们可以包括加法、减法、乘法、除法、位操作等。

3) 跳转指令:这类指令用于控制程序的执行流程,编程中if-else/switch-case。

4) 信号类型指令:这类指令用于与硬件设备进行通信,控制输入输出等操作。例如,读取或写入设备寄存器、发送中断请求等。

5)其他类型指令

补充:指令的执行速度: GHZ是指时钟频率,1GHZ的CPU意思是1秒会产生1G(十亿)次数的脉冲信号,脉冲信号的本质是高低电平之间的转换。每一次的脉冲信号就是一个周期,称为是时钟周期。

对于CPU来说,一个周期CPU只能完成一个最基础的动作,时钟频率越高,时钟周期就越短,工作速度就快。 通常一条指令在一个周期是不能被执行完的。

那怎么程序跑的更快呢?

程序执行时消耗的CPU时间少就是快,对于程序占据CPU的时间可拆解为,时钟周期数量*时钟周期时间 = 指令数目*指令平均时钟周期(CPI)*时钟周期时间。 时钟周期时间就是前面提到的CPU主频,GHZ越高,主频越高,速度就快。 指令数:执行程序所需要多少指令,这基本就是靠编译器优化,同样代码在不同的编译器编译出来的二进制机器指令不同。 CPI:现代CPU一般都是用的流水线技术,让一条指令需要的时钟周期尽量少点。 时钟周期时间:表示计算机主频(GHZ),取决于计算机硬件,有的CPU支持超频技术,超频就是把CPU内部的时钟调快了(永杰无间超频的话,出刀快)。有好处也有坏处,超频的话,CPU的散热压力大了,容易崩溃。

一些题外话: 32位的软件,64位的软件是什么意思?

代表指令是64位还是32位的,比如软件要在内存存储数据,这个在内存的地址就是64位。

64位的操作系统可以运行在32位的电脑上吗,反过来呢?

操作系统也是一个软件,32和64就是代表指令的位数,64位的操作系统通常无法在32位的电脑上正常运行,因为64位操作系统需要兼容64位处理器架构才能正确工作。一些旧的32位操作系统可能可以在支持64位处理器的计算机上运行,但性能可能会受到限制.32位的指令在64位机器上运行需要一套兼容机制,64位指令在32位机器上指令可以是可以,不过很困难,因为计算要分很多步骤。

总之,硬件说的64位和32位指的是CPU的位宽,软件说的是指令的位宽和总线线路的位宽。指令的位宽:指的是处理器每次能够处理的指令的位数。例如,一个64位指令集的处理器每次可以处理64bit位的二进制指令。指令的位宽直接影响处理器对指令的解析和执行能力。 地址总线的位宽:指的是处理器能够寻址的内存地址空间的大小。

五 a=1+2的具体执行过程

CPU是不认识a=1+2形式的,这只是为了方便程序员看的。要想让这段代码跑起来,就得转换成CPU能看的语句。所以要把程序翻译成汇编语言,这个过程叫做编译成汇编代码。 这还不够,之前说过冯诺依曼结构是让二进制作为机器语言,所以还要将汇编代码转化为二进制机器代码。这一条条的二进制代码才是CPU要执行的代码。

在程序运行时,要执行的二进制代码在进程地址空间的代码段存储二进制指令。具体的数据存在进程地址空间的其他区。

顺便说一下,不同的CPU由不同的指令集,就是不同的汇编代码转化成什么二进制机器指令的说明书。比如最简单的MIPS指令集。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/453516.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式驱动学习第三周——linux内核链表

前言 在 Linux 内核中使用最多的数据结构就是链表了,其中就包含了许多高级思想。 比如面向对象、类似C模板的实现、堆和栈的实现。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博…

智能指针的讲解

1.为什么要智能指针 首先我们分析一段代码: 1、如果p1这里new 抛异常会如何? 2、如果p2这里new 抛异常会如何? 3、如果div调用这里又会抛异常会如何? int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_ar…

CVE-2024-2074 SpringBoot迷你天猫商城Mini-Tmall sql注入漏洞分析

漏洞简介 Mini-Tmall是一个基于Spring Boot的迷你天猫商城。Mini-Tmall在20231017版本及之前存在一个严重的漏洞,攻击者可以利用该漏洞通过远程执行特定操作来注入恶意SQL语句,从而获取敏感信息或控制数据库。此漏洞影响文件?rtmall/admin/user/1/1的一…

下载API文档

在线看:Overview (Java SE 17 & JDK 17) 离线下载:Java Development Kit 17 Documentation

Python 单元测试

本篇为Python的单元测试的方法及示例 目录 概念 结果 示例 对函数进行测试 创建函数文件 创建测试文件 测试结果 对类进行测试 创建待测试类 创建测试文件 文档测试 创建函数 进行测试 总结 概念 用来对一个函数、一个类或者一个模块来进行正确性校验工作 结果 …

为什么选择线上展览馆,搭建线上展览馆要注意什么

引言: 线上展览馆是一种利用互联网技术,将实体展览馆的展示内容以数字化形式呈现出来的在线观展方式。它打破了时间和空间的限制,使得更多的人可以随时随地参观展览,领略文化的魅力。 一、线上展览馆的优势 1.成本效益高&#x…

【安卓】Android开发入门 你的第一个apk应用

本文介绍如何写一个入门的安卓apk应用, 以嵌套一个网页为例。 开发ide:Android studio 语言:Kotlin tips: 最好别下载新版本的 Android studio ,因为新版的界面有所改动 遇到问题去网上搜 新手刚入门可能界面都找不到在哪里;其次…

05-延迟任务精准发布文章-黑马头条

延迟任务精准发布文章 1)文章定时发布 2)延迟任务概述 2.1)什么是延迟任务 定时任务:有固定周期的,有明确的触发时间延迟队列:没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发…

银河麒麟V10SP3操作系统-网络时间配置

1、动态网络配置 打开终端,以网口 eth0 为例: nmcli conn add connection.id eth0-dhcp type ether ifname eth0 ipv4.method auto其中“eth0-dhcp”为连接的名字,可以根据自己的需要命名方便记忆和操作 的名字;“ifname eth0”…

Realsense 相机SDK学习(一)——librealsense使用方法及bug解决(不使用Ros)

一.介绍 realsense相机是一个intel开发出来的一款深度相机,我之前使用他来跑过slam,也配置过他的驱动,在此附上realsense的相机驱动安装方法:Ubuntu20.04安装Intelrealsense相机驱动(涉及Linux内核降级) …

redis-操作数据库

0 序言 一个Redis服务器可以包含多个数据库。在默认情况下,Redis服务器在启动时将会创建16个数据库:这些数据库都使用号码进行标识,其中第一个数据库为0号数据库,第二个数据库为1号数据库,而第三个数据库则为2号数据库…

Leetcode101对称的二叉树

如何去检查对称? 思路是check(n1->left,n2->right)&&check(n1->right,n2->left) 直接手算这题,该懂就懂了! /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* Tre…

【一】【设计模式】类关系UML图

1. 继承(Generalization) 继承是对象间的一种层次关系,允许子类继承并扩展父类的功能。 UML线:带有空心箭头的直线,箭头指向基类(父类)。 class Parent {public void parentMethod() {System.…

Python网络基础爬虫-python基本语法

文章目录 逻辑语句if,else,elifforwhile异常处理 函数与类defpassclass 逻辑语句 熟悉C/C语言的人们可能很希望Python提供switch语句,但Python中并没有这个关键词,也没有这个语句结构。但是可以通过if-elif-elif-…这样的结构代替,或者使用字…

哈密顿算子的计算公式及一些常用公式总结

目录 哈密顿算子的定义式如下: 梯度定义: 散度定义: 旋度定义: 常用的一些公式: 注意文中字母上面没有→的是标量,有→的都表示矢量 哈密顿算子的定义式如下: 快速了解哈密顿算符&#xff…

同步整流芯片 支持12V降5V 24V降5V 24V降12V 降压芯片 H4122

惠海H4122降压恒压芯片的工作原理: 主要是通过内部电路和算法来控制和调节输出电压,使其保持恒定。 输入电压:芯片接收一个较高的输入电压,如12V、24V或36V。 开关电源转换器:芯片内部通常包含一个或多个开关电源转…

Linux 安装Nginx (Nginx-1.25.4)

一、下载Nginx安装包 1.服务器联网的情况下,使用wget命令把Nginx安装包下载到/usr/local/目录中,如果没有wget命令,需要先安装:yum install -y wget cd /usr/local wget -c https://nginx.org/download/nginx-1.25.4.tar.gz ng…

Kanebo HITECLOTH 高科技擦镜布介绍

Kanebo HITECLOTH,这款由日本KBSeiren公司制造的高科技擦镜布,以其卓越的清洁能力和超柔软的布质,成为了市场上备受瞩目的产品。 材质与特性 HITECLOTH采用0.1旦尼尔特级高级微纤维制造,质地细致、坚韧、不起颗粒。这种纤维的特…

基于单片机的PM2.5浓度检测及报警系统设计与实现

基于单片机的PM2.5浓度检测及报警系统设计与实现 II 摘 要 II Abstract III 第一章 前言 1 1.1、设计的目的和意义 1 1.2、设计的发展趋势及国内外现状 2 第二章 主要元器件选择 4 2.1、AT89C51单片机 4 2.3、A/D转换芯片ADC0832 8 2.4、LCD1602液晶显示屏 10 第三章 设计各模…

TOUGH软件教程

原文链接:TOUGH软件教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247597252&idx6&sna9da64e502f070dcc37f9a93dd2a017b&chksmfa823d23cdf5b435996a4a7ebbed78211e81290c37138bcace1f4156f6588af829008381bc16&token1065483158&…