(计算机基础 核心知识)计算机组成原理

专栏简介

1.影响计算机运行准确度的物理因素有哪些,一般情况下如何排除这些因素的干扰

存储空间有限 浮点运算的精度问题

2.影响计算机数据安全的主要因素

对于在磁盘上删除数据, 实际上只是在文件的入口处做了删除标记 如果没有被新的数据覆盖, 就很容易被恢复(数据备份,不可逆删除)

计算机是靠高频脉冲电路工作的, 由于电磁场的变化, 必然要向外辐射电磁波。这些电磁波会把计算机中的信息带出去, 不法人员只要具有相应的接收设备, 就可以将电磁波接收, 从中窃得秘密信息(低辐射计算机设备)

计算机病毒(及时升级病毒库;要及时修补系统漏洞)

3.浮点数精度会造成什么严重后果

在金融系统中使用精度低的浮点数会有非常严重的后果。假设我们在交易所或者银行使用 64 位的双精度浮点数存储账户的余额,这时就存在被用户攻击的可能,用户可以利用双精度浮点数的精度限制造出更多余额

当用户分别先向账户中充值 0.1 单位和 0.2 单位的资产后,使用双精度浮点数在计算时会得到 0.30000000000000004,用户将这些资产全部提现可以得到 0.00000000000000004 的意外之财

4.计算机的流水线

计算机的流水线就是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行执行。

流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。

在每个信号里一个新指令开始执行,因此在理想状态下在每个信号中也应该有一个指令完成,离开流水线。

5.影响流水线性能的因素:

结构相关资源相关):由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关。可以把寄存器的读口和写口独立开来,把指令存储器和数据存储器分开使其指令和数据的访问各自独立

数据相关(数据冲突):在一个程序中必须等待前一条指令执行完才能执行后一条指令的情况。通过数据旁路技术,设置相关专用通路直接把前一条指令的的计算结果作为自己的输入数据开始计算,使本来需要暂停的操作变得可以继续执行。

控制相关(控制冲突):当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关。对转移指令进行分支预测,尽早生成转移目标地址。

6.天河二号为什么快

内存容量大,增加集群CPU的数量固然可以增加速度,但是集群运行速度并不会持续攀升,而是趋向某一峰值,天河一号开创CPU+GPU异构融合体系,这种结构大幅度提高系统的计算速度

7.总线是什么

总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线

计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号

主机的各个部件通过总线相连接

8.轮询,中断,DMA,通道

轮询,低效,CPU大把的时间都用来检查了。

中断。你接收到数据就告诉我好了。这样也有一个问题:当数据多了(比如磁盘中的一个大文件),中断就会很频繁。也变得低效了。

DMA(Direct Memory Access,直接存储器访问) 而不需要依赖于 CPU 的大量中断负载

DMA技术的出现,使得外围设备可以通过DMA控制器直接访问内存,与此同时,CPU可以继续执行程序

DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。

通道方式

输入/输出通道是一个独立于CPU的,专门管理I/O的处理机,它控制设备与内存直接进行数据交换。它有自己的通道指令,这些通道指令由CPU启动,并在操作结束时向CPU发出中断信号,见图6-3。

输入/输出通道控制是一种以内存为中心,实现设备和内参内直接交换数据的控制方式。在通道方式中,数据的传送方向、存放数据的内存起始地址以及传送的数据块长度等都由通道来进行控制。

另外,通道控制方式可以做到一个通道控制多台设备与内存进行数据交换。因而,通道方式进一步减轻了CPU的工作负担,增加了计算机系统的并行工作程度。

9.五级流水CPU的各阶段

将要实现的CPU共分为五个阶段,各个从左往右阶段的功能依次为:

  • 取指令:将指令从Cache或者主存中取出,并计算下一条指令的地址;
  • 指令译码:产生指令执行所需要的控制信号
  • 取操作数:读取存储器操作数或者寄存器操作数
  • 执行:对操作数完成指定操作
  • 写结果:将操作数写回存储器或者寄存器

10.执行单条指令时单周期CPU和五级流水CPU谁更快?为什么?

流水线并不能缩短一条指令的执行时间。

流水线的个数以最复杂指令所用的功能段个数为准,其一段的时间以最复杂的操作的操作所花时间为准

单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。

多周期CPU的设计是将整个CPU的执行过程分成几个阶段,**每个阶段用一个时钟去完成。**不仅能提高CPU的工作频率,还为组成指令流水线提供了基础。

在多周期CPU设计的基础上,利用各阶段电路间可并行执行的特点,让各个阶段的执行在时间上重叠起来,这种技术就是流水线技术

五级流水CPU的各阶段

11.原码、反码、补码

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

[+1]原 = 0000 0001

[-1]原 = 1000 0001

反码的表示方法是:

正数的反码是其本身

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

补码的表示方法是:

正数的补码就是其本身

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]补

[-1] = [10000001]原 = [11111110]反 = [11111111]补

计算十进制的表达式: 1-1=0

1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2

如果用原码表示, 让符号位也参与计算, 显然对于减法来说, 结果是不正确的.这也就是为何计算机内部不使用原码表示一个数.

计算十进制的表达式: 1-1=0

1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

发现用反码计算减法, 结果的真值部分是正确的. 而唯一的问题其实就出现在"0"这个特殊的数值上. 虽然人们理解上+0和-0是一样的, 但是0带符号是没有任何意义的. 而且会有[0000 0000]原和[1000 0000]原两个编码表示0.

于是补码的出现, 解决了0的符号以及两个编码的问题:

1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原

这样0用[0000 0000]表示, 而以前出现问题的-0则不存在了.而且可以用[1000 0000]表示-128:

(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]补 + [1000 0001]补 = [1000 0000]补

-1-127的结果应该是-128, 在用补码运算的结果中, 规定[1000 0000]补 就是-128. 但是注意因为实际上是使用以前的-0的补码来表示-128

使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数. 这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].

12.冯.诺依曼结构

早期的计算机是由各种门电路组成的,这些门电路通过组装出一个固定的电路板,来执行一个特定的程序,一旦需要修改程序功能,就要重新组装电路板,所以早期的计算机程序是硬件化的!

然而,祖师爷的出现将最初的硬件化程序变为可编程、可存储编码,放在存储器中,随意使用

核心设计思想主要体现在如下三个方面:

  • 程序、数据的最终形态都是二进制编码,程序和数据都是以二进制方式存储在存储器中的,二进制编码也是计算机能够所识别和执行的编码。(可执行二进制文件:.bin文件)
  • 程序、数据和指令序列,都是事先存在主(内)存储器中,以便于计算机在工作时能够高速地从存储器中提取指令并加以分析和执行。
  • 确定了计算机的五个基本组成部分:运算器、控制器、存储器、输入设备、输出设备

现在看来,运算器和控制器单元集成在CPU中实现,存储器的容量不断扩大、输入输出设备不断更新,这些部件构成了当代计算机硬件系统的基本组成。

1.运算器

首先计算机要有运算处理数据的能力,所以需要一个处理单元来完成各种算数运算和逻辑运算,这就是算术逻辑单元(Arithmetic Logic Unit,ALU)。ALU的主要功能就是在控制信号的作用下,完成加、减、乘、除等算术运算以及与、或、非、异或等逻辑运算以及移位、补位等运算。

运算器的主要部件就是ALU,运算器的处理对象是数据,所以数据的长度以及数据的表示方法,对运算器的影响很大。大多数通用计算机是以16、32、64位数据作为运算器一次处理数据的长度。能够对一个数据的所有位同时处理运算器称为并行运算器,一次只能对数据的一个位处理的运算器称为串行运算器。

运算器与其他部分的关系:

计算机运算时,运算器的操作对象和操作种类由控制器决定。运算器操作的数据从内存中读取,处理的结果再写入内存(或者暂时存放在内部寄存器中),而且运算器对内存数据的读写是由控制器来进行的。

2.控制器

控制器又称为控制单元(Control Unit),是计算机的神经中枢和指挥中心,只有在控制器的控制下,整个计算机才能够有条不紊地工作、自动执行程序。

控制器的工作流程为:从内存中取指令、翻译指令、分析指令,然后根据指令的内存向有关部件发送控制命令,控制相关部件执行指令所包含的操作。

控制器和运算器共同组成中央处理器(Central Processing Unit),CPU是一块超大规模集成电路,是计算机运算核心和控制核心,CPU的主要功能是解释计算机指令以及处理数据。

3.存储器

存储器的主要功能是存储程序和各种数据,并且能够在计算机运行过程高速、自动地完成程序或者数据的存储,存储器是有记忆的设备,而且采用俩种稳定状态的物理器件来记录存储信息,所以计算机中的程序和数据都要转换为二进制代码才可以存储和操作。

存储器可以分为内部存储器(内存)和外部存储器,俩者在计算机系统中各有用处,下面大概介绍一下俩种存储器的特点:

Ⅰ.内部存储器

内部存储器称为内存或者主存,是用来存放欲执行的程序和数据。

在计算机内部,程序和数据都是以二进制

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

曾获多国内大厂的 ssp 秋招 offer,且是Java5年的沉淀老兵(不是)。专注后端高频面试与八股知识点,内容系统详实,覆盖约 30 万字面试真题解析、近 400 个热点问题(包含大量场景题),60 万字后端核心知识(含计网、操作系统、数据库、性能调优等)。同时提供简历优化、HR 问题应对、自我介绍等通用能力。考虑到历史格式混乱、质量较低、也在本地积累了大量资料,故准备从头重构专栏全部内容

全部评论

相关推荐

点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务