(57)【要約】【課題】プロセッサコアのローカルメモリや共有メモリの所要のアドレスに対して小さな回路規模で排他制御を行うことができるデータプロセッサを提供する。【解決手段】要求に従ってバスロック設定と解除が可能にされるシステムバス（５）を共有する複数個のプロセッサコア（２０，４０）が相互に互いの内部リソース(２２，４２)を共有するデータプロセッサ（１）において、プロセッサコアが内部リソースの第１アドレス（ロック変数割り当てアドレス）へアクセスを行うときバスロックの要求を伴って当該アクセス要求をシステムバスに出力することによりシステムバスにバスをロックさせると共にシステムバスから当該プロセッサコアに帰還されるのを待って当該アクセス要求を処理し、プロセッサコアが内部の第２アドレスへアクセスを行うとき当該アクセス要求をプロセッサコアの内部で処理する。【選択図】図２
2011221931.tif 000002
【特許請求の範囲】
【請求項１】
排他制御状態を維持するバスロックの設定と解除が可能にされるシステムバスを共有する複数個のプロセッサコアが互いに他の内部のメモリリソースを共有するデータプロセッサであって、
前記プロセッサコアが内部のメモリリソースの第１アドレスへアクセスを行うときバスロックの要求を伴って当該アクセス要求を前記システムバスに出力することによりシステムバスにバスをロックさせると共にシステムバスから帰還されるのを待ってプロセッサコアが当該アクセス要求を処理し、
プロセッサコアが内部の第２アドレスへアクセスを行うとき当該アクセス要求をプロセッサコアの内部で処理する、データプロセッサ。
【請求項２】
プロセッサコアが他のプロセッサコアの内部のメモリリソースの第１アドレスへアクセスを行うとき、当該プロセッサコアはバスロックの要求を伴って当該アクセス要求を前記システムバスに出力する、請求項１記載のデータプロセッサ。
【請求項３】
前記複数個のプロセッサコアはリソースを共有し、リソースに対応するロック変数を操作して当該リソースに対する排他的な使用権の獲得と解放を行ない、
前記第１アドレスは前記リソースに対する排他的な使用権の獲得と解放を行なうためのロック変数の格納に割り当てられるアドレスである、請求項２記載のデータプロセッサ。
【請求項４】
前記プロセッサコアは、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードしてロック状態が解放されていることを検出したとき前記ロック変数にロック状態を示す値を書き込んで、当該ロック変数のリソースに対するアクセス権を獲得し、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う、請求項３記載のデータプロセッサ。
【請求項５】
前記プロセッサコアは、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードして既にロック状態であることを検出したとき前記ロック変数にロック状態を示す値を書き込んでロック状態の解放を待ち、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う、請求項４記載のデータプロセッサ。
【請求項６】
複数個のプロセッサコアと、
前記複数個のプロセッサコアに接続されていて排他制御状態を維持するバスロックの設定と解除が可能にされるバス調停回路を有するシステムバスと、を有し、
前記プロセッサコアは、命令を実行する中央処理装置と、前記中央処理装置又は前記システムバスからアクセスされるローカルメモリと、前記中央処理装置又は前記システムバスから供給されるアクセス要求に応答するバスインタフェース回路とを有し、
前記バスインタフェース回路は、前記中央処理装置による前記ローカルメモリへのアクセス要求が第１アドレスへのアクセス要求であるときバスロックの要求を伴って当該アクセス要求を前記バス調停回路に与えると共に前記バス調停回路からアクセス要求が帰還されるのを待って前記ローカルメモリに伝達し、前記中央処理装置による前記ローカルメモリへのアクセスが第２アドレスへのアクセス要求であるときシステムバスを通さずに当該アクセス要求を前記ローカルメモリに伝達する、データプロセッサ。
【請求項７】
前記複数個のプロセッサはリソースを共有し、リソースに対応するロック変数を操作して当該リソースに対する排他的な使用権の獲得と解放を行ない、
前記第１アドレスは前記ロック変数の格納に割り当てられるアドレスである、請求項６記載のデータプロセッサ。
【請求項８】
前記中央処理装置は、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードしてロック状態が解放されていることを検出したとき前記ロック変数にロック状態を示す値を書き込んで、当該ロック変数のリソースに対するアクセス権を獲得し、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う、請求項７記載のデータプロセッサ。
【請求項９】
前記中央処理装置は、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードして既にロック状態であることを検出したとき前記ロック変数にロック状態を示す値を書き込んでロック状態の解放を待ち、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う、請求項８記載のデータプロセッサ。
【請求項１０】
前記システムバスは、前記バス調停回路としてパケットルータを有するスプリットトランザクションバスである、請求項９記載のデータプロセッサ。
【請求項１１】
前記パケットルータは、前記イニシエータからバスロックの指示を伴うリクエストパケットを受け取ったとき、同じイニシエータからバスロックの解除を伴うリクエストパケットを受け取るまで他のイニシエータからのリクエストパケットを同じターゲットに転送することを抑止する、請求項１０記載のデータプロセッサ。
【請求項１２】
前記バスインタフェース回路は、前記中央処理装置からのアクセス要求が前記ローカルメモリの第１アドレスであるか、前記ローカルメモリの第２アドレスであるか、又はそれ以外の第３アドレスであるかを判別するアドレス判定回路を有し、
前記バスインタフェース回路は、前記アドレス判定回路で判定された第３アドレスへのアクセス要求を前記バス調停回路に与え、前記アドレス判定回路で判定された第１アドレスへのアクセス要求をシステムバス経由のアクセスと同等に前記バス調停回路に与えて、第１アドレスへのアクセス要求に応答するためのアクセスにシステムバスを経由させ、前記アドレス判定回路で判定された第２アドレスへのアクセス要求を前記ローカルメモリに与える、請求項６記載のデータプロセッサ。
【請求項１３】
前記第１アドレスと第２アドレスが夫々書換え可能にセットされるアドレスレジスタを有し、
前記アドレス判定回路は、前記アドレスレジスタにセットされたアドレスに基づいて前記中央処理装置によるアクセスアドレスが前記第1アドレス乃至第３アドレスの何れに対するアクセスであるかを判別する、請求項１２記載のデータプロセッサ。
【請求項１４】
前記アドレスレジスタは前記中央処理装置のアドレス空間にマッピングされる、請求項１３記載のデータプロセッサ。
【請求項１５】
前記プロセッサコアは前記バスインタフェース回路に接続されるキャッシュメモリを有し、前記キャッシュメモリは前記第１アドレスをキャッシュ非対象とする、請求項６記載のデータプロセッサ。
【請求項１６】
内部バスを共有する複数個のプロセッサコアがバスインタフェース回路に接続されるメモリリソースを共有すると共に前記バスインタフェース回路に接続されるシステムバスの回路モジュールも前記メモリリソースを共有するデータプロセッサであって、
前記システムバスは排他制御状態を維持するバスロックの設定と解除が可能にされ、
前記プロセッサコアが前記メモリリソースの第１アドレスへアクセスを行うとき前記バスインタフェース回路はバスロックの要求を伴って当該アクセス要求を前記システムバスに伝達することによりシステムバスにバスをロックさせると共にシステムバスから帰還されるのを待って前記メモリリソースに供給し、
プロセッサコアが前記メモリリソースの第２アドレスへアクセスを行うとき前記バスインタフェース回路は当該アクセス要求をシステムバスを通らずに前記メモリリソースに伝達する、データプロセッサ。
【請求項１７】
前記複数個のプロセッサコアはリソースを共有し、リソースに対応するロック変数を操作して当該リソースに対する排他的な使用権の獲得と解放を行ない、
前記第１アドレスは前記リソースに対する排他的な使用権の獲得と解放を行なうためのロック変数の格納に割り当てられるアドレスである、請求項１６記載のデータプロセッサ。
【請求項１８】
前記プロセッサコアは、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードしてロック状態が解放されていることを検出したとき前記ロック変数にロック状態を示す値を書き込んで、当該ロック変数のリソースに対するアクセス権を獲得し、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う、請求項１７記載のデータプロセッサ。
【請求項１９】
前記プロセッサコアは、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードして既にロック状態であることを検出したとき前記ロック変数にロック状態を示す値を書き込んでロック状態の解放を待ち、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う、請求項１８記載のデータプロセッサ。
【請求項２０】
複数個のプロセッサコアと、
前記複数個のプロセッサコアに接続され内部バス調停回路を有する内部バスと、
排他制御状態を維持するバスロックの設定と解除が可能にされるシステムバス調停回路を有するシステムバスと、
前記内部バス及び前記システムバスに接続され前記プロセッサコア又は前記システムバスから供給されるアクセス要求に応答するバスインタフェース回路と、
前記バスインタフェース回路に接続された共有メモリと、を有し、
前記バスインタフェース回路は、前記プロセッサコアによる前記共有メモリへのアクセスが第１アドレスへのアクセス要求であるときバスロックの要求を伴って当該アクセス要求を前記システムバス調停回路に与えると共にシステムバス調停回路から帰還されるのを待って当該アクセス要求を前記共有メモリに伝達し、前記プロセッサコアによる前記共有メモリのアクセス要求が第２アドレスへのアクセス要求であるとき前記システムバスを通さずに当該アクセス要求を前記共有メモリに伝達する、データプロセッサ。
【請求項２１】
前記複数個のプロセッサはリソースを共有し、リソースに対応するロック変数を操作して当該リソースに対する排他的な使用権の獲得と解放を行ない、
前記第１アドレスは前記ロック変数の格納に割り当てられるアドレスである、請求項２０記載のデータプロセッサ。
【請求項２２】
前記プロセッサコアは、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードしてロック状態が解放されていることを検出したとき前記ロック変数にロック状態を示す値を書き込んで、当該ロック変数のリソースに対するアクセス権を獲得し、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う、請求項２１記載のデータプロセッサ。
【請求項２３】
前記プロセッサコアは、自又は他のプロセッサコアにおける第1アドレスからロック変数をリードして既にロック状態であることを検出したとき前記ロック変数にロック状態を示す値を書き込んでロック状態の解放を待ち、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う、請求項２２記載のデータプロセッサ。
【請求項２４】
前記システムバスは、前記システムバス調停回路としてパケットルータを有するスプリットトランザクションバスである、請求項２３記載のデータプロセッサ。
【請求項２５】
前記パケットルータは、前記イニシエータからバスロックの指示を伴うリクエストパケットを受け取ったとき、同じイニシエータからバスロックの解除を伴うリクエストパケットを受け取るまで他のイニシエータからのリクエストパケットを同じターゲットに転送することを抑止する、請求項２４記載のデータプロセッサ。
【請求項２６】
前記バスインタフェース回路は、前記プロセッサコアからのアクセス要求が前記共有メモリの第１アドレスであるか、前記共有メモリの第２アドレスであるか、又はそれ以外の第３アドレスであるかを判別するアドレス判定回路を有し、
前記バスインタフェース回路は、前記アドレス判定回路で判定された第３アドレスへのアクセス要求を前記システムバス調停回路に与え、前記アドレス判定回路で判定された第１アドレスへのアクセス要求をシステムバス経由のアクセスと同等に前記システムバス調停回路に与えて、第１アドレスへのアクセス要求に応答するためのアクセスにシステムバスを経由させ、前記アドレス判定回路で判定された第２アドレスへのアクセス要求を前記共有メモリに与える、請求項２０記載のデータプロセッサ。
【請求項２７】
前記第１アドレスと第２アドレスが夫々書換え可能にセットされるアドレスレジスタを有し、
前記アドレス判定回路は、前記アドレスレジスタにセットされたアドレスに基づいて前記プロセッサコアによるアクセスアドレスが前記第1アドレス乃至第３アドレスの何れに対するアクセスであるかを判別する、請求項２６記載のデータプロセッサ。
【請求項２８】
前記アドレスレジスタは前記プロセッサコアのアドレス空間にマッピングされる、請求項２７記載のデータプロセッサ。
【請求項２９】
リソースを共有する複数個のプロセッサコアがリソースに対応するロック変数を操作して当該リソースに対する排他的な使用権の獲得と解放を行なうデータプロセッサであって、
前記複数個のプロセッサコアは、排他制御状態を維持するバスロックの設定と解除が可能にされるバス調停回路を有するシステムバスに共通接続され、
前記プロセッサコアは、命令を実行する中央処理装置と、アドレス変換バッファと、前記中央処理装置又は前記システムバスからアクセスされるローカルメモリと、前記中央処理装置又は前記システムバスから供給されるアクセス要求に応答するバスインタフェース回路と、を有し、
前記アドレス変換バッファは、中央処理装置が出力する論理アドレスを物理アドレスに変換するアドレス変換エントリを有し、前記アドレス変換エントリは排他制御ビットを有し、
前記バスインタフェース回路は、前記ローカルメモリの物理アドレスが有効な排他制御ビットを伴うとき、バスロックの要求を伴って当該物理アドレスへのアクセス要求を前記バス調停回路に与えると共に前記バス調停回路から帰還されるのを待って当該物理アドレスへのアクセス要求を前記ローカルメモリに伝達し、前記ローカルメモリの物理アドレスが有効な排他制御ビットを伴わないときはシステムバスを通さずに当該物理アドレスへのアクセス要求を前記ローカルメモリに伝達する、データプロセッサ。
【請求項３０】
バス調停回路を有するシステムバスにリソースとプロセッサコアが共通接続されたデータプロセッサであって、
前記システムバスとプロセッサコアとの間、及び前記システムバスとリソースとの間に夫々アドレス管理回路を有し、
前記アドレス管理回路はシステムバスから供給されるアクセス要求が所定の条件を満足するとき当該アクセス要求を後段に伝達し、
前記プロセッサコアは、命令を実行する中央処理装置と、前記中央処理装置又は前記システムバスからアクセスされるローカルメモリと、前記中央処理装置又は前記システムバスから供給されるアクセス要求に応答するバスインタフェース回路とを有し、
前記バスインタフェース回路は、前記中央処理装置による前記ローカルメモリへのアクセス要求が第１アドレスへのアクセス要求であるとき当該アクセス要求を一旦前記バス調停回路に与えて前記アドレス管理回路に伝達させ、前記中央処理装置による前記ローカルメモリへのアクセス要求が第２アドレスへのアクセス要求であるときはシステムバスを通さずに当該アクセス要求を当該プロセッサコアの前記ローカルメモリに伝達する、データプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数個のプロセッサコアを有するデータプロセッサにおけるバスインタフェース技術に関し、例えばプロセッサコアがロック変数を操作してリソースに対する排他的な使用権の獲得と解放を行なうデータプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
複数個のプロセッサコアを有するデータプロセッサ（マルチコアプロセッサ）においてプロセッサコアの間で共有するデータを格納するのにプロセッサコアに配置されたローカルメモリ、あるいは複数個のプロセッサコアが共有する共有バスに接続された共有メモリを利用する場合がある。データプロセッサの外部メモリを用いる場合に比べてはアクセスレイテンシを格段に短くすることができる。
【０００３】
特許文献１にはマルチコアプロセッサにおいて主記憶ユニットが接続する主記憶バスに夫々キャッシュメモリを介在させてプロセッサが接続され、夫々のプロセッサユニットはキャッシュメモリを介して主記憶ユニットのデータを共有する構成が示される。この構成においてもキャッシュヒットである限りアクセスレイテンシを短くすることができる。特に特許文献１では、データの一貫性を保つために一つのプロセッサに主記憶バスの使用を認め、その他のプロセッサが主記憶バスを一時的に使用できないようにするバスロックを行わずに、排他制御を行う技術が開示される。即ち、排他制御が要求されているアドレスに対するバスからのアクセスに対しては抑制し、それ以外のアクセスに対するバスからのアクセスに対して許容するようにして、アクセス要求とそれに対するレスポンスとを分離するセパレートトランザクション方式のバスプロトコルを採用する場合にも、高速な排他制御を行おうとするものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−１６１２２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術は、プロセッサとバスの間に配置されたキャッシュメモリがプロセッサから出力されるロック信号とアクセスアドレスを用いた制御機能により実現するものであり、キャッシュメモリのキャッシュ制御機能が必須となる。キャッシュ非対象のアドレスに対してはその排他制御を適用することができない。
【０００６】
本発明の目的は、プロセッサコアのローカルメモリや共有メモリの所要のアドレスに対して小さな回路規模で排他制御を行うことができるデータプロセッサを提供することにある。
【０００７】
本発明の目的は、プロセッサコアのローカルメモリや共有メモリに対する所要のアクセスに対して小さな回路規模で排他制御を行うことができるデータプロセッサを提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
すなわち、排他制御状態を維持するバスロック設定と解除が可能にされるシステムバスを共有する複数個のプロセッサコアが互いに他の内部リソースを共有するデータプロセッサにおいて、プロセッサコアが内部リソースの第１アドレスへアクセスを行うときバスロックの要求を伴って当該アクセス要求をシステムバスに出力することによりシステムバスにバスをロックさせると共にシステムバスから当該プロセッサコアに帰還されるのを待って当該アクセス要求を処理し、プロセッサコアが内部の第２アドレスへアクセスを行うとき当該アクセス要求をプロセッサコアの内部で処理する。
【００１１】
これにより、プロセッサコアは他のプロセッサコアの内部リソースの第１アドレスに対してはバスロックを伴ったアクセス要求を発行すればシステムバスを介して連続的に排他的なアクセスを行うことができる。更に、プロセッサコアは自らの内部リソースの第１アドレスに対してもバスロックを伴ったアクセス要求を発行すればシステムバスをロックして連続的に排他的なアクセスを行うことができる。プロセッサコアは自らの内部リソースの第２アドレスに対しては内部だけで高速なアクセス動作を行うことが保証されている。
【発明の効果】
【００１２】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１３】
すなわち、プロセッサコアのローカルメモリや共有メモリの所要のアドレスに対して小さな回路規模で排他制御を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】図１は本発明の一実施の形態に係るデータプロセッサの全体的な構成を例示するブロック図である。
【図２】図２は実施の形態１に係るマルチプロセッサコア（ＭＬＴＰＲＣＲ）を例示するブロック図である。
【図３】図３はバスロックを併用したスピンロックによる排他制御のフローチャートである。
【図４】図４はバスインタフェース回路がＣＰＵによるローカルメモリへのアクセス要求がロック変数へのアクセス要求であるときバスロックの要求を伴って当該アクセス要求をシステムバスを経由してパケットルータに与えると共に前記パケットルータからアクセス要求が帰還されるのを待って前記ローカルメモリに伝達されるときのアクセス経路を示す説明図である。
【図５】図５はＣＰＵによるローカルメモリへのアクセスがロック変数以外のアドレスへのアクセス要求であるときシステムバスを通さずに当該アクセス要求を前記ローカルメモリに伝達するときのアクセス経路を示す説明図である。
【図６】図６はＣＰＵがシステムバスを経由して他のプロセッサコアのローカルメモリをアクセスするときバスインタフェース回路がそのアクセス要求をシステムバスに出力するときのアクセス経路を示す説明図である。
【図７】図７はシステムバスを経由する他のプロセッサコアからローカルメモリに対するアクセスに対してバスインタフェース回路が内部のＣＰＵとのアクセス競合を回避する制御を行ってそのアクセス要求に答える制御を行うときのアクセス経路を示す説明図である。
【図８】図８はバスロックを併用したスピンロックによるロック変数の排他制御、それによって獲得した使用権に基づくリソースの排他的使用、及び排他的使用後のロック変数操作による排他的使用権の解除について一連の動作を例示するフローチャートである。
【図９】図９は図８のステップＳ１０〜Ｓ２１におけるプロセッサコアとシステムバスとの間におけるデータ転送動作のタイミングチャートである。
【図１０】図１０はバスインタフェース回路の詳細を例示するブロック図である。
【図１１】図１１は排他制御領域指定レジスタのセットデータを例示する説明図である。
【図１２】図１２は排他制御領域指定レジスタ及びＬＲＡＭ領域指定レジスタの設定状態に従ったプロセッサコアのアクセス形態を整理して示した説明図である。
【図１３】図１３はプロセッサコアのローカルメモリに対してバスロックによる排他制御が可能にされたデータプロセッサの全体的なアドレス空間においてバスロックによる排他制御領域を例示したアドレスマップである。
【図１４】図１４は実施の形態２に係るマルチプロセッサコア（ＭＬＴＰＲＣＲ）のブロック図である。
【図１５】図１５はＣＰＵが共有メモリのロック変数へのアクセス要求とバスロックの要求を発行したときバスインタフェース回路がバスロックの要求を伴って当該アクセス要求のリクエストパケットを内部バスに出力し、内部バスのパケットルータがその要求を受け入れると当該リクエストパケットをバスインタフェース回路に与えると共にその伝播経路にバスロックを設定するときのアクセス経路を示す説明図である。
【図１６】図１６はＣＰＵによる共有メモリへのアクセスがそれロック変数以外のアドレスへのアクセス要求であるときはバスインタフェース回路がシステムバスを通さずに当該アクセス要求を共有メモリに伝達するときのアクセス経路を示す説明図である。
【図１７】図１７はＣＰＵがシステムバスを経由して他のリソースをアクセスするときバスインタフェース回路がそのアクセス要求をシステムバスに出力するときのアクセス経路を示す説明図である。
【図１８】図１８はシステムバスを経由する他のイニシエータから共有メモリのアクセスに対してバスインタフェース回路がＣＰＵ等の内部バス上のバスアクセス主体とのアクセス競合を回避する制御を行ってそのアクセス要求に答える制御を行うときのアクセス経路を示す説明図である。
【図１９】図１９はバスインタフェース回路の詳細を例示するブロック図である。
【図２０】図２０は排他制御領域指定レジスタ及びＳＨＲＡＭ領域指定レジスタの設定状態に従ったプロセッサコアのアクセス形態を整理して示した説明図である。
【図２１】図２１はプロセッサコアのローカルメモリに対してバスロックによる排他制御が可能にされたデータプロセッサの全体的なアドレス空間においてバスロックによる排他制御領域を示したアドレスマップである。
【図２２】図２２はＳＤＲＡＭが保有するロック変数のアドレステーブルの説明図である。
【図２３】図２３は実施の形態４に係るデータプロセッサを例示するブロック図である。
【図２４】図２４はＭＭＵが保有するアドレス変換バッファ（ＴＬＢ）のＴＬＢエントリを例示する説明図である。
【図２５】図２５は本発明の実施の形態５に係るデータプロセッサを例示するブロック図である。
【図２６】図２６にはアドレス管理回路の構成を例示するブロック図である。
【図２７】図２７はバスロックによる排他制御を行う領域がＭＥＭ，ＳＤＲＡＭ，ＳＲＡＭに限定されている場合を比較例として示すアドレスマップである。
【図２８】図２８はロック変数をＳＤＲＡＭの特定のアドレス領域にマッピングした状態を比較例として示す説明図である。
【図２９】図２９はＳＤＲＡＭにマッピングされたロック変数とリソースの関係を比較例として示した説明図である。
【発明を実施するための形態】
【００１５】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１６】
〔１〕＜プロセッサコア内部のアクセス動作における外部バスのバスロック選択＞
本発明の代表的な実施の形態に係るデータプロセッサ（１）は、排他制御状態を維持するバスロックの設定と解除が可能にされるシステムバス（５）を共有する複数個のプロセッサコア(２０，４０)が互いに他方の内部のメモリリソース（２２，４２）を共有する。前記プロセッサコアが内部のメモリリソースの第１アドレス（ロック変数割り当てアドレス）へアクセスを行うときバスロックの要求を伴って当該アクセス要求を前記システムバスに出力することによりシステムバスにバスをロックさせると共にシステムバスから帰還されるのを待ってプロセッサコアが当該アクセス要求を処理する。また、プロセッサコアが内部の第２アドレス（ロック変数非割り当てアドレス）へアクセスを行うとき当該アクセス要求をプロセッサコアの内部で処理する。
【００１７】
これにより、プロセッサコアは他のプロセッサコアの内部リソースの第１アドレスに対してはバスロックを伴ったアクセス要求を発行すればシステムバスを介して連続的に排他的なアクセスを行うことができる。更に、プロセッサコアは自らの内部リソースの第１アドレスに対してもバスロックを伴ったアクセス要求を発行すればシステムバスをロックして連続的に排他的なアクセスを行うことができる。自らの第１アドレスに対するアクセスに対してもシステムバスのバスロック機能を利用できるようにしたからである。それを実現するのに、自らの特定の内部アクセスに対してもバスロックの要求を伴ってシステムバスにアクセス要求を出力するという構成を採用したから、プロセッサコアの自らの内部メモリリソースに対する排他制御を小さな回路規模で実現することができる。また、プロセッサコアは自らの内部リソースの第２アドレスに対しては内部だけで高速なアクセス動作を行うことが保証されている。
【００１８】
〔２〕＜外部からプロセッサコア内部へのアクセス動作における外部バスのバスロック選択＞
項１のデータプロセッサにおいて、プロセッサコアが他のプロセッサコアの内部のメモリリソースの第１アドレスへアクセスを行うとき、当該プロセッサコアはバスロックの要求（Ｌｏｃｋ）を伴って当該アクセス要求を前記システムバスに出力する。
【００１９】
〔３〕＜ロック変数の格納に割り当てられた第１アドレス＞
項１又は２のデータプロセッサにおいて、前記複数個のプロセッサコアがリソースを共有し、リソースに対応するロック変数（ＦｌａｇＮ）を操作して当該リソースに対する排他的な使用権の獲得と解放を行なうとき、前記第１アドレスは前記リソースに対する排他的な使用権の獲得と解放を行なうためのロック変数の格納に割り当てられるアドレスである。
【００２０】
ロック変数に対する操作に複数回のアクセスを要するとき、その間、前記バスロックによる排他制御状態を維持することが可能になる。
【００２１】
〔４〕＜解放状態のロック変数の操作＞
項３のデータプロセッサにおいて、前記プロセッサコアは、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードしてロック状態が解放されていることを検出したとき前記ロック変数にロック状態を示す値を書き込んで、当該ロック変数のリソースに対するアクセス権を獲得し、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う。
【００２２】
自又は他のプロセッサコアにおけるロック変数をリード・モディファイ・ライトによって操作する間、前記バスロックによる排他制御状態を維持することが可能になる。
【００２３】
〔５〕＜ロック状態のロック変数の操作＞
項４のデータプロセッサにおいて、前記プロセッサコアは、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードして既にロック状態であることを検出したとき前記ロック変数にロック状態を示す値を書き込んでロック状態の解放を待ち、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う。
【００２４】
ロック状態を確保できなかった場合もロック状態を確保できる場合と同様の手順でロック変数に対するリード・モディファイ・ライトの操作を行うことができる。
【００２５】
〔６〕＜プロセッサコア内部のアクセス動作における外部バスのバスロック選択＞
本発明の別の実施の形態の係るデータプロセッサ（１）は、複数個のプロセッサコア(２０，４０)と、前記複数個のプロセッサコアに接続されていて排他制御状態を維持するバスロックの設定と解除が可能にされるバス調停回路（６）を有するシステムバス（５）と、を有する。前記プロセッサコアは、命令を実行する中央処理装置(ＣＰＵ、２１，４１)と、前記中央処理装置又は前記システムバスからアクセスされるローカルメモリ（２２，４２）と、前記中央処理装置又は前記システムバスから供給されるアクセス要求に応答するバスインタフェース回路（２５，４５）とを有する。前記バスインタフェース回路は、前記中央処理装置による前記ローカルメモリへのアクセス要求が第１アドレス（ロック変数割り当てアドレス）へのアクセス要求であるときバスロックの要求を伴って当該アクセス要求を前記バス調停回路に与えると共に前記バス調停回路からアクセス要求が帰還されるのを待って前記ローカルメモリに伝達し、前記中央処理装置による前記ローカルメモリへのアクセスが第２アドレス（ロック変数非割り当てアドレス）へのアクセス要求であるときシステムバスを通さずに当該アクセス要求を前記ローカルメモリに伝達する。
【００２６】
このように、プロセッサコアは自らのローカルメモリの第２アドレスに対しては内部だけで高速なアクセス動作を保証することができ、自らのローカルメモリの第１アドレスに対してはバスロックを伴ったアクセス要求を発行することによってシステムバスをロックした連続的な排他的アクセスを可能とする。項１と同様に、自らのローカルメモリの内部アクセスに対してもバスロックの要求を伴ってシステムバスにアクセス要求を出力するという構成を採用したから、プロセッサコアの自らのローカルメモリに対する排他制御を小さな回路規模で実現することができる。
【００２７】
〔７〕＜ロック変数の格納に割り当てられる第1アドレス＞
項６のデータプロセッサにおいて、前記複数個のプロセッサはリソースを共有し、リソースに対応するロック変数（ＦｌａｇＮ）を操作して当該リソースに対する排他的な使用権の獲得と解放を行ない、前記第１アドレスは前記ロック変数の格納に割り当てられるアドレスである。
【００２８】
ロック変数に対する操作に複数回のアクセスを要するとき、その間、前記バスロックによる排他制御状態を維持することが可能になる。
【００２９】
〔８〕＜解放状態のロック変数の操作＞
項７のデータプロセッサにおいて、前記中央処理装置は、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードしてロック状態が解放されていることを検出したとき前記ロック変数にロック状態を示す値を書き込んで、当該ロック変数のリソースに対するアクセス権を獲得し、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う。
【００３０】
自又は他のプロセッサコアにおけるロック変数をリード・モディファイ・ライトによって操作する間、前記バスロックによる排他制御状態を維持することが可能になる。
【００３１】
〔９〕＜ロック状態のロック変数の操作＞
項８のデータプロセッサにおいて、前記中央処理装置は、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードして既にロック状態であることを検出したとき前記ロック変数にロック状態を示す値を書き込んでロック状態の解放を待ち、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う。
【００３２】
ロック状態を確保できなかった場合もロック状態を確保できる場合と同様の手順でロック変数に対するリード・モディファイ・ライトの操作を行うことができる。
【００３３】
〔１０〕＜スプリットトランザクションバス＞
項６乃至９のデータプロセッサにおいて、前記システムバスは、前記バス調停回路としてパケットルータ（６）を有するスプリットトランザクションバス（５）である。
【００３４】
このバスは、イニシエータからのアクセス要求をターゲット毎に分離し、また、アクセス要求とその応答をリクエストパケットとレスポンスパケットに分離するから、バスアクセス効率の向上が実現される。
【００３５】
〔１１〕＜ロック信号＞
項１０のデータプロセッサにおいて、前記パケットルータは、前記イニシエータからバスロックの指示（Ｌｏｃｋ）を伴うリクエストパケットを受け取ったとき、同じイニシエータからバスロックの解除を伴うリクエストパケットを受け取るまで他のイニシエータからのリクエストパケットを同じターゲットに転送することを抑止する。
【００３６】
リクエストパケットとレスポンスパケットのルーティングの制御を行うパケットルータを用いて、バスロックの設定と解除を制御することができる。
【００３７】
〔１２〕＜アドレス判定回路＞
項６乃至１１のデータプロセッサにおいて、前記バスインタフェース回路は、前記中央処理装置からのアクセス要求が前記ローカルメモリの第１アドレスであるか、前記ローカルメモリの第２アドレスであるか、又はそれ以外の第３アドレスであるかを判別するアドレス判定回路(６０)を有する。前記バスインタフェース回路は、前記アドレス判定回路で判定された第３アドレスへのアクセス要求を前記バス調停回路に与え、前記アドレス判定回路で判定された第１アドレスへのアクセス要求をシステムバス経由のアクセスと同等に前記バス調停回路に与えて、第１アドレスへのアクセス要求に応答するためのアクセスにシステムバスを経由させ、前記アドレス判定回路で判定された第２アドレスへのアクセス要求を前記ローカルメモリに与える。
【００３８】
アドレス判定回路を設けることによって、自らのローカルメモリの特定の内部アクセスに対してバスロックの要求を伴ったアクセス要求をシステムバスに出力する構成を特に容易に実現することができる。
【００３９】
〔１３〕＜第１、２アドレスの設定用レジスタ＞
項１２のデータプロセッサにおいて、前記第１アドレスと第２アドレスが夫々書換え可能にセットされるアドレスレジスタ（６３，６４）を有する。前記アドレス判定回路は、前記アドレスレジスタにセットされたアドレスに基づいて前記中央処理装置によるアクセスアドレスが前記第1アドレス乃至第３アドレスの何れに対するアクセスであるかを判別する。
【００４０】
前記第１アドレス及び第２アドレスをプログラマブルに設定可能であるから、ロック変数の割り当てやローカルメモリに対する高速アクセスエリアの設定を、データプロセッサを用いるデータ処理システムの構成に応じて任意に決定する自由度が増す。
【００４１】
〔１4〕＜ＣＰＵによるアドレスレジスタのセット＞
項１３のデータプロセッサにおいて、前記アドレスレジスタは前記中央処理装置のアドレス空間にマッピングされる。
【００４２】
前記第１アドレス及び第２アドレスの設定を中央処理装置のリセット処理プログラム等を用いて容易に行うことができる。
【００４３】
〔１５〕＜ＣＡＣＨＥ内蔵＞
項６乃至１４の何れかのデータプロセッサにおいて、前記プロセッサコアは前記バスインタフェース回路に接続されるキャッシュメモリ（２３，４３）を有し、前記キャッシュメモリは前記第１アドレスをキャッシュ非対象とする。
【００４４】
キャッシュミスのペナルティによる一時的なスループットの低下が発生したとしても、キャッシュメモリを持つことによって前記ローカルメモリの記憶容量に比べて大きなメモリ空間に対する高速アクセスが可能になる。キャッシュミスのペナルティによる一時的なスループットの発生を回避すべきデータに対してはローカルメモリの第２アドレスに格納して利用すればよい。ローカルメモリの第１アドレスに対してキャッシュ非対象とすることによって、バスロックを伴ったアクセス要求を発行することによってシステムバスをロックして第１アドレスの連続的な排他的アクセスを保証することができる。
【００４５】
〔１６〕＜プロセッサコアの共有メモリリソースアクセスにおける内部バスのバスロック選択＞
本発明の更に別の実施の形態に係るデータプロセッサ（１）は、内部バス(８０)を共有する複数個のプロセッサコア(２０，４０)がバスインタフェース回路(８７)に接続されるメモリリソース(８７)を共有すると共に前記バスインタフェース回路に接続されるシステムバス（５）の回路モジュールも前記メモリリソースを共有するデータプロセッサである。即ち、上記実施の形態に係るデータプロセッサでは個々のプロセッサコア（２０，４０）が内蔵するローカルメモリ（２２，４２）を排他制御の対象としたが、ここでは、複数のプロセッサコアの外に配置された共有メモリ(８７)を排他制御の対象とする。即ち、前記システムバスは排他制御状態を維持するバスロックの設定と解除が可能にされる。前記プロセッサコアが前記メモリリソースの第１アドレス（ロック変数割り当てアドレス）へアクセスを行うとき前記バスインタフェース回路はバスロックの要求を伴って当該アクセス要求を前記システムバスに伝達することによりシステムバスにバスをロックさせると共にシステムバスから帰還されるのを待って前記メモリリソースに供給する。プロセッサコアが前記メモリリソースの第２アドレス（ロック変数非割り当てアドレス）へアクセスを行うとき前記バスインタフェース回路は当該アクセス要求をシステムバスを通らずに前記メモリリソースに伝達する。
【００４６】
これにより、プロセッサコアはメモリリソースの第１アドレスに対してはバスロックを伴ったアクセス要求を発行すればシステムバスおよび内部バスからメモリリソースの第１アドレスへの他のアクセス要求を排除して連続的に排他的なアクセスを行うことができる。内部バスを経由するメモリリソースの第１アドレスに対するアクセスに対してもシステムバスのバスロック機能を利用できるようにしたからである。それを実現するのに、メモリリソースの第１アドレスに対するアクセスに対してもバスロックの要求を伴ってシステムバスにアクセス要求を出力するという構成を採用したから、プロセッサコアによるメモリリソースの第１アドレスに対するアクセスの排他制御を小さな回路規模で実現することができる。また、プロセッサコアはメモリリソースの第２アドレスに対してはシステムバスを介すること無く高速なアクセス動作を行うことが保証されている。
【００４７】
〔１７〕＜ロック変数の格納に割り当てられた第１アドレス＞
項１６のデータプロセッサにおいて、前記複数個のプロセッサコアはリソースを共有し、リソースに対応するロック変数（ＦｌａｇＮ）を操作して当該リソースに対する排他的な使用権の獲得と解放を行なう。前記第１アドレスは前記リソースに対する排他的な使用権の獲得と解放を行なうためのロック変数の格納に割り当てられるアドレスである。
【００４８】
ロック変数に対する操作に複数回のアクセスを要するとき、その間、前記バスロックによる排他制御状態を維持することが可能になる。
【００４９】
〔１８〕＜解放状態のロック変数の操作＞
項１７のデータプロセッサにおいて、前記プロセッサコアは、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードしてロック状態が解放されていることを検出したとき前記ロック変数にロック状態を示す値を書き込んで、当該ロック変数のリソースに対するアクセス権を獲得し、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う。
【００５０】
メモリリソースに格納されたロック変数をリード・モディファイ・ライトによって操作する間、前記バスロックによる排他制御状態を維持することが可能になる。
【００５１】
〔１９〕＜ロック状態のロック変数の操作＞
項１８のデータプロセッサにおいて、前記プロセッサコアは、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードして既にロック状態であることを検出したとき前記ロック変数にロック状態を示す値を書き込んでロック状態の解放を待ち、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う。
【００５２】
ロック状態を確保できなかった場合もロック状態を確保できる場合と同様の手順でロック変数に対するリード・モディファイ・ライトの操作を行うことができる。
【００５３】
〔２０〕＜プロセッサコアの共有メモリリソースアクセスにおける内部バスのバスロック選択＞
本発明の更に別の実施の形態に係るデータプロセッサも、項１６と同様に複数のプロセッサコアの外に配置された共有メモリを排他制御の対象とする。即ち、データプロセッサ（１）は、複数個のプロセッサコアと、前記複数個のプロセッサコア(２０，４０)に接続され内部バス調停回路(８１)を有する内部バス(８０)と、排他制御状態を維持するバスロックの設定と解除が可能にされるシステムバス調停回路（６）を有するシステムバス（５）と、前記内部バス及び前記システムバスに接続され前記プロセッサコア又は前記システムバスから供給されるアクセス要求に応答するバスインタフェース回路(８４)と、前記バスインタフェース回路に接続された共有メモリ(８７)と、を有する。前記バスインタフェース回路は、前記プロセッサコアによる前記共有メモリへのアクセスが第１アドレス（ロック変数割り当てアドレス）へのアクセス要求であるときバスロックの要求を伴って当該アクセス要求を前記システムバス調停回路に与えると共にシステムバス調停回路から帰還されるのを待って当該アクセス要求を前記共有メモリに伝達する。前記プロセッサコアによる前記共有メモリのアクセス要求が第２アドレス（ロック変数非割り当てアドレス）へのアクセス要求であるとき前記システムバスを通さずに当該アクセス要求を前記共有メモリに伝達する。
【００５４】
このように、プロセッサコアは共有メモリの第２アドレスに対しては高速なアクセス動作を保証することができ、共有メモリの第１アドレスに対してはバスロックを伴ったアクセス要求を発行することによってシステムバスをロックした連続的な排他的アクセスを可能とする。項１６と同様に、共有メモリの内部アクセスに対してもバスロックの要求を伴ってシステムバスにアクセス要求を出力するという構成を採用したから、プロセッサコアの自らのローカルメモリに対する排他制御を小さな回路規模で実現することができる。
【００５５】
〔２１〕＜ロック変数の格納に割り当てられる第1アドレス＞
項２０のデータプロセッサにおいて、前記複数個のプロセッサはリソースを共有し、リソースに対応するロック変数（ＦｌａｇＮ）を操作して当該リソースに対する排他的な使用権の獲得と解放を行ない、前記第１アドレスは前記ロック変数の格納に割り当てられるアドレスである。
【００５６】
ロック変数に対する操作に複数回のアクセスを要するとき、その間、前記バスロックによる排他制御状態を維持することが可能になる。
【００５７】
〔２２〕＜解放状態のロック変数の操作＞
項２１のデータプロセッサにおいて、前記プロセッサコアは、自又は他のプロセッサコアにおける第１アドレスからロック変数をリードしてロック状態が解放されていることを検出したとき前記ロック変数にロック状態を示す値を書き込んで、当該ロック変数のリソースに対するアクセス権を獲得し、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う。
【００５８】
共有メモリのロック変数をリード・モディファイ・ライトによって操作する間、前記バスロックによる排他制御状態を維持することが可能になる。
【００５９】
〔２３〕＜ロック状態のロック変数の操作＞
項２２のデータプロセッサにおいて、前記プロセッサコアは、自又は他のプロセッサコアにおける第1アドレスからロック変数をリードして既にロック状態であることを検出したとき前記ロック変数にロック状態を示す値を書き込んでロック状態の解放を待ち、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴う。
【００６０】
ロック状態を確保できなかった場合もロック状態を確保できる場合と同様の手順でロック変数に対するリード・モディファイ・ライトの操作を行うことができる。
【００６１】
〔２４〕＜スプリットトランザクションバス＞
項２３のデータプロセッサにおいて、前記システムバスは、前記システムバス調停回路としてパケットルータ（６）を有するスプリットトランザクションバス（５）である。
【００６２】
このバスは、イニシエータからのアクセス要求をターゲット毎に分離し、また、アクセス要求とその応答をリクエストパケットとレスポンスパケットに分離するから、バスアクセス効率の向上が実現される。
【００６３】
〔２５〕＜ロック信号＞
項２４のデータプロセッサにおいて、前記パケットルータは、前記イニシエータからバスロックの指示（Ｌｏｃｋ）を伴うリクエストパケットを受け取ったとき、同じイニシエータからバスロックの解除を伴うリクエストパケットを受け取るまで他のイニシエータからのリクエストパケットを同じターゲットに転送することを抑止する。
【００６４】
〔２６〕＜アドレス判定回路＞
項２０乃至２５のデータプロセッサにおいて、前記バスインタフェース回路は、前記プロセッサコアからのアクセス要求が前記共有メモリの第１アドレスであるか、前記共有メモリの第２アドレスであるか、又はそれ以外の第３アドレスであるかを判別するアドレス判定回路(９０)を有する。前記バスインタフェース回路は、前記アドレス判定回路で判定された第３アドレスへのアクセス要求を前記システムバス調停回路に与え、前記アドレス判定回路で判定された第１アドレスへのアクセス要求をシステムバス経由のアクセスと同等に前記システムバス調停回路に与えて、第１アドレスへのアクセス要求に応答するためのアクセスにシステムバスを経由させ、前記アドレス判定回路で判定された第２アドレスへのアクセス要求を前記共有メモリに与える。
【００６５】
アドレス判定回路を設けることによって、共有メモリの第１アドレスへのアクセスに対してバスロックの要求を伴ったアクセス要求をシステムバスに出力する構成を特に容易に実現することができる。
【００６６】
〔２７〕＜第１、２アドレスの設定用レジスタ＞
項２６のデータプロセッサにおいて、前記第１アドレスと第２アドレスが夫々書換え可能にセットされるアドレスレジスタ(９３，９４)を有し、前記アドレス判定回路は、前記アドレスレジスタにセットされたアドレスに基づいて前記プロセッサコアによるアクセスアドレスが前記第1アドレス乃至第３アドレスの何れに対するアクセスであるかを判別する。
【００６７】
前記第１アドレス及び第２アドレスをプログラマブルに設定可能であるから、ロック変数の割り当てやローカルメモリに対する高速アクセスエリアの設定を、データプロセッサを用いるデータ処理システムの構成に応じて任意に決定する自由度が増す。
【００６８】
〔２８〕＜プロセッサコアによるアドレスレジスタのセット＞
項２７のデータプロセッサにおいて、前記アドレスレジスタは前記プロセッサコアのアドレス空間にマッピングされる。
【００６９】
前記第１アドレス及び第２アドレスの設定を中央処理装置のリセット処理プログラム等を用いて容易に行うことができる。
【００７０】
〔２９〕＜ＴＬＢエントリを用いたアクセス経路の指定＞
本発明の更に別の実施の形態に係るデータプロセッサ(１Ａ)は、リソースを共有する複数個のプロセッサコア(２０Ａ，４０Ａ)がリソースに対応するロック変数（ＦｌａｇＮ）を操作して当該リソースに対する排他的な使用権の獲得と解放を行なう。前記複数個のプロセッサコアは、排他制御状態を維持するバスロックの設定と解除が可能にされるバス調停回路（６）を有するシステムバス（５）に共通接続される。前記プロセッサコアは、命令を実行する中央処理装置（２１，４１）と、アドレス変換バッファ（２４Ａ，４４Ａ）と、前記中央処理装置又は前記システムバスからアクセスされるローカルメモリ（２２，４２）と、前記中央処理装置又は前記システムバスから供給されるアクセス要求に応答するバスインタフェース回路（２５Ａ，４５Ａ）と、を有する。前記アドレス変換バッファは、中央処理装置が出力する論理アドレスを物理アドレスに変換するアドレス変換エントリ（Ｅｎｔｒｙ１〜Ｅｎｔｒｙ６３）を有し、前記アドレス変換エントリは排他制御ビット(ＡＴＭ)を有する。前記バスインタフェース回路は、前記ローカルメモリの物理アドレスが有効な排他制御ビットを伴うとき、バスロックの要求を伴って当該物理アドレスへのアクセス要求を前記バス調停回路に与えると共に前記バス調停回路から帰還されるのを待って当該物理アドレスへのアクセス要求を前記ローカルメモリに伝達し、前記ローカルメモリの物理アドレスが有効な排他制御ビットを伴わないときはシステムバスを通さずに当該物理アドレスへのアクセス要求を前記ローカルメモリに伝達する。
【００７１】
これによれば、いままで説明した第１アドレスに対するバスロックを用いた排他制御と同様の作用をアドレス変換エントリの排他制御ビットを用いて奏することができる、これにおいても上記同様に、プロセッサコアの自らのローカルメモリに対する排他制御を小さな回路規模で実現することができる。 
〔３０〕＜プロセッサコア内のＰＡＭによる保護＞
本発明の更に別の実施の形態に係るデータプロセッサ(１Ｂ)は、バス調停回路（６）を有するシステムバス（５）にリソースとプロセッサコア（２）が共通接続されたデータプロセッサであって、前記システムバスとプロセッサコアとの間、及び前記システムバスとリソースとの間に夫々アドレス管理回路(１２０)を有し、前記アドレス管理回路はシステムバスから供給されるアクセス要求が所定の条件を満足するとき当該アクセス要求を後段に伝達する。前記プロセッサコアは、命令を実行する中央処理装置と、前記中央処理装置又は前記システムバスからアクセスされるローカルメモリと、前記中央処理装置又は前記システムバスから供給されるアクセス要求に応答するバスインタフェース回路とを有する。前記バスインタフェース回路は、前記中央処理装置による前記ローカルメモリへのアクセス要求が第１アドレスへのアクセス要求であるとき当該アクセス要求を一旦前記バス調停回路に与えて前記アドレス管理回路に伝達させ、前記中央処理装置による前記ローカルメモリへのアクセス要求が第２アドレスへのアクセス要求であるときはシステムバスを通さずに当該アクセス要求を当該プロセッサコアの前記ローカルメモリに伝達する。
【００７２】
上記によれば、前記システムバスからプロセッサコアやリソースに対するアクセスの適否を管理するアドレス管理回路を用いて、プロセッサコアのローカルメモリに対する中央処理装置によるアクセスの適否を判別することができる。中央処理装置のメモリ保護機能を前記アドレス管理回路を用いて補強することが可能に成る。
【００７３】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００７４】
［実施の形態１］
《データプロセッサ》
図１には本発明の一実施の形態に係るデータプロセッサの全体的な構成が例示される。データプロセッサ（情報処理装置、データ処理装置、マイクロコンピュータ、ＭＣＵ）１は複数個のプロセッサコアを備えたマルチプロセッサコア２を有し、マルチプロセッサコア（ＭＬＴＰＲＣＲ）２が接続されるシステムバス（ＳＢＵＳ）５には画像処理や暗号化復号処理等を行なうアクセラレータのような複数個のハードウェアＩＰモジュール（ＨＷＩＰ）３，４、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）１６等メモリ制御を行うメモリコントローラ（ＭＥＭＣ）７、スタティックＲＡＭ（ＳＲＡＭ）１９等に接続される外部バスコントローラ（ＥＸＢＳＣ）８、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）９、及び内部メモリ（ＭＥＭ）１９等が接続される。
【００７５】
前記システムバス５は周辺バスコントローラ１０を介して周辺バス（ＰＢＵＳ）１１に接続される。周辺バス１１には、代表的に示された、内部の同期クロック信号を生成するパルスジェネレータ（ＣＰＧ）１２、割り込み要求に対するマスク制御や優先制御を行ってマルチプロセッサコア２に割り込み信号を供給する割り込みコントローラ（ＩＮＴＣ）１２、タイマユニット（ＴＭＵ）１４、及び汎用入出力ポート（ＧＰＩＯ）１５が接続される。
【００７６】
マルチプロセッサコア（ＭＬＴＰＲＣＲ）２には例えば図２に例示される構成を採用することが可能である。図２に示されるマルチプロセッサコア２は、システムバス５に接続された複数のプロセッサコア（Ｃｏｒｅ０，Ｃｏｒｅ１，…）２０，４０を有する。
【００７７】
プロセッサコア２０は、命令を実行する中央処理装置(ＣＰＵ)２１と、ＣＰＵ２１又は前記システムバス５からアクセスされるローカルメモリ（ＬＲＡＭ）２２と、回路ユニット２６とを有し、それらはオペランドバス２７と命令バス２８に共通接続される。回路ユニット２６はキャッシュメモリ（ＣＡＣＨＥ）２３、メモリマネージメントユニット（ＭＭＵ）２４及びバスインタフェース回路（ＢＩＦＣ）２５を備える。バスインタフェース回路２５はＣＰＵ２１又はシステムバス５から供給されるアクセス要求に応答してバスインタフェース制御を行う。特に制限されないが、キャッシュメモリ２３及びメモリマネージメントユニット２４はバスインタフェース回路２５に接続され、バスインタフェース回路２５はオペランドバス２７と命令バス２８に接続されると共に、ローカルバス２９を介してローカルメモリ２２に接続され、且つシステムバス５に接続される。
【００７８】
プロセッサコア４０は、命令を実行する中央処理装置(ＣＰＵ)４１と、ＣＰＵ４１又は前記システムバス５からアクセスされるローカルメモリ（ＬＲＡＭ）４２と、回路ユニット４６とを有し、それらはオペランドバス４７と命令バス４８に共通接続される。回路ユニット４６はキャッシュメモリ（ＣＡＣＨＥ）４３、メモリマネージメントユニット（ＭＭＵ）４４及びバスインタフェース回路（ＢＩＦＣ）４５を備える。バスインタフェース回路４５はＣＰＵ４１又はシステムバス５から供給されるアクセス要求に応答してバスインタフェース制御を行う。特に制限されないが、キャッシュメモリ４３及びメモリマネージメントユニット４４はバスインタフェース回路４５に接続され、バスインタフェース回路４５はオペランドバス４７と命令バス４８に接続されると共に、ローカルバス４９を介してローカルメモリ４２に接続され、且つシステムバス５に接続される。
【００７９】
前記システムバス５は、バス調停回路としてパケットルータ（ＳＲＴＲ）６を有するスプリットトランザクションバスである。このバスは、イニシエータからのアクセス要求をターゲット毎に分離し、また、アクセス要求とその応答をリクエストパケットとレスポンスパケットに分離することによって、バスアクセス効率を向上させようとするものである。即ち、イニシエータはリクエストコマンドを発行してバスアクセスを要求する回路であって、プロセッサコア２０，４０、ハードウェアＩＰ３，４及びＤＭＡＣ９等のバスアクセス主体と成り得る回路である。ターゲットはイニシエータによるアクセス対象とされる回路である。イニシエータであってもターゲットとして機能する回路もあり、例えばＤＭＡＣ９はデータ転送制御を行うときはイニシエータとして機能するが、その転送制御レジスタはプロセッサコアによって転送制御データがセットされるターゲットになる。前記リクエストコマンドには、コマンド発行元のイニシエータを特定するイニシエータＩＤ、アクセス先であるターゲットを特定するターゲットＩＤ、アクセスアドレス、書き込みアクセスの場合の書き込みデータ等を含む。パケットルータ６はリクエストパケットを受け取ると、それが指示するアクセス先のターゲットが他のアクセス要求に競合しているか等を判別し、競合していなければ当該イニシエータへの信号バスを介して当該リクエストパケットを転送するようにルーティングの制御を行う。リクエストパケットに対する応答はレスポンスパケットとしてターゲットからパケットルータ６に与えられ、パケットルータはレスポンスパケットをアクセス要求元のイニシエータに返す。例えば、パケットルータ６によるルーティング制御によって一つのリクエストパケットを所要のターゲットに転送するために割り当てられた信号バスは、それに応答するレスポンスパケットがパケットルータ６に送られてアクセス要求元のイニシエータに返されるまでそのアクセス要求に占有される。要するに、スプリットトランザクションバスにおいては、イニシエータからパケットルータまでの経路はターゲット毎に個別化され、パケットルータからターゲットへの経路はターゲット毎に個別化され、パケットルータ６はそのルーティング制御によってイニシエータをターゲットに接続する制御を行い、接続された経路は、アクセス要求が受け付けられて完了されるまで当該イニシエータによるアクセスに占有される。
【００８０】
更に、パケットルータ６はリクエストパケットに応答してターゲットに接続した経路を当該アクセス要求が受け付けられて完了されるまで占有させる排他制御の状態を当該アクセス完了後も維持させるバスロックの設定と解除の機能を備える。具体的には、前記パケットルータ６は、前記イニシエータからバスロックの指示（アサートされたバスロック信号）を伴うリクエストパケットを受け取ったとき、同じイニシエータからバスロックの解除（ネゲートされたバスロック信号）を伴うリクエストパケットを受け取るまで他のイニシエータからのリクエストパケットを同じターゲットに転送することを抑止する。このように、パケットルータ６はバスアクセスに対する競合を排除するための排他制御（バス排他制御）を行うと共に、バス排他制御による排他制御の状態をバスロック信号によって維持するためのバスロックによる排他制御を行う。
【００８１】
更にデータプロセッサはもう一つの排他制御としてスピンロックによる排他制御を行う。即ち、ＳＤＲＡＭ１６、ＳＲＡＭ１７、ＬＲＡＭ２２，４２、タイマ（ＴＭＵ）１４、汎用入出力回路（ＧＰＩＯ）１５、及び図示しないその他の周辺回路等のリソースを共有する複数個のＣＰＵ２１，４１がリソースに対応するロック変数を操作して当該リソースに対する排他的な使用権の獲得と解放を行なう。ロック変数はＳＤＲＡＭ１６、ＳＲＡＭ１７及びＬＲＡＭ２２，４２等のメモリデバイスの所定のアドレスに割り当てられる。スピンロックによる排他制御は排他的な使用権を獲得しようとするリソースに対応するロック変数に対するリード・モディファイ・ライトのメモリ操作によって行われる。即ち、特定のリソースを排他的に使用しようとするＣＰＵは当該リソースに対するロック変数のリードアクセスを行い、リードしたロック変数によってロック状態が解放されていることを検出したとき、前記ロック変数にロック状態を示す値を書き込むライトアクセスを行って、当該ロック変数のリソースに対する使用権を獲得する。このリードアクセスとライトアクセスの間で他のＣＰＵが当該ロック変数をリード又はライトアクセスすると、夫々のＣＰＵ間でのロック変数の意義が失われてしまう。そこで、ＣＰＵは前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴うようにし、これによってリード・モディファイ・ライトのアクセス期間中にシステムバス５経由で他のＣＰＵによって当該ロック変数が不所望にアクセスされることのないように考慮される。また、リードしたロック変数が既にロック状態であることを検出したときも上記同様に前記ロック変数にロック状態を示す値を書き込んでから、ロック状態の解放を待ち、前記ロック変数をリードするアクセス要求に前記バスロックの要求を伴い、前記ロック変数を書き込むアクセス要求に前記バスロックの解除要求を伴うようにする。ロック状態を確保できなかった場合もロック状態を確保できる場合と同様の手順でロック変数に対するリード・モディファイ・ライトの操作を行うことができる。
【００８２】
《バスロックを併用したスピンロックによる排他制御》
図３にはバスロックを併用したスピンロックによる排他制御のフローチャートが示される。例えばメモリ領域Ｎを排他的に使用しようとするＣＰＵは当該リソースに対するロック変数ＦｌａｇＮのリードアクセスを行い(Ｓ１)、リードしたロック変数によってロック状態が解放されているか否かを判別し（Ｓ２）、ロック状態が解放されていること（ＦｌａｇＮ＝０）を検出したとき、前記ロック変数ＦｌａｇＮにロック状態を示す値“１”を書き込むライトアクセスを行って(Ｓ３)、メモリ領域Ｎに対する使用権を獲得できたことを認識して当該領域Ｎに対して処理を行ない（Ｓ５）、処理終了後に、ロック変数ＦｌａｇＮの“０”をライトして領域Ｎに対する使用権を放棄する（Ｓ６）。ステップＳ２においてロック変数が既にロック状態であることを検出したとき（ＦｌａｇＮ＝１）は、ステップＳ３と同様にロック変数ＦｌａｇＮにロック状態を示す値“１”を書き込んでから、ステップＳ１に戻り、ロック状態の解除を待ってステップＳ３以降に進む。ステップＳ１〜Ｓ４の処理期間においてシステムバス５はバスロック状態にされる。
【００８３】
このようにスピンロックによる排他制御にバスロックを併用することによってリード・モディファイ・ライトのアクセス期間中にシステムバス５経由で他のＣＰＵによって当該ロック変数が不所望にアクセスされる事態は防止される。スピンロックによる排他制御にバスロックを併用するという点で、ロック変数のアクセスがシステムバス５を経由する場合にだけ効果がある。例えば図２７に例示されるようにバスロックによる排他制御を行う領域がＭＥＭ，ＳＤＲＡＭ，ＳＲＡＭに限定されている場合であり、図２８に例示されるように、例えばロック変数はＳＤＲＡＭの特定のアドレス領域にマッピングされ、マッピングされたロック変数は図２９に示されたリソースの使用権の獲得と解除に用いられる。
【００８４】
一方、図２で説明したように、プロセッサコア２０，２１がローカルメモリ２２，４２を持ち、複数のプロセッサコアが互いに他のプロセッサコアのローカルメモリを共有する場合、ローカルメモリ２２，４２は複数のＣＰＵ２１，４１の共有リソースとなり、前記スピンロックによる排他制御を行って特定のＣＰＵが排他的に利用できるようにしておくことが必要になる。その場合に、スピンロックによる排他制御のためのロック変数はローカルに配置することが最適であると考えられる。例えばローカルメモリ２２のロック変数は自らのローカルメモリ２２に配置する。自らが自らのローカルメモリを利用するのにロック変数に対するアクセス速度に点で好適だからである。但し、ロック変数のアクセスをプロセッサコアの内部で閉じて行う場合にはシステムバス５によるバスロックを併用することができず、リード・モディファイ・ライトのアクセスの途中でシステムバスから当該ローカルメモリのロック変数がアクセスされる可能性がある。
【００８５】
そこで、バスインタフェース回路２５は、図４に例示されるように、ＣＰＵ２１による前記ローカルメモリ２２へのアクセス要求が第１アドレスとしてのロック変数へのアクセス要求であるときバスロックの要求を伴って当該アクセス要求をシステムバス５を経由してパケットルータ６に与えると共に前記パケットルータ６からアクセス要求が帰還されるのを待って前記ローカルメモリ２２に伝達する。前記ＣＰＵ２１による前記ローカルメモリ２２へのアクセスがそれ以外の第２アドレスへのアクセス要求であるときは図５に例示されるようにシステムバス５を通さずに当該アクセス要求を前記ローカルメモリ２２に伝達する。また、図６に例示されるようにＣＰＵ２１がシステムバス５を経由して他のプロセッサコア４０のローカルメモリ４２をアクセスするときバスインタフェース回路２５はそのアクセス要求をシステムバス５に出力する。このとき、ＣＰＵ２１がローカルメモリ４２上のロック変数を操作するときはそのアクセス要求にバスロックの要求を伴うことになる。また、図７に例示されるように、システムバス５を経由する他のプロセッサコア４０からローカルメモリ２２に対するアクセスに対してバスインタフェース回路２５はＣＰＵ２１とのアクセス競合を回避する制御を行って、そのアクセス要求に答える制御を行う。他方のプロセッサコア４０に関しても上記と同様であるのでその詳細な説明は省略する。
【００８６】
図８にはバスロックを併用したスピンロックによるロック変数の排他制御、それによって獲得した使用権に基づくリソースの排他的使用、及び排他的使用後のロック変数操作による排他的使用権の解除について一連の動作フローが示される。ここでは、プロセッサコア２０のＣＰＵ２１がロック変数の操作を行い、当該ロック変数はＬＲＡＭ２２の第１アドレスに格納され、そのロック変数に対応されるリソースをＤＭＡＣ９とする。ここではリソースであるＤＭＡＣ９に対するアクセス対象はデータ転送制御データが格納されるデータ転送制御レジスタとし、それを領域Ｎとして図示し、対応するロック変数をＦｌａｇＮとして図示する。
【００８７】
図８においてＳ１０〜Ｓ２１はバスロックを併用したスピンロックによるロック変数の操作によって領域Ｎの使用権を獲得する処理、Ｓ２２〜Ｓ２７は獲得した使用権をもとに領域Ｎを排他的に使用する処理、Ｓ２８〜Ｓ３３は領域Ｎの使用権を開放する処理である。
【００８８】
先ず、プロセッサコア２０のＣＰＵ２１はＬＲＡＭ２２の第１アドレスからロック変数ＦｌａｇＮをリードするためにバスロックの要求を伴ってロード要求を発行する。このロード要求にしたがってプロセッサコア２０のバスインタフェース回路２５はバスロックの要求信号をアサートしてロード要求に応ずるリクエストパケットをシステムバス５に出力する（Ｓ１０）。これに応答してシステムバス５のパケットルータ６はリクエストパケットを受け付けたことをグラント信号によってプロセッサコア２０に返し（Ｓ１１）、そのリクエストにしたがってターゲットであるＬＲＡＭ２２への経路の調停を行い、他のイニシエータとの競合がないところで、ＬＲＡＭ２２への経路に対するバスロックを行って当該リクエストパケットをバスインタフェース回路２５に帰還させ（Ｓ１２）、ＬＲＡＭ２２はそのリード要求を受け付けたことをグラント信号によってパケットルータ６に返してそのリード要求に応ずる読み出し動作を行い（Ｓ１３）、リードデータをレスポンスパケットによってシステムバス５に返す（Ｓ１４）。このリードデータはパケットルータ６を経由してプロセッサコア２０のＣＰＵ２１が受け取って（Ｓ１５）、その値を判別する。例えば判別結果はＦｌａｇＮ＝０であったとする。判別後、プロセッサコア２０のＣＰＵ２１はＬＲＡＭ２２の第１アドレスのロック変数ＦｌａｇＮに値“１”を書きこむためにストア要求を発行する。このストア要求にしたがってプロセッサコア２０のバスインタフェース回路２５はバスロックの要求信号をネゲートしてストア要求に応ずるリクエストパケットをシステムバス５に出力する（Ｓ１６）。これに応答してシステムバス５のパケットルータ６は、リクエストパケットを受け付けたことをグラント信号によってプロセッサコア２０に返し（Ｓ１７）、そのリクエストにしたがって上記バスロックされているＬＲＡＭ２２への経路を用いて当該リクエストパケットをバスインタフェース回路２５に帰還させ（Ｓ１８）、ＬＲＡＭ２２はそのライト要求を受け付けたことをグラント信号によってパケットルータ６に返してそのライト要求に応ずる書き込み動作を行い（Ｓ１９）、書き込み完了をレスポンスパケットによってシステムバス５に返す（Ｓ２０）。このレスポンスパケットはパケットルータ６を経由してプロセッサコア２０のＣＰＵ２１が受け取る（Ｓ２１）。これによってロック変数ＦｌａｇＮを値“１”に設定したプロセッサコア２０が領域Ｎに対する排他的使用権を獲得する。ロック変数ＦｌａｇＮのリード・モディファイ・ライトによる操作期間中はパケットルータ６によるバスロックによってＬＲＡＭ２２に対するアクセス権はＣＰＵ２１が占有するから、その途中で他のＣＰＵがロック変数ＦｌａｇＮを参照したり書き込んだりすることが確実に排除されている。
【００８９】
領域Ｎの使用権を獲得したＣＰＵ２１は、領域ＮとしてのＤＭＡＣ９のレジスタに制御データを書きこむためにストア要求を発行する。このストア要求にしたがってプロセッサコア２０のバスインタフェース回路２５は当該ストア要求に応ずるリクエストパケットをシステムバス５に出力する（Ｓ２２）。これに応答してシステムバス５のパケットルータ６は、リクエストパケットを受け付けたことをグラント信号によってプロセッサコア２０に返し（Ｓ２３）、そのリクエストにしたがってＤＭＡＣ９への経路を用いて当該リクエストパケットを供給する（Ｓ２４）。このとき、ＣＰＵ２１が領域Ｎの使用権を獲得しているから、換言すれば、領域Ｎのロック変数ＦｌａｇＮは値“１”に設定されているので他のＣＰＵは自律的に領域Ｎへのアクセスを控えているから、システムバス５上でＤＭＡＣ９へのアクセスが他のＣＰＵと競合しないことが保証されている。ＤＭＡＣ９はそのライト要求を受け付けたことをグラント信号によってパケットルータ６に返してそのライト要求に応ずる書き込み動作を行い（Ｓ２５）、書き込み完了をレスポンスパケットによってシステムバス５に返す（Ｓ２６）。このレスポンスパケットはパケットルータ６を経由してプロセッサコア２０のＣＰＵ２１が受け取る（Ｓ２７）。これによってＣＰＵ２１はＤＭＡＣ９に転送制御データを書き込んでＤＭＡ転送をさせることができる。
【００９０】
ＣＰＵ２１はステップＳ２７のレスポンスに応答して、ＬＲＡＭ２２の第１アドレスのロック変数ＦｌａｇＮに値“０”を書きこむためにストア要求を発行する。このストア要求の発行にはバスロックの要求は伴わない。このストア要求にしたがってプロセッサコア２０のバスインタフェース回路２５はストア要求に応ずるリクエストパケットをシステムバス５に出力する（Ｓ２８）。これに応答してシステムバス５のパケットルータ６は、リクエストパケットを受け付けたことをグラント信号によってプロセッサコア２０に返し（Ｓ２９）、そのリクエストにしたがってＬＲＡＭ２２への経路を用いて当該リクエストパケットをバスインタフェース回路２５に帰還させ（Ｓ３０）、ＬＲＡＭ２２はそのライト要求を受け付けたことをグラント信号によってパケットルータ６に返してそのライト要求に応ずる書き込み動作を行い（Ｓ３１）、書き込み完了をレスポンスパケットによってシステムバス５に返す（Ｓ３２）。このレスポンスパケットはパケットルータ６を経由してプロセッサコア２０のＣＰＵ２１が受け取る（Ｓ３３）。これによってプロセッサコア２０による領域Nの排他的使用権が開放される。
【００９１】
図９には図８のステップＳ１０〜Ｓ２１におけるプロセッサコアとシステムバスとの間におけるデータ転送動作のタイミングチャートが例示される。ここではプロセッサコア（Ｃｏｒｅ０）２０が先にシステムバス５のバス権を獲得してロック変数の操作を行う（ステップＳ１０〜Ｓ２１）、その間、プロセッサコア（Ｃｏｒｅ１）４０が同じロック変数の操作を行うためにシステムバスのアクセスを待っている状態が示される。リクエストパケット（Ｒｅｑｕｅｓｔ）の関係信号としてリクエスト信号（Ｒｅｑ）、グラント信号（Ｇｎｔ）、バスコマンド（Ｃｏｍｍａｎｄ）、ライトデータ（Ｗｒｉｔｅ  Ｄａｔａ）、ロック信号（Ｌｏｃｋ）が例示され、レスポンスパケットの関係信号としてレスポンスバリッド信号（Ｒ＿Ｖａｌｉｄ）、レスポンスデータ（Ｒ＿Ｄａｔａ）が示される。プロセッサコア２０とシステムバス５との間の動作タイミングにおいて、Ａは図８のステップＳ１０〜Ｓ１３の動作に対応され、Ｂは図８のステップＳ１４，Ｓ１５の動作に対応され、Ｃは図８のステップＳ１６〜Ｓ１９の動作に対応され、Ｄは図８のステップＳ２０，Ｓ２１の動作に対応される。時刻ｔ２から時刻ｔ７までがバスロックの期間とされ、この期間においては、プロセッサコア２０からのるクエスト信号Ｒｅｑがネゲートされていても、プロセッサコア４０はＬＲＡＭ２１へのシステムバス５上のバス権を取得することはできず、プロセッサコア４０が発行するアクセス（例えばロック変数Ｆｌａｇをリード）するためのリクエストパケットはルータ６に受理されない。プロセッサコア４０はリクエストパケットを維持することにより、バスロック状態が解除された後に、ロック変数ＦｌａｇＮ等のリードアクセスが可能になる。仮に、プロセッサコア４０が当該ロック変数ＦｌａｇＮをリードできてもその値が“０”である限り、ロック変数ＦｌａｇＮによるＤＭＡＣのスピンロック状態は開放されていないので、図８で説明したように、ステップ３３の処理が終了するのを待つ必要がある。
【００９２】
《バスインタフェース回路の具体例》
図１０にはバスインタフェース回路２５の詳細が例示される。バスインタフェース回路２５は、代表的に示されたアドレス判定回路６０、バスインタフェースロジック（ＢＩＦＬＧＣ）６１及びセレクタ６２を有し、アドレス判定回路６０には排他制御領域指定レジスタ６３及びＬＲＡＭ領域指定レジスタ６４に設定されたアドレス情報が供給され、供給されたアドレス情報とＣＰＵ２１が出力するアクセスアドレス信号Ａｄｄとを比較判別する判別論理を有する。判別論理として、アドレス信号Ａｄｄがレジスタ６４に指定されているアドレスの範囲にあるか否かを判別する判別回路７０、アドレス信号Ａｄｄがレジスタ６３に指定されているアドレスの範囲にあるか否かを判別する判別回路７１、判別回路７０による判別結果の非反転信号と判別回路７１による判別結果の反転信号との論理積をとるアンドゲート７２、判別回路７０による判別結果の反転信号と判別回路７１による判別結果の非反転信号との論理和をとるオアゲート７３、アンドゲート７２の出力とリクエスト信号Ｒｅｑとの論理積をとるアンドゲート７４、及びオアゲート７３の出力とリクエスト信号Ｒｅｑとの論理積をとるアンドゲート７５を備える。
【００９３】
ＬＲＡＭ領域指定レジスタ６４はＬＲＡＭ２２がマッピングされるアドレス領域を指定し、例えば先頭アドレスと領域のサイズによってそのアドレス領域を指定する。排他制御領域指定レジスタ６３はリード・モディファイ・ライトのアクセス期間中に排他制御が行われるべきＬＲＡＭ２２上のアドレス領域、例えばロック変数が格納されるアドレス領域を指定し、例えば図１１に例示されるように、先頭アドレスＳ＿Ａｄｄｒｅｓｓと領域のサイズＳＩＺＥによってそのアドレス領域を指定し、指定の有効性を示すイネーブルビットＥＮを有する。
【００９４】
判別回路７０，７１は一致の判別結果を得るまでローレベルを出力し、一致を判別したときハイレベルを出力する。イネーブルビットＥＮが非活性であれば判別回路７１の出力は不一致の出力と同じにされる。
【００９５】
上記アドレス判定回路６０により、ＣＰＵ２１が出力するアドレス信号Ａｄｄが、レジスタ６３に指定されたロック変数のアドレスに一致し且つイネーブルビットＥＮが活性であれば、バスリクエスト信号ＢＲＥＱがアサートされる。ＣＰＵ２１が出力するアドレス信号Ａｄｄが、レジスタ６４に指定されたアドレスに一致又はイネーブルビットＥＮが非活性であれば、メモリリクエスト信号ＬＲＥＱがアサートされる。ＣＰＵ２１が出力するアドレス信号Ａｄｄがレジスタ６４に指定されたアドレスに不一致であれば、バスリクエスト信号ＢＲＥＱがアサートされる。
【００９６】
メモリリクエスト信号ＬＲＥＱがアサートされるとＬＲＡＭ２２はそのときのＣＰＵ２１からのアクセス要求に従ってメモリ動作を行い、ＣＰＵ２１からの書き込みデータＷＤａｔａが書き込まれ、セレクタ６２を介して読出しデータＲＤａｔａがＣＰＵ２１に供給される。この時のアクセスはＭＭＵ２４を通らないので、アドレスはＣＰＵ２１の論理アドレスで行われる。つまり、メモリリクエスト信号ＬＲＥＱがアサートされるとき、ＬＲＡＭ２２はＣＰＵから直接メモリアクセスされることが可能となる。要するに、メモリリクエスト信号ＬＲＥＱがアサートされるときは、従来通りのバスを経由しないバイパス経路を介してＬＲＡＭアクセスを行う。
【００９７】
バスリクエスト信号ＢＲＥＱがアサートされると、バスインタフェースロジック２５はそのときのＣＰＵ２１からのアドレス信号に応じたバスアクセス動作等を行う。すなわち、アドレス信号Ａｄｄがレジスタ６３に設定されたアドレスであれば、バスインタフェース回路２５は、ＬＲＡＭ２２のアクセス対象アドレス（例えばロック変数ＦｌａｇＮのアドレス）をターゲットとするリクエストパケットをバスロックの要求を伴って出力し、それに対するルータ６からのグラント信号の入力を待って当該リクエストパケットに応ずるＬＲＡＭ２２のアクセスをバス２９を経由して行う。その動作は図８及び図９等に基づいて説明した通りである。この時のアクセスアドレスがＭＭＵ２４によるアドレス変換の対象であれば、アドレス信号ＡｄｄをＭＭＵ２４で物理アドレスに変換したアドレスをリクエストパケットに含めてシステムバス５に出力し、ＬＲＡＭ２２はバス２９から供給されるアドレス信号を物理アドレスとしてデコードする処理を行なう。また、そのときのアドレス信号Ａｄｄがレジスタ６３に設定されたアドレスでなければ、必要に応じてＭＭＵ２４によるアドレス変換を行い、キャッシュメモリ２３によるキャッシュの対象であればキャッシュメモリ２３を動作させ、システムバス５のアクセスが必要であればリクエストパケットを生成してシステムバス５に出力する。バスリクエスト信号ＢＲＥＱがアサートされるとき、ＬＲＡＭ２２は、バスを介してＣＰＵからアクセスされることが可能となる。つまり、バスリクエスト信号ＢＲＥＱがアサートされたとき、ＣＰＵはバスを経由したアクセス経路によって、ＬＲＡＭ２２をアクセスすることが可能となる。
【００９８】
上述した排他制御領域指定レジスタ６３及びＬＲＡＭ領域指定レジスタ６４の設定状態に従ったプロセッサコアのアクセス形態を整理すると図１２のようになる。プロセッサコア２０を例に採れば、ＣＰＵ２１によるＬＲＡＭ２２以外のアドレス（他領域）に対してはバスリクエストＢＲＥＱがアサートされ、バスロックによる排他制御が可能にされる。レジスタ６３で指定されていないＬＲＡＭ２２の排他制御対象外アドレスに対してはメモリリクエストＬＲＥＱがアサートされ、バスロックによる排他制御は不可能にされる。一方、レジスタ６３で指定される排他制御対象アドレスに対するアクセスは、イネーブルビットＥＮが活性であればバスリクエストＢＲＥＱがアサートされて、バスロックによる排他制御が可能にされ、イネーブルビットＥＮが非活性であればメモリリクエストＬＲＥＱがアサートされてバスロックによる排他制御は不可能にされる。
【００９９】
尚、他のプロセッサコア４０も上記同様であるからその詳細な説明は省略する。
【０１００】
プロセッサコア２０，４０のローカルメモリＬＲＡＭ２２，４２に対してバスロックによる排他制御が可能にされたデータプロセッサの全体的なアドレス空間において、バスロックによる排他制御領域は図１３に例示されるようになる。ここではプロセッサコアＣｏｒｅ０〜Ｃｏｒｅ３のローカルメモリＬＲＡＭは夫々の排他制御領域指定レジスタ６３の設定内容次第でバスロックの排他制御の対象又は非対象にすることが選択可能にされる。
【０１０１】
実施の形態1によれば以下の作用効果を得る。
【０１０２】
〔１〕プロセッサコア２０（４０）は他のプロセッサコア４０（２０）の内部リソースであるローカルメモリ４２（２２）の特定アドレスのロック変数に対してバスロックを伴ったアクセス要求を発行すればシステムバス５を介して連続的に排他的なアクセスを行うことができる。更に、プロセッサコア２０(４０)は自らの内部リソースであるローカルメモリ２２（４２）の特定アドレスのロック変数に対してもバスロックを伴ったアクセス要求を発行すればシステムバスをロックして連続的に排他的なアクセスを行うことができる。自らの特定アドレスのロック変数へのアクセスに対してもシステムバス５のバスロック機能を利用できるようにしたからである。それを実現するのに、自らの特定アドレスへの内部アクセスに対してもバスロックの要求を伴ってシステムバス５にアクセス要求を出力するという構成を採用したから、プロセッサコア２０(４０)の自らの内部メモリリソースであるローカルメモリ２２（４２）に対する排他制御を小さな回路規模で実現することができる。また、プロセッサコア２０(４０)は自らの内部リソースであるローカルメモリ２２（４２）のロック変数以外のアドレス領域に対しては内部だけで高速なアクセス動作を行うことが保証されている。
【０１０３】
〔２〕上記より、スピンロックによる排他制御のためにロック変数に対する操作に複数回のアクセスを要するとき、その間、前記バスロックによる排他制御状態を維持することが可能になる。したがって、自又は他のプロセッサコアにおけるロック変数をリード・モディファイ・ライトによって操作する間、前記バスロックによる排他制御状態を維持することが可能になる。
【０１０４】
〔３〕排他制御領域指定レジスタ６３とＬＲＡＭ領域指定レジスタ６４への領域設定をリセット時等の初期化処理又はＣＰＵのプログラム処理によってプログラマブルに行うことができるから、ロック変数の割り当てやローカルメモリに対する高速アクセスエリアの設定を、データプロセッサを用いるデータ処理システムの構成に応じて任意に決定する自由度を得ることができる。
【０１０５】
〔４〕キャッシュミスのペナルティによる一時的なスループットの低下が発生したとしても、キャッシュメモリ２３(４３)を持つことによって前記ローカルメモリ２２(４２)の記憶容量に比べて大きなメモリ空間に対する高速アクセスが可能になる。キャッシュミスのペナルティによる一時的なスループットの発生を回避すべきデータはローカルメモリ２２(４２)のロック変数用の特定アドレス以外の領域に格納して利用すればよい。ローカルメモリ２２(４２)のロック変数用の特定アドレスに対してキャッシュ非対象とすることによって、バスロックを伴ったアクセス要求を発行することによってシステムバスをロックして第１アドレスの連続的な排他的アクセスを保証することができる。
【０１０６】
［実施の形態２］
実施の形態２として図１のデータプロセッサにおけるマルチプロセッサコア（ＭＬＴＰＲＣＲ）２の構成が異なる場合について説明する。
【０１０７】
図１４にはマルチプロセッサコア（ＭＬＴＰＲＣＲ）２の別の例が示される。図２との相違点はプロセッサコア２０、４０が直接システムバス５に接続されず、マルチプロセッサコア（ＭＬＴＰＲＣＲ）２の内部バス８０に接続され、バスインタフェース回路（Ｌ２ＢＩＦＣ）８４を介してシステムバス６に接続可能にされる。バスインタフェース回路８４には共有メモリ（ＳＨＲＡＭ）８７が接続される。内部バス８０はバス調停回路８１を有し、特に制限されないが、内部バス８０がスプリットトランザクションバスとされるときバス調停回路８１はパケットルータ（ＩＲＴＲ）によって構成される。スプリットトランザクションバスとしての内部バス８０の機能はシステムバス５について説明した内容と同じであり、その詳細な説明は省略する。
【０１０８】
プロセッサコア２０，４０は実施の形態１で説明した構成と実質的に同じであるが、上述したＬＲＡＭ２２，４２に対するバスロックによる排他制御においてバスインタフェース回路２５，４５がバスロックの要求を伴うリクエストパケットを出力する出力先はシステムバス５ではなく内部バス８０とされる点が相違する。
【０１０９】
バスインタフェース回路８４はプロセッサコア２０，４０から供給されるアクセス要求に応答してシステムバス５に対するバスインタフェース制御、共有メモリ８７に対するインタフェース制御、更にシステムバス５から共有メモリ８７又はＬＲＡＭ２２，４２に対するアクセスのインタフェース制御を行う。従って共有メモリ８７は内部バス８０側からもシステムバス５側からもアクセス可能される。
【０１１０】
図１４の構成においてプロセッサコア２０、４０と内部バス８０との関係は実施の形態１で説明したプロセッサコア２０、４０とシステムバス５との関係と同じであるからその詳細な説明は省略する。以下では、共有メモリ８７に割り当てられたロック変数をスピンロックによる排他制御のために操作するときのバスロックの制御について説明する。スピンロックによる排他制御手順は図３で説明したのと同じである。
【０１１１】
例えばＣＰＵ２１が前記共有メモリ８７のロック変数へのアクセス要求とバスロックの要求を発行すると、図１５に例示されるように、バスインタフェース回路２５はバスロックの要求を伴って当該アクセス要求のリクエストパケットを内部バス８０に出力し、内部バス８０のパケットルータ８１がその要求を受け入れると当該リクエストパケットをバスインタフェース回路８４に与えると共にその伝播経路にバスロックを設定する。バスインタフェース回路８４は、アクセス要求先が前記共有メモリ８７のロック変数へのアクセス要求であることを判別すると、バスロックの要求を伴って当該アクセス要求のリクエストパケットをシステムバス５を経由してパケットルータ６に与えると共に前記パケットルータ６からアクセス要求が帰還されるのを待って前記共有メモリ８７に伝達する。
【０１１２】
前記ＣＰＵ２１による前記共有メモリ８７へのアクセスがそれ以外のアドレスへのアクセス要求であるときは図１６に例示されるようにバスインタフェース回路８４はシステムバス５を通さずに当該アクセス要求を前記共有メモリ８７に伝達する。
【０１１３】
また、図１７に例示されるようにＣＰＵ２１がシステムバス５を経由して他のリソースをアクセスするときバスインタフェース回路８４はそのアクセス要求をシステムバス５に出力する。このとき、システムバス６上でのリソースアクセスにバスロックを必要としないときはシステムバス６へのアクセス要求にはバスロックの要求を伴うことを要しない。
【０１１４】
また、図１８に例示されるように、システムバス５を経由する他のイニシエータから共有メモリ８７のアクセスに対してバスインタフェース回路８４はＣＰＵ２１、４１等の内部バス８８上のバスアクセス主体とのアクセス競合を回避する制御を行って、そのアクセス要求に答える制御を行う。他のプロセッサコア４０が共有メモリのロック変数をアクセスする場合に関しても上記と同様であるのでその詳細な説明は省略する。
【０１１５】
バスロックを併用したスピンロックによるロック変数の排他制御、それによって獲得した使用権に基づくリソースの排他的使用、及び排他的使用後のロック変数操作による排他的使用権の解除の動作については図８で説明した動作に対して尚部バス８０の動作が介在されるだけであり、ほぼ同様であるからその詳細な説明は省略する。
【０１１６】
図１９にはバスインタフェース回路８４の詳細が例示される。バスインタフェース回路８４は、代表的に示されたアドレス判定回路９０、バスインタフェースロジック（ＢＩＦＬＧＣ）９１及びセレクタ９２を有し、アドレス判定回路９０には排他制御領域指定レジスタ９３及びＳＨＲＡＭ領域指定レジスタ９４に設定されたアドレス情報が供給され、供給されたアドレス情報とプロセッサコア２０，４０が出力するアクセスアドレス信号Ａｄｄとを比較判別する判別論理を有する。判別論理として、アドレス信号Ａｄｄがレジスタ９４に指定されているアドレスの範囲にあるか否かを判別する判別回路７０、アドレス信号Ａｄｄがレジスタ９３に指定されているアドレスの範囲にあるか否かを判別する判別回路７１、判別回路７０による判別結果の非反転信号と判別回路７１による判別結果の反転信号との論理積をとるアンドゲート７２、判別回路７０による判別結果の反転信号と判別回路７１による判別結果の非反転信号との論理和をとるオアゲート７３、アンドゲート７２の出力とリクエスト信号Ｒｅｑとの論理積をとるアンドゲート７４、及びオアゲート７３の出力とリクエスト信号Ｒｅｑとの論理積をとるアンドゲート７５を備える。
【０１１７】
ＳＨＲＡＭ領域指定レジスタ９４はＳＨＲＡＭ８７がマッピングされるアドレス領域を指定し、例えば先頭アドレスと領域のサイズによってそのアドレス領域を指定する。排他制御領域指定レジスタ９３はリード・モディファイ・ライトのアクセス期間中に排他制御が行われるべきＳＨＲＡＭ８７上のアドレス領域、例えばロック変数が格納されるアドレス領域指定し、図１１で説明したのと同様に、先頭アドレスＳ＿Ａｄｄｒｅｓｓと領域のサイズＳＩＺＥによってそのアドレス領域を指定し、指定の有効性を示すイネーブルビットＥＮを有する。
【０１１８】
判別回路７０，７１は一致の判別結果を得るまでローレベルを出力し、一致を判別したときハイレベルを出力する。イネーブルビットＥＮが非活性であれば判別回路７１の出力は不一致の出力と同じにされる。
【０１１９】
上記アドレス判定回路６０により、プロセッサコア２０，４０が出力するアドレス信号Ａｄｄが、レジスタ９３に指定されたロック変数のアドレスに一致し且つイネーブルビットＥＮが活性であれば、バスリクエスト信号ＢＲＥＱがアサートされる。プロセッサコア２０，４０が出力するアドレス信号Ａｄｄが、レジスタ９４に指定されたアドレスに一致又はイネーブルビットＥＮが非活性であれば、メモリリクエスト信号ＳＨＲＥＱがアサートされる。プロセッサコア２０，４０が出力するアドレス信号Ａｄｄがレジスタ９４に指定されたアドレスに不一致であれば、バスリクエスト信号ＢＲＥＱがアサートされる。
【０１２０】
メモリリクエスト信号ＳＨＲＥＱがアサートされるとＳＨＲＡＭ８７はそのときのプロセッサコア２０，４０からのアクセス要求に従ってメモリ動作を行い、内部バス８０からの書き込みデータＷＤａｔａが書き込まれ、セレクタ９２を介して読出しデータＲＤａｔａが内部バス８０に供給される。
【０１２１】
バスリクエスト信号ＢＲＥＱがアサートされると、バスインタフェースロジック９１はそのときの内部バス８０からのアドレス信号に応じたバスアクセス動作等を行う。すなわち、アドレス信号Ａｄｄがレジスタ９３に設定されたアドレスであれば、バスインタフェース回路９１は、ＳＨＲＡＭ８７のアクセス対象アドレス（例えばロック変数ＦｌａｇＮのアドレス）をターゲットとするリクエストパケットをバスロックの要求を伴って出力し、それに対するルータ６からのグラント信号の入力を待って当該リクエストパケットに応ずるＳＨＲＡＭ８７のアクセスを行う。また、そのときのアドレス信号Ａｄｄがレジスタ９３に設定されたアドレスでなければ、システムバス５のアクセスが必要であればリクエストパケットを生成してシステムバス５に出力する。
【０１２２】
上述した排他制御領域指定レジスタ９３及びＳＨＲＡＭ領域指定レジスタ９４の設定状態に従ったプロセッサコアのアクセス形態を整理すると図２０のようになる。プロセッサコア２０を例に採れば、ＣＰＵ２１によるＳＨＲＡＭ８７以外のアドレス（他領域）に対してはバスリクエストＢＲＥＱがアサートされ、バスロックによる排他制御が可能にされる。レジスタ９３で指定されていないＳＨＲＡＭ８７の排他制御対象外アドレスに対してはメモリリクエストＳＨＲＥＱがアサートされ、バスロックによる排他制御は不可能にされる。一方、レジスタ９３で指定される排他制御対象アドレスに対するアクセスは、イネーブルビットＥＮが活性であればバスリクエストＢＲＥＱがアサートされて、バスロックによる排他制御が可能にされ、イネーブルビットＥＮが非活性であればメモリリクエストＳＨＲＥＱがアサートされてバスロックによる排他制御は不可能にされる。
【０１２３】
プロセッサコア２０，４０のローカルメモリＬＲＡＭ２２，４２に対してバスロックによる排他制御が可能にされたデータプロセッサの全体的なアドレス空間において、バスロックによる排他制御領域は図２１に例示されるようになる。ここでは、共有メモリ８７は排他制御領域指定レジスタ９３の設定内容次第でバスロックの排他制御の対象又は非対象にすることが選択可能にされる。更に、実施の形態１で説明したように、プロセッサコアＣｏｒｅ０〜Ｃｏｒｅ３のローカルメモリＬＲＡＭは夫々の排他制御領域指定レジスタ６３の設定内容次第でバスロックの排他制御の対象又は非対象にすることが選択可能にされる。
【０１２４】
［実施の形態３］
ロック変数のアドレステーブルについて説明する。図２及び図１４のプロセッサコア２０，４０に例示されるように、プロセッサコアがキャッシュメモリ（ＣＡＣＨＥ）と一緒にローカルメモリ（ＬＲＡＭ）を内蔵するのは、前述の通り、キャッシュメモリにおけるキャッシュミスペナルティによるデータ処理のスループット低下を予測することができない場合があり、それを回避するためには、必要なデータをローカルメモリ（ＬＲＡＭ）に転送し、当該データに対してキャッシュ非対象にするためである。
【０１２５】
その場合に、当該データのアクセスがスピンロックによる排他制御の対象にされている場合、もともとそのデータがＳＤＲＡＭに配置されている場合、その一部をローカルメモリ（ＬＲＡＭ）に転送してキャッシュ非対象で使用する場合には、ロック変数とこれに対応するメモリ領域との関係も一時的に更新することが必要になる場合がある。
【０１２６】
そこで、図２２に例示されるように、ＳＤＲＡＭにロック変数のアドレステーブル１００を形成し、このテーブルを参照することによって、これからアクセスしようとするデータのロック変数がどこに配置されているかを知ることができる。例えば、あるメモリリソースのロック変数ＦｌａｇＢ１はＳＤＲＡＭのアドレスａに割り当てられると共に、当メモリリソースのデータがコピーされて格納されるローカルメモリに関してロック変数ＦｌａｇＢ１ｃを割り当て、これをローカルメモリＬＲＡＭのアドレスｅに配置する、というように定義されたロック変数のアドレステーブルを用意しておく。ＣＰＵはパワーオンリセット等で当該テーブルを自分のローカルメモリにストアし、必要に応じてこれを参照しながらスピンロックによるロック変数の操作を行えばよい。
【０１２７】
実施の形態２によれば、複数個のプロセッサコア２０，４０が共有する共有メモリ８７にロック変数の領域が設定された場合にも、スピンロックによる排他制御のためのロック変数の操作にバスロックの機能を適用することによって、実施の形態１と同様の作用効果を得ることができる。
【０１２８】
［実施の形態４］
上記実施の形態で説明したバスロックによる排他制御はバスインタフェース回路におけるアドレス判定動作を用いて行ったが、実施の形態４ではＴＬＢエントリを用いてアクセス経路の指定を行う構成について説明する。
【０１２９】
図２３には実施の形態４に係るデータプロセッサが例示される。データプロセッサ１Ａは、リソースを共有する複数個のプロセッサコア２０Ａ，４０Ａがリソースに対応するロック変数を操作して当該リソースに対する排他的な使用権の獲得と解放を行なうものである。図ではシステムバス５に接続する周辺回路等のその他の回路モジュールの図示を省略している。
【０１３０】
プロセッサコア２０Ａ，４０Ａは図２で説明したプロセッサコア２０，４０とはＭＭＵ２４Ａ，４４ＡとＢＩＦＣ２５Ａ，４５Ａに構成が相違される。ＢＩＦＣ２５Ａ，４５ＡはＢＩＦＣ２５，４５に対して、アドレス判定回路６０によるアドレス判定動作の結果を用いて特定のアドレスに対してバスロックによる排他制御を適用可能にする制御機能が省かれている点が相違される。
【０１３１】
ＭＭＵ２４Ａ，４４ＡはＭＭＵ２４，４４に対してＴＬＢエントリを用いてバスロックによる排他制御を適用可能にする制御機能が付加された点が相違される。以下この点について詳細に説明する。
【０１３２】
ＭＭＵ２５Ａは、ＣＰＵ２１が出力する論理アドレスを物理アドレスに変換するアドレス変換エントリを有し、前記アドレス変換エントリは排他制御ビットを有する。前記バスインタフェース回路２５Ａは、前記ローカルメモリ２２の物理アドレスが有効な排他制御ビットを伴うとき、バスロックの要求を伴って当該物理アドレスへのアクセス要求をシステムバス５のパケットルータ６に与えると共にパケットルータ６から帰還されるのを待って当該物理アドレスへのアクセス要求を前記ＬＲＡＭ２２に伝達し、前記ＬＲＡＭ２２の物理アドレスが有効な排他制御ビットを伴わないときはシステムバス５を通さずに当該物理アドレスへのアクセス要求を前記ローカルメモリ２２に伝達する。
【０１３３】
図２４にはＭＭＵ２５Ａが保有するアドレス変換バッファ（ＴＬＢ）１１０のＴＬＢエントリが例示される。ＴＬＢエントリ（Ｅｎｔｒｙ１〜Ｅｎｔｒｙ６３）は、アドレス空間識別子（ASID）、仮想ページ番号（VPN）、有効ビット（V）、物理ページ番号（PPN）、ページサイズビット（SZ）、共有状態ビット（SH）、キャッシング可能ビット（C）、保護キーデータ（PR）、ダーティビット（D）、ライトスルービット（WT）、及び排他制御ビット（ATM）を有する。尚、ＴＬＢエントリを用いた連想動作は公知であるからその詳細な説明は省略する。
【０１３４】
図示はしないが、他方のプロセッサコア４０に対しても同様に構成される。また、図１４の構成を有するデータプロセッサに対しても上記同様に適用可能である。
【０１３５】
このように、アドレス判定回路による判定結果に応じてバスロックを用いる排他制御と同様の作用をアドレス変換エントリの排他制御ビットを用いて奏することができる。これにおいても上記同様に、プロセッサコアの自らのローカルメモリに対する排他制御を小さな回路規模で実現することができる。
【０１３６】
［実施の形態５］
実施の形態５ではバスからの不正アクセスをアドレス管理回路（ＰＡＭ）を用いて抑制する構成を備えたデータプロセッサにおいて、プロセッサコア内で閉じたアクセス動作にもＰＡＭによるアクセス保護機能を適用可能にしたデータプロセッサについて説明する。
【０１３７】
図２５には本発明の実施の形態５に係るデータプロセッサ１Ｂが例示される。図１のデータプロセッサ１との相違は、システムバス５と夫々の回路モジュール２，３，４，７，８，９，１０との間のＰＡＭを配置した点である。マルチプロセッサコア２の構成は前述のバスロックを用いた排他制御機能を備える。
【０１３８】
図２６にはアドレス管理回路（ＰＡＭ）１２０の構成が例示される。ＰＡＭ１２０はシステムバス５から供給されるアクセス要求が所定の条件を満足するとき当該アクセス要求を後段に伝達する機能を備える。即ち、アクセスを許可すべきアドレス範囲が設定される許可アドレス範囲レジスタ１３０、アクセスを許可すべきアクセスタイプ（リード又はライト等のバスコマンドによって指定可能なアクセスタイプ）が設定される許可アクセスタイプレジスタ１３１、アクセスを許可すべきイニシエータのＩＤが設定される許可ＩＤレジスタ１３２が設けられ、システムバス５からアドレス信号Ａｄｄをレジスタ１３０の設定値と比較する比較回路１３３、システムバス５からアドレス信号Ａｄｄをレジスタ１３１の設定値と比較する比較回路１３４、システムバス５からアドレス信号Ａｄｄをレジスタ１３２の設定値と比較する比較回路１３４が配置される。夫々のレジスタ１３０〜１３２はデータプロセッサ１Ｂの初期化処理で初期設定される。比較回路１３３〜１３５は比較一致を持ってハイレベルを出力する。比較回路１３３〜１３５の出力の反転信号はアンドゲート１３６で論理積が採られ、比較回路１３３〜１３５の出力の非反転信号はアンドゲート１３７で論理積が採られ、夫々の論理積信号はシステムバス５からのリクエスト信号Ｒｅｑとアンドゲート１３８，１３９で論理積が採られる。アンドゲート１３９の出力は後段の回路モジュールにリクエスト信号Ｒｅｑとして供給される。したがって、システムバス５から供給されるリクエストパケットに含まれるアドレス信号Ａｄｄ，コマンドＣｍｄ，及びイニシエータＩＤが前記レジスタ１３０〜１３２の設定内容に全て一致するとき、後段に供給されるリクエスト信号Ｒｅｑが活性化される。図示は省略するが、このときアドレス信号Ａｄｄ，コマンドＣｍｄ，及びイニシエータＩＤは後段の回路モジュールに供給される。一方、アンドゲート１３８の出力は後段の回路モジュールからシステムバス５へのレスポンス信号Ｒｅｓの経路に配置されたセレクタ１４０の選択信号とされ、システムバス５から供給されたリクエストパケットに含まれるアドレス信号Ａｄｄ，コマンドＣｍｄ，及びイニシエータＩＤが前記レジスタ１３０〜１３２の設定内容に全て一致するときだけセレクタ１４０が後段回路モジュールからのレスポンス信号Ｒｅｓをシステムバス５に供給し、一つでも不一致の時は代理レスポンス生成回路１４１が生成するダミー信号をセレクタ１４０が選択してシステムバス５に出力する。図示は省略するがレスポンスパケットに含まれるその他の情報はシステムバス５に供給される。
【０１３９】
実施の形態５におけるプロセッサコアのバスインタフェース回路は内部のＣＰＵ又はシステムバス５から供給されるアクセス要求に応答する論理を有し、ＣＰＵによるローカルメモリ（ＬＲＡＭ）又は共有メモリ（ＳＨＲＡＭ）へのアクセス要求がロック変数を指す特定のアドレスへのアクセス要求であるとき当該アクセス要求を一旦前記パケットルータ６等に与えて前記アドレス管理回路１２０に伝達させる。前記ＣＰＵによる前記ローカルメモリ(ＬＲＡＭ)又は共有メモリ（ＳＨＲＡＭ）へのアクセス要求が前記特定アドレスへのアクセス要求でないときはシステムバス５を通さずに当該アクセス要求を当該プロセッサコアの前記ローカルメモリ(ＬＲＡＭ)又は共有メモリ（ＳＨＲＡＭ）に伝達するという制御を行う。
【０１４０】
上記によれば、前記システムバス５からプロセッサコアやリソースに対するアクセスの適否を管理するアドレス管理回路１２０を用いて、プロセッサコア２のローカルメモリ(ＬＲＡＭ)や共有メモリ（ＳＨＲＡＭ）に対するＣＰＵによるアクセスの適否を判別することができる。ＣＰＵのメモリ保護機能を前記アドレス管理回路１２０を用いて補強することが可能になる。例えばＭＭＵのメモリ保護機能が無くてもＣＰＵによるローカルメモリ（ＬＲＡＭ）や共有メモリ（ＳＨＲＡＭ）のアクセスに対するメモリ保護機能を実現することができる。
【０１４１】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１４２】
上記実施の形態１乃至５は適宜組合わせて併用可能である。データプロセッサが備えるプロセッサコアの数、バス構成及び内蔵リソース、更にデータプロセッサが備えるその他の回路モジュールの種類や機能等は適宜変更可能である。また、ロック変数の操作手順等も適宜変更可能である。また、システムバスや内部バスはスプリットトランザクションバスに限定されず、アクセス要求とレスポンスを分離させず回路モジュールに共通のバス信号線を用いて一つのバスマスタにバスを占有させるバス調停方式を採用するバスであってもよい。
【符号の説明】
【０１４３】
１  データプロセッサ（ＭＣＵ）
２  マルチプロセッサコア（ＭＬＴＰＲＣＲ）
５  システムバス（ＳＢＵＳ）
１６  シンクロナスＤＲＡＭ（ＳＤＲＡＭ）
１９  スタティックＲＡＭ（ＳＲＡＭ）
９  ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）
１９  内部メモリ（ＭＥＭ）
２０，４０  プロセッサコア（Ｃｏｒｅ０，Ｃｏｒｅ１）
２１、４１  中央処理装置(ＣＰＵ)
２２、４２  ローカルメモリ（ＬＲＡＭ）
２６、４６  回路ユニット
２７、４７  オペランドバス
２８、４８  命令バス
２３、４３  キャッシュメモリ（ＣＡＣＨＥ）
２４、４４  メモリマネージメントユニット（ＭＭＵ）
２５、４５  バスインタフェース回路（ＢＩＦＣ）
６  パケットルータ（ＳＲＴＲ）
ＦｌａｇＮ  ロック変数
６０  アドレス判定回路
６１  バスインタフェースロジック（ＢＩＦＬＧＣ）
６２  セレクタ
６３  排他制御領域指定レジスタ
６４  ＬＲＡＭ領域指定レジスタ
Ｒｅｑ  リクエスト信号
ＬＲＥＱ  メモリリクエスト信号
ＢＲＥＱ  バスリクエスト信号
８０  内部バス
８４  バスインタフェース回路（Ｌ２ＢＩＦＣ）
８７  共有メモリ（ＳＨＲＡＭ）
８１  パケットルータ（ＩＲＴＲ）
９０  アドレス判定回路９０
９１  バスインタフェースロジック（ＢＩＦＬＧＣ）
９２  セレクタ
９３  排他制御領域指定レジスタ
９４  ＳＨＲＡＭ領域指定レジスタ
１００  ロック変数のアドレステーブル
１Ａ  データプロセッサ
２０Ａ，４０Ａ  プロセッサコア
２４Ａ，４４Ａ  ＭＭＵ
２５Ａ，４５Ａ  ＢＩＦＣ
１１０  アドレス変換バッファ（ＴＬＢ）
Ｅｎｔｒｙ１〜Ｅｎｔｒｙ６３  ＴＬＢエントリ
ＡＴＭ  排他制御ビット
１２０  アドレス管理回路（ＰＡＭ）
１３０  許可アドレス範囲レジスタ
１３１  許可アクセスタイプレジスタ
１３２  許可ＩＤレジスタ
１３３〜１３５  比較回路
【図１】
2011221931.tif 000003
【図２】
2011221931.tif 000004
【図３】
2011221931.tif 000005
【図４】
2011221931.tif 000006
【図５】
2011221931.tif 000007
【図６】
2011221931.tif 000008
【図７】
2011221931.tif 000009
【図８】
2011221931.tif 000010
【図９】
2011221931.tif 000011
【図１０】
2011221931.tif 000012
【図１１】
2011221931.tif 000013
【図１２】
2011221931.tif 000014
【図１３】
2011221931.tif 000015
【図１４】
2011221931.tif 000016
【図１５】
2011221931.tif 000017
【図１６】
2011221931.tif 000018
【図１７】
2011221931.tif 000019
【図１８】
2011221931.tif 000020
【図１９】
2011221931.tif 000021
【図２０】
2011221931.tif 000022
【図２１】
2011221931.tif 000023
【図２２】
2011221931.tif 000024
【図２３】
2011221931.tif 000025
【図２４】
2011221931.tif 000026
【図２５】
2011221931.tif 000027
【図２６】
2011221931.tif 000028
【図２７】
2011221931.tif 000029
【図２８】
2011221931.tif 000030
【図２９】
2011221931.tif 000031