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

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

Info

Publication number
JPH11507749A
JPH11507749A JP9502095A JP50209597A JPH11507749A JP H11507749 A JPH11507749 A JP H11507749A JP 9502095 A JP9502095 A JP 9502095A JP 50209597 A JP50209597 A JP 50209597A JP H11507749 A JPH11507749 A JP H11507749A
Authority
JP
Japan
Prior art keywords
buffer
buffers
memory
small
blocks
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.)
Granted
Application number
JP9502095A
Other languages
English (en)
Other versions
JP3641675B2 (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

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)
  • Small-Scale Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 区分化メモリ(45)は複数の大バッファ(60)に分割され、1つまたはそれ以上の大バッファは分割されて同数の小バッファ(65)を作成する。残りの大バッファの各々は1つの小バッファと関連させられ、その対を成すバッファが1つの1つのポインタによってアドレス指定される。ポインタは先入れ先出しユニットに記憶され、使用可能なバッファ対のプールを作成する。

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)2 8といった別のコンポーネントとの間で転送される。メモリ45がBIU27と ENDEC28との間(即ちこの2つのデータパスにおいて)に設置されており 、フレームバッファ40に分割されている。メモリ45はアクセス時間が早く、 RAMであることが好ましい。典型的なデータ転送において、データは送信コン ポーネントからフレームバッファ40へと転送され、次にフレームバッファ40 から受信コンポーネントへと転送される。このように、メモリ45内のフレーム バッファ40は、BIU27とENDEC28間を通過するデータを記憶するた めの一時的な記憶装置として使用される。 第1図の各リンク25(またはノード20)は、典型的には複数の状態機械を 含むマイクロプロセッサを備えており、これは第3図に非常に詳細に示されてい る。一般に、ソフトウェアまたはハードウェアであるこれらの状態機械は、従来 の方法により実現することができる。BIU27がデータを転送する際、状態機 械TXBIUSM50がBIU27から転送フレームバッファ47へとデータを 転送し、また状態機械TXFSM51が転送フレームバッファ47からENDE C28へとデータを転送する。BIU27がデータを受信すると、状態機械RX QSM53がENDEC28から受信フレームバッファ48へとデータを転送し 、また状態機械RXBIUSM54が受信フレームバッファ48からBIU27 へとデータを転送する。状態機械FC2エンジン47は転送プロトコル及びより 低レベルの状態機械を管理する。 ARMSM56で示されたRISCマイクロプロセッサは、好ましくは語の境 界にあるバッファ40の内容にアクセスする。RISCプロセッサARMSM5 6はホストと本発明システムとの間のインターフェースを管理する。ARMSM 56は、制御および初期化の目的で全ての状態機械とバッファRAMにアクセス する一方で、バッファと状態機械との間のデータ転送には直接関係しない。 本発明によるバッファメモリ45の分割を第4図に示す。初期化の最中にメモ リ45がブロックアレイ60に区分化される。1つまたはそれ以上のブロック6 0が、さらにサブブロック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図に示す。各モジュール8 0は64ブロックに分割される。各ブロックは例えば512 32ビットワード の同サイズであるが、各ブロックのサイズはメモリ45のトータルサイズとモジ ュールの数に依存することができる。例えば、128キロバイトモジュール80 の各々は、mod−512ワード(2048バイト)境界にアドレス指定された 64のブロックに分割されることができる。ブロックのメモリロケーションの上 段(アッパ−)8アドレスビットを使用してブロックにバッファポインタ(BP TR)を割当てることにより、ブロックがアドレス指定される。 ブロック80のいくつかは、ヘッダブロック82またはED_TOVタイマー エンジンバッファ84として使用するために割当てられる。残りのブロック84 は、データ32を記憶するためのペイロードバッファ86としての使用が可能で ある。好ましくは、各メモリブロック内の第1バッファはフレームヘッダバッフ ァエリア62として使用され、第1メモリブロック内の第2バッファはタイマー エンジンバッファエリア66として使用される。 各ペイロードバッファは512語長(2048バイト)であることが好ましい 。各ヘッダブロック82は、小ヘッダバッファ88にさらに分割されてヘッダ3 4およびトレーラ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から容易に引き出す ことができる。このアドレス指定スキームの例を下に示す。 状態機械50−57は、各パケットからヘッダ34およびトレーラ36内の制 御情報をストリップし、これを小バッファ88に記憶し、一方で関連データ32 を関連する大バッファ82に記憶する。特に、要求状態機械はバッファプールか ら1つのアドレスポインタを受信することができる。次に状態機械は、従来のプ ロトコルによって制御情報とペイロードを分け、アドレスによって表示されたペ イロードバッファにデータを記憶する。そして状態機械はアドレスを上述した通 りに計算し、制御情報をそのアドレスに記憶する。 データ転送プロトコルが固定サイズのペイロード32を送ると、メモリブロッ ク要素がペイロードのサイズと等しく設定されるため、ペイロードがメモリ45 に効率的にパックされる。例えばペイロードが2nバイトの場合、各ペイロード バッファのサイズを2nバイトにでき、これはディスクとネットワークトラフィ ックにとってさらに効率的である。 本発明による好ましいアドレス指定スキームの結果として、メモリのトータル サイズは増加に可変で、好ましくは128キロバイトである。メモリを追加する と、ペイロードバッファ86とヘッダバッファ82の両方がメモリブロック区分 の一部として追加される。このように、可変長最小構造バッファシステムは、1 つのメモリコンポーネントで構成できる。そして、そのシステムは追加メモリモ ジュールで拡張することができる。 好ましい区分フォーマットを以下に示す表に要約する。 バッファの対は、第6図に示すフリーバッファ制御システム100の使用によ り管理される。制御システム100は先入れ先出し(FIFO)記憶ユニット1 10を含む。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ユニット11 0にロードされる。このようにしてリスト112は合計251のフレームバッ ファを含む。 第6図において、FIFOユニット110はハードウェア装置であることが好 ましい。FIFOユニット110はソフトウェアで実行できるが、ソフトウェア はハードウェアよりも速度が遅く、バッファの状態を決定するメモリサイクルを 必要とするため好ましくない。ハードウェアでの実行において、FIFOは読出 しと書込みの両方が同時にできる(即ちデュアルポート)。好ましい実施例にお いて、FIFOユニット110は256 8ビットポインタを記憶できるが、サ イズはいかなるサイズでも良い。 実施例において、FIFOユニット110の処理はライン116、117の各 々からのFIFO110へのREAD、WRITEコマンドによって実行される 。READコマンドはバッファポインタ114aをバッファプールの最高部から 除き、読出し操作を実行する装置へと割当てる。FIFO110へのWRITE コマンドはバッファポインタ114bをプールの最低部に戻す。状態機械とRI SCマイクロプロセッサの両方はFIFO110の読出しと書込みができる。 実施例において、READ、WRITEコマンドが、制御論理120によって FIFOユニット110に出される。制御論理120はクロック信号122によ って時間決めされ、リセット信号123によってリスタートされる。制御論理1 20は、FIFOユニット110へのコマンド発行を要求する状態機械またはR ISCマイクロプロセッサを認識する信号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およびカウンタ13 5の内容は読出しマルチプレクサ(RD MUX)150に入力されるため、R ISCマイクロプロセッサでアクセス可能である。 実施例において、制御/状態レジスタ130は1語(32ビット)まで保持可 能であるが、好ましい実施例においてはこのビットの内の5ビットのみを使用す る。残りのビットは後の発展のために保留される。ゼロビットはデフォールト値 として”0”をとり、RISCマイクロプロセッサのFIFOユニット110へ の排他的アクセスを承認するために”1”に設定される。第1ビットはデフォー ルト値として”0”をとり、フリーバッファの送信バッファと受信バッファへの 分割を不可能にするために”1”に設定される。これが起こるとRISCマイク ロプロセッサが、アクセスレジスタのいずれかによってフリーバッファポインタ にアクセスする。第2ビットはデフォールト値として”0”をとるが、FIFO 全体が再初期化されるようにFIFOユニット110内のポインタをクリアにす るために”1”に設定されることができる。第2ビットは、FIFOユニット1 10が再び機能できる前にクリアされなければならない。第3ビットは1度だけ 読出され、送信FIFOが空の時には”1”に設定され、また送信FIFOが空 でない時には”0”に設定される。第4ビットも1度だけ読出され、受信FIF Oが空の時には”1”に設定され、受信FIFOが空でない時には”0”に設定 される。 送信バッファカウンタ135は複数の使用可能な送信バッファを含んでいる。 カウンタ135は、送信バッファのためのREADコマンドがFIFOユニット 110へ送られる度に減少し、送信バッファのためのWRITEコマンドがFI FOユニット110へ送られる度に増加する。実施例において、送信バッファカ ウンタ135の長さは1語であるが、複数の使用可能な送信バッファを記憶する ために使用するビットは8ビットである。初期化設定の最中、RISCマイクロ プロセッサは送信バッファカウンタ135に最高数の送信バッファを書込む。フ ィールドはハードウェアのリセットによって、また、第2ビット設定によってR ISCマイクロプロセッサによる制御レジスタ130へのWRITEによってク リアされる。所望であれば、送信バッファカウンタ135がスレッショルド数以 下に減少する際にアラームが鳴るように制御論理120を設定することができる 。 状態機械によるコマンドは比較的簡単である。READコマンドが実行される と、FIFOユニット110からラインDOUTにバッファポインタ114aが 出力される。要求を出す状態機械はDOUTラインと接続しており、表示された バッファを使用するために動作する。WRITEコマンドが実施されると、状態 機械からバッファポインタが書込みマルチプレクサ(WR MUX)155にロ ードされる。次にラインDINによりバッファポインタがFIFOユニット11 0に入力される。 実施例において、RISCデータレジスタ140は4つのレジスタ141−1 44を含んでいる。独立したレジスタの各々は1語を含むことが可能であるが、 バッファポインタの記憶のために8ビットのみを使用する。レジスタXBPTR 141とC1XBPTR142は、送信バッファの読出しまたは書込みに使用さ れる。送信FIFOが空の時、レジスタXBPTR141とC1XBPTR14 2も空であり、制御レジスタ130内の第3ビットが、RISCマイクロプロセ ッサにより1に設定される。レジスタRBPTR143とC1RBPTR144 は受信バッファの読出しと書込みに使用される。FIFOユニット110の全体 が空であり、リスト112に送信、受信バッファポインタが残っていない場合、 レジスタRBPTR143とC1RBPTR144も空であり、制御レジスタ1 30内の第3および第4ビットがRISCマイクロプロセッサによって1に設定 される。 実施例において、バッファがXBPTRレジスタ141またはRBPTRレジ スタ143のいずれかに戻される度に、制御論理110がCREDIT#信号を 起こす。バッファがC1XBPTRレジスタ142またはC1RBPTRレジス タ144に戻されると、制御論理110はCREDIT#信号を起こさない。C REDIT#信号はフレームロー制御気候を使用するプロトコルに使用されるこ とができる。データレジスタ140にレジスタを追加することが可能である。複 合的な異なるタイプの信号が制御論理110によって起こされる。 バッファ調整システム100はまた、状態機械とバッファポインタ読出しポー ト上のRISCマイクロプロセッサに使用可能な2つの状態信号を保持している 。送信バッファカウンタ135がゼロであり、使用可能な送信バッファがない場 合、ライン161上の状態信号TXSTATUSが真に設定される。FIFOユ ニット110が空であり、使用可能なバッファ、送信、受信がない場合、ライン 162上の第2状態信号RXSTATUSが真に設定される。これらの状態信号 は制御レジスタ130の第3、第4ビットにも供給される。 要約すれば、本発明は、分割バッファの対をサポートすることによりメモリを 効率的に区分化する単純な方法を提供するものである。大バッファはデータを保 持するために効率的にサイジングされ、少なくとも1つの関連する小バッファが 情報を制御するために効率的にサイジングされる。本発明はさらに、このような 分割バッファの対をアドレス指定する単純な方法を提供する。本発明の好ましい 実施例において、分割バッファモデルは、各メモリブロックが第1ブロックと同 一の区分を有して可変長であり、1つのメモリコンポーネントを追加することに よってトータルメモリを容易に増加することができる。 本発明の複数の実施例を説明した。しかし、本発明の精神および範囲を逸脱す ることなく様々な改良が可能であることが理解されるであろう。例えば、好まし い実施例においてメモリがBIUと通信リンクの間に配置されているが、本発明 はいかなるコンピュータシステムにおける2つのコンポーネント間のデータ転送 にも適応できる。従って、本発明は説明した特定の実施例によって限定されるの ではなく、添付の請求の範囲によってのみ限定されるものである。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(KE,LS,MW,SD,S Z,UG),UA(AM,AZ,BY,KG,KZ,MD ,RU,TJ,TM),AL,AM,AT,AU,AZ ,BB,BG,BR,BY,CA,CH,CN,CZ, DE,DK,EE,ES,FI,GB,GE,HU,I S,JP,KE,KG,KP,KR,KZ,LK,LR ,LS,LT,LU,LV,MD,MG,MK,MN, MW,MX,NO,NZ,PL,PT,RO,RU,S D,SE,SG,SI,SK,TJ,TM,TR,TT ,UA,UG,UZ,VN (72)発明者 チャウ,ヴィ アメリカ合衆国 92677 カリフォルニア 州 ラグナニグエル,チェイモニックス 11

Claims (1)

  1. 【特許請求の範囲】 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 true JPH11507749A (ja) 1999-07-06
JP3641675B2 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
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
US6574231B1 (en) * 1999-05-21 2003-06-03 Advanced Micro Devices, Inc. Method and apparatus for queuing data frames in a network switch port
US6657955B1 (en) * 1999-05-27 2003-12-02 Alcatel Canada Inc. Buffering system employing per traffic flow accounting congestion control
EP1238319A2 (de) * 1999-09-14 2002-09-11 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
CN1726457A (zh) * 2002-12-12 2006-01-25 皇家飞利浦电子股份有限公司 硬件中的可配置存储器分区
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
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
US20050220128A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for work request queuing for intelligent adapter
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
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
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
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
EP0832457A1 (en) 1998-04-01
WO1996041266A1 (en) 1996-12-19
US6041397A (en) 2000-03-21
EP0832457A4 (en) 1999-01-20
KR100288453B1 (ko) 2001-05-02
CA2223890A1 (en) 1996-12-19
US5860149A (en) 1999-01-12
KR19990022410A (ko) 1999-03-25
AU6169296A (en) 1996-12-30
JP3641675B2 (ja) 2005-04-27

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
CN1154934C (zh) 采用多端口存储器的智能数据总线接口
US5870627A (en) System for managing direct memory access transfer in a multi-channel system using circular descriptor queue, descriptor FIFO, and receive status queue
US6704831B1 (en) Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol
US6778548B1 (en) Device to receive, buffer, and transmit packets of data in a packet switching network
US5832492A (en) Method of scheduling interrupts to the linked lists of transfer descriptors scheduled at intervals on a serial bus
US7328289B2 (en) Communication between processors
US5594927A (en) Apparatus and method for aligning data transferred via DMA using a barrel shifter and a buffer comprising of byte-wide, individually addressabe FIFO circuits
US20020184453A1 (en) Data bus system including posted reads and writes
CN117716679A (zh) 地址转换类型分组的传输
US7313146B2 (en) Transparent data format within host device supporting differing transaction types
KR100576721B1 (ko) 제로카피(zero-copy) 전송 기능을 구비한네트워크 카드와 서버 및 그 전송 방법
JP3599692B2 (ja) データ伝送装置
US6847990B2 (en) Data transfer unit with support for multiple coherency granules
KR20040066311A (ko) 직접 메모리 접근매체의 데이터 전송 장치 및 방법
KR100369363B1 (ko) 메모리를 이용한 호스트 시스템과 로컬 시스템 내부의마이크로컨트롤러 사이의 데이터 전송 및 수신 장치
CN117435535A (zh) 一种存储系统、主控芯片、数据存储方法及数据读取方法
JPH0137018B2 (ja)
JP2004054419A (ja) ノード間トランザクション処理装置
GB2260836A (en) Bus Interface
JPH06131246A (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