(58)【調査した分野】(Int.Cl.,DB名)
書き換え頻度に応じて予め定められたメモリの所定領域に記憶させる記憶対象データに、前記記憶対象データの長さ及び第1書込ダミーデータの長さを合わせた長さが所定の長さとなるように、前記第1書込ダミーデータを付加して第1ライトデータを生成して出力する第1書込制御部と、
前記所定領域から前記記憶対象データを読み出した際に、読み出した前記記憶対象データの誤りを訂正するために用いられる所定の訂正用データを、前記第1書込制御部から出力された前記第1ライトデータに付加して第2ライトデータを生成して出力する訂正部と、
を備えた半導体装置。
前記第2書込制御部は、前記第1書込ダミーデータの削除後、第2書込ダミーデータを付加して第3ライトデータを生成し、前記記憶対象データの長さ、前記訂正用データの長さ、及び前記第2書込ダミーデータの長さを合わせた長さを前記所定の長さとすると共に、前記記憶対象データに前記訂正用データ及び前記第2書込ダミーデータが付加された前記第3ライトデータを前記メモリに出力する、請求項2に記載の半導体装置。
第1データに第1ダミーデータを付加して、所定のデータ長である第2データを生成し、生成した前記第2データに対する冗長ビットを作成した後、前記第1データ及び前記冗長ビットに第2ダミーデータを付加して前記所定のデータ長である第3データを生成する、半導体装置。
書き換え頻度に応じて予め定められたメモリの所定領域から読み出した、記憶対象データに訂正用データが付加された第1リードデータに、前記記憶対象データの長さ及び第1読出ダミーデータの長さを合わせた長さが所定の長さとなるように第1読出ダミーデータを付加して第2リードデータを生成して出力する第1読出制御部と、
前記第1読出制御部から出力された前記第2リードデータから前記訂正用データを削除し、前記第1読出ダミーデータが付加された前記記憶対象データのエラーを前記訂正用データに基づいて訂正した第3リードデータを出力する訂正部と、
を備えた半導体装置。
前記記憶対象データの長さ、前記訂正用データの長さ、及び前記第2読出ダミーデータの長さを合わせた長さが、前記所定の長さである、請求項10に記載の半導体装置。
前記訂正部から出力された前記第3リードデータから、前記第1読出ダミーデータを削除する第2読出制御部を備えた、請求項9から請求項12のいずれか1項に記載の半導体装置。
前記メモリの前記所定領域から前記第1リードデータを読み出す場合は、前記訂正部を介して、前記訂正用データによりエラーが訂正された前記第3リードデータを読み出し、かつ、前記メモリの前記所定領域外からリードデータを読み出す場合は、直接、前記リードデータを読み出す、請求項9から請求項13のいずれか1項に記載の半導体装置。
書き換え頻度に応じて予め定められたメモリの所定領域に記憶させる記憶対象データに、前記記憶対象データの長さ及び第1書込ダミーデータの長さを合わせた長さが所定の長さとなるように、前記第1書込ダミーデータを付加して第1ライトデータを生成して出力する第1書込制御工程と、
前記所定領域から前記記憶対象データを読み出した際に、読み出した前記記憶対象データの誤りを訂正するために用いられる所定の訂正用データを、前記第1書込制御工程により出力された前記第1ライトデータに付加して第2ライトデータを生成して出力する訂正工程と、
を備えたデータアクセス方法。
書き換え頻度に応じて予め定められたメモリの所定領域から読み出した、記憶対象データに訂正用データが付加された第1リードデータに、前記記憶対象データの長さ及び第1読出ダミーデータの長さを合わせた長さが所定の長さとなるように第1読出ダミーデータを付加して第2リードデータを生成して出力する第1読出工程と、
前記第1読出工程により出力された前記第2リードデータから前記訂正用データを削除し、前記第1読出ダミーデータが付加された前記記憶対象データのエラーを前記訂正用データに基づいて訂正した第3リードデータを出力する訂正工程と、
を備えたデータアクセス方法。
【発明を実施するための形態】
【0015】
(比較例)
まず、本実施の形態のECC機能を備えた半導体装置10について説明する前に、比較のため、データ長が16ビットのデータに対する従来の16ビット用ECC回路114の適用例について説明する。
【0016】
図7には、比較例となる半導体装置の一例の概略構成図を示す。従来の半導体装置100は、復号化制御部114A及び暗号化制御部114Bを有するECC回路114を備えている。フラッシュメモリ112へ書き込むライトデータは、16ビット長のwdata[15:0]である。一方、フラッシュメモリ112から読み出したリードデータは、16ビット長のrdata[15:0]である。
【0017】
暗号化制御部114Bは、ライトデータ(wdata[15:0])に5ビット長のチェックビットとなるECC用データを付加して、21ビットの暗号化されたデータ(flash_wdata[20:0])を生成して、フラッシュメモリ112に書き込む。なお、ここでは、flash_wdata[20:0]のうち、下位の16ビットが、ライトデータ(wdata[15:0])に対応し、上位の5ビットが、ECC用データに対応している。一方、復号化制御部114Aは、フラッシュメモリ112から読み出した、21ビット長のリードデータ(flash_rdata[20:0])から、暗号化制御部114Bで付加したECC用データを削除して、16ビット長のリードデータ(rdata[15:0])に復号して出力する。
【0018】
16ビット長のデータを記憶させる一般的なフラッシュメモリ112のアドレスマップの具体的一例を
図8に示す。また、当該比較例におけるフラッシュメモリ112のアドレスマップの具体的一例を
図9に示す。
図8及び
図9には、具体的一例として、セグメント0にあたるプログラム領域12Aを64Kバイト、セグメント1にあたるデータフラッシュ領域112Bを8Kバイトとした、合計72Kバイトのアドレスマップ仕様例を示している。
図8に示すように、ECC用データが付加されていない場合、フラッシュメモリ112は、1アドレスが16ビットとなっている。
【0019】
一方、当該比較例では、ECC用データを付加したため、フラッシュメモリ112は、1アドレスが16ビット+5ビット=21ビットとなっている。ここで、プログラム領域112Aに記憶されるデータは、比較的書き換え頻度が低い(少なくとも、データフラッシュ領域112Bよりも低い、詳細後述)ため、ECC用データを付加せずに、プログラム領域112Aに記憶させるようにすることができる。しかしながら、このような場合でも、フラッシュメモリ112の一部の領域(セグメント)を、他の領域と異なるビット長で構成することが一般的に困難であるため、
図9に示した、1アドレスが21ビットのフラッシュメモリ112を用いることになる。この場合では、プログラム領域112Aは、本来、1アドレスが16ビットでよいにも係わらず21ビットとしているため、メモリ領域の利用効率の低下を招くと共に、チップサイズの増大やコストに影響を与える懸念が生じる。
【0020】
(本実施の形態)
以下では、上述した比較例に対する本実施の形態の半導体装置を、図面を参照して詳細に説明する。
【0021】
まず、本実施の形態の半導体装置10の構成について説明する。
図1には、本実施の形態の半導体装置の一例を示す概略構成図を示す。本発明の半導体装置10は、1アドレスが16ビットのフラッシュメモリ12に記憶されているデータの誤りを検出して訂正する16ビット用のECC回路14を備えている。このような半導体装置10の具体的一例としては、16ビット長の命令(プログラム等)を扱うことができる8ビットマイコンが挙げられる。当該8ビットマイコンでは、命令は16ビット長、一度に扱えるデータ長が8ビットとなるため、8ビット長の命令を扱う一般的な8ビットマイコンとは、フラッシュメモリ12へのアクセス(書き込み及び読み出し)の仕方が異なる。
【0022】
このような命令等のプログラム、及び個人データやセーブデータ等は、フラッシュメモリ12に記憶される。本実施の形態のフラッシュメモリ12のアドレスマップの具体的一例を
図2に示す。なお、
図2に示したフラッシュメモリ12は、具体的一例として、プログラム領域12Aを64Kバイト、データフラッシュ領域12Bを8Kバイトとした、合計72Kバイトのアドレスマップ仕様例を示している。
図2に示すように、フラッシュメモリ12は、64Kバイト単位で区切られており、プログラム領域12Aをセグメント0、データフラッシュ領域12Bをセグメント1としている。さらに本実施の形態のフラッシュメモリ12のデータフラッシュ領域12Bは、
図2に示すようにECC用データ領域12BAと、データ領域12BBとを有している。
【0023】
フラッシュメモリ12に記憶されているこのような命令等のプログラムは、例えば、プログラムアップデート機能が搭載されている場合等を除き、一般的には、書き換えられることが少ない。そのため、命令等のプログラムが記憶されているフラッシュメモリ12のプログラム領域12Aでは、メモリセルの劣化があまり生じないことが多い。
【0024】
一方、フラッシュメモリ12において、個人データやセーブデータ等は、頻繁に書き換えられることが多い。そのため、個人データやセーブデータ等が記憶されているフラッシュメモリ12のデータフラッシュ領域12Bでは、メモリセルの劣化を促進させることになるため、ECC回路14によりエラー検知及び訂正を行うことが必要となる。
【0025】
そのため、本実施の形態の半導体装置10では、プログラム領域12Aへのアクセスは、ECC回路14を介さずに行われる。すなわち、プログラム領域12Aへのアクセスでは、エラー検知及び訂正が行われない。一方、データフラッシュ領域12Bへのアクセスは、ECC回路14を介すため、エラー検知及び訂正が行われる。
【0026】
本実施の形態のECC回路14は、16ビットのメモリに対して、1ビットのエラー検知及び訂正を可能とするものであり、チェックビットとなる5ビット長のECC用データに基づいて、16ビット長のデータのエラー検知及び訂正を行う。なお、ECC機能及びECC用データとしては、たとば、ハミング符号を用いるものが挙げられるが、特に限定されず、その他、一般的なECC機能に関する技術を適用してもよい。
【0027】
具体的には、本実施の形態のECC回路14は、
図1に示すように復号化制御部14A及び暗号化制御部14Bを備えている。暗号化制御部14Bは、制御回路32から入力された16ビット長のデータに対して、5ビット長のECC用データを付加して、21ビット長の暗号化された暗号化データ(eccdata[20:0])を生成して出力する。なお、ここでは、暗号化データ(eccdata[20:0])のうち、上位の5ビットが、ECC用データに対応している。一方、復号化制御部14Aは、セレクタ40から入力された、21ビット長のデータから、暗号化制御部14Bで付加したECC用データを削除し、ECC用データに基づいてエラー検知及び訂正を行って復号化して、出力する。
【0028】
本実施の形態の半導体装置10は、さらに、ダミーデータ除去回路20、データ分割回路22、選択信号生成回路24、制御回路30、制御回路32、制御回路34、制御回路36、セレクタ40、セレクタ42、セレクタ44、及びセレクタ46を備えている。なお、本実施の形態の制御回路30が、本発明の第1読出制御部に対応し、制御回路32が、本発明の第1書込制御部に対応し、制御回路34が、本発明の第2書込制御部に対応し、ダミーデータ除去回路20が、本発明の第2読出制御部に対応する。
【0029】
選択信号生成回路24は、フラッシュメモリ12のアドレス(flash_address[15:0])をデコードして、現在アクセスしているアドレスがプログラム領域12A及びデータフラッシュ領域12Bのいずれであるかを示す信号select1信号を生成してセレクタ40、42、44、46に出力する機能を有している。なお、本実施の形態では、select1信号が「0」の場合は、プログラム領域12Aにアクセスしていることを示している。また、select1信号が「1」の場合は、データフラッシュ領域12Bにアクセスしていることを示している。
【0030】
セレクタ40、42、44、46は、それぞれselect1信号により入力信号を選択して出力する機能を有する回路である。
【0031】
データ分割回路22は、データフラッシュ領域12Bに書き込む16ビット長のライトデータ(wdata[15:0])を分割(ここでは2分割)して8ビット長のライトデータを生成して出力する機能を有する回路である。
【0032】
制御回路32は、データ分割回路22から入力された8ビット長のライトデータにダミーデータを付加して16ビット長のデータを生成してECC回路14(暗号化制御部14B)に出力する機能を有している。
【0033】
制御回路34は、ECC回路14(暗号化制御部14B)から出力された21ビット長の暗号化データ(eccdata[20:0])から、データフラッシュ領域12Bに実際に書き込むための16ビット長のデータ(flash_wdata[15:0])を生成して出力する機能を有している。
【0034】
制御回路30は、データフラッシュ領域12Bから読み出された16ビット長のリードデータ(flash_rdata[15:0])からECC回路14(復号化制御部14A)に入力するための21ビット長のデータを生成する機能を有している。
【0035】
ダミーデータ除去回路20は、ECC回路14(復号化制御部14A)から出力された16ビット長のデータからダミーデータを除去して、実際に有効な8ビット長のリードデータを生成して出力する機能を有している。
【0036】
次に、本実施の形態の半導体装置10のフラッシュメモリ12へのアクセス動作(書き込み及び読み出し)について詳細に説明する。
【0037】
まず、データフラッシュ領域12Bへのアクセス動作のうち、書き込み動作について詳細に説明する。
図3には、本実施の形態のフラッシュメモリ12のデータフラッシュ領域12Bへの書き込み動作の流れの一例を示す。
【0038】
データフラッシュ領域12Bへアクセスを行う場合は、選択信号生成回路24は「1」のselect1信号を各セレクタ40、42、44、46に出力する。
【0039】
本実施の形態では、フラッシュメモリ12のデータフラッシュ領域12Bに書き込むライトデータ(wdata[15:0])は、実際には、16ビット長である。しかしながら、当該16ビット長のライトデータ(wdata[15:0])にECC用データを付加してしまうと、上述の比較例で述べたように、21ビット長のデータになってしまう。比較例のように21ビット長とならないように、本実施の形態では、16ビット長のライトデータ(wdata[15:0])を分割(具体的には、2分割)した8ビット長のライトデータにECC用データを付加して、データフラッシュ領域12Bに書き込む。そこで本実施の形態では、
図2に示すように、データフラッシュ領域12Bに、ECC用データ領域12BA及びデータ領域12BBの2つの領域を設けている。なお、16ビット長のライトデータ(wdata[15:0])を2分割して8ビット長のライトデータとして扱っているため、データフラッシュ領域12Bの領域は、従来(
図8、
図9参照)に比べて、2倍のアドレスを要している。
【0040】
まず、データ分割回路22では、入力された16ビット長のライトデータ(wdata[15:0])を2分割して、2つの8ビット長のライトデータ(wdata[7:0])を生成して出力する(
図3、S1.データ分割参照)。データ分割回路22から出力された8ビット長のライトデータ(wdata[7:0])は、制御回路32に入力される。
【0041】
制御回路32は、入力された8ビット長のライトデータ(wdata[7:0])に、所定の8ビット長のダミーデータを付加して、16ビット長のデータ({8’d0、wdata[7:0]})生成してECC回路14(暗号化制御部14B)へ出力する(
図3、S2.ダミーデータ発生参照)。
【0042】
ECC回路14の暗号化制御部14Bでは、制御回路32から入力された16ビット長のデータ({8’d0、wdata[7:0]})に応じた5ビット長のECC用データを上位に付加して、21ビット長の暗号化データ(eccdata[20:0])を生成して、制御回路34に出力する(
図3、S3.チェックビット発生参照)。
【0043】
制御回路34は、ECC回路14(暗号化制御部14B)から出力された21ビット長の暗号化データ(eccdata[20:0])から実際に、フラッシュメモリ12のデータフラッシュ領域12Bに書き込む16ビット長のデータを生成する。具体的一例として、本実施の形態の制御回路34では、21ビット長の暗号化データ(eccdata[20:0])から、制御回路32で付加した8ビット長のダミーデータを削除する。さらに制御回路34は、3ビット長(全長16ビット−ライトデータ8ビット−ECC用データ5ビット=3ビット)の所定のダミーデータを上位ビットに新たに付加した16ビット長のデータ({3’d0、eccdata[20:16]、eccdata[7:0]})を生成してセレクタ46に出力する(
図3、S4.書込データ生成参照)。
【0044】
セレクタ46は、select1信号に応じて、制御回路34から入力された16ビット長のデータ({3’d0、eccdata[20:16]、eccdata[7:0]})をライトデータ(flash_wdata[15:0])として選択して、フラッシュメモリ12に出力する。
【0045】
一方、制御回路36は、フラッシュメモリ12のデータフラッシュ領域12Bにアクセスする際に、入力されたアドレス(address[15:0])の変換を行う機能を有している。上述したように、本実施の形態のデータフラッシュ領域12Bでは、1アドレスをECC用データ領域12BAとデータ領域12BBとに分けている。また、データフラッシュ領域12Bでは、本来、1アドレスが16ビットであるところを、1アドレスが8ビットとして扱っているため、アドレスの変換を制御回路36により行っている。なお、具体的一例として、本実施の形態では、データフラッシュ領域12Bを1:0000H〜1:1FFFHとしている。
【0046】
データフラッシュ領域12Bにアクセスする際は、制御回路36により変換されたアドレス(flash_address[15:0])が、フラッシュメモリ12に出力される。
【0047】
フラッシュメモリ12では、データフラッシュ領域12Bの、セレクタ44から入力されたアドレス(flash_address[15:0])に、16ビット長のライトデータ(flash_wdata[15:0])が書き込まれる。この際、上述したように、データ領域12BBには、8ビット長の実際のライトデータが書き込まれ、ECC用データ領域12BAには、3ビット長のダミーデータと、ライトデータに応じた5ビット長のECC用データとが書き込まれる。
【0048】
次に、データフラッシュ領域12Bへのアクセス動作のうち、読み出し動作について詳細に説明する。
図4には、本実施の形態のフラッシュメモリ12のデータフラッシュ領域12Bからの読み出し動作の流れの一例を示す。
【0049】
なお、読み出し動作においても、選択信号生成回路24は「1」のselect1信号を各セレクタ40、42、44、46に出力する。
【0050】
まず、制御回路30では、フラッシュメモリ12(データフラッシュ領域12B)のセレクタ44から入力されたアドレス(flash_address[15:0])から読み出した16ビット長のリードデータ(flash_rdata[15:0])から、ECC回路14の復号化制御部14Aに入力される21ビット長のデータを生成する。なお、本実施の形態では、
図4等に示すように、データフラッシュ領域12Bから読み出された16ビット長のリードデータは、3ビット長のダミーデータと、5ビット長のECC用データと、実際に有効な8ビット長のリードデータと、を含んでいる。具体的一例として、本実施の形態の制御回路30では、16ビット長のリードデータ(flash_rdata[15:0])から、制御回路34で付加した3ビット長のダミーデータを削除する。さらに制御回路30は、8ビット長の所定のダミーデータを新たに、付加した21ビット長のデータ({flash_rdata[12:8]、8’d0、flash_rdata[7:0]})を生成してセレクタ46に出力する(
図4、S1.ダミーデータ発生参照)。なお、制御回路30で付加する8ビット長の所定のダミーデータは、制御回路32で付加したものと同一となっている。
【0051】
セレクタ40は、select1信号に応じて、制御回路30から入力された21ビット長のデータ({flash_rdata[12:8]、8’d0、flash_rdata[7:0]})を選択して、ECC回路14(復号化制御部14A)に出力する。
【0052】
ECC回路14の復号化制御部14Aは、セレクタ40から入力された21ビット長のデータ({flash_rdata[12:8]、8’d0、flash_rdata[7:0]})から5ビット長のECC用データを削除する。さらに、復号化制御部14Aは、16ビット長のデータ(ダミーデータ8ビット+リードデータ8ビット)に対して、ECC用データに基づいて、エラー検知及び訂正を行って復号した後、16ビット長の復号化データをセレクタ42に出力する(
図4、S2.ECC復号参照)。
【0053】
セレクタ42は、select1信号に応じて、復号化制御部14Aから入力された16ビット長の復号化データを、16ビット長のリードデータ(radata[15:0]として選択して、ダミーデータ除去回路20に出力する。
【0054】
セレクタ42から出力された16ビット長のリードデータ(radata[15:0]のうち、上位8ビットは、ダミーデータであり、下位8ビットが実際に有効なリードデータとなる。ダミーデータ除去回路20では、16ビット長のリードデータ(radata[15:0])からダミーデータを除去して、有効な8ビットのリードデータを生成する(
図4、S3.ダミーデータ削除参照)。
【0055】
さらに、本実施の形態の半導体装置10における、プログラム領域12Aへのアクセス動作を説明する。プログラム領域12Aへアクセスを行う場合は、選択信号生成回路24は、「0」のselect1信号を、各セレクタ40、42、44、46に出力する。また、セレクタ44は、直接入力されたアドレス(address[15:0])を選択して、フラッシュメモリ12に出力する。
【0056】
アクセス動作が書き込み動作の場合は、セレクタ46は、ECC回路14を介さずに入力された16ビット長のライトデータ(wdata[15:0])を選択する。選択された16ビット長のライトデータ(wdata[15:0])は、プログラム領域12Aの、セレクタ44から入力されたアドレスに書き込まれる。
【0057】
一方、アクセス動作が読み出し動作の場合は、セレクタ40には、フラッシュメモリ12(プログラム領域12A)から制御回路30を介して入力された21ビット長のデータと、21ビット長の所定のダミーデータ(21’d0)が入力される。セレクタ40は、select1信号に応じて、21ビット長のダミーデータを選択してECC回路14(復号化制御部14A)に出力する。復号化制御部14Aでは、ECC用データに相当する上位5ビットを削除し、エラーの検出及び訂正処理を行った後、セレクタ42に出力する。
【0058】
セレクタ42の「1」側には、ECC回路14(復号化制御部14A)から出力された16ビット長のデータ復号化データが入力される。一方、セレクタ42の「0」側には、ECC回路14を介さずにフラッシュメモリ12(プログラム領域12A)から読み出された16ビット長のリードデータ(flash_rdata[15:0])が入力される。
【0059】
セレクタ42では、select1信号に応じて、フラッシュメモリ12(プログラム領域12A)から直接入力された16ビット長のリードデータ(flash_rdata[15:0])を選択し、16ビット長のリードデータ(rdata[15:0])として出力する。なお、この場合は、16ビット長のリードデータ(rdata[15:0])にはダミーデータが含まれていないため、ダミーデータ除去回路20におけるダミーデータの除去は行われない。
【0060】
以上説明したように本実施の形態の半導体装置10では、フラッシュメモリ12のメモリ領域を、プログラム領域12Aとデータフラッシュ領域12Bとにわけている。書き換え頻度が低い命令等のプログラムは、プログラム領域12Aに記憶される。書き換え頻度が高いデータは、データフラッシュ領域12Bに記憶される。
【0061】
本実施の形態の半導体装置10では、プログラム領域12Aへアクセス(書き込み及び読み出し)する際は、ECC回路14を介さずに直接アクセスする。
【0062】
一方、本実施の形態の半導体装置10では、データフラッシュ領域12Bへアクセスする際は、ECC回路14を介してアクセスする。データフラッシュ領域12Bに書き込みを行う場合は、16ビット長のライトデータをデータ分割回路22で分割して8ビット長のライトデータを生成する。制御回路32は、8ビット長のライトデータに8ビット長のダミーデータを付加して生成した16ビット長のデータをECC回路14の暗号化制御部14Bに出力する。暗号化制御部14Bでは、5ビット長のECC用データを付加した21ビット長の暗号化データ(eccdata[20:0])を生成して、制御回路34に出力する。制御回路34は、21ビット長の暗号化データ(eccdata[20:0])から制御回路32で付加した8ビット長のダミーデータを削除すると共に、3ビット長のダミーデータを付加して、データフラッシュ領域12Bに実際に書き込むための16ビット長のデータを生成する。この16ビット長のデータがライトデータ(flash_wdata[15:0])としてフラッシュメモリ12に出力される。
【0063】
データフラッシュ領域12Bから読み出しを行う場合は、制御回路30は、フラッシュメモリ12のデータフラッシュ領域12Bから読み出された16ビット長のリードデータ(flash_rdata[15:0])から、制御回路34で付加された3ビット長のダミーデータを削除する。さらに、制御回路30は、制御回路32で付加したのと同一の8ビット長のダミーデータを付加して、セレクタ40を介してECC回路14の復号化制御部14Aに出力する。復号化制御部14Aでは、暗号化制御部14Bで付加した5ビット長のECC用データを削除し、エラーの検知及び訂正を行って復号化した16ビットの復号化データをセレクタ42を介してリードデータ(rdata[15:0])としてダミーデータ除去回路20に出力する。ダミーデータ除去回路20では、リードデータから制御回路30で付加された8ビット長のダミーデータを削除して、実際に有効な8ビット長のリードデータを生成して出力する。
【0064】
これにより、本実施の形態の半導体装置10では、フラッシュメモリ12の1アドレスのデータ長が16ビットのままで、ECC回路14によるエラーの検出及び訂正処理を行うことができる。
【0065】
また、フラッシュメモリ12のメモリ領域の利用効率を向上させることができる。上述した比較例の半導体装置100では、プログラム領域112Aにおいて、1アドレスあたり5ビット長の不要なビットが生じる。一方、本実施の形態の半導体装置10では、データフラッシュ領域12Bにおいて、1アドレスあたり3ビット長の不要なビットが生じるが、実際には、2アドレスが1つの有効な16ビット長のデータに対応するため、1つの有効な16ビット長のデータに対しては、6ビット長の不要なビットが生じることになる。しかしながら、一般的に、データフラッシュ領域12Bは、プログラム領域12Aに比べて小さい(記憶するデータ量が少ない)ことが多い。そのため、半導体装置10では、データフラッシュ領域12Bに対するプログラム領域12Aの比率が増加するほど、メモリ領域の利用効率を向上させることができる。
図5には、本実施の形態の半導体装置10におけるフラッシュメモリ12、及び上述した比較例の半導体装置100におけるアドレスのデータ長が21ビットのフラッシュメモリ112における、各フラッシュメモリ(12、112)のメモリ使用量を比較したグラフを示す。また、
図6には、比較例に対する、フラッシュメモリ12のメモリ領域のビット数の削減率を表したグラフを示す。
図5及び
図6からも、半導体装置10では、データフラッシュ領域12Bに対するプログラム領域12Aの比率が増加するほど、メモリ領域の利用効率を向上させることができることがわかる。
【0066】
また、上述したように、フラッシュメモリ12のメモリ領域を小さくすることができるため、チップサイズの縮小やコストアップの抑制等の効果が得られる。
【0067】
なお、本実施の形態の半導体装置10では、上述したように16ビット用のECC回路14を用いているがこれに限らず、例えば、その他のビット数葉のECC回路を用いても良い。なお、本実施の形態のように16ビット用のECC回路14を用いることにより、一般的に用いられているECC機能を有する回路をECC回路14として流用することができるため、例えば、半導体装置10の開発期間の短縮や、コストアップの抑制等の効果が得られる。
【0068】
また、本実施の形態の半導体装置10では、フラッシュメモリ12に適用した場合を説明しているが、これに限らず、フラッシュメモリ以外のその他の不揮発性や揮発性の各種メモリに対しても同様に適用することができる。
【0069】
なお、本実施の形態の半導体装置10では、各ダミーデータとして、各ビットを「0」値に固定したダミーデータを用いているがこれに限らず、その他の所定のダミーデータを用いてもよい。
【0070】
また、その他の本実施の形態で説明した半導体装置10、フラッシュメモリ12、及びECC回路14の構成及び動作や具体的なビット数等は一例であり、本発明の主旨を逸脱しない範囲内において状況に応じて変更可能であることはいうまでもない。