(57)【要約】  圧縮コードの高速実行に関する方法および装置を開示する。一実施形態では、２レベルエンベデッドコード伸張スキームが利用されて、バブルをなくし、速度を上げ、および／または、消費電力を低減させる。他の実施形態も記載され、請求されている。【選択図】図１
2013528877.tif 000002
【特許請求の範囲】
【請求項１】
エンベデッドコード命令アドレスに対応するポインタを格納する第１格納ユニットと、
前記ポインタに対応する固有エンベデッドコード命令を格納する第２格納ユニットと、
格納されている前記固有エンベデッドコード命令を実行するプロセッサと
を備え、
前記第１格納ユニットは、前記第１格納ユニットで前記エンベデッドコード命令アドレスが受け取られると、前記第２格納ユニットに前記ポインタを送信し、
前記第２格納ユニットは、前記第２格納ユニットで前記ポインタが受け取られると、前前記固有エンベデッドコード命令を出力する装置。
【請求項２】
前記第２格納ユニットは、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る、請求項１に記載の装置。
【請求項３】
前記第２格納ユニットは、前記第１格納ユニットから前記第２ポインタを受け取り、前記第１ポインタを、前記第１格納ユニットをバイパスすることにより受け取る、請求項２に記載の装置。
【請求項４】
前記第２格納ユニットは、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取り、前記第１ポインタは、前記第２エンベデッドコード命令アドレスから導出される値である、請求項１に記載の装置。
【請求項５】
前記プロセッサの各後続するサイクル中であって、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクルの後に、少なくとも１つのポインタを前記第１格納ユニットからフェッチして、少なくとも１つの固有エンベデッドコード命令を前記第２格納ユニットからフェッチする、請求項１に記載の装置。
【請求項６】
前記第１格納ユニットから前記ポインタをフェッチして、前記第２格納ユニットから前記固有エンベデッドコード命令をフェッチする期間は、前記プロセッサの１サイクル以下である、請求項１に記載の装置。
【請求項７】
前記固有エンベデッドコード命令は、前記第２格納ユニットに格納されており、エンベデッドコードワードを形成する固有ビットパターンのセットを含む、請求項１に記載の装置。
【請求項８】
読み取り専用メモリをさらに備え、
前記メモリは、前記第１格納ユニットまたは前記第２格納ユニットを含む、請求項１に記載の装置。
【請求項９】
前記第１格納ユニットおよび前記第２格納ユニットを連結するために少なくとも１つのバッファまたはレジスタをさらに備える請求項１に記載の装置。
【請求項１０】
前記第１格納ユニットおよび前記第２格納ユニットを連結するマルチプレクサをさらに備える請求項１に記載の装置。
【請求項１１】
前記プロセッサ、前記第１格納ユニット、または、前記第２格納ユニットのうち１以上が、同一の集積回路ダイに設けられている、請求項１に記載の装置。
【請求項１２】
前記プロセッサは複数のプロセッサコアを含む、請求項１に記載の装置。
【請求項１３】
第１格納ユニットに、エンベデッドコード命令アドレスに対応するポインタを格納する段階と、
第２格納ユニットに、前記ポインタに対応する固有エンベデッドコード命令を格納する段階と
を備え、
前記第１格納ユニットは、前記第１格納ユニットにおいて前記エンベデッドコード命令アドレスが受け取られると、前記第２格納ユニットに前記ポインタを送信して、
前記第２格納ユニットは、前記第２格納ユニットにおいて前記ポインタが受け取られると、前記固有エンベデッドコード命令を出力する、方法。
【請求項１４】
前記第２格納ユニットで、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る段階をさらに備える、請求項１３に記載の方法。
【請求項１５】
前記第２格納ユニットで、前記第１格納ユニットから前記第２ポインタを受け取り、前記第１ポインタを、前記第１格納ユニットをバイパスすることにより受け取る段階をさらに備える、請求項１４に記載の方法。
【請求項１６】
前記第２格納ユニットで、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る段階をさらに備え、前記第１ポインタは、前記第２エンベデッドコード命令アドレスから導出される値である、請求項１３に記載の方法。
【請求項１７】
プロセッサの各後続するサイクル中であって、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクルの後に、少なくとも１つのポインタを前記第１格納ユニットからフェッチして、少なくとも１つの固有エンベデッドコード命令を前記第２格納ユニットからフェッチする段階をさらに備える、請求項１３に記載の方法。
【請求項１８】
コンピューティングシステムであって、
エンベデッドコード命令アドレスに対応するポインタを格納するポインタアレイ、および、前記ポインタに対応する固有エンベデッドコード命令を格納する固有パターンアレイを格納するメモリと、
格納されている前記固有エンベデッドコード命令を実行するプロセッサと、
を備え、
前記ポインタアレイは、前記ポインタアレイにおいて前記エンベデッドコード命令アドレスが受け取られると、前記固有パターンアレイに前記ポインタを送信して、前記固有パターンアレイは、前記固有パターンアレイにおいて前記ポインタが受け取られると、前記固有エンベデッドコード命令を出力する、コンピューティングシステム。
【請求項１９】
前記固有パターンアレイは、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る、請求項１８に記載のコンピューティングシステム。
【請求項２０】
前記固有パターンアレイは、前記ポインタアレイから前記第２ポインタを受け取り、前記第１ポインタを、前記ポインタアレイをバイパスすることにより受け取る、請求項１９に記載のコンピューティングシステム。
【請求項２１】
前記固有パターンアレイは、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取り、前記第１ポインタは、前記第２エンベデッドコード命令アドレスから導出される値である、請求項１８に記載のコンピューティングシステム。
【請求項２２】
前記プロセッサの各後続するサイクル中であって、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクルの後に、少なくとも１つのポインタが前記ポインタアレイからフェッチされ、少なくとも１つの固有エンベデッドコード命令が前記固有パターンアレイからフェッチされる、請求項１８に記載のコンピューティングシステム。
【請求項２３】
前記ポインタアレイから前記ポインタをフェッチして、前記固有パターンアレイから前記固有エンベデッドコード命令をフェッチする期間は、前記プロセッサの１サイクル以下である、請求項１８に記載のコンピューティングシステム。
【請求項２４】
前記固有エンベデッドコード命令は、前記固有パターンアレイに格納されており、エンベデッドコードワードを形成する固有ビットパターンのセットを含む、請求項１８に記載のコンピューティングシステム。
【請求項２５】
前記メモリは読み取り専用メモリである、請求項１８に記載のコンピューティングシステム。
【請求項２６】
１以上の命令を備えるコンピュータ可読媒体であって、前記１以上の命令は、プロセッサにより実行されると、前記プロセッサに１以上の処理を行わせることで、
第１格納ユニットに、エンベデッドコード命令アドレスに対応するポインタを格納して、
第２格納ユニットに、前記ポインタに対応する固有エンベデッドコード命令を格納して、
前記第１格納ユニットは、前記第１格納ユニットにおいて前記エンベデッドコード命令アドレスが受け取られると、前記第２格納ユニットに前記ポインタを送信して、
前記第２格納ユニットは、前記第２格納ユニットにおいて前記ポインタが受け取られると、前記固有エンベデッドコード命令を出力する、コンピュータ可読媒体。
【請求項２７】
プロセッサにより実行されると、前記プロセッサに、
前記第２格納ユニットで、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る処理を実行させる１以上の命令をさらに備える、請求項２６に記載のコンピュータ可読媒体。
【請求項２８】
プロセッサにより実行されると、前記プロセッサに、
前記第２格納ユニットで、前記第１格納ユニットから前記第２ポインタを受け取り、前記第１ポインタを、前記第１格納ユニットをバイパスすることにより受け取る処理を実行させる１以上の命令をさらに備える、請求項２７に記載のコンピュータ可読媒体。
【請求項２９】
プロセッサにより実行されると、前記プロセッサに、
前記第２格納ユニットで、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る処理を実行させる１以上の命令をさらに備え、
前記第１ポインタは、前記第２エンベデッドコード命令アドレスから導出される値である、請求項２６に記載のコンピュータ可読媒体。
【請求項３０】
プロセッサにより実行されると、前記プロセッサに、
前記プロセッサの各後続するサイクル中であって、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクルの後に、少なくとも１つのポインタを前記第１格納ユニットからフェッチして、少なくとも１つの固有エンベデッドコード命令を前記第２格納ユニットからフェッチする処理を実行させる１以上の命令をさらに備える、請求項２６に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してコンピューティング分野に関する。より詳しくは、本発明の一実施形態は、概して圧縮コードの高速実行に関する。
【背景技術】
【０００２】
数多くのアプリケーションはコードサイズのフットプリントの影響を受けやすい。１つの主たる例に、永久的メモリ格納がシステムコスト、サイズ、または消費電力全体の鍵を握っている読み取り専用メモリ（ＲＯＭ）ベースのシステムを利用しうるモバイルアプリケーションが挙げられる。場合によっては、コード圧縮を利用して、これらの課題の少なくとも幾つかを軽減することもできるかもしれないが、オンザフライ的に要求される圧縮コードの伸張によって、パフォーマンスが低減したり、および／または、消費電力が増加したりする場合がある。
【０００３】
詳細な記載は、添付図面を参照しながら行われる。図面では、参照番号の一番左の桁が、その参照番号が最初に現れる図面を特定している。同じ参照番号が異なる図面間で利用されている場合には、類似した、または同じ部材を表す。
【図面の簡単な説明】
【０００４】
【図１】圧縮前の埋め込みコード圧縮を示す。
【図２】圧縮後の埋め込みコード圧縮を示す。
【図３】一部の実施形態における、パイプライン・デコンプレッサのブロック図を示す。
【図４】一部の実施形態における、パイプライン・デコンプレッサへのデータフローを示す。
【図５】一部の実施形態における、パイプライン・デコンプレッサのブロック図を示す。
【図６】一部の実施形態における、パイプライン・デコンプレッサへのデータフローを示す。
【図７】一部の実施形態における、パイプライン・デコンプレッサのブロック図を示す。
【図８】本発明の一実施形態における方法のフロー図を示す。
【図９】ここで記載する一部の実施形態を実装する際に利用することができるコンピューティングシステムの実施形態のブロック図を示す。
【図１０】ここで記載する一部の実施形態を実装する際に利用することができるコンピューティングシステムの実施形態のブロック図を示す。
【図１１】一部の実施形態における、無線ローカルエリアまたはセルラーネットワーク通信システムのブロック図を示す。
【発明を実施するための形態】
【０００５】
以下の記載では、いくつもの具体的な詳細を述べて、様々な実施形態の完全な理解を促す。しかし、本発明の様々な実施形態は、これら特定の詳細がなくても実行可能である場合がある。また、公知の方法、手順、要素、および回路等の詳述を避けて、本発明の実施形態が曖昧にならないようにしている場合もあるのでご了承願いたい。さらに、本発明の実施形態の様々な態様は、集積半導体回路（「ハードウェア」）、１以上のプログラムにまとめられたコンピュータ可読命令（「ソフトウェア」）、または、ハードウェアおよびソフトウェアのなんらかの組み合わせによる実施形態が可能である。本開示の趣旨においては、「論理」は、ハードウェア、ソフトウェア（例えばプロセッサの動作を制御するマイクロコード等も含む）、またはこれらのなんらかの組み合わせのことを意味する。
【０００６】
一部の実施形態は、最も頻繁に実行されるコードフローのパフォーマンスオーバヘッドの低減または撤廃、電力消費量の低減、および／または、コードのサイズの低減によって、２レベルのエンベデッドコード伸張スキームを向上させることができる。一般的に、エンベデッドコード圧縮は、１つのエンベデッドコードワードをなす一式の固有のビットパターンを特定して、これらをテーブル（「辞書」と称される場合もある）に格納することを目的としている。圧縮エンベデッドコードは、各パターンについて（ショート）固有識別子を、元のエンベデッドコードワードシーケンスで格納する（図１および図２参照）。さらに、一実施形態では、コード辞書またはメモリの値についての位置の指定を柔軟に行うことで、初期ポインタ値を、より効率的に導出することができる。これら実施形態によって、伸張パフォーマンス面にコスト負担をかけずに、エンベデッドコード圧縮が提供する利点を実現することができるようになる。
【０００７】
図１および図２において、ａｄｄｒは、エンベデッドコード命令のアドレスを示す。非圧縮形式のとき（図１参照）、ａｄｄｒは、ＲＯＭに直接アクセスして、エンベデッドコード命令（ｉｎｓｔｒ）をフェッチする。圧縮形式のときは（図２参照）、固有エンベデッドコード命令が、「固有パターン」テーブル／アレイ２０２（または辞書）に格納されており、そのパターンについてのインデックス（ポインタ）のみがエンベデッドコード命令の元のスロットに格納されている（ポインタアレイ２０４）。この構成においては、２段階処理を利用して、エンベデッドコードワードを伸張することになる。つまり、第１段階で、ポインタアレイ２０４にアクセスして、インデックス（ポインタ）をフェッチして固有パターンアレイ２０２に投入し、この固有パターンアレイ２０２がアクセスを受けて、ワードが提供される。ここで元のＲＯＭが、各々が３１２ビットの６５００個のエンベデッドコードワードを有していたとすると、全部で２００５個の固有エンベデッドコードワードが存在していることになる。元のＲＯＭは(312x6500) 2,028,000ビットとなるが、圧縮されたＲＯＭは、(6500* 11 + 312*2005) 697,060になる（１１は、固有パターンアレイ２０２の２００５個のエントリをインデックス化するために必要なビット数である）。従って、圧縮率（圧縮サイズ／元のサイズ）は、３４．３７％となる。故に、従前のエンベデッドコード伸張方法は、フローが変わるとパフォーマンスコストがかかる、ということになる。これを解消するために、一部の実施形態では、このパフォーマンスに対する悪影響（performance hit）を回避して圧縮を行う。
【０００８】
様々な実施形態において記載する複数のポインタアレイおよび複数の固有パターンアレイ／テーブルは、それぞれ別個の格納ユニット（図９または図１０を参照して説明する複数のメモリ等）への実装、または、互いに同一の格納ユニット内の複数の領域（例えば図９または図１０を参照して記載する複数のメモリ）への実装が可能である。
【０００９】
図３は、一部の実施形態における、パイプライン・デコンプレッサのブロック図を示す。図３、図５、および図７において、Ｒ１、Ｒ２、およびＲ３は、パイプライン段階に跨って受け渡しされるデータを一時的に格納する目的に利用可能な先入先出（ＦＩＦＯ）バッファのことを指す。図４は、一部の実施形態における、図３のパイプライン・デコンプレッサへのデータフローを示す。
【００１０】
図３を参照すると、圧縮を行う構成では、間接アクセスが「固有パターン」テーブル３０２に行われている。この間接処理（indirection）により、コードを格納しているメモリから命令をフェッチする際にかかる時間が長くなる。固有パターンアレイ３０２から命令をフェッチする前に、ポインタをポインタアレイ３０４からフェッチしなくてはならない点に留意されたい。アレイ３０２および３０４の両方からフェッチする期間がプロセッサのサイクル時間以内に納まらない場合（つまり、プロセッサの１サイクル以下に納まらない場合）、プロセッサのパフォーマンスが影響を受けることになる。この期間をプロセッサのサイクル時間に納めるためには、圧縮されたＲＯＭで、固定サイズのコード命令のみを利用する、および／または、図３のパイプライン処理を行う必要があるだろう。図３は、２段階でパイプライン処理を行うデコンプレッサを示す。第１パイプライン段階にポインタアレイ３０４が含まれており、第２パイプライン段階に固有パターンテーブル／アレイ３０２が含まれている。
【００１１】
実行中に、「ａｄｄｒ」アドレスのシーケンスが、圧縮されたＲＯＭに提示される。図３のパイプライン・デコンプレッサでは、アドレスが先ずポインタアレイ３０４に提示される。次の段階では、これが、固有パターンアレイ３０２にアクセスするポインタを生成し、同時に、新たな「ａｄｄｒ」をポインタアレイ３０４に提示するが、このときのサイクル毎のスループットは１ワードである。このパイプライン構成では、新たな「ａｄｄｒ」のシーケンスが開始される度に、１サイクルの「バブル」が生じることになる。「バブル」は、パイプラインを再開すると生じる。例えば、エンベデッドコードフローの開始時、または、ジャンプ中に生じる。一般的には、「バブル」は、パイプライン段階（バブルを含む段階のこと）が、なんら有用な仕事を行っていない、ということを示すための比ゆ的表現である。
【００１２】
図４を参照すると、図３のパイプライン・デコンプレッサへのデータフローが示されている。第１サイクル（サイクル１）では、ポインタアレイ３０４の入力が、第１命令アドレス（Ａｄｄｒ１）を含んでいる。第２サイクル（サイクル２）では、第２命令アドレス（Ａｄｄｒ２）がポインタアレイ３０４に提供され、同時に、第１ポインタ（ポインタ１）が固有パターンアレイ３０２に提供されている。Ｒ２におけるバブルは、デコンプレッサが第１サイクルで固有パターンアレイにポインタを提供できないことに起因して生じたものである。
【００１３】
図５は、一実施形態における、パイプライン・デコンプレッサのブロック図を示す。図５の実施形態は、Ｒ１で、図３から図４を参照して説明したバブルを、第２アドレス（Ａｄｄｒ２）をポインタアレイ５０４に提供するのと同時に第１ポインタ（ポインタ１）を固有パターンアレイ５０２に直接提供することで（例えばポインタアレイ５０４をバイパスする）回避している。図示されているように、マルチプレクサは、第１ポインタまたはポインタアレイ５０４の出力を選択することで、Ｒ２経由で第２パイプラインに送信する。従って、新たなフローの第１サイクルで、第１命令を固有パターンアレイ５０２から直接フェッチして、第２命令のアドレス（「ａｄｄｒ」）を利用してパイプラインを「準備する（prime）」。
【００１４】
図６は、第１ポインタが固有パターンアレイに直接提供される場合の図５のパイプライン・デコンプレッサへのデータフローを示す。図４と比べると、第１サイクル（サイクル１）のバブルがない。第１サイクルで、ポインタアレイ５０４の入力は、第２命令アドレスを含んでおり、固有パターンアレイ５０２の入力は、第１命令へのポインタを含んでいる。第２サイクル（サイクル２）では、第３命令アドレスがポインタアレイ５０４に提供され、同時に、第２ポインタが固有パターンアレイ５０２に提供される。この例では、デコンプレッサは、第１サイクルで固有パターンアレイにポインタを提供することができ、バブルをなくすことができている。
【００１５】
図７は、一実施形態におけるパイプライン・デコンプレッサのブロック図である。図７は、過剰アドレスビット（または論理）のためのバス線がなく、図５の構成を増補した（augmented）ものである。図７では、導出論理７０２によって、第１ポインタを第２命令アドレス（「ａｄｄｒ」）から導出している。少なくとも１つの実施形態では、「導出論理」は、「ａｄｄｒ」の複数のビットのサブセットを選択することで第１ポインタを生成し、単に選択されたビットがマルチプレクサにワイヤ送信されることにより、導出を行う論理が実装されるようにしてよい。
【００１６】
一実施形態では、固有パターンアレイのパターンの位置を配置しなおすことで、ポインタアレイの格納されている値（ポインタの値）を修正することができる。図示の便宜上、命令「ＡＤＤ  Ｒ，Ｒ」を、エンベデッドコードフローの第１命令と仮定する。この命令パターンは、インデックスが第２命令アドレス（Ａｄｄｒ２）のサブセットである位置の固有パターンアレイに格納することができ、これにより、第１ポインタの第２アドレスからの導出が容易になる。例えば、Ａｄｄｒ１＝０００１００であり、Ａｄｄｒ２＝０００１０１である場合、「ＡＤＤ  Ｒ，Ｒ」命令を固有パターンアレイの位置０１０１に格納することができ、こうすることで、このアドレスをＡｄｄｒ２の下位の４ビットから直接導出可能とすることができる。フローの最初に、Ａｄｄｒ２をＲ１に提供して、下位の４ビット（０１０１）をＲ２に提供して、第１命令を固有パターンアレイから直接フェッチする。
【００１７】
さらに、この実施形態ではいずれかの圧縮を、（パフォーマンスの向上のために）交換（trade）することもできる。これは、「ＡＤＤ  Ｒ，Ｒ」命令が別のフローで共有されている可能性もあるので、その場合には、固有パターンアレイで複製しておいて、そのポインタデータを独立したものとしておく必要があるからである。しかし、この複製は、フローの開始時の、それぞれ異なる（比較的少数の）命令にしか生じない。加えて、プロファイリングを利用して、実行頻度が最も高いフローのみを選択して最適化することができ、こうすると、実行頻度が最も低いフローにバブルをとどめることができる。
【００１８】
図８は、一実施形態におけるエンベデッドコードを向上させる方法８００のブロック図である。方法８００の処理は、図１から図７、および／または、図９−図１１を参照して説明する１以上のコンポーネントによって実行することができる。
【００１９】
図８を参照すると、処理８０２で、圧縮されたエンベデッドコード構成を決定する（上述した説明を参照のこと：ポインタアレイおよび固有パターンアレイを生成して、それぞれＰとＵビットとしてインデックス化する）。処理８０４で、セットＳのエンベデッドコードアドレス（ａｄｄｒ）を特定する（これらが、（重要な）フローの第２命令である）。さらに、エンベデッドコードは、複数のフローを含んでいる。各フローが、命令シーケンスを含んでいる。これら命令それぞれを、ａｄｄｒ１、ａｄｄｒ２、ａｄｄｒ３、…、ａｄｄｒＮといったアドレスと関連付ける。Ａｄｄｒ２は、フローの第２命令のアドレスである。故に、処理８０４では、各フローの第２命令に相当するアドレスセットを特定する。従って、もしもコードが１０個の重要なフローまたは対象フローを有している場合、１０個のアドレスからなるセットを有することになり、各アドレスが、それぞれのフローの第２命令のアドレスということになる。処理８０６では、例えばＳの各要素について、対応する命令パターンを固有パターンアレイに追加して、第２命令アドレスから簡単にパターンインデックスを導出できるようにする。一実施形態では、パターンは、そのフローの第２アドレス（Ａｄｄｒ２）のＰビットからなるサブセットに対応するパターンインデックス（Ｕビットからなる）を有する位置に配置することができる。
【００２０】
このように一部の実施形態では、（１）第１命令のパターンインデックスをフローに直接投入することで、パイプラインのバブルをなくし、（２）命令アドレスからパターンインデックスを導出して、および／または、（３）固有パターンアレイのパターンを配置しなおすことで、命令アドレスからパターンインデックスを導出する論理を簡略化することにより、バブルをエンベデッド圧縮コードフローからなくして、速度を上げ、および／または、コストを下げることができる。
【００２１】
一実施形態では、ここで記載する技術（図１から図８を参照）を選択的に利用することで、パフォーマンスの圧縮率を交換することもできる。例えば、技術の利用を、重要で、短く、初期のパイプラインの「バブル」による遅延によって大きな影響を受けやすいエンベデッド命令フローのみに限定してよい。さらに、比較的長く、稀であり、１つの余剰サイクルによる影響をあまり受けないフローは、このような技術を適用しないで実行してもよい。さらには、エンベデッドコードリンク段階で、エンベデッドコードを再編成して、フローの開始部分である別個の固有命令の数を最小限に抑え、圧縮率を節約（preserve）することもできる。
【００２２】
図９は、コンピューティングシステム９００の一実施形態のブロック図である。様々な実施形態では、システム９００のコンポーネントの１以上を、本発明の一部の実施形態を参照して本明細書で説明する処理の１以上を実行することができる様々な電子デバイスに提供されてよい。例えばシステム９００のコンポーネントの１以上を利用して、図１−図８、および、図１０−図１１を参照して説明する処理を実行することもできる。さらに、ここで（図９および／または図１０）を参照して説明する様々な格納デバイスを利用して、データ（命令を含む）、処理結果等を格納することもできる。一実施形態では、図９の方法９００の処理に関するデータをメモリデバイス（例えば図９のプロセッサ９０２または図１０の１００２／１００４に提示されているメモリ９１２または１以上のキャッシュ（一実施形態ではＬ１、中間レベル、または最終レベルのキャッシュ等））に格納することもできる。
【００２３】
さらに、コンピューティングシステム９００は、相互接続ネットワーク（またはバス）９０４経由で通信する１以上の中央処理装置（ＣＰＵ９０２またはプロセッサを含んでも良い。）プロセッサ９０２は、汎用プロセッサ、ネットワークプロセッサ（コンピュータネットワーク９０３経由で通信されたデータを処理する）、またはその他の種類のプロセッサ（縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサまたは複合命令セットコンピュータ（ＣＩＳＣ）プロセッサを含む）を含んでも良い。さらに、プロセッサ９０２は、シングルコア設計またはマルチコア設計であってよい。マルチコア設計のプロセッサ９０２とは、同一の集積回路（ＩＣ）ダイ上に様々な異な種類のプロセッサコアが集積されたものである。マルチコア設計のプロセッサ９０２は、対象または非対象マルチプロセッサとして実装することができる。加えて、プロセッサ９０２は、ＳＩＭＤ（単一命令多重データ）アーキテクチャを利用することができる。さらに、図１から図８を参照して説明した処理は、システム９００の１以上のコンポーネントで実行することができる。図９に示すように、プロセッサ９０２の１以上が、（エンベデッド）論理９９０を含んでよく、これらは、図１から図８を参照して説明したデコンプレッサと同様の、または類似したものであってよい。しかし、図９のシステム９００の中の他の回路、論理ユニット、またはデバイスには、本発明の他の実施形態が存在する可能性もある。
【００２４】
チップセット９０６はさらに、相互接続ネットワーク９０４と通信することができる。チップセット９０６は、メモリコードハブ（ＭＣＨ）９０８を含んでよい。ＭＣＨ９０８は、メモリ９１２と通信するメモリコントローラ９１０を含んでよい。メモリ９１２は、データ（ＣＰＵ９０２またはコンピューティングシステム９００が含むその他の任意のデバイスが実行する命令シーケンスを含む）を格納してよい。本発明の一実施形態では、メモリ９１２が、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、静的ＲＡＭ（ＳＲＡＭ）等の１以上の揮発性格納（またはメモリ）デバイス、または、その他のタイプの格納デバイスを含んでよい。不揮発性メモリはさらに、ハードディスク等として利用することもできる。さらなるデバイス（複数のＣＰＵおよび／または複数のシステムメモリ等）が、相互接続ネットワーク９０４を介して通信することができる。
【００２５】
ＭＣＨ９０８はさらに、ディスプレイ９１６と通信するグラフィックインタフェース９１４を含んでも良い。ディスプレイ９１６は、ユーザに対して、ここで説明するブラウン橋アルゴリズムに関する処理結果を示すために利用することができる。本発明の一実施形態では、グラフィックインタフェース９１４はディスプレイ９１６と通信することができる。本発明の一実施形態では、ディスプレイ９１６は、例えば信号変換機を介してグラフィックインタフェース９１４と通信するフラットパネルディスプレイであってよく、信号変換機は、ビデオメモリまたはシステムメモリ等の格納デバイスに格納されているデジタル表現の画像を、ディスプレイ９１６が解釈、表示することができる表示信号に変換することができる。インタフェース９１４が生成する表示信号は、様々な制御デバイスを通り、ディスプレイ９１６による解釈を受けてから、表示される。
【００２６】
ハブインタフェース９１８は、ＭＣＨ９０８および入出力制御ハブ（ＩＣＨ）９２０に通信を行わせる。ＩＣＨ９２０は、コンピューティングシステム９００と通信するＩ／Ｏデバイスに対してインタフェースを提供することができる。ＩＣＨ９２０は、周辺ブリッジ（またはコントローラ）９２４（例えば周辺コンポーネント相互接続（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、またはその他の種類の周辺ブリッジまたはコントローラ）を介してバス９２２と通信することができる。ブリッジ９２４は、ＣＰＵ９０２および周辺デバイスとの間にデータ経路を提供することができる。他の種類のトポロジーを利用することもできる。さらに、複数のバスが、複数のブリッジまたはコントローラを介してＩＣＨ９２０と通信してもよい。さらに、本発明の様々な実施形態では、ＩＣＨ９２０と通信する他の周辺機器に、集積ドライブエレクトロニクス（ＩＤＥ）、スモールコンピュータシステムインタフェース（ＳＣＳＩ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えばデジタルビデオインタフェース（ＤＶＩ））その他のデバイスが含まれてもよい。
【００２７】
バス９２２は、それぞれコンピュータネットワーク９０３と通信可能なオーディオデバイス９２６、１以上のディスクドライブ９２８、およびネットワークインタフェースデバイス９３０と通信することができる。一実施形態では、デバイス９３０が無線通信可能なＮＩＣであってよい。他のデバイスがバス９２２経由で通信可能であってもよい。さらに、本発明の一部の実施形態では、様々なコンポーネント（例えばネットワークインタフェースデバイス９３０）が、ＭＣＨ９０８と通信することができる。加えて、プロセッサ９０２およびＭＣＨ９０８は、組み合わせられることでシングルチップを構成してもよい。さらに、グラフィックインタフェース９１４は、本発明の他の実施形態では、ＭＣＨ９０８内に含まれてもよい。
【００２８】
さらに、コンピューティングシステム９００は、揮発性および／または不揮発性メモリ（またはストレージ）を含んでよい。例えば不揮発性メモリは、読み取り専用メモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば９２８）、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ、磁気光ディスク、または、電子データ（例えば命令を含む）を格納可能なその他の種類の不揮発性機械可読媒体を含んでよい。一実施形態では、システム９００のコンポーネントは、図１０を参照して記述したようなポイントツーポイント（ＰｔＰ）構成に構成することもできる。例えば、プロセッサ、メモリ、および／または、入出力デバイスを、複数のポイントツーポイントインタフェースで相互接続することができる。
【００２９】
より詳しくは、図１０が、本発明の一実施形態におけるポイントツーポイント（ＰｔＰ）構成に構成されているコンピューティングシステム１０００を示している。特に図１０は、プロセッサ、メモリ、および入出力デバイスが複数のポイントツーポイントインタフェースで相互接続されているシステムを示している。図１−図９、および図１１を参照して説明する処理は、システム１０００の１以上のコンポーネントにより実行することができる。
【００３０】
図１０に示すように、システム１０００は幾つかのプロセッサを含んでよいが、２つのみ（プロセッサ１００２、１００４）が図示の便宜上示している。プロセッサ１００２および１００４は、それぞれ、ローカルメモリコントローラハブ（ＭＣＨ）１００６および１００８であり、メモリ１０１０および１０１２に連結される。メモリ１０１０および／または１０１２は、図９のメモリ９１２を参照して記載した様々なデータを格納することができる。
【００３１】
プロセッサ１００２および１００４は、図９のプロセッサ９０２を参照して記載したもの等を含む任意の適切なプロセッサであってよい。プロセッサ１００２および１００４は、それぞれＰｔＰインタフェース回路１０１６および１０１８を利用して、ポイントツーポイント（ＰｔＰ）インタフェース１０１４を介してデータを交換することができる。プロセッサ１００２および１００４はそれぞれ、ポイントツーポイントインタフェース回路１０２６、１０２８、１０３０、および１０３２を利用して、個々にＰｔＰインタフェース１０２２および１０２４を介して、チップセット１０２０との間でデータを交換することができる。チップセット１０２０はさらに、ＰｔＰインタフェース回路１０３７を利用して、高パフォーマンスグラフィックインタフェース１０３６を介して高パフォーマンスグラフィック回路１０３４とデータを交換することができる。
【００３２】
本発明の少なくとも１つの実施形態は、プロセッサ１００２および１００４を利用して提供することができる。例えば図１０に示すように、プロセッサ１００２／１００４の１以上は、（エンベデッド）論理９９０を含んでよく、これは、図１から図８を参照して説明したデコンプレッサと同様の、または類似したものであってよい。しかし図１０のシステム１０００内の他の回路、論理ユニット、またはデバイスには、本発明の他の実施形態が存在する可能性もある。さらに本発明の他の実施形態を、図１０に示す幾つかの回路、論理ユニット、またはデバイスに分散させることもできる。
【００３３】
チップセット１０２０は、ＰｔＰインタフェース回路１０４１を利用してバス１０４０に連結されてよい。バス１０４０には１以上のデバイス（例えばバスブリッジ１０４２およびＩ／Ｏデバイス１０４３）が連結されていてよい。バス１０４４を介して、バスブリッジ１０４３は、キーボード／マウス１０４５、図１０を参照して記載したネットワークインタフェースデバイス１０３０（例えばモデム、ネットワークインタフェースカード（ＮＩＣ）、その他、コンピュータネットワーク９０３に連結可能なもの）、オーディオＩ／Ｏデバイス、および／または、データ格納デバイス１０４８に連結することができる。データ格納デバイス１０４８は、プロセッサ１００２および／または１００４により実行可能なコード１０４９を格納することができる。
【００３４】
図１１を参照しながら、一部の実施形態における、無線ローカルエリアまたはセルラーネットワーク通信システムのブロック図について説明する。図１１に示す通信システム１１００では、無線デバイス１１１０が、アンテナ１１１８または論理１１１４（例えばプロセッサ（例えば、ベースバンド処理機能およびメディアアクセス制御（ＭＡＣ）処理機能を提供するために））に連結するための無線トランシーバ１１１２を含んでよい。一部の実施形態では、ここで記載するコンピューティングシステムのうち１以上は、無線デバイス１１１０を参照して説明したコンポーネントの１以上を含んでよい。さらに、コンピューティングデバイス１１０２は、図１から図１０を参照してここで説明するシステム／デバイスの１以上のコンポーネントを含んでも良い。
【００３５】
一部の実施形態では、無線デバイス１１１０は、セルラー電話通信モジュールが組み込まれた移動パーソナルコンピュータまたは情報携帯端末等のセルラー電話器または情報処理システムであってよい。一実施形態では、論理１１１４は、シングルプロセッサを含んでも良いし、または、ベースバンドプロセッサおよびアプリケーションプロセッサ（例えば、図１１を参照して説明する各プロセッサが１以上のプロセッサコアを有してよい、または、図１から図１０を参照して記載したプロセッサと同様であったり、または類似していてよい）。論理１１１４は、メモリ１１１６に連結されており、メモリ１１１６には、揮発性メモリ（例えば動的ＲＡＭ（ＤＲＡＭ））、不揮発性メモリ（例えばフラッシュメモリ）を含んでも良く、これらに替えて、ハードディスクドライブ等の他の種類のストレージが含まれてよい。これらメモリ１１１６の一部または全ては、論理１１１４と同じ集積回路に含まれていても良いし、あるいは、メモリ１１１６の一部または全てが、論理１１１４の集積回路の外部にある集積回路または他の媒体（例えばハードディスクドライブ）上に設けられても良い。
【００３６】
無線デバイス１１１０は、無線通信リンクを介してアクセスポイント１１２２と通信することができ、アクセスポイント１１２２は、アンテナ１１２０、トランシーバ１１２４、プロセッサ１１２６、およびメモリ１１２８のうち１以上を含んでよい。図１１に示すように、無線デバイス１１１０および／またはアクセスポイント１１２２のうち１以上は、（エンベデッド）論理９９０を含んでいて良く、これらは、図１から図１０を参照して上述したデコンプレッサと同一、または類似していたものであってもよい。一実施形態では、アクセスポイント１１２２が、セルラー電話回線の基地局であってよく、別の実施形態では、アクセスポイント１１２２が、無線ローカルまたはパーソナルエリアネットワークのアクセスポイントまたは無線ルータであってよい。一実施形態では、アクセスポイント１１２２（オプションとしては無線デバイス１１１０であってもよい）は、２以上のアンテナを含んで、例えば空間分割多重アクセス（ＳＤＭＡ）システムまたは多入力多出力（ＭＩＭＯ）システムを提供してもよい。アクセスポイント１１２２は、ネットワーク９０３と連結されることで、無線デバイス１１１０が無線通信リンクを介してアクセスポイント１１２２と通信することにより、ネットワーク９０３（ネットワーク９０３に連結されたデバイスを含む）と通信してもよい。ネットワーク９０３は、電話回線またはインターネット等の公衆回線を含んでも良いし、または、ネットワーク９０３が、イントラネット等のプライベートネットワーク、または、公衆回線とプライベートネットワークの組み合わせを含んでも良い。無線デバイス１１１０およびアクセスポイント１１２２の間の通信は、無線ローカルエリアネットワーク（ＷＬＡＮ）を介して実装することもできる。一実施形態では、無線デバイス１１１０およびアクセスポイント１１２２の間の通信は、少なくとも部分的に、第三世代パートナーシッププロジェクト（３ＧＰＰまたは３Ｇ）規格に準拠したセルラー通信ネットワークにより実装されてよい。一部の実施形態では、アンテナ１１１８は、無線センサネットワークまたはメッシュネットワークで利用することができる。
【００３７】
本発明の様々な実施形態では、ここで説明する処理（図１から図１１を参照して説明するもの）は、ハードウェア（例えば論理回路）、ソフトウェア（例えば、コンピュータ（例えばプロセッサまたは他のコンピュータデバイスの論理）に、ここに開始した処理を実行させるようプログラミングするために利用される命令（またはソフトウェア手順）を格納した有形機械可読またはコンピュータ可読媒体を含む）コンピュータプログラムとして提供することができる、プロセッサ（ここで記載するプロセッサを含む）、ファームウェア、または、これらの組み合わせの処理を制御するマイクロコードを含む）として実装することができる。機械可読媒体は、ここに記載する格納デバイスを含んでよい。
【００３８】
加えて、これら有形コンピュータ可読媒体は、コンピュータプログラムプロダクトとしてダウンロードすることができ、このなかでプログラムは、遠隔コンピュータ（サーバ等）から要求を発したコンピュータ（クライアント等）へと、通信リンク（例えばバス、モデム、またはネットワーク接続）を介して伝播媒体のデータ信号により転送されてよい。
【００３９】
本明細書における「一実施形態」「１つの実施形態」といった言い回しは、ある特定の実施形態との関連で記載される特定の特徴、構造、または特性が、少なくとも１つの実装例に含まれうることを示す。「一実施形態」という言い回しが本明細書の随所に利用されていたとしても、これは全てが同じ実施形態のことを指しているわけではないことを了解されたい。
【００４０】
さらに、明細書および請求項において「連結」「接続」およびこれらの派生語が利用されている場合がある。本発明の一部の実施形態では、「接続」は、２以上の部材が直接物理的または電気的接触状態にあることを示している。「連結」は、２以上の部材が直接物理的または電気的接触状態にあることを示す場合もある。しかし、「連結」はさらに、２以上の部材が互いに直接接触してはいないが、互いと協働または相互作用できる状態を指す場合もある。
【００４１】
本発明の実施形態は、構造的特徴および／または方法における動作に特化した言語で記載してきたが、請求されている主題は、これら記載された具体的特徴または動作に必ずしも限定されないことを理解されたい。具体的特徴または動作は、請求されて言う主題を実装する例示的な形態の開示にすぎない。
【図１】
2013528877.tif 000003
【図２】
2013528877.tif 000004
【図３】
2013528877.tif 000005
【図４】
2013528877.tif 000006
【図５】
2013528877.tif 000007
【図６】
2013528877.tif 000008
【図７】
2013528877.tif 000009
【図８】
2013528877.tif 000010
【図９】
2013528877.tif 000011
【図１０】
2013528877.tif 000012
【図１１】
2013528877.tif 000013
【手続補正書】
【提出日】平成24年11月29日(2012.11.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
エンベデッドコード命令アドレスに対応するポインタを格納する第１格納ユニットと、
前記ポインタに対応する固有エンベデッドコード命令を格納する第２格納ユニットと、
格納されている前記固有エンベデッドコード命令を実行するプロセッサと
を備え、
前記第１格納ユニットは、前記第１格納ユニットで前記エンベデッドコード命令アドレスが受け取られると、前記第２格納ユニットに前記ポインタを送信し、
前記第２格納ユニットは、前記第２格納ユニットで前記ポインタが受け取られると、前前記固有エンベデッドコード命令を出力する装置。
【請求項２】
前記第２格納ユニットは、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る、請求項１に記載の装置。
【請求項３】
前記第２格納ユニットは、前記第１格納ユニットから前記第２ポインタを受け取り、前記第１ポインタを、前記第１格納ユニットをバイパスすることにより受け取る、請求項２に記載の装置。
【請求項４】
前記第２格納ユニットは、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取り、前記第１ポインタは、前記第２エンベデッドコード命令アドレスから導出される値である、請求項１に記載の装置。
【請求項５】
前記プロセッサの各後続するサイクル中であって、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクルの後に、少なくとも１つのポインタを前記第１格納ユニットからフェッチして、少なくとも１つの固有エンベデッドコード命令を前記第２格納ユニットからフェッチする、請求項１に記載の装置。
【請求項６】
前記第１格納ユニットから前記ポインタをフェッチして、前記第２格納ユニットから前記固有エンベデッドコード命令をフェッチする期間は、前記プロセッサの１サイクル以下である、請求項１に記載の装置。
【請求項７】
前記固有エンベデッドコード命令は、前記第２格納ユニットに格納されており、エンベデッドコードワードを形成する固有ビットパターンのセットを含む、請求項１に記載の装置。
【請求項８】
読み取り専用メモリをさらに備え、
前記メモリは、前記第１格納ユニットまたは前記第２格納ユニットを含む、請求項１に記載の装置。
【請求項９】
前記第１格納ユニットおよび前記第２格納ユニットを連結するために少なくとも１つのバッファまたはレジスタをさらに備える請求項１に記載の装置。
【請求項１０】
前記第１格納ユニットおよび前記第２格納ユニットを連結するマルチプレクサをさらに備える請求項１に記載の装置。
【請求項１１】
前記プロセッサ、前記第１格納ユニット、または、前記第２格納ユニットのうち１以上が、同一の集積回路ダイに設けられている、請求項１に記載の装置。
【請求項１２】
前記プロセッサは複数のプロセッサコアを含む、請求項１に記載の装置。
【請求項１３】
第１格納ユニットに、エンベデッドコード命令アドレスに対応するポインタを格納する段階と、
第２格納ユニットに、前記ポインタに対応する固有エンベデッドコード命令を格納する段階と
を備え、
前記第１格納ユニットは、前記第１格納ユニットにおいて前記エンベデッドコード命令アドレスが受け取られると、前記第２格納ユニットに前記ポインタを送信して、
前記第２格納ユニットは、前記第２格納ユニットにおいて前記ポインタが受け取られると、前記固有エンベデッドコード命令を出力する、方法。
【請求項１４】
前記第２格納ユニットで、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る段階をさらに備える、請求項１３に記載の方法。
【請求項１５】
前記第２格納ユニットで、前記第１格納ユニットから前記第２ポインタを受け取り、前記第１ポインタを、前記第１格納ユニットをバイパスすることにより受け取る段階をさらに備える、請求項１４に記載の方法。
【請求項１６】
前記第２格納ユニットで、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る段階をさらに備え、前記第１ポインタは、前記第２エンベデッドコード命令アドレスから導出される値である、請求項１３に記載の方法。
【請求項１７】
プロセッサの各後続するサイクル中であって、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクルの後に、少なくとも１つのポインタを前記第１格納ユニットからフェッチして、少なくとも１つの固有エンベデッドコード命令を前記第２格納ユニットからフェッチする段階をさらに備える、請求項１３に記載の方法。
【請求項１８】
コンピューティングシステムであって、
エンベデッドコード命令アドレスに対応するポインタを格納するポインタアレイ、および、前記ポインタに対応する固有エンベデッドコード命令を格納する固有パターンアレイを格納するメモリと、
格納されている前記固有エンベデッドコード命令を実行するプロセッサと、
を備え、
前記ポインタアレイは、前記ポインタアレイにおいて前記エンベデッドコード命令アドレスが受け取られると、前記固有パターンアレイに前記ポインタを送信して、前記固有パターンアレイは、前記固有パターンアレイにおいて前記ポインタが受け取られると、前記固有エンベデッドコード命令を出力する、コンピューティングシステム。
【請求項１９】
前記固有パターンアレイは、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る、請求項１８に記載のコンピューティングシステム。
【請求項２０】
前記固有パターンアレイは、前記ポインタアレイから前記第２ポインタを受け取り、前記第１ポインタを、前記ポインタアレイをバイパスすることにより受け取る、請求項１９に記載のコンピューティングシステム。
【請求項２１】
前記固有パターンアレイは、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取り、前記第１ポインタは、前記第２エンベデッドコード命令アドレスから導出される値である、請求項１８に記載のコンピューティングシステム。
【請求項２２】
前記プロセッサの各後続するサイクル中であって、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクルの後に、少なくとも１つのポインタが前記ポインタアレイからフェッチされ、少なくとも１つの固有エンベデッドコード命令が前記固有パターンアレイからフェッチされる、請求項１８に記載のコンピューティングシステム。
【請求項２３】
前記ポインタアレイから前記ポインタをフェッチして、前記固有パターンアレイから前記固有エンベデッドコード命令をフェッチする期間は、前記プロセッサの１サイクル以下である、請求項１８に記載のコンピューティングシステム。
【請求項２４】
前記固有エンベデッドコード命令は、前記固有パターンアレイに格納されており、エンベデッドコードワードを形成する固有ビットパターンのセットを含む、請求項１８に記載のコンピューティングシステム。
【請求項２５】
前記メモリは読み取り専用メモリである、請求項１８に記載のコンピューティングシステム。
【請求項２６】
コンピュータに、
第１格納ユニットに、エンベデッドコード命令アドレスに対応するポインタを格納する段階と、
第２格納ユニットに、前記ポインタに対応する固有エンベデッドコード命令を格納する段階と
を実行させるためのプログラムであって、
前記第１格納ユニットは、前記第１格納ユニットにおいて前記エンベデッドコード命令アドレスが受け取られると、前記第２格納ユニットに前記ポインタを送信して、
前記第２格納ユニットは、前記第２格納ユニットにおいて前記ポインタが受け取られると、前記固有エンベデッドコード命令を出力する、プログラム。
【請求項２７】
前記第２格納ユニットで、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る段階をさらに実行させる、請求項２６に記載のプログラム。
【請求項２８】
前記第２格納ユニットで、前記第１格納ユニットから前記第２ポインタを受け取り、前記第１ポインタを、前記第１格納ユニットをバイパスすることにより受け取る段階をさらに実行させる、請求項２７に記載のプログラム。
【請求項２９】
プロセッサにより実行されると、前記プロセッサに、
前記第２格納ユニットで、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクル中であって、第２エンベデッドコード命令アドレスに対応する第２ポインタの前に、第１エンベデッドコード命令アドレスに対応する第１ポインタを受け取る段階をさらに実行させ、
前記第１ポインタは、前記第２エンベデッドコード命令アドレスから導出される値である、請求項２６に記載のプログラム。
【請求項３０】
プロセッサの各後続するサイクル中であって、エンベデッドコード命令アドレスの新たなシーケンスの第１サイクルの後に、少なくとも１つのポインタを前記第１格納ユニットからフェッチして、少なくとも１つの固有エンベデッドコード命令を前記第２格納ユニットからフェッチする段階をさらに実行させる、請求項２６に記載のプログラム。
【国際調査報告】
2013528877.tif 000014
2013528877.tif 000015