JP2022510281A - キャッシュラインアドレスに基づくストリーム内のコマンドの集約 - Google Patents
キャッシュラインアドレスに基づくストリーム内のコマンドの集約 Download PDFInfo
- Publication number
- JP2022510281A JP2022510281A JP2021530941A JP2021530941A JP2022510281A JP 2022510281 A JP2022510281 A JP 2022510281A JP 2021530941 A JP2021530941 A JP 2021530941A JP 2021530941 A JP2021530941 A JP 2021530941A JP 2022510281 A JP2022510281 A JP 2022510281A
- Authority
- JP
- Japan
- Prior art keywords
- command
- address
- read
- write
- write address
- 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.)
- Pending
Links
- 230000002776 aggregation Effects 0.000 title description 5
- 238000004220 aggregation Methods 0.000 title description 5
- 238000012545 processing Methods 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims description 33
- 238000010586 diagram Methods 0.000 abstract description 15
- 230000008859 change Effects 0.000 abstract description 3
- 230000015654 memory Effects 0.000 description 29
- 230000008878 coupling Effects 0.000 description 10
- 238000010168 coupling process Methods 0.000 description 10
- 238000005859 coupling reaction Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000005422 blasting Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0677—Optical disk device, e.g. CD-ROM, DVD
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Image Generation (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
LiteralWriteAddress = currentAddress
SubLiteralOffset = previousMatchOffset
if (hasSubliterals)
SubLiteralAddress = currentAddress - SubLiteralOffset
MatchWriteAddress = currentAddress + LiteralLength
matchWrapsAtWriteStart = MatchLength > MatchOffset
if (matchWrapsAtWriteStart)
MatchRead = MatchOffset
else:
MatchRead = MatchLength
MatchAddress = currentAddress + LiteralLength - MatchOffset
currentAddress += LiteralLength + MatchLength
擬似コードは、コマンドのセット510に亘ってチェーンされており、潜在的に8つのサブコマンドを生成する。
‐ ReadAddress
‐ ReadLength:一致は、WriteLengthよりも短くすることができる。出力を満たすために読み出しが繰り返される。
‐ HasLiterals:真の場合、サブコマンドは、出力書き込み長と同じ数のリテラルを有する。
‐ WriteAddress
‐ WriteLength
‐ WriteLine:チャンクの先頭を基準とする32バイトの整列アドレス
‐ WriteLength:ラインの最後まで覆われ、それが交差すると展開される。
‐ WriteStart[4:0]:ライン内の書き込みアドレス
‐ ReadLine[2 Banks]:2つの必ずしも連続していない32B読み出しライン
‐ バンク0は偶数ラインを有する。
‐ バンク1は奇数ラインを有する。
‐ ReadStart[5:0]:ReadAddress[5:0]
‐ ReadLength [5:0]:短い読み出しの場合には反復がどこで開始するかを定義し、長い読み出しの場合には何もしないのを定義する。
‐ RepeatRotate[6:0]:独自の出力を読み出し、ソースデータを繰り返す必要のある長いコピーの場合
#計算し、演算をラインまで制限する
{oWriteLine, writeStart[4:0]} = iWriteAddress
writeEnd = min(writeStart + iWriteLength, 32)
length = writeEnd - writeStart
oWriteLength = length
#読み出し制御を計算する
readEnd = iReadAddress + iReadLength - 1
firstReadLine = iReadAddress[:5]
lastReadLine = readEnd[:5]
repeatFitsInOneRead = (lastReadLine - firstReadLine) < 2
if (repeatFitsInOneRead or firstCycleOfCommand)
repeatRotate = 0
#読み出しラインを計算する
if (repeatFitsInOneRead):
oReadLine[firstReadLine[0]] = firstReadLine
oReadLine[lastReadLine[0]] = lastReadLine
else #読み出しデータをウォークし、必要に応じて新たな読み出しを開始する
readBank = iReadAddress[5]
oReadLine[readBank] = iReadAddress[:5]
readLine2 = (iReadAddress + length - 1)[:5]
readBank2 = readLine2[5]
oReadLine[readBank2] = readLine2
#検出して次へ進む
NextWriteAddress = iWriteAddress + length
NextWriteLength = iWriteLength - length
if(repeatFitsInOneRead):
oNextRepeatRotate = (repeatRotate + length) % iReadLength
else:
oNextReadAddress += length
oHasMore = (NextWriteLength > 0)
‐ バイト[0…31]毎の出力:
○ ReadSelect:読み出しラインの0~63の何れのバイトか。MSB上の「奇数」のバイト。
○ ReadEnable:読み出しが追加される必要があるかどうか
○ LiteralSelect:この書き込みラインのバッチの何れのリテラルか
■ 各書き込みラインの0から(同じ書き込みラインを有する全てのコマンドのNumLiterals)の合計-1
○ WriteEnable:このバイトが有効化されているかどうか
○ LiteralEnable:リテラルが追加される必要があるかどうか
‐ 収集したコマンド毎の出力:
○ NumLiterals:ポップオフするリテラルの数
■ 次のコマンドが同じ書き込みラインを共有する場合にはゼロ
■ 書き込みラインが完了した場合には書き込みラインのリテラルの総数
○ WriteLine:チャンクの先頭を基準にした32バイトの整列アドレス
○ ReadLine[bank = 0…1]
○ ReadLineEnable [1:0]:読み出しが必要とされるかどうか
if (newWriteLine)
consumedLiterals = 0
#第1のリテラルIDを計算する
firstLiterals[0] = consumedLiterals
numLiterals[-1] = 0
for command in [0..3]
numLiterals[command] = iHasLiterals[command] ? iWriteLength[command] : 0
totalLiterals[command] = numLiterals[command-1] + numLiterals[command]
firstLiterals[command] = totalLiterals[command-1] + consumedLiterals
for each command with matching lines
writeEnables[31:0] = (~(0xFFFFFFFF << iWriteLength)) << iWriteStart
literalCount
for b in 0 to 31
#適切な入力コマンドを選択する
command = WriteEnables[0..3][b] # is a one hot mux control.
writeStart[4:0] = iWriteStart[command]
numLiterals[5:0] = iWriteLength[command]
oLiteralEnable = iHasLiterals[command]
firstLiteral = firstLiterals[command]
readLength = iReadLength[command]
repeatRotate = iReadRotate[command]
readStart = iReadStart[command]
byteInCommand = b - writeStart
oLiteralSelect[b][4:0] = oLiteralEnable ? byteInCommand+firstLiteral: 31
oReadEnable = readLength > 0
readOffset = (byteInCommand + repeatRotate) % readLength
oReadSelect[b][5:0] = (readStart + readOffset)
oWriteEnable[b] = writeEnables[0..3] [b]!= 0
isLastOfWriteLine = oWriteEnable[31]
totalConsumedLiterals = totalLiterals[LastOne(iCommandValids[0..3]] +
consumedLiterals
oNumLiterals = isLastOfWriteLine ? totalConsumedLiterals : 0
nextConsumedLiterals = totalConsumedLiterals
#既存のラインより先に進むことを検出し、抑制する。
cantCombineToSlot1 = False
for i in 0..1
if(iReadLine[i] == Combined[0].WriteLine):
cantCombineToSlot1 = True
リードアフターライトコヒーレンシハザードが検出された場合、先にジャンプすることが許可されない。
for byte in 0..31
if (iWriteEnable[byte])
readBank = iReadSelect[byte][5]
readLine = iReadLines[readBank]
readOverlapsWriteLine = iWriteLine == readLine
if (readOverlapsWriteLine)
readByte = iReadSelect[byte][4:0]
if (iWriteEnable[readByte])
readIsCopying = !iLiteralEnable[readByte] &&
iReadEnable[readByte]
writeIsAdding = iLiteralEnable[byte] &&
iReadEnable[byte]
writeIsCopying = !iLiteralEnable[byte] &&
iReadEnable[byte]
#ハザードがリテラルのない単なる一致である場合、
#代わりに元の読み出し+リテラルを単にコピーする
if(writeIsCopying):
ReadSelect[byte] = ReadSelect[readByte]
LiteralSelect[byte] = LiteralSelect[readByte]
#ハザードがリテラルのない読み出しでの読み出し+リテラルである場合
#代わりに元の読み出しを使用
else if(writeIsAdding && readIsCopying)
ReadSelect[byte] = ReadSelect[readByte]
#それ以外の場合、追加を結合できない
#リードオンライト(read on write)ハザードがある
else
ByteCanGo[byte] = False
#リテラルをポップする前に、全てが展開されるまで待つ。
oNumLiterals = 0
上記の擬似コードでは、Falseである第1のByteCanGO[]は、後のバイトによる考慮から前のバイトを無効にし、その結果、偽のByteCanGoの各々は、コマンドを32バイトソースから複数のコマンドに分割する。1つのコマンド内に解決可能な循環依存関係が多く存在する場合があるので、これらの多くをインスタンス化し、順番にパイプライン化して、目標を達成する必要がある場合があることに留意されたい。
Claims (20)
- 方法であって、
第1のコマンドによって読み出されるデータの少なくとも1つの第1の読み出しアドレスと、前記第1のコマンドによって書き込まれるデータの第1の書き込みアドレスと、を含む前記第1のコマンドを含むコマンドストリームを受信することと、
前記少なくとも1つの第1の読み出しアドレス及び前記第1の書き込みアドレスを、バッファに記憶された第2のコマンドの少なくとも1つの第2の読み出しアドレス及び第2の書き込みアドレスと比較することと、
前記少なくとも1つの第1の読み出しアドレスが前記少なくとも1つの第2の読み出しアドレスと一致し、前記第1の書き込みアドレスが前記第2の書き込みアドレスと一致することに応じて、前記第1のコマンド及び前記第2のコマンドを結合して第1の集約コマンドを形成することと、を含む、
方法。 - 前記第1のコマンドを受信することは、前記少なくとも1つの第1の読み出しアドレスが前記少なくとも1つの第2の読み出しアドレスと一致しない、又は、前記第1の書き込みアドレスが前記第2の書き込みアドレスと一致しないことに応じて、前記第1のコマンドを前記バッファに記憶することを含む、
請求項1の方法。 - 前記少なくとも1つの第1の読み出しアドレスが前記少なくとも1つの第2の読み出しアドレスと一致することに応じて、前記第1の集約コマンドを前記バッファに記憶することと、
前記少なくとも1つの第1のアドレスが前記少なくとも1つの第2のアドレスと一致することに応じて、前記第1のコマンドを前記バッファから削除することと、をさらに含む、
請求項2の方法。 - 前記少なくとも1つの第1の読み出しアドレス、前記少なくとも1つの第2の読み出しアドレス、前記第1の書き込みアドレス、及び、前記第2の書き込みアドレスが、所定の長さを有するキャッシュラインを示す、
請求項1の方法。 - 前記第1のコマンドで示される少なくとも1つの第1のオフセットに基づいて、前記第1のコマンドによって読み出される前記キャッシュラインの少なくとも1つの第1の部分を識別することと、
前記第2のコマンドで示される少なくとも1つの第2のオフセットに基づいて、前記第2のコマンドによって読み出される前記キャッシュラインの少なくとも1つの第2の部分を識別することと、をさらに含む、
請求項4の方法。 - 前記第1のコマンド及び前記第2のコマンドを結合して前記集約コマンドを生成することは、前記少なくとも1つの第1の部分及び前記少なくとも1つの第2の部分を示すマスクを生成することを含む、
請求項5の方法。 - 第3のコマンドによって読み出されるデータの少なくとも1つの第3の読み出しアドレスと、前記第3のコマンドによって書き込まれるデータの第3の書き込みアドレスと、を含む第3のコマンドを含む前記コマンドストリームを受信することと、
前記少なくとも1つの第3の読み出しアドレス及び前記第3の書き込みアドレスを、バッファに記憶された第4のコマンドの少なくとも1つの第4の読み出しアドレス及び第4の書き込みアドレスと比較することと、
前記少なくとも1つの第3の読み出しアドレスが前記少なくとも1つの第4の読み出しアドレスと一致し、前記第3の書き込みアドレスが前記第4の書き込みアドレスと一致することに応じて、前記第3のコマンド及び前記第4のコマンドを結合して第2の集約コマンドを形成することと、をさらに含む、
請求項1の方法。 - 前記第1のコマンド及び前記第2のコマンドは、前記コマンドストリームの前記第3のコマンド及び前記第4のコマンドとインタリーブされる、
請求項7の方法。 - 前記第1のコマンドと前記第2のコマンドとの間に依存関係が存在するかどうかを判別することをさらに含み、
前記第1のコマンド及び前記第2のコマンドを結合することは、前記依存関係が存在するかどうかに基づいて、前記第1のコマンド及び前記第2のコマンドを選択的に結合することを含む、
請求項1の方法。 - 装置であって、
第1のコマンドによって読み出されるデータの少なくとも1つの第1の読み出しアドレスと、前記第1のコマンドによって書き込まれるデータの第1の書き込みアドレスと、を含む前記第1のコマンドを記憶するように構成されたバッファと、
前記少なくとも1つの第1の読み出しアドレス及び前記第1の書き込みアドレスを、前記バッファに記憶された第2のコマンドの少なくとも1つの第2の読み出しアドレス及び第2の書き込みアドレスと比較するように構成された演算結合器と、を備え、
前記演算結合器は、前記少なくとも1つの第1の読み出しアドレスが前記少なくとも1つの第2の読み出しアドレスと一致し、前記第1の書き込みアドレスが前記第2の書き込みアドレスと一致することに応じて、前記第1のコマンド及び前記第2のコマンドを結合して第1の集約コマンドを形成するように構成されている、
装置。 - 前記バッファは、前記少なくとも1つの第1の読み出しアドレスが前記少なくとも1つの第2の読み出しアドレスと一致することに応じて、前記第1の集約コマンドを記憶するように構成されており、
前記第1のコマンドは、前記少なくとも1つの第1のアドレスが前記少なくとも1つの第2のアドレスと一致することに応じて、前記バッファから削除される、
請求項10の装置。 - 前記少なくとも1つの第1の読み出しアドレス、前記少なくとも1つの第2の読み出しアドレス、前記第1の書き込みアドレス、及び、前記第2の書き込みアドレスは、所定の長さを有するキャッシュラインを示す、
請求項10の装置。 - 前記演算結合器は、
前記第1のコマンドで示される少なくとも1つの第1のオフセットに基づいて、前記第1のコマンドによって読み出される前記キャッシュラインの少なくとも1つの第1の部分を識別し、
前記第2のコマンドで示される少なくとも1つの第2のオフセットに基づいて、前記第2のコマンドによって読み出される前記キャッシュラインの少なくとも1つの第2の部分を識別する、ように構成されている、
請求項12の装置。 - 前記演算結合器は、前記少なくとも1つの第1の部分及び前記少なくとも1つの第2の部分を示すマスクを生成するように構成されている、
請求項13の装置。 - 前記バッファは、第3のコマンドによって読み出されるデータの少なくとも1つの第3の読み出しアドレスと、前記第3のコマンドによって書き込まれるデータの第3の書き込みアドレスと、を含む前記第3のコマンドを記憶するように構成されており、
前記演算結合器は、前記少なくとも1つの第3の読み出しアドレス及び前記第3の書き込みアドレスを、バッファに記憶された第4のコマンドの少なくとも1つの第4の読み出しアドレス及び第4の書き込みアドレスと比較するように構成されており、
前記演算結合器は、前記少なくとも1つの第3の読み出しアドレスが前記少なくとも1つの第4の読み出しアドレスと一致し、前記第3の書き込みアドレスが前記第4の書き込みアドレスと一致することに応じて、前記第3のコマンド及び前記第4のコマンドを結合して第2の集約コマンドを形成するように構成されている、
請求項10の装置。 - 前記バッファは、前記第2の集約コマンドを記憶するように構成されている、
請求項15の装置。 - 前記第1のコマンド及び前記第2のコマンドは、前記第3のコマンド及び前記第4のコマンドとインタリーブされる、
請求項16の装置。 - 前記演算結合器は、前記第1のコマンドと前記第2のコマンドとの間に依存関係が存在するかどうかを判別するように構成されており、
前記演算結合器は、前記依存関係が存在するかどうかに基づいて前記第1のコマンド及び前記第2のコマンドを選択的に結合するように構成されている、
請求項10の装置。 - 方法であって、
データを圧縮するために使用されるコマンドのストリーム内の第1のコマンドの第1の読み出しアドレス及び書き込みアドレスを、前記ストリーム内の第2のコマンドの第2の読み出しアドレス及び書き込みアドレスと比較することと、
前記第1の読み出しアドレス及び前記第1の書き込みアドレスがキャッシュラインを示し、前記第2の読み出しアドレス及び前記第2の書き込みアドレスが同じキャッシュラインを示すかどうかに基づいて、前記第1のコマンド及び前記第2のコマンドを選択的に結合して集約コマンドを形成することと、を含む、
方法。 - 前記コマンドのストリームは、グラフィックスプロセッシングユニットによって生成されたグラフィックスデータを圧縮するために使用される、
請求項19の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/205,094 | 2018-11-29 | ||
US16/205,094 US11614889B2 (en) | 2018-11-29 | 2018-11-29 | Aggregating commands in a stream based on cache line addresses |
PCT/US2019/037657 WO2020112169A1 (en) | 2018-11-29 | 2019-06-18 | Aggregating commands in a stream based on cache line addresses |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022510281A true JP2022510281A (ja) | 2022-01-26 |
Family
ID=70850170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021530941A Pending JP2022510281A (ja) | 2018-11-29 | 2019-06-18 | キャッシュラインアドレスに基づくストリーム内のコマンドの集約 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11614889B2 (ja) |
EP (1) | EP3887932A4 (ja) |
JP (1) | JP2022510281A (ja) |
KR (1) | KR20210086708A (ja) |
CN (1) | CN113227957A (ja) |
WO (1) | WO2020112169A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102050679B (zh) * | 2011-01-14 | 2013-02-06 | 福建工程学院 | 一种秸杆粉基复合肥防结块剂 |
US20220066681A1 (en) * | 2020-08-27 | 2022-03-03 | Micron Technology, Inc. | Bubble break register in semiconductor device |
CN115878521B (zh) * | 2023-01-17 | 2023-07-21 | 北京象帝先计算技术有限公司 | 命令处理系统、电子装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087801A1 (en) * | 2000-12-29 | 2002-07-04 | Zohar Bogin | Method and system for servicing cache line in response to partial cache line request |
US20060090044A1 (en) * | 2004-10-21 | 2006-04-27 | International Business Machines Corporation | Memory controller and method for optimized read/modify/write performance |
JP2014063385A (ja) * | 2012-09-21 | 2014-04-10 | Fujitsu Ltd | 演算処理装置及び演算処理装置の制御方法 |
JP2017045151A (ja) * | 2015-08-24 | 2017-03-02 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
WO2017125709A1 (en) * | 2016-01-20 | 2017-07-27 | Arm Limited | Vector atomic memory update instruction |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586294A (en) * | 1993-03-26 | 1996-12-17 | Digital Equipment Corporation | Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer |
US6249851B1 (en) * | 1998-08-25 | 2001-06-19 | Stmicroelectronics, Inc. | Computer system having non-blocking cache and pipelined bus interface unit |
JP2000132404A (ja) * | 1998-10-22 | 2000-05-12 | Matsushita Electric Ind Co Ltd | 命令列最適化装置 |
US6434639B1 (en) * | 1998-11-13 | 2002-08-13 | Intel Corporation | System for combining requests associated with one or more memory locations that are collectively associated with a single cache line to furnish a single memory operation |
GB9825999D0 (en) * | 1998-11-28 | 1999-01-20 | British Aerospace | A machine for laying up fabric to produce a laminate |
US7440469B2 (en) * | 2003-10-14 | 2008-10-21 | Broadcom Corporation | Descriptor write back delay mechanism to improve performance |
US8301844B2 (en) * | 2004-01-13 | 2012-10-30 | Hewlett-Packard Development Company, L.P. | Consistency evaluation of program execution across at least one memory barrier |
JPWO2005078579A1 (ja) * | 2004-02-12 | 2007-10-18 | 松下電器産業株式会社 | プログラム変換装置およびプログラム変換方法 |
US20080235484A1 (en) * | 2007-03-22 | 2008-09-25 | Uri Tal | Method and System for Host Memory Alignment |
US8041755B2 (en) * | 2007-06-08 | 2011-10-18 | Apple Inc. | Fast static rotator/shifter with non two's complemented decode and fast mask generation |
US8112595B1 (en) * | 2008-05-01 | 2012-02-07 | Marvell Semiconductor Israel Ltd. | Command cancellation channel for read—modify—write operation in a memory |
US9183145B2 (en) * | 2009-04-27 | 2015-11-10 | Intel Corporation | Data caching in a network communications processor architecture |
GB2483282B (en) * | 2010-09-03 | 2017-09-13 | Advanced Risc Mach Ltd | Data compression and decompression using relative and absolute delta values |
US8595414B2 (en) * | 2010-09-30 | 2013-11-26 | Apple Inc. | Selectively combining commands for a system having non-volatile memory |
US20120221767A1 (en) | 2011-02-28 | 2012-08-30 | Apple Inc. | Efficient buffering for a system having non-volatile memory |
CN102377516A (zh) * | 2011-06-22 | 2012-03-14 | 钜泉光电科技(上海)股份有限公司 | 数据处理方法及其装置 |
US8984182B2 (en) * | 2011-10-06 | 2015-03-17 | Marvell International Ltd. | SCSI I/O command aggregation |
US9612972B2 (en) * | 2012-12-03 | 2017-04-04 | Micron Technology, Inc. | Apparatuses and methods for pre-fetching and write-back for a segmented cache memory |
GB2516864A (en) * | 2013-08-02 | 2015-02-11 | Ibm | Increased instruction issue rate and latency reduction for out-of-order processing by instruction chaining and collision avoidance |
US9092345B2 (en) * | 2013-08-08 | 2015-07-28 | Arm Limited | Data processing systems |
US9348518B2 (en) * | 2014-07-02 | 2016-05-24 | International Business Machines Corporation | Buffered automated flash controller connected directly to processor memory bus |
KR20180045102A (ko) * | 2016-10-24 | 2018-05-04 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 저장 장치의 동작 방법 |
US10552340B2 (en) * | 2017-02-28 | 2020-02-04 | Oracle International Corporation | Input/output direct memory access during live memory relocation |
US20190034306A1 (en) * | 2017-07-31 | 2019-01-31 | Intel Corporation | Computer System, Computer System Host, First Storage Device, Second Storage Device, Controllers, Methods, Apparatuses and Computer Programs |
US10678478B2 (en) * | 2018-08-24 | 2020-06-09 | Apple Inc. | Ordering memory requests based on access efficiency |
-
2018
- 2018-11-29 US US16/205,094 patent/US11614889B2/en active Active
-
2019
- 2019-06-18 EP EP19888288.8A patent/EP3887932A4/en active Pending
- 2019-06-18 CN CN201980084845.4A patent/CN113227957A/zh active Pending
- 2019-06-18 KR KR1020217018960A patent/KR20210086708A/ko not_active Application Discontinuation
- 2019-06-18 JP JP2021530941A patent/JP2022510281A/ja active Pending
- 2019-06-18 WO PCT/US2019/037657 patent/WO2020112169A1/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087801A1 (en) * | 2000-12-29 | 2002-07-04 | Zohar Bogin | Method and system for servicing cache line in response to partial cache line request |
US20060090044A1 (en) * | 2004-10-21 | 2006-04-27 | International Business Machines Corporation | Memory controller and method for optimized read/modify/write performance |
JP2014063385A (ja) * | 2012-09-21 | 2014-04-10 | Fujitsu Ltd | 演算処理装置及び演算処理装置の制御方法 |
JP2017045151A (ja) * | 2015-08-24 | 2017-03-02 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
WO2017125709A1 (en) * | 2016-01-20 | 2017-07-27 | Arm Limited | Vector atomic memory update instruction |
Also Published As
Publication number | Publication date |
---|---|
US11614889B2 (en) | 2023-03-28 |
WO2020112169A1 (en) | 2020-06-04 |
EP3887932A1 (en) | 2021-10-06 |
EP3887932A4 (en) | 2022-08-10 |
US20200174697A1 (en) | 2020-06-04 |
CN113227957A (zh) | 2021-08-06 |
KR20210086708A (ko) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8762609B1 (en) | System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator | |
JP2022510281A (ja) | キャッシュラインアドレスに基づくストリーム内のコマンドの集約 | |
JP5764257B2 (ja) | レジスタをアライメントするためのシステム、装置、および方法 | |
TWI556165B (zh) | 位元混洗處理器、方法、系統及指令 | |
US7089391B2 (en) | Managing a codec engine for memory compression/decompression operations using a data movement engine | |
TWI483183B (zh) | 混洗浮點或整數值的裝置與方法 | |
TWI582690B (zh) | 用於滑動視窗資料存取之設備及方法 | |
TWI489383B (zh) | 遮蔽排列指令的裝置及方法 | |
TW201814506A (zh) | 硬體加速器及用於卸載操作之方法 | |
EP2803012B1 (en) | Using storage controller bus interfaces to secure data transfer between storage devices and hosts | |
KR101776227B1 (ko) | 슬라이딩 윈도 인코딩 알고리즘들을 위한 명령어들 | |
TWI501147B (zh) | 用於從通用暫存器至向量暫存器的廣播之裝置及方法 | |
JPH10232788A (ja) | 信号処理装置及びソフトウェア | |
JP2009528584A (ja) | Fpgaベースのパイプライン処理のためのファームウェアソケットモジュール | |
WO2014085472A1 (en) | Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
TWI567645B (zh) | 位元群組交錯處理器、方法、系統及指令 | |
TWI575451B (zh) | 用於遮罩及向量暫存器之間的可變擴充的方法及裝置 | |
TW201732734A (zh) | 用於加速圖形分析的設備及方法 | |
US20220035749A1 (en) | Cryptographic protection of memory attached over interconnects | |
TW201722088A (zh) | 使用硬體及軟體來解壓縮之系統、方法及裝置 | |
TWI637317B (zh) | 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置 | |
JP2007034392A (ja) | 情報処理装置及びデータ処理方法 | |
TWI590155B (zh) | 用以從4維座標計算4維z曲線指標的機器階層指令 | |
TWI544412B (zh) | 用於產生抑制的位址軌跡之設備和方法 | |
TWI470541B (zh) | 用於滑動視窗資料收集之設備及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210729 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220524 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230616 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230627 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230927 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20231219 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240419 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20240501 |