JP3641675B2 - 分割バッファアーキテクチュア - Google Patents

分割バッファアーキテクチュア Download PDF

Info

Publication number
JP3641675B2
JP3641675B2 JP50209597A JP50209597A JP3641675B2 JP 3641675 B2 JP3641675 B2 JP 3641675B2 JP 50209597 A JP50209597 A JP 50209597A JP 50209597 A JP50209597 A JP 50209597A JP 3641675 B2 JP3641675 B2 JP 3641675B2
Authority
JP
Japan
Prior art keywords
buffer
memory
buffers
small
pointer
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 - Fee Related
Application number
JP50209597A
Other languages
English (en)
Other versions
JPH11507749A (ja
Inventor
リカード,ウエィン
フィアコ,ピーター
チャウ,ヴィ
Original Assignee
エミュレックス デザイン アンド マニュファクチャリング コーポレーション
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 エミュレックス デザイン アンド マニュファクチャリング コーポレーション filed Critical エミュレックス デザイン アンド マニュファクチャリング コーポレーション
Publication of JPH11507749A publication Critical patent/JPH11507749A/ja
Application granted granted Critical
Publication of JP3641675B2 publication Critical patent/JP3641675B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/064Linked list, i.e. structure using pointers, e.g. allowing non-contiguous address segments in one logical buffer or dynamic buffer space allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

発明の背景
1. 産業上の利用分野
本発明はメモリの区分化に関するものであり、さらに詳細には、プロトコルの送受信に使用するためのメモリのバッファ対への区分化に関するものである。
2. 関連技術の説明
コンピュータシステムは多くの場合、システムの通信コンポ−ネント間に設置されたメモリを含んでいる。このメモリは、送信、受信、またはコンポ−ネントの処理速度における差を補正する。メモリがデータを記憶するため、速度の遅いコンポ−ネントを圧倒することなく、また速度の早いコンポ−ネントを他のタスクに使用することができる。さらに、メモリは適切な受信コンポ−ネントにデータを送るスイッチボードの役割を果たす。各送信コンポ−ネントはメモリ内にメッセージを設置することができるため、メモリの制御回路がメッセージ内のアドレスヘッダを読出し、どのコンポ−ネントがメッセージを受信するかを決定することができる。
多くの場合メモリは、コンポ−ネント間のデータ転送を容易にするためにブロックまたはバッファに区分化される。区分化の主な利点は、各バッファがメッセージを1つ(または1つの一部)だけ含み、これがメモリ制御プログラムの速度を加速させる。さらに、多くの通信プロトコルにおいて、各メッセージはフレームサイズと呼ばれる最大の長さを有している。バッファのサイズをこのフレームのサイズと等しくすることにより各メッセージがバッファを1つだけ使用し、さらに速度の増加が可能になる。
メモリをバッファに区分化する従来の方法は、ブロックを等しいサイズの複数のバッファに分割するものであった。バッファの数とサイズの数は一般に2の累乗である。例えば、32キロバイトのメモリブロックを16キロバイトのブロック要素の2つのバッファ、8キロバイトのブロック要素の4つのバッファ、4キロバイトのブロック要素の8つのバッファ等に区分化することができる。各バッファはコンピュータシステムのコンポ−ネント間の転送のためのデータユニットを一時的に保持するために使用される。
転送されたデータブロックの一般的なサイズがブロック要素よりも僅かに大きいだけで、データ転送におけるメモリの使用上の問題が起きてしまう。例えば、各バッファが2048バイトであり、一般の転送が2072バイトである場合、第2バッファにさらに24バイトを追加する必要がある。また、ブロック要素は2つの要素により4096バイトに増加することができる。どちらの場合においても、使用可能なメモリの重要部分が無駄にされている。
この非効率的なメモリ使用上の問題は、データへの制御情報の追加のためにデータ転送システムにおいては一般的である。第1図および第2図に示すように、通常データはパケット30でコンピュータシステム10のコンポ−ネント間で転送される。コンピュータシステム10は典型的には、コンピュータ、プリンタ、サーバといった、ローカルエリアネットワーク15によってリンクしているノード12を含んでいる。ローカルエリアネットワーク(LAN)15は、それ自体ワイドエリアネットワーク(WAN)17によってリンクされていても良い。さらに、各コンピュータ20は、通信リンク25を介してディスクドライブまたは他の周辺コンポ−ネントのような装置22に接続されている。通信リンク25は、SCSIまたは周辺コンポ−ネント相互結合(PCI)といった類似するインターフェースであることができる。各装置22は、バスインターフェースユニット(BIU)27によって、通信リンク25に接続される。
典型的なパケット30はデータ部分32、ヘッダ34、トレーラ36を含んでいる。ヘッダ34はデータ32の発信元と宛先を識別し、また他の制御情報を含むことができる。特定のデータ転送のエンドポイント(即ち、発信元と宛先)は、効率的なメモリ記憶を確実にするために効率的なブロック要素を使用する傾向がある。パケット30がコンピュータシステム10内に転送される度に、追加情報がヘッダ34に追加される。
データパケット30がデータ転送のエンドポイント間のバッファ内に記憶される際に、3つの問題がある。第1の問題は、ヘッダ34がデータ32に追加されるため、パケット全体が効率的で統括的なブロック要素を有することができないことである。そのため、上述したメモリ使用の問題が起こり易い。第2の問題は、バッファからパケットデータの複数のブロックを転送する際に、ヘッダ34にあっていくつかの干渉する制御情報が読飛ばされなければならないことである。このため、直接メモリアクセス(DMA)状態機械が新規のバッファ転送の各々において再び初期化設定される必要がある際等に、非効率を引き起こす。データパケット30が同じリンク25に接続した装置22間で転送されても、あるいはWAN17によって接続されたホスト間で転送されてもバッファの非効率的使用が発生する。
メモリブロックは、データ転送目的のため関連情報を保持するバッファの対に分割される。バッファ間のリンクを確実にし、処理を簡易化するために、1つのアドレスを使用してバッファの対を参照することが望ましい。バッファの対をアドレス指定する一般的な方法としてルックアップテーブルを使用するものであるが、これにはソフトウェアの介入が必要である。別の方法として、バッファNが制御情報を保持し、バッファN+1がデータを保持する、連続アクセスルールを使用するものがあるが、これには同一サイズの2つのバッファが必要である。また別の方法として、1つのバッファ内で制御情報とデータを連結して、制御情報から既知のオフセット位置からデータがスタートするという方法ものがあるが、これには非効率的なオーバーサイズのバッファが必要である。上述した方法のいくつかにおいては、1つのメモリコンポ−ネントの追加がアドレス指定スキームの機器再構成を要するという問題もある。
分割バッファに可変長アドレス指定を割当てる最も単純な方法は、最小構成における2つのバッファセット間にアドレスギャップを設けるものであるため、バッファ対をリンクするハードウェアベースの構造は物理的に別々のメモリを要する。
前述の説明を考慮し、本発明の目的は、データを保持する大バッファと、制御情報を保持する少なくとも1つの関連する小バッファとの分離バッファ対をサポートするメモリを区分化する単純な方法を提供することである。
本発明の別の目的は、そのような分割バッファ対を1つのアドレスでアドレス指定することである。
本発明のさらなる目的は、メモリは、各メモリブロックが第1ブロックと同一の区分を有して可変長であり、また1つのメモリコンポ−ネントの追加によってトータルメモリを容易に増加することができる分割バッファモデルを提供することである。
本発明のさらなる目的は、使用可能な分割バッファを管理する先入れ先出し装置を提供することである。
本発明はこれらの要求を満たすものである。
発明の概要
本発明はメモリを区分化するためのものである。詳細には、メモリは大バッファに分割される。分割された1つまたはそれ以上の大バッファは小バッファに分割される。残りの大バッファの各々は少なくとも1つの小バッファと関連し、関連するバッファは1つのアドレスによってアドレス指定される。
好ましい実施例においては、大バッファと小バッファの数は同じであり、各大バッファは厳密に1つの小バッファと対を成す。
本発明の好ましい実施例の詳細は、添付の図面と後述する説明によって述べられている。本発明の説明を理解すれば、追加の改良および変更が当業者に明らかになるであろう。
【図面の簡単な説明】
第1図は典型的な従来のコンピュータシステムを示すブロック図である。
第2図は、コンピュータシステムのコンポ−ネント間で転送される従来のパケットを示す略図である。
第3図は、フレームバッファ間のデータフロー、状態機械、バスインターフェースユニット、通信リンクを示すブロック図である。
第4図は、本発明によって区分化されたメモリの略図である。
第5図は好ましい区分を示す略図である。
第6図はフリーバッファプールの実現を示すブロック図である。
同じ要素を示す参照番号および名称については、全図面を通して同一のものを使用している。
発明の詳細な説明
本発明を通じ、ここで示す好ましい実施例および例は本発明を限定するものというよりは模範として考慮されるべきである。
第3図は本発明が有利に使用されるシステムの例を示すものである。データパケットが、バスインターフェースユニット(BIU)27といったコンピュータシステムのコンポ−ネントと通信リンクエンコーダ/デコーダ(ENDEC)28といった別のコンポ−ネントとの間で転送される。メモリ45がBIU27とENDEC28との間(即ちこの2つのデータパスにおいて)に設置されており、フレームバッファ40に分割されている。メモリ45はアクセス時間が早く、RAMであることが好ましい。典型的なデータ転送において、データは送信コンポ−ネントからフレームバッファ40へと転送され、次にフレームバッファ40から受信コンポ−ネントへと転送される。このように、メモリ45内のフレームバッファ40は、BIU27とENDEC28間を通過するデータを記憶するための一時的な記憶装置として使用される。
第1図の各リンク25(またはノード20)は、典型的には複数の状態機械を含むマイクロプロセッサを備えており、これは第3図に非常に詳細に示されている。一般に、ソフトウェアまたはハードウェアであるこれらの状態機械は、従来の方法により実現することができる。BIU27がデータを転送する際、状態機械TXBIUSM50がBIU27から転送フレームバッファ47へとデータを転送し、また状態機械TXFSM51が転送フレームバッファ47からENDEC28へとデータを転送する。BIU27がデータを受信すると、状態機械RXQSM53がENDEC28から受信フレームバッファ48へとデータを転送し、また状態機械RXBIUSM54が受信フレームバッファ48からBIU27へとデータを転送する。状態機械FC2エンジン47は転送プロトコル及びより低レベルの状態機械を管理する。
ARMSM56で示されたRISCマイクロプロセッサは、好ましくは語の境界にあるバッファ40の内容にアクセスする。RISCプロセッサARMSM56はホストと本発明システムとの間のインターフェースを管理する。ARMSM56は、制御および初期化の目的で全ての状態機械とバッファRAMにアクセスする一方で、バッファと状態機械との間のデータ転送には直接関係しない。
本発明によるバッファメモリ45の分割を第4図に示す。初期化の最中にメモリ45がブロックアレイ60に区分化される。1つまたはそれ以上のブロック60が、さらにサブブロック65に区分化される。サブブロック65の各々は独立したワード66で構成されている。
ブロック63で示されるように残りのブロック60は分割されない。好ましい実施例において、メモリ45が区分化され、合計n個のサブブロック65とn個のブロック60ができる。このため、各サブブロック65はブロック60の1/nのサイズである(再区分化されたブロック60に等しい数の非関連サブブロック65の過剰数mがあることに注意のこと)。残りのブロック63各々は、サブブロック65の1つと1対1対応に関連させられて、フレームバッファ40を形成する。このように、区分化がn−mフレームバッファ40を生じ、各フレームバッファ40は大バッファ67(残りのブロック63)と小バッファ68(サブブロック65)を含む。
当然、他の区分化も可能である。例えば、ブロック60とサブブロック65の数が等しくなくても良い。例えば、サブブロックの数がブロック60の2倍であっても良く、この場合、各フレームバッファ50は単一の大バッファ67と2つの小バッファ68を含むことができる。しかしながら、好ましい区分化によれば、1つのアドレスによって各フレームバッファ40がアクセスされることができる。
メモリ45は複数のメモリモジュール70を備えていても良い。各メモリモジュール70には、例えば市販の128キロバイトチップを使用することができる。後述の説明にもあるように、メモリ45が区分化されるため、区分化スキームを変更することなくメモリモジュール70を追加することができる。詳細には、各モジュール70が設定された数のブロック60に分割され、各モジュール70内の1つのみのブロック62がさらにサブブロック65に分割される。このように、追加モジュールの各々がそれまでのモジュールと同様の区分を有する。
本発明を実行するための特に好ましい実施例を第5図に示す。各モジュール80は64ブロックに分割される。各ブロックは例えば512 32ビットワードの同サイズであるが、各ブロックのサイズはメモリ45のトータルサイズとモジュールの数に依存することができる。例えば、128キロバイトモジュール80の各々は、mod−512ワード(2048バイト)境界にアドレス指定された64のブロックに分割されることができる。ブロックのメモリロケーションの上段(アッパ−)8アドレスビットを使用してブロックにバッファポインタ(BPTR)を割当てることにより、ブロックがアドレス指定される。
ブロック80のいくつかは、ヘッダブロック82またはED_TOVタイマーエンジンバッファ84として使用するために割当てられる。残りのブロック84は、データ32を記憶するためのペイロードバッファ86としての使用が可能である。好ましくは、各メモリブロック内の第1バッファはフレームヘッダバッファエリア62として使用され、第1メモリブロック内の第2バッファはタイマーエンジンバッファエリア66として使用される。
各ペイロードバッファは512語長(2048バイト)であることが好ましい。各ヘッダブロック82は、小ヘッダバッファ88にさらに分割されてヘッダ34およびトレーラ36からの制御情報を記憶する。ヘッダバッファエリア82は、各々が8語(32バイト)の長さである、64のより小さなバッファ88に分割されることが好ましい。
好ましい実施例において、ブロックの数は、メモリ45のサイズにより合計で64、128、192、256であることができる。モジュール80が4つで合計256のブロックと256のヘッダバッファが存在する。しかしながら、各モジュール80を64よりも少なくまたは多く分割することができる。メモリ45は2の累乗の数のブロックに分割されることが好ましい。これによりペイロードバッファ86およびヘッダバッファ88に、簡単なシフト操作で変更される1つのアドレスによってアクセスできるようになり、複雑なアドレスALUの必要がなくなる。
各大ペイロードバッファ86は対応する小ヘッダバッファ88と関連している。メモリ45が物理的に「分割」されていても、大および小バッファは論理的に結合しており、1つのフレームバッファ40としてアドレス指定されることができる。単にバッファポインタをシフトするだけで、各小バッファ88と大バッファ86のアドレス指定の間の交換が行われる。好ましい実施例において、メモリ45は公称の32ビットアドレスによってアドレス指定可能であるが、各アドレスは好ましい実施例における下位の20ビットしか使用しない(上位の12ビットは固定している)。20ビットの内の上位の8ビットはバッファポインタとして働き、下位の12ビットは大バッファ86のオフセット値として働く(小バッファ88は、下位の12ビットの内3ビットをオフセット値として使用する)
大バッファ86内の第1語は、各ポインタを表現する上位8ビットをペイロードメモリアドレス語の上位8ビットに置き、残りのビットをゼロにすることでアクセス可能である。小バッファ88の第1語は、各大バッファポインタを表現する8ビットの上位2ビットをヘッダメモリアドレス語の最も上位のビット位置に置き、次の6ビットをゼロに設置し、次にポインタの残りの6ビットを、ゼロに設定した6ビットの後に置き、残りのビットをゼロにすることでアクセスが可能である。このように、2ビットをコピーし、次の6ビットを右にシフトするだけで、ヘッダバッファ88のアドレスをペイロードバッファ86から容易に引き出すことができる。このアドレス指定スキームの例を下に示す。
Figure 0003641675
状態機械50−57は、各パケットからヘッダ34およびトレーラ36内の制御状態をストリップし、これを小バッファ88に記憶し、一方で関連データ32を関連する大バッファ82に記憶する。特に、要求状態機械はバッファプールから1つのアドレスポインタを受信することができる。次に状態機械は、従来のプロトコルによって制御情報とペイロードを分け、アドレスによって表示されたペイロードバッファにデータを記憶する。そして状態機械はアドレスを上述した通りに計算し、制御情報をそのアドレスに記憶する。
データ転送プロトコルが固定サイズのペイロード32を送ると、メモリブロック要素がペイロードのサイズと等しく設定されるため、ペイロードがメモリ45に効率的にパックされる。例えばペイロードが2nバイトの場合、各ペイロードバッファのサイズを2nバイトにでき、これはディスクとネットワークトラフィックにとってさらに効率的である。
本発明による好ましいアドレス指定スキームの結果として、メモリのトータルサイズは増加に可変で、好ましくは128キロバイトである。メモリを追加すると、ペイロードバッファ86とヘッダバッファ82の両方がメモリブロック区分の一部として追加される。このように、可変長最小構造バッファシステムは、1つのメモリコンポ−ネントで構成できる。そして、そのシステムは追加メモリモジュールで拡張することができる。
好ましい区分フォーマットを以下に示す表に要約する。
Figure 0003641675
バッファの対は、第6図に示すフリーバッファ制御システム100の使用により管理される。制御システム100は先入れ先出し(FIFO)記憶ユニット110を含む。FIFOユニット110は、使用可能なバッファを表示するバッファポインタ114のリスト112を記憶する。状態機械の1つまたはRISCマイクロプロセッサが送信または受信するデータを有する場合、バッファは、リスト112の最高部からポインタ114aを除き、それを割当てることにより割当てられる。状態機械またはRISCマイクロプロセッサがタスクを完了すると、バッファは解放され、リスト112の最低部にポインタ114bを追加することでバッファプールへと戻される。制御システム100はバッファを浮動プールとして扱い、状態機械またはマイクロプロセッサにバッファがオンデマンドベースで供給され、任意の順位においてプールに戻される。
初期化設定において、フレームバッファ40と対応するポインタはFIFOユニット110内にロードされる。第5図に示す実施例において、ヘッダバッファ88と整合し得るペイロードバッファ86と対応するポインタBPTR2−63、65−127、129−191、及び193−255がFIFOユニット110にロードされる。このようにしてリスト112は合計251のフレームバッファを含む。
第6図において、FIFOユニット110はハードウェア装置であることが好ましい。FIFOユニット110はソフトウェアで実行できるが、ソフトウェアはハードウェアよりも速度が遅く、バッファの状態を決定するメモリサイクルを必要とするため好ましくない。ハードウェアでの実行において、FIFOは読出しと書込みの両方が同時にできる(即ちデュアルポート)。好ましい実施例において、FIFOユニット110は256 8ビットポインタを記憶できるが、サイズはいかなるサイズでも良い。
実施例において、FIFOユニット110の処理はライン116、117の各々からのFIFO110へのREAD、WRITEコマンドによって実行される。READコマンドはバッファポインタ114aをバッファプールの最高部から除き、読出し操作を実行する装置へと割当てる。FIFO110へのWRITEコマンドはバッファポインタ114bをプールの最低部に戻す。状態機械とRISCマイクロプロセッサの両方はFIFO110の読出しと書込みができる。
実施例において、READ、WRITEコマンドが、制御論理120によってFIFOユニット110に出される。制御論理120はクロック信号122によって時間決めされ、リセット信号123によってリスタートされる。制御論理120は、FIFOユニット110へのコマンド発行を要求する状態機械またはRISCマイクロプロセッサを認識する信号125を受信し、信号127によって要求に応答する。
実施例において、RISCマイクロプロセッサは制御システム100を1つのセットのREAD/WRITEレジスタとして扱い、RISCマイクロプロセッサによる読出しまたは書込みのいかなるコマンドも2つのクロックサイクルで実行され、FIFOユニット110が空であってもRISCマイクロプロセッサによる要求は常に応答される。しかしながら、全てのRISCREAD要求は読出しデータペイロードに送られた「空き」状態によって処理される。
実施例において、状態機械からのREAD、WRITE要求に対しては応答前に仲介が入る。状態機械によるREAD、WRITEの要求は、FIFOユニット110に使用可能なバッファができるまで制御論理120によって認識されない。これにより各要求をした状態機械が、認識された際に、有効なバッファポインタを確実に受信する。状態機械は、その実行前の要求が認識されるまでは処理を継続することができないように構成されていることが好ましい。
リスト112内のバッファは、BIU27によって送信されるデータを記憶する送信バッファとして、また通信リンク28から受信されるデータを記憶する受信バッファとして使用されることが可能である。受信バッファのみを要求する、RX状態機械のような要求元もある。また、送信バッファのみを要求する、TX状態機械のような要求元もある。これらの場合において、制御論理100は、要求元の種類から要求されたバッファのタイプを推論する。また、どちらのバッファのタイプも要求できる、RISCマイクロプロセッサのような要求元もある。この場合、要求元は制御論理100に追加信号を送り、要求されたバッファのタイプを識別する。
実施例において、制御システム100は制御論理120によって使用される6つのレジスタまたはカウンタを含む。制御/状態レジスタ130は基本的な情報を保持する。送信バッファカウンタ135は複数の使用可能な送信バッファを含む。RISCデータレジスタ140は、送信または受信バッファのどちらへのものかにより、また、CREDIT#信号を起こすかどうかにより要求のタイプを分類する4つのレジスタを含む。制御/状態レジスタ130およびカウンタ135の内容は読出しマルチプレクサ(RD MUX)150に入力されるため、RISCマイクロプロセッサでアクセス可能である。
実施例において、制御/状態レジスタ130は1語(32ビット)まで保持可能であるが、好ましい実施例においてはこのビットの内の5ビットのみを使用する。残りのビットは後の発展のために保留される。ゼロビットはデフォールト値として"0"をとり、RISCマイクロプロセッサのFIFOユニット110への排他的アクセスを承認するために"1"に設定される。第1ビットはデフォールト値として"0"をとり、フリーバッファの送信バッファと受信バッファへの分割を不可能にするために"1"に設定される。これが起こるとRISCマイクロプロセッサが、アクセスレジスタのいずれかによってフリーバッファポインタにアクセスする。第2ビットはデフォールト値として"0"をとるが、FIFO全体が再初期化されるようにFIFOユニット110内のポインタをクリアにするために"1"に設定されることができる。第2ビットは、FIFOユニット110が再び機能できる前にクリアされなければならない。第3ビットは1度だけ読出され、送信FIFOが空の時には"1"に設定され、また送信FIFOが空でない時には"0"に設定される。第4ビットも1度だけ読出され、受信FIFOが空の時には"1"に設定され、受信FIFOが空でない時には"0"に設定される。
送信バッファカウンタ135は複数の使用可能な送信バッファを含んでいる。カウンタ135は、送信バッファのためのREADコマンドがFIFOユニット110へ送られる度に減少し、送信バッファのためのWRITEコマンドがFIFOユニット110へ送られる度に増加する。実施例において、送信バッファカウンタ135の長さは1語であるが、複数の使用可能な送信バッファを記憶するために使用するビットは8ビットである。初期化設定の最中、RISCマイクロプロセッサは送信バッファカウンタ135に最高数の送信バッファを書込む。フィールドはハードウェアのリセットによって、また、第2ビット設定によってRISCマイクロプロセッサによる制御レジスタ130へのWRITEによってクリアされる。所望であれば、送信バッファカウンタ135がスレッショルド数以下に減少する際にアラームが鳴るように制御論理120を設定することができる。
状態機械によるコマンドは比較的簡単である。READコマンドが実行されると、FIFOユニット110からラインDOUTにバッファポインタ114aが出力される。要求を出す状態機械はDOUTラインと接続しており、表示されたバッファを使用するために動作する。WRITEコマンドが実施されると、状態機械からバッファポインタが書込みマルチプレクサ(WR MUX)155にロードされる。次にラインDINによりバッファポインタがFIFOユニット110に入力される。
実施例において、RISCデータレジスタ140は4つのレジスタ141−144を含んでいる。独立したレジスタの各々は1語を含むことが可能であるが、バッファポインタの記憶のために8ビットのみを使用する。レジスタXBPTR141とC1XBPTR142は、送信バッファの読出しまたは書込みに使用される。送信FIFOが空の時、レジスタXBPTR141とC1XBPTR142も空であり、制御レジスタ130内の第3ビットが、RISCマイクロプロセッサにより1に設定される。レジスタRBPTR143とC1RBPTR144は受信バッファの読出しと書込みに使用される。FIFOユニット110の全体が空であり、リスト122に送信、受信バッファポインタが残っていない場合、レジスタRBPTR143とC1RBPTR144も空であり、制御レジスタ130内の第3および第4ビットがRISCマイクロプロセッサによって1に設定される。
実施例において、バッファがXBPTRレジスタ141またはRBPTRレジスタ143のいずれかに戻される度に、制御論理110がCREDIT♯信号を起こす。バッファがC1XBPTRレジスタ142またはC1RBPTRレジスタ144に戻されると、制御論理110はCREDIT#信号を起こさない。CREDIT#信号はフレームロー制御気候を使用するプロトコルに使用されることができる。データレジスタ140にレジスタを追加することが可能である。複合的な異なるタイプの信号が制御論理110によって起こされる。
バッファ調整システム100はまた、状態機械とバッファポインタ読出しポート上のRISCマイクロプロセッサに使用可能な2つの状態信号を保持している。送信バッファカウンタ135がゼロであり、使用可能な送信バッファがない場合、ライン161上の状態信号TXSTATUSが真に設定される。FIFOユニット110が空であり、使用可能なバッファ、送信、受信がない場合、ライン162上の第2状態信号RXSTATUSが真に設定される。これらの状態信号は制御レジスタ130の第3、第4ビットにも供給される。
要約すれば、本発明は、分割バッファの対をサポートすることによりメモリを効率的に区分化する単純な方法を提供するものである。大バッファはデータを保持するために効率的にサイジングされ、少なくとも1つの関連する小バッファが情報を制御するために効率的にサイジングされる。本発明はさらに、このような分割バッファの対をアドレス指定する単純な方を提供する。本発明の好ましい実施例において、分割バッファモデルは、各メモリブロックが第1ブロックと同一の区分を有して可変長であり、1つのメモリコンポ−ネントを追加することによってトータルメモリを容易に増加することができる。
本発明の複数の実施例を説明した。しかし、本発明の精神および範囲を逸脱することなく様々な改良が可能であることが理解されるであろう。例えば、好ましい実施例においてメモリがBIUと通信リンクの間に配置されているが、本発明はいかなるコンピュータシステムにおける2つのコンポ−ネント間のデータ転送にも適応できる。従って、本発明は説明した特定の実施例によって限定されるのではなく、添付の請求の範囲によってのみ限定されるものである。

Claims (19)

  1. (a) メモリを第1数の大ブロックに分割し、
    (b) 少なくとも1つの該大ブロックを第2数の小ブロックに分割し、
    (c) 残りの前記大ブロックの各々を少なくとも1つの前記小ブロックと関連させ、
    (d) 関連させられた大および小ブロックの各々を1つのポインタによりアドレス指定する、
    ことを特徴とするバッファ区分化方法。
  2. 第1数が第2数と等しいことを特徴とする請求の範囲1に記載の方法。
  3. 残りの大バッファの各々が1つの小バッファと関連させられることを特徴とする請求の範囲2に記載の方法。
  4. さらに、小バッファと大バッファとの間の切換えを行うためにポインタの一部をシフトすることを特徴とする請求の範囲3に記載の方法。
  5. 大バッファの各々が同じバイト数を有し、小バッファの各々が同じバイト数を有することを特徴とする請求の範囲3に記載の方法。
  6. 第1数が64の倍数である整数であることを特徴とする請求の範囲2に記載の方法。
  7. (a) メモリを複数の大ブロックに分割し、
    (b) 少なくとも1つの該大ブロックを複数の小ブロックに分割し、
    (c) 残りの前記大ブロックの各々を少なくとも1つの前記小ブロックと関連させ、
    (d) 関連させられた大および小ブロックの各々を1つのポインタによりアドレス指定する、
    ことを特徴とするバッファ区分化方法。
  8. (a) メモリモジュールを第1数の大バッファに分割し、
    (b) 少なくとも1つの該大バッファを第2数の小バッファに分割し、
    (c) 前記メモリモジュール内の残りの前記大バッファを前記メモリモジュール内の少なくとも1つの前記小バッファと関連させ、
    (d) 関連させられた大および小バッファの各々を1つのポインタによりアドレス指定する、
    ことを特徴とするメモリ分割方法。
  9. 前記大バッファの1つのみが第2数の前記小バッファに分割されることを特徴とする請求の範囲8に記載の方法。
  10. 第1数が第2数に等しいことを特徴とする請求の範囲9に記載の方法。
  11. さらに、前記メモリに新しいメモリモジュールを追加し、該新しいメモリモジュールをそれまでのメモリモジュールと同じ方法で区分化することを特徴とする請求の範囲8に記載の方法。
  12. (a) 第1数の大ブロックに分割されているメモリであって、少なくとも1つの該大ブロックは第2数の小ブロックに分割されており、残りの前記大ブロックの各々は少なくとも1つの前記小ブロックに関連させられているメモリと、
    (b) 関連させられた大および小ブロックの各々が1つのバッファポインタによりアドレス指定される複数のバッファポインタと、
    を有することを特徴とするバッファ。
  13. 第1数が第2数に等しいことを特徴とする請求の範囲12に記載のバッファ。
  14. 前記小バッファのメモリアドレスは前記大バッファのメモリアドレスの一部をシフトしたものであることを特徴とする請求の範囲13に記載のバッファ。
  15. 大バッファの各々が同じバイト数を有し、小バッファの各々が同じバイト数を有することを特徴とする請求の範囲13に記載のバッファ。
  16. (a) 第1および第2送信レジスタと、
    (b) 第1および第2受信レジスタと、
    (c) バッファポインタのリストを記憶するための先入れ先出しメモリと、
    (d) ソースレジスタからバッファポインタを戻し、バッファポインタを該ソースレジスタから前記先入れ先出しメモリへ転送するための制御論理と、
    (e) バッファポインタが第1送信バッファレジスタまたは第1受信バッファレジスタへ戻される場合に信号を起こすが、バッファポインタが第2送信バッファレジスタまたは第2受信バッファレジスタへ戻される場合には信号を起こさない手段とを有することを特徴とするバッファ制御装置。
  17. さらに、前記リストからバッファポインタを除く手段を有することを特徴とする請求の範囲13に記載の装置。
  18. さらに、信号が起こされる度に増加するカウンタを有することを特徴とする請求の範囲13に記載の装置。
  19. (a) 第1数の大バッファに分割されているメモリであって、少なくとも1つの該大バッファは第2数の小バッファに分割されており、残りの前記大バッファの各々は少なくとも1つの前記小バッファに関連させられているメモリと、
    (b) 関連させられた大および小バッファの各々が1つのバッファポインタによりアドレス指定される複数のバッファポインタと、
    (c) 第1および第2送信レジスタと、
    (d) 第1および第2受信レジスタと、
    (e) バッファポインタのリストを記憶するための先入れ先出しメモリと、
    (f) ソースレジスタからバッファポインタを戻し、バッファポインタを該ソースレジスタから前記先入れ先出しメモリへ転送するための制御論理と、
    (g) バッファポインタが第1送信バッファレジスタまたは第1受信バッファレジスタへ戻される場合に信号を起こすが、バッファポインタが第2送信バッファレジスタまたは第2受信バッファレジスタへ戻される場合には信号を起こさない手段とを有することを特徴とする装置。
JP50209597A 1995-06-07 1996-06-06 分割バッファアーキテクチュア Expired - Fee Related JP3641675B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/484,592 1995-06-07
US08/484,592 US5860149A (en) 1995-06-07 1995-06-07 Memory buffer system using a single pointer to reference multiple associated data
PCT/US1996/009934 WO1996041266A1 (en) 1995-06-07 1996-06-06 Split buffer architecture

Publications (2)

Publication Number Publication Date
JPH11507749A JPH11507749A (ja) 1999-07-06
JP3641675B2 true JP3641675B2 (ja) 2005-04-27

Family

ID=23924780

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50209597A Expired - Fee Related JP3641675B2 (ja) 1995-06-07 1996-06-06 分割バッファアーキテクチュア

Country Status (7)

Country Link
US (2) US5860149A (ja)
EP (1) EP0832457A4 (ja)
JP (1) JP3641675B2 (ja)
KR (1) KR100288453B1 (ja)
AU (1) AU6169296A (ja)
CA (1) CA2223890A1 (ja)
WO (1) WO1996041266A1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US6154460A (en) * 1997-05-30 2000-11-28 Alcatel Usa Sourcing, L.P. Data packet transmission system and method
US6563836B1 (en) * 1998-03-19 2003-05-13 International Business Machines Corporation Algorithm for dynamic prioritization in a queuing environment
US6631484B1 (en) * 1998-03-31 2003-10-07 Lsi Logic Corporation System for packet communication where received packet is stored either in a FIFO or in buffer storage based on size of received packet
US6282589B1 (en) * 1998-07-30 2001-08-28 Micron Technology, Inc. System for sharing data buffers from a buffer pool
US6466993B1 (en) * 1998-11-05 2002-10-15 Compaq Information Technologies Group, L.P. Method and apparatus for performing transactions rendering between host processors and I/O devices using concurrent non-blocking queuing techniques and I/O bus write operations
US6044030A (en) * 1998-12-21 2000-03-28 Philips Electronics North America Corporation FIFO unit with single pointer
US6466223B1 (en) * 1999-03-24 2002-10-15 Microsoft Corporation Method and apparatus for texture memory management
US6574231B1 (en) * 1999-05-21 2003-06-03 Advanced Micro Devices, Inc. Method and apparatus for queuing data frames in a network switch port
US6618390B1 (en) * 1999-05-21 2003-09-09 Advanced Micro Devices, Inc. Method and apparatus for maintaining randomly accessible free buffer information for a network switch
US6657955B1 (en) * 1999-05-27 2003-12-02 Alcatel Canada Inc. Buffering system employing per traffic flow accounting congestion control
WO2001020416A2 (de) * 1999-09-14 2001-03-22 Siemens Aktiengesellschaft Serielle datenübertragung über ein bussystem
US6625708B1 (en) * 1999-11-23 2003-09-23 Intel Corporation Method and apparatus for dynamically defining line buffer configurations
US6854021B1 (en) * 2000-10-02 2005-02-08 International Business Machines Corporation Communications between partitions within a logically partitioned computer
US6647477B2 (en) * 2000-10-06 2003-11-11 Pmc-Sierra Ltd. Transporting data transmission units of different sizes using segments of fixed sizes
US6947153B1 (en) 2000-11-20 2005-09-20 Presstek, Inc. Method and apparatus for optimized image processing
US6903737B2 (en) * 2001-01-23 2005-06-07 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing spread memory layout
US8150997B2 (en) 2001-04-24 2012-04-03 International Business Machines Corporation Technique for efficient data transfer within a virtual network
US6801991B2 (en) * 2001-12-21 2004-10-05 Agere Systems Inc. Method and apparatus for buffer partitioning without loss of data
KR100474357B1 (ko) * 2001-12-26 2005-03-08 한국전자통신연구원 다단계 분할을 이용한 기억소자 할당방법
US7333498B2 (en) * 2002-05-15 2008-02-19 Hewlett-Packard Development Company, L.P. Method and apparatus for separating data packets in a memory buffer
US7089346B2 (en) * 2002-06-03 2006-08-08 International Business Machines Corporation Method of operating a crossbar switch
US7532644B1 (en) * 2002-06-12 2009-05-12 Sun Microsystems, Inc. Method and system for associating multiple payload buffers with multidata message
US7152069B1 (en) * 2002-10-15 2006-12-19 Network Appliance, Inc. Zero copy writes through use of mbufs
US20060075203A1 (en) * 2002-12-12 2006-04-06 Koninklijke Philips Electronics N.V. Configurable memory partitioning in hardware
US20070260777A1 (en) * 2003-11-25 2007-11-08 Timpe Barrie R Queues for information processing and methods thereof
US7249227B1 (en) * 2003-12-29 2007-07-24 Network Appliance, Inc. System and method for zero copy block protocol write operations
US20050223118A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for placement of sharing physical buffer lists in RDMA communication
US20050220128A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for work request queuing for intelligent adapter
US20060067346A1 (en) * 2004-04-05 2006-03-30 Ammasso, Inc. System and method for placement of RDMA payload into application memory of a processor system
US8331380B2 (en) * 2005-02-18 2012-12-11 Broadcom Corporation Bookkeeping memory use in a search engine of a network device
US20060187917A1 (en) * 2005-02-18 2006-08-24 Broadcom Corporation Pre-learning of values with later activation in a network device
US8526326B1 (en) * 2008-08-27 2013-09-03 Juniper Networks, Inc. Lock-less access of pre-allocated memory buffers used by a network device
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
US9069489B1 (en) 2010-03-29 2015-06-30 Marvell Israel (M.I.S.L) Ltd. Dynamic random access memory front end
US9037810B2 (en) * 2010-03-02 2015-05-19 Marvell Israel (M.I.S.L.) Ltd. Pre-fetching of data packets
US8327047B2 (en) * 2010-03-18 2012-12-04 Marvell World Trade Ltd. Buffer manager and methods for managing memory
US9098203B1 (en) 2011-03-01 2015-08-04 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization
JP5451705B2 (ja) * 2011-09-21 2014-03-26 日立オートモティブシステムズ株式会社 自動車用電子制御装置及びデータ通信方法
JP2013068105A (ja) * 2011-09-21 2013-04-18 Hitachi Automotive Systems Ltd 自動車用電子制御装置
US11979340B2 (en) * 2017-02-12 2024-05-07 Mellanox Technologies, Ltd. Direct data placement
US11379404B2 (en) * 2018-12-18 2022-07-05 Sap Se Remote memory management
KR20220023649A (ko) * 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168541A (en) * 1978-09-25 1979-09-18 Sperry Rand Corporation Paired least recently used block replacement system
CA1187198A (en) * 1981-06-15 1985-05-14 Takashi Chiba System for controlling access to channel buffers
US4493026A (en) * 1982-05-26 1985-01-08 International Business Machines Corporation Set associative sector cache
US4511964A (en) * 1982-11-12 1985-04-16 Hewlett-Packard Company Dynamic physical memory mapping and management of independent programming environments
JPS59213084A (ja) * 1983-05-16 1984-12-01 Fujitsu Ltd バッファ記憶装置のアクセス制御方式
US4821185A (en) * 1986-05-19 1989-04-11 American Telephone And Telegraph Company I/O interface system using plural buffers sized smaller than non-overlapping contiguous computer memory portions dedicated to each buffer
US4945512A (en) * 1988-09-07 1990-07-31 Unisys Corporation High-speed partitioned set associative cache memory

Also Published As

Publication number Publication date
WO1996041266A1 (en) 1996-12-19
US5860149A (en) 1999-01-12
AU6169296A (en) 1996-12-30
KR100288453B1 (ko) 2001-05-02
CA2223890A1 (en) 1996-12-19
EP0832457A1 (en) 1998-04-01
US6041397A (en) 2000-03-21
KR19990022410A (ko) 1999-03-25
EP0832457A4 (en) 1999-01-20
JPH11507749A (ja) 1999-07-06

Similar Documents

Publication Publication Date Title
JP3641675B2 (ja) 分割バッファアーキテクチュア
US6622193B1 (en) Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system
US6611883B1 (en) Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
US6704831B1 (en) Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol
CN1154934C (zh) 采用多端口存储器的智能数据总线接口
US7352763B2 (en) Device to receive, buffer, and transmit packets of data in a packet switching network
JP3598321B2 (ja) 異なる周波数で動作するバス間でやりとりされるバッファリングデータ
US6122676A (en) Apparatus and method for transmitting and receiving data into and out of a universal serial bus device
US20070168583A1 (en) Endpoint control apparatus and method thereof
US20060004983A1 (en) Method, system, and program for managing memory options for devices
CN117716679A (zh) 地址转换类型分组的传输
US6985974B1 (en) Memory interface controller for a network device
JP2005084907A (ja) メモリ帯域制御装置
US7313146B2 (en) Transparent data format within host device supporting differing transaction types
US6701387B1 (en) Adaptive data fetch prediction algorithm
JP2000029826A (ja) 多重レベルキャッシングを有する3ポ―トfifoデ―タバッファ
KR100950356B1 (ko) 다중 코히런시 단위들을 지원하는 데이터 전송 유닛
KR100369363B1 (ko) 메모리를 이용한 호스트 시스템과 로컬 시스템 내부의마이크로컨트롤러 사이의 데이터 전송 및 수신 장치
CN117435535A (zh) 一种存储系统、主控芯片、数据存储方法及数据读取方法
JP2004054419A (ja) ノード間トランザクション処理装置
GB2260836A (en) Bus Interface
JPH0137018B2 (ja)
JPS61228557A (ja) プロセス間通信方式
KR19990069687A (ko) 입출력 포트가 두 개인 메모리를 사용하여 데이터를송수신하는 상호연결망, 메모리 블럭 맵핑 방법 및 데이터송수신 방법
JPH01161465A (ja) バス・インタフェース

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20040804

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040914

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041008

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: 20041207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041213

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees