以下において、本発明の実施の形態について図面を参照して詳しく説明する。なお、図中同一符号は同一または相当部分を示す。
[実施の形態1]
図1は、本発明の実施の形態1の半導体記憶装置1の構成を示したブロック図である。
図1を参照して、半導体記憶装置1は、制御信号/RAS,/CAS,…,/CS,/WEなどの制御信号を受ける端子とアドレス信号ADDを受ける端子とデータ信号DATAを受ける端子と、制御信号/RAS,/CAS,…,/CS,/WE、アドレス信号ADD.およびデータ信号DATAに応じて内部に制御信号を出力するインターフェイス部2と、インターフェイス部2の出力を受けて動作をするDRAM4と、インターフェイス部2から与えられるデータやコマンドとを保持するレジスタ6と、レジスタ6およびインターフェイス部2からの出力に応じて信号処理などの動作を行なうロジック回路8とを含む。
チップ1の端子は、汎用DRAMで用いられている端子のみである。したがって、汎用DRAMチップを収めているのと同じパッケージを用いることができる。たとえば図53に示したようなピン配置を有するパッケージである。
そのため、本発明の半導体記憶装置1を既存のアプリケーションで用いる場合に、既存の汎用DRAMと入換えるだけであるので、ボードの再設計や専用の制御LSIを開発する必要がない。すなわち、汎用DRAMとピンコンパチブルであるため、ソフトウェアの変更だけで、新たな機能を追加することができる。たとえば新たな機能としては、画像の高速処理用の回路や、暗号処理などのマイクロコンピュータでは時間がかかってしまう処理を行なうロジック回路の追加が考えられる。また、汎用DRAMを収めているパッケージに数本の未使用の端子、たとえば図53における36番ピンや40番ピンのようなNC(ノンコネクション)ピンを用いて制御信号を入力するようにしてもよい。
次に、具体的な制御方法を説明する。搭載されるロジック回路の制御には、いわゆるメモリマップドIO方式を適用する。
図2は、実施の形態1のロジック内蔵半導体記憶装置のメモリマップの例を示した図である。
図2を参照して、チップに搭載されるDRAMの容量を64Mbitとし、ワード構成を×16とする。DRAMのアドレスは、XアドレスがX0〜X13,YアドレスがY0〜Y7である。よって、8MByteを制御するメモリアドレスは0h〜3FFFFFhである。
汎用のDRAMでは、このアドレス空間すべてにデータをライトしてリードできる。このようなデータをライトしてリードできる空間をDRAM空間と呼ぶことにする。本発明では、ある特定の領域を搭載するロジック回路のためのロジック制御領域に割当てる。たとえばアドレスの0h〜1Fhの空間をロジック制御領域に割当てる。ロジック制御領域の容量は、たとえば、256×2Byteの512Byteである。このアドレス空間に書込むデータによってロジックを制御するコマンドやモードを選択することができる。
図2では、最下位アドレスに領域を確保したが、最上位側(3FFFFFh〜3FFFE0h)にロジック制御領域を割当ててもよい。搭載するDRAMとしてSDRAMを想定した場合には、モードレジスタセット時にアドレスを割当てる領域を選択することができるようにしてもよい。また、モードレジスタセット時にロジック制御領域を割当てなければ、通常の64MbitのSDRAMとして使用することもできる。
図3は、外部から入力される信号がロジック回路へ伝達される様子を説明するための図である。
図3を参照して、インターフェイス部2は、制御信号/RAS,/CAS,…,/CS,/WE、アドレス信号ADD.およびデータ信号DATAを受けるバッファ3と、バッファ3の出力を受けてデコードするデコード回路5とを含んでおり、デコード回路5の出力に応じてレジスタ6はモードやコマンドなどの情報を保持し、これらの保持した情報に応じてロジック回路8が制御される。
デコード回路5は、アドレス信号ADDとデータ信号DATAをデコードするが、アドレス信号によって指定されるロジック制御領域に書込まれたデータをそのままレジスタ6に保存する場合もある。レジスタが、SRAM(スタティックランダムアクセスメモリ)などで構成されている場合には、アドレス信号ADDに応じて指定されるSRAMの領域にデータが保持される場合もある。また、レジスタ6の代わりに保持回路としてDRAMの一部の領域を用い、その領域にロジック回路制御用のデータを保持させてもよい。
図4は、実施の形態1の半導体記憶装置の標準的なタイミングを説明するための波形図である。
図4においては、データ入出力端子から入力および出力が可能なSDRAMにおいて、連続して8つのデータを書込みまたは読出す動作を示す。連続して読出されるデータのビット数はバースト長と呼ばれ、SDRAMでは通常モードレジスタによって変更することが可能である。
図4を参照して、時刻t1において、外部からのクロック信号ext.CLK(たとえばシステムクロック)の立上がりエッジで外部からの制御信号(ロウアドレスストローブ信号/RAS、コラムアドレスストローブ信号/CAS、アドレス信号ADDなど)が取込まれる。ロウアドレスストローブ信号/RASが活性状態のLレベルにあり、コラムアドレスストローブ信号/CASおよびライトイネーブル信号/WEはHレベルにあるため、ロウアクティブコマンドACTが入力されたことになる。このときのアドレス信号ADDはロウアドレスXaとして取込まれる。
時刻t2において、コラムアドレスストローブ信号/CASが活性状態のLレベルとなり、クロック信号ext.CLKの立上がりに同期して内部に取込まれる。コラムアドレスストローブ信号/CASがLレベルで、ロウアドレスストローブ信号/RASおよびライトイネーブル信号/WEがHレベルという制御信号の組み合わせは、リードコマンドREADである。このときのアドレス信号ADDはコラムアドレスYとして取込まれる。
アドレスで指定された領域が、図2のDRAM空間である場合には、この取込まれたロウアドレスXaおよびコラムアドレスYbに従って図1のDRAM4内において行および列の選択動作が実施される。
ロウアドレスXaおよびコラムアドレスYbが図2のロジック指定領域のアドレスである場合には、選択されるのは、図1のDRAM4の行および列ではなく、レジスタ6の所定の領域である。たとえば、この所定の領域には、ロジック8の動作状態を示すフラグや、ロジック8の演算結果が格納されている。
D/Qは、データ入出力端子から入出力されるデータ信号DATAを示す。ロウアドレスストローブ信号/RASがLレベルに立下がってから所定のクロック周期(図4においては6クロックサイクル)が経過した後時刻t3において最初のデータq0が出力され、データq0に引き続きデータq1〜q7が連続して出力される。このデータの出力はクロック信号ext.CLKの立下がりに応答して出力される。
この出力されたデータは、DRAM4に保持されていたデータ、または、レジスタ6の内容である。レジスタ6の内容は、たとえば、ロジック8の動作状態を示すフラグや、ロジック8の演算結果である。
時刻t4以降は書込動作を示す。時刻t4において、ロウアクティブコマンドACTが入力され、ロウアドレスXcが取込まれる。時刻t5において、コラムアドレスストローブ信号/CASおよびライトイネーブル信号/WEがともに活性状態のLレベルであり、かつ、ロウアドレスストローブ信号/RASがHレベルの組合せ、すなわち、ライトコマンドWRITEが与えられると、そのときのクロック信号ext.CLKの立上がりエッジにおいてコラムアドレスYdが取込まれるとともに、そのときに与えられていたデータd0が最初の書込データとして取込まれる。
アドレスで指定された領域が、図2のDRAM空間である場合には、ロウアドレスストローブ信号/RASおよびコラムアドレスストローブ信号/CASの立下がりに応答して、SDRAM内部においては行および列選択動作が実施される。以降クロック信号ext.CLKに同期して順次入力データd1〜d7が取込まれ、対応するメモリセルに書込まれる。
ロウアドレスXcおよびコラムアドレスYdで指定される領域が、図2のロジック指定領域である場合には、選択されるのは、図1のDRAM4の行および列ではなく、レジスタ6の所定の領域である。この場合は、入力データd1〜d7は、レジスタ6の所定の領域に書込むデータである。たとえば、与えるデータは、ロジック8が処理する画像データ、暗号データ等の処理データや、リセット、処理開始等の動作を指定するコマンドデータである。
[実施の形態1の変形例]
図5は、実施の形態1の変形例であるロジック内蔵DRAM10の構成を示すブロック図である。
図5を参照して、ロジック内蔵DRAM10は、制御信号/RAS,/CAS,…,/CS、アドレス信号ADD、データ信号DATAを受けるインターフェイス12と、インターフェイス部12の出力に応じて動作するDRAM4と、インターフェイス部12の出力に応じて制御用データを保持するレジスタ14,16と、レジスタ14,16にそれぞれ保持される制御用データに応じて動作するロジック回路18,20を有する。
図6は、図5に示したロジック内蔵DRAM10のメモリマップを示した図である。
図6を参照して64Mbitのアドレス空間0h〜3FFFFFhのうちアドレス0h〜1Fhはロジック回路18に対する制御コマンドやデータを書込むロジック制御領域であり、アドレス20h〜2Fhは、ロジック回路20に対するコマンドやデータを書込むロジック制御領域である。
このように、メモリマップドIO空間を、複数個に分割し、搭載する複数個のロジック回路を制御することが可能となる。
[実施の形態2]
図7は、実施の形態2のロジック内蔵DRAM30の構成を示すブロック図である。
図7を参照して、ロジック内蔵DRAM30は、SDRAM部32と、ロジック部34とを含む。
SDRAM部32は、外部からの信号を受けてそれに応じた制御信号を出力するインターフェイス部36と、インターフェイス部36からの出力に応じてデータの保持を行なうDRAMコア38とを含む。インターフェイス部36は、制御信号/CS,/RAS,/CAS,/WEおよびDQMを受ける制御信号入力回路40と、クロック信号CLKおよびクロックイネーブル信号CKEを受けて内部クロックを発生するクロックバッファ44と、クロックバッファ44の出力に同期してアドレス信号A0〜Anを取込むアドレスバッファ46と、内部クロックに同期してデータ信号DQ0〜DQnの入出力を行なう入出力回路52とを含む。
インターフェイス部36は、さらに、制御信号入力回路40の出力に応じコマンド信号ACT,PREなどを出力する制御回路42と、制御回路42の出力に応じてアドレスバッファ46の出力をXアドレス,Yアドレスとしてマルチプレクスするマルチプレクサ48とを含む。
マルチプレクサ48は、モードレジスタセット(MRS)コマンドに応じてアドレス信号A0〜Amのいずれかの信号ビットに応じて設定可能なモードレジスタ50を含んでいる。
DRAMコア38は、行列状にメモリセルが配置されるメモリセルアレイ54と、マルチプレクサ48から与えられるロウアドレスに応じてメモリセルアレイ54の行選択を行なうロウデコーダ56と、マルチプレクサ48から与えられるコラムアドレスに応じてメモリセルアレイ54の列選択を行なうロウデコーダ56と、選択されたメモリセルからデータを読出し、かつ、選択されたメモリセルに対してデータの書込みを行なうセンスアンプドライバ&ライトドライバ60とを含む。
ロジック部34は、暗号演算ロジック74と、インターフェイス部36の出力に応じて暗号演算ロジック74の制御をするためのモード情報や暗号演算ロジックに入力するデータおよび暗号演算ロジックの演算結果を保持するレジスタ部72とを含む。
レジスタ部72は、アドレス信号A0〜Amによって指定される領域が所定値の場合に活性化され、入出力回路52を介して外部から入力されるデータ信号を取込むためのセレクタ76と、セレクタ76を介して外部から与えられたデータを書込む制御レジスタ78,モードレジスタ80およびデータレジスタ84と、暗号演算ロジックから出力されるデータを保持してその保持データをセレクタ76,入出力回路52を介して外部にデータ信号DQ0〜DQnとして読出すためのステータスレジスタ82、データレジスタ86とを含む。
図8は、実施の形態2のロジック内蔵DRAMに適用されるシステムのメモリマップを示した図である。
図8を参照して、システムメモリマップ中の外部RAM領域がロジック内蔵DRAMに対応する。ロジック内蔵DRAMは、その領域がロジック制御領域とDRAM領域に分割されており、ロジック制御領域へのアクセスによって内蔵する暗号ロジックを制御する。このロジック制御領域に対応するシステムメモリマップ上の領域はシステム予約領域とし、CPUのキャッシュおよびMMU(メモリマネージメントユニット)を使用する場合には、キャッシュ不可能領域としておく。また、オペレーティングシステムがこの領域にロードされないように、予めシステムのファームウェアで制御する。さらに、アプリケーションプログラムもこの領域を使用禁止とする。
このロジック制御領域は、たとえば、DRAMのロウアドレスX=3FFFh,コラムアドレスY=0H〜FFhに割当てる。
図7の制御レジスタ78はX=3FFFh,Y=00hに割当てられる。モードレジスタ80は、X=3FFFh,Y=01hに割当てられる。ステータスレジスタ82は、アドレスX=3FFFh,Y=02hに割当てられる。第1のデータレジスタ84は、アドレスX=3FFFh,Y=03hに割当てられ、第2のデータレジスタ86は、アドレスX=3FFFh,Y=04hに割当てられる。
この例では、X=3FFFhのページ(Y=00h〜FFh)を制御コマンド領域に割当てている。したがって、図7の構成でACTコマンド入力時に、X=3FFFhが入力された時点で、レジスタ部72にアクセスできるようにマルチプレクサを制御しておく。さらに、レジスタのイネーブル信号やレジスタを制御しているクロックも動作させておく。このようにすれば、制御コマンドを入力期間中以外でレジスタ部72で消費する電力を抑えることができる。また、X=3FFFhのページにリード、ライトコマンドが入っても既にレジスタ部72が活性化されているので、レジスタへのアクセスが遅延されることはない。
図7の、暗号演算ロジック74は、ネットワーク上のセキュリティ確保のために使われている主要な暗号方式のアクセラレータを内蔵している。この暗号演算ロジック74は、電子認証で用いられる公開鍵方式と認証後のデータ送受信で用いられる秘密鍵暗号方式の機能をサポートしている。暗号専用のロジック回路で処理するので、処理を汎用のCPUで処理するよりも低消費電力で高速に処理を行なうことができ、たとえば電池駆動のシステム等に適している。
図9は、図7の暗号演算ロジック74がサポートする暗号方式を示した図である。
図9を参照して、暗号演算ロジック74は、公開鍵暗号方式としてRSAをサポートし、秘密鍵暗号方式としてDES方式とTriple−DES方式とをサポートする。さらに、秘密鍵暗号方式では、主要なブロック暗号化モードであるECB(Electric Code Book),CBC(Cipher Block Chaining),OFB(Output Feed Back),CFB(Cipher Feed Back)の各モードをサポートしている。暗号演算ロジック74は、アプリケーションの適合性を高めるため、暗号化においてクリティカルな処理が割当てられており、その他はロジック内蔵DRAM30を制御するマイクロコンピュータ側でソフトウェア処理することになる。そして最大の特徴は、汎用のSDRAMとピンコンパチブルで暗号制御が実現できることである。
次に、図8に示したロジック制御領域の各レジスタにどのような割当がされているかを説明する。
図10〜図18は、レジスタに割当てられるデータを説明するための図である。
図7、図10を参照して、制御レジスタ78は、Yアドレスが0hのD0〜D15の16ビットが割当てられている。そして、ビットD0に1を書込むことにより暗号機能がリセットされる。すなわち、暗号演算ロジック74に所定時間のリセットパルスを与える処理が実行される。また、ビットD1が1である場合には、暗号演算ロジック74が暗号処理中であることを示す。したがって、外部から暗号演算ロジックにアクセスする場合には、ビットD1に示されるフラグが0であることを確認してからアクセスしなければならない。
この制御レジスタ78は、公開鍵と秘密鍵の両方式共通に用いられる。
次に秘密鍵方式の制御に用いられるいくつかのレジスタの例について説明する。
図7,図11を参照して、Y=1hのアドレスに対しては、モードレジスタ80が割当てられており、この16ビットのうちビットD1,D0は、暗号方式選択に使用される。この2つのビットが“01”であれば暗号方式はDESである“10”であれば暗号方式はトリプルDESである。“00”であれば暗号方式はホールドされる。
ビットD5〜D2は、ブロック暗号化モード選択に使用される。このビットが“0001”であればブロック暗号化モードはECBが指定される。また“0010”の場合はブロック暗号化モードはCBCが指定される。“0100”の場合には暗号モードはOFBが指定される。これらのビットが“1000”の場合にはブロック暗号化モードはCFB64に指定される。またこれらのビットが“0000”の場合はブロック暗号化モードはホールドされる。
ビットD8〜D6は暗号処理の単位量を指定するデータ処理モードの選択に使用される。これらのビットが“001”の場合には処理を8Byte単位で行なうノーマルモードが指定され、“010”の場合はブロック長を指定したブロック単位で処理を行なうブロックモードが指定され、“100”の場合にはバッファに蓄積した情報を単位として一括処理するバッファモードが指定され、“000”の場合にはデータ処理モードはホールドされる。
このように、Y=1hの1アドレス2Byteのデータの16ビットを複数のモード指定に割当てることができるので、2の16乗の組合せを有効に使用すれば、指定するモードが複数ある場合であっても1回のアクセスで動作モードの指定を完了することができる。
図7、図12を参照して、アドレスY=02hにはステータスレジスタ82が割当てられている。ステータスレジスタのビットD1,D0が“01”であるときは暗号化を示し、“10”であるときは復号化を示し、“00”であるときはホールドを示す。ビットD5,D4が“01”であるときには、平文または暗号文の入力スタートを示しており、“10”であるときには入力ストップを示し、“00”であるときはホールドを示す。
ビットD9〜D6は、OFB,CFBの1ブロック中のテキスト長を表わす。
図7、図13を参照して、Yアドレス3h〜6hは64ビットのDESの鍵などが格納される領域である。
図7、図14を参照して、第1のデータレジスタ86は、Triple−DESに使用される鍵を格納する領域である。アドレスY=7h〜Ahの領域が相当する。
データレジスタ84,86は、ともに外部からは1本のレジスタに見えるが、実際には複数のレジスタで構成されており、一種のファーストインファーストアウト(FIFO)メモリである。
その他には、図7には図示されていないが図15に示すような初期ベクトルを設定するレジスタ、図16に示すようなブロック長の指定をするレジスタ、図17に示すようなバッファ本数を指定するレジスタ、図18に示すようなバッファIDを示すようなレジスタなどがある。
なお、公開鍵方式、たとえばRSA暗号処理を行なうために、Y=12h〜1Fhの領域は予約領域とされている。公開鍵方式の場合には、暗号処理結果が内蔵のレジスタに保持されるため、暗号処理中であってもDRAM領域にアクセスすることができる。
SDRAMに対するACTコマンドで読込まれるロウアドレスXが3FFFhの場合に、マルチプレクサ48がこれを検出しセレクタ76を活性化する。そして、リードコマンドまたはライトコマンドでコラムアドレスYが入力されることによりいずれのレジスタにアクセスするかが選択される。そして入出力回路52を介して外部から入力されるデータがレジスタに書込まれる。
実施の形態2の場合には、ロジック制御領域として確保したアドレス領域は、3FFF00h〜3FFFFFhであったが、モードレジスタセット命令でセットできる図7におけるレジスタ50の保持内容に応じて、マルチプレクサにおいて割当てアドレスを変更できるようにすることにより、さまざまなマイクロコンピュータシステムに本発明のロジック内蔵DRAMを搭載することが可能となる。モードレジスタセット命令でアドレスを割当てない場合には、本発明のロジック内蔵DRAMは通常の64MbitのSDRAMとして使用可能である。通常のSDRAMとして使用する用途のために、モードレジスタに内部搭載ロジックを使用するか否かを指定するビットを設けてもよい。
[実施の形態3]
図19は、本発明のロジック内蔵DRAM92とマイクロコンピュータ90とが接続される様子を示した図である。
マイクロコンピュータ90には、CPUコア94と、キャッシュメモリ96と、メモリコントローラ98および外部バスインターフェイス回路100が含まれており、これらは内部バス102によって接続されている。外部バスインターフェイス回路100は、CPUコア94からの指令に応じてロジック内蔵DRAMに対して制御信号およびアドレス信号およびデータを出力する。したがって、外部バスインターフェイス回路100とロジック内蔵DRAM92とは制御信号/RAS,/CAS,…,/CSなどの制御信号を伝達する制御信号バスと、アドレス信号ADD.を伝達するアドレスバスとデータDATAを伝達するデータバスとによって接続されている。
このようなシステムにおいてロジック内蔵DRAM92を制御するためには、マイクロコンピュータ90上で走るソフトウェアで留意しなければならない事項がある。
図20は、ロジック内蔵DRAMの制御を説明するためのフローチャートである。
図20を参照して、まず最初にステップS1において、ロジック制御領域となるアドレスを予約領域に指定する。つまり、ロジック回路に対するコマンド制御用のアドレス空間上にプログラムが割当てられないようにする。割当てない方法としては、たとえば、OS(オペレーションシステム)の機能を用いてロジック制御領域を予約領域にする方法がある。
メモリー管理、割り込み管理、プロセス間通信といったシステムの基本的な制御を行う、OSにおける中核部分であるカーネル自体がロジック制御領域に割当てられないように、OSの立上がり時点にも注意を要する。したがって、カーネル自体がロジック制御領域に割当てられないように注意して、予約領域をOS側で指定しておく。
次に、ステップS2において、データキャッシュありのシステムにおいては、ロジック制御領域をキャッシュ不可能領域にしている。
すなわち、図19におけるCPUコア94からロジック内蔵DRAM92に対して所定のアドレス空間を指定してコマンドに相当するデータを内部バス102に送った場合であっても、キャッシュメモリ96が動作すると、そのコマンドに相当するデータはキャッシュメモリ96に書込まれてしまい、ロジック内蔵DRAM92には伝達されない場合があり得る。すると、ロジック内蔵DRAM92に搭載しているロジック回路は、そのコマンドに応じて動作できなくなる。したがって、ロジック制御領域がキャッシュされないように設定する必要がある。大抵のマイクロコンピュータでは、一部のアドレス空間をアンキャッシャブル領域に指定する制御が可能である。
また、メモリマネージメントユニット機能を有している場合には、仮想アドレス空間がロジック制御領域で用いられないように設定する。
このように、キャッシュメモリがあるようなシステムでは、システムの初期設定において、ロジック内蔵DRAMのロジック制御領域に対しては、キャッシュメモリを使用しないようにし、必ずアクセスされるようにする。
次に、ステップS3において、割当てた領域にノーマルライトすることによってロジック制御のためのコマンドを入力し、ステップS4においてノーマルリードによりロジックの処理状況のチェックや処理結果の読出を行なうことができる。さらに、ステップS5において処理がまだ終了していなければ、ステップS3,S4を繰返すことになる。具体的には、図10で説明したように、アドレスY=0hのビットD1に書込まれているフラグをチェックすることにより、処理状況を判断することができる。このフラグをチェックして、処理の完了を確認してからマイクロコンピュータは演算結果をアクセスするなど次の動作を始めることができる。
したがって、本発明によれば、従来では処理の終了を専用のピンで受け手側に伝えていたのに対しSDRAMに通常のノーマルリードを行なうことによりフラグ状態をチェックすることが可能となる。
[実施の形態4]
実施の形態1〜実施の形態3で示した例は、チップに搭載するDRAMメモリの一部の空間をつぶしてコマンド制御用の空間を割当てていた。したがって、割当てた部分だけはマイクロコンピュータシステムのメインメモリとしては使えなかった。
実施の形態4では、ゴースト空間を制御用に割当てる。
図21は、実施の形態4において割当てたメモリマップを示した図である。
図21を参照して、搭載するDRAMを、64Mbitの容量でワード構成が×16のSDRAMであるとすると、XアドレスはX0〜X13、YアドレスはY0〜Y7であった。Xアドレスを1端子追加し、X14=“0”の領域を実メモリ空間とし、X14=“1”の領域をゴースト空間とする。メモリが存在しないこのダミーのゴースト空間の一部をロジック制御領域に割当てる。この空間には必ず直接アクセスがされるように実施の形態3で示したような工夫をしておく。
X14を与えるための端子が1端子増加することになるが、パッケージで未使用端子がある場合にはそれを割当てればよい。たとえば図53の40番ピンや36番ピンなどのNC端子を割当てればよい。図21ではX14のアドレスを追加した場合を示したが、Yアドレスを1ビット追加してもよい。すなわちY8=0の領域をDRAM空間とし、Y8=1の領域をゴースト空間とすることもできる。DRAMではXアドレスとYアドレスとは、通常はマルチプレクスされており、Xアドレスのほうがビットが多いので、Yアドレスを追加する場合には、使用する端子の追加は必要ない。
以上は、ゴースト空間の一部にロジック制御領域を割当てた場合を示したが、ゴースト空間に対してリードすると、それに対応する実空間のアドレスに格納されているデータに演算が加えられて出力されたり、そのアドレスのデータが書き直される場合も考えられる。すなわち、X14=1としてアクセスすると、指定したアドレスのX14=0とした実空間のアドレスに保持されているデータに何らかの処理を加えるようにしてもよい。この場合においても、X14のアドレスを拡張する代わりにY8のアドレスを拡張してもよく、また、X14が1の場合にゴースト空間としたが、X14=0の場合をゴースト空間とし、X14=1の場合を実メモリ空間としてもよい。Y8のアドレスを拡張する場合もY8=0の場合をゴースト空間とし、Y8=1の場合を実メモリ空間としてもよい。
[実施の形態5]
図22は、実施の形態5のロジック内蔵DRAM111の構成を示した図である。
図22を参照して、ロジック内蔵DRAM111には、通常のDRAM114を制御するためのアドレスADD.、データDQおよびクロック信号CLKや制御信号/RAS,/CAS,…,/CS,/WEを制御するための端子に加えて、信号WE_L,ADD_Lを与えるための端子が設けられている。
ロジック内蔵DRAM111は、さらに、通常のDRAM114と、所定の制御信号を保持するためのレジスタ116と、レジスタ116の保持情報に応じて動作するロジック回路118とを含む。
すなわち、制御専用の端子を最小限付け加えることによって制御空間を自由に設定することができる。図22では、追加した制御端子は、制御信号WE_L,ADD_Lが入力される端子である。追加する端子は、図53で示した36ピンや40ピンのようなNCピンに割当てればよい。
制御信号ADD_LがLレベルの場合にDRAMアクセスモードにされ、制御信号ADD_LがLレベルからHレベルになると、DRAM114は非活性化され代わりにレジスタ116に信号が入力可能となりロジック118が動作するモードとなる。
図23は、実施の形態5におけるマイクロコンピュータシステムのメモリマップを示した図である。
図23を参照して、0h〜3FFFFFhがDRAM空間に割当てられる。XアドレスがX0〜X13の14ビット、YアドレスがY0〜Y7の8ビットであり、マイクロコンピュータシステムにおいてDRAM空間を指定するアドレスビットとしては、あわせてA0〜A21までが用いられる。
そして、たとえば、制御信号ADD_Lが入力される端子をマイクロコンピュータシステムのアドレスビットA23と接続した場合には、ロジック制御領域は、800000h〜803FFFhを割当てることができる。つまり、アドレスビットA23=“1”とし、アドレスピンマルチプレクスを使用しないときに、アドレスを入力する最大数の端子からDRAMのアドレスとして指定することができる範囲すなわち、Xアドレスとして指定可能な範囲と同じ0h〜3FFFhがロジック制御領域として割当可能な範囲である。実際に使用する際には、ロジック制御領域の上限は必要に応じて設定すればよい。
ただし、マイクロコンピュータが、アドレスビットA23=“1”である他のアドレス領域を使用する可能性がある場合には、ロジック制御領域(800000h〜803FFFh)にアクセスする場合のみ、ロジック内蔵DRAMに対してチップセレクト信号/CSを活性化させる必要がある。
図24は、実施の形態5のロジック内蔵DRAMの制御を説明するための動作波形図である。
図24を参照して、時刻t1まではクロック信号CLKに同期した通常のDRAMに対するアクセスが行なわれる。
時刻t1において制御信号ADD_LがHレベルになると、ロジック回路に対するコマンド制御モードに入る。以降、クロック信号CLKに同期してアドレス信号ADDによって指定されたレジスタにデータの授受が行なわれる。図24の場合には、追加された制御信号/WE_LがLレベルであるので、コマンド制御用レジスタにコマンド入力がなされる。
[実施の形態5の変形例]
図25は、実施の形態5の変形例を説明するための図である。
通常のDRAMアドレス空間をアクセスするときには、マイクロコンピュータ132は、CPUコア134から指定されたアドレスに対して、メモリコントローラ136がマルチプレクス回路140を用いてXアドレスおよびYアドレスをアドレス信号A0〜A13が伝達されるアドレスバスにマルチプレクスして出力する。
しかし、図23で示したように、DRAM空間とは異なる領域にロジック制御領域が割当てられる場合には、メモリコントローラ136は、マルチプレクス回路140を用いないでそのままアドレスを外部バスインターフェイス回路142から出力することになる。
この場合には、アドレス信号A0〜A20のうち、マルチプレクスされた後有効となっているピン数に対応するアドレス信号A0〜A13を用いてSRAMと同様な方法でアドレスの指定がなされる。この場合、信号A14〜A20は何であってもかまわない状態、いわゆる「Don't Care」の状態である。このようなアドレス信号A0〜A20が/CSの活性化とともに指定されると、応じてロジック内蔵DRAM121が処理を行なう。
ただし、この場合も、マイクロコンピュータが、アドレスビットA23=“1”である他のアドレス領域を使用する可能性がある場合には、ロジック制御領域(800000h〜803FFFh)にアクセスする場合のみ、ロジック内蔵DRAMに対してチップセレクト信号/CSを活性化させる必要がある。
かかる場合には、ロジック内蔵DRAM121は、レジスタ126の一部にアドレスの変化を検知するATD(Address Transition Detect)回路130を設ける。
図26は、実施の形態5の変形例の動作を説明するための動作波形図である。
この場合には、時刻t1までは、制御信号ADD_LはLレベルであり、通常のDRAMアクセスがなされるが、ADD_LがHレベルになると、ロジック回路に対するコマンド制御モードに入る。このとき、/WE_LがLレベルの場合には、ライトモードが指定されて/WE_LがHレベルの場合にはリードモードが指定される。
そして、アドレス信号A0〜A13によって指定されるアドレスADDが変化すると、ATD回路130がこれを検知し、クロック信号CLKにかかわらず内部の動作クロックを発生しDQに与えられる信号を内部のコマンドレジスタにライトしたり、アドレスで指定されるレジスタの内容をDQ端子からリードすることができる。
以上説明したように、半導体記憶装置121の制御信号ADD_Lを受ける端子とマイクロコンピュータ132側のSRAM制御用に出力される信号A23が出力される端子とを接続することで、半導体記憶装置121をSRAMのように制御すれば特殊な機能をマイクロコンピュータ側に入れる必要がない。マイクロコンピュータは、外部拡張したSRAM等のメモリに対してデータの書込または読出を行なう通常のコマンドを実行すれば、半導体記憶装置121に搭載したロジック回路を制御することができる。
[実施の形態6]
実施の形態6では、より具体的な暗号ロジック内蔵DRAMについて説明する。以降、この暗号ロジック内蔵DRAMをセキュリティ−SDRAM(ScRAM)と称する。
図27は、ScRAM200の構成を示したブロック図である。
図27を参照して、ScRAM200は、外部からクロック信号CLKを受けるクロックバッファ202と、外部とデータ信号DQを授受するための入出力バッファ204と、外部からアドレス信号ADD,コマンド信号CMDおよび信号CRYPを受ける入力バッファ206とを含む。
ScRAM200は、さらに、入力バッファ206の出力に応じて動作モード情報を保持するモードレジスタ208と、入力バッファ206およびモードレジスタ208の出力に応じてScRAMの制御を行なうDRAM制御アドレスカウンタ210と、DRAM制御アドレスカウンタ210の制御の下にデータ保持動作を行なうDRAM部212とを含む。
入出力バッファ204とDRAM部212とは内部バスmbus[15:0]で接続される。DRAM部212は、複数のバンクを備えており、各バンクはメモリアレイ、ロウデコーダ、コラムデコーダおよびセンスアンプ、入出力制御回路を含んでいる。
ScRAM200は、さらに、セレクタ214と、レジスタREG0,REG1,REG2と、カウンタ220,224と、制御回路222と、暗号ロジック228とを含む。
モードレジスタ208には、SDRAMの制御コマンドであるモードレジスタセット(MRS)時のパラメータが保存される。このパラメータとしては、SDRAMのモード設定だけでなく、制御レジスタREG0〜REG2のアクセスのイネーブル/ディスエーブルも設定できる。また、MRSが入力されると制御レジスタREG0〜REG2および暗号ロジック228がリセットされる。
ScRAM200には、暗号ロジック機能を制御するために3種類の制御レジスタREG0〜REG3が設けられている。
制御レジスタREG0は暗号ロジックを制御するコマンドや、モードを制御するためのレジスタである。制御レジスタREG1は、暗号ロジックの入力データの保持をするレジスタである。制御レジスタREG1の保持容量は最大4kbである。
制御レジスタREG2は、暗号ロジックの出力結果を保持するレジスタである。制御レジスタREG2もその保持容量は最大4kbである。
次に、制御レジスタREG0〜REG2に対するアクセス方法を説明する。
外部から制御レジスタをアクセスすることにより、ScRAM200の内蔵する暗号ロジックの制御、データの入出力、低消費電力化モードの制御を行なうことができる。
図28は、制御レジスタの設定に応じたメモリマップの状態変化を説明するための図である。
図28を参照して、ScRAMの内蔵する暗号機能を制御するには、2通りの方法がある。
まず第1の方法は、制御レジスタアクセスイネーブル信号CRYPとして外部から1を入力することである。これにより、X=♯3FFFのページが制御レジスタ領域となる。
第2の方法は、制御レジスタアクセスイネーブル信号CRYPが0の場合に、SDRAMのモード設定のためMRSコマンドを入力するときに、アドレスビットA10として1を入力することである。この場合は、アドレスビットA11が0の場合には、X=♯3FFFのページが制御レジスタ領域になる。また、アドレスビットA11が1の場合には、X=♯0000のページが制御レジスタ領域となる。
ScRAMの制御レジスタを使用しない場合は、SDRAMのモードを設定するための通常のMRSコマンドをA10=0に設定することにより入力する。この場合、制御レジスタアクセスイネーブル信号CRYP=0にする必要がある。信号CRYPやMRSコマンド入力からtRSC以降には、ScRAMは新たなコマンドに対して動作可能となる。
制御レジスタアクセスがイネーブルの期間、特定のロウアドレス(X=♯3FFFまたは、X=♯0)のアドレス空間に、定められたデータをライト/リードすることによって、制御用レジスタREG0〜REG2にアクセスすることができる。この間は、暗号をロジック制御用に割当てられた4kビットのアドレス空間をメモリとして用いることはできない。それ以外の空間については、通常のメモリ領域として外部からアクセスすることが可能である。
ここで、制御レジスタアクセスに対応するアドレス空間に外部からアクセスした場合には、DRAM部212に対してはアクセスが行なわれない。したがって、制御レジスタアクセスのイネーブル状態から抜ければ、制御レジスタ領域であった特定のロウアドレスに対応するメモリ空間を通常のメモリ空間としてアクセスすることができる。制御レジスタアクセスのイネーブル状態から抜ける前にレジスタに設定した値は、信号CRYPを0にして動作モードから抜けた場合には保持される。しかし、MRSコマンドを用いてモードから抜けた場合には、レジスタに設定した値はリセットされる。すなわち、MRSコマンドを入れることにより、レジスタをリセットすることができる。
制御用レジスタREG0〜REG2に対するアクセスは、制御用レジスタに割当てられたアドレス空間内で、汎用SDRAMと同じシーケンスでアクセスすることにより行なわれる。制御レジスタからの読出データは、SDRAMのモードレジスタセット時に設定された同じCASレイテンシで出力されるが、制御用のレジスタへのアクセス時のバースト長は1に固定される。
次に、図27のモードレジスタ208について説明する。
図29、図30、図31は、図27に示したモードレジスタ208を説明するための図である。
図29を参照して、モードレジスタセット命令はクロック信号CLKの立上がり時にコマンド信号CMDに含まれる信号/CS,/RAS,/CAS,/WEをすべてLレベルに設定することにより与えられ、このときにアドレス信号ADDに含まれるアドレスビットBA0,BA1,A0〜A11で設定される値が図30に示す各ビットに書込まれる。ただし、アドレスビットA8,A7は、0に設定される。他のビットは図31で示すように種々の設定に割当てられている。
モードレジスタセットではSDRAMのモード設定、SDRAMのローパワーモード設定、および制御レジスタのアクセスを行なうことができる。
SDRAMのモード設定では、バースト長、バーストタイプ、および/CASレイテンシをプログラムすることができる。
SDRAMのローパワーモード設定では、非パワーダウンモード時のプリチャージスタンバイ電流を低減することができる。ただし、このモードを使用するには、入力信号のセットアップタイムを5ns以上にする必要がある。
制御レジスタのアクセスでは、モードレジスタセット時に、ビットA10を1にすると、暗号機能を制御するためのレジスタ空間が現われる。この方法は、信号CRYPを入力する端子の制御ができないために、この端子を0に固定したシステムに適している。制御レジスタへのアクセスは、SDRAMのアクセスシーケンスと同じで、同じ/CASレイテンシでデータが出力される。しかし、制御レジスタのアクセスは常にバースト長が1に固定されている。
モードレジスタセットによりセットされたデータは、次のMRSコマンドが入力されるまでモードレジスタに格納される。次のMRSコマンドは、両バンクが非活性化状態にあれば入力できる。MRSコマンドからtRSC後には、SDRAMは新たなコマンドに対して動作可能となる。また、MRSコマンドが入力されると制御レジスタがリセットされる。制御レジスタの内容を保持したまま、制御レジスタアクセスのディスエーブルとイネーブルとを切換えるには、SDRAMのモードレジスタセット時にビットA10を0にして信号CRYPの制御を行なうことで実現することができる。
図32は、ScRAMの暗号制御エントリ・エグジットに関連する状態遷移図である。
電源投入がされると初期状態340にScRAMの状態が遷移する。続いて信号CRYPを1にすると、暗号制御がイネーブルな状態344に遷移する。一方信号CRYPが0の場合であっても、モードレジスタセットコマンドによりビットA10を1に設定することにより暗号制御イネーブル状態344に遷移させることができる。
パワーオンの初期状態340において信号CRYPを0に設定し、モードレジスタコマンドによってビットA10を0にすると暗号制御ディスエーブルな状態342に遷移する。
状態342から344に遷移させるためには、信号CRYPを1にすることによる場合と、信号CRYPが0の状態であってモードレジスタセットコマンドによりビットA10を1に設定することによる場合とがある。
一方、暗号制御イネーブル状態344から暗号制御ディスエーブル状態342に遷移させるには、暗号制御イネーブル状態344に信号CRYPを1に設定して入った場合には逆に信号CRYPを0に設定することにより遷移させることができる。また、信号CRYPを0に設定し、モードレジスタセットコマンドでビットA10を1に設定してイネーブル状態344に入った場合には、モードレジスタセットコマンドによりビットA10を0に設定することによりディスエーブル状態342へと遷移させることができる。
図33は、制御レジスタアクセスの一例を示した動作波形図である。
図33を参照して、制御レジスタアクセス領域としてX=♯3FFFのページが割当てられた場合を示す。SDRAMのモードがCASレイテンシCL=3に設定されているので、レジスタ出力もCL=3のタイミングになっている。
ここで、モードレジスタセットにより設定されたバースト長BLによらず、レジスタアクセスに関しては、バースト長は1に固定される。したがって、リード/ライトコマンドとコラムアドレスとを毎サイクル入力する必要がある。
図34〜図37は、制御レジスタのアドレスマップを示した図である。
図34はコラムアドレスがh00,h01の場合を示し、図35は、コラムアドレスがh02の場合を示し、図36は、コラムアドレスがh03,h04,h05,h06の場合を示す。図37は、コラムアドレスがh13〜h20の場合について示す。
これらのXアドレスはX=h3FFFまたはX=h0いずれかに初期設定された値である。
次にScRAMの内蔵する暗号機能の特徴について説明する。
ScRAMは、ネットワーク上のセキュリティ確保のために使われている、主要な暗号方式のアクセラレータを内蔵している。また、ScRAMは、電子認証で用いられる公開鍵方式と認証後のデータ送受信で用いられる秘密鍵暗号方式の機能をサポートしている。これらは、図27に示す専用の暗号ロジック228で処理するので、低消費電力で高速暗号処理が必要なシステムに適する。
サポートする暗号方式については、図9で示した場合と同様であり、公開鍵暗号方式としてRSAを、秘密鍵暗号方式としてDESとトリプルDESとをサポートしている。さらに、秘密鍵暗号方式では、主要ブロック暗号モードであるECB,CBC,OFB,CFB−64をサポートしている。
一般的なネットワークだけでなく、インターネットでも、これらの暗号方式は主要な暗号方式として用いられている。主要なブラウザであるネットスケープコミュニケータやインターネットエクスプローラなど、暗号化電子メール方式であるS/MIMEにも対応することができる。今後の拡大が期待される電子商取引市場では、これらの暗号方式を用いたセキュリティの確立が重要になると考えられる。また、携帯電話への運用が予想されるワイヤレスアプリケーションプロトコル(WAP)でも上述の暗号化方式がサポートされるため、ScRAMは、さまざまなシステムに幅広い適合性がある。
ScRAMは、アプリケーションの適合性を高めるため、内部暗号ロジックにより、暗号化でクリティカルな処理のみを受け持つ。すなわち、ハッシュ、データエンコーディング、パディングなどの処理は、従来どおりソフトウェア側で受け持つことになり、アプリケーション側の自由度を高めるように考慮されている。また、RSAでは、ソフトウェア処理で要する処理時間の大部分を占めていた次のa),b)の演算のみを処理する。
a) RSAによる電子認証を高速化するため、
べき乗剰余演算 Me mod N、
モンゴメリー乗算剰余演算 X*Y*R-1 mod N、
剰余演算 Y mod N
を実施する。
b) 暗号化通信の高速化をするために、トリプルDES、DES(CBC,ECB,OFB,CFB−64)の演算を行なう。ただし、最終テキストブロック部のパディング処理は、規格によってさまざまであるので、適宜、ソフトウェアで処理する必要がある。
続いて、暗号処理速度について述べる。
アドレス処理専用ロジックとDRAMのワンチップ化によって、高速化と低消費電力化とを実現している。その結果、携帯端末に適した低電源電圧(2.5V系)で、
1024bit RSA暗号署名処理時間:100−200ms
約60MbpsのトリプルDES処理。DESであれば、約180Mbps。
の性能を実現することができる。
また、ScRAMは、特定のアドレス空間をアクセスすることで、暗号ロジック部分を制御しているので、汎用SDRAMとピン互換を実現することができる。また、暗号機能をディスエーブルにすれば、SDRAMとしての機能のみを使用することもできる。
続いて暗号機能制御方法について説明する。
先に説明したように、ScRAMに内蔵している暗号機能の制御は、制御レジスタに対してアクセスを行なうことで実行することができる。制御レジスタにアクセスするには、モードレジスタセット時に所定のアドレスを入力するか、信号CRYPが与えられる端子を1に設定して、特定のアドレスにアクセスすることによって制御レジスタにアクセスすることができる。ここで、制御レジスタに割当てられたデフォルトのアドレス空間は、X=h3FFFのページである。また、MRSコマンド入力時に、ビットA10,A11をともに1に設定すれば、X=h0のページに制御レジスタを割当てることもできる。
しかし、ファームウエア設計では、制御レジスタアクセスのために予約された空間を、それ以外の用途で使用しないことが要求される。たとえば、アプリケーションやカーネルにこの空間を割当てることを禁止しなければならない。カーネルに関しては、ブート時に割当てられないように注意する必要がある。
続いて、システム設計の例を説明する。
図38は、信号CRYPを与える端子を制御可能なシステムを説明するための図である。
図38を参照して、一般のマイコン(MCU)が備えているI/Oポートを、CRYP信号を受ける端子に接続することができるシステムについて例示している。この構成では、システムのブート前にCRYP端子を0にすることができれば、制御レジスタに割当てられたアドレス空間が現われていないので、プログラムを初期ロードする空間には制約がない。プログラムがロードされた領域がX=h3FFFを含んでいる場合には、その後CRYP端子を1に設定して、制御レジスタに割当てられたアドレス空間をX=h0のページに変更する必要がある。
図39、図40は、CRYP端子を制御不可能なシステムについて説明するための図である。
図39を参照して、CRYP端子に与える値を0に固定した場合には、ScRAMのモードレジスタセット(MRS)入力時に、ビットA10を1にして制御レジスタへのアクセスをイネーブルにする。このときに、ビットA11でプログラムがロードされていない空間を選択する。
図40を参照して、CRYP端子に与える値を1に固定した場合には、X=h3FFFのページに制御レジスタへのアクセス空間が割当てられるので、この空間を避けてプログラムのロードを行なう必要がある。
図41は、制御レジスタへの設定の説明をするための動作波形図である。
図41を参照して、制御レジスタの設定に関して信号入力の一例が示される。制御レジスタへのアクセスでDRAMと唯一異なる点は、MRSの設定によらずバースト長が1になることである。それ以外に関しては、DRAMと同じタイミング、かつ、同じシーケンスで、制御レジスタに対してアクセスを行なう。
図41では、制御レジスタにアクセスするためのアドレス空間がX=h3FFFの場合を例として示している。
まず時刻t1において、制御レジスタにアクセスするためのアドレスX=h3FFFが入力される。
続いて時刻t2において、ソフトリセットがされる。
時刻t3では、モード設定(1)がなされる。モード設定(1)は、秘密鍵暗号方式としてDES−56を選択し、CBCモードで処理を行なうモード設定である。
続いて時刻t4ではモード設定(2)が行なわれる。モード設定(2)は、暗号化、REG1とREG2のアドレスカウンタをリセット。初期値としてIVを使う。というモードが設定される。
時刻t5〜t6では、秘密鍵が入力される。
時刻t6〜t7では、イニシャルベクトルIVが入力される。
時刻t7〜t8では、8バイト単位の平文を入力し、平文入力後時刻t8においてEOF(エンドオブファイル)の入力が行なわれる。
そして時刻t9では、フラグ領域に対するリードを行ない、暗号ロジックが処理中か否かをチェックする。
このチェック結果はCASレイテンシでデータ信号DQとして読出される。
続いて、ScRAMがサポートする秘密鍵暗号方式について説明する。
図42〜図44は、暗号化処理の基本単位について示した概略図である。
図42は、鍵の長さが56bitのDESを示し、図43は、鍵の長さが112bitのトリプルDES方式を示し、図44は、鍵の長さが168bitのトリプルDES方式について示している。ScRAMでは、秘密鍵暗号化方式としてDESとトリプルDESとをサポートしている。インターネットのセキュリティソケットレイヤ、S/MIMEの電子メール、ワイヤレスアプリケーションプロトコルでこれらの暗号化方式は利用されている。なお、トリプルDESは、DESを暗号化−復号化−暗号化の3回処理を行なったものである。
図45〜図47は、復号化処理の単位について示した概略図である。
図45は、図42の暗号化に対応する復号化を示し、図46は、図43の暗号化に対応する復号化を示し、図47は、図44の暗号化に対応する復号化を示す。
続いて、ScRAMがサポートする秘密鍵暗号の暗号利用モードについて説明する。例として、ECB,CBCの2つのモードについて説明する。
図48、図49は、ECBモードについて説明するための図である。
図48、図49を参照して、ECBモードは基本モードであり、暗号/復号処理基本単位に当たる。暗号化では、通常のデータ(平文)Mを図48に示すように64ビットごとに分解したブロックMi(M=M1、M2、M3…)を送信者と受信者のみが共通に持つ秘密の鍵と呼ばれるデータKを用いて、各ブロックごとに暗号化処理を行なう。そして、64ビットの暗号文Ci(C=C1、C2、C3…)が生成される。復号化では、図49に示すように、65ビットの暗号文Ciを受取り、暗号化に用いたものと同じ鍵データKを用いて、平文Mi(M=M1、M2、M3…)を生成する。
次にCBCモードについて説明する。
図50は、CBCモードの演算を説明するための図である。
図50を参照して、CBCモードでは、まず暗号化は、平文Mを64ビットごとに分解したブロックMiをECBモードと同様に暗号化を行なう。そして、さらに、この暗号文ブロックCiと、次のブロックMi+1との排他的論理和を次の暗号化の入力とする。これを繰返して次々と連鎖させるのである。
一方、復号化は、暗号ブロック文CiをECBモードと同様に復号化した結果をMiとし、Ciを次の暗号文ブロックCi+1の復号結果との排他的論理和をとり、出力平文ブロックMi+1とする。これを繰返して次々と連鎖させるのである。なお、図50において、平文はMi、暗号文はCi(i=1,2,…)、暗号鍵Kを用いた暗号化をEk、復号化をDkとする。
また、IV(イニシャルベクトル)は初期値であり、最初の暗号化と復号化の際に用いられる。IVは、暗号側と復号側とで同一の値を用いる。IVの値は、第三者に知られてもよいので、IVは送信者と受信者との間で秘密に送る必要がない。IVの値を変えると、同じメッセージから異なった暗号文が生成される。
図51は、CBCモードにおける暗号化の概要を示した概念図である。
図52は、CBCモードにおける復号化の概要を示した概念図である。
図51、図52を参照して、ScRAMに一度に入力可能な平文長はレジスタREG1のサイズである4kビットである。したがって、4kビットよりも長い平文を処理する場合には、直前の暗号文ブロックCiが初期値になるように制御レジスタに対して設定を行なう。
本明細書の実施の形態では、SDRAMに本発明を適用した場合を例として示したが、SDRAMに制限されるものではなく、非同期型のDRAM、たとえばEDO(Extended Data Out)DRAM等にも本発明を適用することも可能である。また、同期型の他のDRAM、たとえばDDR(Double Data Rate)型のインタフェースを有するDRAM等であっても本発明を適用することが可能である。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。