(57)【要約】  読取り専用メモリ中のブートシーケンスにパッチを当てるためのシステムおよび方法。アドレス可能メモリ中でパッチインスタンスが与えられる。パッチインスタンスは、最初は空である。読取り専用メモリは、アドレス可能メモリ中のアドレス可能なメモリロケーションのセットの中の、識別されたロケーションに動的に向かうプロセスを含む。その後、プロセスは、パッチインスタンスに従って、次の後続命令に戻る。訂正が求められると、1つまたは複数のパッチインスタンスには1つまたは複数のそれぞれのパッチが投入される。ブートシーケンスは、ファームウェアでシステムオンチップ(SoC)が具現化された後でパッチが適用される必要があるかもしれない所に配置された1つまたは複数のパッチインジケータを挿入することによって修正される。パッチは、定義されると、少なくとも符号化された命令タイプおよびアドレスを投入される。したがって、3つ以下のワードにおいてパッチが有効にされる。
2017510000.tif 000002
【特許請求の範囲】
【請求項１】
読取り専用メモリ中の命令シーケンスを修正するための方法であって、
プロセッサに結合されたアドレス可能なメモリロケーションのセットを与えるステップと、
前記プロセッサにさらに結合されたワンタイムプログラム可能ヒューズのセットを与えるステップと、
前記プロセッサに結合された読取り専用メモリ中の命令シーケンスを与えるステップと、
前記アドレス可能なメモリロケーションセットの中の識別されたロケーションに動的に向かい、前記読取り専用メモリ中の前記命令シーケンスに戻る、前記読取り専用メモリ中のパッチプロセスを有効にするステップであって、前記命令シーケンスを修正することが所望されるとき、前記ワンタイムプログラム可能ヒューズのセットの中の情報が、前記プロセッサに、パッチインスタンスから少なくとも1つの命令を実行するよう指示する、ステップとを含む方法。
【請求項２】
前記読取り専用メモリ中の前記命令シーケンス中の所望のロケーションに、少なくとも1つのパッチインジケータを挿入するステップであって、前記少なくとも1つのパッチインジケータによって定義される、前記アドレス可能なメモリロケーションセットの中の少なくとも1つのパッチインスタンスは、前記読取り専用メモリ中の前記命令シーケンスに対する修正が識別される前は空の内容を含む、ステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記所望のロケーションは、ファームウェアにおいて前記命令シーケンスが実施された後で修正が起こりそうな前記命令シーケンス中の場所を定義する、請求項2に記載の方法。
【請求項４】
前記読取り専用メモリ中の前記命令シーケンスに対する修正の後で、前記少なくとも1つのパッチインスタンスは、少なくとも命令タイプおよびパッチアドレスを含む、請求項2に記載の方法。
【請求項５】
前記命令タイプはコードによって定義される、請求項4に記載の方法。
【請求項６】
前記パッチインスタンスはNビットのワードで定義され、Nは整数である、請求項4に記載の方法。
【請求項７】
前記読取り専用メモリ中のパッチプロセスを有効にするステップは、前記少なくとも1つのパッチインジケータについてのみ置換え内容を与えるステップを含む、請求項4に記載の方法。
【請求項８】
前記読取り専用メモリ中の前記パッチプロセスを有効にするステップは、前記命令シーケンスがファームウェアで具現化された後で所望の変更を統合するパッチプロセス論理を実行するステップを含む、請求項7に記載の方法。
【請求項９】
前記パッチプロセス論理は、プロセッサに、前記命令シーケンス以外のソースからアドレスを取り出し、前記アドレスにおいてパッチデータが利用可能であるかどうか判断し、前記アドレスにおいてパッチデータが利用可能でないときは、前記命令シーケンス中の次の後続命令に戻り、それ以外の場合は、前記パッチデータ中の少なくとも1つの命令を実行し、前記命令シーケンス中の前記次の後続命令に戻るよう指示する、請求項8に記載の方法。
【請求項１０】
前記プロセッサは、前記パッチインスタンスが記憶されているアドレス可能なロケーションを認証し、定義するために、前記ワンタイムプログラム可能ヒューズのセットにアクセスすることによって、前記命令シーケンス以外の前記ソースから前記アドレスを取り出すよう指示される、請求項9に記載の方法。
【請求項１１】
前記パッチインスタンスは、マスク情報を含み、Nビットの2つ以下のワードで定義され、Nは整数である、請求項4に記載の方法。
【請求項１２】
読取り専用メモリ中に記憶された命令シーケンスにパッチを当てるためのシステムであって、
アドレス可能なメモリロケーションのセットを与えるプログラム可能読取り専用メモリと、
前記プログラム可能読取り専用メモリ中の前記アドレス可能なメモリロケーションセットの中の識別されたロケーションに動的に向かい、前記読取り専用メモリ中の前記命令シーケンスに戻るように構成された命令シーケンスおよびパッチ処理論理を記憶した読取り専用メモリと、
バスにより前記プログラム可能読取り専用メモリおよび前記読取り専用メモリに結合されたランダムアクセスメモリであって、前記命令シーケンスおよび前記パッチ処理論理を記憶するように構成された、ランダムアクセスメモリと、
前記命令シーケンスおよび前記パッチ処理論理を、前記読取り専用メモリから前記ランダムアクセスメモリにロードするためのコントローラと、
前記バスにより前記ランダムアクセスメモリに結合され、前記命令シーケンスを実行するように構成されたプロセッサであって、前記命令シーケンス中でパッチインジケータに遭遇すると、前記パッチ処理論理を実行する、プロセッサとを備えるシステム。
【請求項１３】
前記パッチインジケータは、前記命令シーケンスがファームウェアにおいて具現化された後で、求められる変更が起こりそうな、前記命令シーケンス中の場所に配置される、請求項12に記載のシステム。
【請求項１４】
前記プログラム可能読取り専用メモリ中にパッチインスタンスが記憶され、前記パッチインスタンスは、前記読取り専用メモリ中の前記命令シーケンスに対する修正が識別される前は空の内容を含む、請求項12に記載のシステム。
【請求項１５】
前記読取り専用メモリ中の前記命令シーケンスに対する修正が識別された後で、前記パッチインスタンスは、命令タイプが符号化された少なくとも第1のワードと、パッチアドレスをもつ第2のワードとを含み、前記第1のワードおよび前記第2のワードはパッチを定義する、請求項14に記載のシステム。
【請求項１６】
前記第1のワードはマスク情報をさらに含む、請求項15に記載のシステム。
【請求項１７】
前記パッチはNビットのワードで定義され、Nは整数である、請求項15に記載のシステム。
【請求項１８】
前記パッチは、前記少なくとも1つのパッチインジケータについてのみの置換え内容を含む、請求項15に記載のシステム。
【請求項１９】
前記パッチ処理論理は、前記プロセッサに、アドレスにアクセスし、前記アドレスにおいてパッチが利用可能かどうか判断し、前記アドレスにおいてパッチが利用可能でないときは、前記命令シーケンス中の次の後続命令に戻り、それ以外の場合は、前記パッチ中の命令を実行し、前記命令シーケンス中の前記次の後続命令に戻るよう指示する、請求項12に記載のシステム。
【請求項２０】
パッチデータを与えるための、前記プロセッサに結合されたワンタイムプログラム可能ヒューズのセットをさらに備える、請求項19に記載のシステム。
【請求項２１】
実行されると、プロセッサに機能を実施するよう指示するプロセッサ命令を記憶した非一時的プロセッサ可読媒体であって、前記機能は、
命令シーケンス中にパッチインジケータが存在するときを識別すること、
前記パッチインジケータに関連付けられたアドレスにおいてパッチインスタンスが利用可能であるときを判断し、パッチインスタンスが利用可能でないときは、前記命令シーケンスから次の後続命令をロードすること、
そうではなく、パッチインスタンスが利用可能であるときは、
前記パッチインジケータに関連付けられた前記アドレスに記憶された情報からパッチタイプを判断すること、および
前記パッチインスタンス中の1つまたは複数の命令を実行することを含む、非一時的プロセッサ可読媒体。
【請求項２２】
パッチインスタンスが利用可能であるときを前記判断することは、ワンタイムプログラム可能ヒューズのセットから通信される情報に応答する、請求項21に記載の非一時的プロセッサ可読媒体。
【請求項２３】
前記パッチインジケータは、前記命令シーケンスがファームウェアにおいて具現化された後で、求められる変更が起こりそうな、前記命令シーケンス中の場所に配置される、請求項21に記載の非一時的プロセッサ可読媒体。
【請求項２４】
プログラム可能読取り専用メモリ中にパッチインスタンスが記憶され、前記パッチインスタンスは、前記読取り専用メモリ中の前記命令シーケンスに対する修正が識別される前は空の内容を含む、請求項21に記載の非一時的プロセッサ可読媒体。
【請求項２５】
読取り専用メモリ中の前記命令シーケンスに対する修正が識別された後で、前記パッチインスタンスは、命令タイプが符号化された少なくとも第1のワードと、パッチアドレスをもつ第2のワードとを含み、前記第1のワードおよび前記第2のワードはパッチを定義する、請求項21に記載の非一時的プロセッサ可読媒体。
【請求項２６】
前記第1のワードはマスク情報をさらに含む、請求項25に記載の非一時的プロセッサ可読媒体。
【請求項２７】
前記パッチはNビットのワードで定義され、Nは整数である、請求項25に記載の非一時的プロセッサ可読媒体。
【請求項２８】
前記パッチは、前記少なくとも1つのパッチインジケータについてのみの置換え内容を含む、請求項25に記載の非一時的プロセッサ可読媒体。
【請求項２９】
命令シーケンスにパッチを当てるためのシステムであって、
少なくとも1つのパッチインスタンスを記憶した、アドレス可能なメモリロケーションのセットを与えるための手段と、
プロセッサによって実行されると、前記プロセッサに、前記アドレス可能なメモリロケーションセットの中の識別されたロケーションに動的に向かい、前記命令シーケンスに戻るよう指示するように構成された命令のシーケンスおよびパッチ処理論理を記憶するための手段と、
前記命令シーケンスおよびパッチ処理論理を一時的に記憶するための手段と、
記憶するための前記手段から、一時的に記憶するための前記手段に、前記命令シーケンスおよび前記パッチ処理論理をロードするための手段と、
一時的に記憶するための前記手段からの前記命令シーケンスを実行するための手段であって、前記命令シーケンス中でパッチインジケータに遭遇すると、実行するための前記手段が前記パッチ処理論理を実行する、手段とを備えるシステム。
【請求項３０】
前記命令シーケンスを実行するための前記手段は、命令シーケンス中にパッチインジケータが存在するときを識別し、
前記パッチインジケータに関連付けられたアドレスにおいてパッチインスタンスが利用可能であるときを判断し、パッチインスタンスが利用可能でないときは、前記命令シーケンスを実行するための前記手段は、前記命令シーケンスから次の後続命令をロードし、
そうではなく、パッチインスタンスが利用可能であるときは、前記命令シーケンスを実行するための前記手段は、前記パッチインジケータに関連付けられた前記アドレスに記憶された情報からパッチタイプを判断し、
前記パッチインスタンス中の1つまたは複数の命令を実行する、請求項29に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、その全体が参照により本文書に組み込まれている、2014年3月31日に出願された「System and Method for Modifying Firmware Used to Initialize a Computing Device」(整理番号141456P1)という名称の米国仮出願第61/973,203号の出願日の優先権およびその利益を主張するものである。
【背景技術】
【０００２】
コンピューティングデバイスが至る所に存在する。モバイルフォン、タブレット、およびラップトップコンピュータなど、一部のコンピューティングデバイスは、携帯型である。そのような携帯型コンピューティングデバイスの機能性が増すにつれて、必要とされる計算または処理の能力、および一般的にそのような機能性をサポートするためのデータ記憶容量も増加する。これらのデバイスの主要機能に加えて、多くは、周辺機能をサポートする要素を含んでいる。たとえば、セルラー電話は、セルラー通話を可能にし、サポートするという主要機能と、スチールカメラ、ビデオカメラ、全地球測位システム(GPS)ナビゲーション、ウェブブラウジング、電子メールの送受信、テキストメッセージの送受信、プッシュツートーク機能などの周辺機能とを含む場合がある。これらの携帯型デバイスの多くは、特定のデバイス上で1つまたは複数の主要および周辺機能を有効にするためのシステムオンチップ(SoC)を含む。
【０００３】
SoCは概して、集積回路に埋め込まれたプロセッサまたはローカルバスに結合されたチップを備える。SoCは概して、ハードウェア構成要素および他のプロセッサを含むようになる。SoCは、デスクトップおよびサーバコンピュータなど、より大きいコンピューティングデバイスのように、電源投入されるとき、ブートシーケンスまたはブートコードに依拠する。ブートシーケンスは、SoCに電力が最初に適用されたとき、SoCが実施する動作の初期セットである。ブートコードは、SoCを初期化する(すなわち、ブートストラッピング)プロセスを有効にする。
【０００４】
ブートコードは通常、高速アクセス、低複雑度、空間効率、低コスト、およびセキュリティの理由により、読取り専用メモリ(ROM)に記憶される。ROMは、場合によってはマスクされた、またはブートROMとして知られ、そのコードがハードウェアに組み込まれており、したがって、後でプログラムし直すことができない。これにより、固有コードのリバースエンジニアリングに対する、および暗号攻撃に対する、より強いセキュリティが可能である。
【０００５】
典型的なSoC設計プロセスにおいて、ブートROMは、SoCの他の部分が完成されるよりもかなり前に定義される。回路アーキテクチャ、特徴セット、次世代市場動向、性能向上、識別されたセキュリティ脆弱性およびプレシリコン検証制限における複雑さが、SoCのテープアウト後の変更を可能にするための適応性が制限された従来のブートROM設計につながっている。これらの従来の設計において、ブートROMファームウェアは、ランタイム実行中に命令またはステートメントおよびデータが置き換えられることを可能にし得るワンタイムプログラム可能ヒューズを用いてバックアップをとられる。
【０００６】
図1は、コンピューティングデバイスの例示的な従来のブートプロセッサ10においてどのようにパッチが作用するかを示す概略図を含む。図示されるように、ブートプロセッサ10は、ブートコードまたはコード20を含むブートROM12と、セキュアなコントローラ14と、ワンタイムプログラム可能ヒューズ16と、マルチプレクサ論理18とを含む。セキュアなコントローラ14はパッチ領域15を含み、この領域は、それぞれのデータフィールドに関連付けられた一定数のアドレスを含む。例示的実施形態において、パッチ領域15は、48個のそのようなアドレスを含む。セキュアなコントローラ14は、メモリ17も含む。パッチを当てるのに先立って、パッチ領域15は空であり、ワンタイムプログラム可能ヒューズ16はすべて手つかずのままである。パッチまたは変更が求められると、ワンタイムプログラム可能ヒューズのうちの1つまたは複数が、開回路条件を生成するように修正される。さらに、アドレスおよび対応するデータフィールドのうちの1つまたは複数が、アドレスおよびデータ情報を含むように修正される。開回路条件は、セキュアなコントローラ14に、元のブートROMデータの代わりに、パッチを当てられたアドレスおよび対応するデータを挿入するよう指示する。マルチプレクサ論理18は、ブートROMデータまたはパッチを当てられたデータを、必要に応じて、ブートプロセッサ10に結合されたプロセッサ(図示せず)に制御可能にフォワードする。
【０００７】
命令パッチングのために、しばしば、パッチまたは修正を適切な場所で行うことができない場合がある。つまり、置換えまたは新規命令を追加するのに、前に使われたことがないメモリを使うために、分岐退出(branch out)命令が求められる。その後、元のブートコードに戻るために、分岐復帰(branch back)命令が求められる。図2は、図1の従来のブートプロセッサ10において、どのようにしてパッチが有効にされるかを示す概略図を含む。コード20は、命令またはステートメントのシーケンスを含む。コード20は、アドレス22およびステートメントまたは命令24によって定義される。コードアドレスは、0x00000000で始まり、コード20中の最後の命令またはステートメントで終わる。元の未修正コード20は、命令またはステートメントA〜XXを含む。分岐退出命令またはパッチ30が、ステートメントCとステートメントDとの間に挿入される。パッチアドレス32は、0x10000000で始まり、パッチ30を完了させることを求められる、最後の命令またはステートメントで終わる。各パッチアドレス32は、対応するステートメントまたは命令34に関連付けられる。図2に示すように、パッチ30を実装するとき、合計5つのアドレスが消費される。コード20にジャンプまたは分岐命令を挿入するのに、第1のアドレスが消費される。パッチ30中の新たな命令により、2つの追加アドレスが消費される。説明のために、実際にOUT命令が複数のアドレスを消費するときでも、OUT命令は、1つのアドレスを使うものとして記載される。ジャンプまたは分岐命令で上書きされたステートメントDを置き換え、または復元するのに追加アドレスが使われる。第5のアドレスが、コード20中の次の後続ステートメントまたは命令にジャンプ復帰するのに使われる。したがって、ブートコード20に2つの新たな命令を挿入するのに、5つのアドレスが消費される。
【０００８】
この柔軟性にもかかわらず、アドレスおよびデータを多重化するのに必要とされる総ダイ面積コストおよび追加回路構成により、ワンタイムプログラム可能ヒューズ16は、限られた量が利用可能であることを強制される。さらに、利用可能な限られた数のワンタイムプログラム可能ヒューズ16は、SoCにおける他のワンタイムプログラム可能ヒューズ16必要分と共有されなければならない。
【０００９】
ROMコード20中のバグを修復するのに伴う問題点に加え、ROMコード20に新規特徴を追加するのも複雑である。そのような追加特徴は、ROMがSoC内ですでにプログラムされ、製造された後で、システム設計者によって望ましいと判断される場合がある。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
したがって、読取り専用メモリ中でハードウェアに組み込まれたブートシーケンスまたは他のコードをセキュアに修正するための改良型機構が必要とされる。
【課題を解決するための手段】
【００１１】
読取り専用メモリ(ROM)中に記憶されたブートシーケンスまたは他の命令のシーケンスにパッチが適用されることを可能にするシステムおよび方法の例示的実施形態について、開示する。SoCがファームウェアで具現化された後、パッチが所望される見込みがある、ブートシーケンス中のロケーションにパッチインジケータを挿入することによって、元のブートシーケンスが修正される。修正ブートシーケンスを作成するために、任意の数のパッチインジケータが、元のブートシーケンスに挿入され得る。パッチインスタンスは、最初は空であり、プロセッサ中の、命令およびデータをロードするコントローラにとってアクセス可能なプログラム可能メモリ中に記憶されている。ROMは、プロセッサによって実行されると、パッチインジケータによって識別されるパッチインスタンスに動的に向かい(vector)、その後、ブートシーケンス中の次の後続命令に戻るパッチ処理論理を含む。パッチが所望されると、命令タイプが第1のワード中で符号化され、パッチアドレスがパッチの第2のワード中で与えられる。いくつかの命令タイプについては、第3のワードにデータが投入(populate)される。
【００１２】
読取り専用メモリ(ROM)中に記憶された命令のシーケンスにパッチを当てるための改良型システムの例示的実施形態は、プログラム可能読取り専用メモリ、すなわちPROM、ROM、ランダムアクセスメモリ(RAM)、コントローラおよびプロセッサを含む。PROMは、アドレス可能なメモリロケーションのセットを与える。ROMは、命令のシーケンスと、PROM中のアドレス可能なメモリロケーションのセットの中の識別された(すなわち、アドレス可能)ロケーションに動的に向かい、ROM中の命令のシーケンスに戻るように構成されたパッチ処理論理とを記憶している。RAMは、バスによりPROMおよびROMに結合される。コントローラは、命令のシーケンスおよびパッチ処理論理をROMからRAMにロードする。プロセッサは、バスによりRAMに結合され、命令のシーケンスを実行する。命令のシーケンス中でパッチインジケータに遭遇すると、プロセッサはパッチ処理論理を実行する。
【００１３】
読取り専用メモリ中の命令のシーケンスを修正するための方法の例示的実施形態は、プロセッサに結合されたアドレス可能なメモリロケーションのセットを与えるステップと、プロセッサに結合されたワンタイムプログラム可能ヒューズのセットを与えるステップと、プロセッサに結合された読取り専用メモリ中で命令のシーケンスを与えるステップと、アドレス可能なメモリロケーションのセットの中の識別されたロケーションに動的に向かい、読取り専用メモリ中の命令のシーケンスに戻る、読取り専用メモリ中のパッチプロセスを有効にするステップであって、命令のシーケンスを修正することが所望されるとき、ワンタイムプログラム可能ヒューズのセットの中の情報は、プロセッサに、パッチから少なくとも1つの命令を実行するよう指示する、ステップとを含む。
【００１４】
実行されると、プロセッサに、機能を実施するよう指示するプロセッサ命令を記憶した非一時的プロセッサ可読媒体の例示的実施形態は、プロセッサによって実行されると、プロセッサに、命令のシーケンス中にパッチインジケータが存在するときを識別するステップと、パッチインスタンスが利用可能でないとき、プロセッサが命令のシーケンスから次の後続命令をロードし、実行するように、パッチインジケータに関連付けられたアドレスにおいてパッチインスタンスが利用可能であるときを判断するステップとを実施するよう指示する論理を含む。そうではなく、パッチインスタンスが利用可能であるとき、プロセッサは、パッチインジケータに関連付けられたアドレスに記憶された情報からパッチタイプを判断するステップと、パッチインスタンスから少なくとも1つの命令を実行するステップとを実施する。
【００１５】
命令のシーケンスにパッチを当てるための改良型システムの別の例示的実施形態は、少なくとも1つのパッチインスタンスを記憶した、アドレス可能なメモリロケーションのセットを与えるための手段と、命令のシーケンスを実行するための手段によって実行されると、アドレス可能なメモリロケーションのセットの中の識別されたロケーションに動的に向かい、命令のシーケンスに戻る命令のシーケンスおよびパッチ処理論理を記憶するための手段と、命令のシーケンスおよびパッチ処理論理を一時的に記憶するための手段と、記憶するための手段から、一時的に記憶するための手段に、命令のシーケンスおよびパッチ処理論理をロードするための手段と、一時的に記憶するための手段から、命令のシーケンスを実行するための手段であって、命令のシーケンス中でパッチインジケータに遭遇すると、実行するための手段がパッチ処理論理を実行する、手段とを含む。
【００１６】
図面では、別段に規定されていない限り、様々な図の全体を通して、同様の参照番号は同様の部分を指す。「102A」または「102B」などの文字指定を伴う参照番号について、文字指定は、同じ図に存在する2つの同様の部分または要素を区別し得る。参照番号がすべての図において同じ参照番号を有するすべての部分を包含することを意図するとき、参照番号に対する文字指定は省略される場合がある。
【図面の簡単な説明】
【００１７】
【図１】従来のブートプロセッサにおいてパッチがどのように作用するかを示す概略図である。
【図２】図1の従来のブートプロセッサにおいて、どのようにしてパッチが有効にされるかを示す概略図である。
【図３】改良型ROMパッチプロセスを含むコンピューティングデバイスの例示的実施形態を示す概略図である。
【図４】改良型ROMパッチプロセスを有効にするシステムの例示的実施形態を示す概略図である。
【図５】2つのパッチインスタンスをもつ例示的ブートROMコードシーケンスの実施形態を示す概略図である。
【図６】パッチが定義される前の、図5の例示的ブートROMコードシーケンスの実施形態を示す概略図である。
【図７】図6の例示的ブートROMコードシーケンス中の、2つの定義されたパッチの例示的実施形態を示す概略図である。
【図８】図4のパッチ論理によって有効にされる改良型ROMパッチプロセスの実施形態を示す流れ図である。
【図９Ａ】書込み命令の例示的実施形態を示す図である。
【図９Ｂ】マスク書込みの例示的実施形態を示す図である。
【図１０Ａ】「ビットがクリアになるまで待機」命令の例示的実施形態を示す図である。
【図１０Ｂ】「ビットがセットされるまで待機」命令の例示的実施形態を示す図である。
【図１１】ブートシーケンス、および仮定パッチのセットの例示的実施形態を示す概略図である。
【図１２】読取り専用メモリ中の命令のシーケンスを修正するための方法の例示的実施形態の流れ図である。
【図１３】コンピュータ可読媒体の実施形態を示す概略図である。
【発明を実施するための形態】
【００１８】
「例示的」という言葉は、本明細書では、「例、事例、または例示として役立つ」ことを意味するように使用される。「例示的」として本明細書において説明されるいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるとは限らない。
【００１９】
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルも含むことができる。さらに、本明細書において参照される「アプリケーション」はまた、オープンされることが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルも含む場合がある。
【００２０】
「コンテンツ」という用語はまた、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能コンテンツを有するファイルを含む場合もある。さらに、本明細書において参照される「コンテンツ」は、開くことが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルやデータ値などの、本質的に実行可能ではないファイルも含むことができる。
【００２１】
この記述で使用される場合、「構成要素」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなど、コンピュータ関連のエンティティを指すことを意図するものである。たとえば、構成要素は、限定はされないが、プロセッサ上で稼働しているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータであってもよい。例として、コンピューティングデバイス上で稼働しているアプリケーションとコンピューティングデバイスの両方が、構成要素であってもよい。1つまたは複数の構成要素は、プロセスおよび/または実行のスレッド内に存在する場合があり、構成要素は、1つのコンピュータに局在する場合があり、および/または、2つ以上のコンピュータ間に分散される場合がある。さらに、これらの構成要素は、そこに記憶される種々のデータ構造を有する種々のコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、信号を用いて、ローカルシステム内、分散システム内の別の構成要素とやりとりし、および/または、インターネットなどのネットワークにわたって他のシステムとやりとりする1つの構成要素からのデータ)を有する信号に従うなどして、ローカルプロセスおよび/またはリモートプロセスを用いて通信することができる。
【００２２】
この記述では、「携帯型コンピューティングデバイス」(「PCD」)という用語は、バッテリおよび/またはキャパシタなど、制限された容量の再充電可能な電源において動作するデバイスを記述するために使用される。充電式電源を備えるPCDは、数十年にわたって使用されてきたが、第3世代(「3G」)および第4世代(「4G」)のワイヤレス技術の出現に結び付けられる、充電式バッテリにおける技術的な進歩により、複数の能力を有する数多くのPCDが可能になった。したがって、PCDは、数ある中でも、セルラー電話、衛星電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、スマートブックすなわちリーダ、メディアプレーヤ、上述のデバイスの組合せ、ワイヤレス接続を有するラップトップコンピュータまたはタブレットコンピュータとすることができる。
【００２３】
ハードウェアに組み込まれたまたはブートROM中のブートシーケンスにパッチを当てるためのシステムおよび方法について、開示する。元のまたは未修正ブートシーケンスが、ROM中に記憶されている。元のまたは未修正ブートシーケンスは、1つまたは複数のパッチインスタンスとともにプリロードされる。パッチインスタンスは、ファームウェアでシステムオンチップ(SoC)が具現化された後でパッチが適用される必要があるかもしれない所に戦略的に配置される。これらのパッチインスタンスは、最初は空である。パッチインスタンスは、ランダムアクセスメモリ(RAM)およびプロセッサに結合されたコントローラにとってアクセス可能なプログラム可能メモリ中に記憶される。ROMは、プログラム可能メモリ中のアドレス可能なメモリロケーションのセットの中の、識別されたロケーションに動的に向かうプロセスを含む。その後、プロセスは、パッチインスタンスに従って、次の後続命令に戻る。訂正が所望されると、1つまたは複数のパッチインスタンスにはそれぞれのパッチが投入される。パッチは、命令タイプ、アドレス、および戻りインジケータを含む。いくつかの変形形態では、パッチはデータフィールドも含む。したがって、4つ以下のワードにおいてパッチが有効にされる。
【００２４】
コンピューティングデバイスをブートするのに使われるファームウェアを修正するための本システムおよび方法は、ブートROMパッチまたは修正において使われる共通命令のセットを定義する。共通命令を事前定義し、それらの命令を、PROMまたは他の利用可能メモリ中のアドレス可能なメモリロケーションに向かい、またはジャンプし、パッチが完了するとブートROMに戻るための、埋め込まれた、または記憶されたプロセスとともに使うことによって、本システムおよび方法は、ポストシリコンテープアウト後のブートROM修正を有効にしながら、限られたワンタイムプログラム可能ヒューズの総使用量を最適化する。
【００２５】
PCD内での動作を特に参照して記載するが、記載するシステムおよび方法は、ROMの全体的置換えに関連したコストを避けるように、元のブートシーケンスにパッチを当てるか、または修正することが有用であり得るROM中のブートシーケンスをもつどのコンピューティングシステムにも適用可能である。別の言い方をすると、本明細書で開示するシステムおよび方法は、ROM中に埋め込みブートシーケンスが記憶されたデスクトップコンピュータ、サーバコンピュータまたはどの電子デバイスにも適用可能である。
【００２６】
ここで、図示される例が参照される。最初に図3を参照すると、PCD100の例示的な非限定的態様が示されている。PCD100は、マルチコアCPU210を含むオンチップシステムすなわちSoC120を含む。マルチコアCPU210は、第0のコア215と、第1のコア216と、第Nのコア217とを含む。N個のコアの各々は相互に独立しており、追加、データの移動、分岐などの命令を処理するように配置されている。マルチコアCPU210は、汎用入力出力(GPIO)バス211に結合され、少なくとも1つのプログラム可能メモリまたはPROM212、およびコントローラ214を含むように配置される。N個のコアの各々は、GPIOバス211上で、またはeFuse要素192から通信される信号、ならびにROM190、システムメモリ230またはUSB対応データストア142中に記憶されたプログラムもしくはファイル143から受信される命令に合わせて動作する。
【００２７】
GPIOバス211は、CPU210から、オンチップシステム120にとって外部の任意の周辺デバイスに信号を送るように、または逆に、オンチップシステム120にとって外部の任意のデバイスから信号を受信するように構成されてよい。そのような周辺デバイスは、図1に示されるもの、またはいくつかのケースでは、図1に示さないデバイスのうちの1つもしくは複数を含み得る。説明するように、GPIOバス211は、SoC120に、SoC120に結合された記憶デバイスから実行可能プロセッサ命令がダウンロードされる所望の動作モードに入り、動作するよう指示するのに使われ得る。さらに、GPIOバス211は、PROM212中に記憶されたデータを調節もしくは修正するのに、および/またはeFuse要素192を構成するのに使われ得る。
【００２８】
図示する配置において、PROM212は、それぞれのコアによって判断される所望のときにN個のコアのうちのいずれによっても取り出すことができるデータを記憶することが可能な内部(一体型)メモリ要素である。PROM212は、それぞれのパッチまたは命令のセットについて指定されるメモリロケーションのセットを与えるように構成される。
【００２９】
コントローラ214は、N個のコアの各々に結合され、様々な記憶デバイス(マルチコアCPU210にとって内部と外部の両方)のうちのいずれからの命令およびデータにも、制御された形でアクセスし、N個のコアまたはSoC120内の他の様々なプロセッサに与えるように構成される。本システムにおいて、コントローラ214は、プロセッサ命令、ステータス情報およびベクトルまたは分岐論理の取出しのための密結合メモリとして動作するように構成される。
【００３０】
読取り専用メモリ(ROM)190は、初期電源投入中に、またはウォッチドッグリセット条件が起こるとCPU210によって実行される1つのコードまたは複数のコードを含む集積回路である。好ましくは、ROMはファームウェア中で有効にされる。
【００３１】
図3に示すように、ディスプレイコントローラ128およびタッチスクリーンコントローラ130がマルチコアCPU210に結合される。次に、オンチップシステム120の外部にあるディスプレイ/タッチスクリーン132が、ディスプレイコントローラ128およびタッチスクリーンコントローラ130に結合される。
【００３２】
図3は、ビデオエンコーダ134、たとえば位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM:sequential couleur a memoire)エンコーダまたは全米テレビジョン方式委員会(NTSC)エンコーダがマルチコアCPU210に結合されることをさらに示す。さらに、ビデオ増幅器136が、ビデオエンコーダ134およびディスプレイ/タッチスクリーン132に結合される。また、ビデオポート138が、ビデオ増幅器136に結合される。図3に示されるように、ユニバーサルシリアルバス(USB)コントローラ140がマルチコアCPU210に結合される。また、USB記憶デバイス142がUSBコントローラ140に結合される。USB記憶デバイス142中に記憶されたファイル143が、システムメモリ230に転送されるのに利用可能である。さらに、加入者識別モジュール(SIM)カードインターフェース146は、また、SoC120のこれらの要素間でデータを転送するために、2つ以上の物理チャネルまたは経路からなるマルチコアCPU210とシステムメモリ230との間の接続219を用いて、マルチコアCPU210に結合され得る。さらに、図3に示すように、デジタルカメラ148がマルチコアCPU210に結合され得る。例示的な態様において、デジタルカメラ148は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラである。
【００３３】
図3に示すように、ステレオオーディオコーデック150が、マルチコアCPU210に結合され得る。さらに、オーディオ増幅器152が、ステレオオーディオコーデック150に結合され得る。例示的な態様では、第1のステレオスピーカ154および第2のステレオスピーカ156が、オーディオ増幅器152に結合される。図3は、マイクロフォン増幅器158もステレオオーディオコーデック150に結合される場合があることを示す。加えて、マイクロフォン116が、マイクロフォン増幅器158に結合されてよい。特定の態様では、周波数変調(「FM」)ラジオチューナ162が、ステレオオーディオコーデック150に結合される場合がある。また、FMアンテナ164がFMラジオチューナ162に結合される。さらに、ステレオポート166が、ステレオオーディオコーデック150に結合される場合がある。
【００３４】
図3は、高周波(RF)トランシーバ168がマルチコアCPU210に結合されることも示す。RFスイッチ170が、RFトランシーバ168およびRFアンテナ172に結合されてもよい。図3に示されるように、キーパッド174がマルチコアCPU210に結合される。また、マイクロフォンを備えたモノヘッドセット176が、マルチコアCPU210に結合される場合がある。さらに、バイブレータデバイス178がマルチコアCPU210に結合される場合がある。図3は、電源180がUSBコントローラ140を介してオンチップシステム120に結合される場合があることをさらに示す。特定の態様では、電源180は、電力を必要とするPCD100の種々の構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源180は、AC電源に接続された交流(AC)-DC変換器から得られる、充電式DCバッテリまたはDC電源である。
【００３５】
図3は、PCD100が、データネットワーク、たとえばローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用される場合があるネットワークカード188も含む場合があることをさらに示す。ネットワークカード188は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、または当技術分野でよく知られている任意の他のネットワークカードとすることができる。さらに、ネットワークカード188は集積回路に組み込まれる場合がある。すなわち、ネットワークカード188は、チップ内のフルソリューションとすることができ、個別のネットワークカード188でなくてもよい。
【００３６】
図3に示されるように、ディスプレイ/タッチスクリーン132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカ154、第2のステレオスピーカ156、マイクロフォン116、FMアンテナ164、ステレオポート166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178および電源180は、オンチップシステム120の外部にある。
【００３７】
1つまたは複数のモデムを含むことができるRFトランシーバ168は、グローバルシステムフォーモバイルコミュニケーションズ(「GSM(登録商標)」)、符号分割多元接続(「CDMA」)、広帯域符号分割多元接続(「W-CDMA」)、時分割同期符号分割多元接続(「TDSCDMA」:time division synchronous code division multiple access)、ロングタームエボリューション(「LTE」)、ならびに限定しないがFDB/LTEおよびPDD/LTEワイヤレスプロトコルなど、LTEの変種の1つまたは複数をサポートする。
【００３８】
図示される実施形態では、マルチコアCPU210の単一の事例が示される。しかしながら、PCD100に関連付けられる種々の周辺デバイスおよび機能をサポートするために、任意の数の同様に構成されるマルチコアCPUを含むことができることは理解されたい。代替的に、各々が単一の算術論理演算ユニットまたはコアをもつ単一のプロセッサまたは複数のプロセッサは、望まれ得るようにPCD100に関連付けられた様々な周辺デバイスおよび機能をサポートするために、PCD100または他のコンピューティングデバイスにおいて展開され得る。
【００３９】
図4は、改良型ROMパッチプロセスを有効にするSoCベースのシステムの例示的実施形態を示す概略図である。SoC120は、図3のPCD100中に提示される、ROM190、PROM212、マルチコアプロセッサ210、コントローラ214、eFuse要素192、およびシステムメモリ230を含む。図4に示される配置において、プロセッサ210、コントローラ214、システムメモリ230、ROM190およびPROM212の各々はバス402に結合され、バス402は、マルチコアプロセッサ210ならびに記憶要素(すなわち、ROM190、PROM212およびシステムメモリ230)の各々との間でのデータおよび命令の転送を可能にする。eFuse要素192は、Mが整数であるM個の別々のヒューズを含み、接続404によりコントローラに結合される。M個の別々のヒューズは、限られた量で与えられ、しばしば、PCD100上の他の機構と共有されなければならない。eFuse要素192中のM個の別々のヒューズは、接続404およびバス402によりコントローラ214およびマルチコアプロセッサ210に結合されるワンタイムプログラム可能ヒューズのセットを与える。マルチコアプロセッサ210が修正ブートコード500中の命令を実行しているとき、マルチコアプロセッサ210は、ワンタイムプログラム可能ヒューズのセットにアクセスすることによってアドレスを取り出して、パッチインスタンス610、パッチインスタンス611または別のパッチインスタンス650のうちの1つなどのパッチインスタンスが記憶されているアドレス可能ロケーションを認証し、定義する。
【００４０】
本実施形態では、修正ブートコード500はROM190中で与えられる。手短に説明したように、修正ブートコード500は、マルチコアプロセッサ210によって実行されると、PCD100を初期化する、命令のシーケンスと、1つまたは複数のパッチインジケータとを含む。命令は、オペレーティングシステムの重要要素を、マルチコアプロセッサ210の様々なレジスタ(図示せず)中に転送することを含み得る。代替として、SoC120の製造中、元のブートコードがROM190上に記憶される。元のブートコードは、1つまたは複数のパッチインジケータを含む場合も含まない場合もある。
【００４１】
パッチインスタンス、すなわちパッチングコマンドを合同で形成する命令およびデータは、好ましくはPROM212中に記憶され、この場合、パッチインスタンスは、ROM190上に記憶された元のブートコードまたは修正ブートコード500に対するバグフィックス、新規特徴、新規データ、ハードウェア入出力フィックスまたは他の改変を含み得る。たとえば、命令およびデータを投入されると、パッチインスタンス610、611、...、650はパッチデータを含む。パッチインスタンス610、611〜パッチインスタンス650は、アドレスと命令のペアを記憶し、要求されたパッチングコマンドが添付アドレスをもつ新規コマンドとして書かれていることを意味するなど、いくつかの形式およびやり方で記憶することができる。PROM212および/またはシステムメモリ230中に記憶されるとき、パッチインスタンス610、611、...、650は、コントローラ214およびプロセッサ210が、必要に応じてその中の置換え内容に繰り返しアクセスすることができるように、アドレス可能ロケーションに置かれ、または配置される。このようにして、パッチインスタンス610、611〜650は、パッチプロセス論理800に従って、元のブートコードまたは修正ブートコード500中の元のコマンドまたは命令と置き換わることができる。各パッチインスタンス610、611〜650は、任意の数の命令またはコマンドを含んでよく、PROM212のアドレス可能記憶容量およびシステムメモリ230のアドレス可能記憶容量によってのみ制限される。記載するように、プロセッサ210は、システムメモリ230からの命令のシーケンスを実行するための物理的な要素または機構である。
【００４２】
代替実施形態では、PROM212は、SoC120の外部に配置される。これにより、PROM212は、SoC120を生産する工場とは異なる場所でプログラムされることが可能になり、したがって、SoC設計者は、SoC120を製造し、次いで、その後、SoC120が製造された後でPROM212をプログラムすることができるようになる。たとえば、PROM212は、新規特徴が要求された後、またはROM190中に記憶された元のブートコード中でバグが見つかった後でプログラムされ得る。PROM212は、ワンタイムプログラム可能(OTP)デバイスもしくは集積回路要素、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、電気的可変読取り専用メモリ(EAROM)、または一度もしくは数回プログラムすることができる他のどの知られているプログラム可能メモリであってもよい。いくつかの実施形態では、GPIOバス211は、PROM212中に記憶された他のパッチインスタンスの中でも、パッチインスタンス610、パッチインスタンス611またはパッチインスタンス650のうちの1つまたは複数の中のデータまたはデータおよびアドレスを与えるためのソースを改変するための機構として使うことができる。記載するように、PROM212は、少なくとも1つのパッチインスタンスを記憶した、アドレス可能なメモリロケーションのセットを与えるための物理的な機構または要素である。
【００４３】
システムメモリ230は、静的ランダムアクセスメモリ(SRAM)など、処理中にデータをロードし、アンロードするために使われるどの揮発性メモリであってもよい。SoC120に電力供給されると、コントローラ214は、元の(すなわち、未修正)ブートコードまたは修正ブートコード500をROM190からシステムメモリ230中にバス402を介して転送し、ブートコードは、プロセッサ210による実行を待ち受ける。ブートコードがシステムメモリ230中にコピーされた後、パッチプロセス論理800が、ROM190から、システムメモリ230の対応するアドレスに転送される。命令がプロセッサ210によって処理または実行されるとき、パッチインジケータは、プロセッサに、パッチプロセス論理800に分岐するよう指示する。どのパッチも識別されない場合、パッチインジケータによって識別されたパッチインスタンスは空になり、どのパッチも利用可能でない。そうである場合、パッチ処理論理800は、プロセッサ210に、修正ブートコード500中の次の後続命令に戻るよう指示する。代替として、パッチが識別され、パッチインジケータによって識別されたパッチインスタンスに1つまたは複数の命令が投入されると、命令は、パッチインスタンスが使い尽くされるまで実行される。その後、パッチ処理論理800は、プロセッサ210に、修正ブートコード500中の次の後続命令を実行するよう指示する。パッチインスタンスは、別々または一緒にシステムメモリ230に転送され得ることに留意されたい。代替として、1つまたは複数のパッチインスタンス610、611、...、650が、PROM212からコントローラ214によってアクセスされ、読み取られ、ROM190からロードされた修正ブートコード500からの対応するコマンドと置き換わる、システムメモリ230中のそれぞれのアドレス中にコピーされ得る。したがって、プロセッサ210は、システムメモリ230からの修正ブートコード500を実行するとき、パッチを当てられた、または訂正されたコードを実行する。他の実施形態では、ROM190、PROM212、システムメモリ230、コントローラ214およびSoC120の他の部分は同じバスを共有しなくてよく、相互接続バスの異なる組合せを有し得る。
【００４４】
記載したように、システムメモリ230は、命令のシーケンスおよびパッチ処理論理を一時的に記憶するための物理的な要素または機構である。SoC120から電力が除かれると、データおよび命令は失われるので、システムメモリ230は、データおよび命令を一時的に記憶する。
【００４５】
記載したように、コントローラ214は、ROM190からシステムメモリ230に命令のシーケンスおよびパッチ処理論理をロードするための物理的な要素または機構である。
【００４６】
いくつかの実施形態では、ROM190は、随意のセキュアブートプロセスを有効にする認証論理405を含む。このセキュアブートプロセスは、1つまたは複数の機構を使って、プロセッサ命令をSoC120中に通信またはトランスポートするために利用可能なソースのうちの1つからロードされるプロセッサ命令のソースを認証する。記載したように、ROM190は、修正ブートコード500、パッチ処理論理またはパッチプロセス論理800およびいくつかの実施形態では認証論理405など、命令のシーケンスを記憶するための物理的な要素または機構である。
【００４７】
図5は、ブートROMコードシーケンス20およびステートメントまたは命令の間の戦略的ロケーションに2つのパッチインスタンスが挿入された修正ブートコード500の例示的な実施形態を示す概略図である。コード20は、命令またはステートメント28の連続またはセットとして擬似コードで示される。設計エンジニアは、そのようなコードシーケンス中で、パッチまたは訂正が必要とされる見込みがあるロケーションを、経験から知っている。例示的ロケーションは、最初の、またはパッチを当てられていないブートコード20において太字テキストで示される。したがって、いくつかの所望のパッチインジケータが、未修正ブートROMコード20中の識別されたステートメントまたは命令の直前に挿入されて、修正ブートROMコード500が生成される。たとえば、0の識別子または索引をもつパッチインジケータ501が、ステートメントBとステートメントCとの間に挿入される。さらなる例として、1の識別子または索引をもつパッチインジケータ502が、ステートメントDとステートメントEとの間に挿入される。修正ブートコード500は、少なくとも1つのパッチインジケータ501、502をもつ、命令またはステートメント510のセットまたはシーケンスを含む。太字テキストで示される、ブートROMコードシーケンス中の戦略的または所望のロケーションは、ファームウェアで命令のシーケンスが具現化された後で、求められる変更または訂正が起こりそうな、命令のシーケンス中の場所を定義する。つまり、SoC120設計が完成された後で発見されるハードウェア変更、シリコン特性、または他の問題は、ブートROMコードシーケンス中の変更を要する場合がある。
【００４８】
図6は、パッチが定義される前の、図5の例示的ブートROMコードまたはシーケンス500の実施形態を示す概略図である。つまり、パッチまたは修正が定義されるか、または求められる前に、ステートメントBとステートメントCとの間に挿入されたパッチインジケータ501に関連付けられ得るパッチインスタンス610、およびステートメントDとステートメントEとの間に挿入されたパッチインジケータ502に関連付けられ得るパッチインスタンス611は、空である。パッチインスタンスは、PROM212中のそれぞれのアドレス可能なメモリロケーションに記憶される。
【００４９】
図7は、図6の例示的ブートROMコードシーケンス500中の、2つの定義されたパッチの例示的実施形態を示す概略図である。第1のパッチ710は2つの命令を含む。第1の命令712は、タイプ識別子またはタイプコードと、アドレスと、データまたは値とを含む。第2の命令714は、タイプ識別子またはタイプコードと、アドレスと、データまたは値とを含む。すべてゼロの値を含む戻りインジケータ716が、第1のパッチ710に続く。第2のパッチ711は単一の命令713を含む。図示の実施形態では、各命令が、命令タイプ、アドレスおよびデータまたは値によって定義される。命令の後で、空のワードまたはすべてゼロの値をもつワードは、ブートROMコードシーケンス500中の次の後続命令またはステートメントにプロセッサが戻るべきであることを、ROMパッチプロセスに対して示す。
【００５０】
図8は、図4で提示したパッチプロセス論理800によって有効にされる改良型ROMパッチプロセスの実施形態を示す流れ図である。記載したように、改良型ROMパッチプロセスは、マルチコアプロセッサ210などのプロセッサにとってバスを介してアクセス可能な、アドレス可能なメモリロケーションに動的に向かう。改良型ROMパッチプロセスは、必要に応じてポストシリコン特性に必要とされる共通の変更カテゴリを扱う。共通命令は、書込み命令、マスク書込み命令、「ビットがクリアになるまで待機」命令、および「ビットがセットされるまで待機」命令を含む。実行されると、パッチプロセス論理800は、プロセッサに、命令のシーケンス以外のソースからアドレスを取り出し、そのアドレスにおいてパッチデータが利用可能かどうか判断するよう指示する。そのアドレスにおいてパッチデータが利用可能でないとき、プロセッサ210は、命令のシーケンス中の次の後続命令に戻るよう指示される。それ以外の場合、プロセッサ210は、パッチデータ中の命令を実行し、パッチが消耗されると、命令のシーケンス中の次の後続命令に戻るよう指示される。本命令アーキテクチャは、追加命令をサポートするように、所望され得る通りに拡張および/または修正され得ることを理解されたい。
【００５１】
パッチプロセス論理800は、アドレスが取得または識別されるブロック802で始まる方法801を実施する。記載のように、ワンタイムプログラム可能ヒューズのセットは、上書きされるか、またはパッチを当てられるべきである、ブートROMコードシーケンス中のアドレスを識別するのに使うことができる。決定ブロック804において、識別されたアドレスにおいてパッチが利用可能であるかどうか判断される。パッチインスタンスに命令タイプ、パッチアドレス、およびいくつかの命令に対してはデータフィールドが投入されると、パッチは利用可能と見なされる。識別されたアドレスが空であるか、またはすべてゼロの値を含むとき、パッチは利用不可能と見なされる。そのようなアドレスのロケーションは、空の内容を含む。そうである場合、「No」と標示されるフロー制御矢印によって示されるように、決定ブロック804を出て、改良型ROMパッチプロセスは、ブロック806に示すように、次の後続命令に戻るように配置される。そうではなく、パッチが利用可能であるとき(すなわち、アドレスによって識別されたロケーションに、ゼロでないビットがあるとき)、ブロック808に示されるように、パッチタイプが判断または識別される。流れ図にさらに示されるように、ブロック808において識別されたパッチタイプが、単純書込みが所望されることを示すとき、方法801は、対応する論理に分岐し、ブロック810に示されるように、その論理を実行してから、戻ってブロック804〜808に関連付けられた機能を繰り返す。ブロック808において識別されたパッチタイプが、マスク書込み命令が所望されることを示すとき、方法801は、対応する論理に分岐し、ブロック812に示されるように、マスク書込み命令を実行してから、戻ってブロック804〜808に関連付けられた機能を繰り返す。ブロック808において識別されたパッチタイプが、「ビットがクリアになるまで待機」命令が所望されることを示すとき、方法801は、「ビットがクリアになるまで待機」論理に分岐し、ブロック814に示されるように、「ビットがクリアになるまで待機」命令を実行してから、戻ってブロック804〜808に関連付けられた機能を繰り返す。同様に、ブロック808において識別されたパッチタイプが、「ビットがセットされるまで待機」命令が所望されること
を示すとき、方法801は、対応する論理に分岐し、ブロック816に示されるように、「ビットがセットされるまで待機」命令を実行してから、戻ってブロック804〜808に関連付けられた機能を繰り返す。4つの共通命令が示され、記載されているが、当業者は、本明細書に記載する命令アーキテクチャを、所望され得る追加命令を可能にするように修正するか、またはさもなければ適応してよい。
【００５２】
図9Aおよび図9Bは、それぞれ、書込み命令900およびマスク書込み命令950の例示的実施形態を示す。図9Aに示すように、書込み命令900は、擬似コードステートメントにおいて「OUT(address, value);」と表すことができ、第1のワード910、第2のワード920および第3のワード930によって定義される。3つのワードの各々がNビットを含み、Nは整数である。図示の実施形態では、ワードは長さが32ビットである。第1のワード910の最初の29ビットは、予約済みであるか、または予約済み領域912を定義する。第1のワード910のそれ以降の3ビットは、タイプ領域914中で命令タイプを定義するコードを含む。例示的実施形態において、書込み命令は「000」で識別される。図9Aにさらに示されるように、アドレスは第2のワード920中で定義され、データまたは値情報は第3のワード930中で定義される。
【００５３】
例示的実施形態における書込み命令は、様々な長さまたは位置の他のコードを使って識別され、または配置されてよい。さらに、第1、第2および第3のワードのシーケンスは、例示の実施形態から、所望され得るように修正されてよい。さらに、例示的書込み命令を表すのに使われるワードの長さは、32ビット以外でアドレスおよびデータを展開する1つのシステムまたは複数のシステムに当てはまるように変えられてよい。
【００５４】
図9Bに示すように、マスク書込み命令950は、予約済み領域962、マスク領域964およびタイプ領域966を含む第1のワード960で表される。マスク領域964は、マスク情報を含む。タイプ領域966は、命令タイプを識別するコードを含む。マスク書込み命令950の3つのワードはNビットを含み、Nは整数である。マスク書込み命令は、擬似コードで、「New_value = IN(address); New_value &= mask; New_value |= value; OUT(address, New_value);」によって表すことができる。第1のワード962の最初の24ビットは、予約済み領域962中にある。例示的実施形態において、マスク書込み命令950は、第1のワード960のそれ以降または最後の8ビットによって識別され、ビット25〜29はマスクを定義し、ビット30〜32は、コード「001」をもつ命令タイプを定義する。図9Bにさらに示されるように、アドレスは第2のワード970中で定義され、データまたは値情報は第3のワード980中で定義される。
【００５５】
例示的実施形態におけるマスク書込み命令は、様々な長さまたは位置の他のコードを使って識別され、または配置されてよい。たとえば、マスクビットのセットまたはマスク情報は、5よりも多いか、または少ないビットを使ってよく、命令タイプを符号化するのには使われないビットの範囲にわたってどこにでも置かれてよい。さらに、第1のワード960、第2のワード970および第3のワード980のシーケンスは、例示の実施形態から、所望され得るように修正されてよい。さらに、例示的なマスク書込み命令950を表すのに使われるワードの長さは、32ビット以外でアドレスおよびデータを展開する1つのシステムまたは複数のシステムに当てはまるように変えられてよい。
【００５６】
図10Aおよび図10Bは、それぞれ、「ビットがクリアになるまで待機」命令1000および「ビットがセットされるまで待機」命令1050の例示的実施形態を示す。図10Aに示すように、「ビットがクリアになるまで待機」命令1000は、予約済み領域1012、マスク領域1014およびタイプ領域1016を含む第1のワード1010によって表される。マスク領域1014は、マスク情報を含む。タイプ領域1016は、命令タイプを識別するコードを含む。「ビットがクリアになるまで待機」命令1000のワードはNビットを含み、ここでNは整数である。「ビットがクリアになるまで待機」命令1000は、擬似コードで、「While(IN(address, mask) != 0)」によって表すことができる。第1のワード1010の最初の24ビットは、予約済みである。例示的実施形態において、マスク領域1014はビット25〜29中で定義され、タイプ領域1016は、第1のワード1010のビット30〜32中に置かれる。図示の実施形態では、「ビットがクリアになるまで待機」命令1000はコード「010」によって定義される。図10Aにさらに示されるように、アドレスは第2のワード1020中で定義される。
【００５７】
例示的実施形態における「ビットがクリアになるまで待機」命令1000は、様々な長さまたは位置の他のコードを使って識別され、または配置されてよい。たとえば、マスクビットのセットまたはマスク情報は、5よりも多いか、または少ないビットを使ってよく、命令タイプを符号化するのには使われないビットの範囲にわたってどこにでも置かれてよい。さらに、第1のワード1010および第2のワード1020のシーケンスは、例示の実施形態から、所望され得るように修正されてよい。さらに、例示的な「ビットがクリアになるまで待機」命令1000を表すのに使われるワードの長さは、32ビット以外でアドレスおよびデータを展開する1つのシステムまたは複数のシステムに当てはまるように変えられてよい。
【００５８】
「ビットがセットされるまで待機」命令1050が、図10Bに示される。「ビットがセットされるまで待機」命令1050は、予約済み領域1062、マスク領域1064およびタイプ領域1066を含む第1のワード1060と、アドレス情報を含む第2のワード1070とを含む。第1のワード1060および第2のワード1070の各々がNビットを含み、ここでNは整数である。「ビットがセットされるまで待機」命令1050は、擬似コードで、式「While(IN(address, mask) != 1)」によって表される。第1のワード1060の最初の24ビットは、予約済み領域1062中にある。マスク領域1064はビット25〜29中に置かれ、タイプ領域1066はビット30〜32中にある。図示の実施形態では、「ビットがセットされるまで待機」命令1050はコード「011」によって定義される。
【００５９】
例示的実施形態における「ビットがセットされるまで待機」命令1050は、様々な長さまたは位置の他のコードを使って識別され、または配置されてよい。たとえば、マスクビットのセットまたはマスク情報は、5よりも多いか、または少ないビットを使ってよく、命令タイプを符号化するのには使われないビットの範囲にわたってどこにでも置かれてよい。さらに、第1のワード1060および第2のワード1070のシーケンスは、例示の実施形態から、所望され得るように修正されてよい。さらに、例示的な「ビットがセットされるまで待機」命令1050を表すのに使われるワードの長さは、32ビット以外でアドレスおよびデータを展開する1つのシステムまたは複数のシステムに当てはまるように変えられてよい。
【００６０】
図9A、図9B、図10A、および図10Bに示す命令は、単に例として提示されることをさらに理解されたい。したがって、本システムおよび方法はこれらの命令に限定されない。したがって、これらの例示的命令または任意の数の追加命令は、どのように符号化され、配置されようとも、所望され得るように生成し、展開することができる。
【００６１】
図11は、パッチを当てられたブートコードシーケンス1100の例示的実施形態を示す概略図である。本システムおよび方法を用いて有効にされるワンタイムプログラム可能ヒューズにおける節約の重要性を示すために、4つの例示的パッチが、同じ命令について、従来のパッチと並べて示される。たとえば、パッチを当てられたブートコード1100中でパッチインジケータ(0)によって識別されるパッチ1110は、コード000によって示される書込み命令を含む。上で定義したように、書込み命令は、3つのNビットワード中で定義される。すべてゼロを含む戻りインジケータは、パッチの一部ではなく、パッチが定義され、アドレス可能メモリ中に記憶されるとき、変わることはない。したがって、改良型命令アーキテクチャおよびプロセスは、合計9つのヒューズを消費する従来のパッチ実装形態を上回る、6つのヒューズロケーションの節約を可能にする。
【００６２】
さらなる例として、パッチを当てられたブートコード1100中でパッチインジケータ(1)によって識別されるパッチ1120は、マスクビットXXXXXおよびコード001によって示されるマスク書込み命令を含む。上で定義したように、マスク書込み命令は、3つのNビットワード中で定義される。したがって、改良型命令アーキテクチャおよびプロセスは、合計11個のヒューズを消費する従来のパッチ実装形態を上回る、8つのヒューズロケーションの節約を可能にする。
【００６３】
パッチを当てられたブートコード1100中でパッチインジケータ(2)によって識別されるパッチ1130は、マスクビットXXXXXおよびコード010によって示される「ビットがクリアになるまで待機」命令を含む。上で定義したように、「ビットがクリアになるまで待機」命令は、2つのワード中で定義される。図示されるように、改良型命令アーキテクチャおよびプロセスは、合計10個のヒューズロケーションを消費する従来のパッチ実装と比較すると、8つのヒューズの節約を可能にする。
【００６４】
パッチを当てられたブートコード1100中でパッチインジケータ(3)によって識別されるパッチ1140は、第1のワードのビット30〜32中で、マスクビットXXXXXおよびコード011によって示される「ビットがセットされるまで待機」命令を含む。上で定義したように、「ビットがセットされるまで待機」命令は、パッチ1140の第2のワード中でアドレスを与える。したがって、改良型命令アーキテクチャおよびプロセスは、合計10個のヒューズを消費する従来のパッチ実装形態を上回る、8つのヒューズロケーションの節約を可能にする。
【００６５】
元のブートコード20'、パッチを当てられたブートコード1100、従来のパッチ(破線で示される)、および改良型パッチまたはパッチインスタンス(0)〜(3)の各々は、単に例として提示されている。本システムおよび方法は、これらの命令シーケンスにもパッチ命令アーキテクチャにも限定されない。特許請求するシステムおよび方法と一致するいくつかの変形形態のうちのいずれにおいても、上で記載したパッチプロセス論理を含む改良型ROMをどのようにして作り、使用するかが、当業者には理解されよう。
【００６６】
図12は、ROM中の命令のシーケンスを修正する(すなわち、パッチを当てる)ための方法1200の例示的実施形態の流れ図である。方法はブロック1202で始まり、ここで、ROM中の命令のシーケンス中の所望のロケーションにおいてパッチインジケータが挿入される。ブロック1202は、ROMに記憶された命令のシーケンスにおけるパッチインジケータの挿入が随意の予備ステップにおいて行われ得ることを示すように、破線で示される。ブロック1204において、アドレス可能なメモリロケーションのセットが与えられる。上述したように、アドレス可能なメモリロケーションのセットは好ましくは、プログラム可能ROMまたはPROM212によって有効にされる。読取り専用メモリ中の命令のシーケンス中の所望のロケーションに少なくとも1つのパッチインジケータを挿入する随意の予備ステップとともに、少なくとも1つのパッチインスタンスが、アドレス可能なメモリロケーションのセットの中に記憶される。好ましくは、索引または他の識別子が、パッチインジケータを、PROM212中のアドレス可能なメモリロケーションにあるそれぞれのパッチインスタンスに関連付ける。ROM190中の命令のシーケンスに対して変更が求められる前は、PROM212に記憶されたパッチインスタンスは空の内容を含み得る。ブロック1206において、ワンタイムプログラム可能ヒューズのセットが与えられる。ワンタイムプログラム可能ヒューズは、高電圧信号、紫外線放射への露出、または他の機構の制御された適用によって「開く」ことができる。したがって、ワンタイムプログラム可能ヒューズは、アドレス可能なメモリロケーションのセットの中の1つまたは複数のアドレスを反映するように、制御可能に修正することができる。ブロック1208において、命令のシーケンスがROM中で与えられる。ブロック1210において、パッチプロセスがROM中で有効にされる。パッチプロセスは、アドレス可能なメモリロケーションのセットに動的に向かうか、またはジャンプし、戻りインジケータに遭遇すると、ROM中の命令のシーケンスに戻る。ブロック1212に示すように、ROM中の所望のロケーションにある命令のシーケンスにパッチを当てるか、または修正することが所望されると、ワンタイムプログラム可能ヒューズによって通信される情報が、プロセ
ッサまたはコントローラに、アドレス可能なメモリロケーションのセットの中に記憶された命令をロードし、実行するよう指示し、読取り専用メモリにある命令のシーケンス中の所望のロケーションに少なくとも1つのパッチインジケータを挿入し、ここで、少なくとも1つのパッチインジケータによって定義される、アドレス可能なメモリロケーションのセットの中の少なくとも1つのパッチインスタンスは、読取り専用メモリ中の命令のシーケンスに対する訂正が識別される前は、空の内容を含む。
【００６７】
ROM190およびそのパッチプロセス論理800は好ましくは、回路中で有効にされるが、その中で表される論理は、非一時的コンピュータ可読媒体上に記憶され、トランスポートに、または所望され得るようにコピーを作るために利用可能であり得る。図13は、コンピュータ可読媒体1300に記憶されたパッチプロセス論理800を含むコンピュータ可読媒体1300の概略表現を含む。図13に示されるように、パッチプロセス論理800は、インジケータ論理1310、インスタンス論理1320、タイプ論理1330および戻り論理1340を含む。インジケータ論理1310は、プロセッサに、命令またはステートメントのシーケンス中にパッチインジケータが存在するときを識別するよう指示する。インスタンス論理1320は、プロセッサに、アドレス可能なメモリロケーションが、ゼロでないビット(すなわち、空でない内容)を含むときを識別するよう指示する。タイプ論理1330は、プロセッサに、パッチインスタンスに埋め込まれたタイプ領域中の情報を復号することによって、命令を識別するよう指示する。戻り論理1340は、プロセッサに、一連のゼロビットに遭遇すると、命令またはステートメントのシーケンス中の次の後続命令に戻るよう指示する。
【００６８】
上述した論理に加え、他のデータおよび/またはプロセッサ命令が、PROM212への記憶のための、SoC120上へのダウンロード動作モードによるトランスポートのために、コンピュータ可読媒体上に記憶されてよい。コンピュータ可読媒体上に記憶されると、これらの他の命令および対応するデータはまた、トランスポートに、または所望され得るようにコピーを作るために利用可能である。
【００６９】
記載したように、1つまたは複数の非一時的コンピュータ可読媒体は、実行されると、プロセッサ210に、コンピューティングデバイス以外のソースからプロセッサ実行可能論理および/またはデータを受信するダウンロードまたはプログラミング動作モードのうちの1つに応答してコンピューティングデバイスを構成するよう指示するプロセッサ命令を記憶していてよい。
【００７０】
さらに記載したように、GPIOバス211またはプログラム可能eFuse要素192から受信された1つまたは複数の入力信号に応答するプロセッサ命令は、ダウンロードモード、随意の認証モードおよびデフォルトのブートモードを識別するのに使うことができる。
【００７１】
本発明が説明通りに機能するように、本明細書に記載されたプロセスまたはプロセスフロー内のある特定のステップが他のステップよりも前に行われるのは当然である。しかし、本システムおよび方法は、そのような順序または連続が上記したシステムおよび方法の機能性を変更しない場合、記述されたステップの順序に限定されるものではない。すなわち、一部のステップは、他のステップの前、後、または並行して(実質的に同時に)実施され得ることが認識される。一部の場合には、特定のステップは、上記したシステムおよび方法から逸脱することなく、省略されるかまたは実施されない場合がある。さらに、「それ以降」、「その後」、「次に」、「後に」などの語は、ステップの順序を制限することは意図していない。これらの言葉は、例示的な方法の記述を通じて読者を案内するために単に使用されるものである。
【００７２】
さらに、ブートプログラムおよび/または回路アーキテクチャを書く当業者は、本明細書における流れ図および関連する例に基づいて、難なく、開示される発明を実施するコンピュータコードを書くことができるか、または実施するのに適したハードウェアおよび/もしくは回路を特定することができる。したがって、プログラムコード命令または詳細なハードウェアデバイスの特定のセットの開示は、本システムおよび方法をどのように製作および使用するのかを十分に理解するために必要であるとは見なされない。特許請求されるプロセッサ実施プロセスの本発明の機能性は、種々のプロセスフローを例示する場合がある図面とともに、上述の説明において、より詳細に説明されている。
【００７３】
先に示されたような1つまたは複数の例示的な態様では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施することができる。ソフトウェアにおいて実施される場合には、その機能は、非一時的プロセッサ可読媒体のようなコンピュータ可読媒体上に1つまたは複数の命令またはコードとして記憶することができる。コンピュータ可読媒体は、データ記憶媒体を含む。
【００７４】
記憶媒体は、コンピュータまたはプロセッサによってアクセスすることができる任意の利用可能な媒体とすることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、フラッシュ、CD-ROMもしくは他の光ディスク記憶、磁気ディスク記憶もしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを搬送または記憶するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含んでもよい。本明細書において使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体の範囲内に含まれるべきである。
【００７５】
選択された態様が詳細に図示および説明されたが、以下の特許請求の範囲によって規定されるような本システムおよび方法の概念から逸脱することなく、本明細書において様々な置換および改変がなされる場合があることは理解されよう。
【符号の説明】
【００７６】
10  ブートプロセッサ
12  ブートROM
14  セキュアなコントローラ
15  パッチ領域
16  ワンタイムプログラム可能ヒューズ
17  メモリ
18  マルチプレクサ論理
20  ブートコード、コード、ブートROMコードシーケンス
28  ステートメント
30  パッチ
100  PCD
116  マイクロフォン
120  SoC、オンチップシステム
128  ディスプレイコントローラ
130  タッチスクリーンコントローラ
132  ディスプレイ/タッチスクリーン
134  ビデオエンコーダ
136  ビデオ増幅器
138  ビデオポート
140  ユニバーサルシリアルバス(USB)コントローラ
142  USB対応データストア、USB記憶デバイス
143  ファイル
146  加入者識別モジュール(SIM)カードインターフェース
148  デジタルカメラ、カメラ
150  ステレオオーディオコーデック
152  オーディオ増幅器
154  第1のステレオスピーカ
156  第2のステレオスピーカ
158  マイクロフォン増幅器
162  周波数変調(「FM」)ラジオチューナ
164  FMアンテナ
166  ステレオポート
168  無線周波数(RF)トランシーバ
170  RFスイッチ
172  RFアンテナ
174  キーパッド
176  モノヘッドセット
178  バイブレータデバイス
180  電源
188  ネットワークカード
190  ROM、読取り専用メモリ
192  eFuse要素
210  マルチコアCPU、マルチコアプロセッサ
211  汎用入力出力(GPIO)バス
212  PROM
214  コントローラ
215  第0のコア
216  第1のコア
217  第Nのコア
230  システムメモリ
402  バス
405  認証論理
500  修正ブートコード、ブートROMコードまたはシーケンス、ブートROMコードシーケンス
501  パッチインジケータ
502  パッチインジケータ
510  命令、ステートメント
610  パッチインスタンス
611  パッチインスタンス
650  パッチインスタンス
710  第1のパッチ
711  第2のパッチ
712  第1の命令
713  命令
714  第2の命令
716  戻りインジケータ
800  パッチプロセス論理、パッチ処理論理
1300  コンピュータ可読媒体
1310  インジケータ論理
1320  インスタンス論理
1330  タイプ論理
1340  戻り論理
【図１】
2017510000.tif 000003
【図２】
2017510000.tif 000004
【図３】
2017510000.tif 000005
【図４】
2017510000.tif 000006
【図５】
2017510000.tif 000007
【図６】
2017510000.tif 000008
【図７】
2017510000.tif 000009
【図８】
2017510000.tif 000010
【図９Ａ】
2017510000.tif 000011
【図９Ｂ】
2017510000.tif 000012
【図１０Ａ】
2017510000.tif 000013
【図１０Ｂ】
2017510000.tif 000014
【図１１】
2017510000.tif 000015
【図１２】
2017510000.tif 000016
【図１３】
2017510000.tif 000017
【手続補正書】
【提出日】平成28年10月3日(2016.10.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
読取り専用メモリ中の命令シーケンスを修正するための方法であって、
プロセッサに結合されたアドレス可能なメモリロケーションのセットを与えるステップと、
前記プロセッサにさらに結合されたワンタイムプログラム可能ヒューズのセットを与えるステップと、
前記プロセッサに結合された読取り専用メモリ中の命令シーケンスを与えるステップであって、前記読取り専用メモリ中の前記命令シーケンスは、前記命令シーケンス中の第1の命令の前の所望のロケーションに少なくとも1つのパッチインジケータを含み、前記少なくとも1つのパッチインジケータはパッチインスタンスを識別する、ステップと、
前記アドレス可能なメモリロケーションセットの中の識別されたロケーションに動的に向かい、前記読取り専用メモリ中の前記命令シーケンス中の前記第1の命令に戻る、前記読取り専用メモリ中のパッチプロセスを有効にするステップであって、前記命令シーケンスを修正することが所望されるとき、前記アドレス可能なメモリロケーションセットの中の1つにおいて、命令タイプ、アドレス、および戻りインジケータを含む前記パッチインスタンスが投入され、前記ワンタイムプログラム可能ヒューズのセットの中の情報が、前記プロセッサに、前記アドレス可能なメモリロケーションに記憶された前記パッチインスタンスを実行するよう指示し、前記パッチインスタンスは前記命令タイプに基づいて実行する、ステップとを含む方法。
【請求項２】
前記少なくとも1つのパッチインジケータによって識別された前記パッチインスタンスは、前記読取り専用メモリ中の前記命令シーケンスに対する修正が識別される前は空の内容を含む、請求項1に記載の方法。
【請求項３】
前記所望のロケーションは、ファームウェアにおいて前記命令シーケンスが実施された後で修正が起こりそうな前記命令シーケンス中の場所を定義する、請求項2に記載の方法。
【請求項４】
前記読取り専用メモリ中の前記命令シーケンスに対する修正の後で、前記パッチインスタンスはデータフィールドをさらに含む、請求項1に記載の方法。
【請求項５】
前記命令タイプはコードによって定義される、請求項1に記載の方法。
【請求項６】
前記パッチインスタンスはNビットのワードで定義され、Nは整数である、請求項1に記載の方法。
【請求項７】
前記読取り専用メモリ中の前記パッチプロセスを有効にするステップは、前記パッチインジケータについてのみ置換え内容を与えるステップを含む、請求項1に記載の方法。
【請求項８】
前記読取り専用メモリ中の前記パッチプロセスを有効にするステップは、前記命令シーケンスがファームウェアで具現化された後で所望の変更を統合するパッチプロセス論理を実行するステップを含む、請求項7に記載の方法。
【請求項９】
前記パッチプロセス論理は、プロセッサに、前記命令シーケンス以外のソースからアドレスを取り出し、前記アドレスにある前記パッチインスタンスにデータが投入されているかどうか判断し、前記アドレスにおいてデータが投入されていないときは、前記命令シーケンス中の前記第1の命令に戻り、それ以外の場合は、前記パッチインスタンス中の少なくとも1つの命令を実行し、前記命令シーケンス中の前記第1の命令に戻るよう指示する、請求項8に記載の方法。
【請求項１０】
前記プロセッサは、前記パッチインスタンスが記憶されている前記アドレス可能なロケーションを認証し、定義するために、前記ワンタイムプログラム可能ヒューズのセットにアクセスすることによって、前記命令シーケンス以外の前記ソースから前記アドレスを取り出すよう指示される、請求項9に記載の方法。
【請求項１１】
前記パッチインスタンスは、マスク情報を含み、Nビットの2つ以下のワードで定義され、Nは整数である、請求項1に記載の方法。
【請求項１２】
読取り専用メモリ中に記憶された命令シーケンスにパッチを当てるためのシステムであって、
アドレス可能なメモリロケーションのセットを与えるプログラム可能読取り専用メモリであって、前記アドレス可能なメモリロケーションセットの中の第1のロケーションはパッチインスタンスを記憶し、前記パッチインスタンスは、少なくとも命令タイプ、アドレス、および戻りインジケータを含む、プログラム可能読取り専用メモリと、
読取り専用メモリであって、
少なくとも1つのパッチインジケータが前記命令シーケンスのうちの第1の命令の前に配置された命令シーケンスであって、前記少なくとも1つのパッチインジケータは前記パッチインスタンスを識別する、命令シーケンスと、
前記プログラム可能読取り専用メモリ中の前記アドレス可能なメモリロケーションセットの中の前記第1のロケーションに動的に向かい、前記命令タイプを判断し、前記命令タイプに基づいて前記パッチインスタンスを実行し、前記読取り専用メモリ中の前記命令シーケンス中の前記第1の命令に戻るように構成されたパッチ処理論理とを記憶した読取り専用メモリと、
バスにより前記プログラム可能読取り専用メモリおよび前記読取り専用メモリに結合されたランダムアクセスメモリであって、前記命令シーケンスおよび前記パッチ処理論理を記憶するように構成された、ランダムアクセスメモリと、
前記命令シーケンスおよび前記パッチ処理論理を、前記読取り専用メモリから前記ランダムアクセスメモリにロードするためのコントローラと、
前記バスにより前記ランダムアクセスメモリに結合され、前記命令シーケンスを実行するように構成されたプロセッサであって、前記命令シーケンス中で前記パッチインジケータに遭遇すると、前記パッチ処理論理を実行する、プロセッサとを備えるシステム。
【請求項１３】
前記パッチインジケータは、前記命令シーケンスがファームウェアにおいて具現化された後で、求められる変更が起こりそうな、前記命令シーケンス中の場所に配置される、請求項12に記載のシステム。
【請求項１４】
前記パッチインスタンスは、前記読取り専用メモリ中の前記命令シーケンスに対する修正が識別される前は空の内容を含む、請求項12に記載のシステム。
【請求項１５】
前記読取り専用メモリ中の前記命令シーケンスに対する修正が識別された後で、前記パッチインスタンスは、前記命令タイプがその中で符号化された少なくとも第1のワード、前記アドレスをもつ第2のワード、および前記戻りインジケータをもつ第3のワードを含む少なくとも1つのパッチ命令を含み、前記第1のワード、前記第2のワードおよび前記第3のワードはパッチを定義する、請求項12に記載のシステム。
【請求項１６】
前記第1のワードはマスク情報をさらに含む、請求項15に記載のシステム。
【請求項１７】
前記パッチはNビットのワードで定義され、Nは整数である、請求項15に記載のシステム。
【請求項１８】
前記パッチは、前記少なくとも1つのパッチインジケータについてのみの置換え内容を含む、請求項15に記載のシステム。
【請求項１９】
前記パッチ処理論理は、前記プロセッサに、アドレスにアクセスし、前記アドレスにおいて前記パッチインスタンスが利用可能かどうか判断し、前記アドレスにおいて前記パッチインスタンスが利用可能でないときは、前記命令シーケンス中の前記第1の命令に戻り、それ以外の場合は、前記パッチインスタンス中の命令を実行し、前記命令シーケンス中の前記第1の命令に戻るよう指示する、請求項12に記載のシステム。
【請求項２０】
前記パッチインスタンスが記憶されている前記アドレス可能なロケーションを前記プロセッサに与えるための、前記プロセッサに結合されたワンタイムプログラム可能ヒューズのセットをさらに備える、請求項19に記載のシステム。
【請求項２１】
実行されると、プロセッサに機能を実施するよう指示するプロセッサ命令を記憶した非一時的プロセッサ可読媒体であって、前記機能は、
命令シーケンス中の第1の命令の前にパッチインジケータが存在するときを識別することであって、前記パッチインジケータはパッチインスタンスを識別する、こと、
前記パッチインジケータによって識別される前記パッチインスタンスが、前記パッチインジケータに関連付けられたアドレスにおいて利用可能であるときを判断することであって、前記パッチインスタンスは、少なくとも命令タイプ、アドレス、および戻りインジケータを含み、前記パッチインスタンスが利用可能でないときは、前記命令シーケンス中の前記第1の命令をロードすること、
そうではなく、前記パッチインスタンスが利用可能であるときは、
前記パッチインジケータに関連付けられた前記アドレスに記憶された情報から前記命令タイプを判断すること、
前記判断された命令タイプに基づいて論理を実行すること、および
前記命令シーケンス中の前記第1の命令をロードすることを含む、非一時的プロセッサ可読媒体。
【請求項２２】
パッチインスタンスが利用可能であるときを前記判断することは、ワンタイムプログラム可能ヒューズのセットから通信される情報に応答する、請求項21に記載の非一時的プロセッサ可読媒体。
【請求項２３】
前記パッチインジケータは、前記命令シーケンスがファームウェアにおいて具現化された後で、求められる変更が起こりそうな、前記命令シーケンス中の場所に配置される、請求項21に記載の非一時的プロセッサ可読媒体。
【請求項２４】
プログラム可能読取り専用メモリ中に前記パッチインスタンスが記憶され、前記パッチインスタンスは、前記読取り専用メモリ中の前記命令シーケンスに対する修正が識別される前は空の内容を含む、請求項21に記載の非一時的プロセッサ可読媒体。
【請求項２５】
読取り専用メモリ中の前記命令シーケンスに対する修正が識別された後、前記パッチインスタンスは、前記命令タイプがその中で符号化された少なくとも第1のワード、前記アドレスをもつ第2のワード、および前記戻りインジケータをもつ第3のワードを含み、前記第1のワード、前記第2のワードおよび前記第3のワードはパッチを定義する、請求項21に記載の非一時的プロセッサ可読媒体。
【請求項２６】
前記第1のワードはマスク情報をさらに含む、請求項25に記載の非一時的プロセッサ可読媒体。
【請求項２７】
前記パッチはNビットのワードで定義され、Nは整数である、請求項25に記載の非一時的プロセッサ可読媒体。
【請求項２８】
前記パッチは、前記少なくとも1つのパッチインジケータについてのみの置換え内容を含む、請求項25に記載の非一時的プロセッサ可読媒体。
【請求項２９】
命令シーケンスにパッチを当てるためのシステムであって、
アドレス可能なメモリロケーションのセットを与えるための手段であって、前記アドレス可能なメモリロケーションセットの中の第1のロケーションは、少なくとも1つのパッチインスタンスを記憶し、前記少なくとも1つのパッチインスタンスは、命令タイプ、アドレス、および戻りインジケータを含む、手段と、
少なくとも1つのパッチインジケータが前記命令シーケンスのうちの第1の命令シーケンスの前に配置された命令シーケンスを記憶するための手段であって、前記少なくとも1つのパッチインジケータは前記パッチインスタンスを識別する、手段と、
プロセッサによって実行されると、パッチ処理論理が、前記プロセッサに、前記アドレス可能なメモリロケーションセットの中の前記第1のロケーションに動的に向かい、前記命令タイプを判断し、前記命令タイプに基づいて前記パッチインスタンスを実行し、前記命令シーケンスに戻るよう指示するように構成されたパッチ処理論理を記憶するための手段と、
前記命令シーケンスおよびパッチ処理論理を一時的に記憶するための手段と、
記憶するための前記手段から、一時的に記憶するための前記手段に、前記命令シーケンスおよび前記パッチ処理論理をロードするための手段と、
一時的に記憶するための前記手段からの前記命令シーケンスを実行するための手段であって、前記命令シーケンス中で前記パッチインジケータに遭遇すると、実行するための前記手段が前記パッチ処理論理を実行する、手段とを備えるシステム。
【請求項３０】
前記命令シーケンスを実行するための前記手段は、
前記命令シーケンス中の第2の命令の前に第2のパッチインジケータが存在するときを識別することであって、前記第2のパッチインジケータは第2のパッチインスタンスを識別する、ことと、
第2のアドレスにおいて前記第2のパッチインスタンスが利用可能であるときを判断することであって、前記第2のパッチインスタンスが利用可能でないときは、前記命令シーケンス中の前記第2の命令をロードする、ことと、
そうではなく、前記第2のアドレスにおいて前記第2のパッチインスタンスが利用可能であるときは、前記第2のパッチインジケータによって識別される前記第2のアドレスに記憶された情報から第2の命令タイプを判断することと、
前記判断された第2の命令タイプに基づいて論理を実行することと、
前記命令シーケンス中の前記第2の命令をロードすることとを行う、請求項29に記載のシステム。
【国際調査報告】
2017510000.tif 000018
2017510000.tif 000019