Skip to main content

Temp

CPU

功能

  1. 程序控制
  2. 操作控制
  3. 时间控制
  4. 数据控制

运算器

  1. MemoryvaluelDRMemory\xrightarrow{valuel}DR
  2. DRvaluelACDR\xrightarrow{valuel}AC
  3. MemoryvaluerDRMemory\xrightarrow{valuer}DR
  4. DRvaluerALUDR\xrightarrow{valuer}ALU
  5. ALUresultPSWresultDRresultAC50if DRresultMemoryALU\xrightarrow{result}PSW\xrightarrow{result}DR\xrightarrow{result}AC\\ \hphantom{50}\text{if }DR\xrightarrow{result}Memory

功能

  1. 算术运算
  2. 逻辑运算

控制器

  1. MemoryinstructionDRinstructionIRMemory\xrightarrow{instruction}DR\xrightarrow{instruction}IR

功能

  1. 保证程序正确执行
  2. 处理异常

码制

若机器字长n=8n=8,最高位为符号位,其余位为数值位,若所表示的真值超过字长称作溢出。

定点整数范围:

(-127,+127)

定点小数范围:

(-0.9921875,+0.9921875)

DecDec原Bin
-1272551 1111111
-01281 0000000
+000 0000000
1271270 1111111

定点整数范围:

(-127,+127)

定点小数范围:

(-0.9921875,+0.9921875)

DecDec反Bin
-1271281 0000000
-02551 1111111
+000 0000000
1271270 1111111

定点整数范围:

(-128,+127)

定点小数范围:

(-1,+0.9921875)

DecDec补Bin
-1281281 0000000
-0256100000000
+000 0000000
1271270 1111111

定点整数范围:

(-128,+127)

定点小数范围:

(-1,+0.9921875)

DecDec补Bin
-12800 0000000
-0256110000000
+001 0000000
1271271 1111111

码制转换

BinDec:    Bn1...B0 Dec=i=0n1Bi2iHexDec:    Hn1...H0 Dec=i=0(n1)Hi16iBin \to Dec:\\ \space\space\space\space B_{n-1}...B_0 \space Dec=\sum_{i=0}^{n-1}B_i*2^i \\ Hex \to Dec:\\ \space\space\space\space H_{n-1}...H_0 \space Dec=\sum_{i=0}^(n-1)H_i*16^i

浮点数

阶符阶码数符尾数

一般表示

M=2EF;F=(b0b1...bn1)Et=EoffsetM=2^{E}*F; F=(b_0b_1...b_{n-1}) \\ E_t=E-offset

阶码真值Et;阶码E;尾数F\text{阶码真值}E_t \text{;}\text{阶码}E \text{;} \text{尾数}F

IEEE754

M=(1)S2EFM=(-1)^{S}2^{E}*F

if: E=0    Et=1offset    Ft[0,2n1]    M[0,1)if: E=max    Et=0    M{,+,NaN}if: 0<E<max    Et=Eoffset    Ft[20,2n+11]    M[(F2n+11),1][1,F2n+11]\text{if: } E=0 \\ \space\space\space\space \to E_t=1-offset \\ \space\space\space\space \to F_t\in[0,2^{n}-1] \\ \space\space\space\space \therefore M\in[0,1) \\ \text{if: } E=\max \\ \space\space\space\space \to E_t=0 \\ \space\space\space\space \therefore M\in\lbrace-\infty,+\infty,NaN\rbrace \\ \text{if: } 0<E<\max \\ \space\space\space\space \to E_t=E-offset \\ \space\space\space\space \to F_t\in[2^0,2^{n+1}-1] \\ \space\space\space\space \therefore M\in[-(F^{2^{n+1}-1}),-1]\cup[1,F^{2^{n+1}-1}]

数符(1)S;阶码E;尾数F\text{数符}(-1)^{S} \text{;} \text{阶码}E \text{;} \text{尾数}F

阶码真值Et;E移码;F原码\text{阶码真值}E_t ;E\to\text{移码} ; F\to\text{原码}

  • 3种形式
    • 单精度
      • M=s1eeeeeeee8pppppppppp...pppppppppp2332M=\underbrace{\overbrace{s}^{1} \overbrace{eeeeeeee}^{8} \overbrace{pppppppppp...pppppppppp}^{23}}_{32}
    • 双精度
      • M=s1eeeeeeeeeee11pppppppppp......pppppppppp5264M=\underbrace{\overbrace{s}^{1} \overbrace{eeeeeeeeeee}^{11} \overbrace{pppppppppp......pppppppppp}^{52}}_{64}
    • 扩充精度\临时浮点数
      • M=s1eeeeeeeeeeeeeee15pppppppppp.........pppppppppp6480M=\underbrace{\overbrace{s}^{1} \overbrace{eeeeeeeeeeeeeee}^{15} \overbrace{pppppppppp.........pppppppppp}^{64}}_{80}
  • 3种情况
    • E全为0 表示非规格化的值
    • E全为1 表示特殊值
    • E为1,0混合 表示规格化的值

运算

X=2iM;Y=2JMi<jX=2^i*M;Y=2^J*M \\ i<j

K=iji=i+KMx±MyK=|i-j| \\ i=i+K \\ M_x \pm M_y

校验码

奇偶校验码

Parity Codes通过在编码中增加一位,使编码中的1的个数变为奇数或偶数。 这种校验方式只能检测到有奇数位发生变化的情况,且不能知道错误的是哪位。

海明码

Hamming Code在数据位间插入k个校验位, 这种校验码可以知道出错的是那一位。 Data(Dn1...D0);Parity(Pk...P1)k<n    2k1n+kHamming(Hn+k,Hn+k1...H1)Data(D_{n-1}...D_0);Parity(P_k...P_1) \\ \exist k<n \implies 2^k-1 \ge n+k \\ \to Hamming(H_{n+k},H_{n+k-1}...H_1)

校验位

PiData,i=2i1if n=8    k=4H12H11H10H9H8H7H6H5H4H3H2H1D7D6D5D4P4D3D2D1P3D0P2P1HiHammingif HiParity    Hi=Hj+...+Hk&j+...+k=i&{Hj,...,Hk}Parity    HiPj...Pkif HjParity    Hj=dPjd0d1...\forall P_i \in Data, i=2^{i-1} \\ if \space n=8 \\ \space\space\space\space k=4 \\ \begin{matrix} H_{12} & H_{11} & H_{10} & H_9 & H_8 & H_7 & H_6 & H_5 & H_4 & H_3 & H_2 & H_1 \\ D_7 & D_6 & D_5 & D_4 & P_4 & D_3 & D_2 & D_1 & P_3 & D_0 & P_2 & P_1 \end{matrix} \\ \forall H_i \in Hamming \\ if \space H_i \notin Parity \\ \space\space\space\space H_i=H_j+...+H_k \And j+...+k=i \And \lbrace H_j,...,H_k \rbrace \in Parity \\ \space\space\space\space H_i \to P_j...P_k \\ if \space H_j \in Parity \\ \space\space\space\space H_j = \sum_{d \in P_j} d_0 \oplus d_1 \oplus ...

Hj偶校验;奇校验HjH_j \text{偶校验};\text{奇校验}\thicksim H_j

校验

G, ikGi=PidPid0d1...if (G1...Gk)=0    Passedif (G1...Gk)>0    H(Gk...G1)=^H(Gk...G1)    Passed\forall G,\space i \le k G_i=P_i \oplus \sum_{d \in P_i} d_0 \oplus d_1 \oplus ... \\ if \space (G_1...G_k)=0 \\ \space\space\space\space \to Passed \\ if \space (G_1...G_k)>0 \\ \space\space\space\space H_{(G_k...G_1)}= \text{\textasciicircum} H_{(G_k...G_1)} \\ \space\space\space\space Passed

循环冗余校验码

Cyclic Redundancy Check