(57)【特許請求の範囲】
【請求項１】
拡張ユニットと、
前記拡張ユニットにアクセスする機能を有する１以上のアクセス装置と、
を備える拡張記憶装置におけるアクセス装置であって、
マルチコアＣＰＵ又は複数のＣＰＵにより当該アクセス装置に複数のコアが備わるようにし、
第１のコアでは、拡張ユニットアクセス専用ファームウェアが実行され、
第２のコアでは、拡張記憶装置ファームウェアが実行され、
前記拡張ユニットアクセス専用ファームウェアは、前記拡張ユニットにアクセスする処理の少なくとも一部を前記第１のコアに実行させるものであり、
前記拡張記憶装置ファームウェアは、前記第２のコアで実行されるプログラムと前記拡張ユニットアクセス専用ファームウェアとの仲介をする処理を前記第２のコアに実行させるものであることを特徴とするアクセス装置。
【請求項２】
請求項１に記載のアクセス装置であって、
前記拡張記憶装置ファームウェアには、拡張ユニットアクセス処理部と、拡張ユニットアクセス完了割込み処理部と、ＷＡＩＴ再開処理部が含まれ、
前記拡張ユニットアクセス処理部は、前記第２のコアで実行されるプログラムで前記拡張ユニットにアクセスする必要がある時に、前記拡張ユニットアクセス専用ファームウェアを起動させた後に、アクセスを必要とする処理以外の処理を前記第２のコアに実行させるためのものであり、
前記拡張ユニットアクセス完了割込み処理部は、前記拡張ユニットアクセス専用ファームウェアにより起動され、前記拡張ユニットにアクセスした結果を前記第２のコアで実行されるプログラムに渡すためのものであり、
前記ＷＡＩＴ再開処理部は、前記拡張記憶装置ファームウェアのメインループに含まれ、前記拡張ユニットにアクセスした結果を前記第２のコアで実行されるプログラムに渡すためのものであることを特徴とするアクセス装置。
【請求項３】
請求項２に記載のアクセス装置であって、
ローカルメモリと、
インターフェース用回路と、
を更に備え、
前記ローカルメモリには、前記第２のコア専用の専用エリアと前記第１のコアと前記第２のコアに共有される共有エリアが設けられ、
前記専用エリアには、ＷＡＩＴリストが生成され、
前記共有エリアには、要求リストと、結果リストが生成され、
前記拡張ユニットアクセス処理部は、前記要求リストに要素を追加し、追加した要素に状態として「アクセス待ち」を書き込み、また、拡張ユニットアクセスキー番号と書込データとアクセス先情報も書き込み、更に、前記ＷＡＩＴリストに要素を追加し、追加した要素に状態として「ＷＡＩＴ」を書き込み、また、当該拡張ユニットアクセス処理部を呼んだ処理の識別情報と、前記拡張ユニットアクセスキー番号を書き込んだ後に、当該拡張ユニットアクセス処理部を呼んだ処理をＷＡＩＴさせる処理を前記第２のコアに実行させるものであり、
前記拡張ユニットアクセス専用ファームウェアは、
状態が「アクセス待ち」である要素が前記要求リストにある時に、その要素の状態を「完了待ち」にすると共に、その要素に含まれる書込データとアクセス先情報を付随させて、前記インターフェース用回路を介して、前記拡張ユニットにアクセス要求を出す処理と、
状態が「完了待ち」である要素が前記要求リストにあり、更に、前記インターフェース用回路に前記拡張ユニットへのアクセス結果である拡張ユニットデータがある時に、その要素の状態を「完了」にすると共に、前記インターフェース用回路から前記拡張ユニットデータを取得し、状態を「完了」にした要素を前記要求リストから前記結果リストに移し、その要素に前記拡張ユニットデータを含ませた上で、前記拡張ユニットアクセス完了割込み処理部を起動する処理を前記第１のコアに実行させるものであり、
前記拡張ユニットアクセス完了割込み処理部は、前記結果リストの要素から拡張ユニットアクセスキー番号と前記拡張ユニットデータを読み出してから、前記ＷＡＩＴリストに含まれ、前記結果リストの要素から読み出された前記拡張ユニットアクセスキー番号を含む要素の状態を「ＷＡＩＴ」から「再開待ち」にし、前記結果リストの要素から読み出された拡張ユニットデータを前記ＷＡＩＴリストのその要素に含ませる処理を前記第２のコアに実行させるものであり、
前記ＷＡＩＴ再開処理部は、前記ＷＡＩＴリストに状態が「再開待ち」である要素がある時に、その要素に含まれている拡張ユニットデータをその要素に含まれている識別情報を有する処理に渡して、その処理を再開させる処理を前記第２のコアに実行させるものであることを特徴とするアクセス装置。
【請求項４】
請求項２に記載のアクセス装置であって、
ローカルメモリと、
インターフェース用回路と、
を更に備え、
前記ローカルメモリには、前記第２のコア専用の専用エリアと前記第１のコアと前記第２のコアに共有される共有エリアが設けられ、
前記専用エリアには、ＷＡＩＴリストが生成され、
前記共有エリアには、要求リストと、結果リストが生成され、
前記拡張ユニットアクセス処理部は、前記要求リストに要素を追加し、追加した要素に状態として「アクセス待ち」を書き込み、また、拡張ユニットアクセスキー番号とアクセス先情報も書き込み、更に、前記ＷＡＩＴリストに要素を追加し、追加した要素に状態として「ＷＡＩＴ」を書き込み、また、当該拡張ユニットアクセス処理部を呼んだ処理の識別情報と、前記拡張ユニットアクセスキー番号を書き込んだ後に、当該拡張ユニットアクセス処理部を呼んだ処理をＷＡＩＴさせる処理を前記第２のコアに実行させるものであり、
前記拡張ユニットアクセス専用ファームウェアは、
状態が「アクセス待ち」である要素が前記要求リストにある時に、その要素の状態を「完了待ち」にすると共に、その要素に含まれるアクセス先情報を付随させて、前記インターフェース用回路を介して、前記拡張ユニットにアクセス要求を出す処理と、
状態が「完了待ち」である要素が前記要求リストにあり、更に、前記インターフェース用回路に前記拡張ユニットへのアクセス結果である拡張ユニットデータがある時に、その要素の状態を「完了」にすると共に、前記インターフェース用回路から前記拡張ユニットデータを取得し、状態を「完了」にした要素を前記要求リストから前記結果リストに移し、その要素に前記拡張ユニットデータを含ませた上で、前記拡張ユニットアクセス完了割込み処理部を起動する処理を前記第１のコアに実行させるものであり、
前記拡張ユニットアクセス完了割込み処理部は、前記結果リストの要素から拡張ユニットアクセスキー番号と前記拡張ユニットデータを読み出してから、前記ＷＡＩＴリストに含まれ、前記結果リストの要素から読み出された前記拡張ユニットアクセスキー番号を含む要素の状態を「ＷＡＩＴ」から「再開待ち」にし、前記結果リストの要素から読み出された拡張ユニットデータを前記ＷＡＩＴリストのその要素に含ませる処理を前記第２のコアに実行させるものであり、
前記ＷＡＩＴ再開処理部は、前記ＷＡＩＴリストに状態が「再開待ち」である要素がある時に、その要素に含まれている拡張ユニットデータをその要素に含まれている識別情報を有する処理に渡して、その処理を再開させる処理を前記第２のコアに実行させるものであることを特徴とするアクセス装置。
【請求項５】
請求項３又は４に記載のアクセス装置であって、
前記識別情報には、当該処理の再開ポイントを附随させることを特徴とするアクセス装置。
【請求項６】
請求項３乃至５の何れか１に記載のアクセス装置であって、
前記第１のコア及び前記第２のコアでは、コア間通信機能のプログラムも実行され、
前記拡張ユニットアクセス専用ファームウェアは、前記コア間通信機能のプログラムを利用して、前記拡張ユニットアクセス完了割込み処理部を起動する処理を、前記第１のコアに実行させるものであることを特徴とするアクセス装置。
【請求項７】
請求項１乃至６の何れか１に記載のアクセス装置を備えることを特徴とする拡張記憶装置。
【請求項８】
請求項１乃至６の何れか１に記載のアクセス装置における拡張ユニットアクセス専用ファームウェア。
【請求項９】
請求項１乃至６の何れか１に記載のアクセス装置における拡張記憶装置ファームウェア。
【請求項１０】
拡張ユニットと、
前記拡張ユニットにアクセスする機能を有する１以上のアクセス装置と、
を備える拡張記憶装置における前記アクセス装置から前記拡張ユニットへのアクセス方法であって、
前記アクセス装置には、マルチコアＣＰＵ又は複数のＣＰＵにより複数のコアが備わり、
前記アクセス方法は、
第１のコアが、拡張ユニットアクセス専用ファームウェアを実行することと、
第２のコアが、拡張記憶装置ファームウェアを実行することを含むものであり、
前記拡張ユニットアクセス専用ファームウェアは、前記拡張ユニットにアクセスする処理の少なくとも一部を前記第１のコアに実行させるものであり、
前記拡張記憶装置ファームウェアは、前記第２のコアで実行されるプログラムと前記拡張ユニットアクセス専用ファームウェアとの仲介をする処理を前記第２のコアに実行させるものであることを特徴とするアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置や入出力装置等にアクセスするためのアクセス装置及びアクセス方法に関する。
【背景技術】
【０００２】
拡張記憶装置（ＥＭＵ(Extended Memory Unit)）は高速メモリの拡張ユニット（ＥＵ(Extended Unit)）を持ち、接続された計算機（ホスト）の主記憶装置と外部二次記憶装置との記憶階層のギャップを埋めることができる装置であり、メインフレーム等のスケーラビリティや可用性の向上のために複数のホストを互いに結合したクラスタシステムにおいて、複数のホストの間で高速なデータ共有を実現する手段として主に利用されている。ＥＭＵの制御にはＥＭＵ内部に設けられたＣＰＵ(Central Processing Unit)で動作するＥＭＵＦＷ(Extended Memory Unit Firmware)が用いられる。ＥＭＵＦＷはホストがＥＵをアクセスする際の排他制御やＥＵの構成制御といった制御を主に行う。
【０００３】
図１に通常のＥＭＵの第一の構成を示す。図１の通常のＥＭＵ（７１）はＥＵ（７２）とＥＭＵＦＷ（７３１）が動作するＣＰＵ（７３）及びホストと接続するためのホスト台数分のホスト接続Ｐｏｒｔ（７４０，７４１，…７４ｎ）を含む。本構成ではＣＰＵ（７３）がＥＵ（７２）や全てのホスト接続Ｐｏｒｔ（７４０，７４１，…７４ｎ）と直接接続されているため、ＣＰＵ（７３）の障害が局所化できずにＥＭＵ（７１）の全体の障害につながってしまうという課題があった。
【０００４】
そこで、この課題を解決するために図２に示す通常のＥＭＵの第二の構成が発明された。図２ではＥＭＵ８１はＥＵ８２と複数のＦＷ用プラットフォームＨＷ（ファームウェア用プラットフォームハードウェア）＃０〜＃ｎ（符号８３０，８３１，…，８３ｎ）を含む。ＦＷ用プラットフォームＨＷ＃０〜＃ｎ（符号８３０，８３１，…８３ｎ）は、それぞれ、ＩＦ用ＨＷ（インターフェース用ハードウェア）（８３０１，８３１１，…，８３ｎ１）、ＥＭＵＦＷ（８３０２１，８３１２１，…，８３ｎ２１）が動作するＣＰＵ（８３０２，８３１２，…，８３ｎ２）、ＣＰＵ（８３０２，８３１２，…，８３ｎ２）から使用するローカルメモリ（Ｌｏｃａｌ  Ｍｅｍｏｒｙ）（以下、ＬＭと記載）であるＬＭ（８３０３，８３１３，…８３ｎ３）、ホスト接続ポート（Ｐｏｒｔ）（８３０４，８３１４，…，８３ｎ４）を含む。ＩＦ用ＨＷ（８３０１，８３１１，…，８３ｎ１）はＣＰＵ（８３０２，８３１２，…，８３ｎ２）とＥＵ２のインターフェースとなるハードウェアである。ＦＷ用プラットフォームＨＷ＃０〜＃ｎ（８３０，８３１，…８３ｎ）はそれぞれが独立しているが、内部のＣＰＵ（８３０２，８３１２，…，８３ｎ２）上で動作するＥＭＵＦＷ（８３０２１，８３１２１，…，８３ｎ２１）はＥＵ８２によってデータを共有することで協調動作をすることができる。
【０００５】
なお、本願発明に関連した発明が特許文献１乃至３に記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１９６２５１号公報
【特許文献２】特開２００３−２７１５７３号公報
【特許文献３】特開平０５−２２５１５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
図２の構成ではＥＭＵＦＷ（８３０２１，８３１２１，…，８３ｎ２１）が動作するＣＰＵ（８３０２，８３１２，…，８３ｎ２）をＥＵ（２）から切り離し、ＣＰＵ（８３０２，８３１２，…，８３ｎ２）を複数動作させ負荷分散させることで、ＣＰＵ障害を当該ＣＰＵが動作しているＦＷ用プラットフォームＨＷに局所化することができ、図１の構成での課題を解決することができた。しかし、図２の構成ではＣＰＵ（８３０２，８３１２，…，８３ｎ２）をＥＵ（２）から切り離したため、ＥＭＵＦＷ（８３０２１，８３１２１，…，８３ｎ２１）からＥＵ（２）へのアクセスにＩＦ用ＨＷ（８３０１，８３１１，…，８３ｎ１）を介在させる必要があり、ＨＷが介在することでＥＭＵＦＷ（８３０２１，８３１２１，…，８３ｎ２１）の処理にオーバーヘッドが発生してしまうという課題があった。
【０００８】
そこで、本発明は、他の処理から見たときのアクセス処理によるオーバーヘッドを削減することを可能とするアクセス装置及びアクセス方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の観点によれば、拡張ユニットと、前記拡張ユニットにアクセスする機能を有する１以上のアクセス装置と、を備える拡張記憶装置におけるアクセス装置であって、マルチコアＣＰＵ又は複数のＣＰＵにより当該アクセス装置に複数のコアが備わるようにし、第１のコアでは、拡張ユニットアクセス専用ファームウェアが実行され、第２のコアでは、拡張記憶装置ファームウェアが実行され、前記拡張ユニットアクセス専用ファームウェアは、前記拡張ユニットにアクセスする処理の少なくとも一部を前記第１のコアに実行させるものであり、前記拡張記憶装置ファームウェアは、前記第２のコアで実行されるプログラムと前記拡張ユニットアクセス専用ファームウェアとの仲介をする処理を前記第２のコアに実行させるものであることを特徴とするアクセス装置が提供される。
【００１０】
また、本発明の第２の観点によれば、拡張ユニットと、前記拡張ユニットにアクセスする機能を有する１以上のアクセス装置と、を備える拡張記憶装置における前記アクセス装置から前記拡張ユニットへのアクセス方法であって、前記アクセス装置には、マルチコアＣＰＵ又は複数のＣＰＵにより複数のコアが備わり、前記アクセス方法は、第１のコアが、拡張ユニットアクセス専用ファームウェアを実行することと、第２のコアが、拡張記憶装置ファームウェアを実行することを含むものであり、前記拡張ユニットアクセス専用ファームウェアは、前記拡張ユニットにアクセスする処理の少なくとも一部を前記第１のコアに実行させるものであり、前記拡張記憶装置ファームウェアは、前記第２のコアで実行されるプログラムと前記拡張ユニットアクセス専用ファームウェアとの仲介をする処理を前記第２のコアに実行させるものであることを特徴とするアクセス方法が提供される。
【発明の効果】
【００１１】
本発明によれば、他の処理から見たときのアクセス処理によるオーバーヘッドを削減することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】通常のＥＭＵの第一の構成を示す図である。
【図２】通常のＥＭＵの第二の構成を示す図である。
【図３】本発明の実施形態によるＥＭＵの構成を示す図である。
【図４】本発明の実施例の構成を示す図である。
【図５】本発明の実施例で用いるリストのデータ構造を示す図である。
【図６】本発明の実施例のＥＭＵＦＷのメインループとＷＡＩＴ再開処理のフローチャートである。
【図７】本発明の実施例のＥＵアクセス時のフローチャート（その１）である。
【図８】本発明の実施例のＥＵアクセス時のフローチャート（その２）である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。
【００１４】
図３に本発明の実施形態におけるＥＭＵの構成を示す。図２の通常の構成と比較して、ＦＷ用プラットフォームＨＷ＃０〜＃ｎ（３０，３１，…３ｎ）の内部に差分がある。ＦＷ用プラットフォームＨＷ＃０〜＃ｎ（３０，３１，…３ｎ）の各々は同様であるため、以降はＦＷ用プラットフォームＨＷ＃ｎ（３ｎ）のみについて説明し、ＦＷ用プラットフォームＨＷ＃ｎ（３ｎ）以外については説明を省略する。ＥＭＵＦＷ（３ｎ２３）を実行するＣＰＵとしてマルチＣｏｒｅ  ＣＰＵ（３ｎ２）を用いる。マルチＣｏｒｅ  ＣＰＵ（３ｎ２）はＣｏｒｅ＃０（３ｎ２１）、Ｃｏｒｅ＃１（３ｎ２４）を含み、各ＣｏｒｅはＣｏｒｅ間通信機能（３ｎ２２、３ｎ２５）を有する。なお、図３ではマルチＣｏｒｅ  ＣＰＵ（３ｎ２）としてＣｏｒｅの数が２つのものを記載しているが、本発明では２つ以上のＣｏｒｅがあれば良く、Ｃｏｒｅの数を２つに限定するものではない。一つのＣｏｒｅ上でＥＭＵＦＷ（３ｎ２３）を、もう一方のＣｏｒｅでＥＵアクセス専用ＦＷ（３ｎ２６）を動作させる。ここでは説明のため、Ｃｏｒｅ＃０（３ｎ２１）にＥＭＵＦＷ（３ｎ２３）、Ｃｏｒｅ＃１（３ｎ２４）にＥＵアクセス専用ＦＷ（３ｎ２６）を動作させるものとする。ＬＭ（３ｎ３）にはマルチＣｏｒｅ  ＣＰＵ（３ｎ２）の各Ｃｏｒｅ（Ｃｏｒｅ＃０（３ｎ２１），  Ｃｏｒｅ＃１（３ｎ２４））間でデータの共有が可能な領域である、共有メモリ（３ｎ３１）を設ける。
【００１５】
以上の構成で、上述した通常の課題を解決する動作について以下で説明する。マルチＣｏｒｅ  ＣＰＵ（３ｎ２）のＣｏｒｅ＃０（３ｎ２１）上で動作するＥＭＵＦＷ（３ｎ２３）はＥＵアクセスの要求をＬＭ（３ｎ３）の共有メモリ（３ｎ３１）に書き込む。Ｃｏｒｅ＃１（３ｎ２４）上で動作するＥＵアクセス専用ＦＷ（３ｎ２６）は共有メモリ（３ｎ３１）から前記要求を取得し、ＩＦ用ＨＷ（３ｎ１）に対してＥＵアクセスを要求する。ＩＦ用ＨＷ（３ｎ１）はＥＵアクセスを実施する。ＥＵアクセス専用ＦＷ（３ｎ２６）はＥＵアクセスが完了するのを待つ（例えば、ＥＵアクセス専用ＦＷ（３ｎ２６）はポーリングによりＩＦ用ＨＷ（３ｎ１）からＥＵアクセス完了を知ることができる）。ＥＵアクセスが完了すると、ＥＵアクセス専用ＦＷ（３ｎ２６）はＩＦ用ＨＷ（３ｎ１）からアクセス結果を取得して共有メモリ（３ｎ３１）に格納し、ｃｏｒｅ間通信機能（３ｎ２５）によってＣｏｒｅ＃１（３ｎ２４）からＣｏｒｅ＃０（３ｎ２１）にＣｏｒｅ間通信を行い、ＥＵアクセス完了をＥＭＵＦＷ（３ｎ２３）に通知する。通知を受けたＥＭＵＦＷ（３ｎ２３）は共有メモリ（３ｎ３１）からアクセス結果を取得する。以上の動作により、ＥＵアクセスをＣｏｒｅ＃１（３ｎ２４）のＥＵアクセス専用ＦＷ（３ｎ２６）に行わせ、共有メモリ（３ｎ３１）とＣｏｒｅ間通信を介して、Ｃｏｒｅ＃０（３ｎ２１）のＥＭＵＦＷ（３ｎ２３）がアクセス結果を取得することで、課題であったＥＵアクセス時のＥＭＵＦＷ（３ｎ２３）の処理のオーバーヘッドを削減することができる。
【００１６】
図４に本発明の実施例の構成を示す。図４によれば、本発明の実施例のＥＭＵ（１）はＥＵ（２）と複数のＩＯＣ(Input Output Controller)（ＩＯＣ＃０（３０），ＩＯＣ＃１（３１），…，ＩＯＣ＃ｎ（３ｎ））を含む。各ＩＯＣ（ＩＯＣ＃０（３０），ＩＯＣ＃１（３１），…，ＩＯＣ＃ｎ（３ｎ））の構成は同様であるため、以降はＩＯＣ＃ｎ（３ｎ）についてのみ説明を行い、ＩＯＣ＃ｎ（３ｎ）以外については説明を省略する。なお、ＩＯＣは、ＦＷ用プラットフォームＨＷを改良したものとして機能するものである。
【００１７】
ＩＯＣ＃ｎ（３ｎ）は前述した図３のＦＷ用プラットフォームＨＷ＃ｎ（３ｎ）に対応するものであって、各々のＩＯＣでＥＭＵＦＷが動作する。ＥＵ（２）にはＵＢＡＲエリア(Under Base address Register Area)（２１）が含まれる。このエリアは各ＩＯＣ上で動作するＥＭＵＦＷ間で共有するためのデータを格納するエリアであり、このエリアのデータにアクセスすることで、複数のＩＯＣのＥＭＵＦＷは協調動作を行うことができる。
【００１８】
次にＩＯＣ＃ｎ（３ｎ）内の構成について説明する。ＩＯＣ＃ｎ（３ｎ）はＩＦ用ＬＳＩ（Interface用Large Scale Integrated Circuit）（３ｎ１）、マルチＣｏｒｅ  ＣＰＵ（３ｎ２）、ＬＭ（３ｎ３）、ホスト接続Ｐｏｒｔ（３ｎ４）を含む。
【００１９】
ＩＦ用ＬＳＩ（３ｎ１）は図３のＩＦ用ＨＷ（３ｎ１）に対応するものであって、ＥＵアクセス機能（３ｎ１１）を有する。ＥＵアクセス機能（３ｎ１１）は制御レジスタを介して使用することができるもので、制御レジスタにリクエストを書くことでＥＵアクセスを実施し、アクセス完了後にアクセス結果が制御レジスタ上に反映される。この制御レジスタを参照することで、ＥＭＵＦＷ（３ｎ２３）はＥＵアクセスの結果（アクセスの成功／失敗や読み出しデータ）を取得することができる。
【００２０】
マルチＣｏｒｅ  ＣＰＵ（３ｎ２）はＣｏｒｅ＃０（３ｎ２１）とＣｏｒｅ＃１（３ｎ２４）の２つのＣｏｒｅを含むＣＰＵである。両ＣｏｒｅにはＣｏｒｅ間通信機能（３ｎ２２，３ｎ２５）を有している。このＣｏｒｅ間通信機能（３ｎ２２，３ｎ２５）により、各Ｃｏｒｅはもう一方のＣｏｒｅに対して通信を行うことが可能である。この通信は通信元のＣｏｒｅから通信先のＣｏｒｅに割り込みを発生させ、割り込みを受信した通信先のＣｏｒｅの割り込み処理で通信データを処理することで行われる。Ｃｏｒｅ＃０（３ｎ２１）にＥＭＵＦＷ（３ｎ２３）を動作させ、Ｃｏｒｅ＃１（３ｎ２４）にＥＵアクセス専用ＦＷ（３ｎ２６）を動作させる。
【００２１】
ＬＭ（３ｎ３）はＣｏｒｅ＃０専用メモリ（３ｎ３１）、Ｃｏｒｅ＃１専用メモリ（３ｎ３３）、共有メモリ（３ｎ３４）を含む。Ｃｏｒｅ＃０専用メモリ（３ｎ３１）はＣｏｒｅ＃０（３ｎ２１）上で動作するＥＭＵＦＷ（３ｎ２３）からのみアクセス可能な領域であり、ＷＡＩＴリスト（３ｎ３２）を有している。ＷＡＩＴリスト（３ｎ３２）については後述する。Ｃｏｒｅ＃１専用メモリ（３ｎ３３）はＣｏｒｅ＃１（３ｎ２４）上で動作するＥＵアクセス専用ＦＷ（３ｎ２６）からのみアクセス可能な領域である。共有メモリ（３ｎ３４）はＣｏｒｅ間で共有可能なメモリ領域であり、ＥＭＵＦＷ（３ｎ２３）、ＥＵアクセス専用ＦＷ（３ｎ２６）の両者からアクセス可能である。共有メモリ（３ｎ３４）は要求リスト（３ｎ３５）、結果リスト（３ｎ３６）を含む。両リストについては後述する。
【００２２】
ホスト接続Ｐｏｒｔ（３ｎ４）はホストと接続しＩＦを実現するＰｏｒｔであり、本Ｐｏｒｔを介してホストからの要求を受信したり、応答を返したりすることが可能である。本実施例ではホスト接続Ｐｏｒｔは各ＩＯＣに１つあるため、ホストの台数によりＩＯＣの数が定まる。
【００２３】
図５に本発明の実施例で用いる各リストのデータ構造について示す。本実施例で用いるリストには上述したＣｏｒｅ＃０専用メモリ（３ｎ３１）内のＷＡＩＴリスト（３ｎ３２）、共有メモリ（３ｎ３４）内の要求リスト（３ｎ３５）、結果リスト（３ｎ３６）がある。ＥＭＵＦＷ（３ｎ２３）はホストからの通信、他のＥＭＵＦＷからの通信、障害といった各要因の発生に従って、発生した要因に対応した処理を実行する。
【００２４】
ＷＡＩＴリスト（３ｎ３２）はＥＭＵＦＷ（３ｎ２３）が、ある要因の処理でＥＵ（２）のＵＢＡＲエリア（２１）にアクセスする際に、ＥＵ（２）のＵＢＡＲエリア（２１）へのアクセスが完了するまで実行中の当該要因の処理をＷＡＩＴ状態にして待ち合わせ、別の要因の処理を実行し、アクセス完了後に前記ある要因の処理を再開するために使用するリストである。
【００２５】
ＷＡＩＴリストの各要素には処理ＩＤ、再開ｐｏｉｎｔ、状態、ＥＵアクセスキー番号、ＥＵデータの構成メンバーを持つ。処理ＩＤはＥＵアクセス処理を呼んだ要因毎の各処理を区別するためのＩＤであり、「ホスト通信要因処理＝０，他ＥＭＵＦＷからの通信要因処理＝１，…」のように定義される。再開ｐｏｉｎｔはＷＡＩＴ状態にある要因処理を再開させる際に、当該処理のどこから再開するかを指定するデータである。状態にはＷＡＩＴと再開待ちがあり、それぞれの状態に移行する際に設定する。ＥＵアクセスキー番号はＥＵ（２）のＵＢＡＲエリア（２１）にアクセス要求を出す際にＥＭＵＦＷ（３ｎ２３）が指定する番号であり、アクセス要求を一意に識別するためのものである。ＥＵデータはＥＵ（２）のＵＢＡＲエリア（２１）へのアクセスが完了した際に、アクセス結果のデータを格納するためのものであり、再開する要因処理にアクセス結果のデータを渡すために使用する。アクセスが書込みであれば、ＥＵデータは、アクセスの成功／失敗を示すデータであり、アクセスが読出しであれば、ＥＵデータは、アクセスの成功／失敗を示すデータと読み出したデータである。
【００２６】
次に要求リスト（３ｎ３５）、結果リスト（３ｎ３６）について説明する。要求リスト（３ｎ３５）はＥＭＵＦＷ（３ｎ２３）がＥＵ（２）のＵＢＡＲエリア（２１）へのアクセスをＥＵアクセス専用ＦＷ（３ｎ２６）に要求する際に使用するリストであり、結果リスト（３ｎ３６）はアクセス結果を格納するリストである。要求リスト（３ｎ３５）、結果リスト（３ｎ３６）の要素が持つ構成メンバーは同一であり、結果リスト（３ｎ３６）はＥＵ（２）のＵＢＡＲエリア（２１）へのアクセス完了時にＥＵアクセス専用ＦＷ（３ｎ２６）が完了した要求リストの要素を要求リスト（３ｎ３５）から外し、結果リスト（３ｎ３６）に追加し、アクセス結果を格納することで作成される。
【００２７】
要求リスト及び結果リストの各要素はＥＵアクセスキー番号、アクセス先アドレス、アクセス種別、サイズ、ＥＵデータ、状態、結果の構成メンバーを持つ。ＥＵアクセスキー番号はＷＡＩＴリスト（３ｎ３２）のものと同様のため、説明を省略する。アクセス先アドレスはアクセスするＥＵ（２）のＵＢＡＲエリア（２１）のアドレスを指定し、アクセス種別はｒｅａｄかｗｒｉｔｅかを指定し、サイズはアクセスするデータサイズを指定する。ＥＵデータはアクセス種別がｗｒｉｔｅの場合はＥＵ（２）のＵＢＡＲエリア（２１）に書き込むデータを、ｒｅａｄの場合はＥＵ（２）のＵＢＡＲエリア（２１）から読み出したデータを格納する。状態はアクセス待ち、完了待ち、完了がある。結果にはＥＵ（２）のＵＢＡＲエリア（２１）へのアクセスの結果（ＯＫ／ＮＧ）を格納する。
【００２８】
本発明の実施例の動作について、図面を用いて詳細に説明する。
【００２９】
図６にＥＭＵＦＷ（３ｎ２３）の主処理であるメインループのフローチャートを示す。また、図７、図８にＥＭＵＦＷ（３ｎ２３）からＥＵ（２）にアクセスする際のフローチャートを示す。
【００３０】
図６に示すようにＥＭＵＦＷ（３ｎ２３）は、メインループではホスト通信要因、他のＥＭＵＦＷ通信要因、障害処理要因、ＷＡＩＴ要因の各要因が発生しているかをチェックし（図６のステップＡ１、Ａ３、Ａ５、Ａ７）、発生している場合に各要因に対応した処理（図６のステップＡ２、Ａ４、Ａ６、Ａ８）を行い、この要因の検出と発生した要因に対応した処理を繰り返す。
【００３１】
次にＷＡＩＴ要因に対応した処理の詳細を説明する。図６のステップＡ７のＷＡＩＴ要因の検出において、ＥＭＵＦＷ３ｎ２３はＷＡＩＴリスト（３ｎ３２）に要素があれば、要因ありと判断し（図６のステップＡ７でＹｅｓのケース）、ＷＡＩＴ再開処理（図６のステップＡ８）を実行する。ＷＡＩＴ再開処理の詳細のフローチャートを図６の右側の吹出しに示す。ＷＡＩＴ再開処理で、ＥＭＵＦＷ（３ｎ２３）はＷＡＩＴリスト（３ｎ３２）の要素を読み出し（図６のステップＢ１）、状態が再開待ちかどうかをチェックする（図６のステップＢ２）。状態が再開待ちでない場合は全要素をチェックしたかを確認し（図６のステップＢ５）、全要素チェック済みの場合は再開すべき処理がなかったとして、メインループに戻る。ＷＡＩＴリスト（３ｎ３２）にまだ確認未の要素がある場合は次の要素にチェック対象を移し（図６のステップＢ６）、状態が再開待ちになっている要素があるかを探す。状態が再開待ちの要素があった場合（図６のステップＢ２でＹｅｓのケース）、処理ＩＤに対応する処理を再開ｐｏｉｎｔから実行する。その際、要素内のＥＵデータをその処理に渡すことで、ＥＵ（２）のＵＢＡＲエリア（２１）へのアクセスで取得したデータを再開する処理に渡す（図６のステップＢ３）。再開した処理が終了したらＷＡＩＴリスト（３ｎ３２）から当該要素を削除し（図６のステップＢ４）、メインループに戻る。以上により、メインループのＷＡＩＴ再開処理により、ＷＡＩＴリスト（３ｎ３２）中の状態が再開待ちになっている要素を再開させることができる。
【００３２】
次にＥＭＵＦＷ（３ｎ２３）がある要因の処理を実行中（ここでは説明のため、ホスト通信処理を実行中とする）にＥＵ（２）のＵＢＡＲエリア（２１）にアクセスを行う場合の動作について図７、図８のフローチャートを用いて説明する。
【００３３】
図７、図８の処理は、図６に示すホスト通信処理Ａ２、他ＥＭＵＦＷ通信処理Ａ４又は障害処理Ａ６の中から起動される。
【００３４】
ＥＭＵＦＷ（３ｎ２３）は要求リスト（３ｎ３５）の要素の各構成メンバーにＥＵ（２）のＵＢＡＲエリア（２１）へのアクセス内容に従って書き込みを行い、ＥＵ（２）のＵＢＡＲエリア（２１）へのアクセスをＥＵアクセス専用ＦＷ（３ｎ２６）に要求する（図７のステップＣ１）。ここで各要素の構成メンバーとして、ＥＵアクセスキー番号（アクセス毎にユニークな番号）、アクセス先アドレス、アクセス種別、サイズ、データ（アクセス内容に応じた内容）、状態（アクセス待ち）が設定される。ＥＭＵＦＷ（３ｎ２３）はＷＡＩＴリスト（３ｎ３２）に要素を追加し、その要素に書き込みを行い、実行中の処理（例えば、ホスト通信処理）をＷＡＩＴ状態にして（図７のステップＣ２）、メインループに戻る。ここでＷＡＩＴリスト（３ｎ３２）に要素を追加するが、追加する要素には処理ＩＤとして０（ホスト通信処理の場合）、再開ｐｏｉｎｔとして中断した次の処理を指すデータに、状態としてＷＡＩＴに、ＥＵアクセスキー番号として図７のステップＣ１で要求リスト（３ｎ３５）の要素に設定したＥＵアクセスキー番号が設定される。メインループに戻ったＥＭＵＦＷ（３ｎ２３）はメインループの処理を継続する。
【００３５】
ＥＵアクセス専用ＦＷ（３ｎ２６）は要求リストから要素を読み出し（図７のステップＤ１）、状態がアクセス待ちの要求かどうかをチェックする（図７のステップＤ２）。状態がアクセス待ちの要素であった場合（図７のステップＤ２でＹｅｓのケース）、ＥＵデータとしての書込データ（アクセスが書込みである場合のみ）とアクセス先アドレスとアクセス種別とサイズを附随させてＩＦ用ＬＳＩ（３ｎ１）のＥＵアクセス機能（３ｎ１１）の制御レジスタに書き込みを行い、アクセス要求を行う（図７のステップＤ３）。
【００３６】
要求を受けたＩＦ用ＬＳＩ（３ｎ１）はＥＵ（２）に対してアクセスを実施する（図７のステップＥ１）。アクセスされたＥＵ（２）は結果を返す（図７のステップＦ１，Ｆ２）が、アクセスが完了し結果が出力されるまでは時間を要する。
【００３７】
ＥＵアクセス専用ＦＷ（３ｎ２６）はＥＵアクセスの完了を確認するため、要求リストの当該要素の状態をアクセス待ちから完了待ちに設定し、ＩＦ用ＬＳＩ（３ｎ１）のＥＵアクセス機能（３ｎ１１）の制御レジスタをみることによりＥＵアクセスが完了したかをチェックする、完了待ちのポーリングを行う（図７のステップＤ５）。ポーリングの結果、ＥＵアクセスが完了していない場合（図７のステップＤ６でＮｏのケース）は要求リスト（３ｎ３５）の次の要素に移り、要求リストの走査を繰り返す（図７のステップＤ７）。
【００３８】
そして再び対象が当該要素になった時には状態が完了待ちになっているため、完了待ちの要求と判断され（図７のステップＤ４でＹｅｓのケース）、再び完了待ちのポーリングが行われる（図７のステップＤ５）。ここで、ＥＵアクセスが完了したとすると、ＥＵ（２）は結果をＩＦ用ＬＳＩ（３ｎ１）に対して結果を返し（図７のステップＦ２）、ＩＦ用ＬＳＩ（３ｎ１）は受信したアクセス結果をＥＵアクセス機能（３ｎ１１）の制御レジスタに反映する（図７のステップＥ２）。アクセスが書込みである場合には、制御レジスタには、書込み結果（ＯＫ／ＮＧ）が書き込まれ、アクセスが読出しである場合には、読出し結果（ＯＫ／ＮＧ）と読出しデータが書き込まれる。ＥＵアクセス専用ＦＷ（３ｎ２６）は完了待ちのポーリング（図７のステップＤ５）し、アクセス完了を検出する（図７のステップＤ６でＹｅｓのケース）。
【００３９】
アクセス完了を検出したＥＵアクセス専用ＦＷ（３ｎ２６）はＩＦ用ＬＳＩ（３ｎ１）のＥＵアクセス機能（３ｎ１１）の制御レジスタからアクセス結果を取得し（図７のステップＤ８）、要求リスト（３ｎ３５）の当該要素を結果リスト（３ｎ３６）に移し、アクセス結果を当該要素のＥＵデータ、結果（ＯＫ／ＮＧ）に反映して状態を完了待ちから完了に設定する（図７のステップＤ９）。
【００４０】
そして、ＥＵアクセス専用ＦＷ（３ｎ２６）はＣｏｒｅ間通信機能（３ｎ２５）を用いて、ＥＭＵＦＷ（３ｎ２３）にＣｏｒｅ間通信でＥＵアクセス完了を通知する（図７のステップＤ１０）。その後、ＥＵアクセス専用ＦＷ（３ｎ２６）は図７のステップＤ１に戻り、要求リスト（３ｎ３５）を走査し、ＥＵアクセスと完了待ちのポーリングを行う処理を繰り返す。
【００４１】
Ｃｏｒｅ間通信を受信したＥＭＵＦＷ（３ｎ２３）は割込み処理が起動され、ＥＵアクセス完了の処理を以下で行う（図７、図８の状態Ａ）。ＥＭＵＦＷ（３ｎ２３）は結果リスト（３ｎ３６）から要素を読み出し（図８のステップＣ３）、当該要素のＥＵアクセスキーと一致するＥＵアクセスキーを持つ要素をＷＡＩＴリスト（３ｎ３２）から捜し、捜した要素（すなわち、完了したＥＵアクセスを行った処理の要素）をＷＡＩＴリストから取得する（図８のステップＣ４）。
【００４２】
ＥＭＵＦＷ（３ｎ２３）はＷＡＩＴ状態になっていて、ＥＵアクセスが完了した当該処理を再開するため、ＷＡＩＴリストの当該要素の状態をＷＡＩＴから再開待ちに変え、ＥＵアクセスで取得したデータを結果リストの当該要素から読み出し、ＷＡＩＴリストの当該要素のＥＵデータに格納する（図８のステップＣ５）。
【００４３】
そして、ＥＭＵＦＷ（３ｎ２３）は結果リスト（３ｎ３６）の当該要素を削除し（図８のステップＣ６）、メインループに戻る。メインループに戻ったＥＭＵＦＷ（３ｎ２３）は前述のＷＡＩＴ再開処理によりＷＡＩＴリスト（３ｎ２３）からＥＵアクセス完了の当該要素の処理（ホスト通信処理）を再開させる。再開されたＥＵアクセスを行った処理（ホスト通信処理）はＷＡＩＴリストの要素から取得したＥＵアクセス結果を用いて処理を継続する。
【００４４】
以上の動作により、課題であったＥＵアクセス時のＥＭＵＦＷの処理のオーバーヘッドを削減することができる。
【００４５】
なお、上記の説明では、ＥＵアクセス処理では、ＥＵ（２）のＵＢＡＲエリア（２１）にアクセスする例を用いたが、ＥＵ（２）の他のエリア（オペレーティングシステムやユーザが利用するエリア）にも本発明を適用することができる。
【００４６】
また、上記の説明では、マルチコアＣＰＵを用いるとしたが、シングルコアＣＰＵを複数設け、複数のシングルＣＰＵのコアを用いてもよい。
【００４７】
本実施形態の第一の効果は、ＥＭＵの耐故障性の向上のためにＥＭＵＦＷが動作するＣＰＵとＥＵを切り離し、ＣＰＵを複数動作させ負荷分散させる構成をとった場合に、課題となっていたＥＵアクセス時のＥＭＵＦＷの処理のオーバーヘッドを削減することができる点である。その理由はマルチＣｏｒｅ  ＣＰＵを用いて、ＥＭＵＦＷを実行するＣｏｒｅとは別のＣｏｒｅでＥＵアクセス専用ＦＷを動作させ、ＥＵアクセスをＥＵアクセス専用ＦＷに行わせ、共有メモリとＣｏｒｅ間通信を介して、ＥＭＵＦＷがアクセス結果を取得することで前記オーバーヘッドを削減できるためである。
【００４８】
第二の効果は第一の効果を低コストで実現できることである。その理由は、本発明はマルチＣｏｒｅ  ＣＰＵ以外の特別なＨＷを使用することなく実施することが可能なためである。マルチＣｏｒｅ  ＣＰＵは現在のＣＰＵの市場で主流となってきており、低コストで入手することができる。また、本実施形態はＣｏｒｅの有効活用の観点でも有効である。マルチＣｏｒｅ  ＣＰＵが主流になってきた現在、全Ｃｏｒｅを使用しないケースにおいてもマルチＣｏｒｅ  ＣＰＵを採用する機会も出てきた。ＥＭＵＦＷのような高信頼性が要求されるＦＷについては、並列処理による処理の複雑化による品質低下を避けるためマルチＣｏｒｅ  ＣＰＵを採用しても、あえて１つのＣｏｒｅしか使用しない場合があるが、未使用Ｃｏｒｅができてしまい不経済となってしまう。本実施形態ではＥＭＵＦＷの処理そのものは並列化せずにＥＵアクセスのみで他Ｃｏｒｅを使用するため、ＥＭＵＦＷの処理を複雑化させずにマルチＣｏｒｅ  ＣＰＵのＣｏｒｅを有効活用することができる。
【００４９】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００５０】
（付記１）
拡張ユニットと、
前記拡張ユニットにアクセスする機能を有する１以上のアクセス装置と、
を備える拡張記憶装置におけるアクセス装置であって、
マルチコアＣＰＵ又は複数のＣＰＵにより当該アクセス装置に複数のコアが備わるようにし、
第１のコアでは、拡張ユニットアクセス専用ファームウェアが実行され、
第２のコアでは、拡張記憶装置ファームウェアが実行され、
前記拡張ユニットアクセス専用ファームウェアは、前記拡張ユニットにアクセスする処理の少なくとも一部を前記第１のコアに実行させるものであり、
前記拡張記憶装置ファームウェアは、前記第２のコアで実行されるプログラムと前記拡張ユニットアクセス専用ファームウェアとの仲介をする処理を前記第２のコアに実行させるものであることを特徴とするアクセス装置。
【００５１】
（付記２）
付記１に記載のアクセス装置であって、
前記拡張記憶装置ファームウェアには、拡張ユニットアクセス処理部と、拡張ユニットアクセス完了割込み処理部と、ＷＡＩＴ再開処理部が含まれ、
前記拡張ユニットアクセス処理部は、前記第２のコアで実行されるプログラムで前記拡張ユニットにアクセスする必要がある時に、前記拡張ユニットアクセス専用ファームウェアを起動させた後に、アクセスを必要とする処理以外の処理を前記第２のコアに実行させるためのものであり、
前記拡張ユニットアクセス完了割込み処理部は、前記拡張ユニットアクセス専用ファームウェアにより起動され、前記拡張ユニットにアクセスした結果を前記第２のコアで実行されるプログラムに渡すためのものであり、
前記ＷＡＩＴ再開処理部は、前記第２のコアで実行されるプログラムのメインループに含まれ、前記拡張ユニットにアクセスした結果を前記第２のコアで実行されるプログラムに渡すためのものであることを特徴とするアクセス装置。
【００５２】
（付記３）
付記２に記載のアクセス装置であって、
ローカルメモリと、
インターフェース用回路と、
を更に備え、
前記ローカルメモリには、前記第２のコア専用の専用エリアと前記第１のコアと前記第２のコアに共有される共有エリアが設けられ、
前記専用エリアには、ＷＡＩＴリストが生成され、
前記共有エリアには、要求リストと、結果リストが生成され、
前記拡張ユニットアクセス処理部は、前記要求リストに要素を追加し、追加した要素に状態として「アクセス待ち」を書き込み、また、拡張ユニットアクセスキー番号と書込データとアクセス先情報も書き込み、更に、前記ＷＡＩＴリストに要素を追加し、追加した要素に状態として「ＷＡＩＴ」を書き込み、また、当該拡張ユニットアクセス処理部を呼んだ処理の識別情報と、前記拡張ユニットアクセスキー番号を書き込んだ後に、当該拡張ユニットアクセス処理部を呼んだ処理をＷＡＩＴさせる処理を前記第２のコアに実行させるものであり、
前記拡張ユニットアクセス専用ファームウェアは、
状態が「アクセス待ち」である要素が前記要求リストにある時に、その要素の状態を「完了待ち」にすると共に、その要素に含まれる書込データとアクセス先情報を付随させて、前記インターフェース用回路を介して、前記拡張ユニットにアクセス要求を出す処理と、
状態が「完了待ち」である要素が前記要求リストにあり、更に、前記インターフェース用回路に前記拡張ユニットへのアクセス結果である拡張ユニットデータがある時に、その要素の状態を「完了」にすると共に、前記インターフェース用回路から前記拡張ユニットデータを取得し、状態を「完了」にした要素を前記要求リストから前記結果リストに移し、その要素に前記拡張ユニットデータを含ませた上で、前記拡張ユニット完了割込み処理部を起動する処理を前記第１のコアに実行させるものであり、
前記拡張ユニットアクセス完了割込み処理部は、前記結果リストの要素から拡張ユニットアクセスキー番号と前記拡張ユニットデータを読み出してから、前記ＷＡＩＴリストに含まれ、前記結果リストの要素から読み出された前記拡張ユニットアクセスキー番号を含む要素の状態を「ＷＡＩＴ」から「再開待ち」にし、前記結果リストの要素から読み出された拡張ユニットデータを前記ＷＡＩＴリストのその要素に含ませる処理を前記第２のコアに実行させるものであり、
前記ＷＡＩＴ再開処理部は、前記ＷＡＩＴリストに状態が「再開待ち」である要素がある時に、その要素に含まれている拡張ユニットデータをその要素に含まれている識別情報を有する処理に渡して、その処理を再開させる処理を前記第２のコアに実行させるものであることを特徴とするアクセス装置。
【００５３】
(付記４)
付記２に記載のアクセス装置であって、
ローカルメモリと、
インターフェース用回路と、
を更に備え、
前記ローカルメモリには、前記第２のコア専用の専用エリアと前記第１のコアと前記第２のコアに共有される共有エリアが設けられ、
前記専用エリアには、ＷＡＩＴリストが生成され、
前記共有エリアには、要求リストと、結果リストが生成され、
前記拡張ユニットアクセス処理部は、前記要求リストに要素を追加し、追加した要素に状態として「アクセス待ち」を書き込み、また、拡張ユニットアクセスキー番号とアクセス先情報も書き込み、更に、前記ＷＡＩＴリストに要素を追加し、追加した要素に状態として「ＷＡＩＴ」を書き込み、また、当該拡張ユニットアクセス処理部を呼んだ処理の識別情報と、前記拡張ユニットアクセスキー番号を書き込んだ後に、当該拡張ユニットアクセス処理部を呼んだ処理をＷＡＩＴさせる処理を前記第２のコアに実行させるものであり、
前記拡張ユニットアクセス専用ファームウェアは、
状態が「アクセス待ち」である要素が前記要求リストにある時に、その要素の状態を「完了待ち」にすると共に、その要素に含まれるアクセス先情報を付随させて、前記インターフェース用回路を介して、前記拡張ユニットにアクセス要求を出す処理と、
状態が「完了待ち」である要素が前記要求リストにあり、更に、前記インターフェース用回路に前記拡張ユニットへのアクセス結果である拡張ユニットデータがある時に、その要素の状態を「完了」にすると共に、前記インターフェース用回路から前記拡張ユニットデータを取得し、状態を「完了」にした要素を前記要求リストから前記結果リストに移し、その要素に前記拡張ユニットデータを含ませた上で、前記拡張ユニット完了割込み処理部を起動する処理を前記第１のコアに実行させるものであり、
前記拡張ユニットアクセス完了割込み処理部は、前記結果リストの要素から拡張ユニットアクセスキー番号と前記拡張ユニットデータを読み出してから、前記ＷＡＩＴリストに含まれ、前記結果リストの要素から読み出された前記拡張ユニットアクセスキー番号を含む要素の状態を「ＷＡＩＴ」から「再開待ち」にし、前記結果リストの要素から読み出された拡張ユニットデータを前記ＷＡＩＴリストのその要素に含ませ、処理を前記第２のコアに実行させるものであり、
前記ＷＡＩＴ再開処理部は、前記ＷＡＩＴリストに状態が「再開待ち」である要素がある時に、その要素に含まれている拡張ユニットデータをその要素に含まれている識別情報を有する処理に渡して、その処理を再開させる処理を前記第２のコアに実行させるものであることを特徴とするアクセス装置。
【００５４】
（付記５）
付記３又は４に記載のアクセス装置であって、
前記識別情報には、当該処理の再開ポイントを附随させることを特徴とするアクセス装置。
【００５５】
（付記６）
付記３乃至５の何れか１に記載のアクセス装置であって、
前記第１のコア及び前記第２のコアでは、コア間通信機能のプログラムも実行され、
前記拡張ユニットアクセス専用ファームウェアは、前記コア間通信機能のプログラムを利用して、前記拡張ユニット完了割込み処理部を起動することを特徴とするアクセス装置。
【００５６】
（付記７）
付記１乃至６の何れか１に記載のアクセス装置を備えることを特徴とする拡張記憶装置。
【００５７】
（付記８）
付記１乃至６の何れか１に記載の拡張ユニットアクセス専用ファームウェア。
【００５８】
（付記９）
付記１乃至６の何れか１に記載の拡張記憶装置ファームウェア。
【００５９】
（付記１０）
拡張ユニットと、
前記拡張ユニットにアクセスする機能を有する１以上のアクセス装置と、
を備える拡張記憶装置における前記アクセス装置から前記拡張ユニットへのアクセス方法であって、
前記アクセス装置には、マルチコアＣＰＵ又は複数のＣＰＵにより当該アクセス装置に複数のコアが備わり、
第１のコアが、拡張ユニットアクセス専用ファームウェアを実行し、
第２のコアが、拡張記憶装置ファームウェアを実行し、
前記拡張ユニットアクセス専用ファームウェアは、前記拡張ユニットにアクセスする処理の少なくとも一部を前記第１のコアに実行させるものであり、
前記拡張記憶装置ファームウェアは、前記第２のコアで実行されるプログラムと前記拡張ユニットアクセス専用ファームウェアとの仲介をする処理を前記第２のコアに実行させるものであることを特徴とするアクセス方法。
【００６０】
（付記１１）
付記１０に記載のアクセス方法であって、
前記拡張記憶装置ファームウェアには、拡張ユニットアクセス処理部と、拡張ユニットアクセス完了割込み処理部と、ＷＡＩＴ再開処理部が含まれ、
前記拡張ユニットアクセス処理部は、前記第２のコアで実行されるプログラムで前記拡張ユニットにアクセスする必要がある時に、前記拡張ユニットアクセス専用ファームウェアを起動させた後に、アクセスを必要とする処理以外の処理を前記第２のコアに実行させるためのものであり、
前記拡張ユニットアクセス完了割込み処理部は、前記拡張ユニットアクセス専用ファームウェアにより起動され、前記拡張ユニットにアクセスした結果を前記第２のコアで実行されるプログラムに渡すためのものであり、
前記ＷＡＩＴ再開処理部は、前記第２のコアで実行されるプログラムのメインループに含まれ、前記拡張ユニットにアクセスした結果を前記第２のコアで実行されるプログラムに渡すためのものであることを特徴とするアクセス方法。
【００６１】
（付記１２）
付記１１に記載のアクセス方法であって、
前記アクセス装置は、
ローカルメモリと、
インターフェース用回路と、
を更に備え、
前記ローカルメモリには、前記第２のコア専用の専用エリアと前記第１のコアと前記第２のコアに共有される共有エリアが設けられ、
前記専用エリアには、ＷＡＩＴリストが生成され、
前記共有エリアには、要求リストと、結果リストが生成され、
前記拡張ユニットアクセス処理部は、前記要求リストに要素を追加し、追加した要素に状態として「アクセス待ち」を書き込み、また、拡張ユニットアクセスキー番号と書込データとアクセス先情報も書き込み、更に、前記ＷＡＩＴリストに要素を追加し、追加した要素に状態として「ＷＡＩＴ」を書き込み、また、当該拡張ユニットアクセス処理部を呼んだ処理の識別情報と、前記拡張ユニットアクセスキー番号を書き込んだ後に、当該拡張ユニットアクセス処理部を呼んだ処理をＷＡＩＴさせる処理を前記第２のコアに実行させるものであり、
前記拡張ユニットアクセス専用ファームウェアは、
状態が「アクセス待ち」である要素が前記要求リストにある時に、その要素の状態を「完了待ち」にすると共に、その要素に含まれる書込データとアクセス先情報を付随させて、前記インターフェース用回路を介して、前記拡張ユニットにアクセス要求を出す処理と、
状態が「完了待ち」である要素が前記要求リストにあり、更に、前記インターフェース用回路に前記拡張ユニットへのアクセス結果である拡張ユニットデータがある時に、その要素の状態を「完了」にすると共に、前記インターフェース用回路から前記拡張ユニットデータを取得し、状態を「完了」にした要素を前記要求リストから前記結果リストに移し、その要素に前記拡張ユニットデータを含ませた上で、前記拡張ユニット完了割込み処理部を起動する処理を前記第１のコアに実行させるものであり、
前記拡張ユニットアクセス完了割込み処理部は、前記結果リストの要素から拡張ユニットアクセスキー番号と前記拡張ユニットデータを読み出してから、前記ＷＡＩＴリストに含まれ、前記結果リストの要素から読み出された前記拡張ユニットアクセスキー番号を含む要素の状態を「ＷＡＩＴ」から「再開待ち」にし、前記結果リストの要素から読み出された拡張ユニットデータを前記ＷＡＩＴリストのその要素に含ませる処理を前記第２のコアに実行させるものであり、
前記ＷＡＩＴ再開処理部は、前記ＷＡＩＴリストに状態が「再開待ち」である要素がある時に、その要素に含まれている拡張ユニットデータをその要素に含まれている識別情報を有する処理に渡して、その処理を再開させる処理を前記第２のコアに実行させるものであることを特徴とするアクセス方法。
【００６２】
(付記１３)
付記１１に記載のアクセス方法であって、
前記アクセス装置は、
ローカルメモリと、
インターフェース用回路と、
を更に備え、
前記ローカルメモリには、前記第２のコア専用の専用エリアと前記第１のコアと前記第２のコアに共有される共有エリアが設けられ、
前記専用エリアには、ＷＡＩＴリストが生成され、
前記共有エリアには、要求リストと、結果リストが生成され、
前記拡張ユニットアクセス処理部は、前記要求リストに要素を追加し、追加した要素に状態として「アクセス待ち」を書き込み、また、拡張ユニットアクセスキー番号とアクセス先情報も書き込み、更に、前記ＷＡＩＴリストに要素を追加し、追加した要素に状態として「ＷＡＩＴ」を書き込み、また、当該拡張ユニットアクセス処理部を呼んだ処理の識別情報と、前記拡張ユニットアクセスキー番号を書き込んだ後に、当該拡張ユニットアクセス処理部を呼んだ処理をＷＡＩＴさせる処理を前記第２のコアに実行させるものであり、
前記拡張ユニットアクセス専用ファームウェアは、
状態が「アクセス待ち」である要素が前記要求リストにある時に、その要素の状態を「完了待ち」にすると共に、その要素に含まれるアクセス先情報を付随させて、前記インターフェース用回路を介して、前記拡張ユニットにアクセス要求を出す処理と、
状態が「完了待ち」である要素が前記要求リストにあり、更に、前記インターフェース用回路に前記拡張ユニットへのアクセス結果である拡張ユニットデータがある時に、その要素の状態を「完了」にすると共に、前記インターフェース用回路から前記拡張ユニットデータを取得し、状態を「完了」にした要素を前記要求リストから前記結果リストに移し、その要素に前記拡張ユニットデータを含ませた上で、前記拡張ユニット完了割込み処理部を起動する処理を前記第１のコアに実行させるものであり、
前記拡張ユニットアクセス完了割込み処理部は、前記結果リストの要素から拡張ユニットアクセスキー番号と前記拡張ユニットデータを読み出してから、前記ＷＡＩＴリストに含まれ、前記結果リストの要素から読み出された前記拡張ユニットアクセスキー番号を含む要素の状態を「ＷＡＩＴ」から「再開待ち」にし、前記結果リストの要素から読み出された拡張ユニットデータを前記ＷＡＩＴリストのその要素に含ませ、処理を前記第２のコアに実行させるものであり、
前記ＷＡＩＴ再開処理部は、前記ＷＡＩＴリストに状態が「再開待ち」である要素がある時に、その要素に含まれている拡張ユニットデータをその要素に含まれている識別情報を有する処理に渡して、その処理を再開させる処理を前記第２のコアに実行させるものであることを特徴とするアクセス方法。
【００６３】
（付記１４）
付記１２又は１３に記載のアクセス方法であって、
前記識別情報には、当該処理の再開ポイントを附随させることを特徴とするアクセス方法。
【００６４】
（付記１５）
付記１２乃至１４の何れか１に記載のアクセス方法であって、
前記第１のコア及び前記第２のコアでは、コア間通信機能のプログラムも実行され、
前記拡張ユニットアクセス専用ファームウェアは、前記コア間通信機能のプログラムを利用して、前記拡張ユニット完了割込み処理部を起動することを特徴とするアクセス方法。
【産業上の利用可能性】
【００６５】
本発明は、ファームウェア用プラットフォームハードウェアが拡張ユニットにアクセスするために利用できるだけでなく、複数のコアを備える装置が記憶装置又は入出力装置にアクセスするためにも利用することができる。複数のコアを備える装置は、複数ではなく、単数であってもよい。
【符号の説明】
【００６６】
１  ＥＭＵ
２  ＥＵ
２１  ＵＢＡＲエリア
３０、３１、・・・、３ｎ  ＩＯＣ
３０１、・・・、３ｎ１  ＩＦ用ＬＳＩ
３０２、・・・、３ｎ２  マルチコアＣＰＵ
３０３、・・・、３ｎ３  ＬＭ
３０２３、・・・、３ｎ２３  ＥＭＵＦＷ
３０２６、・・・、３ｎ２６  ＥＵアクセス専用ＦＷ
【図１】
0005500114.tif 000002
【図２】
0005500114.tif 000003
【図３】
0005500114.tif 000004
【図４】
0005500114.tif 000005
【図５】
0005500114.tif 000006
【図６】
0005500114.tif 000007
【図７】
0005500114.tif 000008
【図８】
0005500114.tif 000009