countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2016 年 8 月 18 日
X68000 LIBRARY > ソフトウェアライブラリ > 特定のハードウェア用のソフトウェア > 060turbo 関連 > 060turbo.sys > 68060を斬る!!(第4回)

68060を斬る!!(第4回)

説明

MC68060 の解説記事です。月刊電脳倶楽部 117 号(1998 年 2 月号)から 139 号(1999 年 12 月号)にかけて読み物横町で不定期連載していました。転載にあたって内容の再考証は行っていません。ご了承下さい。

68060_04.txt
────────────────────────────────────

                          68060を斬る!!

                                 第4回
                                                                鎌田誠
────────────────────────────────────

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

                       例外スタックフレームの構造

────────────────────────────────────

  例外スタックフレームの構造は、例外の種類によって異なります。また、同じ
M68000 ファミリの MPU であっても例外の種類や例外スタックフレームの構造が
異なるために、例外処理または例外処理用の命令を使うプログラムを記述する場
合は MPU の違いに注意しなければなりません。

  一般的に、M68000 ファミリの MPU の例外スタックフレームは、バスエラーの
の場合が最も複雑な構造をしています。例えば 68040 のバスエラー例外スタッ
クフレームは 30 ワード(60 バイト)もあります。しかし、68060 の場合は、
最も大きなバスエラーの例外スタックフレームでも 8 ワード(16 バイト)しか
ありません。68060 の例外スタックフレームは、M68000 ファミリの MPU の中で
最も単純な構造をしていると言ってよいでしょう。

  前回説明した通り、68060 の例外スタックフレームには幾つかのフォーマット
があります。ここでは、フォーマット毎に、その構造を解説します。ここで挙げ
る例外スタックフレームのフォーマットは 68060 固有のものであって、68000〜
68040 には当てはまらないことに注意して下さい。

━───────────────────────────────────

● 4 ワードスタックフレーム(フォーマット 0)

・例外スタックフレームフォーマット 0 の構造

            例外ハンドラ
            から見た位置               下位
                    ↓                  ↑
                        │15  12│11                   0│←ビット番号
                   SSP→┏━━━━━━━━━━━━━━━┓┌─┐
                        ┃15   SR(ステータスレジスタ)  0┃│1│
                 SSP+2→┠───────────────┨├─┤
                        ┃31 上位                     16┃│2│
                        ┠     PC(プログラムカウンタ)   ┨├─┤
                        ┃15                      下位 0┃│3│
                 SSP+6→┠───┬───────────┨├─┤
                        ┃ 0000 │ベクタオフセット      ┃│4│
                        ┃      │       (ベクタ番号×4)┃│  │
            ┌→ SSP+8→┣━━━┷━━━━━━━━━━━┫└─┘
            │          ┃例外発生前のSSPの先頭のデータ ┃
     例外発生前のSSP    ┃                              ┃
                                        ↓
                                       上位


・例外スタックフレームフォーマット 0 を生成する例外の種類と PC の内容

  ┏━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━┓
  ┃      例外の種類      │             PC が指す位置              ┃
  ┣━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━┫
  ┃割り込み              │次の命令                                ┃
  ┠───────────┼────────────────────┨
  ┃フォーマットエラー    │RTE 命令または FRESTORE 命令            ┃
  ┠───────────┼────────────────────┨
  ┃TRAP #N               │次の命令                                ┃
  ┠───────────┼────────────────────┨
  ┃不当命令              │不当命令                                ┃
  ┠───────────┼────────────────────┨
  ┃A ライン命令          │A ライン命令                            ┃
  ┠───────────┼────────────────────┨
  ┃F ライン命令          │F ライン命令                            ┃
  ┠───────────┼────────────────────┨
  ┃特権違反              │特権違反を発生させた命令の最初のワード  ┃
  ┠───────────┼────────────────────┨
  ┃浮動小数点命令実行前  │浮動小数点命令                          ┃
  ┠───────────┼────────────────────┨
  ┃未実装整数            │未実装整数命令                          ┃
  ┠───────────┼────────────────────┨
  ┃未実装実効アドレス    │未実装実効アドレスを使用した命令        ┃
  ┗━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━┛


・例外スタックフレームフォーマット 0 における RTE 命令の動作

  スーパーバイザモードで RTE 命令を実行したときスタックフレームのフォー
マットが 0 だったとき、スタックフレームから SR と PC を取り出され、SP が
8 増加します。


━───────────────────────────────────

● 6 ワードスタックフレーム(フォーマット 2)

・例外スタックフレームフォーマット 2 の構造

            例外ハンドラ
            から見た位置               下位
                    ↓                  ↑
                        │15  12│11                   0│←ビット番号
                   SSP→┏━━━━━━━━━━━━━━━┓┌─┐
                        ┃15   SR(ステータスレジスタ)  0┃│1│
                 SSP+2→┠───────────────┨├─┤
                        ┃31 上位                     16┃│2│
                        ┠     PC(プログラムカウンタ)   ┨├─┤
                        ┃15                      下位 0┃│3│
                 SSP+6→┠───┬───────────┨├─┤
                        ┃ 0010 │ベクタオフセット      ┃│4│
                        ┃      │       (ベクタ番号×4)┃│  │
                 SSP+8→┠───┴───────────┨├─┤
                        ┃31 上位                     16┃│5│
                        ┠           アドレス           ┨├─┤
                        ┃15                      下位 0┃│6│
            ┌→SSP+12→┣━━━┷━━━━━━━━━━━┫└─┘
            │          ┃例外発生前のSSPの先頭のデータ ┃
     例外発生前のSSP    ┃                              ┃
                                        ↓
                                       上位


・例外スタックフレームフォーマット 2 を生成する例外の種類と PC の内容

  ┏━━━━━━━━━━━┯━━━━━━━━┯━━━━━━━━━━━┓
  ┃      例外の種類      │ PC が指す位置  │    アドレスの内容    ┃
  ┣━━━━━━━━━━━┿━━━━━━━━┿━━━━━━━━━━━┫
  ┃CHK                   │次の命令        │例外を発生させた命令の┃
  ┃CHK2(エミュレート)    │                │アドレス              ┃
  ┃TRAPcc                │                │                      ┃
  ┃FTRAPcc(エミュレート) │                │                      ┃
  ┃TRAPV                 │                │                      ┃
  ┃トレース              │                │                      ┃
  ┃0による除算           │                │                      ┃
  ┠───────────┼────────┼───────────┨
  ┃未実装浮動小数点命令  │次の命令        │浮動小数点命令で計算さ┃
  ┃                      │                │れた実効アドレス      ┃
  ┠───────────┼────────┼───────────┨
  ┃アドレスエラー        │アドレスエラーを│分岐ターゲットアドレス┃
  ┃                      │発生させた命令  │(A0=0)                ┃
  ┗━━━━━━━━━━━┷━━━━━━━━┷━━━━━━━━━━━┛


━───────────────────────────────────

●浮動小数点命令実行後スタックフレーム(フォーマット 3)

・例外スタックフレームフォーマット 3 の構造

            例外ハンドラ
            から見た位置               下位
                    ↓                  ↑
                        │15  12│11                   0│←ビット番号
                   SSP→┏━━━━━━━━━━━━━━━┓┌─┐
                        ┃15   SR(ステータスレジスタ)  0┃│1│
                 SSP+2→┠───────────────┨├─┤
                        ┃31 上位                     16┃│2│
                        ┠     PC(プログラムカウンタ)   ┨├─┤
                        ┃15                      下位 0┃│3│
                 SSP+6→┠───┬───────────┨├─┤
                        ┃ 0011 │ベクタオフセット      ┃│4│
                        ┃      │       (ベクタ番号×4)┃│  │
                 SSP+8→┠───┴───────────┨├─┤
                        ┃31 上位                     16┃│5│
                        ┠         実効アドレス         ┨├─┤
                        ┃15                      下位 0┃│6│
            ┌→SSP+12→┣━━━┷━━━━━━━━━━━┫└─┘
            │          ┃例外発生前のSSPの先頭のデータ ┃
     例外発生前のSSP    ┃                              ┃
                                        ↓
                                       上位


・例外スタックフレームフォーマット 3 を生成する例外の種類と PC の内容

  ┏━━━━━━━━━━━┯━━━━━━━━┯━━━━━━━━━━━┓
  ┃      例外の種類      │ PC が指す位置  │  実効アドレスの内容  ┃
  ┣━━━━━━━━━━━┿━━━━━━━━┿━━━━━━━━━━━┫
  ┃浮動小数点命令実行後  │次の命令        │浮動小数点命令で計算さ┃
  ┃                      │                │れた実効アドレス      ┃
  ┗━━━━━━━━━━━┷━━━━━━━━┷━━━━━━━━━━━┛


━───────────────────────────────────

● 8 ワードスタックフレーム(フォーマット 4)

・例外スタックフレームフォーマット 4 の構造

    データまたは命令アクセスフォルトの場合

            例外ハンドラ
            から見た位置               下位
                    ↓                  ↑
                        │15  12│11                   0│←ビット番号
                   SSP→┏━━━━━━━━━━━━━━━┓┌─┐
                        ┃15   SR(ステータスレジスタ)  0┃│1│
                 SSP+2→┠───────────────┨├─┤
                        ┃31 上位                     16┃│2│
                        ┠     PC(プログラムカウンタ)   ┨├─┤
                        ┃15                      下位 0┃│3│
                 SSP+6→┠───┬───────────┨├─┤
                        ┃ 0100 │ベクタオフセット      ┃│4│
                        ┃      │       (ベクタ番号×4)┃│  │
                 SSP+8→┠───┴───────────┨├─┤
                        ┃31 上位                     16┃│5│
                        ┠       フォルトアドレス       ┨├─┤
                        ┃15                      下位 0┃│6│
                SSP+12→┠───┴───────────┨├─┤
                        ┃31 上位                     16┃│7│
                        ┠ フォルト・ステータス・ロング ┨├─┤
                        ┃15         ワード(FSLW) 下位 0┃│8│
            ┌→SSP+16→┣━━━┷━━━━━━━━━━━┫└─┘
            │          ┃例外発生前のSSPの先頭のデータ ┃
     例外発生前のSSP    ┃                              ┃
                                        ↓
                                       上位


    浮動小数点無効例外の場合

            例外ハンドラ
            から見た位置               下位
                    ↓                  ↑
                        │15  12│11                   0│←ビット番号
                   SSP→┏━━━━━━━━━━━━━━━┓┌─┐
                        ┃15   SR(ステータスレジスタ)  0┃│1│
                 SSP+2→┠───────────────┨├─┤
                        ┃31 上位                     16┃│2│
                        ┠     PC(プログラムカウンタ)   ┨├─┤
                        ┃15                      下位 0┃│3│
                 SSP+6→┠───┬───────────┨├─┤
                        ┃ 0100 │ベクタオフセット      ┃│4│
                        ┃      │       (ベクタ番号×4)┃│  │
                 SSP+8→┠───┴───────────┨├─┤
                        ┃31 上位                     16┃│5│
                        ┠         実効アドレス         ┨├─┤
                        ┃15                      下位 0┃│6│
                SSP+12→┠───┴───────────┨├─┤
                        ┃31 上位                     16┃│7│
                        ┠        命令のアドレス        ┨├─┤
                        ┃15                      下位 0┃│8│
            ┌→SSP+16→┣━━━┷━━━━━━━━━━━┫└─┘
            │          ┃例外発生前のSSPの先頭のデータ ┃
     例外発生前のSSP    ┃                              ┃
                                        ↓
                                       上位


・例外スタックフレームフォーマット 2 を生成する例外の種類と例外スタック
フレームの内容

  ┏━━━━━━━━━┯━━━┯━━━━━━━━┯━━━━━━━━━┓
  ┃    例外の種類    │PCが指│フォルトアドレス│フォルトステータス┃
  ┃                  │す位置│/実効アドレス  │ロングワード/命令┃
  ┃                  │      │                │のアドレス        ┃
  ┣━━━━━━━━━┿━━━┿━━━━━━━━┿━━━━━━━━━┫
  ┃アクセスフォルト  │後述  │フォルトアドレス│フォルト・ステータ┃
  ┃(ATC フォルトまた│      │                │ス・ロングワード  ┃
  ┃  はバスエラー)  │      │                │(後述)          ┃
  ┠─────────┼───┼────────┼─────────┨
  ┃浮動小数点禁止例外│次の命│浮動小数点命令で│浮動小数点命令のF ┃
  ┃                  │令    │計算された実効ア│ライン命令のアドレ┃
  ┃                  │      │ドレス          │ス                ┃
  ┗━━━━━━━━━┷━━━┷━━━━━━━━┷━━━━━━━━━┛


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

                            アクセスフォルト

────────────────────────────────────

  アクセスフォルト(Access Fault)はアクセスエラー例外(Access Error
Exception)とも呼ばれ、周辺回路によって検出されるバスエラー(Bus Error)
と、68060 の内部で検出される MMU エラー(ページフォルトなど)、そして、
分岐予測エラー(Branch Prediction Error)などが含まれます。

  上記のすべてのエラーで例外ベクタ 2 が使用されるため、Human の白帯では
上記のどのエラーの場合も「バスエラーが発生しました」と表示されてしまいま
すが、060turbo で「バスエラーが発生しました」と出る場合の多くは MMU で設
定したスーパーバイザプロテクトやライトプロテクトに引っかかった場合であっ
て、実際にはバスエラーは発生していないことが多いと思われます。


・リードで発生したアクセスフォルトの場合

  メモリからの読み出しでアクセスフォルトが発生したとき、例外スタックフレ
ームの PC は、その読み出しを行おうとした命令のアドレスを指しています。

  例外ハンドラで RTE 命令を実行することによってその命令がリトライされま
すが、そのとき、リードサイクルも再発行されてしまいます。そのため、特定の
I/O デバイスが存在するかどうかを判断するときは RTE 命令を使ってはいけま
せん。68060 のユーザーズマニュアルには、このような場合にリードではなくて
ライト(NOP - TEST_WRITE - NOP)を使うと RTE 命令で最後の NOP の位置に復
帰できるというようなことが書いてありますが、普通は I/O デバイスに無闇に
ライトするわけにはいかないので、リードを使って例外ハンドラから RTE 命令
ではなくてジャンプで戻ってくるべきでしょう。

  フォルトアドレスは、エラーが発生したときにメモリから読み出そうとしたア
ドレス(論理アドレス)です。ただし、命令の拡張ワードをフェッチしようとし
たときにエラーが発生した場合は、その命令の先頭のアドレスになります。


・ライトで発生したアクセスフォルトの場合

  メモリへのライトは、プッシュバッファやストアバッファを媒介するために実
際の書き込み動作がその書き込みを行おうとした命令よりも遅延して行われるこ
とがあります。そのような場合、PC は実際に書き込み動作が発生したときに実
行していた命令のアドレスを指しており、アクセスフォルト例外ハンドラ内でそ
の書き込みを行おうとした命令と実際に書き込もうとした値を特定することは困
難です。

  フォルトアドレスは、メモリに書き込もうとしてエラーが発生したときのアド
レス(論理アドレス)です。

  I/O デバイスのアクセスでアクセスフォルトが発生する可能性がある場合は、
そのアクセスをリードとライトの両方が発生する命令で行ってはいけません。


━───────────────────────────────────

●フォルト・ステータス・ロングワード(FSLW: Fault Status Long Word)

・FSLW のビット配置

│31             28   27  26  25  24│23  22   21  20   19  18        16│
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳
┃        ×       │ MA│×│LK│  RW  │  SIZE │   TT  │     TM     ┃
┗━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━┻

│15   14   13   12   11  10   9   8│ 7   6    5   4   3    2    1   0 │
┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓
┃IO│PBE│SBE│PTA│PTB│IL│PF│SP┃WP│TWE│RE│WE│TTR│BPE│×│SEE┃
┻━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━┛

×…RESERVED


・IO … 命令またはオペランド
・MA … ミスアラインアクセス

        IO MA
         0  0   ミスアラインアクセスの最初のアクセスまたはアラインアクセス
         0  1   ミスアラインアクセスの 2 番目以降のアクセス
         1  0   命令オペワードフェッチ
         1  1   拡張ワードのフェッチ

・LK … ロック転送

        LK
         0   ロック転送ではない
         1   プロセッサによるロック転送(TAS、CAS、テーブルサーチなど)
             MOVEC of BUSCR 命令でもセットされる

・RW … リードまたはライト

         RW
         00   未定義
         01   ライト
         10   リード
         11   リードモディファイライト

          RW には転送方向が入ります。リードモディファイライトは、例えば
        「ADD D0,<ea>」の実効アドレスのアクセスなどです。なお、リードモ
        ディファイライトはロック転送を含みません。

・SIZE … 転送サイズ

        SIZE
         00   ロングワード
         01   バイト
         10   ワード
         11   倍精度または MOVE16

          SIZE には、フォルトを発生させた命令のオペレーションサイズが入
        っています。キャッシュラインの充填のためのラインリードでバスエラ
        ーが発生した場合でも、このフィールドには実行しようとした命令のオ
        ペレーションサイズが入ります。
        ※ 68060 のユーザーズマニュアルの SIZE フィールドの説明は間違っ
          ています。

・TT … 転送タイプ

        TT1 TT0
         0   0   ノーマルアクセス
         0   1   MOVE16 によるアクセス
         1   0   オルタネートロジカルファンクションコードアクセス
                 デバッグアクセス
         1   1   アクノリッジアクセス, LPSTOPブロードキャスト

          TT にはフォルトアクセスの TT1-TT0 信号の内容が入っています。

・TM … 転送モディファイヤ

    ノーマルおよび MOVE16 によるアクセス(TT=00,01)の場合

        TM2 TM1 TM0
         0   0   0   データキャッシュプッシュアクセス
         0   0   1   ユーザデータアクセス
         0   1   0   ユーザコードアクセス
         0   1   1   MMU テーブルサーチデータアクセス
         1   0   0   MMU テーブルサーチコードアクセス
         1   0   1   スーパーバイザデータアクセス
         1   1   0   スーパーバイザコードアクセス
         1   1   1   予約

    オルタネートアクセス(TT=10)の場合

        TM2 TM1 TM0
         0   0   0   ロジカルファンクションコード 0
         0   0   1   デバッグアクセス
         0   1   0   (予約)
         0   1   1   ロジカルファンクションコード 3
         1   0   0   ロジカルファンクションコード 4
         1   0   1   デバッグパイプコントロールモードアクセス
         1   1   0   デバッグパイプコントロールモードアクセス
         1   1   1   ロジカルファンクションコード 7

          TM にはフォルトアクセスの TM2-TM0 信号の内容が入っています。

・PBE … プッシュバッファバスエラー

        PBE
         0   プッシュバッファライトにおけるバスエラーではない
         1   プッシュバッファライトにおけるバスエラー

          PBE=1 のときは、プッシュバッファからの書き込み中に発生したバス
        エラーによるフォルトです。

・SBE … ストアバッファバスエラー

        SBE
         0   ストアバッファライトにおけるバスエラーではない
         1   ストアバッファライトにおけるバスエラー

          SBE=1 のときは、ストアバッファからの書き込み中に発生したバスエ
        ラーによるフォルトです。

・PTA … ポインタ A フォルト

        PTA
         0   無効なルートレベルデスクリプタによるフォルトではない
         1   無効なルートレベルデスクリプタによるフォルト

          PTA=1 のときは、無効なルートデスクリプタを使用したために発生し
        たフォルトです。

・PTB … ポインタ B フォルト

        PTB
         0   無効なポインタレベルデスクリプタによるフォルトではない
         1   無効なポインタレベルデスクリプタによるフォルト

          PTB=1 のときは、無効なポインタデスクリプタを使用したために発生
        したフォルトです。

・IL … 間接レベルフォルト

        IL
         0   二重間接ページデスクリプタによるフォルトではない
         1   二重間接ページデスクリプタによるフォルト

          IL=1 のときは、間接ページデスクリプタが二重になっていたために
        発生したフォルトです。

・PF … ページフォルト

        PF
         0   無効なページデスクリプタによるフォルトではない
         1   無効なページデスクリプタによるフォルト

          PF=1 のときは、無効なページデスクリプタを使用したために発生し
        たフォルトです。

・SP … スーパーバイザプロテクト

        SP
         0   スーパーバイザプロテクトによるフォルトではない
         1   スーパーバイザプロテクトによるフォルト

          SP=1 のときは、ユーザプロセスがスーパーバイザプロテクトされた
        ページをアクセスしたために発生したフォルトです。

・WP … ライトプロテクト

        WP
         0   ライトプロテクトによるフォルトではない
         1   ライトプロテクトによるフォルト

          WP=1 のときは、ライトプロテクトされたページに対してライトアク
        セスを行ったために発生したフォルトです。

・TWE … テーブルサーチ中のバスエラー

        TWE
         0   テーブルサーチ中のバスエラーではない
         1   テーブルサーチ中のバスエラー

          TWE=1 のときは、MMU テーブルサーチのリード中またはライト中に発
        生したバスエラーによるフォルトです。

・RE … リード中のバスエラー

        RE
         0   リード中のバスエラーではない
         1   リード中のバスエラー

          RE=1 のときは、リードサイクル中に発生したバスエラーによるフォ
        ルトです。

・WE … ライト中のバスエラー

        WE
         0   ライト中のバスエラーではない
         1   ライト中のバスエラー

          WE=1 のときは、ライトサイクル中に発生したバスエラーによるフォ
        ルトです。

・TTR … TTR Hit

        TTR
         0   MMU によるアドレス変換またはデフォルトの透過変換でのアクセ
             ス中に発生したフォルト
         1   4 つの透過変換レジスタによる透過変換でのアクセス中に発生し
             たフォルト

          TTR は、アクセスに使用したアドレス変換が透過変換レジスタによる
        透過変換によるものだったかどうかを示します。

・BPE … 分岐予測エラー

        BPE
         0   分岐予測エラーによるフォルトではない
         1   分岐予測エラーによるフォルト

          BPE=1 のときは、分岐予測エラーによるフォルトです。分岐予測エラ
        ーは、命令の拡張ワードの位置で分岐キャッシュがヒットしてしまった
        ときに発生します。

・SEE … ソフトウェアエミュレーションエラー

        SEE
         0   ソフトウェアエミュレーションエラーによるフォルトではない
         1   ソフトウェアエミュレーションエラーによるフォルト

          プロセッサは SEE のビットをセットしません。このビットは、
        MC68060 ソフトウェアパッケージ(M68060SP)が使用します。


━───────────────────────────────────

●アクセスエラー例外ハンドラでの処理

  アクセスエラー例外ハンドラの先頭で、FSLW(フォルト・ステータス・ロング
ワード)の BPE(分岐予測エラー)がセットされているときは、分岐キャッシュ
をフラッシュします。

  実験では、分岐予測エラーが発生したときに、バスエラーが発生していないに
も関わらず FSLW 内のバスエラーを示すビット(WE)が同時にセットされてしま
うようです。理由はわかりませんが、もしかしたら MPU のバグかもしれません。


  アクセスエラー例外ハンドラでは、アクセスエラーの種類を調べ、エラーが発
生したプログラムに復帰できるかどうかを判断しなければなりません。以下の場
合はエラーが発生したプログラムに復帰することができないため、そのプログラ
ムの実行を中止しなければなりません。

        ・命令の実行段階よりも遅延して行われた(可能性がある)書き込みで
          発生したバスエラー

        ・1 つの命令でメモリの読み書き両方の動作があり、書き込みによって
          読み出したデータが失われるような命令の、書き込み段階で発生した
          エラー

FSLW で判断する場合は、以下のようになります。

        ・プッシュバッファバスエラー(PBE=1)

        ・ストアバッファバスエラー(SBE=1)

        ・リードモディファイライトアクセス(RW=11)で、ミスアラインアク
          セスの 2 番目以降のアクセス(IO=0,MA=1)の場合

        ・ライトアクセス(RW=01)で、該当する命令が MOVE <mem>,<mem> で、
          ソースオペランドがデスティネーションオペランドによって上書きさ
          れる場合


  MMU のプロテクション(SP=1 または WP=1)によるアクセスフォルトの場合は、
アクセスを許可するならば、アクセスエラー例外ハンドラでアドレス変換テーブ
ルを書き換えて ATC(アドレス変換キャッシュ)をフラッシュしてから RTE 命
令でリトライさせることができます。

  060turbo では、Human の領域をスーパーバイザプロテクトし、ROM の領域を
ライトプロテクトしています。


  非常駐ページ(PTA=1、PTB=1、PF=1 など)によるアクセスフォルトの場合は、
アクセスエラー例外ハンドラで物理ページをスワップインさせるなどして該当す
る論理ページを用意した上でアドレス変換テーブルを更新し、RTE 命令でリトラ
イさせることができます。

  なお、ページフォルト(TWE、PTA、PTB、IL、PF)の場合は ATC が更新されな
いので、リトライする前に ATC をフラッシュする必要はありません。

  Human 用のプログラムでページフォルトを利用したものとしては、プリンタポ
ートのアクセスにウェイトを入れる 060prnp.x などがあります。



━───────────────────────────────────

        目次

────────────────────────────────────
第1回(月刊 117 号)
  <本編>
        はじめに/パイプラインとは/パイプラインの利点/パイプラインの欠
        点/分岐予測/分岐キャッシュを用いた分岐予測/68060 のパイプライ
        ン/68060 の命令フェッチパイプライン/68060 における分岐予測/
        68060 の命令実行パイプライン
  <68060 関連の話題>
        060turbo における SIMM の効果/Motorola のホームページを覗いてみ
        よう/エラッタ/マスクセットの見分けかた/HAS060.X/060pcr5.x
━───────────────────────────────────
第2回(月刊 119 号)
  <本編>
        スーパースカラ(superscalar)/ディスパッチテスト(1)/ディス
        パッチテスト(2)/ディスパッチテスト(3)/ディスパッチテスト
        (4)/ディスパッチテスト(5)/ディスパッチテスト(6)
  <68060 関連の話題>
        XL/Image/060turbo が少し速くなったゾ/mpeg2play.x
  <68060 の命令のスーパースカラ分類表>
        スーパースカラ分類の意味/整数命令/特権命令/浮動小数点命令/参
        考文献
━───────────────────────────────────
第3回(月刊 120 号)
  <本編>
        例外処理/割り込み/例外ハンドラ/例外処理の流れ/ダブルバスフォ
        ルト/例外スタックフレーム/例外ベクタテーブル
  <質問箱>
        データキャッシュが効かない場合のメモリアクセスのクロック数/デー
        タキャッシュの有効な利用方法/SharpenHimemPatch の副作用?
  <68060 関連の話題>
        060turbo.sys v0.54/060turbo の ROM の不具合
────────────────────────────────────

(EOF)