计算机组成原理

计算机组成原理

文章目录

第一章 计算机系统概述

跳转链接
https://www.bilibili.com/video/BV1BE411D7ii?share_source=copy_web

1.0 你好,我是计算机

低电平/高电平

低电平对应0,高电平对应1;

传递数据方式

通过电信号传递数据

通过电路传递多个二进制数位,一个数位称为1bit

1.1 什么是计算机系统?

计算机系统 = 硬件 + 软件

软件
  • ​ 系统软件:用来管理整个计算机系统
  • ​ 应用软件:按任务需要编制成的各种程序
硬件——硬件的更新迭代
  • 冯诺依曼用 电子管 作为逻辑元件
  • 贝尔实验室发明 晶体管 代替电子管
  • 集成电路
  • 超大规模集成电路

仙童半导体公司–>inter && AMD

软件发展
  • 机器语言0101010
  • 汇编语言
  • C++
  • Java/python
计算机发展趋势
  • 更微型、多用途
  • 更巨星、超高速

1.2计算机硬件的基本组成

1.2.1冯诺依曼结构

存储程序的概念:将指令以二进制代码的形式先输入计算机的主存储器

计算机的五大部件及其功能作用

输入设备–>运算器–>存储器–>控制器–>输出设备

输入设备:将信息转换成机器能识别的形式二进制

运算器(中心):进行算术运算和逻辑运算

存储器:存放数据和程序

指令和数据用二进制表示,指令由操作码和地址码组成

控制器:指挥程序运行

输出设备:将结构转换成人们熟悉的形式

软件和硬件在逻辑上是等效的

1.2.2现代计算机结构

存储器为中心

这里有两个图

CPU == 主存储器 + 运算器 + 控制器

1.2.3CPU的内部细节
主存储器相关术语
  1. 存储体:数据按照地址存储,每一个地址对应一个存储单元
  2. 存储单元:用于存放一串二进制代码
  3. 存储字:存储单元中二进制代码的组合
  4. 存储字长:存储单元中二进制代码的位数
  5. 存储元:存储二进制的电子元件,每个存储元可存储1bit
  6. MAR(存储地址寄存器):位数反应存储单元的个数
  7. MDR(存储数据寄存器):MDR位数==存储字长
  • 例:
    • MAR = 4位–>共有2^4个存储单元
    • MDR = 16位 -->每个存储单元可存放16bit
    • 注意:1字节(byte)=8bit 1B = 1个字节
1.2.4运算器的基本组成
运算器

ACC【accumulate】:累加器,用于存放操作数或运算结果

MQ【multiple- quotient register】: 乘商寄存器,乘除运算时,,存放操作数或运算结果

X 【arithmetic and logic unit】 : 通用寄存器,存放操作数

ALU: 算数逻辑单元,通过内部复杂的电路实现算术运算、逻辑运算

控制器

CU【control unit】:控制单元,分析指令,给出控制信号

IR【instruction register】:指令寄存器,存放当前指令

PC【program counter】:程序计数器,存放下一条指令地址,自动加1

★工作过程
  1. pc指向第0 条主存地址,将指令发送给MAR
  2. MAR接收到指令去存储体中找到对应的地址存放的内容,发往MDR
  3. MDR得到的指令被取走,放在了IR
  4. IR将其操作码送到CU分析
  5. CU将地址码指明的内存单元里的数据取出来,并且放在ACC里
  6. 就把地址码放在主存的MAR当中,MAR变换
  7. MAR从存储体找出改地址对应的数据,并且放到MDR
  8. MDR又被传送到ACC累加器中
符号表示

(PC)–>MAR

M(MAR)–>MDR

(MDR)–>IR

取指令结束PC+1–>PC

OP(IR)–>CU

分析结束

AD(IR)–>MAR

M(MAR)–>MDR

(MDR)–>ACC

执行指令结束

1.3计算机系统的层次结构

1.3.1五层结构
软件
M4高级语言机器
M3汇编语言机器
M2操作系统机器

硬件
M1机器语言
M0微指令系统

下层是上层的基础

1.3.2三个级别

高级语言、汇编语言、机器语言

汇编程序和解释成语的区别

  1. ​ 汇编:将汇编语言翻译成机器语言
  2. ​ 解释:高级语言翻译成机器语言

1.4存储器的性能指标

1.4.1存储器的容量
MAR位数反应存储单元最多支持多少个
45678
163264128256
MDR反应每个存储单元的大小

2^10=K
2^20=M
2^30=G
2^40=T

1.4.2性能指标–CPU
CPU主频

CPU内数字脉冲信号震荡的频率

时钟周期

每个脉冲信号的使劲按称为一个CPU的时钟周期,单位微妙/纳秒

CPU主频=1/CPU时钟周期

CPI

执行一条指令所需的时钟周期

CPU执行时间

CPU时钟周期 / 主频=(指令条数*CPI)/ 主频

Q1:主频高的CPU一定比主频低的CPU快吗?

A: 这里要考虑到主频和CPI,所以不一定

Q2:若上两个CPU的平均CPI相同,那么A一定更快吗

A: 不一定,还要看指令系统,如A不支持乘法指令,就只能用多次加法指令来实现乘法

Q3:基准程序执行的越快,机器性能越好吗?

A: 也不是,基准程序语句存在频度差异

IPS

(Instructions Per Second)每秒执行多少条指令

ips=主频/平均cpi

FLOPS

(Floating-point Operations Per Second)每秒执行多少次浮点运算

1.4.3系统整体的性能指标
数据通路带宽

数据总线一次所能并行传送信息的位数

吞吐量

系统在单位时间内处理请求的数量

响应时间

从用户向计算机发送一个请求,到系统对该请求作出响应并获得它所需要的结果的等待时间

包括

CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)

1.4.4动态测试

基准程序:用来测量计算机处理数的的一种实用程序,以便于被测量的计算机性能可以于同程序的其他计算机性能进行比较

第二章 数据的表示和运算

2.1进制转换

2.1.1 进位计数制

权重表示

真值和机器数

真值:符合人类习惯的数字

机器数:数字实际存到机器里的形式,正负号需要被“数字化”

2.1.2 BCD码

用二进制编码的十进制

8421码

四个权值不变,从高位到低位是8421

映射关系:

0123456789
0000000100100011010001010110011110001001

加法运算

在加法运算的8421码中,1010~1111没有定义你如果落在这个区间里面,就+6,这时向高位进了一位,此时低4位保留下来的就是个位的,高四位表示十位

余3码

无权码

计算规则:8421码的基础上加(0011)_2

0123456789
0011010001010110011110001001101010111100
2421码

权值不固定,从高位到低位分别是2421

0-4第一位都是0;5-9第一位都是1

2.1.3字符与字符串
ASCII编码128个

32-126是可印刷字符,其余为控制通信字符

大写字母A–65 小写a–97

GB2312

分为94个区94个位置

放置信息交换时与控制/通信字符冲突,再加上20H

32-125冲突,+上80H-->汉字内码

多字节数据(汉字)

采取大小端存储模式

大端模式:将数据的最高有效字节存放在低地址单元中

小端模式:将数据的最高有效字节存放在高地址单元中

2.1.4奇偶校验

码字

有若干代码组成的一个字,将两个码字逐位进行对比,具有不同位的个数称为两个码字间的距离

信息ABCD
编码00011011

A~B之间的距离是1,因为有一个二进制位不同

码距

一种编码方案肯工会有若干个合法码字,各合法码字间的最小距离称为”码距“

校验原理

当d = 1时,无检错能力;当d=2时,具有检错能力; 当d>=3时,若设计合理,可能具有检错、纠错能力

奇校验码

整个校验码中1的个数为奇数

_1001101,1的个数是偶数,爱最高位添加一个1

偶校验码

整个校验码中1的个数为偶数

_1001101,偶数个1最高位添0

奇偶校验局限性

当在传输中有偶数个bit位发生了跳变,是检测不出来的

硬件实现

进行异或运算(模2加):仅当二者不同时为1

00得0 01得1 10得1 11得0

偶校验异或后为1则错误

2.1.5海明码
设计思路

将信息位分组进行偶校验->多个校验位–>多个校验位标注出错位置

n12~45~1112~26
k2345
求解步骤:

​ 确定校验位数量–> 确定校验位的分布–>求校验位的值–>检查纠错

H7H6H5H4H3H2H1
D4D3D2P3D1P2P1
1010

校验位Pi 放在海明位号为2^i-1的位置上

也就是1 2 4 8 16 ,信息为按顺序放到其余位置

  1. 确定海明码的位数
  2. 确定校验码的分布
  3. 求校验位的值
    1. 将信息位转化成二进制竖着写
    2. 从后往前。位数为1的归为P1区域
    3. 依次进行
    4. n个分组进行偶校验
    5. 得出来的值就是校验位的值
  4. 纠错
    1. 没有错

      三个校验位与其对应的信息位进行偶校验,得到的结构是000

    2. 错了

      异或后得出得结果从高到低,就得到了出错位置

  5. 补充

    海明码的检错纠错能力:

    1. 纠错能力——1位
    2. 检错能力——2位

    全校验位

    S1S2S3=000 ,且全体偶校验成功–>无错误

    S1S2S3!=000, 且全体偶校验失败–>1位错误,纠正即可

    S1S2S3!=000,且全体偶校验成功–>2位错误,需重传

2.1.6循环冗余校验码

思想

数据发送、接受方约定一个除数,k个信息为+r个校验位作为被除数,添加校验位后,需保证出发的余数为0

其中涉及到模2除和模2减

解题步骤

  1. 确定K、R以及生成多项式对应的二进制码

    K是信息码,R是生成多项式最高次幂,他俩加起来就是校验码的位数

    G(X)= X^3 + X ^2 + 1==》

    1 * X^3 + 1 * X ^2 + 0 * X^1 + 1 * X ^0

    得到对应二进制码1101

  2. 移位

    ​ 信息码左移R位,低位补零

  3. 相除

    ​ 用生成多项式进行模2除法,产生余数,就是CRC校验码

  4. 检错和纠错

    ​ 发送方:C9C8C7C6C5C4C3C2C1C

    ​ 接收方用约定好的1101进行迷模2除,余数为零,代表没有出错

    ​ 余数为010代表C2出错

    这里注意,余数和出错位置之间没有关系

在这里插入图片描述

对于确定的生成多项式,出错位于余数是相对应的

K个信息位,R个校验位,是生成多项式的最高位,若生成多项式选择得当,且2^R >=K+R+1,则CRC码可纠正一位,实际中一般只用于检错

特点

  1. 可检测出所有奇数个错误
  2. 双比特错误
  3. 小于等于校验位长度的连续错误

在这里插入图片描述

第一个余数后加0循环

2.2各种码

2.2.1定点数

小数点的位置固定

无符号数

整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。通常只有无符号整数,没有无符号小数。

表示范围

8位二进制数,28种不同状态,0~255=28-1

n位无符号数表示的范围是:0~2^n -1

在这里插入图片描述

有符号数

第一位是符号位,后面是数值围位

表示范围

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t71b76yI-1626923208285)(C:\Users\吴霜\AppData\Roaming\Typora\typora-user-images\image-20210719110210304.png)]

真值0有两种形式:+0 和 -0

移码

补码的基础上将符号位取反,只能表示整数

小技巧

已知X的补码求-X的补码

符号为、数值位全部取反,末位+1

2.2.2补码的加减运算

可以将减法操作转变为等价的加法,ALU中无需集成减法器。执行减法操作时,符号位一起参与运算

模 - |a| = a 的补数

x- a = x - |a|=x + a 的补码

任何运算在(mod2^8)后只保留最低8位

2.2.3定点数的运算
移位运算

通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。可用移位运算实现乘法、除法

右移

高位补零,低位舍弃。若舍弃的位=0,相当于/2;若舍弃的位!=0,则会丢失精度

左移

低位补零,高位丢弃。若舍弃的位=0,相当于X2 ;若舍弃的位!=0,则会出现严重误差

原码的算术移位

——符号为保持不变,仅对数值位及逆行移位

反码的算术移位

正数的反码和原码相同,则高位补零、低位补零

负数的反码数值位与原码相反,则高位补1 ,低位补1

补码的算术移位

正数的反码和原码相同,则高位补零、低位补零

负数补码=反码末尾+1,导致反码最右边几个连续的都因为进位而变为0,直到进位碰到第一个0为止。

B的补码求出-B的补码,这里B是负数从右边起,1–>0,直到出现第一个0,变了以后就不变了

B = -11000

他的原码就是1001 1000反码11100111补码就是11101000

找到右边的第一个1 左边全部取反得到00011000就是-B的补码

补码左移添0,右移添1

逻辑移位

逻辑右移:高位补零,低位舍弃

逻辑左移:低位补零,高位舍弃

可以看作是对无符号数的算术移位

循环移位

移位后,移出来的那位去补空出来的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3JplBsGS-1626923208288)(C:\Users\吴霜\AppData\Roaming\Typora\typora-user-images\image-20210722094949172.png)]

2.2.4加减运算的溢出判断
加法运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HgzkNsIv-1626923208292)(C:\Users\吴霜\AppData\Roaming\Typora\typora-user-images\image-20210722100356109.png)]

减法运算

减数符号取反,转变为加法

补码的加减运算

补码变原码:从右边起,找到第一个1 ,他左边的所有数值位全部取反,就直接得到原码

他和他右边的数值和原码保持一致,左边的部分和反码保持一致。

溢出判断

正数加正数出现上溢

负数加负数出现下溢

一位符号为判断

在这里插入图片描述

进位情况判断

在这里插入图片描述

双符号位判断

在这里插入图片描述

把位权小于4的保留,大于4 的舍去

双符号位实际存储时只存储一个符号位,运算时会临时赋值一位

符号扩展

8–>16,补0补1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j77tzW9y-1626923208300)(C:\Users\吴霜\AppData\Roaming\Typora\typora-user-images\image-20210722105830995.png)]

定点整数补码是右边的1 的左边不变,而定点小数是右边的1 的左边也是不变

补码保留一致性,左原右反

2.2.5定点数原码乘法运算
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机组成原理是研究计算机硬件和软件之间相互关系的学科。它涉及到计算机的各个组成部分,包括中央处理器(CPU)、存储器、输入输出设备等。计算机组成原理的实际应用非常广泛,以下是一些实际应用的例子: 1. CPU设计:计算机组成原理的研究可以帮助设计和优化CPU的结构和功能。通过了解CPU的工作原理,可以提高CPU的性能和效率。 2. 存储器管理:计算机组成原理的研究可以帮助设计和管理计算机的存储器系统。了解存储器的层次结构和访问方式可以提高存储器的速度和容量。 3. 输入输出设备:计算机组成原理的研究可以帮助设计和开发各种输入输出设备。了解输入输出设备的工作原理可以提高设备的性能和可靠性。 4. 操作系统计算机组成原理的研究可以帮助理解操作系统的工作原理。了解操作系统如何管理和调度计算机的资源可以提高系统的性能和稳定性。 5. 网络通信:计算机组成原理的研究可以帮助理解计算机网络的工作原理。了解网络通信的协议和技术可以提高网络的性能和安全性。 6. 并行计算:计算机组成原理的研究可以帮助设计和开发并行计算系统。了解并行计算的原理和技术可以提高计算的速度和效率。 以上是计算机组成原理的一些实际应用。通过深入研究计算机组成原理,可以更好地理解计算机系统的工作原理,并应用于实际的计算机系统设计和开发中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值