JP2006139645A - プロセッサおよび演算処理方法 - Google Patents
プロセッサおよび演算処理方法 Download PDFInfo
- Publication number
- JP2006139645A JP2006139645A JP2004330087A JP2004330087A JP2006139645A JP 2006139645 A JP2006139645 A JP 2006139645A JP 2004330087 A JP2004330087 A JP 2004330087A JP 2004330087 A JP2004330087 A JP 2004330087A JP 2006139645 A JP2006139645 A JP 2006139645A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- register
- address
- thread
- processor
- 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.)
- Withdrawn
Links
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【課題】 パイプライン処理を行うプロセッサにおいて、レジスタのゲート数を低減しつつ、複数のタスクあるいはスレッドを効率的に処理すること。
【解決手段】 パイプライン処理装置1は、レジスタファイルに代えて、メモリによって構成されたレジスタ用メモリ100を備えていると共に、PCを構成するレジスタに代えて、メモリによって構成されたプログラムカウンタ用メモリ30を備えている。したがって、これらをレジスタによって構成する場合に比べ、レジスタのゲート数が低減すると共に、コンテキストの入れ替えを行うことなく、アドレスの指定によってコンテキストスイッチを行うことができるため、複数のタスクあるいはスレッドを効率的に処理することが可能となる。
【選択図】 図1
【解決手段】 パイプライン処理装置1は、レジスタファイルに代えて、メモリによって構成されたレジスタ用メモリ100を備えていると共に、PCを構成するレジスタに代えて、メモリによって構成されたプログラムカウンタ用メモリ30を備えている。したがって、これらをレジスタによって構成する場合に比べ、レジスタのゲート数が低減すると共に、コンテキストの入れ替えを行うことなく、アドレスの指定によってコンテキストスイッチを行うことができるため、複数のタスクあるいはスレッドを効率的に処理することが可能となる。
【選択図】 図1
Description
本発明は、コンテキストスイッチを行いながら演算処理を実行するプロセッサおよび演算処理方法に関する。
従来、パイプライン処理を行うプロセッサにおいて、複数のタスクあるいはスレッドを処理可能なものが知られている。
このようなプロセッサにおいて、複数のタスクあるいはスレッドを同時に処理する場合、処理されるタスクあるいはスレッドそれぞれのためにレジスタファイルも複数セット備えておく必要がある。
このようなプロセッサにおいて、複数のタスクあるいはスレッドを同時に処理する場合、処理されるタスクあるいはスレッドそれぞれのためにレジスタファイルも複数セット備えておく必要がある。
そのため、レジスタファイルの規模が大型化し、ゲート数が増大するという問題があった。
ここで、レジスタファイルのゲート数を低減可能な技術として、特許文献1に記載された技術が知られている。
特許文献1に記載された技術は、レジスタファイルに代えて、プロセッサに備えられたキャッシュメモリを用いて演算処理を行う技術である。
特開平8−339330号公報
ここで、レジスタファイルのゲート数を低減可能な技術として、特許文献1に記載された技術が知られている。
特許文献1に記載された技術は、レジスタファイルに代えて、プロセッサに備えられたキャッシュメモリを用いて演算処理を行う技術である。
しかしながら、特許文献1に記載された技術においては、タスクの切り換えが行われる場合、レジスタとして使用されているキャッシュメモリの領域からメモリへコンテキストを退避させる等、データの入れ替えを行う機会が比較的頻繁に発生することとなる。
そのため、複数のタスクあるいはスレッドを同時に処理する場合には、データの入れ替えのために要する処理時間および消費電力が増大し、処理効率が低下する可能性があった。
そのため、複数のタスクあるいはスレッドを同時に処理する場合には、データの入れ替えのために要する処理時間および消費電力が増大し、処理効率が低下する可能性があった。
また、特許文献1に記載された技術においては、プログラムカウンタをレジスタによって構成しているため、タスクの切り換え時にプログラムカウンタの値をメモリに退避させる必要があると共に、プログラムカウンタを構成するレジスタについてはゲート数を低減できないという問題があった。
このように、パイプライン処理を行うプロセッサにおいて、レジスタのゲート数を低減しつつ、複数のタスクあるいはスレッドを効率的に処理することは困難であった。
このように、パイプライン処理を行うプロセッサにおいて、レジスタのゲート数を低減しつつ、複数のタスクあるいはスレッドを効率的に処理することは困難であった。
本発明の課題は、パイプライン処理を行うプロセッサにおいて、レジスタのゲート数を低減しつつ、複数のタスクあるいはスレッドを効率的に処理することである。
以上の課題を解決するため、本発明は、
プロセッサの外部に備えられる外部メモリから実行対象となる命令をフェッチしてデコードし、実行ユニットを用いて演算を行うプロセッサであって、前記実行ユニットにおける演算対象あるいは演算結果であるデータを記憶するレジスタファイル用のメモリ(例えば、図1のレジスタ用メモリ100)と、実行対象となる命令が記憶された前記外部メモリのアドレスを指し示すプログラムカウンタを記憶するプログラムカウンタ用のメモリ(例えば、図1のプログラムカウンタ用メモリ30)とを含むことを特徴としている。
プロセッサの外部に備えられる外部メモリから実行対象となる命令をフェッチしてデコードし、実行ユニットを用いて演算を行うプロセッサであって、前記実行ユニットにおける演算対象あるいは演算結果であるデータを記憶するレジスタファイル用のメモリ(例えば、図1のレジスタ用メモリ100)と、実行対象となる命令が記憶された前記外部メモリのアドレスを指し示すプログラムカウンタを記憶するプログラムカウンタ用のメモリ(例えば、図1のプログラムカウンタ用メモリ30)とを含むことを特徴としている。
このような構成により、レジスタファイルおよびプログラムカウンタがメモリによって構成されるため、レジスタのゲート数を低減することができる。また、レジスタファイル用のメモリとプログラムカウンタ用のメモリにおけるアドレスを切り換えることにより、コンテキストスイッチを行うことができるため、データの入れ替えのために要する処理時間および消費電力が削減され、複数のタスクあるいはスレッドを効率的に処理することが可能となる。
即ち、本発明によれば、パイプライン処理を行うプロセッサにおいて、レジスタのゲート数を低減しつつ、複数のタスクあるいはスレッドを効率的に処理することが可能となる。
また、前記レジスタファイル用のメモリは、複数のタスクあるいはスレッドそれぞれに対応するメモリ空間に区分され、前記プログラムカウンタ用のメモリは、前記複数のタスクあるいはスレッドそれぞれに関するプログラムカウンタを記憶していることを特徴としている。
また、前記レジスタファイル用のメモリは、複数のタスクあるいはスレッドそれぞれに対応するメモリ空間に区分され、前記プログラムカウンタ用のメモリは、前記複数のタスクあるいはスレッドそれぞれに関するプログラムカウンタを記憶していることを特徴としている。
このような構成により、マルチスレッド処理を行う場合に、レジスタファイルを、処理されるタスクあるいはスレッド数に対応する複数セット備える必要がないため、ゲート数を低減することが可能となる。
また、取り扱われているスレッドのうち、実行対象のタスクあるいはスレッドを指定する情報を上位アドレスに対応させ、デコードされた命令に含まれるレジスタ番号を下位アドレスに対応させることにより、前記レジスタファイル用のメモリにおける読み出しアドレスあるいは書き込みアドレスを指定するアドレス指定手段(例えば、図1の加算器60,70)を含むことを特徴としている。
また、取り扱われているスレッドのうち、実行対象のタスクあるいはスレッドを指定する情報を上位アドレスに対応させ、デコードされた命令に含まれるレジスタ番号を下位アドレスに対応させることにより、前記レジスタファイル用のメモリにおける読み出しアドレスあるいは書き込みアドレスを指定するアドレス指定手段(例えば、図1の加算器60,70)を含むことを特徴としている。
このような構成により、レジスタファイル用のメモリにおけるメモリ空間を、複数のタスクあるいはスレッドそれぞれに容易に割り当てて使用することが可能となる。
また、本発明は、
プロセッサの外部に備えられる外部メモリから実行対象となる命令をフェッチしてデコードし、実行ユニットを用いて演算を行うプロセッサにおける演算処理方法であって、前記実行ユニットにおける演算対象あるいは演算結果であるデータをプロセッサ内部において記憶するレジスタファイルと、実行対象となる命令が記憶された前記外部メモリのアドレスを指し示すプログラムカウンタとをそれぞれメモリによって構成し、前記レジスタファイルおよびプログラムカウンタを構成するメモリの所定アドレスに、複数のタスクあるいはスレッドそれぞれに対応する演算対象あるいは演算結果であるデータとプログラムカウンタとを記憶し、それらメモリのアドレスを切り換えることによりコンテキストスイッチを行いながら演算を行うことを特徴としている。
また、本発明は、
プロセッサの外部に備えられる外部メモリから実行対象となる命令をフェッチしてデコードし、実行ユニットを用いて演算を行うプロセッサにおける演算処理方法であって、前記実行ユニットにおける演算対象あるいは演算結果であるデータをプロセッサ内部において記憶するレジスタファイルと、実行対象となる命令が記憶された前記外部メモリのアドレスを指し示すプログラムカウンタとをそれぞれメモリによって構成し、前記レジスタファイルおよびプログラムカウンタを構成するメモリの所定アドレスに、複数のタスクあるいはスレッドそれぞれに対応する演算対象あるいは演算結果であるデータとプログラムカウンタとを記憶し、それらメモリのアドレスを切り換えることによりコンテキストスイッチを行いながら演算を行うことを特徴としている。
このように、本発明によれば、パイプライン処理を行うプロセッサにおいて、レジスタのゲート数を低減しつつ、複数のタスクあるいはスレッドを効率的に処理することが可能となる。
以下、図を参照して本発明に係るプロセッサの実施の形態を説明する。
まず、構成を説明する。
図1は、本発明を適用したプロセッサ3を備えるパイプライン処理装置1の機能構成を示すブロック図である。
図1において、パイプライン処理装置1は、外部メモリ2と、プロセッサ3とを含んで構成される。
まず、構成を説明する。
図1は、本発明を適用したプロセッサ3を備えるパイプライン処理装置1の機能構成を示すブロック図である。
図1において、パイプライン処理装置1は、外部メモリ2と、プロセッサ3とを含んで構成される。
外部メモリ2は、SDRAM(Synchronous Dynamic Random Access Memory)等の記憶素子によって構成されたメモリであり、パイプライン処理装置1において実行される命令コードおよび演算対象となるデータを記憶している。
プロセッサ3は、複数のタスクあるいはスレッドを並行してパイプライン処理可能なプロセッサであり、タスク/スレッド情報管理部10と、実行制御部20と、プログラムカウンタ用メモリ30と、実行中情報保持部40と、デコードユニット50と、加算器60,70と、パイプラインレジスタ80と、実行ユニット90と、レジスタ用メモリ100とを含んで構成される。
プロセッサ3は、複数のタスクあるいはスレッドを並行してパイプライン処理可能なプロセッサであり、タスク/スレッド情報管理部10と、実行制御部20と、プログラムカウンタ用メモリ30と、実行中情報保持部40と、デコードユニット50と、加算器60,70と、パイプラインレジスタ80と、実行ユニット90と、レジスタ用メモリ100とを含んで構成される。
タスク/スレッド情報管理部10は、パイプライン処理装置1において生成されたタスクあるいはスレッド、および、それらのうち実行中であるタスクあるいはスレッドを管理する。なお、タスク/スレッド情報管理部10は、タスクあるいはスレッドそれぞれを識別するタスク/スレッド識別子によって、各タスクあるいはスレッドを管理している。このタスク/スレッド識別子は、レジスタ用メモリ100の上位アドレスとして各タスクあるいはスレッドに固有の数値が割り当てられている。即ち、タスク/スレッド識別子は、レジスタ用メモリ100における各タスクあるいはスレッドの使用領域を示している(図2(a)参照)。
実行制御部20は、タスク/スレッド情報管理部10において管理されているタスクあるいはスレッドを、優先度および入力順序に従って実行させる。
プログラムカウンタ用メモリ30は、SRAM(Synchronous Random Access Memory)等、外部メモリ2より高速にアクセス可能な記憶素子によって構成されたメモリであり、パイプライン処理装置1において実行されているスレッドそれぞれに関するプログラムカウンタ(以下、「PC」と言う。)を構成している。そして、実行されるスレッドを切り換え、コンテキストスイッチを行う場合、プログラムカウンタ用メモリ30は、PCの値を外部メモリ2に退避することなく、次に実行されるスレッドのPCのアドレスを指定することにより、コンテキストスイッチを行う。
プログラムカウンタ用メモリ30は、SRAM(Synchronous Random Access Memory)等、外部メモリ2より高速にアクセス可能な記憶素子によって構成されたメモリであり、パイプライン処理装置1において実行されているスレッドそれぞれに関するプログラムカウンタ(以下、「PC」と言う。)を構成している。そして、実行されるスレッドを切り換え、コンテキストスイッチを行う場合、プログラムカウンタ用メモリ30は、PCの値を外部メモリ2に退避することなく、次に実行されるスレッドのPCのアドレスを指定することにより、コンテキストスイッチを行う。
また、プログラムカウンタ用メモリ30は、コンテキストスイッチが行われる際、実行制御部20によって実行対象となるタスクあるいはスレッドのタスク/スレッド識別子が入力されると、それに対応するプログラムカウンタが示す外部メモリ2のアドレスを出力する。
さらに、プログラムカウンタ用メモリ30は、実行制御部20によって入力されたタスク/スレッド識別子を実行中情報保持部40に出力する。
さらに、プログラムカウンタ用メモリ30は、実行制御部20によって入力されたタスク/スレッド識別子を実行中情報保持部40に出力する。
上述のように、プログラムカウンタ用メモリ30がメモリによって構成されていることから、PCのアドレス指定を変更するのみでコンテキストスイッチを行うことができ、データ(PCの値)の入れ替えを行う必要がなくなると共に、PCをレジスタによって構成する場合に比べ、ゲート数を低減することが可能となる。
なお、プログラムカウンタ用メモリ30は、ノーウェイトによって読み出しおよび書き込みが可能なメモリである。そのため、データの読み出しおよび書き込みがレジスタより比較的低速なメモリによってPCを構成しても、パイプライン処理の遅延を生じさせることなくコンテキストスイッチを行うことができる。また、プログラムカウンタ用メモリ30は、実行ユニット90によってブランチ先のアドレスに対応するPCの値が入力されると、そのPCに示されるアドレスを外部メモリ2に出力する。
なお、プログラムカウンタ用メモリ30は、ノーウェイトによって読み出しおよび書き込みが可能なメモリである。そのため、データの読み出しおよび書き込みがレジスタより比較的低速なメモリによってPCを構成しても、パイプライン処理の遅延を生じさせることなくコンテキストスイッチを行うことができる。また、プログラムカウンタ用メモリ30は、実行ユニット90によってブランチ先のアドレスに対応するPCの値が入力されると、そのPCに示されるアドレスを外部メモリ2に出力する。
実行中情報保持部40は、プログラムカウンタ用メモリ30によって入力されたタスク/スレッド識別子を記憶し、処理のステージに合わせてタスク/スレッド識別子を加算器60,70に出力する。また、実行中情報保持部40は、デコードユニット50によって入力された書き込みレジスタ番号を記憶し、処理のステージに合わせて書き込みレジスタ番号を加算器70に出力する。
具体的には、実行中情報保持部40は、スレッドID保持部41〜44および書き込みレジスタ番号保持部45,46を含んで構成される。
スレッドID保持部41は、プログラムカウンタ用メモリ30によって入力されたタスク/スレッド識別子を一時的に保持し、1サイクル遅延させてスレッドID保持部42に出力する。
スレッドID保持部41は、プログラムカウンタ用メモリ30によって入力されたタスク/スレッド識別子を一時的に保持し、1サイクル遅延させてスレッドID保持部42に出力する。
スレッドID保持部42は、スレッドID保持部41によって入力されたタスク/スレッド識別子を一時的に保持し、1サイクル遅延させてスレッドID保持部43および加算器60に出力する。
スレッドID保持部43は、スレッドID保持部42によって入力されたタスク/スレッド識別子を一時的に保持し、1サイクル遅延させてスレッドID保持部44に出力する。
スレッドID保持部43は、スレッドID保持部42によって入力されたタスク/スレッド識別子を一時的に保持し、1サイクル遅延させてスレッドID保持部44に出力する。
スレッドID保持部44は、スレッドID保持部43によって入力されたタスク/スレッド識別子を一時的に保持し、1サイクル遅延させて加算器70に出力する。
書き込みレジスタ番号保持部45は、デコードユニット50によって入力された書き込みレジスタ番号を一時的に保持し、1サイクル遅延させて書き込みレジスタ番号保持部46に出力する。
書き込みレジスタ番号保持部45は、デコードユニット50によって入力された書き込みレジスタ番号を一時的に保持し、1サイクル遅延させて書き込みレジスタ番号保持部46に出力する。
書き込みレジスタ番号保持部46は、書き込みレジスタ番号保持部45によって入力された書き込みレジスタ番号を一時的に保持し、1サイクル遅延させて加算器70に出力する。
デコードユニット50は、外部メモリ2から読み出した命令コードをデコードし、オペコードによって示された演算の指示をパイプラインレジスタ80に出力する。また、デコードユニット50は、命令コードのオペランドによって示された読み出しレジスタ番号を加算器60に出力すると共に、書き込みレジスタ番号を書き込みレジスタ番号保持部45に出力する。
デコードユニット50は、外部メモリ2から読み出した命令コードをデコードし、オペコードによって示された演算の指示をパイプラインレジスタ80に出力する。また、デコードユニット50は、命令コードのオペランドによって示された読み出しレジスタ番号を加算器60に出力すると共に、書き込みレジスタ番号を書き込みレジスタ番号保持部45に出力する。
加算器60は、スレッドID保持部41によって入力されたタスク/スレッド識別子と、デコードユニット50によって入力された読み出しレジスタ番号とを加算し、レジスタ用メモリ100に読み出しレジスタアドレスとして出力する。このとき、加算器60は、図2(a)に示すように、スレッドID保持部41によって入力されたタスク/スレッド識別子を上位アドレス、デコードユニット50によって入力された読み出しレジスタ番号を下位アドレスとして加算し、レジスタ用メモリ100の読み出しレジスタアドレスとする。
加算器70は、スレッドID保持部44によって入力されたタスク/スレッド識別子と、デコードユニット50によって入力された読み出しレジスタ番号とを加算し、レジスタ用メモリ100に書き込みレジスタアドレスとして出力する。このとき、加算器70は、スレッドID保持部44によって入力されたタスク/スレッド識別子を上位アドレス、デコードユニット50によって入力された読み出しレジスタ番号を下位アドレスとして加算し、レジスタ用メモリ100の書き込みレジスタアドレスとする(図2(a)参照)。
なお、本実施の形態においては、レジスタ用メモリ100が、専用のメモリとして構成されているため、図2(a)のようなアドレスの算出が行われるが、図3に示すように、汎用の外部メモリにおいて、一部の領域をレジスタ用メモリ100として使用する場合、その領域の先頭を示すベースアドレスをさらに上位に付加し、図2(b)のようにアドレスの算出が行われる。
パイプラインレジスタ80は、デコードユニット50によって入力された演算の指示を示すデータを一時的に保持し、レジスタ用メモリ100から読み出されたレジスタの値が実行ユニット90に入力されるタイミングと合わせて、保持している演算の指示を示すデータを実行ユニット90に出力する。
実行ユニット90は、数値演算あるいは論理演算を行う演算器や、データのロードあるいはストアを行うロードユニット、ストアユニットを含んで構成される。また、実行ユニット90は、パイプラインレジスタ80によって入力された演算の指示に従って、レジスタ用メモリ100から読み出されたレジスタの値に対する数値演算、論理演算あるいはロード、ストア処理を行う。そして、実行ユニット90は、数値演算あるいは論理演算の結果をレジスタ用メモリ100に出力したり、ロード処理によって外部メモリ2から読み込んだデータをレジスタ用メモリ100に出力したり、ストア処理によって外部メモリ2に書き込むデータをレジスタ用メモリ100から読み出して外部メモリ2に出力したりする。
実行ユニット90は、数値演算あるいは論理演算を行う演算器や、データのロードあるいはストアを行うロードユニット、ストアユニットを含んで構成される。また、実行ユニット90は、パイプラインレジスタ80によって入力された演算の指示に従って、レジスタ用メモリ100から読み出されたレジスタの値に対する数値演算、論理演算あるいはロード、ストア処理を行う。そして、実行ユニット90は、数値演算あるいは論理演算の結果をレジスタ用メモリ100に出力したり、ロード処理によって外部メモリ2から読み込んだデータをレジスタ用メモリ100に出力したり、ストア処理によって外部メモリ2に書き込むデータをレジスタ用メモリ100から読み出して外部メモリ2に出力したりする。
なお、実行ユニット90は、ブランチ命令を実行した場合、ブランチ先のアドレスに対応するPCの値をプログラムカウンタ用メモリ30に出力する。
レジスタ用メモリ100は、SRAM等、外部メモリ2より高速にアクセス可能な記憶素子によって構成されたメモリであり、加算器60によって読み出しアドレスが入力されると、そのアドレスに記憶されたデータを実行ユニット90に出力する。また、レジスタ用メモリ100は、加算器70によって入力された書き込みアドレスに、実行ユニット90によって入力された数値演算あるいは論理演算の結果や、ロード処理によって外部メモリ2から読み込まれたデータを記憶する。
レジスタ用メモリ100は、SRAM等、外部メモリ2より高速にアクセス可能な記憶素子によって構成されたメモリであり、加算器60によって読み出しアドレスが入力されると、そのアドレスに記憶されたデータを実行ユニット90に出力する。また、レジスタ用メモリ100は、加算器70によって入力された書き込みアドレスに、実行ユニット90によって入力された数値演算あるいは論理演算の結果や、ロード処理によって外部メモリ2から読み込まれたデータを記憶する。
上述のように、レジスタ用メモリ100がメモリによって構成されていることから、コンテキストの格納領域のアドレス指定(即ち、タスク/スレッド識別子)を変更するのみでコンテキストスイッチを行うことができ、データ(コンテキスト)の入れ替えを行う必要がなくなると共に、コンテキストをレジスタファイルに格納する場合に比べ、ゲート数を低減することが可能となる。
なお、レジスタ用メモリ100は、ノーウェイトによって読み出しおよび書き込みが可能なメモリである。そのため、データの読み出しおよび書き込みがレジスタより比較的低速なメモリによってレジスタファイルを構成しても、パイプライン処理の遅延を生じさせることなくコンテキストスイッチを行うことができる。
次に、動作を説明する。
次に、動作を説明する。
以下、パイプライン処理装置1における処理サイクルを追って、各部の動作を説明する。なお、ここでは、レジスタ用メモリ100におけるソースデータ間の演算が実行される場合の動作を例に挙げて説明する。
初めに、サイクル1において、実行制御部20がタスク/スレッド情報管理部10から、各タスクあるいはスレッドについて管理されている情報を取得し、その情報を基に、次に実行するタスクあるいはスレッドを選択する。そして、実行制御部20は、選択したタスクあるいはスレッドのタスク/スレッド識別子をプログラムカウンタ用メモリ30に出力する。
初めに、サイクル1において、実行制御部20がタスク/スレッド情報管理部10から、各タスクあるいはスレッドについて管理されている情報を取得し、その情報を基に、次に実行するタスクあるいはスレッドを選択する。そして、実行制御部20は、選択したタスクあるいはスレッドのタスク/スレッド識別子をプログラムカウンタ用メモリ30に出力する。
次に、サイクル2において、プログラムカウンタ用メモリ30が、実行制御部20によって入力されたタスク/スレッド識別子に応じたPCの値(命令アドレス)を読み出し、読み出した命令アドレスを外部メモリ2に出力する。また、プログラムカウンタ用メモリ30は、実行制御部20によって入力されたタスク/スレッド識別子を実行中情報保持部40に出力する。
続いて、サイクル3において、外部メモリ2がプログラムカウンタ用メモリ30によって入力された命令アドレスに記憶されたデータ(命令コード)をデコードユニット50に出力する。また、実行中情報保持部40がプログラムカウンタ用メモリ30によって入力されたタスク/スレッド識別子をスレッドID保持部41に記憶する。
次いで、サイクル4において、デコードユニット50が外部メモリ2によって入力された命令コードを解読し、演算の指示内容と読み出しレジスタ番号および書き込みレジスタ番号を取得する。そして、デコードユニット50は、演算の指示をパイプラインレジスタ80に出力すると共に、読み出しレジスタ番号を加算器60に、書き込みレジスタ番号を書き込みレジスタ番号保持部45にそれぞれ出力する。
次いで、サイクル4において、デコードユニット50が外部メモリ2によって入力された命令コードを解読し、演算の指示内容と読み出しレジスタ番号および書き込みレジスタ番号を取得する。そして、デコードユニット50は、演算の指示をパイプラインレジスタ80に出力すると共に、読み出しレジスタ番号を加算器60に、書き込みレジスタ番号を書き込みレジスタ番号保持部45にそれぞれ出力する。
また、実行中情報保持部40が、スレッドID保持部41に記憶されたタスク/スレッド識別子をスレッドID保持部42にシフトさせ、スレッドID保持部42が、シフトされたタスク/スレッド識別子を加算器60に出力する。
さらに、加算器60が、スレッドID保持部42によって入力されたタスク/スレッド識別子と、デコードユニット50によって入力された読み出しレジスタ番号とから、レジスタ用メモリ100の読み出しレジスタアドレスを算出し、レジスタ用メモリ100に出力する。
さらに、加算器60が、スレッドID保持部42によって入力されたタスク/スレッド識別子と、デコードユニット50によって入力された読み出しレジスタ番号とから、レジスタ用メモリ100の読み出しレジスタアドレスを算出し、レジスタ用メモリ100に出力する。
次に、サイクル5において、レジスタ用メモリ100が、加算器60によって入力された読み出しレジスタアドレスに対応するデータ(ソースデータ)を実行ユニット90に出力する。また、パイプラインレジスタ80が、デコードユニット50によって入力された演算の指示を示すデータを記憶する。さらに、実行中情報保持部40が、スレッドID保持部42に記憶されたタスク/スレッド識別子をスレッドID保持部43にシフトさせると共に、デコードユニット50によって入力された書き込みレジスタ番号を書き込みレジスタ番号保持部45に記憶する。
続いて、サイクル6において、実行ユニット90が、パイプラインレジスタ80に記憶された演算の指示を示すデータを取得し、レジスタ用メモリ100によって入力されたデータ(ソースデータ)に対し、演算処理を行う。そして、実行ユニット90は、演算結果をレジスタ用メモリ100に出力する。
また、実行中情報保持部40が、スレッドID保持部43に記憶されたタスク/スレッド識別子をスレッドID保持部44にシフトさせると共に、書き込みレジスタ番号保持部45に記憶された書き込みレジスタ番号を書き込みレジスタ番号保持部46にシフトさせる。そして、実行中情報保持部40は、スレッドID保持部44に記憶されたタスク/スレッド識別子および書き込みレジスタ番号保持部45に記憶された書き込みアドレス番号を加算器70に出力する。
また、実行中情報保持部40が、スレッドID保持部43に記憶されたタスク/スレッド識別子をスレッドID保持部44にシフトさせると共に、書き込みレジスタ番号保持部45に記憶された書き込みレジスタ番号を書き込みレジスタ番号保持部46にシフトさせる。そして、実行中情報保持部40は、スレッドID保持部44に記憶されたタスク/スレッド識別子および書き込みレジスタ番号保持部45に記憶された書き込みアドレス番号を加算器70に出力する。
さらに、加算器70は、スレッドID保持部44によって入力されたタスク/スレッド識別子および書き込みレジスタ番号保持部45によって入力された書き込みアドレス番号とから、レジスタ用メモリ100の書き込みレジスタアドレス(デスティネーションアドレス)を算出し、レジスタ用メモリ100に出力する。
そして、サイクル7において、レジスタ用メモリ100が、実行ユニット90によって入力された演算結果を、加算器70によって入力された書き込みレジスタアドレスに記憶する。
そして、サイクル7において、レジスタ用メモリ100が、実行ユニット90によって入力された演算結果を、加算器70によって入力された書き込みレジスタアドレスに記憶する。
以後、処理対象となるタスクあるいはスレッドについて、上述の動作を繰り返すことにより、パイプライン処理装置1における処理が遂行される。
なお、ここでは命令の処理単位がスレッドである場合について説明したが、命令の処理単位がタスクである場合についても同様である。
以上のように、本発明を適用したパイプライン処理装置1は、レジスタファイルに代えて、メモリによって構成されたレジスタ用メモリ100を備えていると共に、PCを構成するレジスタに代えて、メモリによって構成されたプログラムカウンタ用メモリ30を備えている。
なお、ここでは命令の処理単位がスレッドである場合について説明したが、命令の処理単位がタスクである場合についても同様である。
以上のように、本発明を適用したパイプライン処理装置1は、レジスタファイルに代えて、メモリによって構成されたレジスタ用メモリ100を備えていると共に、PCを構成するレジスタに代えて、メモリによって構成されたプログラムカウンタ用メモリ30を備えている。
したがって、これらをレジスタによって構成する場合に比べ、レジスタのゲート数が低減すると共に、コンテキストの入れ替えを行うことなく、アドレスの指定によってコンテキストスイッチを行うことができるため、複数のタスクあるいはスレッドを効率的に処理することが可能となる。
また、タスク/スレッド識別子がレジスタ用メモリ100の上位アドレスに対応し、命令コードの読み出しレジスタ番号および書き込みレジスタ番号がレジスタ用メモリ100の下位アドレスに対応されているため、レジスタ用メモリ100のメモリ空間を複数のタスクあるいはスレッドそれぞれに容易に割り当てて使用することが可能となる。
また、タスク/スレッド識別子がレジスタ用メモリ100の上位アドレスに対応し、命令コードの読み出しレジスタ番号および書き込みレジスタ番号がレジスタ用メモリ100の下位アドレスに対応されているため、レジスタ用メモリ100のメモリ空間を複数のタスクあるいはスレッドそれぞれに容易に割り当てて使用することが可能となる。
また、このようなメモリアクセス方式とすることにより、他のタスクあるいはスレッドによって誤ってコンテキストにアクセスされる事態を防ぐことができる。
1 パイプライン処理装置、2 外部メモリ、3 プロセッサ、10 タスク/スレッド情報管理部、20 実行制御部、30 プログラムカウンタ用メモリ、40 実行中情報保持部、41〜44 スレッドID保持部、45,46 書き込みレジスタ番号保持部、50 デコードユニット、60,70 加算器、80 パイプラインレジスタ、90 実行ユニット、100 レジスタ用メモリ
Claims (4)
- プロセッサの外部に備えられる外部メモリから実行対象となる命令をフェッチしてデコードし、実行ユニットを用いて演算を行うプロセッサであって、
前記実行ユニットにおける演算対象あるいは演算結果であるデータを記憶するレジスタファイル用のメモリと、
実行対象となる命令が記憶された前記外部メモリのアドレスを指し示すプログラムカウンタを記憶するプログラムカウンタ用のメモリと、
を含むことを特徴とするプロセッサ。 - 前記レジスタファイル用のメモリは、複数のタスクあるいはスレッドそれぞれに対応するメモリ空間に区分され、
前記プログラムカウンタ用のメモリは、前記複数のタスクあるいはスレッドそれぞれに関するプログラムカウンタを記憶していることを特徴とする請求項1記載のプロセッサ。 - 取り扱われているタスクあるいはスレッドのうち、実行対象のタスクあるいはスレッドを指定する情報を上位アドレスに対応させ、デコードされた命令に含まれるレジスタ番号を下位アドレスに対応させることにより、前記レジスタファイル用のメモリにおける読み出しアドレスあるいは書き込みアドレスを指定するアドレス指定手段を含むことを特徴とする請求項1または2記載のプロセッサ。
- プロセッサの外部に備えられる外部メモリから実行対象となる命令をフェッチしてデコードし、実行ユニットを用いて演算を行うプロセッサにおける演算処理方法であって、
前記実行ユニットにおける演算対象あるいは演算結果であるデータを記憶するレジスタファイルと、実行対象となる命令が記憶された前記外部メモリのアドレスを指し示すプログラムカウンタとをそれぞれメモリによって構成し、前記レジスタファイルおよびプログラムカウンタを構成するメモリの所定アドレスに、複数のタスクあるいはスレッドそれぞれに対応する演算対象あるいは演算結果であるデータとプログラムカウンタとを記憶し、それらメモリのアドレスを切り換えることによりコンテキストスイッチを行いながら演算を行うことを特徴とする演算処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004330087A JP2006139645A (ja) | 2004-11-15 | 2004-11-15 | プロセッサおよび演算処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004330087A JP2006139645A (ja) | 2004-11-15 | 2004-11-15 | プロセッサおよび演算処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006139645A true JP2006139645A (ja) | 2006-06-01 |
Family
ID=36620422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004330087A Withdrawn JP2006139645A (ja) | 2004-11-15 | 2004-11-15 | プロセッサおよび演算処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006139645A (ja) |
-
2004
- 2004-11-15 JP JP2004330087A patent/JP2006139645A/ja not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6143872B2 (ja) | 装置、方法、およびシステム | |
US8176478B2 (en) | Process for running programs on processors and corresponding processor system | |
JP4202244B2 (ja) | Vliw型dsp,及びその動作方法 | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
JP2009059246A (ja) | マイクロプロセッサ | |
US10409602B2 (en) | Vector operand bitsize control | |
JPH1097423A (ja) | ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ | |
JP5233078B2 (ja) | プロセッサ及びその処理方法 | |
JP5327432B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JP2006139645A (ja) | プロセッサおよび演算処理方法 | |
WO2018138975A1 (ja) | 演算処理装置および情報処理システム | |
JP5292831B2 (ja) | プログラマブルコントローラ | |
US20050114626A1 (en) | Very long instruction word architecture | |
JP2010191511A (ja) | マイクロプロセッサ | |
JP4151497B2 (ja) | パイプライン処理装置 | |
JP2883465B2 (ja) | 電子計算機 | |
JP2008107913A (ja) | プログラム、ソフトウェア変換装置及びコンピュータ | |
JP2006099335A (ja) | コンテキスト処理装置 | |
JPWO2007004323A1 (ja) | 情報処理装置 | |
JP5993687B2 (ja) | ワンチッププロセッサ | |
JP2004287919A (ja) | 演算装置及び制御装置及び演算処理装置及び演算方法及び演算プログラム | |
JP2010092273A (ja) | 情報処理装置 | |
JP5311008B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JP2004520650A (ja) | 固定幅命令エンコード内のプロセッサ操作の拡張された機能性 | |
JP2006331281A (ja) | マルチプロセッサシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20070403 |
|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080205 |