(57)【要約】  発明を実施するための形態で開示する態様は、周辺コンポーネント相互接続エクスプレス(PCIe)のためのインライン暗号エンジン(ICE)を含む。この点について、一態様では、ホストシステム内のPCIeルートコンプレックス(RC)内にICEが提供される。PCIe RCは、ストレージデバイスからTLPプレフィックスを含む少なくとも1つのトランスポートレイヤパケット(TLP)を受信するように構成される。非限定的な例では、TLPプレフィックスは、ICEがデータの暗号化および解読を実現するために使用することができるトランザクション固有情報を含む。PCIe RC内にICEを提供し、TLPプレフィックス内でトランザクション固有情報を受信することによって、確立された規格に従ってPCIe RC内のデータの暗号化および解読が可能であり、これにより、PCIe RCとストレージデバイスとの間のデータ交換中に十分な保護を保証する。
2019505924.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムであって、
システムバスに結合された少なくとも1つのプロセッサと、
前記システムバスに結合され、メモリを制御するように構成されたメモリコントローラと、
インライン暗号エンジン(ICE)を備えた周辺コンポーネント相互接続エクスプレス(PCIe)ルートコンプレックス(RC)であって、前記PCIe RCは、前記システムバスに結合され、前記PCIe RCに通信可能に結合されたストレージデバイスから少なくとも1つのトランポートレイヤパケット(TLP)を受信するように構成され、前記少なくとも1つのTLPは、データインジケータと、タスクタグ(TT)と、データバッファオフセット(DBO)とを含むTLPプレフィックスを備える、PCIe RCと
を備える、ホストシステム。
【請求項２】
前記PCIe RCが、
前記TLPプレフィックス内の前記データインジケータが、トランザクション固有情報が前記TLPプレフィックス内に存在することを示す場合、前記TLPプレフィックスから前記TTおよび前記DBOを抽出し、
前記TTに基づいて、前記ICEにおいて記憶された論理ブロックアドレス(LBA)および秘密鍵を取り出し、
前記DBO、前記LBA、および前記秘密鍵に基づいて、初期化ベクトル(IV)を計算する
ようにさらに構成される、請求項1に記載のホストシステム。
【請求項３】
前記少なくとも1つのTLPが、前記少なくとも1つのTLPがメモリ読取り要求であるかまたはメモリ書込み要求であるかを示すように構成されたタイプフィールドを有するTLPヘッダをさらに備える、請求項2に記載のホストシステム。
【請求項４】
前記TLPヘッダ内の前記タイプフィールドが、前記少なくとも1つのTLPが前記メモリ読取り要求であることを示す場合、前記PCIe RCが、
前記メモリから前記LBAに関連する非暗号化データを取り出すために前記メモリコントローラと通信し、
前記IVを使用して暗号化する暗号化アルゴリズムに基づいて、前記メモリから取り出された前記非暗号化データを暗号化データに暗号化するように前記ICEを構成し、
前記暗号化されたデータを前記ストレージデバイスに提供する
ようにさらに構成される、請求項3に記載のホストシステム。
【請求項５】
前記ICEが、高度暗号化標準(AES)Xor-Encrypt-Xor(XEX)Tweakable Block Cipher with Ciphertext Stealing(XTS)(AES-XTS)アルゴリズムまたはAES Cipher Block Chaining(CBC)(AES-CBC)アルゴリズムに基づいて前記非暗号化データを暗号化するように構成される、請求項4に記載のホストシステム。
【請求項６】
前記TLPヘッダ内の前記タイプフィールドが、前記少なくとも1つのTLPが前記メモリ書込み要求であることを示す場合、前記PCIe RCが、
前記少なくとも1つのTLPから暗号化データを抽出し、
前記IVを使用して解読する解読アルゴリズムに基づいて前記暗号化データを非暗号化データに解読するように前記ICEを構成し、
前記メモリに書き込むために前記非暗号化データを前記メモリコントローラに提供する
ようにさらに構成される、請求項3に記載のホストシステム。
【請求項７】
前記ICEが、高度暗号化標準(AES)Xor-Encrypt-Xor(XEX)Tweakable Block Cipher with Ciphertext Stealing(AES-XTS)またはAES Cipher Block Chaining(AES-CBC)アルゴリズムに基づいて前記非暗号化データを暗号化するように構成される、請求項6に記載のホストシステム。
【請求項８】
前記少なくとも1つのプロセッサが、
書込みコマンドと前記TTとを含む、書込みタスクのためのトランザクション記述子を作成し、
前記TTに関連する前記書込みタスクを前記ICE内に作成し、
前記TTに関連する前記LBAおよび前記秘密鍵を前記ICEにおいて記憶し、
前記PCIe RCを介して書込み要求を前記ストレージデバイスに送る
ように構成される、請求項2に記載のホストシステム。
【請求項９】
前記少なくとも1つのプロセッサが、
読取りコマンドと前記TTとを備えた、読取りタスクのためのトランザクション記述子を作成し、
前記TTに関連する前記読取りタスクを前記ICE内に作成し、
前記TTに関連する前記LBAおよび前記秘密鍵を前記ICEにおいて記憶し、
前記PCIe RCを介して読取り要求を前記ストレージデバイスに送る
ように構成される、請求項2に記載のホストシステム。
【請求項１０】
集積回路(IC)内に提供される、請求項1に記載のホストシステム。
【請求項１１】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、携帯電話、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなるグループから選択されるデバイス内に設けられる、請求項1に記載のホストシステム。
【請求項１２】
周辺コンポーネント相互接続エクスプレス(PCIe)ルートコンプレックス(RC)内のインライン暗号エンジン(ICE)をサポートするための方法であって、
データインジケータと、タスクタグ(TT)と、データバッファオフセット(DBO)とを含むトランスポートレイヤパケット(TLP)プレフィックスを備えた少なくとも1つのTLPを受信するステップと、
前記TLPプレフィックス内の前記データインジケータが、トランザクション固有情報が前記TLPプレフィックス内に存在することを示す場合、前記TLPプレフィックスから前記TTおよび前記DBOを抽出するステップと、
前記TTに基づいて論理ブロックアドレス(LBA)および秘密鍵を取り出すステップと、
前記DBO、前記LBA、および前記秘密鍵に基づいて、初期化ベクトル(IV)を計算するステップと
を含む、方法。
【請求項１３】
前記TTに基づいてLBAおよびキーアレイから前記LBAおよび前記秘密鍵を取り出すステップをさらに含む、請求項12に記載の方法。
【請求項１４】
前記少なくとも1つのTLPがメモリ読取り要求であるかまたはメモリ書込み要求であるかを示すように構成されたタイプフィールドを有するTLPヘッダをさらに備える前記少なくとも1つのTLPを受信するステップをさらに備える、請求項12に記載の方法。
【請求項１５】
前記TLPヘッダ内の前記タイプフィールドが、前記少なくとも1つのTLPが前記メモリ読取り要求であることを示す場合、
前記LBAに関連する非暗号化データを取り出すステップと、
前記IVを使用して暗号化する暗号化アルゴリズムに基づいて前記非暗号化データを暗号化データに暗号化するステップと、
前記暗号化されたデータをストレージデバイスに提供するステップと
をさらに含む、請求項14に記載の方法。
【請求項１６】
前記TLPヘッダ内の前記タイプフィールドが、前記少なくとも1つのTLPが前記メモリ書込み要求であることを示す場合、
前記少なくとも1つのTLPのデータペイロードから暗号化データを抽出するステップと、
前記IVを使用して解読する解読アルゴリズムに基づいて前記暗号化データを非暗号化データに解読するステップと、
メモリに書き込むために前記非暗号化データをメモリコントローラに提供するステップと
をさらに含む、請求項14に記載の方法。
【請求項１７】
書込みコマンドと前記TTとを含む、書込みタスクのためのトランザクション記述子を作成するステップと、
前記TTに関連する前記書込みタスクを前記ICE内に作成するステップと、
前記TTに関連する前記LBAおよび前記秘密鍵を前記ICEにおいて記憶するステップと、
前記PCIe RCを介して書込み要求を送るステップと
をさらに含む、請求項12に記載の方法。
【請求項１８】
読取りコマンドと前記TTとを備えた、読取りタスクのためのトランザクション記述子を作成するステップと、
前記TTに関連する前記読取りタスクを前記ICE内に作成するステップと、
前記TTに関連する前記LBAおよび前記秘密鍵を前記ICEにおいて記憶するステップと、
前記PCIe RCを介して読取り要求を送るステップと
をさらに含む、請求項12に記載の方法。
【請求項１９】
ホストシステム内の周辺コンポーネント相互接続エクスプレス(PCIe)ルートコンプレックス(RC)に結合するように構成されたストレージデバイスであって、ホストインターフェースコントローラを備え、前記ホストインターフェースコントローラが、
前記ホストシステムから要求を受信し、
前記ホストシステムからの前記要求に対応するトランザクション記述子を読み取り、前記トランザクション記述子からタスクタグ(TT)を抽出し、
トランザクション固有情報がトランスポートレイヤパケット(TLP)プレフィックス内に存在することを示すように構成されたデータインジケータを含む前記TLPプレフィックスを備えた、少なくとも1つのTLPを前記PCIe RCに送る
ように構成される、ストレージデバイス。
【請求項２０】
前記ホストインターフェースコントローラが、前記ホストシステムから受信した前記要求が書込み要求である場合、前記少なくとも1つのTLP内でメモリ読取り要求を送るようにさらに構成される、請求項19に記載のストレージデバイス。
【請求項２１】
前記ホストインターフェースコントローラが、前記ホストシステムから受信した前記要求が読取り要求である場合、前記少なくとも1つのTLP内でメモリ書込み要求を送るようにさらに構成される、請求項19に記載のストレージデバイス。
【請求項２２】
前記ホストインターフェースコントローラが、前記少なくとも1つのTLP内に暗号化データを含めるようにさらに構成される、請求項21に記載のストレージデバイス。
【請求項２３】
前記ホストインターフェースコントローラが、1つまたは複数のTLP内で前記ホストシステムからの前記トランザクション記述子を読み取るようにさらに構成され、前記1つまたは複数のTLPの各々が、その中で前記データインジケータが、前記トランザクション固有情報がそれぞれのTLPプレフィックス内に不在であることを示すように構成される、前記それぞれのTLPプレフィックスを備える、請求項19に記載のストレージデバイス。
【請求項２４】
電子デバイスであって、
メモリと、
ホストシステムであって、
システムバスに結合された少なくとも1つのプロセッサと、
前記システムバスに結合され、前記メモリを制御するように構成されたメモリコントローラと、
前記システムバスに結合され、インライン暗号エンジン(ICE)を備えた、周辺コンポーネント相互接続エクスプレス(PCIe)ルートコンプレックス(RC)と
を備えた、ホストシステムと、
前記PCIe RCに通信可能に結合されたホストインターフェースコントローラを備えた、ストレージデバイスと
を備え、
前記ストレージデバイス内の前記ホストインターフェースコントローラが、
前記ホストシステム内の前記少なくとも1つのプロセッサから要求を受信し、
前記ホストシステムからの前記要求に対応するトランザクション記述子を読み取り、前記トランザクション記述子からタスクタグ(TT)を抽出し、
トランザクション固有情報がトランスポートレイヤパケット(TLP)プレフィックス内に存在することを示すように構成されたデータインジケータを含む前記TLPプレフィックスを備えた、少なくとも1つのTLPを前記PCIe RCに送る
ように構成され、
前記ホストシステム内の前記PCIe RCが、
前記ストレージデバイスから前記少なくとも1つのTLPを受信し、
前記TLPプレフィックス内の前記データインジケータが、前記トランザクション固有情報が前記TLPプレフィックス内に存在することを示す場合、前記TLPプレフィックスから前記TTおよびデータバッファオフセット(DBO)を抽出し、
前記TTに基づいて、前記ICEにおいて記憶された論理ブロックアドレス(LBA)および秘密鍵を取り出し、
前記DBO、前記LBA、および前記秘密鍵に基づいて、初期化ベクトル(IV)を計算する
ようにさらに構成される、電子デバイス。
【請求項２５】
前記ホストインターフェースコントローラが、前記ホストシステムから受信した前記要求が書込み要求である場合、前記少なくとも1つのTLP内でメモリ読取り要求を送るようにさらに構成され、
前記PCIe RCが、
前記メモリから前記LBAに関連する非暗号化データを取り出すために前記メモリコントローラと通信し、
前記IVを使用して暗号化する暗号化アルゴリズムに基づいて、前記メモリから取り出された前記非暗号化データを暗号化データに暗号化するように前記ICEを構成し、
前記暗号化データを前記ストレージデバイスに提供する
ようにさらに構成される、請求項24に記載の電子デバイス。
【請求項２６】
前記ホストインターフェースコントローラが、前記ホストシステムから受信した前記要求が読取り要求である場合、前記少なくとも1つのTLP内でメモリ書込み要求を送るようにさらに構成され、暗号化データが前記少なくとも1つのTLP内に含まれ、
前記PCIe RCが、
前記少なくとも1つのTLPから前記暗号化データを抽出し、
前記IVを使用して解読する解読アルゴリズムに基づいて前記暗号化データを非暗号化データに解読するように前記ICEを構成し、
前記メモリに書き込むために前記非暗号化データを前記メモリコントローラに提供する
ようにさらに構成される、請求項24に記載の電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
優先出願
本願は、その全体が参照により本明細書に組み込まれている、2016年2月3日に出願した、「INLINE CRYPTOGRAPHIC ENGINE (ICE) FOR PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEMS」と題する米国特許出願第15/014,158号の優先権を主張するものである。
【０００２】
本開示の技術は概して、周辺コンポーネント相互接続エクスプレス(PCIe)に関する。
【背景技術】
【０００３】
モバイル通信デバイスは、現代社会においてますます一般的になってきた。これらのモバイル通信デバイスの普及は、一部は現在そのようなデバイス上で可能にされる多くの機能によって推進されている。そのようなデバイス内の処理能力の向上は、モバイル通信デバイスが、純粋な通信ツールから、高度なモバイルマルチメディアセンタに進化し、これにより、強化されたユーザ体験を可能にすることを意味する。
【０００４】
モバイル通信デバイス内のデータ処理要素(たとえば、アプリケーションプロセッサ、グラフィックプロセッサなど)は、様々なシステムデータおよびユーザデータを記憶するためにストレージデバイスに依存する。そのようなストレージデバイスは、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、ユニバーサルフラッシュストレージ(UFS)、ユニバーサルシリアルバス(USB)ストレージデバイス、および/またはエンベデッドマルチメディアカード(eMMC)を含み得る。
【０００５】
モバイル通信デバイスの処理能力の向上と同時に、データ記憶容量に対する要求も指数関数的に増大した。その結果、モバイル通信デバイスに数百ギガバイト(GB)のデータを記憶することのできるストレージデバイスが組み込まれることは珍しくない。ストレージデバイスは、一般に、周辺コンポーネント相互接続エクスプレス(PCIe)インターフェースなどの周辺インターフェースを介してデータ処理要素に接続される。モバイル通信デバイスは、ストレージデバイス内に記憶された様々なシステムデータおよびユーザデータに対する無許可のアクセスおよび/または悪意のある攻撃に対して十分な保護を提供することが必要とされる。結果として、データがストレージデバイス内に記憶されて、ストレージデバイスとデータ処理要素との間で交換されるとき、暗号化が必要とされることが多い。
【発明の概要】
【課題を解決するための手段】
【０００６】
発明を実施するための形態で開示する態様は、周辺コンポーネント相互接続エクスプレス(PCIe)システムのためのインライン暗号エンジン(ICE)を含む。この点について、一態様では、ホストシステム内のPCIeルートコンプレックス(RC)内にICEが提供される。PCIe RCは、ストレージデバイスから、トランスポートレイヤパケット(TLP)プレフィックスを含む少なくとも1つのTLPを受信するように構成される。非限定的な例では、TLPプレフィックスは、ICEがデータの暗号化および解読を実現するために使用することができるトランザクション固有情報を含む。PCIe RC内にICEを提供し、TLPプレフィックス内でトランザクション固有情報を受信することによって、確立された規格に従ってPCIe RC内のデータの暗号化および解読が可能であり、これにより、PCIe RCとストレージデバイスとの間のデータ交換中に十分な保護を保証する。
【０００７】
この点について、一態様では、ホストシステムが提供される。ホストシステムは、システムバスに結合された少なくとも1つのプロセッサを備える。ホストシステムはまた、システムバスに結合され、メモリを制御するように構成されたメモリコントローラを備える。ホストシステムはまた、ICEを備えたPCIe RCを備える。PCIe RCは、システムバスに結合され、PCIe RCに通信可能に結合されたストレージデバイスから少なくとも1つのTLPを受信するように構成される。少なくとも1つのTLPは、データインジケータと、タスクタグ(TT)と、データバッファオフセット(DBO)とを含むTLPプレフィックスを備える。
【０００８】
別の態様では、PCIe RC内のICEをサポートするための方法が提供される。この方法は、データインジケータと、TTと、DBOとを含むTLPプレフィックスを備えた少なくとも1つのTLPを受信するステップを含む。この方法はまた、TLPプレフィックス内のデータインジケータが、トランザクション固有情報がTLPプレフィックス内に存在することを示す場合、TLPプレフィックスからTTおよびDBOを抽出するステップを含む。この方法はまた、TTに基づいて論理ブロックアドレス(LBA)および秘密鍵を取り出すステップを含む。この方法はまた、DBO、LBA、および秘密鍵に基づいて、初期化ベクトル(IV)を計算するステップを含む。
【０００９】
別の態様では、ストレージデバイスが提供される。ストレージデバイスは、ホストシステム内のPCIe RCに結合されるように構成される。ストレージデバイスはホストインターフェースコントローラを備える。ホストインターフェースコントローラは、ホストシステムから要求を受信するように構成される。ホストインターフェースコントローラはまた、ホストシステムからの要求に対応するトランザクション記述子を読み取り、トランザクション記述子からTTを抽出するように構成される。ホストインターフェースコントローラはまた、少なくとも1つのTLPをPCIe RCに送るように構成される。少なくとも1つのTLPは、トランザクション固有情報がTLPプレフィックス内に存在することを示すように構成されたデータインジケータを含むTLPプレフィックスを備える。
【００１０】
別の態様では、電子デバイスが提供される。この電子デバイスはメモリを備える。また、電子デバイスはホストシステムを備える。ホストシステムは、システムバスに結合された少なくとも1つのプロセッサを備える。ホストシステムはまた、システムバスに結合され、メモリを制御するように構成されたメモリコントローラを備える。ホストシステムはまた、システムバスに結合され、ICEを備えたPCIe RCを備える。電子デバイスはまた、ストレージデバイスを備える。ストレージデバイスは、PCIe RCに通信可能に結合されたホストインターフェースコントローラを備える。ストレージデバイス内のホストインターフェースコントローラは、ホストシステム内の少なくとも1つのプロセッサから要求を受信するように構成される。ストレージデバイス内のホストインターフェースコントローラはまた、ホストシステムからの要求に対応するトランザクション記述子を読み取り、トランザクション記述子からTTを抽出するように構成される。ストレージデバイス内のホストインターフェースはまた、少なくとも1つのTLPをPCIe RCに送るように構成される。少なくとも1つのTLPは、トランザクション固有情報がTLPプレフィックス内に存在することを示すように構成されたデータインジケータを含むTLPプレフィックスを備える。ホストシステム内のPCIe RCは、ストレージデバイスから少なくとも1つのTLPを受信するように構成される。ホストシステム内のPCIe RCはまた、TLPプレフィックス内のデータインジケータが、トランザクション固有情報がTLPプレフィックス内に存在することを示す場合、TLPプレフィックスからTTおよびDBOを抽出するように構成される。ホストシステム内のPCIe RCはまた、TTに基づいて、ICEにおいて記憶されたLBAおよび秘密鍵を取り出すように構成される。ホストシステム内のPCIe RCはまた、DBO、LBA、および秘密鍵に基づいて、IVを計算するように構成される。
【００１１】
別の態様では、トランザクション固有情報をホストシステムに提供するための方法が提供される。この方法は、ホストシステムから要求を受信するステップを含む。この方法はまた、ホストシステムからの要求に対応するトランザクション記述子を読み取り、トランザクション記述子からTTを抽出するステップを含む。この方法はまた、少なくとも1つのTLPをホストシステム内のPCIe RCに送るステップを含む。少なくとも1つのTLPは、トランザクション固有情報がTLPプレフィックス内に存在することを示すように構成されたデータインジケータを含むTLPプレフィックスを備える。
【図面の簡単な説明】
【００１２】
【図１】ホストコントローラによって制御されるストレージデバイスに関するデータを暗号化および解読するように構成されたホストコントローラを含む、ある例示的な従来のホストシステムの概略図である。
【図２】複数の周辺コンポーネント相互接続エクスプレス(PCIe)エンドポイント(EP)のうちの1つとしてストレージデバイスをサポートするように構成されたホストシステムの概略図である。
【図３】TLPプレフィックスが、トランザクション固有情報をストレージデバイスから図2のホストシステム内のPCIeルートコンプレックス(RC)に伝達するように構成された、ある例示的なトランスポートレイヤパケット(TLP)フォーマットの概略図である。
【図４】図2のホストシステムにおいてデータ暗号化を可能にするために、図3のTLPプレフィックスを使用してトランザクション固有情報を伝達する、ある例示的な例示を提供する信号フロー図である。
【図５】図2のホストシステムにおいてデータ解読を可能にするために、図3のTLPプレフィックスを使用してトランザクション固有情報を伝達する、ある例示的な例示を提供する信号フロー図である。
【図６】データの暗号化および解読のためのIVを計算するために、図2、図4、および図5のホストシステムが採用する、ある例示的な初期化ベクトル(IV)計算プロセスのフローチャートである。
【図７】トランザクション固有情報を図2、図4、および図5のホストシステムに伝達するために採用する、ある例示的な情報交換プロセスのフローチャートである。
【発明を実施するための形態】
【００１３】
次に図面を参照して、本開示のいくつかの例示的な態様について説明する。「例示的」という語は、本明細書では「例、事例、または例示としての働きをすること」を意味するために使用される。本明細書で「例示的」として説明する任意の態様は、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。
【００１４】
発明を実施するための形態で開示する態様は、周辺コンポーネント相互接続エクスプレス(PCIe)システムのためのインライン暗号エンジン(ICE)を含む。この点について、一態様では、ホストシステム内のPCIeルートコンプレックス(RC)内にICEが提供される。PCIe RCは、ストレージデバイスから、トランスポートレイヤパケット(TLP)プレフィックスを含む少なくとも1つのTLPを受信するように構成される。非限定的な例では、TLPプレフィックスは、ICEがデータの暗号化および解読を実現するために使用することができるトランザクション固有情報を含む。PCIe RC内にICEを提供し、TLPプレフィックス内でトランザクション固有情報を受信することによって、確立された規格に従ってPCIe RC内のデータの暗号化および解読が可能であり、これにより、PCIe RCとストレージデバイスとの間のデータ交換中に十分な保護を保証する。
【００１５】
本開示の特定の態様を含むPCIeのためのICEの例示的な態様を論じる前に、ユニバーサルフラッシュストレージ(UFS)または埋込マルチメディアカード(eMMC)内に記憶されるデータを暗号化/解読するための従来のホストシステムの簡単な概略を最初に図1で提供する。次いで、PCIeエンドポイント(EP)としてストレージデバイスをサポートするように構成されたホストシステムの簡単な概略について図2を参照して論じる。PCIeに関するICEの特定の例示的な態様についての議論は、図3を参照して始まる。
【００１６】
この点について、図1は、ホストコントローラ102によって制御されるストレージデバイス104に関するデータを暗号化および解読するように構成されたホストコントローラ102を含む、ある例示的な従来のホストシステム100の概略図である。ホストコントローラ102は、システムバス106に結合される。従来のホストシステム100はまた、少なくとも1つのプロセッサ108とメモリコントローラ110とを含む。プロセッサ108とメモリコントローラ110は両方ともやはりシステムバス106に結合される。メモリコントローラ110は、たとえば、動的ランダムアクセスメモリ(DRAM)であってよいメモリ112を制御するように構成される。
【００１７】
プロセッサ108がデータをメモリ112からストレージデバイス104に書き込む必要があるとき、プロセッサ108は、メモリコントローラ110を介してメモリ112から非暗号化データ114を読み取るようにホストコントローラ102に命令する。ホストコントローラ102は、次いで、非暗号化データ114を暗号化データ118に暗号化し、暗号化データ118をストレージデバイス104に書き込むように暗号エンジン(cryptographic engine)116(図1で暗号エンジン(crypto engine)116とも呼ばれる)を構成する。プロセッサ108がデータをストレージデバイス104からメモリ112に読み取る必要があるとき、プロセッサ108は、ストレージデバイス104から暗号化データ120を読み取るようにホストコントローラ102に命令する。ホストコントローラ102は、次いで、暗号化データ120を非暗号化データ122に解読して、非暗号化データ122をメモリ112に書き込むように暗号エンジン116を構成する。
【００１８】
非限定的な例では、暗号エンジン116は、ホストコントローラ102の内部または外部に提供され得る。暗号エンジン116は、暗号化アルゴリズムを採用して、非暗号化データ114を暗号化データ118に暗号化することができる。同様に、暗号エンジン116は、暗号化アルゴリズムと同じであってよく、または異なってもよい解読アルゴリズムを採用して、暗号化データ120を非暗号化データ122に解読することができる。非限定的な例では、暗号化アルゴリズムおよび解読アルゴリズムは、高度暗号化標準(AES:advanced encryption standard)Xor-Encrypt-Xor(XEX)Tweakable Block Cipher with Ciphertext Stealing(XTS)(AES-XTS)アルゴリズムまたはAES Cipher Block Chaining(CBC)(AES-CBC)アルゴリズムであってよい。
【００１９】
暗号化アルゴリズムおよび解読アルゴリズムは、初期化ベクトル(IV)に基づいて、それぞれ、非暗号化データ114を暗号化し、暗号化データ120を解読するように構成され得る。非限定的な例では、ホストコントローラ102は、下記の方程式(方程式1)で表現されるように、秘密鍵、論理ブロックアドレス(LBA)、およびデータバッファオフセット(DBO)に応じてIVを計算することができる。
IV = fCRYPTO(Secret Key, LBA, DBO)  方程式1
【００２０】
非限定的な例では、非暗号化データ114は、4キロバイト(4KB)データブロックとしてメモリ112内に記憶され、LBAは4KBデータブロックをアドレス指定するように構成される。したがって、方程式1に従って計算されるIVはLBAに対応する。ホストコントローラ102はさらに、4KBデータブロックをより小さなデータブロック(図示せず)に断片化し、それぞれのDBOによってより小さなデータブロックの各々をアドレス指定することができる。ホストコントローラ102は、それぞれのDBOを局所的に(たとえば、キャッシュメモリ内に)記憶し、プロセッサ108から秘密鍵およびLBAを受信することができる。したがって、ホストコントローラ102は、上記の方程式1に基づいてデータ暗号化/解読のためのIVを計算することができる。
【００２１】
図1を引き続き参照すると、ホストコントローラ102はストレージデバイス104の制御専用であるため、従来のホストシステム100は、複数のストレージデバイスをサポートするために複数のホストコントローラを必要とすることになる。たとえば、従来のホストシステム100がUFSベースのストレージデバイスおよびeMMCベースのストレージデバイスをサポートするように構成されている場合、従来のホストシステム100は、UFSホストコントローラおよびeMMCホストコントローラを必要とすることになる。従来のホストシステム100内に含まれる複数のホストコントローラは、従来のホストシステム100のコスト、フットプリント、および設計の複雑性を増大させ得る。結果として、従来のホストシステム100の代替として、PCIeベースのホストシステムアーキテクチャが出現した。
【００２２】
この点について、図2は、複数のPCIe EP204(1)〜204(N)のうちの1つとしてストレージデバイス202をサポートするように構成されたホストシステム200の概略図である。ホストシステム200は、複数のPCIe EP204(1)〜204(N)を制御するように構成されたPCIe RC206を含む。非限定的な例では、PCIe EP204(1)は、フラッシュストレージデバイスであってよいストレージデバイス202である。PCIe EP204(2)は、別の集積回路または周辺デバイスであってよい。PCIe EP204(N)は、より多くのPCIe EP(たとえば、レガシーPCIe EP)に接続するPCIeスイッチであってよい。PCIe RC206と複数のPCIe EP204(1)〜204(N)との間の通信は、TLPに基づき、不揮発性メモリエクスプレス(NVMe)プロトコルに従う。各TLPは、PCIe RC206が複数のPCIe EP204(1)〜204(N)の中でTLPを正しく転送するのを可能にするアドレス情報を含む。この点に関して、PCIe RC206はインターネットプロトコル(IP)ネットワークのルータに類似しており、TLPは、IPネットワークにおいて通信されるIPパケットに類似している。
【００２３】
PCIe RC206は、システムバス208に結合されて、データの暗号化および解読のためのICE210を含み得る。非限定的な例では、ICE210は、PCIe RC206のハードウェアコンポーネントとして提供され得る。ICE210は、AES-XTSアルゴリズムおよび/またはAES-CBCアルゴリズムなどの暗号化アルゴリズムおよび解読アルゴリズムを実装するように構成され得る。したがって、ICE210はまた、方程式1に従って計算されたIVを使用して、データの暗号化および解読を実行するように構成される。しかしながら、PCIe RC206とPCIe EP204(1)〜204(N)との間で通信されるTLPは本質的にLBAおよびDBOを搬送しないため、ICE210は方程式1に従ってIVを計算する際に困難を有する場合がある。
【００２４】
ホストシステム200はまた、少なくとも1つのプロセッサ212とメモリコントローラ214とを含む。プロセッサ212とメモリコントローラ214は両方とも、システムバス208に結合され、PCIe RC206とTLPを交換することができる。メモリコントローラ214は、たとえば、DRAMであってよいメモリ216を制御するように構成される。NVMeプロトコルに従って、プロセッサ212がメモリ216からのLBAに関連する非暗号化データ218をストレージデバイス202に書き込む必要がある場合、プロセッサ212は書込みタスクのためのトランザクション記述子220を作成する。図1を参照した前の議論によれば、非暗号化データ218は、4KBデータブロックとしてメモリ216内に記憶され、LBAによってアドレス指定され得る。非限定的な例では、プロセッサ212は、トランザクション記述子220をメモリ216内またはキャッシュメモリ222内に記憶することができる。トランザクション記述子220は、書込みコマンドとLBAに関連する第1のタスクタグ(TT)とを含み得る。次に、プロセッサ212は、ICE210において、第1のTTに関連する書込みタスク、LBA、および秘密鍵を作成する。非限定的な例では、プロセッサ212は書込みタスク信号224を介して書込みタスクを作成することができる。ICE210は、次に、第1のTT、LBA、および秘密鍵をローカルキャッシュ(図示せず)内に記憶することができる。この例を続けると、ICE210は、LBAおよびキーアレイ(図示せず)を作成することができる。LBAおよびキーアレイは、各々が、それぞれのTTに関連するLBAと秘密鍵のそれぞれの対を記憶するように構成された複数のLBAおよびキーエントリを含み得る。ICE210は、LBAおよびキーアレイ内の複数のLBAおよびキーエントリのうちの1つまたは複数として、第1のTTに関連するLBAおよび秘密鍵を記憶することができる。したがって、ICE210は、第1のTTに基づいてLBAおよび秘密鍵を取り出すことができる。
【００２５】
その後、プロセッサ212は書込み要求226をストレージデバイス202内のホストインターフェースコントローラ228に送る。書込み要求226の受信に応じて、ホストインターフェースコントローラ228は、ホストシステム200からトランザクション記述子220を読み取り、書込みコマンドおよび第1のTTを取得するように構成され得る。ホストインターフェースコントローラ228は、次いで、メモリ読取り要求230をPCIe RC206に送る。NVMeプロトコルに従って、ホストインターフェースコントローラ228はメモリ読取り要求230を少なくとも1つのTLP内で送ることができる。
【００２６】
メモリ読取り要求230の受信に応じて、PCIe RC206は、メモリコントローラ214を介して、LBAによってアドレス指定された4KBデータブロックである非暗号化データ218をメモリ216からフェッチする。PCIe RC206は、次いで、非暗号化データ218を4KBのサイズである暗号化データ232に暗号化するようにICE210を構成する。PCIe RC206は、次いで、暗号化データ232をストレージデバイス202内のホストインターフェースコントローラ228に提供する。ホストインターフェースコントローラ228は、ストレージデバイス202に書き込む前に、PCIe RC206から受信した暗号化データ232をより小さなブロック(図示せず)に断片化する。非限定的な例では、より小さなデータブロックの各々は128バイト(128B)であってよく、ホストインターフェースコントローラ228はそれぞれのDBOを128Bデータブロックの各々に割り当てることができる。ストレージデバイス202内のホストインターフェースコントローラ228は、それぞれのDBOを割り当てるように構成されるため、PCIe RC206は暗号化データ232に割り当てられているそれぞれのDBOにもはや気づかない。
【００２７】
図2を引き続き参照すると、プロセッサ212が暗号化データ232をストレージデバイス202からメモリ216に読み取る必要があるとき、プロセッサ212は読取りタスクのためのトランザクション記述子234を作成する。非限定的な例では、プロセッサ212は、トランザクション記述子234をメモリ216内またはキャッシュメモリ222内に記憶することができる。トランザクション記述子234は、読取りコマンドと第2のTTとを含み得る。次に、プロセッサ212は、ICE210において、第2のTTに関連する読取りタスク、LBA、および秘密鍵を作成する。非限定的な例では、プロセッサ212は読取りタスク信号236を介して読取りタスクを作成することができる。ICE210は、LBAおよびキーアレイ内の複数のLBAおよびキーエントリのうちの1つまたは複数として、第2のTTに関連するLBAおよび秘密鍵を記憶することができる。したがって、ICE210は、第2のTTに基づいてLBAおよび秘密鍵を取り出すことができる。
【００２８】
その後、プロセッサ212は読取り要求238をストレージデバイス202内のホストインターフェースコントローラ228に送る。読取り要求238の受信に応じて、ホストインターフェースコントローラ228は、ホストシステム200からトランザクション記述子234を読み取り、読取りコマンドおよび第2のTTを取得するように構成され得る。ホストインターフェースコントローラ228は、次いで、メモリ書込み要求240をPCIe RC206に送る。NVMeプロトコルに従って、ホストインターフェースコントローラ228はメモリ書込み要求240を少なくとも1つのTLP内で送ることができる。TLPは、暗号化データ232を含み、PCIe RC206はメモリ書込み要求240から暗号化データ232を抽出することができる。PCIe RC206は、暗号化データ232を非暗号化データ218に解読し、メモリコントローラ214介して非暗号化データ218をメモリ216に提供するようにICE210を構成する。
【００２９】
上記で論じたように、PCIe RC206は、非暗号化データ218を暗号化データ232に暗号化し、かつ/または暗号化データ232を非暗号化データ218に解読するようにICE210を構成する必要がある。ICE210は、AES-XTSアルゴリズムおよび/またはAES-CBCアルゴリズムを使用してデータの暗号化および解読を実行するように構成可能であるため、PCIe RC206はAES-XTSおよび/またはAES-CBCアルゴリズムに関するIVを計算する必要がある。したがって、方程式1に従って、PCIe RC206は、秘密鍵、LBA、およびDBOを所有する必要がある。しかしながら、先に論じたように、PCIe RC206は、ストレージデバイス202内のホストインターフェースコントローラ228によって暗号化データ232に割り当てられたDBOに関して何の知識も有さない。したがって、ストレージデバイス202内のホストインターフェースコントローラ228がDBOをPCIe RC206に伝達して、PCIe RC206がIVを計算することを可能にする必要がある。その上、ホストインターフェースコントローラ228がNVMeプロトコルに従ってDBOをPCIe RC206に伝達することができることが望ましい。
【００３０】
PCI special interest group(PCI-SIG)が2010年11月10日に発行したPCIe Base Specification Revision 3.0(以下で、「PCIe仕様書」と呼ばれる)は、TLPが1つまたは複数のオプションのTLPプレフィックスを含むことを可能にする。したがって、ホストインターフェースコントローラ228がPCIe仕様書で定義された1つまたは複数のオプションのTLPプレフィックスを使用してDBOをPCIe RC206に伝達することは可能であり得る。この点について、図3は、TLPプレフィックス302が、トランザクション固有情報を図2のストレージデバイス202内のホストインターフェースコントローラ228からホストシステム200内のPCIe RC206に伝達するように構成された、ある例示的なTLP300の概略図である。図2と図3との間の共通の要素がその中に共通の要素番号とともに示されており、本明細書では再び説明されない。
【００３１】
PCIe仕様書によれば、TLP300は、TLPプレフィックス302と、TLPヘッダ304と、データペイロード306と、TLPダイジェスト308とを含む。TLPヘッダ304は、TLP300が、メモリ読取り要求230(図示せず)として符号化されているか、またはメモリ書込み要求240(図示せず)として符号化されているかを示すように構成され得るタイプフィールド310を含む。TLPプレフィックス302は、データインジケータ312と、TT314と、DBO316とを含む。以下、TT314およびDBO316は、集合的に、トランザクション固有情報と呼ばれる。データインジケータ312は、1ビット(1ビット)の長さであり、TLPプレフィックス302内のビットゼロ(b0)に位置する。非限定的な例では、データインジケータ312は、トランザクション固有情報がTLPプレフィックス302内に存在するかまたは不在であるかを示すように1(1)またはゼロ(0)に設定される。TLPプレフィックス302のビット1(b1)が予約され得る。
【００３２】
図3の参照を続け、この例を続けると、TT314は、6ビット(6ビット)の長さで、TLPプレフィックス302内のビット2(b2)からビット7(b7)の位置にある。したがって、TT314は、プロセッサ212(図示せず)が開始する最高で64(64)個の同時読取り/書込みタスクをサポートするように構成される。DBO316は、16ビット(16ビット)の長さであり、TLPプレフィックス302内のビット8(b8)からビット23(b23)に位置する。この点について、DBO316は、最高で2の16乗(216)個のDBOを識別することができる。図2で提供された非限定的な例にあるように、216個のDBOの各々が128Bデータブロックに対応する場合、DBO316は、ストレージデバイス202(図示せず)内の最高で8メガバイト(8MB)(216×128B=8MB)のアドレス空間をカバーすることができる。次に図4および図5でさらに論じるように、ホストインターフェースコントローラ228(図示せず)はトランザクション固有情報をPCIe RC206(図示せず)に伝達するために、メモリ読取り要求230およびメモリ書込み要求240内にTLPプレフィックス302を含めることができ、これにより、PCIe RC206がデータの暗号化および解読のためのIVを計算することを可能にする。
【００３３】
この点について、図4は、図2のホストシステム200においてデータ暗号化を可能にするために、図3のTLPプレフィックス302を使用してトランザクション固有情報を伝達する、ある例示的な例示を提供する信号フロー図400である。図2と、図3と、図4との間の共通の要素がその中に共通の要素番号とともに示されており、本明細書では再び説明されない。
【００３４】
図4を参照すると、非暗号化データ218をメモリ216からストレージデバイス202に書き込むために、プロセッサ212は書込みタスクのためのトランザクション記述子220を作成する(ブロック402)。トランザクション記述子220は、書込みコマンドと第1のTTとを含み得る。次に、プロセッサ212は、書込みタスク信号224を介して、ICE210において、第1のTTに関連する書込みタスク、LBA、および秘密鍵を作成する。その後、プロセッサ212は書込み要求226をストレージデバイス202内のホストインターフェースコントローラ228(図示せず)に送る。書込み要求226の受信に応じて、ホストインターフェースコントローラ228は、ホストシステム200からトランザクション記述子220を読み取り、書込みコマンドおよび第1のTTを取得する。非限定的な例では、ホストインターフェースコントローラ228は、1つまたは複数のTLP(図示せず)内のトランザクション記述子220を読み取ることができる。1つまたは複数のTLPの各々は、トランザクション固有情報がTLPプレフィックス302内に不在であることを示すように設定されるデータインジケータ312を有するTLPプレフィックス302を含み得る。ホストインターフェースコントローラ228は、次いで、メモリ読取り要求230をPCIe RC206に送る。メモリ読取り要求230は、TLPプレフィックス302(図示せず)を含む。TLPプレフィックス302内のデータインジケータ312(図示せず)は、トランザクション固有情報がTLPプレフィックス302内に存在することを示すように1(1)に設定される。TT314(図示せず)は第1のTTを含み、DBO316(図示せず)は、トランザクション記述子220内で提供されるような書込みコマンドに対応するDBOを含む。
【００３５】
PCIe RC206は、TLPプレフィックス302のTT314内で受信された第1のTTに基づいてLBAおよびキーアレイ(図示せず)から秘密鍵およびLBAを抽出する(ブロック404)。PCIe RC206は、次いで、TLPプレフィックス302内で受信されたLBA、秘密鍵、およびDBO316を使用して、方程式1に従ってIVを計算する(ブロック406)。PCIe RC206は、次いで、メモリコントローラ214を介して非暗号化データ218をメモリ216からフェッチする。PCIe RC206は、次いで、IVを使用して、非暗号化データ218を暗号化データ232に暗号化するようにICE210を構成する(ブロック408)。最終的に、PCIe RC206は、暗号化データ232をストレージデバイス202内のホストインターフェースコントローラ228に提供する。
【００３６】
図5は、図2のホストシステム200においてデータ解読を可能にするために、図3のTLPプレフィックス302を使用してトランザクション固有情報を伝達する、ある例示的な例示を提供する信号フロー図500である。図2と、図3と、図5との間の共通の要素がその中に共通の要素番号とともに示されており、本明細書では再び説明されない。
【００３７】
図5を参照すると、暗号化データ232をストレージデバイス202からメモリ216に読み取るために、プロセッサ212は読取りタスクのためのトランザクション記述子234を作成する(ブロック502)。トランザクション記述子234は、読取りコマンドと第2のTTとを含み得る。次に、プロセッサ212は、読取りタスク信号236を介して、ICE210において、第2のTTに関連する書込みタスク、LBA、および秘密鍵を作成する。その後、プロセッサ212は読取り要求238をストレージデバイス202内のホストインターフェースコントローラ228(図示せず)に送る。読取り要求238の受信に応じて、ホストインターフェースコントローラ228は、ホストシステム200からトランザクション記述子234を読み取り、読取りコマンドおよび第2のTTを取得する。非限定的な例では、ホストインターフェースコントローラ228は、1つまたは複数のTLP(図示せず)内のトランザクション記述子234を読み取ることができる。1つまたは複数のTLPの各々は、トランザクション固有情報がTLPプレフィックス302内に不在であることを示すように設定されたデータインジケータ312(図示せず)を有するTLPプレフィックス302(図示せず)を含み得る。ホストインターフェースコントローラ228は、次いで、メモリ書込み要求240をPCIe RC206に送る。メモリ書込み要求240は、TLPプレフィックス302を含む。TLPプレフィックス302内のデータインジケータ312は、トランザクション固有情報がTLPプレフィックス302内に存在することを示すように1に設定される。TT314(図示せず)は第2のTTを含み、DBO316(図示せず)は、トランザクション記述子234内で提供されるような読取りコマンドに対応するDBOを含む。データペイロード306(図示せず)は、TLPプレフィックス302のDBO316内のDBOに対応する暗号化データ232を含む。
【００３８】
PCIe RC206は、TLPプレフィックス302のTT314内で受信された第2のTTに基づいてLBAおよびキーアレイから秘密鍵およびLBAを抽出する(ブロック504)。PCIe RC206は、次いで、TLPプレフィックス302内で受信されたLBA、秘密鍵、およびDBO316を使用して、方程式1に従ってIVを計算する(ブロック506)。PCIe RC206は、次いで、メモリ書込み要求240から暗号化データ232を抽出する(ブロック508)。PCIe RC206は、次いで、IVを使用して暗号化データ232を非暗号化データ218に解読するようにICE210を構成する(ブロック510)。最終的に、PCIe RC206は、メモリコントローラ214を介して非暗号化データ218をメモリ216に提供する。
【００３９】
図2、図4、および図5に示したように、PCIe RC206は、ICE210によるデータの暗号化および解読を可能にするためのIVを計算するように構成される。IVを計算するためにPCIe RC206が実行する演算は、次に論じることになる一般化プロセスで要約され得る。この点について、図6は、データの暗号化および解読のためのIVを計算するために、図2、図4、および図5のPCIe RC206が採用する、ある例示的なIV計算プロセス600のフローチャートである。
【００４０】
図6を参照すると、PCIe RC206は、データインジケータ312と、TT314と、DBO316とを含むTLPプレフィックス302を含むTLP300を受信する(ブロック602)。データインジケータ312が、トランザクション固有情報がTLPプレフィックス302内に存在することを示す場合、PCIe RC206はTT314およびDBO316を抽出する(ブロック604)。次に、PCIe RC206は、TT314に基づいて、ICE210において(たとえば、LBAおよびキーアレイ内)に記憶されたLBAおよび秘密鍵を取り出す(ブロック606)。最終的に、PCIe RC206は、DBO316、LBA、および秘密鍵に基づいて、IVを計算する(ブロック608)。
【００４１】
図2、図4、および図5に示すように、ホストインターフェースコントローラ228は、IVを計算するためのトランザクション固有情報をPCIe RC206に伝達するように構成される。ホストインターフェースコントローラ228が実行する演算は、次に論じることになる一般化プロセスで要約され得る。この点について、図7は、トランザクション固有情報をPCIe RC206に伝達するために、図2のホストインターフェースコントローラ228が採用する、ある例示的な情報交換プロセス700のフローチャートである。
【００４２】
図7を参照すると、ホストインターフェースコントローラ228は、ホストシステム200から書込み要求226であってよくまたは読取り要求238であってもよい要求を受信する(ブロック702)。応答して、ホストインターフェースコントローラ228は、書込みタスクのためのトランザクション記述子220であってよくまたは読取りタスクのためのトランザクション記述子234であってもよいトランザクション記述子をホストシステム200から読み取る。ホストインターフェースコントローラ228は、次いで、トランザクション記述子220またはトランザクション記述子234から第1のTTであってよくまたは第2のTTであってもよいTTを抽出する(ブロック704)。最終的に、ホストインターフェースコントローラ228は、TLP300をPCIe RC206に送り、TLPプレフィックス302をTLP300内に含める(ブロック706)。TLPプレフィックス302内のデータインジケータ312は、トランザクション固有情報がTLPプレフィックス302内に存在することを示すように構成される。TLPプレフィックス302はまた、第1のTTまたは第2のTTをTT314内に含め、DBOをDBO316内に含める。
【００４３】
本明細書で開示した態様によるPCIeのためのICE210は、レイテンシ問題を有するバスを有する、図2のホストシステム200など、任意のプロセッサベースデバイス内に提供されてよく、またはそれと一体化してもよい。例として、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤおよび自動車が含まれる。すべてのそのようなデバイスが本開示によって恩恵を受ける場合があるが、ワイヤレス接続に依存しRFFEバスを有するデバイスが本開示の態様を使用すると最大の利益が得られる。
【００４４】
本明細書で開示した態様に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェア、メモリ内もしくは別のコンピュータ可読媒体内に記憶されるとともにプロセッサもしくは他の処理デバイスによって実行される命令、または両方の組合せとして実装され得ることを、当業者はさらに諒解されよう。本明細書で説明したマスタデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェアコンポーネント、集積回路(IC)、またはICチップにおいて採用されてもよい。本明細書で開示したメモリは、任意のタイプおよびサイズのメモリであってもよく、任意のタイプの所望の情報を記憶するように構成されてもよい。この互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップについて、概してそれらの機能に関して上記で説明した。そのような機能がどのように実装されるかは、特定の適用例、設計選択、および/または全体的なシステムに課される設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してもよいが、そのような実装形態の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００４５】
本明細書で開示する態様に関連して説明した種々の例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタロジック、個別ハードウェアコンポーネント、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行することができる。プロセッサは、マイクロプロセッサであってもよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態マシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ(たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成)としても実装されてもよい。
【００４６】
本明細書で開示した態様は、ハードウェアにおいて、かつハードウェア内に記憶される命令において具現される場合があり、それらの命令は、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形のコンピュータ可読媒体内に存在する場合がある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替形態において、記憶媒体は、プロセッサと一体化してもよい。プロセッサおよび記憶媒体は、ASIC内に存在する場合がある。ASICは、リモート局内に存在する場合がある。代替形態において、プロセッサおよび記憶媒体は、個別構成要素としてリモート局、基地局、またはサーバ内に存在する場合がある。
【００４７】
本明細書の例示的な態様のいずれかで説明した動作ステップが、例および検討を提供するために説明されることにも留意されたい。説明した動作は、図示されたシーケンス以外の数多くの異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて説明される動作は、実際にはいくつかの異なるステップにおいて実行される場合がある。さらに、例示的な態様において論じた1つまたは複数の動作ステップは組み合わせられる場合がある。当業者には容易に明らかになるように、流れ図に示される動作ステップが数多くの異なる変更を受ける場合があることを理解されたい。情報および信号が様々な異なる技術および技法のいずれかを使用して表される場合があることも当業者は理解されよう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁気粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表される場合がある。
【００４８】
本開示のこれまでの説明は、任意の当業者が本開示を実施できるようにするか、または使用できるようにするために提供される。本開示に対する種々の変更が、当業者に容易に明らかになり、本明細書で規定する一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用される場合がある。したがって、本開示は、本明細書で説明した例および設計に限定されるものでなく、本明細書で開示した原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００４９】
100  従来のホストシステム
102  ホストコントローラ
104  ストレージデバイス
106  システムバス
108  プロセッサ
110  メモリコントローラ
112  メモリ
114  非暗号化データ
116  暗号エンジン
118  暗号化データ
120  暗号化データ
122  非暗号化データ
200  ホストシステム
202  ストレージデバイス
204(1)〜204(N) PCIe EP
206  PCIe RC
208  システムバス
210  ICE
212  プロセッサ
214  メモリコントローラ
216  メモリ
218  非暗号化データ
220  トランザクション記述子
222  キャッシュメモリ
224  書込みタスク信号
226  書込み要求
228  ホストインターフェースコントローラ
230  メモリ読取り要求
232  暗号化データ
234  トランザクション記述子
236  読取りタスク信号
238  読取り要求
240  メモリ書込み要求
300  TLP
302  TLPプレフィックス
304  TLPヘッダ
306  データペイロード
308  TLPダイジェスト
310  タイプフィールド
312  データインジケータ
314  TT
316  DBO
400  信号フロー図
500  信号フロー図
600  IV計算プロセス
700  情報交換プロセス
【図１】
2019505924.tif 000003
【図２】
2019505924.tif 000004
【図３】
2019505924.tif 000005
【図４】
2019505924.tif 000006
【図５】
2019505924.tif 000007
【図６】
2019505924.tif 000008
【図７】
2019505924.tif 000009
【国際調査報告】
2019505924.tif 000010
2019505924.tif 000011