Skip to content

Commit

Permalink
tmp
Browse files Browse the repository at this point in the history
  • Loading branch information
akkyie committed Jan 30, 2019
1 parent b8942aa commit 122ea0a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 10 deletions.
22 changes: 14 additions & 8 deletions src/001_abstract.ja.tex
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
\begin{jabstract}

WebAssemblyはWebブラウザでの実行を想定して設計された仮想命令セットアーキテクチャである。
Webブラウザにおける標準化された実行形式として利用が広がりつつあり、開発環境による対応も進んでいる。
また、WebAssemblyの命令セットや実行セマンティクスはWebブラウザ以外の環境への応用も想定されて設計されているため、実行形式としてのWebAssemblyの活用はWebブラウザ外にも広がっていくと想定される。
しかしながら、マイコンのような計算資源が限られた環境下におけるWebAssemblyの応用可能性については、いまだ十分に検討されていない。
現在、マイコンにおけるプログラムは静的に実行されるのが主流である。
すなわち、プログラムはフラッシュメモリ等に書き込まれ、起動時にブートローダがプログラムを参照して実行する。
そのため、処理内容を変更するためには、有線接続によって、もしくは無線接続によるOTA(Over-the-Air)アップデートによって、フラッシュメモリ上のプログラムを書き換えた上で再起動する必要がある。

そこで、本研究では、マイコンにおいてWebAssemblyバイナリをインターネット上からダウンロードし実行するための環境を設計する
また、その実現可能性を評価するため、ESP32マイコン上にWebAssemblyバイナリのインタプリタを実装した
その上で、実装した実行環境について、関数の呼び出しにおける実行速度とメモリフットプリントを計測し、ネイティブでの関数実行と比較した
一方、Webページとして提供されるWebアプリケーションでは、プログラムは動的に実行される
Webブラウザはアプリケーション・プラットフォームとして、Webページに記述されたスクリプトや外部へのリンクを辿り、必要なプログラムを取得した上で実行する
これにより、アクセスするWebページごとに異なるアプリケーションを提供することができる上に、利用者の環境や状態によって処理内容を変更することもできる

評価では、ネイティブでの関数実行に比べて定数を返す関数では約280倍、関数呼び出しと加算を含む関数では約3000倍のオーバヘッドがあることが明らかになった。また、関数呼び出しのたびに280バイトのヒープ領域を使用することが分かった。
本論文では、動的なアプリケーションの実行モデルをマイコン上でも実現するため、WebAssemblyを実行形式として用いたアプリケーション・プラットフォームの設計を提案する。
WebAssemblyは、Webブラウザ上で実行するためのプログラムを記述できる仮想的な命令セットアーキテクチャであり、Webブラウザにおける動的なアプリケーション実行モデルを高速化するために設計された。
Webブラウザでの動作を第一義的な目的として設計されたWebAssemblyだが、仕様としてWebブラウザ内での動作に限定する制約はない。

本研究では、マイコンにおいてWebAssemblyプログラムの動的な取得と実行を行う、マイコン向けWebAssembly実行環境を設計した。
その上で、本実行環境の実現可能性を検討するため、C言語でWebAssemblyインタプリタを実装した。
実装した実行環境を用いてESP32およびIntel Core i5 3GHzのCPUを搭載したPCで同一のWebAssemblyプログラムをそれぞれ実行した。その結果、同一のWebAssemblyプログラムを実行するために、ESP32ではPCの7倍から15倍程度のクロック数を必要とすることが分かった。
この結果を、同じWebAssemblyプログラムをPCのWebブラウザ上で実行した際の実行性能と比較した結果、30番目のフィボナッチ数を560ミリ秒で計算できる性能となることが推測された。

\end{jabstract}
4 changes: 2 additions & 2 deletions src/010_introduction.ja.tex
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,13 @@ \section{本論文の構成}

本論文における以降の構成は次の通りである。

\ref{chap:related_works}章では、マイコンにおけるプログラムの更新を行うための関連技術として、MicroPython、ESP-IDFが提供するOTA機能およびAmazon FreeRTOSが提供するOTA機能について述べる
\ref{chap:related_works}章では、マイコンにおけるプログラムの更新を行うための関連技術として、MicroPythonおよびESP-IDFが提供するOTA機能について述べる

\ref{chap:design}章では、マイコン上でWebAssemblyプログラムを取得、実行、更新するための実行環境の設計を提案する。提案する実行環境では、プログラムをHTTP通信を用いてインターネット上から取得する。プログラムは実行毎に再取得することで更新しつつ、キャッシュの活用により通信による計算負荷と帯域を削減する。

\ref{chap:implementation}章では、本研究で実装したWebAssembly実行環境について述べる。
本研究では、WebAssemblyバイナリの実行部分を実装した。ホストプログラムから静的なバイナリをパースおよびインスタンス化し、対応する関数を呼び出すことで実行する。

\ref{chap:evaluation}章では、本研究で実装したWebAssembly実行環境について、同一の内容の関数をネイティブに実行した場合と比較し、実行速度およびメモリフットプリントにおけるオーバーヘッドについて考察する
\ref{chap:evaluation}章では、本研究で実装したWebAssembly実行環境を用いて、ESP32マイコン上およびmacOSを搭載したPC上で同一のWebAssemblyバイナリを実行した結果と、PC上のWebブラウザで同じWebAssemblyバイナリを実行した結果を比較し、本設計の実現可能性を示す

\ref{chap:conclusion}章では、本研究における結論を示す。

0 comments on commit 122ea0a

Please sign in to comment.