(57)【特許請求の範囲】
【請求項１】
記憶装置又は入出力装置に接続された複数の制御装置がそれぞれ複数のバスのうち対応するバスを介して接続される演算処理装置において、
前記バスを介して前記複数の制御装置の各々との間で情報の入出力を行うバス制御部と、
アクセス対象の入出力装置が前記複数の制御装置のいずれに接続されているかの接続情報を、前記複数の制御装置のうち前記接続情報を保持する所定の制御装置に問い合わせ、複数のバスのうち前記所定の制御装置が応答した接続情報により特定される制御装置に接続されたバスを介して、前記アクセス対象の入出力装置に対してアクセスを行なう入出力制御部を有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置はさらに、
メモリアクセス要求を、前記メモリアクセス要求のメモリアドレスに応じて、前記複数の制御装置の各々に接続されたバスに振り分けるメモリアクセス制御部を有することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記メモリアクセス制御部は、
前記メモリアクセス要求のメモリアドレスに応じて、前記複数の制御装置にそれぞれ接続されたバスを介して、前記複数の制御装置に並行してアクセスすることを特徴とする請求項２記載の演算処理装置。
【請求項４】
記憶装置又は入出力装置に接続された複数の制御装置がそれぞれ複数のバスのうち対応するバスを介して接続される演算処理装置を有する情報処理装置において、
前記演算処理装置は、
前記バスを介して前記複数の制御装置の各々との間で情報の入出力を行うバス制御部と、
アクセス対象の入出力装置が前記複数の制御装置のいずれに接続されているかの接続情報を、前記複数の制御装置のうち前記接続情報を保持する所定の制御装置に問い合わせ、複数のバスのうち前記所定の制御装置が応答した接続情報により特定される制御装置に接続されたバスを介して、前記アクセス対象の入出力装置に対してアクセスを行なう入出力制御部を有することを特徴とする情報処理装置。
【請求項５】
前記演算処理装置はさらに、
メモリアクセス要求を、前記メモリアクセス要求のメモリアドレスに応じて、前記複数の制御装置の各々に接続されたバスに振り分けるメモリアクセス制御部を有することを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記メモリアクセス制御部は、
前記メモリアクセス要求のメモリアドレスに応じて、前記複数の制御装置にそれぞれ接続されたバスを介して、前記複数の制御装置に並行してアクセスすることを特徴とする請求項５記載の情報処理装置。
【請求項７】
記憶装置又は入出力装置に接続された複数の制御装置がそれぞれ複数のバスのうち対応するバスを介して接続される演算処理装置の制御方法において、
前記演算処理装置が有する入出力制御部が、アクセス対象の入出力装置が前記複数の制御装置のいずれに接続されているかの接続情報を、前記複数の制御装置のうち前記接続情報を保持する所定の制御装置に問い合わせ、
前記入出力制御部が、複数のバスのうち前記所定の制御装置が応答した接続情報により特定される制御装置に接続されたバスを介して、前記アクセス対象の入出力装置に対してアクセスを行なうことを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央処理装置、中央処理装置の制御方法、情報処理システムに関に関する。
【背景技術】
【０００２】
たとえば、情報処理システムにおいて、中央処理装置（ＣＰＵチップ）あたりの計算能力は、半導体製造プロセス技術の進歩等に呼応して年々大きくなる傾向にある。
この中央処理装置の高い計算能力を有効に利用するためには、メモリアクセスにおける中央処理装置当たりのメモリバンド幅（メモリアクセス速度）を大きくする必要がある。【０００３】
従来では、中央処理装置に一つのシステムコントローラを接続し、このコントローラが複数のメモリ媒体にアクセス要求を振り分けるインタリーブを行っていた。従って、従来技術では、インタリーブの状況を中央処理装置側では認識できない。【０００４】
このため、中央処理装置当りのメモリバンド幅を十分確保するためには、中央処理装置とシステムコントローラ間のバスを太くする（信号線の数を多くする）必要があり、かつ、それに見合うように、システムコントローラとメモリ媒体間にも太いバスを用意する必要が生じる。【０００５】
この結果、システムコントローラに接続される信号線の本数は非常に大きなものとなる。このことが、より小さなコストでより高いシステム性能を得ようとする上で、大きな障害となる。
【発明の開示】
【０００６】
このため、本発明では、後述のように、中央処理装置と複数のシステムコントローラとの間に複数のバス（ＷＡＹ）を設けて、中央処理装置にインタリーブを行わせることで、個々のシステムコントローラに接続される信号線の本数を削減することを開示する。
【０００７】
中央処理装置に複数のバスを接続して、当該中央処理装置に直接的にインタリーブを行わせることにより、いくつかの技術的課題が生じる。
すなわち、中央処理装置は、アクセスしたいＩ／Ｏデバイスに応じて、当該Ｉ／Ｏデバイスが存在する適切なバスにＩ／Ｏ要求パケットを発行しなければならない。
【０００８】
主記憶はアドレスでインタリーブされるため、アドレスからアクセス対象メモリが接続されるシステムコントローラ（バス）の番号を求める変換処理は比較的単純に実現することが可能である。
【０００９】
しかし、メモリマップドＩ／Ｏにおける、アドレスとアクセス対象Ｉ／Ｏデバイスとの対応については、より高い自由度が要求されることが多い。
このため、全ての中央処理装置に設定レジスタを設け、どのＩ／Ｏデバイスがどのバス（ＷＡＹ）上に存在するかの構成情報を設定することが考えられるが、複数の中央処理装置が存在するシステムでは現実的ではない。
【００１０】
なぜなら、複数の中央処理装置の各々に同じ内容の設定情報をもたなければならず、中央処理装置内の記憶資源の無駄が多くなり、中央処理装置の製造コストの増大を招くという技術的課題を生じる。
【００１１】
さらに、複数のＣＰＵ（＝中央処理装置）間で構成情報の同一性（一貫性）を確保するための管理コストが高くなるという技術的課題も生じる。
そこで、本発明では、以下の様にしてこれらの技術的課題を克服する。
【００１２】
本発明の目的は、中央処理装置に接続されるシステムコントローラの構成を複雑化することなく、中央処理装置の処理能力を有効に利用可能にすることにある。
本発明の他の目的は、中央処理装置内の構造や、管理を複雑化することなく、低コストにて、中央処理装置自体がメモリインタリーブを行うことによる処理性能の向上を実現することにある。
【００１３】
本発明の第１の観点は、複数のバスとの間で情報の入出力を行うバス制御手段と、
メモリアドレスに応じて、複数の前記バスにメモリアクセス要求を振り分けるメモリアクセス制御手段と、
前記バスを介して外部の入出力デバイスにアクセスする入出力アクセス制御手段と、
を含む中央処理装置を提供する。
【００１４】
本発明の第２の観点は、第１の観点に記載の中央処理装置において、
前記入出力アクセス制御手段は、
特定の前記バスを介して、アクセス対象の前記入出力デバイスがいずれの前記バス上に存在するかを問い合わせる第１ステップと、
前記システムコントローラから応答された前記バスを用いて前記入出力デバイスに対するアクセスを実行する第２ステップと、
を実行する中央処理装置を提供する。
【００１５】
本発明の第３の観点は、第１の観点に記載の中央処理装置において、
前記メモリアクセス制御手段は、物理的な前記メモリアドレスに応じて複数の前記バスに個別に接続された複数のメモリ媒体に並行してアクセスするメモリインタリーブを行う中央処理装置を提供する。
【００１６】
本発明の第４の観点は、中央処理装置を複数のバスに接続するステップと、
前記中央処理装置が、メモリアドレスに応じて、複数のメモリアクセス要求を前記バス上に存在するメモリ媒体に振り分けるメモリインタリーブを実行するステップと、
を含む中央処理装置の制御方法を提供する。
【００１７】
本発明の第５の観点は、第４の観点に記載の中央処理装置の制御方法において、
さらに、前記中央処理装置が、特定の前記バスを介して、アクセス対象の前記入出力デバイスがいずれの前記バス上に存在するかを問い合わせるステップと、
前記中央処理装置が、前記システムコントローラから応答された前記バスを用いて前記入出力デバイスに対するアクセスを実行するステップと、
を含む中央処理装置の制御方法を提供する。
【００１８】
本発明の第６の観点は、中央処理装置と、
メモリ媒体および入出力デバイスの少なくとも一方を配下に持つ複数のシステムコントローラと、
前記中央処理装置と前記システムコントローラの各々とを接続する複数のバスと、
前記中央処理装置に設けられ、メモリアドレスに応じて、複数のメモリアクセス要求を前記バス上に存在するメモリ媒体に振り分けるメモリアクセス制御手段と、
を含む情報処理システムを提供する。
【００１９】
本発明の第７の観点は、第６の観点に記載の情報処理システムにおいて、
前記中央処理装置には、さらに、
特定の前記バスを介して、アクセス対象の前記入出力デバイスがいずれの前記バス上に存在するかを問い合わせる第１ステップと、
前記システムコントローラから応答された前記バスを用いて前記入出力デバイスに対するアクセスを実行する第２ステップと、
を実行する入出力アクセス制御手段を含む情報処理システムを提供する。
【００２０】
本発明の第８の観点は、第６の観点に記載の情報処理システムにおいて、
複数の中央処理装置の各々が、複数の前記バスを介して、複数の前記システムコントローラの各々と接続されている情報処理システムを提供する。
【００２１】
本発明の第９の観点は、第６の観点に記載の情報処理システムにおいて、
個々の前記システムコントローラは、複数の半導体チップからなる情報処理システムを提供する。
【００２２】
本発明では、中央処理装置に複数のバスを接続し、中央処理装置自体がメモリインタリーブを行うようにしたので、中央処理装置とシステムコントローラとの間に、必要以上に信号線の本数の多い太いバスを設ける必要がない。
【００２３】
このため、システムコントローラを構成する半導体チップ等の製造コストを下げつつ高いメモリバンド幅を実現して、中央処理装置の処理能力を十分に発揮させることが可能になる。
【００２４】
また、本発明では、入出力デバイスのアクセスに際しては、いずれのバス上に目的の入出力デバイスが存在するかを、特定のバスを介して確認した後、応答された入出力デバイスに対して入出力アクセスを実行するので、複数の中央処理装置の各々に共通の構成情報を設定するための特別な記憶資源を設ける必要がなく、さらに、当該構成情報の一貫性を管理する煩雑な操作を行う必要もない。
【００２５】
このため、中央処理装置内の構造や、管理を複雑化することなく、低コストにて、中央処理装置自体がメモリインタリーブを行うことによる処理性能の向上を実現することができる。
【００２６】
換言すれば、中央処理装置のレベルでのメモリインタリーブによる高性能化と、当該中央処理装置、システムコントローラ、入出力デバイス等を含む情報処理システムにおける柔軟な構成変更を両立させることが可能になる。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施の形態である中央処理装置を含む情報処理システムの構成の一例を示す概念図である。
【図２】本発明の一実施の形態である中央処理装置に対するバスの接続状態の一例を示す概念図である。
【図３】本発明の一実施の形態である中央処理装置の内部構成の一例を示すブロック図である。
【図４】本発明の一実施の形態である中央処理装置の内部構成の一例を示すブロック図である。
【図５】本発明の一実施の形態である中央処理装置におけるメモリインタリーブ方法の一例を示す概念図である。
【図６】本発明の一実施の形態である中央処理装置におけるＩ／Ｏアクセスの作用の一例を示す概念図である。
【図７】本発明の一実施の形態である中央処理装置とシステムコントローラとの間におけるＩ／Ｏアクセストランザクションの一例を示す概念図である。
【図８】本発明の一実施の形態である中央処理装置におけるＩ／Ｏアクセスの作用の一例を示す状態遷移図である。
【図９】本発明の一実施の形態である中央処理装置とシステムコントローラとの間におけるＩ／Ｏアクセストランザクションの一例を示すシーケンス図である。
【図１０】本発明の一実施の形態である中央処理装置を含む情報処理システムの実装例を示す概念図である。
【発明を実施するための最良の形態】
【００２８】
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
図１は、本発明の一実施の形態である中央処理装置を含む情報処理システムの構成の一例を示す概念図である。図２は、本実施の形態の中央処理装置に対するバスの接続状態の一例を示す概念図である。【００２９】
図１に例示されるように、本実施の形態の情報処理システムは、複数のＣＰＵノード１００、システムコントローラ３００、メモリ媒体４００、Ｉ／Ｏデバイス５００を含んでいる。【００３０】
個々のシステムコントローラ３００の配下には、メモリ媒体４００とＩ／Ｏデバイス５００が接続されている。個々のシステムコントローラ３００は、配下のメモリ媒体４００、Ｉ／Ｏデバイス５００と、個々のＣＰＵノード１００との間における情報の授受を制御する。【００３１】
Ｉ／Ｏデバイス５００は、メモリアドレス空間にマッピングされ、メモリマップドＩ／ＯによってＣＰＵノード１００からＩ／Ｏデバイス５００へのアクセスが実行される。
複数のシステムコントローラ３００（ＳＣ０〜３）を代表するＳＣ０は、複数のＩ／Ｏデバイス５００が、どのシステムコントローラ３００（システムバス２００）の配下に存在するかの情報が設定される構成管理テーブル３１０を備えている。ＳＣ０は、後述のようなＣＰＵノード１００からの問い合わせに対して、この構成管理テーブル３１０を参照して応答する。【００３２】
メモリ媒体４００は、たとえば、半導体メモリ等の記憶媒体（メモリバンク）と、それを制御するメモリコントローラを含んでいる。個々のシステムコントローラ３００の配下のメモリ媒体４００は、互いに物理的に独立しており、並行なアクセス動作が可能である。【００３３】
本実施の形態の場合、個々のシステムコントローラ３００（ＳＣ０〜ＳＣ３）は、システムバス２００を介して、複数のＣＰＵノード１００の各々と接続されている。
個々のＣＰＵノード１００は、後述のように、複数のシステムバス２００（システムコントローラ３００）にメモリアクセス要求を振り分けることで、個々のシステムコントローラ３００の配下の複数のメモリ媒体４００との間で並列的にメモリアクセスを行うメモリインタリーブを行う機能を備えている。【００３４】
すなわち、本実施の形態の場合には、ＣＰＵノード１００のレベルで、メモリ媒体４００に対するアクセスにおけるメモリインタリーブを制御する。
図２に例示されるよう、個々のＣＰＵノード１００と複数のシステムコントローラ３００の各々との間に設けられたシステムバス２００は、ＳＣリクエストバス２１０（ＳＣＲＥＱ＿ＢＵＳｎ）と、ＳＣオーダバス２２０（ＳＣＯＤＲ＿ＢＵＳｎ）を含んでいる。【００３５】
ＳＣリクエストバス２１０は、ＣＰＵノード１００からシステムコントローラ３００に対して情報転送を行う。ＳＣリクエストバス２１０は、ＴＡＧビット２１１（ＳＣＲＥＱ＿ＢＵＳｎ＿ＴＡＧ）、データビット２１２（ＳＣＲＥＱ＿ＢＵＳｎ）、ＥＣＣビット２１３（ＳＣＲＥＱ＿ＢＵＳｎ＿ＥＣＣ）で構成される。【００３６】
ＳＣオーダバス２２０は、システムコントローラ３００からＣＰＵノード１００に対して情報転送を行うために用いられる。ＳＣオーダバス２２０は、ＴＡＧビット２２１（ＳＣＯＤＲ＿ＢＵＳｎ＿ＴＡＧ）、データビット２２２（ＳＣＯＤＲ＿ＢＵＳｎ）、ＥＣＣビット２２３（ＳＣＯＤＲ＿ＢＵＳｎ＿ＥＣＣ）で構成される。【００３７】
ｎは、接続先のＳＣ０〜３（システムコントローラ３００）を示す。
本実施の形態の場合、一例として、ＳＣＲＥＱ＿ＢＵＳｎ＿ＴＡＧは３ビット、ＳＣＲＥＱ＿ＢＵＳｎは２４ビット、ＳＣＲＥＱ＿ＢＵＳｎ＿ＥＣＣが７ビットである。【００３８】
また、ＳＣＯＤＲ＿ＢＵＳｎ＿ＴＡＧは３ビット、ＳＣＯＤＲ＿ＢＵＳｎは４０ビット、ＳＣＯＤＲ＿ＢＵＳｎ＿ＥＣＣが７ビットである。
図３は、本実施の形態のＣＰＵノード１００の内部構成の一例を示すブロック図である。【００３９】
本実施の形態のＣＰＵノード１００は、一つまたは複数のプロセッサコア１１０、キャッシュメモリ１２０、システムバス制御部１３０、を含んでいる。
プロセッサコア１１０は、算術論理演算ユニット（ＡＬＵ）等の演算機能や制御機能を有する。【００４０】
キャッシュメモリ１２０は、プロセッサコア１１０と外部との間で授受される情報を一時的に記憶する。
システムバス制御部１３０は、ＣＰＵノード１００に接続される複数のシステムバス２００との間における情報の授受を制御する。【００４１】
本実施の形態の場合、システムバス制御部１３０には、メモリ参照制御部１４０およびＩ／Ｏ参照制御部１５０が設けられている。
メモリ参照制御部１４０は、複数のシステムコントローラ３００（システムバス２００）の各々の配下に存在する複数のメモリ媒体４００に対するメモリインタリーブを制御する。【００４２】
すなわち、本実施の形態では、ＣＰＵノード１００のレベルでメモリのインタリーブを制御する。
図４に例示されるように、本実施の形態のメモリ参照制御部１４０は、インタリーブ制御部１４１、ＷＡＹモード設定レジスタ１４２、メモリアクセスキュー１４３を含んでいる。
【００４３】
メモリアクセスキュー１４３は、個々のシステムバス２００（システムコントローラ３００）が接続されるパケット生成器１３１に対応して配置されている。
そして、インタリーブ制御部１４１は、参照対象のメモリの物理アドレス（Ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ；ＰＡ）（この場合、ＳＣＲＥＱ＿ＢＵＳｎの下位２ビット、システムバス２００の全体でみると、下位側から８番目と９番目のＰＡ［９：８］の２ビット）によって、個々のシステムバス２００に対応したメモリアクセスキュー１４３にアクセス要求を振り分けることで、メモリインタリーブを行う。【００４４】
ＷＡＹモード設定レジスタ１４２には、メモリ媒体４００の物理アドレスと、対応するシステムコントローラ３００の関係が定義される。
すなわち、図５に例示されるように、ＷＡＹモード設定レジスタ１４２には、物理アドレスＰＡ［９：８］の２ビットに応じて、システムコントローラ３００（ＳＣ）が４つの場合（図１の構成）、およびシステムコントローラ３００（ＳＣ）が二つの場合（図１の構成から、オプションのＳＣ２、ＳＣ３を取り除いた構成）、の各々の場合について、ＳＣＲＥＱ＿ＢＵＳｎのいずれに振り分けるかが定義される。【００４５】
インタリーブ制御部１４１は、ＷＡＹモード設定レジスタ１４２を参照して、メモリアクセス要求を各システムコントローラ３００（ＳＣ０〜３またはＳＣ０〜１）に振り分ける。【００４６】
ところで、本実施の形態のように、ＣＰＵノード１００のレベルでメモリインタリーブを行う場合、Ｉ／Ｏデバイス５００が、メモリアドレス空間にマッピングされている場合には、ＣＰＵノード１００は、どのシステムコントローラ３００の配下にどのＩ／Ｏデバイス５００が存在するかを予め知ることはできない。【００４７】
そこで、本実施の形態の場合には、Ｉ／Ｏ参照制御部１５０により、最初に、代表のシステムコントローラ３００（この場合、ＳＣ０）に対して、目的のＩ／Ｏデバイス５００の所在（Ｉ／Ｏデバイス５００が存在するシステムバス２００（システムコントローラ３００））を問い合わせ、次に、ＳＣ０から応答されたシステムバス２００（システムコントローラ３００）に対して、実際にＩ／Ｏ要求を発行することで、目的のＩ／Ｏデバイス５００に対するＩ／Ｏアクセスを実現する。【００４８】
すなわち、図６に例示されるように、本実施の形態のＩ／Ｏ参照制御部１５０には、Ｉ／Ｏリクエストキュー１５１が設けられている。
このＩ／Ｏリクエストキュー１５１には、プロセッサコア１１０の側からＩ／Ｏリクエストフレーム１５２が、Ｉ／Ｏ要求の発生順に格納される。Ｉ／Ｏリクエストフレーム１５２は、パケット生成器１３１でパケット化されて、システムバス２００を介してシステムコントローラ３００に送られる。【００４９】
このＩ／Ｏリクエストフレーム１５２は、有効フラグ１５２ａ、Ｉ／Ｏアドレス１５２ｂ、命令コード１５２ｃ、バイトマスク１５２ｄ、状態変数１５２ｅ、Ｉ／Ｏ要求先ＳＣ番号１５２ｆ、Ｉ／Ｏデータ１５２ｇ、を含む。【００５０】
有効フラグ１５２ａは、Ｉ／Ｏリクエストキュー１５１に書き込まれたＩ／Ｏリクエストフレーム１５２を実行可能にするか否かを制御する情報である。
Ｉ／Ｏアドレス１５２ｂは、目的のＩ／Ｏデバイス５００のアドレスである。【００５１】
命令コード１５２ｃは、Ｉ／Ｏデバイス５００に対する命令が設定される。
バイトマスク１５２ｄは、ＳＣＲＥＱ＿ＢＵＳｎの２４ビット（３バイト）のうちのどれにＩ／Ｏデータ１５２ｇを割り当てるかを示す情報である。【００５２】
状態変数１５２ｅは、上述のように、２回に分けて実行されるＩ／Ｏアクセスの進行状態を管理するための情報である。
Ｉ／Ｏ要求先ＳＣ番号１５２ｆには、最初のＳＣ０への問い合わせに対して応答されたＩ／Ｏデバイス５００の所在を示すＳＣ番号（０〜３）が設定される。【００５３】
図７は、Ｉ／Ｏ参照制御部１５０によって実行されるＩ／Ｏアクセストランザクション６００の一例を示す概念図である。
本実施の形態のＩ／Ｏアクセストランザクション６００は、第１ＳＣリクエスト６０１および第１応答ＳＣオーダ６０２と、第２ＳＣリクエスト６０３および第２応答ＳＣオーダ６０４、からなる。【００５４】
第１ＳＣリクエスト６０１は、ＣＰＵノード１００から特定のＳＣ０への、Ｉ／Ｏデバイス５００の所在の問い合わせを示す。
本実施の形態の場合、第１ＳＣリクエスト６０１では、トランザクション名６００ａとして、
ＮＣ−ＲＤ；ｎｏｎ−ｃａｃｈｅ  ｒｅａｄ
ＮＣ−ＢＲ；ｎｏｎ−ｃａｃｈｅ  ｂｌｏｃｋ  ｒｅａｄ
ＮＣ−ＷＲ；ｎｏｎ−ｃａｃｈｅ  ｗｒｉｔｅ
ＮＣ−ＢＷ；ｎｏｎ−ｃａｃｈｅ  ｂｌｏｃｋ  ｗｒｉｔｅ
の４種類が定義され、全て、発行元６００ｂはＣＰＵ（ＣＰＵノード１００）、発行先６００ｃは特定のＳＣ０（システムコントローラ３００）である。【００５５】
ＮＣ−ＲＤは、目的のＩ／Ｏデバイス５００に対する、バイト単位（たとえば、１〜１６バイト）のＩ／Ｏデータ１５２ｇの読み出し要求である。
ＮＣ−ＢＤは、目的のＩ／Ｏデバイス５００に対する、ブロック単位（たとえば６４バイト）のＩ／Ｏデータ１５２ｇの読み出し要求である。【００５６】
ＮＣ−ＷＲは、目的のＩ／Ｏデバイス５００に対する、バイト単位（たとえば、１〜１６バイト）のＩ／Ｏデータ１５２ｇの書き込み要求である。
ＮＣ−ＢＷは、目的のＩ／Ｏデバイス５００に対する、ブロック単位（たとえば６４バイト）のＩ／Ｏデータ１５２ｇの書き込み要求である。【００５７】
第１応答ＳＣオーダ６０２は、この第１ＳＣリクエスト６０１に対するＳＣ０から応答である。この時、Ｉ／Ｏ要求先ＳＣ番号１５２ｆが返される。
この第１応答ＳＣオーダ６０２では、トランザクション名６００ａとして、
ＳＮ−ＲＥＳ−ＮＣ；Ｓｎｏｏｐ  ｒｅｓｕｌｔ  ｏｆ  ｎｏｎ−ｃａｃｈｅａｂｌｅ  ａｃｃｅｓｓ
ＳＮ−ＲＥＳ−ＡＸ；Ｓｎｏｏｐ  ｒｅｓｕｌｔ（ａｄｄｒｅｓｓ  ｅｘｃｅｐｔｉｏｎ）
の二つがある。【００５８】
発行元６００ｂはＳＣ０で、発行先６００ｃは、ＣＰＵ（ＣＰＵノード１００）である。
ＳＮ−ＲＥＳ−ＮＣは、問い合わせられたＩ／Ｏデバイス５００が存在するシステムコントローラ３００の番号を応答する。【００５９】
ＳＮ−ＲＥＳ−ＡＸは、問い合わせの指定アドレスに該当するＩ／Ｏデバイス５００がなかった場合に応答される。
第２ＳＣリクエスト６０３は、Ｉ／Ｏ要求先ＳＣ番号１５２ｆで特定される任意のシステムコントローラ３００（ＳＣｎ）の配下に存在する目的のＩ／Ｏデバイス５００に対するＩ／Ｏ要求の実行である。この第２ＳＣリクエスト６０３では、トランザクション名６００ａとして、
ＳＲ−ＮＣ；Ｓｌａｖｅ  ｒｅａｄ  ｎｏｎ−ｃａｃｈｅ
ＳＲ−ＮＢ；Ｓｌａｖｅ  ｒｅａｄ  ｎｏｎ−ｃａｃｈｅ  ｂｌｏｃｋ
ＳＷ−ＮＣ；Ｓｌａｖｅ  ｗｒｉｔｅ  ｎｏｎ−ｃａｃｈｅ
ＳＷ−ＮＢ；Ｓｌａｖｅ  ｗｒｉｔｅ  ｎｏｎ−ｃａｃｈｅ  ｂｌｏｃｋ
の４つがある。【００６０】
ＳＲ−ＮＣは、Ｉ／Ｏデバイス５００に対するバイト単位の読み出し要求である。
ＳＲ−ＮＢは、Ｉ／Ｏデバイス５００に対するブロック単位の読み出し要求である。
ＳＷ−ＮＣは、Ｉ／Ｏデバイス５００に対するバイト単位の書き込み要求である。
ＳＷ−ＮＢは、Ｉ／Ｏデバイス５００に対するブロック単位の書き込み要求である。【００６１】
いずれも、発行元６００ｂはＣＰＵノード１００である。
また、発行先６００ｃは第１応答ＳＣオーダ６０２でＳＣ０から応答されたＳＣ番号（ＳＣ−ＷＡＹ）である。すなわち、発行先６００ｃにおいて、ＢＵＳ［１：０］指定とあるのは、ＳＮ−ＲＥＳ−ＮＣで指定されたＳＣ−ＷＡＹに対してＩ／Ｏ要求を発行しなければならないことを示す。【００６２】
第２応答ＳＣオーダ６０４は、この実際のＩ／Ｏ要求に対するＩ／Ｏデバイス５００（ＳＣｎ）からの応答である。この第２応答ＳＣオーダ６０４では、トランザクション名６００ａとして、
ＤＯＷ＝ＳＲ−ＮＣ−ＲＴＮ
ＤＯＷ＝ＳＲ−ＮＢ−ＲＴＮ
ＤＯＷ＝ＣＭＤ−ＣＰＬＴ
の３種類がある。【００６３】
ＤＯＷ＝ＳＲ−ＮＣ−ＲＴＮは、ＳＲ−ＮＣ（ｎｏｎ−ｃａｃｈｅａｂｌｅ  ｒｅａｄ）に対する応答であり、Ｉ／Ｏデバイス５００から読み出されたバイトデータが返される。【００６４】
ＤＯＷ＝ＳＲ−ＮＢ−ＲＴＮは、ＳＲ−ＮＢ（ｎｏｎ−ｃａｃｈｅａｂｌｅ  ｂｌｏｃｋ  ｒｅａｄ）に対する応答であり、Ｉ／Ｏデバイス５００から読み出されたブロックデータが返される。【００６５】
ＤＯＷ＝ＣＭＤ−ＣＰＬＴは、ＳＷ−ＮＣ、ＳＷ−ＮＢ（ｗｒｉｔｅ／ｂｌｏｃｋ  ｗｒｉｔｅ）に対する応答である。このＷｒｉｔｅタイプに対する応答は、Ｉ／Ｏデバイス５００に対するデータ書き込みが完了した否かを応答するものであり、ＷｒｉｔｅタイプのＩ／Ｏリクエストの解放制御のために存在する。【００６６】
なお、この第２応答ＳＣオーダ６０４における発行元６００ｂは、上述の第２ＳＣリクエスト６０３の発行先と同一である。たとえば「ＳＲ−ＮＣと同じ」と書いてあるのは、ＳＲ−ＮＣが発行されたＳＣｎと同じところから第２応答ＳＣオーダ６０４（ＤＯＷ）が返ってくることを指している。【００６７】
図８は、Ｉ／Ｏ参照制御部１５０における、上述のＩ／Ｏアクセストランザクション６００を実行する際の状態遷移の一例を示す状態遷移図である。
以下では、Ｉ／Ｏアクセストランザクション６００の一例として、ＮＣ−ＲＤを実行する場合を例に説明する。【００６８】
Ｉ／Ｏリクエストフレーム１５２がＩ／Ｏリクエストキュー１５１に書き込まれた時は初期状態１５０ａにある。
そして、当該Ｉ／Ｏリクエストキュー１５１によるＩ／Ｏ処理の実行が可能になると、有効フラグ１５２ａが有効化され、第１実行状態１５０ｂに遷移する。【００６９】
そして、第１ＳＣリクエスト６０１（ＮＣ−ＲＤ）をＳＣ０に発行し（第１ＳＣリクエスト６０１）、第１応答待ち状態１５０ｃに遷移して、ＳＣ０からの応答（ＳＮ−ＲＥＳ−ＮＣまたはＳＮ−ＲＥＳ−ＡＸ）を待つ。【００７０】
Ｉ／Ｏ参照制御部１５０は、ＳＣ０から、ＳＮ−ＲＥＳ−ＮＣまたはＳＮ−ＲＥＳ−ＡＸを受信すると（第１応答ＳＣオーダ６０２）、第２実行状態１５０ｄに遷移する。
ＳＮ−ＲＥＳ−ＮＣを受信した場合は、指定されたＳＣｎに対応するシステムバス２００にＳＲ−ＮＣを発行し（第２ＳＣリクエスト６０３）、第２応答待ち状態１５０ｅに遷移する。【００７１】
そして、ＳＣｎを経由して目的のＩ／Ｏデバイス５００からの応答情報を受信し（第２応答ＳＣオーダ６０４）、初期状態１５０ａに復帰する。
また、第２実行状態１５０ｄでは、ＳＮ−ＲＥＳ−ＡＸを受け取った場合、Ｉ／Ｏアドレス１５２ｂで指定した目的のＩ／Ｏデバイス５００が存在しないので、所定のエラー処理を行って、初期状態１５０ａに復帰する。【００７２】
他のＮＣ−ＢＲ、ＮＣ−ＷＲ、ＮＣ−ＢＷも同様である。
図９は、Ｉ／Ｏアクセストランザクション６００の一例としてＮＣ−ＲＤに関係するトランザクションの実行例を示すシーケンス図である。【００７３】
Ｉ／Ｏアクセストランザクション６００において、ＣＰＵノード１００から、特定のＳＣ０（システムバス２００：ＳＣＲＥＱ＿ＢＵＳ０）に対してＮＣ−ＲＤを発行して、目的のＩ／ＯアドレスのＩ／Ｏデバイス５００の存在するＳＣ番号を問い合わせる（第１ＳＣリクエスト６０１）。【００７４】
そして、ＳＣ０から発行元のＣＰＵノード１００に対して、ＳＣＯＤＲ＿ＢＵＳ０を介して、ＳＮ−ＲＥＳ−ＮＣによって、目的のＩ／Ｏデバイス５００を配下に持つシステムコントローラ３００のＳＣ番号が応答される（第１応答ＳＣオーダ６０２）。【００７５】
これを受けたＣＰＵノード１００は、第１応答ＳＣオーダ６０２で受信したＳＣ番号のシステムコントローラ３００（システムバス２００）に対して、ＳＲ−ＮＣによって、Ｉ／Ｏデバイス５００に対するＩ／Ｏ要求を発行する（第２ＳＣリクエスト６０３）。【００７６】
そして、この第２ＳＣリクエスト６０３（ＳＲ−ＮＣ）を受けたＩ／Ｏデバイス５００は、ＤＯＷ＝ＳＲ−ＮＣ−ＲＴＮによって、要求されたデータを、要求元のＣＰＵノード１００に応答する（第２応答ＳＣオーダ６０４）。【００７７】
以上説明したように、本実施の形態では、ＣＰＵノード１００に備えられたメモリ参照制御部１４０において、メモリ媒体４００へのメモリ参照については、物理アドレスで、複数のメモリ媒体４００（システムコントローラ３００）に振り分けることにより、たとえば、２５６バイト単位でインタリーブする。【００７８】
これにより、一つのシステムコントローラ３００において集中してインタリーブを行わせる場合に比較して、ＣＰＵノード１００とシステムコントローラ３００との間のバスの信号線の数を削減できる。【００７９】
すなわち、システムコントローラ３００や、当該システムコントローラ３００を含む情報処理システムの製造コストを増大させることなく、ＣＰＵノード１００のメモリ媒体４００へのアクセスを高速化して、ＣＰＵノード１００の処理能力を十分に発揮させることができる。【００８０】
また、ＣＰＵノード１００からＩ／Ｏデバイス５００に対して実行されるＩ／Ｏ参照アクセスでは、代表のシステムコントローラ３００（ＳＣ０）に対して問い合わせることで、目的のＩ／Ｏデバイス５００の位置を知る工程と、得られたＩ／Ｏデバイス５００（システムコントローラ３００：システムバス２００）に対して実際のＩ／Ｏ要求を実行する工程の２段階を経て、Ｉ／Ｏ要求を実行する。【００８１】
これにより、ＣＰＵノード１００においてメモリインタリーブを行う場合でも、メモリアドレス空間にＩ／Ｏアドレスがマッピングされた複数のＩ／Ｏデバイス５００に対する的確なＩ／Ｏアクセスを実現できる。【００８２】
すなわち、個々のＣＰＵノード１００において、複数のＩ／Ｏデバイス５００の、システムコントローラ３００に対する帰属情報等を記憶するための記憶資源を必要とすることなく、また、当該帰属情報の一貫性の管理等の煩雑な制御を必要とすることなく、モリアドレス空間にＩ／Ｏアドレスがマッピングされた複数のＩ／Ｏデバイス５００に対する的確なＩ／Ｏアクセスを実現できる。【００８３】
なお、図１に例示したＣＰＵノード１００、システムコントローラ３００の実装例を、図１０に示す。
図１０の例では、情報処理システムを構成するＣＰＵノード１００およびシステムコントローラ３００は、１枚以上のシステムボード１０で構成される。【００８４】
システムコントローラ３００は、複数の半導体チップ３０１が、クロスバスイッチ１１等を介して接続されることにより、ひとつの論理的なシステムコントローラ３００（ＳＣｎ）として振舞う。【００８５】
たとえば、図１０において破線の箱でかこまれたＳＣ０が、図１に例示したＳＣ０（システムコントローラ３００）に相当する。
【産業上の利用可能性】
【００８６】
本発明によれば、中央処理装置に接続されるシステムコントローラの構成を複雑化することなく、高いメモリバンド幅を実現して、中央処理装置の処理能力を有効に利用可能にすることができる。【００８７】
また、中央処理装置内の構造や、管理を複雑化することなく、低コストにて、中央処理装置自体がメモリインタリーブを行うことによる処理性能の向上を実現することができる。【００８８】
なお、本発明は、上述の実施の形態に例示した構成に限らず、その趣旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
たとえば、中央処理装置や情報処理システムの構成は、上述の実施の形態に例示したものに限定されない。
【図１】
0004774099.tif 000002
【図２】
0004774099.tif 000003
【図３】
0004774099.tif 000004
【図４】
0004774099.tif 000005
【図５】
0004774099.tif 000006
【図６】
0004774099.tif 000007
【図７】
0004774099.tif 000008
【図８】
0004774099.tif 000009
【図９】
0004774099.tif 000010
【図１０】
0004774099.tif 000011