JP6377844B2 - Sfenceを用いずに最適化されたpio書込みシーケンスを用いるパケット送信 - Google Patents
Sfenceを用いずに最適化されたpio書込みシーケンスを用いるパケット送信 Download PDFInfo
- Publication number
- JP6377844B2 JP6377844B2 JP2017516268A JP2017516268A JP6377844B2 JP 6377844 B2 JP6377844 B2 JP 6377844B2 JP 2017516268 A JP2017516268 A JP 2017516268A JP 2017516268 A JP2017516268 A JP 2017516268A JP 6377844 B2 JP6377844 B2 JP 6377844B2
- Authority
- JP
- Japan
- Prior art keywords
- transmission
- packet
- pio
- store
- data
- 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.)
- Active
Links
- 230000005540 biological transmission Effects 0.000 title claims description 520
- 239000000872 buffer Substances 0.000 claims description 176
- 238000000034 method Methods 0.000 claims description 51
- 238000012546 transfer Methods 0.000 claims description 34
- 239000004744 fabric Substances 0.000 claims description 28
- 230000002093 peripheral effect Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 23
- 238000013459 approach Methods 0.000 description 14
- 238000013507 mapping Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 102100040862 Dual specificity protein kinase CLK1 Human genes 0.000 description 1
- 102100040844 Dual specificity protein kinase CLK2 Human genes 0.000 description 1
- 101000749294 Homo sapiens Dual specificity protein kinase CLK1 Proteins 0.000 description 1
- 101000749291 Homo sapiens Dual specificity protein kinase CLK2 Proteins 0.000 description 1
- 241001116459 Sequoia Species 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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
- G06F5/10—Methods 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 having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
- G06F5/14—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/06—Indexing scheme relating to groups G06F5/06 - G06F5/16
- G06F2205/067—Bidirectional FIFO, i.e. system allowing data transfer in two directions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/12—Indexing scheme relating to groups G06F5/12 - G06F5/14
- G06F2205/126—Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Systems (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
Description
PBCは、各PIO送信の最初の64B送信ブロックの最初の8Bである。最も小さいPIO送信は1つの送信ブロックであり、その一方でサポートされる最大のパケットサイズは128B+10KB MTU(最大転送単位:Maximum Transfer Unit)に対応する162送信ブロックを必要とする。書込み上のパケットサイズは4Bの倍数であり、そのためより粒状の64B送信ブロックの使い方における柔軟性が提供される:
・4Bの倍数の回線上のパケット長は、PBCのPbcLengthDWsフィールドに指定される。
・64Bの倍数の充填サイズは、PbcLengthDWsを64Bの倍数まで切り上げることによって決定される。
・充填サイズは、8BのPBCプラスパケット長プラス書込みシーケンスを64Bの倍数にするためにいずれか必要なパディングに及ぶ。すべての送信ブロックが完全に充填されるので、64Bパディング要件はハードウェア実装を簡素化する。加えて、このアプローチは、64Bまで充填されるパケットの最後の部分のためのライトコンバイニングストアバッファが明確なsfence命令を使用せずこれを自動的にHFIにドレインさせることを保証することにより、性能を改善する。パディングバイトは、回線に放出されるパケットに寄与しない。
・ライトコンバイニングの実施に内在する書込みの並べ替えに対処する再構築機能があっても、パケットはFIFO順で充填される。
・パケットは引き続きFIFO順で発信する。発信後、パケットはVL調停の対象となる。
・パケットは引き続きper−VL発信FIFOから放出され、同じVLの同じコンテキストからのパケットでは順序通りとなるが、異なるVLでは同じ送信コンテキストからのパケットでも順序通りにならないだろう。
・クレジット返信は元のFIFO順である。これは、無秩序に放出されるパケットのクレジットは、その送信コンテキスト上の先のパケットがすべて既に放出されるまで回復されないことを意味する。
図7fは、時間枠T6の間の転送の状態を示す。この時間枠の間、パケットP1−3およびP2−2が放出し始め、その一方でパケットP1−1は放出を完了し、その送信ブロックはクリアにされる。この時点で、両方のパケットP1−1およびP1−2のクレジットが送信コンテキスト1について返信され、合計j+3クレジットとなり、ここでランニングカウンタ値は、送信コンテキスト1について返信された最後のクレジットに対してj+3だけ増加していることになる。図示される例において、前のランニングカウントは2であり(送信コンテキスト1の最初の2つの空のFIFOスロットに対応する)、このため返信されたランニングカウント絶対クレジット値は2+j+3である。加えて、時間枠T5の間に送信されたパケットP2−1の送信ブロックの2つのクレジットが受信および処理されており、対応するFIFOスロットはフリーとして標識される。
送信バッファをクリアにする先のパケットの前に送信バッファブロックがソフトウェアによって上書きされないことを保証するために、PIO送信機構はクレジット返信機構を使用する。一実施形態において、送信クレジットは64Bの粒度であり、1つの送信クレジットは1つの(64B)送信ブロックに対応する。送信コンテキスト用の送信クレジットは順序通りに返信され、ソフトウェアは送信バッファメモリをラップアラウンドFIFOのやり方で使用する。HFIが送信クレジットの損失を伴わずにより最新の値でいつでもクレジット返信情報を上書きできるように、送信クレジット会計は絶対数を用いる。クレジット返信はまた状態情報も提供し、これは連続するクレジット返信書込みによって上書きされる。エラーに遭遇すると、クレジット返信はエラー表示で強制的に設定され、送信コンテキストはエラー状態に置かれて、さらなるクレジット返信書込みは送信コンテキストがホストシステムソフトウェアによってエラー状態から回復させられるまでスケジューリングされない。これにより、クレジット返信位置におけるエラー表示が観察されて、上書きの危険性を伴わずにホストソフトウェアによって適切に対処されることを、保証する。
class SendBuffer:
def_init_(self,num_credits):
assert(num_credits>=1 and num_credits<=1024)
self.num_credits=num_credits
self.fill_counter=0
self.free_counter=0
self.fill_index=0
self.egress_index=0
self.packet_credits=[]
for i in xrange(0,num_credits):
self.packet_credits.append(0)
def get_num_credits(self):
return self.num_credits
def get_used_credits(self):
return(self.fill_counter−self.free_counter)%2048
def get_free_credits(self):
return self.num_credits−self.get_used_credits()
def fill_credits(self,num_credits):
#If there is sufficient space,this method fills the send buffer
#with num_credits and returns True.Otherwise,it returns False.(十分なスペースがあれば、この方法でnum_creditsを用いて送信バッファを充填し、Trueを返す。またはFalseを返す。)
assert(num_credits>0)
free_credits=self.get_free_credits()
if num_credits<=free_credits:
self.packet_credits[self.fill_index]=num_credits
self.fill_index=(self.fill_index+num_credits)%self.num_credits
self.fill_counter=(self.fill_counter+num_credits)%2048
print ‘Buffer(%d used,%d free):filled %d credits’%\
(self.get_used_credits(),self.get_free_credits(),num_credits)
return True
else:
return False
def free_credits(self):
#If there is a packet to egress,this method egresses that packet,frees
#its credits and returns a value indicating that number of credits.(放出するパケットがあれば、この方法でそのパケットを放出し、そのクレジットをフリーにし、そのクレジット数を示す値を返す。)
#Otherwise,it returns False.(またはFalseを返す)
num_credits=self.packet_credits[self.egress_index]
if num_credits:
self.packet_credits[self.egress_index]=0
self.egress_index=(self.egress_index+num_credits)%self.num_credits
self.free_counter=(self.free_counter+num_credits)%2048
print ‘Buffer(%d used,%d free):returned %d credits’ %\
(self.get_used_credits(),self.get_free_credits(),num_credits)
return num_credits
def show(self):
print ‘Buffer %d used,%d free,%d total’%\
(self.get_used_credits(),self.get_free_credits(),self.num_credits)
import random
send_buffer=SendBuffer(100)send_buffer.show()
packet_fifo=[]
count=0
while count<100:
if random.random()>=0.25:
fill=int(random.uniform(l,20))
while not send_buffer.fill_credits(fill):
credits=send_buffer.free_credits()assert(credits)
expected_credits=packet_fifo.pop(0)assert(credits==expected_credits)packet_fifo.append(fill)count+=1
else:
credits=send_buffer.free_credits()if credits:
expected_credits=packet_fifo.pop(0)assert(credits==expected_credits)
print ‘Total of %d packets filled with%d
(count,len(packet_fifo))
print ‘All %d packets posted,now draining while True:
credits=send_buffer.free_credits()if credits:
expected_credits=packet_fifo.pop(0)
assert(credits=expected_credits)else:
break
print ‘Total of %d packets filled with%d(count,len(packet_fifo))
一実施形態において、消費されるPCIeおよびホストメモリ帯域幅を低減するために、送信クレジット返信が凝集される。各送信コンテキストは、SendCtxtCreditCtrl.Thresholdと称されるクレジット閾値を用いてプログラムされる。送信コンテキストは、まだファブリックに放出されていない最も古い送信ブロック(送信バッファ内のアドレス順で)を追跡するカウンタ値を保持する。先に論じられたように、単一の送信バッファ内で複数のVLが使用されるとき、送信ブロックの放出はアウトオブオーダーであってもよい。この状況を解決するために、順序通りのクレジット返信が提供可能となるように、アウトオブオーダー放出を追跡するためのハードウェア状態が採用される。この最も古い送信ブロックのカウンタからフリーカウンタのハードウェアコピーを減じた差分は、まだソフトウェアに返信されていない保留のフリークレジットの数である。この値が閾値と一致またはこれを超過するとき、この送信コンテキストのための送信クレジット返信が開始される。
・多くの場合、ホストソフトウェアは、クレジット返信閾値機構を使用することができ、特定のPIO送信が送信バッファをクリアにしたか否かを問題にしない。
・ホストは、SendCtxtCreditStatusレジスタを用いてアダプタレジスタから送信コンテキスト用の現在のクレジット値を読み取ることができる。
・ホストは、クレジット返信を送信コンテキスト向けに強制的にスケジュールさせるために、SendCtxtCreditForceレジスタに書き込むことができる。
・PbcCreditReturnと称されるPBCビットを介して特定のPIO送信用のクレジット返信をホストが要求できるようにする。
例示的なHFI実施アーキテクチャ
図13は、プロセッサ1306に結合されたファブリックポート112を含むホストファブリックインタフェース102を備える例示的な構成を有するシステムノード1300を示し、これはまたメモリ106に結合されている。ファブリックポート112は、図1に示されるものと類似の高レベル構成を有する、伝送ポート110および受信ポート116を含む。伝送ポート110は、複数の伝送VLバッファに分割された送信バッファ(Tbuf)を含むTxリンクファブリック副層回路および論理1310と、Txリンク転送副層回路および論理1312と、4つの送信器1316を含むTx PHY回路および論理1314と、Txリンク制御ブロック1317と、を含む。受信ポート116は、複数の受信VLバッファに分割された受信バッファ(Rbuf)を含むRxリンクファブリック副層回路および論理1318と、Rxリンク転送副層回路および論理1320と、4つの受信器1324を含むRx PHY回路および論理1322と、Rxリンク制御ブロック1325と、を含む。
PIO書込み命令の前記シーケンスを、アウトオブオーダー実行をサポートするプロセッサ上の命令スレッドとして実行するステップであって、PIO書込み命令の実行は、データをストアバッファ内のストアユニットに書き込ませ、ストアブロックにグループ分けされた前記ストアユニットは一列のストアユニットを備え;前記PIO書込み命令の一部はアウトオブオーダーで実行され、結果的にデータは、前記ストアブロックが充填される前に異なるストアブロック内のストアユニットに書き込まれる、ステップと、
ストアブロックが充填されたときを検出するステップと、
ストアブロックが充填されたことの検出に応えて、前記PIO送信メモリ内のバッファへのポステッドライトを介して前記ストアブロック内の前記データをドレインするステップと、
を備える方法。
パケットを生成するステップと、
前記パケットが64バイトの倍数ではない長さを有すると判断するステップと、
64バイトの倍数までその長さを伸長するために前記パケットにパディングを追加するステップと、
前記パケットデータを備えてパディングを含む1つ以上の整列された64B書込みのシーケンスを備えるPIO書込み命令を生成するステップと、
を備える、節1から3のいずれかに記載の方法。
連続順で複数の連続する送信ブロックにパケットのデータを書き込むためのPIO書込み命令のシーケンスを受信するステップと、
不連続順で前記連続する送信ブロックに前記パケットの前記データを書き込むステップと、
を備える、節1から5のいずれかに記載の方法。
前記複数の送信ブロックのすべてが充填されてしまったら、前記複数の送信ブロック内のデータを放出できるようにするステップと、
をさらに備える、節6に記載の方法。
PIO書込み命令の前記シーケンスを、アウトオブオーダー実行をサポートするプロセッサ上の命令スレッドとして実行するステップであって、PIO書込み命令の実行は、データをストアバッファ内のストアブロックに書き込ませ、前記PIO書込み命令の一部はアウトオブオーダーで実行され、その結果、前記PIO書込み命令が受信される順序とは異なる順序でデータがストアブロックに書き込まれる、ステップと、
ストアブロックが充填されたときを検出するステップと、
ストアブロックが充填されたことの検出に応えて、前記データを前記送信ブロックに書き込むために使用された前記PIO書込み命令内に包含されるアドレスに位置する前記PIO送信メモリ内の送信ブロックへのポステッドライトを介して前記ストアブロック内の前記データをドレインするステップと、
を備える方法。
任意のパケットのデータが1つ以上の連続する送信ブロックに格納される際の各送信コンテキスト用の先入先出(FIFO;First−in,First−out)格納スキームを採用するステップであって、同じ送信コンテキストに複数のパケットのパケットデータを書き込むためのPIO書込み命令は元のFIFO順で連続的にグループ化され、前記複数のパケットの前記パケットデータは前記元のFIFO順とは異なる順序で送信ブロックに書き込まれることが可能である、ステップと、
をさらに備える、節9から11のいずれかに記載の方法。
一旦前記複数の送信ブロックが充填されたら、前記任意のパケットのデータが放出されることを可能にするステップと、
をさらに備える、節12に記載の方法。
同じ送信コンテキスト内の異なるVLを有するパケットがFIFO順とは関係なく放出されることを可能にするステップと、
同じ送信コンテキスト内の同じVLに関連付けられたパケットのデータの放出のためのFIFO順を強制するステップと、
をさらに備える、節13に記載の方法。
16.アウトオブオーダー実行をサポートし、メモリインタフェース、少なくとも1つのストアバッファ、および第一PCIe(Peripheral Component Interconnect Express)インタフェースを含む複数のプロセッサコアを有する、プロセッサと、
PCIe相互接続を介して前記プロセッサの前記第一PCIeインタフェースに結合された、第二PCIeインタフェースと、
前記第二PCIeインタフェースに動作可能に結合され、プログラム入力/出力(PIO)送信メモリを含む、伝送エンジンと、
を備える装置であって、前記プロセッサは、
前記メモリインタフェースに結合されたときにメモリ内に格納されたそれぞれのパケット用のパケットデータを前記PIO送信メモリに書き込むためのプログラム入力/出力(PIO)書込み命令のシーケンスを受信し、
PIO書込み命令の前記シーケンスをプロセッサコア上の命令スレッドとして実行し、PIO書込み命令の実行は、データをストアバッファ内のストアユニットに書き込ませ、ストアブロックにグループ分けされた前記ストアユニットは一列のストアユニットを備え;前記PIO書込み命令の一部はアウトオブオーダーで実行され、結果的にデータは、前記ストアブロックが充填される前に異なるストアブロック内のストアユニットに書き込み、、
ストアブロックが充填されたときを検出し、
ストアブロックが充填されたことの検出に応えて、前記PCIe相互接続を通じて送信された前記PIO送信メモリ内のバッファへのPCIeポステッドライトを介して前記ストアブロック内の前記データをドレインする、
回路および論理を含む、装置。
連続順で複数の連続する送信ブロックにパケットのデータを書き込むためのPIO書込み命令のシーケンスを受信し、
不連続順で前記連続する送信ブロックに前記パケットの前記データを書き込む、
さらなる回路および論理を含む、節16から19のいずれかに記載の装置。
前記複数の送信ブロックのすべてが充填されてしまったら、前記複数の送信ブロック内のデータを放出できるようにする、
回路および論理をさらに備える、節20に記載の装置。
いくつの連続する送信ブロックが前記パケットのデータを格納するために採用されるべきかを判断する、
回路および論理をさらに備える、節21に記載の装置。
PCIe相互接続を介して前記プロセッサの前記第一PCIeインタフェースに結合された、第二PCIeインタフェースと、
前記第二PCIeインタフェースに動作可能に結合され、プログラム入力/出力(PIO)送信メモリを含む、伝送エンジンと、
を備える装置であって、前記プロセッサは、
メモリ内に格納されたそれぞれのパケット用のパケットデータを前記PIO送信メモリに書き込むためのプログラム入力/出力(PIO)書込み命令のシーケンスを受信するためであって、各PIO書込み命令は、前記データが書き込まれる前記PIO送信メモリ内の送信ブロックのデータおよびメモリマップアドレスを包含するメモリ内のキャッシュラインの位置を定義し、
PIO書込み命令の前記シーケンスをプロセッサコア上の命令スレッドとして実行するためであって、PIO書込みの実行は、データをストアバッファ内のストアブロックに書き込ませ、前記PIO書込み命令の一部はアウトオブオーダーで実行され、結果的にデータは、前記PIO書込み命令が受信される順とは異なる順序でストアブロックに書き込み、
ストアブロックが充填されたときを検出し、
ストアブロックが充填されたことの検出に応えて、前記データを送信ブロックに書き込むために使用された前記PIO書込み命令に包含される前記アドレスに位置する前記PIO送信メモリ内の前記送信ブロックへのPCIeポステッドライトを介して、前記ストアブロック内の前記データをドレインする、
回路および論理を含む、装置。
任意のパケットのデータが1つ以上の連続する送信ブロックに格納される際の各送信コンテキスト用の先入先出(FIFO;First−in,First−out)格納スキームを実施し、
前記1つ以上の連続する送信ブロックのすべてが任意のパケットのパケットデータで充填されたことを検出し、
一旦前記複数の送信ブロックが充填されたら、前記任意のパケットのデータが放出されることを可能にする、
回路および論理をさらに備え、
同じ送信コンテキストに複数のパケットのパケットデータを書き込むためのPIO書込み命令は元のFIFO順で連続的にグループ化され、前記複数のパケットの前記パケットデータは前記PIO書込み命令のアウトオブオーダー実行を介して前記元のFIFO順とは異なる順序で送信ブロックに書き込まれることが可能である、
節23または24に記載の装置。
同じ送信コンテキスト内の異なるVLを有するパケットがFIFO順とは関係なく放出されることを可能にし、
同じ送信コンテキスト内の同じVLに関連付けられたパケットのデータの放出のためのFIFO順を強制する、
回路および論理をさらに備える、節25に記載の装置。
前記PCIeインタフェースに動作可能に結合されたプログラム入力/出力(PIO)送信メモリ、および
前記PIO送信メモリに動作可能に結合された放出ブロック、
を含む伝送エンジンと、
前記放出ブロックに動作可能に結合された伝送ポートを含むネットワークポートと、
を備える装置であって、
前記伝送エンジンは、
前記PIO送信メモリを、各々が複数の連続する送信ブロックを備える、複数の送信コンテキストに分割し、
PCIe相互接続を介して前記PCIeインタフェースに結合されたプロセッサからインバウンドPCIeポステッドライトを受信し、各PCIeポステッドライトは、前記プロセッサに結合されたメモリ内に格納されたパケットに対応するパケットデータを包含し、PIO書込み命令を介して単一の送信ブロックに書き込まれ、任意のパケットのパケットデータは1つの送信ブロックまたは複数の連続する送信ブロックに書き込まれ、複数の連続する送信ブロックに書き込まれるパケットのパケットデータはアウトオブオーダーで受信されることが可能とし、
パケット用の複数の連続する送信ブロックが充填されたときを検出し、
パケット用の前記連続する送信ブロックのすべてが充填されたとして検出されたときに、前記複数の連続する送信ブロック内のパケットデータを、前記放出ブロックへの放出の対象であるとして標識する、
回路および論理をさらに備える、装置。
アウトオブオーダー実行をサポートし、メモリインタフェース、少なくとも1つのストアバッファ、およびPCIe相互接続を介して前記第一PCIeインタフェースに結合された第二PCIe(Peripheral Component Interconnect Express)インタフェースを含む、複数のプロセッサコアを有するプロセッサであって、
前記メモリインタフェースと結合されたときにメモリ内に格納されたそれぞれのパケット用のパケットデータを前記PIO送信メモリに書き込むためのPIO書込み命令のシーケンスを受信し、
PIO書込み命令の前記シーケンスをプロセッサコア上の命令スレッドとして実行し、PIO書込み命令の実行は、データをストアバッファ内のストアユニットに書き込ませ、ストアブロックにグループ分けされた前記ストアユニットは一列のストアユニットを備え;前記PIO書込み命令の一部はアウトオブオーダーで実行され、結果的にデータは、前記ストアブロックが充填される前に異なるストアブロック内のストアユニットに書き込み、
ストアブロックが充填されたときを検出し、
ストアブロックが充填されたことの検出に応えて、前記PCIe相互接続を通じて送信された前記PIO送信メモリ内のバッファへのPCIeポステッドライトを介して前記ストアブロック内の前記データをドレインする、
回路および論理をさらに含むプロセッサをさらに備える、節27から29のいずれかに記載の装置。
前記PCIeインタフェースに結合された受信エンジンと、
前記受信エンジンに結合された受信ポートと、
をさらに備えるホストファブリックインタフェースを備える、節27から30のいずれかに記載の装置。
PCIe相互接続を介して前記プロセッサの前記第一PCIeインタフェースに結合された、第二PCIeインタフェースと、
前記第二PCIeインタフェースに動作可能に結合され、プログラム入力/出力(PIO)送信メモリを含む、伝送エンジンと、
を備える装置であって、
前記プロセッサは、
前記メモリインタフェースに結合されたときにメモリ内に格納されたそれぞれのパケット用のパケットデータを前記PIO送信メモリに書き込むためのプログラム入力/出力(PIO)書込み命令のシーケンスを受信し、
PIO書込み命令の前記シーケンスをプロセッサコア上の命令スレッドとして実行し、PIO書込みの実行は、データをストアバッファ内のストアユニットに書き込ませ、ストアブロックにグループ分けされた前記ストアユニットは一列のストアユニットを備え;前記PIO書込み命令の一部はアウトオブオーダーで実行され、結果的にデータは、前記ストアブロックが充填される前に異なるストアブロック内のストアユニットに書き込み、
ストアブロックが充填されたときを検出し、
ストアブロックが充填されたことの検出に応えて、前記PCIe相互接続を通じて送信された前記PIO送信メモリ内のバッファへのPCIeポステッドライトを介して前記ストアブロック内の前記データをドレインする、
手段をさらに備える、装置。
連続順で複数の連続する送信ブロックにパケットのデータを書き込むためのPIO書込み命令のシーケンスを受信し、
不連続順で前記連続する送信ブロックに前記パケットの前記データを書き込む、
手段をさらに備える、節33から36のいずれかに記載の装置。
前記複数の送信ブロックのすべてが充填されてしまったら、前記複数の送信ブロック内のデータを放出できるようにする、
手段をさらに備える、節37に記載の装置。
いくつの連続する送信ブロックが前記パケットのデータを格納するために採用されるべきかを判断する、
手段をさらに備える、節38に記載の装置。
Claims (25)
- メモリ内に格納されたそれぞれのパケット用のパケットデータをネットワークアダプタ上のPIO送信メモリに書き込むためのプログラム入力/出力(PIO)書込み命令のシーケンスをプロセッサによって受信するステップと、
PIO書込み命令の前記シーケンスを、アウトオブオーダー実行をサポートする前記プロセッサ上の命令スレッドとして実行するステップであって、PIO書込み命令の実行は、データをストアバッファ内のストアユニットに書き込ませ、ストアブロックにグループ分けされた前記ストアユニットは一列のストアユニットを備え;前記PIO書込み命令の一部はアウトオブオーダーで実行され、結果的にデータは、前記ストアブロックが充填される前に異なるストアブロック内のストアユニットに書き込まれる、ステップと、
ストアブロックが充填されたときを検出するステップと、
ストアブロックが充填されたことの検出に応えて、前記PIO送信メモリ内のバッファへのポステッドライトを介して前記ストアブロック内の前記データをドレインするステップと、
を備える方法。 - 前記メモリは64バイト(64B)キャッシュラインを採用し、各ストアブロックは64バイトのデータを備え、前記ポステッドライトは64BのPCIe(Peripheral Component Interconnect Express)ポステッドライトを備える、請求項1に記載の方法。
- 前記プロセッサは64ビットプロセッサを備え、各ストアユニットは、単一の命令を用いて前記プロセッサ内の64ビットデータレジスタからストアユニットに書き込まれた64ビットのデータを備える、請求項1に記載の方法。
- PIO書込み命令の前記シーケンスは、それぞれのパケットごとに1つ以上の整列された64B書込みの連続グループとして受信され、前記方法は、
パケットを生成するステップと、
前記パケットが64バイトの倍数ではない長さを有すると判断するステップと、
64バイトの倍数までその長さを伸長するために前記パケットにパディングを追加するステップと、
前記パケットデータを備えてパディングを含む1つ以上の整列された64B書込みのシーケンスを備えるPIO書込み命令を生成するステップと、
を備える、請求項1に記載の方法。 - 前記プロセッサはライトコンバイニングを採用し、アウトオブオーダーPIO書込み命令の実行の結果、データは不連続順でストアブロック内のストアユニットに書き込まれる、請求項1に記載の方法。
- 前記PIO送信メモリは複数の送信コンテキストに分割され、各送信コンテキストは送信ブロックのシーケンスとして構造化されており、前記方法は、
連続順で複数の連続する送信ブロックにパケットのデータを書き込むためのPIO書込み命令のシーケンスを受信するステップと、
不連続順で前記連続する送信ブロックに前記パケットの前記データを書き込むステップと、
をさらに備える、請求項1に記載の方法。 - 前記複数の連続する送信ブロックのすべてが前記パケットデータで充填されたことを検出するステップと、
前記複数の送信ブロックのすべてが充填されてしまったら、前記複数の送信ブロック内のデータを放出できるようにするステップと、
をさらに備える、請求項6に記載の方法。 - メモリ内に格納されたそれぞれのパケット用のパケットデータをネットワークアダプタ上のPIO送信メモリに書き込むためのプログラム入力/出力(PIO)書込み命令のシーケンスをプロセッサによって受信するステップであって、各PIO書込み命令は、データ、および前記データが書き込まれるPIO送信メモリ内の送信ブロックのメモリマップアドレスを包含するメモリ内のキャッシュラインの位置を定義する、ステップと、
PIO書込み命令の前記シーケンスを、アウトオブオーダー実行をサポートする前記プロセッサ上の命令スレッドとして実行するステップであって、PIO書込み命令の実行は、データをストアバッファ内のストアブロックに書き込ませ、前記PIO書込み命令の一部はアウトオブオーダーで実行され、その結果、前記PIO書込み命令が受信される順序とは異なる順序でデータがストアブロックに書き込まれる、ステップと、
ストアブロックが充填されたときを検出するステップと、
ストアブロックが充填されたことの検出に応えて、前記データを前記送信ブロックに書き込むために使用された前記PIO書込み命令内に包含されるアドレスに位置する前記PIO送信メモリ内の送信ブロックへのポステッドライトを介して前記ストアブロック内の前記データをドレインするステップと、
を備える方法。 - 前記PIO書込み命令は512ビット書込み命令を備え、メモリキャッシュライン、ストアブロック、および送信ブロックの各々は64バイトのサイズを有する、請求項8に記載の方法。
- ポステッドライトは、64バイト(64B)PCIe(Peripheral Component Interconnect Express)ポステッドライトを備える、請求項9に記載の方法。
- 前記PIO送信メモリを複数の送信コンテキストに分割するステップと、
任意のパケットのデータが1つ以上の連続する送信ブロックに格納される際の各送信コンテキスト用の先入先出(FIFO;First−in,First−out)格納スキームを採用するステップであって、同じ送信コンテキストに複数のパケットのパケットデータを書き込むためのPIO書込み命令は元のFIFO順で連続的にグループ化され、前記複数のパケットの前記パケットデータは前記元のFIFO順とは異なる順序で送信ブロックに書き込まれることが可能である、ステップと、
をさらに備える、請求項8に記載の方法。 - 前記1つ以上の連続する送信ブロックのすべてが任意のパケットについて前記パケットデータで充填されたことを検出するステップと、
一旦前記複数の送信ブロックが充填されたら、前記任意のパケットのデータが放出されることを可能にするステップと、
をさらに備える、請求項11に記載の方法。 - そのパケットに関連付けられたVLを識別するために使用される仮想レーン(VL)標識を用いて各パケット内のヘッダフィールドを符号化するステップと、
同じ送信コンテキスト内の異なるVLを有するパケットがFIFO順とは関係なく放出されることを可能にするステップと、
同じ送信コンテキスト内の同じVLに関連付けられたパケットのデータの放出のためのFIFO順を強制するステップと、
をさらに備える、請求項12に記載の方法。 - アウトオブオーダー実行をサポートし、メモリインタフェース、少なくとも1つのストアバッファ、および第一PCIe(Peripheral Component Interconnect Express)インタフェースを含む複数のプロセッサコアを有する、プロセッサと、
PCIe相互接続を介して前記プロセッサの前記第一PCIeインタフェースに結合された、第二PCIeインタフェースと、
前記第二PCIeインタフェースに動作可能に結合され、プログラム入力/出力(PIO)送信メモリを含む、伝送エンジンと、
を備える装置であって、前記プロセッサは、
前記メモリインタフェースに結合されたときにメモリ内に格納されたそれぞれのパケット用のパケットデータを前記PIO送信メモリに書き込むためのプログラム入力/出力(PIO)書込み命令のシーケンスを受信し、
PIO書込み命令の前記シーケンスをプロセッサコア上の命令スレッドとして実行し、ここでPIO書込み命令の実行は、データをストアバッファ内のストアユニットに書き込ませ、ストアブロックにグループ分けされた前記ストアユニットは一列のストアユニットを備え;前記PIO書込み命令の一部はアウトオブオーダーで実行され、結果的にデータは、前記ストアブロックが充填される前に異なるストアブロック内のストアユニットに書き込まれ、
ストアブロックが充填されたときを検出し、
ストアブロックが充填されたことの検出に応えて、前記PCIe相互接続を通じて送信された前記PIO送信メモリ内のバッファへのPCIeポステッドライトを介して前記ストアブロック内の前記データをドレインする、
回路および論理を含む、装置。 - 前記メモリは64バイト(64B)キャッシュラインを採用し、各ストアブロックは64バイトのデータを備え、前記PCIeポステッドライトは64BのPCIe(Peripheral Component Interconnect Express)ポステッドライトを備える、請求項14に記載の装置。
- 前記プロセッサは64ビットプロセッサを備え、各ストアユニットは、単一の命令を用いて前記プロセッサ内の64ビットデータレジスタからストアユニットに書き込まれた64ビットのデータを備える、請求項14に記載の装置。
- 前記プロセッサはライトコンバイニングを採用し、アウトオブオーダーPIO書込み命令の実行の結果、データは不連続順でストアブロック内のストアユニットに書き込まれる、請求項14に記載の装置。
- 前記PIO送信メモリは複数の送信コンテキストに分割され、各送信コンテキストは送信ブロックのシーケンスとして構造化されており、前記装置は、
連続順で複数の連続する送信ブロックにパケットのデータを書き込むためのPIO書込み命令のシーケンスを受信し、
不連続順で前記連続する送信ブロックに前記パケットの前記データを書き込む、
さらなる回路および論理を含む、請求項14に記載の装置。 - 前記複数の連続する送信ブロックのすべてが前記パケットデータで充填されたことを検出し、
前記複数の送信ブロックのすべてが充填されてしまったら、前記複数の送信ブロック内のデータを放出できるようにする、
回路および論理をさらに備える、請求項18に記載の装置。 - PCIe(Peripheral Component Interconnect Express)インタフェースと、
前記PCIeインタフェースに動作可能に結合されたプログラム入力/出力(PIO)送信メモリと、
前記PIO送信メモリに動作可能に結合された放出ブロックと、
を含む伝送エンジンと、
前記放出ブロックに動作可能に結合された伝送ポートを含むネットワークポートと、
を備える装置であって、前記伝送エンジンは、
前記PIO送信メモリを、各々が複数の連続する送信ブロックを備える、複数の送信コンテキストに分割し、
PCIe相互接続を介して前記PCIeインタフェースに結合されたプロセッサからインバウンドPCIeポステッドライトを受信し、各PCIeポステッドライトは、前記プロセッサに結合されたメモリ内に格納されたパケットに対応するパケットデータを包含し、PIO書込み命令を介して単一の送信ブロックに書き込まれ、ここで任意のパケットのパケットデータは1つの送信ブロックまたは複数の連続する送信ブロックに書き込まれ、複数の連続する送信ブロックに書き込まれるパケットのパケットデータはアウトオブオーダーで受信されることが可能とされ、
パケット用の複数の連続する送信ブロックが充填されたときを検出し、
パケット用の前記連続する送信ブロックのすべてが充填されたとして検出されたときに、前記複数の連続する送信ブロック内のパケットデータを、前記放出ブロックへの放出の対象であるとして標識する、
回路および論理をさらに備える、装置。 - 前記放出ブロックから前記伝送ポートに放出されるために充填された前記複数の送信コンテキスト内のパケットの中からパケットを選択するためのアービタを実現するための回路および論理をさらに備える、請求項20に記載の装置。
- 前記伝送エンジンは、送信ダイレクトメモリアクセス(SDMA)メモリと、前記SDMAメモリ内のバッファにデータを書き込むためにDMA転送を用いて前記プロセッサに結合されたメモリからデータを引き出すように構成された複数のSDMAエンジンと、をさらに備える、請求項20に記載の装置。
- 前記PCIeインタフェースは第一PCIeインタフェースを備え、前記装置は、
アウトオブオーダー実行をサポートし、メモリインタフェース、少なくとも1つのストアバッファ、およびPCIe相互接続を介して前記第一PCIeインタフェースに結合された第二PCIe(Peripheral Component Interconnect Express)インタフェースを含む、複数のプロセッサコアを有するプロセッサであって、
前記メモリインタフェースと結合されたときにメモリ内に格納されたそれぞれのパケット用のパケットデータを前記PIO送信メモリに書き込むためのPIO書込み命令のシーケンスを受信し、
PIO書込み命令の前記シーケンスをプロセッサコア上の命令スレッドとして実行し、ここでPIO書込み命令の実行は、データをストアバッファ内のストアユニットに書き込ませ、ストアブロックにグループ分けされた前記ストアユニットは一列のストアユニットを備え;前記PIO書込み命令の一部はアウトオブオーダーで実行され、結果的にデータは、前記ストアブロックが充填される前に異なるストアブロック内のストアユニットに書き込まれ、
ストアブロックが充填されたときを検出し、
ストアブロックが充填されたことの検出に応えて、前記PCIe相互接続を通じて送信された前記PIO送信メモリ内のバッファへのPCIeポステッドライトを介して前記ストアブロック内の前記データをドレインする、
回路および論理をさらに含むプロセッサをさらに備える、請求項20に記載の装置。 - 前記装置は、
前記PCIeインタフェースに結合された受信エンジンと、
前記受信エンジンに結合された受信ポートと、
をさらに備えるホストファブリックインタフェースを備える、請求項20に記載の装置。 - 前記装置は、請求項24に記載のホストファブリックインタフェースのために定義された構成を有する複数のホストファブリックインタフェースを備える、請求項24に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/316,670 | 2014-06-26 | ||
US14/316,670 US9460019B2 (en) | 2014-06-26 | 2014-06-26 | Sending packets using optimized PIO write sequences without SFENCEs |
PCT/US2015/034359 WO2015199946A1 (en) | 2014-06-26 | 2015-06-05 | Sending packets using optimized pio write sequences without sfences |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017525065A JP2017525065A (ja) | 2017-08-31 |
JP6377844B2 true JP6377844B2 (ja) | 2018-08-22 |
Family
ID=54930564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017516268A Active JP6377844B2 (ja) | 2014-06-26 | 2015-06-05 | Sfenceを用いずに最適化されたpio書込みシーケンスを用いるパケット送信 |
Country Status (5)
Country | Link |
---|---|
US (4) | US9460019B2 (ja) |
EP (1) | EP3161649B1 (ja) |
JP (1) | JP6377844B2 (ja) |
CN (1) | CN106415515B (ja) |
WO (1) | WO2015199946A1 (ja) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9892084B2 (en) | 2013-12-10 | 2018-02-13 | Apple Inc. | Methods and apparatus for virtual channel allocation via a high speed bus interface |
US10459674B2 (en) | 2013-12-10 | 2019-10-29 | Apple Inc. | Apparatus and methods for packing and transporting raw data |
US9460019B2 (en) | 2014-06-26 | 2016-10-04 | Intel Corporation | Sending packets using optimized PIO write sequences without SFENCEs |
US9477631B2 (en) | 2014-06-26 | 2016-10-25 | Intel Corporation | Optimized credit return mechanism for packet sends |
US9830289B2 (en) * | 2014-09-16 | 2017-11-28 | Apple Inc. | Methods and apparatus for aggregating packet transfer over a virtual bus interface |
US9971397B2 (en) | 2014-10-08 | 2018-05-15 | Apple Inc. | Methods and apparatus for managing power with an inter-processor communication link between independently operable processors |
US9842036B2 (en) | 2015-02-04 | 2017-12-12 | Apple Inc. | Methods and apparatus for controlled recovery of error information between independently operable processors |
US10042794B2 (en) | 2015-06-12 | 2018-08-07 | Apple Inc. | Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link |
US11032397B2 (en) * | 2015-06-17 | 2021-06-08 | Hewlett Packard Enterprise Development Lp | Method and system for high speed data links |
US10229076B2 (en) | 2015-09-09 | 2019-03-12 | International Business Machines Corporation | Peripheral component interconnect express (PCIE) pseudo-virtual channels using vendor defined messages |
US9483424B1 (en) * | 2015-12-04 | 2016-11-01 | International Business Machines Corporation | Peripheral component interconnect express (PCIE) pseudo-virtual channels and non-blocking writes |
US10085214B2 (en) | 2016-01-27 | 2018-09-25 | Apple Inc. | Apparatus and methods for wake-limiting with an inter-device communication link |
US10191852B2 (en) | 2016-02-29 | 2019-01-29 | Apple Inc. | Methods and apparatus for locking at least a portion of a shared memory resource |
US10191859B2 (en) | 2016-03-31 | 2019-01-29 | Apple Inc. | Memory access protection apparatus and methods for memory mapped access between independently operable processors |
US10523867B2 (en) | 2016-06-10 | 2019-12-31 | Apple Inc. | Methods and apparatus for multi-lane mapping, link training and lower power modes for a high speed bus interface |
US10591976B2 (en) | 2016-11-10 | 2020-03-17 | Apple Inc. | Methods and apparatus for providing peripheral sub-system stability |
US10775871B2 (en) | 2016-11-10 | 2020-09-15 | Apple Inc. | Methods and apparatus for providing individualized power control for peripheral sub-systems |
WO2018122619A2 (en) * | 2016-12-07 | 2018-07-05 | Marvell World Trade Ltd. | System and method for memory access token reassignment |
US10169273B2 (en) * | 2017-01-11 | 2019-01-01 | Qualcomm Incorporated | Forced compression of single I2C writes |
US10346226B2 (en) | 2017-08-07 | 2019-07-09 | Time Warner Cable Enterprises Llc | Methods and apparatus for transmitting time sensitive data over a tunneled bus interface |
US10963295B2 (en) * | 2017-09-08 | 2021-03-30 | Oracle International Corporation | Hardware accelerated data processing operations for storage data |
US10331612B1 (en) | 2018-01-09 | 2019-06-25 | Apple Inc. | Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors |
US11792307B2 (en) | 2018-03-28 | 2023-10-17 | Apple Inc. | Methods and apparatus for single entity buffer pool management |
US11381514B2 (en) | 2018-05-07 | 2022-07-05 | Apple Inc. | Methods and apparatus for early delivery of data link layer packets |
US10430352B1 (en) | 2018-05-18 | 2019-10-01 | Apple Inc. | Methods and apparatus for reduced overhead data transfer with a shared ring buffer |
JP7102936B2 (ja) * | 2018-05-23 | 2022-07-20 | 日本電信電話株式会社 | パケット処理装置およびパケット処理方法 |
US10585699B2 (en) | 2018-07-30 | 2020-03-10 | Apple Inc. | Methods and apparatus for verifying completion of groups of data transactions between processors |
US10719376B2 (en) | 2018-08-24 | 2020-07-21 | Apple Inc. | Methods and apparatus for multiplexing data flows via a single data structure |
US10846224B2 (en) | 2018-08-24 | 2020-11-24 | Apple Inc. | Methods and apparatus for control of a jointly shared memory-mapped region |
US10977198B2 (en) * | 2018-09-12 | 2021-04-13 | Micron Technology, Inc. | Hybrid memory system interface |
US10838450B2 (en) | 2018-09-28 | 2020-11-17 | Apple Inc. | Methods and apparatus for synchronization of time between independently operable processors |
US10789110B2 (en) | 2018-09-28 | 2020-09-29 | Apple Inc. | Methods and apparatus for correcting out-of-order data transactions between processors |
TWI773959B (zh) * | 2019-01-31 | 2022-08-11 | 美商萬國商業機器公司 | 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品 |
TWI767175B (zh) | 2019-01-31 | 2022-06-11 | 美商萬國商業機器公司 | 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品 |
JP7379491B2 (ja) | 2019-01-31 | 2023-11-14 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 入出力ストア命令をハンドリングする方法、システム、およびプログラム |
JP7324282B2 (ja) | 2019-01-31 | 2023-08-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 入出力ストア命令をハンドリングする方法、システム、およびプログラム |
JP6988863B2 (ja) * | 2019-08-08 | 2022-01-05 | 横河電機株式会社 | プロトコルコンバータ、データ伝送方法、データ伝送プログラム、及び、データ伝送システム |
US11558348B2 (en) | 2019-09-26 | 2023-01-17 | Apple Inc. | Methods and apparatus for emerging use case support in user space networking |
US11829303B2 (en) | 2019-09-26 | 2023-11-28 | Apple Inc. | Methods and apparatus for device driver operation in non-kernel space |
US11210248B2 (en) * | 2019-12-20 | 2021-12-28 | Advanced Micro Devices, Inc. | System direct memory access engine offload |
CN111666235B (zh) * | 2020-05-26 | 2022-02-08 | 中国人民解放军国防科技大学 | 用于高速互连网络接口芯片的pio通信装置,芯片,设备及方法 |
EP4144048A1 (en) | 2020-06-08 | 2023-03-08 | Liquid-Markets GmbH | Hardware-based transaction exchange |
US11606302B2 (en) | 2020-06-12 | 2023-03-14 | Apple Inc. | Methods and apparatus for flow-based batching and processing |
US20220012201A1 (en) * | 2020-07-07 | 2022-01-13 | Apple Inc. | Scatter and Gather Streaming Data through a Circular FIFO |
US11775359B2 (en) | 2020-09-11 | 2023-10-03 | Apple Inc. | Methods and apparatuses for cross-layer processing |
US11954540B2 (en) | 2020-09-14 | 2024-04-09 | Apple Inc. | Methods and apparatus for thread-level execution in non-kernel space |
US11799986B2 (en) | 2020-09-22 | 2023-10-24 | Apple Inc. | Methods and apparatus for thread level execution in non-kernel space |
US11301408B1 (en) | 2021-06-07 | 2022-04-12 | Liquid-Markets-Holdings, Incorporated | Asymmetric read / write architecture for enhanced throughput and reduced latency |
US11876719B2 (en) | 2021-07-26 | 2024-01-16 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
US11882051B2 (en) | 2021-07-26 | 2024-01-23 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
CN113760795B (zh) * | 2021-08-30 | 2024-04-26 | 浪潮电子信息产业股份有限公司 | 一种异步fifo存储器读写控制方法、装置及设备 |
CN117348929A (zh) * | 2022-06-29 | 2024-01-05 | 中科寒武纪科技股份有限公司 | 指令执行方法、系统控制器及相关产品 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790887A (en) | 1996-02-15 | 1998-08-04 | International Business Machines Corporation | Method and apparatus for processing programmed input/output (PIO) operations in a computer system |
US6073210A (en) * | 1998-03-31 | 2000-06-06 | Intel Corporation | Synchronization of weakly ordered write combining operations using a fencing mechanism |
US6965563B1 (en) * | 2000-09-28 | 2005-11-15 | Western Digital Ventures, Inc. | Resource reservation system in a computer network to support end-to-end quality-of-service constraints |
US7146482B2 (en) | 2003-11-25 | 2006-12-05 | International Business Machines Corporation | Memory mapped input/output emulation |
US7522597B2 (en) | 2004-08-30 | 2009-04-21 | International Business Machines Corporation | Interface internet protocol fragmentation of large broadcast packets in an environment with an unaccommodating maximum transfer unit |
US7353301B2 (en) * | 2004-10-29 | 2008-04-01 | Intel Corporation | Methodology and apparatus for implementing write combining |
US7610528B2 (en) * | 2006-02-14 | 2009-10-27 | Atmel Corporation | Configuring flash memory |
US7428610B2 (en) | 2006-02-14 | 2008-09-23 | Atmel Corporation | Writing to flash memory |
US20070266126A1 (en) * | 2006-04-13 | 2007-11-15 | Clark Leo J | Data processing system and method of data processing supporting ticket-based operation tracking |
US8213294B2 (en) | 2006-06-27 | 2012-07-03 | International Business Machines Corporation | Mechanism for detecting and clearing I/O fabric lockup conditions for error recovery |
JP5002201B2 (ja) * | 2006-06-30 | 2012-08-15 | 株式会社東芝 | メモリシステム |
US8484307B2 (en) | 2008-02-01 | 2013-07-09 | International Business Machines Corporation | Host fabric interface (HFI) to perform global shared memory (GSM) operations |
US8566508B2 (en) | 2009-04-08 | 2013-10-22 | Google Inc. | RAID configuration in a flash memory data storage device |
US8122177B1 (en) | 2009-05-19 | 2012-02-21 | Xilinx, Inc. | Direct memory access technique for use with PCIe endpoints |
US8032673B2 (en) | 2009-12-14 | 2011-10-04 | Apple Inc. | Transaction ID filtering for buffered programmed input/output (PIO) write acknowledgements |
US9021146B2 (en) | 2011-08-30 | 2015-04-28 | Apple Inc. | High priority command queue for peripheral component |
IN2012DE00981A (ja) * | 2012-03-30 | 2015-09-11 | Moser Baer India Ltd | |
US9477631B2 (en) | 2014-06-26 | 2016-10-25 | Intel Corporation | Optimized credit return mechanism for packet sends |
US9460019B2 (en) | 2014-06-26 | 2016-10-04 | Intel Corporation | Sending packets using optimized PIO write sequences without SFENCEs |
-
2014
- 2014-06-26 US US14/316,670 patent/US9460019B2/en active Active
-
2015
- 2015-06-05 WO PCT/US2015/034359 patent/WO2015199946A1/en active Application Filing
- 2015-06-05 JP JP2017516268A patent/JP6377844B2/ja active Active
- 2015-06-05 EP EP15811329.0A patent/EP3161649B1/en active Active
- 2015-06-05 CN CN201580028295.6A patent/CN106415515B/zh active Active
-
2016
- 2016-09-02 US US15/255,284 patent/US9588899B2/en active Active
- 2016-09-27 US US15/277,527 patent/US9734077B2/en active Active
-
2017
- 2017-03-03 US US15/449,401 patent/US10073796B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN106415515A (zh) | 2017-02-15 |
US9588899B2 (en) | 2017-03-07 |
EP3161649A1 (en) | 2017-05-03 |
EP3161649A4 (en) | 2018-03-28 |
US20170177516A1 (en) | 2017-06-22 |
US20160371056A1 (en) | 2016-12-22 |
JP2017525065A (ja) | 2017-08-31 |
CN106415515B (zh) | 2019-06-25 |
US20170017465A1 (en) | 2017-01-19 |
US9460019B2 (en) | 2016-10-04 |
US10073796B2 (en) | 2018-09-11 |
WO2015199946A1 (en) | 2015-12-30 |
US9734077B2 (en) | 2017-08-15 |
EP3161649B1 (en) | 2019-07-24 |
US20150378737A1 (en) | 2015-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6377844B2 (ja) | Sfenceを用いずに最適化されたpio書込みシーケンスを用いるパケット送信 | |
US9984020B2 (en) | Optimized credit return mechanism for packet sends | |
US9785359B2 (en) | Sending packets using optimized PIO write sequences without sfences and out of order credit returns | |
US11194753B2 (en) | Platform interface layer and protocol for accelerators | |
US8489794B2 (en) | Processor bus bridge for network processors or the like | |
JP2014509427A (ja) | Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け | |
JP2005092630A (ja) | メモリ制御装置及び制御方法 | |
KR101736460B1 (ko) | 크로스-다이 인터페이스 스누프 또는 글로벌 관측 메시지 오더링 | |
KR20210092222A (ko) | 버스 상의 메모리 요청 체이닝 | |
EP3841484B1 (en) | Link layer data packing and packet flow control scheme | |
CN116614558A (zh) | 具有端到端可靠性和定序协议的收发器系统 | |
Baier et al. | High-Speed Torus Interconnect Using FPGAs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180116 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20180411 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180614 |
|
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: 20180626 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180725 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6377844 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |