JP3833613B2 - 高性能マイクロプロセッサのメモリコントローラ・プログラミング方法 - Google Patents

高性能マイクロプロセッサのメモリコントローラ・プログラミング方法 Download PDF

Info

Publication number
JP3833613B2
JP3833613B2 JP2002556378A JP2002556378A JP3833613B2 JP 3833613 B2 JP3833613 B2 JP 3833613B2 JP 2002556378 A JP2002556378 A JP 2002556378A JP 2002556378 A JP2002556378 A JP 2002556378A JP 3833613 B2 JP3833613 B2 JP 3833613B2
Authority
JP
Japan
Prior art keywords
delay
sdram
command
clock
parameters
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.)
Expired - Lifetime
Application number
JP2002556378A
Other languages
English (en)
Other versions
JP2004527819A (ja
Inventor
リュウキ ヤン,
デュオン トン,
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2004527819A publication Critical patent/JP2004527819A/ja
Application granted granted Critical
Publication of JP3833613B2 publication Critical patent/JP3833613B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Dram (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Description

発明の分野
本発明はコンピュータシステム用のメモリコントローラをプログラミングすることに関する。
発明の背景
コンピュータシステムの動作において、中央処理装置(CPU)により駆動されるメモリコントローラ(MC)は外部メモリと相互作用する。単一集積回路チップにおけるCPUはマイクロプロセッサと呼ぶことが多い。メモリコントローラはマイクロプロセッサチップの外部にあっても、又はその内部にあってもよい。マイクロプロセッサチップの内部にあるMCはプロセッサクロックの速度で動作でき、その速度はコンピュータ速度を示す。現代の高性能コンピュータシステムにおいて、シンクロナス・ダイナミック・ランダム・アクセス・メモリ(SDRAM)は、通常は外部メモリとして使用される。SDRAM用のクロックはプロセッサクロックより数分の1の低い速度で動作する。
MCとSDRAMとの間を移動する信号は伝わるのに有限時間がかかり、MCとSDRAMの両方とも応答するのに有限時間がかかる。従って、信号伝達の有限速度と、デバイス又はシステムの有限の応答時間とに時間遅延が関連する。これらの時間遅延は、コンピュータシステムを構成する電子デバイスの構造及び動作に関わる物理的なプロセスにその原因がある。したがって、コンピュータ動作において見られる種々の時間遅延を最小すなわち最適にすることは可能であるが、取り除くことはできない。信頼性のあるコンピュータ設計においてはコンピュータ動作に影響する重要な時間遅延をすべて考慮する必要がある。
いくつかの時間遅延は常に重要であり、従って、入出力動作に対するMCの設計において考慮されなければならない。他のいくつかの時間遅延の重要性はプロセッサクロックの時間周期に対して評価される。それ故、コンピュータ速度が増すにつれて、種々の追加的な時間遅延を考慮して、MCの信頼性のある動作を保証する必要がある。MC及びSDRAMに関わるコンピュータ入出力動作において、伝搬遅延のため、MCから生じる信号はSDRAMに即座に現れず、SDRAMから生じる信号はMCに即座に現れない。更に、SDRAMに関連した種々の時間遅延は、その特定のSDRAMと、コンピュータ回路基板におけるそのSDRAMの実際の物理的なレイアウトとによる。従って、MCとSDRAMとの間の信号遅延は、システム構成及びメモリ性能規格のタイプが異なるためシステム毎に変わる。
入出力(I/O)動作などのコンピュータ動作はプロセッサクロックと同期させられる。I/O動作はデジタルデバイス及びシステムを構成する論理ゲート及びフリップフロップにおける正確なデジタル遷移を基礎にして行われる。コンピュータ動作を信頼性のあるものにするため(例えば、メモリからのデータ読出し)、正確な遷移時刻の前後の短時間、関与する信号(例えば、コマンド信号)を安定にホールドする必要がある。前に述べた種々の時間遅延と共に、かかる時間の考慮はクロック時間周期の重要な一部を構成する。
デジタルコンピュータにおけるメモリコントローラは一般には時間周期の半分だけ遅延したプロセッサクロック信号のレプリカを生成する機能を有する。これによりプロセッサクロック周期の半分のデジタル時間遅延単位が生成される。コンピュータシステムに本質的に存在する前述のアナログ時間遅延と共にこのデジタル時間遅延単位により、SDRAMとの信頼性のある入出力動作のためのプログラミングされたMCの設計は左右される。
MCとSDRAMとの通信用のデジタル信号は3つの範疇に入る:クロック信号;コマンド信号;及びデータ信号。コンピュータシステムにおいて、多重信号線はコマンド経路及びデータ経路の両方を構成する。適切な時刻に適切なデジタル遷移を作りだすため、すべての通信I/O信号は一致して流れるように設計する必要がある。これらすべての信号の正確なタイミング設計は、例えば、消去可能プログラム可能読出し専用メモリ(EPROM)又はフラッシュメモリに包含された埋め込みソフトウエアである“ファームウエア”により行うことができる。現在のMCプログラミング設計の技術は、スプレッドシートを使用して可能性のあるタイミング組み合わせをすべて記憶し、適切な解を手動で設計することであった。かかる実践は特定のシステム構成に固有のものである。これは、考慮すべき時間遅延要素の数が、プロセッサクロック速度の増加に伴い増すにつれて一層困難になり、達成可能な最高の性能のために設計を最適化できない。したがって、数学的な精度で設計問題を明確にして、その問題を解決するため一般的なアルゴリズムを作りだすことが必要である。
発明の概要
一態様において、本発明はメモリユニットのコントローラをプログラミングする方法に関し、前記方法はメモリユニットの複数の初期化パラメータを入力するステップと、各初期化パラメータに対してクロック遅延とコマンド遅延とを計算するステップと、クロック遅延とコマンド遅延との各ペアに対して読出しコマンド遅延のセットを計算するステップと、クロック遅延とコマンド遅延との各ペアに対して書込みコマンド遅延のセットを計算するステップと、クロック遅延とコマンド遅延との各ペアに対してシステム性能を計算するステップと、最適なシステム性能を提供する初期化パラメータを選択するステップとを備える。
本発明の他の態様及び利点は以下の記述及び添付の特許請求の範囲から明らかである。
発明の詳細な説明
本発明は、SDRAMのような外部メモリとの入出力動作を正しく且つ最適に行うためにメモリコントローラをプログラミングする方法に関する。本発明の方法は、SDRAMのようなデバイス及びシステムの動作に本質的に存在する種々の時間遅延及び時間制約の系統的な分析を提供する。意図的なプログラマブル時間遅延要素をMCにおいて導入し、設計要素として利用する。かかる時間遅延要素の1つはプロセッサクロック時間周期であり、より小さいデジタル時間単位である。他の時間遅延はSDRAMクロック時間周期であり、より大きいデジタル時間単位である。そこでアナログ遅延要素(伝搬遅延に関わるSDRAMデバイスパラメータ及びシステム入力パラメータ)と共に、これら2つのデジタル時間遅延入力パラメータを用いて、MCとSDRAMとの間の通信における正しく且つ最適なタイミングを系統的に設計する。外部メモリとの高速で且つ効率的な入出力動作を提供するためのMCをプログラミングする、この系統的な方法の例示的実施形態について、添付図面を参照して以下に説明する。
図1aは外部メモリコントローラ(MC)15と接続された(13)プロセッサ11を示すコンピュータシステムの概略図である。MC15は入出力動作のため外部メモリ19に接続される(17)。
図1bはプロセッサ21を示すコンピュータシステムの概略図で、プロセッサ内にはメモリコントローラ23がある。MCは外部メモリ27と通信する(25)。マイクロプロセッサチップの内部にMCを有することにより、MCがプロセッサクロック速度で動作できるようになる。そこで、MCは入出力(I/O)動作のためより速い外部メモリ(SDRAM)アクセスを有するように設計できる。
図2は代表的なSDRAMコントローラの接続配置30を描写する。MC31とSDRAM33との間の通信信号は3つのグループに物理的に分類される:クロック信号35;一方向(MCからSDRAMへ)コマンドバス37;及び双方向データバス39。コマンド信号とデータ信号とは同期的にサンプリングされる。クロック信号は同期的なコンピュータ動作を可能にする。
図3は基本的なSDRAM読出し及び書込みアクセス40を示す。3つの信号がプロットに示されている:クロック信号41;コマンド信号43;及びデータ信号45。それらの3つの信号はSDRAM I/Oピンにおける信号を表す。3つの信号は図2で論じた信号グループに対応する。SDRAMはクロックと同期して動作するので、コマンドはクロックエッジ、例えば、図でA47、B49、D53及びE55として示した立ち上がりエッジでサンプリングする必要がある。SDRAM読出し又はSDRAM書込みの場合、SDRAMはRAS(行アドレスストローブ)57及びCAS(列アドレスストローブ)59コマンドを受信する。同様に、SDRAM読出し又はSDRAM書込みの場合、SDRAMはRAS61及びCAS63コマンドを受信する。RASからCASまでの遅延はRAS−CAS遅延として定義され、それはSDRAM製造者から与えられたSDRAMパラメータである。システムは最小の与えられたRAS−CAS遅延を使用して最良の性能を達成する。コマンドを正しくサンプリングするため、クロックとコマンドとは、製造者から与えられた最小のセットアップ時間F65及び最小のホールド時間G67を満たす必要がある。読出し動作の場合、データはクロック立ち上がりエッジC51(キャッシュレイテンシ2のみを示す)でデータバス上に現れる。書込み動作の場合、書込みデータ71がCASコマンドと同時にサンプリングされるように、書込まれるデータはCASコマンド63と同時にドライブされる必要がある。
正しくMCをプログラミングするアルゴリズムを設計するには、SDRAMのようなメモリデバイスの物理的動作に関連した種々の時間遅延及び時間制約(アナログ型時間要素)を規定する必要がある。
表1はSDRAMの例示的な仕様である。記載したパラメータの全てがこのアルゴリズム開発のため必要というわけではない。
Figure 0003833613
MCとSDRAMとの正しく且つ最適なI/O動作に要求されるMC用のプログラマブルパラメータを規定する必要がある。表2はMCにおける関連する17個のプログラマブルパラメータを記載し説明している。リフレッシュ制御パラメータ及びSDRAM初期化パラメータなどの他のプログラマブルパラメータは記載していない。これらのタイミングパラメータはメモリ読出し、メモリ書込み、同じバンクアクセス、異なるバンクアクセスなどのI/O動作に必要である。
Figure 0003833613
表3はMCプログラミングパラメータを計算するための所要のシステム入力パラメータを記載している。10個の重要なパラメータを記載し説明している。これらのシステムパラメータは設計方法に対する入力として必要である。この表は例示的な開発プロセスを説明している。
Figure 0003833613
表2で説明した設計開発のための設計パラメータを評価する際、種々の設計入力パラメータを特徴付け、評価することが必要である。いくつかの時間遅延要素は信号伝搬遅延から生じる。電気信号は集積回路内の有限の距離を伝わるために有限の時間量がかかる。プロセッサクロック速度が増すと、これらの時間遅延要素がより重要になる。伝搬遅延がプロセッサクロック周期の相当な割合になると、MC及びSDRAMに関わる、正しく且つ信頼性のあるI/Oタイミング設計を通して伝搬遅延を評価する必要がある。これらの時間遅延要素はコンピュータハードウエアの物理的なレイアウトに依存するアナログ型である。
図4はMCとSDRAMとの間のアナログ遅延を示す。6個の信号波形がプロット80に示され、MC及びSDRAM I/Oピンの両方における信号を表す。上の3個の信号81、85、及び89は図2のMC I/Oピンにおける信号グループに対応する。下の3個の信号83、87、及び91は図2のSDRAM I/Oピンにおける信号グループに対応する。クロック信号81及び83はMCからSDRAMへの一方向である。コマンドバス信号85及び87はMCからSDRAMへの一方向である。データバス信号89及び91はMCとSDRAMとの間の双方向である
アナログclock_delay93はMCからSDRAMへのクロック信号の遅延である。clock_delayはシステム入力パラメータ(表3)として供給されたclock_delay_minとclock_delay_maxとの範囲内で変わる。下記の関係が成り立つ:
Figure 0003833613
アナログcmd_delay103はMCからSDRAMまでのコマンドバス信号の遅延である。cmd_delayはシステム入力パラメータ(表3)としてのcmd_delay_minとcmd_delay_maxとの範囲内で変わる。下記の関係が成り立つ:
Figure 0003833613
アナログsdram_mc_data_delay109は読出し動作に対するSDRAMからMCまでのデータ遅延である。sdram_mc_data_delayはシステム入力パラメータ(表3)として供給されたsdram_mc_data_delay_minとsdram_mc_data_delay_maxとの範囲内で変わる。この遅延に対して下記の関係が成り立つ:
Figure 0003833613
アナログmc_sdram_data_delay113は書込み動作に対するMCからSDRAMまでのデータ遅延である。mc_sdram_data_delayはシステム入力パラメータ(表3)として供給されたmc_sdram_data_delay_minとmc_sdram_data_delay_maxとの範囲内で変わる。この遅延に対して下記の関係が成り立つ:
Figure 0003833613
MCはコマンド及びデータがMC及び/又はSDRAMにおいて正しくサンプリングされることを保証する必要がある。コマンドはSDRAM規格で与えられたセットアップ時間119及びホールド時間121を満たさなければならない。図4に示すように、読出し動作の場合、MCは遅延108でサンプリングし、セットアップ時間104及びホールド時間106でデータを取得し、MC I/O規格を満たすように内部的にプログラミングされる必要がある。前に注記したように、MCにおけるデータ107はSDRAMにおけるデータ105と同じであり、時間遅延109で到達している。書込み動作の場合、MCは、データ111がSDRAM規格を満たすセットアップ時間112及びホールド時間114でSDRAMにおいてサンプリングされるように制御する必要がある。
さまざまなシステム設計に対して適切な時刻に上記セットアップ時間及びホールド時間を満たすため、MCはプログラマブルでなければならない。表2で説明したプログラマブルパラメータは正しい量により然るべき時間遅延を補正し、MCからSDRAMへのI/O動作における最良のタイミング及び性能を達成する。
図5はMCのクロック及びコマンドプログラミング200を描写する。それは図4で論じたような伝搬経路遅延によるアナログ遅延を含まない。マイクロプロセッサ内にあるMCは、CPUクロック解像度でのクロック201の遅延(clk_dly)205だけ遅延したバージョン203を生成することができる。CPUクロック解像度でのこのプログラマブルデジタル遅延205により、MC出力においてコマンド信号206における対応するプログラミングされた遅延213が作りだされる。
内部的に、MCは、常にクロックと同期し且つSDRAMクロック解像度を有するベース信号を有する。SDRAMクロックレートはCPU(マイクロプロセッサ)クロックレートより低い(通常は15分の1乃至4分の1)。なお、MCはSDRAM入力クロック207においてSDRAMクロック解像度でプログラマブル遅延(cmd_dly)209を有するコマンドを生成でき、その遅延はSDRAMで入力されるコマンド信号215における対応するプログラミングされた遅延217となる。したがって、CPUクロック解像度でclk_dly205を、またSDRAMクロック解像度でcmd_dly209をプログラミングし、且つ、図4に示したアナログ遅延clock_delay及びcmd_delayを考慮することにより(図5には含まれない)、SDRAMへのコマンドはSDRAMクロック207の立ち上がりエッジ219においてサンプリングされることになる。tSSをSDRAM規格で規定されたセットアップ時間とし、tSHを同規格で規定されたホールド時間とし、clkrを、プロセッサに対するSDRAMクロック周期比と同じであるプロセッサとSDRAMとのクロック周波数比とする。セットアップ時間に対して、下記の関係が成り立つ:
Figure 0003833613
また、ホールド時間に対して、下記の関係が成り立つ:
Figure 0003833613
ここでNは両方の不等式を満たす整数である。プログラマブル遅延clk_dly及びcmd_dlyは範囲{0,1,...,clkr−1}において離散的単位で作り出す必要がある。clk_dly及びcmd_dlyに対する適法な設定を得るには下記のステップを実行する必要がある:
(i) cmd_dly={0,1,...,clkr−1}を設定する。
(ii) clk_dlyを0からclkr−1まで変化させる。
(iii) 書込みセットアップ時間について以下で導出される(数19)のwr_psh_dly(プロセッサクロック単位での書込みデータアウトをプッシュするためのウエイト時間)に関わる関係に上記値を代入し、アイドルレイテンシに関して可能な最良の性能を得る。選択した現在のcmd_dly及びclk_dly値の有効性をチェックする。有効な設定は上記3つのステップの繰り返しに基づいて得ることができる。
次に、読出し動作に関わる正しいMCプログラマブルパラメータを生成するために、読出し動作について考える。この目的のため、図6のSDRAM読出しタイミング図300を考える。この図は最近の実際のCPU:UltraSPARC−IIIのSDRAM読出しタイミングの簡素化したバージョンである。
第1信号301はプロセッサ内部クロックである。第2信号303はMC内部ベースSDRAMクロックである。SDRAMクロック周期は常にプロセッサクロック周期の倍数である。第3信号ライン305はMC I/OピンにおけるSDRAMクロックを表す。それは内部SDRAMクロックベースに対してプログラマブル遅延(clk_dly)307を有する。第4信号309はSDRAMコマンド同期信号である。SDRAMコマンドはすべてこの信号に同期する必要がある。それは内部SDRAMクロックベースに対してプログラマブル遅延(cmd_dly)311を有する。第5信号315はMC I/OピンにおけるMCUコマンド出力を表す。コマンドバス上の3つのコマンドはRASコマンド317と、CASコマンド319と、CKE DISデアサーションコマンド321とである。CKEをデアサーションすると、データの有効性は1つのSDRAMサイクルだけ延長される。第6信号327はデータサンプリング信号である.メモリ読出しデータは、SDRAM内部ベースクロック303に対してrd_smp_dly329でMCにサンプリングされる。第7信号333は、時間遅延(sdram_mc_data_dly)341後にMC I/Oピンに到達するSDRAMデータ339である。データ信号の白抜き部分は有効部を表す。それはMC読出しデータセットアップ時間335とMC読出しデータホールド時間337とからなる。第8信号339は、SDRAM I/Oピンから送り出されるSDRAMデータである。第9信号347は、時間遅延(cmd_dly)355後にSDRAM I/Oピンに到達するSDRAMコマンド信号である。第10信号367は時間遅延(clk_dly)351後にSDRAMピンに到達するSDRAMクロックである。時間(clkr x rd_rd_dly)369の期間中、新しい読出しCASがなく、時間(clkr x rd_wr_dly)371の期間中、新しい書込みCASがない。図6でマークされた遅延、セット時間及びホールド時間は既に表2及び3で説明されている。
読出し動作の場合、下記のパラメータが計算されるものとする:
act_rd_dly(読出しコマンドRASからCASまでの遅延);
rd−wait(読出しデータ有効部の期間延長);
rd_smp_dly(読出しデータをサンプリングするまでのウエイト)。
読出しコマンド動作の場合、下記の関係を満足しなければならない:
Figure 0003833613
したがって、
Figure 0003833613
とする。
act_rd_dlyは可能な最小の適法な設定であるので、(数8)のact_rd_dlyは読出しアイドルレイテンシに関して可能な最良の性能を与える。
読出しセットアップ時間の場合、下記の関係を満足しなければならない:
Figure 0003833613
また、読出しホールド時間の場合、下記の関係を満足しなければならない:
Figure 0003833613
与えられた正数X及びYに対して、剰余(Reminder)関数は、Rが下記を満たす正数であるように定義される:
Figure 0003833613
ここでPは整数で、且つ0<R<Yである。Rを以下のように表す:
Figure 0003833613
よって、以下のようにして:
Figure 0003833613
この結果、以下のようになる。
Figure 0003833613
論理回路は過去の性能を制御できないので、RD_WAITは正数として維持される必要がある。したがって、
Figure 0003833613
Figure 0003833613
書込みパラメータの設定は同様な形で得ることができる。
図7はSDRAM書込みタイミング図の簡略化したバージョン400である(実際のCPU、UltraSPARC−IIIで使用されている)。第1信号401はプロセッサ内部クロックである。第2信号403はMC内部ベースSDRAMクロックである。SDRAMクロック周期は常にプロセッサクロック周期の倍数である。第3信号ライン405はMC I/OピンにおけるSDRAMクロックを表す。それは内部SDRAMクロックベースに対してプログラマブル遅延407を有する。第4信号409はSDRAMコマンド同期信号である。SDRAMコマンドはすべてこの信号に同期する必要がある。それは内部SDRAMクロックベースに対してプログラマブル遅延(cmd_dly)411を有する。第5信号415はMC I/OピンにおけるMCUコマンド出力を表す。コマンドバス上に2つのコマンドがある。それらのコマンドはRASコマンド417と、CASコマンド419である。第6信号425はデータドライブ信号である.メモリ読出しデータはSDRAM内部ベースクロックに対してwr_psh_dly427でMCから送り出されることになる。第7信号429は、MC I/OピンにおけるSDRAMデータアウトである。第8信号433は、時間遅延(mc_sdram_data_dly)437後にSDRAM I/Oピンに到達するSDRAMデータである。第9信号439は、伝搬経路時間遅延(clock_delay)443後にSDRAMピンに到達するSDRAMクロックである。第10信号445は伝搬経路時間遅延(cmd_delay)451後にSDRAM I/Oピンに到達するSDRAMコマンド信号である。図でマークされた遅延、セット時間及びホールド時間は既に表2及び3で説明されている。
メモリWRITE動作は下記のパラメータにより制御される:
act_wr_dly(書込みコマンドRASからCASまでの遅延);
wr_msel_dly;
wrdata_thld(書込みデータの有効部の期間延長)。
Figure 0003833613
したがって、
Figure 0003833613
act_wr_dlyは可能な最小の適法な設定であるので、数18のact_wr_dlyはアイドルレイテンシに関して可能な最良の性能を与える。書込みセットアップ時間の場合、下記の関係を満足しなければならない:
Figure 0003833613
ホールド時間:
Figure 0003833613
よって、以下のようにして、
Figure 0003833613
この結果、以下のようになる。
Figure 0003833613
次に、コンフリクトを避けるプログラマブルパラメータを考える。
同じバンクアクセスの場合、下記のパラメータが重要である:
rd_cycl_dly(読出しコマンドの発行後の行プリチャージ時間tRPのためのウエイト);
wr_cycl_dly(書込みコマンドの発行後の行プリチャージ時間tRPのためのウエイト);
auto_rfr_cycle(オートリフレッシュの終了のためのウエイト)。
バンクアクセスの場合、下記のようになる:
Figure 0003833613
Figure 0003833613
Figure 0003833613
したがって、
Figure 0003833613
Figure 0003833613
Figure 0003833613
異なるバンクアクセスの場合:
rd_rd_dly(現在の読出し後他のバンクに許可される読出しに対する遅延)
rd_wr_dly(現在の読出し後他のバンクに許可される書込みに対する遅延)
wr_rd_dly(現在の書込み後他のバンクに許可される読出しに対する遅延)
wr_wr_dly(現在の書込み後他のバンクに許可される書込みに対する遅延)
下記の数式は、読出し及び書込み動作中にデータバスを使用するための開始点と終了点を計算する:
Figure 0003833613
Figure 0003833613
Figure 0003833613
Figure 0003833613
したがって、
Figure 0003833613
Figure 0003833613
Figure 0003833613
Figure 0003833613
Figure 0003833613
上記導出において、MCに対する最良のアイドルレイテンシを達成する適法な設定は数学的に得られる。その時、全ての適法な設定はピーク帯域幅性能についてチェックされる。メモリシステム性能は読出し帯域幅及び書込み帯域幅に関して測定され、バイト/秒で表される。帯域幅はメモリから(読出し)又はメモリへ(書込み)のデータ転送のレートを表す。ピーク帯域幅性能により、上記式により得られた全ての適法な設定の中から最良の設定が最終的に決まる。
単一バンクの場合:
Figure 0003833613
Figure 0003833613
1つのDIMMセット上に2つのバンク:
Figure 0003833613
Figure 0003833613
2つのDIMMセット上に2つのバンク:
Figure 0003833613
Figure 0003833613
2つのDIMMセット上に4つのバンク:
Figure 0003833613
Figure 0003833613
3つのペアの不等式から、下記のマージンを計算できる:
コマンドセットアップマージン:
Figure 0003833613
ホールド時間の場合:
Figure 0003833613
MCデータセットアップマージン:
Figure 0003833613
MCデータホールドマージン:
Figure 0003833613
SDRAMセットアップマージン:
Figure 0003833613
SDRAMホールドマージン:
Figure 0003833613
これらのマージン性能数値により最良の設定を容易に得ることができる。
今、MCプログラミング方法を実行できる準備が完了した。MCプログラマブルパラメータ計算のためのフローチャート500を図8で説明する。第1のステップ501は、表1のSDRAMパラメータと、表3のシステムパラメータと、時間周期比パラメータclkrとを含む全ての入力の初期化である。次のステップ503は表3で説明した全ての適法な設定の記憶と、プログラマブル時間遅延clk_dly及びcmd_dlyの計算とを含む。第3のステップ505において、clk_dlyとcmd_dlyとの各ペアに対して、パラメータrd_smp_dly、rd_act_dly、rd_wait、wr_psh_dly、wr_act_dly及びwr_thldを計算する。これらの計算したパラメータに基づいて、パラメータrd_cycle_dly、wr_cycle_dly、auto_rfr_cycle、rd_rd_dly、wr_wr_dly、rd_wr_dly及びwr_rd_dlyを計算する。計算したパラメータはすべて記憶される。
最終ステップ507において、clk_dlyとcmd_dlyとの各ペアに対して、メモリ帯域幅性能とマージンとが上記式から計算される。その後、最良の性能及び最良のマージンを与えるパラメータのセットを選択する。
本発明を限られた数の実施形態により説明したが、当業者はここに開示された本発明の範囲から逸脱しない他の実施形態が考えられることを理解するであろう。従って、本発明の範囲は添付の特許請求の範囲によってのみ限定されるべきである。
外部メモリコントローラ及びメモリ(SDRAM)と相互接続したプロセッサを示すコンピュータシステムの概略図である。 メモリ(SDRAM)と接続した内部メモリコントローラ付きプロセッサを示すコンピュータシステムの概略図である。 メモリコントローラによるSDRAMへのアクセスを説明するブロック図である。 SDRAM読出し及び書込み動作を説明するタイミング図である。 種々のコンピュータ信号のアナログ遅延を描写するタイミング図である。 クロック及びコマンド信号プログラミングを示すタイミング図である。 SDRAM読出し動作を説明するタイミング図である。 SDRAM書込み動作を説明するタイミング図である。 本発明の一実施形態による、メモリコントローラをプログラミングするためのタイミングパラメータ計算を説明する算法フローチャートである。
符号の説明
11、21:プロセッサ、15、23、31:メモリコントローラ(MC)、19、27:外部メモリ、33:SDRAM、35、41、201、203、207:クロック信号、37:コマンドバス、39:データバス、43、206、211、215:コマンド信号、45:データ信号、47、49、51、53、55:立ち上がりエッジ、57、61:RAS、59、63:CAS、65:最小セットアップ時間、67:最小ホールド時間、105、107:読出しデータ、71、111:書込みデータ、81、83:クロック信号、85、87:コマンドバス信号、89、91:データバス信号、93:アナログclock_delay、103:アナログcmd_delay、104、112、119、335:セットアップ時間、106、114、121、337:ホールド時間、108:遅延、109:アナログsdram_cm_data_delay、113:アナログmc_sdram_data_delay、205、307、351:遅延(clk_dly)、209、311、355、411:遅延(cmd_dly)、213、217:プログラミングされた遅延、219:立ち上がりエッジ、301、401:プロセッサクロック、303、403:SDRAMベースクロック、305、405:SDRAMクロックアウト、309、409:コマンド同期、315、415:コマンドアウト、317、417:RASコマンド、319、419:CASコマンド、321:CKE DISデアサーションコマンド、327:MCデータサンプル、329:遅延(rd_smp_dly)、333:MCデータ、339:SDRAMデータ、341:遅延(sdram_mc_data_dly)、347:SDRAMにおけるコマンド、367:SDRAMにおけるクロック、369:遅延(clkr x rd_dly)、371:遅延(clkr x wr_dly)、407:プログラマブル遅延、425:データプッシュ、427:遅延(wr_psh_dly)、429:MCデータアウト、433:SDRAMイン、437:遅延(mc_sdram_data_dly)、439:SDRAMクロックイン、443:伝搬経路時間遅延(clock_delay)、445:SDRAMコマンド、451:伝搬経路時間遅延(cmd_delay)

Claims (6)

  1. メモリユニットのコントローラをプログラミングする方法であって、
    複数の初期化パラメータを前記コントローラに入力するステップと、
    前記複数の初期化パラメータに基づく計算により、コントローラのベースクロック信号に対する外部メモリクロック信号の遅延であるクロック遅延と、コントローラのベースクロック信号に対するコマンド信号の遅延であるコマンド遅延とのペアを複数導出するステップと、
    クロック遅延とコマンド遅延との各ペアに対して読出しコマンドパラメータのセットを計算するステップと、
    クロック遅延とコマンド遅延との各ペアに対して書込みコマンドパラメータのセットを計算するステップと、
    前記読出しコマンドパラメータ及び前記書込みコマンドパラメータを用いて、クロック遅延とコマンド遅延との各ペアに対して、帯域幅性能とタイミングマージン性能とを含むシステム性能を計算するステップと、
    前記クロック遅延と前記コマンド遅延の前記複数のペアの中から、最適な前記システム性能を提供するペアを選択するステップと、
    を含む方法。
  2. 前記複数の初期化パラメータが、
    システムパラメータと、
    SDRAMユニットのデバイスパラメータと、
    システムクロックとSDRAMユニットクロックとの時間周期比と、
    を備える、請求項1記載の方法。
  3. 前記読出しコマンドパラメータのセットが、
    読出しサンプル遅延と、
    RASからCASまでの遅延と、
    読出しデータ有効部の期間延長遅延と、
    プリチャージ遅延と、
    オートリフレッシュ遅延と、
    現在のコマンドの後の他のバンクに対する遅延と、
    を備える、請求項1記載の方法。
  4. 前記書込みコマンドパラメータのセットが、
    プッシュ遅延と、
    RASからCASまでの遅延と、
    書込みデータ有効部の期間延長遅延と、
    プリチャージ遅延と、
    オートリフレッシュ遅延と、
    現在のコマンドの後の他のバンクに対する遅延と、
    を備える、請求項1記載の方法。
  5. 前記メモリユニットが単一のマイクロプロセッサからのアクセスをサポートする、請求項1記載の方法。
  6. 前記メモリユニットが複数のマイクロプロセッサからのアクセスをサポートする、請求項1記載の方法。
JP2002556378A 2001-01-12 2001-12-21 高性能マイクロプロセッサのメモリコントローラ・プログラミング方法 Expired - Lifetime JP3833613B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/759,480 US6553472B2 (en) 2001-01-12 2001-01-12 Method for programming clock delays, command delays, read command parameter delays, and write command parameter delays of a memory controller in a high performance microprocessor
PCT/US2001/049857 WO2002056188A2 (en) 2001-01-12 2001-12-21 Method for programming memory controller in a high performance microprocessor

Publications (2)

Publication Number Publication Date
JP2004527819A JP2004527819A (ja) 2004-09-09
JP3833613B2 true JP3833613B2 (ja) 2006-10-18

Family

ID=25055804

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002556378A Expired - Lifetime JP3833613B2 (ja) 2001-01-12 2001-12-21 高性能マイクロプロセッサのメモリコントローラ・プログラミング方法

Country Status (7)

Country Link
US (1) US6553472B2 (ja)
EP (1) EP1356468B1 (ja)
JP (1) JP3833613B2 (ja)
KR (1) KR100549794B1 (ja)
AU (1) AU2002234084A1 (ja)
DE (1) DE60112125T2 (ja)
WO (1) WO2002056188A2 (ja)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067594A (en) * 1997-09-26 2000-05-23 Rambus, Inc. High frequency bus system
US6839393B1 (en) * 1999-07-14 2005-01-04 Rambus Inc. Apparatus and method for controlling a master/slave system via master device synchronization
DE19945004A1 (de) * 1999-09-20 2001-03-22 Micronas Gmbh Speichersteuerung zum Durchführen von Schaltbefehlen
US6643787B1 (en) * 1999-10-19 2003-11-04 Rambus Inc. Bus system optimization
US6646953B1 (en) * 2000-07-06 2003-11-11 Rambus Inc. Single-clock, strobeless signaling system
JP4722305B2 (ja) * 2001-02-27 2011-07-13 富士通セミコンダクター株式会社 メモリシステム
US6675272B2 (en) 2001-04-24 2004-01-06 Rambus Inc. Method and apparatus for coordinating memory operations among diversely-located memory components
US8391039B2 (en) * 2001-04-24 2013-03-05 Rambus Inc. Memory module with termination component
US6779096B1 (en) * 2001-09-29 2004-08-17 Apple Computer, Inc. Method and apparatus for a calibrated variable phase offset timing between synchronous clock subdomains
DE60237301D1 (de) 2001-10-22 2010-09-23 Rambus Inc Phaseneinstellvorrichtung und verfahren für ein speicherbaustein-signalisierungssystem
TWI273605B (en) * 2001-11-20 2007-02-11 Via Tech Inc Programmable memory controller and operation method thereof
US7304897B2 (en) * 2002-04-02 2007-12-04 Via Technologies, Inc. Method and system for reading data from a memory
US20040003194A1 (en) * 2002-06-26 2004-01-01 Amit Bodas Method and apparatus for adjusting DRAM signal timings
US6711091B1 (en) * 2002-09-27 2004-03-23 Infineon Technologies Ag Indication of the system operation frequency to a DRAM during power-up
US7096349B1 (en) * 2002-12-16 2006-08-22 Advanced Micro Devices, Inc. Firmware algorithm for initializing memory modules for optimum performance
US7155579B1 (en) * 2002-12-27 2006-12-26 Unisys Corporation Memory controller having programmable initialization sequence
US7149841B2 (en) * 2003-03-31 2006-12-12 Micron Technology, Inc. Memory devices with buffered command address bus
US7234099B2 (en) * 2003-04-14 2007-06-19 International Business Machines Corporation High reliability memory module with a fault tolerant address and command bus
US6940768B2 (en) * 2003-11-04 2005-09-06 Agere Systems Inc. Programmable data strobe offset with DLL for double data rate (DDR) RAM memory
US7065666B2 (en) * 2003-11-13 2006-06-20 Micron Technology, Inc. Apparatus and method for generating a delayed clock signal
US7646835B1 (en) * 2003-11-17 2010-01-12 Rozas Guillermo J Method and system for automatically calibrating intra-cycle timing relationships for sampling signals for an integrated circuit device
KR100585136B1 (ko) * 2004-03-04 2006-05-30 삼성전자주식회사 메모리 시스템의 데이터 채널 초기화 방법
US7301831B2 (en) 2004-09-15 2007-11-27 Rambus Inc. Memory systems with variable delays for write data signals
US7383360B2 (en) 2004-11-16 2008-06-03 Mediatek, Inc. Electronic data storage system divides command requiring data transfer into subcommands, in accordance with performance of devices
CN100373404C (zh) * 2005-09-13 2008-03-05 北京中星微电子有限公司 一种初始化存储卡的方法
WO2008070803A1 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for managing data from a requesting device with an empty data token directive
JP5034916B2 (ja) * 2007-12-10 2012-09-26 富士通セミコンダクター株式会社 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
US8819474B2 (en) * 2009-04-03 2014-08-26 Intel Corporation Active training of memory command timing
US8289801B2 (en) 2009-09-09 2012-10-16 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US8984216B2 (en) * 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US8819328B2 (en) 2010-12-30 2014-08-26 Sandisk Technologies Inc. Controller and method for performing background operations
US9733855B1 (en) * 2013-01-04 2017-08-15 Altera Corporation System and methods for adjusting memory command placement
CN105612493A (zh) * 2013-09-30 2016-05-25 慧与发展有限责任合伙企业 编程存储器控制器以允许执行主动式存储器操作
US10126968B2 (en) * 2015-09-24 2018-11-13 International Business Machines Corporation Efficient configuration of memory components
US10719237B2 (en) 2016-01-11 2020-07-21 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple partitions of a non-volatile memory
RU2731321C2 (ru) 2018-09-14 2020-09-01 Общество С Ограниченной Ответственностью "Яндекс" Способ определения потенциальной неисправности запоминающего устройства
RU2718215C2 (ru) 2018-09-14 2020-03-31 Общество С Ограниченной Ответственностью "Яндекс" Система обработки данных и способ обнаружения затора в системе обработки данных
RU2721235C2 (ru) 2018-10-09 2020-05-18 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для маршрутизации и выполнения транзакций
RU2714602C1 (ru) 2018-10-09 2020-02-18 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки данных
RU2711348C1 (ru) 2018-10-15 2020-01-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки запросов в распределенной базе данных
RU2714373C1 (ru) 2018-12-13 2020-02-14 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования выполнения операций ввода/вывода
RU2749649C2 (ru) 2018-12-21 2021-06-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования обработки операций ввода/вывода
RU2720951C1 (ru) 2018-12-29 2020-05-15 Общество С Ограниченной Ответственностью "Яндекс" Способ и распределенная компьютерная система для обработки данных
RU2746042C1 (ru) 2019-02-06 2021-04-06 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для передачи сообщения

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692165A (en) * 1995-09-12 1997-11-25 Micron Electronics Inc. Memory controller with low skew control signal
US5923611A (en) * 1996-12-20 1999-07-13 Micron Technology, Inc. Memory having a plurality of external clock signal inputs
EP0855653B1 (en) 1997-01-23 2004-10-06 Hewlett-Packard Company, A Delaware Corporation Memory controller with a programmable strobe delay
JP3929116B2 (ja) * 1997-07-04 2007-06-13 富士通株式会社 メモリサブシステム
US6292903B1 (en) * 1997-07-09 2001-09-18 International Business Machines Corporation Smart memory interface
US6073223A (en) * 1997-07-21 2000-06-06 Hewlett-Packard Company Memory controller and method for intermittently activating and idling a clock signal for a synchronous memory
US5917761A (en) * 1997-11-06 1999-06-29 Motorola Inc. Synchronous memory interface
JP4206508B2 (ja) * 1997-12-04 2009-01-14 ブラザー工業株式会社 信号制御回路
US6438670B1 (en) * 1998-10-02 2002-08-20 International Business Machines Corporation Memory controller with programmable delay counter for tuning performance based on timing parameter of controlled memory storage device
US6137734A (en) * 1999-03-30 2000-10-24 Lsi Logic Corporation Computer memory interface having a memory controller that automatically adjusts the timing of memory interface signals
US6370067B1 (en) * 2001-01-25 2002-04-09 Ishoni Networks, Inc. Automatic configuration of delay parameters in a dynamic memory controller

Also Published As

Publication number Publication date
JP2004527819A (ja) 2004-09-09
KR100549794B1 (ko) 2006-02-08
EP1356468B1 (en) 2005-07-20
US6553472B2 (en) 2003-04-22
US20020138686A1 (en) 2002-09-26
KR20030081385A (ko) 2003-10-17
DE60112125D1 (de) 2005-08-25
WO2002056188A2 (en) 2002-07-18
AU2002234084A1 (en) 2002-07-24
EP1356468A2 (en) 2003-10-29
DE60112125T2 (de) 2006-05-24
WO2002056188A3 (en) 2003-01-16

Similar Documents

Publication Publication Date Title
JP3833613B2 (ja) 高性能マイクロプロセッサのメモリコントローラ・プログラミング方法
US7443741B2 (en) DQS strobe centering (data eye training) method
US6466491B2 (en) Memory system and memory controller with reliable data latch operation
EP2852898B1 (en) Method and apparatus for memory access delay training
US6646929B1 (en) Methods and structure for read data synchronization with minimal latency
TWI430105B (zh) 用於記憶體命令時序的主動訓練之系統,方法,及裝置
JP6741585B2 (ja) プログラム可能な遅延を用いてダイナミックランダムアクセスメモリ(dram)コマンドを生成するメモリ物理レイヤインタフェースロジック
JP5577776B2 (ja) メモリ制御装置及びマスクタイミング制御方法
KR100503850B1 (ko) 기록 회복 시간을 입력 클럭의 함수로 설정하기 위한프로그래밍 매커니즘을 포함하는 클럭 메모리 디바이스
JPH10199239A (ja) 半導体記憶装置システム及び半導体記憶装置
JP2007109203A (ja) 半導体集積回路装置
US8422319B2 (en) System and method for gate training in a memory system
CN108009372B (zh) 一种ddr内存虚拟写电平校准响应的方法
JP2009163758A (ja) クロックの異なるバス間におけるデータ転送
US7796465B2 (en) Write leveling of memory units designed to receive access requests in a sequential chained topology
EP1510930A2 (en) Memory interface system and method
US7398412B2 (en) Measure controlled delay with duty cycle control
US7493461B1 (en) Dynamic phase alignment for resynchronization of captured data
CN1933015A (zh) 半导体集成电路器件
JP2003228549A (ja) バスブリッジ回路のアクセス制御方法及び装置
US20130159615A1 (en) Ddr receiver enable cycle training
Plessas et al. Advanced calibration techniques for high-speed source–synchronous interfaces
JP2006164119A (ja) データ処理装置
JPH06250972A (ja) マイクロプロセッサ
KR20050039236A (ko) 라스 액티브 레이턴시 기능 수행 회로, 그것에 관한 방법,및 그 회로를 포함하는 동기식 반도체 메모리 장치

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050906

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060331

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060407

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060607

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060627

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060719

R150 Certificate of patent or registration of utility model

Ref document number: 3833613

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090728

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100728

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110728

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110728

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120728

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120728

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130728

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term