第2章:汉明码
1.确定校验位的位数,若字符为8位,则m=8。
(
m
+
r
+
1
)
⩽
2
r
(m+r+1)\leqslant 2^{r}
(m+r+1)⩽2r
解出r,所以校验位有r+m位,这里r=4,r+m=12。
2.将校验位从右到左编号,留出2的指数号,其余用原字符从左到右填充
3.将所有位的位置写成2的幂的和,如12=4+8,11=1+2+8,10=2+8
所以1包含在位置1,3,5,7,9,11中,2包含在2,3,6,7,10,11中,4包含在4,5,6,7,12中,8包含在8,9,10,11,12中。
它们分别为4个校验位提供奇偶性,如1,3,5,7,9,11中有4个1,所以1的位置是0。
由此得到码字结果:010011010110
4.可以利用奇偶校验位对码字进行检查
位置1检查位置1,3,5,7,9,11
位置2检查位置2,3,6,7,10,11
位置4检查位置4,5,6,7,12
位置8检查位置8,9,10,11,12
如果在1和8位置检查出错误,则看它们共同检查的位置9,11,又11在位置2检查无误,所以错误的是位置9。
第4章:芯片与主存
假设使用
256
K
×
8
R
A
M
256K\times 8RAM
256K×8RAM芯片构建一个
2
M
×
16
2M\times 16
2M×16主存,其中存储器是按字编址的。
1.需要多少片RAM芯片
2
×
2
10
×
16
256
×
8
=
16
\frac{ 2\times 2^{10}\times 16}{256\times 8}=16
256×82×210×16=16
需要16片芯片,8行2列拼在一起。
2.访问一个完整的字涉及多少芯片
16
8
=
2
\frac {16}{8}=2
816=2
涉及2片芯片
3.每个RAM芯片需要多少地址位
256
K
=
2
18
256K=2^{18}
256K=218
需要18位地址
4.这个存储器有多少bank(存储体)
有8个bank(芯片的行数)
5.所有存储器需要多少地址位
2
M
=
2
21
2M=2^{21}
2M=221
需要21位地址
6.如果使用高位交叉/低位交叉编址,地址28的存储单元位于什么位置
图示中每个模块只有4个地址,
256
K
×
8
R
A
M
256K\times 8RAM
256K×8RAM芯片每个模块有256个地址,每个地址18位,共0-7个模块。
所以在高位交叉中,28在Bank0(000);在低位交叉中,28在Bank4(100).(括号中的3位数用于确定是哪个模块
3
=
21
−
18
,
8
=
2
3
3=21-18,8=2^{3}
3=21−18,8=23)