计算机组成与体系结构笔记(1)

1.1

高级语言程序->汇编语言程序->机器语言程序
计算机系统结构:外特性、程序员所见的属性,包括指令系统、数据表示、寻址方式、寄存器集
计算机组成:计算机系统结构所体现的属性的具体实现

1.2 计算机系统的基本组成结构

冯诺依曼结构:以运算器为中心,程序顺序执行,指令和数据以同等地位存于存储器,按址寻访
运算器、控制器、存储器、输入输出

1.3 执行的过程

储存器的基本组成:
MAR:存储器地址寄存器,地址长度可反映存储器的容量
MDR:存储器数据寄存器,寄存器宽度反映存储字长

控制器基本组成:
PC:程序计数器,存放当前即将执行的指令地址
IR:指令寄存器,存放当前即将执行的指令
取指->译指->执指

术语:
指令字长:一条指令的二进制代码位数
存储字长:每次访问存储器获得的数据位数
机器字长:CPU同时处理的数据位数

1.4 计算机性能指标

  • 执行时间/响应时间/延迟
  • 吞吐量/带宽
    多个处理器可能仅仅增加吞吐量

CPU时间:CPU执行给定程序所花费的时间,不包括I/O等待时间
CPU执行时间:一个时钟周期长度指令数目平均每条指令所花的时钟周期
指令条数:取决于指令集体系结构,编译器的质量
CPI:执行一条指令所需时钟周期数
MIPS:每秒执行百万条指令数
FLOPS:每秒浮点运算次数

性能设计的基本原则:
大概率事件优先原则
Amdahl定律:加速某部件所获得的系统性能加速比受限于该部件在系统中所占的重要性

2 数据的机器级表示与运算

2.1 整数的编码

整数类型:short int long
整数的编码:原码、反码、补码

2.2 有符号数与无符号数间转换

同时有无符号数与有符号数参加运算时,C编译器会隐含的将有符号整数强制转换到无符号数。数据在计算机中的储存不变,只是对数据的解释不同,符号位-2n变成2n
比如说0-1=-1(1111),会看成15

size_t表示无符号数,对于64位的机器,size_t类型数据取值范围是0~2^64-1
而unsigned int类型取值范围是0~2^32-1,所以一个unsigned int一定>=0

unsigned int加减法是模为Umax的算术运算,当你需要取模算术运算的时候再用unsigned

2.3 整数的位运算与逻辑运算

C语言中的按位运算:& | ^ ~
C语言中的逻辑运算符:&& || !

2.4整数的扩展与移位

按位扩展:正数高位扩展是0,负数高位扩展是1,保留数值原来的含义
执行与、或操作是零扩展,默认是无符号数,为0扩展
addi加上立即数,andi与立即数
位截断:强行将长位数转成短位数,直接截断,正数可能变成负数

左移x<<y:高位移除,低位补0
右移x>>y:低位移除
逻辑右移:高位填0
算术右移:补符号位
C语言右移都是算术右移!!!想用>>实现逻辑右移就可以将操作数强制类型转化为unsigned类型

2.5 整数的加法

无符号数的加法:忽略最高位进位:1000+1001=0001
有符号数的加法:补码直接相加
整数运算的溢出:运算结果超出了表示范围
无符号数溢出不报错
有符号数:有硬件检测是否溢出overflow=carry[n]xor carry[n-1],C++可以catch

2.6 整数的乘法

加法器实现乘法:速度慢
无符号数阵列乘法器电路
有符号数的乘法:乘数的补码的乘积不等于积的补码
但是,截断后的w位,是一样的->标准的乘法:忽略运算结果的高w位,无符号乘法的部件,可以给符号乘法使用

2.7 整数的除法

余数符号与被除数符号相同
(-7)/2=-3…-1
(-7)/(-2)=3…-1
通过右移实现处以2:正数负数都是商向下取整
因为除法指令太慢了,所以编译器优化就先加再右移

2.8 浮点数的表示

IEEE 754浮点数标准

单精度:32位

8位阶码:1~ 254,但是要减去偏移量127,故阶码范围是-126~127
23位尾码:尾码表示小数,范围0~ 1,最后再加上1(阶码全零的话不用加1),范围是1~2,相当于提高了一位精度,故有效位数是24位,相当于7位十进制有效位数
规格化表示数值范围
在这里插入图片描述
非规格化表示
在这里插入图片描述
注意正零和负零之间的区别,正无穷的倒数是正零,负无穷的倒数是负零。
某种意义下比正无穷还大的数是NaN

双精度:64位

11位阶码
52位尾码:有效尾数53位,相当于17位十进制有效位数
IEEE754属性:
几乎可以之间按编码大小来比较数值大小

2.9 浮点数的运算

2.9.1 浮点数的舍入

向9截断
向正无穷截
向负无穷截
首选偶数
四舍五入:对于五的舍入,采用取偶数的方式

2.9.2 浮点数的加法

步骤:
对阶:小阶往大阶对
尾数相减
规格化,舍入
检查溢出
在这里插入图片描述
在这里插入图片描述
浮点数加法特性

  • 有交换性
  • 无结合性
  • 除了无穷和NaN满足单调性

2.9.3 浮点数乘法

步骤:
阶码加
尾数乘
规格化、舍入
检查溢出
浮点数乘法特性

  • 有交换性
  • 无结合律、无分配律
  • 除了无穷和NaN满足单调性

2.9.4 C语言中不同类型转换

int->double
只要int的值的bits<=53就能精确的转换
int->float
int的有效位数是31bits

2.10 数据在存储器中的存放形式

2.10.1 数据存储字节顺序

  • 大数端:低位对高地址
  • 小数段:高位对低地址

2.10.2数据类型及存储方式

  • 字对齐:最节约内存,但数据跨字存储,访问次数增多
  • 字不对齐:空间浪费,但是访问速度快
  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《计算机体系结构量化研究方法》是一本非常重要的计算机科学领域的经典教材。其中附录a介绍了常用的笔记记录方法,并且详细介绍了如何对这些笔记进行整理和分析,以便更好地理解和掌握计算机体系结构的知识。 这些笔记记录方法包括:时间轴笔记法、概念笔记法、映射笔记法、系统笔记法、比较笔记法等。每种笔记法都有其特定的应用场景和优缺点。例如,时间轴笔记法适合记录时间顺序上的事件,并且可以形成一个时间线来辅助记忆;概念笔记法则适合记录重点概念和关键词,帮助读者更好地理解和掌握知识点。 除了这些笔记记录方法,附录a还介绍了如何使用常用的软件工具来整理和管理笔记。例如,EverNote和OneNote都是非常好用的笔记管理工具,它们不仅可以将不同笔记类型整合在一起,还可以将笔记与其他的资源链接起来,如视频、图片、文档等等。 最后,附录a强调了笔记的重要性,并提醒读者不要对笔记脱离实际应用。只有将笔记与实际知识应用结合起来,才能真正学以致用。 ### 回答2: 计算机体系结构量化研究方法附录a笔记主要介绍了如何对计算机体系结构进行量化研究。计算机体系结构计算机的基本组成和操作原理,其对计算机系统的性能、可靠性、功耗等方面都具有重要影响。因此,了解计算机体系结构的性能指标、评价方法及其影响因素,可以有效提高计算机系统的性能和降低成本。 笔记中介绍了三种常用的计算机体系结构量化研究方法:模拟、分析和实验。其中,模拟方法是指通过计算机模拟的方式模拟计算机体系结构的运行情况,以获得对其性能的理论分析和评价。分析方法是指对计算机体系结构进行学分析,在理论上推导出其性能指标和优化方案。实验方法则是通过实验手段对计算机体系结构进行性能测试和评价,从而获得对其实际性能的评估和优化方案。 此外,笔记还介绍了一些计算机体系结构量化研究中需要注意的问题,如性能指标的选择、测试方法的确定、实验据的统计处理等。需要以实践为基础,不断完善研究方法和技术,才能实现对计算机体系结构的全面掌握和优化。 总之,计算机体系结构量化研究是计算机科学领域中的一个重要研究方向,其为计算机系统的性能提升和成本降低提供了重要手段和依据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值