著者
吉原 陽香 笹田 耕一 並木 美太郎
雑誌
研究報告システムソフトウェアと オペレーティング・システム(OS)
巻号頁・発行日
vol.2010-OS-114, no.4, pp.1-9, 2010-04-14

本研究では,Ruby で記述された OS である RubyOS の構成法の提案と,その実行基盤の試作を行った.また RubyOS の試作として,ポーリング方式でキーボードの入力を受け取り,画面にその文字を出力するプログラムを Ruby にて記述した.実行基盤については,既存の Ruby 処理系を OS を搭載していないハードウェア上で直接実行できるように移植した.OS を記述するために必要となる,実メモリアクセス・I/O ポートアクセスといった Ruby の言語仕様にない機能は,拡張ライブラリを自作して実装した.評価としていくつかのプログラムの実行時間の計測を行い,Ruby が OS を記述するのに十分な機能を持っているか検討した.
著者
中川 博貴 笹田 耕一
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.4, no.4, pp.44-44, 2011-09-22

本発表では Ruby 処理系の正規表現などの文字列処理を手軽に高速化する手法について述べる.高速化を目指すにあたり,文字列処理のアルゴリズムに手を加えず,互換性を損なわない範囲で行うことができる 2 つの手軽な手法を適用した.1 つ目に,正規表現エンジン鬼車用の AOT コンパイラを実装した.Ruby の正規表現処理を行う正規表現エンジン鬼車は,仮想マシン型の評価器を持ち,実行時に正規表現をオペコードに変換して評価する.我々は正規表現処理の高速化を目指し,このオペコード列をC言語の関数に変換し,仮想マシンの代わりに動作させる AOT コンパイラを開発した.2 つ目に,主要な文字コードについて,文字コードに関する処理を文字列処理へインライン化した.鬼車は多言語文字列に対応した正規表現エンジンである.多言語文字列に対応するために,文字のバイト数を調べるといった各文字コード固有の処理を関数ポインタによって呼び分けている.また,この仕組みを利用して,Ruby 処理系の文字列も多言語化が行われている.しかし,各文字コード固有の処理を関数ポインタ経由で呼び出すため,関数呼び出しにコストがかかり,また C コンパイラによる関数をまたいだ最適化が効きにくくなるという問題があった.そこで,我々は主要な文字コードについて,文字コードに関する処理を文字列操作にインライン化することで高速化を実現した.本発表では,鬼車用 AOT コンパイラの仕組みと文字コードに関する処理のインライン化の手法について述べる.そして評価を行い,これらの高速化の結果について述べる.In this presentation, we describe the lightweight methods to speed up string processing for Ruby. To speed up, we adapt two lightweight methods which do not change string processing algorithms and do not break compatibility. First, we implemented the AOT compiler for regular expression engine Oniguruma which is used for regular expression processing in Ruby. Oniguruma is implemented as a virtual machine. The regular expression parser of Oniguruma compiles the regular expressions into a sequence of opecodes, and then the virtual machine executes it. We implemented the AOT compiler which compiles an opecode sequence into a C function, and then executes the C function instead of the execution of virtual machine. Second, we inlined processes of major character encodings into string functions. Oniguruma supports multilingual strings. To support multilingual strings, Oniguruma calls each character encoding functions, for example a function to calculate a byte length of a character, via a function pointer. Similarly, Ruby string is multilingualized in the same way as Oniguruma. However this approach increases the cost of function calls, and prevents a C compiler interprocedural optimization. For speed up, we inlined processes of major character encodings into string functions. In this presentation, we describe the design and the implementation of the AOT compiler for Oniguruma and the method to inline processes of character encodings. Moreover, we show the results of performance evaluation for these implementations.
著者
笹田 耕一 松本 行弘 前田 敦司 並木 美太郎
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.48, no.SIG10(PRO33), pp.1-16, 2007-06-15

本論文ではスクリプト言語Ruby 用仮想マシンYARV: Yet Another RubyVM における並列実行スレッド処理機構の実装について述べる.Ruby はその使いやすさから世界中で広く利用されているプログラム言語である.Ruby の特徴の1 つにマルチスレッドプログラミングに対応しているという点があるが,現在広く利用されているRuby 処理系は移植性を高めるため,すべてユーザレベルでスレッド制御を行っている.しかし,このスレッド実現手法では,実行がブロックしてしまう処理がC 言語レベルで記述できない,並列計算機において複数スレッドの並列実行による性能向上ができないなどの問題がある.そこで,現在筆者らが開発中のRuby 処理系YARV において,OS やライブラリなどによって提供されるネイティブスレッドを利用するスレッド処理機構を実装し,複数スレッドの並列実行を実現した.並列化にあたっては,適切な同期の追加が必要であるが,特に並列実行を考慮しないC 言語で記述したRuby 用拡張ライブラリを安全に実行するための仕組みが必要であった.また,同期の回数を減らす工夫についても検討した.本論文では,これらの仕組みと実装についての詳細を述べ,スレッドの並列実行によって得られた性能向上について評価した結果を述べる.
著者
笹田 耕一 松本 行弘 前田 敦司 並木 美太郎
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.48, no.10, pp.1-16, 2007-06-15
被引用文献数
2

本論文ではスクリプト言語Ruby 用仮想マシンYARV: Yet Another RubyVM における並列実行スレッド処理機構の実装について述べる.Ruby はその使いやすさから世界中で広く利用されているプログラム言語である.Ruby の特徴の1 つにマルチスレッドプログラミングに対応しているという点があるが,現在広く利用されているRuby 処理系は移植性を高めるため,すべてユーザレベルでスレッド制御を行っている.しかし,このスレッド実現手法では,実行がブロックしてしまう処理がC 言語レベルで記述できない,並列計算機において複数スレッドの並列実行による性能向上ができないなどの問題がある.そこで,現在筆者らが開発中のRuby 処理系YARV において,OS やライブラリなどによって提供されるネイティブスレッドを利用するスレッド処理機構を実装し,複数スレッドの並列実行を実現した.並列化にあたっては,適切な同期の追加が必要であるが,特に並列実行を考慮しないC 言語で記述したRuby 用拡張ライブラリを安全に実行するための仕組みが必要であった.また,同期の回数を減らす工夫についても検討した.本論文では,これらの仕組みと実装についての詳細を述べ,スレッドの並列実行によって得られた性能向上について評価した結果を述べる.In this paper, we describe an implementation of parallel threads for YARV: Yet Another RubyVM. The Ruby language is used worldwide because of its ease of use. Ruby also supports multi-threaded programming. The current Ruby interpreter controls all threads only in user-level to achieve high portability. However, this user-level implementation can not support blocking task and can not improve performance on parallel computers. To solve these problems, we implement parallel threads using native threads provided by systems software on YARV: Yet Another RubyVM what we are developing as another Ruby interpreter. To achieve parallel execution, correct synchronizations are needed. Especially, C extension libraries for Ruby which are implemented without consideration about parallel execution need a particular scheme for running in parallel. And we also try to reduce a number of times of synchronization. In this paper, we show implementations of these schemes and results of performance improvement on parallel threads execution.
著者
高橋 一志 笹田 耕一
出版者
情報処理学会
雑誌
研究報告システムソフトウェアと オペレーティング・システム(OS) (ISSN:09196072)
巻号頁・発行日
vol.2010, no.13, pp.1-10, 2010-07-27

われわれは,WinKVM (Windows Kernel-based Virtual Machine) と呼ばれる Linux KVM の Windows 移植版を構築することで,Windows と Linux 間で VM ライブマイグレーションを行うことを目指している.WinKVM を構築するために,Windows 上で Linux カーネルを模倣するエミュレーションレイヤを構築し,KVM をその上で動作させる手法を開発した.しかし,既存研究で述べたエミュレーションレイヤは Windows 上で Linux カーネルのメモリ管理機構を正確に再現できなかった.そのため,QEMU と KVM ドライバとの間でゲスト OS のメモリ内容に不一致がおこり,VM ライブマイグレーションが実現が不可能であった.エミュレーションレイヤ上で KVM を動作させるため,KVM 内のメモリ管理情報をエミュレーションレイヤ側に通知できる機構を KVM に組み込むこみ,最終的に,われわれは WinKVM 上で Linux kernel 2.6.20 を起動させることに最終的に成功した.これで,VM ライブマイグレーションをおこなう土台が整ったことになる.We aim at providing the VM-live migration between Windows and Linux by building WinKVM, a port of Linux KVM to Windows. To construct WinKVM, we developed a method to emulate Linux kernel functions on Windows kernel. However, our previous work could not emulate the memory management system of Linux on Windows correctly. There was an inconsistency of memory between the QEMU and the KVM driver. Therefore, we could not achieve VM-live migration. To achieve correct emulation of Linux memory management system, we have developed a channel sharing KVM internal memory management information with our emulation layer. We succeeded in executing the Linux kernel 2.6.20 on WinKVM eventually. Now, we could build the fundamental of VM-live migration between WinKVM and KVM.
著者
笹田 耕一 卜部 昌平 松本 行弘 平木 敬
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.5, no.2, pp.25-42, 2012-03-30

我々は,高性能なRuby処理系の開発を行っている.Ruby処理系は仮想マシン(VM)を用いて実現されているが,現在のVMでは,同時にたかだか1つのRubyスレッドのみ実行するという制約があり,並列実行をサポートしていない.また,複数のRubyプロセスを用いて並列実行すると,計算に必要となるオブジェクトの転送がプロセス間転送となり,オーバヘッドが大きいという問題がある.そこで,我々は1つのプロセスに複数のVMを並列に実行できるマルチ仮想マシン(MVM)の開発を行っている.各VMはオブジェクト空間を独立に管理するが,各VMが同一プロセス内にあることを活かしたVM間の高速なオブジェクト転送を行うことができる.また,これらの機能をRubyから利用するためのプログラミングインタフェース(API)を設計した.さらに,Rubyの遠隔メソッド呼び出し機構であるdRubyをMVM上で利用できるように拡張し,MVMの利用を容易に行うことができるようにした.MVMの実装は,現在の処理系との互換性を維持するため,既存の処理系のプロセス全体で共有されるデータ,たとえばC言語のグローバル変数やI/O資源などを,VMごとに保持するようデータ構造を変更することで行った.本論文では,開発しているMVMの設計と実装について述べ,MVMを用いるためのAPIを説明する.そして,MVMを用いた並列処理の現在の実装での性能評価について述べる.
著者
中川 博貴 笹田 耕一
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.5, no.4, pp.1-16, 2012-09-04

我々はオブジェクト指向スクリプト言語Rubyにおいて,マルチコアプロセッサによる並列プログラミングを効率的,かつユーザが扱いやすい形で実現することを目指し,Rubyオブジェクトのプロセス間転送・共有を行うTeleporterライブラリを開発した.既存のプロセス間通信機構でオブジェクトを転送するには,オブジェクトをバイナリ列に変換してから送信し,受信側でそれをオブジェクトに復元する必要があり,そのオーバヘッドが問題となっていた.そこでTeleporterでは通信路にプロセス間共有メモリを利用することで,オブジェクトを従来の機構よりも軽量なシリアライズ,もしくはシリアライズを行わずに転送するようにし,オーバヘッドの少ない通信を実現した.さらにプロセス間でRubyオブジェクトを安全に共有する仕組みについて設計し,実装を行った.Teleporterはユーザが手軽に利用できることを目指すため,Ruby処理系の改修を行わずにRubyの拡張ライブラリとして実装した.本稿では,開発したTeleporterの設計と実装,そしてAPIについて詳細に述べる.また,Teleporterを用いた評価結果を示し,その考察を示す.
著者
笹田 耕一 松本 行弘 前田 敦司 並木 美太郎
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.47, no.2, pp.57-73, 2006-02-15
被引用文献数
5

本稿ではオブジェクト指向スクリプト言語Ruby を高速に実行するための処理系であるYARV: Yet Another RubyVM の実装と,これを評価した結果について述べる.Ruby はその利用のしやすさから世界的に広く利用されている.しかし,現在のRuby 処理系の実装は単純な構文木をたどるインタプリタであるため,その実行速度は遅い.これを解決するためにいくつかの命令実行型仮想マシンが提案・開発されているが,Ruby のサブセットしか実行できない,実行速度が十分ではないなどの問題があった.この問題を解決するため,筆者はRuby プログラムを高速に実行するための処理系であるYARV を開発している.YARV はスタックマシンとして実装し,効率良く実行させるための各種最適化手法を適用する.実装を効率的に行うため,比較的簡単なVM 生成系を作成した.本稿ではRuby の,処理系実装者から見た特徴を述べ,これを実装するための各種工夫,自動生成による実装方法について述べる.また,これらの高速化のための工夫がそれぞれどの程度性能向上に寄与したかについて評価する.In this paper, we describe the implementation and evaluation results of YARV, next generation Ruby implementation. The Ruby language is used worldwide because of its ease of use. However, current interpreter is slow due to its evaluation method. To solve this problem, several virtual machine designs were proposed, but none of them exhibited adequate performance/functionality combination. Our implementation, called YARV (Yet Another Ruby VM), is based on a stack machine architecture. YARV incorporates a number of optimization techniques for high speed execution of ruby programs. In this paper, we describe the characteristics of Ruby from implementor's point of view, and present concrete solutions for these issues as well as implementation of optimization techniques. We also show how each of these optimizations contributed to the speed-up.
著者
笹田 耕一 松本 行弘
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.8, no.1, pp.12-12, 2015-06-02

世代別GC,およびインクリメンタルGCはよく知られたGCの改善手法であるが,実装するためには正確なライトバリアが必須である.一方,Ruby処理系は保守的マーク&スイープGCを用いることで,C言語などで拡張コードを書くときに余計なコードを含む必要がなかったが,ライトバリアを挿入しておらず,これを必要とするGCアルゴリズムを導入することができなかった.我々はこの問題を解決するために,ライトバリアに対応しているオブジェクトとしていないオブジェクトを区別して,世代別インクリメンタルGCを実装する新しい方法を提案する.本発表では提案する手法について説明し,Rubyへの実装について述べる.
著者
平木 敬 笹田 耕一 定兼 邦彦 牧野 淳一郎 井田 茂 稲葉 真理
出版者
東京大学
雑誌
基盤研究(S)
巻号頁・発行日
2009-04-01

本研究開発では、関数型オブジェクト指向言語であるRubyを拡張し、HPC向け高生産言語としてHPC Ruby言語を確立した。また、Rubyの特徴である計算環境の統合を生かし、HPC情報環境における新しいソフトウェア体系を実現した。HPC向け新言語の普及のため地球科学分野、天文分野、離散最適化分野においてRuby言語モデルを用いて問題定式化し、Rubyの科学技術計算位おける優位性を示した。分散実行環境の実証研究では、日米欧を100Gbpsインターネットで結び、その90%を高効率利用する通信方式を確立し、実験により実証した。これらの成果を総合し、Rubyを中心とした科学技術計算の体系を確立した。
著者
須永 高浩 笹田 耕一
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.4, no.3, pp.1-15, 2011-06-29

Ruby は高い生産性を持つプログラミング言語である.これまでもプログラムにあるそれぞれのメソッドの実行時間を計測することができるプロファイラは整備されてきた.しかし,分析対象プログラムの実行と並行してリアルタイムプロファイリングが行えるツールが存在しなかった.そこで,本研究では Ruby で書かれたソフトウェアのプロファイリングをリアルタイムに行える実行時間プロファイラを開発した.本プロファイラは,対象となる Ruby で記述されたプログラムの,メソッド単位での実行時間情報を取得することが可能である.この情報取得はネットワークで接続された別のホストからリアルタイムに行うことができる.さらに,それぞれの情報についてプログラムのエントリポイントからの完全なコールパスを関連付けてプロファイリングを行うことが可能であり,対象となるプログラムのパフォーマンスの傾向を詳細に把握することが可能である.本プロファイラは,プロファイリングモジュールとモニタプログラムに分離されており,プロファイリングモジュールで情報を収集し,モニタプログラムがその情報をユーザへリアルタイムに提供する.本稿では,本プロファイラの設計と実装について述べる.また,本プロファイラのオーバヘッドの評価を行い,その結果を述べる.実用的なプログラムによる評価では 1.15 倍程度の実行時間の増加となり,本プロファイラは実用的であるとの結論を得た.Ruby is a programming language which has high productivity. Up to now, Ruby's performance profilers that are able to measure execution time of each method have been developed. However, there is no real-time profiler that is able to show the profiling result while a Ruby program is running. We developed a profiler that is able to profile programs written in Ruby language in real time. The profiler can get execution time information of each method in the target Ruby program. It is able to get the information from a foreign host connected by network in real time. Furthermore, the profiler can profile associating each information with the entire call-path from an entry point of the program. With this call-path informathion users can know the trend in program performance in detail. The profiler consists of two parts: a profiling module and a monitor program. The profiling module collects information, and the monitor program provides information for users in real time. In this paper, we describe the design and implementation of our proposed profiler. We also describe the result of overhead evaluation for the profiler. Execution time increases 1.15 times in a practical example. We conclude that our profiler is capable for practical use.
著者
芝 哲史 笹田 耕一 平木 敬
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.5, no.3, pp.1-22, 2012-08-20

近年,様々なスクリプト言語処理系に対してコンパイラが開発されている.これらのコンパイラは処理系に組み込む形で実装されることが多く,新しくコンパイラを開発するために,処理系そのものの再実装や,処理系の大幅な改変が行われている.このため,スクリプト言語処理系に対する新たなコンパイラの開発には多大な労力をともなう.そこで我々は,スクリプト言語RubyのCによって実装された処理系(CRuby)の機能を活用することで,処理系に対して新たに手を加えることなく動作するコンパイラCastOffを開発した.CastOffは,実行時コンパイル,コンパイル済みコードの再利用,プロファイル実行,アノテーションのサポート,脱最適化,再コンパイルなどの機能を持つ.これらの機能を,CastOffはCRubyのCによる拡張ライブラリ(C拡張)としてCRubyにいっさいの変更を加えずに実現している.本稿ではCastOffの設計と実装を述べ,CastOffの機能をRubyのC拡張でどう実現したかを詳細に解説する.そして,CastOffのようにライブラリとしてコンパイラを実装するために,どのような機能が必要かを議論する.
著者
笹田 耕一 松本 行弘 前田 敦司 並木 美太郎
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.47, no.SIG2(PRO28), pp.57-73, 2006-02-15

本稿ではオブジェクト指向スクリプト言語Ruby を高速に実行するための処理系であるYARV: Yet Another RubyVM の実装と,これを評価した結果について述べる.Ruby はその利用のしやすさから世界的に広く利用されている.しかし,現在のRuby 処理系の実装は単純な構文木をたどるインタプリタであるため,その実行速度は遅い.これを解決するためにいくつかの命令実行型仮想マシンが提案・開発されているが,Ruby のサブセットしか実行できない,実行速度が十分ではないなどの問題があった.この問題を解決するため,筆者はRuby プログラムを高速に実行するための処理系であるYARV を開発している.YARV はスタックマシンとして実装し,効率良く実行させるための各種最適化手法を適用する.実装を効率的に行うため,比較的簡単なVM 生成系を作成した.本稿ではRuby の,処理系実装者から見た特徴を述べ,これを実装するための各種工夫,自動生成による実装方法について述べる.また,これらの高速化のための工夫がそれぞれどの程度性能向上に寄与したかについて評価する.
著者
笹田 耕一
雑誌
第52回プログラミング・シンポジウム予稿集
巻号頁・発行日
vol.2011, pp.145-152, 2011-01-07

プログラミング言語Rubyはスレッドプログラミングをサポートする。スレッド処理機構を実現するため、Ruby1.8処理系はユーザレベルスレッドを独自に実装していたが、我々は最新のRuby1.9処理系において、OSなどが提供するネイティブスレッドを用いる方式で実装した。具体的には、POSIX Tthread (Pthread)と Windowsスレッドに対応している。しかし、このRuby1.9処理系のスレッド実装は次のような問題点がある。(1)タイマスレッドが定期的に監視を行うため、CPUを低消費電力状態に保つことができない(2)複数CPUでのCPU利用権の放棄がうまくいかない。我々はこれらの問題に対して、(1)タイマスレッドの改善(2)CPU利用権の受け渡し方式の変更、を行うことで問題点を解決し、スレッド実装を改善した。本稿では既存のRuby処理系でのスレッド実装について述べ、問題点をまとめ、この改善手法について述べる。そして、改善後のRuby処理系の性能について評価した結果を示す。
著者
芝 哲史 笹田 耕一
雑誌
第51回プログラミング・シンポジウム予稿集
巻号頁・発行日
vol.2010, pp.21-28, 2010-01-12

本発表では、Ruby1.9が提供するFiberという機能の高速な実装を報告する。Fiberとは、プログラマに対して並行処理をサポートするための機構であり、状態を持つ処理を並行に扱う際に有用である。しかし、Ruby1.9におけるFiberは速度面に問題がある。そこで我々は、Ruby1.9処理系に対してFiberの高速化を行い、複数の環境で評価を行った。その結果、Fiberの速度の向上を確認することができた。本発表では、Ruby1.9の現在の実装と我々の行った実装の紹介と、その性能評価を行う。そして、それらが実際にFiberを利用するRubyプログラムに対して、どのような影響を与えるかを考察する。
著者
須永 高浩 笹田 耕一
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.29, no.4, pp.4_95-4_113, 2012-10-25 (Released:2012-11-25)

本研究では,スクリプト言語用プロファイラの実装を容易に行うためのフレームワークの開発を行った.本フレームワークを用いることで,プログラムの性能情報をリアルタイムに取得するプロファイラを構築できる.本フレームワークは複数のスクリプト言語に対応することができ,計測内容も容易に追加できる.また,プロファイリングの利便性を高めるため,ネットワークで接続された別のホストから接続し遠隔で情報取得するための機能や,コンテキスト情報を含んだ情報を取得するための機能を提供する.本論文では本フレームワークの設計と実装を示す.また,本フレームワークによるプロファイラの参考実装を行い,本フレームワークによるプロファイラを使用した実運用しているアプリケーションに対する分析事例を示し,本フレームワークが実用的であることを示す.
著者
芝 哲史 笹田 耕一 卜部 昌平 松本 行弘 稲葉 真理 平木 敬
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.4, no.1, pp.90-108, 2011-03-16

本稿では,Ruby 処理系とほぼ完全な互換性を持つ AOT コンパイラの設計と実装について述べる.Ruby は数多くのライブラリを持ち,数多くの環境をサポートしているプログラミング言語の 1 つである.本研究では,Ruby 処理系との互換性,および可搬性に優れた手法を用いて,既存のすべての Ruby プログラムを,Ruby がサポートするすべての環境で高速化することを目標としている.我々は,この目標を達成するために,Ruby スクリプトをコンパイルしたバイトコード列を C 言語に変換し,Ruby 処理系の仮想マシン (RubyVM) 上で動作させる AOT コンパイラを開発した.開発した AOT コンパイラは,生成する C 言語ソースコードを RubyVM のメソッド呼び出し機構,例外処理機構などを利用して動作させることで,Ruby 処理系との互換性をほぼ完全に保ちながら,Ruby プログラムの実行を高速化する.本稿では開発した AOT コンパイラの設計と実装,開発によって得られた知見について詳しく解説する.そして,開発した AOT コンパイラの機能と性能を評価する.
著者
笹田 耕一 佐藤未来子 河原 章二 加藤義人 大和 仁典 中條拓伯 並木 美太郎
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌コンピューティングシステム(ACS) (ISSN:18827829)
巻号頁・発行日
vol.44, no.11, pp.215-225, 2003-08-15
参考文献数
11
被引用文献数
10

近年,マルチスレッドプロセッサアーキテクチャの研究が盛んである.このアーキテクチャの性能を引き出すためには,システムソフトウェアのサポートが不可欠であるが,従来のモデルでは,カーネルが計算実体を管理するため,このアーキテクチャの利点を十分に活用することができなかった.そこで本研究では,マルチスレッドアーキテクチャ上で効率的に機能するユーザレベルスレッドライブラリの実現方法を検討し,実際に作成した.ライブラリは,1チップが複数持つ実スレッドを管理し,スレッドの並列実行をサポートすることで性能を向上させる.また,プロセッサのスレッド制御命令を利用することで,高速なスレッド制御を可能にする.ユーザレベルでスレッドを管理するうえで困難な問題はOSと協調動作することで解決する.シミュレータによる評価の結果,スレッドの並列実行により最大1.5倍の性能向上を確認した.また,軽量なスレッド制御を実現した.Recently, there are many studies on multithreaded processor architecture. In order to get the higher performance of this architecture, support of system software is indispensable. However, from the view of performance, the advantage of the architecture has not been utilized enough without kernel supports for Architecture (Physical) Threads. In this research, we have designed and developed a thread library that works efficiently on a multithread architecture. Architecture Threads of a processor are managed on a user level library supports to parallelize threads and improve performance. Using the thread control instructions of the processor enables high-speed thread control. Inefficiency when managing threads on a user level would be improved by cooperation with OS. As a result of simulation based evaluation, up to 1.5 times higher performance has been gained by parallel execution. Moreover, we have accomplished a lightweight thread control.