(57)【特許請求の範囲】
【請求項１】
第一の記憶装置と、
上記第一の記憶装置より小さい記憶容量をもつ第二及び第三の記憶装置と、
上記第一の記憶装置から上記第二の記憶装置へデータを転送する際にデータ変換を行う第一のデコーダと、
上記第一の記憶装置から上記第三の記憶装置へデータを転送する際にデータ変換を行う第二のデコーダと、
上記第三の記憶装置から上記第一の記憶装置へデータを転送する際にデータ変換を行うエンコーダとを単一の半導体基板上に備え、
上記第一の記憶装置は、プロセッサのメインメモリ又は２次キャッシュメモリとして動作するようにされ、
上記第二の記憶装置は、プロセッサの命令キャッシュメモリとして動作するようにされ、
上記第三の記憶装置は、プロセッサのデータキャッシュメモリとして動作するようにされ、
上記エンコーダによりデータを圧縮して上記第一の記憶装置に記憶するようにされ、
上記第一のデコーダによりデータを伸張して上記第二の記憶装置に書き込むようにされ、
上記第二のデコーダによりデータを伸張して上記第三の記憶装置に書き込むようにされ、
上記第一の記憶装置に記憶するデータの符号化方式として、上記第二の記憶装置で用いる命令については固定長符号化を、上記第三の記憶装置で用いるデータについては可変長符号化を用いる半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
上記第一の記憶装置はダイナミックメモリで構成される半導体装置。
【請求項３】
請求項１又は２に記載の半導体装置において、
上記第二の記憶装置はスタティックメモリで構成され、
前記単一の半導体基板上には更にプロセッサが形成されている半導体装置。
【請求項４】
請求項１乃至３の何れかに記載の半導体装置において、
外部端子から入力されるデータは、前記エンコーダを介して前記第一の記憶装置に書き込まれる半導体装置。
【請求項５】
請求項１乃至４の何れかに記載の半導体装置において、
前記半導体装置の外部にデータを出力する場合は、前記第一の記憶装置から前記デコーダ及び外部端子を介して出力する半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサ及びメモリを集積した半導体装置に係わり、メモリの物理的な容量以上のデータを扱うのに適した技術に関する。
【０００２】
【従来の技術】
近年、LSIの高集積化が進み、1cm角程度の半導体チップ上に大容量のメモリとプロセッサを集積することが可能となりつつある。例えば、１９９６年の半導体国際学会アイ・エス・エス・シー・シー(ISSCC96)に１６メガビットのダイナミックメモリからなるメインメモリとキャッシュメモリおよびプロセッサなどを集積したチップが発表されている。このようなチップによれば、内蔵のダイナミックメモリに記憶できるプログラムであれば、汎用メモリチップを用いることなくシステムが構成できるため、特に個人情報機器といわれる小型の機器に適している。
【０００３】
図2はこのようなチップの概念を簡単化して示したしたものである。図２は前記発表された内容そのものではなく、本願発明者が解釈して示したものである。従って、従来技術そのものではない。半導体チップCHIP には、プロセッサCPU 、キャッシュメモリCACHE及びメインメモリの役割をするダイナミックメモリDRAMが含まれている。アドレス信号を含む制御信号CTLは、プロセッサCPU 、キャッシュメモリCACHE及びダイナミックメモリDRAMと接続されている。ダイナミックメモリDRAMへの入力データは端子MDI から入力され、出力データは端子MDOから半導体チップCHIPの外部に出力される。ダイナミックメモリDRAMに蓄えられたプログラムやデータは、必要に応じて高速のキャッシュメモリCACHEに転送され、プロセッサCPUとの間でやり取りされる。
【０００４】
【発明が解決しようとする課題】
図2のようなチップでは、製造コストを考慮するとチップサイズを１cm平方程度に収めたい。したがって、半導体チップCHIPに内蔵されるダイナミックメモリDRAMに格納できるプログラムの大きさに制限がある。プロセッサCPU、キャッシュメモリCACHE、その他に必要な制御回路、演算回路を考慮すると、例えば１６メガビットダイナミックメモリの製造技術を用いた場合は、８メガビット程度、６４メガビットダイナミックメモリの製造技術を用いた場合は３２メガビット程度のダイナミックメモリを内蔵することになる。
【０００５】
すなわち、ダイナミックメモリDRAMは汎用ダイナミックメモリの記憶容量の半分しか半導体チップに内蔵することができないという問題がある。
【０００６】
本発明の目的は、チップ面積の増大を招くことなく、より大きなプログラムを扱えるようにすることである。
【０００７】
前記並びにその他の目的と本発明の新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【０００８】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
すなわち、本発明では、チップ内部でデータの変換を行い、メモリ（DRAM）に圧縮したデータをストアし、キャッシュメモリ（CACHE）にロードする際にそれを伸長してプロセッサ（CPU）で使用するようにされる。
【００１０】
具体的には、半導体チップCHIPは、メモリ（DRAM）からキャッシュメモリ（CACHE）へデータを転送する際にデータ変換を行うデコーダ（DEC）と、キャッシュメモリ（CACHE）からメモリ（DRAM）へデータを転送する際にデータ変換を行うエンコーダ（ENC）とを具備し、上記エンコーダ（ENC）によりデータを圧縮しメモリ（DRAM）にストアし、上記デコーダ（DEC）によりデータを伸長してキャッシュメモリ（CACHE）へロードするようにされる。
【００１１】
これにより、メモリの物理的容量以上の大きさを持つプログラムを扱うことが可能となる。よく知られているように、プロセッサ（CPU）が必要とするデータはいわゆる局所性をもつため、キャッシュメモリ（CACHE）に高速のメモリを使用すれば、メモリ（DRAM）の速度が低速でもプロセッサ（CPU）の情報処理能力にほとんど影響がない。したがって、上記のデコーダ（DEC）やエンコーダ（ENC）の処理によりメモリ（DRAM）のアクセス時間に多少のオーバーヘッドが生じたとしてもプロセッサ（CPU）の情報処理能力にほとんど影響がない。また、最近の微細加工技術によれば、デコーダ（DEC）やエンコーダ（ENC）によるチップ面積の増大もほとんどない。
【００１２】
したがって、本発明によれば、チップコストやプロセッサの情報処理能力に悪影響を与えることなくメモリを内蔵したプロセッサにおいて、より大きなプログラムを扱うことが可能となる。
【００１３】
【発明の実施の形態】
《第１の実施例》
図１は、本発明の概念を示した一実施例である。半導体チップCHIPは、プロセッサCPU、キャッシュメモリCACHE、メインメモリ又は２次キャッシュメモリの役割を果たすダイナミックメモリDRAM、 エンコーダENC、デコーダDEC、アドレス信号を含む制御信号CTL及びデータバス（図１では実線の矢印で示されている。）等を単一の半導体基板上に（シングルチップ内に）有するようにされる。
【００１４】
ダイナミックメモリDRAMへの入力データは入力端子MDI（外部端子） を介して入力され、出力データは出力端子MDO（外部端子）を介して半導体チップの外部に出力される。なお、図１では、入力端子MDI と出力端子MDOとは分離された例が示されているが、入出力共通端子（外部端子）であってもよい。また、図１では、キャッシュメモリCACHEと、エンコーダENC及びデコーダDECとを接続するデータバスは分離されているが、共通データバスであってもよい。同様に、図１では、ダイナミックメモリと、エンコーダENC及びデコーダDECとを接続するデータバスは分離されているが、共通データバスであってもよい。
【００１５】
さらに、半導体チップCHIPのテストを行う場合は、半導体チップCHIP 外部からダイナミックメモリDRAMのデータの入出力は、エンコーダENC又はデコーダDECを介さずに入出力するようにされる。あるいは、エンコーダENC又はデコーダDECを介する場合は、半導体チップCHIP 外部からダイナミックメモリDRAMのデータの入出力は、エンコーダENC又はデコーダDECの機能を停止して行うようにされる。また、外部端子から直接キャッシュメモリCACHEにデータを入出力するデータの経路があってもよい。これによって、キャッシュメモリCACHEのキャッシュミス時に、ダイナミックメモリDRAMからデータを入出力するのでなく、半導体チップCHIP外部から直接入出力することができる。また、半導体チップCHIPのテストの場合も、キャッシュメモリCACHEに半導体チップCHIP外部から直接入出力することができる。
【００１６】
ダイナミックメモリDRAMは、例えば、メモリセルに１つのトランジスタと１つの容量を用いたものが使用され、容量のチャージ抜けを補うリフレッシュが必要なメモリである。キャッシュメモリCACHEは、高速なものが望ましいのでスタティックメモリ（SRAM:Static Randum Access Memory）を使うようにされる。スタティックメモリは、例えば、メモリセルに６つのトランジスタで構成されたものが使用される。なお、ここではメインメモリにダイナミックメモリ、キャッシュメモリにスタティックメモリを使うこととして説明するが、本発明はこれに制限されるものではない。
本実施例の特徴は、チップ内部でデータの変換を行い、メインメモリ又は２次キャッシュメモリに圧縮したデータをストアし、キャッシュメモリCACHEにロードする際にそれを伸長してプロセッサで使用する点である。すなわち、ダイナミックメモリDRAMからキャッシュメモリCACHEへデータを転送する際にはデコーダDECによりデータを伸長し、キャッシュメモリCACHEからダイナミックメモリDRAMへデータを転送する際にはエンコーダENCによりデータを圧縮するようにした。これにより、内蔵のメモリの物理的容量以上の大きさを持つプログラムを扱うことが可能となる。チップ外からデータをダイナミックメモリDRAMへ書き込む場合には、エンコーダENCを通じて圧縮して書き込む。また、ダイナミックメモリDRAMから直接データを読み出す場合には、デコーダDECを通じて伸長して読み出す。このため、チップ外部とのデータのやりとりは圧縮、伸長のアルゴリズムとは無関係に行うことができる。したがってシステム設計が容易となるという利点もある。
【００１７】
一般的に、プロセッサが必要とするデータはいわゆる局所性をもつため、キャッシュメモリに高速のメモリを使用すれば、メインメモリの速度が低速でもプロセッサの情報処理能力にほとんど影響がない。したがって、デコーダDECやエンコーダENCの処理によりメインメモリDRAMのアクセス時間に多少のオーバーヘッドが生じたとしてもプロセッサCPUの情報処理能力にほとんど影響がない。また、最近の微細加工技術によれば、デコーダDECやエンコーダENCの面積も小さくできるため、チップ面積の増大もほとんどないと考えてよい。したがって、本実施例によれば、チップコストやプロセッサの情報処理能力に悪影響を与えることなくメインメモリを内蔵したプロセッサにおいて、より大きなプログラムを扱うことが可能となる。
【００１８】
キャッシュメモリCACHEとダイナミックメモリDRAMとのデータのやり取りの単位は、キャッシュメモリCACHEのラインごと、あるいはキャッシュメモリCACHE全体としてもよい。前者の場合、やりとりの単位が小さいため、アクセスのオーバーヘッドが小さいという利点がある。後者の場合には、圧縮する単位が大きいため圧縮率が上がりやすくより大きな記憶容量を得やすいという利点がある。
【００１９】
《第２の実施例》
汎用のプロセッサでは、命令（インストラクション）用のキャッシュメモリとデータ用のキャッシュメモリとを独立にもつものがある。図３は、そのようなプロセッサを集積する場合の一実施例である。本実施例の特徴は、キャッシュメモリを分けただけではなく、圧縮アルゴリズムをそれぞれ適したものにするように工夫した点である。そのため、図３のようにそれぞれ専用のデコーダを設けた。
【００２０】
半導体チップCHIPは、プロセッサCPU、ダイナミックメモリDRAM、命令キャッシュI-CACHE、データキャッシュD-CACHE、命令キャッシュI-CACHEのためのデコーダDEC1、エンコーダENC1、データキャッシュD-CACHEのためのデコーダDEC2、 データキャッシュD-CACHEのためのエンコーダENC2、 ファイルアロケーションテーブルFAT等を１つの半導体基板上に形成するようにされる。
【００２１】
ダイナミックメモリDRAMへの入力データは入力端子MDI（外部端子） を介して入力され、出力データは出力端子MDO（外部端子）を介して半導体チップCHIPの外部に出力される。なお、図３では、入力端子MDI と出力端子MDOとは分離された例が示されているが、入出力共通端子（外部端子）であってもよい。また、図３ではデータキャッシュD-CACHEと、エンコーダENC2及びデコーダDEC2とを接続するデータバスは分離されているが、共通データバスであってもよい。同様に、図３では、ダイナミックメモリと、エンコーダENC2及びデコーダDEC2とを接続するデータバスは分離されているが、共通データバスであってもよい。
【００２２】
さらに、半導体チップCHIPのテストを行う場合は、半導体チップCHIP 外部からダイナミックメモリDRAMのデータの入出力は、エンコーダENC1,ENC2又はデコーダDEC1,DEC2を介さずに入出力するようにされる。あるいは、エンコーダENC1,ENC2又はデコーダDEC1,DEC2を介する場合は、半導体チップCHIP 外部からダイナミックメモリDRAMのデータの入出力は、エンコーダENC1,ENC2又はデコーダDEC1,DEC2の機能を停止して行うようにされる。また、外部端子から直接命令キャッシュI-CACHE又はデータキャッシュD-CACHEにデータを入出力するデータの経路があってもよい。これによって、命令キャッシュI-CACHE又はデータキャッシュD-CACHEのキャッシュミス時に、ダイナミックメモリDRAMからデータを入出力するのでなく、半導体チップCHIP外部から直接入出力することができる。また、半導体チップCHIPのテストの場合も、命令キャッシュI-CACHE又はデータキャッシュD-CACHEに半導体チップCHIP外部から直接入出力することができる。
【００２３】
なお、命令は、ダイナミックメモリDRAMから命令キャッシュI-CACHEへの書き込みのみが必要で、命令キャッシュI-CACHEからダイナミックメモリDRAMに書き戻す必要がない。このためエンコーダを設ける必要がない。しかし、半導体チップCHIP外部からダイナミックメモリDRAMに命令を格納する場合は、エンコーダENC1が必要である。但し、半導体チップCHIP外部のメモリに命令を圧縮して格納してある場合は、エンコーダENC1が必要ない。
【００２４】
一方、データの方は、処理中に変化するため、キャッシュミス時には、データキャッシュD-CACHEからダイナミックメモリDRAMに書き戻す必要がある。このためエンコーダENC2が必要となる。
【００２５】
図３の下部に示したように、命令は、数が有限であるから固定長符号を用いて圧縮するようにされる。一方、データは、命令のように数が有限ではないため可変長符号を用いて圧縮するようにされる。命令については、固定長符号化を用いるのでデータとアドレスの対応が規則的となりダイナミックメモリDRAMのアドレス管理が容易となる。一方、データの方は、ハフマン符号などいわゆるエントロピー符号を使えるので効率よく圧縮が可能である。
【００２６】
なお、圧縮アルゴリズムとして可変長符号化を使う場合には、ダイナミックメモリDRAM内のデータのアドレスの管理に工夫が必要となる。ハフマン符号など可変長符号化では、出現頻度の高いデータ程、短い長さの符号を割り当てる。このため同一のデータ長をもつキャッシュメモリ単位やライン単位のデータでも、圧縮した後には、データの長さが不揃いとなる。そのようなデータの管理を効率良く行うためには、図３に示したファイルアロケーションテーブルFATが有効である。ファイルアロケーションテーブルFATの役割を図４に示した実施例で説明する。図４に示したようにファイルアロケーションデーブルFATには、ダイナミックメモリDRAM内の各データの先頭アドレスとデータ長を記憶する。
【００２７】
図４においては、ファイルアロケーションテーブルFAT内にデータDATA1の先頭アドレスH1、データDATA1のデータ長L1が記憶される。同様に、データDATA2以降の先頭アドレスとデータ長もファイルアロケーションテーブルFATに記憶される。可変長符号化を用いてデータを圧縮してもファイルアロケーションテーブルFATの内容を調べることにより所望のデータをアクセスすることができる。
【００２８】
前記したようにデータは、キャッシュミス時には、データキャッシュD-CACHEからダイナミックメモリDRAMに書き戻す必要がある。書き戻されるデータはダイナミックメモリDRAMから読み出したものから変化している場合がある。このため、新たに圧縮したデータのデータ長が、ダイナミックメモリDRAMに記憶されていた圧縮データのデータ長より長くなる場合がある。ダイナミックメモリDRAMの容量が非常に大きい場合には、長くなったデータを書き戻すための連続した空領域を確保できるが、データ長が長いと通常は困難となる。そのときには、データを分割してダイナミックメモリDRAMに書き込めばよい。例えば、１００ビットのデータをダイナミックメモリDRAMから読み出し、伸長してデータキャッシュD-CACHEに書き込み、キャッシュミスが起きたときに再び圧縮すると１５０ビットになったとする。このデータを格納する際に１５０ビットの連続した空領域が見当たらない場合、５０ビットの領域を３つ使い分割して書き込むという考えである。
【００２９】
このように分割してデータを書き込む際のファイルアロケーションテーブルFATによるアドレスの管理方法を示した実施例を図５に示す。図５では、データDATA1はデータDATA1AとデータDATA1Bの２つに分けてダイナミックメモリDRAMに記憶するようにされる。データDATA2は、データDATA2A、データDATA2B、データDATA2Cの３つに分けてダイナミックメモリDRAMに記憶するようにされる。
【００３０】
一方、ファイルアロケーションテーブルFATにも、分割したそれぞれについて先頭アドレスとデータ長を記憶するようにされる。図５のファイルアロケーションテーブルFAT内に示したように、データDATA1については、データDATA1Aの先頭アドレスH1A及びデータ長L1Aと、データDATA1Bの先頭アドレスH1B及びデータ長L1Bとを記憶するようにされる。同様に、データDATA2に以降についても分割したデータそれぞれについて先頭アドレスとデータ長をファイルアロケーションテーブルFATに記憶するようにされる。
【００３１】
このようにすれば、ダイナミックメモリDRAMに書き戻すときに連続した領域が確保できずに分割して書き戻したとしてもファイルアロケーションテーブルFATの内容を調べることにより所望のデータをアクセスすることができる。
【００３２】
図６及び図７は、図３の実施例（第２の実施例）のキャッシュ、デコーダなどを高集積に配置する場合の実施例である。図６には、命令キャッシュI-CACHE、デコーダDEC1及びダイナミックメモリDRAMが示されている。図７には、データキャッシュD-CACHE、デコーダDEC2、エンコーダENC及びダイナミックメモリDRAMが示されている。図６及び図７にはファイルアロケーションテーブルFATは省略されている。ここでは、ダイナミックメモリDRAMを命令キャッシュ用とデータキャッシュ用で分けるとして説明するが、物理的につながった一つのものであってもよい。
【００３３】
命令キャッシュI-CACHE及びデータキャッシュD-CACHEは、複数のワード線WLCと、複数のデータ線対DLCと、それらの交点に配置される複数のメモリセルMCCとから構成されるメモリセルアレイと、デコーダとセンスアンプ等の周辺回路等から構成される。ダイナミックメモリDRAMは、複数のワード線WLDと、複数のデータ線DLDと、それらの交点に配置される複数のメモリセルMCDとから構成されるメモリセルアレイと、デコーダとセンスアンプ等の周辺回路等から構成される。図６及び図７では、理解しやすくするために１つのワード線と１つのデータ線と１つのメモリセルのみが示されている。
【００３４】
図６及び図７の実施例の特徴は、図の横方向の長さが合うようにキャッシュメモリ（命令キャッシュI-CACHE、データキャッシュD-CACHE）、デコーダ（DEC1,DEC2）、エンコーダENC、ダイナミックメモリDRAMなどを配置して高集積化を図った点である。ここでは、キャッシュメモリとダイナミックメモリDRAMとのデータ線ピッチは８対１とし、図の横方向の長さが合うようにダイナミックメモリDRAMの1024対のデータ線の寸法にキャッシュメモリの128対のデータ線を配置している。
【００３５】
図６及び図７では、デコーダ（DEC1,DEC2）及びエンコーダENCもダイナミックメモリDRAMの1024対のデータ線の寸法に収まるようにレイアウトし、高集積化を図っている。図６では、複数の命令は32ビットの固定長で圧縮されダイナミックメモリDRAMに記憶されている。ダイナミックメモリDRAMに記憶された圧縮された複数の命令はスイッチSW1からSW32のうちの１つが選択（オン）されることによって32ビット幅の入出力線IODを介してデコーダDEC1に入力される。デコーダDEC1では32ビットに圧縮された複数の命令が128ビットに伸長されて128ビット幅の入出力線IOCを介して命令キャッシュI-CACHEに送られる。伸長された命令長が16ビット固定長である場合は、８命令が同時に命令キャッシュI-CACHEに格納される。伸長された命令長が32ビット固定長である場合は、4命令が同時に命令キャッシュI-CACHEに格納される。固定長符号化圧縮を用いているので、プロセッサCPUは16ビット又は32ビット等の固定長命令を実行するプロセッサ(RISC(Reduced Instruction Set Computer)プロセッサ)であるのが望ましい。
【００３６】
図７では、ダイナミックメモリDRAMとデータキャッシュD-CACHEの入出力線IOD, IOCとの間のデータの流れを、スイッチSW1U, SW1D, SW2U, SW2Dにより切り替えている。これによりデータキャッシュD-CACHEからダイナミックメモリDRAMへの書き込み時にはエンコーダENCを通過するようにスイッチSW1U、SW1Dがオンにされる。ダイナミックメモリDRAMからデータキャッシュD-CACHEへの書き込み時にはデコーダDEC2を通過するようにスイッチSW2D,SW2Uがオンにされる。図７においてダイナミックメモリDRAMの入出力のビット幅は可変長符号のデータ長の最大値max bitに設定するようにされる。
【００３７】
以上のように図６及び図７の実施例によれば、図の横方向の長さが合うようにキャッシュメモリ（命令キャッシュI-CACHE、データキャッシュD-CACHE）、デコーダ（DEC1,DEC2）、エンコーダENC、ダイナミックメモリDRAMなどを配置して高集積化を図ることができる。また、データの流れが一方向なので遅延時間が少ないという利点もある。
【００３８】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることはいうまでもない。
【００３９】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００４０】
すなわち、チップ内部でデータの変換を行い、メモリに圧縮したデータをストアし、キャッシュメモリにロードする際にそれを伸長してプロセッサで使用するようにした。これにより、内蔵のメモリの物理的容量以上の大きさを持つプログラムを扱うことが可能となる。
【図面の簡単な説明】
【図１】本発明の概念を示す実施例。
【図２】メモリとCPUを集積した半導体装置の概念。
【図３】データキャッシュと命令キャッシュを備える場合の実施例。
【図４】ファイルアロケーションメモリを用いたアドレス管理の実施例。
【図５】データを分割した場合のアドレス管理の実施例。
【図６】命令キャッシュ、デコーダ及びダイナミックメモリの配置例。
【図７】データキャッシュ、エンコーダ、デコーダ及びダイナミックメモリの配置例。
【符号の説明】
CHIP  半導体チップ
CPU  プロセッサ
CACHE  キャッシュメモリ
I-CACHE  命令キャッシュ
D-CACHE  データキャッシュ
DRAM   ダイナミックメモリ
FAT  ファイルアロケーションメモリ
ENC  エンコーダ
DEC, DEC1, DEC2  デコーダ
CTL, CTL1, CTL2  アドレス信号を含む制御信号
MDI  ダイナミックメモリDRAMへの入力データ端子
MDO  ダイナミックメモリDRAMへの出力データ端子
H1, H2, H3, H1A, H1B, H2A, H2B, H2C 先頭アドレス
L1, L2, L3, L1A, L1B, L2A, L2B, L2C  データ長
DATA1, DATA2, DATA1A, DATA1B, DATA2A, DATA2B, DATA2C データ
MCC  キャッシュメモリのメモリセル
MCD  ダイナミックメモリのメモリセル
DLC  キャッシュメモリの入出力線
DLD   ダイナミックメモリの入出力線。
【図１】
0003781224.tif 000002
【図２】
0003781224.tif 000003
【図３】
0003781224.tif 000004
【図４】
0003781224.tif 000005
【図５】
0003781224.tif 000006
【図６】
0003781224.tif 000007
【図７】
0003781224.tif 000008