JP2011238251A - 正確なプレデコードを保証する方法及び装置 - Google Patents

正確なプレデコードを保証する方法及び装置 Download PDF

Info

Publication number
JP2011238251A
JP2011238251A JP2011133198A JP2011133198A JP2011238251A JP 2011238251 A JP2011238251 A JP 2011238251A JP 2011133198 A JP2011133198 A JP 2011133198A JP 2011133198 A JP2011133198 A JP 2011133198A JP 2011238251 A JP2011238251 A JP 2011238251A
Authority
JP
Japan
Prior art keywords
instruction
padding
embedded data
length
instruction set
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011133198A
Other languages
English (en)
Inventor
Wayne Smith Rodney
ロドニー・ウェイン・スミス
Norris Diefenderfer James
ジェームズ・ノリス・ディーフェンダーファー
Todd Bridges Jeffery
ジェフリー・トッド・ブリッジス
Andrew Sartorius Thomas
トマス・アンドリュー・サートリウス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011238251A publication Critical patent/JP2011238251A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】同期された命令ストリングのプレデコードを保証する。
【解決手段】命令ストリングは、可変長の命令セットおよび組込データ320からの命令310を含む。命令セットにおける最短長さの命令に等しくなるようにグラニュールを定義し、命令セットにおいて最長長さの命令を構成するグラニュールの数をMAXに定義する。更に、組込データセグメントの終了を判定し、プログラムが命令ストリングにコンパイル又はアセンブルされる場合、長さMAX−1のパディング330を、組込データの終わりに、命令ストリング内に挿入する。パディングされた命令ストリングをプレデコードすると、たとえ組込データが可変長の命令セット内に存在する命令と類似するように偶然に符号化されても、プレデコーダは、パディングされた命令ストリング内の命令との同期を保つ。
【選択図】図3

Description

本発明は、一般に、様々な長さを有する命令を処理するプロセッサパイプラインにおいて、プレデコード同期誤りを除去することに関し、更に詳しくは、組込データを含む命令ストリングをプレデコードする場合、プレコードエンジンが、可変長命令を命令として正しく認識できるパディングプログラムコードのための有利な技術に関する。
今日のプロセッサは、一般に、可変長命令を有する命令セットをサポートする。例えば、ARM(登録商標)命令セットは、32ビット長を有する命令、及び、16ビット長を有する命令からなる。可変長命令をサポートするパイプラインプロセッサは、引き続き行われるデコードステージを簡単にする、すなわち、パイプラインを合理化するために、命令を部分的にデコードするためのプレデコードパイプラインステージを含みうる。一般的なプレデコードパイプラインステージは、コードライン毎ベースで、プログラムコードによってコードラインをプレデコードし、プレデコードされた情報を、コードラインとともにキャッシュに書き込む。プログラム又はオブジェクトコードを生成するために使用されるコンパイラに依存して、プログラムコードは、命令とともに組込データを含みうる。
組込データは、偶然にも、命令、又は命令の一部に似ているように見えるかもしれない。そのような場合、一般に、プレデコードエンジンが、組込データを誤って解釈するであろう。従って、プレデコードエンジンが、16ビットデータを、32ビット命令の前半部として誤ってプレデコードする場合、次の16ビット命令が、32ビット命令の後半部として解釈され、無効なプレデコード情報がキャッシュ内に格納され、プレデコード処理は、次の命令をプレデコードするための同期からはずれうる。一般に、次のデコードステージまで、同期誤りは認識されないであろう。プレデコード誤りからの復元を試みる場合、そのような同期誤りは、プロセッサ遅延、及び、無駄な電力消費となる。
上記問題に対する従来のアプローチは、プレデコードエンジンを再同期させるための復元メカニズムを提供することを含む。
幾つかの局面のうち、本発明の第1の実施形態は、命令ストリームにおける命令として、組込データが偶然に符合化された場合、プレデコードエンジンが再同期する必要を排除する技術に対するニーズが存在することを認識する。ここで、命令ストリームは、組込データ、及び可変長命令セットからの命令を含む。この目的のために、本実施形態は、命令セットにおける最短命令の長さに等しいグラニュールを定義することと、命令セットにおける最長長さの命令を構成するグラニュール数MAXを定義することとを含む。本実施形態は更に、プログラムが命令ストリングにコンパイル又はアセンブルされる場合、組込データセグメントの終わりを判定することと、長さMAX−1のパディングを、組込データの終わりに、命令ストリングへ挿入することとを含む。パディングされた命令ストリングを引き続きプレデコードすると、たとえ組込データが、可変長の命令セット内に存在する命令又は命令の一部と偶然に似ている場合であっても、プレデコーダは、有利なことに、パディングされた命令ストリング内の命令との同期を保つ。
本発明のより完全な理解が、本発明の更なる特徴及び利点とともに、以下に示す詳細記述及び添付図面から明らかになるであろう。
図1は、本発明の実施形態が有利に適用されうる典型的な無線通信システムを示す。 図2は、本発明の実施形態が有利に適用されうるプロセッサ複合体のブロック図である。 図3は、固定長パッドが使用される本発明の第1の実施形態に従って、16ビット及び32ビットサイズの命令を有する可変長命令セットのためのパディングを含む例示的なプログラムセグメントを示す。 図4は、本発明の第1の実施形態に従って、8,16,24及び32ビットからなる命令サイズを有する可変長命令セットのための3つのパッドバイトを含む例示的なプログラムセグメントを示す。 図5は、可変長パッドが使用される本発明の第2の実施形態に従って、8,16,24及び32ビットのサイズの命令を有する可変長命令セットのための2つのパッドバイトを含む例示的なプログラムセグメントを示す。 図6は、本発明の第2の実施形態に従って、8,16,24及び32ビットからなる命令サイズを有する可変長命令セットのための1つのパッドバイトを含む例示的なプログラムセグメントを示す。 図7は、本発明の教示に従ってソフトウェアを実行するコンピュータのブロック図である。 図8は、本発明の実施形態に従って動作するプロセッサパイプラインのブロック図である。 図9は、本発明の実施形態に従った一定サイズのパッドのためのテレスコピック(telescopic)な符号化アプローチを例示する。 図10は、本発明の第1の実施形態に従って一定サイズのパディングをプログラムコードに挿入する方法を例示するフローチャートである。 図11は、本発明の第2の実施形態に従って可変サイズパディングをプログラムコードに挿入する方法を例示するフローチャートである。
詳細な説明
本発明は、幾つかの実施形態が示されている添付図面を参照してより完全に説明される。しかしながら、本発明は、様々な形態で具体化することができ、ここに述べられた実施形態に限定されるように解釈されるべきではない。むしろ、これら実施形態は、本開示が十分かつ完全であり、当業者に対して本発明の範囲を十分に伝えることができるように提供されている。
本発明は、方法、システム、あるいはコンピュータプログラム製品として具体化されうることが認識されるだろう。従って、本発明は、ハードウェア実施形態、ソフトウェア実施形態、あるいは、ソフトウェア局面とハードウェア局面とを組み合わせた実施形態の形態を取り得る。更に、本発明は、コンピュータ利用可能な格納媒体に組み込まれたコンピュータ利用可能なプログラムコードを有する媒体におけるコンピュータプログラム製品の形態をとりうる。ハードディスク、CD−ROM、光記憶デバイス、フラッシュメモリ、又は磁気記憶デバイスを含む任意のコンピュータ読取可能媒体が利用されうる。
コンパイルされ、アセンブルされ、その後プレデコード等されうる本発明の教示に従うコンピュータプログラムコードは、先ず、例えばC、C++、ネイティブアセンブラ、JAVA(登録商標)、Smalltalk、JavaScript(登録商標)、Visual Basic(登録商標)、TSQL、Perl、又はその他の様々なプログラム言語で書かれる。プログラムコード又はコンピュータ読取可能媒体は、そのフォーマットがプロセッサによって理解されうるオブジェクトコードのような機械語コードを称する。本発明のソフトウェア実施形態は、特定のプログラム言語を用いた実装に依存しない。
図1は、本発明の実施形態が有利に適用されうる典型的な無線通信システム100を示す。例示目的のために、図1は、3つの遠隔ユニット120,130,150と2つの基地局140を示している。典型的な無線通信システムは、それより多くの遠隔ユニット及び基地局を有しうることが認識されよう。遠隔ユニット120,130,及び150は、それぞれ、プログラムコード125A,125B,及び125Cを実行するハードウェアコンポーネントを含む。プログラムコード125A,125B,及び125Cは、後述するようにして本発明の教示に従って修正されうる。図1は、基地局140から遠隔ユニット120,130,150への順方向リンク信号180と、遠隔ユニット120,130,150から基地局140への逆方向リンク信号190とを示す。
図1では、遠隔ユニット120は携帯電話として示され、遠隔ユニット130はポータブルコンピュータとして示され、遠隔ユニット150は無線ローカルループシステムにおける固定位置遠隔ユニットとして示される。例えば、遠隔ユニットは、セル電話、携帯型パーソナル移動通信システム(PCS)ユニット、例えばパーソナルデータアシスタントのようなポータブルデータユニット、又は、メータ読取装置のような固定式位置データユニットでありうる。図1は本発明の教示に従う遠隔ユニットを例示しているが、本発明は、これら例示した典型的なユニットに限定されない。本発明は、組込データ、及び可変長命令を含む命令ストリングをプレデコードするためにプレデコードステージ又はエンジンが利用される任意のパイプライン処理環境において適切に利用されうる。
図2は、本発明の実施形態が有利に利用されるプロセッサ複合体200を示す。プロセッサ複合体200は、本発明の教示に従って修正されたプログラムコード125A〜Cを実行し格納するために適切に用いられうる。プロセッサ複合体200は、中央処理装置(CPU)240、レベル1データキャッシュ230、レベル1命令キャッシュ220、レベル2命令データキャッシュ210を含んでいる。CPU240は、レベル1データキャッシュ230、レベル1命令キャッシュ220、及び、レベル2キャッシュ210に結合される。CPU240は、プレデコードステージ中、プログラムコードをプレデコードし、プレデコードされた情報を、プログラムコードとともにレベル1命令キャッシュ220に書き込むか、あるいは、レベル1命令キャッシュが埋まっている場合には、レベル2キャッシュ210に書き込む。CPU240は、階層的方法でキャッシュから命令とデータを検索する。例えば、CPU240が命令を取得する必要がある場合、CPU240は、一致を判定するために、レベル1命令キャッシュ220にアクセスするだろう。レベル1命令キャッシュ220において一致がないのであれば、CPU240は、レベル2命令及びデータキャッシュ210にアクセスするだろう。同様に、CPU240がデータを取得する必要がある場合、CPU240は、一致を判定するために、レベル1データキャッシュ230にアクセスするだろう。レベル1データキャッシュ230に一致がなければ、CPU240は、レベル2命令及びデータキャッシュ210にアクセスするだろう。本発明の実施形態は、図示するプロセッサ複合体200に制限されず、更に、一例として、任意の縮小命令型コンピュータ(RISC)プロセッサのようなプレデコードエンジンを利用する任意のプロセッサ複合体にも適用可能である。本発明は、RISC環境に制限されていないことが認識されるだろう。
図3は、一定長のパッドが挿入される本発明の第1の実施形態に従ったパディングを含む例示的なプログラムセグメント300を示す。プログラムセグメント300は、レベル2キャッシュ210のようなレベル2キャッシュのキャッシュラインとして、あるいは、プログラムメモリ内に適切に格納されうる。例示目的のために、このプログラムセグメントは、キャッシュラインから検索されると仮定されているが、本発明の教示は、プログラムセグメントが検索されるメモリデバイスに関わらず、プログラムセグメントの処理に適用可能であることが注目されるべきである。一般に、キャッシュラインは、固定長を有するので、命令ストリング又は命令ストリームという用語は、一般に、キャッシュラインの境界に及ぶか、あるいは及ばないかもしれない1又は複数のプログラムセグメントを称する。更に、プログラムセグメント300は、キャッシュラインの一部を例示しうる。
この例示的なプログラムセグメント300は、命令310、組込データ320、及びパディング330を含む。命令310は、可変長命令セットから来る。可変長命令セットから来るいくつかの典型的な命令が図3に例示されている。この可変長命令セット内の命令は、この例では、16ビット長、又は32ビット長の何れかである。例示目的のため、命令が開始され、この命令のサイズを示すキャッシュラインにおけるバイト位置をバイトインジケータ305が例示する。例えば、LOAD 0A命令は、バイト位置00において始まり、バイト位置03において終了する。従って、LOAD 0Aは32ビットの命令である。同様に、ADD命令は、長さ16ビットであり、BRANCH命令は長さ32ビットである。プログラムセグメント300では、組込データバイト322,324はBRANCH命令に従う。パディング330におけるパディングバイト332,334は、本発明の教示に従って、データバイト324の後に挿入される。パディングバイト334の後にADD命令336が続く。
組込データ320は、即時のデータでなく、一般に、LOAD命令312のようなプログラムセグメント内の近くの命令と関連している。組込データの場所は、一般に、標準的なコンパイラの便宜による。一般に、ARM(登録商標)コンパイラのような多くの標準コンパイラが、プログラムセグメント内の組込データ320を生成する。標準的なコンパイラが、隣接する命令と無関係なデータを埋め込む1つの理由は、近くの命令が、より容易にデータ空間にアクセスすることを可能にすることである。例えば、ロード命令は、データをアドレスする場合、より少ないオフセットビットの使用を可能にするだろう。図3に示すように、LOAD 0A命令312は、オフセット0Aにおいて始まるデータバイト322,324をロードする。
本発明の有利な機能を一例によって例示するために、我々は先ず、組込データ320が偶然にも32ビットのLOAD命令のうちの最初の2バイトのように見え、パディング330が追加されない状況を説明する。この状況では、パイプラインプロセッサのプレデコード動作の間、プレデコーダは、一度に16ビットをチェックすることによって、キャッシュラインの命令を通じたチェックによりキャッシュラインを処理する。
プレデコーダは、各命令を部分的にデコードし、次に、プレデコードされた情報とともにキャッシュライン全体を、レベル1命令キャッシュ220のようなキャッシュに、もしもレベル1キャッシュが満杯であれば、レベル2キャッシュ210に書き戻す。一般に、プレデコードされた情報は、次のデコード動作のためにキャッシュライン内のどこで命令が開始するか、命令がロード命令であるか、あるいは格納命令であるか、命令が計算であるか、命令が、大きな命令の前半部であるか後半部であるか、命令が複雑であるか等のような情報を含みうる。LOAD命令の前半部のように見えると我々が考えている組込データ320の存在によって、組込データは、プレデコーダによって、LOAD命令の一部として誤って解釈されるだろう。この例では、後のADD命令336は、LOAD命令の後半部として誤ってプレデコードされるだろう。
図3に示すように、加えられたパディング330を用いたプレデコーダの動作に戻ると、プレデコーダは、グラニュール毎ベースで、キャッシュライン300を進むだろう。グラニュールは、可変長命令セットにおける最短長さの命令のサイズに等しい尺度単位である。この例の場合、命令セットは、16ビット及び32ビット長の命令を含んでいる。したがって、1つのグラニュールは16ビットに等しい。一般に、組込データのサイズは、命令セットのグラニュールの倍数である。プログラムセグメント300に関し、プレデコーダはまず、LOAD 0A命令312の最初の16ビットである第1のグラニュールをチェックし、次に、LOAD 0A命令312の次の16ビットである第2のグラニュールをチェックする。次に、プレデコーダは、次のグラニュールである16ビットADD命令の16ビットをチェックする。次に、プレデコーダは、BRANCH 0E命令の最初の16ビットであるグラニュールをチェックし、次に、BRANCH 0E命令の次の16ビットである次のグラニュールをチェックする。組込データ320は、LOAD命令の最初の16ビットに見えるので、プレデコーダは、パディング330が続く組込データ320を、あたかも、32ビットのLOAD命令を構成するかのようにプレデコードする。従って、本発明の教示に従って挿入されたパディングによって、プレデコーダは、有利なことに、キャッシュライン内において、次の命令との同期を保つ。これによって、バイト位置OEにおいて始まるADD命令である次のグラニュールをチェックする場合、ADD命令を正しく認識する。上述したように、パディングが挿入されないと、プレデコーダは、あたかもLOAD命令の残りの16ビットであるかのように、ADD命令336をプレデコードする。その結果、プレデコーダは、ADD命令336を、また、恐らくは、次の命令も同様に、誤ってプレデコードする。
キャッシュラインが一旦プレデコードされると、キャッシュライン及びプレデコード情報が、キャッシュに書き込まれ、次のデコード及び実行動作の準備ができる。組込データ及びパディング330を、LOAD命令の残りの16ビットとしてプレデコードすることによって、プレデコーダが、幾つかの無効なプレデコード情報を生成するかもしれないことに注目されるべきである。そのような無効なプレデコード情報は重要ではない。なぜなら、プログラムの流れに従ってプログラムが実際に動作する場合、プログラムカウンタは、組込データ又は組込パディングを実行するように命令されないからである。例えば、BRANCH 0Eを実行した後、プログラムカウンタは、アドレス0Eを指し、次に、ADD命令336が実行されるようにして、組込データ320、パディング330、及び関連する無効なプレデコード情報をバイパスする。
図4は、本発明の第1の実施形態に従って、8,16,24,及び32ビットからなる命令サイズを有する可変長命令セットのための3つのパディングバイトを含む例示的なプログラムセグメント400を示す。プログラムセグメント400は、レベル2キャッシュ210のようなレベル2キャッシュのキャッシュラインの一部、キャッシュライン、又は複数のキャッシュラインとして適切に格納されうる。あるいは、プログラムセグメント400は、プログラムメモリの幾つかのその他の形式で格納されうる。プログラムセグメントは、命令410、組込データ420、及びパディング430を含む。この例では、命令410は、8,16,24,又は32ビット長からなる長さを有する可変長命令セットからなる。可変長命令セットのためのグラニュールサイズは、8ビットすなわち1バイトである。例示目的のため、バイトインジケータ405が、キャッシュライン内のバイト位置を例示する。プログラムセグメント400では、組込データ420が、16ビットのBRANCH命令414に続く。パディング430のパッドバイト432,434,及び436は、本発明の教示に従って、それぞれデータバイト426の後のバイト位置09,0A,0Bに挿入された。格納(STOR)命令416である8ビット命令が、パッドバイト436の後に続き、バイト位置0Cにおいて始まる。乗算(MULT)命令418である24ビット命令が、次のバイト位置0Dにおいて始まる。
この例では、最小の命令が1バイトであるので、グラニュールは1バイトである。プログラムセグメント400を処理する時、プレデコーダは一度に1つのグラニュールをチェックするだろう。図4乃至6の全てのプログラムセグメント400,500,600それぞれについて、プレデコーダは、同様に、対応するプログラムセグメントの最初の8バイトについて動作する。説明を単純にするために、我々は、図4に関してそれら8バイトの動作を記載する。プレデコーダは、LOAD 06命令412の最初のグラニュールをチェックし、この最初のグラニュールがLOAD命令であることを認識し、LOAD 06命令412をプレデコードするために、次の3つのグラニュール、すなわち、バイト位置01〜03を、キャッシュラインからシーケンシャルにチェックするだろう。その後、プレデコーダは、BRANCH 0C命令414の第1のグラニュールをチェックし、第1のグラニュールがBRANCH 0C命令であることを認識し、キャッシュラインからのバイト位置05である次のグラニュールをシーケンシャルにチェックし、BRANCH 0C命令414をプレデコードするだろう。データバイト422,424は、可変長命令セット内の任意の命令から別々に符号化される。従って、プレデコーダは、バイト位置06においてグラニュールをチェックし、それがデータを含んでいることを認識し、継続するだろう。プレデコーダは、バイト位置07において、次のグラニュールであるデータバイト424をチェックし、データバイト424もまたデータを含んでいると正しく認識する。
例えば、図4に示すように、データバイト426は、LOAD命令のような32ビット命令のうちの最初の8ビットに偶然にも似ている。その結果、プレデコーダが、データバイト426を、32ビットのLOAD命令の前半部としてプレデコードした後、プレデコーダは、次の3つのグラニュール、すなわちパッドバイト432,434,436を、これら3つのバイトがあたかも、偶然にもLOAD命令の残りであるように認識するだろう。パディング430によって、次の命令であるSTOR命令416は、正しくプレデコードされ、もって、キャッシュライン内の命令とプレデコーダとの間の同期を保つだろう。挿入されるパディング430がないと、プレデコーダは、STOR命令416及びMULT命令418に対応するバイトを、偶然にも、LOAD命令の最後の3バイトに対応するバイトと誤って解釈するであろう。その結果、プレデコーダは、STOR命令416を偶然にもLOAD命令の第2バイトとして、MULT命令418の最初の2バイトを偶然にもLOAD命令の最後の2バイトとしてプレデコードする。これは、プレデコーダを、キャッシュライン内の命令との同期からはずす。
更なる例として、図4のデータバイト426が符号化され、偶然にも、MULT命令のような24ビット命令の最初の8ビットに似ている場合、プレデコーダは、次の2つのグラニュールであるパッドバイト432,434を、あたかも、これら2バイトが、偶然にもMULT命令に属するかのごとくチェックする。そして、プレデコーダは、次のグラニュールであるパッドバイト436をチェックする。パッドバイト436が8ビット命令として符合化されたか、あるいは、下記に示すように、命令セットとは異なるデータとして符合化された場合、プレコーダは、バイト位置0Cにおいて見られる次のグラニュール、すなわちSTOR命令416をチェックするであろう。この例は、データバイト426がどのように誤解釈されたかに関わらず、パディング430が、組込データに続く命令の認識の完全性を保つことを例示している。
図5は、可変パッドサイズが適用される本発明の第2の実施形態に従って、8,16,24,及び32ビットからなる命令サイズを有する可変長命令のために、2つのパッドバイトを含む例示的なプログラムセグメント500を示す。図5は、命令に似ている組込データがプレデコーダによってどのようにして誤解釈されるのかに基づいて、別のサイズのパディングが、プログラムコードにどのようにして挿入されるかを例示している。可変長のパディングを用いることは、有利なことに、プログラムコードサイズを縮小する。プログラムセグメント500は、命令510、データ520、及びパディング530を含む。プログラムセグメント500は、プログラムセグメント500が、パディング530内に1少ないパッドバイトを有することを除いてプログラムセグメント400と同じである。従って、パッドバイト534の後の命令は、キャッシュライン内において1バイト位置シフトアップされる。このシフトによって、BRANCH 0B命令514の目標アドレスは、1バイトデクリメントされる。
図5に図示する例は、データバイト526を含む。これは、偶然にも、可変長命令セット内の24ビット命令のうちの最初の8ビットに似ている。従って、プレデコーダが、データバイト526のプレデコードを開始するとき、プレデコーダは、次の2つのグラニュールであるパディングバイト532,534を、あたかもこれら2つのバイトが、偶然にも、24ビット命令の残りであるかのようにチェックする。そして、プレデコーダは、プレデコードし、かつ、キャッシュライン内の命令とプレデコーダとの間の同期を保つために、次のグラニュールであるSTOR命令516をチェックするだろう。図5に示す例では、図4で使用される3バイトのパディングではなく、2バイトのパディングで十分である。
挿入されるパディング530がないと、プレデコーダは、STOR命令516及びMULT命令518に対応するグラニュールを、偶然にも、24ビット命令の最後の2バイトに対応するバイトと誤って解釈するであろう。その結果、プレデコーダは、キャッシュラインとの同期からはずれる。従って、組込データの次の命令の認識の完全性が危険にさらされる。
図6は、本発明の第2の実施形態に従って8,16,24,及び32ビットサイズの命令を有する可変長命令セットのために、1つのパッドバイトを含む例示的なプログラムセグメント600を示す。図6は、プレデコーダによってどのようにしてデータが誤解釈されるかによって、どのようにして1つのパッドバイトがプログラムコードに挿入されるかを例示している。プログラムセグメント600は、命令610、データ620、及びパディング630を含む。プログラムセグメント600は、プログラムセグメント600が、パディング630内に1少ないパッドバイトを有することを除いてプログラムセグメント500と同じである。従って、パッドバイト632の後の命令は、キャッシュライン内において1バイト位置シフトアップされる。このシフトによって、BRANCH 0A命令614の目標アドレスは、1バイトデクリメントされる。
図6に図示する例は、データバイト626を含む。これは、偶然にも、可変長命令セット内の16ビット命令のうちの最初の8ビットに似ている。プレデコーダが、データバイト626のプレデコードを開始するとき、プレデコーダは、次のグラニュールであるパッドバイト632を、あたかもこのバイトが、データバイト626によって示される16ビット命令に属しているかのようにチェックする。そして、プレデコーダは、プレデコードし、かつ、キャッシュライン内の命令とプレデコーダとの間の同期を保つために、次のグラニュールであるSTOR命令616をチェックするだろう。図6に示す例では、データバイト632は、16ビット命令の最初の8ビットに似ているので、1バイトサイズのパディングが十分だろう。
図5及び図6に関して記述された例で示されているように、組込データの後に挿入されるパディングのサイズは変化しうる。コンピュータ上で実行するソフトウェアコンパイラ又はアセンブラは、高レベルプログラミング言語から図3乃至図6に例示するような組込データ及び命令を有するプログラムコードを生成するので、コンパイラ又はアセンブラは、可変長命令セットから、組込データが命令に似ているときをいつでも認識し、それに従ってパディングを挿入することができる。更に以下に説明するように、固定長又は可変長のパディングを適用することができる。
図7は、本発明の教示に従ってソフトウェア730を実行するコンピュータ710のブロック図700である。図示していないが、コンピュータ710は、例えばプロセッサ、メモリ、入力/出力デバイスのような内部コンポーネント、及びこれら内部コンポーネント間の通信のためのバスを含む。ソフトウェア730は、本発明の教示に従って修正されるコンパイラ又はアセンブラでありうる。ソフトウェア730は、コンピュータ710のメモリ内に存在する。ソフトウェア730は、入力としてプログラム720を受け取り、本発明に従って挿入されたパディングを用いてコンパイル又はアセンブルされたプログラムコード740を出力として生成する。プログラム720は、C、C++、ネイティブアセンブラ、JAVA(登録商標)、Smalltalk、JavaScript(登録商標)、Visual Basic(登録商標)、TSQL、Perl、又はその他の様々なプログラム言語で書かれる。プログラム720は、例えば、セル電話、携帯型パーソナル移動通信システム(PCS)ユニット、コンピュータ、及びポータブルデータユニットに含まるような目標プロセッサにおいて特定の機能を実行するように書かれる一方、プログラムコード740は、目標プロセッサ上で実行する。目標プロセッサは、ソフトウェア730を実行するコンピュータ710と異なるかもしれないし、異ならないかもしれない。
ソフトウェア730は、プログラム720の構造的なコンテンツを判定し、かつ、プログラム720が構文上有効であるかを判定するためにプログラム720を解析する手段を含む。この解析手段はまた、プログラム720を、内部形式に変換する。ソフトウェア730は更に、コード生成のための手段を含む。このコード生成手段は、内部形式を、目標プロセッサによって実行することが可能なオブジェクトコードに変換する。オブジェクトコードは、可変長命令セットからの命令及び組込データを有する1又は複数のプログラムセグメントから成る。ソフトウェア730は更に、組込データセグメントの終わりにおいてパディングを挿入する手段を含む。
組込データと後の命令との間に挿入するべきパッドサイズを計算するために、ソフトウェア730は、組込データセグメントのコンテンツを分析するオプションの分析手段を含む。組込データセグメントは、命令に囲まれた命令ストリーム内の組込データである。ソフトウェア730は更に、オプションの認識手段を含む。プログラム720のコンパイル中、認識手段は、組込データセグメント内の何れかのグラニュールが、命令セット内の命令のグラニュールと似ているように符号化されたかを認識する。そう認識すると、挿入手段が、組込データのグラニュールが似ている命令の長さと、次の命令に関する組込データのグラニュールの位置とを考慮して、組込データの後に、多くのパッドグラニュールを挿入する。
あるいは、ソフトウェア730は、一定サイズのパディングを挿入するための手段をオプションとして含みうる。この代替アプローチは、有利なことに、組込データ符合化を分析する必要なく、ソフトウェア730の複雑さを低減する。この代替実施形態では、ソフトウェア730は、組込データセグメントの終わりから命令への移行を検知する手段を含む。そして、挿入手段は、組込データセグメントから命令への遷移が認識されるといつでも、一定数のパッドグラニュールを有するパディングを挿入する。挿入されたパディングの各パッドグラニュールは、1グラニュールの長さを持ち、命令セット内で既に定められた有効な命令を含むように適切に符合化される。あるいは、命令セット内のどの命令にも似ていないコードを有するデータを単に含みうる。代替パディング符号化を、図9を参照して説明する。
プログラムコード740内に挿入される一定サイズのパディングを構成するパッドグラニュールの数を決定するために、ソフトウェア730は、目標プロセッサによってサポートされる命令セットを構成する様々な長さの命令を利用する。一定サイズのパディングを構成するパディンググラニュールの数は、以下のように書かれうる。
Figure 2011238251
これは、
Figure 2011238251
のように簡略化される。そして、便宜的に
Figure 2011238251
とすると、
Figure 2011238251
のように簡略化される。
ここで、Pzはグラニュール単位によるパッドサイズであり、Max(instrlen)は、ビット単位による最長命令長さであり、Min(instrlen)は、ビット単位による最短命令長さであり、MAXは、グラニュール単位による最長命令長さである。例えば、32ビット命令と16ビット命令とを有する命令セットの場合、1グラニュールは、最短命令の長さである16ビットに等しい。グラニュール内のパッド数は、(32[ビット]/16[ビット/グラニュール])−1であろう。これは、1グラニュールすなわち16ビットに等しい。従って、命令セットから取得した16ビットの命令を含むパッドは、データから次の命令への移行がある場合にはどこでも挿入される。
別の例として、32,16,及び8ビットの命令を有する命令セットでは、1グラニュールは、最短命令である8ビットに等しい。グラニュール単位によるパッド数は、(32[ビット]/8[ビット/グラニュール])−1であろう。これは3グラニュールすなわち24ビットに等しい。従って、その後、24ビットのパディングが、データから次の命令へ移行する場合にはどこでも挿入される。24ビットのパッドを構成する他の可能な変形を、図9の説明に関連付けて以下に説明する。可変長パッドの内容を、図11に関連付けて以下に述べる。
図8は、本発明の実施形態に従って動作するプロセッサパイプライン800のブロック図である。プロセッサパイプライン800は、レベル1キャッシュステージからの取得810と、レベル2キャッシュからの取得820と、プレデコーダ830と、書き込みステージ840と、命令アライメントステージ850と、デコード及び実行ステージ860とを含む。
レベル1キャッシュステージからの取得810では、アドレスに基づいて、レベル1キャッシュからキャッシュラインが取得される。キャッシュラインは、図3乃至6に例示する典型的なプログラムセグメントに似た1又は複数のプログラムセグメントを含みうる。キャッシュミスがある場合、取得ステージ820に示すように、レベル2キャッシュからキャッシュラインが取得され、プレデコーダ830に転送される。プレデコーダ830は、キャッシュラインにおける命令を構築するグラニュール数を識別する。プレデコーダ830は、命令に対する適切なプレデコードを実行するために、このグラニュール数を利用する。この命令のプレデコードを一旦完了すると、結果として得られるプレデコード情報が、バッファ内に一次的に格納され、キャッシュライン内の次の命令がプレデコードされる。キャッシュライン内に、処理するグラニュールがこれ以上ない場合、パイプラインは、書き込みステージ840に移る。書き込みステージ840では、プレデコードされた情報及びキャッシュラインがレベル1キャッシュに書き込まれる。並行して、プレデコーダ830は、キャッシュライン及びプレデコード情報を命令アライメントステージ850に伝送する。命令アラインメントステージ850では、キャッシュライン内の命令が、整列され、次のデコード及び実行ステージ860のために準備される。
プレデコーダ830は、命令とは似ていない組込データをプレデコードしないことが注目されるべきである。しかしながら、組込データが命令に似ている場合、組込データ及び潜在的なパディングがプレデコードされうる。上述したように、そのような無効なプレデコード情報は重要ではない。なぜなら、プログラムフローによってプログラムが実際に実行している場合、プログラムカウンタは、組込データ又は組込パディングを実行するように指示されないからである。本発明の実施形態は、図示するパイプライン800に限定されず、可変長命令セットをプレデコードするプレデコード動作を含むどのパイプラインプロセッサに対しても適用可能である。
図3乃至図6に示すようなプログラムセグメントでは、もしもグラニュールが、命令セット内の命令として認識されないのであれば、プレデコーダは、グラニュール毎ベースで、プログラムセグメント上で動作するだろう。グラニュールが、命令セット内の命令であると認識される場合、命令全体をプレデコードするために、1又は複数の追加のグラニュールがチェックされる。命令セット内の命令に似るようにパディング内容を符号化することによって、プレデコーダは、次の命令に対してより効率的に追跡しうる。
図9は、本発明の実施形態に従って、32,24,16,及び8ビットの命令を有する命令セットに対する一定サイズのパディング900のためのテレスコピック(telescopic)な符号化アプローチを例示する。上記式(2)に従って、この特定の可変長を持つ命令セットの場合、最大サイズのパッドは3グラニュール又はバイトである。パッド900は、組込データの終わりにおいて、組込データから次の命令への移行が発見された場合にはいつでも挿入される。このパッド900は、命令のグラニュールとして認識されないデータからなるかもしれない。あるいは、パッド900は、命令セットから取得された命令の可変的な組合せから成るかもしれない。例えば、パディングは、3つの8ビットの命令、すなわち、テレスコピックな符号化を含みうる。テレスコピックな符合化は、24ビット命令の最初のバイトとして認識されるように符号化される第1のバイト910と、16ビット命令の最初のバイトとして認識されるように符号化される第2のバイト920と、8ビットの命令として認識されるように符号化される第3のバイト930とを含みうる。24ビットのパッド900のテレスコピックな符号化によって、プレデコーダ830は、組込データを命令として誤ってデコードすることによって、24ビットパッドのどこでプレデコード動作が終わろうとも、24ビットのパッド900の後に、次の命令との同期を取ることができるであろう。
図10は、本発明の第1の実施形態に従って、プログラムコード740のようなプログラムコードに一定サイズのパディングを挿入する方法1000を例示するフローチャートである。コンピュータ710上で動作している上述したソフトウェア730は、方法1000の各ステップを実施しうる。ステップ1010では、方法は、パイプラインプロセッサによってサポートされる可変長命令セットの長さを分析し、パディングサイズを決定する。ステップ1010では、パディングサイズを決定するために上記式(2)が使用される。ステップ1015では、パディング内容が決定される。1つの例は、その長さがパディングサイズに等しい命令セットから、周知の命令のパディングを構成することである。例えば、16ビット命令と32ビット命令との両方を有する可変長命令では、パディングサイズは16ビットである。従って、パディングとして挿入される命令セットから16ビット命令を選択されたい。別の例では、命令セットから最短の命令を選択し、そして、同じサイズのパディングになるまで何度も連結することによって、パディングを構築されたい。更なる例は、テレスコピックな符号化を考案することであるか、あるいは、もしもそれがあるのであれば、図9に記載するような命令セットからテレスコピックな命令を選択することであろう。別の例では、パディングは、命令セット内の命令とは異なるデータを含みうる。図3に関連して説明するように、組込データ又はパディングのプレデコードから得られるプレデコード情報は重要ではない。なぜなら、プログラムフローは、通常は、組込データ又はパディングが実行されるようにしないだろうからである。あるいは、実行ステージは、実行ステージが組込データ又はパディングの実行を試みるありそうもない状況におけるパディングを認識するように修正されうることが認識されるだろう。
ステップ1020では、ソフトウェアコンパイラ又はアセンブラステップの何れかによるプログラムコード生成中、方法は、組込データから次の命令への移行点があるかを判定する。組込データがない場合、方法はステップ1040に移る。組込データが存在する場合、方法はステップ1030に移る。ステップ1030では、組込データから次の命令への移行点においてパディングがプログラムコードに挿入される。ステップ1040では、方法は、プログラムコード生成が完了しかたを判定する。完了した場合には、方法1000は終了し、そこに挿入されたパディングを用いてプログラムコードが生成される。完了していない場合、方法1000はステップ1020に進み、組込データから次の命令への移行点においてパディングを挿入し続ける。方法が完了した時、組込データが命令に似ている場合には、生成されたプログラムは、プレデコーダが、可変長命令を命令として正しく認識できるようにパディングを含むだろう。
図11は、本発明の第2の実施形態に従って可変サイズのパディングをプログラムコードに挿入する方法1100を例示するフローチャートである。上述したように、コンピュータ710で動作するソフトウェア730は、方法1100のステップを実行しうる。ステップ1110では、方法は、可変長命令セットを分析して、グラニュールが、最短の命令サイズと等しいかを判定する。あるいは、方法は、単に、グラニュールサイズを知っているか、あるいは、伝えられる。このステップは、ソフトウェア730にコンパイラオプションを設定することとして具体化されうる。これは、ソフトウェア730に、命令セット内の最短長さの命令を通知する。あるいは、ソフトウェア730は、命令セットから、命令を含むプログラムコードを生成するので、ソフトウェア730は、最短長さの命令を知っているかもしれず、このステップは単に、1グラニュールのサイズを決定するために、ソフトウェア730の実行中に変数を読み取ることを含む。ステップ1120では、プログラムコードの命令ストリームへのコンパイル又はアセンブルの間、方法1100は、命令ストリーム内の定数のような組込データのグラニュールが、可変長命令セットからの命令と似ているように符号化されたかを判定する。判定結果が偽である場合、方法1100はステップ1125に移る。ステップ1125では、方法は、コンパイル又はアセンブリが終了したかを判定する。終了したのであれば方法1100は終了する。終了していないのであれば、方法1100は、ステップ1120に移ることにより継続する。
ステップ1120に戻って、組込データのグラニュールが、命令に似ているように符号化されたのであれば、方法1100はステップ1130に移る。ステップ1130では、方法1100は、命令ストリームの次のX−1個のグラニュールを検査する。ここでXは、似ている命令のグラニュールのサイズである。ステップ1135では、方法1100は、命令に似るように符号化された組込データのグラニュール後から始めて、次のX−1個のグラニュールを検討することによって、もしあれば、組込データから次の命令への移行後のグラニュール数Nを決定する。
言い換えれば、この決定ステップは、組込データのグラニュールが似ている命令のプレデコードを完了するために、次のプレデコーダがチェックするグラニュールの数を考慮する。例えば、グラニュールが1バイトであり、データのグラニュールが、32ビットの命令の最初のバイトに似ている場合、組込データから次の命令への移行があるかを判定するために、方法1100は、命令ストリームから次の3バイトを検査する。
方法1100は、ステップ1138に進み、Nがゼロより大きいかが判定される。Nがゼロを越えるものでなければ、命令と似ている組込データのグラニュールは、次のプレデコーダについて何の意味も持たないだろう。なぜなら、潜在的なプレデコード誤りによって引き起こされる変位量は、似ている命令を有する組込データ内であるからである。従って、方法はステップ1125に移る。Nが0を越える場合、方法は、ステップ1140に移る。ステップ1140では、方法1100は、組込データから次の命令への移行にパッドを挿入する。挿入されたパッドは、ステップ1130で知られた組込データから次の命令への移行を通過したグラニュール数に等しいサイズNを有する。この方法が終了する場合、生成されたプログラムコードは、プレデコーダが、組込データが命令に似ている場合に、可変長命令を、命令として正しく認識できるようにパディングを含むだろう。
図5は、方法1100の実例となる結果を示すので、例えば、パディング530のない図5を参照する。データバイト526が偶然にも24ビット命令の最初の8ビットに似ており、かつ、1グラニュールが8ビットに等しいことを思い出すと、方法1100は、データバイト526の後、次のX−1、すなわち2グラニュールを検査するだろう。最初のグラニュールを検査する際、方法1100は、8ビットのSTOR命令516を認識し、組込データから命令への移行が起こったと判定するだろう。次のグラニュールを検査する際、方法1100は、MULT命令518の最初のバイトを認識するだろう。MULT命令518の最初のバイトは、移行から2グラニュール離れているので、Nは2グラニュールに等しい。その結果、図5に示すように、パディング530の2つのグラニュールが、移行時に挿入される。コンパイル又はアセンブリが完了する場合、プログラムコードは、異なる長さを有する挿入されたパディングを含みうる。
本発明が実施形態に関して記載されている一方、種々様々な実装が、上記説明、及び特許請求の範囲と一貫して、当業者によって適用されうることが認識されよう。

Claims (20)

  1. 組込データセグメント、及び命令セットからの命令を含む命令ストリングの正確なプレデコードを保証する方法であって、前記命令セットは、可変長の命令を有し、前記命令セット内の最短の命令の長さをグラニュールと定義し、前記命令セット内の最長長さの命令を構成するグラニュール数をMAXと定義し、前記方法は、
    プログラムが前記命令ストリングにコンパイル又はアセンブルされる場合、第1の組込データセグメントの終わりを判定することと、
    前記第1の組込データセグメントの終わりに、長さMAX−1のパディングを挿入することと
    を備える方法。
  2. 前記パディングは、前記命令セット内の何れの命令とも異なるように符号化される請求項1に記載の方法。
  3. 前記パディングは、互いに連結された前記命令セットのうちの複数の命令を含むように符号化される請求項1に記載の方法。
  4. 前記パディングは、テレスコピックに符号化される請求項1に記載の方法。
  5. 最長の命令は32ビットであり、最短の命令は8ビットであり、その他の命令は24ビット及び16ビットであり、パディングは3バイトであり、前記テレスコピックに符号化されたパディングは、24ビット命令の最初のバイトに見える第1のバイトと、16ビット命令の最初のバイトに見える第2のバイトと、8ビット命令に見える第3のバイトとを有する請求項4に記載の方法。
  6. 前記組込データセグメントの終わりを判定することは更に、
    前記命令ストリング内のその後の命令が、前記組込データセグメントの後に続く場合に、前記組込データセグメントから前記その後の移行を認識することを備える請求項1に記載の方法。
  7. 最短の命令は8ビットである請求項1に記載の方法。
  8. 第2の組込データセグメントの終わりを判定することと、
    前記第2の組込データセグメントの終わりに、長さMAX−1のパディングを挿入することと
    を更に備える請求項1に記載の方法。
  9. 最短の命令は16ビットである請求項1に記載の方法。
  10. 最長の命令は32ビットである請求項9に記載の方法。
  11. 組込データ、及び命令セットからの命令を含む命令ストリングの正確なプレデコードを保証する方法であって、前記命令セットは、可変長の命令を有し、前記命令セット内の最短の長さの命令をグラニュールと定義し、前記方法は、
    組込データのグラニュールが、前記命令セット内の命令と似ているように符号化されたかを判定することと、
    前記命令ストリングの少なくとも次のX−1個のグラニュールを検査することであって、
    Xは、前記似ている命令のグラニュールのサイズであることと、
    組込データから次の命令への移行後のグラニュール数Yを決定することと、
    前記Yが0より大きい場合には、前記移行後、サイズYからなるパディングを挿入することと
    を備える方法。
  12. 前記パディングは、前記命令セット内のどの命令とも異なるように符号化される請求項11に記載の方法。
  13. 前記パディングは、互いに連結された前記命令セットのうちの複数の命令を含むように符号化される請求項11に記載の方法。
  14. 前記パディングはテレスコピックに符号化される請求項11に記載の方法。
  15. 最短の命令は8ビットである請求項11に記載の方法。
  16. 最短の命令は16ビットである請求項11に記載の方法。
  17. コンピュータ読取可能媒体のコンテンツが、正しいプレデコードを保証するコンピュータ読取可能媒体であって、
    組込データと、
    前記組込データに隣接しているパディングと、
    前記パディングに隣接している可変長命令セットからの1又は複数の連続した命令とを備えるコンピュータ読取可能媒体。
  18. 前記可変長命令セットにおける最短の命令の長さをグラニュールと定義し、最長の命令の長さMAXが1又は複数のグラニュールの倍数であり、パディングサイズは、MAX−1個のグラニュールに等しい請求項17に記載のコンピュータ読取可能媒体。
  19. 組込データ、及び命令セットからの命令を含む命令ストリングの正確なプレデコードを保証するコンピュータシステムであって、前記命令セットは、可変長の命令を有し、前記命令セット内の最短の長さの命令をグラニュールと定義し、前記命令セット内の最長の命令を構成するグラニュール数をMAXと定義し、前記コンピュータシステムは、
    組込データから連続命令への移行を検出する手段と、
    前記組込データの後に、長さMAX−1のパディングを挿入する手段と
    を備えるコンピュータシステム。
  20. コンピュータ読取可能媒体のコンテンツが、コンピュータシステムに対して、命令ストリングへのパディング挿入を実行させるコンピュータ読取可能媒体であって、前記命令ストリングは、組込データ、及び可変長命令セットからの命令を含み、前記コンピュータは、プログラムコードをコンパイルするプログラムを有し、前記命令セット内の最短の命令の長さをグラニュールと定義し、
    前記命令セット内の最長の命令を構成するグラニュール数をMAXと定義することと、 組込データから連続命令への移行を検出することと、
    前記組込データの後に、長さMAX−1のパディングを挿入することと
    からなる各ステップを実行することによって、前記コンテンツが、コンピュータシステムに対して、命令ストリングへのパディング挿入を実行させるコンピュータ読取可能媒体。
JP2011133198A 2005-02-25 2011-06-15 正確なプレデコードを保証する方法及び装置 Pending JP2011238251A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/066,957 2005-02-25
US11/066,957 US7376815B2 (en) 2005-02-25 2005-02-25 Methods and apparatus to insure correct predecode

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2007557203A Division JP5221153B2 (ja) 2005-02-25 2006-02-24 正確なプレデコードを保証する方法及び装置

Publications (1)

Publication Number Publication Date
JP2011238251A true JP2011238251A (ja) 2011-11-24

Family

ID=36570932

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2007557203A Expired - Fee Related JP5221153B2 (ja) 2005-02-25 2006-02-24 正確なプレデコードを保証する方法及び装置
JP2011133198A Pending JP2011238251A (ja) 2005-02-25 2011-06-15 正確なプレデコードを保証する方法及び装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2007557203A Expired - Fee Related JP5221153B2 (ja) 2005-02-25 2006-02-24 正確なプレデコードを保証する方法及び装置

Country Status (9)

Country Link
US (1) US7376815B2 (ja)
EP (1) EP1866745B1 (ja)
JP (2) JP5221153B2 (ja)
KR (1) KR101019393B1 (ja)
CN (1) CN101160560B (ja)
CA (1) CA2598704A1 (ja)
IL (1) IL185427A0 (ja)
RU (1) RU2405188C2 (ja)
WO (1) WO2006091857A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602005007216D1 (de) * 2004-05-27 2008-07-10 Nxp Bv Mikroprozessor und verfahren zur anweisungsausrichtung
US7376815B2 (en) * 2005-02-25 2008-05-20 Qualcomm Incorporated Methods and apparatus to insure correct predecode
US8214376B1 (en) * 2007-12-31 2012-07-03 Symantec Corporation Techniques for global single instance segment-based indexing for backup data
US9268573B2 (en) * 2012-11-02 2016-02-23 Michael Rolle Methods for decoding and dispatching program instructions
US9495542B2 (en) * 2013-02-28 2016-11-15 Trustees Of Boston University Software inspection system
TWI522102B (zh) * 2013-04-30 2016-02-21 長庚醫療財團法人 組合物於製備治療或預防性治療痤瘡的藥物之用途
US10795681B2 (en) * 2014-12-23 2020-10-06 Intel Corporation Instruction length decoding
US11836035B2 (en) 2021-08-06 2023-12-05 Western Digital Technologies, Inc. Data storage device with data verification circuitry

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6460116B1 (en) * 1998-09-21 2002-10-01 Advanced Micro Devices, Inc. Using separate caches for variable and generated fixed-length instructions
JP2008535043A (ja) * 2005-02-25 2008-08-28 クゥアルコム・インコーポレイテッド 正確なプレデコードを保証する方法及び装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448746A (en) * 1990-05-04 1995-09-05 International Business Machines Corporation System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
US6253309B1 (en) * 1998-09-21 2001-06-26 Advanced Micro Devices, Inc. Forcing regularity into a CISC instruction set by padding instructions
US6192465B1 (en) * 1998-09-21 2001-02-20 Advanced Micro Devices, Inc. Using multiple decoders and a reorder queue to decode instructions out of order
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
DE602005007216D1 (de) 2004-05-27 2008-07-10 Nxp Bv Mikroprozessor und verfahren zur anweisungsausrichtung

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6460116B1 (en) * 1998-09-21 2002-10-01 Advanced Micro Devices, Inc. Using separate caches for variable and generated fixed-length instructions
JP2008535043A (ja) * 2005-02-25 2008-08-28 クゥアルコム・インコーポレイテッド 正確なプレデコードを保証する方法及び装置

Also Published As

Publication number Publication date
EP1866745B1 (en) 2014-07-23
US20060195830A1 (en) 2006-08-31
IL185427A0 (en) 2008-01-06
RU2405188C2 (ru) 2010-11-27
KR20070106789A (ko) 2007-11-05
JP5221153B2 (ja) 2013-06-26
CA2598704A1 (en) 2006-08-31
KR101019393B1 (ko) 2011-03-07
CN101160560B (zh) 2012-03-28
CN101160560A (zh) 2008-04-09
RU2007135359A (ru) 2009-03-27
US7376815B2 (en) 2008-05-20
EP1866745A1 (en) 2007-12-19
JP2008535043A (ja) 2008-08-28
WO2006091857A1 (en) 2006-08-31

Similar Documents

Publication Publication Date Title
JP2011238251A (ja) 正確なプレデコードを保証する方法及び装置
JP2008535043A5 (ja)
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
JP3662258B2 (ja) X86・dspコアを有しかつx86命令をdsp命令へマッピングするdspファンクションデコーダを備える中央処理装置
US9116688B2 (en) Executing prefix code to substitute fixed operand in subsequent fixed register instruction
JP5837126B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
JP5313228B2 (ja) 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア
TWI515567B (zh) 微處理器的轉譯位址快取記憶體
JPH11296381A (ja) 仮想マシン及びコンパイラ
KR100942408B1 (ko) 가변 길이 명령어에 대한 절전 방법 및 장치
US20060253654A1 (en) Processor and method for executing data transfer process
WO2022127441A1 (zh) 一种并行提取指令的方法与可读存储介质
CN115576608A (zh) 处理器核、处理器、芯片、控制设备和指令融合方法
JPH08305581A (ja) プログラム変換装置及びプロセッサ
JP3741870B2 (ja) 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
CN117008975A (zh) 一种指令融合分割方法、处理器核和处理器
CN112540795A (zh) 指令处理装置和指令处理方法
JP2011501286A (ja) ジャババイトコード変換方法
JP3861452B2 (ja) プロセッサおよびプログラム生成装置
CN111209044A (zh) 指令压缩方法及装置
US7162585B2 (en) Semiconductor memory device storing part of program designated by programmer, and software development apparatus for system using the same
CN112631657B (zh) 用于字符串处理的字节比较方法以及指令处理装置
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP3422690B2 (ja) 実行プログラム生成装置
JP4349392B2 (ja) プロセッサおよびプログラム生成装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20121113

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130213

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130218

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130702