JP2006146817A - メモリ制御システム及びメモリ制御装置 - Google Patents

メモリ制御システム及びメモリ制御装置 Download PDF

Info

Publication number
JP2006146817A
JP2006146817A JP2004339444A JP2004339444A JP2006146817A JP 2006146817 A JP2006146817 A JP 2006146817A JP 2004339444 A JP2004339444 A JP 2004339444A JP 2004339444 A JP2004339444 A JP 2004339444A JP 2006146817 A JP2006146817 A JP 2006146817A
Authority
JP
Japan
Prior art keywords
memory device
external
address
instruction code
volatile memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2004339444A
Other languages
English (en)
Inventor
Koji Oshima
浩二 大島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2004339444A priority Critical patent/JP2006146817A/ja
Publication of JP2006146817A publication Critical patent/JP2006146817A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】 システムの起動時間を短縮する。
【解決手段】 外部に接続された不揮発性のメモリデバイスと揮発性のメモリデバイスへのアクセスを制御する際に、外部の不揮発性のメモリデバイスと揮発性のメモリデバイスとをそれぞれ同時に独立して制御し、システム起動時に同一のアドレスバスとデータバスを介して不揮発性のメモリデバイスからデータを読み出すと同時にそのデータを揮発性のメモリデバイスに書き込むように制御する。
【選択図】 図4

Description

本発明は、外部に接続された不揮発性のメモリデバイスと揮発性のメモリデバイスへのアクセスを制御する技術に関する。
図1に示すように、一般的なメモリ制御システムを構成するLSI100は、主としてシステムバス150に接続されたCPU110、ROMコントローラ(ROMC)120、DRAMコントローラ(DRAMC)130、DMAコントローラ(DMAC)140から構成されている。また、ROMC120とDRAMC130は、独立した外部端子を経由してROMデバイス等の不揮発性メモリ200とDRAMデバイス等の揮発性メモリ300にそれぞれ接続されている(例えば、特許文献1参照)。
尚、ROM200へのアクセスは、制御信号としてのアドレスバス121、データバス122、ROMデバイス制御信号123によって行われ、DRAM300へのアクセスは、制御信号としてのアドレスバス131、データバス132、DRAMデバイス制御信号133によって行われる。
上述の構成において、命令フェッチ時には、CPU110の命令コードを格納しているROM200から連続して命令コードの読み出しが行われ、またデータ処理時にはCPU110が命令コードを実行する際に作業用領域として使用されるDRAM300に対して読み出し或いは書き込み(リード/ライト)が実施される。
また、デバイスの特性として、DRAM300のアクセス速度はROM200に対して非常に高速である反面、揮発性メモリであるため、初期状態として命令コードを保持しておくことができない。
更に、ROM200やDRAM300等の外部メモリに対するアクセスのレイテンシーはシステムの処理速度に大きく依存するため、低速なROM200よりも高速なDRAM300の方が多く使用される。そして、高速処理を実施するために、常にアクセス速度の速いDRAM300から命令フェッチを行えるように、システム起動時に、ROM200からDRAM300へ命令コードを一旦複製する必要があった。
図2は、システム起動時にROM200からDRAM300へ命令コードが複製された際のメモリマップを示す図である。また図3は、ROM200からDRAM300へ命令コードを複製する際のタイミングチャートを示す図である。
まず、初期リセットでROM200の初期化コードがCPU110によって実行され、その後、DMAC140によってROM200内の命令コード(1M)がDRAM300の所定の領域にDMA転送され、命令コードの複製が行われる。
特開2002-197863号公報
上述のように、従来の技術では、システム起動時にROM200からDRAM300へ命令コードを複製する際に、システム内のCPU110又はDMAコントローラ140が内部のシステムバス150を経由して一旦ROM200から命令コードを読み出した後、DRAM300へ書き込む必要があった。
このため、複製に要する時間がそのままシステムの起動時間に影響し、システムの起動時間に多大の時間を必要としていた。
本発明は、上記課題を解決するためになされたもので、システムの起動時間を短縮することを目的とする。
また、外部端子を共有することでシステムの外部端子を削減することを目的とする。
本発明は、外部に接続された不揮発性のメモリデバイスと揮発性のメモリデバイスへのアクセスを制御するメモリ制御システムであって、不揮発性のメモリデバイスと揮発性のメモリデバイスとを接続する接続手段と、前記不揮発性のメモリデバイスと揮発性のメモリデバイスとをそれぞれ同時に独立して制御するメモリ制御手段とを有し、前記メモリ制御手段は、システム起動時に前記接続手段を介して前記不揮発性のメモリデバイスからデータを読み出すと同時に前記接続手段を介して当該データを前記揮発性のメモリデバイスに書き込むように制御することを特徴とする。
また、本発明は、外部に接続された不揮発性のメモリデバイスと揮発性のメモリデバイスへのアクセスを制御するメモリ制御装置であって、不揮発性のメモリデバイスと揮発性のメモリデバイスとを接続する接続手段と、前記不揮発性のメモリデバイスと揮発性のメモリデバイスとをそれぞれ同時に独立して制御するメモリ制御手段とを有し、前記メモリ制御手段は、システム起動時に前記接続手段を介して前記不揮発性のメモリデバイスからデータを読み出すと同時に前記接続手段を介して当該データを前記揮発性のメモリデバイスに書き込むように制御することを特徴とする。
本発明によれば、システムの起動時間を短縮することができる。
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
図4は、実施例1によるメモリ制御システムの構成の一例を示す図である。図4に示すように、LSI100は、主としてシステムバス150に接続されたCPU110、外部ROMデバイス200及び外部DRAMデバイス300をそれぞれ制御するメモリコントローラ(MEMC)160から構成されている。このMEMC160は共通の外部端子を経由した同一のアドレスバス161により外部ROMデバイス200と外部DRAMデバイス300と接続されている。また同様に、MEMC160は共通の外部端子を経由した同一のデータバス162により外部ROMデバイス200と外部DRAMデバイス300と接続されている。
更に、MEMC160は独立した外部端子を経由して外部ROMデバイス200を制御するROMデバイス制御信号163を有する。また同様に、外部DRAMデバイス300を制御するDRAMデバイス制御信号164を有する。これらの制御信号163,164は、一般的なROMデバイス及びDRAMデバイスを制御するために必要な最低限の信号を有しており、CPU110からのメモリアクセスに応じてそれぞれ独立して外部ROMデバイス200或いは外部DRAMデバイス300を制御することが可能である。
図5は、LSI100と外部ROMデバイス200及び外部DRAMデバイス300との具体的な接続形態を示す図である。ここで、外部ROMデバイス200は16MビットのページROM(1Mワード×16ビット)であり、20ビット幅で構成されるアドレスバス161がそのまま20ビットの物理アドレスとして供給される。一方、外部DRAMデバイス300は64MビットDRAM(4Mワード×16ビット)であり、カラムアドレス12ビット、ロウアドレス10ビットで構成されており、アドレスバス161の下位12ビットのみが物理アドレスとして供給される。またデータバス162は16ビット幅で構成されており、外部ROMデバイス200と外部DRAMデバイス300に共に接続されている。
ROMデバイス制御信号163はCS#、RD#信号からなり独立して外部ROMデバイス200と接続されている。また同様に、DRAMデバイス制御信号164はRAS#,LCAS#、UCAS#、WE#、OE#信号からなり独立して外部DRAMデバイス300と接続されている。
尚、当然の事ながら、実施例1の接続形態は、アドレスバス幅やデータバス幅など外部ROMデバイス200及び外部DRAMデバイス300の構成を含めて、この接続に限定されるものではない。
図6は、実施例1によるメモリマップの一例を示す図である。図6に示すように、外部ROMデバイス200はメモリマップの0xF000_0000番地から0xFFFF_FFFF番地にマッピングされており、また外部DRAMデバイス300はメモリマップの0x0000_0000番地から0x3FFF_FFFF番地にマッピングされている。
ここで説明を容易にするために、実施例1の外部ROMデバイス200は、システムを初期化する初期化コードが0xF000_0000番地から0xF000_FFFF番地までの64KBに、実際にシステムを制御する命令コードが0xF001_0000番地から0xF010_FFFF番地までの1MBにそれぞれ書き込まれているものとする。更に、外部ROMデバイス200から外部DRAMデバイス300へ複製する命令コードは前述した実際にシステムを制御する命令コードの1MBだけであり、この命令コードは絶対アドレスに非依存なメモリアロケータブルな内容で記述されているものとする。
次に、実施例1による構成において、システム起動時に外部ROM200の命令コードを外部DRAM300へ複製する動作について説明する。
まず初めに、外部からのパワーオンリセット等の初期リセットが解除されると、CPU110は内部のリセットベクタに応じたメモリ空間に対して最初の命令コードのフェッチを行う。このとき、初期状態で命令コードを保持できるのは不揮発性メモリであるROMデバイスのみであるため、CPU110のリセットベクタは外部ROMデバイス200の先頭アドレス0xF000_0000番地を指し示しており、命令コードも予めリセットベクタが指し示すアドレスから順番に外部ROMデバイス200に書き込まれているものとする。
従って、リセット解除後、CPU110はシステムバス150とMEMC160を経由して外部ROMデバイス200にアクセスし、メモリマップの0xF000_0000番地からシステムを初期化するための初期化コードを順次フェッチする。この初期化コードのフェッチ後、CPU110はその初期化コードの内容に従ってシステムの初期化を実施する。ここで、外部DRAMデバイス300に対しても外部ROMデバイス200にアクセスするためのアドレスと、外部ROMデバイス200から読み出されたデータが同時にドライブされるが、DRAMデバイス制御信号164によるアクセス許可が実行されていないため何ら影響を及ぼさない。
システムの初期化が完了すると、CPU110は、MEMC160に対して外部ROMデバイス200に書き込まれている命令コードを外部DRAMデバイス300へ複製するように要求する。この時点では、CPU110の動作は全て外部ROMデバイス200からフェッチした命令コードの内容に従って実施されている。以下、MEMC160により命令コードを複製する手順を示す。
まず、CPU110は外部ROMデバイス200に書き込まれている命令コードの最初のアドレス0xF001_0000番地を転送元アドレス、外部DRAMデバイス300へ書き込むための最初のアドレス0x0000_0000番地を転送先アドレス、複製する命令コードの総バイト数(1MB)を転送長としてMEMC160に設定する。
但し、命令コードの複製は外部DRAMデバイス300のカラムアドレスと外部ROMデバイス200のアドレスのカラムアドレスに相当する下位12ビットが等しくなる必要があるため、予め転送アドレスの下位12ビットを等しく設定しておくか、或いは転送先アドレス又は転送元アドレスの何れかの下位12ビットのみが有効になるものとする。
これらの設定値は、予め命令コードと一緒に外部ROMデバイス200に書き込まれており、CPU110が外部ROMデバイス200から読み出すことによりMEMC160に設定することが可能である。
上述した各設定が完了すると、CPU110がMEMC160に対して開始を指示することで、CPU110とは独立して外部ROMデバイス200から外部DRAMデバイス300へ命令コードを複製することが可能となる。
ここで、図7を用いて外部ROMデバイス200のアドレス0xF001_1234番地の命令コードを外部DRAMデバイス300のアドレス0x0000_1234番地へ複製する動作について説明する。
図7は、実施例1による命令コードを複製する際のタイミングチャートを示す図である。まず、MEMC160は時刻T2で外部DRAMデバイス300に対するロウアドレス0x001をアドレスバス161にドライブし、時刻T3でRAS#をアサートすることによりこのロウアドレスを有効にする。この時、アドレスバス161の下位10ビットのみが有効である。その後、時刻T4から外部ROMデバイス200と外部DRAMデバイス300に対して同一のアドレス0x11234をアドレスバス161上にドライブする。
図5に示す通り、外部ROMデバイス200に対してはアドレスバス161の20ビット全てが有効となるが、外部DRAMデバイス300に対してはカラムアドレスに相当する下位12ビットのみが有効となる。従って、この場合の外部DRAMデバイス300に対するカラムアドレスは0x234である。
次に、時刻T6でCS#とRD#をアサートすることにより外部ROMデバイス200に対してアドレス0x11234からの読み出し要求を行う。規定時間後、外部ROMデバイス200はデータバス162上にリードデータをドライブする。このとき、MEMC160は同時に時刻T8で外部DRAMデバイス300に対してもUCAS#、LCAS#、WE#をアサートすることによりアドレス0x01234への書き込み要求を行う。これにより、データバス162上にドライブされた命令コードは、直接外部DRAMデバイス300に書き込まれる。以降、転送元アドレスと転送先アドレスをインクリメントして同様に命令コードの読み出しと書き込みを繰り返す。
DMA転送が完了すると、MEMC160はCPU110に対してDMA転送の完了を通知する。このDMA転送の完了通知を受けると、CPU110は外部DRAMデバイス300へ複製した命令コードの最初のアドレス0x0000_0000番地に分岐する。これにより、CPU110は順次外部DRAMデバイス300からの命令コードをフェッチする。これ以降、CPU110は外部DRAMデバイス300に対してのみ命令コードをフェッチすることで、命令コードのフェッチを含む外部メモリアクセスのレイテンシーが削減され、システム全体の処理速度を高速化することが可能となる。
以上説明したように、実施例1によれば、外部ROMデバイス200から外部DRAMデバイス300へ命令コードを複製する際に、アドレスバス161とデータバス162を共有することで、内部システムバス150を経由することなく、外部データバス162上でデータを直接複製することが可能となる。従って、複製に要する時間を大幅に短縮することが可能である。
また、内部システムバス150を使用しないため、CPU110は内部システムバス150を経由した別のオンチップのスレーブにアクセスすることが可能であり、命令コードの複製と並列して各コントローラの初期化を実行することも可能である。
ここで、MEMC160は外部ROMデバイス200及び外部DRAMデバイス300に独立してアクセス可能であるため、命令コードの複製の際にCPU110が外部ROMデバイス200や外部DRAMデバイス300のそれぞれに対してアクセス可能であることは言うまでもない。
更に、アドレスバス161とデータバス162を共有することで、LSIの外部端子を大幅に削減することが可能である。
次に、図面を参照しながら本発明に係る実施例2について詳細に説明する。実施例1では、外部DRAMデバイス300を例に説明したが、実施例2ではシンクロナスDRAM(SDRAM)が接続されている場合について説明する。
図8は、実施例2によるメモリ制御システムの構成の一例を示す図である。図8に示すように、LSI100は、主としてシステムバス150に接続されたCPU110、外部ROMデバイス200及び外部SDRAMデバイス400をそれぞれ制御するメモリコントローラ(MEMC)160から構成されている。このMEMC160は共通の外部端子を経由した同一のアドレスバス161により外部ROMデバイス200と外部SDRAMデバイス400と接続されている。また同様に、MEMC160は共通の外部端子を経由した同一のデータバス162により外部ROMデバイス200と外部SDRAMデバイス400と接続されている。
更に、MEMC160は独立した外部端子を経由して外部ROMデバイス200を制御するROMデバイス制御信号163を有する。また同様に、外部SDRAMデバイス400を制御するSDRAMデバイス制御信号165を有する。これらの制御信号163,165は一般的なROMデバイス及びSDRAMデバイスを制御するために必要な最低限の信号を有しており、CPU110からのメモリアクセスに応じてそれぞれ独立して外部ROMデバイス200或いは外部SDRAMデバイス400を制御することが可能である。
図9は、LSI100と外部ROMデバイス200及び外部SDRAMデバイス400との具体的な接続形態を示す図である。ここで、外部ROMデバイス200は16MビットのページROM(1Mワード×16ビット)であり、20ビット幅で構成されるアドレスバス161がそのまま20ビットの物理アドレスとして供給される。一方、外部SDRAMデバイス400は64MビットSDRAM(4Mワード×16ビット)であり、カラムアドレス12ビット、ロウアドレス10ビットで構成されており、アドレスバス161の下位12ビットのみが物理アドレスとして供給される。またデータバス162は16ビット幅で構成されており、外部ROMデバイス200と外部SDRAMデバイス400に共に接続されている。
ROMデバイス制御信号163はCS#、RD#信号からなり独立して外部ROMデバイス200と接続されている。また同様に、SDRAMデバイス制御信号165はCLK、CKE、SDCS#、RAS#,CAS#、LDQM、UDQM、WE#信号からなり独立して外部SDRAMデバイス400と接続されている。
尚、当然の事ながら、実施例2の接続形態は、アドレスバス幅やデータバス幅など外部ROMデバイス200及び外部SDRAMデバイス400の構成を含め、この接続に限定されるものではない。
また、実施例2によるメモリマップは実施例1で用いた図6と同様であり、その説明は省略する。
次に、実施例2による構成において、システム起動時に外部ROM200の命令コードを外部SDRAM400へ複製する動作について説明する。
まず初めに、外部からのパワーオンリセット等の初期リセットが解除されると、CPU110は内部のリセットベクタに応じたメモリ空間に対して最初の命令コードのフェッチを行う。このとき、初期状態で命令コードを保持できるのは不揮発性メモリであるROMデバイスのみであるため、CPU110のリセットベクタは外部ROMデバイス200の先頭アドレス0xF000_0000番地を指し示しており、命令コードも予めリセットベクタが指し示すアドレスから順番に外部ROMデバイス200に書き込まれているものとする。
従って、リセット解除後、CPU110はシステムバス150とMEMC160を経由して外部ROMデバイス200にアクセスし、メモリマップの0xF000_0000番地からシステムを初期化するための初期化コードを順次フェッチする。この初期化コードのフェッチ後、CPU110はその初期化コードの内容に従ってシステムの初期化を実施する。ここで、外部SDRAMデバイス400に対しても外部ROMデバイス200にアクセスするためのアドレスと、外部ROMデバイス200から読み出されたデータが同時にドライブされるが、SDRAMデバイス制御信号165によるアクセス許可が実行されていないため何ら影響を及ぼさない。
システムの初期化が完了すると、CPU110は、MEMC160に対して外部ROMデバイス200に書き込まれている命令コードを外部SDRAMデバイス400へ複製するように要求する。この時点では、CPU110の動作は全て外部ROMデバイス200からフェッチした命令コードの内容に従って実施されている。以下、MEMC160により命令コードを複製する手順を示す。
まず、CPU110は外部ROMデバイス200に書き込まれている命令コードの最初のアドレス0xF001_0000番地を転送元アドレス、外部SDRAMデバイス400へ書き込むための最初のアドレス0x0000_0000番地を転送先アドレス、複製する命令コードの総バイト数(1MB)を転送長としてMEMC160に設定する。
但し、命令コードの複製は外部SDRAMデバイス400のカラムアドレスと外部ROMデバイス200のアドレスのカラムアドレスに相当する下位12ビットが等しくなる必要があるため、予め転送アドレスの下位12ビットを等しく設定しておくか、或いは転送先アドレス又は転送元アドレスの何れかの下位12ビットのみが有効になるものとする。
これらの設定値は、予め命令コードと一緒に外部ROMデバイス200に書き込まれており、CPU110が外部ROMデバイス200から読み出すことによりMEMC160に設定することが可能である。
上述した各設定が完了すると、CPU110がMEMC160に対して開始を指示することで、CPU110とは独立して外部ROMデバイス200から外部SDRAMデバイス400へ命令コードを複製することが可能となる。
ここで、図10を用いて外部ROMデバイス200のアドレス0xF001_1234番地の命令コードを外部SDRAMデバイス400のアドレス0x0000_1234番地へ複製する動作について説明する。
図10は、実施例2による命令コードを複製する際のタイミングチャートを示す図である。まず、MEMC160は時刻T2でRAS#、CAS#、WE#により外部SDRAMデバイス400に対するアクティブコマンドを発行する。この時、アドレスバス161の下位10ビットのみが有効であるため、ロウアドレスは0x001である。その後、MEMC160は時刻T4から外部ROMデバイス200と外部SDRAMデバイス400に対して同一のアドレス0x11234をアドレスバス161上にドライブする。
図9に示す通り、外部ROMデバイス200に対してはアドレスバス161の20ビット全てが有効となるが、外部SDRAMデバイス400に対してはカラムアドレスに相当する下位12ビットのみが有効となる。従って、この場合の外部SDRAMデバイス400に対するカラムアドレスは0x234である。
次に、時刻T6からCS#とRD#をアサートすることにより外部ROMデバイス200に対してアドレス0x11234からの読み出し要求を行う。規定時間後、外部ROMデバイス200はデータバス162上にリードデータをドライブする。この時、MEMC160は同時に時刻T9で外部SDRAMデバイス400に対してもRAS#、CAS#、WE#によりライトコマンドを発行することによりアドレス0x01234への書き込み要求を行う。これにより、データバス162上にドライブされた命令コードは、直接外部SDRAMデバイス400に書き込まれる。以降、転送元アドレスと転送先アドレスをインクリメントして同様に命令コードの読み出しと書き込みを繰り返す。
また、実施例2では、連続したメモリ領域に対して順次命令コードを複製しているため、次回からはページミスするまでアクティブコマンドを発行する必要がなく、ライトコマンドのみで良い。
更に、SDRAMデバイス制御信号165のみを有効にすることで外部SDRAMデバイス400に対して必要となるプリチャージコマンドやリフレッシュコマンドを発行することが可能である。その際、外部ROMデバイス200に対しても外部SDRAMデバイス400にアクセスするためのアドレスが同時にドライブされるが、ROMデバイス制御信号163によるアクセス許可が実行されていないため何ら影響を及ぼさない。
DMA転送が完了すると、MEMC160はCPU110に対してDMA転送の完了を通知する。このDMA転送の完了通知を受けると、CPU110は外部SDRAMデバイス400へ複製した命令コードの最初のアドレス0x0000_0000番地に分岐する。これにより、CPU110は順次外部SDRAMデバイス400からの命令コードをフェッチする。これ以降、CPU110は外部SDRAMデバイス400に対してのみ命令コードをフェッチし、命令コードのフェッチを含む外部メモリアクセスのレイテンシーが削減され、システム全体の処理速度を高速化することが可能となる。
また、実施例2は、ダブルデータレート(DDR)のSDRAMに対しても同様に適用できることは言うまでもない。
以上説明したように、実施例2によれば、外部ROMデバイス200から外部SDRAMデバイス400へ命令コードを複製する際に、アドレスバス161とデータバス162を共有することで、内部システムバス150を経由することなく、外部データバス162上でデータを直接複製することが可能となる。従って、複製に要する時間を大幅に短縮することが可能である。
また、内部システムバス150を使用しないため、CPU110は内部システムバス150を経由した別のオンチップのスレーブにアクセスすることが可能であり、命令コードの複製と並列して各コントローラの初期化を実行することも可能である。
ここで、MEMC160は外部ROMデバイス200及び外部SDRAMデバイス400に独立してアクセス可能であるため、命令コードの複製の際にCPU110が外部ROMデバイス200や外部SDRAMデバイス400のそれぞれに対してアクセス可能であることは言うまでもない。
更に、アドレスバス161とデータバス162を共有することで、LSIの外部端子を大幅に削減することも可能である。
次に、図面を参照しながら本発明に係る実施例3について詳細に説明する。尚、実施例3の主な構成及び具体的な接続形態は実施例2と同様であり、その説明は省略する。
図11は、実施例3によるメモリマップの一例を示す図である。図11に示すように、外部ROMデバイス200はメモリマップの0xF000_0000番地から0xFFFF_FFFF番地にマッピングされており、また外部SDRAMデバイス400はメモリマップの0x0000_0000番地から0x3FFF_FFFF番地にマッピングされている。
ここで説明を容易にするために、実施例3の外部ROMデバイス200は、システムを初期化する初期化コードが0xF000_0000番地から0xF000_FFFF番地までの64KBに、実際にシステムを制御する命令コードが0xF001_0000番地から0xF010_FFFF番地までの1MBにそれぞれ書き込まれているものとする。更に、外部ROMデバイス200から外部SDRAMデバイス400へ複製する命令コードは前述した実際にシステムを制御する命令コードの1MBだけであり、この命令コードは絶対アドレスに非依存なメモリアロケータブルな内容で記述されているものとする。
尚、実施例3では、複製元の外部ROMデバイス200のアドレスと複製先の外部SDRAMデバイス400のアドレスのオフセット値が同一であり、実際にそれぞれアクセスする物理アドレスの値が等しくなっている点が重要である。
次に、実施例3による構成において、システム起動時に外部ROM200の命令コードを外部SDRAM400へ複製する動作について説明する。
まず初めに、外部からのパワーオンリセット等の初期リセットが解除されると、CPU110は内部のリセットベクタに応じたメモリ空間に対して最初の命令コードのフェッチを行う。その際に、初期状態で命令コードを保持できるのは不揮発性メモリであるROMデバイスのみであるため、CPU110のリセットベクタは外部ROMデバイス200の先頭アドレス0xF000_0000番地を指し示しており、命令コードも予めリセットベクタが指し示すアドレスから順番に外部ROMデバイス200に書き込まれているものとする。
従って、リセット解除後、CPU110はシステムバス150とMEMC160を経由して外部ROMデバイス200にアクセスし、メモリマップの0xF000_0000番地からシステムを初期化するための初期化コードを順次フェッチする。この初期化コードのフェッチ後、CPU110はその初期化コードの内容に従ってシステムの初期化を実施する。ここで、外部SDRAMデバイス400に対しても外部ROMデバイス200にアクセスするためのアドレスと、外部ROMデバイス200から読み出されたデータが同時にドライブされるが、SDRAMデバイス制御信号165によるアクセス許可が実行されていないため何ら影響を及ぼさない。
システムの初期化が完了すると、CPU110は、MEMC160に対して外部ROMデバイス200に書き込まれている命令コードを外部SDRAMデバイス400へ複製するように要求する。この時点では、CPU110の動作は全て外部ROMデバイス200からフェッチした命令コードの内容に従って実施されている。以下、MEMC160により命令コードを複製する手順を示す。
まず、CPU110は命令コードを複製するための外部ROMデバイス200と外部SDRAMデバイス400のアドレスのオフセット値を設定する。上述した通り、実施例3では外部ROMデバイス200のアドレスと外部SDRAMデバイス400のアドレスのオフセット値は等しいため、例えば本設定におけるアドレスのオフセット値は0x10000となる。次に、CPU110は複製する命令コードの総バイト数(1MB)を転送長としてMEMC160に設定する。
これらの設定値は、予め命令コードと一緒に外部ROMデバイス200に書き込まれており、CPU110が外部ROMデバイス200から読み出すことによりMEMC160に設定することが可能である。
上述した各設定が完了すると、CPU110がMEMC160に対して開始を指示することで、CPU110とは独立して外部ROMデバイス200から外部SDRAMデバイス400へ命令コードを複製することが可能となる。
ここで、図12を用いて外部ROMデバイス200のアドレス0xF001_1234番地の命令コードを外部SDRAMデバイス400のアドレス0x0001_1234番地へ複製する動作について説明する。
図12は、実施例3による命令コードを複製する際のタイミングチャートを示す図である。まず、MEMC160は時刻T2でRAS#、CAS#、WE#により外部SDRAMデバイス400に対するアクティブコマンドを発行する。この時、アドレスバス161の下位10ビットのみが有効であるため、ロウアドレスは0x011である。その後、MEMC160は時刻T4から外部ROMデバイス200と外部SDRAMデバイス400に対して同一のアドレス0x11234をアドレスバス161上にドライブする。
図9に示す通り、外部ROMデバイス200に対してはアドレスバス161の20ビット全てが有効となるが、外部SDRAMデバイス400に対してはカラムアドレスに相当する下位12ビットのみが有効となる。従って、この場合の外部SDRAMデバイス400に対するカラムアドレスは0x234である。
次に、時刻T6からCS#とRD#をアサートすることにより外部ROMデバイス200に対してアドレス0x11234からの読み出し要求を行う。規定時間後、外部ROMデバイス200はデータバス162上にリードデータをドライブする。この時、MEMC160は同時に時刻T9で外部SDRAMデバイス400に対してもRAS#、CAS#、WE#によりライトコマンドを発行することによりアドレス0x11234への書き込み要求を行う。これにより、データバス162上にドライブされた命令コードは、直接外部SDRAMデバイス400に書き込まれる。以降、転送元アドレスと転送先アドレスをインクリメントして同様に命令コードの読み出しと書き込みを繰り返す。
また、実施例3では、連続したメモリ領域に対して順次命令コードを複製しているため、次回からはページミスするまでアクティブコマンドを発行する必要がなく、ライトコマンドのみで良い。
更に、SDRAMデバイス制御信号165のみを有効にすることで外部SDRAMデバイス400に対して必要となるプリチャージコマンドやリフレッシュコマンドを発行することが可能である。その際、外部ROMデバイス200に対しても外部SDRAMデバイス400にアクセスするためのアドレスが同時にドライブされるが、ROMデバイス制御信号163によるアクセス許可が実行されていないため何ら影響を及ぼさない。
DMA転送が完了すると、MEMC160はCPU110に対してDMA転送の完了を通知する。このDMA転送の完了通知を受けると、CPU110は外部SDRAMデバイス400へ複製した命令コードの最初のアドレス0x0001_0000番地に分岐する。これにより、CPU110は順次外部SDRAMデバイス400からの命令コードをフェッチする。これ以降、CPU110は外部SDRAMデバイス400に対してのみ命令コードをフェッチし、命令コードのフェッチを含む外部メモリアクセスのレイテンシーが削減され、システム全体の処理速度を高速化することが可能となる。
図13は、外部ROMデバイス200と外部SDRAMデバイス400とのアドレスのオフセットが異なる場合のアドレス生成の概念図である。アドレスのオフセットが異なる場合は、外部ROMデバイス200と外部DRAMデバイス400へアクセスするための開始アドレスを双方に対して持つ必要がある。
また、実施例3では、命令コードの複製は外部SDRAMデバイス400のカラムアドレスと外部ROMデバイス200のアドレスのカラムアドレスに相当する下位12ビットが等しくなる必要があるため、予め転送アドレスの下位12ビットを等しく設定しておくか、或いは転送先アドレス又は転送元アドレスの何れかの下位12ビットのみが有効になる必要がある。
図13は、外部ROMデバイス200に対する転送元のアドレスの下位12ビットが有効になる場合を示しており、更にそれぞれの上位ビットも異なるため外部ROMデバイス200と外部DRAMデバイス400のそれぞれに対してアクセス用アドレスを計算する必要がある。
一方、図14は、MEMC160内のアドレス生成の概念図である。図14から明らかなように、実施例3によれば、外部ROMデバイス200と外部SDRAMデバイス400とのアドレスのオフセットが等しいため、MEMC160はアドレスのオフセット値と現在の転送長により外部ROMデバイス200と外部SDRAMデバイス400の物理アドレスを生成することが可能となる。
また、外部SDRAMデバイス400のカラムアドレスと外部ROMデバイス200の上位ビットが等しくなるため、実際のアドレス生成回路を容易に構成することが可能となる。
次に、図面を参照しながら本発明に係る実施例4について詳細に説明する。尚、実施例4の主な構成及び具体的な接続形態は実施例2と同様であり、その説明は省略する。
図15は、実施例4によるメモリマップの一例を示す図である。図15に示すように、外部ROMデバイス200はメモリマップの0xF000_0000番地から0xFFFF_FFFF番地にマッピングされており、また外部SDRAMデバイス400はメモリマップの0x0000_0000番地から0x3FFF_FFFF番地にマッピングされている。
ここで説明を容易にするために、実施例4の外部ROMデバイス200の命令コードは0xF000_0000番地から0xF00F_FFFF番地までの1MBに書き込まれているものとする。更にこの命令コードは絶対アドレスに非依存なメモリアロケータブルな内容で記述されているものとする。
次に、実施例4による構成において、システム起動時に外部ROM200の命令コードを外部SDRAM400へ複製する動作について説明する。
まず初めに、外部からのパワーオンリセット等の初期リセットが解除されると、CPU110は内部のリセットベクタに応じたメモリ空間に対して最初の命令コードのフェッチを行う。このとき、初期状態で命令コードを保持できるのは不揮発性メモリであるROMデバイスのみであるため、その命令コードは予め外部ROMデバイス200に書き込まれており、CPU110のリセットベクタは外部SDRAMデバイス400の先頭アドレス0x0000_0000番地を指し示しているものとする。
従って、リセット解除後、CPU110はシステムバス150とMEMC160を経由して外部SDRAMデバイス400にアクセスする。一方、MEMC160はリセットが解除されると、CPU110とは無関係に外部ROMデバイス200に書き込まれた命令コードを外部SDRAMデバイス400へ複製する。ここで、CPU110の外部SDRAMへのアクセスは、MEMC160による命令コードの複製が完了するまでウエイトされる。以下、MEMC160により命令コードを複製する手順を示す。
まず、MEMC160は予め規定された初期化データ領域から外部ROMデバイス200に書き込まれた命令コードの最初のアドレス0xF000_0000番地、外部SDRAMデバイス400へ書き込むための最初のアドレス0x0000_0000番地、複製する命令コードの総バイト数(1MB)を読み出し、それぞれ転送元アドレス、転送先アドレス、転送長として設定する。
但し、命令コードの複製は外部SDRAMデバイス400のカラムアドレスと外部ROMデバイス200のアドレスのカラムアドレスに相当する下位12ビットが等しくなる必要があるため、予め転送アドレスの下位12ビットを等しく設定しておくか、或いは転送先アドレス又は転送元アドレスの何れかの下位12ビットのみが有効になるものとする。
次に、MEMC160は外部ROMデバイス200から外部SDRAMデバイス400への命令コードの複製を開始する。MEMC160による複製の動作は図10に示す実施例2と同じである。
DMA転送が完了すると、MEMC160はウエイトさせていたCPU110の外部SDRAMデバイス400へのアクセスを許可することで、CPU110は順次外部SDRAMデバイス400からの命令コードをフェッチする。これ以降、CPU110は外部SDRAMデバイス400に対してのみ命令コードをフェッチし、命令コードのフェッチを含む外部メモリアクセスのレイテンシーが削減され、システム全体の処理速度を高速化することが可能となる。
以上説明したように、実施例4によれば、外部ROMデバイス200から外部SDRAMデバイス400へ命令コードを複製する際に、CPU110を使用することなく、外部データバス162上でデータを直接複製することが可能となる。従って、複製に要する時間を大幅に短縮することが可能である。
更に、アドレスバス161とデータバス162を共有することで、LSIの外部端子を大幅に削減することも可能である。
次に、図面を参照しながら本発明に係る実施例5について詳細に説明する。実施例5では、図8を用いて説明した実施例2のMEMC160に、命令コードの複製に必要な情報を外部から入力するように構成したものである。
図16は、実施例5によるメモリ制御システムの構成の一例を示す図である。ここでは、実施例2で用いた図8に示す構成と相違する構成について説明する。図16に示すように、実施例5では外部ROMデバイス200及び外部SDRAMデバイス400の構成と命令コード複製の際に必要な情報を外部から得るためのメモリ構成信号166がMEMC160に入力されている。このメモリ構成信号166は、一旦システムの構成が決定してメモリの構成が決まると固定値を入力して良い。
図17は、実施例5によるメモリマップの一例を示す図である。図17に示すように、外部ROMデバイス200はメモリマップの0xF000_0000番地から0xFFFF_FFFF番地にマッピングされており、また外部SDRAMデバイス400はメモリマップの0x0000_0000番地から0x3FFF_FFFF番地にマッピングされている。
ここで説明を容易にするために、外部ROMデバイス200の命令コードは0xF000_0000番地から0xF00F_FFFF番地までの1MBに書き込まれているものとする。更に、この命令コードは絶対アドレスに非依存なメモリアロケータブルな内容で記述されているものとする。
次に、実施例5による構成において、システム起動時に外部ROM200の命令コードを外部SDRAM400へ複製する動作について説明する。
まず初めに、外部からのパワーオンリセット等の初期リセットが解除されると、CPU110は内部のリセットベクタに応じたメモリ空間に対して最初の命令コードのフェッチを行う。このとき、初期状態で命令コードを保持できるのは不揮発性メモリであるROMデバイスのみであるため、その命令コードは予め外部ROMデバイス200に書き込まれており、CPU110のリセットベクタは外部SDRAMデバイス400の先頭アドレス0x0000_0000番地を指し示しているものとする。
従って、リセット解除後、CPU110はシステムバス150とMEMC160を経由して外部SDRAMデバイス400にアクセスする。一方、MEMC160はリセットが解除されると、CPU110とは無関係に外部ROMデバイス200に書き込まれた命令コードを外部SDRAMデバイス400へ複製する。ここで、CPU110の外部SDRAMへのアクセスは、MEMC160による命令コードの複製が完了するまでウエイトされる。以下、MEMC160により命令コードを複製する手順を示す。
まず、図18に示すように、40ビットで構成されそれぞれのビットが予め外部ROMデバイス200及び外部SDRAMデバイス400の構成と命令コード複製の際に必要なデータを規定しているメモリ構成信号166がMEMC160に入力されると、MEMC160は、このメモリ構成信号166により外部ROMデバイス200と外部SDRAMデバイスの構成を認識して自分自身を初期化する。そして、このメモリ構成信号166により外部ROMデバイス200に書き込まれた命令コードの最初のアドレス0xF000_0000番地、外部SDRAMデバイス400へ書き込むための最初のアドレス0x0000_0000番地、複製する命令コードの総バイト数(1MB)を認識し、それぞれ転送元アドレス、転送先アドレス、転送長として設定する。
但し、命令コードの複製は外部SDRAMデバイス400のカラムアドレスと外部ROMデバイス200のアドレスのカラムアドレスに相当する下位12ビットが等しくなる必要があるため、予め転送アドレスの下位12ビットを等しく設定しておくか、或いは転送先アドレス又は転送元アドレスの何れかの下位12ビットのみが有効になるものとする。
次に、MEMC160は外部ROMデバイス200から外部SDRAMデバイス400への命令コードの複製を開始する。MEMC160による複製の動作は図10に示す実施例2と同じである。
DMA転送が完了すると、MEMC160はウエイトさせていたCPU110の外部SDRAMデバイス400へのアクセスを許可することで、CPU110は順次外部SDRAMデバイス400からの命令コードをフェッチする。これ以降、CPU110は外部SDRAMデバイス400に対してのみ命令コードをフェッチし、命令コードのフェッチを含む外部メモリアクセスのレイテンシーが削減され、システム全体の処理速度を高速化することが可能となる。
以上説明したように、実施例5によれば、外部ROMデバイス200から外部SDRAMデバイス400へ命令コードを複製する際に、CPU110を使用することなく、外部データバス162上でデータを直接複製することが可能となる。従って、複製に要する時間を大幅に短縮することが可能である。
更に、アドレスバス161とデータバス162を共有することで、LSIの外部端子を大幅に削減することも可能である。
次に、本発明に係る実施例6について説明する。尚、実施例6の主な構成及び具体的な接続形態は実施例2と同様であり、その説明は省略する。
実施例6では、MEMC160内の制御ビットを設定することで、外部ROMデバイス200から外部SDRAMデバイス400へ命令コードを複製した後、CPU110が外部SDRAMデバイス400に対してのみアクセス可能となり、仮にCPU110が外部ROMデバイス200へアクセスした場合にはCPU110に対してエラー応答を返す。これにより、プログラムのデバッグなど不必要な外部ROMデバイス200へのアクセスを容易に検出することが可能となる。
次に、図面を参照しながら本発明に係る実施例7について詳細に説明する。尚、実施例7の主な構成及び具体的な接続形態は実施例2と同様であり、その説明は省略する。
実施例7では、MEMC160が図19に示すDRAMプロテクト・レジスタを有するものである。このレジスタは、ビット毎に256KB単位でDRAM領域を書き込み不可に設定することが可能である。
例えば、外部ROMデバイス200のアドレス0xF001_0000番地から外部SDRAMデバイス400のアドレス0x0000_0000番地へ1MBの命令コードを複製した後に、DRAMプロテクト・レジスタに0x0000_000F番地を書き込むことでDRAM領域の0x0000_0000番地から0x000F_FFFF番地までの1MB領域を書き込み不可に設定することが可能である。
従って、CPU110は外部SDRAMデバイス400の0x0000_0000番地から0x000F_FFFF番地までの領域に対しては常に読み出しのみ可能であり、仮にCPU110が本領域に対してライトアクセスした場合はCPU100に対してエラー応答を返す。これにより、システムが予期しない動作を行うことによって外部SDRAMデバイス400上の命令コードが更新され、更に予期しない動作が起こることを防ぐことが可能となる。
次に、図面を参照しながら本発明に係る実施例8について詳細に説明する。尚、実施例8の主な構成及び具体的な接続形態は実施例1或いは実施例2と同様であり、その説明は省略する。
また、実施例8によるメモリマップは実施例1で用いた図6と同様であり、その説明も省略する。
次に、実施例8による構成において、システム起動時に外部ROM200の命令コードを外部DRAM300へ複製する動作について説明する。
まず初めに、外部からのパワーオンリセット等の初期リセットが解除されると、CPU110は内部のリセットベクタに応じたメモリ空間に対して最初の命令コードのフェッチを行う。このとき、初期状態で命令コードを保持できるのは不揮発性メモリであるROMデバイスのみであるため、CPU110のリセットベクタは外部ROMデバイス200の先頭アドレス0xF000_0000番地を指し示しており、命令コードも予めリセットベクタが指し示すアドレスから順番に外部ROMデバイス200に書き込まれているものとする。
従って、リセット解除後、CPU110はシステムバス150とMEMC160を経由して外部ROMデバイス200にアクセスし、メモリマップの0xF000_0000番地からシステムを初期化するための初期化コードを順次フェッチする。この初期化コードのフェッチ後、CPU110はその初期化コードの内容に従ってシステムの初期化を実施する。ここで、外部DRAMデバイス300に対しても外部ROMデバイス200にアクセスするためのアドレスと、外部ROMデバイス200から読み出されたデータが同時にドライブされるが、DRAMデバイス制御信号164によるアクセス許可が実行されていないため何ら影響を及ぼさない。
システムの初期化が完了すると、CPU110は、MEMC160に対して外部ROMデバイス200に書き込まれている命令コードを外部DRAMデバイス300へ複製するための設定を行う。この時点では、CPU110の動作は全て外部ROMデバイス200からフェッチした命令コードの内容に従って実施されている。以下、MEMC160により命令コードを複製する手順を示す。
尚、実施例8では、MEMC160は、図20に示すように、命令コードサイズ、複製元開始アドレス、複製先開始アドレス、命令コード複製タグを設定するためのレジスタを所有するものとする。また、各レジスタはCPU110によって設定される。
まず、命令コードサイズは外部ROMデバイス200から外部DRAMデバイス300に複製する命令コードのサイズを示し、1MBが設定される。また、複製元開始アドレスは複製元の外部ROMデバイス200上の開始アドレスを示し、0xF001_0000番地が設定される。更に、複製先開始アドレスは複製先の外部DRAMデバイス300上の開始アドレスを示し、0x0000_0000番地が設定される。そして、命令コード複製タグはビット毎に任意のサイズのメモリ領域が割り当てられており、外部ROMデバイス200への1回のアクセスで、この任意のサイズのメモリ領域が一度に全て外部DRAMデバイス300へ複製されて対応するタグビットがセットされる。
図20に示す例では、複製元開始アドレスから8ワード(16バイト)毎のメモリ領域が割り当てられており、例えばCPU110が0xF001_0000番地の命令コードをフェッチすると、0xF001_0000番地から0xF001_000F番地までの8ワード(16バイト)の命令コードが一度に外部ROMデバイス200から外部DRAMデバイス300へ複製されて対応する命令コード複製タグの0x0000番地のビットがセットされる。ここで、命令コード複製タグとメモリ領域の対応は構成するシステムに依存し、特にこの組み合わせに限定されない。
上述した設定が完了した後に、CPU110が0xF001_0000番地から0xF010_FFFF番地の命令コードをフェッチすると、MEMC160はアクセスされた命令コードを含む8ワード(16バイト)をCPU110とは独立に外部ROMデバイス200から外部DRAMデバイス300へ命令コードを複製する。このとき、8ワードのうち所望の命令コードを複製するときには、同時に命令コードを外部バスから読み出してシステムバス150を経由してCPU110へ戻す。また、所望の命令コード以外の複製中はCPU110のアクセスはウエイトさせられる。更に命令コードの複製が完了すると、MEMC160は対応する命令コード複製タグのビットをセットする。
ここで、図21を用いてCPU110が外部ROMデバイス200のアドレス0xF001_1234番地をアクセスした場合に、MEMC160によって行われる複製の動作について説明する。CPU110が外部ROMデバイス200の0xF001_1234番地をアクセスすることによりMEMC160は0xF001_1230番地から0xF001_123F番地の8ワード(16バイト)を一度に外部ROMデバイス200から外部DRAMデバイス300へ複製する。また、2回目の0xF001_1234番地の複製でMEMC160は同時に命令コードを外部データバス162から読み出してCPU110にシステムバス150を経由して戻す。
図21は、実施例8による命令コードを複製する際のタイミングチャートを示す図である。まず、MEMC160は時刻T0でRAS#、CAS#、WE#により外部DRAMデバイス300に対するアクティブコマンドを発行する。このとき、アドレスバス161の下位10ビットのみが有効であるため、ロウアドレスは0x001である。次に、MEMC160は時刻T1で外部ROMデバイス200と外部DRAMデバイス300に対して同一のアドレス0x11230をアドレスバス161上にドライブする。
図5に示す通り、外部ROMデバイス200に対してはアドレスバス161の20ビット全てが有効となるが、外部DRAMデバイス300に対してはカラムアドレスに相当する下位12ビットのみが有効となる。従って、この場合の外部DRAMデバイス300に対するカラムアドレスは0x230である。
次に、時刻T3でCS#とRD#をアサートすることにより外部ROMデバイス200に対してアドレス0x11230からの読み出し要求を行う。規定時間後、外部ROMデバイス200はデータバス162上にリードデータをドライブする。このとき、MEMC160は同時に時刻T5で外部DRAMデバイス300に対してもRAS#、CAS#、WE#によりライトコマンドを発行することによりアドレス0x01230への書き込み要求を行う。これにより、データバス162上にドライブされた命令コードは、直接外部DRAMデバイス300に書き込まれる。以降、同様にして命令コードの読み出しと書き込みを繰り返す。
また、連続したメモリ領域に対して順次命令コードを複製するため、次回からはページミスするまでアクティブコマンドを発行する必要はなくライトコマンドのみで良い。更にDRAMデバイス制御信号164のみを有効にすることで外部DRAMデバイス300に対して必要となるプリチャージコマンドやリフレッシュコマンドを発行することが可能である。
尚、外部ROMデバイス200に対しても外部DRAMデバイス300にアクセスするためのアドレスが同時にドライブされるがROMデバイス制御信号163によるアクセス許可が実行されていないため何ら影響を及ぼさない。
一旦、複製が完了して命令コード複製タグのビットがセットされると、次回からCPU110がこのメモリ領域へのアクセスを実行すると、MEMC160は外部DRAMデバイス300へのアクセスのみを実行する。例えば、CPU110が再度0xF001_1234番地の命令コードをフェッチした場合には、MEMC160は命令コード複製タグの対応するビットの値を確認し、「1」がセットされていれば外部ROMデバイス200にはアクセスしないで直接外部DRAMデバイス300にのみアクセスする。
これにより、命令コードのフェッチを含む外部メモリアクセスのレイテンシーが削減され、システム全体の処理速度を高速化することが可能となる。
以上説明したように、実施例8によれば、外部ROMデバイス200から外部DRAMデバイス300へ命令コードを複製する際に、アドレスバス161とデータバス162を共有することで内部システムバス150を経由することなく、外部データバス162上でデータを直接複製することが可能となる。従って、複製に要する時間を大幅に短縮することが可能である。
また、命令コードの複製と同時に命令コードのフェッチが行えるため、命令コード複製中のオーバヘッドを最小限に抑えることが可能である。
更に、アドレスバス161とデータバス162を共有することで、LSIの外部端子を大幅に削減することが可能である。
次に、図面を参照しながら本発明に係る実施例9について詳細に説明する。実施例9では、LSI100内部にキャッシュ(CASHE)を有するものである。
図22は、実施例9によるメモリ制御システムの構成の一例を示す図である。具体的な接続例及びMEMC160における命令コード複製タグとメモリ領域の対応は実施例8と同様である。
図22において、170はキャッシュであり、外部ROMデバイス200の命令コードを外部DRAMデバイス300に複製する際に、内部のシステムバス150を介してその命令コードを記憶しておく高速小容量メモリである。
尚、実施例9では、キャッシュ170は、プログラムなどCPU110の命令コードを格納する命令キャッシュとして説明する。また、命令キャッシュとは分離されて、CPU110が処理するデータを格納するデータキャッシュを有するものとする。
ここで、外部ROMデバイス200の命令コードがキャッシュ170に複製されると、CPU110はキャッシュヒットする限り、複製された命令コード(例えば命令コード1とする)を使用する。その後、キャッシュ170に複製された命令コード1に対してキャッシュミスした場合、同様に命令コード2がキャッシュ170にラインフィルされて外部ROM200から外部DRAM300へ複製される。この時、命令コード1は命令コード2によって上書きされる。
例えば、キャッシュ170の1ライン分のサイズが8ワード(16バイト)とすると、アドレス0xF001_1234番地に対してミスヒットした場合には、キャッシュ170は0xF001_1230番地から0xF001_123F番地までの8ワード(16バイト)のデータを読み出してキャッシュフィルする。この時、MEMC160は同時に図21に示すタイミングで外部ROMデバイス200から外部DRAMデバイス300へ命令コードを複製する。MEMC160は、この複製と同時に、8ワード(16バイト)全ての命令コードをデータバス162から取り込み、キャッシュ170へ戻す。そして、命令コードの複製が完了すると、MEMC160は対応する命令コード複製タグのビットをセットする。
更に、再度上述の命令コード1に対してキャッシュミスした場合、命令コード1は外部DRAMデバイス300からキャッシュ170にラインフィルされて複製は行われない。
例えば、キャッシュ170が再度0xF001_1234番地に対してミスヒットした場合には、MEMC160は命令コード複製タグの対応するビットの値を確認し、「1」がセットされていれば外部ROMデバイス200にはアクセスしないで直接外部DRAMデバイス300に対してのみアクセスし、0xF001_1230番地から0xF001_123F番地までの8ワード(16バイト)のデータを読み出す。
これにより、命令コードのフェッチを含む外部メモリアクセスのレイテンシーが削減され、システム全体の処理速度を高速化することが可能となる。
以上説明したように、実施例9によれば、ROMデバイスからDRAMデバイスへ命令コードを複製する際に、ROMデバイス及びDRAMデバイスのアドレス/データバス用の外部端子を共有し、両デバイスに対して同一のアドレスを発行し、内部のシステムバスを経由することなく、ROMデバイスから読み出したデータを同時にDRAMデバイスへ書き込むことでROMデバイスからDRAMデバイスへ命令コードを高速に複製することが可能となる。
更に、複製したメモリ領域を記憶しておくことで、次回からの同一メモリ領域へのアクセスをDRAMデバイスに対してのみ実施することが可能となり、システムの起動時間及び起動後の命令コードアクセスを高速化することが可能である。
尚、本発明は複数の機器(例えば、ホストコンピュータ,インターフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用しても良い。
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体としては、例えばフロッピー(登録商標)ディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
一般的なメモリ制御システムの構成を示す図である。 システム起動時にROM200からDRAM300へ命令コードが複製された際のメモリマップを示す図である。 ROM200からDRAM300へ命令コードを複製する際のタイミングチャートを示す図である。 実施例1によるメモリ制御システムの構成の一例を示す図である。 LSI100と外部ROMデバイス200及び外部DRAMデバイス300との具体的な接続形態を示す図である。 実施例1によるメモリマップの一例を示す図である。 実施例1による命令コードを複製する際のタイミングチャートを示す図である。 実施例2によるメモリ制御システムの構成の一例を示す図である。 LSI100と外部ROMデバイス200及び外部SDRAMデバイス400との具体的な接続形態を示す図である。 実施例2による命令コードを複製する際のタイミングチャートを示す図である。 実施例3によるメモリマップの一例を示す図である。 実施例3による命令コードを複製する際のタイミングチャートを示す図である。 外部ROMデバイス200と外部SDRAMデバイス400とのアドレスのオフセットが異なる場合のアドレス生成の概念図である。 MEMC160内のアドレス生成の概念図である。 実施例4によるメモリマップの一例を示す図である。 実施例5によるメモリ制御システムの構成の一例を示す図である。 実施例5によるメモリマップの一例を示す図である。 メモリ構成信号166の構成の一例を示す図である。 実施例7によるDRAMプロテクト・レジスタを示す図である。 実施例8によるMEMC160の内部レジスタを示す図である。 実施例8による命令コードを複製する際のタイミングチャートを示す図である。 実施例9によるメモリ制御システムの構成の一例を示す図である。
符号の説明
100 LSI
110 CPU
120 ROMコントローラ(ROMC)
130 DRAMコントローラ(DRAMC)
140 DMAコントローラ(DMAC)
150 システムバス
160 メモリコントローラ(MEMC)
161 アドレスバス
162 データバス
163 ROMデバイス制御信号
164 DRAMデバイス制御信号
165 SDRAMデバイス制御信号
166 メモリ構成信号
170 キャッシュ(CASHE)
200 外部ROMデバイス
300 外部DRAMデバイス
400 外部SDRAMデバイス

Claims (11)

  1. 外部に接続された不揮発性のメモリデバイスと揮発性のメモリデバイスへのアクセスを制御するメモリ制御システムであって、
    不揮発性のメモリデバイスと揮発性のメモリデバイスとを接続する接続手段と、
    前記不揮発性のメモリデバイスと揮発性のメモリデバイスとをそれぞれ同時に独立して制御するメモリ制御手段とを有し、
    前記メモリ制御手段は、システム起動時に前記接続手段を介して前記不揮発性のメモリデバイスからデータを読み出すと同時に前記接続手段を介して当該データを前記揮発性のメモリデバイスに書き込むように制御することを特徴とするメモリ制御システム。
  2. 前記揮発性のメモリデバイスはシンクロナスDRAMであり、
    前記メモリ制御手段は、該シンクロナスDRAMに対して所定の制御コマンドが必要な場合に、該シンクロナスDRAMに対してのみ制御コマンドを発行することを特徴とする請求項1記載のメモリ制御システム。
  3. 前記揮発性のメモリデバイスはシンクロナスDRAMであり、
    前記メモリ制御手段は、前記不揮発性のメモリデバイスと揮発性のメモリデバイスとに対して同一のオフセットアドレスによりメモリ領域を順次アクセスすることを特徴とする請求項1記載のメモリ制御システム。
  4. 前記メモリ制御手段は、前記不揮発性のメモリデバイスから前記揮発性のメモリデバイスへ書き込むデータのサイズ及びメモリデバイスの構成に関する情報を記憶する記憶手段を含み、前記記憶手段に記憶した当該情報に基づいてデータのアクセスを制御することを特徴とする請求項1記載のメモリ制御システム。
  5. 前記不揮発性のメモリデバイスから前記揮発性のメモリデバイスへ書き込むデータのサイズ及びメモリデバイスの構成に関する情報は、外部より入力されることを特徴とする請求項1記載のメモリ制御システム。
  6. 前記メモリ制御手段は、前記不揮発性のメモリデバイスから前記揮発性のメモリデバイスへ所望のデータを全て書き込んだ後に、前記不揮発性のメモリデバイスへのアクセスを禁止することを特徴とする請求項1記載のメモリ制御システム。
  7. 前記メモリ制御手段は、前記不揮発性のメモリデバイスから前記揮発性のメモリデバイスへ所望のデータを全て書き込んだ後に、前記揮発性のメモリデバイスへのアクセスは読み出しのみ可能とすることを特徴とする請求項1記載のメモリ制御システム。
  8. 前記メモリ制御手段は、前記不揮発性のメモリデバイスから前記揮発性のメモリデバイスへデータを書き込んだメモリ領域を記憶しておき、再度同一のメモリ領域に対する読み出し要求があった場合に、前記揮発性のメモリデバイスに対してのみ読み出しを行うことを特徴とする請求項1記載のメモリ制御システム。
  9. 前記メモリ制御手段は、前記不揮発性のメモリデバイスからデータを読み出す際に、該読み出しデータを含む既定長の周辺アドレスのデータに対しても前記不揮発性メモリデバイスから読み出して前記揮発性メモリデバイスへ書き込むことを特徴とする請求項8記載のメモリ制御システム。
  10. キャッシュメモリを有し、前記キャッシュメモリのデータがミスヒットした際に、前記キャッシュメモリから読み出す1ライン分のデータと前記不揮発性のメモリデバイスから読み出して前記揮発性のメモリデバイスへ書き込む既定長のデータが一致することを特徴とする請求項9記載のメモリ制御システム。
  11. 外部に接続された不揮発性のメモリデバイスと揮発性のメモリデバイスへのアクセスを制御するメモリ制御装置であって、
    不揮発性のメモリデバイスと揮発性のメモリデバイスとを接続する接続手段と、
    前記不揮発性のメモリデバイスと揮発性のメモリデバイスとをそれぞれ同時に独立して制御するメモリ制御手段とを有し、
    前記メモリ制御手段は、システム起動時に前記接続手段を介して前記不揮発性のメモリデバイスからデータを読み出すと同時に前記接続手段を介して当該データを前記揮発性のメモリデバイスに書き込むように制御することを特徴とするメモリ制御装置。
JP2004339444A 2004-11-24 2004-11-24 メモリ制御システム及びメモリ制御装置 Withdrawn JP2006146817A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004339444A JP2006146817A (ja) 2004-11-24 2004-11-24 メモリ制御システム及びメモリ制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004339444A JP2006146817A (ja) 2004-11-24 2004-11-24 メモリ制御システム及びメモリ制御装置

Publications (1)

Publication Number Publication Date
JP2006146817A true JP2006146817A (ja) 2006-06-08

Family

ID=36626396

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004339444A Withdrawn JP2006146817A (ja) 2004-11-24 2004-11-24 メモリ制御システム及びメモリ制御装置

Country Status (1)

Country Link
JP (1) JP2006146817A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011123648A (ja) * 2009-12-10 2011-06-23 Canon Inc メモリ制御回路
JP2011197789A (ja) * 2010-03-17 2011-10-06 Ricoh Co Ltd メモリ制御装置及びマスクタイミング制御方法
US9116783B2 (en) 2011-10-25 2015-08-25 Renesas Electronics Corporation Bus connection circuit, semiconductor device and operation method of bus connection circuit for making procedure for switching between a 1-cycle transfer and a 2-cycle transfer unnecessary
US9244824B2 (en) 2012-07-05 2016-01-26 Samsung Electronics Co., Ltd. Memory sub-system and computing system including the same

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011123648A (ja) * 2009-12-10 2011-06-23 Canon Inc メモリ制御回路
JP2011197789A (ja) * 2010-03-17 2011-10-06 Ricoh Co Ltd メモリ制御装置及びマスクタイミング制御方法
US9116783B2 (en) 2011-10-25 2015-08-25 Renesas Electronics Corporation Bus connection circuit, semiconductor device and operation method of bus connection circuit for making procedure for switching between a 1-cycle transfer and a 2-cycle transfer unnecessary
US9244824B2 (en) 2012-07-05 2016-01-26 Samsung Electronics Co., Ltd. Memory sub-system and computing system including the same

Similar Documents

Publication Publication Date Title
KR100281432B1 (ko) 플래쉬 메모리에 기초한 주메모리
US20180275921A1 (en) Storage device
US7441070B2 (en) Method for accessing a non-volatile memory via a volatile memory interface
US7299323B2 (en) Memory controller having a read-modify-write function
US20080010420A1 (en) Method for Accessing Control Registers via a Memory Device
JP2007183961A (ja) ハードディスクドライブキャッシュメモリ及び再生デバイス
KR20190089172A (ko) 주 메모리 시스템을 통해 코프로세서와 입력/출력 장치를 인터페이싱하는 시스템 및 방법
US20080010419A1 (en) System and Method for Issuing Commands
KR100679370B1 (ko) 메모리 소자에서의 워드 순서지정 방법
JP2007183962A (ja) 一体型メモリ及びコントローラ
JP5914148B2 (ja) Ssd(ソリッドステートドライブ)装置
JP2004139503A (ja) 記憶装置及びその制御方法
JP2008305350A (ja) メモリシステム、メモリ装置、およびメモリ装置の制御方法
JP2018205859A (ja) メモリコントローラとその制御方法
US20080007569A1 (en) Control protocol and signaling in a new memory architecture
WO2007116486A1 (ja) メモリ装置、その制御方法、その制御プログラム、メモリ・カード、回路基板及び電子機器
US20060195665A1 (en) Access control device, method for changing memory addresses, and memory system
JP6228523B2 (ja) メモリ制御回路および半導体記憶装置
US9904622B2 (en) Control method for non-volatile memory and associated computer system
JP4972212B2 (ja) ブリッジ回路
JP2006146817A (ja) メモリ制御システム及びメモリ制御装置
JP4471947B2 (ja) データ処理装置及びデータ処理方法
US11550740B2 (en) Data storage device with an exclusive channel for flag checking of read data, and non-volatile memory control method
US20220366949A1 (en) Electronic device, operation method of host, operation method of memory module, and operation method of memory device
KR100298955B1 (ko) 데이타처리시스템

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080205