CN106133709B - 用于防止存储器中的存储体冲突的方法和装置 - Google Patents

用于防止存储器中的存储体冲突的方法和装置 Download PDF

Info

Publication number
CN106133709B
CN106133709B CN201580016865.XA CN201580016865A CN106133709B CN 106133709 B CN106133709 B CN 106133709B CN 201580016865 A CN201580016865 A CN 201580016865A CN 106133709 B CN106133709 B CN 106133709B
Authority
CN
China
Prior art keywords
thread
variable delay
load
memory
bank
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.)
Expired - Fee Related
Application number
CN201580016865.XA
Other languages
English (en)
Other versions
CN106133709A (zh
Inventor
金元燮
金泰松
金度亨
李承远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN106133709A publication Critical patent/CN106133709A/zh
Application granted granted Critical
Publication of CN106133709B publication Critical patent/CN106133709B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/372Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a time-dependent priority, e.g. individually loaded time counters or time slot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/376Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a contention resolving method, e.g. collision detection, collision avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/281Single cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

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)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种防止存储器中的存储体冲突的方法包括:确定要访问在其中预期发生存储体冲突的第一存储体的功能单元的线程中的每个的处理定时;根据所确定的处理定时,设置线程中的每个的可变延迟以用于线程的顺序访问;根据所确定的处理定时,顺序地将线程存储在数据存储器队列中;以及通过每当线程中的每个的可变延迟经过时,允许在数据存储器队列中所存储的线程顺序地访问第一存储体来执行操作。

Description

用于防止存储器中的存储体冲突的方法和装置
技术领域
本发明的一个或多个实施例涉及一种用于防止存储器中的存储体冲突的方法和装置,并且更具体地,涉及一种用于防止具有多个存储体的存储系统中的存储体冲突的方法和装置。
背景技术
多核处理器或可重新配置的处理器具有诸如低功率和提高的操作能力的高效能,并且因此被广泛地使用,不仅用于诸如通用个人计算机(PC)或笔记本式计算机的计算设备而且还用于嵌入式装置。存在下述近期趋势:进一步增加处理核心的数量或可重新配置的处理器的功能单元(FU)的数量,以便提高作为处理器的处理性能指标的操作速率或操作量。然而,随着处理核心的数量或FU的数量的增加,对存储系统中的存储体的访问增加,并且因此发生存储体冲突的可能性增加。因为频繁的存储体冲突是处理器的性能退化的主要原因,所以需要防止发生存储体冲突的解决方案。
发明内容
技术问题
本发明的一个或多个实施例包括用于防止存储器中的存储体冲突的方法和装置。
本发明的一个或多个实施例包括在其上记录有用于在计算机中运行以上方法的程序的计算机可读记录介质。
额外的方面将在某种程度上(in part)在下面的描述中被陈述并且根据该描述在某种程度上将是清楚的,或者额外的方面可以通过实践所示出的示例性实施例被习得。
技术方案
根据本发明的一个或多个实施例,一种防止存储器中的存储体冲突的方法包括:确定要访问在其中预期发生存储体冲突的第一存储体(memory bank)的功能单元的线程中的每个的处理定时;根据所确定的处理定时,设置线程中的每个的可变延迟以用于线程的顺序访问;根据所确定的处理定时,顺序地将线程存储在数据存储器队列中;以及每当线程中的每个的可变延迟经过时,通过允许在数据存储器队列中所存储的线程顺序地访问第一存储体来执行操作。
在设置线程中的每个的可变延迟时,可以基于处理定时将可变延迟设置为针对线程中的每个不同的值。
在设置线程中的每个的可变延迟时,可以基于在所确定的处理定时要被存储在数据存储器队列中的线程的堆叠数量和第一存储体的固定响应时间,来设置可变延迟。
在设置线程中的每个的可变延迟时,可以通过将用于指定可变延迟的值的预定字段添加到关于线程的指令,来设置可变延迟。
在设置线程中的每个的可变延迟时,可以将可变延迟设置为使得在从第一存储体请求关于线程中的每个的数据的时间点起经过了第一存储体的固定响应时间的时间点处执行操作。
可变延迟可以被设置为与第一存储体中通过线程要发生的存储体冲突的数量成比例。
执行操作可以包括:检查在数据存储器队列中所存储的线程的优先级;允许线程按照优先级次序来顺序地访问第一存储体;将访问线程的处理结果存储在重排序缓冲器中;以及通过读出所存储的处理结果来执行操作。
当在完成通过功能单元所请求的第一周期的线程的存储的状态下请求第二周期的线程的存储时,数据存储器队列可以通过擦除第一周期的线程当中具有最高优先级的线程来新近存储第二周期的线程。
在设置线程中的每个的可变延迟时,可变延迟可以被设置为使得通过功能单元所请求的、第一周期的线程当中具有最低优先级的线程与通过功能单元所请求的、第二周期的线程当中具有最高优先级的线程的可变延迟彼此相同。
功能单元的线程可以包括在粗粒度阵列(coarse-grained array,CGA)模式中所生成的线程。
该方法可以通过编译器在调度处理中执行。
根据本发明的一个或多个实施例,存在一种在其上记录有程序的计算机可读记录介质,该程序用于执行以上方法。
根据本发明的一个或多个实施例,一种用于防止存储器中的存储体冲突的装置包括:多个功能单元,生成要访问在其中预期发生存储体冲突的第一存储体的线程;存储器控制器,确定线程中的每个的处理定时并且根据所确定的处理定时,设置线程中的每个的可变延迟以用于线程的顺序访问;以及数据存储器队列,根据所确定的处理定时来顺序地存储线程,其中,存储器控制器通过每当线程中的每个的可变延迟经过时,允许在数据存储器队列中所存储的线程顺序地访问第一存储体来控制操作的执行。
存储器控制器可以基于处理定时将可变延迟设置为针对线程中的每个不同的值。
存储器控制器可以基于在所确定的处理定时要被存储在数据存储器队列中的线程的堆叠数量和第一存储体的固定响应时间,来设置可变延迟。
存储器控制器可以通过将用于指定可变延迟的值的预定字段添加到关于线程的指令,来设置可变延迟。
存储器控制器可以将可变延迟设置为使得在从第一存储体请求关于线程中的每个的数据的时间点起经过了第一存储体的固定响应时间的时间点处执行操作。
可变延迟可以被设置为与要通过第一存储体中的线程而发生的存储体冲突的数量成比例。
存储器控制器可以检查在数据存储器队列中所存储的线程的优先级并且允许线程按照优先级次序来顺序地访问第一存储体。装置可以进一步包括重排序缓冲器,存储访问线程的处理结果。功能单元可以通过读出所存储的处理结果来执行操作。
存储器控制器可以设置可变延迟,使得可变延迟可以被设置为使得通过功能单元所请求的、第一周期的线程当中具有最低优先级的线程与通过功能单元所请求的、第二周期的线程当中具有最高优先级的线程的可变延迟彼此相同。
发明的有益效果
如上所述,根据本发明的以上实施例中的一个或多个,通过将具有不同值的可变延迟单独地设置到对于特定存储体——在该存储体中预期发生存储体冲突——所请求的处理器的线程,可以不发生处理器阻塞(stalling)并且还可以防止存储体冲突。
附图说明
根据结合附图的实施例的以下描述,这些和/或其他方面将变得明显并且更加容易领会,在附图中:
图1是根据实施例的计算设备的配置的框图;
图2示出了在存储器中通常可能发生的存储体冲突的情况;
图3是用于描述根据实施例防止存储器中的存储体冲突的方法的流程图;
图4是根据实施例的处理器核心的配置的详细的图;
图5是根据实施例的存储器系统的配置的详细的图;
图6是用于描述根据实施例用于防止存储器冲突的编译器的调度的视图;
图7是用于描述根据实施例使用可变延迟与数据存储器队列(DMQ)的线程的堆叠之间的关系来设置可变延迟的方法的视图;
图8a是用于描述根据实施例通过使用可变延迟防止存储体冲突的方法的视图;
图8b是用于描述通过使用图8a的表格中的可变延迟来对处理器核心的调度进行处理的视图;
图9a是用于描述当代替使用图7的可变延迟来使用固定延迟时可能发生的存储体冲突的视图;
图9b是用于描述通过使用图9a的表格中的固定延迟来对处理器核心的调度进行处理的视图;
图10a是用于描述根据另一个实施例通过使用可变延迟来防止存储体冲突的方法的视图;
图10b是用于描述当不同于图10a使用固定延迟时可能发生的存储体冲突的视图;
图11a是用于描述根据另一个实施例通过使用可变延迟防止存储体冲突的方法的视图;以及
图11b是用于描述当不同于图11a使用固定延迟时可能发生的存储体冲突的视图。
具体实施方式
实施发明的最佳模式
根据本发明的一个或多个实施例,一种防止存储器中的存储体冲突的方法包括:确定要访问在其中预期发生存储体冲突的第一存储体的功能单元的线程中的每个的处理定时;根据所确定的处理定时,设置线程中的每个的可变延迟以用于线程的顺序访问;根据所确定的处理定时,顺序地将线程存储在数据存储器队列中;以及通过每当线程中的每个的可变延迟经过时,允许在数据存储器队列中所存储的线程顺序地访问第一存储体来执行操作。
根据本发明的一个或多个实施例,存在一种在其上记录有用于运行以上方法的程序的计算机可读记录介质。
根据本发明的一个或多个实施例,一种用于防止存储器中的存储体冲突的装置包括:多个功能单元,生成要访问在其中预期发生存储体冲突的第一存储体的线程;存储器控制器,确定线程中的每个的处理定时并且根据所确定的处理定时,设置线程中的每个的可变延迟以用于线程的顺序访问;以及数据存储器队列,根据所确定的处理定时来顺序地存储线程,其中,存储器控制器通过每当线程中的每个的可变延迟经过时,允许在数据存储器队列中所存储的线程顺序地访问第一存储体来控制操作的执行。
本发明的模式
现在将详细地参考在附图中示出其示例的实施例,在附图中,相同的附图贯穿附图标记指代相同的元件。就这点而言,本实施例可以具有不同的形式,并且不应当被解释为限于在本文中所阐述的描述。因此,通过参考附图在下面描述实施例仅为了解释本描述的各方面。
在下面的描述中,参考附图详细地描述实施例。
图1是根据实施例的计算设备的配置的框图。参考图1,计算设备10可以包括具有多个功能单元(FU)113的处理器核心110、存储器控制器120以及存储器系统130。然而,尽管在图1中未示出,但是计算设备10可以包括多个处理器核心。计算设备20可以包括编译器200。计算设备10和20可以与分离的独立的设备相对应,或可以通过一个设备中的分离的模块而被具体化。例如,计算设备20可以是对包括循环的程序代码进行编译的个人计算机(PC),并且实际被编译的指令可以通过诸如智能电话或平板式设备的其他计算设备10来运行。计算设备10和20可以通过下述来具体化或可以被包括在其中:PC、服务器计算机、智能电话、个人数字助理(PDA)、便携式媒体播放器(PMP)、导航设备、TV、内容再现装置、通信系统、图像处理系统、图形处理系统、膝上型计算机或平板式PC。
编译器200将给定的程序代码转换为低级语言。例如,编译器200将以高级语言所编写的程序代码转换为汇编语言或机器语言。编译器200可以通过使用转换后的汇编语言或机器语言的指令,来调度FU 113的操作。当例如处理器核心110是可重新配置处理器时,编译器200可以提供粗粒度阵列(CGA)模式的调度。编译器200可以使用在计算设备20的存储器(未示出)中所存储的信息来对所编写的程序代码进行编译。
计算设备20可以在先地存储关于下述的信息:给定的程序代码、用于运行程序代码的可重新配置处理器——例如处理器核心110——的架构、FU 113的详情、FU 113之间的互联、配置存储器的详情、寄存器文件的数量、FU 113与寄存器文件之间的互联。
同时,为了便于解释实施例,关于计算设备10和20,在图1中仅示出了相关的构成元件。因此,本领域普通技术人员将理解到,除了图1中所示的构成元件之外,可以进一步提供其他通用的构成元件。
图2示出了在存储器中通常可能发生的存储体冲突的情况。
诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)的通用存储器设备可以包括多个存储体,该多个存储体被从存储器区域分割为预定的数量以可独立访问。不同的处理器核心或不同的FU可以从处理器设备请求关于要由相应的处理器核心或FU所处理的不同的线程的数据。以下参考图2来描述在其中存储器设备被分割为四(4)个存储体——存储体1、存储体3以及存储体4——的情况的示例。另一方面,在图2和随后的附图中,术语“T=n”——其中,n是自然数——指示作为根据在处理器核心的性能中所设置的时钟数量的周期的处理时间的一(1)个时钟单位。
首先,在其中未发生存储体冲突的情况201中,在T=1处的线程可以包括:用于加载在存储体1的地址5处的数据的线程LOAD@5;用于加载在存储体2的地址6处的数据的线程LOAD@6;用于加载在存储体3的地址7处的数据的线程LOAD@7;以及用于加载在存储体4的地址8处的数据的线程LOAD@8。在T=2处的线程包括作为使用通过线程LOAD@5至LOAD@8所读出的数据进行的加法运算的线程ADD 5至ADD 8。因为在同一周期——例如,T=1——期间处理器核心或FU分别地访问不同的存储体,所以可以执行并行的数据加载和运算,而不具有任何存储体冲突。
执行加法运算ADD m——其中,m是自然数——的时间点可以与完成读出线程LOAD@m的时间点或周期相对应。例如,LOAD@5可以指示从存储体1的地址5读取关于线程LOAD@5的数据的时间点。ADD 5可以指示使用线程LOAD@5进行的加法运算可用的时间点。LOAD和ADD通过分离的FU或分离的处理器核心来处理,其中未发生存储体冲突。
在其中发生存储体冲突的情况202中,在一(1)个周期内,多个处理器核心或多个FU同时地从一个存储体——例如,存储体1——请求关于多个线程的数据。在T=1处的线程可以包括:用于加载在存储体1的地址1处的数据的线程LOAD@1;用于加载在存储体1的地址1处的数据的线程LOAD@1;用于加载在存储体1的地址3处的数据的线程LOAD@3;以及用于加载在存储体1的地址4处的数据的线程LOAD@4。因为地址1至地址4的数据不可以同时地从存储体1加载,所以如图2所示,在T=2至T=4处发生处理器阻塞。结果,在T=5处完成LOAD@1至LOAD@4的数据的读出,并且相应地在T=5处执行ADD 1至ADD 4的操作。另外,在其中发生处理器阻塞的T=2至T=4期间,不可以执行其他操作,以致可能低效地使用处理资源,例如,运算速度下降。因为处理器通过从存储器加载/存储大量的数据来对很多运算进行处理,所以可能频繁地发生同时地从一个存储体请求关于不同线程的数据的存储体冲突。
另一方面,根据本实施例,即使当从一个存储体——例如,存储体1——同时地请求关于许多线程的数据时,也可以防止存储体冲突,即,发生处理器阻塞的现象。在下面的描述中,根据本实施例详细地描述防止存储器中的存储体冲突的方法以及计算设备10和20的操作。
图3是用于描述根据实施例防止存储器中的存储体冲突的方法的流程图。
参考图3,防止存储器中的存储体冲突的方法可以与图1的计算设备10的编译器200的编译调度有关。在操作301中,编译器200确定要访问在其中预期发生存储体冲突的存储体的FU 113的线程中的每个的处理定时。
在操作202中,编译器200根据所确定的处理定时来设置线程中的每个的可变延迟以用于线程的顺序访问。当这样做时,因为编译器200可以基于对于线程的处理定时来可变地设置用于每个线程的延迟,所以线程中的每个的延迟可以具有不同的值。具体地,编译器200可以通过将用于限定延迟值的预先确定的字段添加到在线程中所包括的指令来设置可变延迟。例如,编译器200可以生成指令LOAD Rdest、Address[Rx,Ry]以及Rlatency作为LOAD指令。LOAD Rdest是用于指令从存储体Rdest加载数据的字段。Address[Rx,Ry]是用于指示要从其加载数据的存储体Rdest的地址的字段。编译器200可以通过将Rlatency字段添加到LOAD指令来设置可变延迟。可变延迟可以被设置为防止FU 113的阻塞,直到所有操作被完整地执行为止,并且可变延迟可以被设置为与在存储器中通过线程发生的存储体冲突的数量成比例。
在操作303中,编译器200可以进行调度,使得关于线程的数据可以根据所确定的处理定时被顺序地存储在数据存储器队列(data memory queue,DMQ)中。
在操作304中,编译器200通过每当线程中的每个的可变延迟经过时顺序地允许在DMQ中所存储的线程访问存储体来执行操作。具体地,编译器200检查在DMQ中所存储的线程中的每个的优先级,并且允许线程按照优先级次序来访问存储体。然后,编译器200进行调度,使得访问线程的处理的结果被存储在重排序缓冲器(reorder buffer)(例如,图5的重排序缓冲器139)中。最后,编译器200进行调度,使得处理器核心110可以读出在重排序缓冲器中所存储的处理结果并且执行操作。
综上,编译器200执行调度,使得在计算设备10中所包括的每个硬件可以如在操作301至304中那样进行操作,从而防止存储体冲突。
另一方面,图3的防止存储器中的存储体冲突的方法可以是在其中嵌入有编译器200的编译调度的计算设备10的操作序列。以下基于计算设备10来描述图3。
在操作301中,FU 113生成要访问在其中预期发生存储体冲突的存储体的线程。
在操作302中,存储器控制器120确定线程中的每个的处理定时,并且根据所确定的处理定时来设置线程中的每个的可变延迟以用于线程的顺序访问。因为存储器控制器120可以基于线程的处理定时可变地设置用于线程中的每个的延迟,所以线程的延迟可以具有不同的值。具体地,存储器控制器120可以通过将用于指定延迟值的预先确定的字段添加到关于线程的指令来设置可变延迟。例如,存储器控制器120可以通过添加关于LOAD指令Rlatency字段——诸如的LOAD Rdest、Address[Rx,Ry]以及Rlatency——来设置可变延迟。可变延迟可以被设置为防止FU 113的阻塞,直到所有操作被完全执行为止,并且可变延迟可以被设置为与在存储器中通过线程发生的存储体冲突的数量成比例。
在操作303中,DMQ根据所确定的处理定时来顺序地存储线程。
在操作304中,存储器控制器120通过每当线程中的每个的可变延迟经过时允许在DMQ中所存储的线程顺序地访问存储体来控制操作的执行。具体地,存储器控制器120检查在DMQ中所存储的线程中的每个的优先级,并且允许线程按照优先级次序来访问存储体。然后,存储器控制器120将访问线程的处理的结果存储在重排序缓冲器中。最后,处理器核心110读出在重排序缓冲器中所存储的处理结果并且执行操作。
图4是根据实施例的处理器核心110的配置的详细的图。
参考图4,处理器核心110是用于执行特定的任务、指令或操作的硬件,并且包括FU113。FU 113可以与算术逻辑单元(ALU)、乘法器或加载/存储单元相对应。可以在FU 113之间提供多个输入/输出路径。另外,处理器核心110可以包括多种类型的寄存器文件,诸如本地寄存器文件。
处理器核心110可以根据CGA模式通过使用在处理器核心110中所包括的FU 113来并行地对循环操作进行处理。换言之,当处理器核心110根据CGA模式进行操作时,处理器核心110可以执行循环级并行(loop level parallelism,LLP)。
图5是根据实施例的存储器系统的配置的详细的图。参考图5,可以通过存储器控制120来控制存储器系统130的加载/存储操作。
存储器系统130可以包括数量为N个的存储体131、132、133和134,数据存储器队列(DMQ)137以及重排序缓冲器139,其中,N是自然数。为了解释的方便,尽管图5示出了存储器系统130包括存储体1 131、存储体2 132、存储体3 133以及存储体4 134,但是本实施例不限于此并且存储器系统130可以包括各种数量的存储体。
在下面的描述中,详细地描述如何通过使用计算设备10和计算设备20的硬件结构来具体化图3的防止存储体冲突的上述方法。
图6是用于描述根据实施例用于防止存储器冲突的编译器的调度的视图。
参考图6,通过处理器核心110所请求的线程包括在周期A期间要被执行的LOAD@1、LOAD@2、LOAD@3以及LOAD@4。假定LOAD@1至LOAD@4是要访问一个存储体——例如图2的存储体1——的线程。如上所述,LOAD@1是用于加载存储体——例如图2的存储体1——的地址1的数据的线程,LOAD@2是用于加载同一存储体——即存储体1——的地址2的数据的线程,LOAD@3是用于加载同一存储体——即存储体1——的地址3的数据的线程,以及LOAD@4是用于加载同一存储体——即存储体1——的地址4的数据的线程。
首先,当存储器控制器120从存储器系统130的存储体1 131同时地请求关于周期A的线程LOAD@1至LOAD@4的数据时,发生存储器冲突(601)。
具体地,在T=1处,即使存储器控制器120从存储体1 131请求关于线程LOAD@1至LOAD@4的所有数据时,也仅线程LOAD@1可以访问存储体1 131。因此,在T=1处,在线程LOAD@2至LOAD@4中发生存储体冲突。同样地,在T=2处,即使存储器控制器120从存储体1131请求关于线程LOAD@2至LOAD@4的所有数据时,也仅线程LOAD@2可以访问存储体1 131。因此,在T=2处,在线程LOAD@3和LOAD@4中发生存储体冲突。结果,在T=1至T=3处,均可能发生存储体冲突。
不同于以上,通过根据本实施例使用DMQ 137可以对线程中的每个进行处理而没有任何存储体冲突。
具体地,在不发生存储体冲突的情况中(602),存储器控制器120可以进行控制,使得周期A的线程LOAD@1、LOAD@2、LOAD@3以及LOAD@4被顺序地存储在DMQ 137中。换言之,在访问存储体1 131之前线程首先被存储在DMQ 137中。
然后,在T=1处,作为DMQ 137中具有最高优先级的线程的LOAD@1访问存储体1131。接下来,LOAD@2在T=2处、LOAD@3在T=3处以及LOAD@4在T=4处访问存储体1 131。因此,因为在每个时间点处仅一个线程访问存储体1 131,所以不发生存储体冲突。
结果,编译器200执行调度,使得处理器核心110、存储器控制器120以及DMQ 137可以按照以上顺序进行操作。
图7是用于描述根据实施例使用可变延迟与DMQ 137的线程的堆叠之间的关系来设置可变延迟的方法的视图。在下面的描述中,以下参考图7来描述可变延迟与DMQ 137的线程的堆叠之间的关系。
参考图7,假定线程包括要在T=1处执行的LOAD@1、LOAD@2、LOAD@3和LOAD@4,以及要在T=2处执行的LOAD@5、LOAD@6、LOAD@7和LOAD@8。
可以通过使用数学算式1来设置可变延迟。
数学算式1
[Math.1]
可变延迟=(固定存储器响应时间)+(DMQ堆叠的数量)
参考数学算式1,可以通过对存储器系统130的固定存储器响应时间和DMQ 137中的堆叠的数量的求和来计算“可变延迟”。在图7和随后的附图中,假定存储器系统130的固定存储器响应时间被固定为四(4)个周期。然而,这仅是为了解释的方便,并且存储器系统130的响应时间可以根据存储器系统130的硬件规范而变化。
因为在图7中假定LOAD@1是具有最高优先级的线程,所以在DMQ137中没有存储线程。因此,因为固定存储器响应时间=4并且DMQ堆叠的数量=0,所以LOAD@1的可变延迟被设置为值4。
在存储体1 131中,可以接在线程LOAD@1之后来访问线程LOAD@2。因此,在请求关于线程LOAD@2的数据的时间点处,线程LOAD@1已经被存储在DMQ 137中。因此,因为固定存储器响应时间=4并且DMQ堆叠的数量=1,所以LOAD@2的可变延迟被设置为值5。
以相同的方式,因为固定存储器响应时间=4并且DMQ堆叠的数量=2,所以LOAD@3的可变延迟被设置为值6。另外,因为固定存储器响应时间=4并且DMQ堆叠的数量=3,所以LOAD@4的可变延迟被设置为值7。
由于存储体冲突,在时间T=1处,在存储体1 131中仅可以访问线程LOAD@1。因此,在请求关于线程LOAD@5的数据的T=2处,擦除在DMQ中所存储的线程LOAD@1。因此,因为固定存储器响应时间=4并且DMQ堆叠的数量=3,所以LOAD@5的可变延迟被设置为值7,其与LOAD@4的可变延迟相同。
在存储体1 131中,可以接在线程LOAD@5之后来访问线程LOAD@6。因此,在请求关于线程LOAD@6的数据的时间点处,线程LOAD@2至LOAD@5被存储在DMQ 137中。因此,因为固定存储器响应时间=4并且DMQ堆叠的数量=4,所以LOAD@6的可变延迟被设置为值8。
以相同的方式,因为固定存储器响应时间=4并且DMQ堆叠的数量=5,所以LOAD@7的可变延迟被设置为值9。另外,因为固定存储器响应时间=4并且DMQ堆叠的数量=6,所以LOAD@8的可变延迟被设置为值10。
综上,在根据本实施例的调度方法中,因为考虑到在DMQ 137中所存储的线程的堆叠来设置可变延迟,所以可以防止存储体冲突。换言之,编译器200可以依赖于DMQ 137的队列深度来调度可变延迟的设置。
图8a是用于描述根据实施例通过使用可变延迟防止存储体冲突的方法的视图。参考图8a,存储器系统130包括四(4)个存储体:存储体1 131、存储体2 132、存储体3 133以及存储体4 134。
处理器核心110的线程包括在周期A期间要被执行的LOAD@1、LOAD@2、LOAD@3和LOAD@4以及在周期B期间要被执行的LOAD@5、LOAD@6、LOAD@7和LOAD@8。线程LOAD@1至LOAD@8是要访问存储体1 131的线程。如上所述,LOAD@1是用于加载存储体1 131的地址1的数据的线程,以及LOAD@2至LOAD@8是用于加载存储体1 131的地址2至地址8的数据的线程。另一方面,在周期C期间,执行:作为使用通过LOAD@1所读出的数据进行的加法运算的ADD 1,作为使用通过LOAD@2所读出的数据进行的加法运算的ADD 2,作为使用通过LOAD@3所读出的数据进行的加法运算的ADD 3以及作为使用通过LOAD@4所读出的数据进行的加法运算的ADD 4。另外,同样地,在周期D期间执行作为加法运算的ADD5至ADD 8。周期A至周期D可以与非顺序的时间——例如,T=1、T=2、T=7以及T=11——的周期相对应,或与顺序的时间——例如,T=1至T=4——的周期相对应。
参考图8,可以不同时地从存储体1 131请求关于周期A的LOAD@1至LOAD@4的四个线程的数据。另外,可以不同时地从存储体1 131请求关于周期B的LOAD@5至LOAD@8的四个线程的数据。
以下描述图8a的表格801,其示出了当线程LOAD@1至LOAD@8分别地被设置为具有如以上在图7中所描述的可变延迟时存储体1 131的请求定时和存储体1 131的响应定时。
在T=1至T=8的每个周期期间,由于存储体冲突,线程可以逐一顺序地访问存储体1 131。在表格801中,“M.Req”指示对存储体1 131的存储器请求。
如同以上关于图7假定存储体1 131的固定存储器响应时间为四(4)个周期那样,存储体1 131可以在T=4至T=1处响应周期中的每个。在表格801中,“M.Req”指示存储体1131中的存储器响应。
结果,因为存储体1 131对于LOAD@1至LOAD@8的请求的响应与经过可变延迟的时间点相同地发生,所以处理器核心110可以在所调度的周期期间读出关于线程LOAD@1至LOAD@8的数据,并且执行加法运算ADD1至ADD 8。因此,处理器核心110可以对加法运算ADD1至ADD 8进行处理,而不发生处理器阻塞。
在图8a中,术语“LOAD(n)@m”指示加载特定存储体的地址m的数据的线程,意味着可变延迟的值为n个周期。
图8b是用于描述通过使用图8a的表格801中的可变延迟来对处理器核心110的调度进行处理的视图。参考图8b,如在图8a的表格801中所描述地那样,可以在为线程LOAD@1至LOAD@8设置的可变延迟经过的时间点处分别地执行加法运算ADD 1至ADD 8。换言之,当对线程LOAD@1至LOAD@8设置不同的可变延迟时,对于LOAD@1至LOAD@8的请求的存储体1131的响应中的每个在相对应的可变延迟经过的时间点处完成。因此,可以执行运算ADD 1至ADD 8而不发生处理器阻塞。
图9a是用于描述当使用固定延迟而不是使用图7的可变延迟时可能发生的存储体冲突的视图。参考图9a,不同于图8a的四(4)个周期至十(10)个周期的可变延迟,表格901示出了彼此相同的六(6)个周期的固定延迟。
因为周期A的四(4)个线程LOAD@1至LOAD@4均被设置为具有六(6)个周期的固定延迟,所以处理器核心110期望在T=6处完成存储体1 131对线程LOAD@1至LOAD@4的响应。然而,如以上在图7中假定地那样,因为存储体1 131的固定存储器响应时间为四(4)个周期,所以要完成的对于线程LOAD@1的线程的请求在T=4处开始,并且因此对线程LOAD@1至LOAD@4的请求的响应在T=7处完成。因此,因为在处理器核心110的调度所期望的T=6处,处理器核心110尚未读出关于线程LOAD@4的数据,所以在处理器核心110中发生处理器阻塞。
同样地,尽管关于被设置为六(6)个周期的固定延迟的周期B的线程LOAD@5至LOAD@8,处理器核心110预期在T=7处完成处理器响应,但是在T=7处不存在对线程LOAD@5至LOAD@8中的任何一个的存储器响应。结果,因为直到T=11才完成在对线程LOAD@5至LOAD@8的存储器响应,所以在T=8至T=10处在处理器核心110中发生处理器阻塞。因此,与在其中设置有图8a和图8b的可变延迟的情况相比,当如图9a中那样关于所有线程设置相同的固定延迟时,与在其中不设置延迟的情况类似地,可能发生存储体冲突。
图9b是用于描述通过使用图9a的表格中的固定延迟来对处理器核心110的调度进行处理的视图。参考图9b,如同在关于图9a的表格901的描述中那样,在对线程LOAD@1至LOAD@8中的每个设置的固定延迟经过的时间点处,不执行加法运算ADD 1至ADD 8。换言之,因为在对线程LOAD@1至LOAD@4设置的六(6)个周期的固定延迟经过的时间点T=6处,未完成对线程LOAD@1至LOAD@4的存储器响应,所以发生处理器阻塞。另外,因为在对线程LOAD@5至LOAD@8设置的六(6)个周期的固定延迟经过的时间点T=7处,未完成对线程LOAD@5至LOAD@8的存储器响应,所以在对线程LOAD@5至LOAD@8的存储器响应完成之前的T=8至T=10处发生处理器阻塞。
结果,基于图8a至图9b,当预期发生存储体冲突时,通过如图8a和图8b所示地将可变延迟设置到相应的线程可以有效地降低处理器阻塞。另外,可以防止存储体冲突。
此外,因为有效地降低了存储体冲突,所以在由“Δ”所指示的定时处处理器核心可以具有并行地执行处理的高性能。
图10a是用于描述根据另一个实施例通过使用可变延迟来防止存储体冲突的方法的视图。参考图10a,不同于图8a和图8b,仅处理六(6)个线程LOAD@1至LOAD@6和六(6)个加法运算ADD 1至ADD 6。根据图7的方法的可变延迟被设置到线程LOAD@1至LOAD@6。
图10b是用于描述当不同于图10a使用固定延迟时可能发生的存储体冲突的视图。参考图10b,如图9a和图9b所示地设置六(6)个周期的固定延迟,但是不同于图9a和图9b,仅处理六(6)个线程LOAD@1至LOAD@6和六(6)个加法运算ADD 1至ADD 6。
将图10a与图10b进行比较,如以上在图8a至图9b中所描述地,可以执行图10a的处理调度而由于可变延迟的设置不发生处理器阻塞;相反,在图10b的处理调度中,由于固定延迟,在T=7和T=8处可能发生处理器阻塞。
此外,当将图10a和图10b彼此比较时,即使平均延迟一致地为六(6)个周期时,但是在图10a中可以在总计九(9)个周期内完成所有处理,或在图10b的总计十一(11)个周期内完成所有处理。因此,通过设置可变延迟,不仅可以防止处理器阻塞还可以改进操作速率。
图11a是用于描述根据另一个实施例通过使用可变延迟防止存储体冲突的方法的视图。参考图11a,不同于图8a和图8b,仅处理四(4)个线程LOAD@1至LOAD@4和四(4)个加法运算ADD 1至ADD 4。根据参考图7的方法所描述的可变延迟被设置到线程LOAD@1至LOAD@4。
图11b是用于描述当不同于图11a使用固定延迟时可能发生的存储体冲突的视图。参考图11b,如图9a和图9b那样设置六(6)个周期的固定延迟。然而,不同于图9a和图9b,仅处理四(4)个线程LOAD@1至LOAD@4和四(4)个加法运算ADD 1至ADD 4。
将图11a与图11b进行比较,可以执行在图11a和图11b中所示的处理调度而不具有处理器阻塞,无论设置可变延迟还是固定延迟。
然而,当将图11a和图11b彼此比较时,图11a中的平均延迟为五(5)个周期,小于为六(6)周期的图11b中的平均延迟。因此,当设置可变延迟时,与在其中设置固定延迟的情况相比,可以提高操作速率。
如上所述,根据本发明的以上实施例中的一个或多个,通过将具有不同值的可变延迟单独地设置到对于特定存储体——在该存储体中预期发生存存储体冲突——所请求的处理器的线程,可以不发生处理器阻塞并且还可以防止存储体冲突。
计算机可读代码可以以多种方式在介质上记录/传输,介质的示例包括:记录媒介,诸如磁存储媒介(例如,ROM、软盘、硬盘等)以及光记录媒介(例如,CD-ROM或DVD);或传输媒介,诸如互联网传输媒介。
应当理解,在本文中所描述的示例性实施例应当仅被认为是描述性的意味并且不出于限制的目的。每个实施例内的特征或方面的描述通常应当被认为可用于在其他实施例中的其他相似的特征或方面。
虽然参考附图描述了本发明的一个或多个实施例,但是本领域普通技术人员将理解到,在其中可以在形式上和细节上进行各种改变而不背离通过所附权利要求书所限定的本发明的精神和范围。

Claims (14)

1.一种防止存储器中的存储体冲突的方法,所述方法包括:
确定要访问在其中预期发生存储体冲突的第一存储体的功能单元的线程中的每个的处理定时;
根据所确定的处理定时,设置线程中的每个的可变延迟以用于线程的顺序访问;
根据所确定的处理定时,顺序地将线程存储在数据存储器队列中;以及
通过每当线程中的每个的可变延迟经过时,允许在数据存储器队列中所存储的线程顺序地访问第一存储体来执行操作,
其中,当在完成通过功能单元所请求的第一周期的线程的存储的状态下请求第二周期的线程的存储时,数据存储器队列通过擦除第一周期的线程当中具有最高优先级的线程来新近存储第二周期的线程。
2.根据权利要求1所述的方法,其中,在设置线程中的每个的可变延迟时,基于处理定时将可变延迟设置为针对线程中的每个不同的值。
3.根据权利要求2所述的方法,其中,在设置线程中的每个的可变延迟时,基于在所确定的处理定时要被存储在数据存储器队列中的线程的堆叠数量和第一存储体的固定响应时间,来设置可变延迟。
4.根据权利要求1所述的方法,其中,在设置线程中的每个的可变延迟时,通过将用于指定可变延迟的值的预定字段添加到关于线程的指令,来设置可变延迟。
5.根据权利要求1所述的方法,其中,在设置线程中的每个的可变延迟时,将可变延迟设置为使得在从第一存储体请求关于线程中的每个的数据的时间点起经过了第一存储体的固定响应时间的时间点处执行操作。
6.根据权利要求1所述的方法,其中,可变延迟被设置为与第一存储体中通过线程要发生的存储体冲突的数量成比例。
7.根据权利要求1所述的方法,其中,执行操作包括:
检查在数据存储器队列中所存储的线程的优先级;
允许线程按照优先级次序来顺序地访问第一存储体;
将访问线程的处理结果存储在重排序缓冲器中;以及
通过读出所存储的处理结果来执行操作。
8.根据权利要求1所述的方法,其中,在设置线程中的每个的可变延迟时,可变延迟被设置为使得通过功能单元所请求的、第一周期的线程当中具有最低优先级的线程与通过功能单元所请求的、第二周期的线程当中具有最高优先级的线程的可变延迟彼此相同。
9.根据权利要求1所述的方法,其中,功能单元的线程包括在粗粒度阵列(CGA)模式中所生成的线程。
10.一种在其上记录有程序的计算机可读记录介质,所述程序用于执行在权利要求1至9中的任一项中所述的方法。
11.一种用于防止存储器中的存储体冲突的装置,所述装置包括:
多个功能单元,生成要访问在其中预期发生存储体冲突的第一存储体的线程;
存储器控制器,确定线程中的每个的处理定时并且根据所确定的处理定时,设置线程中的每个的可变延迟以用于线程的顺序访问;以及
数据存储器队列,根据所确定的处理定时来顺序地存储线程,
其中,存储器控制器通过每当线程中的每个的可变延迟经过时,允许在数据存储器队列中所存储的线程顺序地访问第一存储体来控制操作的执行,
其中,当在完成通过功能单元所请求的第一周期的线程的存储的状态下请求第二周期的线程的存储时,数据存储器队列通过擦除第一周期的线程当中具有最高优先级的线程来新近存储第二周期的线程。
12.根据权利要求11所述的装置,其中,存储器控制器基于处理定时将可变延迟设置为针对线程中的每个不同的值。
13.根据权利要求11所述的装置,其中,存储器控制器将可变延迟设置为使得在从第一存储体请求关于线程中的每个的数据的时间点起经过了第一存储体的固定响应时间的时间点处执行操作。
14.根据权利要求11所述的装置,其中,存储器控制器检查在数据存储器队列中所存储的线程的优先级并且允许线程按照优先级次序来顺序地访问第一存储体,
该装置进一步包括重排序缓冲器,存储访问线程的处理结果;以及
功能单元通过读出所存储的处理结果来执行操作。
CN201580016865.XA 2014-02-27 2015-02-26 用于防止存储器中的存储体冲突的方法和装置 Expired - Fee Related CN106133709B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2014-0023707 2014-02-27
KR1020140023707A KR102205899B1 (ko) 2014-02-27 2014-02-27 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
PCT/KR2015/001854 WO2015130093A1 (en) 2014-02-27 2015-02-26 Method and apparatus for preventing bank conflict in memory

Publications (2)

Publication Number Publication Date
CN106133709A CN106133709A (zh) 2016-11-16
CN106133709B true CN106133709B (zh) 2019-07-05

Family

ID=54009347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580016865.XA Expired - Fee Related CN106133709B (zh) 2014-02-27 2015-02-26 用于防止存储器中的存储体冲突的方法和装置

Country Status (6)

Country Link
US (1) US10223269B2 (zh)
EP (1) EP3097492B1 (zh)
KR (1) KR102205899B1 (zh)
CN (1) CN106133709B (zh)
TW (1) TW201539189A (zh)
WO (1) WO2015130093A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102450514B1 (ko) * 2017-09-19 2022-10-05 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치의 동작 방법
CN108920284A (zh) * 2018-06-06 2018-11-30 亚信科技(中国)有限公司 共享内存访问方法及系统
CN109710309B (zh) * 2018-12-24 2021-01-26 安谋科技(中国)有限公司 减少存储体冲突的方法
JP2021170241A (ja) * 2020-04-16 2021-10-28 富士通株式会社 情報処理装置及び制御プログラム
JP2022108073A (ja) * 2021-01-12 2022-07-25 富士通株式会社 情報処理装置、プログラム及び情報処理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1383511A (zh) * 1998-11-16 2002-12-04 因芬尼昂技术股份公司 通过重排序存储器请求提高总线利用率的存储器控制器
CN1519854A (zh) * 2002-12-31 2004-08-11 ض� 存储控制器的读写切换方法
EP2523120A1 (en) * 2011-05-12 2012-11-14 Imec Microcomputer architecture for low power efficient baseband processing

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7043729B2 (en) * 2002-08-08 2006-05-09 Phoenix Technologies Ltd. Reducing interrupt latency while polling
US8560795B2 (en) 2005-06-30 2013-10-15 Imec Memory arrangement for multi-processor systems including a memory queue
US8345053B2 (en) 2006-09-21 2013-01-01 Qualcomm Incorporated Graphics processors with parallel scheduling and execution of threads
US8245232B2 (en) * 2007-11-27 2012-08-14 Microsoft Corporation Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems
US8180975B2 (en) * 2008-02-26 2012-05-15 Microsoft Corporation Controlling interference in shared memory systems using parallelism-aware batch scheduling
US20090260013A1 (en) * 2008-04-14 2009-10-15 International Business Machines Corporation Computer Processors With Plural, Pipelined Hardware Threads Of Execution
US8688964B2 (en) * 2009-07-20 2014-04-01 Microchip Technology Incorporated Programmable exception processing latency
US8819687B2 (en) * 2010-05-07 2014-08-26 Advanced Micro Devices, Inc. Scheduling for multiple memory controllers
US8732711B2 (en) * 2010-09-24 2014-05-20 Nvidia Corporation Two-level scheduler for multi-threaded processing
US9645802B2 (en) * 2013-08-07 2017-05-09 Nvidia Corporation Technique for grouping instructions into independent strands
US11354129B2 (en) * 2015-10-09 2022-06-07 Spreadtrum Hong Kong Limited System and method for predicting latency of a variable-latency instruction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1383511A (zh) * 1998-11-16 2002-12-04 因芬尼昂技术股份公司 通过重排序存储器请求提高总线利用率的存储器控制器
CN1519854A (zh) * 2002-12-31 2004-08-11 ض� 存储控制器的读写切换方法
EP2523120A1 (en) * 2011-05-12 2012-11-14 Imec Microcomputer architecture for low power efficient baseband processing

Also Published As

Publication number Publication date
EP3097492A4 (en) 2017-10-25
US10223269B2 (en) 2019-03-05
TW201539189A (zh) 2015-10-16
WO2015130093A1 (en) 2015-09-03
EP3097492A1 (en) 2016-11-30
EP3097492B1 (en) 2018-12-26
KR102205899B1 (ko) 2021-01-21
US20170068620A1 (en) 2017-03-09
KR20150101870A (ko) 2015-09-04
CN106133709A (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
CN106133709B (zh) 用于防止存储器中的存储体冲突的方法和装置
Ousterhout et al. Monotasks: Architecting for performance clarity in data analytics frameworks
CN104778083B (zh) 异构多核可重构计算平台上任务调度的方法和装置
KR102572757B1 (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
CN105468439B (zh) 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法
US8707320B2 (en) Dynamic partitioning of data by occasionally doubling data chunk size for data-parallel applications
US20210191765A1 (en) Method for static scheduling of artificial neural networks for a processor
US20210263739A1 (en) Vector reductions using shared scratchpad memory
JP5707265B2 (ja) 演算制御装置及び演算制御方法並びにプログラム、並列プロセッサ
US20210157635A1 (en) Determining an optimum number of threads to make available per core in a multi-core processor complex to execute tasks
Cederman et al. Dynamic load balancing using work-stealing
Wu et al. GPU accelerated counterexample generation in LTL model checking
LaSalle et al. Mpi for big data: New tricks for an old dog
US20210326683A1 (en) Hardware circuit for accelerating neural network computations
Chen et al. Data prefetching and eviction mechanisms of in-memory storage systems based on scheduling for big data processing
CN108027727A (zh) 内存访问指令的调度方法、装置及计算机系统
CN105760317B (zh) 数据写系统和用于核心处理器的数据写方法
CN109491785A (zh) 内存访问调度方法、装置及设备
CN107688634A (zh) 数据写入方法及装置、电子设备
Kerbl et al. Hierarchical Bucket Queuing for Fine‐Grained Priority Scheduling on the GPU
GB2588618A (en) Methods and apparatus for issuing memory access commands
JP6333370B2 (ja) キャッシュ線中で動的配列データ構造を実装するための方法
Avron et al. Hardware Scheduler Performance on the Plural Many-Core Architecture
Fang et al. WSMP: a warp scheduling strategy based on MFQ and PPF
CN115587014A (zh) 高性能计算机工作流调度的性能计算方法、系统及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190705