HN 日本語サマリー

← 一覧へ戻る
プログラミング

ao486: 486 SXの全機能を実装したx86互換Verilogコア (2014年)

ao486: x86-compatible Verilog core implementing all features of a 486 SX (2014) (github.com)

62 pointsby csmantle9 コメント

要約

ao486は、Intel 486 SXプロセッサの全機能を実装したx86互換のVerilogハードウェア記述言語によるコアです。このプロジェクトは、Linuxカーネル3.13やWindows 95を起動できるSoC(System on Chip)も提供しており、2014年時点での開発状況やリソース使用量、ベンチマーク結果などが詳細に報告されています。

全文翻訳

ao486は、486 SXの全機能を実装したx86互換Verilogコアです。 コアはBochsソフトウェアのx86実装に基づいてモデル化され、テストされました。 486コアと共に、ao486プロジェクトはLinuxカーネルバージョン3.13およびMicrosoft Windows 95を起動できるSoCも含まれています。 現在の状況 2014年3月31日 - 初期バージョン1.0。 2014年8月19日 - driver_sdアップデート、ps2修正。 特徴 ao486プロセッサモデルは以下の特徴を持っています: パイプラインアーキテクチャ(デコード、リード、実行、ライトの4つの主要ステージ) 全ての486命令を実装 CPUID命令を含む 16 kB命令キャッシュ 16 kBライトバックデータキャッシュ 32エントリのTLB メモリおよびI/Oアクセス用のAltera Avalonインターフェース ao486 SoCは以下のコンポーネントで構成されています: ao486プロセッサ HDL SDカードドライバにリダイレクトされるIDEハードドライブ SDカードドライバにリダイレクトされるフロッピーコントローラ 8259 PIC 8237 DMA DSPおよびOPL2(FM合成は完全には動作しない)を備えたSound Blaster 2.0 WM8731オーディオコーデックにリダイレクトされるサウンド出力 8254 PIT 8042キーボードおよびマウスコントローラ RTC 標準VGA 全てのコンポーネントはAltera Qsysコンポーネントとしてモデル化されています。 Altera Qsysは全ての部品を接続し、SDRAMコントローラを提供します。 ao486プロジェクトは現在、Terasic DE2-115ボードでのみ実行されています。 リソース使用量 プロジェクトはAltera Cyclone IV E EP4CE115F29C7デバイス用に合成されています。 リソース使用率は以下の通りです: Unit Logic cells M9K memory blocks ao486 processor 36517 47 floppy 1514 2 hdd 2071 17 NIOS2 1056 3 onchip for nios2 0 32 pc_dma 848 0 pic 388 0 pit 667 0 ps2 742 2 rtc 783 1 sound 37131 29 vga 2534 260 コンパイル後のフィッターレポートは以下の通りです: Fitter Status : Successful - Sun Mar 30 21:00:13 2014 Quartus II 64-Bit Version : 13.1.0 Build 162 10/23/2013 SJ Web Edition Revision Name : soc Top-level Entity Name : soc Family : Cyclone IV E Device : EP4CE115F29C7 Timing Models : Final Total logic elements : 91,256 / 114,480 ( 80 % ) Total combinational functions : 86,811 / 114,480 ( 76 % ) Dedicated logic registers : 26,746 / 114,480 ( 23 % ) Total registers : 26865 Total pins : 108 / 529 ( 20 % ) Total virtual pins : 0 Total memory bits : 2,993,408 / 3,981,312 ( 75 % ) Embedded Multiplier 9-bit elements : 44 / 532 ( 8 % ) Total PLLs : 1 / 4 ( 25 % ) 最大周波数は39 MHzです。 プロジェクトは30 MHzのクロックを使用します。 CPUベンチマーク ao486のベンチマークには、http://www.roylongbottom.org.uk/dhrystone%20results.htm からのDosTests.zipパッケージが使用されました。 Test Result Dhryston 1 Benchmark Non-Optimised 1.00 VAX MIPS Dhryston 1 Benchmark Optimised 4.58 VAX MIPS Dhryston 2 Benchmark Non-Optimised 1.01 VAX MIPS Dhryston 2 Benchmark Optimised 3.84 VAX MIPS ソフトウェアの実行 ao486は以下のソフトウェアを正常に実行します: Microsoft MS-DOS version 6.22 Microsoft Windows for Workgroups 3.11 Microsoft Windows 95 Linux 3.13.1 BIOS ao486プロジェクトはBochsプロジェクト(http://bochs.sourceforge.net, version 2.6.2)のBIOSを使用します。 ハードドライブをサポートするためにいくつかのマイナーな変更が必要でした。 VGA BIOSはVGABIOSプロジェクト(http://www.nongnu.org/vgabios, version 0.7a)のものです。 変更は必要ありませんでした。 VGAモデルにはVBE拡張機能がないため、拡張機能は無効化されました。 NIOS2コントローラ ao486 SoCは、全てのコンポーネントの管理およびオンスクリーンディスプレイ(OSD)の内容表示のためにAltera NIOS2プロセッサを使用します。 OSDにより、ユーザーはフロッピーディスクの挿入および取り外しが可能です。 ライセンス 以下のディレクトリにある全てのファイル:rtl, ao486_tool, sim はBSDライセンスの下でライセンスされています。 以下のディレクトリにある全てのファイル:bochs486, bochsDevs はBochsプロジェクトから取得され、LGPLライセンスの下でライセンスされています。 バイナリファイル sd/fd_1_44m/fdboot.img はFreeDOSプロジェクトから取得されています。 バイナリファイル sd/bios/bochs_legacy はBochsプロジェクトからコンパイルされたBIOSです。 バイナリファイル sd/vgabios/vgabios-lgpl はvgabiosプロジェクトからコンパイルされたVGA BIOSです。 コンパイル SoC(NIOS IIマイクロコントローラを含む)をコンパイルするには、Altera Quartus IIソフトウェアが必要です。 SoCのVerilogコンポーネント、特にao486プロセッサは、任意のVerilogコンパイラでコンパイルできるはずです。 現在、合成プロジェクトファイルはAltera Quartus II用にのみ準備されています。 注意:現在のバージョンでは、一部の合成プロジェクトファイル、特にそれらのファイル内のパスが壊れている可能性があります。 ao486プロセッサ ao486プロセッサをコンパイルするには、syn/components/ao486/ao486.qpf からプロジェクトファイルをロードしてください。 SoC ao486 SoCをコンパイルするには、syn/soc/soc.qpf からプロジェクトファイルをロードしてください。 Altera Quartus IIでコンパイルする前に、Qsysシステムを生成する必要があります。 BIOS BIOSをコンパイルするには、以下を実行してください: bochs-2.6.2ソースアーカイブを展開します。 展開したディレクトリで以下を実行して、bios/bochs-2.6.2ディレクトリからのパッチを適用します: patch -p1 < (path to patch file) bochsで ./configure を実行します。 bochsで make を実行します。 cd bios BIOS-bochs-legacyというバイナリファイルがao486 SoCで動作します。 VGABIOS VGABIOSをコンパイルするには、以下を実行してください: vgabios-0.7aソースアーカイブを展開します。 展開したディレクトリで以下を実行して、bios/vgabios-0.7aディレクトリからのパッチを適用します: patch -p1 < (path to patch file) vgabiosで make を実行します。 vgabios-0.7aディレクトリにあるVGABIOS-lgpl-latest.binというバイナリファイルがao486 SoCで動作します。 Terasic DE2-115ボードでのSoCの実行 syn/soc/soc.qpf のAltera Quartus IIプロジェクトでSoCをコンパイルします。 以下の手順でNIOS IIのファームウェアをコンパイルします: Nios II Software Build Tools for Eclipseを開きます。 syn/soc/firmwareディレクトリにワークスペースを作成します。 'exe'および'exe_bsp'プロジェクトをインポートします。 'exe_bsp'プロジェクトでBSPを生成します。 'exe'プロジェクトをコンパイルします。 BIOSをコンパイルし、バイナリをsd/biosディレクトリにコピーします。 VGABIOSをコンパイルし、バイナリをsd/vgabiosディレクトリにコピーします。 ao486_toolディレクトリで 'ant jar' を実行してao486_toolをコンパイルします。 sd/hddディレクトリ内のファイルを編集します。これらのファイルには、SDカード上の仮想ハードディスクの位置が含まれています。 開始エントリは512の倍数である必要があります。 値はSDカードの先頭からのバイト数です。 ao486_toolディレクトリで 'java -cp ./dist/ao486_tool.jar ao486.SDGenerator' を実行します。 'dd if=sd.dat of=/dev/sdXXX' を使用して、ファイル ao486_tool/sd.dat をSDカードの最初のセクタにコピーします。 SDカードをTerasic DE2-115ボードに挿入します。 SOFファイルを使用してFPGAをプログラムします。 NIOS IIコントローラのファームウェアをロードして実行します。 OSDでKEY0(下)、KEY1(上)、KEY2(選択)を使用してBIOSファイルを選択します。 OSDでVGABIOSファイルを選択します。 OSDでハードドライブを選択します。 OSDでフロッピーを選択します。KEYを使用してフロッピーイメージを選択します。KEY3でキャンセルします。 フロッピーを選択するか、キャンセルを押すと、ao486が起動します。 OSDをアクティブにするにはKEY2を押します。