JP2019502201A5 - - Google Patents

Download PDF

Info

Publication number
JP2019502201A5
JP2019502201A5 JP2018529209A JP2018529209A JP2019502201A5 JP 2019502201 A5 JP2019502201 A5 JP 2019502201A5 JP 2018529209 A JP2018529209 A JP 2018529209A JP 2018529209 A JP2018529209 A JP 2018529209A JP 2019502201 A5 JP2019502201 A5 JP 2019502201A5
Authority
JP
Japan
Prior art keywords
requests
buffer controller
request
processing device
hardware buffer
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
JP2018529209A
Other languages
English (en)
Other versions
JP6884149B2 (ja
JP2019502201A (ja
Filing date
Publication date
Priority claimed from US14/966,631 external-priority patent/US10585623B2/en
Application filed filed Critical
Publication of JP2019502201A publication Critical patent/JP2019502201A/ja
Publication of JP2019502201A5 publication Critical patent/JP2019502201A5/ja
Application granted granted Critical
Publication of JP6884149B2 publication Critical patent/JP6884149B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Claims (15)

  1. 実行可能なデータを格納するメモリデバイスを提供することと、
    前記メモリデバイスに結合され、前記実行可能なデータを抽出及び実行するように動作可能な処理デバイスを提供することと、
    前記処理デバイスによって、バッファ初期化命令をアプリケーションから受信することと、
    前記バッファ初期化命令に応じて、
    前記処理デバイスによって、バッファとして前記メモリデバイスの一部分を割り当てること
    前記処理デバイスによって、前記メモリデバイスの前記一部分を参照するためにハードウェアバッファコントローラのある状態を引き起こすこと、及び
    前記処理デバイスによって、前記ハードウェアバッファへの参照をアプリケーションへ返すことと、
    前記処理デバイスによって、前記アプリケーションを実行することであって、前記アプリケーションから前記バッファにアクセスするためのリクエストを実行することを含み、前記リクエストが、前記ハードウェアバッファへの前記参照のみにアドレス指定され、前記メモリデバイスの前記一部分内の何れのアドレスも含まない、前記アプリケーションを実行することと、
    前記リクエストに応て、前記処理デバイスによって前記リクエストを前記ハードウェアバッファコントローラに入力することと、
    前記ハードウェアバッファコントローラによって、前記リクエストを処理することであって、前記リクエストを処理することが前記リクエスト毎に、
    前記ハードウェアバッファコントローラの前記状態に基づいて前記メモリデバイスの前記一部分内のアドレスを生成すること、
    前記アドレスを含むメモリアクセス命令を前記メモリデバイスへ出力すること、及び
    前記ハードウェアバッファコントローラの前記状態を更新すること
    により行われる、前記リクエストを処理することと
    を含む、方法。
  2. 前記ハードウェアバッファコントローラは先入れ先出し(FIFO)バッファを実施

    前記ハードウェアバッファコントローラの前記状態は読み出しポインタ及び書き込みポインタを含み、
    前記ハードウェアバッファコントローラの前記状態を更新することは、前記リクエストの内の書き込みリクエスト毎に前記書き込みポインタをインクリメントすることを含み、
    前記ハードウェアバッファコントローラの前記状態を更新することは、前記リクエストの内の読み出しリクエスト毎に前記読み出しポインタをインクリメントすることを含む、請求項1に記載の方法。
  3. 前記書き込みポインタをインクリメントすることは、1クロック周期中に受信された複数の書き込みリクエストの数を特定することと、前記複数の書き込みリクエストの前記数だけ前記書き込みポインタをインクリメントすることとを含み、
    前記読み出しポインタをインクリメントすることは、前記クロック周期中に受信された複数の読み出しリクエストの数を特定することと、前記複数の読み出しリクエストの前記数だけ前記読み出しポインタをインクリメントすることとを含む、
    請求項に記載の方法。
  4. 前記ハードウェアバッファコントローラの前記状態に基づいて前記バッファ内の前記アドレスを生成することは、前記リクエストの内の書き込みリクエスト毎に前記書き込みポインタの現在値を出力することを含み、
    前記ハードウェアバッファコントローラの前記状態に基づいて前記バッファ内の前記アドレスを生成することは、前記リクエストの内の読み出しリクエスト毎に前記読み出しポインタの現在値を出力することを含む、
    請求項に記載の方法。
  5. 前記処理デバイスによって、前記書き込みリクエストの量と前記読み出しリクエストの量との差を計算することと、
    前記処理デバイスによって、前記差が第1の閾値よりも少なくゼロではないと判定することと、
    前記差が第1の閾値よりも少なくゼロではないと判定することに応じて、前記処理デバイスによって、前記バッファがほぼ空であることを示すイベントを出力することと、
    前記バッファがほぼ空であることを示す前記イベントに応じて、前記処理デバイスによって、前記処理デバイスによって実行される1つ以上の実行スレッドが読み出しリクエストを生成することをブロックすることと
    を更に含む、請求項に記載の方法。
  6. 前記ハードウェアバッファコントローラによって、前記書き込みリクエストの量と前記読み出しリクエストの量との差を計算することと、
    前記ハードウェアバッファコントローラによって、前記差が第1の閾値よりも大きいと判定することと、
    前記差が第1の閾値よりも大きいと判定することに応じて、前記ハードウェアバッファコントローラによって、前記バッファがほぼ満杯であることを示すイベントを出力することと、
    前記バッファがほぼ満杯であることを示す前記イベントに応じて、前記処理デバイスによって、前記処理デバイスによって実行される1つ以上の実行スレッドが書き込みリクエストを生成することをブロックすることと
    を更に含む、請求項に記載の方法。
  7. 前記ハードウェアバッファコントローラによって前記リクエストを処理することは、
    前記リクエストの内の複数の書き込みリクエストを集計することと、
    前記複数の書き込みリクエストに対応する前記バッファ内の複数のアドレスを含む集計書き込み命令を前記メモリデバイスへ送信することと、
    前記リクエストの内の複数の読み出しリクエストを集計することと、
    前記複数の読み出しリクエストに対応する前記バッファ内の複数のアドレスを含む集計読み出し命令を前記メモリデバイスへ送信することと
    を更に含
    前記複数の書き込みリクエストは、前記リクエストの内のその他のリクエストが前記ハードウェアバッファコントローラに入力されるよりも前に、前記書き込みリクエストの内の少なくとも1つの書き込みリクエストが受信されるような重複方式で、複数の実行スレッドによって発行される、
    請求項1に記載の方法。
  8. 前記処理デバイスによって、前記ハードウェアバッファコントローラの前記状態を評価することと、
    前記処理デバイスによって、前記ハードウェアバッファコントローラの前記状態が閾条件を満たすと判定することと、
    前記ハードウェアバッファコントローラの前記状態が前記閾条件を満たすと判定することに応じて、前記処理デバイスによって、前記ハードウェアバッファコントローラを参照する更なるリクエストを前記複数の実行スレッドが発行することをブロックすることと
    を更に含む、請求項に記載の方法。
  9. 実行可能なデータを格納するためのメモリデバイスと
    理デバイスと、
    前記処理デバイスに動作可能に結合されたハードウェアバッファコントローラと
    を含み、
    前記処理デバイスは、前記メモリデバイスに結合され、前記実行可能なデータを抽出及び実行するように動作可能であり、前記処理デバイスは、バッファリクエストをアプリケーションから受信すること、並びに、前記バッファリクエストに応じて、
    前記メモリデバイスの一部分を前記バッファリクエストに割り当てること、
    前記メモリデバイスの前記一部分を参照するために前記ハードウェアバッファコントローラのある状態を引き起こすこと、及び
    前記ハードウェアバッファへの参照を前記アプリケーションへ返すこと
    をするようにプログラムされ、
    前記ハードウェアバッファコントローラは、前記処理デバイス及び前記メモリデバイスに結合され、前記ハードウェアバッファコントローラ
    前記メモリデバイス内の何れの格納位置に対する何れのアドレスも含まず、前記ハードウェアバッファのみにアドレス指定されたメモリアクセスリクエストを前記処理デバイスにより実行される前記アプリケーションから受信すること
    前記ハードウェアバッファコントローラの状態に基づいて、前記メモリデバイスの前記一部分内の生成アドレスを生成すること
    前記生成アドレスを含むメモリアクセス命令を前記メモリデバイスへ出力すること
    前記ハードウェアバッファコントローラの前記状態を更新すること
    をするようにプログラムされる、
    システム。
  10. 前記ハードウェアバッファコントローラの前記状態は先入れ先出し(FIFO)バッファを実施し、
    前記ハードウェアバッファコントローラは、前記リクエストの内の書き込みリクエスト毎に書き込みポインタをインクリメントすることによって、前記ハードウェアバッファコントローラの前記状態を更新するように更にプログラムされ、
    前記ハードウェアバッファコントローラの前記状態を更新することは、前記リクエストの内の読み出しリクエスト毎に読み出しポインタをインクリメントすることを含み、
    前記ハードウェアバッファコントローラは、1クロック周期中に受信された複数の書き込みリクエストの数を特定することと、前記複数の書き込みリクエストの前記数だけ前記書き込みポインタをインクリメントすることとによって、前記書き込みポインタをインクリメントするように更にプログラムされ、
    前記ハードウェアバッファコントローラは、前記クロック周期中に受信された複数の読み出しリクエストの数を特定することと、前記複数の読み出しリクエストの前記数だけ前記読み出しポインタをインクリメントすることとによって、前記読み出しポインタをインクリメントするように更にプログラムされる、
    請求項に記載のシステム。
  11. 前記ハードウェアバッファコントローラは、前記リクエストの内の書き込みリクエスト毎に前記書き込みポインタの現在値を出力することによって、前記ハードウェアバッファコントローラの前記状態に基づいて、前記バッファに割り当てられた前記メモリデバイスの前記領域内の前記生成アドレスを生成するように更にプログラムされ、
    前記ハードウェアバッファコントローラは、前記リクエストの内の読み出しリクエスト毎に前記読み出しポインタの現在値を出力することによって、前記ハードウェアバッファコントローラの前記状態に基づいて、前記バッファに割り当てられた前記メモリデバイスの前記領域内の前記生成アドレスを生成するように更にプログラムされ
    請求項10に記載のシステム。
  12. 前記ハードウェアバッファコントローラは、
    前記書き込みリクエストの量と前記読み出しリクエストの量との差を計算すること及び
    前記差が第1の閾値よりも少なくゼロではない場合に、前記バッファがほぼ空であることを示すイベントを出力すること
    をするように更にプログラムされ、
    前記処理デバイスは、前記バッファがほぼ空であることを示す前記イベントに応じて、前記処理デバイスによって実行される1つ以上の実行スレッドが読み出しリクエストを生成することをブロックするように更にプログラムされる、
    請求項11に記載のシステム。
  13. 前記ハードウェアバッファコントローラは、
    前記書き込みリクエストの量と前記読み出しリクエストの量との差を計算すること及び
    前記差が第2の閾値よりも大きい場合に、前記処理デバイスによって、前記バッファがほぼ満杯であることを示すイベントを出力すること
    をするように更にプログラムされ、
    前記処理デバイスは、前記バッファがほぼ満杯であることを示す前記イベントに応じて、前記処理デバイスによって実行される1つ以上の実行スレッドが書き込みリクエストを生成することをブロックするように更にプログラムされる、
    請求項12に記載のシステム。
  14. 前記ハードウェアソフトウェアバッファコントローラは、
    前記リクエストの内の複数の書き込みリクエストを集計することと、
    前記複数の書き込みリクエストに対応する前記バッファ内の複数のアドレスを含む集計書き込み命令を前記メモリデバイスへ送信することと、
    前記リクエストの内の複数の読み出しリクエストを集計することと、
    前記複数の読み出しリクエストに対応する前記バッファ内の複数のアドレスを含む集計
    読み出し命令を前記メモリデバイスへ送信することと
    によって前記リクエストを処理するように更にプログラムされる、請求項に記載のシステム。
  15. 前記ハードウェアソフトウェア構成要素は、前記リクエストの内のその他のリクエストが前記ハードウェアバッファコントローラに入力されるよりも前に、前記書き込みリクエストの内の少なくとも1つの書き込みリクエストが受信されるような重複方式で、前記処理デバイスによって実行される複数の実行スレッドから前記複数の書き込みリクエストを受信するようにプログラムされ、前記ハードウェアバッファコントローラは、
    前記ハードウェアバッファコントローラの前記状態を評価すること、及び
    前記ハードウェアバッファコントローラの前記状態が閾条件を満たす場合に、前記ハードウェアバッファコントローラを参照する更なるリクエストを前記複数の実行スレッドが発行することを、前記処理デバイスによってブロックすることを引き起こすこと
    をするように更にプログラムされる、請求項14に記載のシステム。
JP2018529209A 2015-12-11 2016-12-12 マルチスレッドアクセスのためのソフトウェア定義のfifoバッファ Active JP6884149B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/966,631 2015-12-11
US14/966,631 US10585623B2 (en) 2015-12-11 2015-12-11 Software defined FIFO buffer for multithreaded access
PCT/US2016/066106 WO2017100748A1 (en) 2015-12-11 2016-12-12 Software defined fifo buffer for multithreaded access

Publications (3)

Publication Number Publication Date
JP2019502201A JP2019502201A (ja) 2019-01-24
JP2019502201A5 true JP2019502201A5 (ja) 2020-01-09
JP6884149B2 JP6884149B2 (ja) 2021-06-09

Family

ID=59013408

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018529209A Active JP6884149B2 (ja) 2015-12-11 2016-12-12 マルチスレッドアクセスのためのソフトウェア定義のfifoバッファ

Country Status (6)

Country Link
US (1) US10585623B2 (ja)
EP (1) EP3387513A4 (ja)
JP (1) JP6884149B2 (ja)
KR (1) KR20180107091A (ja)
CN (1) CN108292162B (ja)
WO (1) WO2017100748A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10095408B2 (en) * 2017-03-10 2018-10-09 Microsoft Technology Licensing, Llc Reducing negative effects of insufficient data throughput for real-time processing
CN108038006B (zh) * 2017-11-14 2022-02-08 北京小鸟看看科技有限公司 头戴显示设备的控制方法、设备及系统
KR102421103B1 (ko) * 2018-01-04 2022-07-14 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 그것들의 동작 방법
US10713746B2 (en) 2018-01-29 2020-07-14 Microsoft Technology Licensing, Llc FIFO queue, memory resource, and task management for graphics processing
US11068308B2 (en) * 2018-03-14 2021-07-20 Texas Instruments Incorporated Thread scheduling for multithreaded data processing environments
US10719268B2 (en) 2018-06-29 2020-07-21 Microsoft Technology Licensing, Llc Techniques for safely and efficiently enqueueing and dequeueing data on a graphics processor
US11409436B2 (en) * 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US10884933B2 (en) * 2019-01-18 2021-01-05 Silicon Motion Technology (Hong Kong) Limited Method and apparatus for performing pipeline-based accessing management in a storage server

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07118187B2 (ja) 1985-05-27 1995-12-18 松下電器産業株式会社 先入れ先出し記憶装置
US4894797A (en) 1986-11-17 1990-01-16 Amp Incorporated FIFO data storage system using PLA controlled multiplexer for concurrent reading and writing of registers by different controllers
US5581705A (en) 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
KR0139887B1 (ko) 1994-02-17 1999-02-18 김광호 영상메모리의 데이타 혼선방지회로
US6115761A (en) 1997-05-30 2000-09-05 Lsi Logic Corporation First-In-First-Out (FIFO) memories having dual descriptors and credit passing for efficient access in a multi-processor system environment
US5978868A (en) * 1997-08-28 1999-11-02 Cypress Semiconductor Corp. System for generating buffer status flags by comparing read and write pointers and determining direction of progression of read pointer with respect to write pointer
US6044030A (en) 1998-12-21 2000-03-28 Philips Electronics North America Corporation FIFO unit with single pointer
US6756986B1 (en) 1999-10-18 2004-06-29 S3 Graphics Co., Ltd. Non-flushing atomic operation in a burst mode transfer data storage access environment
US20040098519A1 (en) 2001-03-16 2004-05-20 Hugo Cheung Method and device for providing high data rate for a serial peripheral interface
US7206904B2 (en) * 2002-03-20 2007-04-17 Hewlett-Packard Development Company, L.P. Method and system for buffering multiple requests from multiple devices to a memory
CN1201234C (zh) * 2003-03-28 2005-05-11 港湾网络有限公司 多通道先进先出数据缓冲存储装置
EP1614292B1 (en) 2003-04-17 2008-05-07 Thomson Licensing Data requesting and transmitting devices and processes
US7181563B2 (en) 2003-10-23 2007-02-20 Lsi Logic Corporation FIFO memory with single port memory modules for allowing simultaneous read and write operations
US8135915B2 (en) 2004-03-22 2012-03-13 International Business Machines Corporation Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator
US6956776B1 (en) * 2004-05-04 2005-10-18 Xilinx, Inc. Almost full, almost empty memory system
US9436432B2 (en) 2005-12-30 2016-09-06 Stmicroelectronics International N.V. First-in first-out (FIFO) memory with multi-port functionality
US9015375B2 (en) 2006-04-11 2015-04-21 Sigmatel, Inc. Buffer controller, codec and methods for use therewith
JP2008293484A (ja) 2007-04-27 2008-12-04 Panasonic Corp バッファメモリ共有装置
WO2009067538A1 (en) 2007-11-19 2009-05-28 Mentor Graphics Corporation Dynamic pointer dereferencing and conversion to static hardware
GB2469299B (en) * 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
CN101661386B (zh) * 2009-09-24 2013-03-20 成都市华为赛门铁克科技有限公司 多硬件线程处理器的业务处理装置及其业务处理方法
US8660132B2 (en) * 2010-06-28 2014-02-25 Avaya Inc. Control plane packet processing and latency control
US9098462B1 (en) * 2010-09-14 2015-08-04 The Boeing Company Communications via shared memory
US8949547B2 (en) * 2011-08-08 2015-02-03 Arm Limited Coherency controller and method for data hazard handling for copending data access requests
JP5842206B2 (ja) * 2012-01-27 2016-01-13 株式会社トプスシステムズ プロセッサ・コア、およびマルチコア・プロセッサ・システム
US20130198419A1 (en) * 2012-01-30 2013-08-01 Stephen Jones Lock-free fifo
US9542227B2 (en) 2012-01-30 2017-01-10 Nvidia Corporation Parallel dynamic memory allocation using a lock-free FIFO
US9639371B2 (en) 2013-01-29 2017-05-02 Advanced Micro Devices, Inc. Solution to divergent branches in a SIMD core using hardware pointers
WO2014142836A1 (en) * 2013-03-13 2014-09-18 Empire Technology Development, Llc Memory allocation accelerator
US9672008B2 (en) * 2014-11-24 2017-06-06 Nvidia Corporation Pausible bisynchronous FIFO

Similar Documents

Publication Publication Date Title
JP2019502201A5 (ja)
US11237728B2 (en) Method for accessing extended memory, device, and system
JP7092801B2 (ja) Gpuタスクスケジューリングの継続分析タスク
JP6884149B2 (ja) マルチスレッドアクセスのためのソフトウェア定義のfifoバッファ
JP2020500365A5 (ja)
EP3398075B1 (en) Transfer descriptor for memory access commands
JP2015535999A5 (ja)
US9678806B2 (en) Method and apparatus for distributing processing core workloads among processing cores
JP2018538630A5 (ja)
JP6739513B2 (ja) Dmb操作を伴うロード/ストア操作を使用するロード獲得/ストア解放命令の実装
US9697154B2 (en) Managing message signaled interrupts in virtualized computer systems
US9300716B2 (en) Modelling dependencies in data traffic
KR102651864B1 (ko) 하드웨어 액세스 카운터 및 다중 스레드 처리를 조정하기 위한 이벤트 생성
CN114153560A (zh) 一种虚拟中断处理方法、装置、设备及介质
EP2778906A1 (en) Apparatus and method for non-blocking execution on static scheduled processor
US11620083B2 (en) Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device
JP5246810B2 (ja) 出力制御回路、出力制御回路の制御方法及びその制御プログラム
JP6201921B2 (ja) マイクロコンピュータ
US20170031609A1 (en) Information processing device, recording medium and access information management method
CN110554902A (zh) 用于提供虚拟化技术的半导体器件