软件设计师考点1 计算机组成原理与体系结构
一、数据的表示
1.R进制转十进制:按权展开发法,例如二进制:10100.01 = 1*24 + 1*22 + 1*2-2
2.十进制转R进制:短除法,例如:将14转换为二进制
2 | 14 余 0
2 |7 余1
2 | 3 余1
2 | 1 余1
得到结果为:1 1 1 0
3.二进制和八进制,十六进制的转换:分段法。
4.码数
原码:原本的二进制数,最高位为符号位,1为负,0为正。 范围:-(2n-1-1)~ 2n-1-1
反码:正数与原码相同,负数符号位不变,其他位按位取反 范围:-(2n-1-1)~ 2n-1-1
补码:正数与原码相同,负数为反码加1 范围:-2n-1~ 2n-1-1
移码:补码首位取反,一般用作浮点运算中的阶码。
5.数据的表示-浮点数运算
N = M * Re ,M为尾数,R为基数,e为指数,计算方式:低位向高位对阶⇒尾数相加(减)⇒结果格式化(小数点前只能是一位)
二、计算机结构
1.主机机构:
运算器:
①算数逻辑单元ALU
②累加寄存器AC
③数据缓存寄存器DR
④状态条件寄存器PSW:存储运算过程中的相关标志位
控制器:
①程序计数器PC
②指令寄存器IR
③指令译码器
④时许部件
三、Flynn分类法:一种计算机体系结构的分类法
指令流和数据流:
单指令流单数据流SISD:控制部件一个,处理器一个,主存模块一个。例如:单处理器系统
单指令流多数据流SIMD:控制部分一个,处理器多个,主存模块多个。例如:阵列处理器
多指令流单数据流MISD:目前没有
多指令流多数据流MIMD:控制器多个,处理器多个,主存模块多个。
四、CISC和RISC
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 |
CISC(复杂) | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术(微码) | 研制周期长 |
RISC(精简) | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只用Load/store操作内存 | 支持方式少 | 增加了通用寄存器,硬布线逻辑控制为主,适合采用流水线 | 优化编译,有效支持高级语言 |
五、流水线技术:在程序执行过程中多条指令重叠操作的一种准并行处理实现技术
1.流水线周期为执行时间最长的一段。
2.流水线计算公式为:1条指令执行时间+(指令数-1)*流水线周期
3.流水线吞吐率:单位时间内流水线完成的任务数量,计算公式:吞吐率 = 指令条数 / 流水线执行时间
流水线最大吞吐率:= 1 / 流水线周期
4.流水线的加速比:完成同一批任务不使用流水线所用的时间和使用流水线时间的比值。
计算流水线加速比的公式:S = 不适用流水线执行时间 / 使用流水线执行时间
5.流水线的效率:流水线的设备利用率。E = n个任务占用的时空区 / k个流水段的总时空区
六、存储系统
CPU:寄存器,存储速度最快,容量最小。
cache:高速缓存存储器
①功能:提高CPU数据输入输出的速率。
②Cache+主存的系统的平均时间= (cache访问命中率)* cache周期时间 + (1-cache命中率) * 主存周期时间
③局部性原理:计算机在处理事件和进程时,某些时段会集中读取某些空间数据的情况。
④工作集:程序运行时被集中访问的页面集
内存(主存):
①随机存取存储器(RAM):特点:断电后存储信息丢失
②只读存储器(ROM):特点:断电后存储信息仍在。
编址
内存地址从AC000H到C7FFFH,共有 112 个地址单元。若该内存地址按字(16bit)编制,由28个存储器芯片构成。已知每个存储器芯片有16K个存储单元,则该芯片每个存储单元存储 4 位?
(C7FFFH + 1) - AC000H = C8000H - AC000H = 1C000H = 0001 1100 0000 0000 0000 =0001 1100 00K = 26 +25 + 24 = 64 + 32 + 16 = 112k
存储位数 = (地址单元 * 编址位数) / (芯片数 * 芯片存储单元) = (112 * 16 ) / (32 * 16) = 4
外存(辅存):
①磁盘机构与参数
存取时间 = 寻道时间 + 等待时间
七、总线系统
根据总线位置不同分为:
①内部总线
②系统总线
数据总线:传输数据
地址总线
控制总线:发送相应的控制信号
③外部总线
八、可靠性
系统可靠性分析
①串联系统:R = R1 * R2 *R3 *.........Rn
②并联系统:R = 1- (1-R1)× (1- R2)× .........×(1-Rn)
N模冗余模型与混合系统
冗余模型:多个系统独立,通过表决器采用少数服从多数的原则输出结果。
混合系统:串联和并联混合
九、校验码
差错控制-CRC与海明校验码
码距:编码系统中所有码字之间的最小距离。
①循环校验码CRC:只能进行检错,不能进行纠错
模二除法:除法运算中不计其进位的除法
例如:10111对110进行模二除法:
海明效验码:既能检错也能纠错。
①求海明校验码的校验位:2r >= x+r+1,r为校验码的位数,x为信息位
②求校验码的位置 海明校验码方法中,校验码的位置是固定的,从2^0位,2^1 位 --> 2^2位 ... 2^n位 ,总个数为K位
③画图表:注释: 我分别把七个位置用1~7来表示了 在填写信息为的时候也要把高位的数据填到高的位置 ,例如1011 就要类似图中的填法
位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
信息码 | 1 | 1 | 0 | 1 | |||
校验码 | R1 | R2 | R3 |
④
计算校验位的值,也是最为关键的一步 。
确定校验位的分组原则:每个位数都由R1、R2、R3中的一或若干个所确定。
说明:1由第一位R1来校验;2由第二位R2来校验;由于3=1+2(1和2指的是位数,都是2的n次方)所以3由第一位R1和第二位R2校验,4由第四位R3校验,5和3道理是一样的,5=1+4(2^0+2^2);6=2+4;7=1+2+4来校验,一次类推;
画表如下所示:
海明码位置 | 占用的校验位号 | 备注 |
1 | 1 | R1 |
2 | 2 | R2 |
3 | 1,2 | R1,R2 |
4 | 4 | R3 |
5 | 1,4 | R1,R3 |
6 | 2,4 | R2,R3 |
7 | 1,2,4 | R1,R2,R3 |
⑤
进行汇总,看每个校验位都确定了哪一位。
R1:1、3、5、7
R2:2、3、6、7
R3: 4、5、6、7
第五步:用亦或运算求出R1、R2、R3的值:(以R1为例)
普及:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。多个异或运算时,从左至右依次异或
第二行是对应的信息位上的数,如图求出R1=1
以此类推,求出值表如下
位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
信息码 | 1 | 1 | 0 | 1 | |||
校验码 | 1 | 0 | 0 |
海明校验码参考地址:海明校验码--检错纠错详解 - dalyHu的个人空间 - OSCHINA - 中文开源技术交流社区
原文地址:https://www.cnblogs.com/2c-wx/p/15115291.html
- [技巧]看我如何通过Weeman+Ettercap拿下路由器管理权限
- 一分钟理清Vue-cli 代码构建步骤。
- 点击图片放大至原始图片大小
- 替代jquery1.9版本以前的toggle事件函数(开关)
- 总结CSS3新特性(Animation篇)
- Scrapy爬虫入门
- 移动端页面按手机屏幕分辨率自动缩放的js
- PYTHON黑帽编程 4.1 SNIFFER(嗅探器)之数据捕获--补充
- es 5 数组reduce方法记忆
- CSS3与动画有关的属性transition、animation、transform对比
- 总结CSS3新特性(Transiton篇)
- 【实战】MS14-068域权限提升漏洞总结
- 总结CSS3新特性(Transform篇)
- Python 黑帽编程 4.2 Sniffer之数据本地存储和加载
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 3大利器推荐,帮你写出规范漂亮的python代码
- 【Docker】修改docker镜像存储的路径
- conda报错
- docker安装和使用
- JAVA-常量及常量池
- 解决哈希冲突的常用方法分析
- 03 Confluent_Kafka权威指南 第三章: Kafka 生产者:向kafka写消息
- kafka生产者和消费者的基本操作
- 05 Confluent_Kafka权威指南 第五章: kafka内部实现原理
- 关于leetcode第718题求长度最长的公共子数组的解析
- JAVA类加载过程&主动引用和被动引用
- 关于leetcode第56题合并重复区间的解析
- java-覆盖equals和hashcode方法
- java-单链表反转解法及分析
- JAVA-判断两个单链表是否相交并求交点