(57)【特許請求の範囲】
【請求項１】
メモリと、CPUと、メモリ及びCPU間でのデータの読み出し・書き込みを制御するメモリ制御部とを備えた情報処理装置において、
前記CPUは、バーストアクセス方式でデータを転送する第１のデータ転送インタフェース機能と、シングルアクセス方式でデータを転送する第２のデータ転送インタフェース機能と、前記メモリをアクセスするために発生されたアドレスに基づいて前記第１のデータ転送インタフェース機能及び第２のデータ転送インタフェース機能のうちの何れか一方を選択する第１の選択部とを有し、
前記メモリ制御部は、前記第１のデータ転送インタフェース機能で転送されたデータをパイプライン動作して連続転送し、エラー訂正符号を生成可能な最小のビット数またはその整数倍の書き込み動作のみを可能とし、データごとにエラー訂正符号を生成するバーストアクセス用エラー訂正符号生成機能と、前記第２のデータ転送インタフェース機能で転送されたデータごとに転送し、エラー訂正符号を生成可能な最小のビット数より少ないビット数の書き込み動作を可能とし、データごとにエラー訂正符号を生成するシングルアクセス用エラー訂正符号生成機能と、前記CPUからの前記メモリをアクセスするために発生された前記アドレスに基づいて前記バーストアクセス用エラー訂正符号生成機能及びシングルアクセス用エラー訂正符号生成機能のうちの何れか一方を選択する第２の選択部とを有することを特徴とする情報処理装置。
【請求項２】
請求項１において、
前記CPUは、バーストアクセスを行うエリアとシングルアクセスを行うエリアをアドレス空間に割り当て、割り当てられた結果を出力するデコード回路を有することを特徴とする情報処理装置。
【請求項３】
請求項２において、
前記第２の選択部は、前記デコード回路からの出力に基づいて何れか一方のエラー訂正符号生成機能を選択し、
前記第２の選択部の出力に基づいて選択された前記エラー訂正符号生成機能によりメモリをアクセスすることを特徴とする情報処理装置。
【請求項４】
請求項３において、
前記バーストアクセス用エラー訂正符号生成機能及び前記シングルアクセス用エラー訂正符号生成機能は、前記メモリへの書き込みアクセス時、書き込むべきデータに対し所定ビットのエラー訂正符号を付加して書き込み、前記メモリからの読み出しアクセス時、読み出されたデータ中のエラー訂正符号に基づいてエラー検出訂正を行うことを特徴とする情報処理装置。
【請求項５】
請求項１において、
前記メモリ制御部は、前記シングルアクセス用エラー訂正符号生成機能にのみ、前記少ないビット数の書き込み動作時に生じるサイクル延長を前記CPUへ要求するためのサイクル延長要求信号を出力することを可能とする端子を有することを特徴とする情報処理装置。
【請求項６】
請求項１において、
前記第１のデータ転送インタフェース機能は、行アドレス及び列アドレスを時分割で前記メモリ制御部へ出力することを特徴とする情報処理装置。
【発明の詳細な説明】
技術分野
本発明は、高性能かつ高信頼性が要求される情報処理装置に係り、特に埋め込み型コントローラシステムのメモリ制御に関する。
背景技術
アクセスを高速化するために高速バースト転送モードを備える高速メモリデバイスが近年次々と現れてきた。EDOモードつきDRAMやSynchronous DRAM（SDRAM）,Synchronous SRAM等と呼ばれるものである。これらは読み出しの際にアドレスを順次切り替えてデータをクロック同期で順次出力するパイプライン動作を行う。
一方、近年の半導体技術の進歩により、マイクロコンピュータが広く適用されるようになった。種々の機器の内部に埋め込まれて制御機能を担うコントローラ分野でも組込み型マイコンにより、小形，高性能が実現されている。代表的な組込み型マイコンとしては、日立のSHマイコン（SH−2,SH−３）があげられる。SHマイコンは、通常のシングルアクセスインタフェース機能（１バスサイクルあたり１データのみアクセス）と、バーストアクセスインタフェース機能を備え、ユーザシステムごとに、どちらのインタフェースを使うか設定できるようになっている。特に、バーストアクセスインタフェースは外部付加回路なしにSDRAMを直結できるインタフェースであり、装置を小形化するのに適している。
ところで、医療，プラント制御，交通，自動車など高信頼を要求する分野でもマイコンの適用は進んでいる。高信頼化するために注目されている点では、ノイズやα線の影響によりメモリのデータの誤りが発生することである。この問題を解決するためメモリにパリティ（Parity）やECC（Error Correcting Code,エラー訂正符号）機能をつけることが一般的である。
ECC機能とは、例えば32ビットデータに対して７ビットのエラー訂正符号をつけることで、１ビットエラー訂正、２ビットエラー検出するものである。メモリにECC機能を持たせる場合の基本動作を説明する。メモリに32ビットのデータを書き込むとき、ECCエラー訂正符号７ビットを生成して、データとともに39ビット幅で書き込む。メモリから訂正符号付きの39ビットのデータを読み出して、ECCエラー検出訂正を行い、32ビットのデータを得る。ECC制御の複雑な点として、必ず32ビットのデータに対してのみECCエラー訂正符号（ECCビット）を生成しなければならない。つまり、32ビットデータの書き込みを行うときは単純にECCビットを付加して書き込めばよいが、バイト単位の書込動作をするときには以下の手順が必要である。
ａ）書き込むアドレスの32ビットデータをメモリから読み出す。
ｂ）書き込むデータをａ）のデータに埋め込んで新たな32ビットデータとする。
ｃ）ｂ）のデータに対しECCビットを生成してからメモリへ書き込む。
なお、バイト単位の書き込みをパーシャルライト、その時の動作をリードモディファイライトと呼ぶ。
しかしながらSHマイコン等、多くの組み込み型マイコンにはこの機能は備えられておらず、外部のECC制御回路に付加する必要がある。
SHマイコンのようにバーストアクセスインタフェース機能を有するCPUの外部にECC制御回路を付加するとき、つぎの２つの問題が生じる。
第１の問題は、高速化するためにバーストアクセスインタフェース機能を使用してメモリアクセスを行いたいがパーシャルライト（バイト単位の書込動作）ができない点である。
第２の問題は、パーシャルライトを行えるようにするためシングルアクセスインタフェース機能を使用することは可能であるが、メモリの高速バースト転送モードは利用できず、高速なメモリアクセスができない点である。
尚、以下本明細書では、「アサート（assert）」および「ネゲート（negate）」という言葉と各所に用いる。これは信号には“アクティブ・ハイ（active−high）”と“アクティブ・ロウ（active−low）”があり、これらを混在して扱う場合の混乱を防ぐためである。アクティブ・ロウの信号はその名称の先頭に“^"をつけて示す。
「アサート」というのは電位レベルが“Low",“High"にかかわらず信号がアクティブ（有効）つまり真（true）であることを意味する。そして、「ネゲート」というのは信号がインアクティブ（無効）つまり偽（false）であることを意味する。
発明の開示
本発明は、ECCによる高信頼化とメモリアクセスの高速化を両立し得る情報処理装置を提供することを目的とする。
本発明は、データを所定の方式で転送する第１のデータ転送インタフェースと、前記所定の方式とは異なる方式でデータを転送する第２のデータ転送インタフェースを有するCPUと、前記第１のデータ転送インタフェースに対応する第１のエラー検出制御手段と、前記第２のデータ転送インタフェースに対応する第２のエラー検出制御手段を有し、メモリと前記CPUとの間でのデータの読み出し・書き込みを制御するメモリ制御部と、前記第１のエラー検出制御手段と第２のエラー検出制御手段をそれぞれ異なるアドレス空間に割り当て、前記メモリをアクセスするために発生されるアドレスに基づいて何れか一方のエラー検出制御手段を選択する選択手段を有し、前記選択手段の出力に基づいて選択された前記第１又は第２のエラー検出制御手段によりメモリをアクセスするようにしたことに特徴がある。
具体的には、前記第１のデータ転送インタフェースはバーストアクセス方式でデータを転送するためのものであり、前記第２のデータ転送インタフェースはシングルアクセス方式でデータを転送するためのものである。更に、前記第１のエラー検出手段及び第２のエラー検出手段は共にECC制御機能を有するものであり、特に、第２のエラー検出制御手段は、ｎビット幅より少ないデータに対して始めにｎビット境界のデータをメモリより読み出し、この読み出したデータに、ｎビット幅より小さい書き込みデータを埋め込み、その上でエラー訂正符号を付加する（パーシャルライトを実行）。
本発明によれば、バーストアクセスインタフェースとシングルアクセスインタフェースを適宜選択しECCによる高信頼化がなされるので、通常は高速なバーストアクセスインタフェースを使用し、必要とするときのみシングルアクセスを使用してメモリアクセスの平均的高速化を図ることができる。
従って、ECCによる高信頼化とバーストアクセスインタフェースによるメモリアクセスの高速化の両立が可能となる。
【図面の簡単な説明】
第１図は、本発明の一実施例の概要構成を示すブロック図である。
第２図は、アドレス空間割り当てを示すマップである。
第３図は、アドレスデコード方法を示すブロック図である。
第４図は、アドレス空間割り当てを示すマップである。
第５図は、アドレスデコード方法を示すブロック図である。
第６図は、MCU内部構成を示すブロック図である。
第７図は、簡単化されたMCU内部構成を示すブロック図である。
第８図は、CPUとMCUとSDRAMの接続関係を示す配線図である。
第９図は、MCU内部のデータパスの構成を示すブロック図である。
第10図は、MCU内部の制御部の構成を示すブロック図である。
第11図は、レイテンシ設定法を示すブロック図である。
第12図は、バーストアクセスによる読み出し動作を示すタイムチャートである。
第13図は、バーストアクセスによる書き込み動作を示すタイムチャートである。
第14図は、シングルアクセスによる読み出し動作を示すタイムチャートである。
第15図は、シングルアクセスによる32ビット書き込み動作を示すタイムチャートである。
第16図は、シングルアクセスによるパーシャルライト動作を示すタイムチャートである。
第17図は、エラーアドレスラッチの動作を示すタイムチャートである。
第18図は、本発明の一実施例を示すブロック図である。
第19図は、本発明の一実施例を示すブロック図である。
第20図は、本発明の一実施例を示すブロック図である。
第21図は、システム構成を示すブロック図である。
第22図は、システムバスとの接続方法を示すブロック図である。
発明を実施するための最良の形態
以下、本発明の実施例を図面を用いて説明する。
（実施例１）
第１図は本発明の一実施例の概要を示すブロック図である。
CPU（中央演算処理装置,Central Processing Unit,マイコン）101とMCU（メモリ制御部,Memory Control Unit）102とメモリ103により構成する。
CPU101はキャッシュメモリ104を内部に備える。CPUの内部レジスタとメモリとの間のデータ転送命令を実行する際、あるいは命令フェッチの際、キャッシュメモリ上にコピーが存在しないとき（キャッシュミス）、外部のメモリ103へのアクセス動作を開始する（内部I/F112）。外部のメモリ103へのアクセスはバーストアクセスI/F機能106あるいはシングルアクセスI/F機能107を選択する。選択の判断はデコード回路105によって行う。デコード回路105は内部I/F112の一部のアドレス113をもとにアドレス空間を識別する。バーストアクセスI/F機能106の外部メモリ用入出力114とシングルアクセスI/F機能107の外部メモリ用入出力115を選択する機能を持つ選択部108はデコード回路105の出力116でどちらかを選ぶ。選択されたものがCPU101の外部（外部入出力I/F117）へ現れる。
MCU102はECCをサポートする目的のもので、本発明の特徴を有するものである。内部にバーストアクセス用ECC制御機能109とシングルアクセス用ECC制御機能110を有する。バーストアクセス用ECC制御機能109は32ビットのデータをパイプライン動作して連続転送するもので、32ビットのデータごとにエラー検出,ECC生成を行う。シングルアクセス用ECC制御機能110は32ビット単位の読み出しと書き込み、16ビット,8ビット単位の書き込み（パーシャルライト）をECC付きで行うものである。これら２つのECC制御機能の選択はCPU101の内部と対応しなければならない。従ってバーストアクセス用ECC制御機能109の外部メモリ用入出力119とシングルアクセス用ECC制御機能110の外部メモリ用入出力120を選択する機能を持つ選択部111はデコード回路105の出力116でどちらかを選ぶ。選択されたものがMCU102の外部（外部メモリI/F121）へ現れる。サイクル延長要求信号である^WAIT出力118はシングルアクセス用ECC制御機能110にのみサポートし、パーシャルライトを行う際に生じるサイクル延長を実現する。
メモリ103は高速バースト転送機能をサポートしているもので、DRAM,SDRAMなどで構成する。
つぎに第１図におけるデコード回路105の機能について詳細を説明する。
デコード回路105はバーストアクセスを行うエリア（パーシャルライト不可）とシングルアクセスを行うエリア（パーシャルライト可）をアドレス空間に割り当てる機能を担う。
第２図はアドレス空間割り当ての実施例である。
パーシャルライト不可のエリアA200とパーシャルライト可のエリアB201を全く別の空間に割り当てたことを示す。それぞれのエリアは実メモリエリア202に等しい大きさを持ち、それぞれのエリアへのアクセスは実体がただ一つのメモリに対して行われる。
第３図は、第２図に示した割当方法をデコード回路105で実現する構成を示す。
アドレス113はｍビットでバイトアドレスを指し示し、メモリ103は（２のｎ乗）バイトの容量を持つとする。このときメモリ103の領域（第２図の202）の特定のバイトアドレスを指定するのはLSB（最下位ビット）のb0からｂ（ｎ−１）までのビット301である。アドレス空間のエリアA200とエリアB201を指定するのはbnからｂ（ｍ−１）までのビット300である。デコードA302の回路でエリアＡを識別する。一方、デコードB303の回路でエリアＢを識別する。
具体例として、アドレス113が32ビット構成、メモリ103の容量が８メガバイトの場合、ｍ＝32,n＝23である。アドレス空間は128個の８メガバイトアドレスエリアに分割される。通常、一つのエリアにメモリ103の空間を割り当てるが、本実施例は唯一のメモリを２つのエリアA,Bからそれぞれ８メガバイトアドレスエリアとしてアクセスできるように割り当てるのである。
本発明の特徴として、エリアA200はバーストアクセスを行うエリア（パーシャルライト不可）に、エリアB201はシングルアクセスを行うエリア（パーシャルライト可）にする。システムとしての使い分けは、コピーバック方式のキャッシュメモリを使用し、キャッシュのライン単位（16バイト単位等）でバーストアクセス転送しか生じないエリアをエリアA200とし、キャッシュをOFFの状態で使用し16ビット,8ビット単位の書き込みが必要となるエリアをエリアB201とする。ソフトウエアでこの２つのエリアを使い分ける。
第８図は、第１図のメモリ103をSDRAMで構成し、このSDRAMとCPU101とMCU102との接続関係を示したものである。
16Mビット（1048576ワード×８ビット×２バンク構成）のSDRAMを５個使用し、４個（822〜825）は32ビットのデータ幅で8Mバイトの容量とし、１個（826）は７ビットのECCデータを割り当てる構成である。32ビットのデータに対して７ビットのECCビットを付加するのは一般にSECDED（Single bit Error Correction/Double bit Error Detection）と呼ばれる方式によるものである。SECDED方式は１ビットの誤り訂正機能と２ビットの誤り検出機能を有する。
以下、各接続信号について簡単に説明する。
（１）CPU101とMCU102のインタフェース信号
0003643601.tif 000002
（２）MCU102とSDRAM（822〜826）のインタフェース信号
0003643601.tif 000003
（３）その他
0003643601.tif 000004
本発明において注目しておくべき点は以下のとおりである。
（ア）^CS_A（801）と^CS_B（802）によりメモリのバーストアクセスとシングルアクセスを選択すること。
（イ）ADDR（601）がバーストアクセスとシングルアクセスで動作が異なること。
（ウ）^RAS（806）と^CAS（807）はバーストアクセスでのみ使用すること。
（エ）^WAIT（118）はシングルアクセスでのみ使用すること。
これより、MCU102について詳細を説明する。
第６図にMCUの内部構成を示す。
バーストアクセス用ECC制御機能109の内部は大きくわけてデータパスA608と制御部A609で構成する。データパスA608の内部は，アドレス601を入力してそれを操作し出力（631）する「アドレス操作部Ａ」612と、読み出し時にデータを入力（626）してECCによるエラー検出および訂正を行い出力（629）する「エラー検出／訂正部Ａ」613と、書込時にデータを入力（607）してECCビットを生成し出力（638）する「ECC生成部Ａ」614から成る。
一方、シングルアクセス用ECC制御機能110の内部は大きくわけてデータパスB610と制御部B611で構成する。データパスB610の内部は、アドレス601を入力してそれを操作し出力（632）する「アドレス操作部Ｂ」615と、読み出し時にデータを入力（626）してECCによるエラー検出および訂正を行い出力（630）する「エラー検出／訂正部Ｂ」616と、書込時にデータを入力（607）してECCビットを生成し出力（634）する「ECC生成部Ｂ」617から成る。
「エラー検出／訂正部Ｂ」616からの出力630と同時にECC生成部617にも同じデータを出力する（637）。このデータ出力637はパーシャルライトを行うときにメモリから一度読み出したデータを書込データ（607）とマージ（Merge）するためのデータパスである。
選択部111の内部はアドレス，データ読み出し，データ書き込み，制御信号に対応して選択機能を持つ。選択機能619はアドレス出力631と632を選択する。選択機能618はデータ読み出し時のためにデータ629と630を選択する。選択機能620は書き込み時のためにデータ633と634を選択する。選択機能621は制御信号635と636を選択する。
CPU101との外部入出力I/F117はアドレス601,データ602、そしてその他の制御信号603を有する。一方、メモリとのインタフェース信号121はアドレス622,データ623、そしてその他の制御信号624から成る。
データ601,623はCPU101が読み出しを行うときと書き込みを行うときとで入出力方向が異なるため２つのECC制御機能109,110や選択部111には分別して配送する。データの読み出しにはバッファ625,バッファ出力626,選択部出力606,バッファ604を使用し、書き込みにはバッファ605,バッファ出力607,選択部出力628,バッファ627を使用する。
第６図の構成は本発明の基本的な考え方をそのまま適用した場合であり、これを簡単化してハードウエアコストを抑えることができる。「エラー検出／訂正部Ｂ」616は「エラー検出／訂正部Ａ」613と同一とすることができ、また、「ECC生成部Ｂ」617は「ECC生成部Ａ」614との違いをマージ機能の有無のみとすることができるのである。従ってこれらは兼用することが可能であり別個に備える必要はない。兼用した場合その出力の選択部も省略できる。
第６図で示した構成を機能の兼用により簡単化したものを第７図に示す。
第６図に示したものとの違いは兼用化した「エラー検出／訂正部AB」701と「ECC生成部AB」702である。これらの出力704と705に対する選択部は不要であり省略した。「ECC生成部AB」702はマージ機能を持ち、「エラー検出／訂正部AB」701の出力データ703と書込データ607のマージが可能である。マージ機能は制御部Ｂの指示によりパーシャルライトを行うときにのみ使用するものである。
これより、第７図の構成を元にした実施例をより詳細に説明をする。
第９図は、MCU内部のデータパスの構成を示す図で、第７図におけるデータパス706の部分を第８図の接続関係に合わせて示したものである。
アドレス操作部A612はバーストアクセス時のアドレスを操作するためのものである。アドレス操作部A612で必要な機能は書き込み時にはECC生成を行うために列アドレスをSDRAMに与えるタイミングを１サイクル遅らせることである（後述）。従って、書き込み時の列アドレスをSDRAMに与えるときは列アドレス用ラッチ901の出力902を選択（セレクタ903）し、それ以外の時はADDR［13:2］をそのまま出力する（631）。出力631は選択部619により、第８図の^CS_A801がアサートされているとき有効となる。
アドレス操作部B615はシングルアクセス時のアドレスを操作するためのものである。シングルアクセス時はここで行アドレス（ADDR［22:11］に対応）と列アドレス）ADDR［22］とADDR［10:2］に対応、ADDR［22］はバンク選択）を選別しSDRAMに与えるようにする（905,906,907,632）。出力632は選択部619により、第８図の^CS_B802がアサートされているとき有効となる。
「エラー検出／訂正部AB」701はエラー検出および訂正機能919とエラーアドレス保持部904を備える。
エラー検出および訂正機能919はSECDED方式により読み出しデータのエラー検出および訂正を行う。読み出しデータはバーストアクセス実行時、シングルアクセス実行時共にエラー検出および訂正機能919を通してCPU101にデータを転送する。
エラーアドレス保持部904は読み出しデータにエラーを検出した際にそのアドレスを保持しておき、後ほどCPU101から読み出せるようにするためのものである。データにエラーを検出したとき、割り込みを発生させたり、ある特定のレジスタにフラグを立てておくなどしてCPU101に通知しておけばよい。
エラーアドレス保持部904の内部構成を説明する。行アドレスラッチ908と列アドレスラッチ909、そしてこれら２つのラッチの出力911を合わせて入力とするエラーアドレスラッチ910から成る。選択619の出力からアドレスの再構成を行うようにすることによって、バーストアクセス時にもシングルアクセス時にも共通に用いることができる。セレクタ913はエラーアドレスの読み出しの際にのみエラーアドレスラッチ910の出力912を選択出力（704）するものであり、それ以外の時はエラー検出および訂正機能919の出力703を選択出力する。
「ECC生成部AB」702はマージ機能915を持ち、「エラー検出／訂正部AB」701の出力データ703と書込データ607のマージが可能である。マージ機能は制御部Ｂの指示によりパーシャルライトを行うときにのみ使用するものである。パーシャルライトが発生すると、制御部Ｂにより書き込むアドレスの32ビットデータをメモリから読み出す。パーシャルライトの書込データ（607より）を読み出したデータ（703より）に埋め込んで出力（916）するように読み出す。パーシャルライトを行わないときはマージ機能は単に入力607をそのまますべて出力（916）する。
ECC生成917は32ビットのデータ916に対して７ビットのECCビットを生成する機能を持つ。テンポラリラッチ918はECC生成917がECCビットを生成する遅延時間に合わせてデータを１サイクルずつ保持するものである。
次に第10図は、MCU内部の制御部の構成を示すブロック図で、第７図における制御部A609,制御部B611の周辺部を第８図の接続関係に合わせて示したものである。
制御部A609はバーストアクセス時の制御を担い、基本的にはCPU101のバーストアクセス時の制御信号をそのまま出力する。例外的場合は書き込み時に列アドレスと書込データを出力するときである。それは、ECCビットを生成する遅延時間に合わせて列アドレスと書込データを１サイクル遅らせる必要があるためである。２つのラッチ（1001,1002はそのためのものである。
制御部B611はシングルアクセス時の制御を担う。シングルアクセス時にはCPU101は^RAS806と^CAS807によるSDRAMの直接的制御信号を出力しない。従ってシングルアクセス時に制御部B611はこれらを生成しなければならない（RAS/CAS発生1004）。また、各種制御のタイミングの調整（1005）、そしてパーシャルライトの制御（1006）を行う必要がある。
選択621は制御部A609,制御部B611の制御信号出力を選択する。本実施例では^CS_B802のアサート時にのみ制御部B611の制御信号出力を選択し、ネゲート時は制御部A609の制御信号出力を選択するようにした。
次に第11図を用いてSDRAMの動作設定について説明する。
SDRAM（822〜826）は読み出し時において、ADDR622に列アドレスを与えてから何サイクル後にデータ出力（812〜816）を行わせるか（Cas Latencyと呼ぶ）を内部レジスタに任意（Ｎサイクル）に設定することができる。これに対してCPU101はバーストアクセスI/F機能106に同様にレジスタをもち、これに設定しておくことでタイミングを合わせ所望のデータを受け取る（602）ことができる。MCU102を間に置かず、直接CPU101がSDRAMを制御する場合はバーストアクセスI/F機能106側のCas LatencyはSDRAMと等しい。しかし本発明において、MCU102を間におき、「エラー検出／訂正部」701の遅延時間を確保するためにはSDRAMのＮサイクルより大きいＭサイクルをバーストアクセスI/F機能106側のCas Latencyに設定する。そうすれば「エラー検出／訂正部」701の遅延時間は（Ｍ−Ｎ）サイクルを確保できる。
なお本実施例においてはＭを３サイクル,Nを２サイクルに設定し、「エラー検出／訂正部」701の遅延時間（Ｍ−Ｎ）は１サイクルを確保した。
これより、第８図，第９図，第10図で示した構成についてタイムチャート（第12図〜第17図）を用いて動作説明を行う。
第12図はバーストアクセスによる読み出し動作を示すタイムチャートである。
第13図はバーストアクセスによる書き込み動作を示すタイムチャートである。
第14図はシングルアクセスによる読み出し動作を示すタイムチャートである。
第15図はシングルアクセスによる32ビット書き込み動作を示すタイムチャートである。
第16図はシングルアクセスによるパーシャルライト動作を示すタイムチャートである。
第17図は第９図で示したエラーアドレス保持部904の動作例を示すタイムチャートである。
各図面には上から順に以下のものを示す。
“Cycle"（1200）：サイクル名。説明のために１バスサイクルのの各時間に名前を付け指定する便宜上のものである。
CLOCK（1201）    :CPU101,MCU102,SDRAM（822〜826）への共通クロック信号の波形。
その他          ：第８図に示した接続信号の波形と第９図で示した機能の動作タイミングを示す。
第12図はバーストアクセスによるメモリの読み出し動作を示すタイムチャートである。
CPU101は１回のバースト転送につき４回データを読み出す。本実施例に用いたCPU101はアドレスの更新はCPU101が列アドレスを４回すべて指定する方式をとる。
CPU101からバーストアクセス時にはアドレス（601）の下位（［13:2］）に直接SDRAMが接続できるように行アドレスと列アドレスの値が出力される。r1サイクルで行（row）アドレス,r3〜r6では列（column）アドレスが順次現われることを示す。これを受け取ったMCU102は特に操作等を行わずにSDRAMへ出力する（622,r1〜r6）。MCU102内部でアドレス操作部A612を選択使用して実現できる。
SDRAMからの読み出しデータはr5〜r8サイクルに現われる（812〜816）。これらはr3〜r6で発行された列アドレスに対応するものであり、サイクル遅れは前記Cas Latency指定の値“2"に従うものである。
MCU102は読み出しデータを受け取り、内部の「エラー検出および訂正機能」919でエラー検出を行い、１ビットエラーが検出されたときは訂正する（r5〜r9サイクルにかけて）。
最終的にデータがMCU102からCPU101に出力される（602）のはr6〜r9サイクルである。CPU101は前記Cas Latency指定の値“3"に従って、このタイミングでデータをとりこむ。
以下は制御信号に関する説明である。
MCU102は^CS_A（801）がアサートされたことでバーストアクセスのサイクルであることを認識する。^CS_A（801）がアサートされていれば、^CS_B（802）はアサートされない。MCU102内部で制御部A609が選択使用され制御信号が出力される。
SDRAMへの^CS（827）はバスサイクル中アサートする。
CPU101の出力RD/^WR805がハイレベルで読み出し動作を示すことを受けて、SDRAMへの^we817もハイレベルのままである。
CPU101が作り出した^RAS806と^CAS807も読み出し時はそのままSDRAMへ出力する（818,819）。
読み出し動作時はDQMxx/^WEn（808〜811）はすべてローレベルである。
第13図はバーストアクセスによるメモリへの書き込み動作を示すタイムチャートである。
CPU101は１回のバースト転送につき４回データを書き込む。本実施例に用いたCPU101ではアドレスの更新はCPU101が列アドレスを４回すべて指定する方式をとる。
CPU101からバーストアクセス時にはアドレス（601）の下位に直接SDRAMが接続できるように、行アドレスと列アドレスの値が出力される。w1サイクルで行アドレス,w3〜w6では列アドレスが順次現われることを示す。これを受け取ったMCU102はECC生成のため１サイクル分データ転送が遅れることに合わせ、１サイクル遅れで列アドレスをSDRAMへ出力する（622,w4〜w7）。MCU102内部でアドレス操作部A612内セレクタ903の信号902側を選択する。
SDRAMへの書き込みデータ602はw3〜w6サイクルに現われる。これらは同じくw3〜w6で発行された列アドレスに対応するものである。
MCU102は書き込みデータを受け取り、内部の「ECC生成」917でECCビットの生成を行う。
最終的にデータとECCビットは１サイクル遅れでw4〜w7サイクルの期間にMCU102からSDRAMに出力する（812〜816）。
以下は制御信号に関する説明である。
MCU102は^CS_A（801）がアサートされたことでバーストアクセスのサイクルであることを認識する。^CS_A（801）がアサートされていれば、^CS_B（802）はアサートされない。MCU102内部で制御部A609が選択使用され制御信号が出力される。
SDRAMへの^CS（827）はバスサイクル中アサートする。
CPU101の出力RD/^WR805がローレベルで書き込み動作を示すことを受けて、SDRAMへの^we817はデータ（812〜816）に合わせ、ローレベルを１サイクル遅延して出力する。
CPU101が作り出した^RAS806については読み出し時と同様そのままSDRAMへ出力すればよい（^ras818）。^CAS807については、データ（812〜816）に合わせ、ローレベルを１サイクル遅れで出力する（^cas819）。
バーストアクセスの書き込み動作時、DQMxx/^WEn（808〜811）はすべてローレベルである。
第14図はシングルアクセスによるメモリの読み出し動作を示すタイムチャートである。
CPU101は１回のシングルアクセス転送につき１回だけデータを読み出す。
シングルアクセス時はCPU101からのアドレス（601）には単にビット［22:2］にそのまま値が出力されるだけであり、MCU内部でSDRAMへ与える行アドレス，列アドレスにするための操作を行う。R2サイクルで行アドレス,R4サイクルでは列アドレスを順次SDRAMへ出力する（622）。これはMCU102内部でアドレス操作部B615を選択して実現する。
SDRAMからの読み出しデータはR6サイクルに現われる（812〜816）。これらはR4サイクルで発行された列アドレスに対応するものであり、サイクル遅れは前記Cas Latency指定の値に従っている。
MCU102は読み出しデータを受け取り、内部の「エラー検出および訂正機能」919でエラー検出を行い、エラーが検出されたときは訂正する（R6〜R7サイクル）。
最終的にデータがMCU102からCPU101に出力される（602）のはR7サイクルである。
以下は制御信号に関する説明である。
MCU102は^CS_B（802）がアサートされたことでシングルアクセスのサイクルであることを認識する。MCU102内部で制御部B611が選択使用され制御信号が出力される。
SDRAMへの^CS（827）は^ras818と^cas819に合わせR2〜R4のサイクルでアサートする。
CPU101の出力RD/^WR805がハイレベルで読み出し動作を示すことを受けて、SDRAMへの^we817もハイレベルのままである。
CPU101は^RAS806と^CAS807を出力しないので^ras818と^cas819をMCU102内部の制御部B611で生成する（R2,R4サイクル）。
読み出し動作時はDQMxx/^WEn（808〜811）はすべてローレベルである。
^WAIT118はR3サイクルはじめのクロック立ち上がりからCPU101にサンプリングされる。データがMCU102はR2〜R6サイクルにアサートするように制御する。
第15図はシングルアクセスによるメモリへの32ビットデータの書き込み動作を示すタイムチャートである。
CPU101は１回のシングルアクセス転送につき１回だけデータを書き込む。
シングルアクセス時はCPU101からのアドレス（601）には単にビット［22:2］にそのまま値が出力されるだけであるため、MCU内部でSDRAMへ与える行アドレス，列アドレスにするための操作を行う。W2サイクルで行アドレス,W4サイクルでは列アドレスを順次SDRAMへ出力する（622）。これはMCU102内部でアドレス操作部B615を選択使用して実現できる。
CPU101からの書き込みデータ602はアドレス601と同様に出力される。
MCU102は書き込みデータ602を受け取り、内部の「ECC生成」917でECCビットの生成を行う。
最終的にデータがMCU102からSDRAMに出力される（812〜816）のはW4サイクルである。
以下は制御信号に関する説明である。
MCU102は^CS_B（802）がアサートされたことでシングルアクセスのサイクルであることを認識する。MCU102内部で制御部B611が選択使用され制御信号が出力される。
SDRAMへの^CS（827）は^ras818と^cas819に合わせW2〜W4のサイクルでアサートする。
CPU101の出力RD/^WR805がローレベルとなり書き込み動作を示すことを受けて、SDRAMへの^we817も^casに合わせてW4サイクルでローレベルを出力する。
CPU101は^RAS806と^CAS807を出力しないので^ras818と^cas819をMCU102内部の制御部B611で生成する（R2,R4サイクル）。
32ビットデータの書き込み動作時はDQMxx/^WEn（808〜811）はすべてローレベルである。
^WAIT118はW3サイクルはじめのクロック立ち上がりからCPU101にサンプリングされる。MCU102はW2〜W3サイクルにアサートするよう制御する。
第16図はシングルアクセスによるメモリへのパーシャルライト動作を示すタイムチャートである。
パーシャルライト動作はECCビットを32ビット単位のデータに対して付加していることから、以下の手順が必要である。
ａ）書き込むアドレスの32ビットデータを読み出す。（ECCチェックする。）
ｂ）書き込むデータをａ）のデータに埋め込んで新たな32ビットデータをつくる。
ｃ）ｂ）のデータに対しECCビットを生成してからメモリへ書き込む。
上記手順を踏まえて説明する。
シングルアクセス時はCPU101からのアドレス（601）には単にビット［22:2］にそのまま値が出力されるだけであり、MCU内部でSDRAMへ与える行アドレス，列アドレスにするための操作を行う。まず、手順ａ）のためPW2サイクルで行アドレス,PW4サイクルでは列アドレスを順次SDRAMへ出力する。次に手順ｃ）のためPW8サイクルに列アドレスをSDRAMへ出力する（622）。以上はMCU102内部でアドレス操作部B615を選択して実現する。
SDRAMからの読み出しデータはPW6サイクルに現われる（812〜816）。これらはPW4サイクルで発行された列アドレスに対応するものであり、サイクル遅れは前記Cas Latency指定の値に従っている。
MCU102は読み出しデータを受け取り、内部の「エラー検出および訂正機能」919でエラー検出を行い、エラーが検出されたときは訂正する（PW6〜PW7サイクル）（手順ａ））。
CPU101は書き込みデータ602をアドレス601と同様に出力する。PW7サイクルで「エラー検出および訂正機能」919を経たデータとCPU101からの書き込みデータ602をマージ（917）する（手順ｂ））。マージ後のデータに「ECC生成」917でECCビットの生成を行い、最終的にデータをMCU102からSDRAMに出力する（812〜816）のはPW8サイクルである。なおマージするバイト位置はDQMxx/^WEn（808〜811）で判断する。
以下は制御信号に関する説明である。
MCU102は^CS_B（802）がアサートされたことでシングルアクセスのサイクルであることを認識する。MCU102内部で制御部B611が選択使用され制御信号が出力される。
SDRAMへの^CS（827）は^ras818と^cas819に合わせPW2〜PW4およびPW8のサイクルでアサートする。
CPU101の出力RD/^WR805がローレベルとなり書き込み動作を示すことを受けて、SDRAMへの^we817も^casに合わせてPW8サイクルでローレベルを出力する。
CPU101は^RAS806と^CAS807を出力しないので^ras818と^cas819をMCU102内部の制御部B611で生成する（PW2,PW4,PW8サイクル）。
パーシャルライト動作時はDQMxx/^WEn（808〜811）は書き込みバイト位置を示している。制御部B611はこのうちハイレベルになっているものが１つでもあればパーシャルライトであることを認識する。
^WAIT118はPW3サイクルはじめのクロック立ち上がりからCPU101にサンプリングされる。MCU102はPW2〜PW7サイクルにアサートするように制御する。第15図と第16図を比べると実行サイクル数が異なり、CPU101に対する^WAITのアサート時間を変えて動作を保証する。
第17図は第９図で示したエラーアドレス保持部904の動作例を示すタイムチャートである。シングルアクセスによるメモリの読み出し動作でエラーを検出した場合を示す。
シングルアクセスによるメモリの読み出し動作ではR2サイクルで行アドレス、R4サイクルでは列アドレスを順次SDRAMへ出力する（622）。これをエラーアドレス保持部904のラッチで順次保持しておく（Row_Latch908,Col_Latch909）。
R6〜R7サイクルにかけて「エラー検出および訂正機能」919でエラー検出を行う。もしエラーが検出されたら上記２つのラッチ（908と909）の値をエラーアドレスラッチ（Err.Addr_Latch910）に取り込むよう制御する（R8サイクル）。
第21図は本発明をシステムとして構成したときのブロック図である。
モジュール2106は以下のもので構成する。
CPU101,MCU102,メモリ（SDRAM）103はこれまで説明したものである。更に、システムバス2100を通じてセンサ2114やアクチュエータ2115と接続2107して情報交換し、機器制御を行うためのI/OIF（2101）と、ハードディスク装置2111と接続2108して情報交換を行うSCSIIF（2102）と、ローカルエリアネットワーク2112と接続2109して、他のコアモジュールと情報交換を行うLANIF（2103）と、ブートプログラムを搭載するPROM（2104,Programable Read Only Memory）と、コンソール2113とシリアル接続2110して使用者とのインターフェースを図るシリアルIF（2105）から構成する。
第22図は第21図で示したシステム構成によりMCU102をシステムバス2100に接続する方法を示す。
本構成では以下のアクセスが可能である。
（ア）CPU101がMCU102を介してメモリ103をアクセスする。
（イ）CPU101がMCU102を介してシステムバス上のデバイスをアクセスする。
（ウ）システムバス上のデバイスがMCU102を介してメモリ103をアクセスする。
上記（ア）はこれまで説明したとおりである。
なお、第22図ではセレクタ2214を新たに追加した。（ア）のアクセスの時はデコード回路105の出力116を選択するように制御する。
上記（イ）について説明する。
CPU101の外部入出力I/F117はメモリアクセスだけでなく、システムバス上のデバイスをアクセスするときにも用いる。外部入出力I/F117はバスインタフェース部2210のスレーブ入出力部2213に接続し、この経路によってシステムバス上のデバイスをアクセスすることができる。
CPU101からのアクセスはシングルアクセスI/F機能107を使用する。スレーブ入出力部2213からの^WAIT2217はセレクタ2215を介してシングルアクセスI/F機能107へ伝わり、システムバス上のデバイスごとのデータ転送速度の違いに対応する。
上記（ウ）について説明する。
システムバス上のデバイスからメモリ103へのアクセスはバスインタフェース部2210のマスタ入出力部2212を通じて行う。マスタ入出力部2212からメモリ103へのアクセスはCPU101からメモリ103へのアクセスが発生するときと同様である。
システムバス上のデバイスの要求により、バスインタフェース部2210からメモリ103へのアクセスが起動される（I/F2204）と、メモリ103へのアクセスはバーストアクセスI/F機能2201あるいはシングルアクセスI/F機能2202が選択される。選択の判断はデコード回路2200によって行う。デコード回路2200はI/F2204の一部のアドレス2205をもとにアドレス空間を識別する。バーストアクセスI/F機能2201の入出力2207とシングルアクセスI/F機能2202の入出力2208を選択する機能を持つ選択部2203はデコード回路2200の出力2206でどちらかを選ぶ。選択した入出力はCPU101の入出力I/F117へ接続される。サイクル延長要求信号である^WAIT2216はシングルアクセスI/F機能107にのみサポートする。
このようにして、システムバス上のデバイスがメモリ103をアクセスするときも、必要に応じてバーストアクセスとシングルアクセスの選択が可能である。
以上説明したように、ECCによる高信頼化を行えば、通常は高速なバーストアクセスインタフェースを使用し、必要とするときのみシングルアクセスを使用してメモリアクセスの平均的高速化を図ることができる。
（実施例２）
第４図はアドレス空間割り当ての他の例である。
パーシャルライト不可のエリアA400とパーシャルライト可のエリアB401を連続した別の空間に割り当てたことを示す。それぞれのエリアを合わせて実メモリエリア202内にちょうど収まる大きさを持ち、それぞれのエリアへのアクセスは実体はただ一つのメモリに対して行われる。
第５図は第４図に示した割当方法をデコード回路105で実現する構成をしめす。
アドレス113はｍビットでバイトアドレスを指し示し、メモリ103は（２のｎ乗）バイトの容量を持つ。このときメモリ103の領域（図４の202）の特定のバイトアドレスを指定するのはLSB（最下位ビット）のb0からｂ（ｎ−１）までのビット301である。アドレス空間のエリアA400とエリアB401を合わせた領域を指定するのはbnからｂ（ｍ−１）までのビット300である。デコードAorB（502）の回路で「エリアＡまたはエリアＢ」を識別する。
デコード（Ａ）501の回路はメモリ103の領域（第４図の202）内でのエリアＡを識別するもので、アドレス113のｂ（ｎ−１）ビットから下位のビット（必要なビット数だけ）500を入力にする。
デコード（Ａ）501の出力503とデコードAorB（502）の出力504の論理積（AND,507）の出力はエリアＡを指し示す。
デコード（Ａ）501の出力503を論理反転（NOT,505）した出力506とデコードAorB（502）の出力504の論理積（AND,507）の出力はエリアＢを指し示す。
本方式によれば使用するメモリ空間を実メモリエリア202内に抑えることが出来る。
（実施例３）
第18図は本発明の他の実施例の概要を示す構成ブロック図である。
第１図に示した構成と異なるのはバーストアクセスとシングルアクセスの選択方法である。選択の判断はプログラム手段によるものであり、レジスタ1800にどちらを選択するか設定する。レジスタ1800の出力1801は選択部108と選択部111に指示を与える。この場合、メモリのマッピングは実施例１と異なりアドレス空間で識別する必要はない。
本構成は通常の動作において高速なバーストアクセスを選択するようレジスタ1800に設定しておく。パーシャルライトが必要になると判断されたときは、シングルアクセスを選択するようレジスタ1800に設定してからパーシャルライトを実行する。その後、バーストアクセスを選択するようレジスタ1800に設定してから通常の動作に戻るようにする。
第19図は第18図に示した構成の改良例である。
第18図に示した構成と異なるのはレジスタ1800と同等のレジスタ1900をMCU102の内部に用意したことである。MCU102の選択部111への選択指示はレジスタ1900の出力1901が行う。この構成によればCPU101はレジスタ1800の出力1801を外部に出力する必要はなくなるという利点がある。
通常の動作では高速なバーストアクセスを選択するようレジスタ1800とレジスタ1900に設定しておく。パーシャルライトが必要になると判断されたときは、シングルアクセスを選択するようレジスタ1800とレジスタ1900両方に設定してから、パーシャルライトを実行する。その後、バーストアクセスを選択するようレジスタ1800とレジスタ1900両方に設定してから通常の動作に戻るようにする。
（実施例４）
第20図は本発明のもう一つの実施例の概要を示す構成ブロック図である。
第１図に示した構成と異なるのはバーストアクセスとシングルアクセスの選択方法である。CPUは仮想メモリ（Virtual Memory）を行うためのTLB（Translation Lookaside Buffer,2000）を有する。このTLBは、4Kバイトページ単位に論理アドレスを物理アドレスに変換するアドレス変換テーブルをエントリ内に有しており、このTLBの各アドレス変換テーブルごとに「I/F選択ビット」を新たに設け、その出力値2001が選択部108と選択部111に指示を与えるようにするのである。
TLBエントリにアドレス変換テーブルを登録する時にパーシャルライトが必要なページには「I/F選択ビット」をシングルアクセスを選択するように設定すればよい。
【図１】
0003643601.tif 000005
【図２】
0003643601.tif 000006
【図３】
0003643601.tif 000007
【図４】
0003643601.tif 000008
【図５】
0003643601.tif 000009
【図１７】
0003643601.tif 000010
【図６】
0003643601.tif 000011
【図７】
0003643601.tif 000012
【図１８】
0003643601.tif 000013
【図８】
0003643601.tif 000014
【図９】
0003643601.tif 000015
【図１０】
0003643601.tif 000016
【図１１】
0003643601.tif 000017
【図１９】
0003643601.tif 000018
【図１２】
0003643601.tif 000019
【図１３】
0003643601.tif 000020
【図１４】
0003643601.tif 000021
【図１５】
0003643601.tif 000022
【図１６】
0003643601.tif 000023
【図２０】
0003643601.tif 000024
【図２１】
0003643601.tif 000025
【図２２】
0003643601.tif 000026