CN105988952B - 为内存控制器分配硬件加速指令的方法和装置 - Google Patents

为内存控制器分配硬件加速指令的方法和装置 Download PDF

Info

Publication number
CN105988952B
CN105988952B CN201510092224.4A CN201510092224A CN105988952B CN 105988952 B CN105988952 B CN 105988952B CN 201510092224 A CN201510092224 A CN 201510092224A CN 105988952 B CN105988952 B CN 105988952B
Authority
CN
China
Prior art keywords
memory controller
controller hub
instruction
hardware
accelerated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510092224.4A
Other languages
English (en)
Other versions
CN105988952A (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.)
Institute of Computing Technology of CAS
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
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 Huawei Technologies Co Ltd, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201510092224.4A priority Critical patent/CN105988952B/zh
Priority to PCT/CN2016/074450 priority patent/WO2016134656A1/zh
Priority to EP16754765.2A priority patent/EP3252611A4/en
Publication of CN105988952A publication Critical patent/CN105988952A/zh
Priority to US15/687,164 priority patent/US20170351525A1/en
Application granted granted Critical
Publication of CN105988952B publication Critical patent/CN105988952B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3838Dependency mechanisms, e.g. register scoreboarding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

本发明实施例提供一种为内存控制器分配硬件加速指令的方法和装置。该方法包括:按照多个硬件加速指令之间的依赖关系将多个硬件加速指令划分为不同的指令集合;按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与计算机***中的内存控制器的第一映射关系;根据第一内存控制器集合中的各内存控制器的负载信息调整第一映射关系,以获得各指令集合与计算机***的内存控制器的第二映射关系;按照第二映射关系将各指令集合中的硬件加速指令分配给第二内存控制器集合中的内存控制器。实现由计算机***中的多个内存控制器执行硬件加速指令时,各个内存控制器的负载均衡。

Description

为内存控制器分配硬件加速指令的方法和装置
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种为内存控制器分配硬件加速指令的方法和装置。
背景技术
计算机***由计算机硬件和软件两部分组成。其中,硬件包括处理器、寄存器、高速缓冲存储器、内存储器和外部存储器等;软件是计算机的运行程序和相应的文档。在运行程序时,计算机操作***将运行程序时程序中的指令涉及到的数据从内存储器通过内存总线传输到高速缓冲存储器或寄存器内,再由处理器获取到数据进行指令的运行,进而完成程序的运行。所以,运行程序时,程序中的指令涉及到的数据的传输是制约程序运行速度的关键因素。目前,为了提高程序的运行速度,主要采用的方法有:通过提高物理带宽来提高程序的运行速度的方法,例如:通过提高单个针脚的传输速率来提高内存总线频率、通过增加管脚数量的方法增加内存访问通道等。但是,由于现有封装技术的限制,芯片的管脚数量难以实现规模扩展,且单个针脚的传输速率也很难再进行大的提升。
考虑到现有封装技术的限制,以及为了通过提高软件程序的执行速度以适应云计算和大数据的应用,现有技术中提高软件程序的执行速度的方法还可以具体为:在内存储器和高速缓冲存储器之间设置内存控制器,并将程序中的一些大规模操作的指令,以一条或几条变粒度的硬件加速指令来代替,从而通过该内存控制器对这些硬件加速指令进行运行,从而有效地减少了数据在内存储器和处理器之间的传输,间接提高内存带宽的利用,同时减少了程序中的大规模操作的指令对处理器的占用。
但是,通过内存控制器来对硬件加速指令进行运行时,可能会导致多个内存控制器负载不均衡的问题,进而影响计算机操作***的性能,不能很好的适应云计算和大数据的应用。
发明内容
本发明实施例提供了一种为内存控制器分配硬件加速指令的方法和装置,实现由计算机***中的多个内存控制器执行硬件加速指令时,各个内存控制器的负载均衡,进而提高了计算机***的性能,更好地满足了云计算和大数据的应用。
第一方面,本发明实施例提供一种为内存控制器分配硬件加速指令的方法,所述方法应用于计算机***,所述计算机***包括多个能够执行硬件加速指令的内存控制器,所述方法包括:
按照多个硬件加速指令之间的依赖关系将所述多个硬件加速指令划分为不同的指令集合,其中,属于同一个指令集合中的硬件加速指令之间具有单依赖关系,所述单依赖关系是指若所述多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个硬件加速指令的输出数据,则所述一个硬件加速指令单依赖于所述另外一个硬件加速指令;
按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与所述计算机***中的内存控制器的第一映射关系,其中,所述依赖关系是指若所述多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个或多个硬件加速指令的输出数据,则所述一个硬件加速指令依赖于所述另外一个或多个硬件加速指令,所述第一映射关系中的内存控制器构成第一内存控制器集合;
根据所述第一内存控制器集合中的各内存控制器的负载信息调整所述第一映射关系,以获得各指令集合与所述计算机***的内存控制器的第二映射关系,其中,所述第二映射关系中的内存控制器构成第二内存控制器集合,所述第二内存控制器集合的内存控制器的负载信息均不大于第一预设阈值,所述负载信息包括已分配给所述第一内存控制器集合中的各内存控制器的硬件加速指令的执行时间;
按照所述第二映射关系将所述各指令集合中的硬件加速指令分配给所述第二内存控制器集合中的内存控制器,其中,同一个指令集合中的硬件加速指令被分配给同一个内存控制器执行。
结合第一方面,在第一方面的第一种实施方式中,
所述根据所述第一内存控制器集合中的各内存控制器的负载信息调整所述第一映射关系,以获得各指令集合与所述计算机***的内存控制器的第二映射关系具体包括:
当所述第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例小于第二预设阈值时,将所述第一映射关系中分配给所述负载信息大于第一预设阈值的内存控制器的指令集合随机分配给所述计算机***中负载信息小于第一预设阈值的其他内存控制器,以获得各指令集合与所述计算机***的内存控制器的第二映射关系。
结合第一方面,在第一方面的第二种实施方式中,
所述根据所述第一内存控制器集合中的各内存控制器的负载信息调整所述第一映射关系,以获得各指令集合与所述计算机***的内存控制器的第二映射关系具体包括:
当所述第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例不小于第二预设阈值时,获取所述计算机***中的第三内存控制器集合,所述第三内存控制器集合中的内存控制器的负载信息均不大于所述第一预设阈值;
按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取所述各指令集合与所述第三内存控制器集合中的内存控制器的第二映射关系。
结合第一方面或第一方面的第一种实施方式或第一方面的第二种实施方式,在第一方面的第三种实施方式中,
所述获取各指令集合与所述计算机***中的内存控制器的第一映射关系具体包括:
若与某个指令集合相匹配的内存控制器至少有两个,则将所述指令集合分配给与所述指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器。
结合第一方面或第一方面的第一种实施方式或第一方面的第二种实施方式,在第一方面的第四种实施方式中,
所述硬件加速指令的执行时间latencyi(Fixedi,Variablei)=Fixedi+Variableii*datai/base_granularityi),其中,Fixedi为所述硬件加速指令的固定执行时间,Variablei为所述硬件加速指令的可变执行时间,αi为所述硬件加速指令的数据执行比率,datai为所述硬件加速指令的数据量,base_granularityi为所述硬件加速指令的最小数据粒度。
第二方面,本发明实施例提供一种为内存控制器分配硬件加速指令的装置,所述装置应用于计算机***,所述计算机***包括多个能够执行硬件加速指令的内存控制器,所述装置包括:
划分模块,用于按照多个硬件加速指令之间的依赖关系将所述多个硬件加速指令划分为不同的指令集合,其中,属于同一个指令集合中的硬件加速指令之间具有单依赖关系,所述单依赖关系是指若所述多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个硬件加速指令的输出数据,则所述一个硬件加速指令单依赖于所述另外一个硬件加速指令;
获取模块,用于按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与所述计算机***中的内存控制器的第一映射关系,其中,所述依赖关系是指若所述多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个或多个硬件加速指令的输出数据,则所述一个硬件加速指令依赖于所述另外一个或多个硬件加速指令,所述第一映射关系中的内存控制器构成第一内存控制器集合;
调整模块,用于根据所述第一内存控制器集合中的各内存控制器的负载信息调整所述第一映射关系,以获得各指令集合与所述计算机***的内存控制器的第二映射关系,其中,所述第二映射关系中的内存控制器构成第二内存控制器集合,所述第二内存控制器集合的内存控制器的负载信息均不大于第一预设阈值,所述负载信息包括已分配给所述第一内存控制器集合中的各内存控制器的硬件加速指令的执行时间;
分配模块,用于按照所述第二映射关系将所述各指令集合中的硬件加速指令分配给所述第二内存控制器集合中的内存控制器,其中,同一个指令集合中的硬件加速指令被分配给同一个内存控制器执行。
结合第二方面,在第二方面的第一种实施方式中,
所述调整模块具体用于:
当所述第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例小于第二预设阈值时,将所述第一映射关系中分配给所述负载信息大于第一预设阈值的内存控制器的指令集合随机分配给所述计算机***中负载信息小于第一预设阈值的其他内存控制器,以获得各指令集合与所述计算机***的内存控制器的第二映射关系。
结合第二方面,在第二方面的第二种实施方式中,
所述调整模块具体用于:
当所述第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例不小于第二预设阈值时,获取所述计算机***中的第三内存控制器集合,所述第三内存控制器集合中的内存控制器的负载信息均不大于所述第一预设阈值;按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取所述各指令集合与所述第三内存控制器集合中的内存控制器的第二映射关系。
结合第二方面或第二方面的第一种实施方式或第二方面的第二种实施方式,在第二方面的第三种实施方式中,
所述获取模块具体用于:
若与某个指令集合相匹配的内存控制器至少有两个,则将所述指令集合分配给与所述指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器。
结合第二方面或第二方面的第一种实施方式或第二方面的第二种实施方式,在第二方面的第四种实施方式中,
所述硬件加速指令的执行时间latencyi(Fixedi,Variablei)=Fixedi+Variableii*datai/base_granularityi),其中,Fixedi为所述硬件加速指令的固定执行时间,Variablei为所述硬件加速指令的可变执行时间,αi为所述硬件加速指令的数据执行比率,datai为所述硬件加速指令的数据量,base_granularityi为所述硬件加速指令的最小数据粒度。
本发明实施例提供的一种硬件加速指令的分配方法和装置,通过按照多个硬件加速指令之间的依赖关系将多个硬件加速指令划分为不同的指令集合,其中,属于同一个指令集合中的硬件加速指令之间具有单依赖关系,单依赖关系是指若多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个硬件加速指令的输出数据,则一个硬件加速指令单依赖于另外一个硬件加速指令;按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与计算机***中的内存控制器的第一映射关系,其中,依赖关系是指若多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个或多个硬件加速指令的输出数据,则一个硬件加速指令依赖于另外一个或多个硬件加速指令,第一映射关系中的内存控制器构成第一内存控制器集合;根据第一内存控制器集合中的各内存控制器的负载信息调整第一映射关系,以获得各指令集合与计算机***的内存控制器的第二映射关系,其中,第二映射关系中的内存控制器构成第二内存控制器集合,第二内存控制器集合的内存控制器的负载信息均不大于第一预设阈值,负载信息包括已分配给第一内存控制器集合中的各内存控制器的硬件加速指令的执行时间;按照第二映射关系将各指令集合中的硬件加速指令分配给第二内存控制器集合中的内存控制器,其中,同一个指令集合中的硬件加速指令被分配给同一个内存控制器执行。实现由计算机***中的多个内存控制器执行硬件加速指令时,各个内存控制器的负载均衡,进而提高了计算机***的性能,更好地满足了云计算和大数据的应用。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例的附图。
图1为本发明实施例提供的一种为内存控制器分配硬件加速指令的方法流程图;
图2为本发明实施例提供的一种多个硬件加速指令之间的依赖关系示意图;
图3为本发明实施例提供的又一种为内存控制器分配硬件加速指令的方法流程图;
图4为本发明实施例提供的一种为内存控制器分配硬件加速指令的装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
图1为本发明实施例提供的一种为内存控制器分配硬件加速指令的方法流程图,如图1所示,本实施例的执行主体为计算机。该方法应用于计算机***,该计算机***中包括多个能够执行硬件加速指令的内存控制器。具体可通过硬件或软件和硬件相结合的方式实现,则该方法包括:
步骤101,按照多个硬件加速指令之间的依赖关系将多个硬件加速指令划分为不同的指令集合。
本实施例中,硬件加速指令是指程序中的能够在内存控制器上独立执行的指令。硬件加速指令一般为程序中需要大规模操作并计算量少的指令。如矩阵转置指令,矩阵清零指令,以消息包的形式变粒度的读写指令等。
本实施例中,在执行程序中的指令前,编译器对程序进行静态编译时使用传统的编译识别方法,识别出程序中的多个硬件加速指令。
在编译器识别出程序中多个硬件加速指令的指令后,按照多个硬件加速指令之间的依赖关系将多个硬件加速指令划分为不同的指令集合。
其中,依赖关系是指若多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个或多个硬件加速指令的输出数据,则一个硬件加速指令依赖于另外一个或多个硬件加速指令。
其中,依赖关系包括单依赖关系和多依赖关系。若多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个硬件加速指令的输出数据,则一个硬件加速指令单依赖于另外一个硬件加速指令,这种依赖关系为单依赖关系。若多个硬件加速指令中的一个硬件加速指令的输入数据为另外多个硬件加速指令的输出数据,则一个硬件加速指令多依赖于另外多个硬件加速指令,这种依赖关系为多依赖关系。
若硬件加速指令之间存在依赖关系,则被依赖的一个或多个硬件加速指令为父硬件加速指令,依赖的硬件加速指令为子硬件加速指令。由于在执行程序时,首先执行父硬件加速指令后执行子硬件加速指令,所以在将程序中的多个硬件加速指令分配给计算机***中的内存控制器时,首先将父硬件加速指令进行分配,再将子硬件加速指令进行分配。
本实施例中,由于内存控制器执行硬件加速指令时,具有先执行父硬件加速指令后执行子硬件加速指令的时序关系特征,所以在将多个硬件加速指令分配给内存控制器时,可将具有单依赖关系的硬件加速指令分配给同一内存控制器执行。所以,本实施例中,将多个硬件加速指令按照多个硬件加速指令之间的依赖关系划分为不同的指令集合。
其中,属于同一个指令集合中的硬件加速指令之间具有单依赖关系。那么在不同的指令集合中的硬件加速指令之间具有两种关系,第一种关系为不同指令集合中的硬件加速指令之间无依赖关系,另一种关系为不同指令集合中的硬件加速指令之间具有多依赖关系。
图2为本发明实施例提供的一种多个硬件加速指令之间的依赖关系示意图。如图2所示,该程序中共有7个硬件加速指令。硬件加速指令之间具有一个箭头表示硬件加速指令之间具有单依赖关系。硬件加速指令之间具有多个箭头,表示硬件加速指令之间具有多依赖关系。延伸出箭头的硬件加速指令为父硬件加速指令,箭头所指向的硬件加速指令为子硬件加速指令。图2中的硬件加速指令1、2、3之间具有单依赖关系,构成指令集合a,硬件加速指令4、5之间具有单依赖关系,构成指令集合b,硬件加速指令6、7之间具有单依赖关系,构成指令集合c。那么在指令集合a和指令集合b中的硬件加速指令之间无依赖关系,在指令集合c中的硬件加速指令6与指令集合a中的硬件加速指令3、指令集合b中的硬件加速指令5之间具有多依赖关系。
步骤102,按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与计算机***中的内存控制器的第一映射关系。
本实施例中,将多个硬件加速指令划分为不同的指令集合后,对多个指令集合进行分配时,若不同的指令集合中的硬件加速指令之间无依赖关系,则说明不同指令集合中的硬件加速指令之间无时序关系,可在计算机***中的内存控制器中并行执行。所以为了减少程序中硬件加速指令在计算机***中的内存控制器的执行时间,在将不同的指令集合分配给计算机***中的内存控制器时,按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则进行分配,以获取各指令集合与计算机***中的内存控制器的第一映射关系。
如在上述举例中,按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与计算机***中的内存控制器的第一映射关系时,将指令集合a和指令集合b分配给不同的内存控制器。而对于指令集合c,可将指令集合c分配到和指令集合a或指令集合b同一内存控制器中,也可将指令集合c分配到与指令集合a和指令集合b都不相同的内存控制器中。
其中,获取的各指令集合与计算机***的内存控制器的第一映射关系中的内存控制器构成第一内存控制器集合。第一内存控制器集合可以为计算机***中的部分或全部内存控制器。若指令集合的个数小于内存控制器的个数,则第一内存控制器为计算机***的部分内存控制器,若指令集合的个数不小于内存控制器的个数,则按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与计算机***中的内存控制器的第一映射关系中的第一内存控制器集合为计算***中的部分或全部的内存控制器。
步骤103,根据第一内存控制器集合中的各内存控制器的负载信息调整第一映射关系,以获得各指令集合与计算机***的内存控制器的第二映射关系。
本实施例中,在获取各指令集合与计算机***中的内存控制器的第一映射关系时,遵循的原则为使已分配给第一内存控制器集合中的各内存控制器的硬件加速指令的执行时间更短,并没有充分考虑到已分配给第一内存控制器集合中的各内存控制器的硬件加速指令的执行时间是否均衡,所以在获取到第一映射关系后,根据第一内存控制器集合中的各内存控制器的负载信息来调整第一映射关系,以获得各指令集合与计算机***的内存控制器的第二映射关系。
在对第一映射关系调整后,在第二映射关系中的内存控制器构成第二内存控制器集合。其中,第二内存控制器集合的内存控制器的负载信息均不大于第一预设阈值。
本实施例中,第一预设阈值可在执行程序中的硬件加速指令前根据第一内存控制器集合中的各内存控制器的负载信息预先设定。
其中,负载信息包括已分配给第一内存控制器集合中的各内存控制器的硬件加速指令的执行时间。
步骤104,按照第二映射关系将各指令集合中的硬件加速指令分配给第二内存控制器集合中的内存控制器。
本实施例中,由于同一个指令集合中的硬件加速指令之间具有单依赖关系,即同一指令集合中的硬件加速指令间具有先执行父硬件加速指令后执行子硬件加速指令的时序关系,所以将同一个指令集合中的硬件加速指令配分配到同一个内存控制器执行。
本实施例中,按照第二映射关系将各指令集合中的硬件加速指令分配给第二内存控制器集合中的内存控制器,由第二内存控制器集合中的内存控制器按照分配的先后顺序执行硬件加速指令。
本实施例中,通过按照多个硬件加速指令之间的依赖关系将多个硬件加速指令划分为不同的指令集合,按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与计算机***中的内存控制器的第一映射关系,根据第一内存控制器集合中的各内存控制器的负载信息调整第一映射关系,以获得各指令集合与计算机***的内存控制器的第二映射关系,使第二映射关系中的内存控制器构成第二内存控制器集合,第二内存控制器集合的内存控制器的负载信息均不大于第一预设阈值,并按照第二映射关系将各指令集合中的硬件加速指令分配给第二内存控制器集合中的内存控制器。由于调整了第一映射关系,获得的第二映射关系中内存控制器的负载信息均不大于第一预设阈值,所以按照第二映射关系执行各指令集合中的硬件加速指令时,实现由计算机***中各个内存控制器的负载均衡,进而提高了计算机操作***的性能,更好地满足了云计算和大数据的应用。
图3为本发明实施例提供的又一种为内存控制器分配硬件加速指令的方法流程图,如图3所示,本实施例的执行主体为计算机。该方法应用于计算机***,该计算机***中包括多个能够执行硬件加速指令的内存控制器。具体可通过硬件或软件和硬件相结合的方式实现,则该方法包括:
步骤301,按照多个硬件加速指令之间的依赖关系将多个硬件加速指令划分为不同的指令集合。
其中,属于同一个指令集合中的硬件加速指令之间具有单依赖关系。单依赖关系是指若多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个硬件加速指令的输出数据,则一个硬件加速指令单依赖于另外一个硬件加速指令。
本实施例中,步骤301和本发明为内存控制器分配硬件加速指令的方法实施例一中的步骤101相同,在此不再一一赘述。
步骤302,按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与计算机***中的内存控制器的第一映射关系。其中,第一映射关系中的内存控制器构成第一内存控制器集合。
本实施例中,第一内存控制器集合可以为计算机***中的部分或全部内存控制器。若指令集合的个数小于内存控制器的个数,则第一内存控制器为计算机***的部分内存控制器,若指令集合的个数不小于内存控制器的个数,则按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与计算机***中的内存控制器的第一映射关系中的第一内存控制器集合为计算***中的部分或全部的内存控制器。
进一步地,本实施例中,获取各指令集合与计算机***中的内存控制器的第一映射关系时,若与某个指令集合相匹配的内存控制器至少有两个,则将指令集合分配给与指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器。
本实施例中,按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与计算机***中的内存控制器的第一映射关系时,若与某个指令集合相匹配的内存控制器至少有两个,则将指令集合分配给与指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器。能在减小第一内存控制器集合中的各内存控制器负载信息的同时,使第一内存控制器集合中的内存控制器的负载尽量均衡。
其中,负载信息包括已分配给第一内存控制器集合中的各内存控制器的硬件加速指令的执行时间。
进一步地,本实施例中,由于程序中的多个硬件加速指令具体的操作和计算的数据不同,所以针对每一个硬件加速指令,其执行的时间也不相同。
具体地,硬件加速指令的执行时间latencyi(Fixedi,Variablei)可表示为式(1)所示:
latencyi(Fixedi,Variablei)=Fixedi+Variableii*datai/base_granularityi) (1)
其中,Fixedi为第i个硬件加速指令的固定执行时间,其表示解析和调度硬件加速指令所需要的时间。由于每个硬件加速指令解析和调度的时间近似相等,所以每个硬件加速指令的固定执行时间近似相等,本实施例中可将每个硬件加速指令的固定执行时间设置为同一数值。
Variablei为硬件加速指令的可变执行时间。针对每个硬件加速指令,可变执行时间不相同,如若硬件加速指令为读取指令,则该硬件加速指令的可变执行时间更多受读取指令的数据量以及读取指令的最小数据粒度影响。又如若硬件加速指令为矩阵转置指令,则其可变执行时间中除受矩阵的数据量以及矩阵转置时的最小数据粒度影响外,也会受数据执行比率影响。所以针对不同的硬件加速指令,根据硬件加速指令的数据执行比率αi,硬件加速指令的数据量datai,硬件加速指令的最小数据粒度base_granularityi,计算硬件加速指令的可变执行时间。
本实施例中,每个硬件加速指令的执行时间为该硬件加速指令的固定执行时间和可变执行时间之和。
本实施例中,根据每个硬件加速指令的执行时间可准确计算出已分配给计算机***中的各内存控制器的负载信息,进而在将各指令集合中的硬件加速指令分配给计算机***中的内存控制器,由内存控制器执行各硬件加速指令时,进一步提高了各内存控制器的负载均衡程度。
步骤303,判断第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例是否小于第二预设阈值,若是,则执行步骤304,若否,则执行步骤305。
本实施例中,第一预设阈值可在执行程序中的硬件加速指令前根据第一内存控制器集合中的各内存控制器的负载信息预先设定。第二预设阈值可预先设定,如为2/5,也可以为其他阈值,本实施例中不做限定。
步骤304,将第一映射关系中分配给负载信息大于第一预设阈值的内存控制器的指令集合随机分配给计算机***中负载信息小于第一预设阈值的其他内存控制器,以获得各指令集合与计算机***的内存控制器的第二映射关系。
本实施例中,当第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例小于第二预设阈值时,表明在按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,并若与某个指令集合相匹配的内存控制器至少有两个,则将指令集合分配给与指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器,所获取的各指令集合与计算机***中的内存控制器的第一映射关系中,第一内存控制器集合中的内存控制器的负载比较均衡,为了使负载信息大于第一预设阈值的内存控制器不再分配指令集合,则将第一映射关系中分配给负载信息大于第一预设阈值的内存控制器的指令集合随机分配给计算机***中负载信息小于第一预设阈值的其他内存控制器,以获得各指令集合与计算机***的内存控制器的第二映射关系。
步骤305,获取计算机***中的第三内存控制器集合,第三内存控制器集合中的内存控制器的负载信息均不大于第一预设阈值;按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与第三内存控制器集合中的内存控制器的第二映射关系。
本实施例中,当第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例不小于第二预设阈值时,表明在按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,并若与某个指令集合相匹配的内存控制器至少有两个,则将指令集合分配给与指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器,所获取的各指令集合与计算机***中的内存控制器的第一映射关系中,第一内存控制器集合中的内存控制器的负载均衡效果不是很理想,为了使计算机***中各内存控制器的负载均衡,则获取计算机***中负载信息均不大于第一预设阈值的内存控制器,由计算机***中负载信息均不大于第一预设阈值的内存控制器组成第三内存控制器集合。
在获取到计算机***中的第三内存控制器集合后,按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与第三内存控制器集合中的内存控制器的第二映射关系。
进一步地,本实施例中,在获取各指令集合与第三内存控制器集合中的内存控制器的第二映射关系时,若与某个指令集合相匹配的内存控制器至少有两个,则将指令集合分配给与指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器。
步骤306,按照第二映射关系将各指令集合中的硬件加速指令分配给第二内存控制器集合中的内存控制器。
本实施例中,由于同一个指令集合中的硬件加速指令之间具有单依赖关系,即同一指令集合中的硬件加速指令间具有先执行父硬件加速指令后执行子硬件加速至零的时序关系,所以将同一个指令集合中的硬件加速指令配分配到同一个内存控制器执行。
本实施例中,获取各指令集合与计算机***中的内存控制器的第一映射关系时,若与某个指令集合相匹配的内存控制器至少有两个,则将指令集合分配给与指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器,提高了获取的第一次映射关系中第一内存控制器集合中的内存控制器的负载均衡程度,并且当第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例小于第二预设阈值时,将第一映射关系中分配给负载信息大于第一预设阈值的内存控制器的指令集合随机分配给计算机***中负载信息小于第一预设阈值的其他内存控制器,当第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例不小于第二预设阈值时,按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与第三内存控制器集合中的内存控制器的第二映射关系,使第二映射关系中的内存控制器的负载信息均不大于第一预设阈值,所以本实施例中,在将多个硬件加速指令分配给计算机***中的内存控制器时先后进行了两次负载均衡的处理,使由计算机***中的多个内存控制器执行硬件加速指令时,各个内存控制器的负载更加均衡。
图4为本发明实施例提供的一种为内存控制器分配硬件加速指令的装置结构示意图。该装置应用于计算机***,计算机***包括多个能够执行硬件加速指令的内存控制器。如图4所示,该为内存控制器分配硬件加速指令的装置包括:划分模块401,获取模块402,调整模块403和分配模块404。
其中,划分模块401,用于按照多个硬件加速指令之间的依赖关系将多个硬件加速指令划分为不同的指令集合。
其中,属于同一个指令集合中的硬件加速指令之间具有单依赖关系。单依赖关系是指若多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个硬件加速指令的输出数据,则一个硬件加速指令单依赖于另外一个硬件加速指令。
获取模块402,用于按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与计算机***中的内存控制器的第一映射关系。
其中,依赖关系是指若多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个或多个硬件加速指令的输出数据,则一个硬件加速指令依赖于另外一个或多个硬件加速指令,第一映射关系中的内存控制器构成第一内存控制器集合。
本实施例中,依赖关系包括单依赖关系和多依赖关系。多依赖关系是指若多个硬件加速指令中的一个硬件加速指令的输入数据为另外多个硬件加速指令的输出数据,则一个硬件加速指令多依赖于另外多个硬件加速指令。
调整模块403,用于根据第一内存控制器集合中的各内存控制器的负载信息调整第一映射关系,以获得各指令集合与计算机***的内存控制器的第二映射关系。
其中,第二映射关系中的内存控制器构成第二内存控制器集合,第二内存控制器集合的内存控制器的负载信息均不大于第一预设阈值,负载信息包括已分配给第一内存控制器集合中的各内存控制器的硬件加速指令的执行时间。
本实施例中,第一预设阈值可在执行程序中的硬件加速指令前根据第一内存控制器集合中的各内存控制器的负载信息预先设定。
分配模块404,用于按照第二映射关系将各指令集合中的硬件加速指令分配给第二内存控制器集合中的内存控制器。
其中,同一个指令集合中的硬件加速指令被分配给同一个内存控制器执行。
本实施例的为内存控制器分配硬件加速指令的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,调整模块403,具体用于当第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例小于第二预设阈值时,将第一映射关系中分配给负载信息大于第一预设阈值的内存控制器的指令集合随机分配给计算机***中负载信息小于第一预设阈值的其他内存控制器,以获得各指令集合与计算机***的内存控制器的第二映射关系。
或者,调整模块403,具体用于当第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例不小于第二预设阈值时,获取计算机***中的第三内存控制器集合,第三内存控制器集合中的内存控制器的负载信息均不大于第一预设阈值;按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与第三内存控制器集合中的内存控制器的第二映射关系。
进一步地,获取模块402,具体用于若与某个指令集合相匹配的内存控制器至少有两个,则将指令集合分配给与指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器。
进一步地,本实施例中的硬件加速指令的执行时间latencyi(Fixedi,Variablei)=Fixedi+Variableii*datai/base_granularityi),其中,Fixedi为硬件加速指令的固定执行时间,Variablei为硬件加速指令的可变执行时间,αi为硬件加速指令的数据执行比率,datai为硬件加速指令的数据量,base_granularityi为硬件加速指令的最小数据粒度。
具体地,Fixedi为第i个硬件加速指令的固定执行时间,其表示解析和调度硬件加速指令所需要的时间。由于每个硬件加速指令解析和调度的时间近似相等,所以每个硬件加速指令的固定执行时间近似相等,本实施例中可将每个硬件加速指令的固定执行时间设置为同一数值。针对每个硬件加速指令,可变执行时间不相同,本实施例中,根据硬件加速指令的数据执行比率αi,硬件加速指令的数据量datai,硬件加速指令的最小数据粒度base_granularityi,计算硬件加速指令的可变执行时间Variablei
进一步地,本实施例的为内存控制器分配硬件加速指令的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁盘或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制。本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。

Claims (8)

1.一种为内存控制器分配硬件加速指令的方法,其特征在于,所述方法应用于计算机***,所述计算机***包括多个能够执行硬件加速指令的内存控制器,所述方法包括:
按照多个硬件加速指令之间的依赖关系将所述多个硬件加速指令划分为不同的指令集合,其中,属于同一个指令集合中的硬件加速指令之间具有单依赖关系,所述单依赖关系是指若所述多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个硬件加速指令的输出数据,则所述一个硬件加速指令单依赖于所述另外一个硬件加速指令;
按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与所述计算机***中的内存控制器的第一映射关系,其中,所述依赖关系是指若所述多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个或多个硬件加速指令的输出数据,则所述一个硬件加速指令依赖于所述另外一个或多个硬件加速指令,所述第一映射关系中的内存控制器构成第一内存控制器集合;
根据所述第一内存控制器集合中的各内存控制器的负载信息调整所述第一映射关系,以获得各指令集合与所述计算机***的内存控制器的第二映射关系,其中,所述第二映射关系中的内存控制器构成第二内存控制器集合,所述第二内存控制器集合的内存控制器的负载信息均不大于第一预设阈值,所述负载信息包括已分配给所述第一内存控制器集合中的各内存控制器的硬件加速指令的执行时间;
按照所述第二映射关系将所述各指令集合中的硬件加速指令分配给所述第二内存控制器集合中的内存控制器,其中,同一个指令集合中的硬件加速指令被分配给同一个内存控制器执行;
所述根据所述第一内存控制器集合中的各内存控制器的负载信息调整所述第一映射关系,以获得各指令集合与所述计算机***的内存控制器的第二映射关系具体包括:
当所述第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例小于第二预设阈值时,将所述第一映射关系中分配给所述负载信息大于第一预设阈值的内存控制器的指令集合随机分配给所述计算机***中负载信息小于第一预设阈值的其他内存控制器,以获得各指令集合与所述计算机***的内存控制器的第二映射关系。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一内存控制器集合中的各内存控制器的负载信息调整所述第一映射关系,以获得各指令集合与所述计算机***的内存控制器的第二映射关系具体包括:
当所述第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例不小于第二预设阈值时,获取所述计算机***中的第三内存控制器集合,所述第三内存控制器集合中的内存控制器的负载信息均不大于所述第一预设阈值;
按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取所述各指令集合与所述第三内存控制器集合中的内存控制器的第二映射关系。
3.根据权利要求1或2所述的方法,其特征在于,所述获取各指令集合与所述计算机***中的内存控制器的第一映射关系具体包括:
若与某个指令集合相匹配的内存控制器至少有两个,则将所述指令集合分配给与所述指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器。
4.根据权利要求1或2所述的方法,其特征在于,所述硬件加速指令的执行时间latencyi(Fixedi,Variablei)=Fixedi+Variableii*datai/base_granularityi),其中,Fixedi为所述硬件加速指令的固定执行时间,Variablei为所述硬件加速指令的可变执行时间,αi为所述硬件加速指令的数据执行比率,datai为所述硬件加速指令的数据量,base_granularityi为所述硬件加速指令的最小数据粒度。
5.一种为内存控制器分配硬件加速指令的装置,其特征在于,所述装置应用于计算机***,所述计算机***包括多个能够执行硬件加速指令的内存控制器,所述装置包括:
划分模块,用于按照多个硬件加速指令之间的依赖关系将所述多个硬件加速指令划分为不同的指令集合,其中,属于同一个指令集合中的硬件加速指令之间具有单依赖关系,所述单依赖关系是指若所述多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个硬件加速指令的输出数据,则所述一个硬件加速指令单依赖于所述另外一个硬件加速指令;
获取模块,用于按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取各指令集合与所述计算机***中的内存控制器的第一映射关系,其中,所述依赖关系是指若所述多个硬件加速指令中的一个硬件加速指令的输入数据为另外一个或多个硬件加速指令的输出数据,则所述一个硬件加速指令依赖于所述另外一个或多个硬件加速指令,所述第一映射关系中的内存控制器构成第一内存控制器集合;
调整模块,用于根据所述第一内存控制器集合中的各内存控制器的负载信息调整所述第一映射关系,以获得各指令集合与所述计算机***的内存控制器的第二映射关系,其中,所述第二映射关系中的内存控制器构成第二内存控制器集合,所述第二内存控制器集合的内存控制器的负载信息均不大于第一预设阈值,所述负载信息包括已分配给所述第一内存控制器集合中的各内存控制器的硬件加速指令的执行时间;
分配模块,用于按照所述第二映射关系将所述各指令集合中的硬件加速指令分配给所述第二内存控制器集合中的内存控制器,其中,同一个指令集合中的硬件加速指令被分配给同一个内存控制器执行;
所述调整模块具体用于:
当所述第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例小于第二预设阈值时,将所述第一映射关系中分配给所述负载信息大于第一预设阈值的内存控制器的指令集合随机分配给所述计算机***中负载信息小于第一预设阈值的其他内存控制器,以获得各指令集合与所述计算机***的内存控制器的第二映射关系。
6.根据权利要求5所述的装置,其特征在于,所述调整模块具体用于:
当所述第一内存控制器集合中负载信息大于第一预设阈值的内存控制器所占的比例不小于第二预设阈值时,获取所述计算机***中的第三内存控制器集合,所述第三内存控制器集合中的内存控制器的负载信息均不大于所述第一预设阈值;按照将硬件加速指令之间无依赖关系的不同指令集合分配给不同的内存控制器的原则,获取所述各指令集合与所述第三内存控制器集合中的内存控制器的第二映射关系。
7.根据权利要求5或6所述的装置,其特征在于,所述获取模块具体用于:
若与某个指令集合相匹配的内存控制器至少有两个,则将所述指令集合分配给与所述指令集合相匹配的至少两个内存控制器中负载信息最小的内存控制器。
8.根据权利要求5或6所述的装置,其特征在于,所述硬件加速指令的执行时间latencyi(Fixedi,Variablei)=Fixedi+Variableii*datai/base_granularityi),其中,Fixedi为所述硬件加速指令的固定执行时间,Variablei为所述硬件加速指令的可变执行时间,αi为所述硬件加速指令的数据执行比率,datai为所述硬件加速指令的数据量,base_granularityi为所述硬件加速指令的最小数据粒度。
CN201510092224.4A 2015-02-28 2015-02-28 为内存控制器分配硬件加速指令的方法和装置 Active CN105988952B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201510092224.4A CN105988952B (zh) 2015-02-28 2015-02-28 为内存控制器分配硬件加速指令的方法和装置
PCT/CN2016/074450 WO2016134656A1 (zh) 2015-02-28 2016-02-24 为内存控制器分配硬件加速指令的方法和装置
EP16754765.2A EP3252611A4 (en) 2015-02-28 2016-02-24 Method and device for allocating hardware acceleration instructions to memory controller
US15/687,164 US20170351525A1 (en) 2015-02-28 2017-08-25 Method and Apparatus for Allocating Hardware Acceleration Instruction to Memory Controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510092224.4A CN105988952B (zh) 2015-02-28 2015-02-28 为内存控制器分配硬件加速指令的方法和装置

Publications (2)

Publication Number Publication Date
CN105988952A CN105988952A (zh) 2016-10-05
CN105988952B true CN105988952B (zh) 2019-03-08

Family

ID=56787781

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510092224.4A Active CN105988952B (zh) 2015-02-28 2015-02-28 为内存控制器分配硬件加速指令的方法和装置

Country Status (4)

Country Link
US (1) US20170351525A1 (zh)
EP (1) EP3252611A4 (zh)
CN (1) CN105988952B (zh)
WO (1) WO2016134656A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10776207B2 (en) * 2018-09-06 2020-09-15 International Business Machines Corporation Load exploitation and improved pipelineability of hardware instructions
US11327760B2 (en) * 2020-04-09 2022-05-10 Huawei Technologies Co., Ltd. Method and apparatus for balancing binary instruction burstization and chaining
US11740800B2 (en) 2021-06-22 2023-08-29 Micron Technology, Inc. Alleviating memory hotspots on systems with multiple memory controllers

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008060948A2 (en) * 2006-11-10 2008-05-22 Sandbridge Technologies, Inc. Method and system for parallelization of pipelined computations
CN102043729A (zh) * 2009-10-20 2011-05-04 杭州华三通信技术有限公司 动态随机访问存储器的内存管理方法及***
CN102999443A (zh) * 2012-11-16 2013-03-27 广州优倍达信息科技有限公司 一种计算机缓存***的管理方法
CN103345429A (zh) * 2013-06-19 2013-10-09 中国科学院计算技术研究所 基于片上ram的高并发访存加速方法、加速器及cpu
CN104216685A (zh) * 2013-06-02 2014-12-17 洛克泰克科技有限公司 依赖性问题的有效率的并行计算

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
US6219780B1 (en) * 1998-10-27 2001-04-17 International Business Machines Corporation Circuit arrangement and method of dispatching instructions to multiple execution units
US6378063B2 (en) * 1998-12-23 2002-04-23 Intel Corporation Method and apparatus for efficiently routing dependent instructions to clustered execution units
JP4025493B2 (ja) * 2000-08-08 2007-12-19 富士通株式会社 適切な発行先に命令を発行する命令発行装置
US6728866B1 (en) * 2000-08-31 2004-04-27 International Business Machines Corporation Partitioned issue queue and allocation strategy
US7603546B2 (en) * 2004-09-28 2009-10-13 Intel Corporation System, method and apparatus for dependency chain processing
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
WO2009118731A2 (en) * 2008-03-27 2009-10-01 Rocketick Technologies Ltd Design simulation using parallel processors
US9032377B2 (en) * 2008-07-10 2015-05-12 Rocketick Technologies Ltd. Efficient parallel computation of dependency problems
JP4503689B1 (ja) * 2009-10-13 2010-07-14 日東電工株式会社 液晶表示素子の連続製造方法及び装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008060948A2 (en) * 2006-11-10 2008-05-22 Sandbridge Technologies, Inc. Method and system for parallelization of pipelined computations
CN102043729A (zh) * 2009-10-20 2011-05-04 杭州华三通信技术有限公司 动态随机访问存储器的内存管理方法及***
CN102999443A (zh) * 2012-11-16 2013-03-27 广州优倍达信息科技有限公司 一种计算机缓存***的管理方法
CN104216685A (zh) * 2013-06-02 2014-12-17 洛克泰克科技有限公司 依赖性问题的有效率的并行计算
CN103345429A (zh) * 2013-06-19 2013-10-09 中国科学院计算技术研究所 基于片上ram的高并发访存加速方法、加速器及cpu

Also Published As

Publication number Publication date
US20170351525A1 (en) 2017-12-07
WO2016134656A1 (zh) 2016-09-01
EP3252611A4 (en) 2018-03-07
EP3252611A1 (en) 2017-12-06
CN105988952A (zh) 2016-10-05

Similar Documents

Publication Publication Date Title
EP3757901A1 (en) Schedule-aware tensor distribution module
US10235398B2 (en) Processor and data gathering method
US8832350B2 (en) Method and apparatus for efficient memory bank utilization in multi-threaded packet processors
CN104364756B (zh) 单个数据缓冲器的并行处理
Sao et al. A distributed CPU-GPU sparse direct solver
US9354892B2 (en) Creating SIMD efficient code by transferring register state through common memory
AU2016203619A1 (en) Layer-based operations scheduling to optimise memory for CNN applications
CN107851021B (zh) 使用动态矢量长度循环的矢量处理
US20200042216A1 (en) Storage-based graph for enabling computation graph optimization
WO2017016480A1 (en) System and method for multithreaded processing
CN105988952B (zh) 为内存控制器分配硬件加速指令的方法和装置
US11816061B2 (en) Dynamic allocation of arithmetic logic units for vectorized operations
CN111274025A (zh) 用于在ssd中加速数据处理的***和方法
CN105242909B (zh) 一种基于多版本代码生成的众核循环分块方法
US9772864B2 (en) Methods of and apparatus for multidimensional indexing in microprocessor systems
US20190370076A1 (en) Methods and apparatus to enable dynamic processing of a predefined workload
CN104156316B (zh) 一种Hadoop集群批处理作业的方法及***
Du et al. Feature-aware task scheduling on CPU-FPGA heterogeneous platforms
US10120602B2 (en) Device and method for determining data placement destination, and program recording medium
Zhou et al. Design and implementation of YOLOv3-Tiny accelerator based on PYNQ-Z2 heterogeneous platform
CN111324439A (zh) 用于向量单元的密码引擎和调度方法
US12008368B2 (en) Programmable compute engine having transpose operations
US20240103813A1 (en) Compute engine with transpose circuitry
Thomas et al. Application aware scalable architecture for GPGPU
US20220147280A1 (en) Efficient buffering technique for transferring data

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
TR01 Transfer of patent right

Effective date of registration: 20220906

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technologies Co.,Ltd.

Patentee after: Institute of Computing Technology, Chinese Academy of Sciences

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

TR01 Transfer of patent right