以下内容为本人备考过程中遇到的难点易混点,结合王道单科书,王道视频,以及网上资料等内容总结整理而来,接下来不出意外应该会将这个系列更下去,希望能得到大家的批评与指正,也算是考研路上自己的一片休息交流的小圈子,如果有幸帮到大家,倍感荣幸。
计算机性能指标
-
主频(CPU时钟频率):表示一秒内有多少个时钟周期,与**CPU时钟周期(时长)**互为倒数
-
CPI(平均所需时钟周期数,每条指令):表示执行一条指令所需要的时钟周期数,与IPC互为倒数
-
IPS(执行指令数,每秒):表示每秒所执行的指令数
主式:主频 / CPI(一秒内的总周期数/每条指令需要的周期数=一秒执行的指令数)
-
CPU执行时间(执行所有指令所需的时间)
主式:指令条数(题中给)x CPI / 主频(即:所有指令的条数x每条指令所需的周期数/每秒含的周期数=所有指令执行花的总秒数)
-
MIPS(执行百万条指令数,每秒):表示每秒所执行的百万条指令数
主式:主频 / (CPI x 10^6)
字长
-
机器字长(简称字长)
表示计算机进行一次整数运算所能处理的二进制的位数,一般等于通用寄存器andALU的宽度
题中表述:某16或32位机器/字长为16或32
-
存储字长
表示一个存储单元(有的教材称存储体)存储的二进制代码的位数,长度取决与编址方式。
按字编址:等于机器字长;按字节编址:等于一个字节长(8位)
题中表述:按字节编址,MDR位数默认为存储字长
tips:所谓的编址是说,将多个具有相同地址的位元(存储0or1)组织起来,使之形成一个存储单元(存储体),对这个存储单元赋予一个地址。那么找多少个位元呢,即对应编址方式。
-
指令字长
表示一个指令字中所包含的二进制代码的位数
一般为存储字长的整数倍,若两倍,则需要两个访存周期取出一条指令
语言的转换过程
高级语言源程序通过编译程序翻译为目标文件(中间件),然后经过链接程序(按逻辑组织起来),添加库文件,就得到机器代码
为了提高交互性,引入解释程序,一条一条翻译源程序,并立即执行,但耗时长
又为了提高速度,引入汇编程序,将汇编文件(不是高级语言源程序)通过汇编程序,翻译成目标文件。(因汇编语言是助记符,与机器语言一一对应,故速度快)故而有时为了提高速度,先将高级语言源程序通过编译程序翻译成汇编文件,再通过汇编程序翻译成目标文件。
单位换算
时间:秒s,毫秒ms,微秒μs,纳秒ns,皮秒ps 10^3
传输速率:K,M,G,T,P,E 10^3
存储容量:K,M,G,T,P,E 2^10
各种码的转换
[负数.补] <-> [负数.原]
原始方法:数值位取反+1;
快速技巧:负数补码中,最末尾的1的左边同反码(数值位按位取反)。最末尾的1及其右边同原码(不变)。简称“左取反右不变”
原理:是取反后加一,末尾会不断往前传递,直至传递到原来是1的那一位(即原末尾的1,取反后是0,+传递过来的1后=1传递停止))
同理可知,[正数.补] <-> [负数.补]
原始方法:全部位取反+1;
快速技巧:正数补码中,最末尾的1的左边同反码(全部位按位取反)。最末尾的1及其右边同原码(不变)。简称“左取反右不变”
正负判断
原码,补码,反码:均用0表正,1表负
移码:用0表负,1表正。(方便正负数直接比较大小)
大小比较(不论什么码)
正数:数值位越大,绝对值越大,数越大
负数:数值位越小,绝对值越大,负的越多,数越小
常见位权
2的11次方:2048,2的12次方:4096,2的13次方:8192
2的14次方:16384,2的15次方:32768,2的16次方:65536
要取得2的16次方,那么第17位为1。若第17位为0,后16位全为1,则取得2的16次方-1
带标志加法器的标志判断
进行加法时,Cin = Sub = 0;进行减法时,Cin = Sub =1(即进行按位取反后的加1)
假如最高位不进1,仅次高位进了1,说明是0+0+进位1=高位为1,即两个符号位为0的数计算结果的符号位为1,说明发生正溢出
假如最高位进1,而次高位不进1,说明是1+1+0进位=高位为0,即两个符号位为1的数计算结果符号位为0,说明发生负溢出
端、对齐 存储方式
大小端方式
按人类的数字书写顺序(如1w=10000,先写高位),大端方式先存高有效字节。(先存:在内存的低字节地址处存(地址从低到高增加))故题目给数如:01 23 45 67H,即为存放顺序 01 23 45 67
而为方便机器处理,小端方式反人类,先存低有效字节,先存低有效地址但不论大端or小端方式,字节内的各个位的顺序还是高在左,低在右
在机器代码中,机器数直接会按照地址增大的方向,结合大小端方式写,如下面
int i = -64:C7 45FC C0 FF FF FF(按小端方式存储,故先写低有效字节)
按边界对齐存储
浮点数的尾数不是只表示绝对值吗,是得话为什么规格化时正负数形式不同,小数点前的1是数值位吗?隐藏的1是怎么回事,难道是符号位?
浮点数
一般浮点数
一般浮点数不单独设符号位,符号由尾数负责,此时尾数被解释为有符号小数
规格化浮点数
为了不浪费空间,规定规格化的浮点数,其尾数的数值位最高位须为1(若用原码表示)
IEEE格式
IEEE格式单独设置符号位在最前面,故而尾数部分实际被解释为无符号小数,即表示绝对值,表示小数点后的内容。同时尾数部分隐藏最高位1(即为规格化所要求的最高位1),故而IEEE浮点数转真值时,尾数存储:101 被解释为0.101 +1 =1.101。真值转IEEE浮点数时,尾数1.101 -1 =0.101,尾数存储101
原理就是上面这样,但是题中表述其尾数真实的存储形式:101,有的题目会表述成1.01,我们将其还原为0.101 +1 =1.101即可
题中表述单精度/双精度,说明该浮点数为IEEE格式
阶码全为0 or 全为1时有特殊含义,如下: