NEST

column

よくわかる CPU のアーキテクチャ

CPU をトイレに例えた、とってもわかりやすい (!?) CPU の解説

出展と補足

本文書の内容は、まるまる転載である。

その出展は、2ch の自作 PC 板[x86]CPUアーキテクチャについて語れ![RISC] スレより、 >>155-163 である。 [→ ミラー]  その後のレスでは絶賛するものの他、「破綻がない」などとされているため、その内容は正しいものと思われる。

またこの情報はそれゆけ !! だよもん星 の 07/07 の記事により知った。

最後に、本文書は非常に下品な例えにより成るもので、 そういうのが許せない、受け付けない方は Google あたりでまともな解説をお探しになる事を強くお勧めする。 あと女性にはわかりにくいかもしれない。


パイプライン

「おしっこをして手をあらってでてくる」。 トイレが一室しかないと混雑時は長蛇の列ができます。

  1. おしっこをする
  2. 手を洗う。

二段のパイプにすると、手を洗ってる間に別の人が用を足せるようになります。 トイレ一室で二人が気持ちよくなれて、効率が倍になります。

もうすこし深くしてみましょう。

  1. ジッパーを下げる
  2. ちんちんとりだす
  3. 放尿する
  4. しずくを切ってちんちんしまう。
  5. ジッパーをあげる
  6. 手を洗う
  7. 紙を使って手をふく

7ステージに分解すると、なんと 7人が同時に処理できます。 これがパイプラインです。

スーパスケーラ

トイレの利用はおしっこだけではありません。 うんこもします。どういう手順でしょうか。

  1. ジッパーを下げる
  2. ズボンとパンツを下ろす
  3. 便器に座ってふんばる(出す)
  4. 汚れた尻を拭く
  5. ズボンとパンツをあげる
  6. ジッパーを上げる
  7. 手を洗う
  8. 紙を使って手を拭く

前半と後半は同じ処理ですが、途中がおしっことは別処理です。 ということは、小便器と大便器をわけると、途中は並列に処理ができそうです。

うんちとおしっこは処理時間が異なるので、手を洗ったりする所でどっちかが待たされる事もありえますが、理想的には効率は倍になります。

これがスーパスケーラです。

スーパパイプライン

うんこする時間と、ズボンとパンツを脱ぐ時間は同じでしょうか。 いいえ、うんこする時間のほうが圧倒的に長いです。

ということは、前の人がうんこしてる間パンツを下ろす人は尻をだしたままぼ〜とまっていなくてはいけません。 かかる時間を考慮してみましょう。 括弧内は、実際に処理に必要な時間です。

  1. ジッパーを下げる(5秒)
  2. ズボンとパンツを下ろす(20秒)
  3. 便器に座ってふんばる(60秒)
  4. 汚れた尻を拭く(30秒)
  5. ズボンとパンツをあげる(20秒)
  6. ジッパーを上げる(5秒)
  7. 手を洗う(60秒)
  8. 紙を使って手を拭く(30秒)

パイプラインは、一ステージ毎タイミングを合わせて処理をします。 一番時間がかかる処理は、例では60秒ですから、トイレにはいってから出てくるまで60秒x8回、480秒の時間がかかります。

ちょっと発想を広げ、時間のかかる処理を分解してみましょう。

  1. ジッパーを下げる(5秒)
  2. ズボンとパンツを下ろす(20秒)
  3. 便器に座る(10秒)
  4. 一回目ふんばる(30秒)
  5. 二回目ふんばる(30秒)
  6. 汚れた尻を拭く(30秒)
  7. ズボンとパンツをあげる(20秒)
  8. ジッパーを上げる(5秒)
  9. 手に石鹸をつけて泡立てる(30秒)
  10. 泡を洗い流す(30秒)
  11. 紙を使って手を拭く(30秒)

ステージ数は増えてしまいましたが、1ステージにかかる時間は30秒と半分になりました。 クロックでいうと倍のクロックに出来ることになります。

トータルでかかる時間はどうでしょう。30秒x11で 330秒ですね。 前より早く処理が完了しました。しかしクロックが倍になったけどトイレにかかる時間は半分にはなりません。

これが、スーパパイプラインです。

緊急事態発生

あなたは今、これから迎えるであろう至福の時を迎える為にパンツをおろし、 あとは出すだけという所です。しかし!あろうことか神の声が轟きます。

「なにをしている、ここは女子便所だぞ」

条件判断ミスです。あなたの後ろには、つられて入って来てしまった数人の男性が、 ジッパーをさげズボンを降ろし、尻をだしたまま待っています。 しかし、ここで用を足すわけにいきません。あなたは数名の男性と共に廊下にほうりだされます。

あなたはもう一度、正しいトイレにいってジッパーを降ろす所から始めなくてはいけません。

一方女子トイレはというと、あなた達がほうりだされた事により三つの席が空いてしまいました。 ステージは規則正しく順番に進みますから、この席はもう埋まりません。 三つ分の埋まっていない席の為、女子トイレは利用されることなく無駄な時間が経過するでしょう。

その分、女子トイレの利用率は下がります。 これがハザードです。

その他の危険

トイレの危険はまだまだいっぱいあります。 トイレットペーパーが無くなったらどうでしょうか。 尻を拭くことが出来ず、それ以降のステージは凍結してしまいます。

手拭きのペーパータオルが無くなる危険もあるし、汲み取り式のトイレだと肥溜めがいっぱいになってしまう事もあるでしょう。

その度にあなたは、本来やりたかった放尿を一時中断し、紙をとってきたり汲み取ったりしないといけません。

本来は放尿や脱糞だけできればどんなに気持ちの良いことか。 そこで、トイレ掃除の人を雇って紙の補充をしてもらったり、汲み取り業者を雇って定期的に組み上げてもらいます。 お金がかかりますが知っちゃこっちゃありません。 それで本来の目的が気持ちよく遂行できるなら安いものです。

そう思うでしょう?

依存関係

トイレが汚いとあまり気持ち言いものじゃありません。 知った人が前にすましてたら、そのトイレがきれいかどうか聞いてみるといいですね。 でも、その人がトイレから出てくるまで聞けませんから、待ってる事になります。

折角11ステージにも増えて、同時に11人処理できるトイレも、入って来てくれなければ利用率は下がります。

あなたと連れが二人います。 一人がトイレに行きました。あなたともう一人の連れは入りたいけど綺麗か気になります。

この時、全体にあかる時間は

  1. 一人目の連れがトイレに入って出てくるまで 330秒。
  2. トイレがきれいか確認してあなたが入って出てくるまで更に 330秒。
  3. もう一人の連れは、あなたに続いて入れるので出てくるはあなたから30秒遅れ。

聞かずに入れば330+30+30で390秒で済む所が、トータルで690秒もかかってしまいました。

これが依存関係です。

リオーダ

そこで、トイレがきれいか同か聞かなくてもいい人を先に通してみるとどうでしょう。 どうせあなたは10ステージ分経過するまでトイレには入れないんです。

丁度バスツアーの観光バスがサービスエリアに到着しました。 あなたと、もう一人の連れとの間に並んでます。おばはんは男トイレでも気にしません。

処理時間はどれだけでしょうか。

  1. 一人目の連れがトイレに入って出てくるまで 330秒。
  2. トイレがきれいか確認してあなたが入って出てくるまで更に 330秒。
  3. あなたの後ろに並んでしまったおばはんが10人。入りきるで300秒。
  4. もう一人の連れはその30秒後にトイレに入れるので、入れるのはあなたが入ってから330秒遅れ、さらに330秒の処理時間。

あなたのグループはトータル 990秒かかります。 おばはんは、あなたが入った後にしか入れませんから、330+30で360秒後にトイレにはいって、全員がでてくるのは330秒後ですから、690秒後です。

先におばはんをいれてみたらどうなるでしょう?

  1. 一人目の連れがトイレに入って出てくるまで 330秒。
  2. 一人目が入って30秒後におばはんが入り始めて10人入るのに300秒。
  3. トイレがきれいか確認してあなたが入って出てくるまで更に 330秒。
  4. もう一人の連れは、あなたにつづいて入れるので出てくるのはあなたから30秒遅れ。

あなたのグループは、トータル690秒で済みます。 おばはんは30秒後にははいってますから、なんと360秒後には全員でてきています。

処理を入れ換えてあげると、トイレの利用率はあがり全体の処理時間が短縮されることがあります。 これがリオーダです。

いろんな工夫

大勢が素早く滞り無く気持ちよくなる工夫はいろいろあります。

トイレを二部屋用意するとか(Dualトイレ)、使用中のトイレに行列ができない ように振り分けて上げるとか(Threadコントロール)、トイレに待合室とかつくっ ておくと(Cache)、すれ違え無い程廊下が狭くてもまとめて入室させたり退室さ せれば(WriteBack)混乱は減りますね。

とここまで書いておいて、トイレを流すのを忘れていたことに気がつきました。 くさいです。ちゃんと流しましょう。


この文書の履歴

2004/07/08
初出
written by : 高梨ギンペイ