[go: up one dir, main page]

JP2008033490A - マルチスレッドプロセッサ - Google Patents

マルチスレッドプロセッサ Download PDF

Info

Publication number
JP2008033490A
JP2008033490A JP2006204345A JP2006204345A JP2008033490A JP 2008033490 A JP2008033490 A JP 2008033490A JP 2006204345 A JP2006204345 A JP 2006204345A JP 2006204345 A JP2006204345 A JP 2006204345A JP 2008033490 A JP2008033490 A JP 2008033490A
Authority
JP
Japan
Prior art keywords
execution
instruction
semaphore
execution instruction
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006204345A
Other languages
English (en)
Inventor
Yasunari Suzuki
保成 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Victor Company of Japan Ltd
Original Assignee
Victor Company of Japan Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Victor Company of Japan Ltd filed Critical Victor Company of Japan Ltd
Priority to JP2006204345A priority Critical patent/JP2008033490A/ja
Publication of JP2008033490A publication Critical patent/JP2008033490A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)

Abstract

【課題】 プログラムの種類に係わらず並列実行及びシリアル実行を適応的に行い、並列度を高めても細粒度の並列実行を高効率で行うマルチスレッドプロセッサを実現する。
【解決手段】 スレッドユニット2a〜2hは、生成する実行命令に、演算ユニット5a〜5d中の任意の演算ユニットで実行される演算が他の演算ユニットで演算した演算結果を用いる依存性演算が含まれる場合は、被依存性実行命令を生成するスレッドユニットを特定してセマフォ情報を記憶領域21に記述する一方、生成する実行命令に被依存性実行命令が含まれる場合は、プログラム実行後にセマフォ情報をクリアさせる実行命令を付した実行命令を生成するプログラム生成部23と、セマフォ情報がクリアされた後に依存性演算の実行命令を、命令クロスバースイッチ4を介し演算ユニットに供給させる命令投入部24を備えて実現した。
【選択図】 図1

Description

本発明は、アプリケーションをスレッドと呼ばれる複数の処理単位に分割生成し、そのスレッドを順にパイプラインで実行するようになすマルチスレッドマイクロプロセッサに関し、特に少ない電力で多くの演算を高い効率で実行するマルチスレッドプロセッサに関する。
従来より、情報処理装置の処理能力を高めるため、逐次処理形の単体のプロセッサではRISC(Reduced Instruction Set Computer)、VLIW(Very Long Instruction Word;超長命令語)などが用いられている。しかし、半導体加工技術微細化の限界や処理量に伴う消費電力の増加などのため、動作周波数を高めて処理速度を上げることが難しくなってきている。
一方、情報処理装置には、マルチタスクやマルチスレッドなどのOS(Operating System)が使用されることが多く、その場合は複数の処理を平行して行える。プロセッサ単体の処理能力が小さくとも1つのLSI上に複数のプロセッサコアを搭載することにより処理能力を高められる。マルチコア技術が実用化されてきた。マルチコア以上にプロセッサを並列化する技術として、バスやネットワークを用い、多数のプロセッサを並列動作させる並列計算機がある。SMP(Symmetric Multi Processor)、NUMA(Non-Uniform Memory Access)、PCクラスタ、グリッド計算機などである。これらはハードウエア技術である。
ソフトウエア技術においても高い並列性のあるアルゴリズムが開発されている。特に、画像処理や3次元CGなどでは、光線の独立性に着目したレイトレース法などでの処理量の多い演算に用いられている。
従来の並列計算機では、逐次処理に適したプロセッサを複数並べることにより処理能力を高められる。反面、並列度を高めると設置場所が増えたり、消費電力が増加する。並列度のみを高めても個々のプロセッサでは演算器の利用効率が低いものも混在してしまう。並列度が高められ、且つ利用効率が高く保持されるプロセッサアーキテクチャの開発が望まれる。
特許文献1には、ハードウェアスケジューリング機能とソフトウェアスケジューリング機能とを混在させたマルチスレッドプロセッサが開示されている。スレッド実行ユニットが、処理中のスレッドが新たなスレッド生成を行うこと及び処理中のスレッドが終了することを可能とする機械語命令を備える。さらに、新しいスレッドの割り当てをハードウェアで直接行う機能と、ハードウェアによる割り当てを行うかどうかをソフトウェアで指示する機能と、ハードウェアによる割り当てを行わない場合に生成されるスレッドのレジスタコンテキストを保持する機能と、処理中のスレッドが終了する際に保持されているレジスタコンテキストをスレッド実行ユニット上に復旧する機能とを備え、必要に応じて、スレッド実行ユニットが処理中のスレッドにより生成される新しいスレッドを、処理中のスレッドが終了した後に自ら処理するようにしたマルチスレッドプロセッサが開示されている。
特開2000−207233号公報
しかしながら、特許文献1に開示されているマルチスレッドプロセッサでは、ハードウエアを用いる複数スレッドをシリアライズした実行処理とソフトウエアスケジューリングによる実行処理とを混在させながら処理能力を高めようとしているため、スケジューリング処理に適したプログラムの場合は実行処理を効率的に行うことが出来るものの、実行処理中には複数スレッドの処理状況を把握したり、ソフトウエアスケジューリングの処理を行うため又はハードウエアスケジューリングの処理を行うための判断を行ったり、いずれか一方の処理に移行するための新たな処理を行ったりしなければならない。全ての種類のプログラムに対して細粒度で並列実行させるマルチスレッドプロセッサを実現することはできなかった。
そこで、本発明は、上記のような問題点を解消するためになされたもので、アプリケーションプログラムの種類に係わらず並列実行及びシリアル実行を適応的に行い、並列度を高めても細粒度の並列実行を可能とし少ない電力で利用効率の高いパイプライン演算を行うことのできるマルチスレッドプロセッサを提供することを目的とする。
本願発明における第1の発明は、複数の実行命令群で記述されるアプリケーションプログラムを記憶したプログラムメモリを有し、前記アプリケーションプログラムの中の複数の実行命令群から一部の実行命令を取り出して、順次出力する複数のスレッドユニットと、前記複数のスレッドユニットから順次出力された前記一部の実行命令に対応した演算処理を行う複数の演算実行ユニットと、前記複数のスレッドユニットから順次出力された前記一部の実行命令に対応した演算実行ユニットを選択する命令クロスバースイッチと、前記複数のスレッドユニットで次の演算が実行される場合に、前記命令クロスバースイッチで選択された演算実行ユニットで演算を行った結果を次の実行用演算結果として前記複数のスレッドユニットのうち所望のスレッドユニットに供給する演算結果クロスバー制御部と、前記実行用演算結果が得られていないことを示すセマフォ情報を格納するセマフォ記憶部と、を有するマルチスレッドプロセッサにおいて、
前記複数のスレッドユニットのそれぞれは、
前記一部の実行命令が、前記実行用演算結果を用いて演算を行う依存性実行命令でなく且つ前記次の実行用演算結果を得るための被依存性実行命令である場合に、前記セマフォ情報を前記セマフォ記憶部に格納し、前記被依存性実行命令を実行させた後に前記実行用演算結果が得られたことを示す結果取得情報を当該実行命令を実行した演算実行ユニットから出力させる属性情報を付した実行命令を前記命令クロスバースイッチに出力し、
前記一部の実行命令が、前記依存性実行命令であり、且つ前記被依存性実行命令でない場合に、前記セマフォ記憶部の検索を行って、前記セマフォ情報が検出されたときには、前記依存性実行命令の前記命令クロスバースイッチへの出力を待機し、前記セマフォ情報が検出されなかったときには、前記依存性実行命令を前記命令クロスバースイッチに出力し、
前記一部の実行命令が、前記依存性実行命令であり且つ前記被依存性実行命令である場合に、前記セマフォ記憶部の検索を行って、前記セマフォ情報が検出されたときには、前記前記依存性実行命令であり且つ前記被依存性実行命令である実行命令の前記命令クロスバースイッチへの出力を待機し、前記セマフォ情報が検出されないときには、次の演算実行のためのセマフォ情報を前記セマフォ記憶部に記憶すると共に、前記依存性実行命令であり且つ前記被依存性実行命令である実行命令を実行させた後に前記結果取得情報を当該実行命令を実行した演算実行ユニットから出力させる属性情報を付した実行命令を前記命令クロスバースイッチに出力し、
前記一部の実行命令が、前記依存性実行命令でなく且つ前記被依存性実行命令でない場合に、前記依存性実行命令でなく且つ前記被依存性実行命令でない実行命令を前記命令クロスバースイッチに出力する命令投入部と、
前記演算結果クロスバー制御部から出力される前記結果取得情報を取得し、前記実行演算用結果に関する前記セマフォ記憶部に記憶されているセマフォ情報を消去するセマフォ情報制御部と、
を備えたことを特徴とするマルチスレッドプロセッサを提供する。
第2の発明は、請求項1記載のマルチスレッドプロセッサであって、前記複数のスレッドユニットの数は前記複数の演算ユニットの数よりも大きな数であることを特徴とするマルチスレッドプロセッサを提供する。
本発明によれば、複数の各スレッドユニットは、一部の実行命令が、実行用演算結果を用いて演算を行う依存性実行命令でなく且つ次の実行用演算結果を得るための被依存性実行命令である場合に、セマフォ情報をセマフォ記憶部に格納し、被依存性実行命令を実行させた後に実行用演算結果が得られたことを示す結果取得情報を当該実行命令を実行した演算実行ユニットから出力させる属性情報を付した実行命令を命令クロスバースイッチに出力し、一部の実行命令が、依存性実行命令であり、且つ被依存性実行命令でない場合に、セマフォ記憶部の検索を行って、セマフォ情報が検出されたときには、依存性実行命令の命令クロスバースイッチへの出力を待機し、セマフォ情報が検出されなかったときには、依存性実行命令を命令クロスバースイッチに出力し、一部の実行命令が、依存性実行命令であり且つ被依存性実行命令である場合に、セマフォ記憶部の検索を行って、セマフォ情報が検出されたときには、依存性実行命令であり且つ被依存性実行命令である実行命令の命令クロスバースイッチへの出力を待機し、セマフォ情報が検出されないときには、次の演算実行のためのセマフォ情報をセマフォ記憶部に記憶すると共に、依存性実行命令であり且つ被依存性実行命令である実行命令を実行させた後に結果取得情報を当該実行命令を実行した演算実行ユニットから出力させる属性情報を付した実行命令を命令クロスバースイッチに出力し、一部の実行命令が、依存性実行命令でなく且つ被依存性実行命令でない場合に、依存性実行命令でなく且つ被依存性実行命令でない実行命令を命令クロスバースイッチに出力する命令投入部と、演算結果クロスバー制御部から出力される結果取得情報を取得し、実行演算用結果に関するセマフォ記憶部に記憶されているセマフォ情報を消去するセマフォ情報制御部と、を備えた格別な構成があるので、アプリケーションプログラムの種類に係わらず並列実行及びシリアル実行を適応的に行い、並列度を高めても細粒度の並列実行を可能とし少ない電力で利用効率の高いパイプライン演算を行うことのできるマルチスレッドプロセッサを実現できる。
複数のスレッドユニットの数は複数の演算ユニットの数よりも大きな数である場合は、さらに並列度を高めても細粒度の並列実行を可能とし少ない電力で利用効率の高いパイプライン演算を行うことのできるマルチスレッドプロセッサを実現できる。
以下に本発明の実施例に係るマルチスレッドプロセッサについて図1〜図8を用いて説明する。図1は、本発明の実施に係るマルチスレッドプロセッサの構成例を示すブロック図である。図2は、本発明の実施に係るマルチスレッドプロセッサ要部のスレッドユニットの構成例を示す図である。図3は、本発明の実施に係るマルチスレッドプロセッサの要部の信号記述例(その1)を示す図である。図4は、本発明の実施に係るマルチスレッドプロセッサの演算実行ユニットの構成例を示す図である。図5は、本発明の実施に係るマルチスレッドプロセッサの要部の信号記述例(その2)を示す図である。図6は、本発明の実施に係るマルチスレッドプロセッサのロードストアユニットの構成例を示す図である。図7は、本発明の実施に係るマルチスレッドプロセッサの動作例(その1)を示す図である。図8は、本発明の実施に係るマルチスレッドプロセッサの動作例(その2)を示す図である。
そのマルチスレッドプロセッサは、アプリケーションプログラムの種類に係わらず並列実行及びシリアル実行を適応的に行い、並列度を高めても細粒度の並列実行を可能とし少ない電力で利用効率の高いパイプライン演算を行うマルチスレッドプロセッサを実現するという目的を、複数の各スレッドユニットは、複数の各スレッドユニットは、一部の実行命令が、実行用演算結果を用いて演算を行う依存性実行命令でなく且つ次の実行用演算結果を得るための被依存性実行命令である場合に、セマフォ情報をセマフォ記憶部に格納し、被依存性実行命令を実行させた後に実行用演算結果が得られたことを示す結果取得情報を当該実行命令を実行した演算実行ユニットから出力させる属性情報を付した実行命令を命令クロスバースイッチに出力し、一部の実行命令が、依存性実行命令であり、且つ被依存性実行命令でない場合に、セマフォ記憶部の検索を行って、セマフォ情報が検出されたときには、依存性実行命令の命令クロスバースイッチへの出力を待機し、セマフォ情報が検出されなかったときには、依存性実行命令を命令クロスバースイッチに出力し、一部の実行命令が、依存性実行命令であり且つ被依存性実行命令である場合に、セマフォ記憶部の検索を行って、セマフォ情報が検出されたときには、依存性実行命令であり且つ被依存性実行命令である実行命令の命令クロスバースイッチへの出力を待機し、セマフォ情報が検出されないときには、次の演算実行のためのセマフォ情報をセマフォ記憶部に記憶すると共に、依存性実行命令であり且つ被依存性実行命令である実行命令を実行させた後に結果取得情報を当該実行命令を実行した演算実行ユニットから出力させる属性情報を付した実行命令を命令クロスバースイッチに出力し、一部の実行命令が、依存性実行命令でなく且つ被依存性実行命令でない場合に、依存性実行命令でなく且つ被依存性実行命令でない実行命令を命令クロスバースイッチに出力する命令投入部と、演算結果クロスバー制御部から出力される結果取得情報を取得し、実行演算用結果に関するセマフォ記憶部に記憶されているセマフォ情報を消去するセマフォ情報制御部と、を備えるようにして実現した。
マルチスレッドプロセッサの構成について述べる。
図1に示すマルチスレッドプロセッサ10は、演算クロスバースイッチ(演算結果交換伝送路)1、スレッドユニット2a〜2h、命令クロスバー制御部3、命令クロスバースイッチ(命令交換伝送路)4、演算実行ユニット5a〜5d、ロードストアユニット6、演算結果クロスバー制御部7、及び外部インタフェース(IF)部8より構成される。
図2に示すマルチスレッドプロセッサ10の要部であるスレッドユニット2は、16個のレジスタ(R0〜R15)21a〜21p、プログラムカウンタ(PC)21r及びスタックポインタ(SP)21sよりなるレジスタ群21と、n個の命令セマフォ部22と、プログラムメモリ23と、命令投入部24と、命令FIFO(first in first out)部25とより構成される。スレッドユニット2a〜2hのそれぞれはスレッドユニット2と同一構成である。
図4に示す演算実行ユニット5は、命令デコード部51、ALU(Arithmetic and Logic Unit)52、FPU(Floating point number Processing Unit)53、及び演算結果生成部54より構成される。
図6に示すロードストアユニット6は、命令デコード部61およびロードストア結果生成部62より構成される。
マルチスレッドプロセッサの動作について述べる。
図1に示すマルチスレッドプロセッサ10のロードストアユニット6は、命令クロスバースイッチ4を介して供給される命令クロスバー制御部3からの制御信号により制御され、マルチスレッドプロセッサ10で演算を行うためのアプリケーションプログラムを、外部インタフェース部8を介して得る。又はプログラムメモリ23に記憶されているプログラムの中から所定のプログラム群をプログラムカウンタ21rにより指定して取得する。演算結果クロスバー制御部7は、得られたアプリケーションプログラムを複数の処理単位(スレッド)の小プログラム(実行命令群)に分割する。演算クロスバースイッチ1は演算結果クロスバー制御部7で生成された小プログラムをスレッドユニット2a〜2hに順に割り付ける。スレッドユニット2a〜2hのそれぞれは割り付けられた小プログラムから演算を実行するための機械語プログラムで記述される実行命令を後述のレジスタ群より得る。命令クロスバー制御部3はスレッドユニット2a〜2hのそれぞれから得られるリクエストを基に命令クロスバースイッチ4の接続方法に係る制御信号を生成し、命令クロスバースイッチ(命令交換伝送路)4に供給する。命令クロスバースイッチ4はスレッドユニット2a〜2hのそれぞれで生成された実行命令を演算実行ユニット5a〜5dのうち演算待機中の、例えば演算実行ユニット5aに供給する。その実行命令は演算開始の直前に行う、例えばセマフォ(手旗)を立ち上げる実行命令を含む。そのセマフォは複数の演算実行ユニットがメモリ領域を共有して演算を行う場合に、同時にメモリ領域をアクセスして記憶内容の破壊や不整合が起きるのを防ぐために用いるフラグである。その実行命令には、演算の実行を完了し、演算結果をライトバックした直後にセマフォを下げる実行命令も含む。
演算実行ユニット5aは命令クロスバースイッチ4を介して供給された実行命令に従って演算処理を行い、得られた演算結果を演算クロスバースイッチ(演算結果交換伝送路)1に供給すると共に、演算が終了した場合は演算が終了したことを示す演算終了信号を演算結果クロスバー制御部7に供給する。演算結果クロスバー制御部7は演算の終了状況に応じて新たな小プログラムを作成し演算クロスバースイッチ1に供給する。新たな小プログラムの演算は、その演算に用いるための演算結果が全て得られている場合にのみ開始できる。新たな小プログラムには演算に用いられる演算結果が全て得られているか否かをチェックするために用いるセマフォ依存性情報が付されている。
演算クロスバースイッチ1から新たな小プログラムを供給された例えばスレッドユニット2bは、新たな小プログラムに付されるセマフォ依存性情報を基に、新たな演算に用いる演算結果が全て得られているかをチェックする。演算結果の全てが得られていない場合は新たな演算をさせるための実行命令を出力しない。命令クロスバースイッチ4は、スレッドユニット2a〜2hのそれぞれから出力される実行命令を、演算実行ユニット5a〜5dのうちの演算が可能である演算実行ユニットに順次供給する。演算実行ユニット5a〜5dは次々と供給される実行命令を実行し、演算結果を所定のメモリ領域に記憶する。実行命令の出力を待機しているスレッドユニット2bは、セマフォ依存性情報に記述される演算用定数と、その定数の演算を前もって実行させるスレッドとが関連付けられて記述されたセマフォセット情報と、当該スレッドの演算命令により演算実行ユニット5a〜5dのそれぞれが実行されてクリアされるセマフォクリア情報とを比較する。両者が合致した場合にセットされたセマフォ情報をクリアする。全ての立てられたセマフォ情報がクリアされることにより、実行命令の出力を待機しているスレッドユニット2bは演算に必要な全ての演算結果が得られたとして検出する。スレッドユニット2bは新たな演算の実行命令を出力する。
以降、同様にして、スレッドユニット2a〜2hは演算実行ユニット5a〜5dで実行させる実行命令を生成し、セマフォ依存性情報と実際に立てられているセマフォとを比較することによりハザード(障害)がないことをセマフォを参照することにより検出し、ハザードがないことを検出した後に実行命令を出力する。演算実行ユニット5a〜5dは供給される実行命令に従って演算を実行する。
マルチスレッドプロセッサ10は演算実行ユニット5a〜5dの4個の演算実行ユニットに対して8個のスレッドユニット2a〜2hを有しているため、4個のスレッドユニットが実行命令を出力しない場合であっても他の4個のスレッドユニットから実行命令が出力されるため、4個の演算実行ユニット5a〜5dは演算を待機することによるデータハザードや制御ハザードを生じさせることはない。
次に、詳細に説明する。
図2を参照し、マルチスレッドプロセッサ10の要部であるスレッドユニット2について述べる。同図に示すスレッドユニット2は、スレッドユニット2a〜2hのそれぞれと構成が同一であり、行われる動作も同一である。
まず、レジスタ群21は、演算クロスバースイッチ1を介して演算結果クロスバー制御部7から供給される小プログラムに記述される演算用のデータのそれぞれをレジスタ21a〜21pに記憶する。プログラムカウンタ21rは次に実行する命令が格納されているメインメモリのアドレスを記憶する。スタックポインタ21sは小プログラムに記述されるスタックポインタのアドレス値を記憶する。
プログラムメモリ23はプログラムカウンタ21rに記憶されるメインメモリのアドレスを参照してプログラムメモリからマシン語で記述される実行命令を読み出す。命令投入部24は読み出された実行命令を一時記憶すると共に、実行命令中に記述されるセマフォ依存性情報を基に実行命令として生成されたセマフォセット情報を命令セマフォ部22にロードする。セマフォセット情報は、例えば8個のスレッドユニット2a〜2hでなされる実行命令の演算経過を8ビットの数により管理する。例えばスレッドユニット2hでの実行命令をスレッドユニット2a、2b、及び2dの演算結果を用いて演算する場合のセマフォセット情報は「11010000」となる。命令セマフォ部22には「11010000」がセットされる。命令セマフォ部22は演算クロスバースイッチ1に要求して供給される信号を基にスレッドユニット2a、2b、及び2dでの演算経過情報を得る。スレッドユニット2aから出力される実行命令の演算が演算実行ユニットでなされた後に、セマフォが下げられた場合にセマフォセット情報の最初のビットをクリアし、セマフォセット情報を「01010000」に変更する。スレッドユニット2b、及び2dのセマフォが下げられた場合にセマフォセット情報は「00000000」となる。新しい演算に用いる演算結果が全て得られた全ビットが0の状態である。命令投入部24は一時記憶している実行命令を出力する。実行命令は命令FIFO部25を介して命令クロスバー制御部3及び命令クロスバースイッチ4に供給される。演算実行ユニットでは、供給された実行命令が実行される。
図3を参照し、スレッドユニット2のプログラムメモリ23にロードされる実行命令及び命令投入部24から出力される命令の記述形式について述べる。
同図(A)はプログラムメモリ上に記述される命令フィールドからなるマシン語であり、そのフィールドはセマフォ依存性情報、セマフォセット情報、オペレーションコード(Opcode)、ソース1レジスタ(source_1 register)番号、ソース2レジスタ(source_2 register)番号、及び演算結果書き込みレジスタ(destination register)番号の順に記述される。命令投入部24は入力されるマシン語を演算実行ユニットに入力するフォーマットの記述形式に変換する。
同図(B)は命令投入部24から変換されて出力される記述形式である。セマフォ依存性情報を自分のスレッド番号に置換する。セマフォセット情報はそのままである。Opcodeは命令の一部をデコードし、得られる演算結果がロードストアユニット6を介して出力するか又は演算クロスバースイッチ1を介してさらに演算を継続するかを判別する。演算結果の行き先に応じて同図(C)に示す行き先を記述したリクエストを生成する。
同図(B)のソース1データ(source_1 data)は、ソース1レジスタ番号を参照してレジスタ群21から得たデータに置換する。同様にしてソース2データに取得したデータを記述する。演算結果書き込みレジスタ(destination register)番号には(A)の内容がそのまま記述される。
同図(B)に示すフォーマットで記述される命令投入部24の出力信号は命令セマフォ部22のセマフォセット情報のそれぞれのビットのANDを演算し、全ビットが0として検出された場合に出力される。
図4を参照して演算実行ユニット5について述べる。同図に示す演算実行ユニット5は、演算実行ユニット5a〜5dのそれぞれと構成が同一であり、行われる動作も同一である。
まず、命令デコード部51は、命令クロスバースイッチ4を介してスレッドユニット2a〜2hのいずれかから供給される図3(B)に示した命令投入部出力の命令、Opcodeをデコードする。ALU52は、デコードして得られた命令が整数及び論理演算の場合はソース1データ及びソース2データの演算処理を行う。FPU53は、命令が浮動小数点演算の場合はソース1データ及びソース2データの浮動小数点演算を行う。セマフォセット情報及びセマフォの情報はそのまま演算結果生成部54に供給する。演算結果生成部54は供給された演算結果や情報を所定のフォーマットの情報に記述して出力するための信号を生成する。
図5を参照して演算結果出力信号の記述形式について述べる。
同図(A)はその記述形式であり、記述されるフィールドは順にセマフォクリア情報、演算結果データ、及び演算結果書き込みレジスタ(destination register)番号である。セマフォクリア情報は、演算結果が得られた場合にセマフォセット情報によりセットされたセマフォの、該当する部分のセマフォをクリアするために用いるクリアすべきセマフォの位置を示す情報である。演算結果データには演算した結果得られたデータが記述される。演算結果書き込みレジスタ番号には図3(B)に示した演算結果書き込みレジスタ番号がそのまま記述される。
同図(B)は演算結果クロスバー制御部7に対してスレッド番号を指定し、そのスレッドの演算の経過に係る情報をリクエストして得るために出力するリクエストの記述フォーマットである。演算結果クロスバー制御部7はリクエスト情報を参照し、要求されたスレッドに対して(A)の演算結果のデータを転送するように動作する。スレッドユニット2a〜2hの何れかからロード若しくはストア命令が命令クロスバー制御部3にリクエストされた場合には、リクエストの行き先はロードストアユニット6になる。
図6を参照し、ロードストアユニット6について述べる。
命令デコード部61は命令クロスバースイッチ4から入力される命令をデコードし、外部インタフェース部8を介して供給されるデータをロードするか、乃至は外部インタフェース部8を介してデータを供給しストアさせるかの実行制御を行う。ロードストアユニット6は、ロード命令の場合には、図3(B)に示したソース1データの箇所をアドレスとし、外部インタフェース部8に対してread信号を出力する。ロードストア結果生成部62は外部インタフェース部8から入力される信号を図5(A)に示した演算結果信号フォーマットの演算結果データの部分に挿入して演算クロスバースイッチ1に出力する。セマフォクリア情報及び演算結果書き込みレジスタ番号にはそれらの情報を記述する。ロードストアユニット6は、ストア命令の場合には、図3(B)に示したソース1データの箇所をアドレスとし、ソース2データの箇所をデータとし、外部インタフェース部8に対してWrite信号を出力する。演算結果は既に得られているため、ロードストアユニット6は演算結果を演算クロスバースイッチ1に供給しない。
ロードストア結果生成部62は、必要に応じ、例えば演算結果を演算クロスバースイッチ1に供給しないとするダミーデータを演算クロスバースイッチ1に出力する。セマフォセット情報及び演算結果書き込みレジスタ番号は図3(A)の内容がそのままコピーされて出力される。なお、図5(B)に示すスレッド番号のリクエストは、スレッドユニット2a〜2hの何れかから発せられるリクエストに対し、演算クロスバースイッチ1を介して送出するリクエストとしてロードストア結果生成部62で生成して出力する。演算クロスバースイッチ1を介して図4(A)、(B)の形式で記述される演算結果を受け取ったスレッドユニットは、図3(A)の命令投入部出力のセマフォセット情報によりセットしたセマフォに対応するビットのセマフォを図5(A)のセマフォクリア情報によりクリアする。これにより、新しい演算に用いる演算結果が出力されていないことにより待ち合わせ状態となっていたスレッドユニットの待ち合わせ状態が解消される。
図7、図8を参照し、マルチスレッドプロセッサ10の命令実行について述べる。
まず、演算結果クロスバー制御部7は、外部インタフェース部8及びロードストアユニット6を介して得られる、C言語やフォートランなどで記述して入力されるアプリケーションプログラムの命令実行順序や演算に用いられる演算用データの依存関係を解析し、マシン語で記述される実行命令を生成する。例えば、図7(A)に示される命令1〜5のうち命令1〜命令4は相互に演算の依存性がないが、命令5は命令1及び2の演算結果を得て後に行われる。そこで、命令1のセマフォクリア情報は第1ビット目を1にした「10000000」とし、命令2のセマフォクリア情報は第2ビット目を1にした「01000000」とする。命令5のセマフォセット情報は第1ビット目及び第2ビット目を1にした「11000000」とする。命令3、4は命令1、2の実行に関係なく演算が可能であるのでセマフォセット情報及びセマフォクリア情報の両者は「00000000」とされる。
図7(A)は命令1〜4が同時に実行開始される場合である。そして、例えば命令1の実行が終了した場合に命令5のセマフォセット情報「11000000」は命令1のセマフォクリア情報「10000000」により1ビット目がクリアされ「01000000」となる。セマフォセット情報に1が存在しているため命令5の演算実行の待機を継続する。次に命令2の演算結果が得られた場合に命令5のセマフォセット情報「01000000」は命令2のセマフォクリア情報「01000000」により2ビット目がクリアされる。命令5のセマフォセット情報は「00000000」となる。命令5は待機が解除された状態となり、命令1と命令2で得られた演算結果が用いられて演算が開始される。
図7(B)は、演算実行ユニット5a〜5dが他の演算を行っているなどにより演算能力が不足している場合などで、命令2が先に実行開始されている例である。命令3、4が実行された後に命令1が実行される。この場合も(A)と同様に、命令1及び命令2の両者の演算が終了して後に命令5が実行される。
図8(A)は相互に依存性を有しない命令3、4は命令5の後に実行されている例である。この場合もセマフォセット情報、セマフォクリア情報は図7(A)で述べたと同様にセット及びクリアがなされる。
ここで、命令5の実行結果を得て図示しない命令6の実行がなされる場合は、命令5は命令1、命令2に依存されて演算を行う依存性実行命令であると共に、命令6に対しては被依存性実行命令となる。命令5は命令1及び命令2の実行命令が実行されてセマフォ情報がクリアされた際に、命令5に対するセマフォ情報をセットする。その後、命令5が実行されて実行結果が得られた際にセットした命令5のセマフォ情報がクリアされる。命令5のセマフォクリアにより、命令6はセマフォ情報の参照時に、セマフォが立てられていないと検出される。命令6の実行命令がスレッドユニットより出力される。命令6は待機状態にある演算実行ユニットにより実行される。
ここで、演算実行ユニット5a〜5dの総数は4個であり、スレッドユニット2a〜2hの総数は8個である。演算実行ユニットの数よりもスレッドユニットの数の方が多い。これにより、スレッドユニットでは常に多くの小プログラムが生成され、演算実行ユニットでの演算待ちとなる。演算実行ユニットは与えられた演算が終了次第、セマフォが立てられていない実行可能は小プログラムが供給される。演算実行ユニットにおいて演算待ちの待機状態が生じることはない。演算実行ユニットの稼動率は高く保たれる。
演算に用いる演算結果が得られていないことによる待機はスレッドユニットで行われる。スレッドユニットは演算実行ユニットに比し回路構成が簡単であるためマルチスレッドプロセッサ10を半導体で構成する場合の面積は演算実行ユニットの面積よりも小さい。さらに、待機状態における消費電力は、スレッドユニットの方が演算実行ユニットよりも小さな値である。演算実行ユニットの数をスレッドユニットの数よりも小さくし、且つ演算実行ユニットでの待機状態を生じさせないようにすることにより、チップ面積が小さく、演算実行時の消費電力を小さくしたマルチスレッドプロセッサ10のLSIを実現することが出来る。
そして、セマフォ情報をCPUの汎用レジスタであるレジスタ群に記憶する代わりに実行プログラムから直接アクセスする必要のない記憶領域をセマフォ記憶部として用いてもよい。セマフォ情報はCPUハードウエア内部の情報として記憶する。その場合はセマフォ情報セット命令やセマフォ情報クリア命令などの命令コマンドを使用することなく演算実行をさせることが出来る。従って、1命令で演算の実行とセマフォ情報の管理を行えることになる。
以上のように、本実施例で示したマルチスレッドプロセッサは、一部の実行命令が、実行用演算結果を用いて演算を行う依存性実行命令でなく且つ次の実行用演算結果を得るための被依存性実行命令である場合に、セマフォ情報をセマフォ記憶部21に格納し、被依存性実行命令を実行させた後に実行用演算結果が得られたことを示す結果取得情報を当該実行命令を実行した演算実行ユニットから出力させる属性情報を付した実行命令を命令クロスバースイッチ4に出力し、一部の実行命令が、依存性実行命令であり、且つ被依存性実行命令でない場合に、セマフォ記憶部21の検索を行って、セマフォ情報が検出されたときには、依存性実行命令の命令クロスバースイッチ4への出力を待機し、セマフォ情報が検出されなかったときには、依存性実行命令を命令クロスバースイッチ4に出力し、一部の実行命令が、依存性実行命令であり且つ被依存性実行命令である場合に、セマフォ記憶部の検索を行って、セマフォ情報が検出されたときには、依存性実行命令であり且つ被依存性実行命令である実行命令の命令クロスバースイッチ4への出力を待機し、セマフォ情報が検出されないときには、次の演算実行のためのセマフォ情報をセマフォ記憶部に記憶すると共に、依存性実行命令であり且つ被依存性実行命令である実行命令を実行させた後に結果取得情報を当該実行命令を実行した演算実行ユニットから出力させる属性情報を付した実行命令を命令クロスバースイッチに出力し、一部の実行命令が、依存性実行命令でなく且つ被依存性実行命令でない場合に、依存性実行命令でなく且つ被依存性実行命令でない実行命令を命令クロスバースイッチに出力する命令投入部24と、演算結果クロスバー制御部から出力される結果取得情報を取得し、実行演算用結果に関するセマフォ記憶部に記憶されているセマフォ情報を消去するセマフォ情報制御部22とを備えた複数のスレッドユニットを用いて実現した。
本発明の実施に係るマルチスレッドプロセッサの構成例を示すブロック図である。 本発明の実施に係るマルチスレッドプロセッサの要部のスレッドユニットの構成例を示す図である。 本発明の実施に係るマルチスレッドプロセッサの要部の信号記述例(その1)を示す図である。 本発明の実施に係るマルチスレッドプロセッサの演算実行ユニットの構成例を示す図である。 本発明の実施に係るマルチスレッドプロセッサの要部の信号記述例(その2)を示す図である。 本発明の実施に係るマルチスレッドプロセッサのロードストアユニットの構成例を示す図である。 本発明の実施に係るマルチスレッドプロセッサの動作例(その1)を示す図である。 本発明の実施に係るマルチスレッドプロセッサの動作例(その2)を示す図である。
符号の説明
1 演算クロスバースイッチ(演算結果交換伝送路)
2、2a〜2h スレッドユニット
3 命令クロスバー制御部
4 命令クロスバースイッチ(命令交換伝送路)
5、5a〜5d 演算実行ユニット
6 ロードストアユニット
7 演算結果クロスバー制御部
8 外部インタフェース部
10 マルチスレッドプロセッサ
21 レジスタ群
21a〜21p レジスタ
21r プログラムカウンタ
21s スタックポインタ
22 命令セマフォ部
23 プログラムメモリ
24 命令投入部
25 令FIFO部
51 命令デコード部
52 ALU
53 FPU
54 演算結果生成部
61 命令デコード部
62 ロードストア結果生成部

Claims (2)

  1. 複数の実行命令群で記述されるアプリケーションプログラムを記憶するプログラムメモリから複数あるうちの一部の実行命令群を取得し、取得された実行命令群に記述される複数の実行命令のうち一部の実行命令を順次出力する複数のスレッドユニットと、前記複数のスレッドユニットから順次出力される前記実行命令を複数ある出力端のうち所望の出力端に出力する命令交換伝送路と、前記命令交換伝送路のそれぞれの出力端に接続され、接続された出力端に供給されるそれぞれの実行命令を実行して得られた演算結果を記憶手段に記憶する複数の演算ユニットと、前記演算結果を所望のスレッドユニットに実行用演算結果として供給する演算結果交換伝送路と、を有し、
    前記命令交換伝送路は前記複数のスレッドユニットから出力される前記複数の実行命令を、前記複数の演算ユニットのうち待機状態にある演算ユニットに出力するようになすマルチスレッドプロセッサにおいて、
    前記複数の各スレッドユニットは、
    前記出力する実行命令に、前記実行用演算結果を得るための被依存性実行命令が含まれ且つ前記実行用演算結果を用いて演算を行う依存性実行命令が含まれない場合は、前記実行用演算結果が得られていないことを示すセマフォ情報をセマフォ記憶部に記憶すると共に、当該実行命令を実行した後に前記実行用演算結果が得られたことを示す結果取得情報を前記演算結果交換伝送路に出力させる属性情報を付した実行命令を前記命令交換伝送路に出力し、
    前記出力する実行命令に、前記依存性実行命令が含まれ且つ前記被依存性実行命令が含まれない場合は前記セマフォ記憶部に記憶されるセマフォ情報を参照し、記憶されているセマフォ情報が検出される場合は前記依存性実行命令の前記命令交換伝送路への出力を待機し、記憶されているセマフォ情報が検出されない場合は前記依存性実行命令を前記命令交換伝送路に出力し、
    前記出力する実行命令に、前記依存性実行命令であり且つ前記被依存性実行命令である実行命令が含まれる場合は前記セマフォ記憶部に記憶されるセマフォ情報を参照し、記憶されているセマフォ情報が検出される場合は前記実行命令の前記命令交換伝送路への出力を待機し、記憶されているセマフォ情報が検出されない場合は前記セマフォ情報を前記セマフォ記憶部に記憶すると共に、前記結果取得情報を前記演算結果交換伝送路に出力させる属性情報を付した実行命令を前記命令交換伝送路に出力する一方、
    前記出力する実行命令に前記依存性実行命令又は前記被依存性実行命令の何れも含まれない場合は当該実行命令を前記命令交換伝送路に出力する命令投入部と、
    前記演算結果交換伝送路に供給される前記結果取得情報を取得し、前記演算用実行結果に係り前記セマフォ記憶部に記憶されているセマフォ情報を消去するセマフォ情報制御部と、
    を備えたことを特徴とするマルチスレッドプロセッサ。
  2. 請求項1記載のマルチスレッドプロセッサであって、
    前記複数のスレッドユニットの数は前記複数の演算ユニットの数よりも大きな数であることを特徴とするマルチスレッドプロセッサ。
JP2006204345A 2006-07-27 2006-07-27 マルチスレッドプロセッサ Pending JP2008033490A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006204345A JP2008033490A (ja) 2006-07-27 2006-07-27 マルチスレッドプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006204345A JP2008033490A (ja) 2006-07-27 2006-07-27 マルチスレッドプロセッサ

Publications (1)

Publication Number Publication Date
JP2008033490A true JP2008033490A (ja) 2008-02-14

Family

ID=39122868

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006204345A Pending JP2008033490A (ja) 2006-07-27 2006-07-27 マルチスレッドプロセッサ

Country Status (1)

Country Link
JP (1) JP2008033490A (ja)

Similar Documents

Publication Publication Date Title
US8675006B2 (en) Apparatus and method for communicating between a central processing unit and a graphics processing unit
US10915364B2 (en) Technique for computational nested parallelism
CN101160565B (zh) 无操作系统干预情况下调度os隔离定序器上的线程的机制
TWI501150B (zh) 無指令解碼而排程指令的方法和裝置
US20130198760A1 (en) Automatic dependent task launch
US10355975B2 (en) Latency guaranteed network on chip
US8261046B2 (en) Access of register files of other threads using synchronization
TW201342212A (zh) 使用預解碼資料進行指令排程的方法和裝置
US20210019185A1 (en) Compute task state encapsulation
JP4292198B2 (ja) 実行スレッドをグループ化するための方法
JP2009099097A (ja) データ処理装置
CN107250978A (zh) 基于多核块的指令集架构中的寄存器重命名
WO2018075811A2 (en) Network-on-chip architecture
JP2008226236A (ja) 構成可能なマイクロプロセッサ
CN103197918B (zh) 多通道时间片组
JP2024505440A (ja) トリガ条件に依存する命令実行のための回路及び方法
CN115775198A (zh) 多核gpu中的重叠几何形状处理
JP5238876B2 (ja) 情報処理装置及び情報処理方法
JP4444305B2 (ja) 半導体装置
JP2009175960A (ja) 仮想マルチプロセッサシステム
JP6020428B2 (ja) ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法
JPH0461390B2 (ja)
JP6891596B2 (ja) プロセッサ
JP2008033490A (ja) マルチスレッドプロセッサ
JP2006506727A (ja) コピーレジスタファイルを有するvliw