(57)【特許請求の範囲】
【請求項１】
各々が制御回路に連結された第１のマイクロプロセッサと第２のマイクロプロセッサとの間でメモリを管理する回路であって、
前記制御回路と、
第１のローカルメモリ回路及び第２のローカルメモリ回路と、
前記第１のローカルメモリ回路、前記第２のローカルメモリ回路、並びに前記制御回路に連結され、ローカルメモリモード選択信号を入力として有し、前記ローカルメモリモード選択信号に基づいて第１のローカルメモリモード又は第２のローカルメモリモードのいずれかで選択的に動作するように構成されたスイッチ回路とを含み、
前記制御回路は、前記第１のマイクロプロセッサ及び前記第２のマイクロプロセッサの少なくとも１つを、メインメモリ回路、キャッシュメモリ回路及び前記スイッチ回路に連結するように構成され、前記第１のマイクロプロセッサ及び第２のマイクロプロセッサのプロセッサモードを示すプロセッサモード選択信号を入力として有し、前記プロセッサモード選択信号に基づくプロセッサモードで動作し、
前記プロセッサモード選択信号によって指示された第１のプロセッサモードでは、前記第１のマイクロプロセッサ及び第２のマイクロプロセッサの各々が、前記第１のマイクロプロセッサ及び第２のマイクロプロセッサのうちの他方と独立して動作し、前記プロセッサモード選択信号によって指示された第２のプロセッサモードでは、前記第１のマイクロプロセッサ及び第２のマイクロプロセッサの各々が、前記第１のマイクロプロセッサ及び第２のマイクロプロセッサのうちの他方と独立して動作せず、
前記第１のプロセッサモードにおける前記制御回路及び前記第１のローカルメモリモードにおける前記スイッチ回路は、前記第１のローカルメモリ回路を前記第１のマイクロプロセッサのメモリインタフェースに連結し、且つ前記第２のローカルメモリ回路を前記第２のマイクロプロセッサのメモリインタフェースに連結し、
前記第２のプロセッサモードにおける前記制御回路及び前記第２のローカルメモリモードにおける前記スイッチ回路は、前記第１及び第２のローカルメモリ回路によって形成される結合されたアドレス空間を有する結合メモリを前記第１のマイクロプロセッサ及び前記第２のマイクロプロセッサのうちの１つのマイクロプロセッサのメモリインタフェースに連結する、回路。
【請求項２】
前記制御回路が、ロックステップで前記第１のマイクロプロセッサを前記第２のマイクロプロセッサと同期させるとき、前記制御回路が、前記第２のプロセッサモードで動作し、前記スイッチ回路が、前記第２のローカルメモリモードで動作する、請求項１に記載の回路。
【請求項３】
前記スイッチ回路が、前記制御回路と前記第１及び第２のローカルメモリ回路との間に連結されたマルチプレクシング／デマルチプレクシング回路を含む、請求項１又は２に記載の回路。
【請求項４】
前記マルチプレクシング／デマルチプレクシング回路が、前記第１及び第２のマイクロプロセッサのうちの少なくとも１つのマイクロプロセッサのメモリバスから得られる信号に連結された制御入力を含み、前記第２のローカルメモリモードで、前記スイッチ回路は、前記制御入力に基づいて前記第１及び第２のローカルメモリ回路の１つを前記第１及び第２のマイクロプロセッサのうちの前記１つのマイクロプロセッサのメモリインタフェースに連結する、請求項３に記載の回路。
【請求項５】
前記第１及び第２のローカルメモリ回路の各々が、少なくとも１つのランダムアクセスメモリ（ＲＡＭ）回路を含む、請求項１から４のいずれか一項に記載の回路。
【請求項６】
各ＲＡＭ回路が、前記第１及び第２のマイクロプロセッサのうちの１つによる使用中に常に有効であるメモリの連続領域を形成する、請求項５に記載の回路。
【請求項７】
前記第１及び第２のローカルメモリ回路の各々が、誤り訂正符号（ＥＣＣ）メモリ回路を含む、請求項１から６のいずれか一項に記載の回路。
【請求項８】
制御回路と、第１のマイクロプロセッサと、第２のマイクロプロセッサと、第１のローカルメモリ、第２のローカルメモリ、並びに前記制御回路に連結されたスイッチ回路とを含む回路において、前記第１のマイクロプロセッサと前記第２のマイクロプロセッサとの間でメモリを管理する方法であって、
プロセッサモード選択信号に基づくプロセッサモードで動作するように前記第１のマイクロプロセッサ及び前記第２のマイクロプロセッサを構成することであって、第１のプロセッサモードでは、前記第１のマイクロプロセッサ及び第２のマイクロプロセッサの各々が、前記第１のマイクロプロセッサ及び第２のマイクロプロセッサのうちの他方と独立して動作し、第２のプロセッサモードでは、前記第１のマイクロプロセッサ及び第２のマイクロプロセッサの各々が、前記第１のマイクロプロセッサ及び第２のマイクロプロセッサのうちの他方と独立して動作しないように、構成することと、
前記スイッチ回路を、ローカルメモリモード選択信号に基づいて、第１のローカルメモリモード又は第２のローカルメモリモードのいずれか一方で選択的に動作するように構成することと、
前記制御回路を、前記プロセッサモード選択信号に基づいて、前記第１のプロセッサモード又は前記第２のプロセッサモードのいずれか一方で選択的に動作するように構成することと、
前記第１のマイクロプロセッサ及び前記第２のマイクロプロセッサの少なくとも１つを、メインメモリ回路、キャッシュメモリ回路及び前記スイッチ回路に連結するように、前記制御回路を構成することと、
前記第２のローカルメモリモードにおける前記スイッチ回路及び前記第２のプロセッサモードにおける前記制御回路の動作によって、前記第１のローカルメモリ及び前記第２のローカルメモリによって形成される結合されたアドレス空間を有する結合メモリを、前記第１のマイクロプロセッサ及び前記第２のマイクロプロセッサの１つに連結することと
を含む方法。
【請求項９】
前記第２のマイクロプロセッサが、前記第２のプロセッサモードで、前記第１のマイクロプロセッサとロックステップで動作する、請求項８に記載の方法。
【請求項１０】
前記連結することが、前記第１のマイクロプロセッサ及び前記第２のマイクロプロセッサのうちの１つによる前記結合メモリへの各アクセスのためのアドレスの一部に基づいて、前記第１のローカルメモリ又は前記第２のローカルメモリのいずれかを選択することを含む、請求項８又は９に記載の方法。
【請求項１１】
前記第１及び第２のローカルメモリの各々が、少なくとも１つのランダムアクセスメモリ（ＲＡＭ）回路を含む、請求項８から１０のいずれか一項に記載の方法。
【請求項１２】
各ＲＡＭ回路が、前記第１と第２のマイクロプロセッサのうちの１つによる使用中に常に有効であるメモリの連続領域を形成する、請求項１１に記載の方法。
【請求項１３】
前記第１及び第２のローカルメモリの各々が、誤り訂正符号（ＥＣＣ）メモリ回路を含む、請求項８から１２のいずれか一項に記載の方法。
【請求項１４】
前記第１のローカルメモリモードにおける前記スイッチ回路及び前記第１のプロセッサモードにおける前記制御回路の動作によって、前記第１のローカルメモリを前記第１のマイクロプロセッサに連結し、前記第２のローカルメモリを前記第２のマイクロプロセッサに連結することと
を更に含む、請求項８から１３のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の例は、広くは、マルチプロセッサシステムに関し、詳細には、マルチプロセッサシステムにおけるメモリの管理に関する。
【背景技術】
【０００２】
マルチプロセッシングまたはマルチプロセッサシステムでは、１つのシステムに２つ以上の中央処理装置（ＣＰＵ）を使用する。例えば、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの集積回路（ＩＣ）には、マルチプロセッシングに使用することができる複数のマイクロプロセッサを埋め込むことができる。マイクロプロセッサは、複数の別個のマイクロプロセッサであってもよいし、または単一のマイクロプロセッサの複数のコアであってもよい。マイクロプロセッサは、メモリインタフェースを含む、情報の送受信に使用される様々なインタフェースを有する。
【０００３】
マイクロプロセッサは、キャッシュメモリ、ローカルメモリ、メインメモリなどを含む様々なタイプのメモリへのメモリインタフェースを有することができ、異なるタイプのメモリをレイテンシおよび／または機能によって区別することができる。例えば、キャッシュメモリは、メインメモリに記憶された情報をキャッシュに格納するために使用される低レイテンシメモリであるため、マイクロプロセッサによってより容易にアクセス可能である。メインメモリは、キャッシュメモリよりも大量の情報を格納できる高レイテンシメモリである。ローカルメモリは、キャッシュとして動作しない低レイテンシメモリ（キャッシュメモリに類似）とすることができる。例えば、ＡＲＭ（登録商標）アーキテクチャを有するいくつかのマイクロプロセッサは、低レイテンシ（非キャッシュ）メモリにアクセスするために使用することができる「密結合メモリ」インタフェースとして知られているものを含む。マルチプロセッサシステムでは、メモリなどのリソースを効果的に管理して、非効率的または無駄な使用を避ける必要がある。
【発明の概要】
【０００４】
マルチプロセッサシステムにおけるメモリの管理について説明する。一実施例では、制御回路にそれぞれ連結された第１のマイクロプロセッサと第２のマイクロプロセッサとの間でメモリを管理する回路は、第１のメモリ回路及び第２のメモリ回路、並びに前記第１のメモリ回路、前記第２のメモリ回路、並びに前記第１及び第２のマイクロプロセッサのメモリインタフェースに連結され、モード信号を入力として有するスイッチ回路を含む。スイッチは、第１のモードにおいて、スイッチ回路が、第１のメモリ回路を第１のマイクロプロセッサのメモリインタフェースに連結し、且つ第２のメモリ回路を第２のマイクロプロセッサのメモリインタフェースに連結し、第２のモードにおいて、スイッチ回路が、第１又は第２のメモリ回路を第１又は第２のマイクロプロセッサのいずれかのメモリインタフェースに選択的に連結するように、モード信号に基づいて第１のモード又は第２のモードのいずれかで選択的に動作するように構成される。
【０００５】
別の実施例では、集積回路は、第１及び第２のマイクロプロセッサと、第１及び第２のマイクロプロセッサに連結された制御回路と、第１及び第２のメモリ回路と、第１のメモリ回路、第２のメモリ回路、及び制御回路に連結され、モード信号を入力として有するスイッチ回路と、を含む。スイッチ回路は、第１のモードにおいて、スイッチ回路が、第１のメモリ回路を第１のマイクロプロセッサのメモリインタフェースに連結し、且つ第２のメモリ回路を第２のマイクロプロセッサのメモリインタフェースに連結し、第２のモードにおいて、スイッチ回路が、第１又は第２のメモリ回路を第１又は第２のマイクロプロセッサのいずれかのメモリインタフェースに選択的に連結するように、モード信号に基づいて第１のモード又は第２のモードのいずれかで選択的に動作するように構成される。
【０００６】
別の実施例では、制御回路に各々が連結された第１のマイクロプロセッサと第２のマイクロプロセッサとの間でメモリを管理する方法は、第１のマイクロプロセッサ及び第２のマイクロプロセッサを、第１及び第２のマイクロプロセッサの各々が独立して動作しない第１のモードに構成すること、第１のマイクロプロセッサに関連付けられた第１のメモリ及び第２のマイクロプロセッサに関連付けられた第２のメモリを、結合されたアドレス空間を有する結合メモリになるように構成すること、並びに第１又は第２のメモリを第１又は第２のマイクロプロセッサのいずれかに、当該第１又は第２のマイクロプロセッサが結合メモリにアクセスしているときに、選択的に連結すること、を含む。
【０００７】
他の特徴は、以下の詳細な説明および特許請求の範囲の考察から認識されるであろう。
【０００８】
上記に列挙した特徴を詳細に理解できるように、上記で簡単に要約したより詳細な説明が、実施例を参照することによって得られ、そのいくつかを添付の図面に示す。しかしながら、添付の図面は典型的な実施例のみを示しているので、その範囲を限定するものと見なすべきではないことに留意されたい。
【図面の簡単な説明】
【０００９】
【図１】一実施例による、処理システムを示すブロック図である。
【図２】一実施例による、図１の処理システムのより詳細な部分を示すブロック図である。
【図３】一実施例による、集積回路を示すブロック図である。
【図４】一実施例による、第１及び第２のマイクロプロセッサ間でのメモリを管理する方法を示すフロー図である。
【図５】一実施例による、第１及び第２のマイクロプロセッサ間でのメモリを管理する別の方法を示すフロー図である。
【発明を実施するための形態】
【００１０】
理解を容易にするため、可能な場合には、図に共通する同一の要素を示すのに、同一の参照番号を使用した。１つの例の要素は他の例に有益に組み込むことができると、考えられる。
【００１１】
マルチプロセッサシステムにおけるメモリの管理について説明する。一例では、制御回路に各々が連結された第１のマイクロプロセッサと第２のマイクロプロセッサとの間でメモリを管理する回路が提供される。本回路は、第１及び第２のメモリ回路、並びに第１及び第２のメモリ回路を第１及び第２のマイクロプロセッサのメモリインタフェースに連結するスイッチを含む。スイッチ回路は、２つの異なるモードで動作することができる。第１のモードでは、スイッチ回路は、第１のメモリ回路を第１のマイクロプロセッサのメモリインタフェースに連結し、第２のメモリ回路を第２のマイクロプロセッサのインタフェースに連結する。第２のモードでは、スイッチ回路は、第１又は第２のメモリ回路を第１又は第２のマイクロプロセッサのいずれかのメモリインタフェースに選択的に連結する。スイッチ回路の第１のモードは、マイクロプロセッサが独立して動作しており、各々がメモリのうちのそれに関連付けられた別個の１つにアクセスするときに、使用することができる。スイッチ回路の第２のモードは、マイクロプロセッサが、ロックステップモードまたはシングルプロセッサモードなどの非独立モードで動作しているときに、使用することができる。第２のモードでは、２つのメモリ回路が結合されて、結合されたアドレス空間を有する単一の結合メモリを形成する。いずれかのマイクロプロセッサが、必要に応じて第１または第２のメモリ回路のいずれかを選択的に連結するスイッチ回路を介して結合メモリにアクセスすることができる。このようにして、第１のメモリ回路が通常は第１のマイクロプロセッサに関連付けられ、第２のメモリ回路が通常は第２のマイクロプロセッサに関連付けられる場合であっても、マイクロプロセッサがロックステップまたはシングルプロセッサモードで動作する場合に、両方のメモリ回路を利用することができる。
【００１２】
図１は、一実施例による処理システム１００を示すブロック図である。処理システム１００は、マイクロプロセッサ１０２及び１０４、制御回路１０６、スイッチ回路１１０、並びにローカルメモリ回路１１２及び１１４（「メモリ回路」とも呼ばれる）を含む。マイクロプロセッサ１０２は「マイクロプロセッサ０」と呼ばれ、マイクロプロセッサ１０４は「マイクロプロセッサ１」と呼ばれる。同様に、ローカルメモリ回路１１２は「ローカルメモリ０」と呼ばれ、ローカルメモリ回路１１４は「ローカルメモリ１」と呼ばれる。マイクロプロセッサ１０２及び１０４の各々は、制御回路１０６に連結されたインタフェースを含む。ローカルメモリ回路１１２及び１１４の各々は、スイッチ回路１１０に連結されたインタフェースを含む。スイッチ回路１１０は、制御回路１０６に連結されたインタフェースを含む。制御回路１０６は、プロセッサモード選択信号を受信するためのインタフェースを含む。スイッチ回路１１０は、ローカルメモリモード選択信号を受信するように構成されたインタフェースを含む。制御回路１０６のインタフェースはまた、キャッシュメモリ１１６およびメインメモリ１１８に連結されてもよい。キャッシュメモリ１１６は、それぞれマイクロプロセッサ１０２および１０４による使用専用の特定のメモリ１１６−０および１１６−１を含むことができる。同様に、メインメモリ１１８は、メモリ１１８−０および１１８−１を含むことができる。本明細書で使用する「連結された」という用語は、要素間の直接的な接続（例えば、マイクロプロセッサ１０２と制御回路１０６との間の接続）と、少なくとも１つの中間要素を介してもよい要素間の通信（例えば、マイクロプロセッサ１０２とローカルメモリ１１２との間の通信）とを包含することを意味する。
【００１３】
マイクロプロセッサ１０２および１０４の各々は、デジタルデータを入力として受け取り、命令セットの命令に従ってデジタルデータを処理し、結果を出力として提供するプログラマブルデバイスであってもよい。本明細書で使用される「マイクロプロセッサ」という用語は、マイクロコントローラまたは他のシステムオンチップ（ＳｏＣ）デバイスを含む任意のそのようなプログラマブルデバイスを含むことを意味する。マイクロプロセッサ１０２および１０４の各々は、別個の集積回路（ＩＣ）またはＩＣに埋め込まれた別個のデバイスを含む、スタンドアロンデバイスとすることができる。あるいは、マイクロプロセッサ１０２および１０４は、単一のデバイスの２つのマイクロプロセッサ「コア」とすることができる。非限定的な例において、マイクロプロセッサ１０２および１０４は、デュアルコアＡＲＭ（登録商標）Ｃｏｒｔｅｘ（登録商標）−Ｒ５プロセッサまたはＡＲＭ（登録商標）アーキテクチャを有する同様のタイプのプロセッサなどの縮小命令セットコンピューティング（ＲＩＳＣ）デバイスとすることができる。マイクロプロセッサ１０２および１０４は、本明細書に記載の機能を含む他のタイプのデバイスであってもよいことを理解されたい。
【００１４】
制御回路１０６が、マイクロプロセッサ１０２および１０４の入力／出力（ＩＯ）インタフェースに連結される。制御回路１０６は、比較及び同期ロジック１０８と、ルーティング及びアービトレーションロジック１０９とを含む。制御回路１０６は、様々なプロセッサモードで動作するようにマイクロプロセッサ１０２および１０４を構成することができる。制御回路１０６は、入力として与えられるモード選択信号に基づいて、マイクロプロセッサ１０２および１０４のモードを選択することができる。
【００１５】
１つのプロセッサモードでは、制御回路１０６は、マイクロプロセッサ１０２および１０４をロックステップで動作するように構成する（「ロックステッププロセッサモード」）。ロックステップで動作する場合、マイクロプロセッサの１つが、冗長プロセッサとして使用され、両方のマイクロプロセッサが、同じ命令に従って同じデータを処理する。比較及び同期ロジック１０８は、ロックステップモードにあるときにマイクロプロセッサ１０２および１０４を同期させ、動作中に各プロセッサの出力を比較する。ルーティング及びアービトレーションロジック１０９は、ロックステップで動作するマイクロプロセッサ１０２および１０４の間で、キャッシュメモリ１１６、メインメモリ１１８、およびスイッチ回路１１０へのアクセスを同期させる。
【００１６】
別のモードでは、制御回路１０６は、他方のマイクロプロセッサが動作している間、マイクロプロセッサ１０２および１０４のうちの１つをディスエーブルにする（「シングルプロセッサモード」）。シングルプロセッサモードでは、ルーティング及びアービトレーションロジック１０９は、キャッシュメモリ１１６、メインメモリ１１８、およびスイッチ回路１１０へのアクセスを、マイクロプロセッサ１０２または１０４のうちの動作中のものに提供する。
【００１７】
別のモードでは、制御回路１０６は、マイクロプロセッサ１０２および１０４を、独立して動作するように構成し、各々が、独立した命令に従って独立したデータを処理する（「独立プロセッサモード」）。各マイクロプロセッサ１０２および１０４は、ルーティング及びアービトレーションロジック１０９を介して、キャッシュメモリ１１６、メインメモリ１１８、およびスイッチ回路１１０にアクセスすることができる。ルーティング及びアービトレーションロジック１０９は、マイクロプロセッサ１０２および１０４の間で、キャッシュメモリ１１６、メインメモリ１１８、およびスイッチ回路１１０へのアクセスを同期させる。一例では、ルーティング及びアービトレーションロジック１０９は、マイクロプロセッサ１０２および１０４と、キャッシュメモリ１１６およびメインメモリ１１８のそれぞれの部分との間の直接リンクを提供することができる。同様に、スイッチ回路１１０は、独立モードで動作しているとき、マイクロプロセッサ１０２と１０４との間でリソースの共有または競合がないように、各マイクロプロセッサ１０２および１０４に対して別個の部分を含むことができる。
【００１８】
マイクロプロセッサ１０２および１０４は、ローカルメモリ（例えばローカルメモリ１１２／１１４）に連結されたローカルメモリインタフェース、キャッシュメモリ１１６に連結されたキャッシュメモリインタフェース、およびメインメモリ１１８に連結されたメインメモリインタフェースなどの、いくつかのタイプのメモリインタフェースを有することができる。メモリインタフェースは、レベル（例えば、Ｌ１、Ｌ２、Ｌ３等、及びメイン）に分割することができる。Ｌ１、Ｌ２、Ｌ３等のメモリは、メインメモリによって記憶された情報をキャッシュに格納するキャッシュメモリを含む。すなわち、キャッシュメモリ１１６は、メインメモリ１１８によってバックアップされている。簡略化のために、キャッシュメモリ１１６が概略的に示されているが、キャッシュメモリ１１６は、マイクロプロセッサ１０２および１０４の各々のための命令およびデータキャッシュのための別個のメモリ回路を含むことができることを理解されたい。メモリのレベルはレイテンシを示し、Ｌ１メモリはＬ２よりもレイテンシが小さく、Ｌ２メモリはＬ３よりもレイテンシが小さい、等々であり、メインメモリが最も大きいレイテンシを有する。
【００１９】
マイクロプロセッサ１０２および１０４のローカルメモリインタフェースは、キャッシュレベル（例えば、Ｌ１）で動作することができるが、非キャッシュローカルメモリにアクセスするために使用される。すなわち、ローカルメモリ１１２および１１４は、メインメモリ１１８によってバックアップされず、明示的なキャッシュメモリとして動作しない。むしろ、ローカルメモリ１１２および１１４はそれぞれ、（明示的なキャッシュメモリとは対照的に）マイクロプロセッサ１０２および１０４による使用時に常に有効なメモリの連続領域を形成する。もちろん、ローカルメモリ１１２または１１４は、たまたまメインメモリ１１８にも格納されるが、明示的なキャッシュとしては格納されないデータを格納することができる。ローカルメモリ回路１１２および１１４は、（例えば、Ｌ１キャッシュのオーダーである）メインメモリ１１８よりもはるかに低いレイテンシを有することができる。例えば、ＡＲＭ（登録商標）Ｃｏｒｔｅｘ（登録商標）−Ｒ５プロセッサおよび同様のＡＲＭ（登録商標）タイプのプロセッサには、非キャッシュメモリとして動作することができるローカルメモリにアクセスするために使用できる密結合メモリ（ＴＣＭ）インタフェースが含まれる。
【００２０】
処理システム１００において、ルーティング及びアービトレーションロジック１０９は、マイクロプロセッサ１０２および１０４のローカルメモリインタフェースをスイッチ回路１１０に連結する。一般に、マイクロプロセッサ１０２はローカルメモリ１１２に関連付けられ、マイクロプロセッサ１０４はローカルメモリ１１４に関連付けられる。スイッチ回路１１０は、入力されたローカルメモリモード選択信号に応じて異なるモードに従って、ローカルメモリ１１２および１１４をマイクロプロセッサ１０２および１０４に連結する。
【００２１】
第１のモードでは、スイッチ回路１１０は、ローカルメモリ１１２をマイクロプロセッサ１０２に連結し、ローカルメモリ１１４をマイクロプロセッサ１０４に連結する（「独立ローカルメモリモード」）。独立ローカルメモリモードでは、マイクロプロセッサ１０２および１０４の各々は、独立したローカルメモリを有する。スイッチ回路１１０は、マイクロプロセッサ１０２および１０４が独立モードで動作しているときに、独立ローカルメモリモードを呼び出すことができる。したがって、各マイクロプロセッサ１０２および１０４は、それぞれ、それ自体のローカルメモリ１１２および１１４にアクセスすることができる。
【００２２】
第２のモードでは、スイッチ回路１１０は、ローカルメモリ１１２またはローカルメモリ１１４を、マイクロプロセッサ１０２または１０４のいずれかに選択的に連結する（「結合ローカルメモリモード」）。結合ローカルメモリモードでは、スイッチ回路１１０は、マイクロプロセッサ１０２またはマイクロプロセッサ１０４のいずれかがローカルメモリ１１２および１１４の両方から形成された結合メモリにアクセスすることを可能にする。マイクロプロセッサ１０２および１０４がロックステッププロセッサモードまたはシングルプロセッサモードで動作している場合など、マイクロプロセッサ１０２および１０４が非独立で動作している場合に、スイッチ回路１１０は、結合ローカルメモリモードを呼び出すことができる。結合メモリを選択的に形成することにより、マイクロプロセッサ１０２および１０４がロックステッププロセッサモードまたはシングルプロセッサモードで動作しているときに、両方のローカルメモリ１１２および１１４を利用することができる。ローカルメモリ１１２および１１４が、それぞれのマイクロプロセッサ１０２および１０４に直接に連結されていると、ローカルメモリ１１２および１１４のうちの１つが、ロックステップモードでは利用されず、未使用のリソースとなるであろう。
【００２３】
一例では、プロセッサモードとメモリモードを、互いに独立して設定することができる。例えば、プロセッサモードを独立モードで動作するように設定することができ、メモリモードを結合ローカルメモリモードに設定して、プロセッサのうちの１つのみがすべてのメモリにアクセスできるようにすることができる。
【００２４】
図２は、一実施例による、処理システム１００のより詳細な部分を示すブロック図である。図１の要素と同じまたは類似の図２の要素が、同一の参照符号を付して示され、上記で詳細に説明されている。マイクロプロセッサ０は、キャッシュインタフェース（単数または複数）２０２−０、他のインタフェース（単数または複数）２０４−０、ローカルメモリレジスタ（単数または複数）２０６−０、中央処理装置（ＣＰＵ）２０８−０、およびローカルメモリインタフェース（単数または複数）２１０−０を含む。同様に、マイクロプロセッサ１は、キャッシュインタフェース（単数または複数）２０２−１、他のインタフェース（単数または複数）２０４−１、ローカルメモリレジスタ（単数または複数）２０６−１、ＣＰＵ２０８−１、およびローカルメモリインタフェース（単数または複数）２１０−１を含む。ローカルメモリ１１２は、少なくとも１つのランダムアクセスメモリ（ＲＡＭ）回路２２０を含み、ローカルメモリ１１４は、少なくとも１つのＲＡＭ回路２２２を含む。ＲＡＭ回路２２０および２２２は、スタティックＲＡＭ（ＳＲＡＭ）などの任意のタイプのＲＡＭを含むことができる。一例では、ローカルメモリ１１４および１１６の各々が、マイクロプロセッサ１０２および１０４内のＥＣＣロジックとともに使用するための誤り訂正符号（ＥＣＣ）メモリを実装することができる。
【００２５】
キャッシュインタフェース２０２−０および２０２−１は、キャッシュメモリ（たとえば、キャッシュメモリ１１６）に連結することができる。他のインタフェース２０４−０および２０４−１は、メインメモリ１１８および制御回路１０６などの様々なコンポーネントに連結することができる。ＣＰＵ２０８−０及び２０８−１は、マイクロプロセッサ０及び１の処理要素を含む。ローカルメモリインタフェース２１０−０および２１０−１は、ローカルメモリに連結することができる。ローカルメモリレジスタ２０６−０および２０６−１は、ローカルメモリのアドレス指定を容易にするために１つ以上のレジスタを含むことができる。ローカルメモリインタフェース２１０−０および２１０−１は、ルーティング及びアービトレーションロジック１０９を介してスイッチ回路１１０に連結される。
【００２６】
ＲＡＭ回路２２０およびＲＡＭ回路２２２は、それぞれ、ＡグループおよびＢグループなどの複数のメモリグループに分割することができる。ローカルメモリインタフェース２１０−０および２１０−１は、ＡグループにアクセスするためのＡインタフェースおよびＢグループにアクセスするためのＢインタフェースなどの、各グループのためのインタフェースを含むことができる。異なるグループは、データ対命令のような異なる種類の情報を記憶するために使用することができる。以下の説明では、ＲＡＭ回路２２０および２２２のグループは、ローカルメモリ１１２のための単一の論理メモリユニットおよびローカルメモリ１１４のための単一の論理メモリユニットとして説明される。
【００２７】
一例では、スイッチ回路１１０は、マルチプレクサ／デマルチプレクサ回路（ＭＵＸ／ＤＭＵＸ回路２１２）とスリーステートバッファ２１８とを含む。図２に示すスイッチ回路１１０の特定の論理構成は、スイッチ回路１１０の論理動作を示すように意図される。本明細書に記載のスイッチ回路１１０の論理動作に基づいて、当業者は、そのような論理動作を実施するための論理ゲートおよび同様のコンポーネントの様々な構成を設計できる、ということを理解されたい。
【００２８】
ＭＵＸ／ＤＭＵＸ回路２１２は、マイクロプロセッサ０とローカルメモリ１１２および１１４との間のマルチプレクシングおよびデマルチプレクシングを提供する。ＭＵＸ／ＤＭＵＸ回路２１２は、マルチプレクサ／デマルチプレクサ２１４とマルチプレクサ２１６とを含むことができる。マルチプレクサ／デマルチプレクサ２１４の出力は、ルーティング及びアービトレーションロジック１０９に連結される。マルチプレクサ／デマルチプレクサ２１４の入力は、ローカルメモリ１１２および１１４に連結される。マルチプレクサ／デマルチプレクサ２１４の制御入力は、マルチプレクサ２１６の出力に連結される。マルチプレクサ２１６の１つの入力は、ローカルメモリモード選択信号を受信するように構成される。マルチプレクサ２１６の別の入力は、ローカルメモリインタフェースから得られた信号を受信するように構成される。スリーステートバッファ２１８の出力は、ルーティング及びアービトレーションロジック１０９に連結される。スリーステートバッファ２１８の入力は、ローカルメモリ１１４に連結される。スリーステートバッファ２１８の制御入力は、ローカルメモリモード選択信号を受信するように連結される。
【００２９】
動作中、マルチプレクサ／デマルチプレクサ２１４は、マルチプレクサ２１６の制御の下で、ローカルメモリ１１２またはローカルメモリ１１４のいずれかをルーティング及びアービトレーションロジック１０９に選択的に連結する。マルチプレクサ２１６が、論理「０」でマルチプレクサ／デマルチプレクサ２１４の制御入力を駆動する場合、マルチプレクサ／デマルチプレクサ２１４は、ローカルメモリ１１２をルーティング及びアービトレーションロジック１０９に連結する。逆に、マルチプレクサ２１６が、論理「１」でマルチプレクサ／デマルチプレクサ２１４の制御入力を駆動する場合、マルチプレクサ／デマルチプレクサ２１４は、ローカルメモリ１１４をルーティング及びアービトレーションロジック１０９に連結する。ローカルメモリモード選択信号に応じて、マルチプレクサ２１６は、一定の論理「０」またはローカルメモリインタフェース（単数または複数）２１０−０の信号（単数または複数）から得られた論理値のいずれかで、マルチプレクサ／デマルチプレクサ２１４の制御入力を駆動する。
【００３０】
例えば、モード選択信号が、スイッチ回路１１０が独立ローカルメモリモードで動作すべきであることを示す（例えば、論理「１」である）場合、マルチプレクサ２１６は、マルチプレクサ／デマルチプレクサ２１４への制御入力として一定の論理「０」を提供するように制御される。ＭＵＸ／ＤＭＵＸ２１２は、ローカルメモリ１１２をルーティング及びアービトレーションロジック１０９に連結するだけであり、選択的連結はない。さらに、スリーステートバッファ２１８は、ローカルメモリ１１４をルーティング及びアービトレーションロジック１０９に連結する。したがって、ローカルメモリ１１２および１１４のそれぞれは、マイクロプロセッサ０および１によって独立してアクセス可能である。独立ローカルメモリモードは、マイクロプロセッサが独立プロセッサモードにあるときに、構成することができる。
【００３１】
モード選択信号が、スイッチ回路１１０が結合ローカルメモリモードで動作すべきであることを示す（例えば、論理「０」である）場合、マルチプレクサ２１６は、ローカルメモリインタフェースの信号から得られた論理値を提供するように制御される。一例では、各ローカルメモリインタフェース２１０−０および２１０−１のアドレス部分からの信号が、論理「０」がローカルメモリ１１２にアクセスし、論理「１」がローカルメモリ１１４にアクセスするという点で、バンク選択として使用される。このように、第２のモードでは、スイッチ回路１１０は、ローカルメモリインタフェース（単数または複数）２１０−０のバンク選択信号に基づいて、マイクロプロセッサ０またはマイクロプロセッサ１のいずれかをローカルメモリ１１２またはローカルメモリ１１４のいずれかに選択的に連結する。ローカルメモリ１１２および１１４の結合は、いずれかのマイクロプロセッサによってアクセス可能である。ローカルメモリ１１２および１１４は、独立したメモリとしてアクセス可能ではない。結合ローカルメモリモードは、マイクロプロセッサがロックステップモードまたはシングルプロセッサモードなどの非独立モードにあるときに、構成することができる。
【００３２】
図３は、一実施例による、集積回路３００を示すブロック図である。図３の要素と同じまたは類似の図１の要素が、同一の参照符号を付して示され、上記で詳細に説明されている。集積回路３００は、プロセッサブロック３０２と、ローカルメモリブロック３０４と、制御ブロック３０６と、様々な他のブロック（単数または複数）３０８とを含む。プロセッサブロック３０２は、マイクロプロセッサ１０２と、マイクロプロセッサ１０４と、制御回路１０６とを含む。ローカルメモリブロック３０４は、ローカルメモリ１１２、ローカルメモリ１１４、およびスイッチ回路１１０を含む。制御ブロック３０６は、プロセッサモード選択信号をプロセッサブロック３０２に提供し、ローカルメモリモード選択信号をローカルメモリブロック３０４に提供する。他のブロック（単数または複数）３０８は、他のプロセッサブロックまたは他の回路などの様々な他の回路を含むことができる。一例では、集積回路３００は、他のブロック（単数または複数）３０８がプログラマブル回路を含むようなプログラマブルデバイスであってもよい。例えば、集積回路は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）などであってもよい。
【００３３】
図４は、一実施例による、第１及び第２のマイクロプロセッサ間でのメモリを管理する方法４００を示すフロー図である。方法４００は、図１の処理システムを参照して理解することができる。方法４００は、ステップ４０２で開始し、制御回路１０６が、第１および第２のマイクロプロセッサ１０２および１０４を、それぞれが独立して動作しない第１のモード（例えば、ロックステッププロセッサモードまたはシングルプロセッサモード）になるように、構成する。ステップ４０４において、スイッチ回路１１０は、第１のマイクロプロセッサに関連付けられた第１のメモリ（例えば、ローカルメモリ１１２）と、第２のマイクロプロセッサに関連付けられた第２のメモリ（例えば、ローカルメモリ１１４）とを、結合されたアドレス空間を有する結合メモリになるように、構成する。ステップ４０６において、スイッチ回路１１０は、第１または第２のメモリを第１のマイクロプロセッサ１０２または第２のマイクロプロセッサ１０４のいずれかに、当該第１のマイクロプロセッサ１０２または第２のマイクロプロセッサ１０４が結合メモリにアクセスしているときに、選択的に連結する。
【００３４】
図５は、一実施例による、第１及び第２のマイクロプロセッサ間でのメモリを管理する方法５００を示すフロー図である。方法５００は、図１の処理システムを参照して理解することができる。方法５００は、ステップ５０２で開始し、制御回路１０６は、第１および第２のマイクロプロセッサ１０２および１０４を、それぞれが独立して動作する第２のモード（例えば、独立プロセッサモード）になるように構成する。ステップ５０４において、スイッチ回路１１０は、第１のマイクロプロセッサと共に使用するための第１のメモリ（例えば、ローカルメモリ１１２）と、第２のマイクロプロセッサと共に使用するための第２のメモリ（例えば、ローカルメモリ１１４）とを、構成する。ステップ５０６において、スイッチ回路１１０は、第１のメモリを第１のマイクロプロセッサ１０２に連結し、第２のメモリを第２のマイクロプロセッサ１０４に連結する。
【００３５】
次に、マルチプロセッサシステムにおけるメモリ管理のいくつかの例を、以下に説明する。一例では、制御回路に各々が連結された第１のマイクロプロセッサと第２のマイクロプロセッサとの間でメモリを管理する回路が、提供され得る。このような回路は、第１のメモリ回路及び第２のメモリ回路と、第１のメモリ回路、第２のメモリ回路、並びに第１及び第２のマイクロプロセッサのメモリインタフェースに連結され、モード信号を入力として有するスイッチ回路と、を含み、スイッチ回路は、モード信号に基づいて第１のモードまたは第２のモードのうちのいずれかで選択的に動作するように構成され、第１のモードでは、スイッチ回路は、第１のメモリ回路を第１のマイクロプロセッサのメモリインタフェースに連結し、且つ第２のメモリ回路を第２のマイクロプロセッサのメモリインタフェースに連結し、第２のモードでは、スイッチ回路は、第１または第２のメモリ回路を第１または第２のマイクロプロセッサのいずれかのメモリインタフェースに選択的に連結する。
【００３６】
このような回路のうちのあるものでは、制御回路がロックステップで第１のマイクロプロセッサを第２のマイクロプロセッサと同期させるときに、スイッチ回路が第２のモードで動作する。
【００３７】
このような回路のうちのあるものでは、スイッチ回路は、制御回路と第１および第２のメモリ回路との間に連結されたマルチプレクシング／デマルチプレクシング回路を含む。
【００３８】
このような回路のうちのあるものでは、マルチプレクシング／デマルチプレクシング回路は、第１または第２のマイクロプロセッサのいずれかのメモリバスから得られる信号に連結された制御入力を含み、第２のモードでは、スイッチ回路は、制御入力に基づいて第１または第２のメモリ回路を第１または第２のマイクロプロセッサのいずれかのメモリインタフェースに選択的に連結する。
【００３９】
このような回路のうちのあるものでは、第１および第２のメモリ回路のそれぞれが、少なくとも１つのランダムアクセスメモリ（ＲＡＭ）回路を含む。
【００４０】
このような回路のうちのあるものでは、各ＲＡＭ回路は、第１または第２のマイクロプロセッサのいずれかによる使用中に常に有効であるメモリの連続領域を形成する。
【００４１】
このような回路のうちのあるものでは、第１および第２のメモリ回路の各々が、誤り訂正符号（ＥＣＣ）メモリ回路を含む。
【００４２】
別の実施例では、集積回路は、第１及び第２のマイクロプロセッサと、第１及び第２のマイクロプロセッサに連結された制御回路と、第１及び第２のメモリ回路と、第１のメモリ回路、第２のメモリ回路、及び制御回路に連結され、モード信号を入力として有するスイッチ回路と、を備える集積回路を含み、スイッチは、モード信号に基づいて第１のモードまたは第２のモードのいずれかで選択的に動作するように構成され、第１のモードでは、スイッチ回路は、第１のメモリ回路を第１のマイクロプロセッサのメモリインタフェースに連結し、且つ第２のメモリ回路を第２のマイクロプロセッサのメモリインタフェースに連結し、第２のモードにおいて、スイッチ回路は、第１または第２のメモリ回路を第１または第２のマイクロプロセッサのいずれかのメモリインタフェースに選択的に連結する。
【００４３】
このような集積回路のうちのあるものでは、制御回路がロックステップで第１のマイクロプロセッサを第２のマイクロプロセッサと同期させるときに、スイッチ回路が第２のモードで動作する。
【００４４】
このような集積回路のうちのあるものでは、第１および第２のメモリ回路のそれぞれが、少なくとも１つのランダムアクセスメモリ（ＲＡＭ）回路を含む。
【００４５】
このような集積回路のうちのあるものでは、各ＲＡＭ回路は、第１または第２のマイクロプロセッサのいずれかによる使用中に常に有効であるメモリの連続領域を形成する。
【００４６】
このような集積回路のうちのあるものでは、第１および第２のメモリ回路の各々が、誤り訂正符号（ＥＣＣ）メモリ回路を含む。
【００４７】
このような集積回路のあるものは、スイッチ回路にモード信号を供給するように構成された制御ロジックをさらに含むことができる。
【００４８】
別の実施例では、メモリを管理する方法が提供され得る。
【００４９】
例えば、各々が制御回路に連結された第１のマイクロプロセッサと第２のマイクロプロセッサとの間でメモリを管理する方法は、第１および第２のマイクロプロセッサの各々が独立して動作しない第１のモードになるように、第１のマイクロプロセッサおよび第２のマイクロプロセッサを構成することと、第１のマイクロプロセッサに関連付けられた第１のメモリと、第２のマイクロプロセッサに関連付けられた第２のメモリとを、結合されたアドレス空間を有する結合メモリになるように構成することと、第１または第２のメモリを第１または第２のマイクロプロセッサのいずれかに、当該第１または第２のマイクロプロセッサが結合メモリにアクセスしているときに、選択的に連結することと、を含み得る。
【００５０】
このような方法のうちのあるものでは、第２のマイクロプロセッサは、第１のモードにおいて、第１のマイクロプロセッサとロックステップで動作する。
【００５１】
このような方法のうちのあるものでは、選択的に連結するステップは、第１または第２のマイクロプロセッサによる結合メモリへの各アクセスのためのアドレスの一部に基づいて、第１のメモリまたは第２のメモリのいずれかを選択することを含む。
【００５２】
このような方法のうちのあるものでは、第１および第２のメモリの各々は、少なくとも１つのランダムアクセスメモリ（ＲＡＭ）回路を含む。
【００５３】
このような方法のうちのあるものでは、各ＲＡＭ回路は、第１または第２のマイクロプロセッサのいずれかによる使用中に常に有効であるメモリの連続領域を形成する。
【００５４】
このような方法のうちのあるものでは、第１および第２のメモリの各々が、誤り訂正符号（ＥＣＣ）メモリ回路を含む。
【００５５】
このような方法のうちのあるものは、第１のマイクロプロセッサと第２のマイクロプロセッサの各々が独立して動作する第２のモードになるように、第１のマイクロプロセッサと第２のマイクロプロセッサを構成することと、第１のマイクロプロセッサと共に使用するために第１のメモリを構成し、第２のマイクロプロセッサと共に使用するために第２のメモリを構成することと、第１のメモリを第１のマイクロプロセッサに連結し、第２のメモリを第２のマイクロプロセッサに連結することと、を更に含み得る。上記は本開示の例に向けられているが、本開示の他のおよびさらなる例が、その基本的な範囲から逸脱することなく考案され得、その範囲は、以下の特許請求の範囲によって決定される。
【図１】
0006757717.tif 000002
【図２】
0006757717.tif 000003
【図３】
0006757717.tif 000004
【図４】
0006757717.tif 000005
【図５】
0006757717.tif 000006