著者
斎藤 奨悟 追川 修一
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS)
巻号頁・発行日
vol.2012, no.1, pp.1-8, 2012-02-21

近年,アプリケーションの動作を高速化するため,プロセッサが SIMD(Single Instruction Multiple Data) ユニットを搭載することが一般的となっている.SIMD ユニットは,動画像など,大きなデータ処理の高速化に用いられるが,システムソフトウェアで利用されることは想定されていない.しかし,OS(Operating System) カーネルは多くのデータを扱う特徴を持つため,SIMD ユニットを活用することで高速化を図る事が出来る箇所があると考えられる.本研究では、システムソフトウェアにおける SIMD ユニットを活用するための考察および,検証を行った.また,実際の適用例として,OS カーネルにおけるデータコピーにまつわる処理の高速化を確認した.Nowadays, it is very common that a processor includes a SIMD (Single Instruction Multiple Data) unit in order to accelerate application processing. While a SIMD unit is a part of a processor, it evolves more rapidly than the integer unit of the processor. Since the use of an FPU (Floating Point Unit) and a SIMD unit is basically abandoned from the kernel, there can be places inside the kernel where a SMID unit works effectively to deal with a large amount of data processing. This paper describes our preliminary work to explore the possibility to utilize a SIMD unit in the kernel. We performed preliminary experiments by using UML (User Mode Linux) and show that data copying can be improved.
著者
佐伯 裕治 清水 正明 白沢 智輝 中村 豪 高木 将通 Balazs Gerofi 思 敏 石川 裕 堀 敦史
出版者
一般社団法人情報処理学会
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS)
巻号頁・発行日
vol.2013, no.15, pp.1-7, 2013-04-18

メニーコアプロセッサ向けの OS として,Linux カーネルと軽量カーネルが連携して管理するヘテロジニアス構成の OS を開発している.軽量カーネル上においても Linux カーネルのシステムコールを提供するために,軽量カーネルで実現されない Linux システムコールの処理は Linux カーネルに委譲する.引数がデータ領域を示すシステムコールの場合,転送が必要なデータの構造は API 仕様に依存するため,300 種類以上の Linux 互換システムコールに個別に対応したデータ転送を実装する必要がある.本稿では,システムコール処理対象となるデータを同一仮想アドレスへのメモリマップを行う方式により,軽量カーネルに個々のシステムコール処理を実装することなく Linux カーネルに委譲する機構と,その基本評価結果について報告する.We have been developing a heterogeneous OS composed of Linux and lightweight kernels for manycore processor. In order to provide all Linux system calls in the lightweight kernel, those primitives which are not provided by the lightweight kernel are delegated to the Linux kernel. Each system call differs in the number of arguments and argument types, and thus the code transferring arguments and results is implemented in each delegating system call. It is impractical to implement all Linux APIs, i.e., more than 300 system calls. Therefore, we developed a delegation mechanism of system calls without individual implementation to pass the data between the lightweight kernel and Linux using a memory mapping technique. In this technique, a user-level virtual address space in the lightweight kernel is mapped to the same position in a Linux process. We report the result of basic evaluation of system calls on lightweight kernel developed on Intel(R) Xeon PhiTM Coprocessor.
著者
山田 真大 林 和宏 鈴木 章浩 岡本 幸太 小林 良岳 本田 晋也 高田 広章
出版者
一般社団法人情報処理学会
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS)
巻号頁・発行日
vol.2013, no.18, pp.1-7, 2013-07-24

組込み向け機器に利用されるハードウェアの高性能化に伴い,組込み OS として Linux などの汎用 OS が搭載されるようになった.組込み機器では,リアルタイム性が重要視されるため,Linux を採用する場合,カーネルに改良を施すことでリアルタイム性を確保している.また,マルチコア CPU を搭載する組込み機器では,Linux が持つ CPU affinity の機能を用いることで,シングルコアでは不可能であった高負荷時におけるリアルタイム性も確保することが可能になった.しかし,CPU コア毎に存在するカーネルスレッドは CPU affinity を適用することができず,また,この処理がまれに引き起こすタイマのカスケード処理には多くの処理時間を必要とし,リアルタイム性を阻害する原因となる.本論文では,マルチコア CPU の各コアを,リアルタイム性を必要とする CPU コアと不要とする CPU コアに分割し,リアルタイム性を必要とする CPU コアでは,タイマのカスケード処理を発生させないよう事前に対策を施すことで,リアルタイム性を確保する手法を提案する.With the increase in hardware performance of modern embedded systems, general-purpose operating systems (OS) such as Linux are commonly used as embedded OSs. Furthermore, the use of multi-core CPUs enables Linux to improve its real-time performance even on high-load scenarios which is rather hard to achieve on single-core CPUs thanks to its "CPU affinity" functionality. However, we found two issues in the current version of the Linux kernel: the CPU affinity of some kernel threads cannot be specified; and the use of timer cascading (use of multiple hardware timers to count time) increases the worst-case response time of real-time tasks. In this paper, we classify the cores in a multi-core CPU into 2 different groups: cores which require real-time performance guarantees; and cores which do not require such guarantees. Then, we propose and evaluate a method that improves the real-time performance of the system by disabling timer cascading on cores which require real-time performance guarantees.
著者
和田基 塚本潤 小林弘明 高橋昭宏 坂本龍一 佐藤未来子 天野英晴 近藤正彰 中村宏 並木美太郎
出版者
一般社団法人情報処理学会
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS)
巻号頁・発行日
vol.2013, no.5, pp.1-8, 2013-04-18

細粒度 PG (Power Gating) 制御を行うプロセッサでは,温度やキャッシュのヒット率などの動的なスリープ要因を適切に反映した命令列を実行することが重要である.本発表では,JIT コンパイラの生成するコードに対して,動的要因として実行時のチップ温度を考慮した細粒度 PG 制御を最適化する方式を提案する.筆者らが研究している Geyser アーキテクチャの細粒度 PG 方式を QEMU ベースである AndroidEmulator によってシミュレートした評価実験において,PG 制御を行わない場合と比較し,VM と JIT コンパイラおよび生成されたコードを実行するプロセス全体で平均 6%,最大 22% でリーク電力を削減することができた。
著者
小久保 翔平 河野 真治
出版者
一般社団法人情報処理学会
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS)
巻号頁・発行日
vol.2014, no.4, pp.1-7, 2014-05-07

当研究室では、PS3, Linux 及び MacOS X 上で動作する並列プログラミングフレームワーク Cerium を提案している。MacOS X 上で GPGPU を行うには、OpenCL または CUDA を用いる方法が考えられる。OpenCL, CUDA の API に対応した API を Cerium に用意することでデータ並列に対応した。タスク並列で実行する場合、データ転送がオーバーヘッドになる。このオーバヘッドを解決するためには、kernel の実行中にデータ転送を行うことでデータ転送をオーバーラップする必要がある。OpenCL では CommandQueue、CUDA では Stream を複数用いることでデータ転送や kernel の実行を並列に行うことができる。複数の CommandQueue, Stream を用いて、自動で並列実行を行うスケジューラーを実装した。実装したスケジューラーを WordCount、FFT を例題に測定し、考察を行う。We are developing parallel programming framework Cerium, that is running on the PS3, Linux, Mac OS X and GPGPU. As GPGPU support on Mac OS X, OpenCL or CUDA can be used in an API set. Data Parallel on GPUGPU is also working on CPUs. In Task Parallel, data transfer causes overhead. To resolve this, pipeline data transfer is used both on GPGPU and Many Cores. OpenCL and CUDA have slightly different behavior on Data Parallel and out of order task execution. In WordCount and FFT examples, we show the different and its analysis.
著者
奥畑聡仁 杉木章義 加藤和彦
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS)
巻号頁・発行日
vol.2012, no.21, pp.1-8, 2012-07-25

近年のクラウドコンピューティングの普及に伴い,データセンターの規模が拡大している.これらの多数の計算機資源を管理するデータセンターにおいて,日常的に発生している障害への対策は大きな課題である.本研究では,クラウド環境で典型的に行われるリソースプールから資源を取り出すという操作に着目し,その障害対策を Lineage と呼ばれるモデルを用いて導入する.障害が発生した資源の代わりをクラウド基盤ソフトウェアが自動的に用意し,透過的に障害に対応することを目指す.本研究では,この手法を当研究室で開発しているクラウド基盤ソフトウェアである Kumoi に導入し,いくつかのスクリプトを用いて実験を行い,障害発生時の Lineage の挙動を確認した.
著者
藤枝 崇史 新井 淳也 大村 圭 藤田 智成
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS)
巻号頁・発行日
vol.2012, no.7, pp.1-8, 2012-02-21

近年,多数のコンピュータを組み合わせることで性能のスケールアウトや冗長化を実現する分散システムの需要が高まっている.分散システムを開発する際には一貫性の保証が焦点となる.強い一貫性は可用性を犠牲にするため,応答速度が重視される Web サービス等のシステムとの相性が悪い.この問題を解決する一貫性に,結果整合性というモデルが存在する.しかし,結果整合性を利用する分散システムの開発は困難である.本論文で紹介する Bloom は,分散システム開発をターゲットとしたプログラミング言語である.Bloom には,結果整合性を利用する処理を簡便に記述できる,一貫性を厳密に保証すべき処理と結果整合性を利用しても良い処理の判別を自動的に行うことが可能である,などの特徴がある.本論文では,Bloom の処理系である Bud の内部実装の解析と,実行速度の評価を行った.評価の結果,Bloom のプログラム内で扱うデータ量が増えるほどにアクセス速度が増加するため,1000 個のデータを扱う場合,Bud のプログラムの処理速度は Ruby の 100 倍前後遅いという結果が得られた.Recently, we have seen a growing demand for distributed systems to achieve scale-out performance and availability by many computers. Tha main focus is ensuring consistency in distributed systems. Strong consistency sacrifice availability. Therefore strong consistency is unfit for the systems that require a high-speed response such as web services. Eventual consistency solves the problem. However development of distributed systems are difficult by using eventual consistency. Bloom is a programming language for distributed systems development. Bloom simplifies a distributed program to use in eventual consistency, and it is possible to automatically analysis whether to use strong consistency or eventual consistency. In this paper, we analyzed Bud, Bloom interpreter implementation, and evaluated of Bud processing speed. As a experimental result, processing speed to access objects increased linearly with increasing amount of objects handled by Bloom program. For example, If Bud program handle 1,000 objects, processing speed of Bud program is 100 times as slow as that of Ruby program.