Pdp-11-at-tnmoc
写真: Loz Pycock / CC BY-SA 2.0 / Wikimedia Commons

ChatGPTを使い、PDP-11向けRAMボードを設計

元Microsoft技術者のDave Plummer氏が、1970年代のコンピューター「PDP-11」向けに4MBのRAMボードを自作しました。ChatGPTとオンライン回路シミュレーターEasyEDAを使い、回路を設計しています。

ボードはQ-Busに接続する独立したカードとして設計されました。PDP-11のバックプレーンに取り付け、M8190 CPUを載せた別のボードとともに動作を試しています。

メモリー制御にはLattice MachXO2 FPGAを使い、ISSI製の1MBメモリーチップを4個搭載しました。I/O用チップやDIPスイッチ、通信ポートなども組み合わせています。

16ビット語とバイト選択の処理

PDP-11/40は、8ビットのバイト2つで構成される16ビット語を扱い、語単位とバイト単位の処理に対応します。Plummer氏のボードでは、メモリー制御回路がこのデータ形式に合わせて読み書きを処理する必要がありました。

CPUはメモリーから語を読み出し、その中から必要なバイトを選びます。一方、書き込みではアドレスの最下位ビットが語の上位・下位どちらのバイトを更新するかを示すため、制御回路は対象のバイトだけを書き換える必要があります。

当初、Plummer氏はこのバイト選択の扱いを把握しておらず、4MB分のメモリーを用意しても、読み出しが語単位で飛ぶ問題が指摘されました。

PDP-11のメモリー構成

PDP-11/40では、16ビット語を32K個、または8ビットバイトを64K個アドレス指定できます。

PDP-11の後期モデルには、物理アドレス空間を拡張するメモリー管理機能を備えたものがあり、最大4MBのRAMを扱える構成もありました。S0のボードは22ビットのバスを持ち、上位256KBをI/OとROM用に予約するM8190の設計に合わせています。

QBoneを使うメモリーエミュレーション

PDP-11のQ-Busを現代のLinux環境につなぐ別の方式として、QBoneがあります。QBoneはQ-Busに接続するブリッジで、オンボードのBeagleBone Blackから機器のエミュレーションを行います。

QBoneにはQBUS22で4MBのメモリーをエミュレートする機能があります。FPGAと実メモリーチップを載せたPlummer氏のボードに対し、QBoneはLinux搭載ボードを介してQ-Bus上のメモリー機能を実現します。

QBoneではBeagleBone BlackのPRUというリアルタイムI/Oプロセッサーも使われ、Q-Busの信号処理を担います。Plummer氏も以前、BeagleBone Blackを載せたQBoneを使ってPDP-11のバスに接続する方式を試していました。