正誤表

「致命傷」というべきバグは以下の通りです。 すいません。

パルテノン/SFLのインストールについては、 テキスト中のp.5のhtmlからだと現在アクセスが できなくなっております。こちらからどうぞ。 NTT PARTHENON のページ をご覧下さい。

  • 3章p.29の例題3.1の解説がおかしいです。 「最初のコマンド(000)でA入力(101)が直接スルーされてaccにセットされる。 次のコマンド(110)で、セットされたaccのデータとA入力が加算され…」とありますが、 「最初のコマンド(001)でB入力(101)が直接スルーされてaccにセットされる。 次のコマンド(110)で、セットされたaccのデータとB入力が加算され…」の 誤りです。
  • 3章p.34 図3.2, p.37 図3.3で、aluの出力がMemoryのdiに繋がれていますが、これは誤りで、 本来、accの出力であるaccoutを接続する必要があります。また、ここでadrと書いて あるのは、addrの誤りです。
  • 3章p.39の下から9行目の、hold enableはhold rstが正しいです。
  • 3章p.40の上から3行目、ST命令によって格納されるのが、3番地と 書いてありますが、10番地が正しいです。
  • 4章の表4.3(p.50)および表4.4 (p.51) NOT命令のdが抜けています。 NOT d,sと表記するのが正しいです。
  • 4章の表4.3(p.50),表4.4 (p.51), 表5.6 (p.81)で、Add, Subの英語解説部のsとdの位置が 逆です。
  • 4章の表4.6(p.54)のLD rd,-(rs)の解説が、「プリポストデクリメント付き」に なっていますが、正しくは、「プリデクリメント付き」です。
  • 4章の表4.7(p.55)のXORI 命令がなぜかOR Immediateになっていますが、 これはEx-Or immediateの誤りです。
  • 4章のp.58のmem20の実行結果がおかしいです。 01 23 45 67 46 8a uu uuではなく、01 23 45 68 46 8b uu uuです。
  • p.60の図4.3でpcからaddressに到る線が描かれていないですが、命令 フェッチ時に直接アクセスするため必要です。
  • p.64のSFL記述の17行目、 「 addr2 == 0b111:」 は、 「 addr1 == 0b111: 」です。書き込みは全てaddr1から行われます。
  • 5章の表5.1, 表5.2, 表5.3, 表5.5: pc <- pc-2+X と書いてありますが、 pc<-(現在実行の命令番地)+2+X(あるいは、pc+X)の間違いです。 p.75の3行目も(現在実行の命令の番地)+2(pc+2)の間違いです。つまり、 pcはIFの所で先に進めてしまっているので、現在実行の命令の番地+2が 基準になります。
  • 5章のp.73 3行目 「IFステージで既に+2している」とありますが、 「RFステージで既に+2している」の誤りです。ちなみにパイプライン化した 後は、IFステージで+2するようになります。
  • 5章のp.74 12行目 BPLのsfl記述の条件設定が間違っています。 ^reg<15>: pc := dbus; が正しいです(今のままだとBMIと同じです)。 ちなみに、この実装だとレジスタの値0でも分岐します。プラスなんだから 0では分岐しない方が良い、と思う方はそれでもOKだと思います。 この場合、条件を変更して下さい。
  • 5章のp.81 表5.6にANDIが上位は1にすると書いてありますが、ここでの実装では、 論理演算は全て、上位8bitは0になるようにしています。ANDIの場合、 どちらにするか迷う所ですが、とにかく実装と一致しないので この記述は間違っています。
  • p.86の24行目付近、 「たデータをdregに格納する。そしてselが0でreadされた場合は、 格納されたデータ自体を出力し、selが1でreadした場合は」 は、 「たデータをdregに格納する。そして selが1で readされた場合は、 格納されたデータ自体を出力し、 selが0 でreadした場合は」です。0の方がFlag, 1がdataです。
  • 8.1.1の図8.1(p.105)ですが、オンチップキャッシュ、オンボードキャッシュ、 メインメモリのアクセスクロック数に-が抜けて不自然な値になっています。本当は、 オンチップは1-5 clock, オンボードは5-50 clock, メインメモリは10-100 clockと とするつもりでした。 もちろん、この数値は目安に過ぎません。
  • p.120の8.3.5 キャッシュの性能評価について問題があります。この部分は、間違い ではないのですが、残念ながらここまで設計してきたキャッシュはこの式にあて はまりません。これはキャッシュがWrite ミスするとCWWAIT状態に遷移し、直後の 命令フェッチのReadヒットが受け付けられなくためです。つまり、このテキストで 設計したキャッシュは全てのWriteでペナルティを食ってしまい、PWM=1となります。 この設計を修正するには、メインメモリ制御部を分離する必要があり、かなり 面倒になります。
  • p.145のrfステージ中でelse: fregb = REG.dcout2; }は else: reg_b := REG.dcout2; }の誤りです。
  • p.146の下から7行目 パイプラインに投入されてしまう(clock: 11)と ありますが、これは(clock: 7)が正しいです。
  • p.166の9行目 BPLの条件がreg1<15>になっているが^reg1<15>の間違い
  • あとは、ちょっとした問題点です。

  • 表紙折り返しPARTHNONになっていますが、PARTHENONの間違いです。
  • p.13の下から8行目、「add4.sflにというファイル…」という文がありますが、 「に」を取って下さい。
  • p.37の図3.3のadrはaddrが適切です。
  • p.46 2行目「ポインタが使えばない」は「ポインタが使えない」です。
  • 4章の表4.3(p.50)、表4.4(p.51)などの命令の表記中にカンマ(,)があったり なかったりして不統一です。付ける方向に統一しようと思います。
  • p.49 下から2行目:R0-R7 なぜかここだけ大文字になっていて変
  • p.54の2行目 「 LD r1, (r2,r3)と記述とr2+r3で示す」 は、 「 LD r1, (r2,r3)と記述するとr2+r3で示す」です。
  • p.55 図4.4 : bit順を示す番号がa)は6、b)は1,9が入っていてなんだか 不規則
  • p.59 R0-R7,IR,MAR,MDRが、ここもなぜか大文字になっています。一応、命令の オペコード、状態名は大文字、レジスタ等は小文字に統一したつもりでしたが、 目が行き届かなかった部分があるようです。p.81 表5.6のJALRもなぜかここだけ R7が大文字になっていますが、これも小文字にした方がよかったです。
  • p.86の下から3行目のプログラムのコメント,p.88プログラムの下から6行目、 p.93のプログラムの下から3行目が同様のミスで、 「# ST r5,(r3)」 は、 「# ST (r5),r3」 です。
  • p.88のプログラムは、0x30を引く前に、メモリに格納してしまっているので、 題意から考えてちょっと、不自然です(メモリに格納するデータに 関しては規定はないですが、、)。 SUBI r3,#0x30をLD命令の前に移動するのが良いと思います。
  • p.97の6行目 「して用いることにより、最適化を結果を」 は、 「して用いることにより、最適化の結果を」
  • p.100の下から8行目 「が判断することが難しい」 は、 「か判断することが難しい」
  • p.102の下から2行目 「往々にしてCPU、クロック周期を」 は、 「往々にしてCPI、クロック周期を」
  • p.202の表で左bitシフトの行がだぶっている。
  • p.106の下から11行目 「リフレッシュ操作が必要が必要で」 は、 「リフレッシュ操作が必要で」
  • p.108の下から6行目 「 この方法では、キャッシュ中の格納される」 は、 「 この方法では、キャッシュ中に格納される」
  • p.113の図8.5中の cmemok の点線はPICO向きの矢印に、cpuwdとcpuadr の位置が逆
  • p.116の16行目tadr は、tagの間違い
  • p.117の14行目 「cmemokをtmweを出力する」 は、 「cmemokとtmweを出力する」
  • p.120の15行目 「コンフリクミスが生じ、」 は、 「コンフリクトミスが生じ、」
  • p.129の図9.2 ddatainとddataoutの位置が逆。 p.139の図9.7、p.151の図9.12、右側のddataoutも同じ。
  • p.137の13行目 「instruct en par { alt{ 」 は、 「instruct enable par { alt{ 」
  • p.145の3行目 「読んでが0かどうか」 は、 「読んで0かどうか」
  • p.205のLB d (s)の解説 「sで示す中身dの下位8bitに格納」 は、 「sで示す中身をdの下位8bitに格納」
  • ここに掲載されていない間違いを発見された方は、こちらまでメールをお願い致し ます。

    畠山剛さま、河野賢一さま、田中 旭さま、吉見 真聡さま、 松谷 宏紀さま、枚田優人さま、松澤 拓人さま、 ご指摘いただきありがとうございました。


    戻る
    天野 英晴
    Last modified: Tue Jul 14 14:35:50 JST 1998