Mercurial > hg > Papers > 2019 > anatofuz-thesis
changeset 105:1a0210c2814b
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 19 Feb 2019 17:26:03 +0900 |
parents | bc2c556987de |
children | e3c459b29e98 |
files | presen/slide.html presen/slide.md presen/slide.pdf presen/slide.pdf.html |
diffstat | 4 files changed, 55 insertions(+), 80 deletions(-) [+] |
line wrap: on
line diff
--- a/presen/slide.html Tue Feb 19 17:20:34 2019 +0900 +++ b/presen/slide.html Tue Feb 19 17:26:03 2019 +0900 @@ -93,13 +93,15 @@ <!-- _S9SLIDE_ --> <h2 id="研究目的">研究目的</h2> <ul> - <li>現在開発されているPerl6の実装にRakudoがあり, RakudoはNQP(Perl6のサブセット)で記述されたPerl6, NQPで記述されたNQPコンパイラ, NQPを解釈するVMで構成されている</li> - <li>NQPコンパイラはRakudoのVMであるMoarVM用のバイトコードを生成する</li> - <li>MoarVMはこのバイトコードを解釈, 実行する</li> + <li>Continuation based C (CbC)という言語は継続を基本とするC言語であり, 言語処理系に応用出来ると考えられる</li> + <li>スクリプト言語などは, バイトコードを扱うが, この実行にcae文や, ラベルgotoなどを利用している。 + <ul> + <li>この部分はCbCの機能で書き換える事が可能である</li> + </ul> + </li> + <li>命令実行処理部分をモジュール化することで、各命令ごとの最適化や、 命令ディスパッチ部分の最適化を行う事が可能であると考える。</li> </ul> -<img src="fig/perl6nqp.svg" alt="" /> - </div> @@ -108,16 +110,14 @@ <!-- _S9SLIDE_ --> <h2 id="研究目的-1">研究目的</h2> <ul> - <li>Continuation based C (CbC)という言語は継続を基本とするC言語であり, 言語処理系に応用出来ると考えられる</li> - <li>スクリプト言語などは, バイトコードを扱うが, この実行にcae文や, ラベルgotoなどを利用している。 - <ul> - <li>この部分はCbCの機能で書き換える事が可能である</li> - </ul> - </li> - <li>命令実行処理部分をモジュール化することで、各命令ごとの最適化や、 命令ディスパッチ部分の最適化を行う事が可能であると考える。</li> - <li>従って, CbC一部用いてPerl6にC処理系であるMoarVMの書き換えを行い, 処理を検討する.</li> + <li>現在開発されているPerl6の実装にRakudoがあり, RakudoはNQP(Perl6のサブセット)で記述されたPerl6, NQPで記述されたNQPコンパイラ, NQPを解釈するVMで構成されている</li> + <li>NQPコンパイラはRakudoのVMであるMoarVM用のバイトコードを生成する</li> + <li>MoarVMはこのバイトコードを解釈, 実行する</li> + <li>本研究では, CbC用いてPerl6にC処理系であるMoarVMの一部書き換えを行い, 命令のモジュール化を検討する.</li> </ul> +<img src="fig/perl6nqp.svg" alt="" /> + </div> @@ -170,7 +170,7 @@ <div class='slide'> <!-- _S9SLIDE_ --> -<h2 id="言語処理系の応用">言語処理系の応用</h2> +<h2 id="スクリプト言語処理系">スクリプト言語処理系</h2> <ul> <li>スクリプト言語は入力として与えられたソースコードを、 直接評価せずにバイトコードにコンパイルする形式が主流となっている</li> <li>その為スクリプト言語の実装は大きく2つで構成されている @@ -571,18 +571,6 @@ <div class='slide'> <!-- _S9SLIDE_ --> -<h2 id="threadedcodeの実装">ThreadedCodeの実装</h2> - -<ul> - <li>MoarVM内のバイトコードに対応する処理が分離出来たことにより, バイトコードに該当するCodeGearを書き連ねることによってThreadedCodeが実装可能となる</li> -</ul> - - - -</div> - -<div class='slide'> - <!-- _S9SLIDE_ --> <h2 id="cbcmoarvmと通常のmoarvmの比較">CbCMoarVMと通常のMoarVMの比較</h2> <ul> @@ -622,9 +610,9 @@ <tbody> <tr style="border: 2px solid #595959;"> <td style="border: 2px solid #595959;">[単位 sec]</td> - <td></td> - <td></td> - <td></td> + <td style="border: 2px solid #595959;"></td> + <td style="border: 2px solid #595959;"></td> + <td style="border: 2px solid #595959;"></td> </tr> <tr style="border: 2px solid #595959;"> <td style="border: 2px solid #595959;">MoarVM</td> @@ -688,9 +676,9 @@ <tbody> <tr style="border: 2px solid #595959;"> <td style="border: 2px solid #595959;">[単位 sec]</td> - <td></td> - <td></td> - <td></td> + <td style="border: 2px solid #595959;"></td> + <td style="border: 2px solid #595959;"></td> + <td style="border: 2px solid #595959;"></td> </tr> <tr> <td style="border: 2px solid #595959;">MoarVM</td> @@ -753,7 +741,8 @@ <ul> <li>継続と基本としたC言語 Continuation Based Cを用いてPerl6の処理系の一部を書き直した <ul> - <li>Cの持つCodeGearによって, 本来はモジュール化出来ない箇所をモジュール化が可能となった</li> + <li>CodeGearによって, 本来はモジュール化出来ない箇所をモジュール化が可能となった</li> + <li>デバッグが通常のディスパッチと比較して安易になった</li> <li>CPUキャッシュに収まるループなどの命令の場合は、 通常のMoarVMよりも高速に動作する</li> </ul> </li>
--- a/presen/slide.md Tue Feb 19 17:20:34 2019 +0900 +++ b/presen/slide.md Tue Feb 19 17:26:03 2019 +0900 @@ -5,19 +5,20 @@ code-engine: coderay -## 研究目的 -- 現在開発されているPerl6の実装にRakudoがあり, RakudoはNQP(Perl6のサブセット)で記述されたPerl6, NQPで記述されたNQPコンパイラ, NQPを解釈するVMで構成されている -- NQPコンパイラはRakudoのVMであるMoarVM用のバイトコードを生成する -- MoarVMはこのバイトコードを解釈, 実行する - -![](fig/perl6nqp.svg) ## 研究目的 - Continuation based C (CbC)という言語は継続を基本とするC言語であり, 言語処理系に応用出来ると考えられる - スクリプト言語などは, バイトコードを扱うが, この実行にcae文や, ラベルgotoなどを利用している。 - この部分はCbCの機能で書き換える事が可能である - 命令実行処理部分をモジュール化することで、各命令ごとの最適化や、 命令ディスパッチ部分の最適化を行う事が可能であると考える。 -- 従って, CbC一部用いてPerl6にC処理系であるMoarVMの書き換えを行い, 処理を検討する. + +## 研究目的 +- 現在開発されているPerl6の実装にRakudoがあり, RakudoはNQP(Perl6のサブセット)で記述されたPerl6, NQPで記述されたNQPコンパイラ, NQPを解釈するVMで構成されている +- NQPコンパイラはRakudoのVMであるMoarVM用のバイトコードを生成する +- MoarVMはこのバイトコードを解釈, 実行する +- 本研究では, CbC用いてPerl6にC処理系であるMoarVMの一部書き換えを行い, 命令のモジュール化を検討する. + +![](fig/perl6nqp.svg) ## Continuation Based C (CbC) @@ -52,7 +53,7 @@ } ``` -## 言語処理系の応用 +## スクリプト言語処理系 - スクリプト言語は入力として与えられたソースコードを、 直接評価せずにバイトコードにコンパイルする形式が主流となっている - その為スクリプト言語の実装は大きく2つで構成されている - バイトコードに変換するフロントエンド部分 @@ -316,11 +317,6 @@ /mnt/dalmore-home/one/src/Perl6/Optimize/llvm/build_perl6/share/nqp/lib/nqp.moarvm "$@" ``` -## ThreadedCodeの実装 - -- MoarVM内のバイトコードに対応する処理が分離出来たことにより, バイトコードに該当するCodeGearを書き連ねることによってThreadedCodeが実装可能となる - - ## CbCMoarVMと通常のMoarVMの比較 - CbCMoarVMと通常のMoarVMの速度比較を行った @@ -446,6 +442,7 @@ ## まとめ - 継続と基本としたC言語 Continuation Based Cを用いてPerl6の処理系の一部を書き直した - - Cの持つCodeGearによって, 本来はモジュール化出来ない箇所をモジュール化が可能となった + - CodeGearによって, 本来はモジュール化出来ない箇所をモジュール化が可能となった + - デバッグが通常のディスパッチと比較して安易になった - CPUキャッシュに収まるループなどの命令の場合は、 通常のMoarVMよりも高速に動作する - 今後はCodeGearの特性を活用し、 直接次の命令を実行する処理を実装する
--- a/presen/slide.pdf.html Tue Feb 19 17:20:34 2019 +0900 +++ b/presen/slide.pdf.html Tue Feb 19 17:26:03 2019 +0900 @@ -77,13 +77,15 @@ <!-- _S9SLIDE_ --> <h2 id="研究目的">研究目的</h2> <ul> - <li>現在開発されているPerl6の実装にRakudoがあり, RakudoはNQP(Perl6のサブセット)で記述されたPerl6, NQPで記述されたNQPコンパイラ, NQPを解釈するVMで構成されている</li> - <li>NQPコンパイラはRakudoのVMであるMoarVM用のバイトコードを生成する</li> - <li>MoarVMはこのバイトコードを解釈, 実行する</li> + <li>Continuation based C (CbC)という言語は継続を基本とするC言語であり, 言語処理系に応用出来ると考えられる</li> + <li>スクリプト言語などは, バイトコードを扱うが, この実行にcae文や, ラベルgotoなどを利用している。 + <ul> + <li>この部分はCbCの機能で書き換える事が可能である</li> + </ul> + </li> + <li>命令実行処理部分をモジュール化することで、各命令ごとの最適化や、 命令ディスパッチ部分の最適化を行う事が可能であると考える。</li> </ul> -<p><img src="fig/perl6nqp.svg" alt="" /></p> - </div> @@ -92,16 +94,14 @@ <!-- _S9SLIDE_ --> <h2 id="研究目的-1">研究目的</h2> <ul> - <li>Continuation based C (CbC)という言語は継続を基本とするC言語であり, 言語処理系に応用出来ると考えられる</li> - <li>スクリプト言語などは, バイトコードを扱うが, この実行にcae文や, ラベルgotoなどを利用している。 - <ul> - <li>この部分はCbCの機能で書き換える事が可能である</li> - </ul> - </li> - <li>命令実行処理部分をモジュール化することで、各命令ごとの最適化や、 命令ディスパッチ部分の最適化を行う事が可能であると考える。</li> - <li>従って, CbC一部用いてPerl6にC処理系であるMoarVMの書き換えを行い, 処理を検討する.</li> + <li>現在開発されているPerl6の実装にRakudoがあり, RakudoはNQP(Perl6のサブセット)で記述されたPerl6, NQPで記述されたNQPコンパイラ, NQPを解釈するVMで構成されている</li> + <li>NQPコンパイラはRakudoのVMであるMoarVM用のバイトコードを生成する</li> + <li>MoarVMはこのバイトコードを解釈, 実行する</li> + <li>本研究では, CbC用いてPerl6にC処理系であるMoarVMの一部書き換えを行い, 命令のモジュール化を検討する.</li> </ul> +<p><img src="fig/perl6nqp.svg" alt="" /></p> + </div> @@ -154,7 +154,7 @@ <div class='slide'> <!-- _S9SLIDE_ --> -<h2 id="言語処理系の応用">言語処理系の応用</h2> +<h2 id="スクリプト言語処理系">スクリプト言語処理系</h2> <ul> <li>スクリプト言語は入力として与えられたソースコードを、 直接評価せずにバイトコードにコンパイルする形式が主流となっている</li> <li>その為スクリプト言語の実装は大きく2つで構成されている @@ -555,18 +555,6 @@ <div class='slide'> <!-- _S9SLIDE_ --> -<h2 id="threadedcodeの実装">ThreadedCodeの実装</h2> - -<ul> - <li>MoarVM内のバイトコードに対応する処理が分離出来たことにより, バイトコードに該当するCodeGearを書き連ねることによってThreadedCodeが実装可能となる</li> -</ul> - - - -</div> - -<div class='slide'> - <!-- _S9SLIDE_ --> <h2 id="cbcmoarvmと通常のmoarvmの比較">CbCMoarVMと通常のMoarVMの比較</h2> <ul> @@ -606,9 +594,9 @@ <tbody> <tr style="border: 2px solid #595959;"> <td style="border: 2px solid #595959;">[単位 sec]</td> - <td></td> - <td></td> - <td></td> + <td style="border: 2px solid #595959;"></td> + <td style="border: 2px solid #595959;"></td> + <td style="border: 2px solid #595959;"></td> </tr> <tr style="border: 2px solid #595959;"> <td style="border: 2px solid #595959;">MoarVM</td> @@ -672,9 +660,9 @@ <tbody> <tr style="border: 2px solid #595959;"> <td style="border: 2px solid #595959;">[単位 sec]</td> - <td></td> - <td></td> - <td></td> + <td style="border: 2px solid #595959;"></td> + <td style="border: 2px solid #595959;"></td> + <td style="border: 2px solid #595959;"></td> </tr> <tr> <td style="border: 2px solid #595959;">MoarVM</td> @@ -737,7 +725,8 @@ <ul> <li>継続と基本としたC言語 Continuation Based Cを用いてPerl6の処理系の一部を書き直した <ul> - <li>Cの持つCodeGearによって, 本来はモジュール化出来ない箇所をモジュール化が可能となった</li> + <li>CodeGearによって, 本来はモジュール化出来ない箇所をモジュール化が可能となった</li> + <li>デバッグが通常のディスパッチと比較して安易になった</li> <li>CPUキャッシュに収まるループなどの命令の場合は、 通常のMoarVMよりも高速に動作する</li> </ul> </li>