"メモリを制御するメモリコントローラであって、前記メモリ内の不良なメモリセルに代わって、データを記憶する冗長メモリと、前記不良なメモリセルのアドレスを保持し、入力されたアドレスと前記保持しているアドレスが一致するときには、前記冗長メモリにデータを書込み、または前記冗長メモリからのデータを読出して出力する救済回路と、パワーアップシーケンス時に、前記メモリ内のBIST回路を起動して、前記メモリから送られるテスト結果が不良なメモリセルのアドレスを受けて、前記アドレスを前記不良なメモリセルのアドレスとして前記救済回路に保持させるパワーアップ回路を備える、メモリコントローラ。前記メモリコントローラは、前記メモリセルから読み出されたデータのエラーをチェックし、前記エラーのあったメモリセルのアドレスを前記不良なメモリセルのアドレスとして、前記救済回路に保持させるエラー回路を備える、請求項1記載のメモリコントローラ。前記救済回路は、データの書込み時に、前記入力されたアドレスと前記保持しているアドレスが一致するときには、書込データを前記冗長メモリに記憶させ、前記保持しているアドレスを有効に設定する、請求項2記載のメモリコントローラ。前記救済回路は、データの読出し時に、前記入力されたアドレスと前記保持しているアドレスが一致するときには、前記保持しているアドレスが有効に設定されている場合に限り、前記メモリセルから読み出されたデータに代えて、前記冗長メモリに記憶されているデータを外部へ出力する、請求項3記載のメモリコントローラ。ところで、図11に示すように、通常メモリ1は、プロセッサやASIC2に含まれるメモリコントローラ3によって制御される。テスト回路および救済回路を、メモリではなくメモリコントロール側に設けても、テストおよび救済が可能である。図12は、テスト回路および救済回路を備えるメモリコントローラの構成を表わす図である。図12に示すように、このメモリコントローラは、パワーアップ回路4と、BOSTBuiltOutSelfTest回路5と、内部回路6と、冗長メモリ10および救済回路11からなる冗長救済回路9と、切替回路7と、PHY8とを備える。パワーアップ回路4は、電源立ち上げ時のパワーアップシーケンスを制御する。BOST回路5は、メモリ内のメモリセルのテストを制御する。内部回路6は、メモリをコントロールするための処理を行なう。冗長メモリ10は、メモリ内の不良メモリセルに代わって、データを記憶する。救済回路11は、冗長メモリ10からのデータの読出し、または冗長メモリ10へのデータの書込みを制御する。切替回路7は、メモリから送られてきたデータの出力先を切替え、メモリへ出力するデータの入力元を切替える。PHY8は、メモリとの間のインタフェースである。また、図13に示すように、プロセッセに複数のメモリが接続し、それぞれのメモリの容量や種類が違うこともある。その場合、それぞれのメモリに対応した冗長救済回路が必要となり、エリアペナルティが大きくなる。また、特許文献1のような従来の方法では、通常動作とテスト動作が別であったため、動作中に劣化した不良は救済できないという問題がある。それゆえに、本発明の目的は、エリアペナルティを小さくすることができるメモリコントローラを提供することである。さらに、本発明の目的は、動作中に劣化した不良を救済することができるメモリコントローラを提供することである。本発明の一実施形態のメモリコントローラは、メモリを制御するメモリコントローラであって、メモリ内の不良なメモリセルに代わって、データを記憶する冗長メモリと、不良なメモリセルのアドレスを保持し、入力されたアドレスと保持しているアドレスが一致するときには、冗長メモリにデータを書込み、または冗長メモリからのデータを読出して出力する救済回路と、パワーアップシーケンス時に、メモリ内のBIST回路を起動して、メモリから送られるテスト結果が不良なメモリセルのアドレスを受けて、アドレスを不良なメモリセルのアドレスとして救済回路に保持させるパワーアップ回路を備える。本発明によれば、エリアペナルティを小さくすることができる。また、本発明によれば、動作中に劣化した不良を救済することができる。以下、本発明の実施形態について図面を参照して説明する。[第1の実施形態]メモリコントローラの構成図1は、第1の実施形態のメモリコントローラの構成を表わす図である。このメモリコントローラ53が、従来例の図12のメモリコントローラ3と相違する点は、BOST回路5を含まない点と、パワーアップ回路の機能である。図12に含まれるようなメモリをテストするためのBOST回路5は、メモリ全体の空間をテストするためにアドレスを発生し、不良ビットを探すために様々なデータパターンを発生する必要がある。そのため、BOST回路5は、内部にシーケンサを設ける必要があり、回路規模が大きくなる。さらに、BOST回路5は、接続するメモリ毎に変更する必要があり、共通化も難しい。また、図13で示したように、複数のメモリを接続する時は、メモリごとに、BOST回路5を設ける必要がある。これに対して、図1に示すように、本実施の形態のメモリコントローラは、回路規模の大きいBOST回路を含まずに、パワーアップ回路54が、通常のメモリに搭載されているBIST回路を利用して、メモリをテストする。動作図2は、第1の実施の形態の電源立ち上げ時の動作を示す図である。従来は、メモリへのパワーアップシーケンスを実行すると、通常の動作が開始されるが、本実施の形態では、メモリコントローラ53内部のパワーアップ回路54は、パワーアップシーケンス後、メモリ内部のBIST回路を起動する。メモリ内部のBIST回路は、ビットエラーが発生した時はエラーのアドレスとエラーコードをパワーアップ回路54に転送する。パワーアップ回路54は、救済回路11にエラーのアドレスを保持させる。図12に示す従来例では、BOST回路でメモリテストをコントロールし、結果を救済回路11に転送した。これに対して、本実施の形態では、メモリ内部のBIST回路のテスト結果が救済回路11に転送される。エラーが発生したアドレスにアクセスされた時は、メモリにアクセスするのではなく、メモリコントローラ内部に設けた冗長メモリ10にアクセスする。そのためエラーが回避される。たとえば、1つのアドレスのエラーを救済するのであれば、メモリと接続しているIO分だけのメモリ容量を冗長メモリとして搭載するだけであり、エリアペナルティは非常に小さい。救済回路図3は、図1に含まれる救済回路の詳細な構成を表わす図である。図3を参照し、救済回路11は、アドレス比較回路21と、スタック22とを含む。アドレス比較回路21は、保持しているアドレスと入力されるアドレスが一致しているときに、冗長メモリ10へのアクセスを許可する。スタック22は、データの書込時には、外部からのアドレスが保持しているアドレスと一致しているときに、外部からのデータを冗長メモリ10へ出力する。スタック22は、データの読出時には、保持しているアドレスと入力されるアドレスが一致しているときに、冗長メモリ10から出力されたデータを外部へ出力する。救済動作図4は、第1の実施の形態の救済動作の手順を表わすフローチャートである。アドレス比較回路21には、BIST動作によって得られた不良メモリセルのアドレスが保存されているものとする。図4を参照して、読出コマンドReadが入力されたときにはステップS101でRead、内部回路6内の図示しない制御回路は、メモリへ読み出しコマンドを送るステップS102。アドレス比較回路21は、入力された読出しアドレスと保持している不良アドレスを比較し、切替回路7は、一致しなければステップS103でMiss、メモリから読出されたデータを内部回路6に転送する。一方、切替回路7は、一致した場合にはステップS103でHit、メモリから読み出されたデータに代えて冗長メモリ10から読み出されたデータを内部回路6に転送するステップS104。書込コマンドWriteが入力されたときにはステップS101でWrite、内部回路6内の制御回路は、書込みデータをメモリおよびスタック22に書き込むステップS105。アドレス比較回路21は、入力された書込みアドレスと保持している不良アドレスを比較して、一致した場合にはステップS106でHit、スタック22は、保持したデータを冗長メモリ10に転送するステップS107。メモリ図5は、第1の実施形態のメモリの構成を表わす図である。図5を参照して、このメモリ1は、制御信号バッファ121と、アドレスバッファ122と、クロックバッファ23と、出力バッファ24と、入力バッファ25と、PLLPhaseLockedLoop回路26と、制御回路27と、BIST回路28と、メモリアレイ制御回路29と、メモリアレイ30と、リードアンプライトドライバ31とを備える。制御信号バッファ121は、外部から入力される制御信号Commandを受ける。アドレスバッファ122は、外部からのアドレス信号Addressを受ける。クロックバッファ23は、外部からのクロック信号CLKを受ける。出力バッファ24は、外部へデータを出力する。入力バッファ25は、外部からのデータを受ける。PLL回路26は、外部からのクロックCLKに基づいて、内部クロックを生成して出力する。制御回路27は、メモリ1全体を制御する。BIST回路28は、パワーアップシーケンス時に、メモリアレイ30に含まれるメモリセルをテストし、テスト結果が不良のメモリセルのアドレスを出力バッファ24を介してメモリコントローラ53に出力する。メモリアレイ制御回路29は、メモリアレイ30を制御し、ローデコーダ、カラムデコーダなどを含む。メモリアレイ30は、複数のメモリセルを含む。リードアンプライトドライバ31は、書込時に外部からのデータをメモリアレイ30へ出力し、読出時に、メモリアレイ30から出力されたデータを出力バッファを介して外部へ出力する。[第2の実施形態]第1の実施形態では、メモリが動作中に劣化して不良を発生した時には救済できない。不良アドレスを見つけるために、メモリのテストが必要であるためである。これに対して、第2の実施形態では、メモリが動作中の不具合に対応する。構成図6は、第2の実施形態のメモリコントローラの構成を表わす図である。図6のメモリコントローラ63が、図1のメモリコントローラ53と相違する点は、ECCErrorCheckandCorrection回路80を備える点である。ECC回路80は、動作中にメモリセルの読出データのエラーを検出したときには、エラーのあった不良メモリセルのアドレスをアドレス比較回路61へ出力するとともに、エラーを訂正する。アドレス比較回路61は、受取った不良メモリセルのアドレスを保持する。不良メモリセルのアドレス登録動作図7は、第2の実施形態の不良メモリセルのアドレスの登録手順を表わすフローチャートである。図7を参照して、読出コマンドReadが入力されたときにはステップS201でRead、内部回路16内の図示しない制御回路は、メモリへ読み出しコマンドを送るステップS202。ECC回路80は、メモリから読み出されたデータにエラーがあるか否かをチェックし、エラーがあった場合にはステップS203でエラーあり、エラーを修正するとともに、エラーのあった不良メモリセルのアドレスをアドレス比較回路61へ出力して、アドレス比較回路61に不良メモリセルのアドレスを記憶させるステップS204。書込コマンドWriteが入力されたときにはステップS201でWrite、内部回路6内の制御回路は、書込みデータをメモリに書き込むステップS205。救済動作図8は、第2の実施の形態の救済動作の手順を表わすフローチャートである。アドレス比較回路61には、ECC回路80によって検出された不良メモリセルのアドレスが保存されているものとする。図8を参照して、読出コマンドReadが入力されたときにはステップS101でRead、内部回路16内の図示しない制御回路は、メモリへ読み出しコマンドを送るステップS302。アドレス比較回路61は、入力された読出しアドレスと保持している不良アドレスを比較する。アドレス比較が一致している場合にはステップS303でHit、一致したアドレスが有効、つまり冗長メモリ10にデータが書き込まれている場合にはステップS304でYES、切替回路7は、メモリから読み出されたデータに代えて冗長メモリ10から読み出されたデータを内部回路16に転送するステップS305。切替回路7は、アドレスが一致しない場合ステップS303でMiss、または一致したアドレスが有効でない場合ステップS304でNO、メモリから読出されたデータを内部回路16に転送する。書込コマンドWriteが入力されたときにはステップS101でWRITE、内部回路16内の制御回路は、書込みデータをメモリおよびスタック22に書き込むステップS105。アドレス比較回路61は、入力された書込みアドレスと保持している不良アドレスを比較して、一致した場合にはステップS307でHit、スタック22は、保持したデータを冗長メモリ10に転送するともに、アドレス比較回路61は、一致したアドレスを有効に設定するステップS308。[第3の実施形態]第3の実施形態では、図9に示すように、メモリコントローラは、3個の冗長メモリ71a,71b,71cを備え、各冗長メモリは、不良メモリセルに代わって、データを記憶する。救済回路76は、スタック22と、アドレス比較回路72a,72b,72cと、セレクタ73を含む。アドレス比較回路72aは、冗長メモリ71aが置換する不良メモリセルのアドレスを記憶し、外部からのアドレスと記憶しているアドレスとを比較する。アドレス比較回路72bは、冗長メモリ71bが置換する不良メモリセルのアドレスを記憶し、外部からのアドレスと記憶しているアドレスとを比較する。アドレス比較回路72cは、冗長メモリ71cが置換する不良メモリセルのアドレスを記憶し、外部からのアドレスと記憶しているアドレスとを比較する。セレクタ73は、データの書込み時に、アドレス比較回路72aでアドレスが一致した場合には、スタック22内のデータを冗長メモリ71aへ出力する。セレクタ73は、データの読出し時に、アドレス比較回路72aでアドレスが一致した場合には、冗長メモリ71aのデータをスタック22へ出力する。セレクタ73は、データの書込み時に、アドレス比較回路72bでアドレスが一致した場合には、スタック22内のデータを冗長メモリ71bへ出力する。セレクタ73は、データの読出し時に、アドレス比較回路72bでアドレスが一致した場合には、冗長メモリ71bのデータをスタック22へ出力する。セレクタ73は、データの書込み時に、アドレス比較回路72cでアドレスが一致した場合には、スタック22内のデータを冗長メモリ71cへ出力する。セレクタ73は、データの読出し時に、アドレス比較回路72cでアドレスが一致した場合には、冗長メモリ71cのデータをスタック22へ出力する。アドレス登録および救済図10は、第3の実施形態における不良メモリセルのアドレスの登録および救済の手順を1つにまとめたフローチャートである。図10を参照して、読出コマンドReadが入力されたときにはステップS401でRead、内部回路16内の図示しない制御回路は、メモリへ読み出しコマンドを送るステップS302。アドレス比較回路72a,72b,72cは、入力された読出しアドレスと保持している不良アドレスを比較する。アドレス比較が一致している場合にはステップS403でHit、一致したアドレスが有効、つまり冗長メモリ71a,71b,71cにデータが書き込まれている場合にはステップS404でYES、切替回路7は、メモリから読み出されたデータに代えて冗長メモリ71a,71b,71cから読み出されたデータを内部回路16に転送するステップS405。一方、アドレス比較が一致していない場合にはステップS403でNO、ECC回路80は、メモリから読み出されたデータにエラーがあるか否かをチェックし、エラーがあった場合にはステップS406でYES、冗長メモリ71a,71b,71cのいずれかにに空きがあるかどうかを調べる。冗長メモリ71a,71b,71cのいずれかに空きがある場合にはステップS407でYES、エラーのあった不良メモリセルのアドレスをアドレス比較回路72a,72b,72cのうち空きのある冗長メモリに対応するものへ出力して、そのアドレス比較回路に不良メモリセルのアドレスを記憶させるステップS408。さらに、ECC回路80は、読み出したデータのエラーを修正するステップS309。一致したアドレスが有効でない場合ステップS304でNO、またはメモリから読み出されたデータにエラーがエラーがなかった場合にはステップS306でNO、メモリから読出されたデータを内部回路16に転送するステップS310。書込コマンドWriteが入力されたときにはステップS401でWRITE、内部回路16内の制御回路は、書込みデータをメモリおよびスタック22に書き込むステップS105。アドレス比較回路72a,72b,72cは、入力された書込みアドレスと保持している不良アドレスを比較して、一致した場合にはステップS412でHit、スタック22は、保持したデータを対応の冗長メモリ71a,71b,72cのうち、一致したアドレス比較回路に対応する冗長メモリに転送するともに、一致したアドレス比較回路は、一致したアドレスを有効に設定するステップS413。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"