(57)【要約】【課題】ＣＰＵとメモリとの間のデータ転送のスループットを向上させることが可能なインターフェース回路を提供することである。【解決手段】本発明にかかるインターフェース回路３は、リードアドレス５２を出力するリードアドレス生成部１２と、メモリ２から読み出されたリードデータ５４を正転して出力するかまたは反転して出力するかを示す反転情報が予め格納されており、リードアドレス５２に対応したリードデータの反転情報５３を出力する反転情報生成部１３と、反転情報生成部１３から出力された現在の反転情報５３と一つ前の反転信号５５と、に基づき反転信号を出力する演算回路１４と、演算回路１４から出力された反転信号５６に応じて、リードデータ５４を正転または反転して出力するデータ正転／反転部１５と、を備える。【選択図】図１
2013033413.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとメモリとの間のデータ転送を実施するインターフェース回路であって、
前記ＣＰＵから出力された要求アドレスと当該要求アドレスをインクリメントすることで生成されたアドレスとをリードアドレスとして出力するリードアドレス生成部と、
前記メモリから読み出されたリードデータを正転して出力するかまたは反転して出力するかを示す反転情報が予め格納されており、前記リードアドレスに対応したリードデータの反転情報を出力する反転情報生成部と、
前記反転情報生成部から出力された現在の反転情報と、一つ前の反転信号とに基づき反転信号を出力する演算回路と、
前記演算回路から出力された反転信号に応じて、前記メモリから読み出されたリードデータを正転または反転して出力するデータ正転／反転部と、
を備えるインターフェース回路。
【請求項２】
前記反転情報生成部は、ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータからｎ＋１番目のリードアドレスに対応するリードデータに遷移する際に、遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きい場合に前記ｎ＋１番目のリードアドレスに対応するリードデータを反転して出力することを示す反転情報を格納する、請求項１に記載のインターフェース回路。
【請求項３】
前記データ正転／反転部は、
ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータが正転で出力され、且つｎ＋１番目のリードアドレスに対応する反転情報が正転である場合は、当該ｎ＋１番目のリードアドレスに対応するリードデータを正転で出力し、
ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータが正転で出力され、且つｎ＋１番目のリードアドレスに対応する反転情報が反転である場合は、当該ｎ＋１番目のリードアドレスに対応するリードデータを反転して出力する、
請求項１または２に記載のインターフェース回路。
【請求項４】
前記データ正転／反転部は、
ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータが反転で出力され、且つｎ＋１番目のリードアドレスに対応する反転情報が正転である場合は、当該ｎ＋１番目のリードアドレスに対応するリードデータを反転で出力し、
ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータが反転で出力され、且つｎ＋１番目のリードアドレスに対応する反転情報が反転である場合は、当該ｎ＋１番目のリードアドレスに対応するリードデータを正転して出力する、
請求項１乃至３のいずれか一項に記載のインターフェース回路。
【請求項５】
前記反転情報生成部は、前記リードアドレスがジャンプアドレスか否かを示すジャンプアドレス判定情報と、当該ジャンプアドレスに対応したリードデータを正転して出力するかまたは反転して出力するかを示す反転情報とを予め格納しており、
前記データ正転／反転部は、前記リードアドレスがジャンプアドレスである場合、前記演算回路から出力された反転信号に応じて、前記メモリから読み出されたリードデータを正転または反転して出力する、
請求項１乃至４のいずれか一項に記載のインターフェース回路。
【請求項６】
前記インターフェース回路は状態遷移判定部を更に備え、
前記状態遷移判定部は、前記リードアドレスがジャンプアドレスではない場合、現在のリードデータと一つ前に出力されたリードデータとを比較し、前記現在のリードデータにおける遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きい場合に前記現在のリードデータを反転して出力する、請求項５に記載のインターフェース回路。
【請求項７】
前記状態遷移判定部は、前記リードアドレスがジャンプアドレスではない場合、現在のリードデータと一つ前に出力されたリードデータとを比較し、前記現在のリードデータにおける遷移するビットの数がＮ／２（Ｎは２以上の整数とする）以下である場合に前記現在のリードデータを反転しないで出力する、請求項６に記載のインターフェース回路。
【請求項８】
前記インターフェース回路は更に、
前記反転情報生成部から出力された前記ジャンプアドレス判定情報に応じて制御信号を出力する制御信号生成部と、
前記制御信号に応じて、前記データ正転／反転部から出力されたリードデータおよび前記状態遷移判定部から出力されたリードデータのいずれかを選択する第１のセレクタと、
前記制御信号に応じて、前記演算回路から出力された前記反転信号および前記状態遷移判定部から出力された反転信号のいずれかを選択する第２のセレクタと、
を備える請求項６または７に記載のインターフェース回路。
【請求項９】
前記インターフェース回路は更に、
前記リードアドレス生成部から出力された一つ前のリードアドレスを保持するリードアドレス保持回路を備え、
前記反転情報生成部は、前記リードアドレス保持回路に保持されている前記一つ前のリードアドレスと前記リードアドレス生成部から出力された現在のリードアドレスとに基づき前記現在のリードアドレスに対応したリードデータの反転情報を出力する、請求項１乃至８のいずれか一項に記載のインターフェース回路。
【請求項１０】
前記演算回路は排他的論理和演算が可能な論理回路である、請求項１乃至９のいずれか一項に記載のインターフェース回路。
【請求項１１】
ＣＰＵとメモリとの間におけるデータ転送方法であって、
前記ＣＰＵから出力された要求アドレスと当該要求アドレスをインクリメントすることで生成されたアドレスとをリードアドレスとして出力し、
前記メモリから読み出されたリードデータを正転して出力するかまたは反転して出力するかを示す反転情報のうち、前記リードアドレスに対応したリードデータの反転情報を出力し、
前記反転情報と一つ前の反転信号とに基づき反転信号を生成し、
前記生成された反転信号に応じて前記メモリから読み出されたリードデータを正転または反転して出力する、
データ転送方法。
【請求項１２】
前記反転情報は、ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータからｎ＋１番目のリードアドレスに対応するリードデータに遷移する際に、遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きい場合に前記ｎ＋１番目のリードアドレスに対応するリードデータを反転して出力することを示す反転情報である、請求項１１に記載のデータ転送方法。
【請求項１３】
前記リードアドレスがジャンプアドレスか否かを示すジャンプアドレス判定情報と、当該ジャンプアドレスに対応したリードデータを正転して出力するかまたは反転して出力するかを示す反転情報とを予め格納し、
前記リードアドレスがジャンプアドレスである場合、前記反転信号に応じて前記メモリから読み出されたリードデータを正転または反転して出力する、
請求項１１または１２に記載のデータ転送方法。
【請求項１４】
前記リードアドレスがジャンプアドレスではない場合、現在のリードデータと一つ前に出力されたリードデータとを比較し、前記現在のリードデータにおける遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きい場合に前記現在のリードデータを反転して出力する、請求項１３に記載のデータ転送方法。
【請求項１５】
前記リードアドレスがジャンプアドレスではない場合、現在のリードデータと一つ前に出力されたリードデータとを比較し、前記現在のリードデータにおける遷移するビットの数がＮ／２（Ｎは２以上の整数とする）以下である場合に前記現在のリードデータを反転しないで出力する、請求項１４に記載のデータ転送方法。
【請求項１６】
前記一つ前のリードアドレスと前記現在のリードアドレスとに基づき前記現在のリードアドレスに対応したリードデータの反転情報を出力する、請求項１１乃至１５のいずれか一項に記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はインターフェース回路およびデータ転送方法に関し、特にＣＰＵとメモリとの間のデータ転送を実施するインターフェース回路およびデータ転送方法に関する。
【背景技術】
【０００２】
マイクロコンピュータの技術分野において、半導体製品の低消費電力化および低ノイズ化を実現するために、転送するデータのビットを反転させる技術がある。また、マイクロコンピュータの技術分野では、ＣＰＵおよび周辺回路の高速化に伴い、周辺回路からのデータ送信におけるスループットの高速化の要求が高まってきている。
【０００３】
特許文献１には、信号レベルの遷移数が多いことによるデータ転送の効率の低下を防止する技術が開示されている。特許文献１に開示されている技術において、データソースはバスを介してデータレシーバーと通信するようになっており、データは「バイト」と称される８ビットのブロックで転送される。各バイトは８本のライン上の８個のデータ信号としてパラレルにデータレシーバーへ送られ、各信号ラインは送信されるデータに応じて高レベルまたは低レベルとなる。例えば"１"のデータ値が送られる場合、バスラインは高レベル状態となる。送られる次の信号が"０"である場合、バスラインは新しいデータを表示するために低レベル状態まで低下しなければならない。次に続く信号が"１"である場合、バスラインは高レベルの値まで再び上昇しなければならない。これらの状態変化はデータ遷移として知られており、これを達成するのに時間およびエネルギーが必要である。
【０００４】
特許文献１に開示されている技術では、メモリデバイスへの書き込み時にデータ遷移の数を低減するためにデータを反転する技術を用いている。このデータ反転方式では１バイトと次のバイトとの間のデータ遷移の数を決定し、解析する。遷移の数が４よりも多ければ、送るバイトのデータを反転する。このようにすることにより遷移の数は４未満にされる。この方式は最大５０％の遷移に対し、バイト毎に生じ得る遷移の最大数の限度を４に設定できる。
【０００５】
図１２は、特許文献１に開示されているデータ反転方式を説明するためのフローチャートである。図１２では、バーストモードの読み出し動作を示している。ステップＳ５００でバースト読み出し動作がスタートする。ステップＳ５１０では、前のデータレジスタの信号およびＤＭ（データマスク）信号が低レベルにセットされる。ステップＳ５２０では、現在のデータと前のデータとが比較され、現在のデータを送る際に生じる遷移の数を決定する。ステップＳ５３０では、遷移の数が４よりも多くなるかどうかを見るために遷移の数をチェックする。ＹＥＳであれば、ステップＳ５４０でデータを反転し、ＤＭを反転する。ステップＳ５３０での結果がＮＯであれば、ステップＳ５５０でデータを反転せず、前のＤＭの値を維持する。ステップＳ５４０またはＳ５５０のいずれかの後でステップＳ５６０にてバースト動作が終了したかどうかの判断を行う。ＹＥＳであれば、プロセスはステップＳ５７０で終了する。ＮＯであれば、前のデータレジスタに現在データを記憶し、新しいデータバイトを得て、プロセスはステップＳ５２０へ戻る。
【０００６】
また、特許文献１にはデータ反転方式をマイクロプロセッサのインターフェースに適用した技術が開示されている。図１３は、特許文献１に開示されているマイクロプロセッサのインターフェースを示すブロック図である。図１３に示すように、ＤＲＡＭ６０１は、例えば第１データバンク６０１Ａおよび第２データバンク６０１Ｂを含み、各バンクは関連するＤＩＭ信号６０３Ａおよび６０３Ｂと共に出力バス６０２Ａおよび６０２Ｂを有する。メモリコントローラ６０４へはＤＲＡＭの出力信号が与えられる。ＤＲＡＭのデータ出力信号６０２Ａと６０２Ｂとはマイクロプロセッサ６０８への１６ビットバス６０５で組み合わされる。ＤＩＭ信号６０３Ａと６０３ＢとはＸＯＲゲート６０６への入力信号として結合され、マイクロプロセッサ６０８への出力信号６０７を発生する。
【０００７】
図１４は、特許文献１に開示されている読み出しブロックの一例を示す図である。この例はＩ／Ｏがオープンドレイン（すなわちバスは論理１にターミネートされている）の場合、ＤＣパワー最適化を行うようになっている。図１４を参照すると、フリップフロップ７０２、コンパレータ７０３およびＮＯＲゲート７０４へは読み出しデータ７０１（８ビット）が結合される。フリップフロップ７０２のイネーブル入力端へは負荷信号７０５が結合される。ＯＲゲート７０６の入力端にはＤＣ最適化信号７０７と共にフリップフロップ７０２の出力信号が結合される。ＤＣ最適化信号は論理"１"であり、この信号はコンパレータブロック７０３の前のデータフィールドへＯＲ演算入力される。このＯＲ演算はコンパレータブロック７０３の出力信号が論理"１"である値の半分よりも大きくならないようにし、ＤＣパワーを節約するのを保証するものである。コンパレータ７０３は現在のデータフィールドと前のデータフィールドとを比較し、異なる値を有するビット数が５以上であるかどうかを見る。そうである場合、出力（ＤＩＮ）は論理"１"であり、ＮＯＲゲート７０４へ与えられ、データの適当な反転が行われる。バスが論理０にターミネートされる場合、ＤＣ最適化信号を論理"０"とすることができるので、出力端の半分よりも多い出力端が"０"にバイアスされ、これによってもパワーを節約できる。
【０００８】
特許文献２には、データを記憶させたＲＯＭと、そのＲＯＭにアクセスするための、カウンタからなるインターフェースと、所定の手続きに基づく処理を実行するための中央処理装置を備えた電子計算機に関する技術が開示されている。特許文献２にかかる技術では、データＲＯＭに対するアドレス指定装置としてカウンタを使用しているので、連続的にデータを読み出す場合、その都度アドレスをＣＰＵから出力する必要がないので、高速かつ安価なデータライブラリを得ることができる。
【０００９】
特許文献３には、通常の命令バッファの他に、分岐先命令バッファを持ち、分岐命令デコード後分岐条件確定まで分岐先命令をプリフェッチする命令プリフェッチ回路に関する技術が開示されている。特許文献３にかかる技術を用いることで、分岐命令を高速化することができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００４−３１０７００号公報
【特許文献２】特開昭６１−８０３３７号公報
【特許文献３】特開平６−２７４３４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ＣＰＵとメモリとの間でデータ転送を行う際に、メモリまでの配線長が長いとデータリードに要する遅延が大きくなり、スループットが低下するという問題がある。この問題を解決する技術として、ＣＰＵからの要求アドレスに対して連続するアドレスを先読みアドレスとして生成し、先読みアドレスに対応するデータを先読みデータとして格納する回路をＣＰＵ近傍に配置する技術がある。この技術により、ＣＰＵからの要求アドレスに対する応答データのスループットを向上させることができる（以降、先読みデータ格納技術ともいう）。
【００１２】
図１５は、先読みデータ格納技術を説明するためのブロック図である。図１５に示すように、ＣＰＵ１０１は要求アドレスおよび要求アドレスの出力を知らせるリクエスト信号１０６（以下、要求アドレス・リクエスト信号１０６とも記載する）をアクセス制御部１０３に出力する。アクセス制御部１０３は、送信アドレス・インクリメント信号１０７をリードアドレス生成部１０４に出力する。リードアドレス生成部１０４は、要求アドレスを含むリードアドレス１０８（つまり、要求アドレスと要求アドレスをインクリメントしたアドレス）をメモリ１０２に出力する。メモリ１０２は、リードアドレス１０８により読み出されたリードデータ１０９をフリップフロップ回路（以下、ＦＦ回路とも記載する）１０５に出力する。ＦＦ回路１０５はリードデータを送信データ１１０としてアクセス制御部１０３に出力する。アクセス制御部１０３は、ＦＦ回路１０５から送られる送信データ１１０を順次格納する。すなわち、アクセス制御部１０３には先読みデータが格納される。そして、アクセス制御部１０３はＣＰＵの要求アドレスに対応したリードデータ（応答データ）および応答データの出力を知らせる応答信号１１１（以下、応答データ・応答信号１１１とも記載する）をＣＰＵ１０１に出力する。
【００１３】
図１６は、背景技術で説明したデータ反転方式（特許文献１参照）と、図１５に示した先読みデータ格納技術とを組み合わせた技術を説明するためのブロック図であり、ＣＰＵとメモリとの間のデータ転送を実施するインターフェース回路を示している。また、図１７は、図１６に示したインターフェース回路の動作を示すフローチャートである。
【００１４】
図１６、図１７に示すように、ＣＰＵ１０１は要求アドレス・リクエスト信号１３１をアクセス制御部１２１に出力する（ステップＳ１０１）。アクセス制御部１２１は、送信アドレス・インクリメント信号１３２をリードアドレス生成部１２２に出力する（ステップＳ１０２）。リードアドレス生成部１２２は、要求アドレスを含むリードアドレス１３３（つまり、要求アドレスと要求アドレスをインクリメントしたアドレス）をメモリ１０２に出力する（ステップＳ１０３）。メモリ１０２は、リードアドレス１３３により読み出されたリードデータ１３４をＦＦ回路１２３に出力する（ステップＳ１０４）。ＦＦ回路１２３はリードデータ１３５を状態遷移判定部１２４に出力する。状態遷移判定部１２４は、現在のリードデータ１３５と一つ前に出力された送信データ（正転／反転後のリードデータ）１３６とを比較し（ステップＳ１０５）、現在のリードデータ１３５における遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きいか否か判断する（ステップＳ１０６）。
【００１５】
状態遷移判定部１２４は、現在のリードデータ１３５における遷移するビットの数がＮ／２よりも大きくない場合（つまり、Ｎ／２以下の場合）、現在のリードデータ１３５を反転しない（つまり、正転の状態で）リードデータ１３７をＦＦ回路１２５に出力する（ステップＳ１０７）。このとき、状態遷移判定部１２４は、反転信号１３８として現在のリードデータ１３５を反転しないことを示す信号"０"をＦＦ回路１２６に出力する。
【００１６】
一方、状態遷移判定部１２４は、現在のリードデータ１３５における遷移するビットの数がＮ／２よりも大きい場合、現在のリードデータ１３５を反転したリードデータ１３７をＦＦ回路１２５に出力する（ステップＳ１０８）。このとき、状態遷移判定部１２４は、反転信号１３８として現在のリードデータ１３５を反転したことを示す信号"１"をＦＦ回路１２６に出力する。
【００１７】
ＦＦ回路１２５は、送信データ１３６を状態遷移判定部１２４およびアクセス制御部１２１に出力する。また、ＦＦ回路１２６は、反転信号１３９をアクセス制御部１２１に出力する。アクセス制御部１２１は、ＦＦ回路１２５から送られる送信データ１３６および当該送信データに対応する反転信号１３９を格納する（ステップＳ１０９）。すなわち、アクセス制御部１２１には、先読みデータ（先読みアドレスに対応したリードデータ）として送信データ１３６が格納される。このとき、アクセス制御部１２１は、反転信号１３９が"１"であれば送信データ１３６を反転して管理し、反転信号１３９が"０"であれば送信データ１３６を反転せずに管理する。その後、ステップＳ１０３〜Ｓ１０９の動作を繰り返す。つまり、リードアドレス生成部１２２においてリードアドレス１３３をインクリメントすることで生成し、このリードアドレス１３３に対応する送信データ（リードデータ）１３６および当該送信データに対応する反転信号１３９を順次格納する。そして、アクセス制御部１２１はＣＰＵの要求アドレスに対応したリードデータ（応答データ）および応答データの出力を知らせる応答信号１４０をＣＰＵ１０１に出力する（ステップＳ１１０）。
【００１８】
ここで、状態遷移判定部１２４は、同期回路ではなく組み合わせ回路で構成されるものとし（図１７のフローを実現する回路構成である）、状態遷移判定部１２４の入力から出力までの遅延は１クロックの遅延に収まるものとして、その前後にＦＦ回路１２３、１２５、１２６を配置する。
【００１９】
また、図１６において、応答データ１４０は要求アドレス１３１に等しいアドレスによってメモリ１０２から読み出されたデータであって、ＣＰＵ１０１から要求アドレス・リクエスト信号１３１が出力されないかぎりは、アクセス制御部１２１からは応答データ・応答信号１４０が出力されることはないものとする。また、ＣＰＵ１０１から要求アドレス・リクエスト信号１３１が出力された後では、アクセス制御部１２１から応答データ・応答信号１４０が出力されることがないかぎりは、ＣＰＵ１０１からは次の要求アドレス・リクエスト信号１３１が出力されることはないものとする。
【００２０】
図１８は、ＣＰＵ１０１から出力された要求アドレスとそれに対応する応答データを示す表である。図１９は、リードアドレス１３３、送信データ（正転／反転後のリードデータ）１３６、および反転信号１３９を示す表である。
【００２１】
要求アドレス１３１の一つのアドレス値であるアドレスＡに対応するリードデータを（Ａ）と表わすものとする。新しいリードデータが（Ａ）である場合、一つ前のリードデータと状態遷移の判定を行い（図１７のステップＳ１０６）、正転／反転の処理（ステップＳ１０７、Ｓ１０８）を行ったリードデータ（つまり、送信データ）を（Ａ）'と表わすものとする。このときの正転／反転の有無を示す反転信号を（ａ）と表わすものとする。リードアドレスＡに対して、＋１ずつインクリメントされるリードアドレスをリードアドレスＡ＋１、Ａ＋２と表記し、これらのリードアドレスをシーケンシャルアドレスと称す。
【００２２】
アクセス制御部１２１とリードアドレス生成部１２２は、要求アドレスに対して、＋５までのシーケンシャルアドレスを生成するものとする。リセット直後あるいは前の要求アドレスから＋５よりも離れている要求アドレスの場合、要求アドレスＡに対してＡ＋１、Ａ＋２、Ａ＋３、Ａ＋４、Ａ＋５のシーケンシャルアドレスを先読みアドレスとして発生する。そして、これらのアドレス"Ａ、Ａ＋１、Ａ＋２、Ａ＋３、Ａ＋４、Ａ＋５"をリードアドレス１３３としてメモリ１０２に出力する。メモリ１０２からは、リードアドレスに対応するデータ"（Ａ）、（Ａ＋１）、（Ａ＋２）、（Ａ＋３）、（Ａ＋４）、（Ａ＋５）"がリードデータ１３４として出力される。
【００２３】
アクセス制御部１２１は、要求アドレスＡに対する送信データ（Ａ）'および反転信号（ａ）が入力されると、データ取得後直ちにＣＰＵ１０１に応答データ（Ａ）を出力する。また、送信データ１３６である（（Ａ＋１）'、（Ａ＋２）'、（Ａ＋３）'、（Ａ＋４）'、（Ａ＋５）'）、および反転信号１３９である（ａ＋１）、（ａ＋２）、（ａ＋３）、（ａ＋４）、（ａ＋５）に基づいて、先読みデータ（Ａ＋１）、（Ａ＋２）、（Ａ＋３）、（Ａ＋４）、（Ａ＋５）を格納する。ＣＰＵ１０１からの要求アドレス１３１が、格納してある先読みデータのアドレスに一致した場合には、直ちにアドレスに対応した先読みデータを出力する。上記の動作を図２０のタイミングチャートに示す。
【００２４】
また、図２１のタイミングチャートに示すように、アクセス制御部１２１が要求アドレスＡに対して応答データ（Ａ）を返した後の次の要求アドレスがＡ＋１であった場合、アクセス制御部１２１は格納してあった先読みデータ（Ａ＋１）を応答データとして直ちに出力する。そして、要求アドレスＡ＋１に対して＋５までのシーケンシャルアドレスを満たすべく、先読みアドレスＡ＋６のデータリードを発生させる。要求アドレスＡ＋１に対して応答データ（Ａ＋１）を返し、次の要求アドレスがＡ＋５であった場合、アクセス制御部１２１は格納してあった先読みデータ（Ａ＋５）を応答データとして直ちに出力する。そして、要求アドレスＡ＋５に対して＋５までのシーケンシャルアドレスを満たすべく先読みアドレスを生成させる。しかし、Ａ＋６はすでに先読みアドレスを生成させてあるので、先読みアドレスＡ＋７、Ａ＋８、Ａ＋９、Ａ＋１０のデータリードを発生させる。
【００２５】
このように、要求アドレスに対して＋５以内のアドレスを先読みアドレスとし、当該先読みアドレスに対応する先読みデータをアクセス制御部１２１に格納しておくことでＣＰＵ１０１に対する応答のスループットを向上させることが出来る。ここで、要求アドレスに対して＋５までの先読みアドレスを生成させる例において、前の要求アドレスから先読みアドレス範囲である＋５よりも離れた要求アドレスはジャンプアドレスと呼ぶものとする。＋５を超える要求アドレスであるジャンプアドレスに関しては新たにメモリ１０２からデータをリードしなくてはならず、スループットの向上の効果が得られない。
【００２６】
なお、図２０、図２１に示すタイミングチャートは、図１６に示したインターフェース回路のメインクロックの動作を時間経過として横軸に示し、インターフェース回路内の各信号を縦に並べてクロックに同期した信号変化を示したものである。また、図２０、図２１に示すタイミングチャートは、ＣＰＵ１０１から要求アドレス１３１が出力されてから、ＣＰＵ１０１に応答データ１４０が入力されるまでの動作を示している。ここで、アクセス制御部１２１に要求アドレス１３１が入力されてから送信アドレス・インクリメント信号１３２が出力されるまでに、１クロックを要するものとする。リードアドレス生成部１２２に送信アドレス・インクリメント信号１３２が入力されてからリードアドレス１３３が出力されるまでに、１クロックを要するものとする。メモリ１０２にリードアドレス１３３が入力されてからリードデータ１３４が出力されるまでに半クロックを要するものとし、クロックの立下りに同期して動作するものとする。ＦＦ回路１２３、１２５、１２６はクロックの立ち上がりに同期して動作するものとする。アクセス制御部１２１に送信データ１３６および反転信号１３９が入力されてから応答アドレス１４０が出力されるまでに、１クロックを要するものとする。ＣＰＵ１０１から要求アドレス１３１が出力され、それに対する応答データ１４０が出力され、次の要求アドレス１３１をＣＰＵ１０１が出力するまで、３クロックを要するものとする。
【００２７】
次に、本発明の課題について説明する。上記で説明した技術では、ＣＰＵ１０１からの要求アドレスが、初回の要求アドレスとして初めて出力された場合や、アクセス制御部１２１に格納された先読みデータの先読みアドレスと一致しない要求アドレスが入力された場合、メモリ１０２から新規にデータを読み出してＣＰＵ１０１にデータを出力する必要がある。この場合は、ＣＰＵ１０１へのデータ出力のスループットが最も遅くなるワーストパスを構成することになり、メモリ１０１からの読み出しデータ幅が大きい場合にはデータ送信におけるデータ出力のスループットが悪化するという問題がある。以下で具体的に説明する。
【００２８】
図１７のステップＳ１０５〜Ｓ１０８において、リードデータの各ビットと、前の出力済みのリードデータの各ビットをそれぞれ比較し、互いに対応するビットどうしで状態遷移があるかどうかを判定している。そして、状態遷移のあるビット位置の数がデータビット数の半数を超えている否かで、リードデータを正転して出力するか、反転して出力するかを決定している（ステップＳ１０６〜Ｓ１０８）。これにより、反転信号１３８の状態も決定される。
【００２９】
このステップＳ１０５〜Ｓ１０８を回路として実現する場合、リードデータと前の出力済みのリードデータとの間で、互いに対応するビットどうしを入力としたＸＯＲ（ｅＸｃｌｕｓｉｖｅＯＲ：排他的論理和）演算を行う必要がある。そして、ＸＯＲ演算出力を加算し、加算結果がデータビット数の半数を超えるか判定をすることで、状態遷移のあるビット位置の数がデータビット数の半数を超えるか否かを調べることができる。
【００３０】
ＸＯＲ演算出力の加算においては、３つあるいは２つの演算出力を加算して２ビットの加算結果とし、加算結果の２ビットを２ビット＋２ビットの加算器に入力して３ビットの加算結果とし、加算結果の３ビットを３ビット＋３ビットの加算器に入力して４ビットの加算結果とするように、順次加算を行って加算のビット数を上げて行く。そして、最終の加算結果がデータビット数の半数を超えるか否かを判定する。
【００３１】
データ幅が８ビットである場合は、（（（１＋１）＋（１＋１））＋（（１＋１）＋（１＋１）））のように１ビット＋１ビット、２ビット＋２ビット、３ビット＋３ビットとなり、３段の加算器で４ビットの加算結果を得る。しかし、例えばデータ幅が１９２ビットである場合には、１ビット＋１ビット＋１ビット、２ビット＋２ビット、・・・、７ビット＋７ビットとなり、７段の加算器で８ビットの加算結果を得る。データ幅が１２８ビットの場合でも１ビット＋１ビット、２ビット＋２ビット、・・・、７ビット＋７ビットとなり、７段の加算器で８ビットの加算結果を得る。このように、データ幅が大きい場合には加算器の段数が大きくなり、演算入力から演算出力までのゲート段数が大きくなるため回路遅延も大きくなる。
【００３２】
また、同期回路において組み合わせ回路部分の遅延がクロック周期に収まらない場合、回路を分断してクロック周期内の遅延部分ごとにＦＦ回路を配置することになり、クロック単位で遅延が悪化し、スループットが悪化する。即ち、リードデータの各ビットと、前の出力済みのリードデータの各ビットをそれぞれ比較し、互いに対応するビットどうしで状態遷移があるかどうかを判定する回路を実装する場合、データ幅が大きいと回路遅延が悪化し、スループットが悪化するという問題がある。
【００３３】
図１６に示したインターフェース回路において、図１７のステップＳ１０５〜Ｓ１０８を実現する回路が状態遷移判定部１２４である。図１６に示したインターフェース回路では、状態遷移判定部１２４にリードデータが入力されてから正転／反転後のリードデータを出力するまでの遅延を１クロック以内に収まることを前提として、状態遷移判定部１２４の前後にＦＦ回路１２３、１２５、１２６を配置している。しかしながら、もし状態遷移判定部１２４における遅延が１クロック以内に収まらない場合、状態遷移判定部１２４を分断して更にＦＦ回路を配置する必要があり、ＦＦ回路の段数が増加し、スループットが更に悪化する。
【課題を解決するための手段】
【００３４】
本発明にかかるインターフェース回路は、ＣＰＵとメモリとの間のデータ転送を実施するインターフェース回路であって、前記ＣＰＵから出力された要求アドレスと当該要求アドレスをインクリメントすることで生成されたアドレスとをリードアドレスとして出力するリードアドレス生成部と、前記メモリから読み出されたリードデータを正転して出力するかまたは反転して出力するかを示す反転情報が予め格納されており、前記リードアドレスに対応したリードデータの反転情報を出力する反転情報生成部と、前記反転情報生成部から出力された現在の反転情報と一つ前の反転信号と、に基づき反転信号を出力する演算回路と、前記演算回路から出力された反転信号に応じて、前記メモリから読み出されたリードデータを正転または反転して出力するデータ正転／反転部と、を備える。
【００３５】
本発明にかかるインターフェース回路では、メモリから読み出されたリードデータを正転して出力するかまたは反転して出力するかを示す反転情報が予め格納された反転情報生成部と、反転情報生成部から出力された現在の反転情報と一つ前の反転信号とに基づき反転信号を出力する演算回路と、演算回路から出力された演算結果に応じて、メモリから読み出されたリードデータを正転または反転して出力するデータ正転／反転部と、を設けている。このようにメモリと並列して反転情報生成部を設けることで、メモリからリードデータが出力されることを待つことなく、つまり、メモリからリードデータが出力されるタイミングと同じタイミングでリードデータの反転情報を取得することができる。よって、データ正転／反転部においてリードデータを直ちに正転／反転させて送信データとして出力することができるので、ＣＰＵとメモリとの間のデータ転送のスループットを向上させることができる。
【００３６】
本発明にかかるデータ転送方法は、ＣＰＵとメモリとの間におけるデータ転送方法であって、前記ＣＰＵから出力された要求アドレスと当該要求アドレスをインクリメントすることで生成されたアドレスとをリードアドレスとして出力し、前記メモリから読み出されたリードデータを正転して出力するかまたは反転して出力するかを示す反転情報のうち、前記リードアドレスに対応したリードデータの反転情報を出力し、前記反転情報と一つ前の反転信号とに基づき反転信号を生成し、前記生成された反転信号に応じて前記メモリから読み出されたリードデータを正転または反転して出力する。
【００３７】
本発明にかかるデータ転送方法では、メモリからリードデータが出力されることを待つことなく、つまり、メモリからリードデータが出力されるタイミングと同じタイミングでリードデータの反転情報を取得することができる。よって、リードデータを直ちに正転／反転させて送信データとして出力することができるので、ＣＰＵとメモリとの間のデータ転送のスループットを向上させることができる。
【発明の効果】
【００３８】
本発明により、ＣＰＵとメモリとの間のデータ転送のスループットを向上させることが可能なインターフェース回路およびデータ転送方法を提供することができる。
【図面の簡単な説明】
【００３９】
【図１】実施の形態１にかかるインターフェース回路を示すブロック図である。
【図２】実施の形態１にかかるインターフェース回路の動作を説明するためのフローチャートである。
【図３】実施の形態１にかかるインターフェース回路における、リードアドレス、リードデータ、反転情報、反転信号、および実際に送られるリードデータ（送信データ）の一例を示す表である。
【図４】実施の形態１にかかるインターフェース回路における、リードアドレス、リードデータ、および反転情報を示す表である。
【図５】実施の形態１にかかるインターフェース回路の動作を説明するためのタイミングチャートである。
【図６】実施の形態２にかかるインターフェース回路を示すブロック図である。
【図７】実施の形態２にかかるインターフェース回路の動作を説明するためのフローチャートである。
【図８】実施の形態２にかかるインターフェース回路における、リードアドレス、リードデータ、および反転情報を示す表である。
【図９】実施の形態２にかかるインターフェース回路における、ジャンプアドレス、反転情報、およびジャンプアドレス判定情報を示す表である。
【図１０】実施の形態２にかかるインターフェース回路の動作を説明するためのタイミングチャートである。
【図１１】実施の形態３にかかるインターフェース回路を示すブロック図である。
【図１２】特許文献１に開示されている技術を説明するための図である。
【図１３】特許文献１に開示されている技術を説明するための図である。
【図１４】特許文献１に開示されている技術を説明するための図である。
【図１５】本発明の課題を説明するための図である。
【図１６】本発明の課題を説明するための図である。
【図１７】本発明の課題を説明するための図である。
【図１８】本発明の課題を説明するための図である。
【図１９】本発明の課題を説明するための図である。
【図２０】本発明の課題を説明するための図である。
【図２１】本発明の課題を説明するための図である。
【発明を実施するための形態】
【００４０】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。
図１は本実施の形態にかかるインターフェース回路を説明するためのブロック図である。本実施の形態にかかるインターフェース回路３は、ＣＰＵ１とメモリ２との間に設けられており、ＣＰＵ１とメモリ２との間のデータ転送を実施する回路である。なお、インターフェース回路３の各構成要素にはクロック信号が供給されており、各構成要素はこのクロック信号と同期して動作する。
【００４１】
インターフェース回路３は、アクセス制御部１１、リードアドレス生成部１２、反転情報生成部１３、ＸＯＲ回路（演算回路）１４、データ正転／反転部１５、およびＦＦ回路１６、１７を有する。
【００４２】
アクセス制御部１１は、ＣＰＵ１から出力された要求アドレスおよび要求アドレスの出力を知らせるリクエスト信号５０（以下、要求アドレス・リクエスト信号５０とも記載する）を入力し、送信アドレス・インクリメント信号５１をリードアドレス生成部１２に出力する。また、アクセス制御部１１は、ＦＦ回路１６から出力された送信データ（正転／反転後のリードデータ）５８およびＦＦ回路１７から出力された反転信号５５を入力し、送信データ５８および当該送信データに対応する反転信号５５を順次格納する。すなわち、アクセス制御部１１には、先読みデータとして送信データ５８が格納される。このとき、アクセス制御部１１は、反転信号５５が"１"であれば送信データ５８を反転したデータとして管理し、反転信号５５が"０"であれば送信データ５８を正転したデータとして（つまり、反転せずに）管理する。そして、アクセス制御部１１はＣＰＵ１の要求アドレスに対応したリードデータ（応答データ）および応答データの出力を知らせる応答信号５９（以下、応答データ・応答信号５９とも記載する）をＣＰＵ１に出力する。
【００４３】
リードアドレス生成部１２は、アクセス制御部１１から出力された送信アドレス・インクリメント信号５１を入力し、要求アドレスを含むリードアドレス５２（つまり、要求アドレスと要求アドレスをインクリメントしたアドレス）を、メモリ２および反転情報生成部１３に出力する。
【００４４】
反転情報生成部１３には、メモリ２から読み出されたリードデータ５４を正転して出力するかまたは反転して出力するかを示す反転情報が予め格納されている。そして、リードアドレス５２に対応したリードデータの反転情報５３をＸＯＲ回路１４に出力する。この反転情報を用いることで、ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータからｎ＋１番目のリードアドレスに対応するリードデータに遷移する際に、遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きい場合に、ｎ＋１番目のリードアドレスに対応するリードデータを反転して出力することを示すことができる。
【００４５】
反転情報は、例えば図１８、図１９に示したリードアドレスおよびリードデータにおいて、現在のリードデータと一つ前のリードデータとを比較し、現在のリードデータにおける遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きいか否かをシミュレーションすることで予め作成することができる。
【００４６】
図４は、本実施の形態にかかるインターフェース回路３における、リードアドレス５２、リードデータ５４、および反転情報５３を示す表である。図４では、ＣＰＵ１から出力された要求アドレス５０とそれに対応する応答データ５９が返された場合のリードアドレス５２、リードデータ５４、および反転情報５３を示している。ここで、リードアドレスＡ、Ａ＋１に対してメモリ２が出力するリードデータ５４を（Ａ）、（Ａ＋１）と、反転情報生成部１３が出力する反転情報５３を（ａ）'、（ａ＋１）'と表す。
【００４７】
反転情報生成部１３は、例えば図４に示すようなリードアドレスと反転情報とを対応づけたテーブルを備えており、このテーブルを用いることでリードアドレス５２に対応する反転情報を出力することができる。
【００４８】
ＸＯＲ回路１４は、反転情報生成部１３から出力された現在の反転情報５３と、一つ前の反転信号５５とのＸＯＲ演算を実施し、当該演算結果５６（以下では、反転信号５６と記載する場合もある）をデータ正転／反転部１５およびＦＦ回路１７に出力する。
【００４９】
データ正転／反転部１５は、ＸＯＲ回路１４から出力された演算結果５６に応じて、メモリ２から読み出されたリードデータ５４を正転または反転してＦＦ回路１６に出力する。具体的には、データ正転／反転部１５は、ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータが正転で出力され、且つｎ＋１番目のリードアドレスに対応する反転情報が正転である場合は、当該ｎ＋１番目のリードアドレスに対応するリードデータを正転で出力する。また、ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータが正転で出力され、且つｎ＋１番目のリードアドレスに対応する反転情報が反転である場合は、当該ｎ＋１番目のリードアドレスに対応するリードデータを反転して出力する。
【００５０】
同様に、データ正転／反転部１５は、ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータが反転で出力され、且つｎ＋１番目のリードアドレスに対応する反転情報が正転である場合は、当該ｎ＋１番目のリードアドレスに対応するリードデータを反転で出力する。また、ｎ番目（ｎは正の整数とする）のリードアドレスに対応するリードデータが反転で出力され、且つｎ＋１番目のリードアドレスに対応する反転情報が反転である場合は、当該ｎ＋１番目のリードアドレスに対応するリードデータを正転して出力する。
【００５１】
ＦＦ回路１６は、データ正転／反転部１５から出力された送信データ（正転／反転後のリードデータ）５７をアクセス制御部１１に出力する。ＦＦ回路１７は、ＸＯＲ回路１４から出力された演算結果５６を反転信号５５としてアクセス制御部１１およびＸＯＲ回路１４に出力する。ここで、ＸＯＲ回路１４に出力される反転信号５５は一つ前の反転信号に対応する。
【００５２】
次に、本実施の形態にかかるインターフェース回路の動作について説明する。図２は、本実施の形態にかかるインターフェース回路の動作を説明するためのフローチャートである。以下の説明では、リードアドレス、リードデータ、および反転情報が図３に示すような値である場合を例として説明する。なお、本実施の形態にかかるインターフェース回路では、例えばリードデータを正転して出力することを示す反転情報を"０"、リードデータを反転して出力することを示す反転情報を"１"とする。
【００５３】
まず、ＣＰＵ１が要求アドレス"Ａ"およびリクエスト信号５０をアクセス制御部１１に出力する（ステップＳ１０）。次に、アクセス制御部１１が送信アドレス・インクリメント信号５１をリードアドレス生成部１２に出力する（ステップＳ１１）。その後、リードアドレス生成部１２は、要求アドレス"Ａ"と当該要求アドレス"Ａ"をインクリメントしたアドレス"Ａ＋１"、"Ａ＋２"、"Ａ＋３"、"Ａ＋４"、および"Ａ＋５"をリードアドレス５２として、反転情報生成部１３およびメモリ２に順次出力する（ステップＳ１２）。なお、本実施の形態では、リードアドレス生成部１２はリードアドレスとして６つのアドレス（つまり、要求アドレス"Ａ"（１つ）＋インクリメントして作成したアドレス（５つ））を出力しているが、リードアドレス生成部１２が出力するリードアドレスの数は任意に設定することができる。
【００５４】
メモリ２は、リードアドレス生成部１２から出力されたリードアドレス５２（"Ａ"）に対応するリードデータ５４（"００００００００"）をデータ正転／反転部１５に出力する（ステップＳ１３）。また、反転情報生成部１３はリードアドレス生成部１２から出力されたリードアドレス５２（"Ａ"）に対応する反転情報５３（"０"）をＸＯＲ回路１４に出力する（ステップＳ１４）。ＸＯＲ回路１４は、反転情報生成部１３から出力された現在の反転情報５３（"０"）と、一つ前の反転信号５５とのＸＯＲ演算を実施し、当該演算結果５６をデータ正転／反転部１５およびＦＦ回路１７に出力する（ステップＳ１５、Ｓ１６）。なお、リードアドレス"Ａ"は初期のリードアドレスであるので、ＸＯＲ回路１４は正転を示す反転信号５６（"０"）をデータ正転／反転部１５およびＦＦ回路１７に出力する。データ正転／反転部１５は、反転信号５６が"０"であるので送信データ５７として正転したデータ（そのままのデータ）"００００００００"をＦＦ回路１６に出力する（ステップＳ１７）。
【００５５】
アクセス制御部１１は、ＦＦ回路１６から出力された送信データ５８（"００００００００"）およびＦＦ回路１７から出力された反転信号５５（"０"）を入力し、送信データ５８（"００００００００"）および当該送信データに対応する反転信号５５（"０"）を格納する。このとき、アクセス制御部１１は、反転信号５５が "０"であるので送信データ５８を反転せずに管理する。そして、アクセス制御部１１はＣＰＵ１の要求アドレス"Ａ"に対応した応答データ"００００００００"および応答データの出力を知らせる応答信号５９をＣＰＵ１に出力する（ステップＳ１９）。
【００５６】
このとき、リードアドレス生成部１２からは順次リードアドレスが出力されており、ステップＳ１２〜Ｓ１９が繰り返されている。すなわち、リードアドレス生成部１２は、リードアドレス５２（"Ａ"）を出力した後、リードアドレス５２（"Ａ＋１"）を出力する（ステップＳ１２）。メモリ２は、リードアドレス生成部１２から出力されたリードアドレス５２（"Ａ＋１"）に対応するリードデータ５４（"１１１１１１１１"）をデータ正転／反転部１５に出力する（ステップＳ１３）。また、反転情報生成部１３はリードアドレス生成部１２から出力されたリードアドレス５２（"Ａ＋１"）に対応する反転情報５３（"１"）をＸＯＲ回路１４に出力する（ステップＳ１４）。
【００５７】
ＸＯＲ回路１４は、反転情報生成部１３から出力された現在の反転情報５３（"１"）と、一つ前の反転信号５５（"０"）とのＸＯＲ演算を実施し、当該演算結果５６をデータ正転／反転部１５およびＦＦ回路１７に出力する（ステップＳ１５、Ｓ１６）。このとき、反転情報生成部１３から出力された現在の反転情報５３は"１"であり、一つ前の反転信号５５は"０"であるので、ＸＯＲ回路１４は反転信号５６として"１"を出力する。データ正転／反転部１５は、反転信号５６が"１"であるので送信データ５７として"１１１１１１１１"を反転したデータである"００００００００"をＦＦ回路１６に出力する（ステップＳ１７）。
【００５８】
アクセス制御部１１は、ＦＦ回路１６から出力された送信データ５８（"００００００００"）およびＦＦ回路１７から出力された反転信号５５（"１"）を入力し、送信データ５８（"００００００００"）および当該送信データに対応する反転信号５５（"１"）を格納する。このとき、アクセス制御部１１は、反転信号５５が"１"であるので送信データ５８を反転して管理する。
【００５９】
同様に、リードアドレス生成部１２は、リードアドレス５２（"Ａ＋１"）を出力した後、リードアドレス５２（"Ａ＋２"）を出力する（ステップＳ１２）。メモリ２は、リードアドレス生成部１２から出力されたリードアドレス５２（"Ａ＋２"）に対応するリードデータ５４（"１０００１０００"）をデータ正転／反転部１５に出力する（ステップＳ１３）。また、反転情報生成部１３はリードアドレス生成部１２から出力されたリードアドレス５２（"Ａ＋２"）に対応する反転情報５３（"１"）をＸＯＲ回路１４に出力する（ステップＳ１４）。
【００６０】
ＸＯＲ回路１４は、反転情報生成部１３から出力された現在の反転情報５３（"１"）と、一つ前の反転信号５５（"１"）とのＸＯＲ演算を実施し、当該演算結果５６をデータ正転／反転部１５およびＦＦ回路１７に出力する（ステップＳ１５、Ｓ１６）。このとき、反転情報生成部１３から出力された現在の反転情報５３は"１"であり、一つ前の反転信号５５は"１"であるので、ＸＯＲ回路１４は反転信号５６として"０"を出力する。データ正転／反転部１５は、反転信号５６が"０"であるので送信データ５７として"１０００１０００"を正転したデータ"１０００１０００"をＦＦ回路１６に出力する（ステップＳ１７）。
【００６１】
アクセス制御部１１は、ＦＦ回路１６から出力された送信データ５８（"１０００１０００"）およびＦＦ回路１７から出力された反転信号５５（"０"）を入力し、送信データ５８（"１０００１０００"）および当該送信データに対応する反転信号５５（"０"）を格納する。このとき、アクセス制御部１１は、反転信号５５が"０"であるので送信データ５８を反転せずに管理する。
【００６２】
以降、リードアドレス生成部１２から出力されたリードアドレス５２（"Ａ＋３"、"Ａ＋４"、"Ａ＋５"）についても同様である。
【００６３】
次に、本実施の形態にかかるインターフェース回路の動作について、図５に示すタイミングチャートを用いて説明する。Ｔ１のタイミングで、ＣＰＵ１からアクセス制御部１１に要求アドレス５０として"Ａ"が出力される。Ｔ２のタイミングで、アクセス制御部１１はリードアドレス生成部１２に送信アドレス５１として"Ａ"を出力する。Ｔ３のタイミングで、アクセス制御部１１はリードアドレス生成部１２にインクリメント信号５１を出力する。また、Ｔ３のタイミングで、リードアドレス生成部１２は反転情報生成部１３およびメモリ２に、リードアドレス５２として"Ａ"を出力する。その後、Ｔ４のタイミングで、メモリ２からデータ正転／反転部１５にリードデータ５４として"（Ａ）"が出力され、反転情報生成部１３からＸＯＲ回路１４に反転情報５３として"（ａ）'"が出力される。Ｔ６のタイミングで、ＦＦ回路１６から送信データ５８として"（Ａ）'"が、ＦＦ回路１７から反転信号５５として"（ａ）"がそれぞれ出力される。ここで、（Ａ）'は、リードアドレスＡに対応する、正転／反転の処理（ステップＳ１５〜Ｓ１８）を行った後のリードデータ（送信データ）である。そして、Ｔ７のタイミングで、アクセス制御部１１からＣＰＵ１に応答データ５９として"（Ａ）"が出力される。
【００６４】
このとき、Ｔ５のタイミングにおいて、リードアドレス生成部１２からリードアドレスＡ＋１が送信され、図２のステップＳ１２からステップＳ１８の動作がＦＦ回路１６、１７の動作と並行して繰り返される。以降の動作についても同様である。
【００６５】
図１６に示したインターフェース回路では、状態遷移判定部１２４を設けているため、ＣＰＵとメモリとの間のデータ転送のスループットを向上することができないという問題があった。これに対して本実施の形態にかかるインターフェース回路では、図１６に示した状態遷移判定部１２４を用いるのではなく、メモリ２から読み出されたリードデータ５４を正転して出力するかまたは反転して出力するかを示す反転情報５３が予め格納された反転情報生成部１３と、反転情報生成部１３から出力された現在の反転情報５３と、一つ前の反転信号５５とに基づき新たに反転信号５５を出力する演算回路１４と、演算回路１４から出力された演算結果５６に応じて、メモリ２から読み出されたリードデータ５４を正転または反転して出力するデータ正転／反転部１５と、を設けている。
【００６６】
本実施の形態にかかるインターフェース回路では、このようにメモリ２と並列して反転情報生成部１３を設けることで、メモリ２からリードデータ５４が出力されることを待つことなく、つまり、メモリ２からリードデータ５４が出力されるタイミングと同じタイミングでリードデータ５４の反転情報５３を取得することができる（図５のＴ４参照）。よって、データ正転／反転部１５においてリードデータ５４を直ちに正転／反転させて送信データ５８として出力することができる。したがって、本実施の形態にかかるインターフェース回路により、ＣＰＵとメモリとの間のデータ転送のスループットを向上させることができる。
【００６７】
また、図１６に示したインターフェース回路では、状態遷移判定部１２４の手前にＦＦ回路１２３を設ける必要があったため、インターフェース回路のスループットが悪化するという問題があった。つまり、図１６に示したインターフェース回路を用いた場合は、本実施の形態にかかるインターフェース回路を用いた場合と比べて、ＣＰＵとの応答の度に１クロックずつ遅延するという問題があった。
【００６８】
これに対して本実施の形態にかかるインターフェース回路では、メモリ２とデータ正転／反転部１５との間にＦＦ回路を設ける必要がないので、図１６に示すインターフェース回路と比べて、１クロック分スループットを向上させることができる。すなわち、図２０に示したタイミングチャートでは、ＣＰＵ１０１が要求アドレス１３１を出力した後、ＣＰＵ１０１に応答データ１４０が入力されるまでに、５クロック必要であった。これに対して本実施の形態にかかるインターフェース回路では、図５に示すようにＣＰＵ１が要求アドレス５０を出力した後、ＣＰＵ１に応答データ５９が入力されるまでに、４クロック必要であり、図１６に示したインターフェース回路と比べて１クロック分スループットを向上させることができる。
【００６９】
以上で説明したように、本実施の形態にかかる発明によりＣＰＵとメモリとの間のデータ転送のスループットを向上させることが可能なインターフェース回路およびデータ転送方法を提供することができる。
【００７０】
実施の形態２
次に、本発明の実施の形態２について説明する。図６は本発明の実施の形態２にかかるインターフェース回路を説明するためのブロック図である。本実施の形態にかかるインターフェース回路４は、ＣＰＵ１とメモリ２との間に設けられており、ＣＰＵ１とメモリ２との間のデータ転送を実施する回路である。なお、インターフェース回路４の各構成要素にはクロック信号が供給されており、各構成要素はこのクロック信号と同期して動作する。
【００７１】
インターフェース回路４は、アクセス制御部２１、リードアドレス生成部２２、反転情報生成部２３、制御信号生成部２４、ＸＯＲ回路（演算回路）２５、データ正転／反転部２６、ＦＦ回路２７、３１、３２、状態遷移判定部２８、およびセレクタ２９、３０を有する。
【００７２】
アクセス制御部２１は、ＣＰＵ１から出力された要求アドレス・リクエスト信号７０を入力し、送信アドレス・インクリメント信号７１をリードアドレス生成部２２に出力する。また、アクセス制御部２１は、ＦＦ回路３１から出力された送信データ（正転／反転後のリードデータ）８１およびＦＦ回路３２から出力された反転信号７７を入力し、送信データ８１および当該送信データに対応する反転信号７７を順次格納する。すなわち、アクセス制御部２１には、先読みデータとして送信データ８１が格納される。このとき、アクセス制御部２１は、反転信号７７が"１"であれば送信データ８１を反転したデータとして管理し、反転信号７７が"０"であれば送信データ８１を正転したデータとして（つまり、反転せずに）管理する。そして、アクセス制御部２１はＣＰＵ１の要求アドレスに対応したリードデータ（応答データ）および応答データの出力を知らせる応答信号８６をＣＰＵ１に出力する。
【００７３】
リードアドレス生成部２２は、アクセス制御部２１から出力された送信アドレス・インクリメント信号７１を入力し、要求アドレスを含むリードアドレス（つまり、要求アドレスと要求アドレスをインクリメントしたアドレス）を、メモリ２および反転情報生成部２３に出力する。
【００７４】
反転情報生成部２３には、メモリ２から読み出されたリードデータ７６を正転して出力するかまたは反転して出力するかを示す反転情報が予め格納されている。そして、リードアドレス７２に対応したリードデータの反転情報７５をＸＯＲ回路２５に出力する。
【００７５】
反転情報は、例えば図１８、図１９に示したリードアドレスおよびリードデータにおいて、現在のジャンプアドレスに対応するリードデータと一つ前のリードアドレスに対応するリードデータとを比較し、現在のジャンプアドレスに対応するリードデータにおける遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きいか否かをシミュレーションすることで予め作成することができる。
【００７６】
図８は、本実施の形態にかかるインターフェース回路４における、リードアドレス７２、リードデータ７６、および反転情報７５を示す表である。図８では、ＣＰＵ１から出力された要求アドレス７０とそれに対応する応答データ８６が返された場合のリードアドレス７２、リードデータ７６、および反転情報７５を示している。図８に示すように、本実施の形態にかかるインターフェース回路４では、ジャンプアドレスであるリードアドレスＢ、Ｃ、Ｄ、Ｅ、Ｆに対応する反転情報（（ｂ）'、（ｃ）' 、（ｄ）'、（ｅ）'、（ｆ）'）のみが反転情報生成部２３に格納されている。
【００７７】
また、本実施の形態にかかるインターフェース回路４が備える反転情報生成部２３には、リードアドレス７２がジャンプアドレスか否かを示すジャンプアドレス判定情報７３が予め格納されている。そして、反転情報生成部２３はリードアドレス７２に対応したジャンプアドレス判定情報７３を制御信号生成部２４に出力する。
【００７８】
図９は、ジャンプアドレス、反転情報、およびジャンプアドレス判定情報を示す表である。例えば、反転情報生成部２３は図９に示すようなテーブルを備えており、このテーブルを用いることでリードアドレス７２がジャンプアドレスであるか否かを示すジャンプアドレス反転情報と、当該ジャンプアドレスに対応する反転情報を出力することができる。なお、図９において、ジャンプアドレス判定情報"１"は当該リードアドレスがジャンプアドレスであることを示している。
【００７９】
ＸＯＲ回路２５は、反転情報生成部１３から出力された現在の反転情報７５と、一つ前の反転信号７７とのＸＯＲ演算を実施し、当該演算結果７８（以下では、反転信号７８と記載する場合もある）をデータ正転／反転部２６およびセレクタ３０に出力する。
【００８０】
データ正転／反転部２６は、ＸＯＲ回路２５から出力された演算結果７８に応じて、メモリ２から読み出されたリードデータ７６を正転または反転してセレクタ２９に出力する。なお、データ正転／反転部２６の動作は実施の形態１の場合と基本的には同様である。
【００８１】
ＦＦ回路２７は、メモリ２から読み出されたリードデータ７６をリードデータ８０として状態遷移判定部２８に出力する。状態遷移判定部２８は、現在のリードデータ８０と一つ前に出力されたリードデータ８１とを比較する。そして、現在のリードデータ８０における遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きい場合、現在のリードデータ８０を反転した送信データ８２をセレクタ２９に出力する。一方、現在のリードデータ８０における遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きくない場合（つまり、Ｎ／２以下の場合）、現在のリードデータ８０を反転することなく（正転の状態で）送信データ８２としてセレクタ２９に出力する。このとき、状態遷移判定部２８は現在のリードデータ８０が正転／反転されて出力されたことを示す反転信号８３をセレクタ３０に出力する。つまり、状態遷移判定部２８は現在のリードデータ８０が反転されて出力された場合は"１"を、現在のリードデータ８０が反転されないで出力された場合（つまり、正転の場合）は"０"を、それぞれ出力する。
【００８２】
制御信号生成部２４は、反転情報生成部２３から出力されたジャンプアドレス判定情報７３に応じて制御信号７４を出力する。セレクタ（第１のセレクタ）２９は、制御信号７４に応じて、データ正転／反転部２６から出力された送信データ７９および状態遷移判定部２８から出力された送信データ８２のいずれかを選択し、選択された送信データ８４をＦＦ回路３１に出力する。セレクタ（第２のセレクタ）３０は、制御信号７４に応じて、ＸＯＲ回路２５から出力された反転信号７８および状態遷移判定部２８から出力された反転信号８３のいずれかを選択し、選択された反転信号８５をＦＦ回路３２に出力する。
【００８３】
例えば、制御信号生成部２４は、反転情報生成部２３から出力されたジャンプアドレス判定情報７３が"０"である場合、制御信号７４として"０"を出力する。セレクタ２９は、制御信号７４が"０"の場合、状態遷移判定部２８から出力された送信データ８２を選択し、選択された送信データ８２をＦＦ回路３１に出力する。セレクタ３０は、制御信号７４が"０"の場合、状態遷移判定部２８から出力された反転信号８３を選択し、選択された反転信号８５をＦＦ回路３２に出力する。
【００８４】
一方、制御信号生成部２４は、反転情報生成部２３から出力されたジャンプアドレス判定情報７３が"１"である場合、制御信号７４として"１"を出力する。セレクタ２９は、制御信号７４が"１"である場合、データ正転／反転部２６から出力された送信データ７９を選択し、選択された送信データ８４をＦＦ回路３１に出力する。セレクタ３０は、制御信号７４が"１"である場合、ＸＯＲ回路２５から出力された反転信号７８を選択し、選択された反転信号８５をＦＦ回路３２に出力する。
【００８５】
ＦＦ回路３１は、セレクタ２９から出力された送信データ８４を送信データ８１としてアクセス制御部２１および状態遷移判定部２８に出力する。ＦＦ回路３２は、セレクタ３０から出力された反転信号８５を反転信号７７としてアクセス制御部２１およびＸＯＲ回路２５に出力する。
【００８６】
次に、本実施の形態にかかるインターフェース回路の動作について説明する。図７は、本実施の形態にかかるインターフェース回路の動作を説明するためのフローチャートである。以下では、ＣＰＵ１から要求アドレスとして要求アドレス"Ａ"が出力された場合を例として説明する。
【００８７】
まず、ＣＰＵ１が要求アドレス"Ａ"およびリクエスト信号７０をアクセス制御部２１に出力する（ステップＳ３０）。次に、アクセス制御部２１が送信アドレス・インクリメント信号７１をリードアドレス生成部２２に出力する（ステップＳ３１）。その後、リードアドレス生成部２２は、要求アドレス"Ａ"と当該要求アドレス"Ａ"をインクリメントしたアドレス"Ａ＋１"、"Ａ＋２"、"Ａ＋３"、"Ａ＋４"、および"Ａ＋５"をリードアドレス７２として、反転情報生成部２３およびメモリ２に順次出力する（ステップＳ３２）。なお、本実施の形態では、リードアドレス生成部１２はリードアドレスとして６つのアドレス（つまり、要求アドレス"Ａ"（１つ）＋インクリメントして作成したアドレス（５つ））を出力しているが、リードアドレス生成部２２が出力するリードアドレスの数は任意に設定することができる。
【００８８】
メモリ２は、リードアドレス生成部２２から出力されたリードアドレス７２（"Ａ"）に対応するリードデータ７６をデータ正転／反転部２６およびＦＦ回路２７に出力する（ステップＳ３３）。また、反転情報生成部２３はリードアドレス７２（"Ａ"）に対応する反転情報７５をＸＯＲ回路２５に、リードアドレス７２（"Ａ"）がジャンプアドレスであるか否かを示すジャンプアドレス判定情報７３を制御信号生成部２４に、それぞれ出力する（ステップＳ３４）。ここで、リードアドレス７２が"Ａ"でありジャンプアドレスであるので、ジャンプアドレス判定情報７３として"１"が出力される。
【００８９】
リードアドレス７２がジャンプアドレスである場合（ステップＳ３５：Ｙｅｓ）、制御信号生成部２４は制御信号７４として"１"をセレクタ２９、３０に出力する。このとき、セレクタ２９はデータ正転／反転部２６から出力された送信データ７９を、セレクタ３０はＸＯＲ回路２５から出力された反転信号７８を、それぞれ選択する。
【００９０】
ＸＯＲ回路２５は、反転情報生成部７５から出力された現在の反転情報７５と、一つ前の反転信号７７とのＸＯＲ演算を実施し、当該演算結果７８をデータ正転／反転部２６およびセレクタ３０に出力する（ステップＳ３６）。データ正転／反転部２６は、反転信号５６が"０"である場合は、送信データとしてリードデータを正転したデータ（そのままのデータ）を出力する。このとき、セレクタ３０には反転信号７８として"０"が出力される（ステップＳ３７）。一方、データ正転／反転部２６は、反転信号５６が"１"である場合は、送信データとしてリードデータを反転したデータを出力する。このとき、セレクタ３０には反転信号７８として"１"が出力される（ステップＳ３８）。
【００９１】
アクセス制御部２１は、ＦＦ回路３１から出力された送信データ８１およびＦＦ回路３２から出力された反転信号７７を入力し、送信データ８１および当該送信データに対応する反転信号７７を格納する（ステップＳ４３）。
【００９２】
また、リードアドレス生成部２２から、要求アドレス"Ａ"をインクリメントしたアドレスである"Ａ＋１"が出力されると（ステップＳ３２）、メモリ２は、リードアドレス生成部２２から出力されたリードアドレス７２（"Ａ＋１"）に対応するリードデータ７６をデータ正転／反転部２６およびＦＦ回路２７に出力する（ステップＳ３３）。また、反転情報生成部２３はリードアドレス７２（"Ａ＋１"）に対応する反転情報７５をＸＯＲ回路２５に、リードアドレス７２（"Ａ＋１"）がジャンプアドレスであるか否かを示すジャンプアドレス判定情報７３を制御信号生成部２４に、それぞれ出力する（ステップＳ３４）。ここで、リードアドレス７２は"Ａ＋１"でありジャンプアドレスではないので、ジャンプアドレス判定情報７３として"０"が出力される。
【００９３】
リードアドレス７２がジャンプアドレスではない場合（ステップＳ３５：Ｎｏ）、制御信号生成部２４は制御信号７４として"０"をセレクタ２９、３０に出力する。このとき、セレクタ２９は状態遷移判定部２８から出力された送信データ８２を、セレクタ３０は状態遷移判定部２８から出力された反転信号８３を、それぞれ選択する。
【００９４】
状態遷移判定部２８は、現在のリードデータ８０と一つ前に出力されたリードデータ８１とを比較する（ステップＳ３９）。そして、現在のリードデータ８０における遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きくない場合（ステップＳ４０：Ｎｏ）、現在のリードデータ８０を正転した（つまり、反転しない）送信データ８２をセレクタ２９に出力する（ステップＳ４１）。このとき、状態遷移判定部２８は現在のリードデータ８０が正転されて出力されことを示す反転信号８３（"０"）をセレクタ３０に出力する。一方、現在のリードデータ８０における遷移するビットの数がＮ／２（Ｎは２以上の整数とする）よりも大きい場合（ステップＳ４０：Ｙｅｓ）、現在のリードデータ８０を反転した送信データ８２をセレクタ２９に出力する（ステップＳ４２）。このとき、状態遷移判定部２８は現在のリードデータ８０が反転されて出力されことを示す反転信号８３（"１"）をセレクタ３０に出力する。
【００９５】
アクセス制御部２１は、ＦＦ回路３１から出力された送信データ８１およびＦＦ回路３２から出力された反転信号７７を入力し、送信データ８１および当該送信データに対応する反転信号７７を格納する（ステップＳ４３）。
【００９６】
以降、リードアドレス生成部２２からリードアドレスが出力される度にステップＳ３２〜Ｓ４３の動作が繰り返される。
【００９７】
そして、アクセス制御部２１はＣＰＵ１の要求アドレスに対応した応答データおよび応答データの出力を知らせる応答信号８６をＣＰＵ１に出力する（ステップＳ４４）。
【００９８】
次に、本実施の形態にかかるインターフェース回路の動作について、図１０に示すタイミングチャートを用いて説明する。Ｔ１１のタイミングで、ＣＰＵ１からアクセス制御部２１に要求アドレス７０として"Ａ"が出力される。Ｔ１２のタイミングで、アクセス制御部２１はリードアドレス生成部２２に送信アドレス７１として"Ａ"を出力する。Ｔ１３のタイミングで、アクセス制御部２１はリードアドレス生成部２２にインクリメント信号７１を出力する。また、Ｔ１３のタイミングで、リードアドレス生成部２２は反転情報生成部２３およびメモリ２にリードアドレス７２として"Ａ"を出力する。その後、Ｔ１４のタイミングで、メモリ２からデータ正転／反転部２６およびＦＦ回路２７にリードデータ７６として"（Ａ）"が出力され、反転情報生成部２３からＸＯＲ回路２５に反転情報７５として"（ａ）'"が出力され、反転情報生成部２３から制御信号生成部２４にジャンプアドレス判定情報７３として"１"が出力される。Ｔ１５のタイミングで、ＦＦ回路２７からリードデータ８０として"（Ａ）"が出力される。また、Ｔ１５のタイミングで、制御信号７４として"１"が出力され、送信データ８１として"（Ａ）'"が、反転信号７７として"（ａ）"が出力される。ここで、（Ａ）'は、リードアドレスＡに対応する、正転／反転の処理を行ったリードデータ（送信データ）である。そして、Ｔ１６のタイミングで、アクセス制御部２１からＣＰＵ１に応答データ８６として"（Ａ）"が出力される。
【００９９】
このとき、Ｔ１５のタイミングにおいて、リードアドレス生成部２２からリードアドレス"Ａ＋１"が送信され、図７のステップＳ３９〜Ｓ４２の動作がステップＳ３６〜Ｓ３８の動作と並行して繰り返される。以降の動作についても同様である。
【０１００】
図１０のタイミングチャートに示すように、リードアドレス７２がジャンプアドレスである場合、リードデータ７６はデータ正転／反転部２６によって正転／反転処理が行われ、セレクタ２９によって選択されてＦＦ回路３１に出力され、送信データ８１として出力される。一方、リードアドレス７２がジャンプアドレスでない場合、ＦＦ回路２７から出力されたリードデータ８０と送信データ８１とが状態遷移判定部２８に入力されて、正転／反転処理が行われ、セレクタ回路２９によって選択されてＦＦ回路３１に出力され、送信データ８１として出力される。
【０１０１】
リードアドレス７２がジャンプアドレスとジャンプアドレスでない場合では、リードアドレス７２が出力されてから送信データ８１が出力されるまでのパスとそのスループットが異なる。つまり、リードアドレス７２がジャンプアドレスの場合は、リードアドレス７２がジャンプアドレスでない場合と比べて、送信データ８１が１クロック早く出力される。すなわち、図１０のタイミングチャートにおいて、リードアドレス７２がジャンプアドレスの場合は、Ｔ１３のタイミングでリードアドレス"Ａ"が出力された１クロック後（Ｔ１５）に送信データ"（Ａ）'"が出力されている。これに対して、リードアドレス７２がジャンプアドレスではない場合は、Ｔ１５のタイミングでリードアドレス"Ａ＋１"が出力された２クロック後（Ｔ１７）に送信データ"（Ａ＋１）'"が出力されている。なお、反転信号７７についても送信データ８１の場合と同様である。
【０１０２】
また、図１０において、例えば図９の表に無いジャンプアドレスが発生した場合、反転情報生成部２３は、その出力であるジャンプアドレス判定情報７３として"０"を出力する。そして、制御信号生成部２４は制御信号７４として"０"を出力し、状態遷移判定部２８から出力された送信データ８２がセレクタ２９で選択されるように、また反転信号８３がセレクタ３０で選択されるように、セレクタ２９、３０を制御する。
【０１０３】
以上で説明した本実施の形態にかかるインターフェース回路４では、スループットを改善するパスをジャンプアドレスに限定することで、反転情報生成部２３に格納する情報量を減少させることができ、ハードウェア量を節約することができる。すなわち、本実施の形態にかかるインターフェース回路４では、反転情報生成部２３に格納されているリードアドレスと一致したアドレス、即ちジャンプアドレスに限定してスループットを改善している。つまり、ＣＰＵ１から要求があったジャンプアドレスに対しては、直ちに応答データを返すことができるパス（データ正転／反転部２６を含むパス）を使用している。一方、ＣＰＵ１から直接要求されていない先読みアドレスであるシーケンシャルアドレスについては、スループットを改善するパスを使用していない。スループットを改善するパスには、入力されるリードアドレスに対して予め反転情報、ジャンプアドレス判定情報を持たせたテーブルが必要である。このとき、スループットを改善するパスをジャンプアドレスに限定することで、反転情報生成部２３に格納する情報量を減少させることができ、ハードウェア量を節約することができる。
【０１０４】
また、反転情報生成部２３に格納される反転情報を生成できない場合は、ジャンプアドレス判定情報７３として"０"を出力することで、スループットが改善されないパス（状態遷移判定部２８を含むパス）を使用することができる。これにより、要求データの状態遷移数を低減させることができ、データ送信における消費電流を低減させることができる。ここで、反転情報を生成できない場合とは、ＣＰＵ１の動作において、条件分岐の分岐先が同じアドレスになる場合であって新しいリードアドレスが同一でも直前のリードアドレス、リードデータが異なる場合や、何箇所かのジャンプ先がデータに依存するような場合のようにシミュレーションで予め動作が求められない場合や、シミュレーションによる動作のもれがある場合などである。
【０１０５】
以上で説明したように、本実施の形態にかかる発明においても、ＣＰＵとメモリとの間のデータ転送のスループットを向上させることが可能なインターフェース回路およびデータ転送方法を提供することができる。
【０１０６】
実施の形態３
次に、本発明の実施の形態３について説明する。図１１は本発明の実施の形態３にかかるインターフェース回路を説明するためのブロック図である。本実施の形態にかかるインターフェース回路５では、リードアドレス５２を入力するＦＦ回路３６を設け、反転情報生成部３７がＦＦ回路３６の出力９０を入力している点が、実施の形態１にかかるインターフェース回路３と異なる。これ以外は、実施の形態１にかかるインターフェース回路３と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
【０１０７】
図１１に示した本実施の形態にかかるインターフェース回路５では、図１に示したインターフェース回路３の反転情報生成部１３を反転情報生成部３７とし、リードアドレス５２を入力するＦＦ回路（リードアドレス保持回路）３６を設けている。そして、ＦＦ回路３６の出力を反転情報生成部３７に入力することで、ジャンプ前のアドレスを含む直前のリードアドレスを反転情報生成部３７に入力することができる。
【０１０８】
反転情報生成部３７は、一つ前のリードアドレス９０と現在のリードアドレス５２を入力することで、反転情報５３を生成することができる。これ以外は、実施の形態１にかかるインターフェース回路３と同様であるので、重複した説明は省略する。
【０１０９】
異なる複数のアドレスから同一のアドレスにジャンプするような場合、ジャンプ先のジャンプアドレスを用いただけでは反転情報を生成することができない。本実施の形態にかかるインターフェース回路５では、ＦＦ回路３６を設け、当該ＦＦ回路３６の出力を反転情報生成部３７に入力している。そして、一つ前のリードアドレス９０と現在のリードアドレス５２を用いて反転情報５３を生成している。よって、異なる複数のアドレスから同一のアドレスにジャンプした場合であっても、リードデータの反転情報を区別することができるので、反転情報生成部３７は正確な反転情報やジャンプアドレス判定情報を出力することができる。よって、異なる複数のアドレスから同一のアドレスにジャンプするような場合であっても、インターフェース回路のスループットを改善することができる。なお、本実施の形態は実施の形態２にかかるインターフェース回路にも適用することができる。
【０１１０】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【０１１１】
１  ＣＰＵ
２  メモリ
３、４、５  インターフェース回路
１１  アクセス制御部
１２  リードアドレス生成部
１３  反転情報生成部
１４  ＸＯＲ回路（演算回路）
１５  データ正転／反転部
１６、１７  ＦＦ回路
２１  アクセス制御部
２２  リードアドレス生成部
２３  反転情報生成部
２４  制御信号生成部
２５  ＸＯＲ回路（演算回路）
２６  データ正転／反転部
２７  ＦＦ回路
２８  状態遷移判定部
２９、３０  セレクタ
３１、３２  ＦＦ回路
３６  ＦＦ回路
３７  反転情報生成部
【図１】
2013033413.tif 000003
【図２】
2013033413.tif 000004
【図３】
2013033413.tif 000005
【図４】
2013033413.tif 000006
【図５】
2013033413.tif 000007
【図６】
2013033413.tif 000008
【図７】
2013033413.tif 000009
【図８】
2013033413.tif 000010
【図９】
2013033413.tif 000011
【図１０】
2013033413.tif 000012
【図１１】
2013033413.tif 000013
【図１２】
2013033413.tif 000014
【図１３】
2013033413.tif 000015
【図１４】
2013033413.tif 000016
【図１５】
2013033413.tif 000017
【図１６】
2013033413.tif 000018
【図１７】
2013033413.tif 000019
【図１８】
2013033413.tif 000020
【図１９】
2013033413.tif 000021
【図２０】
2013033413.tif 000022
【図２１】
2013033413.tif 000023