(57)【要約】【課題】割り込み要求を発行した外部ユニットを容易に特定する演算処理装置、情報処理装置及び割込制御方法を提供する。【解決手段】入出力インタフェース部１１０は、異なる外部ユニット１１〜１４が接続された複数のポートを有し、各ポートで受信した外部ユニット１１〜１４からの割り込み要求に対して、ポート毎に異なる予め決められた識別情報を付加する。割込制御部１２０は、識別情報に基づいて、入出力インタフェース部１１０により受信された割り込み要求の情報をベクタ格納部に格納する。コア１０１〜１０８は、識別情報に基づいて、ベクタ格納部に格納された割り込み要求に対応する処理を実行する。【選択図】図３
2014038438.tif 000002
【特許請求の範囲】
【請求項１】
異なる外部ユニットが接続された複数のポートを有し、前記ポートで受信した前記外部ユニットからの割り込み要求に対して、前記ポート毎に異なる予め決められた識別情報を付加する入出力インタフェース部と、
前記識別情報に基づいて、前記入出力インタフェース部により受信された前記割り込み要求の情報をレジスタに格納する割込制御部と、
前記識別情報に基づいて、前記レジスタに格納された割り込み要求に対応する処理を実行する処理実行部と
を備えたことを特徴とする演算処理装置。
【請求項２】
前記処理実行部を複数備え、
前記割込制御部は、受信した割り込み要求において指定されている前記処理実行部に対応する前記レジスタに該割り込み要求の情報を格納し、前記レジスタに格納された割り込み要求の前記識別情報に含まれる優先度順に、前記レジスタに対応する前記処理実行部に割り込み要求を通知し、
前記処理実行部は、前記割込制御部から通知を受けた割り込み要求に対応する処理を順次行っていく
ことを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記割込制御部は、受信した割り込み要求において他の割込制御回路による処理が指定されている場合、指定された他の割り込み制御回路に対して該受信した割り込み要求を送信することを特徴とする請求項１又は請求項２に記載の演算処理装置。
【請求項４】
前記割込制御部は、前記レジスタ上の前記識別情報に割り当てられた位置に該識別情報が付加された割り込み要求を受けたことを表すフラグを立てることを特徴とする請求項１〜３のいずれか一つに記載の演算処理装置。
【請求項５】
前記割込制御部は、前記識別情報が付加された割り込み要求を他の割込制御回路から受信し、該受信した割り込み要求に付加されている識別情報に基づいて、該受信した割り込み要求の情報をレジスタに格納することを特徴とする請求項１〜４のいずれか一つに記載の演算処理装置。
【請求項６】
ＣＰＵと複数の外部ユニットを有する情報処理装置において、
前記ＣＰＵは、
前記外部ユニットを接続する複数のポートを有し、前記ポートで受信した割り込み要求に対して、前記ポート毎に異なる予め決められた識別情報を付加する入出力インタフェース部と、
前記識別情報に基づいて、前記入出力インタフェース部により受信された前記割り込み要求の情報をレジスタに格納する割込制御部と、
前記識別情報に基づいて、前記レジスタに格納された割り込み要求に対応する処理を実行する処理実行部とを備え、
前記外部ユニットは、
それぞれ異なる前記ポートに接続される
ことを特徴とする情報処理装置。
【請求項７】
異なる外部ユニットが接続された複数のポートで受信した前記外部ユニットからの割り込み要求に対して、前記ポート毎に異なる予め決められた識別情報を付加し、
前記識別情報に基づいて、受信した前記割り込み要求の情報をレジスタに格納し、
前記識別情報に基づいて、前記レジスタに格納された割り込み要求に対応する処理を実行する
ことを特徴とする割込制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置及び割込制御方法に関する。
【背景技術】
【０００２】
様々なプログラムを実行する情報処理装置では、ハードディスクなどのＩ／Ｏ（Input  Output）デバイスである外部ユニットからの処理要求などを契機として、実行中の処理を一時中断して別の処理を実行する割り込みが行われている。
【０００３】
例えば、演算処理装置としてのＣＰＵ（Central  Processing  Unit）は、Ｉ／Ｏバスを介して外部ユニットと接続している。外部ユニットからの割り込み（IO-INT：Input  Output  INTerrupt）は、ＰＣＩ（Peripheral  Component  Interconnect）−ｅｘｐｒｅｓｓなどの入出力インタフェースを経由して、ＣＰＵ内の割込制御部へと送られる。そして、複数のコアを有するＣＰＵの場合、割り込みは割込制御部からコアへと送られる。
【０００４】
従来のＣＰＵとしては、例えば、図１３のような構成を有しているＣＰＵがある。図１３は、従来のＣＰＵの一例の図である。ＣＰＵ９００は、入出力インタフェース９１０、割込制御部９２０及びコア９３０を有している。入出力インタフェース９１０には、１つの外部ユニット９４０が接続されている。そして、割込制御部９２０には、外部ユニット９４０からの割り込みのベクタを決定するレジスタである外部ユニット割込ベクタレジスタ９２１及び各ベクタのフラグを管理するレジスタである割込要求ベクタレジスタ９２２を有している。ここで、ベクタとは割り込みの優先順位を表す値である。外部ユニット割込ベクタレジスタ９２１には、外部ユニット９４０から割り込みを受けた場合のその割り込みに対するベクタの値が格納されている。外部インタフェースを介してＣＰＵ９００に送られてきた外部ユニット９４０からの割り込みは、入出力インタフェース９１０によって受け付けられる。その後、外部ユニット９４０からの割り込みは、割込制御部９２０の外部ユニット割込ベクタレジスタ９２１によってベクタの値が決定される。これに対して、コア同士の間の割り込みであるコア間割り込みの場合、割り込み要求の発行元のコアによってベクタが指定されて送られてくる。
【０００５】
割込要求ベクタレジスタ９２２では、コア９３０毎に且つベクタ毎にフラグの値を管理する。具体的には、割込制御部９２０は、コア間の割り込み又は外部ユニットからの割り込みが発生すると、割込要求ベクタレジスタ９２２の中のコア９３０毎の格納領域のうち指定された格納領域の指定されたベクタの位置に割り込みをセットする。
【０００６】
コア９３０は、割込制御部９２０から割り込み通知を受けると、ＯＳ（Operation  System）からの指示にしたがい、割込要求ベクタレジスタ９２２に格納されている割り込みの中から優先順位が高いベクタの割り込みを読み出す。すなわち、ベクタの値によって優先順位が予め決まっており、コア９３０毎に管理されているベクタのうち、その時点で一番優先順位の高いベクタの値が、対応するコア９３０によって読み出される。コア９３０は、読み出した割り込みのベクタの値を基に、外部ユニット９４０からの割り込みかコア間の割り込みかといった割り込みの種類を判別してデータの読み込みを行う。割込要求ベクタレジスタ９２２における読み出されたベクタは読み込まれると同時にリセットされる。
【０００７】
また、割り込み処理として、チップセット内の中継回路においてソフトウェアにより、どの外部ユニットからの割り込みかを記録しておき、割り込みが通知されたときに中継時の記録を用いて割り込みを行った外部ユニットを特定する従来技術がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−２５０４５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来の割り込み技術はＣＰＵに１つの外部ユニットが接続された環境下での割り込みを想定しており、１つのＣＰＵに複数の外部ユニットが接続された場合、いずれの外部ユニットからの割り込みかを判別することが困難であった。
【００１０】
また、割り込みを行った外部ユニットの情報を記録する従来技術では、ソフトウェアが、いずれの外部ユニットからの割り込みかを表す情報を付加し、後に、ソフトウェアが付加した情報を用いて外部ユニットの特定を行う処理を実現せねばならない。そのため、この従来技術では、ＣＰＵに接続された複数の外部ユニットの中から割り込みを要求した外部ユニットを特定するには、ソフトウェアの構成が複雑となり、その機能の実現が困難であった。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、割り込み要求を発行した外部ユニットを容易に特定する演算処理装置、情報処理装置及び割込制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示する演算処理装置、情報処理装置及び割込制御方法は、一つの態様において、以下の各部を有する。入出力インタフェース部は、異なる外部ユニットが接続された複数のポートを有し、前記ポートで受信した前記外部ユニットからの割り込み要求に対して、前記ポート毎に異なる予め決められた識別情報を付加する。割込制御部は、前記識別情報に基づいて、前記入出力インタフェース部により受信された前記割り込み要求の情報をレジスタに格納する。処理実行部は、前記識別情報に基づいて、前記レジスタに格納された割り込み要求に対応する処理を実行する。
【発明の効果】
【００１３】
本願の開示する演算処理装置、情報処理装置及び割込制御方法の一つの態様によれば、割り込み要求を発行した外部ユニットを容易に特定することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例に係る情報処理装置の構成図である。
【図２】図２は、ＣＰＵ間の接続を表す図である。
【図３】図３は、実施例に係るＣＰＵのブロック図である。
【図４】図４は、割り込み要求に用いるパケットの一例の図である。
【図５】図５は、入出力インタフェース部の詳細を表すブロック図である。
【図６】図６は、入出力ポートとベクタとの関係を説明する図である。
【図７】図７は、ベクタの値が付加された割り込み要求のパケットの一例の図である。
【図８】図８は、割込制御部の詳細を表すブロック図である。
【図９】図９は、割込要求ベクタレジスタの一例の図である。
【図１０】図１０は、ベクタが付加されたパケットの状態を表す図である。
【図１１】図１１は、外部ユニットからの割り込み要求に対する割込制御処理のフローチャートである。
【図１２】図１２は、コア間の割り込み要求に対する割込制御処理のフローチャートである。
【図１３】図１３は、従来のＣＰＵの一例の図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する演算処理装置、情報処理装置及び割込制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置、情報処理装置及び割込制御方法が限定されるものではない。
【実施例】
【００１６】
図１は、実施例に係る情報処理装置の構成図である。本実施例に係る情報処理装置は、ＣＰＵ１〜４、メモリ５、外部ユニット１１〜１４，２１〜２４，３１〜３４及び４１〜４４を有している。
【００１７】
ＣＰＵ１〜４は、それぞれメモリ５と接続されている演算処理装置である。また、ＣＰＵ１には、ＰＣＩ−ｅｘｐｒｅｓｓをインタフェースとして、外部ユニット１１〜１４が接続されている。同様に、ＣＰＵ２には、外部ユニット２１〜２４が接続されており、ＣＰＵ３には、外部ユニット３１〜３４が接続されており、ＣＰＵ４には、外部ユニット４１〜４４が接続されている。
【００１８】
外部ユニット１１〜１４は、ＣＰＵ１に対して割り込み要求を出力する。外部ユニット２１〜２４は、ＣＰＵ２に対して割り込み要求を出力する。外部ユニット３１〜３４は、ＣＰＵ３に対して割り込み要求を出力する。外部ユニット４１〜４４は、ＣＰＵ４に対して割り込み要求を出力する。
【００１９】
ここで、図１では、分かり易いようにＣＰＵ１〜４の間の接続は省略している。そこで、次に図２を参照して、ＣＰＵ１〜４の間の接続について説明する。図２は、ＣＰＵ間の接続を表す図である。
【００２０】
図２に示すように、ＣＰＵ１〜４は、それぞれが相互に接続されている。そして、ＣＰＵ１〜４は、それぞれデータの送受信が可能である。次に、ＣＰＵ１〜４の詳細について説明する。ここで、ＣＰＵ１〜４は、本実施例では同じ構成を有しているので、ＣＰＵ１を例に説明する。以下で説明する構成や機能は、ＣＰＵ２〜４でも同様ある。
【００２１】
図３は、実施例に係るＣＰＵのブロック図である。図３に示すようにＣＰＵ１は、コア１０１〜１０８、入出力インタフェース部１１０及び割込制御部１２０を有している。以下では、コア１０１〜１０８を区別しない場合、単にコア１００という。
【００２２】
入出力インタフェース部１１０は、外部ユニット１１〜１４と接続されている。また、割込制御部１２０は、ＣＰＵ２〜４の割込制御部と接続されている。図３では、ＣＰＵ２〜４の割込制御部は省略している。
【００２３】
外部ユニット１１〜１４は、図４に示すような、割り込み要求のパケットを入出力インタフェース部１１０へ送信する。図４は、割り込み要求に用いるパケットの一例の図である。
【００２４】
図４に示すように、割り込み要求のパケット２００は、ｖａｌｉｄ２０１、ｃｍｄ２０２、ｒｅｑ（request）−ｉｄ(IDentification)２０３、ａｄｄｒｅｓｓ２０４及びその他の情報を格納している。ｖａｌｉｄ２０１は、パケットが有効であるか無効であるかを示す情報である。ｃｍｄ（command）２０２は、パケットのリクエストの種類を表す情報である。すなわち、割り込み要求のパケットの場合、ｃｍｄ２０２は、そのパケットが割り込み要求であることを表す情報である。外部ユニット１１〜１４が送信する割り込み要求では、ｃｍｄ２０２は、外部ユニットから送られてきた割り込み要求であることを表す値である。ｒｅｑ−ｉｄ２０３は、パケットの識別子である。例えば、ｒｅｑ−ｉｄ２０３には、パケットの発行元のＣＰＵ番号及びコア番号などが格納されている。ａｄｄｒｅｓｓ２０４は、割り込み処理を実行するために参照するアドレスが記載されている。また、ａｄｄｒｅｓｓ２０４には、パケットの宛先のＣＰＵ番号及び宛先のコア番号を表すｔｉｄ（target-identification）が格納されている。
【００２５】
図５は、入出力インタフェース部の詳細を表すブロック図である。図５に示すように、入出力インタフェース部１１０は、外部ユニット割込ベクタ記憶部１１１、ベクタ付加部１１２及び調停部１１３を有している。
【００２６】
図６は、入出力ポートとベクタとの関係を説明する図である。外部ユニット割込ベクタ記憶部１１１は、図６の対応表３００に示すように、ＰＣＩ−ｅｘｐｒｅｓｓのインタフェースである入出力ポート毎に、ポートに対応するベクタの値を予め記憶している。ベクタとは、割り込み要求の優先度及び割り込み要求の送信元を表す情報である。ベクタは、例えば、０〜６３の数値で表され、数値が大きいほど優先度が高い。また、ベクタは、例えば、コア間の割り込み要求と外部ユニットからの割り込み要求とでは、異なる値が割り当てられており、割り込み要求に付加されたベクタによって、その割り込み要求が他のコアからの割り込みか、外部ユニットからの割り込みかが区別できる。
【００２７】
図６では、欄３０１にポート＃０に対応するベクタであるｖｅｃｔｏｒ０が格納されている。また、欄３０２にポート＃１に対応するベクタであるｖｅｃｔｏｒ１が格納されている。欄３０３にポート＃２に対応するベクタであるｖｅｃｔｏｒ２が格納されている。欄３０４にポート＃３に対応するベクタであるｖｅｃｔｏｒ３が格納されている。ここで、各ポートに対応するベクタをｖｅｃｔｏｒ０〜３と表しているが、本実施例では、具体的にはｖｅｃｔｏｒ０〜３として０〜６３のいずれかの数値が割り当てられている。
【００２８】
また、各ＣＰＵ１〜４の外部ユニット割込ベクタ記憶部１１１が各ポートに割り当てるベクタは、ＣＰＵ１〜４のぞれぞれの外部ユニット割込ベクタ記憶部１１１間でも重ならないように決められている。例えば、ＣＰＵ１の外部ユニット割込ベクタ記憶部１１１がｖｅｃｔｏｒ０〜３を用いる場合、ＣＰＵ２〜４の外部ユニット割込ベクタ記憶部１１１がｖｅｃｔｏｒ０〜３を用いない。
【００２９】
ベクタ付加部１１２は、ＰＣＩ−ｅｘｐｒｅｓｓのインタフェースである入出力ポートを有している。例えば、ベクタ付加部１１２は、４つのＰＣＩ−ｅｘｐｒｅｓｓの入出力ポートを有しいている。ここで、外部ユニット１１が接続されている入出力ポートをポート＃０、外部ユニット１２が接続されている入出力ポートをポート＃１、外部ユニット１３が接続されている入出力ポートをポート＃４、外部ユニット１４が接続されている入出力ポートをポート＃５とする。
【００３０】
次に、ベクタ付加部１１２は、外部ユニット１１〜１４のいずれかから割り込み要求のパケットを受信する。そして、ベクタ付加部１１２は、受信した割り込み要求を受信した入出力ポートに対応するベクタを、外部ユニット割込ベクタ記憶部１１１から取得する。例えば、外部ユニット１１から割り込み要求のパケットが送信された場合、ベクタ付加部１１２は、ポート＃０の入出力ポートでパケットを受信する。この場合、ベクタ付加部１１２は、外部ユニット割込ベクタ記憶部１１１が記憶している図６に示す対応関係を用いて、ポート＃０に対応するベクタとしてｖｅｃｔｏｒ０を取得する。
【００３１】
そして、ベクタ付加部１１２は、受信した割り込み要求のパケットに取得したベクタを付加する。図７は、ベクタの値が付加された割り込み要求のパケットの一例の図である。図７に示すように、本実施例では、ベクタ付加部１１２は、割り込み要求のパケット２００のａｄｄｒｅｓｓ２０４のビットを用いてベクタを表す値を割り込み要求のパケット２００に付加する。ここで、ａｄｄｒｅｓｓ２０４におけるベクタを付加するビットは予め決められている。また、本実施例では、ａｄｄｒｅｓｓ２０４の中にベクタを埋め込んだが、これは他の方法でも良く、例えば、その他の情報にベクタを埋め込んでもよい。
【００３２】
ベクタ付加部１１２は、受信した入出力ポートを表すベクタを付加した割り込み要求のパケットを調停部１１３へ出力する。
【００３３】
調停部１１３は、受信した入出力ポートを表すベクタが付加された割り込み要求のパケットをベクタ付加部１１２から受信する。そして、調停部１１３は、割り込み要求のパケットが衝突しないようにタイミングを調整して、各割り込み要求のパケットを割込制御部１２０へ出力する。
【００３４】
図８は、割込制御部の詳細を表すブロック図である。図８に示すように、割込制御部１２０は、割込受付部１２１、ベクタ格納部１２２、宛先ＣＰＵ判定部１２３、宛先コア判定部１２４、割込通知部１２５及び処理結果送信部１２６を有している。
【００３５】
ベクタ格納部１２２は、例えば、図９に示すような割込要求ベクタレジスタ４００を有している。図９は、割込要求ベクタレジスタの一例の図である。割込要求ベクタレジスタ４００は、コア１０１〜１０８毎に割り込み要求の有無を記憶する。さらに、割込要求ベクタレジスタ４００は、ベクタによって優先度が表されるように割り込み要求を記憶する。
【００３６】
例えば、割込要求ベクタレジスタ４００のレジスタ４０１は、コア１０１の割り込みの有無を格納するレジスタである。同様に、レジスタ４０２〜４０８は、それぞれコア１０２〜１０８の割り込み要求の有無を格納するレジスタである。レジスタ４０１〜４０８は、それぞれが６４個のフラグ格納欄４１０を有している。レジスタ４０１〜４０８のフラグ格納欄４１０は、それぞれベクタの値と対応している。本実施例では、ベクタを０〜６３のベクタを用いるので、レジスタ４０１〜４０８は、６４個のフラグ格納欄４１０を有している。図９では、分かり易いように、レジスタ４０１〜４０８の各フラグ格納欄４１０に対応するように上部にベクタの値を表示している。例えば、レジスタ４０１は、６４ビットのレジスタであり、各ビットがフラグ格納欄４１０にあたる。そして、各フラグ格納欄４１０には、フラグのオン又はオフの情報が格納される。例えば、コア１０１に対してベクタの値が６０の割り込み要求がある場合には、レジスタ４０１のベクタの値が６０に対応するフラグ格納欄４１１のフラグがオンになる。例えば、レジスタ４０１のフラグ格納欄４１０が１ビットで表される場合、フラグのオン／オフは、ビットの中の対応するビットが０の場合にフラグをオフとし、ビットが１の場合にフラグがオンとするなどで表される。
【００３７】
図８では、ベクタ格納部１２２が複数あるように記載しているが、これは、コア１０１〜１０８毎にレジスタが用意されていることを表している。
【００３８】
割込受付部１２１は、外部ユニット１１〜１４からの割り込み要求のパケットを入出力インタフェース部１１０から受信する。
【００３９】
また、割込受付部１２１は、コア１００がＣＰＵ１の他のコアに対して出力した割り込み要求のパケットの入力を受ける。
【００４０】
ここで、コア１００は、他のコアへの割り込み要求であるコア間の割り込み要求のパケットを生成するときに、そのパケットにベクタを付加している。例えば、コア１００は、図１０で示すパケット５００のような割り込み要求のパケットを生成する。図１０は、ベクタが付加されたパケットの状態を表す図である。この時、コア１００は、ａｄｄｒｅｓｓ５０２の予め決められた位置にベクタを埋め込む。本実施例では、コア間の割り込み要求においてコア１００がベクタを埋め込む位置と、外部ユニットからの割り込み要求においてベクタ付加部１１２がベクタを埋め込む位置は同じとしている。また、パケット５００の、ｃｏｒｅ−ｉｄ５０１は、宛先のコアの番号の情報である。
【００４１】
また、割込受付部１２１は、割り込み要求のパケットの入力をＣＰＵ２〜４から受ける。ＣＰＵ２〜４から受信する割り込み要求には、外部ユニットからの割り込み要求の場合も、コアからの割り込み要求の場合もある。外部ユニットからの割り込み要求の場合、割込受付部１２１は、図７のパケット２００の形式のパケットを受信する。また、コアからの割り込み要求の場合、割込受付部１２１は、図１０のパケット５００の形式のパケットを受信する。
【００４２】
そして、割込受付部１２１は、受信した割り込み要求のパケットを宛先ＣＰＵ判定部１２３へ出力する。
【００４３】
また、割込受付部１２１は、受信した各割り込み要求で用いるデータを外部ユニット１１〜１４、コア１０１〜１０８又はＣＰＵ２〜４などの割り込み要求元から受信する。そして、割込受付部１２１は、受信したデータをメモリ５に格納する。
【００４４】
宛先ＣＰＵ判定部１２３は、割り込み要求のパケットの入力を割込受付部１２１から受ける。そして、宛先ＣＰＵ判定部１２３は、受信した割り込み要求のパケットのａｄｄｒｅｓｓ領域に格納されているｔｉｄを確認し、宛先のＣＰＵ番号を取得する。
【００４５】
宛先ＣＰＵ判定部１２３は、宛先のＣＰＵ番号が自ＣＰＵを表している場合、割り込み要求のパケットを宛先コア判定部１２４へ出力する。これに対して、ＣＰＵを宛先のＣＰＵ番号が自ＣＰＵ以外を表している場合、宛先ＣＰＵ判定部１２３は、ＣＰＵ２〜４のうちの宛先のＣＰＵ番号にあたるＣＰＵの割込制御部１２０へ割り込み要求のパケットを送信する。
【００４６】
宛先コア判定部１２４は、割り込み要求のパケットを宛先ＣＰＵ判定部１２３から受信する。そして、宛先コア判定部１２４は、受信した割り込み要求のパケットのａｄｄｒｅｓｓ領域に格納されているｔｉｄを確認し、宛先のコア番号を取得する。
【００４７】
そして、宛先コア判定部１２４は、取得した宛先のコア番号が表すコアに対応するレジスタをベクタ格納部１２２が有する割込要求ベクタレジスタの中から選択する。次に、宛先コア判定部１２４は、受信した割り込み要求のパケットのａｄｄｒｅｓｓ領域に格納されているベクタを取得する。そして、宛先コア判定部１２４は、選択したレジスタにおける取得したベクタに対応するフラグ格納欄のフラグをオンにする。これにより、宛先コア判定部１２４は、宛先のコア番号に対してベクタで表される優先順位を有する割り込み要求が発生したという情報をベクタ格納部１２２に格納する。
【００４８】
割込通知部１２５は、ベクタ格納部１２２が有する割込要求ベクタレジスタにおけるフラグのオン／オフを確認し、各コア１０１〜１０８に対する割り込み要求の発生を検知する。そして、割込通知部１２５は、割り込み要求を専用線にて、そのレジスタに対応するコア１００に通知する。
【００４９】
そして、割込通知部１２５は、コア１００から割り込み要求を受け付ける通知を受信すると、割り込み要求に対応する処理の実行に用いるデータが格納されているメモリ５のアドレスを、割り込み要求を受け付けたコア１００に通知する。その後、割込通知部１２５は、コア１００により割り込み要求が受け付けられると、優先順位であるベクタがコア１００から読込まれる。この時、割込制御部１２０は、ベクタ格納部１２２に格納されている割込要求ベクタレジスタの中から、割り込み要求を受け付けたコア１００に対応するレジスタを選択する。そして、割込制御部１２０は、選択したレジスタの中から読込まれた時点で一番優先度の高いベクタの値をコア１００に返す。その後、割込制御部１２０は、コア１００に読込まれたベクタの値をリセットする。例えば、選択したレジスタにおける受け付けられた割り込み要求に対応するフラグが、割込通知部１２５によりオフにされることで、ベクタの値がリセットされる。
【００５０】
割込通知部１２５は、ベクタ格納部１２２に格納された割込要求ベクタレジスタにおけるコア１０１〜１０８に対する割り込み要求がなくなるまで、コア１０１〜１０８に対して割り込み要求の通知を行う。
【００５１】
処理結果送信部１２６は、割り込み処理の結果をコア１００から受信する。そして、処理結果送信部１２６は、受信した割り込み処理の結果を、その割り込み処理を要求したＣＰＵ２〜４などの要求元へ送信する。例えば、外部ユニット１１からの割り込み処理の場合、処理結果送信部１２６は、入出力インタフェース部１１０を介して、外部ユニット１１に処理結果を送信する。
【００５２】
ここで、以前は、データを伴う割込制御を行っていたため、同時に受付可能な割り込みの数に限界があり、ＣＰＵ１がビジーとなり割り込み要求を受信できないなどの割り込み失敗というケースが発生することがあった。しかし、近年は、ＣＰＵ１は、メモリ５を介してデータのやり取りを行い、割込制御部１２０では、フラグとしてのベクタのやり取りのみを行っているので、失敗するケースが軽減され、割込制御部１２０からの割り込み要求に対する応答は割り込み成功通知となる。また、既にフラグがオンになっているベクタへの割り込みがあった場合には、ＣＰＵ１などのハードウェアでは区別ができないため、ハードウェアは、その割り込み要求を無視する。そして、ベクタを排他的な値とすることなどはソフトウェアの責任になる。
【００５３】
コア１００は、他のコアへ割り込み要求を行う場合、他のＣＰＵに対するコア間の割り込み要求のパケットを生成する。この時、コア１００は、割り込み要求のパケットにベクタを付加する。そして、コア１００は、生成した割り込み要求のパケットを割込制御部１２０へ出力する。
【００５４】
また、コア１００は、割り込み要求の通知を割込通知部１２５から受ける。そして、コア１００は、割り込み要求を受け付ける場合、割り込み要求を受け付けることを割込通知部１２５に通知するとともに、ベクタの読込みを割込制御部１２０へ通知する。
【００５５】
そして、コア１００は、ベクタを読込んだ時点で一番優先度の高いベクタの値を割込制御部１２０から受ける。そして、コア１００は、割込制御部１２０から受信した割り込み要求のベクタの値から、その割り込み要求が外部ユニット１１〜１４、２１〜２４、３１〜３４、４１〜４４、又はＣＰＵ１〜４のコア１０１〜１０８のいずれから送られてきたか、すなわち要求元を特定する。
【００５６】
ここで、外部ユニット１１〜１４、２１〜２４、３１〜３４、４１〜４４のそれぞれには、固有のベクタが割り当てられている。そこで、コア１００は、ベクタの値から、いずれの外部ユニットからの割り込み要求かを容易に特定することができる。
【００５７】
また、外部ユニットに割り当てられている以外のベクタの場合には、コア１００は、通知された割り込み要求が他のコアからの割り込み要求であることが分かる。また、コア１００は、ベクタの値から通知された割り込み要求がどのＣＰＵのどのコアからの割り込み要求であるかを特定することができる。
【００５８】
次に、コア１００は、受信したベクタに対応するメモリ５のアドレスからデータを取得する。そして、コア１００は、取得したデータを用いて特定した割り込み要求の要求元に対応する処理を実行する。その後、コア１００は、処理結果を割込制御部１２０の処理結果送信部１２６へ出力する。
【００５９】
ここで、本実施例では、コア１００は、ベクタの値から外部、内部問わず割り込み要求の要求元を判別している。これは他の方法でも良く、例えば、割込制御部１２０などが、ベクタ毎に発行元のＣＰＵ番号やコア番号といった発行元情報やデータアドレスを保持しておき、コア１００はその情報を用いて割り込みの要求元を特定することもできる。ただし、その場合、ハードウェアのリソースを大きく消費することになる。
【００６０】
次に、図１１を参照して、本実施例に係る割込制御回路による外部ユニットからの割り込み要求に対する割込制御処理について説明する。図１１は、外部ユニットからの割り込み要求に対する割込制御処理のフローチャートである。
【００６１】
入出力インタフェース部１１０のベクタ付加部１１２は、割り込み要求のパケットを外部ユニット１１〜１４から受信する（ステップＳ１０１）。
【００６２】
ベクタ付加部１１２は、外部ユニット割込ベクタ記憶部１１１から割り込み要求が入力された入出力ポートに対応するベクタを取得する（ステップＳ１０２）。
【００６３】
ベクタ付加部１１２は、取得したベクタを割り込み要求のパケットに付加する（ステップＳ１０３）。そして、ベクタ付加部１１２は、ベクタを付加した割り込み要求のパケットを調停部１１３へ送信する。調停部１１３は、割り込み要求のパケットが衝突しないようにタイミングを調整して割込制御部１２０へ送信する。
【００６４】
割込制御部１２０の宛先ＣＰＵ判定部１２３は、割込受付部１２１を介して割り込み要求のパケットを入出力インタフェース部１１０から受信する。そして、宛先ＣＰＵ判定部１２３は、割り込み要求のパケットで指定されているＣＰＵ宛に割り込み要求のパケットを出力する。ここでは、自ＣＰＵに対しての割り込み要求である場合とし、宛先ＣＰＵ判定部１２３は、割り込み要求のパケットを宛先コア判定部１２４へ出力する。宛先コア判定部１２４は、受信した割り込み要求のパケットで指定されているコアを特定し、さらにその割り込み要求のベクタを取得する。そして、宛先コア判定部１２４は、ベクタ格納部１２２に格納されている割込要求ベクタレジスタの中の特定したコアに対応するレジスタにおける、取得したベクタのフラグをオンにして、指定されたベクタの割り込み要求があったことを書き込む（ステップＳ１０４）。
【００６５】
割込通知部１２５は、ベクタ格納部１２２に格納された割込要求ベクタレジスタから各コア１００に対して割り込み要求が発生しているか否かを特定する。そして、割込通知部１２５は、割り込み要求の対象のコア１００に対して、割り込みを通知する（ステップＳ１０５）。コア１００は、ベクタの読出しを割込制御部１２０に対して行う。割込制御部１２０は、ベクタの読込みを通知したコア１００から受信する。そして、割込制御部１２０は、割込要求を受けた時点で最も優先順位が高いベクタの値をコア１００に対して返信する。この時、割込制御部１２０は、コア１００に対して返信したレジスタ中のベクタのフラグをリセットする。
【００６６】
コア１００は、受信したベクタの値から、外部ユニット１１〜１４の中の割り込み要求の要求元を特定する（ステップＳ１０６）。
【００６７】
そして、コア１００は、受信したベクタの値からデータを取得し、割り込み特定した要求元に応じた処理を実行する（ステップＳ１０７）。ここで、図１１のフローでは、一つの割込要求に対する処理の流れについて説明している。実際には、レジスタの中のフラグが複数経っている場合、すなわち、割込要求が複数起きている場合には、割込制御部１２０は、コア１００に対して継続して割り込み通知を送り続ける。
【００６８】
次に、図１２を参照して、本実施例に係る割込制御回路によるコア間の割り込み要求に対する割込制御処理について説明する。図１２は、コア間の割り込み要求に対する割込制御処理のフローチャートである。
【００６９】
割込制御部１２０の割込受付部１２１は、割り込み要求のパケットをコア１００から受信する（ステップＳ２０１）。そして、割込受付部１２１は、受信した割り込み要求のパケットを宛先ＣＰＵ判定部１２３へ送信する。
【００７０】
宛先ＣＰＵ判定部１２３は、割り込み要求のパケットを割込受付部１２１から受信する。そして、宛先ＣＰＵ判定部１２３は、割り込み要求のパケットで指定されているＣＰＵ宛に割り込み要求のパケットを出力する。ここでは、自ＣＰＵに対しての割り込み要求である場合とし、宛先ＣＰＵ判定部１２３は、割り込み要求のパケットを宛先コア判定部１２４へ出力する。宛先コア判定部１２４は、受信した割り込み要求のパケットで指定されているコアを特定し、さらにその割り込み要求のベクタを取得する。そして、宛先コア判定部１２４は、ベクタ格納部１２２に格納されている割込要求ベクタレジスタの中の特定したコアに対応するレジスタにおける、取得したベクタのフラグをオンにして、指定されたベクタの割り込み要求があったことを書き込む（ステップＳ２０２）。
【００７１】
割込通知部１２５は、ベクタ格納部１２２に格納された割込要求ベクタレジスタから各コア１００に対して割り込み要求が発生しているか否かを特定する。そして、割込通知部１２５は、割り込み要求の対象のコア１００に対して、割り込みを通知する（ステップＳ２０３）。コア１００は、ベクタの読出しを割込制御部１２０に対して行う。割込制御部１２０は、ベクタの読込みを通知したコア１００から受信する。そして、割込制御部１２０は、割込要求を受けた時点で最も優先順位が高いベクタの値をコア１００に対して返信する。この時、割込制御部１２０は、コア１００に対して返信したレジスタ中のベクタのフラグをリセットする。
【００７２】
コア１００は、受信したベクタの値から割り込み要求の要求元を特定する（ステップＳ２０４）。
【００７３】
さらに、コア１００は、受信したベクタの値からアドレスからデータを取得し、割り込み特定した要求元に応じた処理を実行する（ステップＳ２０５）。
【００７４】
以上に説明したように、本実施例に係る割込制御回路は、割り込み要求を受信した入出力ポートに対応するベクタを、受信した割り込み要求に付加しレジスタに格納する。そして、コアは、割り込み要求のベクタを用いてその割り込み要求を発行した外部ユニットを特定して、特定した外部ユニットに応じた処理を行うことができる。このように、本実施例に係る割込制御回路では、割り込み要求を行った外部ユニットを簡単に特定することができる。
【００７５】
また、従来から割り込み要求に付加されている、割り込みの優先度を表す情報であるベクタを、外部ユニットを特定する情報として用いるので、従来の割込制御回路に少しの変更を加えるだけで、外部ユニット特定の機能を追加できる。具体的には、ソフトウェアで行う処理としては、ポート毎のベクタの値を設定する処理が増える程度で、外部ユニット特定の機能が実現できる。この点、ソフトウェアが、割り込み要求に識別情報を付加し、且つ割り込み要求の処理時に付加した識別情報を用いて外部ユニットの特定を行う従来技術では、各処理をソフトウェアで全て行わなくてはならず、ソフトウェアに多くの追加及び変更が必要である。このように、本実施例に係る割込制御回路は、従来技術に比べて、外部ユニット特定の機能の追加が容易であり、製造コストも抑えることができる。
【００７６】
また、以上の説明では、外部ユニット１１〜１４からの割り込み要求に対応するデータをメモリ５に格納し、コア１００はメモリ５からデータを読み出して処理を行っているがデータの格納場所は他の場所でもよい。例えば、外部ユニット１１〜１４からの割り込み要求に対応するデータが小さく、割り込み要求の数も多くなければ、割込制御部１２０がデータを記憶しておき、コア１００から割り込み要求を受け付ける通知を受けて、割込制御部１２０がコア１００にデータを送信してもよい。
【符号の説明】
【００７７】
１〜４  ＣＰＵ
５  メモリ
１１〜１４，２１〜２４，３１〜３４，４１〜４４  外部ユニット
１０１〜１０８  コア
１１０  入出力インタフェース
１１１  外部ユニット割込ベクタ記憶部
１１２  ベクタ付加部
１１３  調停部
１２０  割込制御部
１２１  割込受付部
１２２  ベクタ格納部
１２３  宛先ＣＰＵ判定部
１２４  宛先コア判定部
１２５  割込通知部
１２６  処理結果送信部
【図１】
2014038438.tif 000003
【図２】
2014038438.tif 000004
【図３】
2014038438.tif 000005
【図４】
2014038438.tif 000006
【図５】
2014038438.tif 000007
【図６】
2014038438.tif 000008
【図７】
2014038438.tif 000009
【図８】
2014038438.tif 000010
【図９】
2014038438.tif 000011
【図１０】
2014038438.tif 000012
【図１１】
2014038438.tif 000013
【図１２】
2014038438.tif 000014
【図１３】
2014038438.tif 000015