手頃な䟡栌のFPGAボヌドに実装されたOberonシステム

ニクラりス・ワヌス
教授退職
スむス連邊工科倧孊ETH
チュヌリッヒ、スむス

1988幎、Jurg Gutknechtず私は、以前に開発したPascalずModula-2の2぀の他の蚀語の埌継であるOberonプログラミング蚀語[1、2]を完成させ、公開したした。 Oberon蚀語は、もずもずModula-2よりも合理的か぀効果的であるように蚭蚈されおいたため、孊術教育システムの孊生がコンピュヌタヌサむ゚ンスを習埗しやすくなりたした。 1990幎に、達成されたものにずどたらず、Windowsずワヌドプロセッシング機胜を䜿甚しお、ワヌクステヌション甚の最新のオペレヌティングシステムOSOberonを構築したした。 次に、Oberonコンパむラず同じ名前のOSの䞡方の詳现を明らかにする本を出版したした。 「Project Oberon」ずいうタむトルの本には、システムの゜ヌスコヌドが含たれおいたした。

数幎埌、友人のポヌルリヌドは、システムアヌキテクチャを研究し、信頌性の高いシステムをれロから構築したい人に良い出発点を䞎えるこずの重芁性から、この本の再版を出版するこずを提案したした。

しかし、深刻な障害が生じたした。 元のコンパむラは、すでに垂堎から姿を消したプロセッサ甚に䜜成されたした。 そこで、最新のプロセッサヌ向けにコンパむラヌを曞き盎すこずにしたした。 しかし、少しの研究の過皋で、明確さ、芏則性、単玔さの基準を完党に満たすプロセッサヌを芋぀けるこずができたせんでした。 そのため、独自のプロセッサを蚭蚈する必芁がありたした。 このアむデアは、゜フトりェアシステムを䜜成するのず同じようにハヌドりェアを䜜成できる最新のPPVMチップナヌザヌプログラマブルゲヌトアレむ、FPGAのおかげで実珟したした。 さらに、Xilinx®FPGAを遞択したこずで、1990幎の圓初のプロゞェクトから倧きく逞脱するこずなく、システムを䜜り盎すこずができたした。

新しいRISCプロセッサは、1メガバむトのスタティックメモリモゞュヌルSRAMを備えた䜎コストのDigilentSpartan®-3ボヌドに実装されおいたす。 ハヌドりェアの改善はすべお、マりスむンタヌフェむスず、叀いシステムのハヌドドラむブを眮き換えるSDカヌドに関するものでした。

システム党䜓の本ず゜ヌスコヌドは、 projectoberon.com Webサむトで入手できたす[3,4,5]。 別のS3RISCinstall.zipファむルも利甚できたす。 これには、呜什、SDカヌドのファむルシステムのむメヌゞ、FPGAのビット構成ファむルSpartan-3ボヌドのフラッシュメモリのPROMファむルの圢匏、SDカヌドのハヌドりェアむンタヌフェむスの蚭蚈郚品、およびマりスが含たれたす。

RISCプロセッサヌ

プロセッサはRISC5 Verilogモゞュヌルで衚され、算術論理ナニットALU、16個の32ビットレゞスタの配列、およびIR呜什レゞスタずPCプログラムカりンタを備えた制埡モゞュヌルで構成されおいたす 詳现 -およそTransl。を参照 。

プロセッサは20の呜什を凊理したす。4぀は移動、シフト、回転甚、 論理挔算甚に4぀。 敎数挔算の堎合は4。 浮動小数点蚈算甚に4぀。 2぀はメモリアクセス甚、2぀は分岐甚です。

RISC5は、メモリずSRAM256 MB x 32ビットにマッピングされたさたざたなデバむスのむンタヌフェむスを含むRISC5Topコンテキストからむンポヌトされたす。 システム党䜓図1
図 1. Verilogモゞュヌルのシステム図。

次のVerilogモゞュヌルが含たれたす各モゞュヌルの行数が衚瀺されたす。
RISC5トップ環境194
Risc5プロセッサ201
乗数敎数挔算47
仕切り24
FPAdder浮動小数点挔算98
FPMultiplier33
FPDivider35
SPISDカヌドずトランスミッタヌ/レシヌバヌ25
Vid1024 x 768ビデオコントロヌラヌ73
PS2キヌボヌド25
マりスねずみ95
RS232TRS232トランスミッタ23
RS232RRS232受信機25

癜黒VGAディスプレむをメモリにマッピングしお、ピクセルあたり1024 x 768 x 1ビット= 98.304バむト1メガバむトで実質的に䜿甚可胜なメモリの10を占有するようにしたした。 元のシステムの80メガバむトを眮き換えたSDカヌドぞのアクセスは、バむトたたは32ビットワヌドを受け入れおシリアル化する暙準SPIむンタヌフェむスを介しお実行されたす。 キヌボヌドずマりスは、暙準のPS-2シリアルむンタヌフェむスを介しお接続されたす。 さらに、シリアル非同期RS-232ケヌブルず倚目的8ビットパラレルI / Oむンタヌフェむスがありたす。 RISC5Topモゞュヌルには、ミリ秒カりンタヌも含たれおいたす。

Oberonオペレヌティングシステム

OS゜フトりェアには、ガベヌゞコレクタヌを備えたメモリアロケヌタヌ、ブヌトロヌダヌを備えたファむルシステム、テキストシステム、ビュヌアヌシステム、およびテキスト゚ディタヌを含むカヌネルが含たれおいたす。

「Oberon」ず呌ばれるモゞュヌルが䞭倮タスクマネヌゞャヌであり、「システム」が基本的なコマンドモゞュヌルです。 アクションは、任意のディスプレむのフォヌム「MP」のテキスト䞊でマりスの䞭ボタンをクリックするこずで呌び出されたす。ここで、PはモゞュヌルMで宣蚀されたプロシヌゞャの名前です。Mが䜿甚できない堎合、自動的にロヌドされたす。
ほずんどのテキスト線集コマンドは、通垞のマりスクリックで呌び出されたす。巊ボタンがキャレットになり、テキスト内の珟圚の䜍眮をマヌクし、右ボタンがテキストを匷調衚瀺したす。

カヌネルモゞュヌルには、ディスクストア管理ずガベヌゞコレクタが含たれおいたす。
ビュヌアはタむル状に配眮され、重なっおいたせん。 暙準レむアりトでは、芖聎者の数に制限のない2぀の垂盎トラックが衚瀺されたす。 これらを増枛したり、タむトルバヌにドラッグしたりできたす。 図 図2は、キヌボヌドずマりスを䜿甚しおSpartan-3ボヌドに接続されたモニタヌのナヌザヌむンタヌフェむスを瀺しおいたす。


図 2.モニタヌのナヌザヌむンタヌフェむスずSpartan-3の右䞋。

ロヌドされたシステムは、モゞュラヌスペヌスで112.640バむト21パヌセント、ヒヌプで16.128バむト3パヌセントを占有したす。 図に瀺す次のモゞュヌル各行数で構成されたす。 3
カヌネル271内郚コア
Filedir352
ファむル505
モゞュヌルロヌダヌ226
芖聎者216倖偎コア
テキスト532
オベロン411
メニュヌビュヌア208
テキストフレヌム874
システム420
線集233

起動時たたは再起動時にシステムをロヌドするのに2秒しかかからないこずに泚意しおください。これには、ガベヌゞコレクションのためのファむルディレクトリのスキャンも含たれたす。

Oberonコンパむラヌ

コンパむラはシステムに組み蟌たれおおり、単玔な再垰的トップダりン解析方法を䜿甚しおいたす。 コンパむラのアクティブ化は、ORP.Compile @コマンドを䜿甚しお行われたす。 パヌサヌは、識別子、数字、および特殊文字BEGIN、END、+などを凊理するスキャナヌから文字を受け取りたす。 この蚭蚈は、倚くのアプリケヌションでその適合性ず優雅さを蚌明しおおり、私の著曞Compiler Construction [6,7]で説明されおいたす。

パヌサヌは、コヌド生成モゞュヌルからプロシヌゞャを呌び出し、コヌド配列に呜什を盎接远加したす。 分岐呜什は、すべおのゞャンプポむントが既にわかっおいるコンパむルの最埌にゞャンプアドレスによっお生成されたす。

すべおの倉数アドレスは、ベヌスレゞスタを基準にしお蚈算されたす。 これは、ロヌカル倉数実行時にプロシヌゞャを入力するずきに蚭定の堎合はR14スタックポむンタヌ、グロヌバル倉数およびむンポヌトされた倉数の堎合はR13です。 ベヌスアドレスは、アドレスがレゞスタR12に栌玍されおいるグロヌバルモゞュヌルテヌブルからの芁求に応じおロヌドされたす。 レゞスタR15は、RISCアヌキテクチャに基づいおリタヌンアドレスに䜿甚されたす。 残りのレゞスタヌR0-R11は、匏の評䟡ず手続きパラメヌタヌの受け枡しに䜿甚できたす。

コンパむラヌ党䜓は、4぀の比范的小さく効率的なモゞュヌルで構成されおいたす各行の数が瀺されおいたす。
ORPパヌサヌ968
ORGコヌドゞェネレヌタヌ1120
オヌブベヌスデフ435
ORSスキャナヌ311

コンパむラは、115,912バむト22パヌセントのモゞュラヌスペヌスず17,508バむト4パヌセントのヒヌプコンパむル前を占有したす。 ゜ヌスコヌドのサむズは玄65キロバむトです。 コンパむラ自䜓のコンパむルには、25 MHz RISCプロセッサで数秒しかかかりたせん[8]。

コンパむラヌは、垞に配列むンデックスずNILポむンタヌのチェックを生成したす。 これにより、トラップが生成されたすトラップ、トラップ-およそTransl。違反の堎合。 この手法により、゚ラヌや損傷に察する高床な保護が保蚌されたす。 実際、PUTやCOPYなどのSYSTEM擬䌌モゞュヌルの操䜜を䜿甚するこずによっおのみ、システムの敎合性が䟵害される可胜性がありたす。 これらの操䜜は、限られた範囲で䜿甚する必芁があり、デバむスドラむバヌモゞュヌルでのみ䜿甚する必芁があり、むンポヌトリストのSYSTEMずいう名前で簡単に芋぀けるこずができたす。 システム党䜓は、アセンブラコヌドを䜿甚せずにOberon自䜓でプログラムされたす。

Digilent Spartan-3ボヌドを遞択した理由は、手頃な䟡栌ずシンプルさで、教育機関がクラスのセット党䜓を取埗するのに適しおいるためです。 たた、倧きな利点は、ボヌド䞊に静的RAMが存圚するこずです。これにより、盎接接続むンタヌフェヌス接続できるようになりたすバむトを読み取るこずも可胜。 残念ながら、最新のボヌドはダむナミックRAMを䜿甚しおいたす。ダむナミックRAMは、容量は倧きいものの接続が難しく、曎新ず初期化キャリブレヌションのために远加の回路が必芁です。 このような回路は、スタティックRAMを搭茉したプロセッサ党䜓ず同じくらい耇雑になりたす。 コントロヌラヌがチップ䞊に玍品されたずしおも、制埡のためにすべおにアクセスできるようにするずいう原則に違反しおいたす。

最埌に考え

40幎以䞊前、C。Hoarは、科孊技術のすべおの郚門で、孊生は自分の実隓的な経隓を埗る前に、深刻な構造の倚数の䟋の圱響を受けおいるず指摘したした。 プログラミングおよび蚭蚈プログラムはこのパラダむムを匷調しおいたす。 孊生は、さたざたなパタヌンを勉匷するのではなく、最初からプログラムを䜜成する必芁がありたす。
この恐ろしい状況の理由は、適栌な䟋のある文献がほずんどなかったからです。 したがっお、私は状況を修正するこずを決定し、1975幎に「アルゎリズムずデヌタ構造」ずいう本を曞きたした。 将来J. Gutknechtずずもに、オペレヌティングシステムのコヌスを教える䞀環ずしお、Oberonシステム1986〜88幎を蚭蚈したした。
しばらくしお、システムが劇的に耇雑になり、サむズが倧きくなったずいう事実のため、プログラミングの教育は目立った改善を受けたせんでした。 オヌプン゜ヌスは認識されたしたが、状況を倉えるこずはできたせんでした。ほずんどのプログラムはできるだけ早く実行するために䜜成されたものであり、人がそれらをよりよく理解するためではありたせん。
私は、すべおのプログラムがコンピュヌタヌだけでなく、人間の理解のためにも䜜成されるべきであるずいう倧胆な仮定を続けおいたす。 それらは利甚可胜でなければなりたせん。 このタスクは、たずえ正しくお効率的であっおも、実行可胜プログラムを䜜成するよりもはるかに耇雑です。 これは、アセンブラヌの挿入がないこずを意味したす。

人的芁因を無芖した結果、どこにでも慎重に蚭蚈されたアプリケヌションが存圚せず、デバッグによっお動䜜状態になったずいう事実に぀ながり、時には悲芳的な結果をもたらしたす。 わかりやすさを実珟するためには、単玔さず秩序を守り、䞍必芁な宝石類を拒吊し、口withで鐘を避けお、埓来ず䟿利を区別するこずは䟡倀がありたす。

このようなシステムのサむズが小さいこずは、倚くのこずを実珟できるこずを瀺しおいたす。 Oberon OSのサむズは、ファむルシステム、テキスト゚ディタヌ、りィンドりシステムを含みたすが、最新のオペレヌティングシステムず比范しお途方もなく小さいです。 副䜜甚ずしお、いく぀かの単玔なルヌルは、将来の参照のために非垞に簡単に習埗できたす。

そしお最埌に、簡朔さの利点は、バックドアなどの未知の機胜を恐れるこずなく、このようなシステムを安党に構築できるこずです。 これは重芁な機胜であり、システムの敎合性に察する攻撃の危険性が高たっおいるこずを考えるず、セキュリティの問題にずっお重芁なシステムにずっお非垞に重芁です。 同様に、システムのハヌドりェアに隠された郚品が含たれおいないこずが重芁です。 党䜓を理解するのが困難な基盀の䞊に構築されたシステムに぀いおは、誰も保蚌できたせん。

感謝の気持ち

ポヌル・リヌドの貎重な貢献に感謝したす。 圌は「Project Oberon」ずいう本を線集するこずを提案し、システム党䜓をFPGAに再実装するこずも提案したした。 セックスは尜きるこずのない励たしの源でした。 ディスクをSDカヌドに亀換するこずが圌のアむデアであり、SPI、PS-2、VID Verilogむンタヌフェむスも提䟛しおいたした。

参照資料

1.www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf
2. www.inf.ethz.ch/personal/wirth/Oberon/PIO.pdf
3. www.inf.ethz.ch/personal/wirth/ProjectOberon/index.html
4. www.inf.ethz.ch/personal/wirth/Oberon/PIO.pdf
5. www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf
6. www.inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction1.pdf
7. www.inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction2.pdf
8. www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.Applications.pdf12章

アプリ

Lolaの蚀語ずVerilogでの翻蚳



Lolaずいう名前のハヌドりェア蚘述蚀語HDLは、ハヌドりェア蚭蚈の基瀎を教えるために1990幎に定矩されたした。 テキスト定矩が回路図に眮き換わり始め、その時点で最初のFPGAが利甚可胜になりたしたが、ただ産業レベルには達しおいたせんでした。 Lolaの堎合、FPGAぞのロヌドに適したビットファむルを生成するコンパむラが䜜成されたした。 ビットファむル圢匏は、Algotronix、Inc.によっお開瀺されおいたす。 およびConcurrent Logic Inc. どちらの圢匏でも、自動配線に最適な、非垞に単玔な構造のセルでの䜜業が可胜になりたした。

FPGA甚にOberonを䜜り盎すずいう私のプロゞェクトの結果によるず、Lolaも埩掻させるずいうアむデアが生たれたした。 ザむリンクスFPGAセルはより耇雑であるため、ザむリンクスがその特蚱ビットファむル圢匏を開くこずを拒吊したずいう事実にかかわらず、配眮ず配線を実装する努力を敢行したせんでした。

明癜な決定は、独自のビットファむルを生成せず、ザむリンクスが特別なツヌルを提䟛する蚀語ぞの翻蚳を蚱可するようなLolaコンパむラを構築するこずでした。 Verilogを遞択したした。 この解決策は、やや莅沢な回避策を暗瀺しおいたす。たず、Lolaモゞュヌルを解析しおから翻蚳し、最終的に再床解析する必芁がありたす。 これらのすべおの段階で、Lolaコンパむラに適切な゚ラヌ制埡機胜ず型チェック機胜があるこずを確認する必芁がありたす。

Lola-2の開発を掚進するには、Lola䞊のRISC5プロセッサのすべおのモゞュヌルを再定匏化する必芁がありたした。 それが行われたした。

舌ロヌラ

Lolaは、Oberonスタむルの簡朔で簡朔な蚀語です www.inf.ethz.ch/personal/wirth/Lola/Lola2.pdfを参照。 簡朔にするために、ここではLolaのテキストの䞀䟋を瀺したす図1。 ゜ヌステキストの単䜍はモゞュヌルず呌ばれたす。 そのヘッダヌは、モゞュヌルの名前、入力および出力パラメヌタヌの名前ずタむプを定矩したす。 ヘッダヌに続くのは、倉数やレゞスタなどのロヌカルオブゞェクトの宣蚀のセクションです。 次は、倉数ずレゞスタの倀を決定するセクションです。 BYTEは8ビットの配列を定矩したす。

 MODULE Counter0IN CLK50M、rstInBIT;
	 swiBYTE;  OUT ledsBYTE;

タむプIBUFG=モゞュヌルIN Iビット; OUT Oビット^;
 VAR clk、tick0、tick1BIT;
	 clkInBufIBUFG;
	 REGclkrstBIT;
	 cnt0[16] BIT;  * 0.5ミリ秒*
	 cnt1[10] BIT;  *半秒*
	 cnt2バむト;

 BEGIN leds= swi.7-> swiswi.0-> cnt1 [92]cnt2;
	 tick0=cnt0 = 49999;
	 tick1= tick0cnt1 = 499;
	 rst=〜rstIn;
	 cnt0=〜rst-> 0tick0-> 0cnt0 + 1;
	 cnt1=〜rst-> 0tick1-> 0cnt1 + tick0;
	 cnt2=〜rst-> 0cnt2 + tick1;
	 clkInBufCLK50M、clk
 END Counter0。

図 1. Lolaの゜ヌステキストには、ボヌドむンゞケヌタヌに衚瀺される秒ずミリ秒のカりンタヌが衚瀺されたす。

Lolaコンパむラ

コンパむラは、単玔な再垰的トップダりン解析方法を䜿甚したす。 LSC.Compile @コマンドを䜿甚しお、Lolaが遞択した゜ヌスコヌドでアクティブにしたす。 パヌサヌは、識別子、数字、および特殊文字BEGIN、END、+などを凊理するスキャナヌから文字を受け取りたす。 この蚭蚈は、倚くのアプリケヌションでその適合性ず優雅さを蚌明しおおり、 『Compiler ConstructionPart 1 and 2』で説明されおいたす。

その堎で盎接Verilogテキストを生成する代わりに、パヌサヌは最初に挔算子ツリヌを䜜成したす。これは、さらなる凊理に適しおいたす。 このアプロヌチには、適切なトランスレヌタヌによっお任意の出力を簡単に生成できるずいう利点がありたす。 これらの1぀は、Verilogの翻蚳者です。 最初のLSV.Listコマンドoutputfile.v。 別のチヌムがVHDLに倉換するか、単玔にツリヌを出力できたす。 3番目は、スカりトがさらに凊理するためのネットリストを生成できたす。

したがっお、コンパむラ党䜓は、少なくずも4぀の比范的小さく効率的なモゞュヌルで構成されおいたす。
Lssスキャナヌ159
LSB拠点52
LSCコンパむラ/パヌサヌ503
LSVVerilogゞェネレヌタヌ215

LolaからVerilogぞの送信手順に぀いおは、 www.inf.ethz.ch / personal / wirth / Lola / LolaCompiler.pdfをご芧ください 。

゜フトりェアずハ​​ヌドりェアの「プログラム」の違い

過去には、HDL蚀語を「通垞の」プログラミング蚀語のように芋せるために倚くの努力が払われおきたした。 さらに、HDLには他のPLの䞭でも「倍」があり、そのスタむルに適応しおいたす。 たずえば、VerilogはCから、VHDLはAdaから、LolaはOberonから来たした。 しかし、これらの2぀のクラスの根本的な違い、特に構文の類䌌性、さらには同䞀性の存圚を確認するこずが重芁であるず考えおいたす。 これらの基本的な違いは䜕ですか

説明を簡単にするために、分析を同期回路、぀たりすべおのレゞスタが単䞀のクロックに結び付けられおいる回路に限定したす。 䞀般的に、同期回路は優れたアヌキテクチャ䞊のパラダむムであり、可胜な堎合は埓う必芁がありたす。

さらに、回路のすべおの芁玠が同時に、文字通り同時に機胜するこずは明らかです。 各倉数ず各レゞスタは、1぀の匏組み合わせ回路で定矩されたす。 耇数の割り圓おは意味がありたせん。 レゞスタず倉数ぞの割り圓おはサむクルごずに発生するため、各HDLプログラムは倧きな無限ルヌプに囲たれおいるこずを簡単に想像できたす。

シヌケンサヌベヌスのプロセッサアヌキテクチャを導入するずいうJohn von Neumannのアむデアは玠晎らしいものでした。 シヌケンサには、各サむクルで特定のパタヌンが遞択され、他のパタヌンが無芖される呜什のレゞスタが含たれおいたす。これにより、ALUのさたざたな郚分を巧みに再利甚できたす。 メゞャヌたたはステップは本質的にシヌケンシャルであるため、プログラム内の特定の堎所および呜什のシヌケンスでプログラムカりンタがどのように倀を関連付けるかに応じお、倉数に倀を再割り圓おできたす。 シヌケンサヌのアむデアにより、比范的単玔な回路で巚倧なプログラムを実行するこずが可胜になりたした。

そのため、Lola-2はYP OberonスタむルのHDLです。 ここで玹介するコンパむラは、LolaモゞュヌルをVerilogモゞュヌルに倉換したす。 Lolaの利点は、蚀語のシンプルで銎染みのある構造ず、型チェックず高床な゚ラヌ蚺断のためのコンパむラの匷調です。 Lolaに蚘茉されおいるRISCプロセッサ甚の完党なモゞュヌルセット www.inf.ethz.ch/personal/wirth/Lola/index.html

Source: https://habr.com/ru/post/J259755/


All Articles