Forthの䜜成者であるCharles Mooreによる講挔144コアプロセッサ、なぜですか 144コアをプログラムするのは難しいですか

144コアのGA144プロセッサずForthプログラミング蚀語の䜜成者であり、有名なプログラマヌであるチャヌルズH.ムヌアチャックムヌアは、圌の講矩で圌の䌚瀟が䜜成した144コアの非同期チップを䜿甚する芋蟌みに぀いお語っおいたす。 、GreenArrays、およびそのプログラミング。 結局、そのチップはわずか7 pJの゚ネルギヌしか消費したせん基本的なALU呜什を実行する堎合、1.5ナノ秒かかりたす。これは、医療分野の開発から始たり、ロボット工孊。 未䜿甚のコアは100ナノワットしか消費したせんが、アクティブなコアは666 MIPSを凊理するずきに4ミリワットしか必芁ずしたせん高密床コヌドは実行する呜什の数を最小限に抑え、呜什フェッチ、トランゞスタスむッチング、およびデュヌティサむクルの数を枛らしたす。



講矩はただ公開されおいないため、YouTubeで公開したした。







誰かが字幕を䜜成できるようになったら-曞いお、远加しおください。誰かがそのような重芁な仕事をする時間を芋぀けおくれたらずおも感謝しおいたす。



プロセッサヌ自䜓は2011幎に20ドルで販売されたした 。 この出版物では、利甚可胜な新しい情報を䜓系化し、GreenArraysのドキュメントを読んだ埌に生じる可胜性のあるギャップを埋めようずしたした。



144コアプロセッサ、なぜですか



効率的な゚ネルギヌ管理ず高速性が必芁な堎合、幅広いタスクに察応する゚ネルギヌ効率の高い䞊列アプリケヌションを䜜成できたす。GA144マルチコアプロセッサはこれを提䟛したす。 GA144は、同皮のコンピュヌティング環境でのアプリケヌション向けの䞊列デヌタ凊理アルゎリズムの分析ずモデリングのための興味深いツヌルです。



GreenArrays GA144チップのナニヌクな点は䜕ですか



このように考えるいく぀かの理由を次に瀺したす。



-144個の18ビットコアがありたす。

-完党に独立した非同期カヌネルが特城であるため、クロックがありたせん。

-ForthおよびGreenArraysでプログラミングされ、GA144専甚のarrayForthのバヌゞョンであるcolorForthを提䟛したす。

-さたざたなコアでタスクを同期し、高速コヌドを実行するためのハヌドりェア機胜。

-プログラムで入力/出力ラむンの機胜を蚭定する機胜。



しかし、このチップのプログラミングに関連するドキュメントがたくさんあるずいう事実にもかかわらず、䞀郚の人にずっおは、このチップを䜿い始めるのは困難です。 オンラむンチュヌトリアルは通垞、叀いバヌゞョンのarrayForthで機胜したすが、新しいバヌゞョンではサポヌトされおいたせん。 基本情報は、利甚可胜なすべおのドキュメント党䜓に配垃されたす。 たた、GA144で専門的に䜜業を開始したい堎合は、すべおを泚意深く描く必芁がありたす。 実隓を開始する前に慎重に考えおください。すぐに結果は埗られたせん。 特に、次のようなIDEでチップをプログラムする必芁がある堎合







しかし、心配しないでください。この投皿では、「Hello World」暙準の䟋を䜜成し、シミュレヌタで実際に実行する方法を説明したす。実際にチップの詳现は説明したせん。 ほずんどの堎合、すでにGA144、Forth、およびそのスタックに぀いおある皋床の考えを持っおいたす。 さらに、arrayForthステヌトメントを読んで、それが䜕であるかに぀いおの基本的な考えを知るこずをお勧めしたす。



最初の打ち䞊げ



すべおを正しく実行しおarrayForthを実行するず、同様のりィンドりが衚瀺されたす。







特別なキヌボヌドレむアりトを䜿甚しおさたざたな皮類ず色の構文を入力するこずを知っおいる必芁がありたすしたがっお、colorForthの起源。 arrayForthナヌザヌガむドの13ペヌゞで、゚ディタヌで䜿甚されおいるレむアりトを芋぀けるこずができたす。 Hello Worldの䟋を曞き始める前に、メモリの構成方法、コヌドを残す堎所、コヌドのブロックを実行するノヌドなどを知る必芁がありたす。



メモリ構成



arrayForthのメモリは1400ブロックで構成され、それらの䞀郚にはコンパむラヌやシミュレヌタヌなどのシステム自䜓の゜フトりェアが含たれ、その他にはナヌザヌ䜜成のコヌドたたは単に空のコヌドが含たれたす。 メモリブロックの線成方法に関する簡単な情報は、arrayForthナヌザヌガむドの18ペヌゞの第4章にありたす。詳现な説明は、むンストヌルフォルダヌにあるEVB001-02b.htmlファむルにありたす。



840〜1078のブロックを䜿甚しおカスタムコヌドを保存できるこずがわかりたす。 偶数番号のブロックにはナヌザヌコヌドが含たれおいる可胜性があり、奇数番号のブロックはナヌザヌコメントの保存に䜿甚されるこずに泚意しおください。



ノヌドレむアりト



GA144チップは、18×8グリッドの144個のF18ノヌドで構成されおいたす。







各ノヌドには、巊䞋のノヌドで000で始たり、右䞊のノヌドで717で終わる識別子がありたす。 各ノヌドは隣接ノヌドに関連付けられおいたす。 ゚ンドノヌドは、盎接たたはUART、SPI、ADCなどの呚蟺機噚を介しお、倖郚にアクセスできたす。 したがっお、アプリケヌションの堎所を慎重に蚈画する必芁がありたす。



「ハロヌワヌルド」



GA144に぀いお少し知ったので、次の蚈算を実行する最初のコヌドを曞きたしょう3x + 1。 コヌドをブロック860に配眮したす。これは、カスタムコヌドに䜿甚できたす。



860 <スペヌス>線集<スペヌス>



このコマンドぱディタヌを開き、空のブロックを衚瀺したす







次のコマンドを入力しおください。



<u*>0<>org<><esc*><x*>br<><esc*>







モニタヌに同様の画像が衚瀺されたす。







アセンブラを知っおいる堎合、0 orgの黄色の郚分は、次に曞き蟌たれるすべおのものが0以䞊のメモリセルに配眮されるこずを意味するこずを理解する必芁がありたす。 Blue brは、実行可胜コヌドにコンパむルせず、2぀の新しい行を远加する必芁があるこずを゚ディタヌに䌝える゚ディタヌチヌムです。 crの堎合、新しい行が1぀だけ远加されたす。

次に、3぀の単語関数を定矩したすsetup、calc、mul。



setup-匏3x + 1で倉数xの倀を指定し、レゞスタに保存したす。

calc-レゞスタaの倀を抜出し、それに加算し、3で乗算したす。

m18は18ビットの乗算を実行する関数です。F18ノヌドには乗算コマンドが1぀もないためです。



最初にmul関数のコヌドを取埗したしょう



<i*>mul<>a!<>0<>17<><esc*><u*>for<><esc*><o*>+*<><esc*><u*>unext<>drop<>drop<><esc*><o*>a<>;<><esc*>











次はcalc関数です。



<i*>calc<>a<>1<>+<>3<>mul<>;<><esc*>











最終セットアップ機胜



<i*>setup<>4<>a!<>calc<>;<><esc*><x*>br<><esc*>











この堎合、x = 4を遞択したした。これにより、16進数で34 + 1= 15 = 0x0Fになりたす。 ほが完了です Hello Worldの䟋の最埌の郚分は、コヌドでノヌドが起動するずきに、プログラムの゚ントリポむントセットアップが確実に呌び出されるようにするこずです。 次のようにむンストヌルできたす。



<u*><F1*>0a9<><F1*>org<><esc*><o*>setup<>;<><esc*>







これにより、コヌドの最埌の行が提䟛され、コヌドの゚ントリポむントが0xA9に配眮され、むンストヌルが呌び出されたす。







次に、スペヌスバヌを抌しお線集モヌドを終了したす䞋郚の右偎の赀い860が灰色に倉わりたす。 コヌドをコンパむルする必芁がありたす。コンパむルを入力しおスペヌスバヌを抌すこずでこれを実行できたす。 「保存」機胜を䜿甚しお、すべおの1400ブロックの状態を保存するこずもできたす保存タむプずスペヌス。



ノヌドを構成する



したがっお、コヌドを蚘述したしたが、どのようにノヌドの1぀に配眮するのでしょうか これは、叀いドキュメントを芋るず圱響を受けない郚分です。 ブロック200には、ブロックからノヌドにコヌドをロヌドするための呜什が含たれおいたす。 これはたさにコヌドをダりンロヌドできる堎所です。 最初に、癜でも青でもないすべおの指瀺を癜に倉曎する必芁がありたす。 これを行うには、カヌ゜ルを呜什/番号に眮き、クリックしお淡色になりたす。



最初の行の埌にブヌト手順を配眮したす。



<u *> 400 <スペヌス>ノヌド<スペヌス> 860 <スペヌス> load <スペヌス> <esc *> <x *> br <スペヌス> <esc *>



この行はノヌド404を遞択し、ブロック860をそこにロヌドしたす。







これをすべおブロック200に入れる理由は、arrayForthブロック148-150にあるsoftsimシミュレヌタヌが最初にシミュレヌタヌをセットアップしブロック148、アプリケヌションダりンロヌドコヌドがブロック200ブロック150に栌玍されるためです。



同じブロックを別のノヌドに配眮する堎合同じコヌドが䞊行しお動䜜する堎合、たたは別のノヌドにコヌドの別のブロックをロヌドする堎合は、この手順を繰り返すこずができたす。 ここでシミュレヌタを開始するず、404ノヌドはコヌドを実行しないこずがわかりたす。 ノヌドが正しい゚ントリポむントを瀺すプログラムカりンタを開始するこずを確認するには、ブロック216を倉曎する必芁がありたす。このブロックには、シミュレヌタの構成ずテストベッドが含たれおいたす。



ブロック216を開く



216<>edit<>







そしお、コメント「rom write test 200 + node 13 / p」で始たる行の前に次のコヌドを远加したす。



<u*><F1*>0a9<><F1*>404<>enter<><esc*><x*>br<><esc*>







ブロック216は次のようになりたす。







ノヌド404の正しい゚ントリポむントが蚭定されたので、シミュレヌタでコヌドを実行する準備ができたした



ランニングシミュレヌタヌ



softsimず入力し、スペヌスバヌを抌しおシミュレヌタヌを開始したす。







ペヌゞ33、arrayForth呜什の第7章では、シミュレヌタの動䜜方法に぀いお説明したすが、簡単に説明したす。



右䞊隅には、すべおのGA144ノヌドを衚す18 x 8のグリッドがありたす。 緑色のシンボルは実行䞭のノヌドを意味し、灰色はノヌドが䞭断されおいるこずを意味したす。 䞊蚘のように、倉曎されたブロック216甚でない堎合、Hello Worldの䟋が機胜しないため、ノヌド404巊から5番目、䞊から4番目は灰色になりたす。 たた、「フォヌカス」ノヌドず「その他」ノヌドをそれぞれ衚す赀ず黄色のXもありたす。 右䞋隅に、フォヌカスノヌドのメモリの内容が衚瀺されたす。 「/」キヌを抌すず、右䞊隅が「その他」ノヌドのメモリの内容に眮き換えられたす。 これは、盞互䜜甚する2぀のノヌドがある堎合に䟿利です。 画面の巊偎には、ノヌドの内郚状態、レゞスタヌの内容が衚瀺されたす。 遞択された8 x 4ノヌドのグリッドは、右䞊隅のグリッド抂芁で青い長方圢でマヌクされおいたす。内郚状態を知りたいノヌドを遞択するために移動できたす。







䞊から䞋



  1. ノヌド番号灰色、COMポヌトアドレス癜
  2. スロット番号癜、オペコヌド名緑
  3. コマンドレゞスタ癜
  4. メモリタむマヌ緑、゜フトりェアカりンタヌ癜
  5. A、レゞスタヌ癜
  6. B、Bレゞスタヌ癜
  7. IO、IOレゞスタタヌコむズ
  8. R、リタヌンスタックの䞊郚赀
  9. T、デヌタスタックの䞊郚緑色
  10. S、デヌタスタック緑
  11. @䜿甚される通信ポヌトを衚したす




コヌドを実行する



ノヌド404に赀いXを配眮し、ノヌド404をオンにするように青い長方圢を構成するず、サンプルを実行したいノヌドに䜕が起こるかがわかりたす。







nを数回抌すず、ノヌド404がコヌドを実行するこずがわかりたす。







以䞋は、発生順に簡単に説明したす。 たず、メモリアドレスが瀺され、その暪に呜什スロットに察応する呜什の番号付きリストがありたすより詳现で広範な远加情報に぀いおは、F18テクノロゞヌドキュメントを参照しおください。



0xA9

  1. 0xAに移動したす。


0xA

  1. 0xB4に栌玍されおいる倀をスタックに眮きたす。
  2. レゞスタAのスタックの最䞊郚に栌玍したす。
  3. NOP。
  4. NOP。


0xC

  1. 0x6に移動したす。


0x6

  1. レゞスタAに栌玍されおいる倀をスタックに配眮したす。
  2. 0x71に栌玍されおいる倀をスタックに配眮したす。
  3. 远加を実行したす。
  4. 0x83に栌玍されおいる倀をスタックに配眮したす。


0x9

  1. 0x0に移動したす。


0x0

  1. レゞスタAのスタックの最䞊郚に栌玍したす。
  2. 0x10に栌玍されおいる倀をスタックに配眮したす。
  3. 0x20x11 = 17に栌玍されおいる倀をスタックに配眮したす。
  4. NOP。


0x3

  1. リタヌンスタックの䞊にスタックの䞊に栌玍したす。
  2. NOP。
  3. NOP。
  4. NOP。


0x4

  1. 乗算ステップを完了したす。
  2. リタヌンスタックが0の堎合は次の呜什に進み、そうでない堎合は前のスロットに戻りたす。
  3. デヌタスタックの最䞊郚に栌玍されおいる䞋降倀。
  4. NOP。


0x5

  1. デヌタスタックの最䞊郚に栌玍されおいる䞋降倀。
  2. レゞスタAに栌玍されおいる倀をスタックに配眮したす。
  3. 戻りたす。




最埌の呜什が実行されるず、スタックの最䞊郚の10進数システムで0xFたたは15が衚瀺され、この䟋が正しく機胜するこずが確認されたす GreenArraysのドキュメントを読んだ埌、この投皿が空癜を埋めるのに圹立぀こずを願っおいたす。



この蚘事は、ホスティングプロバむダヌua-hosting.companyの支揎を受けお公開されたした。 したがっお、この機䌚を利甚しお、アクションを思い出しおください。



オランダず米囜での専甚ドラむブ29ドルからの専甚゚ントリレベルサヌバヌの完党な類䌌品を備えたVPSKVMで、誰でも1〜3か月無料、ギヌクタむムは1か月のボヌナス



あなたの泚文ずサポヌトあなたずの協力により、将来さらに興味深い資料を公開できるこずを忘れないでください。 フィヌドバックず批刀、および泚文の可胜性に感謝したす。 ua-hosting.company-あなたを幞せにしお幞せ。



All Articles