(57)【要約】【課題】アレイ型プロセッサに対するアセンブラを提供する。【解決手段】アセンブラは、複数のプロセッサエレメントを行列状に配置したアレイ型プロセッサを対象とし、プロセッサエレメントの行方向の数及び列方向の数を指定する行列数情報と、各プロセッサエレメントが接続できる他のプロセッサエレメントを示す接続情報とに基づき、アセンブラプログラムの各命令をプロセッサエレメントに割当て、各命令について、割り当てられたプロセッサエレメントの行列内での位置を示す位置情報が付加された中間語を生成する割当手段と、中間語をコード化してオブジェクトプログラムを出力するコード生成手段とを備えている。【選択図】図１
2007102451.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサエレメントを行列状に配置したアレイ型プロセッサのアセンブラであって、
プロセッサエレメントの行方向の数及び列方向の数を指定する行列数情報と、各プロセッサエレメントが接続できる他のプロセッサエレメントを示す接続情報とに基づき、入力アセンブラプログラムの各命令をプロセッサエレメントに割当て、各命令について、割り当てられたプロセッサエレメントの行列内での位置を示す位置情報が付加された中間語を生成する割当手段と、
中間語をコード化してオブジェクトプログラムを出力するコード生成手段と、
を有することを特徴とするアセンブラ。
【請求項２】
前記中間語から、各命令について、割り当てられたプロセッサエレメントの位置情報を含むアセンブラプログラムを生成するアセンブラプログラム生成手段を有することを特徴とする請求項１に記載のアセンブラ。
【請求項３】
割当手段は、行列数情報で指定される行数及び列数の行列状プロセッサエレメントを１ブロックとして、１つ以上のブロックが行方向又は列方向に直列に接続されているものとして全命令をプロセッサエレメントに割当て、同一ブロックに属する命令を識別する情報を付加した中間語を生成することを特徴とする請求項１又は２に記載のアセンブラ。
【請求項４】
割当手段は、入力アセンブラプログラムに、プロセッサエレメントの位置情報が付与された命令があった場合、該命令を、該命令に付与された位置情報で指定されるプロセッサエレメントに割り当てることを特徴とする請求項１から３のいずれか１項に記載のアセンブラ。
【請求項５】
コンピュータを、複数のプロセッサエレメントを行列状に配置したアレイ型プロセッサのアセンブラとして機能させるプログラムであって、
コンピュータに、
プロセッサエレメントの行方向の数及び列方向の数を指定する行列数情報と、各プロセッサエレメントが接続できる他のプロセッサエレメントを示す接続情報とに基づき、アセンブラプログラムの各命令をプロセッサエレメントに割当て、各命令について、割り当てられたプロセッサエレメントの行列内での位置を示す位置情報が付加された中間語を生成するステップと、
中間語をコード化してオブジェクトプログラムを出力するステップと、
を実行させることを特徴とするプロググラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アレイ型プロセッサ用のアセンブラに関する。
【背景技術】
【０００２】
特許文献１には、それぞれがプログラムに従った演算処理を行うプロセッサエレメントを行列状に配置したアレイ型プロセッサが開示されている。特許文献１によると、アレイ型プロセッサは、プロセッサエレメント間の電気的接続を行う複数のプログラマブルスイッチエレメントを備え、プログラマブルスイッチエレメントは接続構成情報に従い各プロセッサエレメント間の接続を行うことで、処理目的に応じたプロセッサエレメント間の接続を実現している。
【０００３】
これら、アレイ型プロセッサに対するプログラミングは、特殊な記述言語又はグラフィック表示によるビジュアル言語により行われている（例えば、非特許文献１参照。）。
【０００４】
【特許文献１】特開２００１−３１２４８１
【非特許文献１】“Ｔｈｅ  ＸＰＰ  Ｗｈｉｔｅ  Ｐａｐｅｒ  Ｒｅｌｅａｓｅ  ２．１”、ｐ．１２−ｐ．１７、［ｏｎｌｉｎｅ］、ＰＡＣＴ  Ｉｎｆｏｒｍａｔｉｏｎｓｔｅｃｈｎｏｌｏｇｉｅ  ＧｍｂＨ、［平成１７年９月１６日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｐａｃｔｃｏｒｐ．ｃｏｍ／ｘｎｅｕ／ｄｏｗｎｌｏａｄ／ｘｐｐ＿ｗｈｉｔｅ＿ｐａｐｅｒ．ｐｄｆ＞
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特殊な記述言語によるプログラムの開発は、他のプロセッサのプログラム開発には利用できない言語を習得しなければならないという問題があり、また、ビジュアル言語によるプログラムの開発については、ビジュアル言語を実現するための、ユーザインタフェース等のツールの開発に時間及びコストがかかるという問題がある。
【０００６】
一方、アレイ型プロセッサに対するプログラミングにおいても、従来のプログラミングに用いられているアセンブラ言語が利用できれば開発効率を向上させることができる。また、アセンブラ言語からアレイ型プロセッサが実行するオブジェクトプログラムを生成するアセンブラは、その開発もビジュアル言語等に較べてはるかに容易であるという利点もある。
【０００７】
従って、本発明は、アレイ型プロセッサに対するアセンブラを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明におけるアセンブラによれば、
複数のプロセッサエレメントを行列状に配置したアレイ型プロセッサのアセンブラであって、プロセッサエレメントの行方向の数及び列方向の数を指定する行列数情報と、各プロセッサエレメントが接続できる他のプロセッサエレメントを示す接続情報とに基づき、入力アセンブラプログラムの各命令をプロセッサエレメントに割当て、各命令について、割り当てられたプロセッサエレメントの行列内での位置を示す位置情報が付加された中間語を生成する割当手段と、中間語をコード化してオブジェクトプログラムを出力するコード生成手段とを有することを特徴とする。
【０００９】
本発明のアセンブラにおける他の実施形態によれば、
前記中間語から、各命令について、割り当てられたプロセッサエレメントの位置情報を含むアセンブラプログラムを生成するアセンブラプログラム生成手段を有することも好ましい。
【００１０】
また、本発明のアセンブラにおける他の実施形態によれば、
割当手段は、行列数情報で指定される行数及び列数の行列状プロセッサエレメントを１ブロックとして、１つ以上のブロックが行方向又は列方向に直列に接続されているものとして全命令をプロセッサエレメントに割当て、同一ブロックに属する命令を識別する情報を付加した中間語を生成することも好ましい。
【００１１】
更に、本発明のアセンブラにおける他の実施形態によれば、
割当手段は、入力アセンブラプログラムに、プロセッサエレメントの位置情報が付与された命令があった場合、該命令を、該命令に付与された位置情報で指定されるプロセッサエレメントに割り当てることも好ましい。
【００１２】
本発明におけるプログラムによれば、
コンピュータを、前記アセンブラとして機能させることを特徴とする。
【発明の効果】
【００１３】
アレイ型プロセッサに対するプログラムの開発を、従来のプログラミングに用いられているアセンブラ言語により行うことを可能とし、プログラムの開発効率が向上する。また、アセンブラ用プログラムの開発は、ビジュアル言語のためのツール開発に較べて簡易なものであり、低コストでアレイ型プロセッサ用のプログラムの開発環境を提供することができる。
【００１４】
アセンブラプログラム生成手段が、各命令について、割り当てられたプロセッサエレメントの位置情報を含むアセンブラプログラムを生成するため、プログラマが命令の配置の確認を行うことができ、デバッグ作業の効率を上げることができる。
【００１５】
入力アセンブラプログラムにも、プロセッサエレメントの位置情報が付与された命令の使用を可能とすることで、命令を実行させるプロセッサエレメントの位置をプログラマが指定でき、プログラム開発の利便性が増す。
【発明を実施するための最良の形態】
【００１６】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。まず、始めに本発明で用いる用語の定義を行う。本発明において、アセンブラプログラムとは、各プロセッサエレメントの命令コードをニーモニックで表現した命令列からなるプログラムを言う。また、アセンブラとは、前記アセンブラプログラムを入力してアレイ型プロセッサが実行するオブジェクトプログラムを生成する装置をいう。
【００１７】
図１は、本発明によるアセンブラ１のブロック図である。図１によるとアセンブラ１は、解析部１１と、割当部１２と、コード生成部１３と、アセンブラプログラム生成部１４とを備えている。
【００１８】
解析部１１は、アセンブラプログラム２を入力として、中間語３を出力する。図２は、本発明の説明に使用するアセンブラプログラム２を説明する図である。図２において（ａ）は、アセンブラプログラム２を示し、（ｂ）は、そのデータフローグラフを示している。
【００１９】
図２（ａ）において、命令２１、２２、２３、２７のｌｄはロード命令であり、それぞれ、第１オペランドで示す位置にある値を、第２のオペランドで示されている変数に設定する。ここで、第１オペランドの、例えば、８（ｄａｔａ１）とは、データ保存領域のｄａｔａ１で示される位置から８バイトだけオフセットした位置を示している。また、命令２６及び２９のｓｔはストア命令であり、それぞれ、第２オペランドの変数に格納されている値を、第１オペランドで示す位置に格納する。尚、第１オペランドの意味は、ロード命令と同じである。更に、命令２４、２５、２８のａｄｄ、ｍｕｌ、ｓｕｂは、それぞれ、加算命令、乗算命令、減算命令であり、第１オペランド及び第２オペランドの値に対して、それぞれ、加算、乗算、減算を行い、結果を第３オペランドに格納する。また、命令２８の第２オペランドの＃１は即値である。
【００２０】
図２（ｂ）において、データフローグラフの符号は、図２（ａ）の対応する命令を示している。以後の説明において、データフローグラフの命令を示す部分をデータフローグラフのノードと呼び、データを直接入出力する２つのノード間で、データを出力する側を入力する側に対する上位ノード、データを入力する側を出力する側に対する下位ノードと呼ぶ。例えば、命令２３のノードは、命令２５のノードに対する上位ノードであり、命令２５のノードは命令２３のノードの下位ノードである。また、他のノードの下位ノードとならないノードを最上位ノードと呼び、他のノードの上位ノードとならないノードを最下位ノードと呼ぶ。例えば、図２（ｂ）において命令２１、２２、２３及び２７は最上位ノードであり、命令２６及び２９は最下位ノードである。
【００２１】
図３は、図２に示すアセンブラプログラム２を入力とした解析部１１が出力する中間語３を示す図である。図３の各行の符号は、アセンブラプログラム２の各命令に対応する符号を示している。図３の中間語３において、符号３１０は、位置情報フィールドである。尚、理解のためアセンブラ言語に似た表記を使用しているが、実際には所定の２進数の値により中間語３は表現される。また、オペランドはネームテーブルへのポインタである。
【００２２】
図１に戻り、割当部１２は、アレイ型プロセッサを構成するプロセッサエレメントの列数Ｎ及び行数Ｍを指定する情報である行列数情報を有している。また、プロセッサエレメントが接続可能な他のプロセッサエレメントを特定する接続情報も有している。以後の説明において、ｎ列ｍ行（１≦ｎ≦Ｎ、１≦ｍ≦Ｍ）にあるプロセッサエレメントの位置を（ｎ、ｍ）形式の位置情報で表現し、接続情報は、“ｎ列のプロセッサエレメントは、ｎ＋１列にある任意のプロセッサエレメントと接続することが可能”であるものとして説明を行う。
【００２３】
割当部１２は、入力する中間語３の命令列を解析して、図２（ｂ）に示す、入力したアセンブラプログラム２のデータフローグラフを認識し、行列数情報及び接続情報に基づき、データフローグラフのノードを、プロセッサエレメントに割り当てる。即ち、中間語３の各命令と、各命令を実行するプロセッサエレメントの対応付けを行う。このとき、後述するようにデータのバイパスを行うＮＯＰ命令を必要に応じて追加する。その後、中間語３の位置情報フィールド３１０に、各命令に割り当てられたプロセッサエレメントの位置情報を設定し、更に、同時にプロセッサエレメントにロードすることが可能な命令を示すブロック情報４１０を追加して中間語４を出力する。ブロック情報４１０の詳細については後述する。
【００２４】
図４は、行列数情報が４列４行である場合の割当部１２における命令の割当て状態を示す図であり、図５は、割当部１２が出力する中間語４である。図４（ａ）は、割当て前の状態であり、各四角形がそれぞれプロセッサエレメントを表し、各プロセッサエレメント内にはその位置情報を（ｎ、ｍ）形式で表示している。図４（ｂ）は、命令の割当て状態を示す図であり、各プロセッサエレメントを表す四角内に、図３に示す命令に対応する符号を表示している。また、矢印は、使用するプロセッサエレメント間の接続を表している。尚、理解のため中間語４に対して、アセンブラ言語に似た表記を使用しているが、実際には所定の２進数の値により中間語４は表現され、また、オペランドはネームテーブルへのポインタである。
【００２５】
データフローグラフの各ノードのプロセッサエレメントへの割当ては、任意のアルゴリズムが使用可能である。図４（ｂ）においては、図２（ｂ）に示す最上位ノードを順に、第１列の各プロセッサエレメントに割当て、第２列以降は、第１列で割り当てたノードの下位ノードを順に割り当てていった場合の例である。しかしながら、１つの最上位ノードを第１列に割り当てた後、割り当てた最上位ノードの下位ノードを先に列方向に割当て、続いて、割り当てたノードに合流してくる上位ノードを割り当てていく方法や、逆に最下位ノードから順に割り当てていく方法であってもよい。
【００２６】
本例においては、命令２３を実行する（１、３）の位置にあるプロセッサエレメントが出力するデータは、３列目にある命令２５への入力となる。本例においては、プロセッサエレメント間の接続規則を、１列目と３列目を直接接続することができないこととしているため、単に（１、３）の位置にあるプロセッサエレメントが出力するデータを（３，１）の位置にあるプロセッサエレメントにバイパスするために（２，３）の位置にあるプロセッサエレメントを使用している。
【００２７】
上述したバイパスを表すため、図５に示す様に、中間語４には、命令３０が追加されている。命令３０に示すＮＯＰは、第１オペランドのデータをそのまま第３オペランドに出力することを示している。尚、命令３０の第３オペランドのｃ’は、（２、３）の位置にあるプロセッサエレメントの入力、即ち変数ｃと区別するために割当部１２が生成した変数であり、これに伴い命令２５の第１オペランドも割当部１２はｃ’に変更している。また、中間語４の各命令の位置情報フィールド３１０には、割り当てられたプロセッサエレメントの位置情報が設定され、プロセッサエレメントに対して同時にロード可能な命令を示すブロック情報４１０が追加されている。行列数情報が４列４行である場合は、ブロック情報４１０は、命令２１の前に付加されており、同時にプロセッサエレメントにロード可能な命令２１〜命令３０を示す情報を有している。尚、各プロセッサエレメント間に必要な接続は、中間語４のオペランドから判定可能であり、ブロック情報４１０の位置は、上記位置以外でもよい。
【００２８】
尚、接続情報が“ｎ列のプロセッサエレメントは、ｎ＋１及びｎ＋２列にある任意のプロセッサエレメントと接続することが可能”であるとすれば、（１，３）と（３，１）を直説接続することができるため、バイパスのためにプロセッサエレメントを使用する必要はない。
【００２９】
図６は、行列数情報が２列２行である場合の割当部１２における命令の割当て状態を示す図である。図６（ａ）は、割当て前の状態であり、各四角形がそれぞれプロセッサエレメントを表し、各プロセッサエレメント内にはその位置情報を（ｎ、ｍ）形式で表示している。図６（ｂ）は、命令の割当て状態を示す図であり、各プロセッサエレメントを表す四角内に、図３に示す命令に対応する符号を表示している。また、実線の矢印は、使用するプロセッサエレメント間の接続を表している。図６ではプロセッサエレメントが２列２行の計４個であるため、図２（ｂ）に示すノードが９個あるデータフローグラフを１回で割り当てることができない。このため、割当部１２は、行列数情報に基づく２列２行のプロセッサエレメントを１ブロックとして、このブロックが行方向に直列に接続されているものとして命令の各プロセッサエレメントへの割当てを行う。図６（ｂ）においては、ブロック５１、ブロック５２及びブロック５３の３つに分けて割当てを行っている。アレイ型プロセッサにおいては、ブロック５１がまず実行され、続いて、ブロック５２が実行され、最後にブロック５３が実行されることになる。図６（ｂ）の点線の矢印は、異なる時間に実行される各ブロック間で入出力されるデータを表しており、これらブロック間のデータの受渡しには、例えば、メモリが使用される。
【００３０】
尚、図６（ｂ）において行方向にブロックを接続したのは、接続情報によりデータが行方向に流れるからであり、データが列方向に流れるときは列方向に接続となる。
【００３１】
図７は、行列数情報が２列２行である場合の割当部１２が出力する中間語４である。中間語４には、位置情報と、図６（ｂ）に示すブロック５１、５２及び５３に対応してブロック情報４１０、ブロック情報４１１及びブロック情報４１２とが付加されている。ブロック情報４１０は、プロセッサエレメントに同時にロード可能な命令、つまり、同一ブロックに属する命令２１〜２４を示す情報と、次に実行するブロック５２についての情報を含むブロック情報４１１を示す情報を有している。同様に、ブロック情報４１１は、同一ブロックに属する命令２５〜２８を示す情報と、ブロック情報４１２を示す情報を有し、ブロック情報４１２は、同一ブロックに属する命令２９を示す情報を有する。尚、ブロックの実行順を並び順とすることで次に実行するブロックを示す情報は省略可能である。ブロック情報４１０〜４１２により、同一ブロックに属する命令を識別することが可能となる。
【００３２】
図１に戻り、コード生成部１３は、中間語４をコード化し、各プロセッサエレメントが実行するオブクジェクトプログラム５を生成する。尚、オブジェクトプログラム５には、各プロセッサエレメント間の接続関係を指定する情報も含まれている。
【００３３】
アセンブラプログラム生成部１４は、中間語４を入力とし、各命令について、割り当てられたプロセッサエレメントの位置情報を含むアセンブラプログラム６を生成して、出力する。図８は、図５に示す中間語４を入力したアセンブラプログラム生成部１４が出力するアセンブラプログラム６を示す図である。命令の配置を確認できるアセンブラプログラム６は、デバッグ作業の効率を上げる有用な情報をプログラマに提供する。
【００３４】
アセンブラプログラム６を用いてデバッグ作業を行った後、各命令について、割り当てられたプロセッサエレメントの位置情報を有するアセンブラプログラム６を、アセンブラ１への入力として使用することもできる。この場合、本発明によるアセンブラ１は、その設定に応じて、既に記載されたプロセッサエレメントの位置情報を、無視又は利用する。また、全命令に対して、割り当てられたプロセッサエレメントの位置情報を有するアセンブラプログラム６を入力するだけでなく、一部の命令に対してのみ位置情報を有するアセンブラプログラムを入力することも可能である。
【００３５】
アセンブラ１において、位置情報を無視する場合、アセンブラ１の各部の動作は既に説明したのと同じである。利用する場合、解析部１１は、中間語３の位置情報フィールドに、指定された位置情報を設定する。また、割当部１２は、中間語３に位置情報が設定されている場合には、その位置をそのまま使用して、位置情報が設定されていない命令に対してのみプロセッサエレメントの割当処理を行う。もし、指定された位置情報を使用することに問題がある場合にはエラー情報を出力する。
【００３６】
上記構成により、命令を実行させるプロセッサエレメントの位置をプログラマが指定できるためプログラム開発の利便性が増す。
【００３７】
尚、本発明によるアセンブラは、コンピュータに上述した処理を実行させるプログラムにより実現可能である。
【図面の簡単な説明】
【００３８】
【図１】本発明によるアセンブラのブロック図である。
【図２】本発明の説明に使用するアセンブラプログラムを示す図である。
【図３】図２に示すアセンブラプログラムを入力とした解析部が出力する中間語を示す図である。
【図４】行列数情報が４列４行である場合の割当部における命令の割当状態を示す図である。
【図５】行列数情報が４列４行である場合の割当部が出力する中間語である。
【図６】行列数情報が２列２行である場合の割当部における命令の割当状態を示す図である。
【図７】行列数情報が２列２行である場合の割当部が出力する中間語である。
【図８】アセンブラプログラム生成部が出力するアセンブラプログラムを示す図である。
【符号の説明】
【００３９】
１  アセンブラ
２、６  アセンブラプログラム
３、４  中間語
５  オブジェクトプログラム
１１  解析部
１２  割当部
１３  コード生成部
１４  アセンブラプログラム生成部
２１〜２９、３０  命令
５１〜５３  ブロック
３１０  位置情報フィールド
４１０、４１１、４１２  ブロック情報
【図１】
2007102451.tif 000003
【図２】
2007102451.tif 000004
【図３】
2007102451.tif 000005
【図４】
2007102451.tif 000006
【図５】
2007102451.tif 000007
【図６】
2007102451.tif 000008
【図７】
2007102451.tif 000009
【図８】
2007102451.tif 000010