CN113918218A - 学习和卸载存储器访问和计算的常见模式的技术 - Google Patents
学习和卸载存储器访问和计算的常见模式的技术 Download PDFInfo
- Publication number
- CN113918218A CN113918218A CN202011432868.0A CN202011432868A CN113918218A CN 113918218 A CN113918218 A CN 113918218A CN 202011432868 A CN202011432868 A CN 202011432868A CN 113918218 A CN113918218 A CN 113918218A
- Authority
- CN
- China
- Prior art keywords
- instructions
- sequence
- offloaded
- cpu
- computing device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 174
- 238000000034 method Methods 0.000 title claims abstract description 157
- 238000012545 processing Methods 0.000 claims abstract description 63
- 238000013528 artificial neural network Methods 0.000 claims abstract description 58
- 230000008569 process Effects 0.000 claims description 124
- 239000000758 substrate Substances 0.000 claims description 35
- 239000004065 semiconductor Substances 0.000 claims description 29
- 230000006870 function Effects 0.000 claims description 25
- 238000012549 training Methods 0.000 claims description 14
- 230000000306 recurrent effect Effects 0.000 claims description 13
- 239000003795 chemical substances by application Substances 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 11
- 230000002787 reinforcement Effects 0.000 claims description 11
- 230000007704 transition Effects 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 18
- 238000003860 storage Methods 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000003491 array Methods 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000001788 irregular Effects 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 1
- 108091081062 Repeated sequence (DNA) Proteins 0.000 description 1
- GWEVSGVZZGPLCZ-UHFFFAOYSA-N Titan oxide Chemical compound O=[Ti]=O GWEVSGVZZGPLCZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 229910052594 sapphire Inorganic materials 0.000 description 1
- 239000010980 sapphire Substances 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- OGIDPMRJRNCKJF-UHFFFAOYSA-N titanium oxide Inorganic materials [Ti]=O OGIDPMRJRNCKJF-UHFFFAOYSA-N 0.000 description 1
- 101150072178 viaA gene Proteins 0.000 description 1
Images
Classifications
-
- 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/30003—Arrangements for executing specific machine instructions
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3457—Performance evaluation by simulation
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/217—Validation; Performance evaluation; Active pattern learning techniques
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及学习和卸载存储器访问和计算的常见模式的技术。系统、设备和方法可提供如下技术,该技术经由神经网络基于机器指令的输入集合辨识存储器访问和计算指令的模式,经由神经网络基于所辨识的存储器访问和计算指令的模式确定要被卸载来由辅计算装置执行的指令的序列,并且把要被卸载的指令的序列从可由中央处理单元(CPU)执行的指令转化成可由辅计算装置执行的指令。
Description
技术领域
实施例概括而言涉及用于计算系统的技术。更具体而言,实施例涉及自动路由存储器访问和计算操作来由辅计算装置执行的技术。
背景技术
传统的存储器架构假定大多数程序将在短时间段中重复地访问同一组存储器。也就是说,它们遵循空间和时间局部性的规则。然而,图表分析、机器学习和人工智能(artificial intelligence,AI)中的许多应用展现出不遵循空间和时间局部性的传统规则的不规律存储器访问模式。不规律存储器访问模式被传统的CPU和GPU架构不良应对,导致在执行存储器操作时的不可预测的延迟。这种情况的一个原因是不规律的存储器访问要求在CPU和片外存储器存储之间的反复数据移动。
在CPU核心和片外存储器之间移动数据比CPU核心内部的浮点操作招致大约高100倍的能量。传统上,以计算为中心的冯·诺依曼(von-Neumann)架构正越来越多地受到存储器带宽和能量消耗的约束。被称为存储器内计算(in-memory compute,IMC)或者近存储器计算(compute near memory,CNM)装置的硬件装置将计算力放置在存储器阵列本身内或者存储器阵列本身附近。这些装置可消除或者大幅减少执行程序所要求的数据移动。
在没有广泛的标准来指明如何将IMC或CNM装置嵌入在计算系统中的同时,大多数当前方案要求用户将期望的计算内核手动映射到IMC或CNM存储器阵列。这个方案是相当不灵活的,使得难以针对多种不同的应用来配置这些装置。此外,因为这个方案依赖于应用的静态编译,所以它们不能适应于真实世界应用执行的动态方面(例如,动态资源使用、工作负载特性、存储器访问模式,等等)。
发明内容
根据本公开的一方面,提供了一种计算系统。该计算系统包括:辅计算装置;以及耦合到辅计算装置的设备,设备包括一个或多个衬底和耦合到一个或多个衬底的逻辑,其中逻辑至少部分地以可配置逻辑或者固定功能硬件逻辑中的一者或多者来实现,耦合到一个或多个衬底的逻辑用于:经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式;经由神经网络基于所辨识的存储器访问和计算指令的模式,来确定要被卸载来由辅计算装置执行的指令的序列;并且把要被卸载的指令的序列从可由中央处理单元CPU执行的指令转化成可由辅计算装置执行的指令。
根据本公开的另一方面,提供了一种半导体设备。该半导体设备包括:一个或多个衬底;以及耦合到一个或多个衬底的逻辑,其中逻辑至少部分地以可配置逻辑或者固定功能硬件逻辑中的一者或多者来实现,耦合到一个或多个衬底的逻辑用于:经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式;经由神经网络基于所辨识的存储器访问和计算指令的模式,来确定要被卸载来由辅计算装置执行的指令的序列;并且把要被卸载的指令的序列从可由中央处理单元CPU执行的指令转化成可由辅计算装置执行的指令。
根据本公开的另一方面,提供了一种非暂态计算机可读介质。该非暂态计算机可读介质包括第一指令的集合,第一指令当被计算系统执行时,使得计算系统:经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式;经由神经网络基于所辨识的存储器访问和计算指令的模式来确定要被卸载来由辅计算装置执行的指令的序列;并且把要被卸载的指令的序列从可由中央处理单元CPU执行的指令转化成可由辅计算装置执行的指令。
根据本公开的另一方面,提供了一种将指令卸载来供执行的方法。该方法包括:经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式;经由神经网络基于所辨识的存储器访问和计算指令的模式,来确定要被卸载来由辅计算装置执行的指令的序列;并且把要被卸载的指令的序列从可由中央处理单元CPU执行的指令转化成可由辅计算装置执行的指令。
附图说明
通过阅读以下说明书和所附权利要求,并且通过参考以下附图,实施例的各种优点将对本领域技术人员变得清楚,在附图中:
图1是根据一个或多个实施例图示出用于卸载机器指令和存储器访问的序列的系统的示例的框图;
图2是根据一个或多个实施例图示出序列检测器的示例的图解的图;
图3到图5提供了根据一个或多个实施例图示出用于卸载机器指令和存储器访问的序列的示例应用的一些方面的图;
图6A到图6B提供了根据一个或多个实施例图示出用于卸载机器指令和存储器访问的序列的系统的示例的操作的流程图;
图7是根据一个或多个实施例图示出性能增强的计算系统的示例的框图;
图8是根据一个或多个实施例图示出示例半导体设备的框图;
图9是根据一个或多个实施例图示出处理器的示例的框图;以及
图10是根据一个或多个实施例图示出基于多处理器的计算系统的示例的框图。
具体实施方式
概括而言,实施例提供了一种计算系统,该计算系统将机器指令和存储器访问的序列自动卸载到辅计算装置,比如存储器内计算(IMC)装置或近存储器计算(CNM)装置。实施例还支持基于识别存储器访问和计算之间的关系来确定哪些存储器访问和计算操作要路由到IMC/CNM硬件。此外,实施例包括技术来利用存在于存储器操作和其他指令之间的依赖关系来学习和预测具有这些依赖关系的序列。
更具体而言,计算系统的实施例提供了一种存储器系统,该存储器系统使用辅计算装置和可训练机器学习组件来在CPU和辅装置之间智能地路由计算和存储器操作。该计算系统根据实施例自动学习来辨识存储器访问和计算指令的常见模式,确定将序列从CPU卸载到辅计算装置是否是有用的,并且将机器指令从CPU映射到辅计算装置以便执行。此外,实施例提供了如下技术,该技术将优先卸载将导致来自存储器操作的高时延的序列,例如来自不规律存储器访问的缓存错失(miss),或者通常将要求广泛的缓存一致性更新的存储器操作。从而,实施例将加速程序执行时间并且缓解存储器瓶颈,包括在其中可能存在许多进行中的对CPU资源的竞争需求的多线程应用中。
图1是参考本文描述的组件和特征(包括但不限于附图和关联的描述)根据一个或多个实施例图示出用于卸载机器指令和存储器访问的序列的计算系统100的示例的框图。该系统可包括预取单元、指令解码器、序列检测器、决策引擎、具有程序计数器(programcounter,PC)的中央处理单元(central processing unit,CPU)、辅计算装置(在图1中示为IMC)、和指令转化器。虽然图1将存储器内计算(IMC)装置图示为辅计算装置,但系统可等同地使用近存储器计算(CNM)作为辅计算装置。
计算系统100可通过将应用的二进制代码加载到存储器中来进行操作。二进制代码随后可作为输入被提供给CPU,以及被提供给硬件预取器,该硬件预取器可包括大的前瞻窗口。预取器可收集需要被执行的二进制代码的有序序列。CPU可开始利用其正常周期来执行这些指令,同时预取的二进制代码可利用指令解码器(其可以是CPU解码器的副本)被解码成机器指令。经解码的机器指令可作为输入被提供给序列检测器,序列检测器可检测可被卸载到辅计算装置(IMC,如图1中所示)的复现序列。决策引擎(在图1中标注为卸载决策)可确定哪些指令序列可被卸载。卸载的CPU指令可经由指令转化器被转化成用于存储器内计算(IMC)硬件的指令,IMC硬件随后可与CPU并行地执行这些指令。
为了维持程序执行的正确顺序,被卸载的指令的第一地址可在程序计数器(PC)中被用指示出其正在别处被处理的专用值来特殊标记。一旦IMC已完成了执行所卸载的指令,IMC就可将计算的结果存储回到主存储器中。IMC也可将相应的程序计数器递增到要被CPU取得的下一指令的地址。CPU随后可在接下来的指令处继续处理应用,直到作出下一个卸载决策为止。
在一些实施例中,IMC可在正常CPU执行期间充当主存储器。这样,可像通常那样应对来自CPU的存储器加载和存储操作。当系统经由序列检测器决定将某些计算卸载到IMC时,经转化的代码可被发送到IMC控制器。IMC控制器可时这个经转化的代码的执行入队并且在每当资源可用时适当地调度执行。因为在这个过程中没有涉及存储器副本(也就是说,对存储器的更新是在原地的),所以正被IMC执行的代码中的存储器地址保持与CPU代码的存储器地址相同。在IMC中计算的结果可被传送回到CPU并且被存储在CPU寄存器中;在这种情况下,这在CPU继续处理之前发生。
在其他实施例中,IMC和主存储器(例如,DRAM)可以是分开的。在这种场景中,系统必须在IMC和主存储器之间来回复制数据以维持副本间的一致性。也将会要求IMC和主存储器地址之间的地址映射。在这个替换场景下,将要求额外的硬件逻辑,并且系统的吞吐量对于多线程只读工作负载将会高得多。
在系统100的操作和据信存在于大脑中的多个记忆系统之间可以进行类比。已提出大脑包括一种程序性记忆系统,该记忆系统自动学习来检测频繁使用的操作的序列,并且将它们卸载到单独的神经系统,这个单独的神经系统被保护不受主记忆系统的干扰。这声称释放了主记忆系统来供使用并且使得在程序性记忆中的操作执行更迅速,以使得它们经常自动进行(即,没有有意识的思维)。类似地,系统100经由具有可训练的机器学习组件(即序列检测器、卸载决策)的程序性存储器系统(IMC/CNM)来操作,以在CPU和IMC/CNM之间智能地路由计算和存储器操作。
自适应序列检测器
系统100(图1,已经论述过)的序列检测器可以是一种自适应算法,其学习来辨识存储器访问和计算的常见序列。在一些实施例中,序列检测器可被训练来只辨识可在具有执行时间益处的情况下被卸载的序列。来自CPU(或者来自CPU指令解码器)的既包含计算操作(例如加法)也包含存储器操作(例如加载存储器地址)的机器指令可作为输入被提供给该自适应算法。该算法随后可学习指令之间的转变概率,或者说序列依赖关系,来自动检测涉及计算和存储器操作的复现序列。
系统100中的用于序列检测的自适应算法可经由经训练的神经网络来实现。在一些实施例中,该神经网络可实现在现场可编程门阵列(field programmable gate array,FPGA)加速器中。在实施例中,该神经网络可实现在处理器和FPGA加速器的组合中。在一些实施例中,递归神经网络(recurrent neural network,RNN)可用于实现自适应序列检测算法。递归神经网络可取得机器指令的序列并且输出关于是否要卸载指令的决策的序列。图2是参考本文描述的组件和特征(包括但不限于附图和关联的描述)根据一个或多个实施例图示出序列检测器200的示例的图。如图2中所示,序列检测器是RNN。RNN可接收机器指令的序列{i1,i2,i3,…in}作为输入(标注为元素202),并且可输出关于是否要卸载指令的决策的序列{o1,o2,o3,…on}(标注为元素204)。给定机器指令i(例如,i2)和先前的RNN状态(盒子),RNN输出关于将指令(例如,i2)卸载到IMC硬件的真或假值(例如,o2)。
在一些实施例中,预取器可具有大的前瞻窗口,并且RNN可处理尚待在CPU上执行的指令。在这种情况下,如果RNN作出卸载指令的决策,则额外的逻辑可用于在CPU上的程序计数器中标记卸载的指令。
RNN的前馈通道(pass)可实现在硬件中,例如英特尔高斯神经加速器(Gaussian Neural Accelerator,GNA)。在一些实施例中,另一神经网络模型可被用作序列检测器,并且在这种情况下,其他神经网络模型可类似地经由例如高斯神经加速器(GNA)来以硬件实现。
在一些实施例中,可利用基准(benchmark)在硬件仿真中训练RNN,已知这些基准会增加缓存错失并且引起存储器时延问题。在运行训练仿真时,训练数据将包括关于将给定的指令卸载到IMC是否适当的信息(称为“预言数据”)。这种预言数据必须包括整体执行时间,但也可包括其他数据,例如重复的序列的开始和结束的标记。预言数据可用于构造适当的误差信号来利用误差反向传播进行训练。训练RNN的目标是让RNN记住导致缓存错失的序列。
在其他实施例中,可以训练RNN来直接预测缓存错失。在此场景中,可以直接训练RNN来检测导致存储器访问的长时延的序列。可以添加逻辑(例如,算法)来将RNN输出(即,预测的缓存错失的序列)转换成卸载决策,其方式或者是通过添加另一神经网络层,或者是通过创建用于卸载的一组静态规则。
在另一实施例中,可以通过将RNN嵌入在强化学习代理中来训练RNN。强化学习代理的环境状态是指令的序列,并且其采取的动作是决定是否要卸载指令。代理获得的回报与指令的执行时间成比例。因此,序列检测器可在没有用户干预的情况下独立地运行。
当在仿真中训练RNN之后,可以使用“微调”模式来继续修改RNN权重以针对特定应用进行优化。微调模式可被运行,直到平均执行时间减小为止。一旦在微调之后获得合适的性能,就可在推断模式中运行RNN(权重是静态或者冻结的)。
存储器内计算(IMC)硬件
被称为存储器内计算(IMC)装置的硬件装置可以具有多个附接到它们的处理器。IMC硬件的示例包括像傲腾(Optane)存储器之类的非易失性存储器(Non-VolatileMemory,NVM),以及电阻性存储器(resistive memory,ReRAM)。IMC装置通过将其存储器结构改换用途以具有原地计算能力来支持存储器内计算。例如,ReRAM以氧化钛的电阻的形式存储数据;通过感测位线上的电流,可利用欧姆(Ohm)定律和基尔霍夫(Kirchhoff)定律来计算输入电压和单元电导的点积。
实施例可使用具有与小比特逻辑交织的分布式存储器阵列的IMC硬件,该小比特逻辑可被编程为并行地“在存储器内”对数据执行简单的功能。例如,这些存储器阵列(多达几千个分布式存储器阵列)加上微小的计算单元可被编程为可并发计算的单指令多数据(single instruction multiple data,SIMD)处理单元,从而将存储器阵列延伸为支持像点积、加法、按元素乘法、和减法之类的原地操作。
根据实施例,IMC硬件可被用于SIMD执行模型中,其中在每个周期中,发出到IMC的指令被多播到多个存储器阵列并且在锁定步骤中被执行。IMC硬件也可具有待办指令“请求”队列以及可以实现指令级并行性的调度器。可例如基于整体容量和基于访问存储器的速度来引导性能。
在实施例中,被卸载的序列可被创建为要在IMC上执行的状态机。如果IMC超出其容量,则为了这现最优的指令吞吐量,逐出策略可确定哪些状态机应当保持在IMC上并且哪些应当被逐出回到经由主机CPU来执行。在一些实施例中,新近策略可用于简单地逐出最近最少使用的状态机。在一些实施例中,除了新近策略以外,IMC还可存储关于每个状态机的效率效益的信息并且将新近性与将序列保持在IMC中的整体效益平衡。调度器在创建和执行状态机调度之前也可考虑存储器介质属性,比如介质耗损水准测量和热状态,以确保对存储器内计算硬件的最优使用。
指令转化器
指令转化器根据一些实施例可实现为指示出CPU机器指令和IMC指令之间的直接映射的硬件表格。在大多数情况下,CPU机器指令将在IMC上具有1:1映射的等同指令。在少数情况下,可以有一对多映射——例如,CPU上的融合乘加(fuse-multiply-add,FMA)指令可被执行为IMC装置上的3个分开的指令。在CPU包含在IMC上没有等同的指令的情况下,该指令不应当被卸载。卸载这种指令(或者包含这种指令的序列)的任何决策将是导致更长处理时延的不正确决策。因此,CPU指令在IMC装置上没有映射的那些情况可被包括在序列检测器和卸载引擎的训练数据集中,以确保系统避免卸载具有这种指令的序列。
执行决策引擎
执行决策引擎确定指令序列何时应当被卸载来在辅计算装置(例如,IMC)上执行。在一些实施例中,可以在与序列检测器合并在一起的逻辑中执行决策引擎。例如,在利用递归神经网络(图2,已经论述)来实现序列检测器的实施例中,RNN可提供关于是否要卸载特定指令序列的决策作为输出,从而作为决策引擎进行操作。利用另一神经网络结构实现序列检测器的实施例可类似地提供执行决策作为神经网络的输出。
在一些情况下,IMC硬件的整体吞吐量可低于CPU,尤其如果IMC在CPU空闲时立刻执行若干个状态机的话。因此,实施例可包括额外的逻辑来检查CPU是否空闲。如果CPU空闲,则执行引擎可将执行序列的任务派给CPU和IMC两者,取得更快的结果,并且杀掉(即,终止或停止执行)剩余的进程。为了确保处理中的一致性,用于较慢进程的管线可被冲刷。
示例应用:分散-聚集编程模型
用于卸载机器指令和存储器访问的序列的实施例可被应用到使用分散-聚集编程模型的算法。分散-聚集编程模型可被用于计算许多图算法例如广度优先搜索、连接成分标记、以及PageRank。图3提供了图示出分散-聚集编程模型的图300。如图3中所示,分散-聚集模型可以有三个关键级:聚集、应用、以及分散。图3中的图的左侧画面示出了在聚集级中,节点(V)从其传入邻居(U1和U2)收集信息。该图的中间画面示出了在应用级中,节点(V)对在聚集步骤中接收的信息进行一些计算。该图的右侧画面示出了在分散操作中,节点(V)将一些信息(其通常包含应用步骤的结果)广播到其传出邻居(U3和U4)。在图4中图示了描述分散-聚集编程模型的伪代码400。根据图4中的伪代码,这些关键级(为了简洁起见省略了应用步骤,但其在每次对vertex_gather的调用之后发生)被循环应用,直到符合某个停止条件(例如,没有节点有更新)为止。
在利用分散-聚集编程模型执行算法时,计算循环发生,其中每个迭代由分散级和聚集/应用级构成。在给定的迭代中,需要分散更新的“活跃”顶点的集合被称为计算前沿。在这些顶点分散更新之后,需要收集更新的顶点聚集所有输入并且利用这些输入来应用更新功能。该计算循环在计算前沿变为空时终止。通过正确地定义vertex_scatter()和vertex_gather()函数,可以计算很大一组图形算法。图5图示了广度优先搜索算法(breadth-first search,BFS)的计算前沿500,同时探索了BFS树的第二级别。如图5中所示,阴影框中的所有节点被标记为要求分散-聚集循环的迭代的活跃顶点。
对于分散-聚集编程模型中的给定图形,在应用级中反复地执行相同计算。由于更新每个顶点依赖于来自其他连接的顶点的信息,然而,在没有卸载的情况下执行此循环可导致指针追逐,引起执行中的缓存错失和不可预测的延迟。通过根据实施例来卸载机器指令和存储器访问的序列,此编程模型的执行可被加速——通过学习循环的某个(某些)迭代所要求的计算(从应用级的更新功能中的操作的序列)和存储器访问(在分散级期间接收更新的顶点的存储器位置)的最常见序列来实现。利用如本文所述的卸载技术,每个顶点中的数据将占用需要被加载和存储的存储器地址的静态集合,并且分散和聚集功能由对每个顶点中的数据进行操作的指令的集合构成。
图6A-图6B提供了参考本文描述的组件和特征(包括但不限于附图和关联的描述)根据一个或多个实施例图示出用于操作用于卸载机器指令和存储器访问的序列的系统的示例的过程600和650的流程图。过程600和650可实现在本文参考已经论述的图1-图2描述的计算系统100中。更具体而言,过程600和650可在一个或多个模块中作为存储在诸如随机访问存储器(random access memory,RAM)、只读存储器(read only memory,ROM)、可编程ROM(programmable ROM,PROM)、固件、闪速存储器之类的机器或计算机可读存储介质中的逻辑指令的集合来实现;可在诸如可编程逻辑阵列(programmable logic array,PLA)、现场可编程门阵列(field programmable gate array,FPGA)、复杂可编程逻辑器件(complexprogrammable logic device,CPLD)之类的可配置逻辑中实现;可在使用诸如专用集成电路(application specific integrated circuit,ASIC)、互补金属氧化物半导体(complementary metal oxide semiconductor,CMOS)或者晶体管-晶体管逻辑(transistor-transistor logic,TTL)技术之类的电路技术地固定功能逻辑硬件中实现;或者在其任意组合中实现。
例如,可以用一种或多种编程语言的任何组合来编写用于执行过程600中所示的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,比如JAVA、SMALLTALK、C++等等,还包括传统的过程式编程语言,比如“C”编程语言或者类似的编程语言。此外,逻辑指令可包括汇编指令、指令集架构(instruction set architecture,ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、集成电路的配置数据、个性化硬件本地的电子电路和/或其他结构组件(例如主机处理器、中央处理单元/CPU、微控制器等等)的状态信息。
转到图6A,对于过程600,图示的处理块610提供了经由神经网络来基于机器指令的输入集合辨识存储器访问和计算指令的模式。神经网络可以是递归神经网络(RNN)。存储器访问和计算指令的模式可包括指令的输入集合的指令之间的转变概率或序列依赖关系中的一个或多个。图示的处理块615提供经由神经网络来基于所辨识的存储器访问和计算指令的模式确定要被卸载来由辅计算装置执行的指令的序列。所确定的要被卸载的指令的序列可包括以下项中的一个或多个:复现的序列,具有卸载执行时间效益的序列,将由于重复的存储器操作导致高时延的序列,和/或将导致缓存错失的序列。图示的处理块620提供了把要被卸载的指令的序列从可由中央处理单元(CPU)执行的指令转化成可由辅计算装置执行的指令。
图示的处理块630提供了经由以下项中的一个或多个来训练递归神经网络(RNN):具有已知增加缓存错失和引起存储器时延问题的基准的硬件仿真,直接训练来检测导致存储器访问的长时延的序列,或者嵌入在强化学习代理中。图示的处理块640提供了执行微调来继续修改RNN权重以针对特定应用进行优化。
现在转到图6B,对于过程650,在块660,进行检查以确定CPU是否空闲。如果CPU不空闲,则该过程终止。如果CPU空闲,则该过程在图示的处理块665处继续,该处理块提供为CPU分派用于执行所卸载的指令的序列的第一进程的任务,并且为辅计算装置分派与第一过程并发的、用于执行经转化的卸载指令的第二进程的任务。在块670,确定第二进程是否在第一进程之前完成。如果是(即,第二进程在第一进程之前完成),则图示的处理块675提供接受第二进程的执行结果并且终止第一进程。否则,如果第二进程没有在第一进程之前完成,则图示的处理块680提供接受第一进程的执行结果并且终止第二进程。
图7示出了参考本文描述的组件和特征(包括但不限于附图和关联的描述)根据一个或多个实施例图示出用于将存储器访问和计算操作卸载来由辅计算装置执行的示例计算系统10的框图。系统10一般可以是具有如下功能的电子装置/平台的一部分:计算和/或通信功能(例如,服务器、云基础设施控制器、数据库控制器、笔记本计算机、桌面计算机、个人数字助理/PDA、平板计算机、可转换平板设备、智能电话,等等),成像功能(例如,相机、摄像机),媒体播放功能(例如,智能电视/TV),可穿戴功能(例如,手表、眼镜、头饰、鞋类、珠宝),运载工具功能(例如,汽车、卡车、摩托车),机器人功能(例如,自主机器人),物联网(Internet of Things,IoT)功能,等等,或者这些的任何组合。在图示的示例中,系统10可包括主机处理器12(例如,中央处理单元/CPU),其具有可耦合到系统存储器20的集成存储器控制器(memory controller,MC)14。主机处理器12可包括任何类型的处理装置,例如微控制器、微处理器、RISC处理器、ASIC,等等,连同关联的处理模块或电路。系统存储器20可包括任何非暂态机器或计算机可读存储介质,例如RAM、ROM、PROM、EEPROM、固件、闪速存储器,等等,可配置逻辑,例如PLA、FPGA、CPLD,使用诸如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件,或者它们的适合于存储指令28的任何组合。
系统10还可包括输入/输出(I/O)子系统16。I/O子系统16可与例如一个或多个输入/输出(I/O)装置17、网络控制器(例如,有线和/或无线NIC)、和存储装置22通信。存储装置22可包括任何适当的非暂态机器或计算机可读存储器类型(例如,闪速存储器、DRAM、SRAM(静态随机访问存储器)、固态驱动器(solid state drive,SSD)、硬盘驱动器(harddisk drive,HDD)、光盘,等等)。存储装置22可包括大容量存储装置。在一些实施例中,主机处理器12和/或I/O子系统16可经由网络控制器24与存储装置22(全部或者其一部分)通信。在一些实施例中,系统10还可包括图形处理器26(例如,图形处理单元/GPU)和AI加速器27。在一些实施例中,系统10还可包括辅计算装置18,例如存储器内计算(IMC)装置或者近存储器计算(CNM)装置。在实施例中,系统100还可包括没有示出的视觉处理单元(VPU)。
主机处理器12和I/O子系统16可一起在半导体管芯上实现为片上系统(system onchip,SoC)11,如实线包围所示出的。SoC 11因此可作为自动路由存储器访问和计算操作来由辅计算装置执行的计算装置来操作。在一些实施例中,SoC 11还可包括系统存储器20、网络控制器24、图形处理器26和/或AI加速器27(以虚线包围示出)中的一个或多个。在一些实施例中,SoC 11还可包括系统10的其他组件。
主机处理器12、I/O子系统16、图形处理器26、AI加速器27和/或VPU可执行从系统存储器20和/或存储装置22取回的程序指令28,以执行如本文参考图6A-图6B所描述的过程600和650的一个或多个方面。从而,例如,指令28的执行可使得SoC 11经由神经网络基于机器指令的输入集合辨识存储器访问和计算指令的模式,经由神经网络基于所辨识的存储器访问和计算指令的模式确定要被卸载来由辅计算装置执行的指令的序列,并且把要被卸载的指令的序列从可由中央处理单元(CPU)执行的指令转化成可由辅计算装置执行的指令。系统10可实现如本文参考图1-图2描述的计算系统100、序列检测器、决策引擎和/或指令转化器的一个或多个方面。系统10因此被认为至少在以下方面是性能增强的:系统智能地在CPU和辅计算装置之间路由计算和存储器操作以提高计算性能并且减少执行时间。
可以用一种或多种编程语言的任何组合来编写用于执行上文所述的过程的计算机程序代码并且将其实现为程序指令28,所述编程语言包括面向对象的编程语言,比如JAVA、JAVASCRIPT、PYTHON、SMALLTALK、C++等等,和/或传统的过程式编程语言,比如“C”编程语言或者类似的编程语言,此外,程序指令28可包括汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、个性化硬件本地的电子电路和/或其他结构组件(例如主机处理器、中央处理单元/CPU、微控制器、微处理器等等)的状态信息。
I/O装置17可包括一个或多个输入装置,比如触摸屏、键盘、鼠标、光标控制装置、触摸屏、麦克风、数字相机、视频记录器、摄像机、生物计量扫描器和/或传感器;输入装置可用于输入信息和与系统10和/或与其他装置交互。I/O装置17还可包括一个或多个输出装置,比如显示器(例如,触摸屏、液晶显示器/LCD、发光二极管/LED显示器、等离子面板等等)、扬声器和/或其他视觉或音频输出装置。输入和/或输出装置可用于例如提供用户接口。
图8示出了参考本文描述的组件和特征(包括但不限于附图和关联的描述)根据一个或多个实施例图示出用于将存储器访问和计算操作卸载来由辅计算装置执行的示例半导体设备30的框图。半导体设备30可例如被实现为芯片、管芯、或者其他半导体封装。半导体设备30可包括由例如硅、蓝宝石、砷化镓等等构成的一个或多个衬底32。半导体设备30还可包括由耦合到(一个或多个)衬底32的例如(一个或多个)晶体管阵列和(一个或多个)其他集成电路(IC)组件构成的逻辑34。逻辑34可至少部分在可配置逻辑或固定功能逻辑硬件中实现。逻辑34可实现上文参考图7描述的片上系统(SoC)11。逻辑34可实现上文描述的过程的一个或多个方面,包括本文参考图6A-图6B描述的过程600和650。逻辑34可实现如本文参考图1-图2描述的计算系统100、序列检测器、决策引擎、和/或指令转化器的一个或多个方面。装置30因此被认为至少在以下方面是性能增强的:系统智能地在CPU和辅计算装置之间路由计算和存储器操作以提高计算性能并且减少执行时间。
半导体设备可利用任何适当的半导体制造工艺或技术来构造半导体设备30。例如,逻辑34可包括被定位(例如,嵌入)在(一个或多个)衬底32内的晶体管沟道区。从而,逻辑34和(一个或多个)衬底32之间的接口可能不是突变结。逻辑34也可被认为包括在(一个或多个)衬底34的初始晶片上生长的外延层。
图9是参考本文描述的组件和特征(包括但不限于附图和关联的描述)根据一个或多个实施例图示出示例处理器核心40的框图。处理器核心40可以是用于任何类型的处理器的核心,所述处理器例如是微处理器、嵌入式处理器、数字信号处理器(digital signalprocessor,DSP)、网络处理器或者其他执行代码的装置。虽然在图9中只图示了一个处理器核心40,但处理元件可替换地包括多于一个图9中所示的处理器核心40。处理器核心40可以是单线程核心,或者对于至少一个实施例,处理器核心40可以是多线程的,因为其对于每个核心可包括多于一个硬件线程上下文(或者说“逻辑处理器”)。
图9还图示了耦合到处理器核心40的存储器41。存储器41可以是本领域技术人员已知的或者以其他方式可获得的各种各样的存储器(包括存储器层次体系的各种层)中的任何一者。存储器41可包括要被处理器核心40执行的一个或多个代码42指令。代码42可实现本文参考图6A-图6B描述的过程600和650的一个或多个方面。处理器核心40可实现如本文参考图1-图2描述的计算系统100、序列检测器、决策引擎、和/或指令转化器的一个或多个方面。处理器核心40遵循由代码42指示的指令的程序序列。每个指令可进入前端部分43并且被一个或多个解码器44处理。解码器44可生成诸如预定格式的固定宽度微操作之类的微操作作为其输出,或者可生成反映原始代码指令的其他指令、微指令、或者控制信号。图示的前端部分43还包括寄存器重命名逻辑46和调度逻辑48,它们一般分配资源并且对与转换指令相对应的操作排队以供执行。
处理器核心40被示为包括具有一组执行单元50-1至55-N的执行逻辑50。一些实施例可包括专用于特定功能或功能集合的若干个执行单元。其他实施例可只包括一个执行单元或者可执行特定功能的一个执行单元。图示的执行逻辑50执行由代码指令指定的操作。
在代码指令指定的操作的执行完成之后,后端逻辑58让代码42的指令引退。在一个实施例中,处理器核心40允许指令的无序执行,但要求指令的有序引退。引退逻辑59可采取本领域技术人员已知的各种形式(例如,重排序缓冲器之类的)。以此方式,处理器核心40在代码42的执行期间至少在如下方面进行变换:由解码器生成的输出、被寄存器重命名逻辑46利用的硬件寄存器和表格、和由执行逻辑50修改的任何寄存器(未示出)。
虽然在图9中没有图示,但处理元件可包括与处理器核心40一起在芯片上的其他元件。例如,处理元件可包括与处理器核心40一起的存储器控制逻辑。处理元件可包括I/O控制逻辑和/或可包括与存储器控制逻辑集成的I/O控制逻辑。处理元件也可包括一个或多个缓存。
图10是参考本文描述的组件和特征(包括但不限于附图和关联的描述)根据一个或多个实施例图示出基于多处理器的计算系统60的示例的框图。多处理器系统60包括第一处理元件70和第二处理元件80。虽然示出了两个处理元件70和80,但要理解系统60的实施例也可仅包括一个这种处理元件。
系统60被示为点到点互连系统,其中第一处理元件70和第二处理元件80经由点到点互连71耦合。应当理解,图10中所示的任何或所有互连可实现为多点分支总线,而不是点到点互连。
如图10中所示,处理元件70和80的每一者可以是多核处理器,包括第一和第二处理器核心(即,处理器核心74a和74b和处理器核心84a和84b)。这种核心74a、74b、84a、84b可被配置为以与上文联系图9所述的方式类似的方式来执行指令代码。
每个处理元件70、80可包括至少一个共享缓存99a、99b。共享缓存99a、99b可存储分别被处理器的一个或多个组件利用的数据(例如,指令),所述组件例如是核心74a、74b和84a、84b。例如,共享缓存99a、99b可在本地缓存存储器62、63中存储的数据,以供处理器的组件更快速的访问。在一个或多个实施例中,共享缓存99a、99b可包括一个或多个中间级缓存,例如第2级(L2)、第3级(L3)、第4级(L4)、或其他级缓存,最后一级缓存(last levelcache,LLC),和/或其组合。
虽然示为只具有两个处理元件70、80,但要理解实施例的范围不限于此。在其他实施例中,一个或多个额外的处理元件可存在于给定的处理器中。可替换地,处理元件70、80中的一个或多个可以是除了处理器以外的元件,例如加速器或者现场可编程门阵列。例如,(一个或多个)额外的处理元件可包括与第一处理器70相同的(一个或多个)额外处理器,与第一处理器70异构或非对称的(一个或多个)额外处理器,加速器(例如,图形加速器或者数字信号处理(DSP)单元),现场可编程门阵列,或者任何其他处理元件。在处理元件70、80之间,就包括架构特性、微架构特性、热特性、功率消耗特性等等在内的价值度量的范围而言可以有各种差异。这些差异可实际上将其自身展现为处理元件70、80之间的非对称性和异构性。对于至少一个实施例,各种处理元件70、80可存在于相同的管芯封装中。
第一处理元件70还可包括存储器控制器逻辑(MC)72和点到点(P-P)接口76和78。类似地,第二处理元件80可包括MC 82和P-P接口86和88。如图10中所示,MC 72和82将处理器耦合到相应的存储器,即存储器62和存储器63,存储器62和存储器63可以是在本地附着到各个处理器的主存储器的一部分。虽然MC 72和82被示为集成到处理元件70、80中,但对于替换的实施例,MC逻辑可以是在处理元件70、80之外的分立逻辑,而不是集成在其中。
第一处理元件70和第二处理元件80可分别经由P-P互连76和86耦合到I/O子系统90。如图10中所示,I/O子系统90包括P-P接口94和98。此外,I/O子系统90包括接口92来将I/O子系统90与高性能图形引擎64耦合。在一个实施例中,总线73可用于将图形引擎64耦合到I/O子系统90。可替换地,点到点互连可耦合这些组件。
进而,I/O子系统90可经由接口96耦合到第一总线65。在一个实施例中,第一总线65可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI(PCI Express)总线或另一种第三代I/O互连总线之类的总线,但是实施例的范围不限于此。
如图10中所示,各种I/O装置65a(例如,生物计量扫描仪、扬声器、相机、传感器)可耦合到第一总线66,以及可将第一总线65耦合到第二总线67的总线桥66。在一个实施例中,第二总线67可以是低引脚数(low pin count,LPC)总线。在一个实施例中,各种装置可耦合到第二总线67,例如包括键盘/鼠标67a、(一个或多个)通信装置67b、和数据存储单元68,例如盘驱动器或者其他大容量存储装置,它们可包括代码69。图示的代码69可实现上文描述的过程的一个或多个方面,包括本文参考图6A-图6B描述的过程600和650。图示的代码69可与已经论述的代码42(图9)类似。另外,音频I/O 67c可耦合到第二总线67并且电池61可向计算系统60供应电力。系统60可实现如本文参考图1-图2描述的计算系统100、序列检测器、决策引擎、和/或指令转化器的一个或多个方面。
请注意,设想了其他实施例。例如,取代图10的点到点架构,系统可实现多点分支总线或者另外的这种通信拓扑结构。另外,可改为利用比图10中所示更多或更少的集成芯片来划分图10的元件。
上述系统、装置、组件和/或方法的每一者的实施例,包括系统10、半导体设备30、处理器核心40、系统60、计算系统100、序列检测器、决策引擎、指令转化器、过程600和650、和/或任何其他系统组件,可以用硬件、软件或者这些的任何适当组合来实现。例如,硬件实现方式可包括可配置逻辑,例如可编程逻辑阵列(programmable logic array,PLA),现场可编程门阵列(field programmable gate array,FPGA),复杂可编程逻辑器件(complexprogrammable logic device,CPLD),或者使用诸如专用集成电路(application specificintegrated circuit,ASIC)、互补金属氧化物半导体(complementary metal oxidesemiconductor,CMOS)或者晶体管-晶体管逻辑(transistor-transistor logic,TTL)技术之类的电路技术的固定功能逻辑硬件,或者它们的任何组合。
替换地或者额外地,前述系统和/或组件和/或方法的全部或一些部分可在一个或多个模块中被实现为存储在诸如随机访问存储器(random access memory,RAM)、只读存储器(read only memory,ROM)、可编程ROM(programmable ROM,PROM)、固件、闪存之类的机器或计算机可读存储介质中的逻辑指令的集合,以由处理器或计算设备执行。例如,可以用一种或多种操作系统(operating system,OS)适用/适当的编程语言的任何组合来编写用于执行组件的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,比如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等等,还包括传统的过程式编程语言,比如“C”编程语言或者类似的编程语言。
附加注释和示例:
示例1包括一种计算系统,该计算系统包括辅计算装置,以及耦合到所述辅计算装置的设备,所述设备包括一个或多个衬底和耦合到所述一个或多个衬底的逻辑,其中所述逻辑至少部分地以可配置逻辑或者固定功能硬件逻辑中的一者或多者来实现,耦合到所述一个或多个衬底的所述逻辑用于:经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式,经由所述神经网络基于所辨识的存储器访问和计算指令的模式来确定要被卸载来由所述辅计算装置执行的指令的序列,并且把要被卸载的指令的序列从可由中央处理单元(CPU)执行的指令转化成可由所述辅计算装置执行的指令。
示例2包括如示例1所述的系统,其中所述神经网络包括递归神经网络(RNN),其中所述存储器访问和计算指令的模式包括指令的所述输入集合的指令之间的转变概率或者顺序依赖关系中的一个或多个,其中要被卸载的指令的序列包括以下一项或多项:复现的序列,具有卸载执行时间效益的序列、将由于重复的存储器操作导致高时延的序列、或者将导致缓存错失的序列,并且其中耦合到所述一个或多个衬底的所述逻辑还在所述CPU上的程序计数器中标记要被卸载的指令。
示例3包括如示例2所述的系统,其中所述RNN被经由以下一项或多项来训练:具有已知增加缓存错失并且引起存储器时延问题的基准的硬件仿真,直接训练来检测导致存储器访问的长时延的序列,或者将所述RNN嵌入在强化学习代理中。
示例4包括如示例1所述的系统,其中耦合到所述一个或多个衬底的所述逻辑还在所述CPU空闲时,为所述CPU分派用于执行所卸载的指令的序列的第一进程的任务,为所述辅计算装置分派与所述第一进程并发的、用于执行经转化的卸载的指令的第二进程的任务,如果所述第二进程在所述第一进程之前完成,则接受所述第二进程的执行结果并且终止所述第一进程,否则,如果所述第二进程没有在所述第一进程之前完成,则接受所述第一进程的执行结果并且终止所述第二进程。
示例5包括如示例1所述的系统,其中所述机器指令的输入集合可经由硬件预取器和指令解码器来提供,该硬件预取器具有大前瞻窗口来捕捉二进制源代码,并且该指令解码器将捕捉的二进制源代码解码成机器指令。
示例6包括如示例1到5中任何一项所述的系统,其中用于转化要被卸载的指令的序列的所述逻辑包括硬件表格,该硬件表格包括可由所述CPU执行的指令和可由所述辅计算装置执行的指令之间的直接映射。
示例7包括一种半导体设备,其包括一个或多个衬底,以及耦合到所述一个或多个衬底的逻辑,其中所述逻辑至少部分地以可配置逻辑或者固定功能硬件逻辑中的一者或多者来实现,耦合到所述一个或多个衬底的所述逻辑用于:经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式,经由所述神经网络基于所辨识的存储器访问和计算指令的模式来确定要被卸载来由辅计算装置执行的指令的序列,并且把要被卸载的指令的序列从可由中央处理单元(CPU)执行的指令转化成可由所述辅计算装置执行的指令。
示例8包括如示例7所述的半导体设备,其中所述神经网络包括递归神经网络(RNN),其中所述存储器访问和计算指令的模式包括指令的所述输入集合的指令之间的转变概率或者顺序依赖关系中的一个或多个,其中要被卸载的指令的序列包括以下一项或多项:复现的序列、具有卸载执行时间效益的序列、将由于重复的存储器操作导致高时延的序列、或者将导致缓存错失的序列,并且其中耦合到所述一个或多个衬底的所述逻辑还在所述CPU上的程序计数器中标记要被卸载的指令。
示例9包括如示例8所述的半导体设备,其中所述RNN被经由以下一项或多项来训练:具有已知增加缓存错失并且引起存储器时延问题的基准的硬件仿真,直接训练来检测导致存储器访问的长时延的序列,或者将所述RNN嵌入在强化学习代理中。
示例10包括如示例7所述的半导体设备,其中耦合到所述一个或多个衬底的所述逻辑还在所述CPU空闲时,为所述CPU分派用于执行所卸载的指令的序列的第一进程的任务,为所述辅计算装置分派与所述第一进程并发的、用于执行经转化的卸载的指令的第二进程的任务,如果所述第二进程在所述第一进程之前完成,则接受所述第二进程的执行结果并且终止所述第一进程,否则,如果所述第二进程没有在所述第一进程之前完成,则接受所述第一进程的执行结果并且终止所述第二进程。
示例11包括如示例7所述的半导体设备,其中所述机器指令的输入集合可经由硬件预取器和指令解码器来提供,该硬件预取器具有大前瞻窗口来捕捉二进制源代码,并且该指令解码器将捕捉的二进制源代码解码成机器指令。
示例12包括如示例7到11中任何一项所述的半导体设备,其中用于转化要被卸载的指令的序列的所述逻辑包括硬件表格,该硬件表格包括可由所述CPU执行的指令和可由所述辅计算装置执行的指令之间的直接映射。
示例13包括如示例7所述的半导体设备,其中耦合到所述一个或多个衬底的所述逻辑包括位于所述一个或多个衬底内的晶体管沟道区。
示例14包括至少一种非暂态计算机可读介质,其包括第一指令的集合,所述第一指令当被计算系统执行时,使得所述计算系统:经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式,经由所述神经网络基于所辨识的存储器访问和计算指令的模式来确定要被卸载来由辅计算装置执行的指令的序列,并且把要被卸载的指令的序列从可由中央处理单元(CPU)执行的指令转化成可由所述辅计算装置执行的指令。
示例15包括如示例14所述的至少一种非暂态计算机可读存储介质,其中所述神经网络包括递归神经网络(RNN),其中所述存储器访问和计算指令的模式包括指令的所述输入集合的指令之间的转变概率或者顺序依赖关系中的一个或多个,其中要被卸载的指令的序列包括以下一项或多项:复现的序列、具有卸载执行时间效益的序列、将由于重复的存储器操作导致高时延的序列、或者将导致缓存错失的序列,并且其中所述第一指令当被执行时,还使得所述计算系统在所述CPU上的程序计数器中标记要被卸载的指令。
示例16包括如示例15所述的至少一种非暂态计算机可读存储介质,其中所述RNN被经由以下一项或多项来训练:具有已知增加缓存错失并且引起存储器时延问题的基准的硬件仿真,直接训练来检测导致存储器访问的长时延的序列,或者将所述RNN嵌入在强化学习代理中。
示例17包括如示例14所述的至少一种非暂态计算机可读存储介质,其中所述第一指令当被执行时,还使得所述计算系统在所述CPU空闲时,为所述CPU分派用于执行所卸载的指令的序列的第一进程的任务,为所述辅计算装置分派与所述第一进程并发的、用于执行经转化的卸载的指令的第二进程的任务,如果所述第二进程在所述第一进程之前完成,则接受所述第二进程的执行结果并且终止所述第一进程,否则,如果所述第二进程没有在所述第一进程之前完成,则接受所述第一进程的执行结果并且终止所述第二进程。
示例18包括如示例14所述的至少一种非暂态计算机可读存储介质,其中所述机器指令的输入集合可经由硬件预取器和指令解码器来提供,该硬件预取器具有大前瞻窗口来捕捉二进制源代码,并且该指令解码器将捕捉的二进制源代码解码成机器指令。
示例19包括如示例14到18中任何一项所述的至少一种非暂态计算机可读存储介质,其中用于转化要被卸载的指令的序列包括读取硬件表格,该硬件表格包括可由所述CPU执行的指令和可由所述辅计算装置执行的指令之间的直接映射。
示例20包括一种将指令卸载来供执行的方法,包括:经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式,经由所述神经网络基于所辨识的存储器访问和计算指令的模式来确定要被卸载来由辅计算装置执行的指令的序列,并且把要被卸载的指令的序列从可由中央处理单元(CPU)执行的指令转化成可由所述辅计算装置执行的指令。
示例21包括如示例20所述的方法,还包括在所述CPU上的程序计数器中标记要被卸载的指令,其中所述神经网络包括递归神经网络(RNN),其中所述存储器访问和计算指令的模式包括指令的所述输入集合的指令之间的转变概率或者顺序依赖关系中的一个或多个,并且其中要被卸载的指令的序列包括以下一项或多项:复现的序列、具有卸载执行时间效益的序列、将由于重复的存储器操作导致高时延的序列、或者将导致缓存错失的序列。
示例22包括如示例21所述的方法,其中所述RNN被经由以下一项或多项来训练:具有已知增加缓存错失并且引起存储器时延问题的基准的硬件仿真,直接训练来检测导致存储器访问的长时延的序列,或者将所述RNN嵌入在强化学习代理中。
示例23包括如示例20所述的方法,还包括,在所述CPU空闲时,为所述CPU分派用于执行所卸载的指令的序列的第一进程的任务,为所述辅计算装置分派与所述第一进程并发的、用于执行经转化的卸载的指令的第二进程的任务,如果所述第二进程在所述第一进程之前完成,则接受所述第二进程的执行结果并且终止所述第一进程,否则,如果所述第二进程没有在所述第一进程之前完成,则接受所述第一进程的执行结果并且终止所述第二进程。
示例24包括如示例20所述的方法,其中所述机器指令的输入集合可经由硬件预取器和指令解码器来提供,该硬件预取器具有大前瞻窗口来捕捉二进制源代码,并且该指令解码器将捕捉的二进制源代码解码成机器指令。
示例25包括如示例20到24中的任何一项所述的方法,其中用于转化要被卸载的指令的序列包括读取硬件表格,该硬件表格包括可由所述CPU执行的指令和可由所述辅计算装置执行的指令之间的直接映射。
示例26包括一种设备,其包括用于执行如示例20到24中的任何一项所述的方法的装置。
从而,本文描述的自适应技术提供了加速程序执行和缓解存储器瓶颈,尤其是在其中有许多进行中的对于CPU资源的竞争需求的多线程应用中。该技术通过自动且智能地确定何时在CPU上或者在IMC/CNM硬件装置上执行代码的给定片段将是更快速的,来提高辅计算硬件的效率和适应性。此外,该技术通过避免存储器和处理器核心之间的频繁数据交换提供了对并行处理任务的高效处理,外加数据移动的大幅减少,从而为辅计算硬件实现了高性能。
实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片集组件、可编程逻辑阵列(programmable logicarray,PLA)、存储器芯片、网络芯片、片上系统(systems on chip,SoC)、SSD/NAND控制器ASIC,等等。此外,在一些附图中,用线条来表示信号导线。某些可能是不同的,以指示更多的构成信号路径,具有数字标注,以指示构成信号路径的数目,和/或在一端或多端具有箭头,以指示主要信息流方向。然而,这不应当以限制方式来解释。相反,这种添加的细节可联系一个或多个示范性实施例使用来促进更容易地理解电路。任何表示的信号线,无论是否具有附加信息,都可实际上包括一个或多个信号,这一个或多个信号可在多个方向上传播,并且可利用任何适当类型的信号方案来实现,例如利用差动对实现的数字或模拟线路、光纤线路和/或单端线路。
可能给出了示例大小/型号/值/范围,虽然实施例不限于此。随着制造技术(例如,光刻术)随着时间的推移而成熟,预期能够制造具有更小大小的器件。此外,为了图示和论述的简单,并且为了不模糊实施例的某些方面,在附图内可能示出或不示出到IC芯片和其他组件的公知电源/接地连接。另外,可能以框图形式示出布置以避免模糊实施例,并且同时也考虑到了如下事实:关于这种框图布置的实现方式的具体细节是高度取决于在其内实现实施例的计算系统的,即,这种具体细节应当完全在本领域技术人员的视野内。在阐述具体细节(例如,电路)以便描述示例实施例的情况下,本领域技术人员应当清楚,没有这些具体细节,或者利用这些具体细节的变体,也可实现实施例。从而说明书应当被认为是说明性的,而不是限制性的。
术语“耦合”在本文中可用于指所涉组件之间的任何类型的关系,无论是直接的还是间接的,并且可应用到电的、机械的、流体的、光的、电磁的、机电的或者其他连接。此外,除非另外指出,否则术语“第一”、“第二”等等在本文中可只用于促进论述,而不带有特定的时间或先后意义。
就在本申请中和权利要求书中使用的而言,由术语“中的一个或多个”联接的项目的列表可意指列出的术语的任何组合。例如,短语“A、B或C中的一个或多个”可意指A;B;C;A和B;A和C;B和C;或者A、B和C。
本领域技术人员从前述描述将会明白,可以以各种形式实现实施例的广泛技术。因此,虽然已联系其特定示例描述了实施例,但实施例的真实范围不应当限于此,因为本领域技术人员在研习了附图、说明书和所附权利要求书后将清楚其他修改。
Claims (25)
1.一种计算系统,包括:
辅计算装置;以及
耦合到所述辅计算装置的设备,所述设备包括一个或多个衬底和耦合到所述一个或多个衬底的逻辑,其中所述逻辑至少部分地以可配置逻辑或者固定功能硬件逻辑中的一者或多者来实现,耦合到所述一个或多个衬底的所述逻辑用于:
经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式;
经由所述神经网络基于所辨识的存储器访问和计算指令的模式,来确定要被卸载来由所述辅计算装置执行的指令的序列;并且
把要被卸载的指令的序列从可由中央处理单元CPU执行的指令转化成可由所述辅计算装置执行的指令。
2.如权利要求1所述的系统,其中,所述神经网络包括递归神经网络RNN,其中所述存储器访问和计算指令的模式包括指令的所述输入集合的指令之间的转变概率或者顺序依赖关系中的一个或多个,其中要被卸载的所述指令的序列包括以下一项或多项:复现的序列、具有卸载执行时间效益的序列、将由于重复的存储器操作导致高时延的序列、或者将导致缓存错失的序列,并且其中耦合到所述一个或多个衬底的所述逻辑还用于在所述CPU上的程序计数器中标记所述要被卸载的指令。
3.如权利要求2所述的系统,其中,所述RNN被经由以下一项或多项来训练:具有已知增加缓存错失并且引起存储器时延问题的基准的硬件仿真,直接训练来检测导致存储器访问的长时延的序列,或者将所述RNN嵌入在强化学习代理中。
4.如权利要求1所述的系统,其中,耦合到所述一个或多个衬底的所述逻辑还用于在所述CPU空闲时:
为所述CPU分派用于执行所卸载的指令的序列的第一进程的任务;
为所述辅计算装置分派与所述第一进程并发的、用于执行经转化的所卸载的指令的第二进程的任务;
如果所述第二进程在所述第一进程之前完成,则接受所述第二进程的执行结果并且终止所述第一进程;并且
否则,如果所述第二进程没有在所述第一进程之前完成,则接受所述第一进程的执行结果并且终止所述第二进程。
5.如权利要求1所述的系统,其中,所述机器指令的输入集合可经由硬件预取器和指令解码器来提供,该硬件预取器具有大前瞻窗口来捕捉二进制源代码,并且该指令解码器将捕捉的二进制源代码解码成机器指令。
6.如权利要求1到5中任一项所述的系统,其中,用于转化所述要被卸载的指令的序列的所述逻辑包括硬件表格,该硬件表格包括可由所述CPU执行的指令和可由所述辅计算装置执行的指令之间的直接映射。
7.一种半导体设备,包括:
一个或多个衬底;以及
耦合到所述一个或多个衬底的逻辑,其中所述逻辑至少部分地以可配置逻辑或者固定功能硬件逻辑中的一者或多者来实现,耦合到所述一个或多个衬底的所述逻辑用于:
经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式;
经由所述神经网络基于所辨识的存储器访问和计算指令的模式,来确定要被卸载来由辅计算装置执行的指令的序列;并且
把要被卸载的指令的序列从可由中央处理单元CPU执行的指令转化成可由所述辅计算装置执行的指令。
8.如权利要求7所述的半导体设备,其中,所述神经网络包括递归神经网络RNN,其中所述存储器访问和计算指令的模式包括指令的所述输入集合的指令之间的转变概率或者顺序依赖关系中的一个或多个,其中要被卸载的所述指令的序列包括以下一项或多项:复现的序列、具有卸载执行时间效益的序列、将由于重复的存储器操作导致高时延的序列、或者将导致缓存错失的序列,并且其中耦合到所述一个或多个衬底的所述逻辑还用于在所述CPU上的程序计数器中标记所述要被卸载的指令。
9.如权利要求8所述的半导体设备,其中,所述RNN被经由以下一项或多项来训练:具有已知增加缓存错失并且引起存储器时延问题的基准的硬件仿真,直接训练来检测导致存储器访问的长时延的序列,或者将所述RNN嵌入在强化学习代理中。
10.如权利要求7所述的半导体设备,其中,耦合到所述一个或多个衬底的所述逻辑还用于在所述CPU空闲时:
为所述CPU分派用于执行所卸载的指令的序列的第一进程的任务;
为所述辅计算装置分派与所述第一进程并发的、用于执行经转化的所卸载的指令的第二进程的任务;
如果所述第二进程在所述第一进程之前完成,则接受所述第二进程的执行结果并且终止所述第一进程;并且
否则,如果所述第二进程没有在所述第一进程之前完成,则接受所述第一进程的执行结果并且终止所述第二进程。
11.如权利要求7所述的半导体设备,其中,所述机器指令的输入集合可经由硬件预取器和指令解码器来提供,该硬件预取器具有大前瞻窗口来捕捉二进制源代码,并且该指令解码器将捕捉的二进制源代码解码成机器指令。
12.如权利要求7到11中任一项所述的半导体设备,其中,用于转化所述要被卸载的指令的序列的所述逻辑包括硬件表格,该硬件表格包括可由所述CPU执行的指令和可由所述辅计算装置执行的指令之间的直接映射。
13.如权利要求7到11中任一项所述的半导体设备,其中,耦合到所述一个或多个衬底的所述逻辑包括位于所述一个或多个衬底内的晶体管沟道区。
14.一种计算设备,包括:
用于经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式的装置;
用于经由所述神经网络基于所辨识的存储器访问和计算指令的模式来确定要被卸载来由辅计算装置执行的指令的序列的装置;以及
用于把要被卸载的指令的序列从可由中央处理单元CPU执行的指令转化成可由所述辅计算装置执行的指令的装置。
15.如权利要求14所述的计算设备,其中,所述神经网络包括递归神经网络RNN,其中所述存储器访问和计算指令的模式包括指令的所述输入集合的指令之间的转变概率或者顺序依赖关系中的一个或多个,其中要被卸载的所述指令的序列包括以下一项或多项:复现的序列、具有卸载执行时间效益的序列、将由于重复的存储器操作导致高时延的序列、或者将导致缓存错失的序列,并且
还包括:用于在所述CPU上的程序计数器中标记所述要被卸载的指令的装置。
16.如权利要求15所述的计算设备,其中,所述RNN被经由以下一项或多项来训练:具有已知增加缓存错失并且引起存储器时延问题的基准的硬件仿真,直接训练来检测导致存储器访问的长时延的序列,或者将所述RNN嵌入在强化学习代理中。
17.如权利要求14所述的计算设备,还包括,在所述CPU空闲时:
用于为所述CPU分派用于执行所卸载的指令的序列第一进程的任务的装置;
用于为所述辅计算装置分派与所述第一进程并发的、用于执行经转化的所卸载的指令的第二进程的任务的装置;
用于在所述第二进程在所述第一进程之前完成的情况下接受所述第二进程的执行结果并且终止所述第一进程的装置;以及
用于在所述第二进程没有在所述第一进程之前完成的情况下接受所述第一进程的执行结果并且终止所述第二进程的装置。
18.如权利要求14所述的计算设备,其中,所述机器指令的输入集合可经由硬件预取器和指令解码器来提供,该硬件预取器具有大前瞻窗口来捕捉二进制源代码,并且该指令解码器将捕捉的二进制源代码解码成机器指令。
19.如权利要求14到18中任一项所述的计算设备,其中,用于转化所述要被卸载的指令的序列的所述装置包括:用于读取硬件表格的装置,该硬件表格包括可由所述CPU执行的指令和可由所述辅计算装置执行的指令之间的直接映射。
20.一种将指令卸载来供执行的方法,包括:
经由神经网络基于机器指令的输入集合来辨识存储器访问和计算指令的模式;
经由所述神经网络基于所辨识的存储器访问和计算指令的模式,来确定要被卸载来由辅计算装置执行的指令的序列;并且
把要被卸载的指令的序列从可由中央处理单元CPU执行的指令转化成可由所述辅计算装置执行的指令。
21.如权利要求20所述的方法,还包括:在所述CPU上的程序计数器中标记所述要被卸载的指令,其中所述神经网络包括递归神经网络RNN,其中所述存储器访问和计算指令的模式包括指令的所述输入集合的指令之间的转变概率或者顺序依赖关系中的一个或多个,并且其中要被卸载的所述指令的序列包括以下一项或多项:复现的序列、具有卸载执行时间效益的序列、将由于重复的存储器操作导致高时延的序列、或者将导致缓存错失的序列。
22.如权利要求21所述的方法,其中,所述RNN被经由以下一项或多项来训练:具有已知增加缓存错失并且引起存储器时延问题的基准的硬件仿真,直接训练来检测导致存储器访问的长时延的序列,或者将所述RNN嵌入在强化学习代理中。
23.如权利要求20所述的方法,还包括,在所述CPU空闲时:
为所述CPU分派用于执行所卸载的指令的序列的第一进程的任务;
为所述辅计算装置分派与所述第一进程并发的、用于执行经转化的所卸载的指令的第二进程的任务;
如果所述第二进程在所述第一进程之前完成,则接受所述第二进程的执行结果并且终止所述第一进程;并且
否则,如果所述第二进程没有在所述第一进程之前完成,则接受所述第一进程的执行结果并且终止所述第二进程。
24.如权利要求20所述的方法,其中,所述机器指令的输入集合可经由硬件预取器和指令解码器来提供,该硬件预取器具有大前瞻窗口来捕捉二进制源代码,并且该指令解码器将捕捉的二进制源代码解码成机器指令。
25.如权利要求20到24中任一项所述的方法,其中,转化要被卸载的指令的序列包括读取硬件表格,该硬件表格包括可由所述CPU执行的指令和可由所述辅计算装置执行的指令之间的直接映射。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/914,293 US11403102B2 (en) | 2020-06-27 | 2020-06-27 | Technology to learn and offload common patterns of memory access and computation |
US16/914,293 | 2020-06-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113918218A true CN113918218A (zh) | 2022-01-11 |
Family
ID=72749331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011432868.0A Pending CN113918218A (zh) | 2020-06-27 | 2020-12-10 | 学习和卸载存储器访问和计算的常见模式的技术 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11403102B2 (zh) |
CN (1) | CN113918218A (zh) |
DE (1) | DE102020134345A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403102B2 (en) | 2020-06-27 | 2022-08-02 | Intel Corporation | Technology to learn and offload common patterns of memory access and computation |
US11188406B1 (en) | 2021-03-31 | 2021-11-30 | Advanced Micro Devices, Inc. | Detecting execution hazards in offloaded operations |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203932B1 (en) * | 2002-12-30 | 2007-04-10 | Transmeta Corporation | Method and system for using idiom recognition during a software translation process |
US7594221B2 (en) * | 2004-04-20 | 2009-09-22 | Hewlett-Packard Development Company, L.P. | Method and apparatus for translating binary code |
US7516302B2 (en) * | 2006-12-19 | 2009-04-07 | Arm Limited | Efficient use of co-processor in platform independent instruction machine by controlling result transfer and translation and transfer timing of subsequent instruction based on instruction type for result forwarding |
US8972958B1 (en) * | 2012-10-23 | 2015-03-03 | Convey Computer | Multistage development workflow for generating a custom instruction set reconfigurable processor |
US9678747B2 (en) * | 2011-02-08 | 2017-06-13 | Openspan, Inc. | Code injection and code interception in an operating system with multiple subsystem environments |
US8996951B2 (en) * | 2012-11-15 | 2015-03-31 | Elwha, Llc | Error correction with non-volatile memory on an integrated circuit |
CN106325819B (zh) * | 2015-06-17 | 2019-08-02 | 华为技术有限公司 | 计算机指令处理方法、协处理器和系统 |
KR102402672B1 (ko) * | 2015-09-01 | 2022-05-26 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법 |
KR102521654B1 (ko) * | 2016-01-25 | 2023-04-13 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법 |
US10656962B2 (en) * | 2016-10-21 | 2020-05-19 | International Business Machines Corporation | Accelerate deep neural network in an FPGA |
US11010659B2 (en) * | 2017-04-24 | 2021-05-18 | Intel Corporation | Dynamic precision for neural network compute operations |
US20180373760A1 (en) * | 2017-06-23 | 2018-12-27 | Xilinx, Inc. | Parallel compute offload to database accelerator |
US10684857B2 (en) * | 2018-02-01 | 2020-06-16 | International Business Machines Corporation | Data prefetching that stores memory addresses in a first table and responsive to the occurrence of loads corresponding to the memory addresses stores the memory addresses in a second table |
US11403102B2 (en) | 2020-06-27 | 2022-08-02 | Intel Corporation | Technology to learn and offload common patterns of memory access and computation |
-
2020
- 2020-06-27 US US16/914,293 patent/US11403102B2/en active Active
- 2020-12-10 CN CN202011432868.0A patent/CN113918218A/zh active Pending
- 2020-12-21 DE DE102020134345.0A patent/DE102020134345A1/de active Pending
-
2022
- 2022-07-25 US US17/872,927 patent/US11853766B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
DE102020134345A1 (de) | 2021-12-30 |
US20220357951A1 (en) | 2022-11-10 |
US11853766B2 (en) | 2023-12-26 |
US20200326949A1 (en) | 2020-10-15 |
US11403102B2 (en) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11640295B2 (en) | System to analyze and enhance software based on graph attention networks | |
US10140210B2 (en) | Method and apparatus for cache occupancy determination and instruction scheduling | |
US11853766B2 (en) | Technology to learn and offload common patterns of memory access and computation | |
Liao et al. | Ascend: a scalable and unified architecture for ubiquitous deep neural network computing: Industry track paper | |
US20190102669A1 (en) | Global and local time-step determination schemes for neural networks | |
US20170286114A1 (en) | Processors, methods, and systems to allocate load and store buffers based on instruction type | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
CN113849675A (zh) | 使用引导强化学习的相似性搜索 | |
US11645534B2 (en) | Triggered operations to improve allreduce overlap | |
CN115053230A (zh) | 优化低精度推理模型用于深度神经网络的部署 | |
CN116070557A (zh) | 使用强化学习的数据路径电路设计 | |
US20220350863A1 (en) | Technology to minimize the negative impact of cache conflicts caused by incompatible leading dimensions in matrix multiplication and convolution kernels without dimension padding | |
CN113391761A (zh) | 基于模拟退火的存储器分配 | |
US20210365804A1 (en) | Dynamic ai model transfer reconfiguration to minimize performance, accuracy and latency disruptions | |
US20210406777A1 (en) | Autonomous allocation of deep neural network inference requests in a cluster with heterogeneous devices | |
US11907118B2 (en) | Interleaved data conversion to change data formats | |
CN112988376A (zh) | 服务类别属性在运行时的初始化和管理 | |
US11385873B2 (en) | Control speculation in dataflow graphs | |
US20230315630A1 (en) | Dynamic inclusive and non-inclusive caching policy | |
US11836518B2 (en) | Processor graph execution using interrupt conservation | |
US20220391710A1 (en) | Neural network based power and performance model for versatile processing units | |
US20240045723A1 (en) | Hierarchical compute and storage architecture for artificial intelligence application | |
US20220326921A1 (en) | Reducing compiler type check costs through thread speculation and hardware transactional memory | |
KR20210080170A (ko) | 리그레인드 타일 실행을 위한 통합된 프로그래밍 인터페이스 | |
CN117642751A (zh) | 样本自适应跨层范数校准和中继神经网络 |
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 |