研究概要 |
今年度は、静的型付き関数型言語であるStandard MLの処理系である、SML#処理系(東北大学電気通信研究所大堀研究室において実装)に対して、(1) Standard ML言語への固定長ベクタ型の導入、(2) Standard ML言語の固定長ベクタ型データ構文・演算による拡張の導入、を行った。ターゲット環境はIntel IA-32アーキテクチャとし、上記演算の実装においては、IA-32アーキテクチャにおいて提供されているSIMD命令を使用した。 (1) Standar ML言語への固定長ベクタ型の導入 Standard ML言語に対して、固定長ベクタ型を導入した。この型は、格納されるデータ型と長さの組、例えば、4要素整数ベクタ型の場合は"(int, 4) vector"などと表現され、実装上、32ビット整数が4つ連続領域に格納されたデータとして格納されることとなる。格納されるデータ型には制限はなく、MLの特徴である多相型も利用可能である。 (2) Standard ML言語の固定長ベクタ型データ構文・演算による拡張の導入 前項で導入したデータ構造を容易にプログラム中で標記出来るようにするため、固定長ベクタをリテラルとして表現できるようにした。例えば、4要素整数ベクタは"[<1,2,3,4>]"としてプログラムに記述することが出来る。あわせて、この標記をパターンマッチでも使用できるようにした。例えば、引数として4要素のベクタ型を受け取る関数は、"fun f [<x, _, _, _>]=x;"として記述することが出来る。この関数は、∀α.(α,4) vector -> αの型を持ち、多相型も利用可能である。 また、4要素整数ベクタの加算など、アーキテクチャのサポートがある演算について、ハードウェアのSIMD命令を使用したプリミティブを実装した。 本課題の対象であるヘテロジニアスマルチコア環境では、ベクトル演算処理などが多用される。そのため、このようなSIMD演算をprimitiveとして導入しておくことにより、本課題の目標である、MLでのより高速な並列演算処理の実現に貢献すると考えられる。
|