第2章 数据信息的表示
根据CRC校验的余数的循环,将K7出错时的得到的余数后面加一个0,再用生成多项式1011做模2的除法可以得到K6出错时的余数。
0010/1011的余数为010, 在得到的余数后面加一个0,再用生成多项式1011做模2的除法就可以得到K5出错时的余数 0100/1011的余数为100
设使用的是p进制,则15*4=112等价于:
(p + 5) * 4 = p^2 + p + 2
解出来p=-3(舍去)和p=6
不同编码的规格化格式
正数:原码为0.1xxxxxx,补码为0.1xxxxxxxx
负数:原码为1.1xxxxxx,补码为1.0xxxxxxxx
浮点数的一般格式:阶符(1位)+阶码(2位)+数符(1位)+尾数(4位)
正数的补码就是其本身,负数的补码其最高位(符号位)为1,其余各位是对原码取反再加1。
所以,对于8位二进制数,正0的原码=补码就是00000000,负数的原码是10000000,反码为11111111,被码是反码加1,就是[1]00000000。其中[1]是超出8位的进位,因溢出自动丢失,所以结果也是00000000。
所以正负0的补码是相同的。
移码是对补码的符号位取反,所以正负0的补码都是00000000,符号位取反就都是10000000了。
一、32位处理器:
char:1个字节
int:4个字节
unsigned int:4个字节
double:8个字节
short:2个字节
long:4个字节
long long:8个字节
unsigned long:4个字节
二、64位处理器
char:1个字节
int:4个字节
unsigned int:4个字节
double:8个字节
long:4个字节
long long:8个字节
点阵的每一行需要3个字节(24位),这样的行有24行,所以需要24*3=72字节
不难看出2的次方模7的余数只有1,2,4三个并且一直循环。而且遇到指数为3的倍数时余数回到1。所以,2^100mod7=2
(a×b) mod c=(a mod c * b mod c) mod c
码距:一组编码中任何两个编码之间代码不同的位数,又称海明距离。
因为补码的好处是计算加减法可以简化电路,主要用于带符号的数计算加减法。地址我们不需要研究其正负对吧,所以无符号就可以。
[X]补 = 1.000 原码:-0.000
[X]补 = 1.101 原码:-0.375
[X]补 = 1.010 原码:-0.75
[X]补 = 1.001 原码:-0.875
0100 0001 1010 0100 1100 0000 0000 0000
e=10000011-01111111=100(2)=4
1.010 0100 11=1.318359375
1.318359375*10^4=13183.59375
若采用双符号位补码运算,运算结果的符号位为01,则运算正溢出,产生了上溢。
若采用双符号位补码运算,运算结果的符号位为10,则运算负溢出,产生了下溢。
记住!!!
逻辑右移:右边一位移出,左边空出位补0
算术右移:符号位不变,其余各位依次右移,最右边一位移出,将符号位复制到左边空出的位,一次移位相当于除以2
逻辑左移:左边一位移出,右边空出位补0
算术左移:各位依次左移,右边空出位补0,一次移位相当于乘以2,当符号位改变时表明溢出
R1: -2
R2: -14
R3:-112
R4:-8
整数用8位补码表示-128 ~ 127
R1×R2 = 28 < 127
R2×R3 = 1568 > 127 溢出
R1×R4 =16 < 127
R2×R4 = 112 < 127
阶码部件需要完成加、减运算。
本题的第一步是从给出的地址中确定片选信号的值,访问8K存储器需13位地址,而4K存储芯片只需12根地址。因此,最高1位地址是片选信号。0B1FH对应的二进制是0 1011 0001 1111,对应的片选信号是0,此时,低12位地址全0 对应该片的最低地址,也就是13位0。
本题的第一步是从给出的地址中确定片选信号的值,访问8K存储器需13位地址,而2K存储芯片只需11根地址,因此,最高2位地址是片选信号。0B1F对应的二进制是0 1011 0001 1111,对应的片选信号是01,此时,低11位地址全1 对应该片的最大地址,也就是01111 1111 1111,对应的16机制数为:0FFFFH
双字数据起始地址的最末3位为000(8字节的整数倍),表示访问一个64位字长的字,如果要访问其中的某字节或半字则用低3位中的部分位来选择。
单字数据起始地址的最末两位为00(4字节的整数倍)。
半字数据起始地址的最末一位为0(2字节的整数倍)。
字节数据的存储按照单字数据处理。
按边界对齐要求变量的起始地址必须能够被自身数据类型的大小整除。
对于273,十六进制是0x111,因此第一个低位字节存储0x11,再高一点的字节存储0x01,后面两个字节为空的不管。好了,看存储char b,这个大小是1个字节,存完之后,如果紧接着就存short c,那么c的起始地址是个奇数,不能被2整除。
因此在char b后留白一个字节。
因为按字节编址,主存块大小为32字节,所以块内地址占5位。
每组包含的存储块的个数为4块,索引字段标记哪一个组,cache一共64行,即64组。一组4块,一共16组,需要4位来标记是哪一组。故Index位数为4位。
因为3000=0…0101 1101 11000B ,根据主存地址划分的结果,可以看出3000单元所在主存块对应的cache组号为1101B=13。
A、直接映射方式冲突率比组相联方式有更高。因此,前者的命中率会更低
C、全相联映射方式比较适用于小容量Cache
D、直接映射是多对一的映射关系 (即主存的多个数据块映射到Cache的同一行)
主存有4096个字块,每个字块有256字节,所以地址长度为12+8=20位
每个字块有256字节,所以块内地址有8位。
Cache分为8组,组号就是3位
所以标记字段就是20-8-3=9位
记住吧!!!
等效为主存的容量256MB
A、Cache速度要高于内存,更高于磁盘。
B、Cache存储器中存放的内容是特定内存的副本,而不是全部内存内容的副本。
C、Cache的命中率在90%以上,根据Cache的工作原理,正在访问的指令和数据大部分是从Cache 中命中的,说明正在被处理的指令和数据存90%以上放在Cache中。
D、Cache和内存是两个不同的物理部件,不属于内存的特定区域。
因为按字节编址,主存块大小为32字节,所以块内地址占5位。
cache有64行,即64组,也就是区内块号(索引)为6位。
因为3000=0…01 011101 11000 B ,根据主存地址划分的结果,主存第3000号单元所在主存块映射到的cache行号是011101B=29。
直接映射每个分区中包含的块数与cache中包含的行数相同。
主存容量8MB,一个区容量64KB,有8MB/64KB=128个区。主存区号(标记):7位。
求一个区所含块数。有4096个主存块,128个区,一个区有4096/128=32个块。
LSB
least significant bit,最低有效位。
MSB
Most Significant Bit,最高有效位。
根据基址寻址,该地址为基址寄存器内容+形式地址。指令中形式地址要进行符号扩展为 FFFF FF00H再与基址寄存器的内容C000 0000H相加,结果为BFFF FF00 H,保存机器数ABCD 00FFH需要4个字节单元,分别是BFFF FF00 H、BFFF FF01 H、BFFF FF02 H和BFFF FF03 H,由于是大端存放方式,所有答案是BFFF FF03H。
D、由于指令由操作码、地址码和寻址方式特征位组成,因此,它们都是指令设计时,影响指令长度的因素。
C、相对寻址默认使用的寄存器是PC , 不会出现在指令中。
OP AD1 AD2 AD3
三地址 使用OP四位,共可设计16条,已使用15条。
范围:0000 AD1 AD2 AD3 - 1110 AD1 AD2 AD3
一条1111 作为二地址扩展标识。
二地址 使用1111+AD1共可设计16条,已使用8条
范围:1111 0000 AD2 AD3 - 1111 0111 AD2 AD3
一地址 使用127条
范围:1111+1000+AD2 AD3 - 1111 1111 1111 AD3
故使得AD2(1111)可扩展为0地址
零地址 范围:1111 1111 1111 0000 - 1111 1111 1111 1111,一共16条
计算机采用双字节指令,故为PC+2;
相对寻址:E = (PC + 2) + D;故 D = 2001 - (2008 + 2)= -9 ,求补得 F7H
J型指令格式:前6位为操作码,后26位为立即数。
在获取跳转地址时,通过将立即数左移两位得到28位和当前指令的高4位组成跳转地址。
立即数中的地址表示是按字来算的,对于按字节编址的存储器来说(1字->4字节)需要乘4 当然如果你的存储器是按字编址就不需要乘4或左移2。
记住吧!!!
第6章 *处理器
冯诺依曼计算机由CPU处理器、运算器、存储器( RAM, ROM等 )、输入设备、输出设备五部分组成。
C、根据单周期CPU的设计原则,取数据通路最长的指令所需要的时间为单周期时间。根据单周期CPU的结构,依次需要访问指令存储器——寄存器文件——ALU——数据存储器——寄存器文件,根据题目条件,上述时间的总和为3+1+2+3+1=10ns。
冯•诺依曼计算机中指令和数据均以二进制形式存放在存储器中,CPU依据( )来区分它们。
A.指令和数据的寻址方式不同
B.指令和数据的表示形式不同
C.指令和数据的访问时间不同
D.指令和数据的地址形式不同
选择C
记住吧!!!
4个微命令有5种组合方式,其中有一种是这4个微命令都无效,所以微指令寄存器中相应字段的位数至少需要3位。
记住吧!!!
第7章 系统总线
期末考试
校验码N位,有效信息为k位,校验位为r位。
N = k+r <= 2^r-1
题目中有效信息位8位,8+r <= 2^r-1,r=4
基址或偏移寻址
lw sw lh sh lb lbu
与一般存储器不同,相联存储器是一种按内容访问的存储器(CAM)。
主存容量8MB,分为4096块,那一块有8MB/4096=223/212=211这么大的容量。Cache数据区容量为64KB,那cache一共有64KB/211=25=32块
芯片的大小为4K×4位,而存储器的大小为8K×8位,得出要获得这样一个大小的存储器,需要4片4K×4位的芯片。按字节编址,对应一个大小为8K×8位的存储器,需要13位地址,其中高2位为片选地址,低11位为片内地址,而题目给出的地址0B1FH转换为二进制为0000 1011 0001 1111,其高2位为00,即片选地址为0。
d码距,e检测的错误,t 纠正的错误
d>=e+1:可检测e个错误
d>=2*t+1:可纠正t个错误
d>=e+t+1:可检测e个错误并纠正t个错误
-97的补码=1001 1111
63的补码=0011 1111
-97-63=-160
相减得0110 0000B=96,负溢出
(可能我的理解有误)
如果代码为标准移码数,则补码表示00001101,为正数+13