組み合わせ論理に基づく非フォンノむマンコンピュヌタヌ

こんにちは。 この蚘事では、 非フォン・ノむマンのコンピュヌタヌ趣味プロゞェクトに぀いお説明したす。 アヌキテクチャは機胜的なパラダむムに察応したす。プログラムは、互いに基本機胜のアプリケヌションのツリヌです。 鉄は、プログラムの動的ツリヌが投圱され、蚈算䞭にプログラムが「クロヌル」するプリミティブノヌドの均䞀な静的ネットワヌクです。





これがツリヌの仕組みです。ここでは、わかりやすくするために、組み合わせ匏ではなく算術匏を蚈算しおいたす。 図のステップはマシンの1ビヌトです。



これで、初期のプロトタむプの準備が敎いたした。タクトフリヌ゜フトりェアシミュレヌタヌの圢匏ずFPGAでの実装の圢匏の䞡方で存圚したす。



むデオロギヌ



埓来のアヌキテクチャのコンピュヌタヌは䞖界を倉えたしたが、信じられないほどの、酔わせる成長の期間は明らかに終わりたした。 䞻な制限芁因の1぀は、䞊列化を劚げるプロセッサずメモリ間のボトルネックです。 関数型プログラミングは、フォンノむマン集䞭型アヌキテクチャの制限を回避する魅力的な方法ですが、関数型アプロヌチに基づいおコンピュヌタヌアヌキテクチャを䜜成しようずする詊みは成功しおいたせん 。



しかし、時間が経぀に぀れお、マむクロ゚レクトロニクス技術は改善され、より民䞻的になりたす。 コンビナトリアルロゞックに基づいおコンピュヌタヌを䜜成しようずしおいたす。 蚈算問題は匏ずしお公匏化されたす-コンビネヌタヌ関数の盞互のアプリケヌションのツリヌ



//       (  ) 2+3 = + 2 3 = + ( +1 1 ) ( +1 1 1 ) = + ( +1 1 ) ( +1 +1 1 ) `` ``si`k`s``s`ksk ``s``s`ksk i ``s``s`ksk ``s``s`ksk i
      
      





プログラムの実行は、この匏を、答えを出す簡単な圢匏に倉換するこずず理解されたす。 システムはチュヌリング完党であり、欠点がありたす。すべおの匏を蚈算できるわけではありたせん。 組み合わせロゞックを䜿甚しお䜕かを蚈算する方法の詳现に぀いおは、 こちらずこちらをご芧ください。



建築



䞻なアむデアは、コンビネヌタを䜿甚できるセルのハヌドりェアツリヌにプログラムツリヌを配眮するこずです。

なぜハヌドりェアツリヌなのか 実際、プログラムツリヌを通垞の1次元アドレス空間に投圱するず、非ロヌカルの「長い」接続が必然的に発生したす。 ツリヌ匏のフラットレコヌドの䟋を次に瀺したす。「A * B+C * D-E」ここで、「+」は「-」のデヌタ゜ヌスですが、匏では間隔が空いおいたす。







非亀差サブツリヌは、独立しお同時に蚈算できるため、自然な䞊列性が埗られたす。 共有メモリはありたせん。デヌタはロヌカルに保存されたす。぀たり、「プロセッサ-バス-メモリ」ずいうのどはありたせん。 サブツリヌのコピヌを陀くすべおの操䜜は高速です。 前の蚘事で、このような構造のツリヌを䜿甚しお数倀を゜ヌトする方法を瀺したした。

したがっお、ある機胜から別の機胜ぞのアプリケヌションのツリヌがあり、



ここで、葉は基本関数です;組み合わせ論理の堎合、これらは基本的な組み合わせ、たずえば集合S、K、Iです。

 Ix = Ix = x -   Kxy = (Kx)y = x -   Sxyz = ((Sx)y)z = (xz)(yz) - 
      
      





ハヌドりェアツリヌのSKI








アセンブラヌの構文は、難解な関数型プログラミング蚀語unlambdaから借甚されおいたす この出版物で最埌に玄束されおいるずおり。



 `ix = Ix ``kxy = (Kx)y ```sxyz = ((Sx)y)z
      
      





この゜リュヌションにより、unlambdaむンタヌプリタヌを䜿甚しお蚈算の正確性を怜蚌できたす。

ここで、プラむム `は関数を適甚するための蚘号です。 プレフィックス衚蚘、぀たり `fx = fxが䜿甚されたす。

FGX、Y、HZ、V= `` F``GXY``HZV

この圢匏で匏がマシンの入力に送られたす。 ダりンロヌドはツリヌのルヌトを介しお行われ、倖郚デバむスはプログラムキャラクタヌをルヌトノヌドに転送し、最初のキャラクタヌはそれを取埗し、残りをその子孫に枡したす。各子孫は再垰的にダりンロヌド手順を実行したす。 サブツリヌを完党に受信するず、ノヌドはこれを祖先に報告し、プログラムの䞀郚の実行を開始したす。



䜜業䟋



たずえば、ブヌル匏"1 | 00 | 1"を蚈算したす。 組み合わせベヌスでは、これは`` `` ssk````siik`ki````sii`kikずしお衚すこずができたすはい、そのような衚珟は読むこずができたせんが、 教科曞を参照しお曞くこずができたす。 この皮のプログラムを実行した結果、マシンの状態は元の匏から単䞀のブヌル倀 「k」ずしお゚ンコヌドされた「1」たたは「ki」の圢匏の倀「0」に進化したす。 この特定の匏では、正確に「k」が埗られたす。

蚈算には116クロックサむクルかかりたす。 これらのうち、最初の67の枬定はプログラムのロヌドを継続したす。 実甚性の芳点からは、この数倀は期埅できたせんが、最適化の可胜性がありたす。たずえば、より豊富な組み合わせのセットを䜿甚するず、プログラムのサむズず実行時間の䞡方が削枛されたす。



シミュレヌタおよびFPGAバヌゞョン



説明された結果は、゜フトりェアシミュレヌタで取埗されたした。 ここで勝぀ための゜ヌスず実行可胜ファむル。 シミュレヌタヌはコン゜ヌルアプリケヌションであり、むンストヌルは䞍芁です。組み合わせ匏はコマンドラむンパラメヌタヌずしお枡されたす。

むンタラクティブモヌドのシミュレヌタりィンドりの簡単な説明




1入力プログラム

2テキストずしおのプログラムの珟圚の状態

3ハヌドりェアツリヌの完党な状態

4珟圚のノヌドのステヌタスのデコヌド



デモ付きの小さなビデオです




シミュレヌタは、verilogに実装されおいるFPGAバヌゞョンに正確に察応しおいたすが、根本的な違いが1぀ありたす。物理リ゜ヌスの制限はありたせん。 ぀たり、シミュレヌタには朜圚的に無限のツリヌがあり、そのツリヌはFPGA䞊で制限されおいたす。 63ノヌドのツリヌ、぀たり深さ6は16,000のAltera LEを占有したす。 蚈算プロセス䞭にプログラムが倧きくなるず、蚈算は倱敗したす。 ハヌドりェアバヌゞョンの唯䞀の利点は、ハヌドりェアの基本的な実珟可胜性を瀺すこずです。



蚈算に戻りたす。 それでは、算術匏2 + 1を蚈算したしょう。 これを組み合わせ論理の蚀語に翻蚳するために、教䌚番号を䜿甚したす。 匏`` `` si`k`s``s`kski``s``s`sskiを取埗したす。 意味のある䜕かを埗るために、この匏を次のように眮き換えたす ``2 + 1ki 。 これを蚈算するず、 `k`k`kiが埗られたす。文字数kは受信した回答を象城しおいたす。 蚈算には124クロックサむクルかかりたす。 しかし、 「1 + 2kiの蚈算にはすでに243サむクルかかり、 「3 + 3kiには 380サむクルありたす。 悲しいかな、すべおは非垞に遅いですが、以䞋に加速経路の抂芁を瀺したした。

䞎えられた䟋は、単玔で無条件の「厩壊する」衚珟です;実際には、そのようなタスクは䌝統的な機械によっお最もよく実行されたす。 ただし、完党なチュヌリングシステムである組み合わせロゞックを䜿甚するず、蚈算の耇雑さの問題を解決できたす。察応する匏は、蚈算の過皋で倧きくなる可胜性がありたす。 確かに、このプロパティは制埡できない成長のリスクをもたらし、プログラムを終了するこずさえありたせんが、提案されたアヌキテクチャはそのようなタスクでのみ利点を瀺すこずができたす。 ここの説明では、ルヌプず再垰が衚瀺されたすが、それらを敎理するための叀兞的な構造は固定小数点の組み合わせです。



`Yx =` x`Yx = `x`x`Yx =` x`x`x`x ...

Yx= xYx= xxxx...



実際のコンビナトリアルマシンの仮想アプリケヌション



論理的結論



䞊蚘の2぀の簡単な䟋は、ブヌル蚈算が算術よりも興味深いように芋えるこずを瀺しおいたす。マシンはオブゞェクトのサむズに非垞に敏感です。 しかし、ブヌル匏の蚈算自䜓は有望ではありたせん。タスクは、シヌケンシャルマシンであっおもO1で実行されたす。぀たり、プログラムは実行されるよりも長くロヌドされたす。

この「欠劂」は、 SATタスクを奪われおいたす。 ここでは、倉数で補足されたブヌル匏があり、匏が成立するかどうかを刀断する必芁がありたす。 これはすでにNP完党な問題です。 倉数倀の耇数のセットを同時にチェックするこずで、倧幅な加速を実珟できたす。 私が今泚目しおいるのは、このタむプのタスクです。 シンボリック蚈算や定理の自動蚌明など、予枬䞍可胜な分岐ず倧きな数の問題は興味深いものです。

理想的な問題は、最初に皮からツリヌのように成長し、できるだけ倚くの䞊列ブランチを圢成する小さな匏で定匏化する必芁がありたす。次に、ブランチからの結果を組み合わせお折り返したす。







再構成可胜なコンピュヌティング



可胜なアプリケヌションには、 再構成可胜なコンピュヌティングずいう別の領域がありたす。 これは、コンビネヌタヌではないが蚀語の倖郚で特別な意味を持぀特別なブロックで機械のアルファベットを補うずいう考え方です。 コンビナトリアルマシンは2぀のフェヌズで動䜜し、最初のフェヌズで動䜜したす。 プログラムの実行䞭に、すべおのコンビネヌタヌを蚈算する必芁があり、第2フェヌズでタヌゲット䜜業を実行する必芁な構造を圢成する特別なブロックのみが残りたす。



たずえば、論理芁玠を特別なブロックずしお䜿甚する堎合、動的FPGAを取埗できたす。芁求に応じお、必芁な定数による乗算噚、たたはパラメヌタヌ化された加算回路から蚈算されたビット深床の加算噚など、芁求に応じお動的FPGAを圢成できたす







チェルチェフスキヌ数3 + 3をコンビネヌタkおよびiに適甚したずき、䞊蚘ずほが同じこずを行いたした。コンビネヌタは蚈算プロセスで関数ずしお実行されず、結果を芖芚化するために䜿甚されたした kを単䞀ビット加算噚に眮き換えるず、蚈算が完了するたでにビット6の条件付き加算噚が埗られたす。



この朜圚的なアプリケヌションは、再構成があたり頻繁に必芁ずされない限り、パフォヌマンスをそれほど芁求したせん。



開発の方向、問題、および可胜な解決策



ノヌドの効率的な䜿甚



機胜プログラムツリヌは非垞にたばらなので、バランスの取れた静的なバむナリツリヌ䞊に眮くこずは非垞に䞍利です。 したがっお、近い将来、 セルラヌオヌトマトンの原理で動䜜する通垞のグラフ䞊に存圚するハヌドりェア動的ツリヌぞの移行。

このようなものは、巊偎が衚珟であり、右偎が仮想機噚の敷蚭です




しかし、グラフは有限であり、倚くの関数匏は無限に成長する傟向がありたす。特に掻発な実行の堎合はそうです。 これは、今埌察凊する必芁がある別の問題です。 遅延蚈算ではなく゚ネルギッシュな蚈算戊略が䜿甚されおいるため、おそらく修正する必芁がありたすが、これを行うには、実甚に近いモデルの問題を芋぀ける必芁がありたす。



コマンドシステム拡匵



ハヌドりェアで実装されたコンビネヌタヌのセットを拡匵するこずにより、最適化の面でいく぀かの利点を埗るこずができたす。珟圚、SKIの基本セットを䜿甚したす。

 Bxyz = x(yz) -    y Cxyz = xzy - , Wxy = xyy - , Yx = x(Yx) -   . (+1)nfx = f(nfx) -   
      
      







珟時点では入出力はありたせん。答えは、実行䞭に倉換されたプログラム本䜓によっお䞎えられたす。 IOを実装するこずは可胜ですが、これたでのずころ、このタスクは私の優先事項ではありたせん。



珟圚、マシンは倀枡しのパラメヌタヌを䜿甚しおいるため、実際にはほずんどの堎合、マシンはコピヌに埓事しおいるため、匕数をコピヌする必芁がありたす。 参照による転送を実装するのは魅力的です。゜フトりェアむンタヌプリタヌにずっお、このような移行の効率は桁違いに向䞊したす。 ノヌドのハヌドりェアネットワヌクでこれを実装する方法はただわかりたせんが、おおよその実甚的なタスクが衚瀺されたら、真剣にこれを行う぀もりです。



マシンの機胜を朜圚的に拡匵するもう1぀の機胜は、ハヌドりェアパタヌンマッチングです。特に、サブツリヌの同等性をチェックしたす。

プログラミングのレベルを改善するこずも優先床の高いタスクのリストに含たれおいたすが、すべおの努力はシミュレヌタヌの改善に向けられおいたす。



ラムダに぀いお



組み合わせ論理のはるかに成功した姉効は、ラムダ蚈算です。 関数型プログラミングのこのオプションの蚈算ツリヌを倉曎するこずは可胜ですか 原則ずしお、はい。 䞻な迷惑は、倉数名が無限にある可胜性があるこずです。぀たり、倉数呌び出しを1぀のハヌドりェアノヌド最終にスタックするこずはできたせん。 しかし、それは解決可胜です。 原則ずしお、より䞀般的なモデルずしおラムダ蚈算に切り替えるこずができたす。 コンビネヌタはサブツリヌ操䜜により゚レガントに投圱されるため、コンビナトリアルロゞックに決めたした。



背景



私は、10幎前にMIREA倧孊院で勉匷したずきに、䞊叞のVadim Nikolayevich Falkから機胜プログラムの専門的な蚈算機を䜜成するずいうアむデアを採甚したした。 チヌムの科孊的研究は、機胜的および機胜的論理プログラミングの分野における理論的研究に焊点を合わせたした。 特に、Falkは䞀皮の機胜的アセンブラヌであるFalgol蚀語を開発したした。 圌は、プログラムの正しさを蚌明するなど、理論的および蚈算的な目的のために自分自身を䜍眮づけたしたが、それに基づいおコンピュヌタヌを構築する詊みがありたした。



正盎に蚀っお、私は少し違うこずをしお、本圓に成功したせんでしたが、機胜的な論理コンピュヌタヌを䜜成するずいうアむデアが怍え付けられ、10幎埌にそれは芜生えたした。 この間ずっず、マむクロ回路を含む鉄を開発する䌚瀟でシステムプログラマヌずしお働いおいたので、デゞタル回路の基瀎を習埗し、問題をハヌドりェアプロトタむプに持ち蟌むこずができたした。



おわりに



プロゞェクトは進行䞭です。 いく぀かの興味深いパラダむムの機胜を組み合わせたノむマンコンピュヌタヌの背景ではなく、プロトタむプを䜜成するこずができたした。関数型プログラミング、セルオヌトマトン。 アナログは私には知られおいない。 FPGAオプションは、容量の制限によりほずんど圹に立たないが、ハヌドりェアモデルず完党に䞀臎する゜フトりェアシミュレヌタを䜿甚するず、プログラムの実行を調べるこずができたす。 珟圚の圢匏では実甚化の話はありたせんが、マシンの将来の䜿甚の目暙ずなるモデルタスクを既に探しおいたす。

結論ずしお、電子機噚の近代的な開発により、非垞に重芁なアむデアを実装できるようになりたしたが、これは骚の折れる仕事です。 ご枅聎ありがずうございたした。



参照資料



R. V. Dushkin別名darkus 「コンビネヌタヌは簡単」

デむビッド・マドア「Unlambdaプログラミング蚀語」

Unlambda蚀語むンタヌプリタヌ



All Articles