(57)【特許請求の範囲】
【請求項１】
メモリへのシステムアクセスを制御するための方法であって、
第1のプロセッサ命令および第2のプロセッサ命令を受け取るステップと、
前記第1のプロセッサ命令および前記第2のプロセッサ命令がアーキテクチャ的に完了できるかどうかを評価するステップと、
前記第1のプロセッサ命令と前記第2のプロセッサ命令の少なくとも1つがアーキテクチャ的に完了できない場合、前記第1のプロセッサ命令と前記第2のプロセッサ命令の両方を遅らせるステップと、
前記第1のプロセッサ命令と前記第2のプロセッサ命令の両方がアーキテクチャ的に完了でき、前記第1のプロセッサ命令と前記第2のプロセッサ命令の少なくとも1つが書込み命令である場合、前記メモリのプリチャージクロックを調整して評価遅延に対処するステップと
を含む、方法。
【請求項２】
前記評価遅延が、前記第1のプロセッサ命令および前記第2のプロセッサ命令がアーキテクチャ的に完了できるかどうかを評価するのに十分な時間である、請求項1に記載の方法。
【請求項３】
前記評価遅延が、前記メモリに対する書込み列の選択の際に対処される、請求項2に記載の方法。
【請求項４】
前記第1のプロセッサ命令と前記第2のプロセッサ命令のいずれかが読取り命令である場合、前記メモリの読取り制御機構が、前記評価遅延に対処しない、請求項1に記載の方法。
【請求項５】
前記第1のプロセッサ命令と前記第2のプロセッサ命令の両方がアーキテクチャ的に完了でき、前記第1のプロセッサ命令と前記第2のプロセッサ命令の少なくとも1つがメモリアクセス命令である場合、
前記評価遅延に対処しない遅延していないクロック信号を、前記メモリの読取り制御機構へ送るステップと、
前記評価遅延に対処する遅延したクロック信号を、前記メモリの書込み制御機構へ送るステップと、
前記遅延していないクロック信号と前記遅延したクロック信号の両方を、前記メモリのプリチャージクロックマルチプレクサへ送るステップと、
前記プリチャージクロックマルチプレクサを選択的に制御して、前記遅延していないクロック信号と前記遅延したクロック信号のうちの1つを、前記プリチャージクロックとして送るステップと
をさらに含む、請求項1に記載の方法。
【請求項６】
前記プリチャージクロックマルチプレクサを制御するステップが、
前記遅延していないクロック信号と前記遅延したクロック信号の両方を前記プリチャージクロックマルチプレクサへ入力するステップと、
前記読取りイネーブル信号を前記プリチャージクロックマルチプレクサの選択された入力へ入力するステップと
を含み、
前記読取りイネーブル信号が読取り命令を示す場合、前記遅延していないクロック信号が前記プリチャージクロックとして前記プリチャージクロックマルチプレクサによって出力され、前記読取りイネーブル信号が読取り命令を示さない場合、前記遅延したクロック信号が前記プリチャージクロックとして前記プリチャージクロックマルチプレクサによって出力される、請求項5に記載の方法。
【請求項７】
前記評価するステップが、前記第1のプロセッサ命令および前記第2のプロセッサ命令のためのデータがキャッシュ中に位置するかどうかを判定するステップを含む、請求項1に記載の方法。
【請求項８】
前記評価するステップがさらに、前記第1のプロセッサ命令がメモリアクセス命令であるかどうかを判定するステップと、前記第2のプロセッサ命令がメモリアクセス命令かどうかを判定するステップとを含む、請求項7に記載の方法。
【請求項９】
前記第1のプロセッサ命令が書込み命令であり、かつ、前記第2のプロセッサ命令のためのデータがキャッシュ中に位置している場合、または前記第2のプロセッサ命令がメモリアクセス命令ではない場合に、書込みイネーブル信号を生成するステップをさらに含む、請求項1に記載の方法。
【請求項１０】
第1の命令を処理するための第1のスロットと、
第2の命令を処理するための第2のスロットと、
前記第1の命令と前記第2の命令の両方がアーキテクチャ的に完了できるかどうかを示す信号を生成するように構成された、システム組合せ論理回路と、
前記第1の命令と前記第2の命令の両方がアーキテクチャ的に完了でき、かつ、前記第1の命令と前記第2の命令のうち少なくとも一方が書込み命令であるときに、メモリのプリチャージクロックを調整して、前記システム組合せ論理回路によって生成される前記信号の遅延に対処するように構成されたマルチプレクサを備える遅延回路と
を含む、メモリアクセスコントローラ。
【請求項１１】
第1のキャッシュメモリであって、前記第1の命令のためのデータが前記第1のキャッシュメモリに記憶されているかどうかを第1のキャッシュヒット信号が示す、第1のキャッシュメモリと、
第2のキャッシュメモリであって、前記第2の命令のためのデータが前記第2のキャッシュメモリに記憶されているかどうかを第2のキャッシュヒット信号が示す、第2のキャッシュメモリと、
をさらに含み、前記システム組合せ論理回路が、前記第1のキャッシュヒット信号と前記第2のキャッシュヒット信号の両方を使う、
請求項10に記載のメモリアクセスコントローラ。
【請求項１２】
前記システム組合せ論理回路がさらに、
前記第2のキャッシュヒット信号を受け取り、前記第1の命令のための記憶イネーブル信号を生成する、第1のスロット組合せ論理回路と、
前記第1のキャッシュヒット信号を受け取り、前記第2の命令のための記憶イネーブル信号を生成する、第2のスロット組合せ論理回路と
を含む、請求項11に記載のメモリアクセスコントローラ。
【請求項１３】
前記第1のスロット組合せ論理回路がさらに、前記第1の命令が記憶命令かどうかを示す第1の命令記憶信号と、前記第2の命令がメモリアクセス命令かどうかを示す第2の命令非依存信号とを受け取り、前記第1のスロット組合せ論理回路が、前記第1の命令が記憶命令であることを前記第1の命令記憶信号が示す場合、かつ、前記第2の命令のための前記データが前記第2のキャッシュメモリの中にあることを前記第2のキャッシュヒット信号が示す場合、または、前記第2の命令がメモリアクセス命令ではないことを前記第2の命令非依存信号が示す場合、前記第1の命令のための前記記憶イネーブル信号を生成し、
前記第2のスロット組合せ論理回路がさらに、前記第2の命令が記憶命令かどうかを示す第2の命令記憶信号と、前記第1の命令がメモリアクセス命令かどうかを示す第1の命令非依存信号とを受け取り、前記第2のスロット組合せ論理回路が、前記第2の命令が記憶命令であることを前記第2の命令記憶信号が示す場合、かつ、前記第1の命令のための前記データが前記第1のキャッシュメモリの中にあることを前記第1のキャッシュヒット信号が示す場合、または、前記第1の命令がメモリアクセス命令ではないことを前記第1の命令非依存信号が示す場合、前記第2の命令のための前記記憶イネーブル信号を生成する、請求項12に記載のメモリアクセスコントローラ。
【請求項１４】
ロード論理回路および記憶論理回路を有するデータアレイをさらに含み、
前記ロード論理回路が、前記第1のキャッシュヒット信号および前記第2のキャッシュヒット信号を受け取り、前記第1のキャッシュヒット信号と前記第2のキャッシュヒット信号のうちの1つが前記データアレイの中での位置を示す場合に、前記ロード論理回路が、前記データアレイの中での前記位置を示すワード線信号を生成し、
前記記憶論理回路が、前記第1の命令のための前記記憶イネーブル信号および前記第2の命令のための前記記憶イネーブル信号を受け取り、前記第1の命令および前記第2の命令のための前記記憶イネーブル信号のうちの1つが前記データアレイの中での位置を示す場合に、前記記憶論理回路が、前記データアレイの中での前記位置を示す書込みチップ選択信号を生成する、請求項12に記載のメモリアクセスコントローラ。
【請求項１５】
前記第1の命令と前記第2の命令のいずれかが書込み命令である場合、前記システム組合せ論理回路が、前記第1の命令と前記第2の命令の両方がアーキテクチャ的に完了できれば、書込みイネーブル信号を生成する、請求項10に記載のメモリアクセスコントローラ。
【請求項１６】
書込みイネーブル信号が生成される場合、前記遅延回路が、前記システム組合せ論理回路が前記書込みイネーブル信号を生成するのにかかる時間とほぼ同じ時間だけ、前記メモリの書込み制御機構を遅延させる、請求項15に記載のメモリアクセスコントローラ。
【請求項１７】
前記メモリのための書込み列の選択および読取り列の選択をさらに含み、前記遅延回路が、前記メモリの前記書込み列の選択を調整して、前記システム組合せ論理回路によって生成される前記信号の前記遅延に対処し、前記メモリの前記読取り列の選択を調整せずに、前記システム組合せ論理回路によって生成される前記信号の前記遅延に対処する、請求項10に記載のメモリアクセスコントローラ。
【請求項１８】
前記マルチプレクサは、第1の入力、第2の入力、出力、および選択線を有し、前記第1の入力が、前記遅延回路によって遅延されない、遅延していないクロックに結合され、前記第2の入力が、前記遅延回路によって遅延される、遅延したクロックに結合され、前記出力がプリチャージクロックを生成し、前記選択線が、読取りイネーブル信号に結合され、
前記マルチプレクサは、前記読取りイネーブルが読取り命令を示す場合に前記遅延していないクロックを前記出力へ渡し、前記読取りイネーブルが読取り命令を示さない場合に前記遅延したクロックを前記出力へ渡す、
請求項10に記載のメモリアクセスコントローラ。
【請求項１９】
音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定位置のデータユニット、およびコンピュータからなる群から選択されるデバイスに組み込まれる、請求項10に記載のメモリアクセスコントローラ。
【請求項２０】
第1のプロセッサ命令を処理するための第1の手段と、
第2のプロセッサ命令を処理するための第2の手段と、
前記第1のプロセッサ命令と前記第2のプロセッサ命令の両方がアーキテクチャ的に完了できるかどうかを示す信号を生成するための計算手段と、
前記第1のプロセッサ命令と前記第2のプロセッサ命令のうち少なくとも一方がアーキテクチャ的に完了できないときには、前記第1のプロセッサ命令と前記第2のプロセッサ命令の両方を遅延させ、前記第1のプロセッサ命令と前記第2のプロセッサ命令の両方がアーキテクチャ的に完了でき、かつ、前記第1のプロセッサ命令と前記第2のプロセッサ命令のうち少なくとも一方が書込み命令であるときには、メモリのプリチャージクロックを調整して、前記計算手段によって生成される前記信号の遅延に対処するための遅延手段と、
を含む、メモリアクセスコントローラ。
【請求項２１】
メモリへのシステムアクセスを制御するための方法であって、
第1のプロセッサ命令および第2のプロセッサ命令を受け取るステップと、
前記第1のプロセッサ命令および前記第2のプロセッサ命令がアーキテクチャ的に完了できるかどうかを評価するステップと、
前記第1のプロセッサ命令と前記第2のプロセッサ命令の少なくとも1つがアーキテクチャ的に完了できない場合、前記第1のプロセッサ命令と前記第2のプロセッサ命令の両方を遅らせるステップと、
前記第1のプロセッサ命令と前記第2のプロセッサ命令の両方がアーキテクチャ的に完了でき、かつ、前記第1のプロセッサ命令と前記第2のプロセッサ命令の少なくとも1つが書込み命令である場合には、評価遅延に対処しない遅延していないクロック信号を、前記メモリの読取り制御機構へ送信し、前記評価遅延に対処する遅延したクロック信号を、前記メモリの書込み制御機構へ送信し、前記遅延していないクロック信号と前記遅延したクロック信号の両方を、前記メモリのプリチャージクロックマルチプレクサへ送信するステップと、
前記プリチャージクロックマルチプレクサを選択的に制御して、前記遅延していないクロック信号と前記遅延したクロック信号のうちの1つを、プリチャージクロックとして送信するステップと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は全般にプロセッサに関し、より具体的には、複数のメモリアクセスを伴う、プロセッサ中の記憶バッファをなくすためのアーキテクチャおよび方法に関する。
【背景技術】
【０００２】
より高速なデータ処理およびデータ操作への需要は、データ処理システムの分野において見られる改善を支える原動力となってきた。改善は、並列処理、パイプライン化、および/またはVery Long Instruction Word (VLIW)処理、さらには、マルチプロセッサ構成および分散メモリシステムを実装したものを含む、より高速で、小型で、複雑なプロセッサおよびデジタルシグナルプロセッサ(DSP)の開発につながってきた。
【０００３】
並列処理は、同時に複数の命令を実行できるようにすることで、プロセッサの全体の速度を向上させることができる。一部の場合には、処理されている命令の数を増やすことで速度を向上させるために、プロセッサはパイプライン化され得る。パイプライン化とは、各段階が命令の実行に必要な小さなステップの1つまたは複数を実行する、別個の段階をプロセッサにおいて提供することを指す。並列処理およびパイプライン化は、複数の命令が実行およびメモリまたは他の回路へのアクセスを同時に試みるので、アーキテクチャ的な依存関係およびタイミングの問題につながり得る。
【０００４】
プロセッサは通常、キャッシュおよび/またはメインメモリに位置する情報にアクセスするための、ロード命令および記憶命令を提供する。ロード命令は、メモリアドレス(命令またはアドレスレジスタ中の)およびターゲットレジスタを含み得る。ロード命令が実行されると、そのメモリアドレスに記憶されているデータが(たとえば、キャッシュ、メインメモリ、または他の記憶手段から)取り出され、ロード命令において特定されたターゲットレジスタに配置され得る。同様に、記憶命令は、メモリアドレスおよびソースレジスタを含み得る。記憶命令が実行されると、ソースレジスタからのデータは、記憶命令において特定されるメモリアドレスに書き込まれ得る。
【０００５】
Very Long Instruction Word (VLIW)プロセッサおよびDSPは、同じパケットに属する命令のグループを実行する。各パケットは、複数のスロットを含む。プロセッサは、現在のパケットのスロット中の命令のすべてが実行を完了すると、次のパケットの処理を開始する。パケット中に実行が遅れた何らかの命令があると、パケット中の他の命令はいずれも完了できない。実行が複数の回数にわたる場合、または危険因子によって停止する場合、アーキテクチャ状態は、パケット中のすべての命令が完了するまで更新されない。プロセッサのアーキテクチャ状態は、プロセッサのレジスタ、キャッシュ、メモリ管理ユニット(MMU)、メインメモリなどの状態を含む。
【０００６】
VLIWパケットは、複数のメモリアクセス命令、たとえば、複数のロード命令、複数の記憶命令、またはロード命令と記憶命令の組合せを含み得る。データは、性能を向上させるためにキャッシュに格納され得る。しかし、パケット中の命令の1つが完了できるとしても、パケット中の他の命令のすべても完了できるようになるまで、そうした命令の1つを完了してはならない。このことは、VLIWパケット内で、アーキテクチャ更新の命令間またはスロット間の依存関係が生じる。たとえば、パケットがロード命令および記憶命令を含む場合、ロード命令のキャッシュヒットイベントと、記憶命令の書込みイネーブルイベントとの間に、アーキテクチャ的なタイミングパスの依存関係が存在し得る。ロード命令がキャッシュヒット(キャッシュ中に記憶されたロード命令のためのデータ)を有さない場合、書込みイネーブルイベントは遅れる。VLIWパケットが2つの記憶操作を含む場合、アーキテクチャ的なスロット間の依存関係は、両方のスロットにおいて記憶命令の書込みイネーブルに影響を与えることに留意されたい。
【０００７】
複数のメモリアクセスの、これらのアーキテクチャ的な依存関係およびタイミング問題は、様々な方法によって解決され得る。1つの方法は、メモリアクセスに競合が存在する時、またはスロット間の依存関係が存在する時に、記憶バッファに更新データを一時的に記憶することであり、メモリの競合が解消された後、または他のスロットを知った後で、記憶バッファからのデータによるキャッシュの更新が完了し得る。記憶バッファのサイズが適切であれば、メモリバンクの競合および遅れたパイプラインの中止を処理し、何らかの速度/周波数の向上を実現するのをより容易にすることができる。しかし、別個の記憶バッファは追加の領域を必要とし、データの依存関係(連想メモリ(CAM)構造)、データバッファリング(深さ)の必要性、記憶バッファ中のデータの古さ、およびアドレスの順序を管理することが、複雑になる。記憶バッファの領域は、VLIWパケット中でサポートされる記憶の数とともに増えるので、記憶バッファによる解決法は、電力、領域、および複雑さの点で経済的ではない可能性があることに留意されたい。別の方法は、クロック周波数/パイプラインの速度を下げて、メモリ段階の前の依存関係を解消できるようにして、タイミングの問題を緩和することである。しかし、これは、プロセッサ全体のクロック周波数に直接影響を与える性能の損失をもたらし、ロード/読取りの遅延を増やし、メモリバンクの競合を処理するのをより難しくし得る。さらに別の方法は、ワード線がロードアクセスに対しては早いクロックを得て、記憶アクセスに対しては遅いクロックを得る、別個の読取りワード線クロックと書込みワード線クロックを使うことである。しかし、別個の読取りワード線クロックと書込みワード線クロックによって、読取りおよび書込みのためのメモリアレイのタイミング検証の複雑さが増し、メモリバンクの競合を処理するのがより難しくなり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
パイプラインの周波数に関する利点を保ち、複数のメモリ操作がある時にプロセッサ速度に対する影響がほとんどなく、従来の方法の他の欠点の一部を回避する、デジタルシグナルプロセッサ(DSP)を含むプロセッサにおいて複数のメモリアクセスを処理するための、記憶バッファを伴わないアーキテクチャおよび方法を有することが望ましい。
【課題を解決するための手段】
【０００９】
第1のプロセッサ命令および第2のプロセッサ命令を受け取るステップと、第1のプロセッサ命令および第2のプロセッサ命令がアーキテクチャ的に完了できるかどうかを評価するステップとを含む、メモリへのシステムアクセスを制御するための方法が開示される。第1のプロセッサ命令と第2のプロセッサ命令の少なくとも1つがアーキテクチャ的に完了できない場合、第1のプロセッサ命令と第2のプロセッサ命令の両方を遅らせる。第1のプロセッサ命令と第2のプロセッサ命令の両方がアーキテクチャ的に完了でき、第1のプロセッサ命令と第2のプロセッサ命令の少なくとも1つが書込み命令である場合、メモリの書込み制御機構を調整して評価遅延に対処する。
【００１０】
評価遅延は、第1のプロセッサ命令および第2のプロセッサ命令がアーキテクチャ的に完了できるかどうかを評価するのに、十分な時間であり得る。評価遅延は、メモリに対する書込み列の選択の際に対処され得る。第1のプロセッサ命令と第2のプロセッサ命令のいずれかが読取り命令である場合、メモリの読取り制御機構は、評価遅延に対処しない。第1のプロセッサ命令と第2のプロセッサ命令の両方がアーキテクチャ的に完了でき、第1のプロセッサ命令と第2のプロセッサ命令の少なくとも1つが書込み命令である場合、メモリのプリチャージクロックを調整して評価遅延に対処することができる。
【００１１】
第1のプロセッサ命令と第2のプロセッサ命令の両方がアーキテクチャ的に完了でき、第1のプロセッサ命令と第2のプロセッサ命令の少なくとも1つがメモリアクセス命令である場合、方法はまた、メモリの読取り制御機構に、評価遅延に対処しない遅延していないクロック信号を送るステップと、メモリの書込み制御機構に、評価遅延に対処する遅延したクロック信号を送るステップと、遅延していないクロック信号と遅延したクロック信号の両方を、メモリのプリチャージクロックマルチプレクサに送るステップと、プリチャージクロックマルチプレクサを選択的に制御して、遅延していないクロック信号と遅延したクロック信号のうちの1つを、プリチャージクロックとして送るステップとを含み得る。
【００１２】
プリチャージクロックの制御は、遅延していないクロックと遅延したクロックの両方をマルチプレクサに入力するステップと、読取りイネーブル信号をマルチプレクサの選択された入力へと入力するステップとを含み得るので、読取りイネーブルが読取り命令を示す場合には、マルチプレクサは遅延していないクロックをプリチャージクロックとして出力し、読取りイネーブルが読取り命令を示さない場合には、マルチプレクサは遅延したクロックをプリチャージクロックとして出力する。
【００１３】
評価するステップは、第1のプロセッサ命令および第2のプロセッサ命令のためのデータが、キャッシュ中に位置するかどうかを判定するステップを含み得る。評価するステップはまた、第1のプロセッサ命令がメモリアクセス命令であるかどうかを判定するステップと、第2のプロセッサ命令がメモリアクセス命令かどうかを判定するステップとを含み得る。方法はまた、第1のプロセッサ命令が書込み命令であり、かつ、第2のプロセッサ命令のためのデータがキャッシュ中に位置している場合、または第2のプロセッサ命令がメモリアクセス命令ではない場合に、書込みイネーブル信号を生成するステップを含み得る。
【００１４】
第1の命令を処理するための第1のスロット、第2の命令を処理するための第2のスロット、第1の命令と第2の命令の両方がアーキテクチャ的に完了できるかどうかを示す信号を生成するシステム組合せ論理回路、および、メモリの書込み制御機構を調整してシステム組合せ論理回路によって生成される信号の遅延に対処するための遅延回路とを含む、メモリアクセスコントローラが開示される。メモリアクセスコントローラは、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定位置のデータユニット、およびコンピュータからなる群から選択されたデバイスの中に組み込まれてよい。
【００１５】
メモリアクセスコントローラはまた、第1のキャッシュメモリおよび第2のキャッシュメモリ、ならびに第1のキャッシュヒット信号および第2のキャッシュヒット信号を含み得る。第1のキャッシュヒット信号は、第1の命令のためのデータが第1のキャッシュに記憶されているかどうかを示し、第2のキャッシュヒット信号は、第2の命令のためのデータが第2のキャッシュに記憶されているかどうかを示す。システム組合せ論理回路は、第1のキャッシュヒット信号と第2のキャッシュヒット信号の両方を使う。
【００１６】
システム組合せ論理回路は、第1のスロット組合せ論理回路および第2のスロット組合せ論理回路を含み得る。第1のスロット組合せ論理回路は、第2のキャッシュヒット信号を受け取り、第1の命令、第1のスロット組合せ論理回路のための記憶イネーブル信号を生成する。第2のスロット組合せ論理回路は、第1のキャッシュヒット信号を受け取り、第2の命令のための記憶イネーブル信号を生成する。第1のスロット組合せ論理回路はまた、第1の命令が記憶命令であるかどうかを示す第1の命令記憶信号と、第2の命令がメモリアクセス命令であるかどうかを示す第2の命令非依存信号とを受け取ることができる。第1のスロット組合せ論理回路は、第1の命令が記憶命令であることを、第1の命令記憶信号が示し、かつ、第2の命令のためのデータが第2のキャッシュの中にあることを、第2のキャッシュヒット信号が示す場合、または、第2の命令がメモリアクセス命令ではないことを、第2の命令非依存信号が示す場合、第1の命令のための記憶イネーブル信号を生成することができる。第2のスロット組合せ論理回路はまた、第2の命令が記憶命令であるかどうかを示す第2の命令記憶信号と、第1の命令がメモリアクセス命令であるかどうかを示す第1の命令非依存信号とを受け取ることができる。第2のスロット組合せ論理回路は、第2の命令が記憶命令であることを、第2の命令記憶信号が示し、かつ、第1の命令のためのデータが第1のキャッシュの中にあることを、第1のキャッシュヒット信号が示す場合、または、第1の命令がメモリアクセス命令ではないことを、第1の命令非依存信号が示す場合、第2の命令のための記憶イネーブル信号を生成することができる。
【００１７】
メモリアクセスコントローラはまた、ロード論理回路と記憶論理回路とを有するデータアレイを含み得る。ロード論理回路は、第1のキャッシュヒット信号および第2のキャッシュヒット信号を受け取ることができ、第1のキャッシュヒット信号と第2のキャッシュヒット信号のうちの1つがデータアレイの中での位置を示す場合、ロード論理回路は、データアレイの中での位置を示すワード線信号を生成することができる。記憶論理回路は、第1の命令のための記憶イネーブル信号および第2の命令のための記憶イネーブル信号を受け取ることができ、第1の命令および第2の命令のための記憶イネーブル信号のうちの1つがデータアレイの中での位置を示す場合、記憶論理回路は、データアレイの中での位置を示す書込みチップ選択信号を生成することができる。
【００１８】
第1の命令と第2の命令のいずれかが書込み命令である場合、システム組合せ論理回路は、第1の命令と第2の命令の両方がアーキテクチャ的に完了できれば、書込みイネーブル信号を生成することができる。書込みイネーブル信号が生成される場合、遅延回路は、システム組合せ論理回路が書込みイネーブル信号を生成するのにかかる時間とほぼ同じ時間だけ、メモリの書込み制御機構を遅延させることができる。
【００１９】
メモリアクセスコントローラはまた、メモリのための書込み列の選択および読取り列の選択を含み得る。遅延回路は、システム組合せ論理回路によって生成される信号の遅延に対処するために、メモリの書込み列の選択を調整することができ、システム組合せ論理回路によって生成される信号の遅延に対処するために、メモリの読取り列の選択を調整する必要はない。メモリアクセスコントローラはまた、第1の入力、第2の入力、出力、および選択線を有する、マルチプレクサを含み得る。第1の入力は、遅延回路によって遅延されていない、遅延していないクロックと結合されてよく、第2の入力は、遅延回路によって遅延された、遅延したクロックと結合されてよく、出力はプリチャージクロックを生成することができ、選択線は読取りイネーブル信号に結合されてよいので、マルチプレクサは、読取りイネーブルが読取り命令を示す場合、遅延していないクロックを出力へと渡し、読取りイネーブルが読取り命令を示さない場合、遅延したクロックを出力へと渡す。
【００２０】
第1の命令を処理するための第1の手段、第2の命令を処理するための第2の手段、第1の命令と第2の命令の両方がアーキテクチャ的に完了できるかどうかを示す信号を生成する計算手段、および、メモリの書込み制御機構を調整して計算手段によって生成される信号の遅延に対処するための遅延手段とを含む、メモリアクセスコントローラが開示される。
【００２１】
本開示をより完全に理解するために、ここで、以下の詳細な説明および添付の図面が参照される。
【図面の簡単な説明】
【００２２】
【図１】スロット間依存回路を有する、ある例示的な複数メモリアクセスシステムを示す回路図である。
【図２】書込み制御機構およびプリチャージクロックに対する遅延を伴う、データバンク内の例示的な制御論理回路を示す回路図である。
【図３】複数メモリアクセスシステムを制御するための例示的な方法を示す流れ図である。
【図４】複数メモリアクセスを伴う、プロセッサ中の記憶バッファをなくすためのアーキテクチャおよび方法の実施形態が有利に利用され得る、例示的なワイヤレス通信システムを示すブロック図である。
【発明を実施するための形態】
【００２３】
本発明は、記憶バッファが必要なく、複数のメモリ操作がある場合にプロセッサの動作速度に影響を与えることのない、パイプラインの周波数に関する利点を保つためのアーキテクチャおよび方法について説明する。
【００２４】
図1は、記憶バッファを使用することなく、複数メモリアクセスのアーキテクチャ的な依存関係を処理できる、システム100の例示的なアーキテクチャの回路図を示す。システム100は、複数メモリアクセスの問題を例示する、Very Long Instruction Word (VLIW)システムである。システム100は、タグアレイセクション102、スロット間依存回路104、およびデータアレイセクション106を含む。わかりやすくするために、図1は、タグアレイセクション102の中に2個のスロットのための2個のタグアレイを、データアレイセクション106の中に2個のデータアレイを示すが、システムは、タグアレイセクション102の中に任意の数であるM個のスロットのためのM個のタグアレイを、データアレイセクション106の中にN個のデータアレイを含んでよい。
【００２５】
タグアレイセクション102は、スロットs0およびスロットs1のためのタグを含む。スロットs0がメモリアクセス命令を保持する場合、システムは、データが4ウェイs0キャッシュ112に記憶されるかどうかを確認する。4ウェイs0キャッシュ112は、使用され得るキャッシュの種類の一例にすぎない。たとえば、キャッシュ112は、直接マッピングされるキャッシュであってよく、または、2以上の任意の数であるX個のウェイを有してよい。データがs0キャッシュ112の中にある場合、キャッシュヒットが発生し、s0ヒットベクトル114の要素の1つが、s0キャッシュ112の中でのデータの位置を示す。s0ヒットベクトル114の要素のいずれもが、データの位置を示さない場合、データはs0キャッシュ112の中にはなく、キャッシュミスが発生する。s0ヒットベクトル114の要素は、s0ヒット信号118を出力するOR換算ゲート116への入力である。s0ヒットベクトル114の要素のうちのいずれかがキャッシュヒットを示す場合、s0ヒット信号118は、スロットs0に対するキャッシュヒットを示す。s0ヒットベクトル114の要素のうちのいずれもがキャッシュヒットを示さない場合、s0ヒット信号118は、スロットs0に対するキャッシュミスを示す。スロットs0がメモリアクセス命令であり、s0キャッシュ112の中にヒットがない場合、システムは、メモリから必要なデータを取り出し、s0ヒットベクトル114およびs0ヒット信号118がスロットs0に対するキャッシュヒットを示す点において、その必要なデータをs0キャッシュ112へと入れる。
【００２６】
タグアレイセクション102は、スロットs1のためのタグも含む。スロットs1がメモリアクセス命令を保持する場合、システムは、データが4ウェイs1キャッシュ142に記憶されるかどうかを確認する。s1キャッシュ142は、任意の所望のタイプおよびサイズであってよい。データがs1キャッシュ142の中にある場合、キャッシュヒットが発生し、s1ヒットベクトル144の要素の1つが、s1キャッシュ142の中でのデータの位置を示す。s1ヒットベクトル144の要素のいずれもが、データの位置を示さない場合、データはs1キャッシュ142の中にはなく、キャッシュミスが発生する。s1ヒットベクトル144の要素は、s1ヒット信号148を出力するOR換算ゲート146への入力である。s1ヒットベクトル144の要素のうちのいずれかがキャッシュヒットを示す場合、s1ヒット信号148は、スロットs1に対するキャッシュヒットを示す。s1ヒットベクトル144の要素のうちのいずれもがキャッシュヒットを示さない場合、s1ヒット信号148は、スロットs1に対するキャッシュミスを示す。スロットs1がメモリアクセス命令であり、s1キャッシュ142の中にヒットがない場合、システムは、メモリから必要なデータを取り出し、s1ヒットベクトル144およびs1ヒット信号148がスロットs1に対するキャッシュヒットを示す点において、その必要なデータをs1キャッシュ142へと入れる。
【００２７】
s1組合せ論理回路120は、スロット間の依存関係と、s1記憶イネーブル信号126がデータアレイ130および160に送られるべきかどうかとを判定する。s1記憶イネーブル信号126は、スロットs1が記憶命令であり、スロット間の依存関係が解消されたのでスロットs1の中の記憶命令が実行できデータを記憶できるということを示す。組合せ論理回路120は、s0ヒット信号118、s1記憶命令信号122、およびs0非依存信号124を含む、いくつかの入力を受け取る。s0ヒット信号118は、スロットs0の中の命令がs0キャッシュ112において利用可能なデータを有するかどうかを示す。3個以上のスロットがある場合、自身のための記憶イネーブル信号が決定されつつあるスロットのヒット信号を除き、スロットの各々に対するヒット信号が組合せ論理回路に入力される。s1記憶命令信号122は、スロットs1が記憶命令を保持するかどうかを示す。s0非依存信号124は、スロットs0の中の命令が、メモリアクセス命令、記憶命令、またはロード命令ではないので、メモリアクセスの依存関係がスロットs0について存在しない時を、示す。3個以上のスロットがある場合、自身のための記憶イネーブル信号が決定されつつあるスロットの非依存信号を除き、スロットの各々に対する非依存信号が組合せ論理回路に入力される。
【００２８】
s1組合せ論理回路120は、s1記憶命令信号122が、スロットs1が記憶命令を保持することを示し、かつ、他のスロットの各々に対して、(a)非依存信号、たとえばs0非依存信号124が、スロットs1が他のスロットの各々を待つ必要がないことを示す場合、または、(b)ヒット信号、たとえばs0ヒット信号118が、他のスロットの各々に対するキャッシュヒットがあったことを示す場合に、s1記憶イネーブル信号126を送る。
【００２９】
s0組合せ論理回路150は、スロット間の依存関係と、s0記憶イネーブル信号156がデータアレイ130および160に送られるべきかどうかとを判定する。s0記憶イネーブル信号156は、スロットs0が記憶命令であり、スロット間の依存関係が解消されたのでスロットs0の中の記憶命令が実行できデータを記憶できるということを示す。組合せ論理回路150は、s1ヒット信号148、s0記憶命令信号152、およびs1非依存信号154を含む、いくつかの入力を受け取る。s1ヒット信号148は、スロットs1の中の命令がs1キャッシュ142において利用可能なデータを有するかどうかを示す。s0記憶命令信号152は、スロットs0が記憶命令を保持するかどうかを示す。s1非依存信号154は、スロットs1の中の命令が、メモリアクセス命令、記憶命令、またはロード命令ではないので、メモリアクセスの依存関係がスロットs1について存在しない時を、示す。
【００３０】
s0組合せ論理回路150は、s0記憶命令信号152が、スロットs0が記憶命令を保持することを示し、かつ、他のスロットの各々に対して、(a)非依存信号、たとえばs1非依存信号154が、スロットs0が他のスロットの各々を待つ必要がないことを示す場合、または、(b)ヒット信号、たとえばs1ヒット信号148が、他のスロットの各々に対するキャッシュヒットがあったことを示す場合に、s0記憶イネーブル信号156を送る。
【００３１】
s0ヒットベクトル114、s0記憶イネーブル信号156、s1ヒットベクトル144、およびs1記憶イネーブル信号126は、データアレイ130、160の各々に送られる。M個のスロットを有するパケットを処理しN個のデータアレイを使用するシステムは、M個のスロットの各々のためのヒットベクトルおよび記憶イネーブル信号を、N個のデータアレイの各々に送る。
【００３２】
データアレイ130は、ロードマルチプレクサ132および記憶マルチプレクサ136を含む。ロードマルチプレクサ132は、スロットの各々に対するヒットベクトル、この場合はs0ヒットベクトル114およびs1ヒットベクトル144を受け取る。ヒットベクトルのいずれかが、ロード命令の位置がデータアレイ130の中にあることを示す場合、ロードマルチプレクサ132は、データアレイ130のワード線134をアクティブ化する。記憶マルチプレクサ136は、スロットの各々に対する記憶イネーブル信号、この場合はs0記憶イネーブル156およびs1記憶イネーブル126を受け取る。記憶イネーブル信号のいずれかが、記憶命令の位置がデータアレイ130の中にあることを示す場合、記憶マルチプレクサ136は、データアレイ130の書込みチップ選択信号138をアクティブ化する。
【００３３】
データアレイ160は、ロードマルチプレクサ162および記憶マルチプレクサ166を含む。ロードマルチプレクサ162は、スロットの各々に対するヒットベクトル、この場合はs0ヒットベクトル114およびs1ヒットベクトル144を受け取る。ヒットベクトルのいずれかが、ロード命令の位置がデータアレイ160の中にあることを示す場合、ロードマルチプレクサ162は、データアレイ160のワード線164をアクティブ化する。記憶マルチプレクサ166は、スロットの各々に対する記憶イネーブル信号、この場合はs0記憶イネーブル156およびs1記憶イネーブル126を受け取る。記憶イネーブル信号のいずれかが、記憶命令の位置がデータアレイ160の中にあることを示す場合、記憶マルチプレクサ166は、データアレイ160の書込みチップ選択信号168をアクティブ化する。
【００３４】
図1に示される実施形態では、データバンク130、160の各々は単一ポートなので、1つのスロットのみが、一度に特定のデータバンクに対するロードまたは記憶を行うことができる。データバンクの各々のロードマルチプレクサおよび記憶マルチプレクサのための選択信号を使って、データバンクに対するスロットアクセスの順序を決定することができる。データアレイ130のロードマルチプレクサ132および記憶マルチプレクサ136、ならびに、データアレイ160のロードマルチプレクサ162および記憶マルチプレクサ166のための選択信号は、スロットのアドレスと、データバンクに対するスロット読取りアクセスイネーブルまたはスロット書込みイネーブルとからの、ビットを介して決定され得る。両方のスロットが、同じデータアレイに対してロードまたは記憶を行うのを望む場合、スロットのうちの1つは、再アクセスによってデータアレイにアクセスすることができる。スロットが異なるデータアレイに対してロードまたは記憶を行うのを望む場合、異なるデータアレイへのアクセスが、並列に行われ得る。
【００３５】
データバンクは、メモリアクセスアドレスの一部である設定されたビットを使ってアドレス指定されるように、編成され得る。バンクは、バンクセレクタビットと呼ばれる設定されたビットによって、選択され得る。バンクのワード線は、ヒットウェイベクトルおよび何らかの追加の設定されたビットを通じてアドレス指定されてよく、列は、何らかの残りの設定されたビットを通じてアドレス指定され得る。この編成は、バンクの低電力動作を可能にし、また、記憶イネーブルを、ワード線の制御とは独立に制御される信号にすることを可能にする。この編成によって、ロード命令または記憶命令が、自身のヒットウェイベクトル(たとえばヒットベクトル114または144)を通じて自身を中止することが可能になるとともに、記憶イネーブル(たとえば、記憶イネーブル信号126または156)が別のパラメータ、たとえば別のスロットからのヒット信号によって制御され得るようになる。しかし、単一ポートのメモリバンクでは、複数メモリアクセス命令が同じデータバンクをターゲットにする場合、メモリアクセス命令は、一度に1つの命令を進めるために選別される。
【００３６】
メモリ管理ユニット(MMU)の属性または何らかの形態のキャッシュ割り当て方式に関連する他の要因も、記憶イネーブルに加えられ得る。記憶イネーブルは、ワード線制御とはアーキテクチャ的に独立に制御されるので、より完全な能力が記憶イネーブルに加えられ得るように、たとえば、プロセッサのアーキテクチャ状態のアトミックな更新を実現するための、ヒット信号のスロット間の依存関係を実現するように、記憶イネーブルは遅く到着してよい。ヒット信号(たとえば、ヒット信号118または148)は、ヒットベクトルを1ビットのヒット信号となるようにORをとったものであるので、遅く到着する信号である。このヒット信号はさらに、パケット中の他のスロットの命令コード復号ビットによって修飾され、次いで、現在のスロット中の記憶動作の命令コード復号ビットとのANDをとられて、現在のスロットに対する記憶イネーブル信号(たとえば、記憶イネーブル信号126または156)を生成する。しかし、書込みがサイクル中に完了できないほど、記憶イネーブル信号は遅れてはならないという点で、バランスが存在する。遅延回路は、電力、領域、および複雑さの点で非常に安価に、このバランスを維持することができる。これは、書込みイネーブル信号のためのスロット間論理計算を、ワード線信号のためのバンクアクセス時間の一部と重複させることによって、行われ得る。
【００３７】
OR換算ゲート116、146および組合せ論理回路120、150を用いて、記憶イネーブル信号126、156を生成するための、上で説明された処理は、処理遅延を招く。図2は、データバンクがこの処理遅延を吸収できるようにするための、例示的な回路を示す。図2に示される回路への入力は、クロック信号220、ワード線イネーブル信号、列アドレス線、読取りイネーブル信号、および書込みイネーブル信号を含む。ワード線イネーブル信号は、入力がヒットベクトルおよび設定されたビットの一部分であり得る、行デコーダ回路の出力である。列アドレスは、行デコーダにおいて使われない、設定されたビットの一部から形成され得る。書込みイネーブル信号は、データバンク内で進行を許可されたメモリアクセスの順序に基づいて選択される、2つの記憶イネーブル信号126、156のうちの1つであってよい。
【００３８】
データの読取り先または書込み先となるべき位置を示す、ワード線イネーブル信号は、クロック信号220とともにn個のANDゲートに入力される。クロック信号220は、n個のANDゲートをアクティブ化し、その位置がN個のワード線に渡される。N個のワード線に対するn個のANDゲートの2個のANDゲート202、204が、図2に示される。ワード線134、164は、N個のワード線の例である。ワード線134、164はまた、より大きな行デコーダに対処するための設定されたビットとともに使用され得る。
【００３９】
クロック信号220、読取りイネーブル信号、および列アドレス信号は、NANDゲート206に入力されて、読取り列選択信号を生成する。クロック220は次いで、遅延回路210へと入力されて、書込み列選択信号のために使われる、遅延したクロック222を生成する。遅延回路210は、記憶イネーブル信号を生成する際の回路遅延に対処し、書込みイネーブルの準備の制約を緩和する。遅延したクロック222、書込みイネーブル信号、および列アドレス信号は、ANDゲート208に入力されて、書込み列選択信号を生成する。書込みチップ選択信号138、168は、書込み列選択信号の例である。図1に示される実施形態では、遅延回路210は、OR換算ゲート116、146、組合せ論理回路120、150、および記憶イネーブル信号126、156を生成する際の他の回路の遅延に対処する。遅延回路は、動作マージンを設けるために、追加の遅延を導入することができる。遅延は、書込みイネーブル信号を生成するための実装形態に対して調整され得る。遅延が長すぎる場合は不必要な電力が使われることがあり、遅延が短すぎる場合は書込みが失敗することがある。
【００４０】
この実施形態では、ワード線および読取り列選択信号は遅延されないが、書込み列選択信号は遅延される。これは、書込み列の選択は、記憶/書込みイネーブル信号126、156が生成され、ANDゲート208へ入力されるのを待たなければならないからである。読取り列選択信号は、記憶イネーブル信号には依存しないので、記憶イネーブル信号の生成を待つために遅延される必要はない。読取り列選択信号の遅延は、システムの読取り遅延を増やす。
【００４１】
先行するメモリアクセス動作の後に、ビット線が再充電されるのをシステムが待機することを確実にするために、マルチプレクサ212を使ってプリチャージクロックを制御する。遅延していないクロック信号220および遅延したクロック信号222は、マルチプレクサ212へと入力され、読取りイネーブル信号は、マルチプレクサ212の選択線へと入力される。読取りイネーブル信号がアクティブであれば、遅延していないクロック信号220はプリチャージクロックとして出力され、読取りイネーブル信号がアクティブでなければ、遅延したクロック信号222がプリチャージクロックとして出力される。遅延した書込みおよびプリチャージクロックによって、ワード線の立上りと書込み列の選択との間の不整合による書込みの失敗が回避される。
【００４２】
図3は、メモリへのシステムアクセスを制御する例示的な方法の流れ図を示す。ブロック302において、システムは、第1のプロセッサ命令および第2のプロセッサ命令を受け取る。同時に受け取られるプロセッサ命令は3個以上であってもよく、方法をどのように拡張して3個以上のプロセッサ命令を処理できるかを、当業者は理解するだろう。
【００４３】
ブロック304において、システムは、第1のプロセッサ命令がアーキテクチャ的に完了できるかどうかを評価し、ブロック306において、システムは、第2のプロセッサ命令がアーキテクチャ的に完了できるかどうかを評価する。流れ図は、ブロック304および306が順次行われるものとして示すが、これらの評価は、図1に示されるような回路によって並列に行われ、必要な評価時間を減らすことができる。ブロック304および306における評価によって、命令の1つがアーキテクチャ的に完了できないと判定されると、ブロック308において、両方の命令が遅延され、両方の命令がアーキテクチャ的に完了できるまで実行は継続しない。第1の命令と第2の命令の両方がアーキテクチャ的に完了できると、制御はブロック310へと移る。
【００４４】
ブロック310において、システムは、第1のプロセッサ命令と第2のプロセッサ命令のいずれかが、書込み/記憶命令であるかどうかを判定する。第1のプロセッサ命令と第2のプロセッサ命令のいずれかが、書込み/記憶命令である場合、制御はブロック312へと移る。それ以外の場合は、制御はブロック314へと移り、そこで第1のプロセッサ命令と第2のプロセッサ命令が実行される。
【００４５】
ブロック312において、書込みイネーブル信号を生成する際の評価遅延が対処される。図1の例示的な実施形態では、この評価遅延は、記憶イネーブル信号126および156を生成する際の回路遅延を含む。図2の例示的な実施形態は、遅延回路210でこの評価遅延に対処することを示す。ブロック312で遅延に対処すると、制御はブロック314へと移り、そこで第1のプロセッサ命令と第2のプロセッサ命令が実行される。
【００４６】
図4は、複数メモリアクセスを伴うプロセッサ中の記憶バッファをなくすためのアーキテクチャおよび方法の実施形態が有利に利用され得る、例示的なワイヤレス通信システム400を示す。例示のために、図4は、3つの遠隔ユニット420、430および450ならびに2つの基地局440を示している。一般的なワイヤレス通信システムは、これよりも多くの遠隔ユニットおよび基地局を有し得ることを認識されたい。遠隔ユニット420、430、および450のいずれも、本明細書で開示されたような、複数メモリアクセスを伴う、プロセッサ中の記憶バッファをなくすためのアーキテクチャおよび方法を含み得る。図4は、基地局440から遠隔ユニット420、430および450への順方向リンク信号480、ならびに遠隔ユニット420、430および450から基地局440への逆方向リンク信号490を示している。
【００４７】
図4では、遠隔ユニット420は携帯電話として示され、遠隔ユニット430はポータブルコンピュータとして示され、遠隔ユニット450はワイヤレスローカルループシステム内の固定位置の遠隔ユニットとして示されている。たとえば、遠隔ユニットは、セルフォン、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末などのポータブルデータユニット、またはメータ読取り機器などの固定位置のデータユニットであってもよい。図4は、本明細書で開示されるような複数メモリアクセスを伴うプロセッサ中の記憶バッファをなくすためのアーキテクチャおよび方法を含み得る、特定の例示的な遠隔ユニットを示すが、本明細書で開示されるようなアーキテクチャおよび方法は、これらの例示的な図示のユニットに限定されない。実施形態は、複数メモリアクセスを伴うプロセッサが望まれる、任意の電子デバイスにおいて好適に利用され得る。
【００４８】
上記に本発明の原則を組み込んだ例示的な実施形態を開示したが、本発明は開示された実施形態に限定されない。代わりに、本出願は、本発明の一般的な原則を使用する、本発明のいかなる変形例、用途、または適応例をも、包含することが意図されている。さらに、本出願は、本発明に関係し添付の特許請求の範囲の制限内に入る、技術分野の公知の慣習または慣行の範囲内の本開示からのそのような逸脱を包含することが意図されている。
【符号の説明】
【００４９】
100  システム
102  タグアレイセクション
104  スロット間依存回路
106  データアレイセクション
112  4ウェイs0キャッシュ
114  s0ヒットベクトル
116  OR換算ゲート
118  s0ヒット信号
120  s1組合せ論理回路
122  s1記憶命令信号
124  s0非依存信号
126  s1記憶イネーブル信号
130  データアレイ
132  ロードマルチプレクサ
134  ワード線
136  記憶マルチプレクサ
138  チップ選択信号
142  4ウェイs0キャッシュ
144  s1ヒットベクトル
146  OR換算ゲート
148  s1ヒット信号
150  s0組合せ論理回路
152  s0記憶命令信号
154  s1非依存信号
156  s0記憶イネーブル信号
160  データアレイ
162  ロードマルチプレクサ
164  ワード線
166  記憶マルチプレクサ
168  チップ選択信号
210  遅延回路
212  マルチプレクサ
220  クロック信号
【図１】
0005567221.tif 000002
【図２】
0005567221.tif 000003
【図３】
0005567221.tif 000004
【図４】
0005567221.tif 000005