JP2009289170A - データ処理装置、メモリコントローラ及びそのアクセス制御方法 - Google Patents

データ処理装置、メモリコントローラ及びそのアクセス制御方法 Download PDF

Info

Publication number
JP2009289170A
JP2009289170A JP2008143182A JP2008143182A JP2009289170A JP 2009289170 A JP2009289170 A JP 2009289170A JP 2008143182 A JP2008143182 A JP 2008143182A JP 2008143182 A JP2008143182 A JP 2008143182A JP 2009289170 A JP2009289170 A JP 2009289170A
Authority
JP
Japan
Prior art keywords
data
read
write
memory
command
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.)
Pending
Application number
JP2008143182A
Other languages
English (en)
Inventor
Toru Ikeuchi
亨 池内
Yukihiko Akaike
幸彦 赤池
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.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
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 NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2008143182A priority Critical patent/JP2009289170A/ja
Priority to US12/453,874 priority patent/US8234463B2/en
Publication of JP2009289170A publication Critical patent/JP2009289170A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】従来のデータ処理装置では、部分データの書き込み動作において動作速度を十分に高速化することができなかった。
【解決手段】本発明にかかるデータ処理装置は、所定のデータ幅のデータで入出力を行うメモリ20と、リード命令又はライト命令を出力してメモリ20に対してアクセスを行う演算回路10と、演算回路10からライト命令とそのライト命令に関連付けられた部分データとを受けた場合に、メモリ20から読み出した第1のリードデータの一部を部分データに置き換えてメモリ20に対するライトデータを出力するアクセス制御回路30と、を有し、アクセス制御回路30は、ライト命令がそのライト命令よりも前に出力されたリード命令に対応して出力されたものである場合は、第1のリードデータに代えて以前に出力された前記リード命令に応じてすでに取得されている第2のリードデータの一部を部分データに置き換えてライトデータを出力する。
【選択図】図1

Description

本発明はデータ処理装置、メモリコントローラ及びそのアクセス制御方法に関し、特に演算回路と演算回路からのアクセスを受けるメモリとを有し、メモリが演算回路から出力されるライトデータと、ライトデータに対応するエラー訂正コードと、を関連付けて記憶するデータ処理装置、メモリコントローラ及びそのアクセス制御方法に関する。
データ処理装置は、演算回路(例えば、CPU:Central Processing Unit)とCPUからアクセスを受けるメモリとを有する。そして、CPUは、メモリに対してアクセスを行うことで各種処理を実行する。ここで、近年の半導体装置においては、半導体素子の微細化が進み、メモリの容量が増大している。しかしながら、メモリが大容量になることで、製造工程あるいは使用期間中における素子不良の発生率が高まっている。メモリにおいて不良素子が発生した場合、正確なデータの保持を行うことができない。このような不正確なデータに基づきCPUが動作した場合、データ処理装置に誤動作が発生する問題がある。
そこで、メモリに格納するデータに対してエラー訂正コード(例えば、ECC:Error Correcting Code)を付加し、メモリからデータと共にエラー訂正コードを読み出してデータのエラー訂正を行うことが行われている。このようなエラー訂正を行うことで、ある程度の個数の素子不良をメモリが含む場合であっても、メモリを素子不良のないメモリと同等に扱うことができる。
また、CPUとメモリは、一般的に所定のバス幅を有するデータバスを介して接続される。そして、CPUは、バス幅の範囲内のデータ幅のデータをメモリと送受信する。例えば、バス幅が32ビットである場合、CPUがメモリとの間で送受信できるデータの最大データ幅は32ビット(以下、32ビットのデータ幅を1ワードと称す)となる。しかしながら、CPUは必ずワード単位でメモリとの間でデータの送受信を行うわけではなく、実行するプログラムに応じてハーフワード(データ幅が16ビットのデータ)やバイト(データ幅が8ビットのデータ)の単位でメモリとの間でデータの送受信を行う。
このようなデータ処理装置においてエラー訂正コードを用いたエラー訂正を行うためには、エラー訂正コードを送受信されるデータの最小単位ごとに生成することが行われる。しかしながら、最小単位のデータに対してエラー訂正コードを生成した場合、メモリの記憶容量に占めるエラー訂正コードの比率が高くなり、メモリの記憶容量を有効に利用できない問題がある。例えば、8ビットのデータに対するエラー訂正コードは5ビットのデータ幅を有する。この場合、メモリの記憶容量のうち40%程度がエラー訂正コードのために利用されることになる。これに対して、エラー訂正コードを1ワード単位で生成した場合、エラー訂正コードのデータ幅は7ビットとなる。つまり、エラー訂正コードをより大きなデータの単位に対して生成した方がデータ量を抑制できる。
そこで、CPUとメモリとの間で送受信されるデータのデータ幅に関わらずエラー訂正コードを1ワード単位で生成するメモリシステム100が特許文献1に開示されている。メモリシステム100のブロック図を図7に示す。図7に示すようにメモリシステム100は、メモリ101、CPU102、書き込み制御回路110、読み込み制御回路111、読み出し要否判定回路112、誤り訂正回路132を有する。また、誤り訂正回路132は、バス制御回路104a、104b、ラッチ回路105、パーシャルライト制御回路106、セレクタ107a〜107d、訂正コード生成回路108、エラー検出訂正回路109を有する。メモリシステム100では、CPU102とメモリ101は、32ビットのデータ幅のバスで接続される。つまり、CPU102とメモリ101は、32ビットを1ワードとする。
ここで、図8にメモリシステム100が8ビット又は16ビットのデータ幅を有するデータをメモリに書き込む場合におけるメモリシステム100の動作を示すタイミングチャートを示す。図8に示すように、8ビット、16ビットの書き込みのときは、まず、読み出し要否判定回路112がデータサイズ信号に基づき読み込み制御回路111に対して読み出し信号OE−Nを出力するように指示する。この読み出し信号OE−Nに基づきメモリ101から被保存データが出力される。その後、書き込み制御回路110から書き込み信号WE−Nが出力される。そして、メモリ101に入力データが書き込まれる。すなわち、メモリシステム100は、最初の読み出し動作においてメモリ101からデータDrとエラー訂正コードECCを読み出し、エラー検出訂正回路109によってデータDr'を生成する。そして、次の書き込み動作において、パーシャルライト制御回路106が選択したセレクタに入力されるデータDp(CPU102から出力されたライトデータ)と、パーシャルライト制御回路106が選択しなかったセレクタに入力されるデータDr'と、によりメモリ101に入力される入力データDWを生成する。次いで、この入力データDWに対してエラー訂正コードECCを生成する。その後、このエラー訂正コードECCと入力データDWとともにメモリ101に書き込む。
一方、図9に1ワードのデータをメモリ101に書き込む場合におけるメモリシステム100の動作を示すタイミングチャートを示す。1ワードでデータを書き込む場合、読み出し要否判定回路112は、読み込み制御回路111に読み出し信号OE−Nの出力を行わないように指示する。そして。CPU102から出力されたデータDpがバス制御回路104aに達した時点で読み込み制御回路110が書き込み信号WE−Nを出力する。その後、データDpは、メモリ101に対する入力データとしてメモリ101に書き込まれる。
メモリシステム100では、1ワードのデータの書き込み時には、事前にメモリ101からデータを読み出すことなくCPU102が出力したデータDpを書き込む。これにより、メモリシステム100は、1ワードのデータ書き込み時のアクセス時間を削減する。
特開平11−194975号公報
マイコン等のデータ処理装置では、メモリから読み出したデータに修正を加えて、その修正部分のデータのみをメモリに書き戻すリードモディファイライト命令が実装されることがある。このリードモディファイライト命令が実装されるデータ処理装置において、エラー訂正コードのデータ量を削減するためには、書き戻し動作において8ビット又は16ビットのデータ幅のデータ(例えば、修正後のデータ)を含む1ワードのデータを生成する必要がある。
ここで、リードモディファイライト命令が実装されるデータ処理装置に特許文献1の書き込み処理の手順を適用することを考える。この場合、データ処理装置は、書き戻し動作は、特許文献1における8ビット又は16ビットのデータ幅のデータの書き込み動作に相当する。つまり、リードモディファイライト命令における書き戻し動作では、書き戻し動作の前に実行されるリード動作とは別に書き戻し動作用のリード動作を行が行われ、その後に修正後のデータのメモリに対する書き込みが行われる。
そのため、リードモディファイライト命令が実装されるデータ処理装置に特許文献1の書き込み手順を適用しても、アクセス時間を短縮できる1ワードでの書き込み動作の発生頻度が低い場合、アクセス時間を十分に短縮できない問題がある。
本発明にかかるデータ処理装置の一態様は、所定のデータ幅のデータで入出力を行うメモリと、リード命令又はライト命令を出力して前記メモリに対してアクセスを行う演算回路と、前記演算回路から前記ライト命令と前記ライト命令に関連付けられた前記所定のデータ幅よりも小さなデータ幅の部分データとを受けた場合に、前記メモリから読み出した第1のリードデータの一部を前記部分データに置き換えて前記メモリに対するライトデータを出力するアクセス制御回路と、を有し、前記アクセス制御回路は、前記ライト命令が前記ライト命令よりも前に出力されたリード命令に対応して出力されたものである場合は、前記第1のリードデータに代えて以前に出力された前記リード命令に応じてすでに取得されている第2のリードデータの一部を前記部分データに置き換えて前記ライトデータを出力するものである。
本発明にかかるメモリコントローラの一態様は、演算回路から出力されるリード命令又はライト命令を受けてメモリに対するアクセスを制御するメモリコントローラであって、前記ライト命令が前記ライト命令の直前に受けた前記リード命令に基づく命令であることを検知した場合、前記ライト命令の直前に受けた前記リード命令に基づき前記メモリから取得したリードデータ、及び、前記ライト命令に対応して前記演算回路から出力される部分データに基づき前記メモリに対するライトデータを出力するアクセス制御回路と、前記ライトデータの全体に対するエラー訂正コードを生成して、前記メモリに対して前記ライトデータ及び前記エラー訂正コードを出力するエラー訂正回路と、を有するものである。
本発明にかかるアクセス制御方法の一態様は、演算回路と前記演算回路からのアクセスを受けるメモリとの間のアクセス制御方法であって、前記演算回路から出力されるリード命令に基づき前記メモリから読み出したリードデータを前記演算回路に送信し、前記演算回路から部分データとして出力される前記リードデータの一部に変更を加えたデータ及びライト命令を受信し、前記ライト命令が直前に出力された前記リード命令に基づき出力された命令であることを検知し、前記ライト命令の直前に出力された前記リード命令に基づき読み出された前記リードデータと前記部分データとに基づき前記メモリに対するライトデータを生成するものである。
本発明にかかるデータ処理装置、メモリコントローラ及びそのアクセス制御方法は、演算回路から出力されるライト命令が、直前のリード命令に基づくものであり、かつ、所定のデータ幅よりも小さなデータ幅を有する部分データの書き込み指示である場合に、特に有効である。本発明では、このような場合、メモリへの読み出し動作を行うことなく、直前のリード命令に基づきすでに取得されているリードデータの一部を部分データに置き換えてメモリに書き込むべきライトデータを生成する。このような動作により、本発明にかかるデータ処理装置、メモリコントローラ及びそのアクセス制御方法では、部分データの書き込み動作を行う場合においてメモリに対する読み出し動作を行うことなく、部分データを含むリードデータと同じデータ幅のライトデータを生成することができる。
本発明のデータ処理装置、メモリコントローラ及びそのアクセス制御方法によれば、部分データの書き込み動作において、部分データを含むリードデータと同じデータ幅のライトデータを生成しながら、演算回路とメモリとの間のアクセス時間を短縮することができる。
実施の形態1
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかるデータ処理装置のブロック図を図1に示す。図1に示すように、データ処理装置は、演算回路(例えば、CPU:Central Processing Unit)10、メモリ20、メモリコントローラ30を有する。なお、本実施の形態では、CPU10とメモリ20は、1ワード(32ビット)のバス幅を有するデータバスで接続されるものとする。そして、メモリ20は、入出力するライトデータ及びリードデータを所定のデータ幅(例えば、データバスのバス幅と同じデータ幅)を一つの制御単位として扱うものとする。一方、CPU10は、実行するプログラムに応じて8ビット(バイト)、16ビット(ハーフワード)、32ビット(ワード)のデータ幅を有する被保存データ(以下、ライトデータと称す)を出力するものとする。メモリコントローラ30は、CPU10とメモリ20との間に設けられ、CPU10とメモリ20との間のアクセスを制御するものとする。なお、ライトデータのうちデータバスのデータ幅よりも小さなデータ幅を有するデータを部分データと称す。
CPU10は、図示しない記憶装置からプログラムを読み出し、読み出したプログラムに応じて各種処理を実行する。また、CPU10は、実行するプログラムに応じてメモリ20へのアクセスを行う。CPU10は、メモリ20へのアクセス処理において、クロック信号CLK、アドレス信号ADD、ストローブ信号STB、リードライト制御信号RWC、データサイズ信号DS、リードモディファイライト信号RMW、ライトデータWDaを送信し、メモリコントローラ30からリードデータRDb及びエラー信号ERRを受信する。なお、リードライト制御信号RWCは、CPU10がメモリ20に対してライト命令を行う場合は書き込み指示状態(例えば、ロウレベル)となり、CPU10がメモリ20に対してリード命令を行う場合は読み出し指示状態(例えば、ハイレベル)となる。
また、CPU10は、リードモディファイライト命令が実装されるものとする。リードモディファイライト命令は、CPU10において実行されるプログラムに応じて生じる命令である。リードモディファイライト命令が実行されると、CPU10は、まずリード動作を行い、所定のアドレスに格納されたデータを読み出し、読み出したデータに対して修正を加え、書き込み動作により修正したデータのみをメモリ20に書き戻す。CPU10においてリードモディファイライト命令が実行された場合、CPU10はリード動作とライト動作において同じアドレスにアクセスを行う。また、CPU10がメモリ20に書き戻すデータは、リードデータの一部分のみのデータとなる。
メモリ20は、CPU10からの命令に応じてライトデータWDbの格納及びリードデータRDaの出力を行う。このとき、メモリ20は、ライトデータWDbに対応してメモリコントローラ30が生成したエラー訂正コードECCをライトデータWDbに関連付けて格納する。また、メモリ20は、CPU10から読み出しの指示がなされた場合、リードデータRDaと共にリードデータRDaと関連付けられたエラー訂正コードECCを出力する。なお、エラー訂正コードECCは、メモリコントローラ30とメモリ20とを接続するローカルバスを介して伝送されるものとする。
メモリコントローラ30は、CPU10が出力するリードライト制御信号RWC、ストローブ信号、データサイズ信号DS、リードモディファイライト信号RMWに基づきCPU10とメモリ20との間で行われるデータの送受信を制御する。なお、CPU10が出力するアドレス信号ADD及びクロック信号CLKは、メモリコントローラ30を介さずに直接メモリ20に与えられる。また、CPU10が出力するクロック信号CLKは、メモリコントローラ30にも与えられ、メモリコントローラ30はクロック信号CLKを動作クロックとして動作する。PUメモリコントローラ30は、アクセス制御回路31、訂正コード生成回路32、エラー検出訂正回路33を有する。
訂正コード生成回路32は、アクセス制御回路31からライトデータWDbを受信して、受信したライトデータWDbに対応したエラー訂正コードECCを生成する。そして、訂正コード生成回路32は、ライトデータWDb及びエラー訂正コードECCをメモリ20に出力する。エラー検出訂正回路33は、メモリ20からリードデータRDa及びリードデータRDaに対応したエラー訂正コードECCを読み出す。そして、エラー検出訂正回路33は、エラー訂正コードECCに基づきリードデータRDaにおける誤りの検出と誤りの訂正を行う。その後エラー検出訂正回路33は、誤り訂正後のリードデータRDbをCPU10に対して出力する。このときエラー検出訂正回路33は、リードデータRDaをエラー訂正コードECCによって訂正できない場合はエラー信号ERRを誤り発生状態として、リードデータRDaに訂正できていない誤りが存在することをCPU10に通知する。
アクセス制御回路31は、CPU10からリードライト制御信号RWCを受けて、メモリ20に対するリード制御信号OE又はライト制御信号WEを出力する。また、アクセス制御回路31は、CPU10から受信したストローブ信号STBをメモリ20に出力する。アクセス制御回路31が出力するストローブ信号STBは、訂正コード生成回路32が出力するライトデータWDb及びエラー訂正コードECCに同期した信号である。さらに、アクセス制御回路31は、CPU10から受信したライトデータWDaをライトデータWDbとして訂正コード生成回路32に対して出力する。ここで、CPU10が1ワードのライトデータWDaを出力した場合には、ライトデータWDbはライトデータWDaと同じものとなる。一方、CPU10が1バイト又は1ワードのライトデータWDaを出力した場合には、ライトデータWDbは、以前に読み出されたリードデータRDbの一部をライトデータWDaと置き換えたものとなる。メモリコントローラ30は、ライトデータWDaのデータ幅を示すデータサイズ信号DSに基づきこの置き換え動作を行う。以下ではアクセス制御回路31について更に詳細に説明する。
アクセス制御回路31は、リード/ライト制御回路41、RMWフラグレジスタ42、データセレクト制御回路43、ライトデータバッファ44、データマージ回路45、リードデータバッファ46を有する。
リード/ライト制御回路41は、CPU10から出力されるストローブ信号STBの同期タイミングを、メモリコントローラ30が出力するライトデータWDbに応じたものに変換して出力する。また、リード/ライト制御回路41は、CPUから出力されるリードライト制御信号RWCに応じてリード制御信号OE又はライト制御信号WEを出力する。リードライト制御信号RWCが読み出し指示状態である場合、リード/ライト制御回路41は、リード制御信号OEを出力する。一方、リードライト制御信号RWCが書き込み指示状態である場合、リード/ライト制御回路41はデータサイズ信号DS及びRMWフラグレジスタ42の値を参照してリード制御信号OE又はライト制御信号WEを出力する。より具体的には、リード/ライト制御回路41は、RMWフラグレジスタの値が有効であることを示し、かつ、データサイズ信号DSがワード以外値を示す場合、ライト制御信号WEのみを出力する。また、リード/ライト制御回路41は、RMWフラグレジスタの値が無効であることを示し、かつ、データサイズ信号DSがワード以外値を示す場合、リード制御信号OEを出力後にライト制御信号WEを出力する。さらに、リード/ライト制御回路41は、RMWフラグレジスタの値に関わらず、データサイズ信号DSがワードを示す値である場合、ライト制御信号WEのみを出力する。
RMWフラグレジスタ42は、RMWフラグの値を格納する。RMWフラグは、リードモディファイライト信号RMWがCPU10においてリードモディファイライト命令が実行されていることを示す場合に有効状態となる。一方、リードモディファイライト信号RMWがCPU10においてリードモディファイライト命令以外の命令が実行されていることを示す場合にRMWフラグは無効状態にとなる。RMWフラグレジスタ42は、CPU10からストローブ信号STBとリードライト制御信号RWCを受けて、RMWフラグの状態を切り替える。
データセレクト制御回路43は、アドレス信号ADD及びデータサイズ信号DSに基づき選択信号をデータマージ回路45に出力する。データマージ回路45は、この選択信号に基づきデータのマージ処理を行い、ライトデータWDbを生成する。本実施の形態における選択信号は、複数の信号から構成される。本実施の形態では、CPU10が出力する最小のデータ幅の単位はバイト(8ビット)単位であり、最大のデータ幅の単位はワード(32ビット)単位である。そのため、本実施の形態の選択信号は4つの選択信号により構成される。データセレクト制御回路43は、データサイズ信号DSがワード以外の値を示す場合、アドレス信号ADDに応じた少なくとも一つ選択信号(例えば、アドレス信号ADDにより指定されているデータの位置に該当する選択信号)を無効にする。また、データセレクト制御回路43は、データサイズ信号DSがワードを示す値である場合にはすべての選択信号を有効にする。
ライトデータバッファ44は、CPU10が出力するライトデータWDaを格納する。本実施の形態では、ライトデータバッファ44は、複数のセグメント(図1のWD1〜WD4)に分割され、各セグメントは1バイト(8ビット)のデータを格納する。図1に示す例では、セグメントWD1はライトデータWDaの1〜8ビット目のデータを格納し、セグメントWD2はライトデータWDaの9〜16ビット目のデータを格納し、セグメントWD3はライトデータWDaの17〜24ビット目のデータを格納し、セグメントWD4はライトデータWDaの24〜36ビット目のデータを格納する。
リードデータバッファ46は、エラー検出訂正回路33によって訂正されたリードデータRDbを格納する。本実施の形態では、リードデータバッファ46は、複数のセグメント(図1のRD1〜RD4)に分割され、各セグメントは1バイト(8ビット)のデータを格納する。図1に示す例では、セグメントRD1はリードデータRDaの1〜8ビット目のデータを格納し、セグメントRD2はリードデータRDaの9〜16ビット目のデータを格納し、セグメントWD3はリードデータRDaの17〜24ビット目のデータを格納し、セグメントWD4はリードデータRDaの24〜36ビット目のデータを格納する。
データマージ回路45は、複数のセレクタを有する。複数のセレクタは、それぞれライトデータバッファ44又はリードデータバッファ46セグメントに対応して設けられる。また、複数のセレクタには、それぞれ一つの選択信号が入力される。そして、各セレクタは、選択信号が有効であれば、ライトデータバッファ44に格納されたデータを選択し、選択信号が無効であれば、リードデータバッファ46に格納さえたデータを選択する。データマージ回路45は、選択信号に基づき各セレクタが選択したデータによりデータのマージを行い、ライトデータWDbを生成する。
続いて、本実施の形態にかかるメモリコントローラ30の動作について説明する。図2にメモリコントローラ30の動作を示すフローチャートを示す。なお、図2に示すフローチャートは、データ処理装置1はすでに起動済みである状態を示すものとする。
図2に示すように、メモリコントローラ30は、CPU10からアクセス要求(リードライト制御信号RWC等の信号)を受信すると処理を開始する(ステップS1)。メモリコントローラ30は、アクセス要求のうちリードライト制御信号RWCを参照して、CPU10からの要求がリード動作であるかライト動作であるかを判断する(ステップS2)。
ステップS2において、リードライト制御信号RWCがハイレベル(読み出し指示状態)であれば、メモリコントローラ30は、CPU10からのアクセス要求が読み出し動作であると判断する(ステップS2のYes)。この場合、メモリコントローラ30は、リードモディファイライト信号RMWを参照して、CPU10において実行されている命令がリードモディファイライト命令であるか否かを判断する(ステップS3)。ステップS3において、リードモディファイライト信号RMWがハイレベルであれば(ステップS3のYes)、メモリコントローラ30は、RMWフラグをセットする("1"とする)(ステップS4)。一方、ステップS3において、リードモディファイライト信号RMWがロウレベルであれば(ステップS3のNo)、RMWフラグをセットせずに次のステップに進む。
ステップS3又はステップS4の動作が完了すると、メモリコントローラ30は、メモリ20からリードデータRDaを読み出す(ステップS5)。その後、リードデータRDaは、エラー検出訂正回路33においてエラー訂正処理が行われる。エラー検出訂正回路33から出力されるリードデータRDbは、リードデータバッファ46に格納される(ステップS6)。また、メモリコントローラ30は、リードデータRDbをCPU10に送信する(ステップS7)。ステップS7の処理が完了した後、メモリコントローラ30は、再度CPU10からのアクセス要求を待つ。
一方、ステップS2において、リードライト制御信号RWCがロウレベル(書き込み指示状態)であれば、メモリコントローラ30は、CPU10からのアクセス要求が書き込み動作であると判断する(ステップS2のNo)。この場合、メモリコントローラ30は、CPU10から出力されるライトデータWDaをライトデータバッファ44に格納する(ステップS8)。そして、RMWフラグの値が"1"であるか否かを判定する(ステップS9)。
ステップS9においてRMWフラグの値が"1"と判断された場合(ステップS9のYes)、メモリコントローラ30のリード/ライト制御回路41は、その後に行われる書き込み動作のためにライト制御信号WEを出力する。また、メモリコントローラ30は、RMWフラグをリセットする("0"にする)(ステップS14)。その後、メモリコントローラ30のデータセレクト制御回路43はマージの対象となるデータの位置を指示す選択信号を出力する。そして、データマージ回路45は選択信号に基づきデータのマージ処理を行う(ステップS15)。なお、本実施の形態では、CPU10においてリードモディファイライト命令が実行された場合(例えば、RMWフラグが"1"である場合)、CPU10が1バイトあるいはハーフワードのデータ幅を有するライトデータWDaを出力するものとした。そのため、RMWフラグが"1"である場合、ステップS16のマージ処理が行われる。このステップS16のマージ処理において用いられるデータはRMWフラグをセットする処理(ステップS4)の処理の直後に行われたリード動作(ステップS5)で読み出されたリードデータRDbとその後にCPU10から出力されたライトデータWDaを用いて行われる。従って、ステップS9においてRMWフラグが"1"であった場合、メモリコントローラ30は、ライト動作の指示の後にリード動作を行うことなくステップS16のマージ処理を行う。
ここで、ステップS14のマージ処理について説明する。マージ処理の手順を示すフローチャートを図3に示す。本実施の形態にかかるメモリコントローラ30は、1ワードのデータをバイト単位でライトデータバッファ44及びリードデータバッファ46に格納する。そして、データマージ回路45は、ライトデータバッファ44及びリードデータバッファ46からバイト単位でデータを読み出し、バイト単位でライトデータを用いるかリードデータを用いるかを選択することでデータのマージ処理を行う。このとき、データマージ回路45は、バイト単位に設けられたセレクタを並列動作させることでマージ処理を行う。従って、図3に示すマージ処理では、1バイトのマージを行うステップS20〜ステップS23、ステップS30〜ステップS33、ステップS40〜ステップS43及びステップS50〜ステップS53が並列的に実行される。なお、ステップS20〜ステップS23はライトデータのうち25ビット目から32ビット目のデータに対するマージ処理であり、ステップS30〜ステップS33ライトデータのうち17ビット目から24ビット目のデータに対するマージ処理であり、ステップS40〜ステップS43ライトデータのうち9ビット目から16ビット目のデータに対するマージ処理であり、及びステップS50〜ステップS53はライトデータのうち1ビット目から8ビット目のデータに対するマージ処理である。
ステップS20〜ステップS23、ステップS30〜ステップS33、ステップS40〜ステップS43及びステップS50〜ステップS53は、実質的に同じ動作であるため、ここではステップS20〜S23を例にマージ処理について説明する。
まず、データマージ回路45は、ステップS20においてライトデータが有効であるか否かを判断する。より具体的にはステップS20では、25ビット目から32ビット目のライトデータに対応するセレクタに入力される選択信号が有効状態であるか無効状態であるかライトデータの有効性を判断する。ステップS20においてライトデータが有効であると判断された場合(ステップS20のYes)、ステップS21においてセレクタは、ライトデータバッファ44に格納されているライトデータを選択して出力する。一方、ステップS20においてライトデータが無効であると判断された場合(ステップS20のNo)、ステップS22においてセレクタは、リードデータバッファ46に格納されているリードデータを選択して出力する。そして、データマージ回路45は、ステップS21又はステップS22において選択されたデータをライトデータWDbのうち25ビット目から32ビット目のデータとして出力する。データマージ回路45は、このようにしてバイト単位でマージ処理されたライトデータは、その後合成され、メモリ20に書き込むべきライトデータWDb(32ビット(1ワード)のデータ)となる。
上記のステップS14のマージ処理が完了すると、メモリコントローラ30は、訂正コード生成回路32によって生成されたエラー訂正コードECCと共に、ライトデータWDbをメモリ20に書き込む(ステップS13)。ステップS13の処理が完了した後、メモリコントローラ30は、再度CPU10からのアクセス要求を待つ。
また、図2のステップS9においてRMWフラグの値が"0"と判断された場合(ステップS9のNo)、メモリコントローラ30のリード/ライト制御回路41は、データサイズ信号DSを参照して、データサイズ信号DSがワード(32ビット)を示すものであるか否かを判断する(ステップS10)。ステップS10において、データサイズ信号DSがワードを示す場合(ステップS10のYes)、リード/ライト制御回路41はライト制御信号WEを出力する。そして、メモリコントローラ30は、CPU10から出力されたライトデータWDaに対してマージ処理(ステップS15)を行わずにライトデータWDaをそのままライトデータWDbとし、メモリ20に書き込む(ステップS13)。なお、この場合においても、ライトデータWDbと共にエラー訂正コードECCが生成され、メモリ20にはライトデータWDbとエラー訂正コードECCが書き込まれる。ステップS13の処理が完了した後、メモリコントローラ30は、再度CPU10からのアクセス要求を待つ。
一方、ステップS10において、データサイズ信号DSがワード以外のデータサイズを示す場合(ステップS10のNo)、リード/ライト制御回路41はリード制御信号OEを出力する。そして、メモリコントローラ30は、メモリ20からリードデータを読み出す(ステップS11)。ステップS11で読み出されたリードデータは、リードデータバッファ46に格納される(ステップS12)。その後、メモリコントローラ30のデータマージ回路45は、ステップS12でリードデータバッファ46に格納されたリードデータRDbとステップS8でライトデータバッファ44に格納されたライトデータWDaとに対してマージ処理を行い、ライトデータWDbを生成する(ステップS15)。そして、メモリコントローラ30は、ステップS15において生成されたライトデータWDbをメモリ20に書き込む(ステップS13)。なお、この場合においても、ライトデータWDbと共にエラー訂正コードECCが生成され、メモリ20にはライトデータWDbとエラー訂正コードECCが書き込まれる。ステップS13の処理が完了した後、メモリコントローラ30は、再度CPU10からのアクセス要求を待つ。
続いて、タイミングチャートを用いて図2に示すフローに従ったメモリコントローラ30の動作を説明する。まず、図4にCPU10が単純なリード動作(図2のステップS1、S2、S3、S5、S6、S7)及びライト動作(図2のステップS1、S2、S8、S9、S10、S13、S14)を行った場合におけるメモリコントローラ30のタイミングチャートを示す。
図4に示す例では、タイミングT0〜T2の区間でCPU10からの読み出し指示に基づくリード動作が行われ、タイミングT2〜T4の区間でCPU10から書き込み指示に基づくライト動作が行われるものとする。図4に示す例においてクロック信号CLKは、CPU10がメモリ20に対してアクセスを行っている間出力され続けられているものとする。また、図4に示す例では、CPU10において実行される命令が単純なリード命令及びライト命令であるため、リードモディファイライト信号RMW及びRMWフラグはロウレベル(例えば"0")を維持する。さらに、データサイズ信号DSはタイミングT0〜T4の間ワードを示す値を維持するものとする。
まず、リード動作が開始されるタイミングT0でCPU10から出力されるリードライト制御信号RWCがロウレベルからハイレベルになり、メモリコントローラ30に読み出し指示を与える。また、CPU10は、タイミングT0においてアクセス対象のアドレスとしてアドレス1を出力する。さらに、CPU10は、タイミングT0でのアクセス開始に伴いストローブ信号STBをハイレベルとする。そして、CPU10からの信号を受信したメモリコントローラ30は、リードライト制御信号RWC、RMWフラグ及びデータサイズ信号DSの値に基づきリード制御信号OEをハイレベルとする。
そして、タイミングT1においてメモリコントローラ30は、メモリ20から読み出し対象となっているデータをリードデータRDa(図4では各バイトの値をA、B、C、dで示す。)として受信する。その後、メモリコントローラ30は、リードデータRDaに対してエラー訂正処理を行い、訂正後のデータをリードデータRDbとしてCPU10に送信する。なお、タイミングT1でリードライト制御信号RWC及びストローブ信号STBは立ち下がりロウレベルとなる。
続いて、ライト動作が開始されるタイミングT2では、CPU10はリードライト制御信号RWCをロウレベルに維持したままストローブ信号STBを立ち上げる。これにより、CPU10はメモリコントローラ30に書き込み指示を与える。また、CPU10は、タイミングT2においてアクセス対象のアドレスとしてアドレス2を出力する。さらに、CPU10は、タイミングT2でのアクセス開始に伴いストローブ信号STBをハイレベルとする。そして、CPU10からの信号を受信したメモリコントローラ30は、リードライト制御信号RWC、RMWフラグ及びデータサイズ信号DSの値に基づきライト制御信号WEをハイレベルとする。また、メモリコントローラ30は、CPU10から受信したライトデータWDa(図4では各バイトの値をE、F、G、Hで示す。)を受信する。そして、メモリコントローラ30は、受信したライトデータWDaと同じデータをライトデータWDbとして出力し、メモリ20に対して書き込みを行う。なお、このときライト動作の期間となっているタイミングT3〜T4の期間は特にメモリコントローラ30の動作は行われない。
次いで、図5にCPU10が単純なリード動作(図2のステップS1、S2、S3、S5、S6、S7)及び1バイトのデータのライト動作(図2のステップS1、S2、S8、S9、S10、S11、S12、S16、S13、S14)を行った場合におけるメモリコントローラ30のタイミングチャートを示す。なお、図5におけるリード動作は、図4に示したリード動作と実質的に同じになるため説明を省略する。
図5に示す例では、タイミングT10〜T12の区間でCPU10からの読み出し指示に基づくリード動作が行われ、タイミングT12〜T16の区間でCPU10から書き込み指示に基づくライト動作が行われるものとする。図5に示す例においてクロック信号CLKは、CPU10がメモリ20に対してアクセスを行っている間出力され続けられているものとする。また、図5に示す例では、CPU10において実行される命令がリード命令及びライト命令であるため、リードモディファイライト信号RMW及びRMWフラグはロウレベル(例えば"0")を維持する。さらに、データサイズ信号DSはタイミングT10〜T12の間ワードを示す値を維持し、タイミングT12〜T16はバイトを示す値を維持するものとする。
図5に示すライト動作では、ライト動作が開始されるタイミングT12でCPU10はリードライト制御信号RWCをロウレベルに維持したままストローブ信号STBを立ち上げる。これにより、CPU10はメモリコントローラ30に書き込み指示を与える。また、CPU10は、タイミングT12においてアクセス対象のアドレスとしてアドレス2を出力する。
そして、図5に示す1バイトのデータを書き込む場合、タイミングT12においてCPU10からの信号を受信したメモリコントローラ30は、まずリード制御信号OEをハイレベルとする。そして、タイミングT13においてアドレス2に格納されているリードデータRDaを読み出す。タイミングT13で読み出されたデータはリードデータバッファ46に格納される。
その後、タイミングT14においてメモリコントローラ30は、ライト制御信号WEをハイレベルとする。また、メモリコントローラ30は、CPU10から出力された1バイトのライトデータWDa(図5においてEで示す)とタイミングT13で読み出したリードデータRDaとに基づきデータEを含むライトデータWDbを生成する。そして、データEを含むライトデータWDbをメモリ20に書き込む。なお、図5に示す例では、ライト動作においてCPU10がタイミングT12〜T15の期間にライトデータWDaを出力する状態を維持するが、これはメモリコントローラ30がウェイト信号(不図示)をCPU10に出力することで実現される。また、ライト動作の期間となっているタイミングT15〜T16の期間は特にメモリコントローラ30の動作は行われない。
次いで、図6にCPU10がリードモディファイライト命令を実行した場合(図2のステップS1、S2、S3、S4、S5、S6、S7、S1、S2、S8、S9、S15、S16、S13、S14の処理が実行される)におけるメモリコントローラ30のタイミングチャートを示す。CPU10においてリードモディファイライト命令が実行された場合、CPU10は一つの命令に対してリード動作とライト動作とを一連の動作として行う。この場合においてもリード動作は、図4に示したリード動作と実質的に同じになるため説明を省略する。
なお、図6に示す例では、タイミングT20〜T22の区間でリードモディファイライト命令に基づくリード動作が行われ、タイミングT22〜T23の区間でリードモディファイライト命令のモディファイ動作が行われ、タイミングT23〜T25の区間でリードモディファイライト命令に基づくライト動作が行われるものとする。図6に示す例においてクロック信号CLKは、CPU10がメモリ20に対してアクセスを行っている間出力され続けられているものとする。また、図6に示す例では、リードモディファイライト命令に基づく動作が開始されるタイミングT20でリードモディファイライト信号RMWがハイレベルとなる。そして、タイミングT21のストローブ信号STBの立ち下がりに同期してリードモディファイライト信号RMWがラッチされRMWフラグがハイレベル(例えば、"1")となる。RMWフラグは、リードモディファイライト命令に基づくライト命令に基づくライト動作の開始を示すストローブ信号の立ち下がり(タイミングT24)に同期して"0"に戻される。さらに、本実施の形態におけるリードモディファイライト命令は1バイトのデータを修正して書き戻すものとする。そのため、データサイズ信号DSはタイミングT20〜T25の間バイトを示す値を維持するものとする。
図6に示す例では、タイミングT22において、リードモディファイライト命令に基づくリード動作が完了する。そして、タイミングT22〜T23の期間にCPU10は、読み出したリードデータRDbのうち1バイト分のデータ(例えば、データD)に対して修正を行い、データDmを生成する。
その後、タイミングT23からリードモディファイライト命令に基づくライト動作を開始する。図6に示すライト動作では、ライト動作が開始されるタイミングT22でCPU10はリードライト制御信号RWCをロウレベルに維持したままストローブ信号STBを立ち上げる。これにより、CPU10はメモリコントローラ30に書き込み指示を与える。また、CPU10は、タイミングT22においてアクセス対象のアドレスとしてタイミングT20〜T22と同じアドレス1を出力する。
また、メモリコントローラ30は、RMWフラグがハイレベルであるため、データサイズ信号DSがバイトを示す値であっても、リード制御信号OEを出力せずに、ライト制御信号WEを出力する。さらに、メモリコントローラ30は、タイミングT21〜T22においてメモリ20から読み出されたリードデータRDbのデータDをライトデータWDaに置き換えたライトデータWDb(図6において、A、B、C、Dmで示す)を生成する。そして、メモリコントローラ30は、データDmを含むライトデータWDbをメモリ20に書き込む。なお、ライト動作の期間となっているタイミングT24〜T25の期間は特にメモリコントローラ30の動作は行われない。
上記説明より、CPU10がリードモディファイライト命令を実行した場合、CPU10は、リードデータを読み出したアドレスに対して修正後のデータを書き戻す動作を行う。このような場合、本実施の形態にかかるメモリコントローラ30は、RMWフラグにより、ライド動作の前に行われたリード動作がリードモディファイライト命令に基づき行われたものか否かを判断することができる。そして、メモリコントローラ30は、RMWフラグが有効であれば、リードモディファイライト命令に基づくライト動作において、リード動作を行うことなく、修正後のライトデータWDaを含むライトデータWDbを生成する。
これにより、本実施の形態にかかるメモリコントローラ30は、CPU10においてリードモディファイライト命令が実行され、所定のデータ幅(例えば、32ビット(1ワード))よりも小さなデータ幅(例えば、8ビット(1バイト)又は16ビット(ハーフワード))を有する部分データを書き込む動作が発生した場合であっても、部分データのライト動作においてリード動作を行うことなく、書き込み対象データである部分データを含む1ワードのデータ幅のライトデータWDbをメモリに書き込むことができる。つまり、本実施の形態にかかるメモリコントローラ30は、リードモディファイライト命令に基づくライト動作を高速化し、データ処理装置の処理能力を向上させることができる。データ処理装置においてリードモディファイライト命令が実行される頻度が高い場合、本実施の形態にかかるメモリコントローラ30を実装することによる高速化のメリットは更に顕著なものとなる。
また、本実施の形態にかかるメモリコントローラ30は、リードモディファイライト命令に起因することなく部分データの書き込みが発生した場合(例えば、図5のタイミングT12〜T16の動作)、データサイズ信号DSに基づきリード/ライト制御回路41がリード動作とライト動作を実行する。つまり、このような場合、メモリコントローラ30は、まずリード制御信号OEを出力して第1のリードデータを読み出し、第1のリードデータの該当部分を部分データに置き換えて、部分データを含む1ワードのデータ幅のライトデータWDbを生成する。そして、メモリコントローラ30は、部分データを含む1ワードのデータ幅を有するライトデータWDbをメモリ20に書き込む。これにより、メモリコントローラ30は、リードモディファイライト命令以外の命令に基づいて部分データの書き込み動作が発生した場合であっても、部分データを含む1ワードのデータ幅のライトデータWDbをメモリ20に書き込むことができる。
本実施の形態にかかるメモリコントローラ30では、部分データのライト動作が、リードモディファイライト命令に基づくものか否かに関わらず、部分データを含むライトデータWDbをメモリ20に書き込む。そのため、メモリコントローラ30は、書き込み対象となっているデータのデータ幅によらず、1ワードのライトデータWDbに対してエラー訂正コードECCを生成することができる。これにより、メモリコントローラ30は、生成するエラー訂正コードECCのデータサイズをバイト単位で生成するよりも小さくすることができる。また、エラー訂正コードECCのデータ量が小さいために、データ処理装置1は、メモリ20の記憶容量がエラー訂正コードECCにより圧迫されることなく、CPU10が必要とするデータをメモリ20に効率的に格納することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、CPU10で実行された命令がリードモディファイライト命令であるか否かを判断する方法は、RMWフラグを用いた方法以外に、ライト動作に対応したアドレス信号ADDとライト動作の前の動作において出力されたアドレス信号ADDとを比較する方法によっても実現することができる。つまり、本発明にかかるアクセス方法を実現するためには、CPU10においてリードモディファイライト命令が実行されているかをメモリコントローラ30が判断できれば良く、その判断方法はデータ処理装置のシステムに応じて適宜変更することが可能である。
実施の形態1にかかるデータ処理装置のブロック図である。 実施の形態1にかかるメモリコントローラの動作を示すフローチャートを示す図である。 実施の形態1にかかるメモリコントローラにおけるマージ処理の動作を示すフローチャートである。 実施の形態1にかかるデータ処理装置において1ワードのデータのリード動作及びライト動作が行われた場合のメモリコントローラの動作を示すタイミングチャートである。 実施の形態1にかかるデータ処理装置において1ワードのデータのリード動作及び部分データのライト動作が行われた場合のメモリコントローラの動作を示すタイミングチャートである。 実施の形態1にかかるデータ処理装置においてリードモディファイライト命令に基づくリード動作及びライト動作が行われた場合のメモリコントローラの動作を示すタイミングチャートである。 従来のデータ処理装置のブロック図である。 従来のデータ処理装置において部分データのライト動作が行われた場合のタイミングチャートである。 従来のデータ処理装置において1ワードのデータのライト動作が行われた場合のタイミングチャートである。
符号の説明
1 データ処理装置
10 CPU
20 メモリ
30 メモリコントローラ
31 アクセス制御回路
32 訂正コード生成回路
33 エラー検出訂正回路
41 リード/ライト制御回路
42 RMWフラグレジスタ
43 データセレクト制御回路
44 ライトデータバッファ
45 データマージ回路
46 リードデータバッファ
ADD アドレス信号
CLK クロック信号
DS データサイズ信号
ECC エラー訂正コード
ERR エラー信号
RMW リードモディファイライト信号
RWC リードライト制御信号
STB ストローブ信号
OE リード制御信号
WE ライト制御信号
A〜F、Dm バイト単位のデータ
RDa、RDb リードデータ
WDa、WDb ライトデータ

Claims (20)

  1. 所定のデータ幅のデータの入出力を行うメモリと、
    リード命令又はライト命令を出力して前記メモリに対してアクセスを行う演算回路と、
    前記演算回路から前記ライト命令と前記ライト命令に関連付けられた前記所定のデータ幅よりも小さなデータ幅の部分データとを受けた場合に、前記メモリから読み出した第1のリードデータの一部を前記部分データに置き換えて前記メモリに対するライトデータを出力するアクセス制御回路と、
    を有し、
    前記アクセス制御回路は、前記ライト命令が前記ライト命令よりも前に出力されたリード命令に対応して出力されたものである場合は、前記第1のリードデータに代えて以前に出力された前記リード命令に応じてすでに取得されている第2のリードデータの一部を前記部分データに置き換えて前記ライトデータを出力するデータ処理装置。
  2. 前記演算回路は、前記メモリから前記第1のリードデータを読み出し、読み出した前記第1のリードデータの一部を修正して前記部分データを生成し、生成した前記部分データを前記メモリに対して書き込むリードモディファイライト命令を実行する請求項1に記載のデータ処理装置。
  3. 前記アクセス制御回路は、
    フラグ値を格納するRMWフラグレジスタと、
    前記メモリに対して読み出し動作を指示するリード制御信号及び書き込み動作を指示するライト制御信号を出力するリード/ライト制御回路と、を有し、
    前記演算回路は、前記リードモディファイライト命令の実行開始に伴い前記リード命令と共にリードモディファイライト信号を出力し、その後、前記ライト命令と共に前記アクセス制御回路に対して出力する被保存データのデータ幅を示すデータサイズ信号を出力し、
    前記RMWフラグレジスタは、前記リードモディファイライト信号を受信し、前記フラグ値を有効状態とし、
    前記リード/ライト制御回路は、前記ライト命令の受信時に、前記データサイズ信号が前記所定のデータ幅よりも小さな値を示し、かつ、前記フラグ値が有効状態であれば、前記ライト命令に応じて前記リード制御信号を出力することなく、前記ライト制御信号を出力する請求項2に記載のデータ処理装置。
  4. 前記リード/ライト制御回路は、前記ライト命令の受信時に、前記データサイズ信号が前記所定のデータ幅よりも小さく、かつ、前記フラグ値が無効状態であれば、前記ライト命令に応じて前記リード制御信号を出力し、その後前記ライト制御信号を出力する請求項3に記載のデータ処理装置。
  5. 前記アクセス制御回路は、
    前記演算回路が出力するアドレス信号及び前記演算回路が前記ライト命令の出力時に前記アクセス制御回路に対して出力する被保存データのデータ幅を示すデータサイズ信号を受け、データのマージ処理の対象となるデータ位置を示す選択信号を出力するデータセレクト制御回路と、
    前記第1のリードデータを格納するリードデータバッファと、
    前記部分データ又は前記被保存データを格納するライトデータバッファと、
    前記リードデータバッファから読み出したデータと前記ライトデータバッファから読み出したデータとを前記選択信号に応じてマージし、前記ライトデータを生成するデータマージ回路と、
    を有する請求項1乃至4のいずれか1項に記載のデータ処理装置。
  6. 前記リードデータバッファ及びライトデータバッファは、それぞれ前記所定のデータ幅よりも小さなデータ幅で定義される格納データ幅で格納するデータを分割し、分割したデータ単位でデータの入出力を行う請求項5に記載のデータ処理装置。
  7. 前記データマージ回路は、前記選択信号が有効状態を示す部分に相当する前記ライトデータとして前記ライトデータバッファのデータを選択し、前記選択信号が無効状態を示す部分に相当する前記ライトデータとして前記リードデータバッファのデータを選択する請求項6に記載のデータ処理装置。
  8. 前記データ処理装置は、
    前記ライトデータの全体に対するエラー訂正コードを生成して、前記メモリに対して前記ライトデータ及び前記エラー訂正コードを出力するエラー訂正回路と、
    前記メモリから読み出される第3のリードデータに関連付けられて読み出される前記エラー訂正コードを用いて、前記第3のリードデータに対するエラー訂正を行い、前記演算回路に送信する前記第1のリードデータを生成するエラー検出訂正回路を有する請求項1乃至7のいずれか1項に記載のデータ処理装置。
  9. 演算回路から出力されるリード命令又はライト命令を受けてメモリに対するアクセスを制御するメモリコントローラであって、
    前記ライト命令が前記ライト命令の直前に受けた前記リード命令に基づく命令であることを検知した場合、前記ライト命令の直前に受けた前記リード命令に基づき前記メモリから取得したリードデータ、及び、前記ライト命令に対応して前記演算回路から出力される部分データに基づき前記メモリに対するライトデータを出力するアクセス制御回路と、
    前記ライトデータの全体に対するエラー訂正コードを生成して、前記メモリに対して前記ライトデータ及び前記エラー訂正コードを出力するエラー訂正回路と、
    を有するメモリコントローラ。
  10. 前記部分データは、前記演算回路と前記メモリとの間を接続するデータバスのデータ幅よりも小さいデータ幅を有する請求項9に記載のメモリコントローラ。
  11. 前記演算回路は、前記メモリから前記リードデータを読み出し、読み出した前記リードデータの一部を修正して前記部分データを生成し、生成した前記部分データを前記メモリに対して書き込むリードモディファイライト命令を実行する請求項10に記載のメモリコントローラ。
  12. 前記アクセス制御回路は、
    前記ライト命令が前記ライト命令の直前に受けた前記リード命令に基づく命令であることを検知した場合、前記ライト命令の直前に受けた前記リード命令に基づき前記メモリから取得したリードデータの一部を前記部分データに置き換えて前記ライトデータを出力し、
    前記ライト命令が前記ライト命令の直前に受けた前記リード命令とは独立した命令であることを検知し、かつ、前記ライト命令と共に前記部分データを受信した場合、前記ライト命令に基づき前記メモリに読み出し動作を指示するリード制御信号を出力して前記メモリから前記リードデータを読み出し、その後、前記リードデータの一部を前記部分データに置き換えて前記ライトデータを生成する請求項10又は11に記載のメモリコントローラ。
  13. 前記アクセス制御回路は、
    フラグ値を格納するRMWフラグレジスタと、
    前記メモリに対して読み出し動作を指示するリード制御信号及び書き込み動作を指示するライト制御信号を出力するリード/ライト制御回路と、を有し、
    前記演算回路は、前記リードモディファイライト命令の実行開始に伴い前記リード命令と共にリードモディファイライト信号を出力し、その後、前記ライト命令と共に前記アクセス制御回路に対して出力する被保存データのデータ幅を示すデータサイズ信号を出力し、
    前記RMWフラグレジスタは、前記リードモディファイライト信号を受信し、前記フラグ値を有効状態とし、
    前記リード/ライト制御回路は、前記ライト命令の受信時に、前記データサイズ信号が前記データバスのデータ幅よりも小さく、かつ、前記フラグ値が有効状態であれば、前記ライト命令に応じて前記リード制御信号を出力することなく、前記ライト制御信号を出力する請求項10乃至12のいずれか1項に記載のメモリコントローラ。
  14. 前記リード/ライト制御回路は、前記ライト命令の受信時に、前記データサイズ信号が前記データバスのデータ幅よりも小さな値を示し、かつ、前記フラグ値が無効状態であれば、前記ライト命令に応じて前記リード制御信号を出力し、その後前記ライト制御信号を出力する請求項13に記載のメモリコントローラ。
  15. 前記アクセス制御回路は、
    前記演算回路が出力するアドレス信号及び前記被保存データのデータ幅を示すデータサイズ信号を受け、データのマージ処理の対象となるデータ位置を示す選択信号を出力するデータセレクト制御回路と、
    前記リードデータを格納するリードデータバッファと、
    前記部分データ又は前記被保存データを格納するライトデータバッファと、
    前記リードデータバッファから読み出したデータと前記ライトデータバッファから読み出したデータとを前記選択信号に応じてマージし、前記ライトデータを生成するデータマージ回路と、
    を有する請求項10乃至14のいずれか1項に記載のメモリコントローラ。
  16. 前記リードデータバッファ及びライトデータバッファは、それぞれ前記データバスのデータ幅よりも小さなデータ幅で定義される格納データ幅で格納するデータを分割し、分割したデータ単位でデータの入出力を行う請求項15に記載のデータ処理装置。
  17. 前記データマージ回路は、前記選択信号が有効状態を示す部分に相当する前記ライトデータとして前記ライトデータバッファのデータを選択し、前記選択信号が無効状態を示す部分に相当する前記ライトデータとして前記リードデータバッファのデータを選択する請求項6に記載のメモリコントローラ。
  18. 演算回路と前記演算回路からのアクセスを受けるメモリとの間のアクセス制御方法であって、
    前記演算回路から出力されるリード命令に基づき前記メモリから読み出したリードデータを前記演算回路に送信し、
    前記演算回路から部分データとして出力される前記リードデータの一部に変更を加えたデータ及びライト命令を受信し、
    前記ライト命令が直前に出力された前記リード命令に基づき出力された命令であることを検知し、
    前記ライト命令の直前に出力された前記リード命令に基づき読み出された前記リードデータと前記部分データとに基づき前記メモリに対するライトデータを生成するアクセス制御方法。
  19. 前記部分データは、前記演算回路と前記メモリとの間のデータバスのデータ幅よりも小さなデータ幅を有し、
    前記ライトデータは、前記リードデータの一部を前記部分データに置き換えて生成される請求項18に記載のアクセス制御方法。
  20. 前記演算回路から他の命令とは独立したライト命令と、前記部分データと、を受信した場合、
    前記ライト命令が直前に出力された前記リード命令とは独立した命令であることを検知し、
    前記ライト命令に応じて前記メモリからリードデータを読み出し、
    その後、前記リードデータの一部を前記部分データに置き換えて前記ライトデータを生成する請求項18又は19に記載のアクセス制御方法。
JP2008143182A 2008-05-30 2008-05-30 データ処理装置、メモリコントローラ及びそのアクセス制御方法 Pending JP2009289170A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008143182A JP2009289170A (ja) 2008-05-30 2008-05-30 データ処理装置、メモリコントローラ及びそのアクセス制御方法
US12/453,874 US8234463B2 (en) 2008-05-30 2009-05-26 Data processing apparatus, memory controller, and access control method of memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008143182A JP2009289170A (ja) 2008-05-30 2008-05-30 データ処理装置、メモリコントローラ及びそのアクセス制御方法

Publications (1)

Publication Number Publication Date
JP2009289170A true JP2009289170A (ja) 2009-12-10

Family

ID=41381246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008143182A Pending JP2009289170A (ja) 2008-05-30 2008-05-30 データ処理装置、メモリコントローラ及びそのアクセス制御方法

Country Status (2)

Country Link
US (1) US8234463B2 (ja)
JP (1) JP2009289170A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011253251A (ja) * 2010-05-31 2011-12-15 Toshiba Corp データ記憶装置及びデータ書き込み方法
US8682501B2 (en) 2012-05-31 2014-03-25 Renesas Electronics Corporation Data processing device, microcontroller, and self-diagnosis method of data processing device
JPWO2021075076A1 (ja) * 2019-10-15 2021-04-22

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8438344B2 (en) * 2010-03-12 2013-05-07 Texas Instruments Incorporated Low overhead and timing improved architecture for performing error checking and correction for memories and buses in system-on-chips, and other circuits, systems and processes
US9032162B1 (en) 2011-08-12 2015-05-12 Altera Corporation Systems and methods for providing memory controllers with memory access request merging capabilities
US9304709B2 (en) 2013-09-06 2016-04-05 Western Digital Technologies, Inc. High performance system providing selective merging of dataframe segments in hardware
US9710185B2 (en) 2014-07-10 2017-07-18 Samsung Electronics Co., Ltd. Computing system with partial data computing and method of operation thereof
US10719397B2 (en) * 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
KR20200126155A (ko) * 2019-04-29 2020-11-06 에스케이하이닉스 주식회사 명령 머지 동작을 수행하는 반도체 메모리 장치 및 그 동작 방법
US11573891B2 (en) 2019-11-25 2023-02-07 SK Hynix Inc. Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
KR20210063724A (ko) * 2019-11-25 2021-06-02 에스케이하이닉스 주식회사 메모리 시스템
KR102456176B1 (ko) 2020-05-21 2022-10-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN115686164A (zh) * 2021-07-26 2023-02-03 瑞昱半导体股份有限公司 供电端装置、供电系统以及非暂态电脑可读取媒体

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0471046A (ja) * 1990-07-12 1992-03-05 Hitachi Ltd 共有メモリの部分書込み制御方式
JPH06103151A (ja) * 1992-06-26 1994-04-15 Internatl Business Mach Corp <Ibm> パーソナルコンピュータ
JP2002529811A (ja) * 1998-10-30 2002-09-10 テレフオンアクチーボラゲット エル エム エリクソン(パブル) メモリ・リード要求を実行するための方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11194975A (ja) 1998-01-06 1999-07-21 Okuma Corp メモリシステム
US20060036817A1 (en) * 2004-08-10 2006-02-16 Oza Alpesh B Method and system for supporting memory unaligned writes in a memory controller
US20070186135A1 (en) * 2006-02-09 2007-08-09 Brian Flachs Processor system and methodology with background error handling feature
US8245109B2 (en) * 2006-03-31 2012-08-14 Hewlett-Packard Development Company, L.P. Error checking and correction (ECC) system and method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0471046A (ja) * 1990-07-12 1992-03-05 Hitachi Ltd 共有メモリの部分書込み制御方式
JPH06103151A (ja) * 1992-06-26 1994-04-15 Internatl Business Mach Corp <Ibm> パーソナルコンピュータ
JP2002529811A (ja) * 1998-10-30 2002-09-10 テレフオンアクチーボラゲット エル エム エリクソン(パブル) メモリ・リード要求を実行するための方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011253251A (ja) * 2010-05-31 2011-12-15 Toshiba Corp データ記憶装置及びデータ書き込み方法
US8332579B2 (en) 2010-05-31 2012-12-11 Kabushiki Kaisha Toshiba Data storage apparatus and method of writing data
US8682501B2 (en) 2012-05-31 2014-03-25 Renesas Electronics Corporation Data processing device, microcontroller, and self-diagnosis method of data processing device
US9043046B2 (en) 2012-05-31 2015-05-26 Renesas Electronics Corporation Data processing device, microcontroller, and self-diagnosis method of data processing device
JPWO2021075076A1 (ja) * 2019-10-15 2021-04-22
WO2021075076A1 (ja) * 2019-10-15 2021-04-22 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、及び情報処理方法
JP7177948B2 (ja) 2019-10-15 2022-11-24 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、及び情報処理方法
US11886290B2 (en) 2019-10-15 2024-01-30 Sony Interactive Entertainment Inc. Information processing apparatus and information processing method for error correction and read modify write processing

Also Published As

Publication number Publication date
US20090300297A1 (en) 2009-12-03
US8234463B2 (en) 2012-07-31

Similar Documents

Publication Publication Date Title
JP2009289170A (ja) データ処理装置、メモリコントローラ及びそのアクセス制御方法
JP5010271B2 (ja) エラー訂正コード生成方法、およびメモリ制御装置
JP2014049148A (ja) 半導体記憶装置
JP2011090361A (ja) 位相キャリブレーション回路、メモリカード制御装置、及び位相キャリブレーション方法
JP2005242797A (ja) エラー訂正回路
JPWO2007088597A1 (ja) エラー訂正コード生成方法及びメモリ管理装置
JP2011048681A (ja) プロセッサ
US9256556B2 (en) RAM memory device capable of simultaneously accepting multiple accesses
JPWO2008068937A1 (ja) データ転送制御装置およびコンピュータシステム
US8291270B2 (en) Request processing device, request processing system, and access testing method
JP2004246754A (ja) 半導体記憶装置およびその制御装置
US6874117B2 (en) Memory control device and method
JPWO2012046343A1 (ja) メモリモジュール冗長化方法、記憶処理装置、及びデータ処理装置
JP5176646B2 (ja) 誤り訂正機能確認回路及び誤り訂正機能確認方法とそのコンピュータプログラム、並びに記憶装置
JP2013182373A (ja) 記憶装置及びその制御方法
JP2014016925A (ja) 情報処理システム、データ切替方法およびプログラム
JP5446931B2 (ja) 誤り検出訂正装置及びメモリ装置
JP2009217714A (ja) データ処理回路、キャッシュシステムおよびデータ転送装置
CN106201336B (zh) 具有回写缓存器的设备及其相关方法
JP2004126911A (ja) 制御装置
WO2010029682A1 (ja) 情報処理装置
US8533565B2 (en) Cache controller and cache controlling method
JP5227601B2 (ja) 制御システム
JP2008225835A (ja) メモリアクセス制御方法及び回路、並びに情報処理装置
JPH04115340A (ja) 二重化記憶回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110307

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130604