软考 | 计算机系统

news2025/1/11 7:02:03

CPU

计算机系统硬件组成

计算机系统是由软硬件共同组成,协同运行程序。计算机的基本硬件由 运算器、控制器、存储器、输入设备、输出设备 5 大部件组成。其中,运算器和控制器等部件集成到一起的部分称为中央处理器(CPU)。CPU 是硬件系统的核心,用于加工处理各种数据,能完成各种算术、逻辑运算以及控制功能。

其中,存储器是计算机系统中的记忆设备,分为 内部存储外部存储。内部存储速度快,但容量小,一般用来临时存放程序、数据及中间结果。而外部存储容量大,但速度慢,能长期保存程序和数据。

输入和输出设备共称为外部设备,输入设备用于输入原始数据及各种命令,最常见的就是键盘,而输出设备则用于输出计算机运行结果,最常见的就是屏幕。

CPU 功能

CPU 是计算机系统的核心部件,负责获取程序指令、对指令译码并加工。其功能主要分为以下 4 点:

  1. 程序控制CPU 通过执行指令来控制程序的执行顺序。
  2. 操作控制:一条指令功能的实现需要若干操作信号配合完成,CPU 产生每条指令的操作信号并将操作信号送往对应部件,控制相应部件按指令功能要求进行操作。
  3. 时间控制:指令执行过程中操作信号的出现时间、持续时间以及出现的时间顺序都需要严格控制。
  4. 数据处理CPU 对数据进行算术和逻辑运算等方式进行加工处理,然后我们就可以利用这些加工后的结果。因此,对数据的加工处理也是 CPU 最根本的任务。

除开以上 4 点之外,CPU 还需要对系统内外部的中断(异常)做出响应,进行相应处理。

CPU 组成

CPU 主要由运算器、控制器、寄存器组以及内部总线等部件组成。

CPU 组成结构

运算器

运算器由 算术逻辑单元(ALU)累加寄存器数据缓冲寄存器条件寄存器 共同组成。它是数据加工处理部件,用于完成计算机的各种算术逻辑运算。相对控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作均由控制器发出的控制信号来指挥,因此它是执行部件。

运算器主要功能如下:

  1. 执行所有算术运算,如加、减、乘、除等。
  2. 执行所有的逻辑运算并进行逻辑测试,如与、或、非等。

此外,运算器的各组成部件功能如下:

  1. 算术逻辑单元(ALU):负责处理数据,实现对数据的算术逻辑运算。
  2. 累加寄存器(AC):又叫累加器,是一个通用寄存器。当算术逻辑单元执行算术逻辑运算时,为 ALU 提供一个工作区。如,执行一个甲酸运算器,先将一个加数取出暂存在 AC 中,再从内存储器中取出另一个加数,然后同 AC 的内容相加,并将所得结果送回 AC。运算的结果是放在累加器中的,运算器中至少要有一个累加寄存器。
  3. 数据缓存寄存器(DR):对内存储器进行读/写时,用 DR 暂存有内存储器读/写的一套指令或一个数据中,将不同时间段内读/写的数据分隔。DR 的主要作用是 作为 CPU 和内存、外部设备间数据传送的中转站;作为 CPU 和内存、外围设备之间的操作速度上的缓冲;在单累加器结构的运算器中,数据缓冲寄存器还可以兼作为操作数寄存器
  4. 状态条件寄存器(PSW):保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,主要分为状态标志和控制标志。这些标志通常分别由 1 位出饭前保存,保存了当前指令执行完成后的状态。通常来说,一个算术操作产生一个运算结果,而一个逻辑操作产生一个判决。

控制器

顾名思义,所谓控制器,就是用来控制整个 CPU 的工作,决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,还要能够处理异常事件。一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑等。

指令控制逻辑要完成取指令分支指令执行指令操作,其过程分为取指令、指令译码、按指令操作码执行、形成下一条指令地址等步骤。

  1. 指令寄存器(IR):当 CPU 执行一条指令式,先将其从存储器读取到缓冲寄存器中,再送入 IR 暂存,指令译码器根据 IR 内容产生各种未操作指令,控制其他组成部件工作,完成所需功能。
  2. 程序计数器(PC)PC 具有寄存信息和计数两种功能,又叫指令计数器。程序执行分两种情况,一种是顺序执行,一种是转移执行。程序开始执行前,将程序的起始地址送入 PC,该地址在程序加载到内存时确认,因此 PC 的内容即为程序第一条指令的地址。执行指令时,CPU 自动修改 PC 中的内容,一遍使其保持的总是将要执行的下一条指令的地址。由于大多指令都是按顺序执行,所以修改的过程常只是简单地对 PC1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量得到,或者根据转移指令给出的直接转移的地址得到。
  3. 地址寄存器(AR)AR 保存当前 CPU 所访问的内存单元的地址。由于内存和 CPU 存在操作速度上的差异,因此需要用 AR 保存地址信息,直到内存中的读/写操作完成。
  4. 指令译码器(ID):指令包含操作码和地址码,为了能执行任何给定的指令,必须对操作码进行分析,以便识别所完成的操作。指令译码器就是对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需功能。

总结而言,指令寄存器(IR)存放的是从内存中获取的指令,类似于中间站,用于存放指令。而程序计数器(PC)则存放的是指令的地址,同时还具有计数的功能。地址寄存器(AR)存放的是 CPU 访问内存单元的地址。指令译码器(ID)就是把操作码解析为对应的指令操作

计算机中的基本单位

单位表示说明
比特bit最小的数据单位
字节Byte最小的存储单位,1 Byte = 8 bit
千字节KB1 KB = 1024 Byte
兆字节MB1 MB = 1024 KB
吉字节GB1 GB = 1024 MB
太字节TB1 TB = 1024 GB

进制转换

计算机中,常见的数据表示有以下几种:

  1. 二进制,以 B 标识,由 01 组成,满 2 则进 1 位。
  2. 十进制,以 D 标识,由 0 ~ 9 组成,满 10 则进 1 位。
  3. 八进制,以 O 标识。由 0 ~ 7 组成,满 8 则进 1 位。
  4. 十六进制,以 H 标识。由 0 ~ 9 以及 A、B、C、D、E 组成,满 16 则进 1 位。

一个十六进制的数要用 4 个二进制的数来表示,而一个八进制需要转成对应 3 个二进制。

原码、反码、补码、移码

计算机中,数值是以机器数的形式来表示的,特点是采用了二进制计数法,数的符号用 01 表示,小数点则银行,表示不占位置,而机器数所对应的实际数值就叫做数的真值。

机器数又分为有符号数无符号数。其中,无符号数对应正数,表示在机器数中没有符号位。对于无符号数,如果约定小数点的位置在机器数的最低位之后,则该数为纯整数。如果约定小数点的位置在机器数的最高位之前,那么这个数是纯小数。对于带符号数,机器数的最高位是表示正、负的符号位,其余位则表示数值。

为了方便运算,带符号的机器数可以采用原码、反码、补码等不同编码方式,而这些编码方式就叫做码制。

原码

原码表示法中,最高位是符号位,其中 0 表示正号,1 表示负号,其余的 n - 1 为则表示数值的绝对值。这里要注意 0 比较特殊,它的原码有两种表示形式:

[ + 0 ] 原 = 00000000 [+0]_原 = 00000000 [+0]=00000000

[ − 0 ] 原 = 10000000 [-0]_原 = 10000000 [0]=10000000

反码

同样的,反码表示中,最高位仍然是符号位,0 表示正号,1 表示负号。如果该数是一个正数,那么它的反码和原码相同。而如果该数是一个负数,那么它的反码则是原码除符号位之外的其他位按位取反。0 的反码也有两种表示形式:

[ + 0 ] 反 = 00000000 [+0]_反 = 00000000 [+0]=00000000

[ − 0 ] 反 = 11111111 [-0]_反 = 11111111 [0]=11111111

补码

补码中,最高位为符号位,0 表示正号,1 表示负号。如果一个数是正数,那么它的补码与原码和反码一样。而如果一个数为负数,则补码为反码末位加 1。此时 0 有惟一的编码表示。

[ + 0 ] 补 = [ − 0 ] 补 = 00000000 [+0]_补 = [-0]_补 = 00000000 [+0]=[0]=00000000

移码

移码的表示与补码有很大关系,它就是将一个数的补码的符号位取反即可。如 +1 的补码为 00000001,那么它的移码为 10000001

注意

当机器字长为 n 时,此时该机器中各种码制所表示的带符号数的范围如下:

码制定点整数定点小数
原码 − ( 2 n − 1 − 1 ) ∼ ( 2 n − 1 − 1 ) -(2^{n-1}-1)\sim(2^{n-1}-1) (2n11)(2n11) − ( 1 − 2 − ( n − 1 ) ) ∼ ( 1 − 2 − ( n − 1 ) ) -(1-2^{-(n-1)})\sim(1-2^{-(n-1)}) (12(n1))(12(n1))
反码 − ( 2 n − 1 − 1 ) ∼ ( 2 n − 1 − 1 ) -(2^{n-1}-1)\sim(2^{n-1}-1) (2n11)(2n11) − ( 1 − 2 − ( n − 1 ) ) ∼ ( 1 − 2 − ( n − 1 ) ) -(1-2^{-(n-1)})\sim(1-2^{-(n-1)}) (12(n1))(12(n1))
补码 − ( 2 n − 1 ) ∼ ( 2 n − 1 − 1 ) -(2^{n-1})\sim(2^{n-1}-1) (2n1)(2n11) − 1 ∼ ( 1 − 2 − ( n − 1 ) ) -1\sim(1-2^{-(n-1)}) 1(12(n1))
移码 − ( 2 n − 1 ) ∼ ( 2 n − 1 − 1 ) -(2^{n-1})\sim(2^{n-1}-1) (2n1)(2n11) − 1 ∼ ( 1 − 2 − ( n − 1 ) ) -1\sim(1-2^{-(n-1)}) 1(12(n1))

在做相关题目时,可以记住以下要点:当给定一个数的补码求它的原码时,先将这个数补码的反码求出来,然后再求出它反码的补码,此时得到的就是这个数的原码。

浮点数

当机器字长为 n 时,定点数的补码和移码可以表示为 2^n 个数,而其原码和反码只能表示 2^n - 1 个数(0 的表示占了两个编码)。因此定点数能表示的数值范围较小,运算时很容易越界溢出。而浮点数是小数点范围不固定的数,能表示的范围更大。

浮点表示法中,阶码是带符号的纯整数,而位数是带符号的纯小数。浮点数的表示格式如下:

N = 2 E × F N = 2^E×F N=2E×F

其中 E 称为阶码,F 称为尾数。

一个数的浮点表示不是唯一的。当小数点的位置改变时,阶码也会随之改变,因此一个数可以用多个浮点形式表示。

浮点数所能表示的数值范围主要由阶码决定,而其表示的精度则由尾数决定。为了充分利用尾数来表示更多的有效数字,常采用规格化浮点数。规格化就是将尾数的绝对值限定在 [0.5, 1]。此外,当尾数用补码表示时,需要注意以下问题:

  1. 若位数 F >= 0,则其规格化的位数形式为 F = 0.1xxx……x,其中 x 既可以为 0,也以为 1,即将尾数限定在 [0.5, 1]
  2. 若尾数 F < 0,则其规格化的尾数形式为 F = 1.0xxx……x,其中 x 可以为 0,也可以为 1,即将限定在 [-1, -0.5]

若浮点数的阶码(包括 1 位阶符)用 R 位的移码表示,尾数(包括 1 位数符)用 M 位的补码表示,则该浮点数的范围为:

− 1 ∗ 2 ( 2 R − 1 − 1 ) ∼ ( 1 − 2 1 − M ∗ 2 2 R − 1 − 1 ) -1*2^{(2^{R-1}-1)}\sim(1-2^{1-M}*2^{2^{R-1}-1}) 12(2R11)(121M22R11)

寻址方式

存储系统层次结构

常用的寻址方式:

  1. 立即寻址:操作数包含在指令中。
  2. 直接寻址:操作数存放于内存单元,指令中直接给出操作数所在存储单元的地址。
  3. 寄存器寻址:操作数放在某一寄存器中,指令中给出存放操作数的寄存器名。
  4. 寄存器间接寻址:操作数存放于内存单元,操作数所在存储单元的地址在某个寄存器中。
  5. 间接寻址:指令中给出操作数地址的地址。
  6. 相对寻址:指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条指令的地址加上该偏移量。
  7. 变址寻址:操作数地址等于变址寄存器的内容加偏移量。

寻址速度由高到低:立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址

校验码

所谓码距,指的是一个编码系统中任意两个合法编码间至少有多少个二进制位不同。

奇偶校验码

奇偶校验是一种简单有效的校验方法,通过在编码中增加一位校验位来使编码中 1 的个数为奇数(奇校验)或偶数(偶校验),从而使码距变为 2。对于奇校验,可以检测代码中奇数位出错的编码,但不能发现偶数位出错的情况,即当合法编码中的奇数位发生错误时,编码中的 1 变成了 0 或者 0 变成 1,则该编码中 1 的个数的奇偶性就发生了变化,从而可以发现错误。

常见的奇偶校验码有三种:水平奇偶校验码垂直奇偶校验码水平垂直校验码

注意:奇偶校验码只能检查错误但是不能纠错,而且奇数校验只能检查出代码奇数个出错的编码,而不能检查出偶数个出错的编码。

海明码

海明码由贝尔实验室的 Richard Hamming 设计,一种通过利用奇偶校验性来检错和纠错的校验方法。海明码的构成方法是在数据位之间的特定位置上插入 k 个校验位,通过扩大码距来实现检错和纠错。

假设数据位为 n 位,校验位为 k 位,则 nk 必须满足以下条件:

2 k > = n + k + 1 2^k>= n + k + 1 2k>=n+k+1

循环冗余校验码(CRC)

循环冗余码常用于数据通信领域和磁介质存储系统,利用生成多项式为 k 个数据位产生 r 个校验位来进行编码,其编码长度为 k + rCRC 的代码格式为:

循环冗余校验码由两部分组成,左边是信息码(数据),右边是校验码,如果信息码占 k 位,则校验码占 n - k 位。其中 nCRC 码的字长,所以又叫 (n, k) 码。校验码由信息码产生,校验码位数越多,代码校验能力越强。在求 CRC 编码时,才用的是模 2 运算。模 2 加减运算的规则是按位运算,不发生借位和进位。要注意,当码距为 2 时,CRC 只能检错而不能纠错。

CISC & RISC

RISC(精简指令集计算机)CISC(复杂指令集计算机)
指令种类少、精简多、复杂
指令复杂度
指令长度固定变化
寻址方式复杂多样
译码方式硬布线控制逻辑(组合逻辑控制器)微程序控制技术
通用寄存器数量多、大量一般
流水线技术支持不支持

流水线

吞吐率 = 指令条数 / (一条完整指令的时间 + (n - 1) * 流水线周期)

流水线总共实心 = 一条完整指令的时间 + (n - 1) * 流水线周期

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

离线数仓 (八) --------- 数仓分层

目录一、为什么要分层二、数据集市和数据仓库区别三、数仓命名规范1. 表命名2. 脚本命名3. 表字段类型一、为什么要分层 分层说明&#xff1a; ODS 层&#xff1a;原始数据层&#xff0c;存放原始数据&#xff0c;直接加载原始日志、数据&#xff0c;数据保持原貌不做处理。 …

【C++】命名空间输入输出缺省参数函数重载

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《吃透西嘎嘎》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;什么是C&…

链路状态路由协议 OSPF (一)

作者简介&#xff1a;一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.OSPF的基本概念 1.什么是OSPF 2.OSPF路由协议概述 (1)内部…

网络安全知识之什么是网络安全?

网络安全的概念&#xff0c;有很多不同的定义。在一些场合中&#xff0c;我们最多的考虑的还是网络的技术安全&#xff0c;但是技术延伸出来的安全又会涉及到社会安全、文化安全、国家安全等等。 网络安全的概念&#xff0c;有很多不同的定义。在一些场合中&#xff0c;我们最多…

升级全新网络方案,给你低成本、高性能的裸金属体验

摘要&#xff1a;对政企、金融客户来说&#xff0c;裸金属服务器相比于云服务器&#xff0c;更能满足他们对性能和稳定性的要求。但裸金属服务器的网络实现&#xff0c;却存在成本高、灵活性差、成熟度不足等问题。为解决这些问题&#xff0c;华为云Stack有一套增强版的网络方案…

Unity Rigidbody实现爬坡功能

文章目录&#x1f388; 简介&#x1f388; 实现原理&#x1f388; 实现代码&#x1f388; 简介 人物移动功能的实现或许用到Character Controller组件或许用到Rigidbody刚体组件&#xff0c;前者可以直接实现在某些高地不平的地面上移动&#xff0c;而后者想要在具有一定角度的…

分布式事务Seata源码解析十:AT模式回滚日志undo log详细构建过程

文章目录一、前言二、准备undo log0、undo log 样例1&#xff09;undo log表结构2&#xff09;rollback_info&#xff08;回滚日志数据&#xff09;1、before image的构建1&#xff09;业务表元数据信息TableMeta1> Caffeine缓存数据获取2> Caffeine缓存自动刷新2&#x…

[Linux打怪升级之路]-vim编辑器(看就能马上操作噢)

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一、vim的…

语音合成 GAN Vocoders 总览

Loss 函数简称与全称的对应关系 Short NameFull Nameadvadversial lossFMFeature MatchingMSDMulti-Scale Discriminatormr-STFTMulti-resolution STFT lossfmr-STFTfull band Multi-resolution STFT losssmr-STFTsub band Multi-resolution STFT lossMelMel-Spectrogram Loss…

Mybatis----多表查询

目录 返回类型 resultType resultMap 1、字段映射 2、多表查询 动态SQL if标签 where标签 set标签 choose(when,otherwise) 语句 trim标签 for-each标签 SQL片段 返回类型 resultType Mybatis在查询时&#xff0c;一定要指定返回类型&#xff1b;而其他操作&#xff0…

BH1750 传感器实战教学 —— 硬件设计篇

前言 前面刚写了一篇 《BH1750 光照传感器文档详解 及 驱动设计》&#xff0c;今天来写一篇简单的传感器实战教学。 文章如下&#xff1a;BH1750 光照传感器文档详解 及 驱动设计 那有些朋友就疑惑了&#xff0c;在上一篇文章其实我们基本都测试成功了&#xff0c;驱动也写了…

现代操作系统原理与实现

突然更新&#xff0c;为了水一个1024徽章拿随书笔记来发发&#xff08;嘿嘿 原文链接&#xff1a;https://github.com/yanyanran/YBlog/blob/main/%E7%8E%B0%E4%BB%A3%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E7%8E%B0.md 一、操作系统结构…

【网络安全篇】JavaSript基础内容大全

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;学习JavaSript基础 ✅创作者&#xff1a;贤鱼 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;贤鱼的个人主页 &#x1f525;专栏系列&#xff1a;网络安全 JavaSript基础大全&#x1f340;java和JavaSri…

[C]带你了解C语言是如何操作文件的

文章目录一、认识文件1.1 为什么要使用文件1.2 什么是文件1.3 文件名1.4 文件指针1.5 文件的打开和关闭二、文件的顺序读写2.1 fgetc和fputc2.2 fgets和fputs2.3 fscanf和fprintf2.4 fread和fwrite2.5 对比一组函数三、文件的随机读写3.1 fseek3.2 ftell3.3 rewind四、文本文件…

高云FPGA系列教程(5):ARM点灯工程设计

文章目录[toc]1. ARM核定制2. ARM核程序设计3. ARM程序烧写4. 工程下载本文是高云FPGA系列教程的第5篇文章。 前面几篇笔记都是介绍的高云GW1NSR-4C FPGA部分的使用&#xff0c;本篇文章介绍片上ARM Cortex-M3硬核处理器的使用&#xff0c;演示如何定制一颗ARM处理器硬件&#…

大数据电信客服-数据采集/消费(二)

目录 一、数据采集/消费(存储) 二、数据采集 三、数据消费 四、编写代码 在project-ct.pom 在ct.consume下 在ct.consumer.bean 在ct.consumer.dao 在ct-consumer的resources 在ct-common.pom 在ct.common.api 在ct.common.bean 在ct.common.constant 在ct-common的…

LQ0123 小朋友崇拜圈【DFS】

题目来源&#xff1a;蓝桥杯2018初赛 C C组G题 题目描述 班里N个小朋友&#xff0c;每个人都有自己最崇拜的一个小朋友&#xff08;也可以是自己&#xff09;。 在一个游戏中&#xff0c;需要小朋友坐一个圈&#xff0c; 每个小朋友都有自己最崇拜的小朋友在他的右手边。 求满…

vue06安装vue-cli+使用vue-cli搭建项目+什么是*.vue文件+开发示例+必问面试知识点

目录 1. vue-cli安装 1.1 安装前提 1.2 什么是vue-cli 1.3 安装vue-cli 2. 使用vue-cli构建项目 2.1 使用脚手架创建项目骨架 2.2 到新建项目目录&#xff0c;安装需要的模块 2.3 如何修改端口号 2.4 添加element-ui模块 2.5 package.json详解 3. install命令中的-g…

腾讯云~ zookeeper集群安装、配置、验证

文章目录一、 预备工作1. 下载2. 解压3. 创建目录4. myid 文件5. 验证6. 效果图二、配置管理2.1. zoo1.cfg2.2. zoo2.cfg2.3. zoo3.cfg2.4. 防火墙2.5. 启动zk2.6. 运行状态一、 预备工作 1. 下载 cd /app wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/…

GitLab API 的使用教程

1 简介 GitLab 作为一个开源、强大的分布式版本控制系统&#xff0c;已经成为互联网公司、软件开发公司的主流版本管理工具。使用过 GitLab 的都知道&#xff0c;想要提交一段代码&#xff0c;可以通过 git push 提交到远程仓库&#xff0c;也可以直接在 GitLab 平台上修改提交…