JP5894496B2 - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP5894496B2
JP5894496B2 JP2012104577A JP2012104577A JP5894496B2 JP 5894496 B2 JP5894496 B2 JP 5894496B2 JP 2012104577 A JP2012104577 A JP 2012104577A JP 2012104577 A JP2012104577 A JP 2012104577A JP 5894496 B2 JP5894496 B2 JP 5894496B2
Authority
JP
Japan
Prior art keywords
thread
partition
hardware
semiconductor device
schedule
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.)
Active
Application number
JP2012104577A
Other languages
English (en)
Other versions
JP2013232150A (ja
Inventor
均 鈴木
均 鈴木
浩次 安達
浩次 安達
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2012104577A priority Critical patent/JP5894496B2/ja
Priority to US13/859,200 priority patent/US9465610B2/en
Priority to EP13163470.1A priority patent/EP2660714B1/en
Priority to TW102113462A priority patent/TWI566174B/zh
Priority to CN201310157912.5A priority patent/CN103383651B/zh
Publication of JP2013232150A publication Critical patent/JP2013232150A/ja
Application granted granted Critical
Publication of JP5894496B2 publication Critical patent/JP5894496B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Description

本発明は、半導体装置に関し、特に複数のスレッドを同時に実行するマルチスレッドプロセッサを有する半導体装置に関する。
近年、プロセッサの処理能力を向上させるためにマルチスレッドプロセッサが提案されている。マルチスレッドプロセッサは、それぞれが独立した命令流を生成するスレッドを有する。そして、マルチスレッドプロセッサは、パイプライン処理により命令を処理する演算回路に対していずれのスレッドにより生成された命令流を処理させるかを切り替えながら演算処理を実行する。このとき、マルチスレッドプロセッサは、1つのスレッドにより生成された命令をパイプライン中の1つの実行ステージで実行しながら、他の実行ステージにおいて他のスレッドにより生成された命令を処理することができる。つまり、マルチスレッドプロセッサの演算回路では、互いに独立関係にある命令がそれぞれ異なる実行ステージで実行されることになる。これにより、マルチスレッドプロセッサは、それぞれの命令流を円滑に処理しながら、パイプラインの実行ステージが何も処理しない時間を削減し、プロセッサの処理能力を向上させる。
また、このようなマルチスレッドプロセッサでは、実行される複数のスレッドの一部を停止して所定のスレッドに対する処理能力を一時的に高める処理が行われる。このように、実行するスレッドの数を動的に切り替える技術が特許文献1に開示されている。
また、単一の物理リソース(ハードウェア資源)を複数のリソースに見せかける仮想化技術がある。この仮想化技術を用いることで、例えば、1つのCPU上で複数の仮想マシン(VM:Virtual Machine)を動作させることができ、これにより各々の仮想マシン上で異なるオペレーティングシステム(OS:Operating System)を動作させることができる。複数の仮想マシンを動作させることを、別な表現で、物理的なCPUやメモリを仮想化し論理的な区画(パーティション)を生成する、と表すことがあるが、本明細書中では、仮想マシンと同一な意味合いとして、パーティションという表現を用いることとする。
特許文献1は、論理的にパーティション化されたコンピュータにおけるマルチスレッドプロセッサを制御する装置について開示するものである。論理的にパーティション化されたコンピュータは、複数のパーティションと、複数のパーティションを制御するパーティション・マネージャを含む。また、特許文献1に記載のマルチスレッドプロセッサは、複数のハードウェアスレッドのうちの第1ハードウェアスレッドが、複数のパーティションのうちの第1パーティションにあるロジカル・プロセッサに割り当てられる。さらに、特許文献1に記載の装置は、マルチスレッドプロセッサによって実行される複数のハードウェアスレッドのうちの第1ハードウェアスレッドを選択的に活動化及び非活動化するように構成され、かつ、一旦第1ハードウェアスレッドが非活動化された場合に当該第1ハードウェアスレッドが活動化され得る方法を制御するように構成される制御回路を有する。そして、特許文献1に記載の装置のパーティション・マネージャは、第1パーティションにおいてロジカル・プロセッサをオフラインとみなし、それによって割り込みの表明に応答した第1ハードウェアスレッドの再活動化を禁止すると共にハードウェアスレッドを非活動化するよう制御回路を指図する。
これにより、特許文献1に記載の装置では、複数のハードウェアスレッドのうち第1ハードウェアスレッドを非活動化させ、他のハードウェアスレッドに関する処理能力を向上させる。
特開2004−326749号公報
しかしながら、特許文献1に記載の技術では、パーティション・マネージャを介在させなければ第1ハードウェアスレッドを非活動化させることができない。このように、ハードウェアスレッドの一部の活動を停止させるために行われる処理はプロセッサの処理におけるオーバーヘッドとなる。そのため、特許文献1に記載の技術では、このオーバーヘッドによりプロセッサの処理能力が損なわれる問題がある。
本発明にかかる半導体装置の一態様は、それぞれが独立した命令流を生成する複数のハードウェアスレッドと、前記複数のハードウェアスレッドのいずれか1つが生成した前記命令流に属する演算命令を実行する実行ユニットと、複数のパーティションに対応して設けられ、前記ハードウェアスレッドと前記パーティションとの対応関係を定義する複数の第1の設定レジスタを含み、前記パーティション間の実行時間の割合を規定するパーティションスケジュールと、前記パーティションのそれぞれに割り当てられた前記実行時間内の前記ハードウェアスレッドの実行時間の割合を規定するスレッドスケジュールと、に基づき前記スレッド選択信号を生成するスケジューラと、を有し、前記スケジューラは、前記実行ユニットにおいて実行された前記演算命令が、いずれか1つの前記パーティションに割り当てられた前記実行時間を占有する第1の占有開始命令であった場合に前記実行ユニットが出力する第1の占有制御信号に応じて、前記第1の占有制御信号により示される前記パーティションに割り当てられた前記実行時間中に選択する前記ハードウェアスレッドを前記スレッドスケジュールによらず前記第1の占有制御信号により示される前記ハードウェアスレッドを指定する前記スレッド選択信号を出力する。
また、本発明にかかる半導体装置の別の態様は、それぞれが独立した命令流を生成する複数のハードウェアスレッドをそれぞれ論理的に定義される複数のパーティションのいずれかに割り当てて実行する半導体装置であって、前記複数のハードウェアスレッドのうちスレッド選択信号により選択されたハードウェアスレッドが生成した前記命令流に属する演算命令を実行する実行ユニットと、前記複数のパーティションに対応して設けられ、それぞれが、対応する前記パーティション内における前記ハードウェアスレッドの実行時間の割り当てに関する対応関係を定義するスレッドスケジュールが格納される第1の設定レジスタを含み、前記スレッドスケジュールに基づき前記スレッド選択信号を生成するスケジューラと、を有し、前記スケジューラは、第1の制御レジスタを更に有し、当該第1の制御レジスタが1つの前記パーティションを占有状態とする前記設定値である場合、前記スレッドスケジュールによらず特定の前記ハードウェアスレッドを指定する前記スレッド選択信号を出力する。
本発明にかかる半導体装置では、スケジューラが実行ユニットにおいて実行された第1の占有開始命令に応じて1つのパーティションが選択される期間に固定されたハードウェアスレッドを指定するスレッド選択信号を出力する。これにより、本発明の半導体装置は、OSやパーティション・マネージャ等の上位システムを介在させることなく、パーティション毎に非占有状態から占有状態への切り替えを行うことができる。
本発明にかかる半導体装置によれば、パーティション毎の状態を非占有状態から占有状態に切り替える際のオーバーヘッドをなくし、処理能力を向上させることができる。
実施の形態1にかかる半導体装置のブロック図である。 実施の形態1にかかるスレッド割り当てテーブルを構成するレジスタの構成例を示す図である。 図2で示したレジスタのフィールドの定義を示す表である。 実施の形態1にかかる半導体装置のディスパッチユニットにおける各フィールドの意味を説明する図である。 図1で示したパーティションを定義するためのスレッド割り当てテーブルの例を示す図である。 実施の形態1にかかるスケジューラのブロック図である。 実施の形態1にかかる半導体装置の動作を示すフローチャートである。 実施の形態1にかかる半導体装置のスレッドスケジュールとパーティションスケジュールの一例を示す図である。 実施の形態1にかかる半導体装置の通常動作を示すタイミングチャートである。 図9に示したタイミングチャートに基づき動作する半導体装置のソフトウェア階層を示す図である。 実施の形態1にかかる半導体装置において1つのパーティションを占有するスレッドが存在する期間がある場合の動作を示すタイミングチャートである。 図11に示したタイミングチャートのHT1占有期間における半導体装置のソフトウェア階層を示す図である。 実施の形態1にかかる半導体装置においてCPUを占有するスレッドが存在する期間がある場合の動作を示すタイミングチャートである。 図13に示したタイミングチャートのHT1占有期間における半導体装置のソフトウェア階層を示す図である。
実施の形態1
以下、図面を参照して、本発明の実施の形態について説明する。まず、実施の形態1にかかる半導体装置のブロック図を図1に示す。本発明は、半導体装置のうち、特に、半導体装置に搭載されるCPUの処理に関するものである。そのため、図1に示すブロック図では、半導体装置1のCPU10を示した。半導体装置1は、図1に示すCPU10以外にも、メモリ、タイマ等の他の回路ブロックを有する。そして、半導体装置1では、CPU10と、他の回路ブロックとを半導体装置内のバスを介して接続する。
図1に示すように、CPU10は、命令フェッチ部11〜14、ディスパッチユニット15、実行ユニット17、レジスタファイル18、及び、スケジューラ19を有する。また、図1に示す例では、論理的に定義されるパーティションについても図示した。具体的な一例として、図1では、ハードウェアスレッドHT0とハードウェアスレッドHT1とを第1のパーティション(例えば、パーティションPRT0)に割り当てられ、ハードウェアスレッドHT2とハードウェアスレッドHT2とを第2のパーティション(例えば、パーティションPRT1)に割り当てられる。図1では、上記割り当てを明確にするために、命令フェッチ部11〜14に対してパーティションの区別を示す囲みを示した。この囲みは、論理的なパーティションの割り当てを示すものであり、命令フェッチ部11〜14は、独立したハードウェア構成を有するものである。
命令フェッチ部11〜14は、それぞれが独立したプログラムカウンタを有し、独立した命令流を生成する。CPU10は、この命令フェッチ部11〜14によりハードウェアスレッドを構成する。図1では、命令フェッチ部11が生成する命令流に属する演算命令にOPE0を付し、命令フェッチ部12が生成する命令流に属する演算命令にOPE1を付し、命令フェッチ部13が生成する命令流に属する演算命令にOPE2を付し、命令フェッチ部14が生成する命令流に属する演算命令にOPE3を付した。また、実施の形態1では、命令フェッチ部11により構成されるハードウェアスレッドを識別するハードウェアスレッド番号をHT0とし、命令フェッチ部12により構成されるハードウェアスレッドを識別するハードウェアスレッド番号をHT1とし、命令フェッチ部13により構成されるハードウェアスレッドを識別するハードウェアスレッド番号をHT2とし、命令フェッチ部14により構成されるハードウェアスレッドを識別するハードウェアスレッド番号をHT3とした。
また、図1では、図示を省略したが、命令フェッチ部11〜14は、バスBUSを介して図示しないメモリから命令コードを読み出す。そして、命令フェッチ部11〜14は、読み出した命令コードをデコードして演算命令を生成する。
ディスパッチユニット15は、スレッド割り当てテーブル16を含む。このスレッド割り当てテーブル16は、ディスパッチユニット15の外に配置されていてもよい。例えば、スレッド割り当てテーブル16は、半導体装置1の内部のメモリ、スケジューラ等に配置することが可能である。
ディスパッチユニット15は、スレッド選択信号TSELに応じて複数のハードウェアスレッドが生成する演算命令の1つを選択する。より具体的には、ディスパッチユニット15は、実行ユニット17が後続の処理サイクルで実行する演算命令を発行するハードウェアスレッドを示すスレッド選択信号TSELに応じて実行ユニット17に演算命令を与えるハードウェアスレッドを選択する。このスレッド選択信号TSELには、実行ユニット17が後続の処理サイクルで実行する演算命令を発行するハードウェアスレッド番号と、当該ハードウェアスレッド番号に対応するハードウェアスレッドが属するパーティションに対応するパーティション番号とが含まれる。
ディスパッチユニット15は、スレッド割り当てテーブル16を参照して、スレッド選択信号TSELのパーティション番号とハードウェアスレッド番号との組み合わせがスレッド割り当てテーブル16において規定された組み合わせと一致するか否かを判定する。そして、ディスパッチユニット15は、判定結果が不一致を示す場合、実行ユニット17に対する演算命令の発行を停止する。
ディスパッチユニット15において、スレッド選択信号TSELのパーティション番号とハードウェアスレッド番号との組み合わせの正当性を検証することで、ディスパッチユニット15は、ハードウェアスレッドのパーティションへの割り当てを実行する。また、この検証を行うことで、スケジューラ19のレジスタへの書き込みを制限することなくパーティション間の独立性を確保することができる。
スレッド割り当てテーブル16は、パーティションとハードウェアスレッドとの対応関係を示す情報を含むレジスタである。半導体装置1は、初期設定処理時に、不揮発性記憶装置(不図示)からパーティションとハードウェアスレッドとの対応関係を示す設定値を読み出してスレッド割り当てテーブル16に格納すると共に、スレッド割り当てテーブルに基づきスケジューラ19に設けられる第1の設定レジスタにスレッドスケジュールの設定を書き込む。このレジスタの詳細については、後述する。
実行ユニット17は、ハードウェアスレッドHT0〜HT3のいずれか1つが生成した命令流に属する演算命令を実行する。図1に示す例では、ディスパッチユニット15が、ハードウェアスレッドHT0〜HT3のいずれか1つが生成した命令流に属する演算命令を選択して演算命令OPEを実行ユニット17に与える。つまり、図1に示す例では、実行ユニット17は、ディスパッチユニット15が選択した演算命令OPEを実行する。そして、実行ユニット17は、演算命令OPEに応じてレジスタファイル18に格納されているデータに対して演算を行う。レジスタファイル18は、ハードウェアスレッド毎に独立した記憶領域を有する。実行ユニット17は、演算命令OPEがロード命令あるいはストア命令等の外部アクセスを要求する命令であった場合、バスBUSを介して図示しないメモリ等の周辺回路にアクセスを行う。
また、実行ユニット17は、演算命令OPEが、いずれかのハードウェアスレッドによる実行時間の占有状態を変更する命令であった場合、占有制御信号OCCを出力する。例えば、演算命令OPEが、いずれか1つの前記パーティションに割り当てられた前記実行時間を占有する第1の占有開始命令であった場合、実行ユニット17は、第1の占有制御信号を占有制御信号OCCとして出力する。この第1の占有制御信号は、実行時間の占有対象となるパーティション番号と実行時間を占有する占有ハードウェアスレッド番号とが含まれる。演算命令OPEが、ずれか1つのパーティションに割り当てられた前記実行時間の占有状態を解除する第1の占有解除命令であった場合、実行ユニット17は、第2の占有制御信号を占有制御信号OCCとして出力する。演算命令OPEが、1つの前記ハードウェアスレッドが前記実行ユニットの実行時間の全てを占有する第2の占有開始命令であった場合、実行ユニット17は、第3の占有制御信号を占有制御信号OCCとして出力する。演算命令OPEが、1つの前記ハードウェアスレッドが前記実行ユニットの実行時間の全てを占有する状態を解除する第2の占有解除命令であった場合、実行ユニット17は、第4の占有制御信号を占有制御信号OCCとして出力する。以下の説明では、第1の占有制御信号から第4の占有制御信号に対してOCCの符号を利用する。
スケジューラ19は、複数のパーティションに対応して設けられ、ハードウェアスレッドとパーティションとの対応関係を定義する複数の第1の設定レジスタを少なくとも含む。そして、スケジューラ19は、パーティション間の実行時間の割合を規定するパーティションスケジュールと、パーティションのそれぞれに割り当てられた実行時間内のハードウェアスレッドの実行時間の割合を規定するスレッドスケジュールと、に基づきスレッド選択信号TSELを生成する。また、スケジューラ19は、占有制御信号OCCに基づき1つのパーティションに割り当てられた実行時間又は実行ユニット17の実行時間の全てを1つのハードウェアスレッドにより占有するようにスレッド選択信号TSELを出力する。
より具体的には、スケジューラ19は、実行ユニットにおいて実行された演算命令OPEが、いずれか1つのパーティションに割り当てられた実行時間を占有する第1の占有開始命令であった場合に実行ユニット17が出力する第1の占有制御信号に応じて、第1の占有制御信号により示されるパーティションに割り当てられた実行時間中に選択するハードウェアスレッドをスレッドスケジュールによらず第1の占有制御信号により示されるハードウェアスレッドを指定するスレッド選択信号TSELを出力する。また、スケジューラ19は、実行ユニット17において実行された演算命令OPEが、いずれか1つのパーティションに割り当てられた実行時間の占有状態を解除する第1の占有解除命令であった場合に実行ユニット17が出力する第2の占有制御信号に応じて、スレッドスケジュールに基づき決定されるハードウェアスレッドを指定するスレッド選択信号TSELを出力する。
スケジューラ19は、実行ユニット17が実行した演算命令OPEが、1つのハードウェアスレッドが実行ユニット17の実行時間の全てを占有する第2の占有開始命令であった場合に実行ユニット17が出力する第3の占有制御信号に応じて、スレッドスケジュール及びパーティションスケジュールによらず第3の占有制御信号により示されるハードウェアスレッドに対応する第2の占有ハードウェアスレッド番号を含むスレッド選択信号TSELを出力する。また、スケジューラ19は、実行ユニット17において実行された演算命令OPEが、1つのハードウェアスレッドが実行ユニット17の実行時間の全てを占有する状態を解除する第2の占有解除命令であった場合に実行ユニットが出力する第4の占有制御信号に応じて、スレッドスケジュール及びパーティションスケジュールに基づき決定されるスレッド選択信号TSELを出力する。
続いて、スレッド割り当てテーブル16の詳細について説明する。そこで、図2にスレッド割り当てテーブルを構成するレジスタの構成例を示す。図2に示すように、スレッド割り当てテーブル16は、パーティションに属するハードウェアスレッドを規定するパーティション設定レジスタVMPRTnを有する。図2に示すパーティション設定レジスタVMPRTnは、32ビットのデータ長を有する。また、nは、パーティション設定レジスタの番号を示す値である。なお、パーティション設定レジスタVMPRTnの個数は、実施の形態1にかかる半導体装置1で定義するパーティションの数により決まる。例えば、図2に示したパーティション設定レジスタを用いた場合、1つのレジスタにより最大で4つのフィールドを設定でき、また設定に要すするフィールド数は、パーティション数に1を加えた数であるため、パーティション数が8個である場合、パーティション設定レジスタは3つ必要になる。
このパーティション設定レジスタVMPRTnは、複数のフィールドに分割される。そして、フィールド毎にどのような値を格納するかが仕様により決定されている。そこで、パーティション設定レジスタのフィールドの定義を示す表を図3に示す。図3に示すように、実施の形態1にかかるパーティション設定レジスタVMPRTnは、31ビット目、23ビット目、15ビット目、7ビット目のフィールドについては、予約領域として0が設定される。また、予約領域として設定されるフィールドについては、読み出し専用の属性が設定される。実施の形態1にかかるパーティション設定レジスタVMPRTnは、30ビット目から24ビット目のフィールド、22ビット目から16ビット目のフィールド、14ビット目から8ビット目のフィールド、6ビット目から0ビット目のフィールドの4つフィールドにベーススレッドIDを格納する領域が設定される。このベーススレッドIDは、パーティションに割り当てられるハードウェアスレッドHTm(mはハードウェアスレッドの番号を示す値)の下限値を示すものである。また、ベーススレッドIDが格納するフィールドには書き込み許可属性及び読み出し許可属性が与えられる。
また、実施の形態1にかかる半導体装置1のディスパッチユニット15における各フィールドの意味を説明する図を図4に示す。図4に示すように、ディスパッチユニット15は、第1のパーティションのベーススレッドIDと第1のパーティションと論理的に隣接する第2のパーティションのベーススレッドIDとに基づき第1のパーティションに属するハードウェアスレッドの範囲を認識する。より具体的には、ディスパッチユニット15は、パーティションPRT0に割り当てられたハードウェアスレッドの下限値を6ビット目から0ビット目のフィールドに格納されたベーススレッドIDにより認識し、パーティションPRT0に割り当てられたハードウェアスレッドの上限値を14ビット目から8ビット目のフィールドに格納されたベーススレッドIDから1を引いた値により認識する。
続いて、図5に図1で示したパーティションを定義するためのスレッド割り当てテーブルの例を示す。図5に示すように、図1で示したパーティションを設定するためには、パーティション設定レジスタVMPRT0の6ビット目から0ビット目のフィールドにベーススレッドIDとしてHT0を格納し、14ビット目から8ビット目のフィールドにベーススレッドIDとしてHT2を格納し、22ビット目から16ビット目のフィールド及び30ビット目から24ビット目のフィールドに初期値(例えば、0)を格納する。このような設定とすることで、ディスパッチユニット15は、ハードウェアスレッドHT0、HT1がパーティションPRT0に割り当てられ、ハードウェアスレッドHT2、HT3がパーティションPRT1に割り当てられていることを認識する。
スレッド割り当てテーブル16を、図2から図4において説明したようなレジスタで構成することで、ディスパッチユニット15において複雑な計算を行わせることなく、柔軟にパーティションの設定を行うことができる。なお、スレッド割り当てテーブル16へのベーススレッドIDの入力は、例えば、CPU10の起動時に行われる初期化動作の一処理として行われる。また、図1ではスレッド割り当てテーブル16とバスBUSとの接続配線を省略したが、スレッド割り当てテーブル16への書き込み処理は、実行ユニット17がバスBUSを介して行うものとする。なお、バスBUSは、半導体装置内部に設けられるものである。
続いて、スケジューラ19の詳細について説明する。そこで、スケジューラ19の詳細なブロック図を図6に示す。図6に示すように、スケジューラ19は、複数のスレッドスケジューラ(例えば、スレッドスケジューラ21〜23)及びパーティションスケジューラを有する。なお、図6に示すスケジューラ19は、3つのパーティションに対応するものであるため、3つのスレッドスケジューラを有するが、スレッドスケジューラの数は仕様上で定められるパーティションの数の最大数に応じて個数が決定されることが好ましい。
スレッドスケジューラ21〜23は、それぞれ、複数のパーティションのいずれか1つに対応づけられ、対応するパーティションに属するハードウェアスレッドを識別するハードウェアスレッド番号を含むスレッド選択信号TSEL0〜TSEL2を出力する。スレッドスケジューラ21〜23は、同じ回路構成であるため、ここではスレッドスケジューラ21について詳細に説明を行い、スレッドスケジューラ22、23については詳細な説明を省略する。
スレッドスケジューラ21は、スレッドスケジュールテーブル30、第1のセレクタ(例えば、セレクタ34)、パーティション占有状態制御レジスタ35、及び、第2のセレクタ(例えば、セレクタ38)を有する。
スレッドスケジュールテーブル30は、スレッドスケジュールを規定するものである。スレッドスケジュールテーブル30は、ポインタ31、上限値レジスタ32及び第1の設定レジスタ(例えば、スレッドスケジュール設定レジスタ33)を有する。ポインタ31は、スレッドスケジューラ21がハードウェアスレッド番号を含むスレッド選択信号TSEL0を生成する毎に値が1つずつ増加するスロット指定値を生成する。上限値レジスタ32は、スロット指定値の上限値を有し、スロット指定値が上限値に達したことに応じてポインタ31をリセットする。スレッドスケジュール設定レジスタ33は、複数の第1の設定レジスタの1つであって、自スレッドスケジューラが対応するパーティションに割り当てられたハードウェアスレッドのハードウェアスレッド番号が格納され、スレッドスケジュールを規定するものである。より具体的には、スレッドスケジュール設定レジスタ33は、複数のスロット(例えば、スロットSLT0〜SLT3)を有する。この複数のスロットSLT0〜SLT3には、バスBUSを介してハードウェアスレッド番号が与えられる。また、スレッドスケジュール設定レジスタ33には、スレッドスケジューラ21が対応するパーティションに対応するパーティション番号がハードウェアスレッド番号と共に格納される。
セレクタ34は、スレッドスケジュールに基づき、スレッドスケジュール設定レジスタ33に格納された前記ハードウェアスレッド番号のいずれか1つを選択する。より具体的には、セレクタ34は、入力端子としてポートP0〜P3を有する。ポートP0〜P3には、スレッドスケジュール設定レジスタ33のスロットSLT0〜SLT3に対応して設けられる。ポートP0〜P3にはスロットSLT0〜SLT3に格納されるハードウェアスレッド番号が与えられる。また、セレクタ34には、ポインタ31から選択するポートを指定するスロット選択信号が与えられる。つまり、セレクタ34は、スロットSLT0〜スロットSLT3に格納されたハードウェアスレッド番号を循環的に順次選択する。
パーティション占有状態制御レジスタ35は、第1の制御レジスタ(例えば、レジスタ36)及び第2の制御レジスタ(例えば、レジスタ37)を有する。レジスタ36は、第1の占有制御信号OCCが自スレッドスケジューラに対応するパーティションを示す場合に有効状態を示す第1の占有状態フラグを格納する。レジスタ36は、実行ユニット17で実行される演算命令が第1の占有解除命令であった場合に生成される第2の占有制御信号OCCが入力された場合には、第1の占有状態フラグを無効状態とする。つまり、第1の占有状態フラグは、1つのパーティションを占有状態とするか非占有状態とするかを示す設定値である。レジスタ37は、第1の占有制御信号OCCにより示されるハードウェアスレッドを識別する第1の占有ハードウェアスレッド番号を格納する。
セレクタ38は、占有状態フラグが無効状態(例えば、0)である場合にセレクタ34が選択したハードウェアスレッド番号をスレッド選択信号TSEL0として出力し、占有状態フラグが有効状態(例えば、1)である場合にレジスタ37に格納された第1の占有ハードウェアスレッド番号をスレッド選択信号TSEL0として出力する。
パーティションスケジューラ24は、後続の処理サイクルにおいて演算命令を生成するパーティションを選択する。パーティションスケジューラ24は、パーティションスケジュールテーブル40、第3のセレクタ(例えば、セレクタ44)、第4のセレクタ(例えば、セレクタ45)、CPU占有状態制御レジスタ46、及び、第5のセレクタ(例えば、セレクタ49)を有する。
パーティションスケジュールテーブル40は、パーティションスケジュールを規定するものである。パーティションスケジュールテーブル40は、ポインタ41、上限値レジスタ42及び第2の設定レジスタ(例えば、パーティションスケジュール設定レジスタ43)を有する。ポインタ41は、パーティションスケジューラ24がハードウェアスレッド番号を含むスレッド選択信号TSELを生成する毎に値が1つずつ増加するスロット指定値を生成する。上限値レジスタ42は、スロット指定値の上限値を有し、スロット指定値が上限値に達したことに応じてポインタ41をリセットする。パーティションスケジュール設定レジスタ43は、スレッドスケジュールを規定するレジスタである。より具体的には、パーティションスケジュール設定レジスタ43は、複数のスロット(例えば、スロットSLT10〜SLT13)を有する。この複数のスロットSLT10〜SLT13には、バスBUSを介してパーティション番号が与えられる。
セレクタ44は、パーティションスケジュールに基づき後続の処理サイクルにおいて前記演算命令を生成する前記パーティションに対応したバーティション番号をパーティション選択信号PSELとして出力する。より具体的には、セレクタ44は、入力端子としてポートP10〜P13を有する。ポートP10〜P13には、パーティションスケジュール設定レジスタ43のスロットSLT10〜SLT13に対応して設けられる。ポートP10〜P13にはスロットSLT10〜SLT13に格納されるパーティション番号が与えられる。また、セレクタ44には、ポインタ41から選択するポートを指定するスロット選択信号が与えられる。つまり、セレクタ44は、スロットSLT10〜SLT13に格納されたパーティション番号を循環的に順次選択する。
セレクタ45は、セレクタ44が選択したパーティション番号に対応するスレッドスケジューラが出力するスレッド選択信号を選択する。より具体的には、セレクタ45は、入力端子としてポートP20〜P22を有する。ポートP20〜P22は、スレッドスケジューラ21〜23に対応して設けられる。ポートP20〜P22には、スレッドスケジューラ21〜23が出力するスレッド選択信号TSEL0〜TSEL2号が与えられる。
CPU占有状態制御レジスタ46は、第3の制御レジスタ(例えば、レジスタ47)及び第4の制御レジスタ(例えば、レジスタ48)を有する。レジスタ47は、第3の占有制御信号に応じて有効状態となる第2の占有状態フラグを格納する。レジスタ47は、実行ユニット17で実行される演算命令が第2の占有解除命令であった場合に生成される第4の占有制御信号OCCが入力された場合には、第2の占有状態フラグを無効状態とする。つまり、第2の占有状態フラグは、CPUを特定のハードウェアスレッドによる占有状態とするか非占有状態とするかを示す設定値である。レジスタ48は、第3の占有制御信号OCCにより示されるハードウェアスレッドを識別する第1の占有ハードウェアスレッド番号を格納する。
セレクタ49は、第2の占有状態フラグが無効状態(例えば、0)である場合にセレクタ45が選択したスレッド選択信号TSELを出力し、第2の占有状態フラグが有効状態(例えば、1)である場合にレジスタ48に格納された第2の占有ハードウェアスレッド番号をスレッド選択信号TSELとして出力する。
ここで、スケジューラ19の動作について説明する。図7にスケジューラ19の動作を示すフローチャートを示す。図7に示したフローチャートは1つの処理サイクルのスケジューラ19の動作を示すものである。図7に示すように、スケジューラ19は、処理サイクルが開始されると、まず、レジスタ47に格納された第2の占有状態フラグを参照してCPU10が占有状態か否かを判断する(ステップS1)。そして、ステップS1で、CPU10が占有状態であると判断した場合、レジスタ48に格納された第2の占有ハードウェアスレッド番号をスレッド選択信号TSELとして選択する(ステップS2)。
一方、ステップS1で、CPU10が非占有状態であると判断した場合、パーティションスケジュールテーブルに従って、次処理サイクルで演算命令を発行するパーティションを選択する(ステップS3)。そして、ステップS3で選択されたパーティションに対応するスレッドスケジューラのレジスタ36に格納された第1の占有状態フラグを参照して選択したパーティションが占有状態であるか否かを判断する(ステップS4)。
そして、ステップS4において選択したパーティションが占有状態であると判断された場合、レジスタ37に格納された第1の占有ハードウェアスレッド番号をスレッド選択信号TSELとして選択する(ステップS5)。一方、ステップS4において選択したパーティションが非占有状態であると判断された場合、パーティションスケジュールテーブル40に従って選択されたハードウェアスレッド番号をスレッド選択信号TSELとして出力する(ステップS6)。そして、ステップS2、S5、S6におけるスレッド選択信号TSELの出力が完了によりスケジューラ19の一処理サイクルの処理は完了する。
続いて、実施の形態1にかかる半導体装置1の動作について説明する。まず、以下で説明する半導体装置1の動作例におけるパーティションスケジュールと、パーティションPRT0のスレッドスケジュール、及び、パーティションPRT1のスレッドスケジュールを図8に示す。図8に示すように、説明する動作例では、パーティションPRT0の実行時間とパーティションPRT1の実行時間との割合は、2:1に設定される。パーティションPRT0においては、ハードウェアスレッドHT0の実行時間とハードウェアスレッドHT1の実行時間との割合は、1:1に設定される。パーティションPRT1においては、ハードウェアスレッドHT2の実行時間とハードウェアスレッドHT3の実行時間との割合は、1:1に設定される。つまり、この図8に示したスケジュールに基づき動作する半導体装置1では、ハードウェアスレッドHT0〜HT3の実行時間の割合は、概ね、33:33:17:17となる。
この図8で示したスケジュールに基づき動作する半導体装置1が通常動作状態(全てのパーティションとCPUが非占有状態で動作する状態)で動作する場合のタイミングチャートを図9に示す。図9に示すように、通常動作では、パーティションPRT0が2回選択された後にパーティションPRT1が1回選択されるという3つの処理サイクルが繰り返し行われる。そして、パーティションPRT0が選択される期間においては、ハードウェアスレッドHT0とハードウェアスレッドHT1が繰り返し選択される。パーティションPRT1が選択される期間においてはハードウェアスレッドHT2とハードウェアスレッドHT3が繰り返し選択される。また、図9に示す動作例では、全期間おいてパーティションPRT0、PRT1及びCPUの非占有状態が維持される。
ここで、図9に示したタイミングチャートに基づき動作する半導体装置1のソフトウェア階層を示す図を図10に示す。図10に示すように、図9に示したタイミングチャートで動作する半導体装置1は、CPU10等のハードウェア上でハイパーバイザプログラムを動作させる。このハイパーバイザプログラムは、ハードウェアの実行時間の全てを利用して実行される。また、ハイパーバイザプログラムの上にパーティションPRT0、PRT1が実行される。パーティションPRT0、PRT1の実行時間の割合は、パーティションスケジュールに従って決定される。また、パーティションPRT0上でハードウェアスレッドHT0、HT1が実行される。ハードウェアスレッドHT0、HT1の実行時間の割合は、パーティションPRT0に対応したスレッドスケジュールに従って決定される。また、パーティションPRT1上でハードウェアスレッドHT2、HT3が実行される。ハードウェアスレッドHT2、HT3の実行時間の割合は、パーティションPRT1に対応したスレッドスケジュールに従って決定される。
続いて、図8で示したスケジュールに基づき動作する半導体装置1においてハードウェアスレッドHT1がパーティションPRT0を占有する期間がある動作がある場合のタイミングチャートを図11に示す。図11に示すように、この動作例では、処理サイクルt2において選択されるハードウェアスレッドHT1がパーティションPRT0に割り当てられた実行時間をハードウェアスレッドHT1により占有する第1の占有開始命令を発行する。そして、この第1の占有開始命令に応じて実行ユニット17は、パーティションPRT0のハードウェアスレッドHT1を第1の占有ハードウェアスレッド番号とする占有制御信号OCC(例えば、第1の占有制御信号OCC)を出力する。スケジューラ19のスレッドスケジューラ21では、この第1の占有制御信号OCCに応じて、レジスタ36の第1の占有状態フラグが有効状態に書き換えられ、レジスタ37に第1の占有ハードウェアスレッド番号としてハードウェアスレッドHT1が格納される。
そして、このレジスタ36、37の値が書き換えられたことに応じて処理サイクルt3からパーティションPRT0がハードウェアスレッドHT1により占有される状態となる。これにより、処理サイクルt3以降にパーティションPRT0が選択される処理サイクルt4、t5においては、ハードウェアスレッドHT1が選択される。一方、処理サイクルt3以降においてもパーティションPRT1が選択される期間においてはハードウェアスレッドHT2、HT3が繰り返し選択される。
そして、処理サイクルt7において選択されるハードウェアスレッドHT1が第1の占有解除命令を発行したことに応じて実行ユニット17は、パーティションPRT0のハードウェアスレッドHT1による占有状態を解除する占有制御信号OCC(例えば、第2の占有制御信号OCC)を出力する。スケジューラ19のスレッドスケジューラ21では、この第2の占有制御信号OCCに応じて、レジスタ36の第1の占有状態フラグが無効状態に書き換えられる。そして、このレジスタ36の値が書き換えられたことに応じて処理サイクルt8からパーティションPRT0の占有状態が解除される。そのため、処理サイクルt8以降は、パーティションPRT0が選択される期間はハードウェアスレッドHT0、HT1が繰り返し選択される。
なお、図11に示した動作例では、パーティションPRT1とCPUの非占有状態は維持される。つまり、パーティションPRT1は、パーティションPRT1が占有状態となった影響を受けずに処理性能(例えば、リアルタイム性)を維持することができる。
ここで、図11に示したタイミングチャートのHT1占有期間における半導体装置のソフトウェア階層を示す図を図12に示す。図12に示すように、図11に示したHT1占有期間においては、ハードウェアスレッドHT0が非スケジュール状態となり、パーティションPRT0に割り当てられた実行時間(例えば、ハードウェア資源)を独占する占有状態となる。
続いて、図8で示したスケジュールに基づき動作する半導体装置1においてハードウェアスレッドHT1がCPU10を占有する期間がある動作がある場合のタイミングチャートを図13に示す。図13に示すように、この動作例では、処理サイクルt2において選択されるハードウェアスレッドHT1がCPU10の実行時間をハードウェアスレッドHT1により占有する第2の占有開始命令を発行する。そして、この第2の占有開始命令に応じて実行ユニット17は、CPU10を占有するハードウェアスレッドHT1を第2の占有ハードウェアスレッド番号とする占有制御信号OCC(例えば、第3の占有制御信号OCC)を出力する。スケジューラ19のパーティションスケジューラ24では、この第3の占有制御信号OCCに応じて、レジスタ47の第2の占有状態フラグが有効状態に書き換えられ、レジスタ48に第2の占有ハードウェアスレッド番号としてハードウェアスレッドHT1が格納される。
そして、このレジスタ47、48の値が書き換えられたことに応じて処理サイクルt3からCPU10がハードウェアスレッドHT1により占有される状態となる。そのため、処理サイクルt3から第2の占有解除命令が発行されるまでの期間はパーティションPRT0のみが選択される。また、CPUが占有されている期間においては、ハードウェアスレッドHT1のみが選択される。
そして、処理サイクルt7において選択されるハードウェアスレッドHT1が第2の占有解除命令を発行したことに応じて実行ユニット17は、CPU10のハードウェアスレッドHT1による占有状態を解除する占有制御信号OCC(例えば、第4の占有制御信号OCC)を出力する。スケジューラ19のスレッドスケジューラ21では、この第4の占有制御信号OCCに応じて、レジスタ47の第2の占有状態フラグが無効状態に書き換えられる。そして、このレジスタ47の値が書き換えられたことに応じて処理サイクルt8からCPU10の占有状態が解除される。そのため、処理サイクルt8以降は、パーティションPRT0が選択される期間はハードウェアスレッドHT0、HT1が繰り返し選択され、パーティションPRT1が選択される期間はハードウェアスレッドHT2、HT3が繰り返し選択される。なお、図13に示した動作例では、パーティションPRT0、PRT1の非占有状態は維持される。
ここで、図13に示したタイミングチャートのHT1占有期間における半導体装置のソフトウェア階層を示す図を図14に示す。図14に示すように、図13に示したHT1占有期間においては、ハードウェアスレッドHT0及びパーティションPRT1が非スケジュール状態となり、CPU等のハードウェア資源をハードウェアスレッドHT0が独占する占有状態となる。
上記説明より、実施の形態1にかかる半導体装置1では、実行ユニット17において第1の占有開始命令が実行された場合には、実行ユニット17が1つのパーティションを占有するハードウェアスレッドを指定する第1の占有制御信号OCCを出力する。また、スケジューラ19は、実行ユニット17に対して発行されるハードウェアスレッドを指定するスレッド選択信号TSELを出力するが、第1の占有制御信号OCCに応じて、1つのパーティションが選択される期間にスレッド選択信号TSELが指定するハードウェアスレッドを固定する。このような動作により、実施の形態1にかかる半導体装置1では、OS(Operating System)、あるいは、パーティション・マネージャ等の上位システムを介することなくパーティション毎に占有状態と非占有状態とを切り替えることができる。
ここで、スケジューラ19によるハードウェアスレッドの制御を利用せずに、例えば、OSや特許文献1のパーティション・マネージャ等の上位によりパーティション分割及びハードウェアスレッドの制御を行った場合の課題を説明する。この場合、パーティションにいずれのハードウェアスレッドが割り当てられるかの情報は、上位システムが有する。そのため、1つのパーティションを1つのハードウェアスレッドにより占有させるか、複数のハードウェアスレッドにより共有させるかを切り替えるためには、一度、上位システムに問い合わせを行わなければ、パーティション間の独立性を確保することができない問題が生じる。なお、パーティション毎の占有状態の切り替えを行ない場合、CPU10の実行時間を複数のハードウェアスレッドにより共有するか、占有するかの切り替えしかできず、ハードウェアスレッド毎の実行時間の見積もりが困難になる問題がある。
しかし、実施の形態1にかかる半導体装置1では、上位システムを介することなくパーティション毎に占有状態と非占有状態とを切り替えることができる。これにより、半導体装置1は、パーティションの占有状態と非占有状態との切り替えに関してCPUの実行時間を消費することなく切り替え処理を行うことがでる。また、半導体装置1では、パーティションの占有状態と非占有状態との切り替え処理による処理能力の低下を防止することができる。さらに、半導体装置1では、パーティションの占有状態と非占有状態との切り替えにCPUの実行時間を消費しないため、パーティションを占有するハードウェアスレッドと、実行が停止されるハードウェアスレッドの実行時間の見積もりを容易に行うことが可能になる。
さらに、半導体装置1では、パーティション毎に占有状態と非占有状態とを切り替えることができるため、一方のパーティションの動作を維持しながら、他方のパーティションの状態の切り替えを行うことができる。このように、半導体装置1では、上位システムの処理を介在させることなく、パーティションの独立性を確保できるため、パーティション毎の実行時間の見積もりを容易に行うことができる。また、半導体装置1では、占有状態の切り替え処理の対象となっていないパーティションのリアルタイム性を維持することができる。
また、半導体装置1では、パーティションに割り当てるハードウェアスレッドをスレッド割り当てテーブル16により設定する。このスレッド割り当てテーブル16は、図2に示すように設定値が書き換え可能なレジスタにより構成される。そのため、半導体装置1では、ハードウェアの変更を行うことなくパーティションに割り当てるハードウェアスレッドの数を変更することができる。
また、半導体装置1のスレッド割り当てテーブル16を構成するパーティション設定レジスタVMPRTnには、パーティションに割り当てられるハードウェアスレッドの下限値のみが格納される。また、半導体装置1では、ディスパッチユニット15がパーティション設定レジスタVMPRTnの複数のフィールドを参照することで、1つのパーティションに割り当てられたハードウェアスレッドの範囲を認識する。このとき、ディスパッチユニット15は、第1のパーティションに割り当てられるハードウェアスレッドの上限値を第1のパーティションと論理的に隣接する第2のパーティションに割り当てられるハードウェアスレッドの下限値から1を引くことで算出する。つまり、ディスパッチユニット15は、簡単な回路による簡易な計算のみでパーティションに割り当てられたハードウェアスレッドの範囲を認識することができる。このように、簡単なレジスタの設定及び簡単な計算によりパーティションに割り当てられるハードウェアスレッドの範囲を認識することで、半導体装置1は、ディスパッチユニット15及びスレッド割り当てテーブル16の回路面積を小さくすることができる。
また、半導体装置1は、実行ユニット17において第2の占有開始命令が実行された場合には、実行ユニット17がCPU10の実行時間を占有するハードウェアスレッドを指定する第3の占有制御信号OCCを出力する。そして、スケジューラ19は、第3の占有制御信号OCCに応じて、スレッド選択信号TSELが指定するハードウェアスレッドを1つに固定する。つまり、半導体装置1では、高い処理能力が必要なハードウェアスレッドが存在する場合には、CPU10の全ての処理能力を利用して高速な処理を実現することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上記実施の形態では、スレッドスケジュール及びパーティションスケジュールをスレッドスケジュールテーブル30及びパーティションスケジュールテーブル40により設定したが、例えば、演算回路による演算処理によりスレッドスケジュール及びパーティションスケジュールを設定することもできる。
また、図1では、命令フェッチ部の後段にディスパッチユニット15を設けたが、ディスパッチユニット15は、命令フェッチ部の前段に設けることもできる。この場合、ディスパッチユニット15は、命令フェッチ部のフェッチ処理の順序を制御する。
1 半導体装置
10 CPU
11〜14 命令フェッチ部
15 ディスパッチユニット
16 スレッド割り当てテーブル
17 実行ユニット
18 レジスタファイル
19 スケジューラ
21〜23 スレッドスケジューラ
24 パーティションスケジューラ
30 スレッドスケジュールテーブル
31、41 ポインタ
32、42 上限値レジスタ
33 スレッドスケジュール設定レジスタ
34、38、44、45、49 セレクタ
35 パーティション占有状態制御レジスタ
36、37、47、48 レジスタ
40 パーティションスケジュールテーブル
43 パーティションスケジュール設定レジスタ
46 CPU占有状態制御レジスタ
VMPRTn、VMPRT0 パーティション設定レジスタ

Claims (12)

  1. それぞれが独立した命令流を生成する複数のハードウェアスレッドと、
    前記複数のハードウェアスレッドのいずれか1つが生成した前記命令流に属する演算命令を実行する実行ユニットと、
    複数のパーティションに対応して設けられ、前記ハードウェアスレッドと前記パーティションとの対応関係を定義する複数の第1の設定レジスタを含み、前記パーティション間の実行時間の割合を規定するパーティションスケジュールと、前記パーティションのそれぞれに割り当てられた前記実行時間内の前記ハードウェアスレッドの実行時間の割合を規定するスレッドスケジュールと、に基づきスレッド選択信号を生成するスケジューラと、を有し、
    前記スケジューラは、
    前記実行ユニットにおいて実行された前記演算命令が、いずれか1つの前記パーティションに割り当てられた前記実行時間を占有する第1の占有開始命令であった場合に前記実行ユニットが出力する第1の占有制御信号に応じて、前記第1の占有制御信号により示される前記パーティションに割り当てられた前記実行時間中に選択する前記ハードウェアスレッドを前記スレッドスケジュールによらず前記第1の占有制御信号により示される前記ハードウェアスレッドを指定する前記スレッド選択信号を出力する半導体装置。
  2. 前記スケジューラは、それぞれが前記複数のパーティションのいずれか1つに対応づけられ、対応する前記パーティションに属する前記ハードウェアスレッドを識別するハードウェアスレッド番号を含む前記スレッド選択信号を出力する複数のスレッドスケジューラを有する請求項1に記載の半導体装置。
  3. 前記複数のスレッドスケジューラは、それぞれ、
    前記複数の第1の設定レジスタの1つであって、自スレッドスケジューラが対応する前記パーティションに割り当てられた前記ハードウェアスレッドの前記ハードウェアスレッド番号が格納され、前記スレッドスケジュールを規定する前記第1の設定レジスタと、
    前記スレッドスケジュールに基づき、前記第1の設定レジスタに格納された前記ハードウェアスレッド番号のいずれか1つを選択する第1のセレクタと、
    前記第1の占有制御信号が自スレッドスケジューラに対応する前記パーティションを示す場合に有効状態を示す第1の占有状態フラグを格納する第1の制御レジスタと、
    前記第1の占有制御信号により示される前記ハードウェアスレッドを識別する第1の占有ハードウェアスレッド番号を格納する第2の制御レジスタと、
    前記第1の占有状態フラグが無効状態である場合に前記第1のセレクタが選択した前記ハードウェアスレッド番号を前記スレッド選択信号として出力し、前記第1の占有状態フラグが有効状態である場合に前記第2の制御レジスタに格納された前記第1の占有ハードウェアスレッド番号を前記スレッド選択信号として出力する第2のセレクタと、を有する請求項2に記載の半導体装置。
  4. 前記複数のスレッドスケジューラは、
    前記実行ユニットにおいて実行された前記演算命令が、いずれか1つの前記パーティションに割り当てられた前記実行時間の占有状態を解除する第1の占有解除命令であった場合に前記実行ユニットが出力する第2の占有制御信号に応じて、前記スレッドスケジュールに基づき決定される前記ハードウェアスレッド番号を前記スレッド選択信号として出力する請求項2又は3に記載の半導体装置。
  5. 前記スケジューラは、
    前記実行ユニットが実行した前記演算命令が、1つの前記ハードウェアスレッドが前記実行ユニットの実行時間の全てを占有する第2の占有開始命令であった場合に前記実行ユニットが出力する第3の占有制御信号に応じて、前記スレッドスケジュール及び前記パーティションスケジュールによらず前記第3の占有制御信号により示される前記ハードウェアスレッドに対応する第2の占有ハードウェアスレッド番号を含む前記スレッド選択信号を出力する請求項2乃至4のいずれか1項に記載の半導体装置。
  6. 前記スケジューラは、
    後続の処理サイクルにおいて前記演算命令を生成する前記パーティションを選択するパーティションスケジューラを有し、
    前記パーティションスケジューラは、
    前記パーティションスケジュールに基づき後続の処理サイクルにおいて前記演算命令を生成する前記パーティションに対応したパーティション番号を出力する第3のセレクタと、
    前記パーティション番号に対応する前記スレッドスケジューラが出力する前記スレッド選択信号のいずれかを選択する第4のセレクタと、
    前記第3の占有制御信号に応じて有効状態となる第2の占有状態フラグを格納する第3の制御レジスタと、
    前記第3の占有制御信号により示される前記ハードウェアスレッドを識別する第2の占有ハードウェアスレッド番号を格納する第4の制御レジスタと、
    前記第2の占有状態フラグが無効状態である場合に前記第4のセレクタが選択した前記スレッド選択信号を出力し、前記第2の占有状態フラグが有効状態である場合に前記第4の制御レジスタに格納された前記第2の占有ハードウェアスレッド番号を前記スレッド選択信号として出力する第5のセレクタと、を有する請求項5に記載の半導体装置。
  7. 前記パーティションスケジューラは、
    前記実行ユニットにおいて実行された前記演算命令が、1つの前記ハードウェアスレッドが前記実行ユニットの前記実行時間の全てを占有する状態を解除する第2の占有解除命令であった場合に前記実行ユニットが出力する第4の占有制御信号に応じて、前記スレッドスケジュール及び前記パーティションスケジュールに基づき決定される前記スレッド選択信号を出力する請求項6に記載の半導体装置。
  8. 前記パーティションと前記ハードウェアスレッドとの対応関係を示すスレッド割り当てテーブルを有する請求項1乃至7のいずれか1項に記載の半導体装置。
  9. 半導体装置は、初期設定処理時に、不揮発性記憶装置から前記パーティションと前記ハードウェアスレッドとの対応関係を示す設定値を読み出して前記スレッド割り当てテーブルに格納すると共に、前記スレッド割り当てテーブルに基づき前記第1の設定レジスタに前記スレッドスケジュールの設定を書き込む請求項8に記載の半導体装置。
  10. 前記スレッド選択信号に応じて前記複数のハードウェアスレッドが生成する演算命令の1つを選択するディスパッチユニットを有し、
    前記スレッド選択信号は、後続の処理サイクルにおいて前記演算命令を発行する前記ハードウェアスレッドに対応するハードウェアスレッド番号と前記演算命令を発行する前記ハードウェアスレッドが属する前記パーティションに対応するパーティション番号と、を含み、
    前記ディスパッチユニットは、
    前記スレッド割り当てテーブルを参照して、前記スレッド選択信号の前記パーティション番号と前記ハードウェアスレッド番号との組み合わせが前記スレッド割り当てテーブルにおいて規定された組み合わせと一致するか否かを判定し、当該判定結果が不一致を示す場合、前記実行ユニットに対する前記演算命令の発行を停止する請求項8又は9に記載の半導体装置。
  11. 半導体装置は、パーティション割り当て部を備え、
    前記スレッド割り当てテーブルは、前記パーティションに属する前記ハードウェアスレッドを規定するパーティション設定レジスタを有し、前記パーティション設定レジスタには、前記パーティションに属する前記ハードウェアスレッドの下限値を示すベーススレッドIDが格納され、
    前記パーティション割り当て部は、第1のパーティションの前記ベーススレッドIDと前記第1のパーティションと論理的に隣接する第2のパーティションの前記ベーススレッドIDとに基づき前記第1のパーティションに属する前記ハードウェアスレッドの範囲を認識する請求項8乃至10のいずれか1項に記載の半導体装置。
  12. それぞれが独立した命令流を生成する複数のハードウェアスレッドをそれぞれ論理的に定義される複数のパーティションのいずれかに割り当てて実行する半導体装置であって、
    前記複数のハードウェアスレッドのうちスレッド選択信号により選択されたハードウェアスレッドが生成した前記命令流に属する演算命令を実行する実行ユニットと、
    前記複数のパーティションに対応して設けられ、それぞれが、対応する前記パーティション内における前記ハードウェアスレッドの実行時間の割り当てに関する対応関係を定義するスレッドスケジュールが格納される第1の設定レジスタを含み、前記スレッドスケジュールに基づき前記スレッド選択信号を生成するスケジューラと、を有し、
    前記スケジューラは、第1の制御レジスタを更に有し、当該第1の制御レジスタが1つの前記パーティションを占有状態とする設定値である場合、前記スレッドスケジュールによらず特定の前記ハードウェアスレッドを指定する前記スレッド選択信号を出力する半導体装置。
JP2012104577A 2012-05-01 2012-05-01 半導体装置 Active JP5894496B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2012104577A JP5894496B2 (ja) 2012-05-01 2012-05-01 半導体装置
US13/859,200 US9465610B2 (en) 2012-05-01 2013-04-09 Thread scheduling in a system with multiple virtual machines
EP13163470.1A EP2660714B1 (en) 2012-05-01 2013-04-12 Semiconductor device
TW102113462A TWI566174B (zh) 2012-05-01 2013-04-16 半導體裝置
CN201310157912.5A CN103383651B (zh) 2012-05-01 2013-05-02 半导体装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012104577A JP5894496B2 (ja) 2012-05-01 2012-05-01 半導体装置

Publications (2)

Publication Number Publication Date
JP2013232150A JP2013232150A (ja) 2013-11-14
JP5894496B2 true JP5894496B2 (ja) 2016-03-30

Family

ID=48190708

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012104577A Active JP5894496B2 (ja) 2012-05-01 2012-05-01 半導体装置

Country Status (5)

Country Link
US (1) US9465610B2 (ja)
EP (1) EP2660714B1 (ja)
JP (1) JP5894496B2 (ja)
CN (1) CN103383651B (ja)
TW (1) TWI566174B (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017513094A (ja) * 2014-03-27 2017-05-25 インテル・コーポレーション 複数のストランドからの命令をディスパッチするためのプロセッサロジックおよび方法
CN105302078B (zh) * 2014-06-04 2018-11-16 中芯国际集成电路制造(上海)有限公司 一种半导体制造工艺中炉管机台运行的控制系统及方法
GB2541340B (en) * 2014-06-06 2017-07-19 Ibm Selecting a host for a virtual machine using a hardware multithreading parameter
US9304805B2 (en) 2014-06-06 2016-04-05 Interinational Business Machines Corporation Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
US9384027B2 (en) 2014-06-06 2016-07-05 International Business Machines Corporation Selecting a host for a virtual machine using a hardware multithreading parameter
US9400672B2 (en) 2014-06-06 2016-07-26 International Business Machines Corporation Placement of virtual CPUS using a hardware multithreading parameter
WO2015186088A1 (en) * 2014-06-06 2015-12-10 International Business Machines Corporation Selecting a host for a virtual machine using a hardware multithreading parameter
US10628320B2 (en) 2016-06-03 2020-04-21 Synopsys, Inc. Modulization of cache structure utilizing independent tag array and data array in microprocessor
US10318302B2 (en) 2016-06-03 2019-06-11 Synopsys, Inc. Thread switching in microprocessor without full save and restore of register file
US10558463B2 (en) * 2016-06-03 2020-02-11 Synopsys, Inc. Communication between threads of multi-thread processor
US10552158B2 (en) 2016-08-18 2020-02-04 Synopsys, Inc. Reorder buffer scoreboard having multiple valid bits to indicate a location of data
US10613859B2 (en) 2016-08-18 2020-04-07 Synopsys, Inc. Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions
CN109032665B (zh) * 2017-06-09 2021-01-26 龙芯中科技术股份有限公司 微处理器中指令输出处理方法及装置
GB201717303D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
US10606641B2 (en) 2017-10-20 2020-03-31 Graphcore Limited Scheduling tasks in a multi-threaded processor
US10976955B2 (en) * 2018-06-04 2021-04-13 SK Hynix Inc. Semiconductor device for improving code processing speed using faster clock signal

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987557A (en) * 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
US20020129274A1 (en) * 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a security server in a partitioned processing environment
US6985951B2 (en) * 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US20020129172A1 (en) * 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a shared I/O driver
US7089558B2 (en) * 2001-03-08 2006-08-08 International Business Machines Corporation Inter-partition message passing method, system and program product for throughput measurement in a partitioned processing environment
US7363625B2 (en) * 2003-04-24 2008-04-22 International Business Machines Corporation Method for changing a thread priority in a simultaneous multithread processor
US7496915B2 (en) 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
JP4740851B2 (ja) * 2003-08-28 2011-08-03 ミップス テクノロジーズ インコーポレイテッド 仮想プロセッサリソースの動的構成のための機構体
US7310722B2 (en) 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7506325B2 (en) * 2004-10-07 2009-03-17 International Business Machines Corporation Partitioning processor resources based on memory usage
DE102004054571B4 (de) * 2004-11-11 2007-01-25 Sysgo Ag Verfahren zur Verteilung von Rechenzeit in einem Rechnersystem
CA2538503C (en) * 2005-03-14 2014-05-13 Attilla Danko Process scheduler employing adaptive partitioning of process threads
US8245230B2 (en) * 2005-03-14 2012-08-14 Qnx Software Systems Limited Adaptive partitioning scheduler for multiprocessing system
US8387052B2 (en) * 2005-03-14 2013-02-26 Qnx Software Systems Limited Adaptive partitioning for operating system
GB0519597D0 (en) * 2005-09-26 2005-11-02 Imagination Tech Ltd Scalable multi-threaded media processing architecture
US20070143582A1 (en) * 2005-12-16 2007-06-21 Nvidia Corporation System and method for grouping execution threads
US8766996B2 (en) * 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US20080022283A1 (en) * 2006-07-19 2008-01-24 International Business Machines Corporation Quality of service scheduling for simultaneous multi-threaded processors
US20090007100A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
US8645974B2 (en) * 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
US8010763B2 (en) * 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8176487B2 (en) * 2007-08-02 2012-05-08 International Business Machines Corporation Client partition scheduling and prioritization of service partition work
US9158692B2 (en) * 2008-08-12 2015-10-13 International Business Machines Corporation Cache injection directing technique
JP5173713B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
JP5173712B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ
JP5173711B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
JP5173714B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びその割り込み処理方法
US9086922B2 (en) * 2009-10-26 2015-07-21 Microsoft Technology Licensing, Llc Opportunistically scheduling and adjusting time slices
US9081621B2 (en) * 2009-11-25 2015-07-14 Microsoft Technology Licensing, Llc Efficient input/output-aware multi-processor virtual machine scheduling
FR2957433B1 (fr) * 2010-03-11 2016-01-15 Bull Sas Procede de configuration d'un systeme informatique, programme d'ordinateur et systeme informatique correspondants
US20110276784A1 (en) 2010-05-10 2011-11-10 Telefonaktiebolaget L M Ericsson (Publ) Hierarchical multithreaded processing
US8954986B2 (en) * 2010-12-17 2015-02-10 Intel Corporation Systems and methods for data-parallel processing
JP5813554B2 (ja) * 2012-03-30 2015-11-17 ルネサスエレクトロニクス株式会社 半導体装置
JP5914145B2 (ja) * 2012-05-01 2016-05-11 ルネサスエレクトロニクス株式会社 メモリ保護回路、処理装置、およびメモリ保護方法
JP6017260B2 (ja) * 2012-10-17 2016-10-26 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ
US9471318B2 (en) * 2013-03-15 2016-10-18 International Business Machines Corporation System management and instruction counting
US9535746B2 (en) * 2013-12-19 2017-01-03 International Business Machines Corporation Honoring hardware entitlement of a hardware thread

Also Published As

Publication number Publication date
CN103383651A (zh) 2013-11-06
EP2660714B1 (en) 2018-06-06
TW201411484A (zh) 2014-03-16
EP2660714A2 (en) 2013-11-06
CN103383651B (zh) 2018-04-03
TWI566174B (zh) 2017-01-11
EP2660714A3 (en) 2014-06-18
JP2013232150A (ja) 2013-11-14
US9465610B2 (en) 2016-10-11
US20130297916A1 (en) 2013-11-07

Similar Documents

Publication Publication Date Title
JP5894496B2 (ja) 半導体装置
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
US9442870B2 (en) Interrupt priority management using partition-based priority blocking processor registers
JP5295228B2 (ja) 複数のプロセッサを備えるシステム、ならびにその動作方法
JP5354108B2 (ja) 情報処理プログラム、情報処理装置及び情報処理方法
US9417920B2 (en) Method and apparatus for dynamic resource partition in simultaneous multi-thread microprocessor
JP2009519513A (ja) 専用スレッド管理を用いたマルチコアの演算処理方法及び装置
US20090271790A1 (en) Computer architecture
JP2010146550A (ja) 実行中の命令に基づいてコア機能を構成するマルチコア・プロセッサおよび使用の方法
JP2002342163A (ja) マルチスレッドプロセッサ用キャッシュ制御方式
JP2009223842A (ja) 仮想計算機制御プログラム及び仮想計算機システム
JP2003058368A (ja) データ処理装置内でのコプロセッサ命令の取り扱い
WO2013145199A1 (ja) 仮想計算機のスケジュール方法
US7617494B2 (en) Process for running programs with selectable instruction length processors and corresponding processor system
JP5289688B2 (ja) プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
JP4789269B2 (ja) ベクトル処理装置及びベクトル処理方法
US20220276966A1 (en) Data processors
CN112463217B (zh) 超标量处理器中寄存器堆共享读端口的系统、方法和介质
JP2018116389A (ja) 処理装置
JP2007122337A (ja) 演算装置
EP1378825B1 (en) A method for executing programs on selectable-instruction-length processors and corresponding processor system
WO2020008757A1 (ja) 仮想化環境におけるデバイスへのアクセス方法
JP2014067248A (ja) プロセッサ、割り込み処理方法及び割り込み制御装置
JP2013073297A (ja) 時分割方式による割り込み制御回路および割り込み制御方法
JP6307975B2 (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160226

R150 Certificate of patent or registration of utility model

Ref document number: 5894496

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150