(57)【要約】【課題】マルチプロセッサシステムにおいて、プロセッサとメモリ間のデータの転送および保存を効率良く行う。【解決手段】データを共有メモリに転送する前に、データをローカルに圧縮する。メモリは圧縮されたデータを、このデータが圧縮されていない場合の配置と同じ配置で格納する。タグテーブル３０２は、与えられたアドレスブロックのデータセットの圧縮タイプおよび圧縮データサイズを保持する。複数のコプロセッサにアクセス可能なＤＭＡＣ３００にデータ圧縮部３０４とデータ伸張部３０６が実装されている。データ圧縮部とデータ伸張部をこれらのコプロセッサに実装してもよい。【選択図】図３
2010092499.tif 000002
【特許請求の範囲】
【請求項１】
データを処理する複数のプロセッサと、
データを圧縮するデータ圧縮部と、
データを解凍するデータ伸張部と、
データ圧縮部により圧縮されたデータを、前記複数のプロセッサのうちのいずれかの選択されたプロセッサと共有メモリ間で転送するとともに、前記圧縮されたデータと関連する圧縮情報を管理するように構成されたメモリアクセスユニットとを備え、
前記データ圧縮部は、前記共有メモリのｉ番目のメモリブロックに格納されるべき、データアクセスの単位からみて望ましい所定サイズの第１の非圧縮データと、前記共有メモリのｉ＋１番目のメモリブロックに格納されるべき、前記所定サイズの第２の非圧縮データとについて、第１の非圧縮データを圧縮した第１の圧縮データと、第２の非圧縮データを圧縮した第２の圧縮データを生成し、
前記メモリアクセスユニットによって前記共有メモリに転送された前記第１および第２の圧縮データについて、前記第１の圧縮データは、前記ｉ番目のメモリブロックの先頭から格納され、前記第２の圧縮データは、前記ｉ＋１番目のメモリブロックの先頭から格納されることを特徴とするデータ処理装置。
【請求項２】
前記データアクセスの単位からみて望ましい所定サイズは、前記共有メモリにおけるページサイズであることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記プロセッサと接続されたキャッシュをさらに備え、
前記データアクセスの単位から見て望ましい所定サイズは、前記キャッシュにおける１つのキャッシュラインのサイズであることを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記メモリアクセスユニットは、前記データ伸張部と前記データ圧縮部を有することを特徴とする請求項１から３のいずれかに記載のデータ処理装置。
【請求項５】
前記選択されたプロセッサは、前記データ伸張部と前記データ圧縮部を有することを特徴とする請求項１から３のいずれかに記載のデータ処理装置。
【請求項６】
前記選択されたプロセッサは、前記データ圧縮部と前記データ伸張部のうちのいずれか一方を含み、
前記メモリアクセスユニットは、それらのうちの他方を含むことを特徴とする請求項１から３のいずれかに記載のデータ処理装置。
【請求項７】
前記メモリアクセスユニットが前記圧縮情報を保存するためのタグテーブルをさらに備えることを特徴とする請求項１から６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記圧縮情報は、圧縮タイプ、圧縮データサイズ、圧縮データが共有メモリ上に保存された場所を示すアドレス識別情報を含むことを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記メモリアクセスユニットは、圧縮データに基づいて圧縮データパケットを生成するように構成され、
圧縮データパケットは、圧縮タイプと圧縮データサイズを含むことを特徴とする請求項１から８のいずれか１項に記載のデータ処理装置。
【請求項１０】
前記データ圧縮部と前記データ伸張部は、それぞれ複数あり、
各プロセッサは、前記データ圧縮部と前記データ伸張部を１つずつ有することを特徴とする請求項１に記載のデータ処理装置。
【請求項１１】
前記共有メモリは、前記複数のプロセッサを格納したプロセッサチップ上に格納されたオンチップメモリであることを特徴とする請求項１から１０のいずれか１項に記載のデータ処理装置。
【請求項１２】
前記メモリアクセスユニットは、ＤＭＡＣ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌｌｅｒ）であることを特徴とする請求項１から１１のいずれか１項に記載のデータ処理装置。
【請求項１３】
データを処理するように構成されたプロセッサと、
プロセッサと共有メモリ間でデータを転送するとともに、圧縮されたデータと関連する圧縮情報を管理するメモリアクセスユニットとを備え、
前記メモリアクセスユニットは、データ圧縮部とデータ伸張部とを有し、
データ圧縮部は、前記共有メモリのｉ番目のメモリブロックに格納されるべき、データアクセスの単位からみて望ましい所定サイズの第１の非圧縮データと、前記共有メモリのｉ＋１番目のメモリブロックに格納されるべき、前記所定サイズの第２の非圧縮データとについて、第１の非圧縮データを圧縮した第１の圧縮データと、第２の非圧縮データを圧縮した第２の圧縮データを生成するように構成され、
データ伸張部は、データを伸張するように構成され、
前記メモリアクセスユニットによって前記共有メモリに転送された前記第１および第２の圧縮データについて、前記第１の圧縮データは、前記ｉ番目のメモリブロックの先頭から格納され、前記第２の圧縮データは、前記ｉ＋１番目のメモリブロックの先頭から格納されることを特徴とする処理システム。
【請求項１４】
バス、処理ユニット、バスによって処理ユニットと接続された複数のサブ処理ユニットを含む処理エレメントと、
メモリアクセスユニットとを備え、
前記複数のサブ処理ユニットのうちのいずれかの選択されたサブ処理ユニットは、メモリアクセスユニットを用いて、圧縮データをメモリに転送するとともに保存するように構成され、
前記圧縮データは、前記メモリのｉ番目のメモリブロックに格納されるべき、データアクセスの単位からみて望ましい所定サイズの第１の非圧縮データと、前記メモリのｉ＋１番目のメモリブロックに格納されるべき、前記所定サイズの第２の非圧縮データとが、第１の非圧縮データを圧縮した第１の圧縮データと、第２の非圧縮データを圧縮した第２の圧縮データとして生成されたものであり、
前記メモリアクセスユニットによって前記メモリに転送された前記第１および第２の圧縮データについて、前記第１の圧縮データは、前記ｉ番目のメモリブロックの先頭から格納され、前記第２の圧縮データは、前記ｉ＋１番目のメモリブロックの先頭から格納され、
前記圧縮データと関連する圧縮情報が前記メモリアクセスユニットに保存されることを特徴とする処理システム。
【請求項１５】
前記選択されたサブ処理ユニットは、
非圧縮データを受信するとともに、メモリに転送される圧縮データを生成するデータ圧縮部と、
メモリから前記圧縮データを受信するとともに、受信された圧縮データを伸張するデータ伸張部とを備えることを特徴とする請求項１４に記載の処理システム。
【請求項１６】
メモリアクセスユニットは、
非圧縮データを受信するとともに、メモリに転送される圧縮データを生成するデータ圧縮部と、
メモリから前記圧縮データを受信するとともに、受信された圧縮データを伸張するデータ伸張部とを備えることを特徴とする請求項１４に記載の処理システム。
【請求項１７】
メモリアクセスユニットは、ＤＭＡＣにより構成されることを特徴とする請求項１４から１６のいずれか１項に記載の処理システム。
【請求項１８】
ＤＭＡＣは、前記選択されたサブ処理ユニットと一体化されていることを特徴とする請求項１７に記載の処理システム。
【請求項１９】
前記選択されたサブ処理ユニットは、非圧縮データを受信するとともに、メモリに転送される圧縮データを生成するデータ圧縮部と、メモリから前記圧縮データを受信するとともに、受信された圧縮データを伸張するデータ伸張部のうちのいずれか一方を備え、
メモリアクセスユニットは、それらのうちの他方を備えることを特徴とする請求項１４に記載の処理システム。
【請求項２０】
メモリアクセユニットは、前記選択されたサブ処理ユニットと一体化されたＤＭＡＣにより構成されており、
処理エレメントとメモリ間の通信を行うことができるメモリコントローラをさらに備えることを特徴とする請求項１４に記載の処理システム。
【請求項２１】
メモリコントローラは、
非圧縮データを受信するとともに、メモリに転送される圧縮データを生成するデータ圧縮部と、
メモリから前記圧縮データを受信するとともに、受信された圧縮データを伸張するデータ伸張部とを備えることを特徴とする請求項２０に記載の処理システム。
【請求項２２】
メモリコントローラが圧縮情報を保存するためのタグテーブルをさらに備えることを特徴とする請求項２１に記載の処理システム。
【請求項２３】
ユーザ入力デバイスと、
表示デバイスを接続するためのディスプレイインターフェースと、
１つ以上の処理エレメントを有するプロセッサと、
プロセッサとメモリを接続し、メモリに圧縮データを転送するとともに保存する処理、およびメモリから圧縮データを読み出す処理を行うメモリアクセスユニットと、
圧縮データと関連する圧縮情報を保存するためのタグテーブルとを備え、
前記圧縮データは、前記メモリのｉ番目のメモリブロックに格納されるべき、データアクセスの単位からみて望ましい所定サイズの第１の非圧縮データと、前記メモリのｉ＋１番目のメモリブロックに格納されるべき、前記所定サイズの第２の非圧縮データとが、第１の非圧縮データを圧縮した第１の圧縮データと、第２の非圧縮データを圧縮した第２の圧縮データとして生成されたものであり、
前記メモリアクセスユニットによって前記メモリに転送された前記第１および第２の圧縮データについて、前記第１の圧縮データは、前記ｉ番目のメモリブロックの先頭から格納され、前記第２の圧縮データは、前記ｉ＋１番目のメモリブロックの先頭から格納されることを特徴とするコンピュータ処理システム。
【請求項２４】
通信ネットワークにより接続された複数のコンピュータ処理システムを備えたコンピュータのネットワークであって、
それぞれのコンピュータ処理システムは、
ユーザ入力デバイスと、
表示デバイスを接続するためのディスプレイインターフェースと、
１つ以上の処理エレメントを有するプロセッサと、
プロセッサとメモリを接続し、メモリに圧縮データを転送するとともに保存する処理、およびメモリから圧縮データを読み出す処理を行うメモリアクセスユニットと、
圧縮データと関連する圧縮情報を保存するためのタグテーブルとを有し、
前記圧縮データは、前記メモリのｉ番目のメモリブロックに格納されるべき、データアクセスの単位からみて望ましい所定サイズの第１の非圧縮データと、前記メモリのｉ＋１番目のメモリブロックに格納されるべき、前記所定サイズの第２の非圧縮データとが、第１の非圧縮データを圧縮した第１の圧縮データと、第２の非圧縮データを圧縮した第２の圧縮データとして生成されたものであり、
前記メモリアクセスユニットによって前記メモリに転送された前記第１および第２の圧縮データについて、前記第１の圧縮データは、前記ｉ番目のメモリブロックの先頭から格納され、前記第２の圧縮データは、前記ｉ＋１番目のメモリブロックの先頭から格納されることを特徴とするコンピュータのネットワーク。
【請求項２５】
データを圧縮して圧縮データを生成するステップと、
該圧縮データと関連する圧縮情報を特定するステップと、
メモリアクセスユニットを用いて圧縮情報を管理するステップと、
メモリアクセスユニットを用いて、複数のプロセッサのうちのいずれかの選択されたプロセッサから、前記複数のプロセッサからアクセス可能な共有メモリへ圧縮データを転送するステップと、を備え、
前記圧縮データは、前記共有メモリのｉ番目のメモリブロックに格納されるべき、データアクセスの単位からみて望ましい所定サイズの第１の非圧縮データと、前記共有メモリのｉ＋１番目のメモリブロックに格納されるべき、前記所定サイズの第２の非圧縮データとが、第１の非圧縮データを圧縮した第１の圧縮データと、第２の非圧縮データを圧縮した第２の圧縮データとして生成されたものであり、
前記圧縮データを転送するステップは、前記第１および第２の圧縮データについて、前記第１の圧縮データは、前記ｉ番目のメモリブロックの先頭から格納し、前記第２の圧縮データは、前記ｉ＋１番目のメモリブロックの先頭から格納するステップを含むことを特徴とするデータ処理方法。
【請求項２６】
圧縮データと、圧縮タイプおよび圧縮データサイズを示す情報とを含む少なくとも１つのデータパケットを生成するステップをさらに備え、
前記圧縮データを転送するステップは、前記少なくとも１つのデータパケットを共有メモリへ転送することを含むことを特徴とする請求項２５に記載のデータ処理方法。
【請求項２７】
プロセッサとメモリアクセスユニットを含む処理システムに使用されるプログラムであって、
データを圧縮して圧縮データを得る手順と、
圧縮データと関連する圧縮情報を特定する手順と、
メモリアクセスユニットを用いて圧縮情報を管理する手順と、
メモリアクセスユニットを用いて、圧縮データをプロセッサからメモリへ転送する手順とを、
プロセッサおよびメモリアクセスユニットの少なくとも一方に実行せしめ、
前記圧縮データを得る手順においては、前記メモリのｉ番目のメモリブロックに格納されるべき、データアクセスの単位からみて望ましい所定サイズの第１の非圧縮データと、前記メモリのｉ＋１番目のメモリブロックに格納されるべき、前記所定サイズの第２の非圧縮データとについて、第１の非圧縮データを圧縮した第１の圧縮データと、第２の非圧縮データを圧縮した第２の圧縮データを生成し、
前記メモリへ転送された前記第１および第２の圧縮データについて、前記第１の圧縮データは、前記ｉ番目のメモリブロックの先頭から格納され、前記第２の圧縮データは、前記ｉ＋１番目のメモリブロックの先頭から格納されることを特徴とするプログラム。
【請求項２８】
前記プログラムは、圧縮データと、圧縮タイプおよび圧縮データサイズを示す情報とを含む少なくとも１つのデータパケットを生成する手順をさらに実行せしめ、
圧縮データの前記転送は、前記少なくとも１つのデータパケットをメモリへ転送することを含むことを特徴とする請求項２７に記載のプログラム。
【請求項２９】
前記プログラムは、メモリから圧縮データを読み出す手順と、
前記圧縮情報を用いて前記圧縮データを伸張する手順とをさらに実行せしめることを特徴とする請求項２７または２８に記載のプログラム。
【請求項３０】
プロセッサとメモリアクセスユニットを含む処理システムに使用されるプログラムを記憶した記憶媒体であって、
前記プログラムは、請求項２７から２９のいずれか１項に記載のプログラムであること
を特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理に関し、特に、マルチプロセッサ環境において、転送および保存がなされるデータの圧縮、伸張に関する。
【背景技術】
【０００２】
コンピュータシステムはますます高性能になっている。処理の高速化および全体的な性能の向上のために、同じシステムにおいて複数のプロセッサ（コプロセッサ）を使用することがなされている。処理効率を高めるために、コンピュータシステムにおいてしばしば、複数のコプロセッサが並列で(または少なくとも協調して)動作するように使用される。これらの進歩は、多種のアプリケーション、たとえばリアルタイムのマルチメディアゲーム、高い演算能力が必要な他のアプリケーションを成功に導いている。
【０００３】
マルチプロセッサシステムは、共有データバスにより内部的に接続された多数のコプロセッサを有することができる。これらのコプロセッサは、たとえばＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）のような共有メモリにアクセスすることができる。ＤＲＡＭは、コプロセッサに対してローカルにまたはリモートに位置することができる。たとえば、ＤＲＡＭは、コプロセッサと同じチップの異なる部位に位置してもよいし、異なるチップに位置してもよい。各コプロセッサは、それぞれのタスクのためのデータの保存および処理を行うために、頻繁に共有メモリにアクセスする。ひとつのプロセッサによるアクセスは、他のコプロセッサによるアクセスに依存せずに行われることが可能である。データは、ＤＭＡＣ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌｌｅｒ）によって共有メモリに転送される。ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）転送の速度は、メモリのリード／ライトのサイクルタイムおよびＤＭＡＣの速度にのみ依存するので、ＤＭＡＣは、プロセッサのリソースを制限せずにデータを高速に転送することができる。
【０００４】
ＤＭＡＣの従来の動作については周知である。ここで典型的なＤＭＡ保存プロセスについて説明する。プロセッサは、ＤＭＡＣにデータ転送のリクエストをする。このリクエストは、ソースアドレス、転送先アドレス、転送されるデータの量を含む。ＤＭＡＣは、ソースアドレスに対応するターゲットデバイスにデータ転送を要求する。ターゲットデバイスが、データを転送する準備ができていれば、ＤＭＡＣは、ターゲットデバイスに、またはターゲットデバイスからデータ転送する。ＤＭＡ転送が終了したことを示す割り込み信号をプロセッサに送信することができるように設計されたシステムもある。
【０００５】
ＤＭＡ転送には、下記のようなバスプロトコルを用いることができる。まず、プロセッサは、スタートアドレスと、転送されるデータの量でＤＭＡＣをロードする。ＤＭＡＣは、データが転送可能であれば、ＤＭＡＣは、プロセッサにＤＭＡリクエストを送信する。そして、プロセッサは、ＤＭＡリクエストに肯定応答するとともに、データバス、アドレスバスおよび制御ラインを空け、データバスとアドレスバスを使用する処理をサスペンドする。そして、ＤＭＡＣは、ストレージデバイスにデータの転送を開始する。一旦データの転送が終了すれば、ＤＭＡＣは、ＤＭＡリクエストを終了させるとともに、ＤＭＡ転送の終了を示す割り込み信号をプロセッサに送信する。
【０００６】
従来、ＤＭＡＣの使用にもかかわらず、共有メモリへの接続はデータフローのボトルネックを来していた。たとえば、コプロセッサは、共有データバスで毎秒２５６ギガビットの速度でデータを転送することができる。これに対して、共有メモリに関わるデータ転送速度は、毎秒２０４．８ギガビットしかない。また、この２つの転送速度が同じであっても、ＤＭＡＣは、共有メモリと複数のコプロセッサ間で同時にデータを転送することができない。したがって、共有メモリのこのボトルネックは、処理を遅くし、システムの性能
を下げる要因であると言える。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、上記事情に鑑みてなされ、その目的は、複数のプロセッサと共有メモリ間のデータを高速に転送することができる方法および装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明にかかるひとつの態様は、データ処理装置に関する。このデータ処理装置は、データを処理する複数のプロセッサと、データを圧縮するデータ圧縮部と、データを伸張するデータ伸張部と、データ圧縮部により圧縮されたデータを、いずれかの選択されたプロセッサと共有メモリ間で転送するとともに、圧縮されたデータに関連する圧縮情報を管理するメモリアクセスユニットとを備える。
【０００９】
データ伸張部とデータ圧縮部はメモリアクセスユニットに含まれるようにしてもよく、上記選択されたプロセッサに含まれるようにしてもよい。さらに、データ圧縮部は上記選択されたプロセッサに含まれる一方、データ伸張部はメモリアクセスユニットに含まれるようにしてもよい。
【００１０】
このデータ処理装置は、タグテーブルをさらに備えてもよい。この場合、メモリアクセスユニットは、圧縮情報をタグテーブルに保存することが好ましい。圧縮情報は、圧縮タイプ、圧縮データサイズ、圧縮データが共有メモリ上に保存された場所を示すアドレス識別情報を含むことが好ましい。また、タグテーブルは、メモリアクセスユニットと一体化されてもよい。
【００１１】
また、メモリアクセスユニットにより、圧縮データに基づいて、圧縮タイプと圧縮サイズを含む圧縮データパケットを生成するようにしてもよい。さらに、データ圧縮部とデータ伸張部は、それぞれ複数個あり、それぞれのプロセッサは、データ圧縮部とデータ伸張部を１つずつ含むようにしてもよい。
【００１２】
また、共有メモリがオンチップメモリであってもよい。
【００１３】
さらに、メモリアクセスユニットは、ＤＭＡＣであってもよい。
【００１４】
本発明の別の態様は、処理システムに関する。この処理システムは、データを処理する１つのプロセッサと１つのメモリアクセスユニットとを備える。メモリアクセスユニットは、プロセッサと共有メモリ間のデータを転送するとともに、圧縮されたデータに関連する圧縮情報を管理する。メモリアクセスユニットは、データを圧縮するデータ圧縮部と、データを伸張するデータ伸張部とを有する。
【００１５】
この処理システムは、メモリアクセスユニットと接続されており、圧縮情報を保存するためのタグテーブルを備えてもよい。この場合、圧縮情報は、圧縮タイプ、圧縮データサイズ、データが共有メモリ上に保存された場所を示すアドレス識別情報を含むことが好ましい。
【００１６】
本発明の別の態様も、処理システムに関する。この処理システムは、１つの処理エレメントと１つのメモリアクセスユニットを備える。処理エレメントは、バスと、処理ユニットと、バスによって処理ユニットと接続された複数のサブ処理ユニットとを有する。複数のサブ処理ユニットのうちの１つの選択されたサブ処理ユニットは、メモリアクセスユニットを用いて、メモリに圧縮データの転送と保存を行う。処理システムは、圧縮データと関連する圧縮情報も保存する。
【００１７】
ここで、選択されたサブ処理ユニットは、非圧縮データの受信、およびメモリへ転送される圧縮データの生成を行うデータ圧縮部と、メモリからの圧縮データの受信、および受信した圧縮データの伸張を行うデータ伸張部とを備えるようにしてもよい。また、メモリアクセスユニットは、非圧縮データの受信、およびメモリへ転送される圧縮データの生成を行うデータ圧縮部と、メモリからの圧縮データの受信、および受信した圧縮データの伸張を行うデータ伸張部とを備えるようにしてもよい。この場合、メモリアクセスユニットは、ＤＭＡＣを備えてもよい。また、このＤＭＡＣは、選択されたサブ処理ユニットと一体化されるようにしてもよい。
【００１８】
また、この処理システムは、圧縮情報を保存するためのタグテーブルを備えてもよい。この場合、圧縮情報は、圧縮情報は、圧縮タイプ、圧縮データサイズ、圧縮データが共有メモリ上に保存された場所を示すアドレス識別情報を含むことが好ましい。さらに、選択されたサブ処理ユニットは、非圧縮データの受信、およびメモリへ転送される圧縮データの生成を行うデータ圧縮部を備え、メモリアクセスユニットは、メモリからの圧縮データの受信、および受信した圧縮データの伸張を行うデータ伸張部を備えるようにしてもよい。
【００１９】
また、メモリアクセスユニットは、選択されたサブ処理ユニットと一体化されたＤＭＡＣを備え、処理システムは、処理エレメントとメモリ間の通信を行うことができるメモリコントローラをさらに備えるようにしてもよい。この場合、メモリコントローラは非圧縮データの受信、およびメモリへ転送される圧縮データの生成を行うデータ圧縮部と、メモリからの圧縮データの受信、および受信した圧縮データの伸張を行うデータ伸張部とを備えてもよい。ここで、処理システムは、メモリコントローラが圧縮情報を保存するためのタグテーブルをさらに備えることが好ましい。
【００２０】
本発明のさらなる別の態様は、コンピュータ処理システムに関する。このコンピュータ処理システムは、ユーザ入力デバイスと、表示デバイスを接続するためのディスプレイインターフェースと、１つ以上の処理エレメントを有するプロセッサと、メモリに圧縮データを転送するとともに保存する処理、およびメモリから圧縮データを読み出す処理を行い、プロセッサとメモリを接続するメモリアクセスユニットと、圧縮データと関連する圧縮情報を保存するためのタグテーブルとを備える。プロセッサにより、非圧縮データから圧縮データを生成するようにしてもよく、メモリアクセスユニットにより、プロセッサから非圧縮データを受信して圧縮データを生成するようにしてもよい。
【００２１】
本発明の別の態様は、複数のコンピュータ処理システムに関する。これらの複数のコンピュータ処理システムは、互いに通信ネットワークにより接続される。それぞれのコンピュータ処理システムは、ユーザ入力デバイスと、表示デバイスを接続するためのディスプレイインターフェースと、１つ以上の処理エレメントを有するプロセッサと、メモリに圧縮データを転送するとともに保存する処理、およびメモリから圧縮データを読み出す処理を行い、プロセッサとメモリを接続するメモリアクセスユニットと、圧縮データと関連する圧縮情報を保存するためのタグテーブルとを備える。
【００２２】
本発明の別の態様は、データ処理方法に関する。このデータ処理方法は、データを圧縮して圧縮データを生成し、圧縮データと関連する圧縮情報を特定し、メモリアクセスユニットを用いて圧縮情報を管理する。そしてメモリアクセスユニットを用いて、複数のプロセッサのうちのいずれかの選択されたプロセッサから、複数のプロセッサにアクセス可能な共有メモリへ圧縮データを転送する。
【００２３】
また、このデータ処理方法は、圧縮データと、圧縮タイプおよび圧縮データサイズを示す情報とを含む少なくとも１つのデータパケットを生成する処理をさらに行ってもよい。この場合、圧縮データの転送は、この少なくとも１つのデータパケットを共有メモリへ転送することを含むことが好ましい。さらに、圧縮情報をタグテーブルに保存するようにしてもよい。この場合、圧縮情報は、圧縮タイプ、圧縮データサイズ、圧縮データが共有メモリ上に保存された場所を示すアドレス識別情報を含むことが好ましい。
【００２４】
また、メモリアクセスユニットの一部であるデータ圧縮部がデータを圧縮するようにしてもよい。また、選択されたプロセッサの一部であるデータ圧縮部がデータを圧縮するようにしてもよい。圧縮データは圧縮された状態で共有メモリに保存されるようにしてもよい。圧縮データは、圧縮された状態で保存される場合には、非圧縮時のデータのアクセス粒度に合った配置で保存されることが好ましい。
【００２５】
また、このデータ処理方法は、共有メモリから圧縮データを読み出し、圧縮情報を用いて圧縮データを伸張する処理をさらに行ってもよい。たとえば、  圧縮データは、メモリアクセスユニットの一部であるデータ伸張部により伸張されるようにしてもよい。この場合、データの圧縮は、メモリアクセスユニットの一部であるデータ圧縮部により行われるようにすることが好ましい。またたとえば、圧縮データは、選択されたプロセッサの一部であるデータ伸張部により伸張されるようにしてもよい。この場合、データの圧縮は、選択されたプロセッサの一部であるデータ圧縮部により行われるようにすることが好ましい。さらに、データの圧縮は、選択されたプロセッサの一部であるデータ圧縮部により行われ、圧縮データの伸張は、メモリアクセスユニットの一部であるデータ伸張部により行われるようにしてもよい。
【００２６】
本発明の別の態様は、プロセッサとメモリアクセスユニットを含む処理システムに使用されるプログラムに関する。このプログラムは、プロセッサおよびメモリアクセスユニットの少なくとも一方に、データを圧縮して圧縮データを得る手順と、圧縮データと関連する圧縮情報を特定する手順と、ＤＭＡＣを用いて圧縮情報を管理する手順と、メモリアクセスユニットを用いて圧縮データをプロセッサからメモリへ転送する手順とを実行せしめる。また、このプログラムは、圧縮データと、圧縮タイプおよび圧縮データサイズを示す情報とを含む少なくとも１つのデータパケットを生成する手順をさらに実行せしめるようにしてもよい。この場合、圧縮データの転送は、その少なくとも１つのデータパケットをメモリへ転送することを含む。また、このプログラムは、メモリから圧縮データを読み出す手順と、圧縮情報を用いて圧縮データを伸張する手順とをさらに実行せしめるようにしてもよい。
【００２７】
なお、前述した構成要素の任意の組合せ、本発明の表現を装置、方法、システム、コンピュータプログラム、プログラムを記憶した記憶媒体などの間で変換したものもまた、本発明の態様として有効である。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施の形態にかかる処理エレメントの典型的な構成を示す図である。
【図２】本発明の実施の形態にかかるサブ処理ユニットの例を示す図である。
【図３】（Ａ）は、本発明に実施の形態にかかるＤＭＡＣの例を示す図であり、（Ｂ）は圧縮にともなって生成されたデータパケットの例を示す図であり、（Ｃ）は圧縮情報の例を示す図である。
【図４】本発明の実施の形態にかかる、データを保存するためのメモリを示す図である。
【図５】本発明の実施の形態にかかるサブ処理ユニットの他の例を示す図である。
【図６】本発明の実施の形態にかかるマルチプロセッサシステムの例を示す図である。
【図７】本発明の実施の形態にかかるコンピュータのネットワークを示す図である。
【発明を実施するための形態】
【００２９】
以下、図面を参照しながら本発明の最良の実施の形態について説明する。図示された実施の形態を説明するのにあたり、明確にするために、例として具体的な専門用語を用いるが、本発明の各構成は、用いられた専門用語により示されるものに限定されない。本発明の各構成は、ここで用いられた専門用語により示されるものと同様な動作をして同様な目的を達成することができるいかなるものであってもよい。たとえば、最良の実施の形態においては、ＤＭＡＣを用いて圧縮データを転送するが、本発明は、マルチプロセッサシステムにおいて、プロセッサやメモリコントローラ内のＤＭＡＣまたは他のデータ転送ユニットを含むいかなるタイプのメモリアクセスユニットを用いてもよいことが理解されるべきである。
【００３０】
図１は、基本処理モジュールまたは処理エレメント（ＰＥ）１００を示すブロック図である。図示のように、ＰＥ１００は、Ｉ／Ｏインターフェース１０２と、処理ユニット（ＰＵ）１０４と、ダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）１０６と、複数のサブ処理ユニット（ＳＰＵ）１０８ａ〜１０８ｄとを有する。ここでは、示されたＳＰＵの数は４つであるが、ＰＥ１００は、任意の数のＳＰＵを備えるようにしてもよい。ローカル（または内部）ＰＥバス１２０は、ＰＵ１０４、ＳＰＵ１０８、Ｉ／Ｏインターフェース１０２、ＤＭＡＣ１０６、メモリインターフェース１１０間でデータとアプリケーションを転送する。ローカルＰＥバス１２０は、たとえば従来のアーキテクチャやパケット交換ネットワークにより構成することができる。パケット交換ネットワークを用いる場合、より多くのハードウェアを必要とするが、利用可能な帯域幅を増やすことができる。Ｉ／Ｏインターフェース１０２は、Ｉ／Ｏバス１２４を介して１つ以上の図示しない外部Ｉ／Ｏデバイスなどに接続することができる。ＰＥ１００のような処理エレメントを複数個物理的に接続したり一体化したり、または互いに論理的に接続したりして、処理能力を高めるようにすることが好ましい。
【００３１】
ＰＥ１００は、デジタルロジックを用いるさまざまな方法で構成することができる。典型的な方法として、ＰＥ１００の各要素を、回路基板上に設けられたＣＭＯＳ（ｃｏｍｐｌｅｍｅｎｔａｒｙ  ｍｅｔａｌ  ｏｘｉｄｅ  ｓｅｍｉｃｏｎｄｕｃｔｏｒ）を用いるＩＣとして形成することができる。回路基板は、シリコン基板であることが好ましい。また、回路基板の材料としては、ガリウム砒素（ＧａＡＳ）、ガリウムアルミニウム砒素（ＧａＡｌＡｓ）、様々の微量添加物を有する他の所謂ＩＩＩ−Ｂ化合物などを用いることができる。なお、回路基板の材料は、ここで列挙した材料に限られない。また、各要素は、例えばＲＳＦＱ（ｒａｐｉｄ  ｓｉｎｇｌｅーｆｌｕｘーｑｕａｎｔｕｍ）ロジックなど、超伝導材料により構成されるものであってもよい。
【００３２】
ＰＥ１００は、シリコン基板上に設けられたＣＭＯＳを用いる単一のＩＣとして構成されることが望ましい。ＰＥ１００は、広い帯域のメモリ接続１２２によるメモリ１３０と緊密に接続されている。メモリ接続１２２は、少なくとも毎秒１２８ギガビットの転送速度を有することが好ましい。この転送速度は、毎秒２０４．８ギガビットのオーダーを有することがさらに好ましい。メモリ１３０は、ＰＥ１００のメインメモリとして動作することが好ましく、ダイナミックＲＡＭ（ＤＲＡＭ）であることが望ましいが、他の種類のメモリ、例えばスタティックＲＡＭ（ＳＲＡＭ）、磁気ＲＡＭ（ＭＲＡＭ）、光学メモリ、ホログラフィックメモリなどであってもよい。
【００３３】
ＤＭＡＣ１０６とメモリインターフェース１１０は、ＰＥ１００のメモリ１３０、各ＳＰＵ１０８、ＰＵ１０４間のデータ転送を取り扱う。メモリ１３０は、ＰＥ１００が格納されたチップと同じチップ上に位置してもよく、ＰＥ１００が格納されたチップと異なるチップ上に位置してもよい。たとえば、メモリ１３０を、オフチップメモリとして、ＰＥ１００を格納したプロセッサチップから独立して位置する外部メモリとして実装してもよく、オンチップメモリとして、ＰＥ１００を格納したプロセッサチップ上に位置するように、またはプロセッサチップの一部となるように実装してもよい。オンチップの場合、メモリ１３０は、ＰＥ１００と一体化するように実装されてもよく、チップ上の独立した位置に実装されてもよい。
【００３４】
ＰＵ１０４は、たとえば、単独にデータとアプリケーションを処理できる標準プロセッサとすることができる。ＰＵ１０４は、各ＳＰＵ１０８によるデータとアプリケーションの処理のスケジューリングと調整を行う。各々のＳＰＵ１０８は、ＳＩＭＤ（ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ，ｍｕｌｔｉｐｌｅ  ｄａｔａ）プロセッサであることが好ましい。ＰＵ１０４の制御下において、ＳＰＵ１０８は、互いに依存せずに並列的にデータとアプリケーションの処理ができる。ＤＭＡＣ１０６は、ＰＵ１０４とＳＰＵ１０８による、共有メモリ１３０に保存されたデータおよびアプリケーションへのアクセスを制御する。ＰＵ１０４、ＳＰＵ１０８およびＤＭＡＣを含み、ＰＥ１００は、たとえばシングルＩＣチップまたはシングルボード処理システムのようなモノリシックデバイスにより構成されることが好ましい。
【００３５】
図２は、図１に示すＰＥ１００のＳＰＵ１０８として用いることができるＳＰＵの例の詳細を示す。ここで、このＳＰＵに２００の符号を付与する。ＳＰＵ２００は、プロセッサ２０２と、１つ以上の浮動小数点ユニット２０６と、１つ以上の整数ユニット２０８と、ローカルメモリ２１０と、ＤＭＡ２１２およびメモリ・マネジメント・ユニット（ＭＭＵ）２１４とを備える。プロセッサ２０２には、レジスタ２０４が付属されることが好ましい。
【００３６】
必要とされる処理能力に応じて、浮動小数点ユニット２０６と整数ユニット２０８の数を増減させることができる。ローカルメモリ２１０は、少なくとも１２８キロバイトの容量を有し、レジスタ２０４は、１２８ビット×１２８ビットの容量を有することが好ましい。浮動小数点ユニット２０６と整数ユニット２０８の望ましいスピードは夫々毎秒３２ギガ浮動小数点オペレーション（３２  ＧＦＬＯＰＳ）と毎秒３２ギガオペレーション（３２  ＧＯＰＳ）である。また、浮動小数点ユニット２０６と整数ユニット２０８は、レジスタ２０４、そしてローカルメモリ２１０に接続されていることが好ましい。
【００３７】
ローカルメモリ２１０は、キャッシュメモリではないことが好ましい。ＳＰＵ２００に対して、キャッシュ一貫性のサポートをする必要が無い。その代わりに、ローカルメモリ２１０は、ＳＲＡＭで構成されることが望ましい。ＰＵ１０４により始められるダイレクトメモリアクセスのために、ＰＵ１０４に対するキャッシュ一貫性のサポートが必要でありうる。また、ＳＰＵ２００により始められたダイレクトメモリアクセスや、外部デバイスへのアクセスまたは外部デバイスからのアクセスに対しては、キャッシュ一貫性をサポートする必要が無い。
【００３８】
ＳＰＵ２００は、バスインターフェース２１６を介して、ＳＰＵ２００にデータおよびアプリケーションを転送したり、ＳＰＵ２００からデータおよびアプリケーションを転送するバス（図示せず）をさらに備えてもよい。このバスの帯域幅は、たとえば１０２４ビットとすることができる。また、ＳＰＵ２００は、各デバイスを内部的に接続するバス（図示せず）を備えてもよい。ローカルメモリ２１０とレジスタ２０４の通信を担うバスの帯域幅は、たとえば１２８ビットとすることができる。また、これらのバスは、レジスタ２０４と浮動小数点ユニット２０６間や、レジスタ２０４と整数ユニット２０８間の通信をそれぞれ担うこともできる。レジスタ２０４から浮動小数点ユニット２０６または整数ユニット２０８への通信を担うバスの帯域幅と、浮動小数点ユニット２０６または整数ユニット２０８からレジスタ２０４への通信を担うバスの帯域幅は、それぞれ３８４ビットと１２８ビットであることが好ましい。レジスタ２０４から浮動小数点ユニット２０６と整数ユニット２０８への通信を担うバスのより広い帯域幅は、処理中において、レジスタ２０４からのより量が多いデータフローに対応するために用いることができる。
【００３９】
ＤＭＡ２１２とＭＭＵ２１４は、ハードウェアとソフトウェアのいずれかにより実現されてもよく、ハードウェアとソフトウェアの両方により実現されてもよい。ＤＭＡ２１２は、ＤＭＡＣ１０６と通信し、メモリ３０からのデータ転送、およびメモリ１３０へのデータ転送をＤＭＡＣに指示するためのアプリケーションソフトウェアを利用するようにプログラムされるか、あるいは、そのようなアプリケーションソフトウエアを含むことが好ましい。ＭＭＵ２１４は、ローカルメモリ２１０の動作を管理することが望ましい。あるいは、ＭＭＵ２１４は、ローカルメモリ２１０の動作を管理せずに、システムメモリを含むシステムグローバルアドレスのアドレス変換を管理するようにしてもよい。
【００４０】
上述した処理モジュールおよびアーキテクチャーは典型的な例に過ぎず、本発明のさまざまな態様は、異なる形態で下記の各システムに適用できること、本発明の適用できるシステムの種類がこれらのシステムに限定されないことが理解されるべきである。これらのシステムは、たとえば、２００３年２月２５日に発行された「ブロードバンドネットワークのためのアーキテクチャのためのメモリ保護システムおよび方法」（米国特許６５３６４９１号）に開示されたマルチプロセッサシステム、２００１年３月２２日に出願され、係属中の「ブロードバンドネットワークのためのコンピュータアーキテクチャおよびソフトウェアセル」（米国出願番号：０９／８１６００４号）に開示されたマルチプロセッサシステムなどである。本発明は、開示されたこれら２つのシステムに適用できることが明らかである。
【００４１】
上述したように、プロセッサと共有メモリ間のデータの転送のボトルネックは、マルチプロセッサシステムにまつわる問題である。このようなボトルネックは、データを圧縮してからメモリ１３０に転送することによって回避できる。圧縮によってデータ量が減り、バス幅を効率良く利用することができる。詳細について後述するが、本発明の態様の好適例において、たとえばＤＭＡＣ１０６内またはＳＰＵ２００内で圧縮が行われるように、オンチップデータ圧縮はローカルに行われる。
【００４２】
図３（Ａ）は、本発明のひとつの態様によるオンチップデータ圧縮が実装されたＤＭＡＣ３００の詳細を示す。ＤＭＡＣ３００に、タグテーブル３０２、データ圧縮部３０４、データ伸張部３０６が含まれることが好ましい。タグテーブル３０２は、たとえばメモリ上のルックアップテーブルに含まれるようにＤＭＡＣ３００内に一体化されてもいい。タグテーブル３０２は、メモリブロックアドレス、圧縮タイプ、圧縮データの量を示す情報を含むことが好ましい。下記において説明するように、データの転送および受信中において、タグテーブル３０２、データ圧縮部３０４、データ伸張部３０６は、ＤＭＡＣ３００に使用される。
【００４３】
また、タグテーブル３０２は、たとえばＰＥ１００内に含まれる別の要素としてＤＭＡＣ３００の外部にあってもよい。タグテーブル３０２は、メモリアクセスユニット内に含まれたり、メモリアクセスユニットに付属したりしてもよい。メモリアクセスユニットは、ＰＥ１００のようなプロセッサの外部に位置してもよい。
【００４４】
ＤＭＡＣ３００がたとえばメモリコントローラのようなほかのメモリアクセスユニットからデータを読み出すリクエストを発行すると、このメモリコントローラは、タグテーブル３０２から圧縮タイプと、圧縮データの量を参照する。そして、メモリコントローラは、圧縮データ、圧縮タイプ、および圧縮量をデータ伸張部（データ解凍部）に転送する。伸張されたデータは、圧縮タイプと圧縮量と共にＤＭＡＣ３００に転送されることが好ましい。
【００４５】
ＤＭＡＣ３００が上記のメモリコントローラにデータを書き込むリクエストを発行するとき、ＤＭＡＣ３００はデータを、圧縮タイプとともにデータ圧縮部に送信する。データ圧縮部は、圧縮タイプと圧縮量でデータを圧縮してからメモリコントローラに転送する。これらの圧縮情報は、タグテーブル３０２に保存されることが好ましい。
【００４６】
ここで、たとえばメモリ１３０のようなメモリへのデータ転送の例について説明する。たとえばＤＭＡ転送のようなメモリ転送が始まると、ＤＭＡＣ３００はプロセッサ、たとえばＳＰＵ２００、ＰＵ１０４またはＰＥ１００からデータパケットを受信する。データパケットは、伸張されたデータ（非圧縮データ）を含む。データパケットには、転送先アドレス、ソースアドレス、物理メモリアドレス、および他の情報が含まれてもよい。ＤＭＡＣのようなメモリアクセスユニットによりデータを受信するのにあたり、データ圧縮部３０４は必要に応じてデータを圧縮するとともに、追加情報をデータパケットに追加することが好ましい。この追加情報は、たとえば圧縮に関係するパラメータとすることができる。このようなパラメータは、圧縮タイプや、圧縮データサイズまたは圧縮サイズなどである。
【００４７】
圧縮タイプは、データを圧縮する際に用いられた圧縮の種別を示す。圧縮データサイズは、データが圧縮された後の実際のサイズを示す。多種多様な圧縮タイプ、たとえば低密度ランレングス符号化のようなランレングス符号化や、可変長符号化や、置換圧縮（たとえばＬｅｍｐｌｅ−Ｚｉｖ符号化）などの圧縮タイプを用いることができる。なお、圧縮タイプは、ここで例挙したものに限定されない。また、ランレングス符号化の所定の方式を数値たとえば００００１０で表すことができる。「圧縮せず」も、１つの圧縮タイプとすることができ、それをたとえば００００００で表すことができる。圧縮タイプを示すビット数は、たとえば処理システムがサポートする圧縮タイプの数に応じて６ビットから増減してもよいことが理解されるべきである。
【００４８】
図３（Ｂ）は、圧縮にともなって形成されたデータパケット３１０の例を示す。オリジナルパケットと同じように、圧縮データのデータパケット３１０は、転送先アドレス３１２、ソースアドレス３１４、物理メモリアドレス３１６を含むようにすることができる。また、圧縮される前のサイズすなわちオリジナルデータサイズ３１８、他の情報またはリザーブ情報３２０、圧縮タイプ３２２、圧縮サイズ３２４、圧縮データ３２６もデータパケット３１０に含まれることが好ましい。
【００４９】
各々のデータパケット３１０、またはデータパケット３１０のグループは、メモリ１３０内のアドレスブロックまたはアドレス空間に関連づけられてもよい。ＤＭＡＣ３００は、このようなデータパケット３１０を一旦生成すれば、図３（Ｃ）に示すように、圧縮タイプ３３２、圧縮データサイズ３３４とともに、アドレスブロック識別情報すなわちアドレスブロックＩＤ３３０をタグテーブル３０２に保存する。したがって、タグテーブル３０２は、圧縮タイプおよび圧縮量とともに、各アドレスブロックに保存されたデータの保存場所を示す情報を保持することができる。
【００５０】
圧縮された後のデータパケット３１０のサイズは、圧縮前のオリジナルパケットのサイズより大幅に小さくなることが望ましい。こうすればＤＭＡＣ３００がメモリ１３０にデータパケット３１０を転送する際に、圧縮されていないパケットを転送するときより、可能な帯域幅のはるかに小さな部分しか使用しない。これによって、ボトルネックの問題を解決することができる。
【００５１】
同じように、データをメモリ１３０からＰＥ１００、ＰＵ１０４またはＳＰＵ２００に転送するときにおいても、データパケット３１０の圧縮フォーマットを用いることが望ましい。この場合、ＤＭＡＣ３００はデータパケット３１０を受信し、データ伸張部３０６は必要に応じてデータパケット３１０を伸張する。データ伸張部３０６は、タグテーブル３０２を参照して動作し、圧縮タイプ３３２、圧縮データサイズ３３４、アドレスブロックＩＤ３３０などをデータの伸張に利用することができる。
【００５２】
図４は、メモリ１３０の一部とすることができるメモリアレイ４００の例を示す。メモリアレイ４００は、圧縮データパケット３１０を保存する。データパケット３１０は、パケット毎にまたはパケットグループ毎にメモリブロック４０２に保存されることが好ましい。データパケット３１０は、メモリブロック４０２内のブロック４０４のように圧縮された状態で保存されることが好ましい。メモリアレイ４００によりデータパケット３１０を受信する際に、データパケット３１０を伸張して、非圧縮の状態で保存することも可能である。この場合、１つの伸張されたデータパケット３１０は、１つ以上のメモリブロック４０２を占めることになりうる。これらの圧縮（およびプロセッサに返送する前の伸張）は、不必要なコストを招き、メモリアレイ４００に付属する圧縮部や伸張部のようなリソースの追加を必要とする。したがって、圧縮データパケット３１０をブロック４０４のように保存することが好ましい。この場合において、各ブロック４０４はブロック４０２に含まれ、互いに間隔が開いているので、データパケット３１０が必要とするメモリアレイ４００内のブロック４０２の数は、オリジナルの非圧縮データが必要とする数と同じである。ブロック４０４は、非圧縮データのオリジナル（非圧縮）データのアクセス粒度に合った配置で保存されることが好ましい。ここで、「データアクセス粒度」は、データの望ましい転送サイズを意味する。たとえば、キャッシュについて言えば、１つのキャッシュラインのサイズが好ましいデータ転送サイズであり、プロセッサからのすべてのデータアクセスは、バス上でキャッシュラインのサイズに標準化されることが望ましい。本発明の態様においては、データアクセス粒度は、たとえば４キロバイトや、６４バイトのようなページサイズであることが好ましい。非圧縮の（または伸長された）データの量は、ページサイズに等しいことが望ましい。こうすることによって、ＤＭＡＣ３００により要求される、ＰＥ１００、ＰＵ１０４および／またはＳＰＵ２００からのリードまたはライトリクエストに対応するための処理を簡単化することができ、たとえば、圧縮されたデータのアクセスポインタを再計算する必要を無くすことができる。
【００５３】
上記では、ＤＭＡＣ３００がデータの圧縮と伸張を行うようにしている。１つ以上のプロセッサたとえばＰＥ１００、ＰＵ１０４および／またはＳＰＵ１０８により圧縮または伸張またはその両方を行うようにしてもよい。ＰＥ１００、ＰＵ１０４および／またはＳＰＵ１０８によりこれらの処理を行う場合において、ＤＭＡＣ３００に対して説明した構造および要素を用いることができる。
【００５４】
図５は、ＳＰＵの別の例ＳＰＵ５００を示す。ＳＰＵ５００は、圧縮と伸張の機能を備える点を除き、ＳＰＵ２００とほぼ同じである。ＳＰＵ５００は、プロセッサ５０２と、１つ以上の浮動小数点ユニット５０６と、１つ以上の整数ユニット５０８とを備え、プロセッサ５０２にはレジスタ５０４が付属されることが好ましい。ＳＰＵ５００は、ローカルメモリ５１０と、ＤＭＡ５１２と、ＭＭＵ５１４と、バスインターフェース５１６も備える。これらの構成は、ＳＰＵ２００における相対応する構成と同じように動作する。
【００５５】
プロセッサ５０２は、データ圧縮部５２０とデータ伸張部５２２をさらに備える。データ圧縮部５２０とデータ伸張部５２２は、互いに別体であってもよいし、一つのデータ圧縮伸張部として一体化されてもよい。データ圧縮部５２０とデータ伸張部５２２は、ＤＭＡＣ３００のデータ圧縮部３０４とデータ伸張部３０６とそれぞれ同じように動作する。データ圧縮部５２０とデータ伸張部５２２を用いて、この場合、プロセッサ５０２自身によって圧縮および伸張を行うことができるので、ＤＭＡＣ３００にはデータ圧縮部３０４とデータ伸張部３０６を備える必要がない。
【００５６】
たとえば、メモリアレイ４００にデータを転送する際に、ＤＭＡ５１２とＭＭＵ５１４は、ローカルメモリ５１０に保存されたデータに基づいてデータパケットを生成することができる。データ圧縮部５２０は、非圧縮データを圧縮するとともに、データパケットに付加情報を追加することが好ましい。この付加情報は、たとえば圧縮タイプや、圧縮データサイズなどである。データパケットの作成は、上記に説明したデータパケット３１０の作成と同じように行われる。データ圧縮部５２０は、データパケット３１０を生成すると、圧縮タイプ３３２、圧縮データサイズ３３４とともに、アドレスブロック識別情報すなわちアドレスブロックＩＤ３３０をタグテーブル３０２に保存する。したがって、タグテーブル３０２は、圧縮タイプおよび圧縮量とともに、各アドレスブロックに保存されたデータの保存場所を示す情報を保持することができる。一旦データパケット３１０とタグテーブル３０２が生成されれば、ＤＭＡ５１２は、ＤＭＡＣ３００と通信してデータをメモリアレイ４００に転送する。転送されたデータは、ブロック４０４に格納される。
【００５７】
また、メモリアレイ４００からデータを転送する際に、ＤＭＡＣ３００はデータをＤＭＡ５１２に渡す。ここで、データが圧縮されていると仮定する。そしてデータ伸張部５２２は、データを伸張する。データ伸張部５２２は、タグテーブル３０２から圧縮タイプ３３２と、圧縮データサイズ３３４と、アドレスブロックＩＤ３３０を参照しデータの伸張を行うことが好ましい。伸張されたデータは、ローカルメモリ５１０に保存され、プロセッサ５０２による処理や、他のデバイスへの転送がなされる。
【００５８】
プロセッサたとえばＳＰＵ５００、ＰＵ１０４またはＰＥ１００において圧縮を行う一方、ＤＭＡＣ３００において伸張を行うようにしてもよい。この場合、たとえばＳＰＵ５００はデータ圧縮部５２０を備える一方、データ伸張部５２２を備えず、ＤＭＡＣ３００は、データ伸張部３０６を備える一方、データ圧縮部３０４を備えないようにすることができる。
【００５９】
このような構成の場合、メモリアレイ４００にデータを転送する際に、ＤＭＡ５１２およびＭＭＵ５１４は、ローカルメモリ５１０に保存されたデータに基づいてデータパケットを生成することができる。データ圧縮部５２０は、データを圧縮するとともに、データパケットに付加情報を追加することが好ましい。この付加情報は、たとえば圧縮タイプや、圧縮データサイズなどである。データパケットの作成は、上記に説明したデータパケット３１０の作成と同じように行われる。データパケットが生成されると、圧縮タイプ３３２、圧縮データサイズ３３４とともに、アドレスブロックＩＤ３３０はタグテーブル３０２に保存される。したがって、タグテーブル３０２は、圧縮タイプおよび圧縮量とともに、各アドレスブロックに保存されたデータの保存場所を示す情報を保持することができる。そして、データパケット３１０は、ＤＭＡＣ３００によりメモリアレイ４００に送られる。
【００６０】
また、メモリアレイ４００からＳＰＵ５００にデータを転送する際に、データパケット３１０はＤＭＡＣ３００により受信され、ＤＭＡＣ３００に備えられたデータ伸張部３０６により伸張される。データ伸張部３０６は、タグテーブル３０２から圧縮タイプ３３２と、圧縮データサイズ３３４と、アドレスブロックＩＤ３３０を参照しデータの伸張を行うことが好ましい。ＤＭＡＣ３００は、伸張されたデータパケットをＳＰＵ５００に転送し、次の処理および／または保存に供する。
【００６１】
また、ＰＥバス１２０上を内部的に転送されるデータたとえば２つのＳＰＵ１０８間に転送されるデータに対しても圧縮するようにしてもよい。この場合において、いずれのＳＰＵ１０８においてもデータ圧縮部５２０とデータ伸張部５２２を備えることが好ましい。また、この場合において、ＰＥバス１２０の帯域幅に応じて圧縮するか否かを決めてもよい。たとえば、ＰＥバス１２０の帯域幅が毎秒１２８ギガビットのオーダを有するように十分大きい場合において、転送されるデータを圧縮しなくてもよい。
【００６２】
図６は、マルチプロセッサシステム６００を示す。マルチプロセッサシステム６００において、メモリコントローラ６０２は、プロセッサ６０４ａ、プロセッサ６０４ｂ、およびＤＭＡＣ６０６ａ、ＤＭＡＣ６０６ｂと別体にある。プロセッサ６０４は、たとえばＰＥ、ＳＰＵ、またはコンピュータまたはワークステーション個体に含まれるプロセッサとすることができる。図示のように、プロセッサ６０４ａは、ＤＭＡＣ６０６ａ、キャッシュ６０８ａ、ＭＭＵ６１０ａ、ネットワークインターフェース６１２ａと接続されており、プロセッサ６０４ｂは、ＤＭＡＣ６０６ｂ、キャッシュ６０８ｂ、ＭＭＵ６１０ｂ、ネットワークインターフェース６１２ｂと接続されている。ＤＭＡＣ６０６ａ、ＤＭＡＣ６０６ｂ、キャッシュ６０８ａ、キャッシュ６０８ｂ、ＭＭＵ６１０ａ、ＭＭＵ６１０ｂ、および／またはネットワークインターフェース６１２ａとネットワークインターフェース６１２ｂは、それぞれのプロセッサ６０４ａとプロセッサ６０４ｂと一体化されてもよく、離れてもよい。ネットワークインターフェース６１２ａとネットワークインターフェース６１２ｂは、ネットワークバス６１４によりメモリコントローラ６０２と接続されている。
【００６３】
タグテーブル６１６は、メモリコントローラ６０２に付属されている。なお、タグテーブル６１６は、メモリコントローラ６０２に接続されるようにしてよい。ここで、タグテーブル６１６は、前述したタグテーブル３０２と同じ機能を果たす。タグテーブル６１６は、メモリブロックアドレス、圧縮タイプ、圧縮データの量を示す情報を含むことが好ましい。メモリ６１８に転送されるデータまたはメモリ６１８から転送されるデータは、メモリインターフェース６２０により転送される。
【００６４】
データ圧縮部および／またはデータ伸張部は、メモリコントローラ６０２、プロセッサ６０４ａ、プロセッサ６０４ｂ、ＤＭＡＣ６０６ａ、ＤＭＡＣ６０６ｂに含まれるようにすることができる。データ圧縮部とデータ伸張部の両方ともメモリコントローラ６０２に含まれるようにしてもよいし、または、データ圧縮部はＤＭＡＣ６０６ａ、ＤＭＡＣ６０６ｂに含まれる一方、データ伸張部はメモリコントローラ６０２に含まれるようにしてもよい。さらに、データ圧縮部はプロセッサ６０４ａ、プロセッサ６０４ｂに含まれるようにしてもよい。もちろん、データ圧縮部とデータ伸張部の位置はほかの組合せであってもよい。
【００６５】
図７は、本発明の実施の形態にかかるコンピュータのネットワーク７００の概略図である。このネットワーク７００は、スタンドアロンで動作可能なコンピュータデバイスや、ネットワーク環境下で動作するコンピュータデバイスなど、さまざまなコンピュータデバイスを有する。これらのコンピュータデバイスは、典型的なパーソナルコンピュータ、ラップトップコンピュータ、サーバ、ゲーム機、ＰＤＡなどの機器に備えられる多種多様なユーザ入力デバイス、表示装置、メモリおよびプロセッサにより構成される。たとえば、図７に示すコンピュータのネットワーク７００は、複数のコンピュータ処理システム７１０、７２０、７３０、７４０、７５０および７６０を備え、これらの処理システムは、ＬＡＮ（ローカル・エリア・ネットワーク）、ＷＡＮ（ワイド・エリア・ネットワーク）、インターネットなどの通信ネットワーク７７０により接続される。また、通信ネットワーク７７０は、有線、無線、または有線と無線の両方によるもののいずれであってもよい。
【００６６】
それぞれのコンピュータ処理システムは、１つ以上のコンピュータデバイスを備える。これらのコンピュータデバイスは、たとえば、キーボード７１１とマウス７１２（およびペン入力装置、ジョイスティック、ボタン、タッチスクリーンなどの知られている入力デバイス）のようなユーザ入力デバイス、ＣＲＴ、ＬＣＤ、プラズマモニタ、テレビ機、プロジェクタなどの表示装置７１４を接続するためのディスプレイインターフェース７１３（たとえばコネクター、ポート、カードなど）を備えることができる。また、それぞれのコンピュータデバイスは、コンピュータ処理システムにおいて、このようなコンピュータデバイスに用いられる通常の処理素子たとえばメモリ、メモリアクセスユニット、プロセッサを備えることができる。これらのコンピュータデバイス内のメモリアクセスユニットおよびプロセッサは、上述した本発明の各態様のように、メモリにデータを保存する前に圧縮を行い、メモリからデータを読み出すときにデータを伸張する。メモリは、本発明の態様による、圧縮データを保存するためのメモリを含む。
【００６７】
本明細書において特定の実施の形態を参照して本発明を記載したが、これらの実施の形態が単に本発明の原理および応用を例示するものにすぎないことは理解されよう。したがって、例示した実施の形態に多数の修正を施すことができることが理解され、また、その他の構成を、添付の特許請求の範囲に記載の本発明の趣旨および範囲から逸脱することなく考案することができる。
【符号の説明】
【００６８】
１００  処理エレメントＰＥ、  １０２  Ｉ／Ｏインターフェース、  １０４  処理ユニットＰＵ、  １０６  ＤＭＡＣ、  １０８  サブ処理ユニットＳＰＵ、  １１０  メモリインターフェース、  １２０  ＰＥバス、  １２２  メモリ接続、  １２４  Ｉ／Ｏバス、  １３０  メモリ、  ２００  サブ処理ユニットＳＰＵ、  ２０２  プロセッサ、  ２０４  レジスタ、  ２０６  浮動小数点ユニット、  ２０８  整数ユニット、  ２１０  ローカルメモリ、  ２１２  ＤＭＡ、  ２１４  ＭＭＵ、  ２１６  バスインターフェース、  ３００  ＤＭＡＣ、  ３０２  タグテーブル、  ３０４  データ圧縮部、  ３０６  データ伸張部、  ３１０  データパケット、  ３１２  転送先アドレス、  ３１４  ソースアドレス、  ３１６  物理メモリアドレス、  ３１８  オリジナルデータサイズ、  ３２０  その他、  ３２２  圧縮タイプ、  ３２４  圧縮サイズ、  ３２６  圧縮データ、  ３３０  アドレスブロックＩＤ、  ３３２  圧縮タイプ、  ３３４  圧縮データサイズ、  ４００  メモリアレイ、  ４０２  ブロック、  ４０４  ブロック、  ５００  サブ処理ユニットＳＰＵ、  ５０２  プロセッサ、  ５０４  レジスタ、  ５０６  浮動小数点ユニット、  ５０８  整数ユニット、  ５２０  データ圧縮部、  ５２２  データ伸張部、  ５１０  ローカルメモリ、  ５１２  ＤＭＡ、  ５１４  ＭＭＵ、  ５１６  バスインターフェース、  ６００  マルチプロセッサシステム、  ６０２  メモリコントローラ、  ６０４  プロセッサ、  ６０６  ＤＭＡＣ、  ６０８  キャッシュ、  ６１０  ＭＭＵ、  ６１２  ネットワークインターフェース、  ６１４  、  ６１６  タグテーブル、  ６２０  メモリインターフェース、  ６１８  メモリ、  ７００  コンピュータのネットワーク、  ７１０  コンピュータ処理システム、  ７１１  キーボード、  ７１２  マウス、  ７１３  ディスプレイインターフェース、  ７１４  表示装置、  ７２０  コンピュータ処理システム、  ７３０  コンピュータ処理システム、  ７４０  コンピュータ処理システム、  ７５０  コンピュータ処理システム、  ７６０  コンピュータ処理システム、  ７７０  通信ネットワーク。
【図１】
2010092499.tif 000003
【図２】
2010092499.tif 000004
【図３】
2010092499.tif 000005
【図４】
2010092499.tif 000006
【図５】
2010092499.tif 000007
【図６】
2010092499.tif 000008
【図７】
2010092499.tif 000009