(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-18
(45)【発行日】2024-03-27
(54)【発明の名称】デュアルレベル管理
(51)【国際特許分類】
G06F 12/14 20060101AFI20240319BHJP
G06F 3/06 20060101ALI20240319BHJP
【FI】
G06F12/14 510D
G06F3/06 304H
(21)【出願番号】P 2022577553
(86)(22)【出願日】2020-12-22
(86)【国際出願番号】 EP2020087565
(87)【国際公開番号】W WO2021254654
(87)【国際公開日】2021-12-23
【審査請求日】2022-12-16
(32)【優先日】2020-06-17
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】518371892
【氏名又は名称】グラフコアー リミテッド
【氏名又は名称原語表記】Graphcore Limited
【住所又は居所原語表記】11-19 Wine Street,Bristol,BS1 2PH,United Kingdom
(74)【代理人】
【識別番号】100169904
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】グレイアム バーナード カニンガム
(72)【発明者】
【氏名】ダニエル ジョン ペルハム ウィルキンソン
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2009-266085(JP,A)
【文献】特表2016-510469(JP,A)
【文献】米国特許出願公開第2020/0065099(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
受信回路であって、前記受信回路が、
少なくとも1つの制御バスを介してアクセス可能な複数の要求回路からの複数の読み取り要求又は書き込み要求を受信するように構成された少なくとも1つのインターフェースであって、前記読み取り要求又は書き込み要求のそれぞれが、前記受信回路に関連付けられた少なくとも1つのストレージにアクセスするための要求である、少なくとも1つのインターフェースと、
複数の許可設定を記憶するように構成された少なくとも1つのレジスタであって、前記複数の許可設定のそれぞれが、前記複数の要求回路のうちの1つによる前記少なくとも1つのストレージへのアクセスが許可されているか否かを示す、少なくとも1つのレジスタと、
プロセッシング回路であって、
前記少なくとも1つのインターフェースにおいて受信された、前記少なくとも1つのストレージにアクセスするための前記複数の要求のうちの少なくとも1つに応じて、それぞれの要求を発行した前記要求回路のうちの1つに対してアクセスが許可されていないという前記許可設定における指示に応じて、読み取り要求又は書き込み要求がサービスされることを阻止し、
第1の管理ユニットから受信された、少なくとも1つのレジスタに対する1つ又は複数の書き込み要求に応じて、前記要求回路のうちの1つ又は複数に対してアクセスが許可されていないと示すように前記許可設定を更新し、
その後、第2の管理ユニットから受信された、前記要求回路のうちの1つ又は複数に対するアクセスを許可するように前記許可設定を更新するための1つ又は複数の書き込み要求に応じて、前記要求回路のうちの前記1つ又は複数に対してアクセスが許可されていないと示すように前記第1の管理ユニットが前記許可設定に書き込んでいると判定したことに応じて、前記要求回路のうちの1つ又は複数に対するアクセスを許可するために前記許可設定を更新することを阻止する、
ように構成されるプロセッシング回路と、
を備える、受信回路。
【請求項2】
前記プロセッシング回路が、前記第2の管理ユニットから受信された前記要求回路のうちの1つ又は複数に対してアクセスを阻止するように前記許可設定を更新するための1つ又は複数の更なる書き込み要求に応じて、アクセスが阻止されていると示すように前記許可設定の更新を許可するように構成される、請求項1に記載の受信。
【請求項3】
前記許可設定が、複数の第1の許可設定と複数の第2の許可設定とを含み、前記複数の要求回路のそれぞれが、前記第1の許可設定のうちの1つ及び前記第2の許可設定のうちの1つに関連付けられる、請求項1又は2に記載の受信回路。
【請求項4】
前記プロセッシング回路が、前記第2の管理ユニットから受信された、少なくとも1つのストレージへの前記読み取り要求又は書き込み要求のうちの少なくとも1つについて、それぞれの要求が前記第2の管理ユニットから受信されたと判定されたことに応じて、前記複数の第2の許可設定とは無関係にそれぞれの要求にサービスするように構成される、請求項1~3のいずれか一項に記載の受信回路。
【請求項5】
前記プロセッシング回路が、前記第2の管理ユニットから受信された、少なくとも1つのストレージへの前記読み取り要求又は書き込み要求のうちの少なくとも1つについて、アクセスが許可されていないという前記第1の許可設定における指示に応じてそれぞれの要求がサービスされることを阻止するように構成される、請求項3又は4に記載の受信回路。
【請求項6】
それぞれの読み取り要求又は書き込み要求がサービスされることを阻止することが、前記要求の発信元である前記要求回路が、前記第1の許可設定又は前記第2の許可設定の一方又は両方において、アクセスが許可されていないと示す少なくとも1つの設定に関連付けられていると判定されたことに応じて実行される、請求項3~5のいずれか一項に記載の受信回路。
【請求項7】
前記プロセッシング回路が、前記第1の管理ユニットから受信された少なくとも1つのストレージへの前記読み取り要求又は書き込み要求のうちの少なくとも1つについて、それぞれの要求が前記第1の管理ユニットから受信されたと判定されたことに応じて、前記許可設定とは無関係にそれぞれの要求にサービスするように構成される、請求項1~6のいずれか一項に記載の受信回路。
【請求項8】
前記要求回路のそれぞれが、前記複数の読み取り要求又は書き込み要求のうちの少なくとも1つを生成するコンピュータ可読命令を実行するように構成された少なくとも1つのプロセッサに関連付けられる、請求項1~7のいずれか一項に記載の受信回路。
【請求項9】
前記要求回路のそれぞれが、前記複数の読み取り要求又は書き込み要求のうちの少なくとも1つを生成するように構成された回路に関連付けられ、前記回路がフィールドプログラマブルゲートアレイ又は特定用途向け集積回路のうちの少なくとも一方を含む、請求項1~8のいずれか一項に記載の受信回路。
【請求項10】
前記複数の要求回路のうちの少なくとも1つが、前記第1の管理ユニット又は前記第2の管理ユニットに関連付けられる、請求項1~9のいずれか一項に記載の受信回路。
【請求項11】
前記プロセッシング回路が、
前記第1の管理ユニット及び前記第2の管理ユニットからの前記少なくとも1つのレジスタへの書き込み要求を受信する前に、第3の管理ユニットから前記第1の管理ユニットの識別子を受信し、
前記少なくとも1つのレジスタにおいて前記第1の管理ユニットの識別子を記憶し、
前記第1の管理ユニットから受信された、少なくとも1つのレジスタへの1つ又は複数の書き込み要求に応じて、前記要求における識別子が、少なくとも1つのレジスタにおける前記第1の管理ユニットの前記識別子と一致すると判定したことに応じて、前記1つ又は複数の許可設定を更新するように構成される、請求項1~10のいずれか一項に記載の受信回路。
【請求項12】
前記第3の管理ユニットが、前記第1の管理ユニットの前記識別子を1つ又は複数のヒューズに記憶する、請求項11に記載の受信回路。
【請求項13】
前記プロセッシング回路が、
前記第1の管理ユニットから、前記第2の管理ユニットの識別子を受信し、
少なくとも1つのレジスタにおいて前記第2の管理ユニットの前記識別子を記憶し、
その後、前記第2の管理ユニットから受信された少なくとも1つのレジスタへの1つ又は複数の更なる書き込み要求に応じて、前記要求における識別子が、少なくとも1つのレジスタにおける前記第2の管理ユニットの前記識別子と一致すると判定したことに応じて、前記1つ又は複数の許可設定を更新するように構成される、請求項11又は12に記載の受信回路。
【請求項14】
前記プロセッシング回路が、少なくとも1つのインターフェースにおいて受信された少なくとも1つのストレージにアクセスするための前記要求の少なくとも1つのそれぞれに応じて、それぞれの要求において示された少なくとも1つのストレージにおける少なくとも1つのアドレスにおいて読み取り要求又は書き込みを実行させるように構成される、請求項1~13のいずれか一項に記載の受信回路。
【請求項15】
少なくとも1つのレジスタが、1つ又は複数のアクセス許可が適用されない少なくとも1つのアドレスの指示を含み、前記プロセッシング回路が、受信された要求のうちの1つが、前記アクセス許可が適用されない少なくとも1つのアドレスの前記指示に一致するアドレスを示すと判定したことに応じて、前記要求にサービスするように構成される、請求項1~14のいずれか一項に記載の受信回路。
【請求項16】
前記プロセッシング回路が、前記第1の管理ユニット及び前記第2の管理ユニットのうちの少なくとも1つから受信された1つ又は複数の書き込み要求に応じて、1つ又は複数のアクセス許可が適用されない少なくとも1つのアドレスの指示を少なくとも1つのレジスタに書き込むように構成される、請求項15に記載の受信回路。
【請求項17】
少なくとも1つのインターフェースにおいて受信された少なくとも1つのストレージにアクセスするための前記要求のうちの少なくとも1つのそれぞれに応じて、1つ又は複数の許可設定のいずれかにおける、アクセスが許可されていないという指示に応じて、前記要求の失敗を示すパケットを、それぞれの要求の発信元の要求回路に送信する、請求項1~16のいずれか一項に記載の受信回路。
【請求項18】
前記受信回路が、集積回路における使用に適する、請求項1~17のいずれか一項に記載の受信回路。
【請求項19】
前記集積回路が、ホストシステムのためのアクセラレータサブシステムとして機能するように構成される、請求項18に記載の前記受信回路を備える集積回路。
【請求項20】
前記第2の管理ユニットが、前記ホストシステム上で稼働するハイパーバイザに関連付けられる、請求項19に記載の集積回路。
【請求項21】
データに対する演算を実行するためのコンピュータ可読命令を実行するように構成された複数のプロセッシングユニットであって、複数のプロセッシングユニットのそれぞれが制御レジスタを備え、少なくとも1つのストレージが前記プロセッシングユニットの前記制御レジスタを備える、複数のプロセッシングユニットを備える、請求項19又は20に記載の集積回路。
【請求項22】
受信回路により実施される方法であって、前記方法が、
複数の要求回路のうちの1つに対して受信回路に関連付けられた少なくとも1つのストレージへのアクセスが許可されているか否かを示す複数の許可設定
を少なくとも1つのレジスタに記憶することと、
第1の管理ユニットから受信された、前記少なくとも1つのレジスタへの1つ又は複数の書き込み要求に応じて、前記要求回路のうちの1つ又は複数に対してアクセスが許可されていないことを示すように前記許可設定を更新することと、
その後、第2の管理ユニットから受信された、前記要求回路のうちの1つ又は複数に対してアクセスを許可するように前記許可設定を更新するための1つ又は複数の書き込み要求に応じて、前記要求回路のうちの1つ又は複数に対してアクセスが許可されていないと示すように前記第1の管理ユニットが前記許可設定に書き込んでいると判定したことに応じて、前記要求回路のうちの1つ又は複数に対するアクセスを許可するための前記許可設定を更新することを阻止することと、
少なくとも1つの制御バスを介してアクセス可能な複数の要求回路から、前記受信回路に関連付けられた少なくとも1つのストレージにアクセスするための要求である複数の読み取り要求又は書き込み要求を受信することと、
前記受信回路に関連付けられた少なくとも1つのストレージにアクセスするための複数の要求のうちの少なくとも1つのそれぞれに応じて、それぞれの要求を発行した前記要求回路のうちの1つに対してアクセスが許可されていないという前記許可設定における指示に応じて、それぞれの読み取り要求又は書き込み要求がサービスされることを阻止することと、
を含む、方法。
【請求項23】
受信回路のプロセッサに請求項22に記載の方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、受信回路に関し、詳細には、記憶されたアクセス許可にしたがって読み取り要求又は書き込み要求を処理するように構成された受信回路に関する。
【背景技術】
【0002】
システムオンチップなどのプロセッシングデバイスは、異なる機能を有する複数の異なるコンポーネントを備える。プロセッシングデバイスは、例えば、メモリに記憶されたデータに対する演算を実行するコンピュータ可読命令を実行するように構成された複数の異なるプロセッシング要素を備え得る。
【0003】
プロセッシング要素に加えて、プロセッシングデバイスは、プロセッシングデバイスが動作できるようにする付加的な要素、例えば、リセットレジスタ、交換回路などを備え得る。プロセッシングデバイスの異なる要素の多くは、プロセッシングデバイスの異なる要素間で制御情報を交換するインターコネクトを介して、プロセッシングデバイスの他の要素によってアクセスされ得る。
【0004】
プロセッシングデバイスの要素がプロセッシングデバイスの他の要素に関連付けられたストレージに対して読み取り又は書き込みし得るプロセッシングデバイスを設計する場合、セキュリティ面を考慮することが重要である。特に、プロセッシングデバイスの他の要素に対して読み取り要求又は書き込み要求を発行することができるプロセッシングデバイスの特定の要素は、信頼できない第三者ソフトウェア又はファームウェアからの命令を実行したり、そのような命令に応答することであったりすることがある。したがって、プロセッシングデバイスの特定の要素へのアクセスを制限することが望ましい場合がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
プロセッシングシステムのある要素が1つ又は複数のエンティティからのアクセス要求を受信した場合、セキュリティ上の理由から、この要素へのアクセスを制限することが望ましい場合がある。このアクセス制限は、この要素に対するアクセス許可を信頼できるエンティティに定義させることによって行うことができ、このアクセス許可は、到来する読み取り要求又は書き込み要求がこの要素によってサービスされるか否かを定める。しかしながら、アクセス許可を定義することが特定の信頼できるエンティティにのみ制限される場合、アクセスを制御できる柔軟性が低下し得る。例えば、他の当事者が自らアクセスを制御することによりデバイスにおけるセキュリティ上の利益を行使する能力を制限することになり得る。一方、信頼できないエンティティがアクセス許可を定義することを許可された場合、このことはセキュリティ上のリスクをもたらし得る。
【課題を解決するための手段】
【0006】
第1の態様によれば、受信回路であって、受信回路が、少なくとも1つの制御バスを介してアクセス可能な複数の要求回路からの複数の読み取り要求又は書き込み要求を受信するように構成された少なくとも1つのインターフェースであって、読み取り要求又は書き込み要求のそれぞれが、受信回路に関連付けられた少なくとも1つのストレージにアクセスするための要求である、少なくとも1つのインターフェースと、複数の許可設定を記憶するように構成された少なくとも1つのレジスタであって、複数の許可設定のそれぞれが、複数の要求回路のうちの1つによる少なくとも1つのストレージへのアクセスが許可されているか否かを示す、少なくとも1つのレジスタと、プロセッシング回路であって、少なくとも1つのインターフェースにおいて受信された、少なくとも1つのストレージにアクセスするための複数の要求のうちの少なくとも1つに応じて、それぞれの要求を発行した要求回路のうちの1つに対してアクセスが許可されていないという許可設定における指示に応じて、読み取り要求又は書き込み要求がサービスされることを阻止し、第1の管理ユニットから受信された、少なくとも1つのレジスタに対する1つ又は複数の書き込み要求に応じて、要求回路のうちの1つ又は複数に対してアクセスが許可されていないと示すように許可設定を更新し、その後、第2の管理ユニットから受信された、要求回路のうちの1つ又は複数に対するアクセスを許可するように許可設定を更新するための1つ又は複数の書き込み要求に応じて、要求回路のうちの1つ又は複数に対してアクセスが許可されていないと示すように第1の管理ユニットが許可設定に書き込んでいると判定したことに応じて、要求回路のうちの1つ又は複数に対するアクセスを許可するために許可設定を更新することを阻止するように構成されるプロセッシング回路とを備える、受信回路が提供される。
【0007】
2つのエンティティ(すなわち、第1の管理ユニット及び第2の管理ユニット)が受信回路に関連付けられたストレージへのアクセスを制御できるようにすることによって、これら2つの異なるエンティティはデバイスに対するセキュリティ上の利益を行使できる。しかしながら、第2の管理ユニット(第1の管理ユニットによって信用されていない場合がある)は、第1の管理ユニットによって課された特定のセキュリティレイヤを削除することが阻止される。各セキュリティレイヤは、異なるエンティティに対してアクセス制限を課すために使用され得る。したがって、受信回路は、安全であり、且つ異なるエンティティが独自のセキュリティ設定を付加することを可能にする柔軟性をもたらす。
【0008】
いくつかの実施形態では、プロセッシング回路が、第2の管理ユニットから受信された要求回路のうちの1つ又は複数に対するアクセスを阻止するように許可設定を更新するための1つ又は複数の更なる書き込み要求に応じて、アクセスが阻止されていると示すように許可設定の更新を許可するように構成される。
【0009】
いくつかの実施形態では、許可設定が、複数の第1の許可設定と複数の第2の許可設定とを含み、複数の要求回路のそれぞれが、第1の許可設定のうちの1つ及び第2の許可設定のうちの1つに関連付けられる。
【0010】
いくつかの実施形態では、プロセッシング回路が、第2の管理ユニットから受信された、少なくとも1つのストレージへの読み取り要求又は書き込み要求のうちの少なくとも1つのそれぞれについて、それぞれの要求が第2の管理ユニットから受信されたと判定されたことに応じて、複数の第2の許可設定とは無関係にそれぞれの要求にサービスするように構成される。
【0011】
いくつかの実施形態では、プロセッシング回路が、第2の管理ユニットから受信された、少なくとも1つのストレージへの読み取り要求又は書き込み要求のうちの少なくとも1つのそれぞれについて、アクセスが許可されていないという第1の許可設定における指示に応じてそれぞれの要求がサービスされることを阻止するように構成される。
【0012】
いくつかの実施形態では、それぞれの読み取り要求又は書き込み要求がサービスされることを阻止することが、要求の発信元である要求回路が、第1の許可設定又は第2の許可設定の一方又は両方において、アクセスが許可されていないと示す少なくとも1つの設定に関連付けられていると判定されたことに応じて実行される。
【0013】
いくつかの実施形態では、プロセッシング回路が、第1の管理ユニットから受信された少なくとも1つのストレージへの読み取り要求又は書き込み要求のうちの少なくとも1つについて、それぞれの要求が第1の管理ユニットから受信されたと判定されたことに応じて、許可設定とは無関係にそれぞれの要求にサービスするように構成される。
【0014】
いくつかの実施形態では、要求回路のそれぞれが、複数の読み取り要求又は書き込み要求のうちの少なくとも1つを生成するコンピュータ可読命令を実行するように構成された少なくとも1つのプロセッサに関連付けられる。
【0015】
いくつかの実施形態では、要求回路のそれぞれが、複数の読み取り要求又は書き込み要求のうちの少なくとも1つを生成するように構成された回路に関連付けられ、回路がフィールドプログラマブルゲートアレイ又は特定用途向け集積回路のうちの少なくとも一方を含む。
【0016】
いくつかの実施形態では、複数の要求回路のうちの少なくとも1つが、第1の管理ユニット又は第2の管理ユニットに属する。
【0017】
いくつかの実施形態では、プロセッシング回路が、第1の管理ユニット及び第2の管理ユニットからの少なくとも1つのレジスタへの書き込み要求を受信する前に、第3の管理ユニットから第1の管理ユニットの識別子を受信し、少なくとも1つのレジスタにおいて第1の管理ユニットの識別子を記憶し、第1の管理ユニットから受信された、少なくとも1つのレジスタへの1つ又は複数の書き込み要求に応じて、要求における識別子が、少なくとも1つのレジスタにおける第1の管理ユニットの識別子と一致すると判定したことに応じて、1つ又は複数の許可設定を更新するように構成される。
【0018】
いくつかの実施形態では、第3の管理ユニットが、第1の管理ユニットの識別子を1つ又は複数のヒューズに記憶する。
【0019】
いくつかの実施形態では、プロセッシング回路が、第1の管理ユニットから、第2の管理ユニットの識別子を受信し、少なくとも1つのレジスタにおいて第2の管理ユニットの識別子を記憶し、その後、第2の管理ユニットから受信された、少なくとも1つのレジスタへの1つ又は複数の更なる書き込み要求に応じて、要求における識別子が、少なくとも1つのレジスタにおける第2の管理ユニットの識別子と一致すると判定したことに応じて、1つ又は複数の許可設定を更新するように構成される。
【0020】
いくつかの実施形態では、プロセッシング回路が、少なくとも1つのインターフェースにおいて受信された少なくとも1つのストレージにアクセスするための要求の少なくとも1つのそれぞれに応じて、それぞれの要求において示された少なくとも1つのストレージにおける少なくとも1つのアドレスにおいて読み取り要求又は書き込みを実行させるように構成される。
【0021】
いくつかの実施形態では、少なくとも1つのレジスタが、1つ又は複数のアクセス許可が適用されない少なくとも1つのアドレスの指示を含み、プロセッシング回路が、受信された要求のうちの1つが、アクセス許可が適用されない少なくとも1つのアドレスの指示に一致するアドレスを示すと判定したことに応じて、要求にサービスするように構成される。
【0022】
いくつかの実施形態では、プロセッシング回路が、第1の管理ユニット及び第2の管理ユニットのうちの少なくとも1つから受信された1つ又は複数の書き込み要求に応じて、1つ又は複数のアクセス許可が適用されない少なくとも1つのアドレスの指示を少なくとも1つのレジスタに書き込むように構成される。
【0023】
いくつかの実施形態では、少なくとも1つのインターフェースにおいて受信された少なくとも1つのストレージにアクセスするための要求のうちの少なくとも1つのそれぞれに応じて、1つ又は複数の許可設定のいずれかにおける、アクセスが許可されていないという指示に応じて、要求の失敗を示すパケットを、それぞれの要求の発信元の要求回路に送信する。
【0024】
いくつかの実施形態では、受信回路が、集積回路における使用に適する。
【0025】
第2の態様によれば、第1の態様の受信回路を備える集積回路であって、集積回路がホストシステムのためのアクセラレータサブシステムとして機能するように構成される、集積回路が提供される。
【0026】
いくつかの実施形態では、第2の管理ユニットが、ホストシステム上で稼働するハイパーバイザに関連付けられる。
【0027】
いくつかの実施形態では、集積回路は、データに対する演算を実行するためのコンピュータ可読命令を実行するように構成された複数のプロセッシングユニットであって、複数のプロセッシングユニットのそれぞれが制御レジスタを備え、少なくとも1つのストレージがプロセッシングユニットの制御レジスタを備える、複数のプロセッシングユニットを備える。
【0028】
第3の態様によれば、受信回路により実施される方法であって、本方法が、複数の要求回路のうちの1つに対して受信回路に関連付けられた少なくとも1つのストレージへのアクセスが許可されているか否かを示す複数の許可設定を記憶することと、第1の管理ユニットから受信された、少なくとも1つのレジスタへの1つ又は複数の書き込み要求に応じて、要求回路のうちの1つ又は複数に対してアクセスが許可されていないと示すように許可設定を更新することと、その後、第2の管理ユニットから受信された、要求回路のうちの1つ又は複数に対してアクセスを許可するように許可設定を更新するための1つ又は複数の書き込み要求に応じて、要求回路のうちの1つ又は複数に対してアクセスが許可されていないと示すように第1の管理ユニットが許可設定に書き込んでいると判定したことに応じて、要求回路のうちの1つ又は複数に対するアクセスを許可するための許可設定を更新することを阻止することと、少なくとも1つの制御バスを介してアクセス可能な複数の要求回路から、受信回路に関連付けられた少なくとも1つのストレージにアクセスするための要求である複数の読み取り要求又は書き込み要求を受信することと、受信回路に関連付けられた少なくとも1つのストレージにアクセスするための複数の要求のうちの少なくとも1つのそれぞれに応じて、それぞれの要求を発行した要求回路のうちの1つに対してアクセスが許可されていないという許可設定における指示に応じて、それぞれの読み取り要求又は書き込み要求がサービスされることを阻止することとを含む、方法が提供される。
【0029】
第4の態様によれば、受信回路のプロセッサに第3の態様による方法を実行させるコンピュータプログラムが提供される。
【0030】
第5の態様によれば、第4の態様によるコンピュータプログラムを記憶する非一時的コンピュータ可読媒体が提供される。
【0031】
本発明をよりよく理解するために、また、本発明がどのように実施され得るかを示すために、ここで、添付の図面を例として参照する。
【図面の簡単な説明】
【0032】
【
図1】イニシエータとターゲットとの間でパケットを交換するための制御バスを示す。
【
図2】ネットワークを介して送信するためのデータパケットのヘッダのフィールドを示す。
【
図4】ターゲット-イニシエータ基準で定義された2つのレベルを含む1セットのアクセス許可の一例を示す。
【
図5】レベル1マネージャがアクセス許可に書き込んだか否かをフラグで示している複数セットのアクセス許可の一例を示す。
【
図6】レベル1マネージャがアクセス許可に書き込んだか否かをフラグで示している複数セットのアクセス許可の更なる例を示す。
【
図7】制御バスを使用して実施される例示的な方法を示す。
【
図8】受信回路により実施される例示的な方法を示す。
【発明を実施するための形態】
【0033】
本明細書で説明される技術は、プロセッシングユニットにより実施され得る。本技術が実施され得る例示的なプロセッシングユニットは、本発明者らによる先の米国特許出願第15/885925号明細書に記載されたインテリジェンスプロセッシングユニット(Intelligence Processing Unit、IPU)であり、同米国特許出願の内容は参照により組み込まれる。ただし、本明細書で説明される技術は他のタイプのデバイスにも適用され得る。
【0034】
制御トラフィックを運ぶための制御バスが集積回路(すなわち、チップ)により実施される。
図1を参照すると、
図1には、例示的な制御バス700が示されている。制御バス700は、リングにおいてシングルワード制御トラフィックを運ぶためのデータパスである。制御バス700はパイプライン化されたデータバスであり、パイプライン化されたデータバスを介して、データパケットが、制御バス700に印加されるクロックパルスによって決まる速度でパイプラインにおけるステージ間を移動する。リングは複数のノード710を備え、トラフィックが、あるノード710から次のノード710へとリングを周回する流れの方向に通る。リングでは、各ノードの出力ポート750が次のノード710の入力ポート760に接続される。
【0035】
ノード710のうちのいくつかは、バスターゲット720に関連付けられたストレージに対する読み取り要求又は書き込み要求を受信するための受信回路720(本明細書ではバスターゲット720と呼ばれる)への接続部を備える。また、ノードのうちのいくつかは、読み取り要求又は書き込み要求を発行する要求回路730(本明細書ではバスイニシエータ730と呼ばれる)への接続部を備える。実施形態では、制御バス700は、最大16個のバスイニシエータと512個のバスターゲットとの間でトラフィックを運ぶ。したがって、ノード710は、バスイニシエータ730又はバスターゲット720を制御バス700に接続する、制御バス700におけるブロックである。
【0036】
バスイニシエータ730を組み込んでいるオンチップコンポーネント/デバイスの例としては、ソフトウェア又はファームウェアを実行するオンチッププロセッサ、I/Oポート(例えば、PCIeによってIPUに接続された外部プロセッサ上で稼働しているソフトウェアからの要求を受信するPCI expressエンドポイント)、チップ上の他のハードウェアユニットと通信するために制御バスを使用するハードウェアユニットが挙げられる。これらのコンポーネントのそれぞれが、それらの要求回路/バスイニシエータ730を介して読み取り要求又は書き込み要求を発行することができる。すべてのバスイニシエータ730はチップ上にある。バスイニシエータ730を組み込んだコンポーネントもまた、バスイニシエータ730を介して読み取り要求又は書き込み要求を発行する要求ブロックを組み込んでいる。
【0037】
バスターゲット720を含むオンチップコンポーネント/デバイスの例としては、ハードウェアユニットの動作を制御するパラメータを記憶する制御レジスタを有するハードウェアユニット、オンチップストレージ(例えば、SRAM又は不揮発性メモリ)、オフチップストレージへのブリッジ(DRAMメモリコントローラなど)、制御バス通信プロトコルで記述されたパケットを他のプロトコルに変換するための回路が挙げられる。このようなバスターゲット720のそれぞれが、読み取られたり書き込まれたりし得るストレージに関連付けられる。すべてのバスターゲット720はチップ上にある。バスターゲット720を組み込んだコンポーネントのそれぞれもまた、バスターゲット720において受信された要求に応じて書き込まれたり読み取られたりし得るストレージを含む受信ブロックを含む。
【0038】
バスイニシエータ730のそれぞれが、バスターゲット720に対して要求を発行し、バスターゲット720からコンプリーションを受信することができる。各要求は、バスターゲット720に関連付けられたストレージ(例えば、アタッチされたアドレス指定可能なエンティティ又は自動生成されたレジスタ)から読み取るコマンド、又はバスターゲット720に関連付けられたこのようなストレージに書き込む要求のいずれかである。このような要求を受信したことに応じて、バスターゲット720は、コンプリーションを発行することにより応答する。コンプリーションは、読み取り要求又は書き込み要求が成功したか否かを示すステータス更新を提供する。
【0039】
制御バスノード710は、バスイニシエータ730及びバスターゲット720を制御バス700に接続する。制御バスノード710は、制御バス700のトランザクションルーティングを処理し、制御バス700のアクセスプロトコルを管理する。各制御バスノード710は、バスイニシエータインターフェース又はバスターゲットインターフェースのいずれかを有し得る。
【0040】
バスイニシエータ730は、制御バス710上に要求を発行し、それに応じて関連するコンプリーションを受信する。バスイニシエータ730に対して、バスイニシエータ730に接続されたノード710によるバスアクセスが許可されると、バスイニシエータ730は、そのノード710を介して制御バス700上に自身の要求トランザクションを発行し得る。また、バスイニシエータ730は、自身が発行した読み取り要求又は書き込み要求に応じて、バスターゲット720からコンプリーションを受信する。
【0041】
また、リングにおいては、要求トークン及びコンプリーショントークンが発行される。これらは、リングを循環し、制御バス700へのアクセスに関してバスイニシエータ730とバスターゲット720との調停を可能にするパケットである。任意の時点でリングを循環しているトークンの数は、レギュレータ740によって制御される。まずレギュレータ740がトークンを発行し、そして、理解されるように、トークンが、バスイニシエータ730及びバスターゲット720によって、バスイニシエータ730及びバスターゲット720が要求及びコンプリーションを送信及び受信するときに追加及び削除される。トークンは、バスイニシエータ730及びバスターゲット720に対して、制御バス700へのアクセスを許可するために使用される。制御バスレギュレータ740は、要求トークン及びコンプリーショントークンをバス710上に発行することによって制御バス710のアクセスを制御する役割を担う。制御バス700上で循環している要求トークン及びコンプリーショントークンの数(数はレギュレータ740によって設定される)によって、制御バス700がサポートする未処理のトランザクションの数が決まる。
【0042】
トークンは、要求トークン及びコンプリーショントークンの形態を取る。要求トークンは、バスイニシエータ730に対して、制御バス700へのアクセスを許可する。コンプリーショントークンは、バスターゲット720に対して、制御バス700へのアクセスを許可する。要求トークンは、発行保留中の要求を有するバスイニシエータ730がトークンを受信し、制御バス700からトークンを削除するまで、制御バス700に沿って循環する。各要求トークンは識別子(initidと呼ばれる)を含む。識別子initidは、レギュレータ740又はリング内のバスイニシエータ730のうちの1つのいずれかを識別する。要求トークンがノード710に到着した場合、そのノード710のバスイニシエータ730が、要求トークンの識別子がそのバスイニシエータ730の識別子と一致すること、又は要求トークンの識別子がレギュレータ740の識別子と一致することのいずれかを判定したことに応じて、リングから要求トークンを削除する。したがって、要求トークンは、制御バス700を循環し、要求トークンが、発行保留中の要求を有し、一致する識別子を含むバスイニシエータ730へのインターフェースを含むノード710に到着したとき、又は要求トークンがレギュレータ740の識別子を含む場合には、要求トークンが、発行保留中の要求を有する任意のバスイニシエータ730へのインターフェースを含むノード710に到着したときのいずれかの場合に削除される。
【0043】
バスイニシエータ730が制御バス700から要求トークンを削除した場合、バスイニシエータ730は、制御バス700上に要求を発行する。要求は、書き込み要求又は読み取り要求であり得る。書き込み要求は、バスターゲット720に関連付けられたストレージに書き込む要求である。読み取り要求は、バスターゲット720に関連付けられたストレージから読み取る要求である。
【0044】
書き込み要求は、ヘッダとペイロードとを含む。これらは、間を空けずに制御バス700上に送信される。ペイロードは、1つ又は複数のバスターゲット720の関連付けられたストレージに書き込むことになっているデータを含む。書き込み要求はユニキャスト又はブロードキャストとすることができる。ユニキャスト書き込み要求は、制御バス700上の識別された単一のバスターゲット720に対して発行される。ブロードキャスト書き込み要求は、制御バス700上のすべてのバスターゲット720に対して発行される。
【0045】
バスターゲット720がユニキャスト書き込み要求を受信した場合、バスターゲット720は、書き込み要求を受信したことに応じて、書き込みコンプリーションを発行する。書き込みコンプリーションは、書き込み要求を発行したバスイニシエータ730に返される。書き込みコンプリーションは、書き込み要求が成功したか否かの指示を含む。ブロードキャスト書き込み要求の場合、バスターゲット720から書き込みコンプリーションは返されない。
【0046】
読み取り要求はそれぞれ、ペイロードがなくヘッダを含む。読み取り要求はユニキャストである。読み取り要求を受信したバスターゲット720は、読み取りコンプリーションを発行することにより応答する。読み取りコンプリーションは、ヘッダとペイロードとを含み、ペイロードは、読み取り要求において示されるアドレスから読み取ったデータを含む。読み取りコンプリーションはまた、読み取り要求が成功したか否かの指示を含む。この指示は、読み取ったコンプリーションパケットのヘッダに含まれる。読み取りコンプリーションが、読み取り要求が成功しなかったという指示を含む場合、読み取りコンプリーションを受信したバスイニシエータ730は、ペイロードに含まれるデータを無視する。
【0047】
図2を参照すると、
図2は、制御バス700上に発行されたパケットのうちの1つのヘッダ800の一例を示す。ヘッダ800は、読み取り要求、書き込み要求、読み取りコンプリーション、書き込みコンプリーション、要求トークン、又はコンプリーショントークンのヘッダであり得る。いくつかのこれらのパケットタイプは、特定のフィールドを含まないこともある。例えば、アドレスフィールド840は要求トークン及びコンプリーショントークンから省略され得る。
【0048】
また、バス700上を循環するパケットのうちのいくつかは、ペイロード(例えば、書き込み要求又は読み取りコンプリーション)を含むが、これらは
図2には示していない。ヘッダに沿って振られた数字はヘッダ800のビットを示す。この例示的なヘッダ800は32ビットを含み、0~3のビットにトランザクションタイプ810が示され、4~7のビットにバスイニシエータ730又はレギュレータ740の識別子820が示され、8~16のビットにバスターゲット識別子830が示され、17~31のビットにアドレスオフセット840が示される。これらの数は例に過ぎず、ヘッダ800におけるビットの数及び様々なフィールドに対するビットの割り当ては、他の例では異なり得る。
【0049】
ヘッダ800は、トランザクションタイプの指示810を含む。この指示810は、パケットが読み取り要求、書き込み要求、読み取りコンプリーション、書き込みコンプリーション、要求トークン、又はコンプリーショントークンのいずれであるかを識別する。
【0050】
ヘッダ800は、バスイニシエータ730又はレギュレータ740のいずれかの識別子820を含む。これは、上述のinitidフィールドである。要求パケットでは、識別子820は、バスイニシエータ730のうちのどれが制御バス700上に要求パケットを提供したかを示す。コンプリーションパケットでは、識別子820は、コンプリーションのための宛先バスイニシエータ730を示す。要求トークンパケットの場合、識別子820は、レギュレータ740又はバスイニシエータ730のうちの1つのいずれかの識別子である。識別子820がレギュレータ740を識別する場合、要求トークンは、任意のバスイニシエータ730によって削除/消費され得る。識別子820がバスイニシエータ730のうちの1つを識別する場合、要求トークンは、識別子820によって識別されたバスイニシエータ730によってのみ削除/消費され得る。一方、コンプリーショントークンは、任意のバスターゲット720によって削除/消費され得る。いくつかの実施形態では、識別子820は、コンプリーショントークンパケットに存在しないこともある。他の実施形態では、コンプリーショントークンパケットにおける識別子820は、レギュレータ740を識別し得る。
【0051】
ヘッダ800は、バスターゲット720のうちの1つを識別するバスターゲット識別子フィールド830を含む。ユニキャスト要求パケットの場合、識別されたバスターゲット720は要求の宛先である。識別されたバスターゲット720は要求に応答する。ブロードキャスト要求パケットの場合、フィールド830は、パケットがブロードキャストパケットであるという指示を含む。
【0052】
いくつかの場合では、バスターゲット720は複数のバスターゲット識別子に関連付けられ、異なるバスターゲット識別子が、バスターゲットに関連付けられた異なるストレージに関連付けられる。例えば、第1のバスターゲット識別子がバスターゲット720の管理レジスタに関連付けられることもある一方、第2のバスターゲット識別子が同じバスターゲット720に関連付けられた更なるストレージに関連付けられることもある。この場合、フィールド830は、特定のバスターゲット720に関連付けられたストレージのうちの1つを識別し得る。
【0053】
コンプリーションパケットの場合、フィールド830は、コンプリーションパケットの発信元であるバスターゲット720を識別する。この情報は、デバッグの目的で使用され得る。複数のバスターゲット720が自身らの状態を単一のコンプリーションパケットに集約する場合(このことは、コンプリーションがブロードキャスト要求に応じて発行される場合に行われる)、フィールド830はバスターゲット720を識別しない。この場合、フィールド830は未定義のままとされる。
【0054】
ヘッダ800は、バスターゲットの関連付けられたストレージにあるアドレスを示すアドレスフィールド840を含む。このアドレスは、バスターゲット720に関連付けられた自動生成されたレジスタにおけるアドレスであり得る。アドレスは、バスターゲット720に関連付けられたアドレスウィンドウにおけるアドレスであり得る。要求パケットでは、このアドレスは、読み出し又は書き込みが実行されることになるアドレスを示す。コンプリーションパケットでは、アドレスフィールド840は、コンプリーションパケットがそれに応じて発行される対応する要求パケットのアドレスフィールド840に存在するのと同じアドレスを含む。
【0055】
上述のように、バスターゲット720及びバスイニシエータ730による制御バス700へのアクセスは、トークンシステムによって制御される。バスイニシエータ730は、バスイニシエータ730が接続されているノード710に到着した要求トークンをバスイニシエータ730が消費した場合にのみ、制御バス上に要求を発行し得る。バスターゲット720は、バスターゲット720が接続されているノード710に到着したコンプリーショントークンをバスターゲット720が消費した場合にのみ、制御バス700上にコンプリーションを発行し得る。レギュレータ740は、トークンを発行し、ひいては、複数のトランザクションが同時に制御バス上で循環し得る程度を制御する役割を担う。
【0056】
制御バス700のトランザクションのライフサイクルは、2つの主なフェーズに分かれる。これらのフェーズとは、要求フェーズ及びコンプリーションフェーズである。
【0057】
要求フェーズにおいて、バスイニシエータ730が保留中の要求を有する場合、バスイニシエータ730は、バスイニシエータ730が接続されたノード710に要求トークンが到着するのを待機する。要求トークンが接続されたノード710において受信されたとき、要求の識別子820がバスイニシエータ730自身又はレギュレータ740のいずれかを識別した場合、そのように判定したことに応じて、バスイニシエータ730は、要求トークンを消費し、トークンを保留中の要求に置き換える。制御バス700のノード710のうちのいくつかは、アタッチされたバスイニシエータ730へのインターフェースを含む。このようなノード710のそれぞれにおけるインターフェースは、要求トークンにおけるイニシエータ識別子820を調べ、適切な識別子が存在すると判定されると、要求トークンをバスイニシエータ730に提供する。判定を行うインターフェースは、バスイニシエータ730自体のプロセッシングロジックの一部であってもよいし、ノード710の別個の回路であってもよい。
【0058】
制御バス700のノード710のうちのいくつかは、アタッチされたバスターゲット720へのインターフェースを含む。このようなノード710のそれぞれにおけるインターフェースは、要求パケットにおけるターゲット識別子820を調べ、要求パケットがアタッチされたバスターゲット720の識別子と一致する識別子を含む場合、要求パケットをバスターゲット720に提供する。判定を行うインターフェースは、バスターゲット720自体のプロセッシングロジックの一部であってもよいし、ノード740の別個の回路であってもよい。
【0059】
バスターゲット720のそれぞれは、読み取り要求又は書き込み要求が制御バス700上でバスイニシエータ730から受信されるバッファを含む。各バスターゲット720におけるバッファは、制御バス700上のすべてのバスイニシエータ730からの要求を記憶し得るために十分に大きい。例えば、制御バス700が16個のイニシエータをサポートする場合、各バスターゲット720におけるバッファは少なくとも16個の要求を記憶することができる。バスターゲット720のプロセッシングロジックは、バッファに記憶された要求を順番に処理し、対応するコンプリーションを制御バス700上に発行させる。制御バス700上のすべてのバスイニシエータ720から要求のためのバッファリング空間を設けることにより、各要求は、対応するバスターゲット720に到達すると削除される。
【0060】
バスターゲット720のうちのいくつかは、低速バスターゲットとして構成される。低速バスターゲットは、自身に向けられた要求を受信すると、その要求を消費し、その要求に基づいて機能し、その要求を制御バス700上で要求トークンに置き換える。
【0061】
バスターゲット720のうちのいくつかは、高速バスターゲットとして構成される。高速バスターゲットは、要求を受信すると、その要求に基づいて機能するが(すなわち、自身の識別されたストレージアドレスへの読み取り又は書き込みによって)、その要求を制御バス上に循環させたままにするバスターゲット720である。換言すれば、要求を処理するバスターゲット720は要求を消費しない。代わりに、要求は、その要求を発行したバスイニシエータ730によって消費される。このバスイニシエータ730は要求を要求トークンに置き換え、その後、この要求トークンは制御バス700上を循環する。バスターゲット720を高速バスターゲットとして構成することには、少なくとも2つの利点がある。第1に、複数のバスターゲット720によって処理されることになる要求は、ここではそのようなバスターゲット720のうちの最初のバスターゲット720によって消費されないため、この動作モードは、ブロードキャスト要求に関して有効に機能する。代わりに、要求は、要求が遭遇する最初のバスターゲット720によって消費されることなしに、複数のバスターゲット720のすべてに伝播する。第2に、バスイニシエータ730による要求トークンの再生成は、リング700沿いの次のバスイニシエータ730が制御バス700に最優先でアクセスし、結果として、より公平なバスアクセス方式がもたらされることを意味する。
【0062】
要求フェーズに続いて、コンプリーションフェーズが実行される。コンプリーションフェーズにおいて、要求の受信及び処理に続いて、バスターゲット720がコンプリーションパケットを制御バス700上に発行し、コンプリーションパケットは、対応する要求の発信元であるバスイニシエータ730によって消費される。保留中のコンプリーションを有するバスターゲット720は、バスターゲット720が接続されたノード710にコンプリーショントークンが到着した場合、バスターゲット720のコンプリーションを発行する。
【0063】
バスターゲット720が制御バス700から読み取り要求又は書き込み要求を受信した場合、読み取り要求又は書き込み要求がサービスされるか否かは、記憶されたアクセス許可が、要求の発信元であるバスイニシエータ730がそのバスターゲットにアクセスできることを示すか否かによって決まる。換言すれば、アクセス許可はバスイニシエータ-バスターゲット基準で定義される。これらのアクセス許可は、バスターゲット720の管理レジスタに保持された管理状態の一部である。
【0064】
バスターゲット720及びバスイニシエータ730のそれぞれが、プロセッシングロジックと、上述のような動作を実行するためのストレージとを備える。プロセッシングロジックは、動作を実行するためにターゲット720又はイニシエータ730のメモリに記憶されたコンピュータ可読命令を実行するように構成されたプロセッシングロジックを含み得る。プロセッシングロジックは、代替的又は追加的に、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)又は特定用途向け回路(application specific circuit、ASIC)を含み得る。
【0065】
図3を参照すると、
図3は、例示的なバスターゲット720を示す。バスターゲット720は、制御バス700から受信された書き込み要求に応じて書き込まれ得るバスターゲット管理レジスタ910を備える。バスターゲットの管理レジスタ910に書き込む要求は、管理要求と呼ばれ得る。バスターゲット管理レジスタ910は、各バスイニシエータ730についてアクセス許可を記憶する。これらのアクセス許可は、後で詳述する第1の管理ユニット及び第2の管理ユニット(レベル1マネージャ及びレベル2マネージャとも呼ばれ得る)と呼ばれる選択されたユニットによって管理レジスタ910に書き込まれ得る。各管理ユニットは、アクセス許可を定義するためにターゲット管理状態への書き込み要求を発行するためのバスイニシエータ730を備える。
【0066】
加えて、各バスターゲット720は、少なくとも1つのノード管理レジスタ940を備える。ノード管理レジスタ940は、バスターゲット720におけるすべてのノード管理レジスタ940に対して共通の状態のセットを書き込む専用のノード管理ブロードキャスト書き込み要求を介して書き込まれ得る。このブロードキャスト書き込みは、本明細書ではレベル0マネージャと呼ばれる更なる管理ユニットによって行われ、これについては後で詳述する。
【0067】
少なくとも1つのバスターゲット管理レジスタ910に加えて、バスターゲット720は、バスターゲット720が属するコンポーネントの受信ブロック950の一部である付加的なストレージ920に関連付けられる。付加的なストレージ920は、アドレス指定可能なウィンドウを介してアクセス可能な自動生成されたレジスタ及び/又はストレージを含み得る。この付加的なストレージ920は、更なるバスを介してアドレス指定可能なチップ2のタイル4上に制御レジスタを含み得る。この付加的なストレージ920は、PCIリンクを介してアクセス可能なホストストレージなどのオフチップストレージへのアクセスを可能にし得る。この場合、付加的なストレージ920は、メモリに書き込まれたデータをホストストレージに提供するホストディスパッチャのメモリである。
【0068】
バスターゲット720は、要求ポートとコンプリーションポートとを備えるインターフェースを介して制御バス710に接続する。要求ポートは、制御バス700からの読み取り要求及び書き込み要求を受信し、これらの要求は、要求バッファ960にバッファリングされた後、プロセッシングロジック930に渡される。コンプリーションポートは、コンプリーションバッファ970から制御バス700上にコンプリーションを送信する。プロセッシングロジック930は、ハードウェア又はソフトウェアにより実現された機能を実行し得る。プロセッシングロジック930は、ASIC、FPGA、又はバスターゲット720の少なくとも1つのメモリに記憶されたコンピュータ可読命令を実行するように構成された少なくとも1つのプロセッサのうちの1つ又は複数を備え得る。
【0069】
プロセッシングロジック930は、バスターゲット720において受信された読み取り/書き込み要求に存在するバスイニシエータ識別子を調べ、読み取り/書き込み要求で識別されたバスイニシエータ730に関連付けられた記憶されたアクセス許可をレジスタ910において調べることにより、要求がサービスされるべきか否かを判定する。読み取り/書き込み要求において識別されたバスイニシエータ730が、記憶されたアクセス許可がバスターゲット720に関連付けられたストレージ920にアクセスできることを示す場合、バスターゲット720は、読み取り/書き込みの実行を可能にすることにより要求にサービスすると決定する。その次に、プロセッシングロジック930は、コンプリーションパケットを制御バス700上に送信させる。読み取り/書き込み要求において識別されたバスイニシエータ730が、バスターゲット720に関連付けられたストレージ920へのアクセスが許可されないとアクセス許可が示す場合、バスターゲット720は、要求にサービスしない。この場合、バスターゲット720は、要求を送信したバスイニシエータ730に対して、要求が成功裏に実行されなかったことを示すコンプリーションパケットを返す。このコンプリーションパケットは、プロセッシングロジック930によってコンプリーションポートを介して送信される。コンプリーションパケットは、コンプリーションバッファ970でバッファリングされた後、コンプリーションポートを介して送信される。
【0070】
バスターゲット管理レジスタ910は管理状態情報を記憶する。すべてのバスターゲット720が、管理空間に存在するレジスタ910を含む。バスターゲット管理状態に含まれる情報のタイプは、バスターゲット720のそれぞれにおいて同じである。しかしながら、バスターゲット管理状態は、バスターゲットごとに異なる設定でプログラムされ得る。バスターゲット管理状態は、各バスイニシエータ730について各バスターゲット720において定義されているアクセス許可を含む。バスターゲット管理状態は、バスターゲット720を介してアクセス可能なストレージの特定のアドレスのうち、ホワイトリストに登録されたアドレス、すなわち、アクセス許可がこれらのアドレスに適用されず、バスイニシエータ730のいずれからも読み取り及び書き込みできるアドレスの指示を含み得る。
【0071】
更なる管理状態(ノード管理状態と呼ばれる)が、バスターゲット720のレジスタ940に記憶される。ノード管理状態は、すべてのバスターゲット720について同じ設定でプログラムされる。このことは、バスイニシエータ730のうちの1つ又は複数がバスターゲット720に対して1つ又は複数のブロードキャスト書き込み要求を発行することによって達成され得る。ノード管理状態は、レベル1マネージャの識別情報を含む。ノード管理状態は、レベル2マネージャの識別情報を含む。ノード管理状態は、システムヒューズボックスから配信される、レベル1マネージャの識別情報を含むヒューズ状態設定を含む。
【0072】
各バスイニシエータ730は、プログラム可能ではないハードウェアにおいて割り当てられた一意イニシエータIDを有する。すべてのバスターゲット720におけるノード管理レジスタ940は、レベル2マネージャのバスイニシエータ730のイニシエータIDを定義する。このことは、プログラム可能に設定され得るが、レベル1マネージャによって発行される書き込み要求によってのみ可能である。レベル2マネージャのバスイニシエータ730のIDは、すべてのターゲット720の各レジスタ940において同じでなければならないため、レベル1マネージャは、バス700上のすべてのバスターゲット720に対してブロードキャスト書き込みを用いて、このIDを書き込む。
【0073】
各バスターゲット720はまた、ストレージ920に関連付けられる。バスターゲット管理レジスタ910とは異なり、関連付けられたストレージ920は異なる形態を取ることがあり、バスターゲット720によって異なる。したがって、(バスターゲット720間でレジスタ910において保持された状態が異なっていても)各バスターゲットについて同じであるバスターゲット管理レジスタ910とは異なり、関連付けられたストレージ920のコンポーネントは各バスターゲット720で異なる。
【0074】
バスターゲット720が、読み取り/書き込み要求を受信した場合、バスターゲット720は、要求に含まれるバスターゲット識別子830に基づいて、レジスタ910に向けられた読み取り/書き込み要求と、ストレージ920に向けられた読み取り/書き込み要求とを区別する。各バスターゲット720は、2つの異なる識別子に関連付けられる。これらの識別子のうちの1つ目は、レジスタ910に関連付けられた識別子である一方、これらの識別子のうちの2つ目は、関連付けられたストレージ920に関連付けられた識別子である。プロセッシングロジック930は、バスターゲット識別子830を調べ、このバスターゲット識別子830に依存して読み取り/書き込み要求が処理されるべきレジスタ910及びストレージ920のうちの一方を選択する。
【0075】
レジスタ910に記憶されたアクセス許可は、プロセッシングロジック930によって、ストレージ920に対して読み取り又は書き込みを行う受信された要求をどのように処理するかを決定するために使用される。プロセッシングロジック930は、読み取り要求又は書き込み要求を受信し、要求に含まれるバスイニシエータ識別子を調べる。プロセッシングロジック930は、そのバスイニシエータ730に対するアクセス許可をバスターゲット管理レジスタ910で調べるためにバスイニシエータ識別子を使用する。バスイニシエータ730の関連付けられた許可設定に基づいて、バスイニシエータ730が関連付けられたストレージ920にアクセスできると判定した場合、プロセッシングロジック930は、要求を満足させる。この場合、ストレージ920への読み取り/書き込みが実行される。一方、バスイニシエータ730の関連付けられた許可設定に基づいて、バスイニシエータ730が関連付けられたストレージ920にアクセスできないと判定した場合、プロセッシングロジック930は、書き込み要求又は読み取り要求がサービスされるのを阻止する。
【0076】
実施形態では、レジスタ910に記憶されたアクセス許可設定のセットは、アクセス許可の2つのサブセットを含む。それらの間において、アクセス許可のサブセットは、第1のコンポーネント(本明細書ではレベル1管理ユニットと呼ばれる)と第2のコンポーネント(本明細書ではレベル2管理ユニットと呼ばれる)とによって定義される。レベル1管理ユニット又はレベル2管理ユニットのいずれかが、アクセス許可のサブセットのいずれかに書き込むことができる。しかしながら、レベル2管理ユニットは、レベル1マネージャによってアクセスを阻止するように設定されているアクセス許可設定を更新できない。
【0077】
アクセス許可設定の各サブセットは、各バスイニシエータ730に関連付けられた設定を含む。所与のバスイニシエータ730において、そのバスイニシエータ730のアクセス許可設定のいずれかが、アクセスが許可されていないという指示を含む場合、バスイニシエータ730から受信された読み取り要求又は書き込み要求はサービスされない(レベル1管理ユニット及びレベル2管理ユニットにはこの規則に対する例外が適用される)。しかしながら、レベル1管理ユニットからのストレージ920に対する読み取り要求又は書き込み要求は、常にサービスされる。レベル2管理ユニットからのストレージ920に対する読み取り要求又は書き込み要求は、レベル2マネージャについてはアクセスが許可されないとレベル1許可設定が示すのではない限りサービスされる。このように、レベル1設定は、レベル2マネージャによるアクセスも阻止し得るため、レベル2設定よりも優先される。
【0078】
図4を参照すると、
図4は、アクセス許可の設定に関する様々な可能性を示す。表1100に示すように、各バスイニシエータ730は、アクセス許可の各レベルに1つずつ、2つ異なる設定に関連付けられる。バスイニシエータ1の場合、レベル1アクセス許可とレベル2アクセス許可との両方が、設定1100を記憶する特定のバスターゲット720に対してアクセスが許可されることを(0bによって)示す。したがって、バスイニシエータ1によって発行され、バスターゲット720において受信された要求は、バスターゲット720によってサービスされる、すなわち、読み取り又は書き込みが実行される。
【0079】
バスイニシエータ2の場合、レベル1アクセス許可設定は、設定1100を記憶する特定のバスターゲット720に対してアクセスが許可されることを(0bによって)示す。しかしながら、レベル2アクセス許可設定は、特定のバスターゲット720に対してアクセスが許可されないことを(1bによって)示す。したがって、(バスイニシエータ2がレベル1マネージャ又はレベル2マネージャに属さないと仮定して)バスイニシエータ2によって発行され、バスターゲット720において受信された要求は、バスターゲット720によってサービスされない、すなわち、読み取り又は書き込みが実行されない。
【0080】
同様に、バスイニシエータ3の場合、レベル2アクセス許可設定は、設定1100を記憶する特定のバスターゲット720に対してアクセスが許可されることを(0bによって)示す。しかしながら、レベル1アクセス許可設定は、特定のバスターゲット720に対してアクセスが許可されないことを(1bによって)示す。したがって、(バスイニシエータ3がレベル1マネージャの一部ではないと仮定して)バスイニシエータ3によって発行され、バスターゲット720において受信された要求は、バスターゲット720によってサービスされない、すなわち、読み取り又は書き込みが実行されない。
【0081】
バスイニシエータ4の場合、レベル1アクセス許可設定とレベル2アクセス許可設定との両方が、アクセスが許可されないことを示すため、(バスイニシエータ4がレベル1マネージャに属さないと仮定して)バスイニシエータ4からの要求は、バスターゲット720によってサービスされない、すなわち、読み取り又は書き込みが実行されない。
【0082】
したがって、2レイヤのセキュリティが有効になっており、これにより、レベル2管理ユニットが、レベル2管理ユニット自身に適用されるレベル1セキュリティ要件に加えて、レベル2管理ユニット独自のセキュリティ要件を追加できる。つまり、いかなるバスイニシエータ730(レベル1マネージャ及びレベル2マネージャのもの以外)によってなされた要求に対しても、管理ユニットのいずれかから配信された設定によってアクセスがブロックされ得る。
【0083】
次に、レベル1管理ユニット及びレベル2管理ユニットが許可設定をどのように構成するかを説明する。再び
図1及び
図3を参照する。上述のように、バスターゲット管理レジスタ910は、関連するバスターゲット720に関して、アクセス許可設定を含む管理状態を記憶する。この管理状態は、関連するバスターゲット720のバスターゲット管理レジスタ910に関連付けられたバスターゲット識別子を伴う書き込み要求を制御バス700上に発行する管理ユニットによって書き込まれ得る。管理ユニットのものとは異なる他のバスイニシエータ730は、管理状態に書き込むことができない。
【0084】
バスイニシエータ730のうちの1つは、第3の管理ユニットに属する(レベル0マネージャと呼ばれる)。レベル0マネージャは、製造時に設定され、変更できない特定の状態を含む。レベル0マネージャはシステムヒューズボックスである。レベル0マネージャは、システム内のノード710及びバスターゲット720にレベル0マネージャの状態を配信するために、書き込み要求を制御バス700上に発行するように構成される。書き込み要求は、バスイニシエータ識別子820として、レベル0マネージャの識別子を含む。各バスターゲット720は、自身のバスターゲット管理レジスタ910に対する受信された書き込み要求におけるバスイニシエータ識別子820がレベル0マネージャの識別子と一致すると判定したことに応じて、ノード管理レジスタ940における自身の状態を更新する。
【0085】
レベル0マネージャが配信する状態はレベル1マネージャの識別子を含み、レベル1マネージャの識別子は、各バスターゲット720のバスターゲット管理レジスタ910に記憶される。そうすると、レベル1マネージャは、バスターゲット720によってレベル1マネージャとして認識されるため、バスターゲット管理レジスタ910における特定の状態を更新するための書き込み要求を発行し得る。レベル1マネージャは、ターゲット720のそれぞれのバスターゲット管理レジスタ910にレベル2マネージャの識別子を書き込むための書き込み要求を(レベル1マネージャ自身の要求回路を介して)発行し得る。ターゲット720へのレベル2マネージャの識別子の書き込みは、更なるバスアクティビティが行われることが許可される前に実行される。レベル2マネージャの識別子がターゲット720に配信されると、レベル2マネージャは、バスターゲット720によってレベル2マネージャとして認識されるため、バスターゲット管理レジスタ910における特定の状態を更新するための書き込み要求を(レベル2マネージャ自身の要求回路を介して)発行し得る。
【0086】
レベル1マネージャは、バスターゲット管理レジスタ910に保持されたレベル1許可設定又はレベル2許可設定を更新し得る。レベル2マネージャもまた、バスターゲット管理レジスタ910に保持されたレベル1許可設定又はレベル2許可設定を更新し得る。レジスタ910に保持されたレベル1許可設定又はレベル2許可設定を更新するための、到来する書き込み要求がバスターゲット720において受信されると、プロセッシングロジック930は、書き込み要求に含まれるバスイニシエータ識別子820を識別する。バスイニシエータ識別子820がレジスタ910に記憶されたレベル1マネージャの識別子と一致した場合、プロセッシングロジック930は、書き込み要求にしたがって、レジスタ910におけるレベル1許可設定又はレベル2許可設定を更新させる。
【0087】
レベル2マネージャもまた、レジスタ910に保持されたレベル1許可設定及びレベル2の許可設定を更新し得るが、それは、それらの許可設定が、アクセスを阻止するようにレベル1マネージャによって書き込まれていないことが条件である。換言すれば、レベル2マネージャはセキュリティレイヤを追加し得るが、レベル1マネージャによって追加されたセキュリティレイヤを削除することはできない。
【0088】
レベル1マネージャがアクセス許可を削除した場合(すなわち、所与のバスイニシエータ730に対するアクセスが許可されないと示すように許可設定を変更した場合)、レベル2マネージャは、その後そのアクセスを再び有効にすることはできない。換言すれば、レベル2マネージャは、アクセスが許可されていないと示すようにレベル1マネージャによって設定されているアクセス許可設定を変更できない。このことは、レジスタ910に保持されたレベル1許可設定又はレベル2許可設定を更新するための、到来する書き込み要求がバスターゲット720において受信された場合、プロセッシングロジック930が、書き込み要求に含まれる識別子820から要求を送信したバスイニシエータ730を識別し、レジスタ910における記憶された指示をチェックして、レベル1マネージャがアクセスを阻止するようにターゲットのアクセス許可設定に書き込んだか否かを判定することによって実施され得る。バスイニシエータ識別子820がレジスタ910に記憶されたレベル2マネージャのバスイニシエータ730の識別子と一致し、レベル1マネージャがアクセスを阻止するように許可設定を設定していない場合、プロセッシングロジック930は、書き込み要求にしたがって、レジスタ910における許可設定を更新させる。バスイニシエータ識別子820が、レジスタ910に記憶されたレベル2マネージャ又はレベル1マネージャのいずれの識別子とも一致しない場合、プロセッシングロジック930は、要求にしたがって許可設定を更新することはせず、要求を送信したバスイニシエータ730に要求が失敗したことを示すコンプリーションを返す。バスイニシエータ識別子820が、レジスタ910に記憶されたレベル2マネージャの識別子と一致しないが、記憶された指示が、レベル1マネージャがアクセスを阻止するように許可設定を設定したことを示す場合、プロセッシングロジック930は、要求にしたがって許可設定を更新することはせず、要求を送信したバスイニシエータ730に要求が失敗したことを示すコンプリーションを返す。
【0089】
システムが起動すると、レベル1マネージャは、まず、レベル1アクセス許可設定を定義するようにターゲット管理レジスタ910に書き込む。その後、レベル2マネージャは、レベル2アクセス許可設定を定義するようにターゲット管理レジスタ910に書き込む。したがって、レベル1マネージャは、まず、アクセス許可の第1のレイヤを定義する。次いで、レベル2マネージャは、レベル2マネージャ独自のレイヤアクセス許可を追加する。アクセス許可のレイヤのいずれかがバスイニシエータ730によるアクセスを阻止する場合、プロセッシングロジック930は、そのバスイニシエータ730がストレージ920に対して読み取り又は書き込みアクセスできないように阻止する。
【0090】
アクセス許可の設定は、システム1000の特定のソフトウェアエンティティが、チップ2のバスターゲットに関連付けられたストレージ920に対して読み取り又は書き込みアクセスできるようにすることを阻止するのに役立つ。このソフトウェアは信頼できない第三者ソフトウェアであり得、これにはアクセスを制限することが役立つ。
【0091】
次に、デュアルレベル管理システムの適用例を提示する。
【0092】
本例では、オンチッププロセッサがレベル1マネージャであり、ホスト93上で稼働するハイパーバイザがレベル2マネージャである。信頼されたシステムハイパーバイザは、各バスターゲット720に関連付けられたストレージ920及び各バスターゲット720のバスターゲット管理レジスタ910にアクセスできる。換言すれば、レベル1アクセス許可は、レベル2マネージャに対してアクセスを阻止するようには設定されていない。しかしながら、ハイパーバイザは、レベル2マネージャとして、ホスト上で稼働するユーザ仮想マシンのアクセスを制限するためにレベル2アクセス許可を追加する自由を有する。これにより、不正な又は悪意のあるユーザプロセスによって、他のユーザのシステムの可用性が損なわれたり、他のユーザに属するデータが流出したりすることが阻止される。オンチッププロセッサは、オペレータのポリシーなど、必要な場合にレベル1アクセス許可を設定することは依然として自由である。オペレータは、例えば、特定のバスイニシエータ730(例えば、システムサービス外のもの)によるアクセスからオンチッププロセッサを排除するように決定することもできる。
【0093】
第1の管理ユニット及び第2の管理ユニットによって行われるデュアルレベルの制御が、2セットのアクセス許可を有することにより実施されることを説明してきた。しかしながら、実施形態は、2セットのアクセス許可を使用することに限定されず、単一セットのアクセス許可のみを使用することもできる。
図5を参照すると、
図5は、このような場合のアクセス許可設定1300のセットを示す。アクセス許可設定の一部として、第1の管理ユニットによってアクセスが阻止されているか否かを示すフラグが記憶される。
【0094】
図5では、(イニシエータ1に対する)第1のアクセス許可設定と(イニシエータ3に対する)第3のアクセス許可設定との両方が、第1の管理ユニットがアクセス許可設定を変更していない場合を示している。第1の管理ユニットは、アクセスが許可されていないと示すようには関連するアクセス許可設定を変更していないため、フラグは、アクセス許可が第2の管理ユニットによって変更され得ると示す。この場合、設定は、第2の管理ユニットによって変更され得る。(イニシエータ2に対する)第2のアクセス許可設定は、アクセスが許可されると示すように第1の管理ユニットがアクセス許可設定を変更した場合を示す。第1の管理ユニットは、アクセスが許可されていないと示すようには関連するアクセス許可設定を変更していないため、フラグは、アクセス許可が第2の管理ユニットによって変更され得ると示す。この場合、第2の管理ユニットはアクセス許可設定を変更し得る。(イニシエータ4に対する)第4のアクセス許可設定は、アクセスが許可されないと示すように第1の管理ユニットがアクセス許可設定を変更した場合を示す。第1の管理ユニットは、アクセスが許可されていないと示すように関連するアクセス許可設定を変更したため、フラグは、アクセス許可が第2の管理ユニットによって変更できないと示す。この場合、第2の管理ユニットはアクセス許可設定を変更できない。
【0095】
図5に示す表では、5番目の列は、設定が適用されるそれぞれのイニシエータ730に対してアクセスが許可されるか否かを示す。
【0096】
図6を参照すると、
図6は、バスターゲット720に記憶され得る許可設定1200のセットの更なる例を示す。許可設定1200のセットは、バスイニシエータ730のセットのそれぞれについてのレベル1許可設定及びレベル2許可設定と、各設定に関連付けられて、その設定が第1の管理ユニットによって設定されているか否かを示すフラグとを含む。
【0097】
図6では、イニシエータ1及びイニシエータ3に関連付けられたレベル1アクセス許可設定の場合、レベル1管理ユニットは、アクセスを阻止するようにはこれらの設定に書き込んでいない。したがって、第2の管理ユニットはこれらの設定のどれでも変更し得る。イニシエータ4に関連付けられたレベル1アクセス許可設定の場合、第1の管理ユニットは、アクセスを阻止するようにこの設定に書き込んでいる。したがって、第2の管理ユニットはこの設定を変更できない。イニシエータ1、イニシエータ3、及びイニシエータ4に関連付けられたレベル2アクセス許可設定の場合、第1の管理ユニットは、アクセスを阻止するようにはこれらの設定に書き込みをしていない。したがって、第2の管理ユニットはこれらの設定のどれでも変更し得る。イニシエータ2に関連付けられたレベル2アクセス許可設定の場合、第1の管理ユニットは、アクセスを阻止するようにこの設定に書き込んでいる。したがって、第2の管理ユニットはこの設定を変更できない。
【0098】
上述のように、特定のホワイトリストに登録されたアドレスがターゲット管理レジスタ910に定義され得る。ホワイトリストに登録されたアドレスの設定は、アクセス許可設定に関して上で述べたのと同様の規則にしたがう。第1の管理ユニットと第2の管理ユニットとは両方ともホワイトリストに登録されたアドレスのセットを定義し得る。しかしながら、第2の管理ユニットは、第1の管理ユニットによってアクセスが阻止されているストレージにおいてアドレスをホワイトリストに登録することはできない。プロセッシングロジック930は、このアドレスを含むストレージ920へのアクセスが第1の管理ユニットによって阻止されていると判定したことに応じて、ホワイトリストに登録されたアドレスを書き込むための書き込み要求がサービスされることを阻止する。
【0099】
図7を参照すると、
図7は、本出願の実施形態による方法700を示す。方法700のステップが順々に行われるように示されているが、ステップが実行される時間は重複していてもよいことを理解されたい。
【0100】
S710において、複数の要求回路のそれぞれが、読み取り要求又は書き込み要求のうちの少なくとも1つを、複数の受信回路のうちの少なくとも1つに送達するために制御バス上にディスパッチする。
【0101】
S720において、制御バスは、要求のうちの少なくともいくつかを、これらの要求が受信回路のうちの少なくとも1つによってサービスされるまで伝播させる。
【0102】
S730において、複数の受信回路のそれぞれが、要求回路によってディスパッチされた読み取り要求又は書き込み要求のうちの1つ又は複数を受信する。
【0103】
S740において、受信回路のそれぞれが、それぞれの受信回路に関連付けられたストレージへの読み取りアクセス又は書き込みアクセスのうちの少なくとも1つを提供することによって、要求のうちの1つ又は複数にサービスする。
【0104】
図8を参照すると、
図8は、本出願の実施形態による方法800を示す。これらのステップの順序は、実施形態に応じて、
図8に示す順序から変更されてもよいことを理解されたい。
【0105】
S810において、複数の許可設定が、受信回路の少なくとも1つのレジスタに記憶される。
【0106】
S820において、受信回路のインターフェースが、第1の管理ユニットからの1つ又は複数の書き込み要求を受信し、これらの1つ又は複数の書き込み要求に応じて、要求回路のうちの1つ又は複数に対してアクセスが許可されていないと示すように許可設定を更新する。
【0107】
S830において、受信回路のインターフェースが、第2の管理ユニットからの1つ又は複数の書き込み要求を受信し、書き込み要求が、要求回路のうちの1つ又は複数に対してアクセスを可能にするように要求する。(S820において実行されたように)第1の管理ユニットが、要求回路のうちのそれらの1つ又は複数に対してアクセスが許可されていないと示すように許可設定に書き込んでいると判定したことに応じて、要求回路のうちの1つ又は複数に対してアクセスを可能にするための許可設定の更新が阻止される。
【0108】
S840において、受信回路のインターフェースが、少なくとも1つの制御バスを介してアクセス可能な複数の要求回路からの複数の読み取り要求又は書き込み要求を受信する。読み取り要求又は書き込み要求のそれぞれが、受信回路に関連付けられた少なくとも1つのストレージにアクセスするための要求である。
【0109】
S850において、読み取り要求又は書き込み要求が、それぞれの要求を発行した要求回路のうちの1つに対してアクセスが許可されていないという許可設定における指示に応じて、サービスされることが阻止される。
【0110】
上記の実施形態は単なる例として説明されたに過ぎないことを理解されたい。