060turbo と MC68060 のバグ(errata)

MC(XC)68060の機能による分類(「WIKIPEDIA」より)
68060  フルスペック版(以降FL版)    MMUFPU内蔵
68LC060 Low Cost版(以降LC版)     MMU内蔵、FPUなし
68EC060 Embedded Controller(以降EC版) MMU、FPUなし

リビジョン(rev)
 性能を向上させたりバグ(errata)を修正した場合に数字が変わっている。SI(システム情報表示ソフト)等で確認可能。”XEiJ”のROMの場合はBIOS画面にも表示される。
 si_rev6 xeij_rev6
参考:060turbo 用 ROMの作成 (XEiJ フルパッチ)

遭遇したrev1のバグ(errata)によると思われる不具合
その1:128MBのSIMMが使えない(かも)
 060turboに128MBのSIMMを使用した場合、Human68kのメモリ容量を確認するコマンド”memfree”でエラーが頻発して場合によってはフリーズしてしまいました。”かも”としたのはrev1 + 128MBのSIMMの組み合わせでは簡単な動作確認しただけで”memfree”以外での動作に影響があるかは不明なためです。
 rev1 + 32MBのSIMMでは”memfree”でエラーは発生せず今までのところHuman68kで動作するソフト(ゲームやユーティリティ)等でエラーが発生するなどは特に無かったです。
 “rev4(LC版)””rev5/rev6(FL版)”では128MBのSIMMでも”memfree”でエラーは発生しません。
 128MB_err

その2:NetBSD/x68kが起動できない。
 これは 32MBのSIMMでも起動できませんでした。起動途中にエラーが発生、デバッガが表示され止まってしまいます(画像左、中)。
 “rev5/rev6(FL版)”では正常起動します(画像右)。”rev4(LC版)”は試していません。
※NetBSD/x68kは060のFL版専用だと思っていて”rev4(LC版)”は試していません。このブログを書くにあたりサイトを確認したらMMUがあるLC版でも大丈夫そう?
 netbsd_err1 netbsd_err3 netbsd_ok

経緯
 68060のバグを疑うきっかけになったのは128MBのSIMMを入手したことでした。128MBのSIMMを使った場合”memfree”をするとエラー表示が出ることが頻発、最初は容量が大きいため?とか、相性?とかでそう言うこともあるのか??と思ったのですがどうもそうではなさそうだと教えてもらい いろいろ(ドライバ外したりとか)試していたところrev4(LC版)ではエラーが出ないことに気付きました。
 このとき 所有している68060はFL版のrev1と、LC版のrev4の2種類だけでした。LC版だとエラーにならないと言う可能性もありますがFL版とLC版の違いはFPUの有無なのでメモリ容量の確認では違いはなさそう?
 初期の68060にはバグが多いとの記述をどこかで見たのを思い出し検索したところ68060のバグ(errata)についての記述を見つけました。
X68000 LIBRARY        http://retropc.net/x68000/
 (1.ソフトフェアライブラリ”特定のハードウェア用のソフトフェア”
       –> 2.060turbo 関連“060turbo.sys” –> 追加情報1. “68060を斬る!!(第1回)”)
errata”と言う単語をこのサイトで知り検索すると 68060の”errata”についてのドキュメントを見つけました。
Retronik            http://marc.retronik.fr/index.php
 ("Motorola 68K documentation” –> “68040/68060” –> “MC68060 Errata [Motorola 1996 12p]”)

エラッタ一覧表(「MC68060 Errata」より)
 errata
 rev1と次のリリースでのエラッタの数の違いは1つだけで 多数あるエラッタのうち この1つだけ修正してリリースしなければいけないほど致命的だった(?)と推測されます。ドキュメントにはエラッタについて情報が載っていますが理解はできていません・・・

 そんな頃、運良く”rev5”と”rev6”のFL版の68060が入手できた(到着した)ので確認してみたら”memfree”でエラーは発生しませんでした。
※運良く –> 参考:「MC68060 と偽物(FAKE) と返品・返金
 これはもしかして!?とずっとエラーのため起動できずに悩まされていたNetBSDをrev5/rev6で試したところ こちらも問題なくあっさり起動できました。

 と言うことで実際には(“errata”の)ドキュメントを理解してデバッグ等で確認したわけではありませんのでホントのところは判りません。手持ちのrev1が不良品の可能性もあります。rev1を持っている方で動作を確認した方がいたら教えてもらえたら嬉しいです。

と、ブログを書いている時にrev1だけどSIMM128MBの”memfree”でエラーは発生しないとの情報を頂きました。
68060を斬る!!(第1回)」の記述の中に”故意に発生させようとしても挙動が確認できないエラッタもありました。”とありますし 同じリビジョンでも種類があるのかもしれません。

更に、長年NetBSDが動かせず不思議に思っていたと言う方が今回の件で68060のリビジョンを確認したらrev1でしたとの報告をtwitterで頂きました。

コメント