(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-20
(45)【発行日】2023-12-28
(54)【発明の名称】情報処理装置および情報処理装置の制御方法
(51)【国際特許分類】
G06F 13/42 20060101AFI20231221BHJP
G06F 12/00 20060101ALI20231221BHJP
G06F 3/06 20060101ALI20231221BHJP
H04L 25/02 20060101ALI20231221BHJP
【FI】
G06F13/42 310
G06F12/00 550K
G06F3/06 304
H04L25/02 F
(21)【出願番号】P 2019192825
(22)【出願日】2019-10-23
【審査請求日】2022-10-18
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】小林 陽
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2007-122250(JP,A)
【文献】特開平08-305629(JP,A)
【文献】特開2013-128190(JP,A)
【文献】特開2001-183422(JP,A)
【文献】米国特許出願公開第2009/0273363(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/39-13/42
G06F 12/00
G06F 3/06-3/08
H04L 25/02
(57)【特許請求の範囲】
【請求項1】
第1の基板に配されたプロセッサと、前記第1の基板に接続可能な第2の基板に配された不揮発性の半導体メモリと、を有する情報処理装置であって、
前記不揮発性の半導体メモリのデバイスに関する第1情報と、前記不揮発性の半導体メモリの出力信号の駆動能力に関する第2情報と、を前記不揮発性の半導体メモリから取得する取得手段と、
前記第1情報に対応する前記不揮発性の半導体メモリの出力信号の駆動能力に関する参照情報と、前記第2情報を比較する比較手段と、
前記参照情報と前記第2情報が異なることに応じて、前記参照情報を前記不揮発性の半導体メモリに設定する設定手段と、を有することを特徴とする情報処理装置。
【請求項2】
前記設定手段は、前記参照情報と前記第2情報が同一である場合に、前記参照情報を前記不揮発性の半導体メモリに設定しないことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記不揮発性の半導体メモリは、複数の不揮発性の半導体メモリのデバイスに関する情報と前記複数の不揮発性の半導体メモリの各々に対応する出力信号の駆動能力に関する情報を対応付けた管理情報を記憶し、前記参照情報は前記管理情報に含まれることを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
揮発性の半導体メモリを有し、
前記不揮発性の半導体メモリから前記管理情報を読み出して、前記揮発性の半導体メモリに保持させる読み出し手段を有し、
前記比較手段は、前記揮発性の半導体メモリが保持した前記参照情報を用いることを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記管理情報は、更新可能であることを特徴とする請求項3または4に記載の情報処理装置。
【請求項6】
前記比較手段は、前記情報処理装置の起動に基づいて、前記参照情報と前記第2情報を比較することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
前記不揮発性の半導体メモリの出力信号の駆動能力に関する情報とは、前記第1の基板および前記第2の基板の間のインピータンスの設定を行うための情報であることを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
前記不揮発性の半導体メモリのデバイスに関する情報とは、前記不揮発性の半導体メモリのProdu
ct Nameであることを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項9】
前記不揮発性の半導体メモリのデバイスに関する情報とは、前記不揮発性の半導体メモリのManufacturer IDであることを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
【請求項10】
前記不揮発性の半導体メモリは、周波数の異なる複数の転送モードを設定可能であり、
前記設定手段は、前記複数の転送モードのうち、周波数の最も高い転送モードに設定することを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。
【請求項11】
前記情報処理装置は、前記設定手段による前記不揮発性の半導体メモリへの設定が完了することに応じて、前記情報処理装置を起動することを特徴とする請求項1乃至10のいずれか1項に記載の情報処理装置。
【請求項12】
前記設定手段は、前記参照情報を、前記不揮発性の半導体メモリの前記第2情報に上書きすることを特徴とする請求項1乃至11のいずれか1項に記載の情報処理装置。
【請求項13】
前記第2の基板は、前記第1の基板に対して不揮発性の半導体メモリを有する異なる基板に取り換えることが可能であることを特徴とする請求項1乃至12のいずれか1項に記載の情報処理装置。
【請求項14】
第1の基板に配されたプロセッサと、前記第1の基板に接続可能な第2の基板に配された不揮発性の半導体メモリと、を有する情報処理装置の制御方法であって、
前記プロセッサが、前記不揮発性の半導体メモリのデバイスに関する第1情報と前記不揮発性の半導体メモリの出力信号の駆動能力に関する第2情報と、を前記不揮発性の半導体メモリから取得する取得工程と、
前記プロセッサが、前記第1情報に対応する前記不揮発性の半導体メモリの出力信号の駆動能力に関する参照情報と前記第2情報を比較する比較工程と、
前記プロセッサが、前記参照情報と前記第2情報が異なることに応じて、前記参照情報を前記不揮発性の半導体メモリに設定する設定工程と、を有することを特徴とする情報処理装置の制御方法。
【請求項15】
請求項14に記載の制御方法を、コンピュータに実行させるためのプログラム。
【請求項16】
請求項15に記載のプログラムを格納したコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリから出力される信号波形のスルーレートを適切なスルーレートにすることで最適な信号波形を生成する技術である。
【背景技術】
【0002】
近年、PC(Personal Computer)に代表される情報処理装置に内蔵されているメインのプリント基板(以下、メイン基板)は、コネクタやケーブルを介して、複数のプリント基板(以下、基板)と接続できるように設計されることが多い。例えば、PCIe(Peripheral Component Interconnect Express)カードスロットやDIMM(Dual Inline memory module)用のコネクタが用意されることがある。これにより、エンドユーザは任意の基板(基板に搭載されたIC)をメイン基板に接続して所望の機能を得ることが可能となる。
【0003】
このようなケースでは、エンドユーザが任意の基板をメイン基板に接続するため、どのような電気的特性を持ったICがメイン基板に搭載されたICに電気的に接続されるかわからない。
【0004】
一般的にJEDEC(Joint Electron Device Engineering Council)などの各種規格を満たすように様々なベンダがICを設計、製造しているが、ベンダ毎あるいは製品の種別毎に電気的特性が若干異なる。
【0005】
つまり、ICの出力信号の駆動能力や配線パターンなどの条件によっては信号波形のスルーレート(ある信号の単位時間当たりの電位変化量)がばらつくおそれがある。
【0006】
例えば、特許文献1には、アドレス線のスルーレートを調整するために、メモリコントローラ内においてスルーレートを段階的に調整できるレジスタを用意している。これを利用して、アドレス線のトポロジーが異なるいずれのDIMMに対しても正確に通信できるようにした技術が開示されている。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1ではDIMMのタイプ(UDIMMやRDIMMか)を基にアドレス線のスルーレートの調整を行っているが、少なくともICから出力されるデータ信号のスルーレートは調整されない。そのため、ベンダ毎あるいは製品の種別毎に電気的特性が異なることによって、出力される信号波形のスルーレートにばらつきが生じる。
【0009】
また、CPUが配されたメイン基板に不揮発性の半導体メモリが配された異なる基板を接続することがある。このような場合に、スルーレートを設定するための駆動能力設定が初期設定の場合には、異なる基板に配される不揮発性の半導体メモリのベンダや製品の種別によって出力される信号波形のスルーレートがバラつくおそれがある。そしてスルーレートのばらつき方によっては、CPUが配されたメイン基板によって出力される基準クロックによって正確にサンプリングできず正常な通信が行えないおそれがある。
【0010】
本発明は、異なる基板に配される不揮発性の半導体メモリのデバイスに関する情報に係わらず、不揮発性の半導体メモリから出力される信号波形のスルーレートのばらつきを抑制することを目的とする。
【課題を解決するための手段】
【0011】
本発明は、第1の基板に配されたプロセッサと、第1の基板に接続可能な第2の基板に配された不揮発性の半導体メモリと、を有する情報処理装置であって、不揮発性の半導体メモリのデバイスに関する第1情報と、不揮発性の半導体メモリの出力信号の駆動能力に関する第2情報と、を不揮発性の半導体メモリから取得する取得手段と、第1情報に対応する不揮発性の半導体メモリの出力信号の駆動能力に関する参照情報と、第2情報を比較する比較手段と、参照情報と第2情報が異なることに応じて、参照情報を不揮発性の半導体メモリに設定する設定手段と、を有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、異なる基板に配される不揮発性の半導体メモリのデバイスに関する情報に係わらず、不揮発性の半導体メモリのスルーレートのばらつきを抑制することが可能となる。
【図面の簡単な説明】
【0013】
【
図1】複数のプリント基板が接続された構成を示す図
【
図2】不揮発性メモリの電気的特性の違いによって発生する通信エラーの概念図
【
図4】製品名と不揮発性メモリの出力信号の駆動能力設定値の管理情報を示す図
【
図5】製品名と不揮発性メモリの出力信号の駆動能力設定値の管理情報を示す図
【
図6】出力信号の駆動能力を設定する際のフローチャートを示す図
【
図7】不揮発性メモリが出力信号の駆動能力を変更する際のフローチャートを示す図
【
図8】改善した信号波形と通信エラーを防げることを示す概念図
【発明を実施するための形態】
【0014】
添付図面を参照して本発明の各実施例を詳しく説明する。以下の実施例は特許請求の範囲に係る発明を限定するものではなく、また各実施例で説明されている特徴の組み合わせすべてが発明の解決手段に必須の構成とは限らない。なお、以下の実施例では、情報処理装置の例として画像処理装置を用いる。
【0015】
(実施例1)
本実施例では複数の基板が接続可能であり、メイン基板である基板10と基板11が接続された構成図を
図1に示す。
【0016】
図1においては、ホストデバイスを含む基板10とスレーブデバイスを含む基板11の2枚の基板が、コネクタ20とコネクタ21によって嵌合されている。コネクタ20は基板10に、コネクタ21は基板11にそれぞれ表面実装されており、複数の信号を通すことができる。また基板10と基板11は、金属でできたスペーサ22とビス23により固定されている。
【0017】
基板10と基板11にはIC30とIC31が実装されており、これらが複数の信号線40により通信している。ここではIC30がホストデバイス、IC31がスレーブデバイスであるとする。
【0018】
複数の信号線40はデータ信号のみでなく、クロック信号やコマンド信号も含むものとし、コネクタ20とコネクタ21を介して基板10と基板11間を結ぶ。また複数の信号線40の各信号の配線長は基板10と基板11上でそれぞれ特定の長さで配線されている。基板11と基板10が別体であることから基盤の交換が可能となる。
【0019】
このような基板構成では、所望の機能を実行することが可能なICを含む基板を接続することによって所望の機能を取得することが出来る。さらに、例えばIC30が故障した場合に基板11を取り外し、新しい基板10(正常なIC30が実装された基板)に接続することで情報処理装置が再度使用可能となるメリットもある。
【0020】
ここでPCなどの情報処理装置の基板を設計する際には、スレーブデバイスが実装された基板11の配線長や抵抗値などの回路定数といったパラメータを変更せずに、IC31として同じ機能である複数種のICを使用することがある。
【0021】
それによって例えばICのコストが変動した時に別ベンダのものに実装を切り替えてコスト低減を図ったり、安定したBCP(Buciness Continuity Planning)を実現したりするためである。
【0022】
しかしながら前述のようにIC31の電気的特性は、ある規格に沿って設計されているものの、ベンダ毎や製品毎にばらつくおそれがある。そして、IC31の特性毎に基板10と基板11の配線長や回路定数を変更せずに、複数種のICを用いた結果、デバイス(IC31)依存の電気的特性差分によって、信号波形が変わり、通信エラーが発生するケースがある。
【0023】
課題の詳細を
図2に示す不揮発性メモリの電気的特性の違いによって発生するスルーレートのバラつき及びバラつきによって生じる通信エラーの概念を用いて説明する。
【0024】
図2ではIC31として3種類のデバイス(デバイスA、デバイスB、デバイスC)が使用され、IC31からIC30に0b011のビット列を送信することを想定している。
【0025】
またIC31は出力信号の駆動能力(つまりスルーレート)として初期設定が設定されているものとする。なお、ここでIC31であるデバイスとは、例えば後述する不揮発性の半導体メモリであるeMMCであり、IC30は、CPUである。
【0026】
実際、
図2のように同一の駆動能力であっても、例えばデバイスCは、デバイスA、デバイスBに比べてスルーレートが小さい構成である。
図2に示す基準クロックはIC30がIC31に対して出力しているクロックである。
【0027】
時刻T0において、デバイスA、デバイスB、デバイスCは、Lowレベルを維持する。時刻T1において、デバイスAおよびデバイスBを用いた場合に、ホストであるIC30が、このビット列をサンプリングする際にデバイスA信号およびデバイスB信号がLowレベルからHighレベルになる。しかしながら、デバイスCは、ホストであるIC30が、このビット列をサンプリングする際にデバイスCの信号がLowレベルのまま保持される。時刻T3において、デバイスA、デバイスB、デバイスCは、Highレベルを維持する。
【0028】
図2の結果、ホストであるIC30は、デバイスAおよびデバイスBが用いられた場合に0b011と正確に解釈するが、デバイスCが用いられた場合に0b001と間違って解釈してしまう。
【0029】
これは、
図2に示すように、ホストであるIC30がこのビット列をサンプリングする際の時刻T2において、デバイスCの信号がLowレベルからHighレベルに遷移する遷移時であり、閾値よりも低い値としてサンプリングされてしまったからである。そのため、時刻T2において、本来「1」と解釈すべきところを「0」と解釈されてしまい、ホストは0b001と解釈してしまう。つまり、デバイスの信号の遷移時の波形(L→H、H→L)の傾きが小さいことによって、ホストに信号を間違って解釈される可能性が高くなる。
【0030】
特にIC30とIC31が数百MHz~数GHzで通信している場合では、ps(ピコ秒)オーダで、クロック信号とのタイミングが要求されるため、スルーレートの傾きの違いで通信エラーが発生してしまうおそれがある。
【0031】
次に
図3を用いて本実施例におけるハードウェア構成図を説明する。
【0032】
画像形成装置100は不揮発性メモリ101、CPU102、揮発性メモリ103、ネットワーク通信制御部104、画像処理部105、揮発性メモリ106、画像読取部107、画像作像部108を有する。ここで、
図1におけるIC30がCPU102で、IC31が不揮発性メモリ101であり、画像形成装置100も2枚の基板が
図1の構成で接続されているものとする。
【0033】
不揮発性メモリ101は、供給している電源を切断してもデータを保持できる特性を持っている。本実施例では不揮発性メモリ101はeMMC(embedded Multi Media Card)とする。不揮発性メモリ101は画像形成装置の各種情報処理を実行するCPU102と接続されており、大きく分けて4つのバスで接続されている。1つ目はホスト(CPU102)から不揮発性メモリ101に出力されるクロック信号1である。
【0034】
eMMCは規格上、複数のクロック周波数での通信がサポート可能であり、通常はこのクロック信号1が通信時の基準クロックとして使用される。但し、HS400という通信モードをサポートしているeMMCの場合は、ホストがデータをサンプルするための基準クロックをeMMCからホストに対して出力する必要がある。この時使用されるのがクロック信号2である。eMMCの規格上、双方向のコマンド信号とデータ信号が用意されている。コマンド信号はホストからデバイスにそのような要求を行うかを指定したり、またその要求を受理できたかどうかをデバイスからホストに返答したりするために用いられ、そのあとにデータ信号に所定のデータが出力される。
【0035】
次にeMMCの設定について詳細を説明する。eMMCは、CIDレジスタと呼ばれる領域と、CSDレジスタと呼ばれる領域とEXT_CSDレジスタと呼ばれる領域を有する。
【0036】
CID(Card IDentification)レジスタには、Manufact
urer ID(以下、製造ID)やProduct Name(以下、製品名)など基
本的な情報が格納されている。
【0037】
CSD(Card Specific Data)レジスタには、不揮発性メモリ101がサポートしているクロックの最大周波数や最大ブロックリード長などの情報(CSD情報)が格納されている。
【0038】
EXT_CSDレジスタには、例えば、DEVICE_TYPEフィールドと呼ばれるレジスタフィールドや8ビットのHS_TIMINGフィールドと呼ばれるレジスタフィールドが存在する。これらのレジスタフィールドで選択できる各転送モードの名称において数値は、転送の周波数を示し、アルファベットは、サンプリングタイミングを示す名前である。例えばDDR50モードではDual Data Rate(クロックの立ち上がりと立ち下がりの両エッジでサンプリングする)モードで動作し、クロック周波数は50MHzで動作する。但し、クロック周波数はJEDECで規定されている周波数範囲であればよい。
【0039】
HS_TIMINGフィールドは、上位4ビットのDriver Strengthという領域と、下位4ビットのTiming Interfaceという領域を有する。
【0040】
Timing Interfaceは、現在設定されている転送モードを示す情報が格納されている。そして、Driver Strengthは、現在の出力信号の駆動能力設定値の情報が格納されている。駆動能力設定値とは、具体的には、不揮発性メモリからみた出力インピータンスを設定するための情報である。この設定値によって、出力信号の駆動能力を変更できる。
【0041】
eMMCは、ホストから所定のコマンド信号とデータ信号を受け付けると、対象のレジスタにアクセスし、受けつけたデータ信号を設定する。
【0042】
図4を用いてeMMCの出力信号の駆動能力を設定する原理を説明する。
図4は不揮発性メモリ101の内部を簡易的に示した図である。
【0043】
不揮発性メモリ101はNAND Flash200を有する。ホストとなるCPU102からリードの要求が来た場合、メモリコントローラ201はNAND Flash200からデータを読み出し、メモリコントローラ201内部にある不図示のキャッシュメモリに保持する。メモリコントローラ201はキャッシュメモリに保持されたデータをPHY202へ順次送信する。
【0044】
PHY202には、High SideのFET203とLow SideのFET204、インピーダンス群205が存在する。High SideのFET203がオンするとPHYの電源電圧から電流が出力信号に流れ込み、出力信号がLowからHighに遷移する。また、Low SideのFET204がオンすると出力信号から電流がGNDに流れ込み、出力信号がHighからLowに遷移する。
【0045】
インピーダンス群205はそれぞれ異なるインピーダンス値を持つインピーダンスZ1、Z2、Z3から成り、前述のレジスタの設定によりどれか一つが選択される。ここではインピーダンス値をZ1>Z2>Z3とする。
【0046】
インピーダンスをZ1に設定した場合は、Z2やZ3よりもインピーダンスが大きいため、PHYの電源電圧から流れ込む電流量とGNDに引き込む電流量が小さくなる。つまり出力信号に現れるエネルギー量が少なくなるため、スルーレートは小さくなる。
【0047】
一方でインピーダンスをZ3に設定した場合は、Z1やZ2よりもインピーダンスが小さいため、PHYの電源電圧から流れ込む電流量とGNDに引き込む電流量が大きくなる。つまり出力信号に現れるエネルギー量が大きくなるため、スルーレートは大きくなる。
【0048】
なお、レジスタ設定による駆動能力の変更の対象となるのがクロック信号2(転送モードによる周波数設定)とコマンド信号、データ信号である。コマンド信号とデータ信号は双方向のバスであるが、ホストからeMMCに出力される信号の駆動能力は変更されない。
【0049】
また不揮発性メモリ101には画像形成装置100を制御するためのOS(Operating System)などのプログラムデータが格納されている。
【0050】
さらに不揮発性メモリ101は、
図5に示すProdu
ct Name(製品名)と出力信号の駆動能力設定値とを対応付けた管理情報を記憶している。対応付けられる出力信号の駆動能力設定値は、ベンダ毎あるいは製品の種別毎に電気的特性が異なることによって生じるeMMCの出力波形の差異を小さくするために製品名に応じた駆動能力設定値となる。
【0051】
この管理情報は、サービスマン等によって更新可能である。なお、ここでは製品名と駆動能力設定値を対応付けているが、デバイスを識別できる情報と駆動能力設定値を対応付ければよい。
【0052】
CPU102は、不揮発性メモリ101内のプログラムデータを揮発性メモリ103に展開し、CPU102が有する不図示のプログラムカウンタの動作に従って、順次処理を実行する。前述のプログラムデータには不揮発性メモリ101を制御するためのドライバソフトウェアが含まれる。ここではこのドライバソフトウェアをeMMCドライバと呼ぶ。eMMCドライバは、不揮発性メモリ101とCPU102間のバスの初期化を行ったり、不揮発性メモリ101に対するReadやWriteのコマンドの発行及びデータを送信したりする。
【0053】
また本実施例においては、このeMMCドライバは、不揮発性メモリ101のProdunt Name(製品名)をバスの初期化時に読みだす。そして製品名を基に、
図5の管理情報を参照してその製品名と対応付けた駆動能力設定値を不揮発性メモリ101内のレジスタに対して設定する機能を有する。詳細は
図6で説明する。
【0054】
またCPU102はeMMCの制御以外にも、画像形成装置100の電源制御、ネットワーク通信制御部104から受信したPDL(Page Discription Language)データを画像処理部105に送信するなどの機能も有する。
【0055】
揮発性メモリ103はDRAM(Dynamic Random Access Memory)であり、不揮発性メモリ101内に格納されているプログラムデータをCPU102によってロードされ、ワークメモリとして使用される。
【0056】
ネットワーク通信制御部104は、不図示の外部機器とTCP/IPのプロトコルで通信し、PDLデータなどを受信する。本実施例においてはEthernetケーブルにより、画像形成装置100と外部機器が接続されることを想定している。
【0057】
画像処理部105は画像読取部107から受信した画像データに対して、パケット化や圧縮、回転などの画像処理を施す。画像処理部105の内部には不図示のサブCPUを有し、揮発性メモリ106をワークメモリとして画像処理時に使用する。画像処理されたデータは画像作像部108に送信され、画像形成装置100が有する感光体やトナーを使用して紙媒体に所望の画像を形成する。
【0058】
次に
図6を用いて、CPU102が不揮発性メモリ101の出力信号の駆動能力を変更するフローを説明する。
図6のフローチャートは、CPU102が実行する。
【0059】
以降、CMDxやRxという表現を記載するが、これはJEDECで規定されているeMMCの通信プロトコルに使用されるものである。CMDxはコマンドを示し、CPU102から不揮発性メモリ101に対して出力され、Rxはレスポンスを示し、不揮発性メモリ101からCPU102に出力される。CMDxとRxはコマンド信号を介して通信される。Rxは受信するCMDxによって一意に決定される単なるレスポンスであるため説明は省略する。またCMDxやRxが送受信された後にデータ信号に必要なデータが出力される。
【0060】
画像形成装置100を起動するとフローチャートを開始する。まずステップS1000にて、CPU102が不揮発性メモリ101に出力しているクロック信号1を400kHz以下に設定し、バスの初期化フローを開始する。ステップS1001に移行し、CMD1を送信する。CMD1によりCPU102は不揮発性メモリ101の規格の情報を要求する。具体的には、不揮発性メモリ101が動作可能な電源電圧範囲を確認、また不揮発性メモリ101がBusy状態か否かを確認するための情報を要求する。
【0061】
CMD1を投げた後は不揮発性メモリ101からCMD1に対応するレスポンスとしてR3を受信するのを待つ(ステップS1002)。
【0062】
R3を受信したらステップS1003に移行し、不揮発性メモリ101からデータを受信する。受信したデータの中にある、OCR(Operation Conditions Register) Busy ビット(以下、OCRビット)が0かどうかを確認する。OCRビットとは、不揮発性メモリ101がBusy状態か否かを示す値であり、「1」がBusy状態を示し、「0」がIdle状態を示す。
【0063】
OCRビットが0でない場合(1である場合)は不揮発性メモリ101が処理中(Busy状態)であり次の処理に進めないため、ステップS1002に戻る。そして、R3を受信し、OCRビットが0になるまで待つ。OCRビットが0になったのを確認したらステップS1004に移行する。
【0064】
ステップS1004では、CMD1によって得たデータから、CPU102が通信可能なデバイスが不揮発性メモリ101に使用されているかを判断する。具体的には、CPU102がサポートしている電源電圧値を不揮発性メモリ101がサポートしているか否か等を判断する。
【0065】
仮に通信できないような設定値が不揮発性メモリ101から返ってきた場合はステップS1006に移行し、バス(PHY)の電源を落とし、エラー処理を行う。通信可能であると判断した場合はステップS1005に移行する。
【0066】
ステップS1005では、CMD2を送信する。CMD2によりCPU102は、不揮発性メモリ101からCID(Card IDentification)情報を取得し、不揮発性メモリ101の製造IDや製品名などの基本的な情報を取得する。
【0067】
CMD2を送信したら、不揮発性メモリ101からCMD2に対応するレスポンスであるR2を受信する。そして不揮発性メモリ101からCID情報をすべて受信するのを待つ(ステップS1007)。受信が完了したらステップS1008に移行する。
【0068】
ステップS1008では受信したCID情報から製品名を抽出する。製品名は、例えばCIDレジスタの中のビット番号103~56に格納されており、この値が駆動能力設定管理情報内のデバイスA、デバイスB、デバイスCのどれかと一致することになる。
【0069】
ステップS1009ではCMD3を送信し、相対カードアドレスの設定を実施し、不揮発性メモリ101をStandby状態に遷移させる。相対カードアドレスの設定とは、CPU102が、不揮発性メモリ101内のアドレス番地の使い方の設定をすることである。
【0070】
ステップS1010でCMD9を送信し、不揮発性メモリ101のCSD情報を取得し、不揮発性メモリ101がサポートしているクロックの最大周波数や最大ブロックリード長などの情報を取得する。ステップS1011でCMD2に対するレスポンスであるR2とCSD情報をすべて受信したらステップS1012に移行する。
【0071】
ステップS1012ではCMD7を送信する。CMD7によりCPU102は、ステップS1009でStandby状態にした不揮発性メモリ101をTransfer状態(データ転送可能な状態)に移行させる。
【0072】
その後ステップS1013で、CMD8を送信する。CMD8によりCPU102は、EXT_CSDレジスタの情報を取得する。取得したEXT_CSDレジスタの情報の中から、DEVICE_TYPEフィールド(サポートする転送モード情報を格納)の情報と、HS_TIMINGフィールド(現在の転送モード情報と駆動能力設定値を格納)の情報を抽出する。そしてステップS1014に移行する。
【0073】
ステップS1014ではCMD6を送信する。CMD6によりCPU102は、EXT_CSDレジスタのHS_TIMINGフィールド内のTiming Interfaceに0x1を設定する。それによって、High Speedモード(52MHz以下のクロック周波数)に変更する。
【0074】
なお、このとき上位4ビットのDriver Strengthには、駆動能力設定値のデフォルト値が格納される。駆動能力設定値のデフォルト値は、例えば0x0であり、不揮発性メモリ101のベンダ毎、製品ごとに同じ設定を有するが、同じ設定を用いたとしても性能にばらつきを生じる。
【0075】
次にステップS1015でCMD19とCMD14を送信する。CMD19とCMD14によりCPU102は、データ信号のバス幅を設定するテストシーケンスを実行する。データ信号のバス幅は最大8ビットまで増やすことができる。ここまででeMMCのバスの初期化は終了する。
【0076】
バス幅の設定が完了したらステップS1016に移行する。ここではCMD16を送信し、Read及びWriteを実行する際のデータ単位であるBlockのデータサイズを決定する。例えばデータサイズは512Byteなどである。このデータサイズは管理情報で必要なデータサイズ以上となるように設定する。CMD16を送信したら不揮発性メモリ101からR1が返信されるのを待つ。
【0077】
ステップS1018では、
図5に示す管理情報をReadするためにCMD17を用いる。この時指定するアドレスは管理情報が格納されているメモリ領域の先頭アドレスである。読み出した管理情報は、揮発性メモリ103に保持させる。CMD17を発行した後はステップS1019に移行し、R1及び管理情報を受信したかどうかを判定する。受信が完了したらステップS1020に移行する。
【0078】
ステップ1020において、CPU102は、ステップS1008で抽出した製品名とステップ1013で抽出した出力信号の駆動能力設定値をステップS1019で揮発性メモリ103に保持させた管理情報と比較する。
【0079】
ステップS1020において、比較の結果が
図5に示す管理情報と同じ結果であれば、ステップS1021に移行し、異なる結果であればステップS1022に移行する。
【0080】
ステップS1021では、出力信号の駆動能力設定値は変更する必要がない。そのため前述のようにHS_TIMINGフィールドの下位4ビットに、不揮発性メモリ101がサポートしている転送モードで最もパフォーマンスが高い転送モードを設定するだけである。
【0081】
まずステップS1021に移行する例について詳細を説明する。本実施例では、例えば、ステップS1008で抽出した製品名がデバイスAを示す場合に、管理情報の駆動能力設定値と実デバイスの駆動能力設定値が同じになる。具体的には、不揮発性メモリ101のデフォルトの設定が0x0であるためステップ1013で抽出した出力信号の駆動能力設定値は、0x0となる。そして、
図5に示す出力信号の駆動能力設定値(参照情報)は0x0である。そのため、ステップS1020の比較では、同じと判断され、ステップS1021に移行する。
【0082】
ステップS1022では、CMD6を送信する。CMD6によりCPU102は、HS_TIMINGフィールドの上位4ビットに参照情報を設定(上書き)する(ダンピング抵抗値を50Ωから33Ωに変更する)。
【0083】
またステップS1013で抽出したデバイスタイプから不揮発性メモリ101がサポートしている最もパフォーマンスが高い転送モードがわかる。そのため、HS_TIMINGフィールドの下位4ビットにその転送モードを設定可能である。例えばHS200という転送モードをサポートしている場合は0x2を設定する。
【0084】
次にステップS1022に移行する例について詳細を説明する。本実施例では、例えば、ステップS1008で抽出した製品名がデバイスCを示す場合に、管理情報の駆動能力設定値と実デバイスの駆動能力設定値が異なる。具体的には、不揮発性メモリ101のデフォルトの設定が0x0であるためステップ1013で抽出した出力信号の駆動能力設定値は、0x0となる。一方、
図5に示す出力信号の駆動能力設定値(参照情報)は0x1である。そのため、ステップS1020の比較では、異なると判断され、ステップS1022に移行し、デフォルトの設定である0x0に、参照情報である0x1を上書きする。
【0085】
次に、管理情報とデフォルト値が異なる理由と管理情報を参照する理由を説明する。上述したように不揮発性メモリ101のデフォルト設定は同一のものとなる。そのためデバイスCのDriver Strengthのデフォルト値は、デバイスA、デバイスBと同じである。同一の設定においては、前述のようにベンダ毎および製品ごとに波形のばらつきが生じる。例えば、
図2に示すようにデバイスCは、デフォルトの設定値を用いると、デバイスA、デバイスBと比べてスルーレートが小さくなる。このようなデバイス毎の差異は、設計段階から予め把握される。そのため、
図5の管理情報では、デバイスCに対して前述のダンピング抵抗値を一段階小さくして信号のスルーレートを大きくするために、Driver Strengthの領域に0x1を設定する。そして、不揮発性メモリ101内のレジスタに格納された駆動能力設定値を
図5の管理情報を参照してその製品名と対応付いた駆動能力設定値に変更することで所望の駆動能力設定値を設定することができる。
【0086】
具体的な信号波形の改善の効果について
図8の概念図を用いて説明する。
【0087】
図8(a)は、
図2のデバイスCと同じ図である。
図2で説明したように、デバイスCは、ビット列0b011を0b001と誤認識してしまう。
【0088】
一方、
図8(b)に示す本実施例の構成のデバイスCは、
図5の管理情報を参照してその製品名と対応付いた駆動能力設定値を不揮発性メモリ101内のレジスタに対して設定している。それによって不揮発性メモリ101(デバイスC)が出力する信号波形のスルーレートが大きくなり、基準クロックの立ち上がりタイミングで閾値を超えることが出来る。そして、ビット列0b011を正しく認識することが可能となる。
【0089】
なお、デバイスがサポートしている駆動能力の最大値を設定して対応する(スルーレートを常に最大にする)と、通信エラーが減少するがオーバーシュート、アンダーシュートと呼ばれる現象が生じ、CPU102の定格を超えて素子を破壊するおそれがある。
【0090】
また、駆動能力を大きくしたことで画像形成装置100から放射されるノイズ量が大きくなる問題も発生するおそれがある。つまり、製品名に応じた駆動能力設定値を設定することが求められている。
【0091】
フローを終えると、不揮発性メモリ101の通常起動が完了し、画像処理装置を通常起動を行う。
【0092】
次に不揮発性メモリ101の処理を示すフローチャートを
図7にて説明する。
図7のフローチャートは、不揮発性メモリ101が実行する。詳細には、不揮発性メモリ101の内部に含まれるメモリCPUが実行する。
【0093】
不揮発性メモリ101はスレーブデバイスであるため、基本的には
図6で示したCPU102からのコマンドに応じてレスポンスと所望のデータを送信することになる。
【0094】
まずステップS2000にてCPU102からのCMD1の受信を待機する。受信した場合はステップS2001に移行し、CMD1を受け取ったことのレスポンスとしてR3を送信する。そして、ステップS2002において、自らがサポートしている電源電圧範囲などの情報が格納されたOCR値をCPU102に送信し、OCR値の送信が完了しているかを判定する。
【0095】
OCR値の送信が完了していない場合はステップS2003にてOCRビットを1にセットし、送信を継続する。送信が完了したらステップS2004に移行し、OCRビットを0にクリアし、CPU102に送信の完了を伝える。
【0096】
次にステップS2005にてCMD2の受信を待つ。CMD2を受信したらステップS2006に移行し、CPU102にレスポンスとしてR2を送信し、CID情報を送信する。送信が完了したらステップS2007に移行する。
【0097】
ステップS2007ではCMD3の受信を待つ。CMD3を受け取った場合はステップS2008に移行し、自らの動作状態をStandby状態に遷移させる。その後ステップS2009に移行する。
【0098】
ステップS2009ではCMD9の受信を待つ。CMD9を受信したらステップS2010に移行し、CSD情報を送信する。
【0099】
ステップS2011では、CMD7の受信を待つ。CMD7を受信したらステップS2012に移行し、自らの動作状態をTransfer状態に遷移させる。
【0100】
その後ステップS2013にてCMD8の受信を待つ。CMD8を受信するとステップS2014に移行し、EXT_CSD情報を送信する。
【0101】
ステップS2015において、CMD6を受け取り、かつCMD6に続くデータでHS_TIMINGフィールドの設定値が指定されているかを確認する。ここで前述同様、クロック周波数が52MHz以下に設定される。
【0102】
その後、ステップS2016でCMD19及びCMD14の受信を待つ。CMD19とCMD14を受け取るとステップS2017に移行する。ステップS2017において、eMMCの規格に沿ったシーケンスでデータバス幅を設定するトレーニングを実行する。ステップS2017を終えるとステップS2018に移行する。
【0103】
ステップS2018においてCPU102からCMD16を受信し、1Block当たりのデータサイズを決定する。受信が完了したらステップS2019に移行し、R1を送信する。
【0104】
ステップS2020ではCMD17を受信するのを待つ。CMD17を受信したらステップS2021に移行し、CMD17により指定されたアドレスを先頭とし、CMD16によって決められた1Blockのデータサイズ分だけCPU102に送信する。この送信するデータが管理情報である。
【0105】
本実施例は
図6のS1016~S1022の各ステップによって不揮発性メモリ101の出力信号の駆動能力設定値及び転送モードを設定するフェーズがあるため、ステップS2018でCMD6の受信を待つ。CMD6を受信すると、後続のデータに基づいて、駆動能力設定値と転送モードを変更し、フローを終了する。
【0106】
以上の
図6、
図7のフローにより、CPU102と不揮発性メモリ101間のバスの初期化及び、不揮発性メモリ101のProdu
ct Nameに応じた出力信号の駆動能力の設定変更を実施することができる。
【0107】
具体的には、
図6、
図7が初期化処理である。そして、
図6のフローのうちS1016~1022、
図7のフローのうちS2022が、不揮発性メモリ101の製品名に応じた出力信号の駆動能力の変更である。
【0108】
このような構成によれば、複数の基板が接続される構成において、CPUに電気的に接続された不揮発性メモリの電気的特性に応じた最適なスルーレートの信号波形を生成でき、通信の安定性を担保できる。
【0109】
(その他の実施形態)
以上、本発明の様々な例と実施形態を示して説明したが、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるものではない。
【0110】
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0111】
10 基板
11 基板
101 不揮発性メモリ
102 CPU