説明

メモリコントローラベースの圧縮(伸張)

【課題】メモリコントローラベースで圧縮(伸張)を行うシステムを提供する。
【解決手段】
本発明にかかるシステムは、メモリコントローラ(110)及びRAMコントローラ(120)を備える。メモリコントローラは、未圧縮データブロックを圧縮し、圧縮したデータブロックのサイズを計算し、RAM(130)との通信に使用されるバーストモードプロトコルを操作する。RAMコントローラは、メモリコントローラ及びRAMに接続され、圧縮データブロック及びそのサイズをメモリコントローラから受信して、バーストモードプロトコルによって、RAMに圧縮データブロックを書き込む他に、RAMに書き込まれた圧縮データブロックを読み出す際に圧縮データブロックのサイズを取得できるよう、サイズを記憶する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリコントローラベースの圧縮(伸張)に関する。
【背景技術】
【0002】
データは、従来、未圧縮フォーマットでダイナミックRAM(DRAM)のようなランダムアクセスメモリ(RAM)に記憶されていた。メモリのコストの増加及びコンピューティングシステムのDRAMへの依存度の増加に伴い、メモリの空間を保存する努力が行われてきた。これらの努力は、通常、メインメモリにおけるデータの圧縮に関係してきた。データが圧縮フォーマットでメインメモリに記憶されている場合、その目的は、一般に、空間を節約することである。しかしながら、DRAMの空間を節約することによって、所与のデータブロックは、DRAMに事前に割り当てられた特定のロケーションを有しない場合があり、これは、データ転送を遅くするおそれがある。したがって、データブロックを圧縮フォーマットで記憶するには、そのデータブロックを圧縮し、そのサイズを求めて、圧縮されたブロックを保持できるメモリの空きエリアを見つけることが必要とされる場合がある。これら従来の動作は、適正なDRAMの行データアドレス及び列データアドレスを求めるための複雑な、したがって多くの時間を要する方法を実行することを伴う場合がある。また、これらの方法は、通常、データが圧縮された後に実行される。したがって、これら従来の方式は、メモリ空間を節約するが、メモリ転送帯域幅にマイナスの影響を与えるおそれがある。
【0003】
DRAMは、通常、デュアルインラインメモリモジュール(DIMM)にパッケージ化される。DRAMは、セルと呼ばれる数百万個のメモリロケーションを有することができる。各セルは、1ビットの情報を記憶する。セルは、通常、行及び列のマトリクスに配列される。DRAMの行は、ページと呼ばれる場合がある。DRAMセルにアクセスするために、メモリコントローラは、ターゲットセルの行アドレス及び列アドレスを指定する電子信号を送信する。メモリコントローラは、アドレス/コマンドライン及びデータラインの双方を有することができるメモリバス又はメモリインターフェースを介して、これらの行/列信号を送信する。データラインは、メモリコントローラとDRAMとの間でデータを運ぶ一方、アドレス/コマンドラインは、メモリコントローラとDRAMとの間でアドレス及びコマンドを運ぶ。メモリコントローラとDRAMとの間のデータスループットは、利用可能なデータラインの本数(たとえば、64本)、及び、データをそれらのデータラインを介して転送できる周波数に依存する。
【0004】
セルへのアクセスは、通常、DRAMに対して、セルが位置する行を特定すること、次いで、DRAMに対して、セルが位置する列を特定することを含む。行を特定することは、通常、行アドレス選択(RAS)動作を含む。同様に、列を特定することは、通常、列アドレス選択(CAS)動作を含む。したがって、システムによっては、データの各ビットを取得するのに、2つのアドレス/コマンド動作が必要とされる場合がある。したがって、本来のDRAMの中には、メモリアクセス毎に、複数(たとえば、最大6つまで)のシステムバスサイクルを必要とするものがあった。これは、メモリへのデータ転送時及び/又はメモリからのデータ転送時にボトルネックになるおそれがある。
【0005】
これに加えて、データがプロセッサからメモリコントローラへ転送され、次いで、メモリへ転送される時、プロセッサからメモリコントローラへの接続(たとえば、フロントサイドバス)の帯域幅が、メモリコントローラからメモリへの接続(たとえば、メモリインターフェース)の帯域幅よりも大きい場合に、帯域幅の格差が存在する場合がある。この帯域幅の格差も、メモリへのデータ転送時及び/又はメモリからのデータ転送時にボトルネックになるおそれがある。このボトルネックは、圧縮(伸張)待ち時間が読み出し/書き込み待ち時間を超える場合に、従来のメモリコントローラベースの圧縮(伸張)装置によって悪化される場合がある。空間節約がこれら従来のシステムの焦点であるので、設計トレードオフは、通常、空間節約を達成するためにこのボトルネックを容認していた。
【0006】
これらのボトルネック問題の少なくとも一部に取り組むために、バーストモードプロトコルが、DRAMと相互作用するために使用されてきた。一例のバーストモードプロトコルでは、単一のRAS動作、及び、その後に続く単一のCAS動作によって、2ビット又は3ビット以上のデータをDRAMへ且つ/又はDRAMから転送することができる。たとえば、単一のRAS/CASペアによって、4つの連続的なデータロケーションの転送を引き起こすことができる。最も効率的なデータ転送は、単一のRAS/CASペアを使用してDRAMへ且つ/又はDRAMから1行全体を転送できる場合に生じる。
【0007】
従来実施されていたように、DRAMの1つの行内に存在するデータはすべて、1つの新たなアドレスコマンドの送信しか必要としない。通常、DRAMコントローラは、これを利用し、また、バーストモードプロトコルも利用することができる。さらに、メモリサブシステムは、キャッシュライン全体又は通常のデータブロック構造体が、適切なバーストモード境界上で開始して、新たなアドレス(ページ)境界を越えないように、DRAMマッピングをセットアップすることができる。しかしながら、空間の節約に焦点を置いた通常の圧縮方式は、メモリコントローラに、所与のデータブロックのサイズ及び開始ロケーションの双方を追跡させたままにしている。
【0008】
キャッシュラインは、通常、バーストモード境界の倍数であり、且つ、行境界の約数であるサイズを有する。したがって、キャッシュラインは、通常、バーストサイクルの整数倍未満であることを必要とすること、又は、データが複数の行境界にまたがることを必要とすることから未圧縮データを容易にする開始ポイントを知っている。
【発明の開示】
【課題を解決するための手段】
【0009】
本発明にかかるシステム(100)は、メモリコントローラ(110)であって、メモリに記憶される未圧縮データブロックを受信するように構成され、前記未圧縮データブロックをハードウェアで圧縮して圧縮データブロックにするように構成され、前記圧縮データブロックのサイズを計算するように構成され、ランダムアクセスメモリ(RAM)(130)とデータを通信する際に使用されるバーストモードプロトコルを選択的に操作するように構成されたメモリコントローラ(110)と、バスによって前記メモリコントローラ(110)に動作可能に接続され、メモリインターフェースによって前記RAM(130)に動作可能に接続されたRAMコントローラ(120)であって、前記圧縮データブロック及び前記圧縮データブロックの前記サイズを前記メモリコントローラ(110)から受信するように構成され、前記バーストモードプロトコルを使用して、前記メモリインターフェースを介して前記RAM(130)に前記圧縮データブロックを書き込むように構成され、前記圧縮データブロックを前記RAM(130)に書き込むのに必要とされるバースト数は、前記RAMコントローラ(120)によって制御可能であり、前記圧縮データブロックの前記サイズに少なくとも部分的に基づいており、前記圧縮データブロックは、前記未圧縮データブロックのサイズに少なくとも部分的に基づいてデフォルトのバーストモードRAMライン境界に配置された1つ又は複数のサブデータブロックとして書き込まれ、前記RAM(130)に書き込まれた前記圧縮データブロックを対象とした読み出しアクセス時に前記圧縮データブロックの前記サイズを取得できるように、前記サイズを記憶するように構成されたRAMコントローラ(120)とを備える。
【0010】
明細書に組み込まれて明細書の一部を構成する添付図面は、本発明の態様のさまざまな実施の形態例を示すさまざまなシステム例、方法例等を示す。図示した要素の境界(たとえば、ボックス、数群のボックス、又は他の形状)は、境界の一例を表す形状であることが理解されよう。1つの要素を複数の要素として設計することもできるし、複数の要素を1つの要素として設計することもできることが当業者には理解されよう。別の要素の内部コンポーネントとして示された要素は、外部コンポーネントとして実施することもできるし、その逆も同様である。さらに、要素は、一律の縮尺で描かれていない場合がある。
【発明を実施するための最良の形態】
【0011】
本明細書で説明するシステム例及び方法例は、メモリへ且つ/又はメモリからデータを転送するのに使用されるバーストモードプロトコルを選択的に制御することによって、メモリ転送帯域幅を増加させることを容易にする、時間及びロケーションにおけるデータの圧縮(伸張)に関する。これらのシステム例及び方法例は、圧縮データによって消費されるメモリ量を削減することよりもメモリ転送時間を削減することにより関係している。このように、システム例及び方法例は、空間節約の視点ではなく伝送最適化の視点からデータ圧縮を見据え、したがって、圧縮データサイズの計算及び記憶の双方を行う。
【0012】
システム例及び方法例は、キャッシュラインのようなデフォルトのデータ構造体を、未圧縮データに最適なデフォルトのバーストモードアラインメント又は行アラインメントに配置し続ける。さらに、システム例及び方法例は、圧縮データをデフォルトのアラインメント境界に配置することも行う。このように、システム例及び方法例は、メモリコントローラの計算を削減することを容易にし、したがって、メモリコントローラの時間を節約することを容易にする。これに加えて、システム例及び方法例は、圧縮によって生成されるような可変サイズのデータ構造体の一意の開始アドレスを検索又は演算することに関連したストレージペナルティ(storage penalty)も軽減する。
【0013】
このように、たとえデータの圧縮部分が、デフォルトの構造サイズと一致しない非標準サイズを有する場合であっても、システム例及び方法例は、それでも、デフォルトのデータ構造体開始アラインメントを使用することができる。空間は節約されないが、転送帯域幅は節約され、メモリコントローラの計算も同様である。換言すれば、圧縮データサイズを使用して、バースト長及び/又はバースト数を求めることができるが、デフォルトの未圧縮サイズを使用して、デフォルトの開始アラインメントを計算することができる。
【0014】
データがDRAMに記憶される場合、そのデータにアクセスすることに関連した2つの主要なステップは、行アドレス選択(RAS)及び列アドレス選択(CAS)である。各RASオペレーションについて、複数のCASオペレーションを実行して、1行における連続した列アドレスの複数ビットのデータにアクセスすることができる。行アクセスごとの複数の列ビットの読み出し及び/又は書き込みは、「バーストモード」オペレーションと呼ばれる。バースト長制御データを、DRAMライン境界に配置された圧縮データに関連したサイズデータから計算できるので、バーストモードオペレーションは、本明細書で説明するシステム例及び方法例が選択的に制御することができる。バーストモードオペレーションを選択的に制御することによって、メモリコントローラとDRAMとの間のデータ転送に関連したボトルネックを削減することが容易になる。バーストモードオペレーションを制御して、帯域幅及び転送時間を節約することを容易にできる一方、デフォルトの未圧縮データ構造体のサイズを使用して、開始アラインメントを計算することができる。
【0015】
メモリサブシステムは、バーストモードアクセスを使用して、比較的狭いインターフェースを介してアクセス可能なメモリチップ(たとえば、DRAM)にデータブロックを記憶することができる。たとえば、メモリチップは、当該チップとメモリコントローラとの間でデータを転送するための64ビット幅のデータバスを有する場合がある。しかし、メモリに書き込まれる通常のライン(たとえば、キャッシュライン)は、データバスよりも広い場合がある(たとえば、128バイト)。したがって、キャッシュラインの書き込みは、メモリインターフェースにおいて多数のサイクルを必要とする場合がある。たとえば、128バイトのキャッシュラインを書き込むには、64ビットチップを16サイクルさせてそのキャッシュラインを記憶することが必要である。
【0016】
連続した列アドレスへの16回のアクセスのバーストは、128バイト例のキャッシュラインの64ビット例のDIMMに対する読み出し及び/又は書き込みのための効率的なメカニズムである。このように、システム例及び方法例は、「全」キャッシュラインよりも少ない(たとえば、圧縮されたキャッシュライン)転送時であっても、デフォルトのバーストモード境界を使用することができ、したがって、バーストモードプロトコルを操作して、高効率のバースト(たとえば、連続した16列)の比率を増加させることを容易にする一方、全体的なバーストサイクル数を削減する。
【0017】
一例では、圧縮及び伸張は、メモリアクセスロジックとメモリとの間に挿入されたメモリコントローラで行うことができる。たとえば、書き込まれるデータは、メモリコントローラで受信でき、メモリコントローラで圧縮でき、そして、圧縮データに関するサイズ情報と共にRAMコントローラに送信できる。RAMコントローラは、次に、キャッシュラインの未圧縮バージョンが使用された場合と同じデフォルトの境界に圧縮データラインを配置するように注意して、圧縮データをメモリに書き込むことができる。デフォルトのライン境界でメモリに圧縮ラインを書き込むことは、或る空間を未使用のままにする場合があるが、バスサイクルの消費を従来の可能なものよりも少なくすることができる。書き込みオペレーション中に利用可能なサイズ情報を有することによって、より効率的なバーストを使用することを容易にすることができ、また、より正確なデータ量を転送することも容易にすることができる。これらの双方は、バス帯域幅にプラスの影響を与えることができる。
【0018】
同様に、データは、RAMコントローラが、メモリから圧縮フォーマットで読み出すことができ、圧縮データのサイズに関する情報と共に、データを伸張するメモリコントローラに提供することができる。RAMコントローラは、圧縮データを読み出す時、その圧縮データに関するサイズ情報を取得でき、実際の圧縮データのみを読み出す一方、未使用の空間を無視でき、圧縮ブロックのデータのみを送信でき、且つ、ブロックの終了時に未使用の空間を送信しないようにすることができる。このように、データ転送及びバスサイクルを削減することができる。メモリコントローラは、次に、伸張データをメモリアクセスロジックに提供することができる。データをメモリコントローラで圧縮(伸張)することによって、転送されるビット数がより少なくなるので、メモリからのデータの読み出し/メモリへのデータの書き込みに必要とされるバスサイクル数を削減することが容易になる。
【0019】
圧縮データを送信した(ただし、ラインの終了時に未使用空間は送信しない)後、RAMコントローラは、RAMのバーストモード読み出しを停止でき、メモリコントローラへの送信を中止でき、そして、メモリコントローラからの別のコマンドを実行できる。このように、圧縮(伸張)ロジックがその圧縮(伸張)を完了する間、後続のコマンドをコマンド/アドレスバスに置くことができる。この並列化によっても、メモリ転送に関連したボトルネックを削減することが容易になる。
【0020】
以下は、本明細書で使用される、選択された用語の定義を含む。これらの定義は、用語の範囲内に入り且つ実施に使用できるコンポーネントのさまざまな例及び/又は形態を含む。これらの例は、限定することを目的とするものではない。用語の単数形及び複数形の双方を定義の範囲内に含めることができる。
【0021】
「コンピュータ可読媒体」は、本明細書では、信号、命令、及び/又はデータを直接的又は間接的に提供することに関与する媒体を指す。コンピュータ可読媒体は、不揮発性媒体、揮発性媒体、及び伝送媒体を含む形態を取ることができるが、これらに限定されるものではない。不揮発性媒体には、たとえば、光ディスク又は磁気ディスク等が含まれ得る。揮発性媒体には、たとえば、光ディスク又は磁気ディスク、ダイナミックメモリ等が含まれ得る。伝送媒体には、同軸ケーブル、銅線、光ファイバケーブル等が含まれ得る。また、伝送媒体は、電波及び赤外線のデータ通信中に生成される放射のような電磁放射の形態を取ることもできるし、1つ又は複数の信号群の形態を取ることもできる。コンピュータ可読媒体の一般的な形態には、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、CD−ROM、他の光媒体、パンチカード、紙テープ、孔のパターンを有する他の物理媒体、RAM、ROM、EPROM、フラッシュEPROM、又は他のメモリチップ若しくはメモリカード、メモリスティック、搬送波/パルス、及び、コンピュータ、プロセッサ、又は他の電子デバイスが読み出すことができる他の媒体が含まれるが、これらに限定されるものではない。インターネットのようなネットワークを介して命令又は他のソフトウェアを伝搬するのに使用される信号は、「コンピュータ可読媒体」とみなすことができる。
【0022】
「ロジック」には、本明細書では、機能(複数可)又は動作(複数可)を実行し、且つ/又は、別のロジック、方法、及び/若しくはシステムからの機能若しくは動作を引き起こすためのハードウェア及びファームウェア並びにそれぞれの組み合わせが含まれるが、これらに限定されるものではない。たとえば、所望の用途又はニーズに基づいて、ロジックには、ソフトウェア制御のマイクロプロセッサ、特定用途向け集積回路(ASIC)のようなディスクリートロジック、プログラミングされたロジックデバイス、命令を収容したメモリデバイス等が含まれ得る。ロジックは、1つ又は複数のゲート、ゲートの組み合わせ、又は他の回路コンポーネントを含むことができる。複数の論理ロジックを記述する場合、それら複数の論理ロジックを1つの物理ロジックに組み込むことが可能な場合がある。同様に、単一の論理ロジックを記述する場合、その単一の論理ロジックを複数の物理ロジック間に分散させることが可能な場合もある。
【0023】
「動作可能接続」又はエンティティを「動作可能に接続」する接続は、信号、物理通信、及び/又は論理通信を送信及び/又は受信できる接続である。通常、動作可能接続には、物理インターフェース、電気インターフェース、及び/又はデータインターフェースが含まれるが、動作可能接続には、動作可能制御を可能にするのに十分なこれらのタイプの接続又は他のタイプの接続の異なる組み合わせが含まれ得ることに留意すべきである。たとえば、直接、又は、プロセッサ、オペレーティングシステム、ロジック、ソフトウェア、若しくは他のエンティティのような1つ又は複数の中間エンティティを通じて、互いに信号を通信できることによって、2つのエンティティを動作可能に接続することができる。論理通信チャネル及び/又は物理通信チャネルを使用して、動作可能接続を作成することができる。
【0024】
「信号」には、本明細書では、1つ又は複数の電気信号若しくは光信号、アナログ信号若しくはデジタル信号、データ、1つ又は複数のコンピュータ命令若しくはプロセッサ命令、メッセージ、ビット若しくはビットストリーム、又は、受信、送信、及び/若しくは検出が可能な他の手段が含まれるが、これらに限定されるものではない。
【0025】
「ソフトウェア」には、本明細書では、読み出し、インタープリット、コンパイル、及び/又は実行が可能で、且つ、コンピュータ、プロセッサ、又は他の電子デバイスに、機能、動作を実行させ、且つ/又は、所望の通り振る舞わせる1つ又は複数のコンピュータ命令又はプロセッサ命令が含まれるが、これらに限定されるものではない。命令は、動的及び/又は静的にリンクされたライブラリからの個別のアプリケーション又はコードを含んだルーチン、アルゴリズム、モジュール、メソッド、スレッド、及び/又はプログラムのようなさまざまな形態で実施することができる。また、ソフトウェアも、さまざまな実行可能な形態及び/又はロード可能な形態で実施することができる。このさまざまな実行可能な形態及び/又はロード可能な形態には、スタンドアロンプログラム、関数コール(ローカル及び/又はリモート)、サーブレット、アプレット、メモリに記憶された命令、オペレーティングシステムの一部、又は他のタイプの実行可能命令が含まれるが、これらに限定されるものではない。ソフトウェアの形態は、たとえば、所望のアプリケーションの要件、所望のアプリケーションが実行される環境、及び/又は設計者/プログラマ等の要望等に依存し得ることが当業者には理解されよう。また、コンピュータ可読命令及び/又はコンピュータ実行可能命令は、1つのロジックに配置することができ、且つ/又は、2つ若しくは3つ以上の通信ロジック、協同ロジック、及び/又は並列処理ロジック間に分散させることができ、したがって、シリアル形式、パラレル形式、超パラレル形式、及び他の形式でロードすることができ、且つ/又は、実行することができることも理解されよう。
【0026】
本明細書で説明するシステム例及び方法例のさまざまなコンポーネントを実施するのに適したソフトウェアは、Java(登録商標)、Pascal、C#、C++、C、CGI、Perl、SQL、API、SDK、アセンブリ、ファームウェア、マイクロコード、及び/又は他の言語並びにツールのようなプログラミング言語並びにツールを使用して制作することができる。ソフトウェアは、システム全体であろうとシステムのコンポーネントであろうと、製品の1つとして実施することができ、上記で定義したようなコンピュータ可読媒体の一部として保持又は提供することができる。ソフトウェアの別の形態には、ネットワーク又は他の通信媒体を介してソフトウェアのプログラムコードを受信者へ送信する信号が含まれ得る。したがって、一例では、コンピュータ可読媒体は、ウェブサーバからユーザへダウンロードされるとき、ソフトウェア/ファームウェアを表す信号の形態を有する。別の例では、コンピュータ可読媒体は、ウェブサーバに保持されるとき、ソフトウェア/ファームウェアの形態を有する。
【0027】
以下の詳細な説明のいくつかの部分は、メモリ内のデータビットに対するオペレーションのアルゴリズム及びシンボル表現の観点で提示される。これらのアルゴリズム的な説明及び表現は、当業者が自身の作業の内容を他者に伝えるのに使用する手段である。アルゴリズムは、ここでは、一般的に、結果を生成するオペレーションのシーケンスであると考えられる。オペレーションは、物理量の物理的な操作を含むことができる。必ずしもそうではないが、通例、物理量は、ロジック等における記憶、転送、結合、比較、及びそれ以外の操作を行うことができる電気信号又は磁気信号の形態を取る。
【0028】
主として一般的な慣例との理由から、これらの信号を、ビット、値、要素、シンボル、文字、用語、数字等と呼ぶことが時に便利であることが分かっている。しかしながら、これらの用語及び類似の用語は、適切な物理量に関連付けられることになり、これらの物理量に適用される単なる便利なラベルにすぎないことに留意すべきである。特に指定のない限り、この説明全体を通じて、処理、計算、演算、決定(求める)、表示等のような用語は、コンピュータシステム、ロジック、プロセッサ、又は物理(電子)量として表されたデータの操作及び変換を行う類似の電子デバイス、の動作及びプロセスを指すことが理解される。
【0029】
図1は、アーキテクチャ100における一例のメモリコントローラ110、RAMコントローラ120、及びRAM130を示している。RAM130は、より一般的には、メモリ130と呼ぶことができ、たとえば、DIMMにパッケージ化されたDRAMとして実施することができる。アーキテクチャ100は、たとえば、コンピュータ、プリンタ、及び他のコンピューティングデバイスに実施することができる。
【0030】
メモリコントローラ110は、メモリ130に記憶される未圧縮データブロックを受信するように構成することができる。未圧縮データブロックは、たとえば、プロセッサ、入出力ロジック、キャッシュ等から受信することができる。一例では、未圧縮データブロックは、キャッシュラインとすることができる。キャッシュラインは、通常、バーストモード境界の倍数であることを思い出されたい。
【0031】
また、メモリコントローラ110は、未圧縮データブロックを圧縮データブロックに圧縮するように構成することもできる。メモリコントローラ110は、ハードウェアで圧縮を実行するように構成することができる。たとえば、メモリコントローラ110は、圧縮を実行するための圧縮ロジック112を含むことができる。ランレングス符号化、辞書ベース符号化等のような簡単な圧縮方式は、圧縮ロジック112が実行することができるが、圧縮ロジック112のようなハードウェアで実行できる他の圧縮方式も使用できることが理解されるべきである。また、メモリコントローラ110は、圧縮データブロックのサイズを計算するように構成することもできる。一例では、このサイズは、未圧縮データブロックが圧縮データブロックに圧縮されている間に計算することができる。
【0032】
圧縮データブロックのサイズが利用可能であると、メモリコントローラ110を、メモリ130とデータを通信する際に使用されるバーストモードプロトコルを選択的に操作するように構成することもできる。一例では、バーストモードプロトコルは、RAMコントローラ120とメモリ130との間で使用することができる。別の例では、バーストモードプロトコルは、メモリコントローラ110とRAMコントローラ120との間で使用することもできる。バーストモードプロトコルを選択的に操作することは、たとえば、メモリ130へ且つ/又はメモリ130から圧縮データを効率的に転送する構成可能なデータビットバースト長に関連したRAS/CASシーケンスを決定することを含むことができる。したがって、デフォルトのデータビットバースト長を使用する代わりに、且つ、場合によっては(potentially)、未使用のデータビットを回復させる代わりに、より正確なデータビットバースト長を使用して、不要なビットの読み出し及び/又は書き込みからの保護に役立てることができる。また、デフォルトのデータビットバースト長の複数の事例を使用する代わりに、場合によってはより長いデータビットバースト長を計算することができる。一例では、データビットバースト長は、1行のデータビット全体とすることさえも可能である。圧縮されたサイズを使用して、バーストモード又は長さを求めることができるが、未圧縮のサイズを使用して、デフォルトの開始アラインメントを計算することができる。
【0033】
RAMコントローラ120は、バスによってメモリコントローラ110に動作可能に接続することができ、メモリインターフェースによってメモリ130に接続することができる。RAMコントローラ120は、圧縮データブロック及び圧縮データブロックのサイズをメモリコントローラ110から受信し、バーストモードプロトコルを使用してメモリインターフェースを介して圧縮データブロックをメモリ130に書き込むように構成することができる。圧縮データブロックをメモリ130に書き込むのに必要なバースト数は、RAMコントローラ120によって制御可能とすることができる。バースト数は、たとえば、圧縮データブロックのサイズに依存する場合がある。
【0034】
RAMコントローラ120は、メモリ130のデフォルトのデータ構造体に関連したデフォルトの開始アラインメント境界に配置される1つ又は複数のサブデータブロックとして、圧縮データブロックを書き込むように構成することができる。これによって、メモリ130の或る空間が未使用となる場合があるが、デフォルトのアラインメント境界への書き込みの利点には、データのサイズ及びロケーションの双方を追跡する必要なく、より効率的なバーストを使用してメモリ130へ且つ/又はメモリ130からデータを転送するようにバーストモードプロトコルを選択的に制御できることが含まれる。その結果、これによって、メモリへ且つ/又はメモリからデータを転送することに関連したボトルネックの削減が容易になる。
【0035】
また、RAMコントローラ120は、圧縮データブロックのサイズを記憶するように構成することもでき、圧縮データブロックを対象とした読み出しアクセス時にそのサイズを取得できるようにされる。利用可能な圧縮データブロックのサイズを有することによって、メモリ130からデータを読み出すのに使用されるバーストモードプロトコルを選択的に操作することが容易になる。たとえば、圧縮データブロックのサイズが、2行全体及び3行目の7列であることが判明している場合、3つの正確なRAS/CASバーストサイクルをプログラミングして、最大データビット転送数を超えてRAS/CASコマンド及びバスサイクルを償却することができる。圧縮データのサイズが判明していない従来のシステム、すなわち、データがライン境界に配置されていない従来のシステムでは、このようなRAS/CAS効率を達成することはできない。この例は、DRAMの行全体よりも通例はるかに小さいキャッシュラインに最適化されたメモリシステムにとって特殊ではある(atypical)が、システム例及び方法例の別の適用を示している。
【0036】
このように、圧縮データブロックのサイズを求めること、デフォルトのアラインメント境界に圧縮データを配置すること、及び、データを転送するようにバーストモードプロトコルを選択的に制御することによって、メモリコントローラとメモリとの間のデータ転送の効率性をより大きく達成することができる。したがって、一例では、圧縮データブロックをRAMコントローラ130に提供する際に使用されるバスサイクル数は、メモリコントローラ110によって計算された圧縮データブロックのサイズから演算することができ、そのサイズによって少なくとも部分的に制御することができる。一例では、圧縮データブロックのサイズは、値として明示的にRAMコントローラ120に提供することができる一方、別の例では、圧縮データブロックのサイズは、データ終了マーカとして暗黙的にRAMコントローラ120に提供することができる。同様に、一例では、RAMコントローラ120は、値として明示的にメモリ130に圧縮データブロックのサイズを記憶するように構成することができる一方、別の例では、RAMコントローラ120は、データ終了マーカとして暗黙的にメモリ130に圧縮データブロックのサイズを記憶するように構成することができる。別の例では、RAMコントローラ120は、圧縮データブロックのサイズを記憶するように構成されたメモリコントローラ110とすることができる。圧縮データブロックのサイズを、メモリ130に記憶されるものとして説明しているが、いくつかの例では、このサイズは、他のロケーションに記憶できることが理解されるべきである。
【0037】
一例では、未圧縮データブロックは、メモリコントローラ110における受信時に、メモリ動作要求を伴うことができる。したがって、一例では、メモリコントローラ110は、このメモリ動作要求に少なくとも部分的に基づいて、未圧縮データブロックを選択的に圧縮するように構成することができる。このように、データが圧縮されることを指示できるメモリ動作要求もある一方、データが圧縮されないことを指示できる他のメモリ動作要求もある。
【0038】
上述したように、メモリコントローラ110は、メモリ130へ且つ/又はメモリ130からデータを転送するのに使用されるバーストモードプロトコルを選択的に制御することを容易にするように構成することができる。これに加えて、且つ/又は、これに代えて、RAMコントローラ120は、RAMコントローラ120とRAM130との間の接続のサイズ、圧縮データブロックのサイズ等のようなデータポイントに基づいてバーストモード制御データを計算するように構成することもできる。たとえば、RAMコントローラ120又はメモリコントローラ110は、RAS/CASシーケンス(複数可)がメモリ130へ且つ/又はメモリ130から圧縮データを転送するのに最も効率的であり得るかどうかを判断することができる。たとえば、デフォルトのアラインメント境界で配置された1行全体の圧縮データを取り出す1つのカスタムRAS/CASシーケンスは、1行の4分の1を取り出す4つのデフォルトのRAS/CASシーケンスよりも効率的な場合がある。
【0039】
図2は、アーキテクチャ200における別の例のメモリコントローラ210、RAMコントローラ220、及びRAM230を示している。いくつかの例では、メモリコントローラ210、RAMコントローラ220、及びRAM230は、図1の対応する要素と同様である。アーキテクチャ200では、メモリコントローラ210は、記憶されたデータブロックをRAM230から取り出す要求を受信するように構成することもできる。場合によっては、このデータブロックを圧縮することができる。したがって、RAMコントローラ220は、選択的に制御されたバーストモードプロトコルを使用して、メモリインターフェースを介してRAM230から、記憶された圧縮データブロックを取り出すように構成することができる。バーストモードプロトコルを選択的に制御することを容易にするために、RAMコントローラ220は、記憶された圧縮データブロックのサイズを取得するように構成することができる。このサイズは、たとえば、メモリ230から取り出すこともできるし、当該サイズが記憶された別のロケーションから取り出すこともできる。記憶された圧縮データブロックのサイズが利用可能であると、RAMコントローラ220は、メモリインターフェースを介して記憶された圧縮データブロックの取り出しをカスタマイズすることができる。たとえば、RAMコントローラ220は、バーストモードプロトコルを選択的に制御して、特定のデータビットバーストサイズを有する特定のRAS/CASシーケンスを使用することができる。このシーケンス及び/又はサイズは、たとえば、記憶された圧縮データブロックのサイズに基づくことができる。
【0040】
アーキテクチャ200の一例では、RAMコントローラ220及び/又はメモリコントローラ210は、圧縮データブロックがメモリ230から取り出された後に、その圧縮データブロックを伸張するように構成することができる。一例では、圧縮データブロックは、RAMコントローラ220及び/又はメモリコントローラ210に関連したハードウェアで伸張することができる。たとえば、メモリコントローラ210は、圧縮データを伸張するように構成されたロジック212を含むことができる。同様に、RAMコントローラ220も、伸張ロジック(図示せず)で構成することができる。このように、ロジック212は、メモリコントローラ210内に示されているが、いくつかの例では、ロジック212は、RAMコントローラ220内に配置することもできるし、他の例では、ロジック212は、メモリコントローラ210及び/又はRAMコントローラ220のいずれかを動作可能に接続できる別個のハードウェアとすることもできることが理解されるべきである。
【0041】
一例では、圧縮データブロックを伸張データブロックに選択的に伸張するようにメモリコントローラ210を制御することができる。圧縮データブロックが伸張されるかどうかは、メモリコントローラ210が受信したメモリ読み出し要求に少なくとも部分的に依存することができる。たとえば、いくつかのメモリ要求ロジックは、メモリ230が圧縮データを記憶できて、データをその圧縮形式で記憶するように要求できることを認識している場合がある。
【0042】
方法例は、図3、図4、及び図5のフロー図を参照することによって、より良く理解することができる。説明を簡単にするために、図示した方法論は、一連のブロックとして示されて説明されているが、いくつかのブロックは、図示して説明する順序とは異なる順序で行うことができ、且つ/又は、他のブロックと同時に行うことができるので、これらの方法論は、ブロックの順序によって限定されるものでないことが理解されるべきである。その上、一例の方法論を実施するのに必要とされるブロックが、図示したすべてのブロックよりも少ない場合がある。さらに、追加方法論及び/又は代替的方法論は、図示しない追加ブロックを使用することもできる。
【0043】
フロー図では、ブロックは、ロジックと共に実施できる「処理ブロック」を示す。この処理ブロックは、方法のステップ及び/又はその方法のステップを実行するための装置の要素を表すことができる。フロー図は、どの特定のプログラミング言語、方法論、又はスタイル(たとえば、手続型、オブジェクト指向型)のシンタックスも示すものではない。逆に、フロー図は、当業者が、図示した処理を実行するためのロジックを開発するのに使用できる機能的な情報を示す。いくつかの例では、一時変数、ルーチンループ等のようなプログラム要素が示されないことが理解されよう。さらに、電子アプリケーション及びソフトウェアアプリケーションは、図示したシーケンスとは異なる他のシーケンスで図示したブロックを実行できるように、且つ/又は、ブロックを結合したり複数のコンポーネントに分割したりできるように、動的で柔軟なプロセスを含むことができることも理解されよう。プロセスは、マシン語、手続型技法、オブジェクト指向型技法、及び/又は人工知能技法のようなさまざまなプログラミング手法を使用して実施できることが理解されよう。
【0044】
図3は、帯域幅の効率的な方法で圧縮データを節約することに関連した一例の方法300を示している。この方法300は、310において、メモリに記憶される未圧縮データブロックを受信することを含むことができる。このデータは、メモリコントローラに受信することができる。また、方法300は、320において、未圧縮データブロックを圧縮データブロックに圧縮することも含むことができる。この圧縮は、メモリコントローラに関連したハードウェアで行うことができる。また、方法300は、330において、圧縮データブロックをメモリに記憶するためにRAMコントローラに提供することも含むことができる。いくつかのメモリコントローラベースの圧縮(伸張)方式は、310から330に説明する動作を実行することができるが、方法300は、340において、RAMコントローラを制御して、メモリへデータを転送するようにバーストモードプロトコルを選択的に操作することも含むことができる。バーストモードプロトコルを選択的に操作することは、たとえば、データビットバースト長の値と共に使用するRAS/CASシーケンスを識別して、RAMコントローラとメモリとの間の接続にわたってデータをより効率的に転送することを含むことができる。例示として、圧縮データブロックは、DRAMの3行及び4行目の一部を消費するものとして識別することができる。したがって、3行すべての書き込み及び残りの部分のみの第4の書き込みを実行するようにバーストモードプロトコルを操作することができる。1行につき4つの連続したデータビットの4つの組を書き込んでいた可能性がある一連のデフォルトのRAS/CASシーケンスを使用することとは対照的に、全体的なRAS/CASシーケンス数が選択的な制御によって減少されていた。圧縮サイズが、バースト長又はバースト数を制御するのに使用されていた可能性があるが、デフォルトの未圧縮サイズを使用して、書き込みの開始アラインメント(複数可)を計算することができることに留意されたい。したがって、方法300は、データサイズの追跡及び或る固有の開始アドレスの計算の双方を必要としない。
【0045】
図4は、帯域幅の効率的な方法で圧縮データを節約することに関連した別の例の方法を示している。この方法400は、410において、メモリに記憶される未圧縮データブロックを受信することを含むことができる。このデータは、メモリコントローラに受信することができる。また、方法400は、420において、未圧縮データブロックを圧縮データブロックに圧縮することも含むことができる。この圧縮は、メモリコントローラに関連したハードウェアで行うことができる。また、方法400は、430において、圧縮データブロックをメモリに記憶するためにRAMコントローラに提供することも含むことができる。さらに、方法400は、440において、RAMコントローラを制御して、メモリへデータを転送するようにバーストモードプロトコルを選択的に操作することも含むことができる。
【0046】
上述したように、いくつかのメモリコントローラベースの圧縮(伸張)方式は、410から430で実行される動作を説明することができる。しかしながら、方法400は、450において、圧縮データブロックのサイズを求めることも含むことができる。圧縮データのサイズが利用可能であると、従来のシステムを超える改良を行うことができる。したがって、方法400は、460において、バーストモードプロトコルを使用して、デフォルトのアラインメント境界に配置されたデータのサブブロック(複数可)として圧縮データブロックをメモリに書き込むことを含むことができる。したがって、メモリコントローラは、データブロックのサイズ及びロケーションの双方を追跡するタスクを課せられない。たとえば、圧縮データブロックのサイズのようなデータによってバーストモードプロトコルを制御することができる。バーストモードプロトコルを制御することは、たとえば、書き込まれる圧縮データのサイズに基づいて、より正確なデータビットバースト長を有するRAS/CASシーケンスをカスタマイズすることを含むことができる。たとえば、圧縮データが、単一行のメモリよりも少ないメモリに一致するキャッシュラインである場合、圧縮キャッシュラインのサイズに等しいデータビットバースト長を有する単一のCAS/RASシーケンスを、圧縮キャッシュラインがデフォルトのアラインメント境界で開始して書き込まれる時に使用することができる。
【0047】
また、方法400は、470において、圧縮データブロックのサイズを記憶することも含むことができ、記憶された圧縮データブロックのサイズを、その圧縮データブロックを対象とした読み出しアクセス時に取得できるようにされる。記憶された圧縮データブロックのサイズを有することによって、圧縮データをより効率的に取り出すことが容易になる。一例では、圧縮データブロックのサイズは、圧縮データが記憶されるメモリに値として記憶することができる。別の例では、圧縮データブロックのサイズは、たとえば、圧縮データブロックの後尾に追加されたデータ終了マーカによってメモリに暗黙的に示すことができる。さらに別の例では、データのサイズは、圧縮データが記憶されるメモリ以外のロケーションに記憶することができる。
【0048】
図5は、帯域幅の効率的な方法で圧縮データの読み出し及び書き込みを行うことに関連した方法500を示している。この方法500は、510において、メモリに記憶される未圧縮データブロックを受信することを含むことができる。また、方法500は、520において、未圧縮データブロックを圧縮データブロックに圧縮することも含むことができ、530において、圧縮データブロックをメモリに記憶するためにRAMコントローラに提供することも含むことができる。さらに、方法500は、540において、圧縮データブロックのサイズを求めることも含むことができる。圧縮データのサイズが利用可能であると、従来のシステムを超える改良を行うことができる。したがって、方法500は、545において、データをメモリに書き込むのに使用されるバーストモードプロトコルを選択的に制御することを含むことができる。次いで、方法500は、550において、バーストモードプロトコルを使用して、デフォルトのアラインメント境界に配置されたデータのサブブロック(複数可)として圧縮データブロックをメモリに書き込むことを含むことができる。また、方法500は、560において、圧縮データブロックのサイズを記憶することも含むことができ、記憶された圧縮データブロックのサイズを、その圧縮データブロックを対象とした読み出しアクセス時に取得できるようにされる。
【0049】
また、方法500は、570において、メモリコントローラでデータブロックの読み出し要求を受信することも含むことができる。このデータブロックは、圧縮されて、メモリに記憶された圧縮データとして記憶されたものである場合がある。この要求は、圧縮データブロックを対象とするものとして説明されているが、要求側は、データが圧縮形式で記憶されていることを認識していない場合があることを理解すべきである。したがって、メモリ要求は、単にデータブロックを求めるものではあるが、たまたま圧縮フォーマットで記憶されるデータブロックを探し求める場合がある。圧縮データブロックの読み出し要求を受信すると、方法500は、580において、メモリに記憶された圧縮データブロックのサイズを取り出すことを含むことができる。
【0050】
圧縮データのサイズが一旦判明すると、方法500は、585において、メモリコントローラと、データが記憶されるメモリとの間でバーストモードプロトコルを選択的に操作して、圧縮データブロックを効率的に取り出すことを容易にする。また、方法500は、590において、圧縮サイズによって少なくとも部分的に制御されるバーストモードプロトコルを使用して、メモリから圧縮データブロックを取り出すことも含むことができる。たとえば、圧縮データのサイズが1行よりも小さい場合に、データビットバースト長がそのデータのサイズと等しい単一のRAS/CASシーケンスを使用して、データを取り出すことができる。圧縮データは、デフォルトのアラインメント境界に配置されたメモリに書き込まれたので、単一のRASコマンドを使用することができる。したがって、たとえデータブロックが圧縮されても、そのデータブロックはまだデフォルトのアラインメント境界に配置されているので、メモリコントローラは、そのデータブロックのサイズ及びロケーションの双方を追跡する必要はない。
【0051】
また、方法500は、595において、取り出された圧縮データブロックを伸張することも含むことができる。この伸張は、たとえば、メモリコントローラ、RAMコントローラ等に関連したハードウェアで行うことができる。599において、別の要求(たとえば、書き込み、読み出し)が処理されるか否かに関する判断が行われる。599における判断がYesである場合には、処理は、510又は570のいずれかに戻ることができ、そうでない場合には、処理は終了することができる。
【0052】
一例では、方法論は、コンピュータ可読媒体上に設けられたプロセッサ実行可能命令及び/又はオペレーションとして実施される。したがって、一例では、コンピュータ可読媒体は、メモリに記憶される未圧縮データブロックをメモリコントローラで受信すること、メモリコントローラに関連したハードウェアで未圧縮データブロックを圧縮データブロックに圧縮すること、及び、圧縮データブロックをメモリに記憶するためにRAMコントローラに提供することを含む方法を実行するように動作可能なプロセッサ実行可能命令を記憶することができる。この方法は、圧縮データブロックのサイズを求めること、RAMコントローラを制御して、RAMコントローラとメモリとの間でデータを転送するためのバーストモードプロトコルを選択的に制御すること、及び、バーストモードプロトコルを使用して、デフォルトのアラインメント境界に配置されたサブデータブロック(複数可)として圧縮データブロックをメモリに書き込むことを含むこともできる。バーストモードプロトコルは、圧縮データブロックのサイズによって少なくとも部分的に制御することができる。また、この方法は、圧縮データブロックを対象とした読み出しアクセス時に圧縮データブロックのサイズを取得できるように、圧縮データブロックのサイズを記憶することも含むことができる。また、この方法は、メモリに記憶された圧縮データブロックを読み出す要求をメモリコントローラで受信すること、メモリに記憶された圧縮データブロックのサイズを取り出すこと、及び、この圧縮サイズによって少なくとも部分的に制御されるバーストモードプロトコルを使用してメモリから圧縮データブロックを取り出すことも含むことができる。さらに、この方法は、取り出された圧縮データブロックをハードウェアで伸張することも含むことができる。
【0053】
上記方法は、コンピュータ可読媒体上に設けられるものとして説明されているが、本明細書で説明する他の方法例も、コンピュータ可読媒体上に設けることができることが理解されるべきである。
【0054】
図6は、メモリコントローラベースの圧縮及びバーストモードプロトコルの制御のためのシステム600に配置された一例のメモリコントローラロジック610、RAMコントローラロジック620、及びRAM630を示している。メモリコントローラロジック610は、メモリに記憶されるデータラインを受信するように構成された受信ロジック612を含むことができる。記憶されるデータラインの送信側は、データが圧縮フォーマットで記憶されていることを認識していない場合があり、したがって、いくつかの例では、記憶されるデータラインは、送信側により、圧縮フォーマットで記憶されるデータラインとしてではなく、単に記憶されるデータラインとして識別される場合があることが理解されるべきである。しかしながら、メモリコントローラロジック610は、そのデータラインを、圧縮され且つ記憶されるデータラインとして受信することができる。そこで、メモリコントローラロジック610は、受信ロジック612に動作可能に接続された圧縮ロジック614も含むことができる。圧縮ロジック614は、データラインをハードウェアで圧縮するように構成することができる。メモリコントローラロジック610は、書き込み長ロジック616も含むことができる。この書き込み長ロジック616は、圧縮ロジック614に動作可能に接続され、且つ、圧縮データラインのサイズを求めるように構成されている。圧縮データラインのサイズを求めることによって、たとえば、バーストモードプロトコルを選択的に制御して、メモリからのデータの読み出し及び/又はメモリへのデータの書き込みをより効率的に行うことが容易になる。
【0055】
また、システム600は、メモリコントローラロジック610及びRAM630に動作可能に接続されたRAMコントローラロジック620も含むことができる。RAMコントローラロジック620は、バーストモード制御ロジック622を含むことができる。このバーストモード制御ロジック622は、RAMコントローラ620によって使用されるバーストモードプロトコルを選択的に制御してRAM630と圧縮データラインを通信するように構成されている。たとえば、バーストモード制御ロジック622によって、RAM630にデフォルトのアラインメント境界で圧縮ラインを書き込むバーストモードシーケンスを選択的に制御することを容易にすることができる。圧縮データ集合体がデフォルトのアラインメント境界に配置される(たとえば、開始する)ように圧縮データ集合体を書き込むことによって、単一のRAS/CASシーケンスを使用すること、及び、メモリにデータを書き込むのに必要とされるバスサイクル数を最小にすることが容易になる。
【0056】
RAMコントローラロジック620は、バーストモード制御ロジック622に動作可能に接続された書き込みロジック624も含むことができる。この書き込みロジック624は、たとえ圧縮データのサイズが、通常はデフォルトのアラインメント境界に配置されるデータ構造体のサイズよりも小さくなる場合があっても、デフォルトのアラインメント境界に圧縮データラインを配置して、RAM630に圧縮データラインを書き込むように構成することができる。
【0057】
図7は、メモリコントローラロジック610、RAMコントローラロジック620、及びRAM630で構成された別のシステム700を示している。図6、図7、及び図8において、同様の符号(たとえば、610)は、これら3つのシステム600、700、及び800において同様の要素を指す。
【0058】
システム700のRAMコントローラロジック620は、バーストモード制御ロジック622に動作可能に接続された読み出し長ロジック726を含むことができる。読み出し長ロジック726は、RAM630に記憶された圧縮データラインのサイズを求めるように構成することができる。圧縮データラインのサイズが判明することにより、バーストモードプロトコルをより正確に制御して、記憶されたメモリをより効率的に読み出すことが容易になる。また、RAMコントローラロジック620は、バーストモードロジック622及び/又は読み出し長ロジック726に動作可能に接続された取り出しロジック728も含むことができる。この取り出しロジック728は、RAM630に記憶された圧縮データラインを取り出すように構成することができる。要求されたデータラインは、取り出された後、たとえば、取り出しロジック728に記憶することができ、次いで、メモリコントローラロジック610に提供することができる。
【0059】
図8は、メモリコントローラロジック610、RAMコントローラロジック620、及びRAM630を含む別の例のシステム800を示している。このシステム800は、メモリコントローラロジック610及び/又はRAMコントローラロジック620に動作可能に接続可能な伸張ロジック840も含む。この伸張ロジック840は、圧縮データラインがRAM630から取り出された後、この圧縮データラインを伸張するように構成することができる。伸張ロジック840は、メモリコントローラロジック610及びRAMコントローラロジック620の外部に示されているが、異なる例では、伸張ロジック840は、メモリコントローラロジック610内又はRAMコントローラロジック620内に配置できることが理解されるべきである。いくつかの例では、すべての圧縮データが伸張されるとは限らない。したがって、一例では、伸張ロジック840は、メモリコントローラロジック610によって受信されたメモリ読み出し要求に少なくとも部分的に基づいて圧縮データラインを選択的に伸張するように構成することができる。
【0060】
図9は、プロセッサ902、メモリ904、及び入出力ポート910を含むコンピュータ900を示している。これらプロセッサ902、メモリ904、及び入出力ポート910は、バス908によって動作可能に接続されている。一例では、コンピュータ900は、メモリコントローラ932と共に動作するように構成された圧縮(伸張)ロジック930を含むことができ、それによって、メモリコントローラベースのデータ圧縮(伸張)が容易にされる。このように、圧縮(伸張)ロジック930は、ランダムアクセスメモリ(たとえば、メモリ904)に記憶される未圧縮データブロックをハードウェアで圧縮するための手段を提供することができる。また、圧縮(伸張)ロジック930は、ランダムアクセスメモリに記憶された圧縮データブロックをハードウェアで伸張するための手段も提供することができる。伸張ロジック930は、メモリコントローラ932と共に動作して、ランダムアクセスメモリからの圧縮データの読み出し及びランダムアクセスメモリへの圧縮データの書き込みを行う際に使用されるバス及びバスプロトコルを制御するための手段も提供することができる。この制御は、たとえば、メモリコントローラとランダムアクセスメモリとの間で転送される圧縮データの量に基づくことができる。
【0061】
プロセッサ902は、デュアルマイクロプロセッサ及び他のマルチプロセッサアーキテクチャを含む多種多様なさまざまなプロセッサとすることができる。メモリ904は、RAM、同期RAM(SRAM)、動的RAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、直接RAMバスRAM(DRRAM)等のような揮発性メモリとすることができる。
【0062】
ディスク906は、たとえば、入出力インターフェース(たとえば、カード、デバイス)918及び入出力ポート910を介してコンピュータ900に動作可能に接続することができる。ディスク906には、磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Zipドライブ、フラッシュメモリカード、及び/又はメモリスティックのようなデバイスが含まれ得るが、これらに限定されるものではない。さらに、ディスク906には、CD−ROM、書き込み可能CDドライブ(CD−Rドライブ)、書き換え可能CDドライブ(CD−RWドライブ)、及び/又はデジタルビデオROMドライブ(DVD ROM)のような光ドライブが含まれ得る。メモリ904は、たとえば、プロセス914及び/又はデータ916を記憶することができる。ディスク906及び/又はメモリ904は、コンピュータ900の資源の制御及び割り当てを行うオペレーティングシステムを記憶することができる。
【0063】
バス908は、単一の内部バス相互接続アーキテクチャ及び/又は他のバスアーキテクチャ若しくはメッシュアーキテクチャとすることができる。単一のバスが示されているが、コンピュータ900は、図示しない他のバス(たとえば、PCIE、SATA、インフィニバンド、1394、USB、イーサネット(登録商標))を使用してさまざまなデバイス、ロジック、及び周辺機器と通信することができることが理解されるべきである。バス908は、さまざまなタイプのものとすることができる。このさまざまなタイプには、メモリバス、周辺バス若しくは外部バス、クロスバースイッチ、及び/又はローカルバスが含まれるが、これらに限定されるものではない。ローカルバスは、さまざまなものとすることができる。このさまざまなものには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MSA)バス、拡張ISA(EISA)バス、周辺機器相互接続(PCI)バス、ユニバーサルシリアルバス(USB)、及び小型コンピュータシステムインターフェース(SCSI)バスが含まれるが、これらに限定されるものではない。
【0064】
コンピュータ900は、I/Oインターフェース918及び入出力ポート910を介して入出力デバイスと相互作用することができる。入出力デバイスには、キーボード、マイク、ポインティング/選択デバイス、カメラ、ビデオカード、ディスプレイ、ディスク906、ネットワークデバイス920等が含まれ得るが、これらに限定されるものではない。入出力ポート910には、シリアルポート、パラレルポート、及びUSBポートが含まれ得るが、これらに限定されるものではない。
【0065】
コンピュータ900は、ネットワーク環境で動作することができ、したがって、I/Oインターフェース918及び/又はI/Oポート910を介してネットワークデバイス920に接続することができる。ネットワークデバイス920を通じて、コンピュータ900は、ネットワークと相互作用することができる。ネットワークを通じて、コンピュータ900は、リモートコンピュータに論理的に接続することができる。コンピュータ900が相互作用できるネットワークには、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、及び他のネットワークが含まれるが、これらに限定されるものではない。ネットワークデバイス920は、LAN技術に接続することができる。このLAN技術には、ファイバ分散データインターフェース(FDDI)、銅分散データインターフェース(copper distributed data interface;CDDI)、イーサネット(IEEE802.3)、トークンリング(IEEE802.5)、無線コンピュータ通信(IEEE802.11)、ブルートゥース(IEEE802.15.1)、Zigbee(IEEE802.15.4)等が含まれるが、これらに限定されるものではない。同様に、ネットワークデバイス920は、WAN技術にも接続することができる。このWAN技術には、ポイントツーポイントリンク、統合サービスデジタル網(ISDN)のような回線交換ネットワーク、パケット交換ネットワーク、及びデジタル加入者線(DSL)が含まれるが、これらに限定されるものではない。個々のネットワークタイプを説明しているが、ネットワークを介した、ネットワーク上の(over)、且つ/又はネットワークを通じた通信には、複数の通信を組み合わせたもの及び複数の通信を混合したものが含まれ得ることが理解されるべきである。
【0066】
図10は、本明細書で説明したシステム例のように動作するよう構成された圧縮(伸張)ロジック1010及びメモリコントローラ1060を含む一例の画像形成デバイス1000を示している。圧縮(伸張)ロジック1010及びメモリコントローラ1060は、本明細書で説明した方法のような実行可能方法を実行するように構成されたロジックを含むことができる。圧縮(伸張)ロジック1010及びメモリコントローラ1060は、画像形成デバイス1000に恒久的に、且つ/又は、着脱可能に取り付けることができる。
【0067】
画像形成デバイス1000は、レンダリングされる印刷データを受信することができる。したがって、画像形成デバイス1000は、印刷データを記憶するように構成された、より一般的には、画像処理に使用されるように構成されたメモリ1020も含むことができる。また、画像形成デバイス1000は、印刷データからプリンタ準備画像を生成するように構成されたレンダリングロジック1030も含むことができる。レンダリングは、関与するデータのフォーマット、及び、画像化デバイスのタイプに基づいて変化する。一般に、レンダリングロジック1030は、高レベルデータを、表示用又は印刷用のグラフィカル画像(たとえば、印刷準備データ)に変換する。たとえば、一形態は、3次元物体又は3次元シーンの数学的モデルを取り込んで、その数学的モデルをビットマップ画像に変換するレイトレーシングである。別の例は、HTMLを表示/印刷用の画像に変換するプロセスである。画像形成デバイス1000は、レンダリングする必要のないプリンタ準備データを受信することもでき、したがって、レンダリングロジック1030は、いくつかの画像形成デバイスには現れない場合があることは理解すべきである。
【0068】
また、画像形成デバイス1000は、印刷準備画像から印刷媒体上に画像を生成するように構成された画像形成メカニズム1040も含むことができる。この画像形成メカニズム1040は、画像デバイス1000のタイプに基づいて変化する場合があり、レーザ画像化メカニズム、他のトナーに基づく画像化メカニズム、インクジェットメカニズム、デジタル画像化メカニズム、又は他の画像化復元エンジンを含むことができる。画像形成デバイス1000のオペレーションを制御するロジックで実施されるプロセッサ1050を含めることができる。一例では、プロセッサ1050は、Java命令を実行できるロジックを含む。画像形成デバイス1000の他のコンポーネントは、本明細書では説明されていないが、画像化プロセスに関与する媒体ハンドリングメカニズム及び記憶メカニズム、センサ、コントローラ、並びに他のコンポーネントを含むことができる。
【0069】
システム例、方法例等を、例を説明することによって示し、これらの例をかなり詳細に説明してきたが、添付の特許請求の範囲をこのような詳細なものに制限することも、多少なりとも限定することも、出願人の意図するところではない。もちろん、本明細書で説明したシステム、方法等を説明するために、コンポーネント又は方法論の考えられるあらゆる組み合わせを説明することは不可能である。別の利点及び変更が、当業者には容易に明らかになるであろう。したがって、この発明は、図示して説明した特定の詳細、代表的な装置、及び例示した例に限定されるものではない。このように、この出願は、添付した特許請求の範囲の範囲内に入る改変、変更、及び変形を包含することを目的としている。さらに、上記説明は、この発明の範囲を限定するように意図されていない。そうではなく、この発明の範囲は、添付の特許請求の範囲及びその均等物によって確定されることになる。
【0070】
用語「含む」は、発明を実施するための最良の形態又は特許請求の範囲で使用される限りにおいて、用語「備える」が特許請求の範囲で慣習的な用語として使用された場合にその用語が解釈されるのと同様に、包含的であるように意図されている。さらに、用語「又は/若しくは」は、発明を実施するための最良の形態又は特許請求の範囲で使用される限りにおいて(たとえば、A又はB)、「A若しくはB又は双方」を意味するように意図されている。出願人が、「A又はBのみであって、双方ではない」ことを示すように意図している場合、用語「A又はBのみであって、双方ではない」が使用されることになる。したがって、本明細書における用語「又は/若しくは」の使用は、包含的な使用であって、排他的な使用ではない。これについては、Bryan A. Garner著「A Dictionary of Modern Legal Usage」624 (2d. Ed. 1995)を参照されたい。
【図面の簡単な説明】
【0071】
【図1】一例のメモリコントローラ、RAMコントローラ、RAMのアーキテクチャを示す図である。
【図2】別の例のメモリコントローラ、RAMコントローラ、RAMのアーキテクチャを示す図である。
【図3】圧縮データを節約することに関連した一例の方法を示す図である。
【図4】圧縮データを節約することに関連した別の例の方法を示す図である。
【図5】圧縮データの読み出し及び書き込みに関連した一例の方法を示す図である。
【図6】メモリコントローラベースの圧縮(伸張)に関連した一例のシステムを示す図である。
【図7】メモリコントローラベースの圧縮(伸張)に関連した別の例のシステムを示す図である。
【図8】メモリコントローラベースの圧縮(伸張)に関連した別の例のシステムを示す図である。
【図9】本明細書に示すシステム例及び方法例が動作できる一例のコンピューティング環境を示す図である。
【図10】本明細書に示すシステム例及び方法例が動作できる一例の画像形成デバイスを示す図である。
【符号の説明】
【0072】
100・・・アーキテクチャ
110・・・メモリコントローラ
112・・・圧縮ロジック
120・・・RAMコントローラ
210・・・メモリコントローラ
212・・・圧縮(伸張)ロジック
220・・・RAMコントローラ
600・・・システム
610・・・メモリコントローラロジック
612・・・受信ロジック
614・・・圧縮ロジック
616・・・書き込み長ロジック
620・・・RAMコントローラロジック
622・・・バーストモード制御ロジック
624・・・書き込みロジック
700・・・システム
726・・・読み出し長ロジック
728・・・取り出しロジック
800・・・システム
840・・・伸張ロジック
900・・・コンピュータ
902・・・プロセッサ
904・・・メモリ
906・・・ディスク
908・・・バス
910・・・I/Oポート
914・・・プロセス
916・・・データ
918・・・I/Oインターフェース
920・・・ネットワークデバイス
930・・・圧縮(伸張)ロジック
932・・・メモリコントローラ
940・・・I/Oコントローラ
1000・・・画像形成デバイス
1010・・・圧縮(伸張)ロジック
1020・・・メモリ
1030・・・レンダリングロジック
1040・・・画像形成メカニズム
1050・・・プロセッサ
1060・・・メモリコントローラ

【特許請求の範囲】
【請求項1】
システム(100)であって、
メモリコントローラ(110)であって、
メモリに記憶される未圧縮データブロックを受信するように構成され、
前記未圧縮データブロックをハードウェアで圧縮して圧縮データブロックにするように構成され、
前記圧縮データブロックのサイズを計算するように構成され、
ランダムアクセスメモリ(RAM)(130)とデータを通信する際に使用されるバーストモードプロトコルを選択的に操作するように構成された
メモリコントローラ(110)と、
バスによって前記メモリコントローラ(110)に動作可能に接続され、メモリインターフェースによって前記RAM(130)に動作可能に接続されたRAMコントローラ(120)であって、
前記圧縮データブロック及び前記圧縮データブロックの前記サイズを前記メモリコントローラ(110)から受信するように構成され、
前記バーストモードプロトコルを使用して、前記メモリインターフェースを介して前記RAM(130)に前記圧縮データブロックを書き込むように構成され、前記圧縮データブロックを前記RAM(130)に書き込むのに必要とされるバースト数は、前記RAMコントローラ(120)によって制御可能であり、前記圧縮データブロックの前記サイズに少なくとも部分的に基づいており、前記圧縮データブロックは、前記未圧縮データブロックのサイズに少なくとも部分的に基づいてデフォルトのバーストモードRAMライン境界に配置された(aligned)1つ又は複数のサブデータブロックとして書き込まれ、
前記RAM(130)に書き込まれた前記圧縮データブロックを対象とした読み出しアクセス時に前記圧縮データブロックの前記サイズを取得できるように、前記サイズを記憶するように構成された
RAMコントローラ(120)と
を備えるシステム。
【請求項2】
前記圧縮データブロックは、前記メモリコントローラ(110)により、前記バスを介して前記RAMコントローラ(120)に提供され、前記RAMコントローラ(120)に前記圧縮データブロックを提供する際に使用されるバスサイクル数は、前記圧縮データブロックの前記サイズから演算され、前記サイズによって少なくとも部分的に制御される
請求項1に記載のシステム。
【請求項3】
前記圧縮データブロックの前記サイズは、明示的な値及び暗黙的なデータ終了マーカの一方又は双方として前記RAMコントローラ(120)に提供される
請求項1に記載のシステム。
【請求項4】
前記RAMコントローラ(120)は、明示的な値及びデータ終了マーカの一方又は双方として前記RAM(130)に前記圧縮データブロックの前記サイズを記憶するように構成される
請求項1に記載のシステム。
【請求項5】
前記バーストモードプロトコルを選択的に操作することは、RAS/CAS(行アドレス選択/列アドレス選択)シーケンス及び構成可能なデータビットバースト長の一方又は双方を決定することを含む
請求項1に記載のシステム。
【請求項6】
前記メモリコントローラ(110)は、記憶された圧縮データブロックが前記RAMコントローラ(120)によって前記RAM(130)から取り出されることを要求するようにさらに構成され、前記RAMコントローラ(120)は、前記バーストモードプロトコルを使用して、前記メモリインターフェースを介して前記RAM(130)から前記記憶された圧縮データブロックを取り出すように構成される
請求項1に記載のシステム。
【請求項7】
前記RAMコントローラ(120)は、前記記憶された圧縮データブロックの取り出したサイズを取得するように構成され、前記メモリインターフェースを介して、前記記憶された圧縮データブロックの前記取り出しをカスタマイズし、前記記憶された圧縮データブロックの前記取り出したサイズに少なくとも部分的に基づいて前記バーストモードプロトコルを制御するように構成される
請求項6に記載のシステム。
【請求項8】
前記RAMコントローラ(120)及び前記メモリコントローラ(110)の一方は、前記圧縮データブロックが前記RAM(130)から取り出された後に、前記圧縮データブロックを伸張して伸張データブロックにするようにさらに構成される
請求項7に記載のシステム。
【請求項9】
方法(500)であって、
メモリに記憶される未圧縮データブロックをメモリコントローラで受信すること(510)と、
前記メモリコントローラに関連したハードウェアで前記未圧縮データブロックを圧縮して圧縮データブロックにすること(520)と、
前記圧縮データブロックを前記メモリに記憶するためにRAMコントローラに提供すること(530)と、
前記圧縮データブロックのサイズを求めること(540)と、
前記RAMコントローラを制御すること(545)であって、それによって、前記メモリへデータを転送するためのバーストモードプロトコルを選択的に操作することと、
前記バーストモードプロトコルを使用して、1つ又は複数のデフォルトのバーストモードRAM境界に配置された1つ又は複数のサブデータブロックとして前記圧縮データブロックを前記メモリに書き込むこと(550)であって、前記バーストモードプロトコルは、前記圧縮データブロックの前記サイズによって少なくとも部分的に制御されることと、
前記圧縮データブロックを対象とした読み出しアクセス時に前記圧縮データブロックの前記求められたサイズを取得できるように、前記求められたサイズを記憶すること(560)と
を含む方法。
【請求項10】
前記メモリに記憶された圧縮データブロックを読み出す要求を前記メモリコントローラで受信すること(570)と、
前記メモリに記憶された前記圧縮データブロックの圧縮サイズを取り出すこと(580)と、
前記圧縮サイズによって少なくとも部分的に制御される(585)前記バーストモードプロトコルを使用して前記メモリから前記圧縮データブロックを取り出すこと(590)と、
前記取り出された圧縮データブロックをハードウェアで伸張すること(595)と
を含む請求項9に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2007−4795(P2007−4795A)
【公開日】平成19年1月11日(2007.1.11)
【国際特許分類】
【出願番号】特願2006−169537(P2006−169537)
【出願日】平成18年6月20日(2006.6.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ZIGBEE
【出願人】(503003854)ヒューレット−パッカード デベロップメント カンパニー エル.ピー. (1,145)
【Fターム(参考)】