CN110023904A - 双模式本地数据存储 - Google Patents
双模式本地数据存储 Download PDFInfo
- Publication number
- CN110023904A CN110023904A CN201780072221.1A CN201780072221A CN110023904A CN 110023904 A CN110023904 A CN 110023904A CN 201780072221 A CN201780072221 A CN 201780072221A CN 110023904 A CN110023904 A CN 110023904A
- Authority
- CN
- China
- Prior art keywords
- requestor
- access
- subregion
- shared resource
- request
- 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
Links
- 230000000694 effects Effects 0.000 claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 14
- 238000009826 distribution Methods 0.000 description 11
- 238000013500 data storage Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000002045 lasting effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241001062009 Indigofera Species 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000004153 renaturation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- 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/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/28—Using a specific disk cache architecture
- G06F2212/282—Partitioned cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了一种用于有效地处理对共享资源的访问请求的系统及方法。许多请求程序中的每一者都被分配给共享资源的分区。当控制器确定没有请求程序生成对未分配分区的访问请求时,所述控制器允许同时访问被分配给活动请求程序的分区。当所述控制器确定至少一个活动请求程序生成对未分配分区的访问请求时,所述控制器允许单个活动请求程序获得对整个共享资源的独占访问,同时停止其他活动请求程序的访问。所述控制器交替所述活动请求程序之间的独占访问。在各种实施方案中,所述共享资源是图形处理单元中的本地数据存储,并且所述多个请求程序中的每一者都是单指令多数据(SIMD)计算单元。
Description
背景技术
相关技术描述
任务并行化用于增加计算机系统的吞吐量。为此,编译器或软件程序员从程序代码中提取并行化任务以在系统硬件上并行执行。无序执行、深度流水线、推测执行和多线程执行用于利用指令级并行性,因此提高吞吐量。为了进一步增加硬件上的并行执行,在系统中包括并行架构处理器以利用数据级并行性并卸载常规通用处理器中的计算密集型和重复性任务。这些任务的示例包括视频图形渲染、加密、垃圾收集和其他矢量指令应用程序。
利用数据级并行性的上述系统的各种示例包括作为并行架构处理器的单指令多数据(SIMD)处理器。图形处理单元(GPU)是SIMD处理器的一个示例。GPU包括一个或多个SIMD计算单元,每个SIMD计算单元都具有多个处理资源通道用于执行相应线程的指令。所述指令在跨通道执行的线程中是相同的,但具有特定于给定通道的数据元素。操作系统调度器或程序员经由软件编程平台调度SIMD计算单元的通道上的线程。
在不使用本地数据存储的情况下,由SIMD计算单元内的给定通道生成的结果数据在没有将结果数据存储到其他形式的数据存储装置和进行检索的昂贵延迟的情况下,对于其他通道是不可访问的。尽管SIMD计算单元的多个通道共享本地数据存储,但是系统不提供允许通道数量动态改变的架构,因此改变了在本地数据存储内共享的存储量。因此,系统不支持本地数据存储的冲突解决和完全可访问性(可寻址性)。
鉴于以上所述,期望用于有效地处理对共享资源的访问请求的有效方法及系统。
附图说明
图1是支持共享资源的访问的计算系统的一个实施方案的概括图。
图2是并行架构处理器的一个实施方案的概括图。
图3是用于处理针对共享资源的访问请求的方法的一个实施方案的概括图。
图4是用于处理针对共享资源的访问请求的方法的另一个实施方案的概括图。
图5是用于选择对使用共享资源的访问请求的源的方法的一个实施方案的概括图。
虽然本发明容易有各种修改和备选形式,但是通过举例方式在附图中示出了具体实施方案并在本文中对其作出详细描述。然而,应理解,附图和对其进行的详细描述并不意图将本发明局限于所公开的特定形式,而是相反,本发明意图涵盖属于如所附权利要求所限定的本发明的范围的所有修改、等同物和备选方案。
具体实施方式
在以下描述中,陈述众多具体细节以提供对本发明的彻底理解。然而,所属领域一般技术人员应认识到,可以在没有这些具体细节的情况下实践本发明。在一些情况下,公知的电路、结构和技术未被详细示出以免混淆本发明。此外,应当明白,为了使图示简单和清楚起见,图中所示的元件不一定按比例绘制。例如,一些元件的尺寸相对于其他元件被夸大。
预期用于有效地处理对共享资源的访问请求的系统及方法。在各种实施方案中,许多请求程序中的每一者都被分配给共享资源的分区。在一些实施方案中,每个分区都是单独分区,所述单独分区与共享资源的其他分区不重叠。控制器用于支持对共享资源的访问。当所述控制器确定没有请求程序生成对未分配分区的访问请求时,所述控制器允许同时访问被分配给活动请求程序的分区。然而,当所述控制器确定至少一个活动请求程序生成对未分配分区的访问请求时,所述控制器允许单个活动请求程序获得对整个共享资源的访问,同时停止其他活动请求程序的访问。
所述控制器通过选择活动请求程序来执行仲裁。在一些实施方案中,所述选择是基于最近最少使用的标准。所述控制器停止未选定请求程序对共享资源的访问,同时允许所述选定请求程序的访问。在一些实施方案中,所述控制器对针对选定请求程序执行的访问请求的数量设定限制,或者对用于执行选定请求程序的访问请求的时间量(诸如时钟周期的数量)设定限制。如果活动请求程序具有更多访问请求,则控制器停止选定请求程序对共享资源的访问,并且将所述选定请求程序标记为最近选择的活动请求程序。之后,控制器取消选择所述请求程序,并且通过选择另一个活动请求程序对整个共享资源具有独占访问来再次执行仲裁。
在各种实施方案中,所述共享资源是图形处理单元中的本地数据存储,并且所述多个请求程序中的每一者都是单指令多数据(SIMD)计算单元。在一些实施方案中,所述控制器通过检测对在SIMD计算单元的被分配存储器地址边界外部的本地数据存储的区域的访问来检测对未分配分区的访问请求。在各种实施方案中,当给定的SIMD计算单元具有对整个本地数据存储的独占访问时,它在仲裁再次发生并且另一个SIMD计算单元获得独占访问之前具有独占访问持续单个时钟周期。然而,时钟周期的另一个数量是可能的并且可以被预期。可选地,在其他实施方案中,所述控制器监视访问请求的数量,并且当所述数量达到极限时,再次发生仲裁。在各种实施方案中,每个SIMD计算单元都包括到本地数据存储的读写端口,当另一SIMD计算单元具有对本地数据存储的独占访问时,所述读写端口用于提供所述另一个SIMD计算单元对本地数据存储的访问。
转向图1,示出了支持共享资源的访问的计算系统的一个实施方案的概括框图。在所示实施方案中,计算系统包括经由仲裁控制单元120访问共享资源140的请求程序110A至110H。在一些实施方案中,共享资源140是共享存储器,并且仲裁控制单元120是存储器控制器。在其他实施方案中,共享资源140是具有特定密集型计算功能性的单元或用于提供对网络的切换访问的单元。资源和任何相关控制器的其他示例是可能的并且是可预期的。
请求程序110A至110H包括计算资源112A至112H。在各种实施方案中,计算资源112A至112H包括流水线寄存器、用于存储中间结果的数据结构、用于执行整数运算、浮点运算、布尔逻辑运算、分支条件比较等等的电路。如所示,共享资源140被划分为多个分区142A至142H。在一些实施方案中,分区142A至142H中的每一者都包括相同的数据存储量、相同数量的密集计算功能性等等。在其他实施方案中,分区142A至142H中的一者或多者包括比分区142A至142H中的其他分区更少或更多的数据存储装置或密集计算功能性。
在各种实施方案中,分区142A至142H中的每一者都是单独分区,所述单独分区不与分区142A至142H中的任何其他分区重叠。在其他实施方案中,使用重叠。在各种实施方案中,分区142A至142H中的每个分区都被分配给计算资源112A至112H中的一者。在其他实施方案中,计算资源112A至112H中的两者或更多者被分配给分区142A至142H中的同一者。
在一些实施方案中,除了分区142A至142H的大小之外,计算资源112A至112H与分区142A至142H之间的分配也由可编程控制和状态寄存器(未示出)设定。固件、执行软件应用程序或其他软件用于更新控制和状态寄存器以将计算资源112A至112H最初分配并随后重新分配给分区142A至142H,并更新分区142A至142H的大小。在其他实施方案中,由请求程序110A至110H和/或仲裁控制单元120内的硬件电路实施的控制逻辑执行初始分配和大小调整以及随后的重新分配和大小调整。
当计算资源112A至112H中的一者或多者处理一个或多个应用程序的指令时,请求程序110A至110H中的一者或多者生成对共享资源140的访问请求。在各种实施方案中,所生成的访问请求识别分区142A至142H中的一者。通过识别分区142A至142H中的一者,所生成的访问请求针对所识别的分区。目标分区是被分配分区或未分配分区。
如果由请求程序110A至110H生成的访问请求都没有针对分区142A至142H中的未分配分区,则基于分配来服务访问请求。仲裁控制单元120允许每个访问请求访问其分配分区。由多路转换器(“mux”)门130A至130H实施的选择逻辑基于一个或多个授权信号132A至132H来选择访问信息134A至134H。一个或多个授权信号132A至132H由仲裁控制单元120以基于较早设定的分配选择请求程序110A至110H中的被分配请求程序的方式来断言。因此,分区142A至142H被其请求程序110A至110H中的被分配请求程序访问。在各种实施方案中,当基于分配没有冲突时,同时访问分区142A至142H中的两者或更多者。
如果由请求程序110A至110H生成的任何访问请求都针对分区142A至142H中的未分配分区,则请求程序110A至110H获得对分区142A至142H的独占访问。基于由仲裁控制单元120提供的仲裁发生独占访问。例如,在各种实施方案中,请求程序110A至110H中的每个活动请求程序都基于最近最少选择的基础来获得独占访问持续一个时钟周期。在其他实施方案中,仲裁控制单元120使用时钟周期的数量或访问请求的数量来确定何时允许请求程序110A至110H中的另一个活动请求程序获得对分区142A至142H的独占访问。
在一些实施方案中,所述计算系统包括混合仲裁方案,其中仲裁控制单元120包括集中式仲裁器,并且请求程序110A至110H中的一者或多者包括分布式仲裁逻辑。例如,请求程序110A至110H中的一者或多者包括仲裁器,所述仲裁器用于从由计算资源112A至112H内的多个源生成的多个请求中选择给定请求以发送到仲裁控制单元120。仲裁控制单元120从接收自请求程序110A至110H的多个请求中选择一个或多个请求以发送到共享资源140。授权信号132A至132H基于所接收的请求被断言并且检测任何接收到的请求是否针对分区142A至142H中的被分配分区。另外,在一些实施方案中,仲裁控制单元120基于编码优先级连同最近最少选择的方案来调整对共享资源140进行独占访问的时钟周期的数量或访问请求的数量。
对请求的响应150被示为被发回到仲裁控制单元120。在其他实施方案中,响应150诸如经由总线被直接发送到请求程序110A至110H。在一些实施方案中,请求程序110A至110H的接口内的轮询逻辑用于从总线或仲裁控制单元120中检索相关响应数据150。在各种其他实施方案中,响应150被发送到计算系统内的其他计算单元(未示出)。
现在参考图2,示出了并行架构处理器200的一个实施方案。在各种实施方案中,并行架构处理器200是图形处理单元(GPU),其中计算单元210A至210D经由仲裁控制单元250访问本地数据存储260。通常,GPU包括用于计算单元210A至210D中的每一者的单独本地数据共享以在通道220A至220M之间共享数据。然而,在这里,在计算单元210A至210D之间共享本地数据存储260。因此,计算单元210A内的通道220A至220M中的一者或多者可以基于操作模式来与计算单元210D内的一个或多个通道220A至220M共享结果数据。
如前所述,并行架构处理器200包括针对高度并行数据应用程序(诸如单指令多数据(SIMD)操作)而优化的专用集成电路。在各种实施方案中,并行架构处理器200是用于视频图形渲染的图形处理单元(GPU)。如所示,计算单元210A内的通道220A至220M中的每一者都包括寄存器222A和算术逻辑单元(ALU)224A。计算单元210A至210D的其他计算单元内的通道也包括类似部件。在各种实施方案中,寄存器222A是用作用于存储操作数和结果的寄存器文件的存储元件。
在各种实施方案中,ALU 224A内的数据流是流水线式的。ALU224A包括流水线寄存器、用于存储中间结果的数据结构和用于执行整数运算、浮点运算、布尔逻辑运算、分支条件比较等等的电路。为了便于说明,未示出这些部件。跨通道220A至220M的给定行内的每个计算单元都是相同的计算单元。这些计算单元中的每一者作用于相同的指令上,但是具有与不同的线程相关联的不同数据。
计算单元210A内的通道220A至220M中的每一者都访问高速缓存230以获取指令。另外,高速缓存230存储要加载到寄存器222A中的操作数数据。对于执行视频图形渲染的实施方案,高速缓存230被称为一级(L1)纹理高速缓存。计算单元210A至210D中的每一者都具有对共享L2高速缓存(未示出)的进一步访问,所述共享L2高速缓存充当计算单元210A至210D的全局数据共享。例如,在各种实施方案中,计算单元210A至210D中的每一者都包括逻辑上被放置在高速缓存230上方的顶部以存储和检索来自共享L2高速缓存的数据的高速缓存控制器。
如前所述,通道220A至220M中的每一者都处理单独线程的数据。计算单元210A至210D中的每一者都处理给定工作单元的线程。操作系统(OS)调度器或用户级调度器使用诸如循环方案、优先级方案、可用性方案或组合等各种方案来调度在具有并行架构处理器200的计算机系统上运行的工作量。可选地,程序员结合运行时系统来调度工作量。在此类情况下,程序员利用软件平台来执行调度。例如,(开放计算语言)框架支持跨异构计算环境的编程,并且包括用于异构计算的低级应用程序编程接口(API)。
OpenCL框架(在本文被通常称为“OpenCL”)包括用于定义执行队列的C类语言接口,其中每个队列都与OpenCL装置相关联。OpenCL装置可以是通用中央处理单元(CPU)、GPU或具有异构多核架构内的至少一个处理器核心的其他单元。在OpenCL框架中,函数调用被称为OpenCL计算内核,或简称为“计算内核”。软件程序员在执行队列中调度计算内核。计算内核与一个或多个数据记录匹配以产生一个或多个计算工作单元。每个工作单元都具有唯一标识符(ID)。计算单元210A至210D中的每一者都由OS或由软件程序员被分配许多工作单元中的一者。计算单元210A至210D中的给定计算单元内的通道220A至220M中的每一者都在被分配工作单元内被分配一个线程。
通道220A至220M中的每一者都访问本地数据共享260。例如,在各种实施方案中,通道220A至220M中的每一者已经在本地数据共享260内分配了空间。计算单元210A至210D中的给定计算单元内的通道220A至220M中的每一者都访问同一给定计算单元内的其他通道的被分配空间。例如,计算单元210A内的通道220A访问被分配给计算单元210A内的通道220M的本地数据存储260内的分配空间。由于处理同一工作单元,所以计算单元210A内的通道220A至220M访问彼此的被分配空间。
由通道220A至220M中的每一者生成的请求寻求访问数据块。在各种实施方案中,数据块(block of data/data block)是存储在连续存储器位置中的一组字节。数据块中的字节数根据设计选择而变化,并且可以具有任何大小。调度器240用于调度由计算单元210A内的通道220A至220M生成的访问请求。所生成的访问请求经由仲裁控制单元250从调度器240发送到本地数据存储260。
如所示,本地数据共享260被分成多个分区262A至262D。在各种实施方案中,分区262A至262D中的每一者都是单独分区,所述单独分区不与分区262A至262D中的任何其他分区重叠。在一些实施方案中,分区262A至262D中的每一者包括相同的数据存储量。在其他实施方案中,分区262A至262D中的一者或多者包括比分区262A至262D中的其他分区更少或更多的数据存储装置。
在各种实施方案中,除了分区262A至262D的大小之外,计算单元210A至210D与分区262A至262D之间的分配也由操作系统、软件程序员、专用控制单元或其他装置来设定。例如,在一些实施方案中,可编程控制和状态寄存器(未示出)存储特定值以设定分配。除了定义分区262A至262D的大小之外,固件、执行软件应用程序或其他软件还用于更新控制和状态寄存器以最初分配并随后重新分配计算单元210A至210D和分区262A至262D。在其他实施方案中,由计算单元210A至210D和/或仲裁控制单元250内的硬件电路实施的控制逻辑执行初始分配、随后的重新分配和大小调整。
在各种实施方案中,仲裁控制单元250用于提供跨计算单元210A至210D的共享存储器能力。例如,在各种实施方案中,同一工作单元的线程跨计算单元210A至210D中的两者或更多者被调度,而不是被调度到计算单元210A至210D中的单个计算单元。为了有效处理,通道之间的通信应扩展到计算单元210A至210D中的单个计算单元之外。
在一个示例中,计算单元210A被分配给分区262A,而计算单元210D被分配给分区262D。然而,稍后,跨两个计算单元210A和210D调度同一工作单元的线程。现在可以有效地执行计算单元210A中的通道220A至220M中的一者或多者需要与计算单元210D中的一个或多个通道220A至220M通信。仲裁控制单元250识别这种情况并且为计算单元210A和210D中选定计算单元提供对本地数据存储260的独占访问。
由仲裁控制单元250选择的计算单元具有独占访问持续给定的持续时间。在各种实施方案中,给定持续时间是单个时钟周期。因此,在上述示例中,计算单元210A和210D交替地在每个时钟周期具有对本地数据存储260的独占访问。在各种实施方案中,给定持续时间是可编程的。在其他实施方案中,基于时钟周期的另一个数量来测量持续时间。在又其他实施方案中,基于访问请求的数量、编码优先级、请求程序的标识符(ID)、响应数据的目的地的ID、最近最少选择的方案等等来测量给定的持续时间。接下来描述仲裁控制单元250所使用的逻辑的进一步细节。
现在参考图3,示出了用于处理针对共享资源的访问请求的方法300的一个实施方案。出于讨论目的,按顺序示出了该实施方案中(以及图4至图5中)的步骤。然而,在其他实施方案中,一些步骤以与所示的顺序不同的顺序发生,一些步骤同时执行,一些步骤与其他步骤组合,并且一些步骤不存在。
在各种实施方案中,在计算系统中设置多个请求程序以访问共享资源。共享资源被分为多个分区。设置过程的一部分是将多个请求程序中的每一者分配给多个分区中的一者(框302)。所述分配是基于以硬件、软件或组合实施的逻辑。操作系统、软件程序员、专用控制单元或其他装置执行分配。另外,在一些实施方案中,还在设置过程期间设定分区的大小。当实现对上一个请求程序的分配时(条件框304的“是”分支),计算系统处理一个或多个软件应用程序的指令(框306)。
在处理一个或多个软件应用程序期间,活动请求程序生成对共享资源的访问请求(框308)。在各种实施方案中,所生成的访问请求识别多个分区中的一者。在一些实施方案中,所述识别包括分区的标识符(ID)。在其他实施方案中,诸如字段或编码等指示间接地识别分区,并且控制逻辑基于所述指示来确定所述识别。在又其他实施方案中,地址通过指示与分区相关联的给定地址范围内的数据存储位置来间接地识别所述分区。通过识别多个分区中的一者,所生成的访问请求针对所识别的分区。目标分区是被分配分区或未分配分区。
如果所生成的访问请求都没有针对未分配分区(条件框310的“否”分支),则基于分配来服务访问请求(框312)。允许每个访问请求访问其分配分区。然而,如果任何生成的访问请求都针对未分配分区(条件框310的“是”分支),则基于允许对整个共享资源进行独占访问的仲裁来服务访问请求(框314)。例如,每一个活动请求程序都获得对整个共享资源的独占访问持续给定的持续时间。在各种实施方案中,基于时钟周期的数量来测量给定持续时间。在其他实施方案中,基于访问请求的数量来测量给定持续时间。在各种实施方案中,给定持续时间是可编程的。在一些实施方案中,给定持续时间还基于编码优先级、请求程序的标识符(ID)、响应数据的目的地的ID、最近最少选择的方案等等。
现在转向图4,示出了用于处理针对共享资源的访问请求的方法400的另一个实施方案。已经为共享资源中的分区分配了多个请求程序。如前所述,请求程序生成识别其中一个分区的访问请求。如果所生成的访问请求都没有针对未分配分区(条件框402的“否”分支),则基于访问被分配分区来服务访问请求(框404)。允许每个访问请求访问其分配分区。在各种实施方案中,同时访问未共享分区。继续处理指令(框406)并且请求程序生成访问请求。
如果任何生成的访问请求都针对未分配分区(条件框402的“是”分支),则选择一个请求程序用于共享资源的非冲突访问(框408)。在各种实施方案中,选定请求程序是生成针对未分配分区的访问请求的请求程序。在其他实施方案中,选定请求程序是作为当前最近最少选择的请求程序的请求程序。在一些实施方案中,作为最近最少选择的请求程序是基于自从为请求程序服务上一个访问请求以来经过的时间。在其他实施方案中,作为最近最少选择的请求程序是基于为请求程序服务的访问请求的数量。在一些实施方案中,选择还基于编码优先级、请求程序的ID、由与请求程序相关联的计算单元处理的操作的识别等等。
停止未选定请求程序(框410)。在一些实施方案中,停止包括防止未选定请求程序发送对共享资源的访问请求。在其他实施方案中,停止包括不选择来自未选定请求程序的存储在请求队列中的访问请求。在一些实施方案中,未选定请求程序的ID用于识别要在队列中忽略的访问请求。
共享资源中的任何分区都可供由选定请求程序生成的访问请求访问(框412)。由选定请求程序生成的访问请求具有对共享资源的独占访问持续给定的持续时间。如前所述,在一些实施方案中,基于时钟周期的数量来测量给定持续时间。在其他实施方案中,基于访问请求的数量来测量给定持续时间。在各种实施方案中,给定持续时间是可编程的。在一些实施方案中,给定持续时间还基于编码优先级、请求程序的标识符(ID)、响应数据的目的地的ID、最近最少选择的方案等等。
当达到给定的持续时间时,设定用于使用仲裁来切换对请求程序的选择的指示。取消选择并停止当前选定的请求程序。基于先前使用的仲裁标准(诸如针对框408中的选择步骤描述的标准)来选择另一个活动请求程序。基于仲裁逻辑的选择继续直到当前工作量完成或强制重置为止。继续处理指令(框406)并且请求程序生成访问请求。从以上可以看出,以两种模式中的一种处理访问请求。如果所生成的访问请求都没有针对未分配分区,则处理在第一模式中继续,其中被分配分区可用于服务访问请求。然而,如果任何生成的访问请求都针对未分配分区为,则处理切换到第二模式,其中选择请求程序以对整个共享资源进行独占访问。
现在转向图5,示出了用于选择对使用共享资源的访问请求的源的方法500的一个实施方案的概括框图。已经为共享资源中的分区分配了多个请求程序。如前所述,请求程序生成识别其中一个分区的访问请求。确定至少一个活动请求程序请求访问资源的未分配分区(框502)。选择其中一个活动请求程序作为具有对整个资源的独占访问的下一个请求程序(框504)。如前所述,考虑了针对选择的许多因素,诸如最近最少选择的方案、编码优先级、许多未决访问请求、已经被服务的访问请求的数量、由相关计算单元执行的计算的指示、当前未完成请求的寿命等等。
在各种实施方案中,选定请求程序具有对共享资源的每个分区的独占访问持续给定的持续时间。如前所述,给定的持续时间是基于各种因素。如果选定请求程序没有访问共享资源诸如持续给定的持续时间(条件框506的“否”分支),则选定请求程序维持选择并继续以独占访问访问共享资源(框508)。然而,如果选定请求程序确实访问共享资源持续给定的持续时间(条件框506的“是”分支),则取消选择选定请求程序(框510)。
设定指示请求程序是最近选择的请求程序的指示(框512)。如果请求程序的工作量尚未完成(条件框514的“否”分支),则方法500的控制流程返回到框504,其中选择另一个请求程序对共享资源进行独占访问。如果请求程序的工作量完成(条件框514的“是”分支),则也完成对请求程序的选择(框516)。如果将另一个工作量分配给请求程序,则在一些实施方案中,操作模式重置为仅提供对共享资源的被分配分区的访问。
注意,上述一个或多个实施方案包括软件。在此类实施方案中,实施所述方法和/或机制的程序指令被传送或存储在计算机可读介质上。被配置为存储程序指令的许多类型的介质都是可获得的并且包括硬盘、软盘、CD-ROM、DVD、快闪存储器、可编程ROM(PROM)、随机存取存储器(RAM)以及各种其他形式的易失性或非易失性存储装置。一般而言,计算机可访问存储介质包括在使用期间计算机可访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质包括诸如磁性或光学介质等存储介质,所述磁性或光学介质例如磁盘(固定或可移动磁盘)、磁带、CD-ROM或DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光。存储介质还包括可经由易失性或非易失性存储介质,诸如RAM(例如,同步动态RAM(SDRAM)、双倍数据速率(DDR、DDR2、DDR3等)、SDRAM、低功耗DDR(LPDDR2等)、SDRAM、RambusDRAM(RDRAM)、静态RAM(SRAM)等)、ROM、快闪存储器、诸如通用串行总线(USB)接口等外围接口访问的非易失性存储器(例如,快闪存储器)等。存储介质包括微机电系统(MEMS)以及可经由通信介质(诸如网络和/或无线链路)访问的存储介质。
另外,在各种实施方案中,程序指令包括以高级编程语言(诸如C)或设计语言(HDL)(诸如Verilog、VHDL)或数据库格式(诸如GDS II流格式(GDSII))对硬件功能性的行为级描述或寄存器传送级(RTL)描述。在一些情况下,所述描述被合成工具读取,所述合成工具合成所述描述以从合成库产生包括一系列门的网表。所述网表包括门的集合,所述门还表示包括所述系统的硬件的功能性。所述网表然后被放置和路由以产生描述要应用于掩模的几何形状的数据集。所述掩模然后用于各种半导体制造步骤以产生与所述系统相对应的一个或多个半导体电路。可选地,根据需要,计算机可访问存储介质上的指令是网表(有或没有合成库)或数据集。另外,所述指令用于由诸如和Mentor等供应商的基于硬件的类型仿真器进行仿真的目的。
尽管已相当详细地描述了以上实施方案,但是一旦完全了解以上公开内容,各种改变和修改对所属领域技术人员将会变为显而易见。期望将随附权利要求解释为涵盖所有此类变化和修改。
Claims (20)
1.一种计算系统,其包括:
共享资源,所述共享资源包括多个分区;
多个请求程序,每个请求程序被分配给所述共享资源的所述多个分区中的不同分区;以及
控制器,所述控制器耦合到所述共享资源,其中响应于从所述多个请求程序中的第一请求程序接收到访问给定分区的请求,所述控制器被配置为:
响应于确定所述给定分区被分配给所述第一请求程序而向所述第一请求程序提供仅对所述给定分区的访问;以及
响应于确定所述给定分区未被分配给所述第一请求程序而向所述第一请求程序提供对所述多个分区中的所有分区的访问。
2.如权利要求1所述的计算系统,其中所述控制器还被配置为当向所述第一请求程序提供对所有分区的访问时,停止所述多个请求程序中除所述第一请求程序之外的每个请求程序对所述共享资源的访问。
3.如权利要求2所述的计算系统,其中所述第一请求程序是所述多个请求程序中最近最少选择的活动请求程序。
4.如权利要求1所述的计算系统,其中所述控制器还被配置为响应于以下项而取消选择所述第一请求程序:
确定完成所述第一请求程序的给定数量的访问请求;以及
确定所述多个请求程序具有更多访问请求。
5.如权利要求4所述的计算系统,其中所述访问请求的给定数量是在单个时钟周期内服务的访问请求的数量。
6.如权利要求4所述的计算系统,其中所述控制器还被配置为:
停止所述第一请求程序对所述共享资源的访问;以及
将所述第一请求程序标记为所述多个请求程序中最近选择的活动请求程序。
7.如权利要求6所述的计算系统,其中所述控制器还被配置为:
选择与所述多个请求程序中的所述第一请求程序不同的第二请求程序;
删除所述选定的第二请求程序的停止;以及
向所述第二请求程序提供对所述多个分区中的所有分区的访问。
8.如权利要求1所述的计算系统,其中所述共享资源是图形处理单元中的本地数据存储,并且所述多个请求程序中的每一者都是单指令多数据(SIMD)计算单元。
9.一种方法,其包括:
将多个请求程序中的每一者分配给共享资源的多个分区中的不同分区;
响应于从多个请求程序中的第一请求程序接收到访问给定分区的请求:
响应于确定所述给定分区被分配给所述第一请求程序而向所述第一请求程序提供仅对所述给定分区的访问;以及
响应于确定所述给定分区未被分配给所述第一请求程序而向所述第一请求程序提供对所述多个分区中的所有分区的访问。
10.如权利要求9所述的方法,其还包括当向所述第一请求程序提供对所有分区的访问时,停止所述多个请求程序中除所述第一请求程序之外的每个请求程序对所述共享资源的访问。
11.如权利要求10所述的方法,其中所述第一请求程序是所述多个请求程序中最近最少选择的活动请求程序。
12.如权利要求9所述的方法,其还包括响应于以下项而取消选择所述第一请求程序:
确定完成所述第一请求程序的给定数量的访问请求;以及
确定所述多个请求程序具有更多访问请求。
13.如权利要求12所述的方法,其中所述访问请求的给定数量是在单个时钟周期内服务的访问请求的数量。
14.如权利要求12所述的方法,其还包括:
停止所述第一请求程序对所述共享资源的访问;以及
将所述第一请求程序标记为所述多个请求程序中最近选择的活动请求程序。
15.如权利要求9所述的方法,其还包括:
选择与所述多个请求程序中的所述第一请求程序不同的第二请求程序;
删除所述选定的第二请求程序的停止;以及
允许所述第二请求程序访问所述多个分区中的任一者。
16.如权利要求9所述的方法,其中所述共享资源是图形处理单元中的本地数据存储,并且所述多个请求程序中的每一者都是单指令多数据(SIMD)计算单元。
17.一种控制器,其包括:
第一接口,所述第一接口耦合到包括多个分区的共享资源;
第二接口,所述第二接口耦合到多个请求程序,每个请求程序被分配给所述共享资源的所述多个分区中的不同分区;以及
控制单元;并且
其中响应于从所述多个请求程序中的第一请求程序接收到访问给定分区的请求,所述控制单元被配置为:
响应于确定所述给定分区被分配给所述第一请求程序而向所述第一请求程序提供仅对所述给定分区的访问;以及
响应于确定所述给定分区未被分配给所述第一请求程序而向所述第一请求程序提供对所述多个分区中的所有分区的访问。
18.如权利要求17所述的控制器,其中所述控制单元还被配置为当向所述第一请求程序提供对所有分区的访问时,停止所述多个请求程序中除所述第一请求程序之外的每个请求程序对所述共享资源的访问。
19.如权利要求17所述的控制器,其中所述控制单元还被配置为响应于以下项而取消选择所述第一请求程序:
确定完成所述第一请求程序的给定数量的访问请求;以及
确定所述多个请求程序具有更多访问请求。
20.如权利要求19所述的控制器,其中所述控制单元还被配置为:
停止所述第一请求程序对所述共享资源的访问;以及
将所述第一请求程序标记为所述多个请求程序中最近选择的活动请求程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/360,205 US10073783B2 (en) | 2016-11-23 | 2016-11-23 | Dual mode local data store |
US15/360,205 | 2016-11-23 | ||
PCT/US2017/062853 WO2018098183A1 (en) | 2016-11-23 | 2017-11-21 | Dual mode local data store |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110023904A true CN110023904A (zh) | 2019-07-16 |
CN110023904B CN110023904B (zh) | 2021-11-02 |
Family
ID=57544333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780072221.1A Active CN110023904B (zh) | 2016-11-23 | 2017-11-21 | 双模式本地数据存储 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10073783B2 (zh) |
EP (1) | EP3327570A1 (zh) |
JP (1) | JP7246308B2 (zh) |
KR (1) | KR102493859B1 (zh) |
CN (1) | CN110023904B (zh) |
WO (1) | WO2018098183A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984328A (zh) * | 2020-04-30 | 2020-11-24 | 中科院计算所西部高等技术研究院 | 具有ooda循环分区机制的流式处理器 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10445850B2 (en) * | 2015-08-26 | 2019-10-15 | Intel Corporation | Technologies for offloading network packet processing to a GPU |
EP3814916A1 (en) * | 2019-03-08 | 2021-05-05 | Mobileye Vision Technologies Ltd. | Priority based management of access to shared resources |
TWI817039B (zh) * | 2020-09-08 | 2023-10-01 | 以色列商無比視視覺科技有限公司 | 用以管理多個啟動器存取共享資源之方法及系統以及相關電腦程式產品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591418A (zh) * | 2010-12-16 | 2012-07-18 | 微软公司 | 具有qos保证的可缩放多媒体计算机系统体系结构 |
CN103513984A (zh) * | 2012-06-22 | 2014-01-15 | 英特尔公司 | 通过应用程序访问图形处理单元存储器的技术 |
US8667200B1 (en) * | 2009-09-22 | 2014-03-04 | Nvidia Corporation | Fast and highly scalable quota-based weighted arbitration |
CN102047241B (zh) * | 2008-05-30 | 2014-03-12 | 先进微装置公司 | 本地与全局数据共享 |
US20150310900A1 (en) * | 2014-04-25 | 2015-10-29 | Apple Inc. | Request aggregation with opportunism |
CN105224886A (zh) * | 2014-06-26 | 2016-01-06 | 中国移动通信集团甘肃有限公司 | 一种移动终端安全隔离方法、装置及移动终端 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5265232A (en) | 1991-04-03 | 1993-11-23 | International Business Machines Corporation | Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data |
US5584017A (en) | 1991-12-19 | 1996-12-10 | Intel Corporation | Cache control which inhibits snoop cycles if processor accessing memory is the only processor allowed to cache the memory location |
JP2906805B2 (ja) * | 1992-02-20 | 1999-06-21 | 富士通株式会社 | メモリ共有型マルチプロセッサシステム |
US6044446A (en) | 1997-07-01 | 2000-03-28 | Sun Microsystems, Inc. | Mechanism to reduce interprocessor traffic in a shared memory multi-processor computer system |
US6868485B1 (en) | 2002-09-27 | 2005-03-15 | Advanced Micro Devices, Inc. | Computer system with integrated directory and processor cache |
US7096323B1 (en) | 2002-09-27 | 2006-08-22 | Advanced Micro Devices, Inc. | Computer system with processor cache that stores remote cache presence information |
US7047322B1 (en) | 2003-09-30 | 2006-05-16 | Unisys Corporation | System and method for performing conflict resolution and flow control in a multiprocessor system |
US7023445B1 (en) | 2004-04-12 | 2006-04-04 | Advanced Micro Devices, Inc. | CPU and graphics unit with shared cache |
US7360032B2 (en) | 2005-07-19 | 2008-04-15 | International Business Machines Corporation | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks |
US7472253B1 (en) | 2006-09-22 | 2008-12-30 | Sun Microsystems, Inc. | System and method for managing table lookaside buffer performance |
US7669011B2 (en) | 2006-12-21 | 2010-02-23 | Advanced Micro Devices, Inc. | Method and apparatus for detecting and tracking private pages in a shared memory multiprocessor |
JP5233437B2 (ja) | 2008-06-23 | 2013-07-10 | トヨタ車体株式会社 | 自動車用表示装置、保護パネルの形状設計方法及び形状設計装置 |
US10860384B2 (en) * | 2012-02-03 | 2020-12-08 | Microsoft Technology Licensing, Llc | Managing partitions in a scalable environment |
-
2016
- 2016-11-23 US US15/360,205 patent/US10073783B2/en active Active
- 2016-12-13 EP EP16203672.7A patent/EP3327570A1/en not_active Ceased
-
2017
- 2017-11-21 KR KR1020197017661A patent/KR102493859B1/ko active IP Right Grant
- 2017-11-21 WO PCT/US2017/062853 patent/WO2018098183A1/en active Application Filing
- 2017-11-21 JP JP2019527881A patent/JP7246308B2/ja active Active
- 2017-11-21 CN CN201780072221.1A patent/CN110023904B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102047241B (zh) * | 2008-05-30 | 2014-03-12 | 先进微装置公司 | 本地与全局数据共享 |
US8667200B1 (en) * | 2009-09-22 | 2014-03-04 | Nvidia Corporation | Fast and highly scalable quota-based weighted arbitration |
CN102591418A (zh) * | 2010-12-16 | 2012-07-18 | 微软公司 | 具有qos保证的可缩放多媒体计算机系统体系结构 |
CN103513984A (zh) * | 2012-06-22 | 2014-01-15 | 英特尔公司 | 通过应用程序访问图形处理单元存储器的技术 |
US20150310900A1 (en) * | 2014-04-25 | 2015-10-29 | Apple Inc. | Request aggregation with opportunism |
CN105224886A (zh) * | 2014-06-26 | 2016-01-06 | 中国移动通信集团甘肃有限公司 | 一种移动终端安全隔离方法、装置及移动终端 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984328A (zh) * | 2020-04-30 | 2020-11-24 | 中科院计算所西部高等技术研究院 | 具有ooda循环分区机制的流式处理器 |
CN111984328B (zh) * | 2020-04-30 | 2023-01-20 | 中科院计算所西部高等技术研究院 | 具有ooda循环分区机制的流式处理器 |
Also Published As
Publication number | Publication date |
---|---|
EP3327570A1 (en) | 2018-05-30 |
CN110023904B (zh) | 2021-11-02 |
US20180143907A1 (en) | 2018-05-24 |
KR102493859B1 (ko) | 2023-01-31 |
US10073783B2 (en) | 2018-09-11 |
KR20190082308A (ko) | 2019-07-09 |
JP2020500379A (ja) | 2020-01-09 |
WO2018098183A1 (en) | 2018-05-31 |
JP7246308B2 (ja) | 2023-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101839544B1 (ko) | 이종 코어의 자동 부하 균형 | |
Belviranli et al. | A dynamic self-scheduling scheme for heterogeneous multiprocessor architectures | |
CN110023904A (zh) | 双模式本地数据存储 | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
CN109478136A (zh) | 使用虚拟向量寄存器文件的系统和方法 | |
Giorgi et al. | An introduction to DF-Threads and their execution model | |
CN103534686A (zh) | 异构核心的自动内核迁移 | |
CN107851004A (zh) | 针对通用寄存器(gpr)的寄存器溢出管理 | |
CN103176848A (zh) | 计算工作分布参考计数器 | |
Lugo et al. | A survey of techniques for reducing interference in real-time applications on multicore platforms | |
Yilmazer et al. | HQL: A scalable synchronization mechanism for GPUs | |
US10970120B2 (en) | Method and system for opportunistic load balancing in neural networks using metadata | |
CN109144685A (zh) | 支持多处理系统中的可重新配置同步的架构和服务 | |
Cong et al. | Architecture support for domain-specific accelerator-rich cmps | |
Beri et al. | The unicorn runtime: efficient distributed shared memory programming for hybrid cpu-gpu clusters | |
EP4121855A1 (en) | Cooperative work-stealing scheduler | |
CN110502334A (zh) | 基于混合内存架构的带宽感知任务窃取方法、系统及芯片 | |
CN103294449A (zh) | 发散操作的预调度重演 | |
US9898333B2 (en) | Method and apparatus for selecting preemption technique | |
US8959497B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
López-Albelda et al. | FlexSched: Efficient scheduling techniques for concurrent kernel execution on GPUs | |
Hussain | Memory resources aware run-time automated scheduling policy for multi-core systems | |
Tong et al. | DAG-aware harmonizing job scheduling and data caching for disaggregated analytics frameworks | |
JP6303584B2 (ja) | データ処理装置、計算機システム、データ処理方法およびデータ処理プログラム | |
Drobintsev et al. | An Effective Implementation Approach for Adapting of HPC Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |