计算机系统组成复习及CRC循环冗余校验码计算
计算机系统组成复习
复习过程中个人的一些理解,主要是对一些易混淆或者过程复杂的概念题目加以解释、梳理。
名词解释
主机、主存、辅存
- 主机:计算机硬件的主体部分,由CPU和主存储器组成
- 主存:主存储器。存放正在运行的程序和数据的存储器。也称内存。
- 辅存:外部存储器。存储容量大,成本低,速度慢,断电后数据仍存在。
主存、主存储器、内存、内存储器指的是同一个东西。我们说的电脑8G、16G就是内存大小。内存太小,开多程序就会卡甚至未响应、闪退。
辅存、辅助存储器、外存、外部存储器指的是同一个东西。我们用的机械硬盘、固态硬盘就是辅存。
存储字、存储单元、存储字长、机器字长
- 存储字:一个存储单元所存的二进制码组合。
存储字是逻辑单位,它单纯指代存储单元中的内容。
比如一个存储单元中存着0011011001111101,我们称这一串为存储字。我们能明确这个存储字的内容,但不能明确这个存储字的意义,因为它既可表示为由十六进制字符组成的367DH(ASCII码);又可代表16位的二进制数,此值对应十进制数为13 949;还可代表两个ASCII码:“6”和“}”。(实例来源于百度百科) - 存储单元:可存放一个机器字并具有特定存储地址的存储单位。
它不是存储器的最小单元,但一定是CPU访问存储器的最小单位。比如通常一个存储单元由八个二进制位组成(一个字节),每次CPU进行读写操作都是以n个存储单元(n个字节)进行的。 - 存储字长:一个存储单元中二进制码(存储字)的位数。
存储字长可以是8、16、32,意味着存储单元可以是1个字节、2个字节、4个字节(通常是一个字节) - 机器字长:CPU一次能处理的二进制数
主要与CPU寄存器位数有关,也就是硬件结构有关。我们说的32/64位操作系统,指的就是机器字长为32/64位。所以64位会贵一点,但是运行速度更快。
访问时间和存取周期
- 访问时间:存储器从启动一次访问操作到完成该操作的时间,也叫读写时间
- 存取周期:存储器连续启动两次访问操作所需的最小间隔时间,也叫存储周期
- 存储器带宽:单位时间内存储器存取的信息量
即连续两次的访问操作,第一次访问操作启动到这次结束的时间为访问时间;第一次访问操作启动到第二次访问操作启动的时间为存取周期
假设进行两次访问操作(读或写),第一次访问操作 -> 等一会 -> 第二次访问操作,分别代表访访问时间 -> 存取周期 -> 访问时间。
因为硬件设计的原因,连续两次访问操作不可能完美衔接,中间会有等一会的时间,因此存取周期通常略大于访问时间。
微命令、微指令、微操作、微程序
- 微命令:控制部件通过控制线向执行部件发出各种控制命令。
- 微操作:由微命令控制实现的最基本的操作过程
- 微指令:以二进制编码形式存放在控制存储器的单元中,用来实现指令中的某一步操作。
通常由控制信号字段、分支地址字段和分支控制字段三部分组成。控制字段中,每一位代表一个微命令。 - 微程序:一个有序的微指令序列
- 微程序控制器:采用微程序控制方式来产生微命令的控制器。
- 组合逻辑控制器:采用组合逻辑线路实现来产生微命令的控制器
简单来说,微程序是一组微指令的集合;微指令由一组微操作一步步完成;在微指令的控制字段中,每一位代表一个微命令。
控制部件通过控制线向执行部件发出各种控制命令,通常这种控制命令叫做微命令,是最小单位,组成微指令,而执行部件接受微命令后所执行的操作就叫做微操作。
一条机器指令的功能通常由微程序来实现的
CPU、CU等一堆英文元件
- CPU:中央处理器。计算机硬件的核心,主要由运算器和控制器组成
- CU:控制单元。控制器的核心。用于产生微操作命令序列
- ALU:算术逻辑运算单元,处理器的核心部件,进行算数、逻辑运算。
- IR:指令寄存器。存放当前正在执行的指令。
- PC:程序计数器。存放下一条要执行的指令的地址。
- MAR:存储器地址寄存器。在内存中用来存放将要访问的存储单元的地址
- MDR:存储器数据缓冲寄存器。在内存中用来存放某单元读出或写入某存储单元的数据
- RAM:随机存取存储器。存取任一单元的时间相同(不用顺序查询),断电后内容消失。可分为动态(DRAM)和静态(SRAM)
- ROM:只读存储器。只能读出原有的内容,不能由⽤用户再写⼊入新内容。ROM可分为可编程ROM、可擦除可编程ROM、电擦除可编程ROM
其中注意IR和PC的区别。
IR存的是指令而PC存的是地址。系统通过PC获取下一条指令的地址,根据地质获取指令并存到IR中
因为PC可以自己+1得到下一条将要执行的指令,而只有地址+1才是下一条地址(指令+1不太可能是下一条要执行的指令)。因此可以根据这个特点判断PC存的是地址。
而获得当前指令的地址没啥用我们要的是当前指令本身,因此可以判断存地址的PC是下一条指令的地址,从而判断IR存的是当前指令本身。
PC会+1 -> PC存地址 -> PC是下条指令的地址 -> IR是当前指令本身
MAR和MDR也很类似,一个是存地址,一个是存数据本身。
A代表address,表示存地址;D代表digit,表示存数据。
地址表示下一个存储单元,数据本身表示当前正在用的。
三条线
- 指令流水线:计算机将一条指令的执行过程分为大致相等的几个子过程,每个子过程由一个部件完成。所有部件并行工作,提高机器效率。
- 系统总线:多个部件之间进行数据传输的公共通路,包含多跟传输线和信息传输协议,实现各部件之间的地址、数据、控制信息交换。分别有地址总线、数据总线、控制总线。
- 内部总线:计算机系统内部各功能部件间的总线。
简答
字节和字
一个字等于多少个字节,与系统硬件(总线、cpu命令字位数等)有关,不应该毫无前提地说一个字等于多少位
在16位的系统中(比如8086微机) 1字 (word)= 2字节(byte)= 16(bit)
在32位的系统中(比如win32) 1字(word)= 4字节(byte)=32(bit)
在64位的系统中(比如win64)1字(word)= 8字节(byte)=64(bit)
参考:“一个字等于多少个字节?”是一个不严谨的问法
I/O系统概念
这里概念超级多所以不得不单独列出来
首先I/O系统分为I/O硬件I/O和I/O软件。
I/O硬件
- 系统总线:各部件之间信息传输的通路
- I/O接口:主机和设备间的硬件电路,在系统总线和I/O设备之间传输信号和同步。
功能: 1. 识别设备地址2. 传送控制命令及返回状态信息3. 数据传送和缓冲4. 数据格式转换5. 检错纠错6. 中断功能7. 时序功能8. DMA功能
分类:1. 通用性:通用接口、专用接口2. 可编程性:可编程接口、不可编程接口3. 数据传送方式:并行I/O接口、串行I/O接口4. 数据控制方式:程序型接口、DMA型接口
- I/O设备:主机和外界交互的工具,分为输入设备、输出设备、外存、终端设备、其他外部设备
- 设备控制器:控制设备具体功能动
I/O软件
- 用户I/O程序:用户编写的具体I/O设备输入输出程序
- 设备驱动程序:使计算机和I/O设备进行通信的特殊程序
- 设备控制程序:驱动程序中对设备控制的具体程序
DMA
DMA接口的逻辑电路
- 主存地址寄存器:存放设备与主存交换信息时主存的地址
- 字计数器:存放交换的字数
- 中断机构:向CPU发送结束信号请求中断
- 数据缓冲寄存器:存放设备与主存交换的信息
- DMA请求触发器:接收设备已准备好的信号,并向控制/状态逻辑发送信号
- 控制/状态逻辑:接受DMA请求触发器的信号并使其复位,向CPU请求总线使用权并接收响应
- 设备选择电路:接收设备地址信号,选择具体设备
DMA传送的工作过程
分为预处理、数据传送、后处理
预处理
CUP向DMA发送指令完成初始化
- 发送读/写控制信号
- 发送设备地址
- 发送主存缓冲区起始地址
- 发送传送字数
数据传送
- 设备发送字到DMA数据缓冲寄存器,并向DMA请求触发器发送DMA请求信号
- 控制/状态逻辑接收DMA请求信号,向CPU请求总线控制权
- DMA获得总线控制权
- 控制/状态逻辑复位DMA信号触发器
- 将DMA数据缓冲寄存器的内容送至数据总线
- 将主存地址寄存器的内容送至地址总线,将数据写入
- 放弃总线控制权
- 修改主存地址寄存器和字计数器的值
- 循环执行直到字计数器溢出,表示数据传送结束并发生中断
后处理
- 校验内容
- 检测错误
- 是否继续使用DMA传输
其他概念
I/O端口
I/O接口中可编址的寄存器称为I/O端口
编址方式:
- 独立编址方式:专用I/O端口编址方式。
I/O端口和寄存器在两个独立的地址空间进行编址,端口独写由专用控制信号实现。 - 同意编址方式:存储器映射编制方式。
I/O端口和寄存器用统一的地址空间,所有访存指令可以访问I/O端口
计算题
原码补码反码
首先要了解,转换为原码补码反码后是要在最高位加一位符号位的
如果有题目是用补码求原码或者真值,先将补码取反加一得到原码,再根据最高位判断正负,然后去掉最高位,剩下的利用权值表求解就好了
为了方便找规律,我们统一先把十进制数转换为二进制数,然后再转为原码补码反码,都用最多8位表示
正数主要流程为:二进制真值 -> 原码补码反码(正数四个都一样)
负数主要流程为:二进制真值 -> 原码(加符号位)-> 反码(真值取反再加符号位)-> 补码
最后移码用补码的符号位取反
正整数
正整数是最简单的,转换为二进制数后,加上符号位,整数加0,即为原码,然后原码补码反码都相同
以100为例:
权值表: 128 64 32 16 8 4 2 1
二进制: 1 1 0 0 1 0 0
二进制真值为:1100100。
加上符号位0,其原码补码反码均为:0110 0100
负整数
负整数原码加上符号位1,反码为二进制真值取反后加上符号位1,补码为反码+1
以-87为例:
权值表: 128 64 32 16 8 4 2 1
二进制: 1 0 1 0 1 1 1
二进制真值为:1010111
原码:加上符号位得1101 0111
反码:真值取反0101000,加上符号位1得1010 1000
补码:反码+1得10101001
正分数
分数的大体思想不变,就是权值表会改变。因为是小数点后面开始取,所以我们从左往右取八位
以29/128为例:
将其分解为:1/128+1/32+1/16+1/8
权值表: 1/2 1/4 1/8 1/16 1/32 1/64 1/128
二进制: 0 0 1 1 1 0 1
二进制真值位:0.001 1101(开头的0.用来表示这个数不是整数,0可以省略只留个点,实际之后点后面的属于有效位)
加上符号位0,原码补码反码均为:0.001 1101
负分数
同样和负整数相似,不过是权值表的变化
以-13/64为例:
分解为:1/8+1/16+1/64
权值表: 1/2 1/4 1/8 1/16 1/32 1/64 1/128
二进制: 0 0 1 1 0 1 0
二进制真值为:0.001 1010
原码:加上符号位1得1.001 1010
反码:真值取反得0.110 0101,加上符号位得1.110 0101
补码:反码+1得1.1100110
IEEE754
符号位,阶码用偏移阶码表示,尾数用原码表示
一般都是考单精度32位,即符号位1位,阶码8位,尾数23位。
以防万一放上双精度,符号位1位,阶码11位,尾数52位
要注意的是,阶码真值加偏移量得到偏移阶码,偏移量为整数位数-1(8位阶码即2^7-1=127)
需要进行规格化,即让第一位数位1,移动了几位就乘上2的几次方(左负右正)
以27/64为例:
分解后为:1/64+1/32+1/8+1/4
权值表: 1/2 1/4 1/8 1/16 1/32 1/64 1/128
二进制: 0 1 1 0 1 1 0
真值为:0.0110110=1.1011*2-2(权值为2,前移两位所以是2-2)
因为正数所以符号位为0
阶码为-2,其偏移阶码为-2+127=125,即0111 1101
位数即1011000…(共23位)
得到结:0 01111101 1011000…(共23位)
浮点运算
- 对阶:两数阶码相减,若小于0则前面的数右移,反之后面的数右移。若最后一位多出则先保留
- 尾数求和(差):将尾数相加,阶码不变。若是相减,则根据补码进行转换,变为相反数后
- 规格化:使最后的尾数最高位为1(不包括符号位)。若负数的符号位与最高位相同(均为1),则进行左移。
- 舍入处理:如果此时尾数仍有多,则进行舍入处理。
- 判断溢出:根据阶码的双符号位判断是否溢出。00为正,11为负,01上溢出,10下溢
- 得到最后结果。
例题:
阶码3位,尾数6位,求[x+y],[x-y].
x=2^-011B * 0.100101,y=2^-010B * -0.011110
假设两数为补码,阶码双符号,尾数单符号
将两数用补码表示:x=11 101,0.100101,y=11 110,1.100010
求[x+y]
- 对阶数:两数阶码相减结果为-1,移x:2^-010B * 0.010010(1) ,x变为11 110,0.010010(1),阶码统一
- 尾数求和:0.010010(1) + 1.100010 = 1.110100(1),阶码仍为11 110
- 规格化:尾数变为1.010010,左移了两位,阶码变为11 100
- 舍入处理:尾数没有多余,不需要舍入
- 判断溢出:阶码符号位仍为11,没有溢出
- 结果为:11 100,1.010010
求[x-y]
- 对阶数:同理,x变为11 110,0.010010(1)
- 尾数求差:-y=0.011110,x-y=0.110000(1)
- 规格化:已经是规格化数了所以不用规格化
- 舍入处理:尾数多了个1,舍入处理后尾数为0.110001
- 判断溢出:阶码符号为11,没有溢出
- 结果为:11 110,0.11001
CRC循环冗余校验码
首先要知道有CRC码的校验位为k位,而生成多项式的位数=k+1
CRC也称为(n+k, n)码,n是原始数据长度,k为增加的校验位长度
根据CRC定义,需要将有效信息左移k位再被生成多项式模2除
最后在有效信息后加上除出的余数即为CRC码
模二除:涉及模二加减法。模二加减法即对应位上的抑或操作
- 被除数首位为1则除以除数,余数由被除数和除数进行模二加减法得到;为0商0,直接左移一位余数
- 所得余数去除首位并左移一位
- 重复直到余数位数少于除数(忽略首位的0)
模二除参考:模2除法(CRC校验码计算)
例:设有效信息为110,生成多项式G(x)=11011,求其CRC码生成多项式位数=5=k+1,k=4
110左移四位:110 0000
模二除G(x):110 0000/11011,商100余1100
有效信息加上余数得到CRC码:110 1100
例:(7,4)码,生成多项式G(x)=x^3+x+1,求1001的CRC码生成多项式G(x)=x^3+x+1,即为1011
由(7,4)码得知k=3,将1001左移3位:1001 000
模二除G(x):1001 000/1011,商1010余110
有效信息加上余数得到CRC码:1001 110
计算机系统组成复习及CRC循环冗余校验码计算相关推荐
- CRC循环冗余校验码总结
一.CRC简介 先在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用除法及余数的原理来作错误侦测(Error Detecting ...
- CRC 循环冗余校验码 的计算方法
循环冗余校验CRC(Cyclical Redundancy Check)字段位于尾部,有32位,有时称为IEEE/ANSI标准的CRC32.要使用一个n位CRC监测 数据传输错误,被检查的消息首先要追 ...
- java实现冗余校验_循环冗余校验_循环冗余校验码计算_循环冗余校验 java实现(6)...
接收端对收到的len 2字节执行do_crc,如果没有差错发生则结果应为0.循环冗余校验 在一些传输协议中,发送端并不指出消息长度,而是采用结束标志,考虑以下几种差错: 1)在消息之前,增加1个或多个 ...
- 循环冗余校验码计算CRC
CRC循环冗余检验码的计算题 1.若信息码字为11100011,生成多项式 G(X)=X5+X4+X+1,则计算出的 CRC 校验码为? x的最高次幂5则 信息码(被除数)补五个0为:11100011 ...
- 16位CRC循环冗余校验码生成函数
16位的CRC校验码生成,可使用以下函数: //16位CRC校验码生成 //返回值:CRC校验码 unsigned int CRC_check(unsigned char *addr,int num) ...
- java实现冗余校验_循环冗余校验_循环冗余校验码计算_循环冗余校验 java实现
CRC的全称为Cyclic Redundancy Check,中文名称为 差错控制理论是在代数理论基础上建立起来的.这里我们着于介绍CRC的算法与实现,对原理只能捎带说明一下.若需要进一步了解线性码. ...
- 循环冗余校验码CRC原理和实例
今天同事问了一个CRC(循环冗余校验码)的问题,好奇心之下学习了一下. 首先说它的原理,百度百科上也有,我就简单说一下,它其实就是采用多项式编码的方法,对于要发送的信息码R,发送方和接收方约定好多项式 ...
- CRC循环冗余校验是如何纠错的
引言 昨天同学突然问我CRC循环冗余校验是如何纠错的?我突然大脑一片空白,学过校验码自然知道CRC循环冗余校验码是可以检错和纠错,但是仿佛只知道求出检验码和检错的过程,但是不知道如何纠错的过程,查询书 ...
- CRC(循环冗余校验) BCC校验(异或校验) 温度换算 在线计算
1,CRC(循环冗余校验)在线计算 2,BCC校验(异或校验)在线计算 3,温度换算 4,在线换算器
- 计算机系统基础知识——循环冗余校验码(CRC)
前言:循环冗余校验码(cyclie redundancy check)简称CRC(循环码),是一种能力相当强的检错.纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位 ...
最新文章
- 制作碳排放强度的空间可视化_【科研成果】吴传清、宋子逸:长江经济带农业碳排放的时空差异特征分析...
- python mysql in 参数_python mysql中in参数化说明
- MES系统如何实现工厂无纸化生产?
- 高中计算机数据的基本特征,高一信息技术《信息与信息的基本特征》教案
- 通达信交易服务器修改,GitHub - sjj6love/TdxTradeServer: TongDaXin Tarde Server 通达信交易服务器...
- xshell生成xsh文件路径
- 商品属性的选择功能的实现
- 【3D建模】Solidworks 3D建模及PrusaSlicer切片打印学习笔记
- 图形界面介绍Create Pin Blockage
- 字节跳动校招 抖音电商前端 三面面经
- 故障:Office 重复提示激活
- 20款国内外免费使用 主流杀毒软件
- redhat linux密码修改
- 【Dart 教程系列第 10 篇】Dart 之 removeLast 删除数组的最后一个元素
- 【中级软考】数字签名的概念及其作用
- 国家列表 Country Code List
- excel之单元格格式/设置/
- VSTO Office二次开发应用程序键盘鼠标钩子
- 武汉理工大学计算机基础与编程综合实验——网吧计费管理系统第二个版本
- 快速掌握SPSS数据分析