跳到主要内容

電気通信大学 情報理工学研究科 情報学専攻 2020年8月実施 選択問題 計算機工学 4-2 計算機アーキテクチャ

Author

GPT-5.6 Sol

Description

特に断りがない限り、数値は符号なし整数とする。

問1

  1. 16 進数 (2020)16(2020)_{16} を 10 進数で書け。
  2. 10 進数 85238523 を 4 進数で書け。
  3. 16 ビットの符号付き整数を 2 の補数で表すとき、表現できる数値の最大値を 10 進数で書け。

問2

4 バイトの符号なし整数 x,y,zx,y,z について、以下の問いに答えよ。

  1. ビッグエンディアンを採用する CPU で、主記憶の 1000 番地から連続したアドレスに xx がバイト単位で格納されている。xx を 4 バイトのレジスタにロードしたところ、その値は (01234567)16(01234567)_{16} であった。1000 番地に格納されているデータを 16 進数で書け。
  2. ビッグエンディアンを採用する A 社の CPU とリトルエンディアンを採用する B 社の CPU が主記憶を共有している。1004 番地から連続したアドレスに格納された同じ 4 バイトデータを A 社と B 社の CPU がそれぞれレジスタへロードした値を y,zy,z とする。yzy-z の最大値を 16 進数で書け。

問3

命令を NN ステージで処理するパイプラインをもつ CPU を考える。各ステージの実行時間は同じ TT であり、1 クロックで 1 ステージの処理を行う。(1) から (3) ではパイプラインハザードは発生しないものとする。

  1. 1 命令の処理に必要な時間を求めよ。
  2. 1 命令当たりの平均クロックサイクル数 CPI を求めよ。
  3. 単位時間当たりに終了する命令数であるスループットを求めよ。
  4. 1 クロックサイクルで命令を処理した場合 (N=1)(N=1) の組合せ回路の最大遅延時間を aa とする。N2N\ge2 では遅延時間が各ステージへ均等に分割され、各ステージのパイプラインレジスタによる遅延のオーバーヘッドが bb である。1 ステージの処理時間を求めよ。
  5. パイプラインハザードが発生する場合を考える。5 ステージ (N=5)(N=5) であるプログラムを処理したときの CPI は 1.5 であり、N6N\ge6 ではステージ数を一つ増やすごとに CPI が 0.1 増える。a=10a=10, b=1b=1 のとき、1 命令当たりの平均処理時間を最小にするステージ数を求めよ。

题目描述

除非另有说明,所有数均为无符号整数。

第 1 题:把十六进制数 (2020)16(2020)_{16} 转为十进制;把十进制数 85238523 转为四进制;并求 16 位二进制补码有符号整数能够表示的最大十进制值。

第 2 题:对 4 字节无符号整数 x,y,zx,y,z,回答:

  1. 采用大端序的 CPU 从主存地址 1000 起按字节装入 xx 后,寄存器值为 (01234567)16(01234567)_{16},求地址 1000 处存放的十六进制字节。
  2. 采用大端序的 A 公司 CPU 与采用小端序的 B 公司 CPU 共享主存。二者从地址 1004 起装入同一组 4 字节数据所得值分别为 y,zy,z,求 yzy-z 的最大十六进制值。

第 3 题:CPU 具有 NN 级流水线,各级执行时间均为 TT,每个时钟周期完成一级。前三小问假设没有流水线冒险:求单条指令延迟、平均每指令时钟周期数 CPI,以及单位时间完成的指令数(吞吐率)。若 N=1N=1 时组合电路最大延迟为 aa,而 N2N\ge2 时延迟均分到各级且每级流水寄存器引入开销 bb,求一级的处理时间。最后考虑冒险:五级流水线的 CPI 为 1.5,N6N\ge6 后每增加一级,CPI 增加 0.1;当 a=10,b=1a=10,b=1 时,求使单条指令平均处理时间最小的级数。

考点

  • 进位制与补码表示:在十六、十、四进制之间换算,并确定固定位宽二进制补码的正数上界。
  • 大小端序:根据内存的字节排列还原寄存器数值,并优化同一字节序列在大小端解释下的数值差。
  • 流水线性能分析:由级数和级延迟计算指令延迟、CPI 与吞吐率,并计入寄存器开销和冒险导致的 CPI 增长来选择最优级数。

Kai

問1

(1)

(2020)16=2163+216=8192+32=8224.(2020)_{16}=2\cdot16^3+2\cdot16=8192+32 =\boxed{8224}.

(2)

4 の累乗で順に展開すると、

8523=246+144+143+24+3.8523 =2\cdot4^6+1\cdot4^4+1\cdot4^3+2\cdot4+3.

したがって

8523=(2011023)4.\boxed{8523=(2011023)_4}.

(3)

16 ビットの 2 の補数表現の範囲は 215-2^{15} から 21512^{15}-1 なので、最大値は

2151=32767\boxed{2^{15}-1=32767}

である。

問2

(1)

ビッグエンディアンでは最上位バイトを最小アドレスへ置く。したがってメモリ配置は

アドレス1000100110021003
データ01234567

であり、答えは

(01)16\boxed{(01)_{16}}

である。

(2)

1004 番地から順に並ぶバイトを b0,b1,b2,b3b_0,b_1,b_2,b_3 とすると、

y=224b0+216b1+28b2+b3,y=2^{24}b_0+2^{16}b_1+2^8b_2+b_3,
z=224b3+216b2+28b1+b0.z=2^{24}b_3+2^{16}b_2+2^8b_1+b_0.

よって

yz=(2241)b0+(21628)b1(21628)b2(2241)b3.y-z=(2^{24}-1)b_0+(2^{16}-2^8)b_1 -(2^{16}-2^8)b_2-(2^{24}-1)b_3.

正の係数をもつ b0,b1b_0,b_1FF、負の係数をもつ b2,b3b_2,b_300 とすれば最大になる。このとき

y=(FFFF0000)16,z=(0000FFFF)16.y=(\mathrm{FFFF0000})_{16}, \qquad z=(\mathrm{0000FFFF})_{16}.

したがって

yz=(FFFE0001)16.\boxed{y-z=(\mathrm{FFFE0001})_{16}}.

問3

(1)

1 命令は NN 個のステージを順に通るので、レイテンシは

NT\boxed{NT}

である。

(2)

mm 命令を連続して処理すると、パイプラインの充填を含むクロック数は N+m1N+m-1 である。したがって定常状態で

limmN+m1m=1\lim_{m\to\infty}\frac{N+m-1}{m} =\boxed{1}

となり、理想 CPI は 1 である。

(3)

定常状態では 1 クロックごとに 1 命令が完了し、クロック周期は TT なので、スループットは

1T\boxed{\frac1T}

命令/単位時間である。

(4)

組合せ回路の遅延 aaNN ステージへ均等に分割され、各ステージにレジスタのオーバーヘッド bb が加わる。したがって

T(N)=aN+b.\boxed{T(N)=\frac{a}{N}+b}.

(5)

N5N\ge5 に対して

CPI(N)=1.5+0.1(N5)=1+0.1N\operatorname{CPI}(N) =1.5+0.1(N-5) =1+0.1N

であり、a=10a=10, b=1b=1 より

T(N)=10N+1.T(N)=\frac{10}{N}+1.

1 命令当たりの平均処理時間は

L(N)=CPI(N)T(N)=(1+0.1N)(1+10N)=2+0.1N+10N.\begin{aligned} L(N) &=\operatorname{CPI}(N)T(N)\\ &=(1+0.1N)\left(1+\frac{10}{N}\right)\\ &=2+0.1N+\frac{10}{N}. \end{aligned}

相加相乗平均、または微分により 0.1N=10/N0.1N=10/N のとき最小となるため、

N2=100.N^2=100.

NN は正の整数かつ N5N\ge5 なので、最適なステージ数は

N=10\boxed{N=10}

である。このとき CPI=2\operatorname{CPI}=2, T=2T=2、平均処理時間は 44 である。