説明

命令プリデコーダ付きダイレクトメモリアクセスユニット

いくつかの実施形態によれば、命令はダイレクトメモリアクセスユニットにおいてプリデコードされる。


【発明の詳細な説明】
【背景技術】
【0001】
プロセッサは命令パイプラインを用いて、命令を実行する場合がある。プロセッサパイプラインは、例えば命令をフェッチ、デコード及び実行するステージを含んでいてもよい。プロセッサが実行ステージにおいて命令を実行する間に、次のシーケンシャル命令はデコードステージにおいて同時にデコードされる。(更にフェッチステージにおいて、次の命令も同時にフェッチされる)。各ステージは、1つ以上のクロックサイクルに関連することに留意されたい(例えば、デコードステージはプリデコードステージ及びデコードステージを含んでも良く、これらのステージのそれぞれは、1つのクロックサイクルに関連している)。異なるパイプラインステージは、異なる命令の上で同時に動作できるので、プロセッサのパフォーマンスは向上される。
【発明の開示】
【発明が解決しようとする課題】
【0002】
しかしながら、命令がデコードされた後で、プロセッサは次のシーケンシャル命令が実行されるべきでないことを判断するかもしれない(例えば、デコードされた命令がジャンプ又は分岐命令に関連しているとき)。この場合、デコート及びフェッチステージにおいてその時点に存在する命令はパイプラインから除かれてもよい。この状況は、分岐予測ミスペナルティと呼ばれるが、プロセッサのパフォーマンスを低下させる。
【図面の簡単な説明】
【0003】
【図1】装置のブロック図である。
【0004】
【図2】命令パイプラインステージを表す。
【0005】
【図3】いくつかの実施形態における、装置のブロック図である。
【0006】
【図4】いくつかの実施形態における方法である。
【0007】
【図5】いくつかの実施形態における命令パイプラインステージを表す。
【0008】
【図6】いくつかの実施形態における装置の一例である。
【0009】
【図7】いくつかの実施形態におけるシステムのブロック図である。
【発明を実施するための最良の形態】
【0010】
図1は命令(例えば、ブートアップ処理の間にグローバルメモリ110にロードされる命令)を格納するためのグローバルメモリ110を含む装置100のブロック図である。グローバルメモリ110は、例えば、ワード当たりnビット(例えば32ビット)であるmワード(例えば100000ワード)を格納してもよい。
【0011】
ダイレクトメモリアクセス(DMA)エンジン120はグローバルメモリ110から命令をシーケンシャルに読み出して、プロセッシングエレメントにおいてローカルメモリ130(例えば、プロセッシングエレメントのキャッシュメモリ)に命令を転送してもよい。例えば、DMAエンジン120へのnビット入力パスはグローバルメモリ110から命令を読み出す目的で使われてもよい。DMAエンジン120はその後、nビット出力パスを介してローカルメモリ130に命令を転送する目的で、ライト信号(WR)及びライトアドレス(WRアドレス)を用いてもよい。
【0012】
プロセッサ140はその後で、nビットパスを介してローカルメモリ130からシーケンシャル命令を読み出す目的で、リード信号(RD)及びリードアドレス(RDアドレス)を用いてもよい。プロセッサ140はその後、命令を実行してもよい。パフォーマンスを向上する目的で、プロセッサ140は図2に示す命令パイプライン200を用いて、命令を実行してもよい。プロセッサ140が実行ステージ230において命令を実行する間に、次のシーケンシャル命令はデコードステージ220、222において同時にデコードされる(更にフェッチステージ210において、次の命令も同時にフェッチされる)。
【0013】
1つのステージは、特に比較的高いクロックレートにおいて、1つ以上のクロックサイクルに関連してもよいことに留意されたい。例えば、図2で示すパイプライン200において、命令をフェッチする(C0、C1)ことに2つのクロックサイクルが必要とされる。同様に、命令をデコードすることには、命令を「プリデコードされた」命令に部分的に変換するための1つのクロックサイクル(C2)、及びプリデコードされた命令を実行可能な完全にデコードされた命令に変換するためのもう1つのクロックサイクル(C3)が必要である。
【0014】
命令がデコードされた後で、プロセッサ140は次のシーケンシャル命令は実行しないと判断する場合がある(例えばデコードされた命令がジャンプ又は分岐命令に関連しているとき)。この場合、デコードステージ220、222及びフェッチステージ210にその時点である命令は、パイプライン200から除かれてもよい。実行されない命令のフェッチ及びデコードをした結果として無駄になったクロックサイクルは「分岐遅れスロット」と呼ばれる。
【0015】
分岐遅れスロットの数を減らすことは、プロセッサ140のパフォーマンスを向上させるであろう。例えば、もし部分的に又は完全にデコードされた命令がグローバルメモリ110に格納された場合、プリデコードステージ220はパイプライン200から除かれてもよく、分岐遅れスロットの数は減少するであろう。しかしながら、プリデコードされた命令は、元の命令より著しく大きくなるであろう。例えば、32ビットの命令はデコードされた後では、100ビットになるかもしれない。それゆえ、グローバルメモリ110にデコードされた命令を格納することは実用的でない(なぜなら、必要とされるメモリエリアがあまりにも大きくなってしまうからである)。
【0016】
図3はいくつかの実施形態における装置300のブロック図である。前記と同様に、DMAユニット320はシーケンシャルに入力パスを介してメモリユニット310から命令を読み出す。しかしこの形態においては、DMAユニット320は更に命令をプリデコードするための命令プリデコーダを含む。
【0017】
図4はいくつかの実施形態における、DMAユニット320によって実行されてもよい方法である。ここに記されたいくつかの方法はハードウェア、ソフトウェア(マイクロコードを含む)、又はハードウェアとソフトウェアとの組み合わせによって実行されてもよいことに留意されたい。例えば、記憶媒体はマシンによって実行されたとき、ここで記されたどれかの形態に準じたパフォーマンスをもたらす命令を該媒体上に格納してもよい。
【0018】
402において、命令はメモリユニット310から読み出される。DMAユニット320はそれから404において命令をプリデコードする。DMAユニット320は、例えば、部分的にもしくは完全に命令をデコードしてもよい。プリデコードされた命令は、406において、DMAユニット320からプロセッシングエレメントにおけるローカルメモリ330へ提供される。
【0019】
図3に戻る。プロセッサ340はそれからローカルメモリ330からプリデコードされた命令を読み出し、命令を実行することができる。図5はいくつかの実施形態における命令パイプライン500を表す。DMAユニット320は命令をすでにプリデコードしているので、プロセッサ340が完全にデコードされた命令(分岐遅れスロットC0〜C2)を生成するのに要求されるクロックサイクルの数は図2と比べて減少するであろう。そして、プロセッサ340のパフォーマンスは向上されるであろう。更に、ローカルメモリ330だけがプリデコードされた命令を格納するのに十分な大きさである必要があり(メモリユニット310はより少ない元の命令を格納する)、結果として生じるメモリエリアにおける増加は限られたものになるであろう。もしDMAユニット320が完全に命令をデコードした場合、分岐遅れスロットの数はさらに減少するであろう(ローカルメモリ330のサイズは完全にデコードされた命令を格納する目的で更に増加する必要はあるだろうが)。
【0020】
図6はいくつかの実施形態における、nビット命令を格納するためのグローバルメモリ610を含む装置600の一例である。DMAエンジン620はシーケンシャルに命令を読み出し、命令プリデコードロジック622はqビットのプリデコードされた命令を生成する目的で、各命令をプリデコードする(これは例えばキャッシュ・ミスに関するものであり、又はソフトウェアで制御されるDMAコマンドによって成される)。
【0021】
DMAエンジン620はその後、qビット出力パスを介してローカルメモリ630にプリデコードされた命令を転送する目的で、ライト信号(WR)及びpビットライトアドレス(WRアドレス)を用いてもよい。ローカルメモリ630は、例えばプリデコードされた2pワードを格納できるプロセッサキャッシュであってもよい(例えば10ビットライトアドレスは1024の命令にアクセスできる)。命令はプリデコードされているので、qはnより大きくなるであろうことに留意されたい(例を挙げると、プリデコードされた命令は元の命令より大きいからである)。ローカルメモリ630に格納されるプリデコードされた命令は、例えば実行ユニット制御信号及び/又はフラグを含んでもよい。
【0022】
プロセッサ140はその後、qビットパスを介してローカルメモリ630からプリデコードされた命令を読み出す目的でリード信号(RD)及びpビットリードアドレス(RDアドレス)を用いてもよい。プロセッサ640は、例えば、図2と比べてより少ないパイプラインステージを持つ命令を実行する縮小命令セットコンピュータ(RISC)デバイスを含んでもよい(例えばデコードに関連する分岐遅れスロットの少なくともいくつかは必要とされなくなるからである)。
【0023】
図7はいくつかの実施形態におけるシステム700のブロック図である。具体的には、システム700は多方向アンテナ740を備えたワイアレスデバイスである。システム700は、例えば符号分割多重接続(CDMA)基地局であってもよい。
【0024】
ワイアレスデバイスはワンチップ上システム(SOC)装置710、同期ダイナミックランダムアクセスメモリ(SDRAM)ユニット720、「PCI Express 1.0」(2002)という題のPCI標準業界団体(SIG)文書に従って動作するユニット等の周辺機器接続(PCI)インターフェースユニット730を含む。SOC装置710は、例えば、デジタル信号プロセッサ(DSP)命令及びデータを格納するグローバルメモリを備えるデジタルベースバンドプロセッサであってもよい。更に、複数のDMAエンジンはここに記されたいくつかの形態に従って、グローバルメモリから命令を読み出し、その命令をデコードし、プリデコードされた命令を複数のDSP(例えばDSP1〜DSPN)に提供してもよい。
【0025】
以下に多様な更なる形態を示す。これらは全ての成し得る形態の定義を構成するものではなく、当業者であれば他の多くの形態が実行できることは理解できるであろう。更に、明確にする目的で以下の形態は簡潔に記されるが、これら及び他の形態、応用を適宜適合する目的で上記記載に対して変更を行う手法は当業者であれば理解できるであろう。
【0026】
いくつかの実施形態において、DMAユニットは内部命令プリデコーダを含む記載があるが、その代わりに命令プリデコーダはDMAユニットの外部にあってもよい。例えば、DMAユニットの外部にあるユニットは部分的に又は完全に、プロセッシングエレメント外部のメモリから「インフライト」であるように命令をデコードしてもよい。更にいくつかの実施形態はSOC実装の形で記載されているが、ここに記載のいくつかの、又は全ての要素は複数の集積回路を用いることにより実現されてもよい。
【0027】
ここに記されたいくつかの形態は実例のためだけにある。この記載から、他の形態も請求項の範囲内における修正及び変更を伴い実施されてもよいことは当業者であれば理解できるであろう。

【特許請求の範囲】
【請求項1】
メモリユニットから命令を読み出す工程と、
ダイレクトメモリアクセスユニットにおいて前記命令をプリデコードする工程と、
前記ダイレクトメモリアクセスユニットからプロセッシングエレメントに前記プリデコードされた命令を提供する工程とを含む方法。
【請求項2】
前記提供する工程は、前記プロセッシングエレメントに提供される前記プリデコードされた命令をローカルメモリ内に格納する工程を含む請求項1に記載の方法。
【請求項3】
前記プリデコードされた命令は、前記プロセッシングユニットによって実行される目的で、完全にデコードされた命令である請求項2に記載の方法。
【請求項4】
前記プロセッシングエレメントにおいて前記プリデコードされた命令をデコードし、
プロセッサパイプラインを介して前記デコードされた命令を実行する工程を更に含む請求項1に記載の方法。
【請求項5】
ブートアップ処理の間に、前記メモリユニットに命令をロードする工程を更に含む請求項1に記載の方法。
【請求項6】
前記プロセッシングエレメントは、縮小命令セットコンピュータデバイスである請求項1に記載の方法。
【請求項7】
前記プリデコードされた命令は、実行制御信号を含む請求項6に記載の方法。
【請求項8】
メモリユニットから命令を受信するための入力パスと、
前記命令をプリデコードするための命令プリデコーダを含むダイレクトメモリアクセスユニットと、
前記ダイレクトメモリアクセスユニットからプロセッシングエレメントにプリデコードされた命令を提供するための出力パスとを含む装置。
【請求項9】
前記入力パスに結合した前記メモリユニットを更に含む請求項8に記載の装置。
【請求項10】
前記出力パスに結合した前記プロセッシングエレメントを更に含む請求項9に記載の装置。
【請求項11】
前記プロセッシングエレメントは、前記プリデコードされた命令を格納するためのローカルメモリを含む請求項10に記載の装置。
【請求項12】
命令プリデコーダを含むダイレクトメモリアクセスユニットにそれぞれが関連している複数のプロセッシングエレメントを含む請求項10に記載の装置。
【請求項13】
前記入力パスはnビットで、前記出力パスはqビットであり、n<qである請求項10に記載の装置。
【請求項14】
前記ダイレクトメモリアクセスユニット、前記メモリユニット及び前記プロセッシングエレメントは1つの集積回路上に形成される請求項10に記載の装置。
【請求項15】
前記プロセッシングエレメントは、命令パイプラインを備える縮小命令セットコンピュータデバイスデバイスである請求項10に記載の装置。
【請求項16】
マシンによって実行されるとき、
メモリユニットから命令を読み出す工程と、
ダイレクトメモリアクセスユニットにおいて前記命令をプリデコードする工程と、
前記ダイレクトメモリアクセスユニットからプロセッシングエレメントに前記プリデコードされた命令を提供する工程とをもたらす命令を格納する記憶媒体を含む物品。
【請求項17】
前記提供する工程は、前記プロセッシングエレメントに提供される前記プリデコードされた命令をローカルメモリ内に格納する工程を含む請求項16に記載の物品。
【請求項18】
命令を格納するためのグローバルメモリと、
命令プリデコーダと、
プロセッサとを含む装置であって、
前記命令プリデコーダは、前記グローバルメモリから前記プロセッサに転送されるよう命令をプリデコードする装置。
【請求項19】
前記グローバルメモリユニットから読み出される前記命令の手配、及び
前記プロセッサに提供されるプリデコードされた命令の手配をするためのダイレクトメモリアクセスユニットを更に含む請求項18に記載の装置。
【請求項20】
前記プリデコードされた命令は、実行制御信号を含む請求項18に記載の装置。
【請求項21】
多方向アンテナと、
ダイレクトメモリアクセスユニットを備える装置とを含むシステムであって、
前記ダイレクトメモリアクセスユニットは、
メモリユニットから命令を受信するための入力パスと、
前記命令をプリデコードするための命令プリデコーダと、
プロセッシングエレメントにプリデコードされた命令を提供するための出力パスとを含むシステム。
【請求項22】
前記装置は、デジタルベースバンドプロセッサである請求項21に記載のシステム。
【請求項23】
前記デジタルベースバンドプロセッサは、ワンチップ上システムとして形成される請求項22に記載のシステム。
【請求項24】
前記システムは、符号分割多重接続基地局である請求項21に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2007−514244(P2007−514244A)
【公表日】平成19年5月31日(2007.5.31)
【国際特許分類】
【出願番号】特願2006−544076(P2006−544076)
【出願日】平成16年12月10日(2004.12.10)
【国際出願番号】PCT/US2004/041687
【国際公開番号】WO2005/066766
【国際公開日】平成17年7月21日(2005.7.21)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】