以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
図1は、本実施の形態が適用される画像形成システムの構成の一例を示す図である。
この画像形成システムは、スキャン機能、プリント機能、コピー機能およびファクシミリ機能を備えた所謂複合機として動作する画像形成装置1と、画像形成装置1に接続されるネットワーク2と、ネットワーク2に接続される端末装置3と、ネットワーク2に接続されるファクシミリ装置4と、ネットワーク2に接続されるサーバ装置5とを有している。
ここで、ネットワーク2は、インターネット回線や電話回線等によって構成されている。また、端末装置3は、ネットワーク2を介して、画像形成装置1に画像の形成等を指示するものであり、例えばPC(Personal Computer)で構成される。さらに、ファクシミリ装置4は、ネットワーク2を介して、画像形成装置1との間でファクシミリを送受信する。さらにまた、サーバ装置5は、ネットワーク2を介して、画像形成装置1との間でデータ(プログラムを含む)を送受信する。
また、画像形成装置1は、紙等の記録材に記録された画像を読み取る画像読取部10と、紙等の記録材に画像を形成する画像形成部20と、ユーザから電源のオン/オフ、スキャン機能、プリント機能、コピー機能およびファクシミリ機能を用いた動作に関連する指示を受け付けるとともに、ユーザに対してメッセージを表示するユーザインタフェース(UI)30と、ネットワーク2を介して端末装置3、ファクシミリ装置4およびサーバ装置5との間でデータの送受信を行う送受信部40と、これら画像読取部10、画像形成部20、UI30および送受信部40の動作を制御する制御部50とを備えている。そして、この画像形成装置1では、画像読取部10によってスキャン機能が実現され、画像形成部20によってプリント機能が実現され、画像読取部10および画像形成部20によってコピー機能が実現され、画像読取部10、画像形成部20および送受信部40によってファクシミリ機能が実現される。なお、送受信部40は、例えばインターネット回線用のものと電話回線用のものとを、別々に設けるようにしてもかまわない。
図2は、図1に示す画像形成装置1に設けられた制御部50の内部構成の一例を示すブロック図である。
本実施の形態の制御部50は、画像形成装置1の各部の動作を制御する動作制御部51と、画像読取部10および画像形成部20に関連する画像処理を実行する画像処理部52と、動作制御部51および画像処理部52を接続するPCIe(PCI Express)バス53とを備えている。ここで、本実施の形態では、動作制御部51がUI30および送受信部40(実際には画像読取部10および画像形成部20にも)に接続されており、画像処理部52が画像読取部10および画像形成部20に接続されている。
これらのうち、動作制御部51は、種々の演算を実行することによって画像形成装置1の各部を制御するCPU(Central Processing Unit:中央処理装置)511と、CPU−RAM用バス513を介してCPU511に接続されるCPU−DRAM61およびCPU−MRAM62と、CPU−RAM用バス513とCPU−MRAM62とを接続するブリッジ回路514とを備えている。以下の説明においては、CPU511に接続される、CPU−DRAM61およびCPU−MRAM62を、まとめてメインメモリ512と称することがある。
ここで、CPU−DRAM61は、メモリデバイスとしてDRAM(Dynamic RAM)を備えており、電源を供給しないと記憶している情報を保持することができない揮発性メモリとして機能している。一方、CPU−MRAM62は、メモリデバイスとしてMRAM(Magnetoresistive RAM)を備えており、電源を供給しなくても記憶している情報を保持することが可能な不揮発性メモリとして機能している。そして、本実施の形態では、CPU−DRAM61およびCPU−MRAM62が、CPU−RAM用バス513に設定された共通のクロック周波数(メモリクロック:本実施の形態では後述するDDRクロック信号DDRCLK)にてデータの読み書きを行う。したがって、CPU−MRAM62は、CPU−DRAM61と同等の読み書き性能を有していることになる。それゆえ、CPU−MRAM62は、UV−EPROM(Ultra-Violet Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、あるいはフラッシュメモリなどの不揮発性メモリに比べて、より高速にデータの読み書きを行う。なお、本実施の形態のCPU−DRAM61は、4ビットプリフェッチのアーキテクチャを採用したDDR2−SDRAM(Double-Data-Rate2 Synchronous Dynamic Random Access Memory)で構成されている。
また、画像処理部52は、種々の演算を実行することによって、画像読取部10から入力される画像データおよび画像形成部20に出力する画像データに処理を施すASIC(Application Specific Integrated Circuit)521と、ASIC−RAM用バス523を介してASIC521に接続されるメインメモリ522とを備えている。ここで、画像処理部52に設けられるメインメモリ522は、上述したCPU−DRAM61と共通の構成を有する、ASIC−DRAM91を備えている。
さらに、動作制御部51と画像処理部52とを接続するPCIeバス53は、PCI Express規格に準拠した送受信を行うことで、制御部50において、動作制御部51に設けられたCPU511と、画像処理部52に設けられたASIC521とを接続している。この例において、ASIC521は、CPU511からPCIeバス53を介して受けた指示に基づいて、各種画像処理を実行するようになっている。
次に、動作制御部51に設けられたCPU511の内部構成について説明を行う。
実行ユニットの一例としてのCPU511は、プログラムにしたがって種々の演算を実行する実行手段の一例としてのCPUコア71と、CPUコア71とメインメモリ512(CPU−DRAM61およびCPU−MRAM62)との間でのデータの送受信を制御するCPU−RAMコントローラ72と、CPUコア71と外部(例えばASIC521)との間でのデータの送受信を制御するCPU/PCIeインタフェース73とを備えている。また、CPU511は、CPU511の内部において、これらCPUコア71、CPU−RAMコントローラ72およびCPU/PCIeインタフェース73を相互に接続するCPU内部バス74を有している。
ここで、CPU−RAMコントローラ72とメインメモリ512とを接続するCPU−RAM用バス513は2系統設けられており、1系統がCPU−DRAM61に、また、他の1系統がブリッジ回路514を介してCPU−MRAM62に、それぞれ接続されている。そして、CPU−RAMコントローラ72は、CPU−DRAM61とCPU−MRAM62とに対し、それぞれ独立してデータの授受を制御するようになっている。
また、送受信手段の一例としてのCPU−RAMコントローラ72は、DDR2−SDRAMで構成されたCPU−DRAM61との間において、データの授受を行うための機能を備えている。すなわち、CPU−RAMコントローラ72は、DDR2−SDRAMに対応したプロトコル(バースト転送方式、4ビットプリフェッチ、データ・ストローブ信号DQSなどを使用)にて通信を行う。ここで、本実施の形態では、CPU−DRAM61とともにメインメモリ512を構成するCPU−MRAM62として、CPU−DRAM61とは異なるプロトコル(General-Bus(汎用バス)のプロトコル)にてデータの授受を行うものが用いられている。そこで、本実施の形態では、CPU−RAMコントローラ72とCPU−MRAM62との間にプロトコル変換を行うブリッジ回路514を設けることにより、DDR2−SDRAM用に設計されたCPU−RAMコントローラ72を用いて、メインメモリ512すなわちCPU−DRAM61およびCPU−MRAM62の両者に対するデータの読み書きを制御できるようになっている。
続いて、ASIC521の内部構成について説明する。
ASIC521は、プログラムにしたがって種々の演算を実行するASICコア81と、ASICコア81とメインメモリ522(ASIC−DRAM91)との間でのデータの送受信を制御するASIC−RAMコントローラ82と、ASICコア81と外部(例えばCPU511)との間でのデータの送受信を制御するASIC/PCIeインタフェース83とを備えている。また、ASIC521は、ASIC521の内部において、これらASICコア81、ASIC−RAMコントローラ82およびASIC/PCIeインタフェース83を相互に接続するASIC内部バス84を有している。
ここで、ASIC−RAMコントローラ82とメインメモリ522とを接続するASIC−RAM用バス523は1系統設けられており、その1系統がASIC−DRAM91に接続されている。ただし、ASIC−RAMコントローラ82は、CPU−RAMコントローラ72と同じく、さらにもう1系統のASIC−RAM用バス523を接続することが可能であり、その先に、他のメモリ(例えばDDR2−SDRAM)を接続することができるようになっている。
図3は、図2に示す動作制御部51のうち、CPU−RAMコントローラ72〜CPU−DRAM61間、および、CPU−RAMコントローラ72〜ブリッジ回路514〜CPU−MRAM62間、において授受される各種信号および各種データの関係を示す図である。
最初に、CPU−RAMコントローラ72とCPU−DRAM61と間において授受される各種信号および各種データについて説明を行う。
本実施の形態では、CPU−RAMコントローラ72からCPU−DRAM61に対し、データの読み書きの基準となるDDRクロック信号DDRCLKと、バンクを指定するバンク・アドレス信号DDR_BA(D)と、セルのアドレスを指定するアドレス信号DDR_ADDR(D)と、チップを指定するチップ・セレクト信号DDR_CS_N(D)と、ロウ・アドレスを指定するロウ・アドレス・ストローブ信号DDR_RAS_N(D)と、カラム・アドレスを指定するカラム・アドレス・ストローブ信号DDR_CAS_N(D)と、データ書き込みの許可を指定するライト・イネーブル信号DDR_WE_N(D)と、が供給される。
また、本実施の形態では、CPU−RAMコントローラ72からCPU−DRAM61に対しあるいはCPU−DRAM61からCPU−RAMコントローラ72に対し、データの読み書きにおいてデータを取得するタイミングの基準となるデータ・ストローブ信号DQS(復元信号の一例)および読み書きの対象となる入出力データDDR−DQ(D)が供給される。ここで、上述した各種信号および各種データは、DDR2−SDRAMの規格に則ったものとなっており、この例において、入出力データDDR−DQ(D)におけるバースト長は4である。
次に、CPU−RAMコントローラ72とブリッジ回路514との間において授受される各種信号および各種データについて説明を行う。
本実施の形態では、CPU−RAMコントローラ72からブリッジ回路514に対し、データの読み書きの基準となるDDRクロック信号DDRCLKと、バンクを指定するバンク・アドレス信号DDR_BA(M)と、セルのアドレスを指定するアドレス信号DDR_ADDR(M)と、チップを指定するチップ・セレクト信号DDR_CS_N(M)と、ロウ・アドレスを指定するロウ・アドレス・ストローブ信号DDR_RAS_N(M)と、カラム・アドレスを指定するカラム・アドレス・ストローブ信号DDR_CAS_N(M)と、データの書き込みの許可を指定するライト・イネーブル信号DDR_WE_N(M)と、が供給される。これらのうち、DDRクロック信号DDRCLKは、CPU−RAMコントローラ72からCPU−DRAM61に供給されるものと共通であるが、その他の信号は、CPU−RAMコントローラ72からCPU−DRAM61に供給されるものとは異なっている。
また、本実施の形態では、CPU−RAMコントローラ72からブリッジ回路514に対し、データの書き込みにおいてデータを取得するタイミングの基準となるデータ・ストローブ信号DQS(復元信号の一例)が供給される。一方、本実施の形態では、ブリッジ回路514からCPU−RAMコントローラ72に対し、データの読み出しにおいてデータを取得するタイミングの基準となる疑似データ・ストローブ信号Para−DQS(他の復元信号あるいは復元信号の一例)が供給される。なお、疑似データ・ストローブ信号Para−DQSの詳細については後述する。
さらに、本実施の形態では、CPU−RAMコントローラ72からブリッジ回路514に対しあるいはブリッジ回路514からCPU−RAMコントローラ72に対し、読み書きの対象となる入出力データDDR−DQ(M)が供給される。ここで、上述した各種信号(疑似データ・ストローブ信号Para−DQSを含む)および各種データは、DDR2−SDRAMの規格に則ったものとなっており、この例において、入出力データDDR−DQ(M)におけるバースト長は、CPU−DRAM61の入出力データDDR−DQ(D)と同じ4である。
続いて、ブリッジ回路514とCPU−MRAM62との間において授受される各種信号および各種データについて説明を行う。
本実施の形態では、ブリッジ回路514からCPU−MRAM62に対し、バースト長(=4)に対応する4つのアドレスを指定するための第1アドレス信号MRAM_ADDR1、第2アドレス信号MRAM_ADDR2、第3アドレス信号MRAM_ADDR3および第4アドレス信号MRAM_ADDR4と、チップを指定するチップ・セレクト信号MRAM_CS_Nと、データの読み出しの許可を指定するアウトプット・イネーブル信号MRAM_OE_Nと、データの読み書きの許可を指定するバイト・イネーブル信号MRAM_BE_Nと、データの書き込みの許可を指定するライト・イネーブル信号MRAM_WE_Nと、が供給される。
また、本実施の形態では、ブリッジ回路514からCPU−MRAM62に対しあるいはCPU−MRAM62からブリッジ回路514に対し、バースト長(=4)に対応する4つのデータ(第1データMRAM_DATA1、第2データMRAM_DATA2、第3データMRAM_DATA3および第4データMRAM_DATA4)が供給される。
図4は、図3に示すCPU−DRAM61の内部構成の一例を示すブロック図である。
本実施の形態のCPU−DRAM61は、コマンド・デコーダ611と、コントロール・ロジック612と、ロウ・アドレス・バッファ613と、カラム・アドレス・バッファ614と、DRAMチップ615と、データ・コントロール・ロジック616と、DQS生成回路617と、入出力回路618とを備える。
コマンド・デコーダ611は、外部(この例では図3に示すCPU−RAMコントローラ72)から入力されてくるチップ・セレクト信号DDR_CS_N(D)、ロウ・アドレス・ストローブ信号DDR_RAS_N(D)、カラム・アドレス・ストローブ信号DDR_CAS_N(D)およびライト・イネーブル信号DDR_WE_N(D)によるコマンドをデコードする。また、コマンド・デコーダ611は、DDRクロック信号DDRCLKに基づいて動作タイミングの制御を行う。
コントロール・ロジック612は、コマンド・デコーダ611によるデコードの結果に基づき、ロウ・アドレス・バッファ613、カラム・アドレス・バッファ614および入出力回路618を制御する。
ロウ・アドレス・バッファ613は、外部(CPU−RAMコントローラ72)から入力されてくるバンク・アドレス信号DDR_BA(D)およびアドレス信号DDR_ADDR(D)に基づいて決まる、次のデータの読み書きの対象となるロウ・アドレスを一時的に記憶する。
カラム・アドレス・バッファ614は、外部(CPU−RAMコントローラ72)から入力されてくるアドレス信号DDR_ADDR(D)に基づいて決まる、次のデータの読み書きの対象となるカラム・アドレスを一時的に記憶する。
DRAMチップ615は、それぞれが1ビット分の記憶能力を有する多数のDRAMセルにて構成されている。ここで、本実施の形態のDRAMチップ615は、4つのバンク、より具体的には、DRAM第1バンク6151、DRAM第2バンク6152、DRAM第3バンク6153およびDRAM第4バンク6154を備えている。そして、DRAM第1バンク6151、DRAM第2バンク6152、DRAM第3バンク6153およびDRAM第4バンク6154のそれぞれと、ロウ・アドレス・バッファ613およびカラム・アドレス・バッファ614とが接続されている。なお、CPU−DRAM61を構成するDRAMチップ615は、通常、それぞれがパッケージ化された複数個のDRAMデバイスにて構成される。ただし、DRAMチップ615を構成するバンクの数およびDRAMデバイスの数は、必ずしも一致しない。
データ・コントロール・ロジック616は、DRAMチップ615を構成するDRAM第1バンク6151、DRAM第2バンク6152、DRAM第3バンク6153およびDRAM第4バンク6154との間における、データの授受を制御する。より具体的に説明すると、データ・コントロール・ロジック616は、データの読み出し時(READ時)にはDRAMチップ615側からデータを受け取り、データの書き込み時(WRITE時)にはDRAMチップ615側にデータを受け渡す。
DQS生成回路617は、外部(CPU−RAMコントローラ72)から入力されてくるDDRクロック信号DDRCLKに基づき、データ・ストローブ信号DQSを生成し、外部(CPU−RAMコントローラ72)に出力する。
入出力回路618は、データ・コントロール・ロジック616と外部(CPU−RAMコントローラ72)との間における入出力データDDR_DQ(D)の入出力を制御する。より具体的に説明すると、入出力回路618は、例えばREAD時において、データ・コントロール・ロジック616から入力されてくる入出力データDDR_DQ(D)の外部への出力を制御し、例えばWRITE時において、外部から入力されてくる入出力データDDR_DQ(D)のデータ・コントロール・ロジック616への出力を制御する。また、入出力回路618は、外部(CPU−RAMコントローラ72)からデータ・ストローブ信号DQSを受け取る。
なお、詳細については説明を行わないが、図2に示す画像処理部52に設けられるASIC−DRAM91も、CPU−DRAM61と共通の構成を有しており、同じ種別(ただし内容は異なる)の信号が入出力されるようになっている。
図5は、図3に示すブリッジ回路514およびCPU−MRAM62の内部構成の一例を示すブロック図である。
まず、変換ユニットあるいはメモリ制御装置の一例としてのブリッジ回路514は、コマンド変換回路5141と、ロウ・ラッチ回路5142と、カラム・ラッチ回路5143と、アドレス変換回路5144と、疑似DQS生成回路5145と、データ選択回路5146とを備えている。
コマンド変換回路5141は、外部(CPU−RAMコントローラ72)から入力されてくるチップ・セレクト信号DDR_CS_N(M)、ロウ・アドレス・ストローブ信号DDR_RAS_N(M)、カラム・アドレス・ストローブ信号DDR_CAS_N(M)およびライト・イネーブル信号DDR_WE_N(M)によるコマンドを、CPU−MRAM62が動作するコマンドに対応する信号(チップ・セレクト信号MRAM_CS_N 、アウトプット・イネーブル信号MRAM_OE_N 、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_N)に変換する。そして、コマンド変換回路5141は、コマンド変換によって得られたチップ・セレクト信号MRAM_CS_N 、アウトプット・イネーブル信号MRAM_OE_N 、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nを、CPU−MRAM62に向けて出力する。ここで、コマンド変換回路5141に対しては、コマンドを発行するタイミングすなわちこれら各信号のアサート/ネゲートするためのタイミングを調整するために用いられるコマンド制御パラメータの設定がなされる。また、コマンド変換回路5141は、DDRクロック信号DDRCLKに基づいて動作タイミングの制御を行う。
ロウ・ラッチ回路5142は、外部(CPU−RAMコントローラ72)から入力されてくるバンク・アドレス信号DDR_BA(M)およびアドレス信号DDR_ADDR(M)に基づいて決まる、次のデータの読み書きの対象となるロウ・アドレスを一時的に保持する。
カラム・ラッチ回路5143は、外部(CPU−RAMコントローラ72)から入力されてくるアドレス信号DDR_ADDR(M)に基づいて決まる、次のデータの読み書きの対象となるロウ・アドレスを一時的に保持する。
ここで、ロウ・ラッチ回路5142の機能は、基本的に上述したロウ・アドレス・バッファ613と同じであり、カラム・ラッチ回路5143の機能は、基本的に上述したカラム・アドレス・バッファ614と同じである。したがって、ロウ・ラッチ回路5142およびカラム・ラッチ回路5143には、DDR2−SDRAMのプロトコルに対応したロウ・アドレスおよびカラム・アドレスが記憶されることになる。
アドレス変換回路5144は、次のデータの読み書きの対象となる、ロウ・ラッチ回路5142に保持されたロウ・アドレスと、カラム・ラッチ回路5143に保持されたカラム・アドレスとに基づき、CPU−MRAM62に対応したアドレスへの変換を行う。より具体的に説明すると、アドレス変換回路5144は、1組のロウ・アドレスおよびカラム・アドレスの組み合わせに基づき、4つのアドレス信号(第1アドレス信号MRAM_ADDR1、第2アドレス信号MRAM_ADDR2、第3アドレス信号MRAM_ADDR3および第4アドレス信号MRAM_ADDR4)を作成し、CPU−MRAM62に向けて出力する。ここで、アドレス変換回路5144に対しては、入出力データDDR_DQ(M)のバースト長や、CPU−MRAM62の容量やバスのデータ幅に対応したアドレス変換を行うためのアドレス制御パラメータの設定がなされる。
本実施の形態のCPU−MRAM62は、CPU−DRAM61におけるバースト長(=4)と同じ数の第1MRAM621〜第4MRAM624によって構成されており、第1アドレス信号MRAM_ADDR1は第1MRAM621に、第2アドレス信号MRAM_ADDR2は第2MRAM622に、第3アドレス信号MRAM_ADDR3は第3MRAM623に、第4アドレス信号MRAM_ADDR4は第4MRAM624に、それぞれ供給されるようになっている。なお、CPU−MRAM62の詳細な構成については後述する。
作成手段の一例としての疑似DQS生成回路5145は、外部(CPU−RAMコントローラ72)から入力されてくるDDRクロック信号DDRCLKに基づき、疑似データ・ストローブ信号Para−DQSを生成し、外部(CPU−RAMコントローラ72)に出力する。ここで、疑似DQS生成回路5145に対しては、配線長に起因する配線遅延に応じて疑似データ・ストローブ信号Para−DQSの出力タイミングの調整を行うための疑似DQS制御パラメータの設定がなされる。
また、疑似DQS生成回路5145は、内部で生成した疑似データ・ストローブ信号Para−DQSの位相をπ/2(90°)だけ遅れさせたデータ切替信号CHGを、データ選択回路5146に向けて出力する。
取得手段、変換手段および出力手段の一例としてのデータ選択回路5146は、CPU−MRAM62との間におけるデータの授受、および、外部(CPU−RAMコントローラ72)との間におけるデータの授受を制御する。より具体的に説明すると、データ選択回路5146は、データのREAD時にはCPU−MRAM62側からデータを受け取って外部に受け渡し、データのWRITE時には外部からデータを受け取ってCPU−MRAM62に受け渡す。
ここで、データ選択回路5146は、CPU−MRAM62を構成する第1MRAM621〜第4MRAM624のそれぞれとの間で、第1データMRAM_DATA1、第2データMRAM_DATA2、第3データMRAM_DATA3および第4データMRAM_DATA4を授受し、外部(CPU−RAMコントローラ72)との間で入出力データDDR_DQ(M)を授受する。なお、この例においては、第1MRAM621との間で第1データMRAM_DATA1を授受し、第2MRAM622との間で第2データMRAM_DATA2を授受し、第3MRAM623との間で第3データMRAM_DATA3を授受し、第4MRAM624との間で第4データMRAM_DATA4を授受する。
そして、CPU−MRAM62から読み出した第1データMRAM_DATA1〜第4データMRAM_DATA4を外部に受け渡す際、データ選択回路5146は、疑似DQS生成回路5145より入力されてくるデータ切替信号CHGに基づいて、第1データMRAM_DATA1〜第4データMRAM_DATA4を順次選択することで、入出力データDDR_DQ(M)を作成する。
一方、外部から入力されてくる入出力データDDR_DQ(M)をCPU−MRAM62に受け渡す際、データ選択回路5146は、入出力データDDR_DQ(M)とともに外部(CPU−RAMコントローラ72)から入力されてくるデータ・ストローブ信号DQSに基づいて、入出力データDDR_DQ(M)を順次ラッチすることで、第1データMRAM_DATA1〜第4データMRAM_DATA4を作成する。
また、本実施の形態のCPU−MRAM62は、それぞれが独立した4つのMRAM(第1MRAM621、第2MRAM622、第3MRAM623、第4MRAM624)を備えている。ここで、第1MRAM621には、ブリッジ回路514に設けられたアドレス変換回路5144から第1アドレス信号MRAM_ADDR1が入力され、且つ、第1MRAM621は、ブリッジ回路514に設けられたデータ選択回路5146との間で、第1データMRAM_DATA1を授受する。また、第2MRAM622には、ブリッジ回路514に設けられたアドレス変換回路5144から第2アドレス信号MRAM_ADDR2が入力され、且つ、第2MRAM622は、ブリッジ回路514に設けられたデータ選択回路5146との間で、第2データMRAM_DATA2を授受する。さらに、第3MRAM623には、ブリッジ回路514に設けられたアドレス変換回路5144から第3アドレス信号MRAM_ADDR3が入力され、且つ、第3MRAM623は、ブリッジ回路514に設けられたデータ選択回路5146との間で、第3データMRAM_DATA3を授受する。さらにまた、第4MRAM624には、ブリッジ回路514に設けられたアドレス変換回路5144から第4アドレス信号MRAM_ADDR4が入力され、且つ、第4MRAM624は、ブリッジ回路514に設けられたデータ選択回路5146との間で、第4データMRAM_DATA4を授受する。
なお、本実施の形態では、第1MRAM621、第2MRAM622、第3MRAM623、第4MRAM624が、n(この例ではn=4)個の不揮発性メモリユニットあるいはn個のメモリ装置として機能している。
図6は、図5に示すCPU−MRAM62を構成する第1MRAM621〜第4MRAM624のそれぞれに設けられたMRAMモジュール620の内部構成を示すブロック図である。
本実施の形態のMRAMモジュール620は、それぞれが1ビット分の記憶能力を有する多数のMRAMセルにて構成されたMRAMセル群6201と、外部(この例では図2に示すブリッジ回路514)とMRAMセル群6201との間で、各種信号および各種データの入出力を制御するMRAM内部コントローラ6202とを備えている。
本実施の形態のMRAMモジュール620において、MRAM内部コントローラ6202には、アドレス信号MRAM_ADDR(第1アドレス信号MRAM_ADDR1〜第4アドレス信号MRAM_ADDR4に対応)と、チップ・セレクト信号MRAM_CS_Nと、アウトプット・イネーブル信号MRAM_OE_Nと、バイト・イネーブル信号MRAM_BE_Nと、ライト・イネーブル信号MRAM_WE_Nと、が入力される。また、MRAM内部コントローラ6202は、外部との間で、データMRAM_DATA(第1データMRAM_DATA1〜第4データMRAM_DATA4に対応)が入出力される。このように、本実施の形態のMRAMモジュール620との間でデータを送受信する際に、データ・ストローブ信号DQSは不要である。
図7は、本実施の形態におけるCPU−DRAM61とCPU−MRAM62との関係を説明するための図である。ここで、図7(a)はCPU−DRAM61におけるDRAMチップ615の構成の一例を示している。また、図7(b)は、図7(a)に示すCPU−DRAM61に対応するCPU−MRAM62の構成の一例を示しており、図7(c)は、図7(a)に示すCPU−DRAM61に対応するCPU−MRAM62の他の構成の一例を示している。
本実施の形態のCPU−DRAM61におけるDRAM第1バンク6151〜DRAM第4バンク6154は、例えば図7(a)に示すように、それぞれ32ビット(bit)のデータ幅にてデータを読み書きできるように構成されている。この場合、データ・コントロール・ロジック616においても、32ビットのデータ幅にてデータの授受が行われる。
これに対し、図7(b)に示すCPU−MRAM62では、第1MRAM621〜第4MRAM624のそれぞれが、32ビットのデータ幅を有する1つのMRAMモジュール620で構成されている。この場合、データ選択回路5146においても、32ビットのデータ幅にてデータの授受が行われる。
一方、図7(c)に示すCPU−MRAM62では、第1MRAM621〜第4MRAM624のそれぞれが、16ビットのデータ幅を有するMRAMモジュール620を、2つ並列に並べて配置することで構成されている。その結果、第1MRAM621〜第4MRAM624のそれぞれにおけるデータの授受が、32ビットのデータ幅にて実現できるようになっている。この場合、データ選択回路5146においても、32ビットのデータ幅にてデータの授受が行われることになる。
なお、CPU−MRAM62におけるMRAMモジュール620の構成(データ幅等)の違いについては、アドレス制御パラメータ(図5参照)によって調整することが可能である。
図8は、本実施の形態のCPU511がアクセス可能なメモリマップの構成の一例を説明するための図である。動作制御部51に設けられたCPU511(図2参照)は、このメモリマップに基づいて、メインメモリ512に対するデータの読み書きを行う。
図8に示すメモリマップにおいて、メインメモリ512全体としての記憶領域A0は、基本的にROM(Read Only Memory)として使用されるROM領域A1と、基本的にRAM(Random Access Memory)として使用されるRAM領域A2とを含んでいる。本実施の形態において、ROM領域A1はCPU−MRAM62に配置されており、RAM領域A2はCPU−DRAM61とCPU−MRAM62とに跨って配置されている。
これらのうち、ROM領域A1は、リセットベクタ格納領域A11と、プログラム格納領域A12とを有している。リセットベクタ格納領域A11は、画像形成装置1を起動するにあたり、動作制御部51においてCPU511(図2参照)が実行するプログラムである、IPL(IPL:Initial Program Loader)を格納する。また、プログラム格納領域A12は、起動処理の完了後に、CPU511が実行するプログラムファイルを格納する。
一方、RAM領域A2は、CPU−MRAM62側に配置される第1RAM領域A21と、CPU−DRAM61側に配置される第2RAM領域A22とを有している。RAM領域A2を構成する第1RAM領域A21および第2RAM領域A22は、CPU511によるプログラムの実行に伴って発生するデータや、CPU511による処理に伴って、画像形成装置1の各構成要素に対して出力される指示に関するデータなどを、一時的に格納する作業領域として用いられる。このように、本実施の形態では、記憶方式が異なる2つのメモリ(CPU−MRAM62の一部の領域およびCPU−DRAM61のすべての領域)によってRAM領域A2が構成されている。そして、CPU511は、CPU−MRAM62側に配置される第1RAM領域A21およびCPU−DRAM61側に配置される第2RAM領域A22を、一まとまりのRAM領域A2として扱う。
上述したように、本実施の形態では、IPLおよびプログラムファイルが、画像形成装置1の電源を切っても記憶内容が消去されないROM領域A1(CPU−MRAM62)に格納されている。また、本実施の形態では、画像形成装置1の電源を入れたときに、CPUコア71がCPU−RAMコントローラ72を介して、CPU−MRAM62を含むメインメモリ512に直ちにアクセスすることが可能である。このため、画像形成装置1の電源を入れたときに、ROM(Read Only Memory)からIPLを読み出して実行したり、IPLの実行後にROMからプログラムファイルを読み出してメインメモリ512に展開したりする必要がなくなる分、画像形成装置1の起動がより高速に行えるようになっている。
では、メインメモリ512(CPU−DRAM61およびCPU−MRAM62)におけるデータの読み書き動作を説明する前に、CPU−MRAM62を構成するMRAMモジュール620(図6参照)単体による、データの読み書き(READ/WRITE)動作について、ここで説明を行っておく。
図9は、READ時におけるMRAMモジュール620の動作を説明するためのタイミングチャートであり、図10は、WRITE時におけるMRAMモジュール620の動作を説明するためのタイミングチャートである。
まず、図9を参照しつつ、READ時におけるMRAMモジュール620の動作を説明する。なお、初期状態において、アドレス信号MRAM_ADDRは入力されておらず、データMRAM_DATAは出力されていない。また、初期状態において、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_N、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nは、すべてネゲートに設定されている。
アドレス信号MRAM_ADDRの入力が開始されると、アドレス信号MRAM_ADDRの入力開始に連動して、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_Nおよびバイト・イネーブル信号MRAM_BE_Nが、ネゲートからアサートに移行する。これに伴い、アドレス信号MRAM_ADDRで指定された対象アドレスから、1ビット分のデータの読み出しが開始される。ただし、読み出されたデータは、直ちに出力されるのではなく、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_Nおよびバイト・イネーブル信号MRAM_BE_Nが、ネゲートからアサートに移行した後、予め決められた時間が経過した後に、データMRAM_DATAとしての出力(読み出し)が開始される。
そして、データMRAM_DATAの出力が完了した後、アドレス信号MRAM_ADDRの入力が終了され、アドレス信号MRAM_ADDRの入力終了に連動して、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_Nおよびバイト・イネーブル信号MRAM_BE_Nが、アサートからネゲートに移行する。
以上により、1ビット分のデータの読み出しが完了する。なお、READ時において、ライト・イネーブル信号MRAM_WE_Nはネゲートされたままである。
続いて、図10を参照しつつ、WRITE時におけるMRAMモジュール620の動作を説明する。なお、初期状態において、アドレス信号MRAM_ADDRは入力されておらず、データMRAM_DATAも入力されていない。また、初期状態において、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_N、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nは、すべてネゲートに設定されている。
アドレス信号MRAM_ADDRの入力が開始されると、アドレス信号MRAM_ADDRの入力開始に連動して、チップ・セレクト信号MRAM_CS_Nが、ネゲートからアサートに移行する。また、アドレス信号MRAM_ADDRの入力開始から予め決められた時間が経過した後、データMRAM_DATAの入力が開始される。
そして、チップ・セレクト信号MRAM_CS_Nがアサートされてから予め決められた時間が経過した後であってデータMRAM_DATAの入力が開始された後、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nが、ネゲートからアサートに移行する。これに伴い、アドレス信号MRAM_ADDRで指定された対象アドレスに対する、1ビット分のデータの書き込みが開始される。
そして、1ビット分のデータの書き込みが完了した後、データMRAM_DATAの入力が終了され、続いて、アドレス信号MRAM_ADDRの入力が終了される。次いで、アドレス信号MRAM_ADDRの入力終了に連動して、チップ・セレクト信号MRAM_CS_N、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nが、アサートからネゲートに移行する。
以上により、1ビット分のデータの書き込みが完了する。なお、WRITE時において、アウトプット・イネーブル信号MRAM_OE_Nはネゲートされたままである。
このように、本実施の形態で用いたMRAMモジュール620は、1つのアドレス情報をもとに1ビットのデータ(シングルデータ)の転送(読み書き)が可能(シングル転送と呼ぶ)な構成を有している。これを逆の観点からみれば、このMRAMモジュール620は、単体では、1つのアドレス情報をもとに複数ビットのデータの転送(読み書き)が可能(バースト転送と呼ぶ)な構成を有していないことになる。
次に、動作制御部51のメインメモリ512(CPU−DRAM61およびCPU−MRAM62)による、データの読み書き(READ/WRITE)動作について説明を行う。ここでは、まず、CPU−DRAM61の動作を説明し、続いて、CPU−MRAM62の動作を説明する。
図11は、READ時におけるCPU−DRAM61の動作を説明するためのタイミングチャートであり、図12は、WRITE時におけるCPU−DRAM61の動作を説明するためのタイミングチャートである。なお、以下の説明においては、DDRクロック信号DDRCLKが立ち上がってから次に立ち上がるまでの期間を、『1周期』と呼ぶ。また、DDRクロック信号DDRCLKが立ち上がってから次に立ち下がるまでの期間、および、DDRクロック信号DDRCLKが立ち下がってから次に立ち上がるまでの期間を、それぞれ『半周期』と呼ぶ。この例において、アクティブ・コマンド発行後にリード・コマンドまたはライト・コマンドを発行可能となるまでの期間は3周期分(RCD(Row-to-Column Delay)=3)であり、リード・コマンドの発行からデータ出力までの期間は5周期分(CL(CAS Latency)=5)であり、ライト・コマンドの発行からデータ入力までの期間は5周期分(CWL(CAS Write Latency)=5)である。
まず、図11を参照しつつ、READ時におけるCPU−DRAM61の動作を説明する。なお、初期状態において、バンク・アドレス信号DDR_BA(D)、アドレス信号DDR_ADDR(D)は入力されておらず、入出力データDDR_DQ(D)は出力されていない。また、初期状態において、チップ・セレクト信号DDR_CS_N(D)、ロウ・アドレス・ストローブ信号DDR_RAS_N(D)、カラム・アドレス・ストローブ信号DDR_CAS_N(D)およびライト・イネーブル信号DDR_WE_N(D)は、すべてネゲートに設定されている。さらに、初期状態において、データ・ストローブ信号DQSはハイ・インピーダンス(Hi−Z)に設定されている。
DDRクロック信号DDRCLKの立ち上がりタイミングに同期して、バンク・アドレス信号DDR_BA(D)およびアドレス信号DDR_ADDR(D)の入力が開始されると、1周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、チップ・セレクト信号DDR_CS_N(D)およびロウ・アドレス・ストローブ信号DDR_RAS_N(D)が、1周期だけアサートからネゲートに移行する(アクティブ・コマンドの発行)。それから、2周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、今度は、チップ・セレクト信号DDR_CS_N(D)およびカラム・アドレス・ストローブ信号DDR_CAS_N(D)が1周期だけアサートからネゲートに移行する(リード・コマンドの発行)。チップ・セレクト信号DDR_CS_N(D)およびカラム・アドレス・ストローブ信号DDR_CAS_N(D)がネゲートに移行するのに伴い、バンク・アドレス信号DDR_BA(D)およびアドレス信号DDR_ADDR(D)の入力が終了する。
チップ・セレクト信号DDR_CS_N(D)およびカラム・アドレス・ストローブ信号DDR_CAS_N(D)がネゲートからアサートに移行してから、4周期半後のDDRクロック信号DDRCLKの立ち下がりタイミングよりも後であって、5周期後のDDRクロック信号DDRCLKの立ち上がりタイミングよりも前に、入出力データDDR_DQ(D)として、4つのデータ(図中には(1)〜(4)で示す)が連続して出力されてくる。
一方、チップ・セレクト信号DDR_CS_N(D)およびカラム・アドレス・ストローブ信号DDR_CAS_N(D)がネゲートからアサートに移行してから、4周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、データ・ストローブ信号DQSが1周期だけハイ・インピーダンス(Hi−Z)からローレベル(L)に移行する。その後、データ・ストローブ信号DQSは、次の半周期ではハイレベル(H)に、その次の半周期ではローレベル(L)に、さらに次の半周期ではハイレベル(H)に、これに続く半周期ではローレベル(L)に順次移行し、再びハイ・インピーダンス(Hi−Z)に移行する。したがって、データ・ストローブ信号DQSは、チップ・セレクト信号DDR_CS_N(D)およびカラム・アドレス・ストローブ信号DDR_CAS_N(D)がネゲートからアサートに移行した5周期後(CL=5)から2周期にわたって、ハイレベル(H)とローレベル(L)とを交互に2回ずつ繰り返すことになる。
ここで、本実施の形態では、入出力データDDR_DQ(D)における1つ目のデータ(1)の出力期間中に、データ・ストローブ信号DQSにおける1回目のローレベル(L)からハイレベル(H)への移行タイミングが存在し、入出力データDDR_DQ(D)における2つ目のデータ(2)の出力期間中に、データ・ストローブ信号DQSにおける1回目のハイレベル(H)からローレベル(L)への移行タイミングが存在し、入出力データDDR_DQ(D)における3つ目のデータ(3)の出力期間中に、データ・ストローブ信号DQSにおける2回目のローレベル(L)からハイレベル(H)への移行タイミングが存在し、入出力データDDR_DQ(D)における4つ目のデータ(4)の出力期間中に、データ・ストローブ信号DQSにおける2回目のハイレベル(H)からローレベル(L)への移行タイミングが存在することになる。そして、データ・ストローブ信号DQSと入出力データDDR_DQ(D)とが、CPU−DRAM61からCPU−RAMコントローラ72に向けて送られることにより、一度のコマンドに基づく4ビット分のデータの読み出しが完了する。なお、READ時において、ライト・イネーブル信号DDR_WE_N(D)はネゲートされたままである。
続いて、図12を参照しつつ、WRITE時におけるCPU−DRAM61の動作を説明する。なお、初期状態において、バンク・アドレス信号DDR_BA(D)、アドレス信号DDR_ADDR(D)は入力されておらず、入出力データDDR_DQ(D)も入力されていない。また、初期状態において、チップ・セレクト信号DDR_CS_N(D)、ロウ・アドレス・ストローブ信号DDR_RAS_N(D)、カラム・アドレス・ストローブ信号DDR_CAS_N(D)およびライト・イネーブル信号DDR_WE_N(D)は、すべてネゲートに設定されている。さらに、初期状態において、データ・ストローブ信号DQSはハイ・インピーダンス(Hi−Z)に設定されている。
DDRクロック信号DDRCLKの立ち上がりタイミングに同期して、バンク・アドレス信号DDR_BA(D)およびアドレス信号DDR_ADDR(D)の入力が開始されると、1周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、チップ・セレクト信号DDR_CS_N(D)およびロウ・アドレス・ストローブ信号DDR_RAS_N(D)が1周期だけアサートからネゲートに移行する(アクティブ・コマンドの発行)。それから、2周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、今度は、チップ・セレクト信号DDR_CS_N(D)、カラム・アドレス・ストローブ信号DDR_CAS_N(D)およびライト・イネーブル信号DDR_WE_N(D)が、1周期だけアサートからネゲートに移行する(ライト・コマンドの発行)。このとき、ロウ・アドレス・ストローブ信号DDR_RAS_N(D)はネゲートされたままである。チップ・セレクト信号DDR_CS_N(D)、カラム・アドレス・ストローブ信号DDR_CAS_N(D)およびライト・イネーブル信号DDR_WE_N(D)がネゲートに移行するのに伴い、バンク・アドレス信号DDR_BA(D)およびアドレス信号DDR_ADDR(D)の入力が終了する。
チップ・セレクト信号DDR_CS_N(D)、カラム・アドレス・ストローブ信号DDR_CAS_N(D)およびライト・イネーブル信号DDR_WE_N(D)がネゲートからアサートに移行してから、4周期半後のDDRクロック信号DDRCLKの立ち下がりタイミングよりも後であって、5周期後のDDRクロック信号DDRCLKの立ち上がりタイミングよりも前に、入出力データDDR_DQ(D)として、4つのデータ(図中には(1)〜(4)で示す)が連続して入力されてくる。
一方、チップ・セレクト信号DDR_CS_N(D)、カラム・アドレス・ストローブ信号DDR_CAS_N(D)およびライト・イネーブル信号DDR_WE_N(D)がネゲートからアサートに移行してから、4周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、データ・ストローブ信号DQSが1周期だけハイ・インピーダンス(Hi−Z)からローレベル(L)に移行する。その後、データ・ストローブ信号DQSは、次の半周期ではハイレベル(H)に、その次の半周期ではローレベル(L)に、さらに次の半周期ではハイレベル(H)に、これに続く半周期ではローレベル(L)に順次移行し、再びハイ・インピーダンス(Hi−Z)に移行する。したがって、データ・ストローブ信号DQSは、チップ・セレクト信号DDR_CS_N(D)およびカラム・アドレス・ストローブ信号DDR_CAS_N(D)がネゲートからアサートに移行した5周期後(CWL=5)から2周期にわたって、ハイレベル(H)とローレベル(L)とを交互に2回ずつ繰り返すことになる。
ここで、本実施の形態では、入出力データDDR_DQ(D)における1つ目のデータ(1)の入力期間中に、データ・ストローブ信号DQSにおける1回目のローレベル(L)からハイレベル(H)への移行タイミングが存在し、入出力データDDR_DQ(D)における2つ目のデータ(2)の入力期間中に、データ・ストローブ信号DQSにおける1回目のハイレベル(H)からローレベル(L)への移行タイミングが存在し、入出力データDDR_DQ(D)における3つ目のデータ(3)の入力期間中に、データ・ストローブ信号DQSにおける2回目のローレベル(L)からハイレベル(H)への移行タイミングが存在し、入出力データDDR_DQ(D)における4つ目のデータ(4)の入力期間中に、データ・ストローブ信号DQSにおける2回目のハイレベル(H)からローレベル(L)への移行タイミングが存在することになる。
そして、CPU−RAMコントローラ72からCPU−DRAM61に向けて送られたデータ・ストローブ信号DQSと入出力データDDR_DQ(D)とに基づいて、4つのデータが書き込まれることで、一度のコマンドに基づく4ビット分のデータの書き込みが完了する。
このように、本実施の形態で用いたCPU−DRAM61は、1つのアドレス情報をもとに複数ビット(この例では4ビット)のデータの転送すなわちバースト転送が可能な構成を有している。
図13は、READ時におけるCPU−MRAM62の動作を説明するためのタイミングチャートであり、図14は、WRITE時におけるCPU−MRAM62の動作を説明するためのタイミングチャートである。
まず、図13を参照しつつ、READ時におけるCPU−MRAM62の動作を説明する。なお、初期状態において、バンク・アドレス信号DDR_BA(M)、アドレス信号DDR_ADDR(M)は入力されておらず、入出力データDDR_DQ(M)は出力されていない。また、初期状態において、チップ・セレクト信号DDR_CS_N(M)、ロウ・アドレス・ストローブ信号DDR_RAS_N(M)、カラム・アドレス・ストローブ信号DDR_CAS_N(M)およびライト・イネーブル信号DDR_WE_N(M)は、すべてネゲートに設定されている。さらに、初期状態において、疑似データ・ストローブ信号Para−DQSはハイ・インピーダンス(Hi−Z)に設定されている。
一方、初期状態において、第1アドレス信号MRAM_ADDR1〜第4アドレス信号MRAM_ADDR4は入力されておらず、第1データMRAM_DATA1〜第4データMRAM_DATA4は出力されていない。また、初期状態において、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_N、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nは、すべてネゲートに設定されている。
DDRクロック信号DDRCLKの立ち上がりタイミングに同期して、バンク・アドレス信号DDR_BA(M)およびアドレス信号DDR_ADDR(M)の入力が開始されると、1周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、チップ・セレクト信号DDR_CS_N(M)およびロウ・アドレス・ストローブ信号DDR_RAS_N(M)が、1周期だけアサートからネゲートに移行する(アクティブ・コマンドの発行)。それから、2周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、今度は、チップ・セレクト信号DDR_CS_N(M)およびカラム・アドレス・ストローブ信号DDR_CAS_N(M)が1周期だけアサートからネゲートに移行する(リード・コマンドの発行)。そして、チップ・セレクト信号DDR_CS_N(M)およびカラム・アドレス・ストローブ信号DDR_CAS_N(M)がネゲートに移行するのに伴い、バンク・アドレス信号DDR_BA(M)およびアドレス信号DDR_ADDR(M)の入力が終了する。
チップ・セレクト信号DDR_CS_N(M)およびロウ・アドレス・ストローブ信号DDR_RAS_N(M)がネゲートからアサートに移行するタイミングにて、ブリッジ回路514に設けられたロウ・ラッチ回路5142が、バンク・アドレス信号DDR_BA(M)およびアドレス信号DDR_ADDR(M)に基づいてロウ・アドレスをラッチする。続いて、その3周期後(RCD=3)に、チップ・セレクト信号DDR_CS_N(M)およびカラム・アドレス・ストローブ信号DDR_CAS_N(M)がネゲートからアサートに移行するタイミングにて、ブリッジ回路514に設けられたカラム・ラッチ回路5143が、アドレス信号にDDR_ADDR(M)に基づいてカラム・アドレスをラッチする。
そして、ロウ・アドレスとカラム・アドレスとがラッチされることに伴い、ブリッジ回路514に設けられたアドレス変換回路5144は、ラッチしたロウ・アドレスおよびカラム・アドレスの両者に基づいて、第1アドレス信号MRAM_ADDR1〜第4アドレス信号MRAM_ADDR4への変換を行う。続いて、アドレス変換回路5144は、得られた第1アドレス信号MRAM_ADDR1〜第4アドレス信号MRAM_ADDR4を、CPU−MRAM62を構成する第1MRAM621〜第4MRAM624に出力する。
一方、ブリッジ回路514に設けられたコマンド変換回路5141が、リード・コマンドに基づくコマンド変換を行い、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_Nおよびバイト・イネーブル信号MRAM_BE_Nを、ネゲートからアサートに移行させる。
これに伴い、例えば第1MRAM621では、第1アドレス信号MRAM_ADDR1で指定された対象アドレスから、1ビット分のデータの読み出しが開始される。ただし、読み出されたデータは、直ちに出力されるのではなく、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_Nおよびバイト・イネーブル信号MRAM_BE_Nが、ネゲートからアサートに移行した後、予め決められた時間が経過した後に、第1データMRAM_DATA1としての出力(読み出し)が開始される。この例では、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_Nおよびバイト・イネーブル信号MRAM_BE_Nがアサートからネゲートに移行してから、4周期半後のDDRクロック信号DDRCLKの立ち下がりタイミングよりも後であって、5周期後のDDRクロック信号DDRCLKの立ち上がりタイミングよりも前に、第1データMRAM_DATA1が出力され始める。
なお、ここでは、第1MRAM621を例として説明を行ったが、他の第2MRAM622〜第4MRAM624のそれぞれにおいても、同じ手順によって第2データMRAM_DATA2〜第4データMRAM_DATA4が出力され始める。したがって、第1データMRAM_DATA1〜第4データMRAM_DATA4は、同期して出力され始めることになる。
一方、ブリッジ回路514に設けられた疑似DQS生成回路5145では、次のようにして疑似データ・ストローブ信号Para−DQSの生成を行う。まず、チップ・セレクト信号DDR_CS_N(M)およびカラム・アドレス・ストローブ信号DDR_CAS_N(M)がネゲートからアサートに移行してから、4周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、疑似データ・ストローブ信号Para−DQSを1周期だけハイ・インピーダンス(Hi−Z)からローレベル(L)に移行させる。その後、疑似DQS生成回路5145は、疑似データ・ストローブ信号Para−DQSを、次の半周期ではハイレベル(H)に、その次の半周期ではローレベル(L)に、さらに次の半周期ではハイレベル(H)に、これに続く半周期ではローレベル(L)に順次移行させ、再びハイ・インピーダンス(Hi−Z)に移行させる。したがって、疑似データ・ストローブ信号Para−DQSは、チップ・セレクト信号DDR_CS_N(M)およびカラム・アドレス・ストローブ信号DDR_CAS_N(M)がネゲートからアサートに移行した5周期後(CL=5)から2周期にわたって、ハイレベル(H)とローレベル(L)とを交互に2回ずつ繰り返すことになる。
また、疑似DQS生成回路5145では、上述した疑似データ・ストローブ信号Para−DQSの位相を90°だけ遅らせたデータ切替信号CHGを作成し、データ選択回路5146へと送る。そして、データ選択回路5146は、第1MRAM621〜第4MRAM624から並列に出力されてくる第1データMRAM_DATA1〜第4データMRAM_DATA4を、データ切替信号CHGの立ち上がりタイミングおよび立ち下がりタイミングに合わせて、順番に切り替えながら取得することにより、入出力データDDR_DQ(M)として、連続する4つのデータ(図中には(1)〜(4)で示す)を含んだものを出力する。
そして、第1データMRAM_DATA1〜第4データMRAM_DATA4の出力が完了した後、第1アドレス信号MRAM_ADDR1〜第4アドレス信号MRAM_ADDR4の入力が終了し、これに連動して、コマンド変換回路5141が、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_Nおよびバイト・イネーブル信号MRAM_BE_Nを、アサートからネゲートに移行させる。また、このとき、ロウ・ラッチ回路5142によるロウ・アドレスの保持およびカラム・ラッチ回路5143によるカラム・アドレスの保持も終了する。
ここで、本実施の形態では、入出力データDDR_DQ(M)における1つ目のデータ(1)の出力期間中に、疑似データ・ストローブ信号Para−DQSにおける1回目のローレベル(L)からハイレベル(H)への移行タイミングが存在し、入出力データDDR_DQ(M)における2つ目のデータ(2)の出力期間中に、疑似データ・ストローブ信号Para−DQSにおける1回目のハイレベル(H)からローレベル(L)への移行タイミングが存在し、入出力データDDR_DQ(M)における3つ目のデータ(3)の出力期間中に、疑似データ・ストローブ信号Para−DQSにおける2回目のローレベル(L)からハイレベル(H)への移行タイミングが存在し、入出力データDDR_DQ(M)における4つ目のデータ(4)の出力期間中に、疑似データ・ストローブ信号Para−DQSにおける2回目のハイレベル(H)からローレベル(L)への移行タイミングが存在することになる。そして、疑似データ・ストローブ信号Para−DQSと入出力データDDR_DQ(M)とが、ブリッジ回路514からCPU−RAMコントローラ72に向けて送られることにより、一度のコマンドに基づく4ビット分のデータの読み出しが完了する。なお、READ時において、ライト・イネーブル信号DDR_WE_N(M)はネゲートされたままである。
本実施の形態において、CPU−MRAM62を構成するMRAMモジュール620は、上述したようにシングル転送のみが可能であり、バースト転送はできない構成となっている。これに対し、本実施の形態では、バースト長と同数となる4つのMRAM(第1MRAM621〜第4MRAM624)でCPU−MRAM62を構成するとともに、ブリッジ回路514において、第1MRAM621〜第4MRAM624から送られてくる4つの1ビットのデータ(第1データMRAM_DATA1〜第4データMRAM_DATA4)を、データ切替信号CHGを用いて4ビット分のシリアルデータである入出力データDDR_DQ(M)に変換するようにした。また、ブリッジ回路514において、DDR2−SDRAMのプロトコルにおいて用いられるデータ・ストローブ信号DQSに対応する疑似データ・ストローブ信号Para−DQSを作成し、得られた疑似データ・ストローブ信号Para−DQSを、入出力データDDR_DQ(M)とともにCPU−RAMコントローラ72に出力するようにした。ここで、本実施の形態では、疑似データ・ストローブ信号Para−DQSの位相をπ/2だけ遅れさせることでデータ切替信号CHGを作成しているため、入出力データDDR_DQ(M)と疑似データ・ストローブ信号Para−DQSとの時間的な関係が、CPU−DRAM61における入出力データDDR_DQ(D)とデータ・ストローブ信号DQSとの時間的な関係に近づくことになる。したがって、CPU−RAMコントローラ72では、CPU−DRAM61から入力されてくる入出力データDDR_DQ(D)を、データ・ストローブ信号DQSに基づいて解釈する(4つのデータを取り込む)ことができるとともに、CPU−MRAM62から入力されてくる入出力データDDR_DQ(M)を、疑似データ・ストローブ信号Para−DQSに基づいて解釈する(4つのデータを取り込む)ことが可能になる。
続いて、図14を参照しつつ、WRITE時におけるCPU−MRAM62の動作を説明する。なお、初期状態において、バンク・アドレス信号DDR_BA(M)、アドレス信号DDR_ADDR(M)は入力されておらず、入出力データDDR_DQ(M)も入力されていない。また、初期状態において、チップ・セレクト信号DDR_CS_N(M)、ロウ・アドレス・ストローブ信号DDR_RAS_N(M)、カラム・アドレス・ストローブ信号DDR_CAS_N(M)およびライト・イネーブル信号DDR_WE_N(M)は、すべてネゲートに設定されている。さらに、初期状態において、データ・ストローブ信号DQSはハイ・インピーダンス(Hi−Z)に設定されている。
一方、初期状態において、第1アドレス信号MRAM_ADDR1〜第4アドレス信号MRAM_ADDR4は入力されておらず、第1データMRAM_DATA1〜第4データMRAM_DATA4は出力されていない。また、初期状態において、チップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_N、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nは、すべてネゲートに設定されている。
DDRクロック信号DDRCLKの立ち上がりタイミングに同期して、バンク・アドレス信号DDR_BA(M)およびアドレス信号DDR_ADDR(M)の入力が開始されると、1周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、チップ・セレクト信号DDR_CS_N(M)およびロウ・アドレス・ストローブ信号DDR_RAS_N(M)が1周期だけアサートからネゲートに移行する(アクティブ・コマンドの発行)。それから、2周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、今度は、チップ・セレクト信号DDR_CS_N(M)、カラム・アドレス・ストローブ信号DDR_CAS_N(M)およびライト・イネーブル信号DDR_WE_N(M)が、1周期だけアサートからネゲートに移行する(ライト・コマンドの発行)。このとき、ロウ・アドレス・ストローブ信号DDR_RAS_N(M)はネゲートされたままである。そして、チップ・セレクト信号DDR_CS_N(M)、カラム・アドレス・ストローブ信号DDR_CAS_N(M)およびライト・イネーブル信号DDR_WE_N(M)がネゲートに移行するのに伴い、バンク・アドレス信号DDR_BA(M)およびアドレス信号DDR_ADDR(M)の入力が終了する。
チップ・セレクト信号DDR_CS_N(M)およびロウ・アドレス・ストローブ信号DDR_RAS_N(M)がネゲートからアサートに移行するタイミングにて、ブリッジ回路514に設けられたロウ・ラッチ回路5142が、バンク・アドレス信号DDR_BA(M)およびアドレス信号DDR_ADDR(M)に基づいてロウ・アドレスをラッチする。続いて、その3周期後(RCD=3)に、チップ・セレクト信号DDR_CS_N(M)、カラム・アドレス・ストローブ信号DDR_CAS_N(M)およびライト・イネーブル信号DDR_WE_N(M)がネゲートからアサートに移行するタイミングにて、ブリッジ回路514に設けられたカラム・ラッチ回路5143が、アドレス信号DDR_ADDR(M)に基づいてカラム・アドレスをラッチする。
そして、ロウ・アドレスとカラム・アドレスとがラッチされることに伴い、ブリッジ回路514に設けられたアドレス変換回路5144は、ラッチしたロウ・アドレスおよびカラム・アドレスの両者に基づいて、第1アドレス信号MRAM_ADDR1〜第4アドレス信号MRAM_ADDR4への変換を行う。続いて、アドレス変換回路5144は、得られた第1アドレス信号MRAM_ADDR1〜第4アドレス信号MRAM_ADDR4を、CPU−MRAM62を構成する第1MRAM621〜第4MRAM624に出力する。
一方、ブリッジ回路514に設けられたコマンド変換回路5141が、ライト・コマンドに基づくコマンド変換を行い、まず、チップ・セレクト信号MRAM_CS_Nを、ネゲートからアサートに移行させる。
チップ・セレクト信号DDR_CS_N(M)、カラム・アドレス・ストローブ信号DDR_CAS_N(M)およびライト・イネーブル信号DDR_WE_N(M)がネゲートからアサートに移行してから、4周期半後のDDRクロック信号DDRCLKの立ち下がりタイミングよりも後であって、5周期後のDDRクロック信号DDRCLKの立ち上がりタイミングよりも前に、入出力データDDR_DQ(M)として、4つのデータ(図中には(1)〜(4)で示す)が連続して入力されてくる。
一方、チップ・セレクト信号DDR_CS_N(M)、カラム・アドレス・ストローブ信号DDR_CAS_N(M)およびライト・イネーブル信号DDR_WE_N(M)がネゲートからアサートに移行してから、4周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、データ・ストローブ信号DQSが1周期だけハイ・インピーダンス(Hi−Z)からローレベル(L)に移行する。その後、データ・ストローブ信号DQSは、次の半周期ではハイレベル(H)に、その次の半周期ではローレベル(L)に、さらに次の半周期ではハイレベル(H)に、これに続く半周期ではローレベル(L)に順次移行し、再びハイ・インピーダンス(Hi−Z)に移行する。したがって、データ・ストローブ信号DQSは、チップ・セレクト信号DDR_CS_N(M)およびカラム・アドレス・ストローブ信号DDR_CAS_N(M)がネゲートからアサートに移行した5周期後(CWL=5)から2周期にわたって、ハイレベル(H)とローレベル(L)とを交互に2回ずつ繰り返すことになる。
ここで、本実施の形態では、入出力データDDR_DQ(M)における1つ目のデータ(1)の入力期間中に、データ・ストローブ信号DQSにおける1回目のローレベル(L)からハイレベル(H)への移行タイミングが存在し、入出力データDDR_DQ(M)における2つ目のデータ(2)の入力期間中に、データ・ストローブ信号DQSにおける1回目のハイレベル(H)からローレベル(L)への移行タイミングが存在し、入出力データDDR_DQ(M)における3つ目のデータ(3)の入力期間中に、データ・ストローブ信号DQSにおける2回目のローレベル(L)からハイレベル(H)への移行タイミングが存在し、入出力データDDR_DQ(M)における4つ目のデータ(4)の入力期間中に、データ・ストローブ信号DQSにおける2回目のハイレベル(H)からローレベル(L)への移行タイミングが存在することになる。
そして、ブリッジ回路514に設けられたデータ選択回路5146は、データ・ストローブ信号DQSにおける1回目のローレベル(L)からハイレベル(H)への移行タイミングにおいて取得した1つ目のデータ(1)を、第1データMRAM_DATA1として第1MRAM621に出力し、データ・ストローブ信号DQSにおける1回目のハイレベル(H)からローレベル(L)への移行タイミングにおいて取得した2つ目のデータ(2)を、第2データMRAM_DATA2として第2MRAM622に出力し、データ・ストローブ信号DQSにおける2回目のローレベル(L)からハイレベル(H)への移行タイミングにおいて取得した3つ目のデータ(3)を、第3データMRAM_DATA3として第3MRAM623に出力し、データ・ストローブ信号DQSにおける2回目のハイレベル(H)からローレベル(L)への移行タイミングにおいて取得した4つ目のデータ(4)を、第4データMRAM_DATA4として第4MRAM624に出力する。
次いで、第1MRAM621には第1データMRAM_DATA1が、第2MRAM622には第2データMRAM_DATA2が、第3MRAM623には第3データMRAM_DATA3が、第4MRAM624には第4データMRAM_DATA4が、それぞれ出力されている状態で、コマンド変換回路5141が、ライト・コマンドに基づくコマンド変換を行った結果として、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nを、ネゲートからアサートに移行させる。これに伴い、第1MRAM621には第1データMRAM_DATA1が、第2MRAM622には第2データMRAM_DATA2が、第3MRAM623には第3データMRAM_DATA3が、第4MRAM624には第4データMRAM_DATA4が、それぞれ書き込まれる。
そして、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nがネゲートからアサートに移行してから、2周期後のDDRクロック信号DDRCLKの立ち上がりタイミングに同期して、第1アドレス信号MRAM_ADDR1〜第4アドレス信号MRAM_ADDR4および第1データMRAM_DATA1〜第4データMRAM_DATA4の入力が終了し、これに連動して、コマンド変換回路5141が、チップ・セレクト信号MRAM_CS_N、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nを、アサートからネゲートに移行させる。また、このとき、ロウ・ラッチ回路5142によるロウ・アドレスの保持およびカラム・ラッチ回路5143によるカラム・アドレスの保持も終了する。
以上により、一度のコマンドに基づく4ビット分のデータの書き込みが完了する。なお、WRITE時において、アウトプット・イネーブル信号MRAM_OE_Nはネゲートされたままであり、データ切替信号CHGはローレベル(L)のままである。
本実施の形態において、CPU−MRAM62を構成するMRAMモジュール620は、上述したようにシングル転送のみが可能であり、バースト転送はできない構成となっている。これに対し、本実施の形態では、CPU−MRAM62を、バースト長と同数となる4つのMRAM(第1MRAM621〜第4MRAM624)で構成するとともに、ブリッジ回路514において、CPU−RAMコントローラ72から送られてくる、4ビットのシリアルデータである入出力データDDR_DQ(M)を、同じくCPU−RAMコントローラ72から送られてくるデータ・ストローブ信号DQSを用いて、4つの1ビットのデータ(第1データMRAM_DATA1〜第4データMRAM_DATA4)に変換し、CPU−MRAM62を構成する第1MRAM621〜第4MRAM624のそれぞれに出力するようにした。したがって、第1MRAM621〜第4MRAM624のそれぞれにおいては、シングル転送にて1ビットのデータの書き込みがなされることになる。
なお、図13および図14を用いたCPU−MRAM62の動作説明(READ時およびWRITE時)において、ブリッジ回路514におけるチップ・セレクト信号MRAM_CS_N、アウトプット・イネーブル信号MRAM_OE_N、バイト・イネーブル信号MRAM_BE_Nおよびライト・イネーブル信号MRAM_WE_Nのアサート/ネゲートのタイミングは、コマンド制御パラメータ(図5参照)によって調整することが可能である。
また、図13を用いたCPU−MRAM62の動作説明(READ時)において、ブリッジ回路514における疑似DQS生成回路5145による疑似データ・ストローブ信号Para−DQSの出力タイミングおよびデータ切替信号CHGの出力タイミングは、疑似DQS制御パラメータ(図5参照)によって調整することが可能である。
ここで、本実施の形態では、CPU511に設けられるCPU−RAMコントローラ72が、DDR2−SDRAMに対応したプロトコルにて通信を行う例について説明を行ったが、これに限られるものではない。すなわち、CPU−RAMコントローラ72が、データ・ストローブ信号DQSとともに、データをバースト転送するもの(例えばDDR3−SDRAMやDDR4−SDRAMなど)であってもかまわない。なお、この場合には、CPU−DRAM61として、DDR3−SDRAMやDDR4−SDRAM等が用いられることになる。
また、本実施の形態では、CPU511(CPU−RAMコントローラ72)に、メインメモリ512としてCPU−DRAM61およびCPU−MRAM62の両者を接続する場合を例として説明を行ったが、これに限られるものではない。すなわち、例えばCPU511に、メインメモリ512としてCPU−MRAM62のみを接続して用いてもかまわない。
さらに、本実施の形態では、ASIC521(ASIC−RAMコントローラ82)に、メインメモリ522としてASIC−DRAM91のみを用いた場合について説明を行ったが、これに限られるものではない。すなわち、例えばASIC521に、ASIC−DRAM91に加えて、CPU−MRAM62と同じ構成を有するASIC−MRAMを接続してもよい。ただし、この場合には、ASIC−RAMコントローラ82とASIC−MRAMとの間にも、ブリッジ回路514を設けることが必要となる。