CN111656334A - 具有可编程原子操作的存储器控制器 - Google Patents
具有可编程原子操作的存储器控制器 Download PDFInfo
- Publication number
- CN111656334A CN111656334A CN201980010140.8A CN201980010140A CN111656334A CN 111656334 A CN111656334 A CN 111656334A CN 201980010140 A CN201980010140 A CN 201980010140A CN 111656334 A CN111656334 A CN 111656334A
- Authority
- CN
- China
- Prior art keywords
- memory
- circuit
- data
- circuitry
- atomic operation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 1198
- 230000004044 response Effects 0.000 claims abstract description 152
- 238000004891 communication Methods 0.000 claims description 158
- 238000000034 method Methods 0.000 claims description 97
- 239000000872 buffer Substances 0.000 claims description 35
- 238000012546 transfer Methods 0.000 claims description 11
- 238000011068 loading method Methods 0.000 claims description 9
- 238000007667 floating Methods 0.000 claims description 3
- 230000003068 static effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 15
- 239000004744 fabric Substances 0.000 description 8
- 230000000670 limiting effect Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000004888 barrier function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000007717 exclusion Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 230000003595 spectral effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- HJCCZIABCSDUPE-UHFFFAOYSA-N methyl 2-[4-[[4-methyl-6-(1-methylbenzimidazol-2-yl)-2-propylbenzimidazol-1-yl]methyl]phenyl]benzoate Chemical compound CCCC1=NC2=C(C)C=C(C=3N(C4=CC=CC=C4N=3)C)C=C2N1CC(C=C1)=CC=C1C1=CC=CC=C1C(=O)OC HJCCZIABCSDUPE-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000001052 transient effect Effects 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
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- 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/1024—Latency reduction
-
- 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/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0064—Latency reduction in handling transfers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Dram (AREA)
Abstract
本发明公开一种存储器控制器电路(100),其可耦合到第一存储器电路(125),例如DRAM,并且包含:第一存储器控制电路(155),其从所述第一存储器电路读取或对所述第一存储器电路写入;第二存储器电路(175),例如SRAM;第二存储器控制电路(160),其被调适成当所请求的数据存储于所述第二存储器电路中时,响应于读取的读取请求而从所述第二存储器电路读取,否则将所述读取请求传送到所述第一存储器控制电路;预定原子操作电路系统(185);和可编程原子操作电路系统(135),其被调适成执行至少一个可编程原子操作。所述第二存储器控制电路还将接收到的可编程原子操作请求传送到所述可编程原子操作电路系统并且针对所述第二存储器电路的高速缓存行设置危险位。
Description
相关申请案的交叉引用
本申请案是发明人Tony M.Brewer在2018年1月29日申请的标题为“具有集成式定制原子单元的存储器控制器(Memory Controller with Integrated Custom AtomicUnit)”的第62/623,331号美国临时专利申请案的非临时案并且主张其权益和优先权,所述临时专利申请案特此共同转让,且其全部内容由此以全文引用的方式并入本文中,具有相同的完整效力和作用,就如同在本文中完整阐述一般。
技术领域
本发明大体涉及存储器控制器,并且更具体地说,涉及提供预定和可编程原子操作并且减少反复存取的存储器方位的时延的存储器控制器。
关于联邦赞助的研究或开发的声明
本发明是在政府支持下在由国防部(DOD-DARPA)授予的第HR0011-16-3-0002号合约下进行的。政府在本发明中享有一定权利。
背景技术
存储器控制器普遍用于计算技术等中,存储器控制器控制接取以读取来自存储器电路的数据,将数据写入到存储器电路,以及刷新保持于存储器电路中的数据。多种多样的存储器控制器是可购得的且被设计成大体适用于广泛范围的应用,但不针对包含机器学习和人工智能(“AI”)应用的特定应用进行优化。
因此,持续需要具有高性能且高效节能的存储器控制器。这类存储器控制器应提供对要求大量且高度频繁存储器存取的计算密集型内核或操作的支持,所述计算密集型内核或操作例如性能可受到应用可对存储于存储器中的数据存取的速度限制,例如用于执行快速傅里叶变换(“FFT”)操作、有限脉冲响应(“FIR”)滤波的应用,以及其它通常用于较大应用(例如合成孔径雷达(例如,需要频繁接取存储于存储器中的表))中的计算密集型操作,例如但不限于5G网络连接和5G基站操作、机器学习、AI、模板代码操作,以及图表分析操作,例如使用光谱技术的图聚类。这类存储器控制器还应针对高处理量和低时延进行优化,包含用于原子操作的高处理量和低时延。这类存储器控制器还应提供广泛范围的原子操作,包含预定原子操作以及可编程或用户定义的原子操作。
发明内容
如下文更详细地论述,代表性设备、系统和方法提供具有高性能并且高效节能的存储器控制器。所述存储器控制器的代表性实施例提供对要求大量且高度频繁存储器存取的计算密集型内核或操作的支持,所述计算密集型内核或操作例如用于执行快速傅里叶变换(“FFT”)操作、有限脉冲响应(“FIR”)滤波的计算密集型内核或操作,以及其它通常用于较大应用(例如合成孔径雷达)中的计算密集型操作,例如但不限于5G网络连接和5G基站操作、机器学习、AI、模板代码操作,以及图表分析操作,例如使用光谱技术的图聚类。所述存储器控制器的代表性实施例针对高处理量和低时延经优化,包含用于原子操作的高处理量和低时延。所述存储器控制器的代表性实施例还提供广泛范围的原子操作,包含预定原子操作以及可编程或用户定义的原子操作。
当使用架构模拟器进行评估时,所述存储器控制器的代表性实施例产生显著结果。举例来说,与当前技术发展水平的X86服务器平台相比,所述存储器控制器的代表性实施例使用标准GDDR6 DRAM存储器提供三倍以上(3.48x)的更佳原子更新性能。并且,举例来说,也是与当前技术发展水平的X86服务器平台相比,所述存储器控制器的代表性实施例使用经修改GDDR6 DRAM存储器(具有更多存储器库)提供十七倍(17.6x)的更佳原子更新性能。
所述存储器控制器的代表性实施例还提供极低时延和高处理量存储器读取和写入操作,所述操作通常仅受存储器库可用性、错误校正开销和通信网络上可用的带宽(Gb/s)以及存储器和高速缓存器装置本身限制,从而在达成最大带宽之前具有平坦时延。
所述存储器控制器的代表性实施例还为可编程或用户定义的原子操作提供与预定原子操作的性能相当的极高性能(高处理量和低时延)。并非执行多个存储器存取,而是响应于指定可编程原子操作和存储器地址的原子操作请求,所述存储器控制器中的电路系统将原子操作请求传送到可编程原子操作电路系统并且设置存储于存储器危险寄存器中的对应于用于原子操作中的存储器行的存储器地址的危险位,以确保在所述存储器行上不执行其它操作(读取、写入或原子),接着在完成原子操作后即刻清除所述危险位。经提供用于可编程原子操作电路系统135执行可编程或用户定义的原子操作的额外直接数据路径允许额外写入操作,不具有通信网络的带宽施加的任何限制,且不会增加通信网络的任何拥塞。
在代表性实施例中,一种存储器控制器电路可耦合到第一存储器电路,其中所述存储器控制器包括:第一存储器控制电路,其可耦合到所述第一存储器电路,所述第一存储器控制电路被调适成响应于读取请求而从所述第一存储器电路读取或加载所请求的数据并且响应于写入请求而将所请求的数据写入或存储到所述第一存储器电路;第二存储器电路;第二存储器控制电路,其耦合到所述第二存储器电路,所述第二存储器控制电路被调适成当所述所请求的数据存储于所述第二存储器电路中时,响应于读取的读取请求而从所述第二存储器电路读取或加载所述所请求的数据,并且当所述所请求的数据不存储于所述第二存储器电路中时,将所述读取请求传送到所述第一存储器控制电路;预定原子操作电路系统,其被调适成响应于指定多个预定原子操作中的至少一个预定原子操作的原子操作请求而执行所述至少一个预定原子操作;和可编程原子操作电路系统,其被调适成响应于指定多个可编程原子操作中的至少一个可编程原子操作的原子操作请求而执行所述至少一个可编程原子操作。
在另一代表性实施例中,一种存储器控制器电路可耦合到第一存储器电路,其中所述存储器控制器包括:第一存储器控制电路,其可耦合到所述第一存储器电路,所述第一存储器控制电路被调适成响应于读取请求而从所述第一存储器电路读取或加载所请求的数据并且响应于写入请求而将所请求的数据写入或存储到所述第一存储器电路;可编程原子操作电路系统,其耦合到所述第一存储器控制电路,所述可编程原子操作电路系统被调适成响应于指定多个可编程原子操作中的至少一个可编程原子操作的原子操作请求而执行所述至少一个可编程原子操作;第二存储器电路;和第二存储器控制电路,其耦合到所述第二存储器电路和所述第一存储器控制电路,所述第二存储器控制电路被调适成响应于指定所述至少一个可编程原子操作和存储器地址的原子操作请求,将所述原子操作请求传送到所述可编程原子操作电路系统并且设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位。
在代表性实施例中,所述多个预定原子操作可包括选自由以下组成的群组的至少两个预定原子操作:提取并AND、提取并OR、提取并XOR、提取并相加、提取并相减、提取并递增、提取并递减、提取并最小化、提取并最大化、提取并交换、比较并交换,以及其组合。
在代表性实施例中,可编程原子操作电路系统可包括:指令高速缓存器,其存储对应于所述至少一个可编程原子操作的多个处理器指令;执行队列,其存储对应于所述可编程原子操作的线程识别符;核心控制电路,其耦合到所述指令高速缓存器并且耦合到所述执行队列,所述核心控制电路被调适成响应于对应于所述可编程原子操作的所述线程识别符,选择所述指令高速缓存器中的开始或下一指令或指令地址以用于执行所述可编程原子操作;和处理器核心,其被调适成执行用于所述可编程原子操作的至少一个指令并且产生所得数据。
也是在代表性实施例中,所述可编程原子操作电路系统可另外包括:存储器控制器接口电路,其耦合到所述处理器核心并且接收所述所得数据并将所述所得数据传送到所述第二存储器控制电路以将所述所得数据写入到所述第二存储器电路。在代表性实施例中,所述存储器控制器电路可另外包括:网络通信接口,其可耦合到通信网络并且耦合到所述存储器控制器接口电路,所述网络通信接口被调适成准备并在所述通信网络上发射具有所述所得数据的响应数据分组。
在代表性实施例中,所述可编程原子操作电路系统可另外包括:至少一个数据缓冲器,其存储从执行用于所述可编程原子操作的所述至少一个指令产生的操作数数据和中间结果。也是在代表性实施例中,所述可编程原子操作电路系统可另外包括:网络命令队列,其耦合到所述处理器核心,所述网络命令队列存储所得数据;和网络通信接口,其耦合到所述网络命令队列并且可耦合到通信网络,所述网络通信接口被调适成准备并在所述通信网络上发射具有所述所得数据的响应数据分组。
在代表性实施例中,所述处理器核心可耦合到数据缓冲器,且所述处理器核心可被进一步调适成执行加载非缓冲指令以确定操作数是否存储于所述数据缓冲器中,并且当所述数据不存储于所述数据缓冲器中时,产生发到所述第二存储器控制电路的读取请求。在代表性实施例中,所述处理器核心可被进一步调适成执行存储并清除锁定指令以产生发到所述第二存储器控制电路的原子写入请求,所述原子写入请求具有所述所得数据和用以在将所述所得数据写入到所述第二存储器电路之后重置或清除存储器危险位的指定。在代表性实施例中,所述处理器核心可被进一步调适成执行原子返回指令以在将所述所得数据写入到所述第二存储器电路之后重置或清除存储器危险位。在代表性实施例中,所述处理器核心可被进一步调适成执行原子返回指令以产生具有所述所得数据的响应数据分组。在代表性实施例中,所述处理器核心可被进一步调适成执行原子返回指令以完成原子操作。
在代表性实施例中,指定所述至少一个可编程原子操作的所述原子操作请求包括物理存储器地址、预定原子操作识别符和至少一个线程状态寄存器值。在代表性实施例中,所述可编程原子操作电路系统可另外包括至少一个寄存器,其存储线程状态信息。在这类代表性实施例中,所述可编程原子操作电路系统可被进一步调适成响应于接收到指定所述至少一个可编程原子操作的所述原子操作请求,用所述物理存储器地址、对应于所述存储器地址的任何数据以及所述至少一个线程状态寄存器值来初始化所述至少一个寄存器。
在代表性实施例中,所述存储器控制器电路可另外包括网络通信接口,其可耦合到通信网络并且耦合到所述第一存储器控制电路和所述第二存储器控制电路,所述网络通信接口被调适成解码从所述通信网络接收的多个请求分组,并且准备并在所述通信网络上发射多个响应数据分组。
在代表性实施例中,所述可编程原子操作电路系统被调适成执行用户定义的原子操作、多循环操作、浮点操作和多指令操作。
在代表性实施例中,所述存储器控制器电路可另外包括写入合并电路,其被调适成将从所述第一存储器电路读取的数据写入或存储到所述第二存储器电路。
在代表性实施例中,所述第二存储器控制电路被进一步调适成当所述所请求的数据存储于所述第二存储器电路中时,响应于原子操作请求而从所述第二存储器电路读取或加载所述所请求的数据,并且当所述所请求的数据不存储于所述第二存储器电路中时,将所述原子操作请求传送到所述第一存储器控制电路。在代表性实施例中,所述第二存储器控制电路被进一步调适成响应于写入请求或响应于原子操作请求而将数据写入或存储到所述第二存储器电路。在代表性实施例中,所述第二存储器控制电路被进一步调适成响应于指定所述第二存储器电路中的存储器地址的写入请求,设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,并且在将数据在所述存储器地址处写入或存储到所述第二存储器电路之后,重置或清除所述设置的危险位。在代表性实施例中,所述第二存储器控制电路被进一步调适成响应于具有写入数据并且指定所述第二存储器电路中的存储器地址的写入请求,将存储于所述存储器地址处的当前数据传送到所述第一存储器控制电路以将所述当前数据写入到所述第一存储器电路,并且用所述写入数据覆写所述第二存储器电路中的所述当前数据。
在代表性实施例中,所述第二存储器控制电路被进一步调适成响应于具有写入数据并且指定所述第二存储器电路中的存储器地址的写入请求,设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,将存储于所述存储器地址处的当前数据传送到所述第一存储器控制电路以将所述当前数据写入到所述第一存储器电路,用所述写入数据覆写所述第二存储器电路中的所述当前数据,并且在将所述写入数据在所述存储器地址处写入或存储到所述第二存储器电路之后,重置或清除所述设置的危险位。
在代表性实施例中,所述第二存储器控制电路被进一步调适成响应于指定所述至少一个可编程原子操作和存储器地址的原子操作请求,将所述原子操作请求传送到所述可编程原子操作电路系统并且设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位。在代表性实施例中,所述第二存储器控制电路被进一步调适成响应于指定所述至少一个预定原子操作和存储器地址的原子操作请求,将所述原子操作请求传送到所述预定原子操作电路系统,设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,将来自所述预定原子操作的所得数据写入于所述第二存储器电路中,并且在写入所述所得数据之后,重置或清除所述设置的危险位。
在代表性实施例中,所述第一存储器控制电路可包括:多个存储器库请求队列,其存储发到所述第一存储器电路的多个读取或写入请求;调度器电路,其耦合到所述多个存储器库请求队列,所述调度器被调适成从所述多个存储器库请求队列选择所述多个读取或写入请求中的一读取或写入请求并且调度所述读取或写入请求以用于存取所述第一存储器电路;和第一存储器存取控制电路,其耦合到所述调度器,所述第一存储器存取控制电路被调适成从所述第一存储器电路读取或加载数据并且将数据写入或存储到所述第一存储器电路。
在代表性实施例中,所述第一存储器控制电路可另外包括:多个存储器请求队列,其存储多个存储器请求;请求选择多路复用器,其从所述多个存储器请求队列选择存储器请求;多个存储器数据队列,其存储对应于所述多个存储器请求的数据;和数据选择多路复用器,其从所述多个存储器数据队列选择数据,所述所选择的数据对应于所述所选择的存储器请求。
在代表性实施例中,所述第二存储器控制电路可包括:网络请求队列,其存储读取请求或写入请求;原子操作请求队列,其存储原子操作请求;流入请求多路复用器,其耦合到所述网络请求队列和所述原子操作请求队列以选择来自所述网络请求队列或所述原子操作请求队列的请求;存储器危险控制电路,其具有一或多个存储器危险寄存器;和第二存储器存取控制电路,其耦合到所述存储器危险控制电路和所述流入请求多路复用器,所述第二存储器存取控制电路被调适成响应于所述所选择的请求而从所述第二存储器电路读取或加载数据并且将数据写入或存储到所述第二存储器电路,并且发信号通知所述存储器危险控制电路设置或清除存储于所述一或多个存储器危险寄存器中的危险位。在代表性实施例中,所述第二存储器控制电路可另外包括:延迟电路,其耦合到所述第二存储器存取控制电路;和流入控制多路复用器,其选择需要存取所述第一存储器电路的流入网络请求或当所述第二存储器电路的高速缓存行含有将在被来自读取请求或写入请求的数据覆写之前写入到所述第一存储器电路的数据时,选择来自所述第二存储器电路的高速缓存逐出请求。
在代表性实施例中,所述存储器控制器电路可耦合到通信网络以用于将多个写入数据请求分组、多个写入数据请求分组、多个预定原子操作请求分组、多个可编程原子操作请求分组路由到所述存储器控制器电路,并且将来自所述存储器控制器电路的多个响应数据分组路由到请求源地址。
在代表性实施例中,所述可编程原子操作电路系统可包括:处理器电路,其通过无开关直接通信总线耦合到所述第一存储器控制电路。
在代表性实施例中,所述第一存储器控制电路、所述第二存储器电路、所述第二存储器控制电路、所述预定原子操作电路系统和所述可编程原子操作电路系统可实现为单个集成电路或单个芯片上系统(SOC)。
在代表性实施例中,所述第一存储器控制电路、所述第二存储器电路、所述第二存储器控制电路和所述预定原子操作电路系统可实现为第一集成电路,且所述可编程原子操作电路系统可实现为通过无开关直接通信总线耦合到所述第一集成电路的第二集成电路。
在代表性实施例中,所述可编程原子操作电路系统被调适成产生读取请求并且产生发到所述第二存储器电路的写入请求。在代表性实施例中,所述可编程原子操作电路系统被调适成执行算术操作、逻辑操作和控制流决策。
在代表性实施例中,所述第一存储器电路包括动态随机存取存储器(DRAM)电路系统,且所述第二存储器电路包括静态随机存取存储器(SRAM)电路系统。
还公开使用存储器控制器电路执行可编程原子操作的代表性方法,其中所述存储器控制器电路可耦合到第一存储器电路,其中所述方法包括:使用可耦合到所述第一存储器电路的第一存储器控制电路,响应于读取请求而从所述第一存储器电路读取或加载所请求的数据并且响应于写入请求而将所请求的数据写入或存储到所述第一存储器电路;使用耦合到第二存储器电路的第二存储器控制电路,当所述所请求的数据存储于所述第二存储器电路中时,响应于读取的读取请求而从所述第二存储器电路读取或加载所述所请求的数据,并且当所述所请求的数据不存储于所述第二存储器电路中时,将所述读取请求传送到所述第一存储器控制电路;使用预定原子操作电路系统,响应于指定多个预定原子操作中的至少一个预定原子操作的原子操作请求而执行所述至少一个预定原子操作;和使用可编程原子操作电路系统,响应于指定多个可编程原子操作中的至少一个可编程原子操作的原子操作请求而执行所述至少一个可编程原子操作。
还公开使用存储器控制器电路执行可编程原子操作的另一代表性方法,谴责所述存储器控制器电路可耦合到第一存储器电路,其中所述方法包括:使用可耦合到所述第一存储器电路的第一存储器控制电路,响应于读取请求而从所述第一存储器电路读取或加载所请求的数据并且响应于写入请求而将所请求的数据写入或存储到所述第一存储器电路;使用耦合到第二存储器电路的第二存储器控制电路,当所述所请求的数据存储于所述第二存储器电路中时,响应于读取的读取请求而从所述第二存储器电路读取或加载所述所请求的数据,并且当所述所请求的数据不存储于所述第二存储器电路中时,将所述读取请求传送到所述第一存储器控制电路,并且响应于指定所述至少一个可编程原子操作和存储器地址的原子操作请求,将所述原子操作请求传送到所述可编程原子操作电路系统并且设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位;使用预定原子操作电路系统,响应于指定多个预定原子操作中的至少一个预定原子操作的原子操作请求而执行所述至少一个预定原子操作;和使用所述可编程原子操作电路系统,响应于指定多个可编程原子操作中的至少一个可编程原子操作的原子操作请求而执行所述至少一个可编程原子操作。
在代表性实施例中,所述可编程原子操作电路系统包括耦合到数据缓冲器的处理器核心,其中所述方法另外包括:使用所述处理器核心,执行加载非缓冲指令以确定操作数是否存储于所述数据缓冲器中,并且当所述数据不存储于所述数据缓冲器中时,产生发到所述第二存储器控制电路的读取请求。
在代表性实施例中,所述可编程原子操作电路系统包括处理器核心,且其中所述方法可另外包括:使用所述处理器核心,执行存储并清除锁定指令以产生发到所述第二存储器控制电路的原子写入请求,所述原子写入请求具有所述所得数据和用以在将所述所得数据写入到所述第二存储器电路之后重置或清除存储器危险位的指定。在代表性实施例中,所述可编程原子操作电路系统包括处理器核心,其中所述方法可另外包括:使用所述处理器核心,执行原子返回指令以在将所述所得数据写入到所述第二存储器电路之后重置或清除存储器危险位。在代表性实施例中,所述可编程原子操作电路系统包括处理器核心,且其中所述方法可另外包括:使用所述处理器核心,执行原子返回指令以产生具有所述所得数据的响应数据分组。也是在代表性实施例中,所述可编程原子操作电路系统包括处理器核心,且其中所述方法可另外包括:使用所述处理器核心,执行原子返回指令以完成原子操作。
在代表性实施例中,指定所述至少一个可编程原子操作的所述原子操作请求包括物理存储器地址、预定原子操作识别符和至少一个线程状态寄存器值。在这类代表性实施例中,所述可编程原子操作电路系统另外包括存储线程状态信息的至少一个寄存器,且其中所述方法另外包括:使用所述可编程原子操作电路系统,响应于接收到指定所述至少一个可编程原子操作的所述原子操作请求,用所述物理存储器地址、对应于所述存储器地址的任何数据以及所述至少一个线程状态寄存器值来初始化所述至少一个寄存器。
在代表性实施例中,所述方法可另外包括:使用所述第二存储器控制电路,当所述所请求的数据存储于所述第二存储器电路中时,响应于原子操作请求而从所述第二存储器电路读取或加载所述所请求的数据,并且当所述所请求的数据不存储于所述第二存储器电路中时,将所述原子操作请求传送到所述第一存储器控制电路。在代表性实施例中,所述方法可另外包括:使用所述第二存储器控制电路,响应于指定所述第二存储器电路中的存储器地址的写入请求,设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,并且在将数据在所述存储器地址处写入或存储到所述第二存储器电路之后,重置或清除所述设置的危险位。
在代表性实施例中,所述方法可另外包括:使用所述第二存储器控制电路,响应于具有写入数据并且指定所述第二存储器电路中的存储器地址的写入请求,将存储于所述存储器地址处的当前数据传送到所述第一存储器控制电路以将所述当前数据写入到所述第一存储器电路,并且用所述写入数据覆写所述第二存储器电路中的所述当前数据。在代表性实施例中,所述方法可另外包括:使用所述第二存储器控制电路,响应于具有写入数据并且指定所述第二存储器电路中的存储器地址的写入请求,设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,将存储于所述存储器地址处的当前数据传送到所述第一存储器控制电路以将所述当前数据写入到所述第一存储器电路,用所述写入数据覆写所述第二存储器电路中的所述当前数据,并且在将所述写入数据在所述存储器地址处写入或存储到所述第二存储器电路之后,重置或清除所述设置的危险位。
在代表性实施例中,所述方法可另外包括:使用所述第二存储器控制电路,响应于指定所述至少一个可编程原子操作和存储器地址的原子操作请求,将所述原子操作请求传送到所述可编程原子操作电路系统并且设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位。
公开另一存储器控制器,所述存储器控制器可耦合到第一存储器电路,其中所述存储器控制器包括:第一存储器控制电路,其可耦合到所述第一存储器电路,所述第一存储器控制电路包括:多个存储器库请求队列,其存储发到所述第一存储器电路的多个读取或写入请求;调度器电路,其耦合到所述多个存储器库请求队列,所述调度器被调适成从所述多个存储器库请求队列选择所述多个读取或写入请求中的一读取或写入请求并且调度所述读取或写入请求以用于存取所述第一存储器电路;和第一存储器存取控制电路,其耦合到所述调度器,所述第一存储器存取控制电路被调适成从所述第一存储器电路读取或加载数据并且将数据写入或存储到所述第一存储器电路;第二存储器电路;预定原子操作电路系统,其被调适成执行多个预定原子操作中的至少一个预定原子操作;和可编程原子操作电路系统,其被调适成执行多个可编程原子操作中的至少一个可编程原子操作;和第二存储器控制电路,其耦合到所述第二存储器电路,所述第二存储器控制电路包括:至少一个输入请求队列,其存储读取或写入请求;存储器危险控制电路,其具有存储器危险寄存器;和第二存储器存取控制电路,其被调适成从所述第二存储器电路读取或加载数据并且将数据写入或存储到所述第二存储器电路,所述第二存储器存取控制电路被进一步调适成响应于指定所述至少一个预定原子操作和存储器地址的原子操作请求,将所述原子操作请求传送到所述预定原子操作电路系统并且设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位。
公开另一存储器控制器,所述存储器控制器可耦合到第一存储器电路,其中所述存储器控制器包括:第一存储器控制电路,其可耦合到所述第一存储器电路,所述第一存储器控制电路包括:多个存储器库请求队列,其存储发到所述第一存储器电路的多个读取或写入请求;调度器电路,其耦合到所述多个存储器库请求队列,所述调度器被调适成从所述多个存储器库请求队列选择所述多个读取或写入请求中的一读取或写入请求并且调度所述读取或写入请求以用于存取所述第一存储器电路;和第一存储器存取控制电路,其耦合到所述调度器,所述第一存储器存取控制电路被调适成从所述第一存储器电路读取或加载数据并且将数据写入或存储到所述第一存储器电路;第二存储器电路;预定原子操作电路系统,其被调适成执行多个预定原子操作中的至少一个预定原子操作;和可编程原子操作电路系统,其被调适成执行多个可编程原子操作中的至少一个可编程原子操作;和第二存储器控制电路,其耦合到所述第二存储器电路,所述第二存储器控制电路包括:至少一个输入请求队列,其存储读取或写入请求;存储器危险控制电路,其具有存储器危险寄存器;和第二存储器存取控制电路,其被调适成从所述第二存储器电路读取或加载数据并且将数据写入或存储到所述第二存储器电路,所述第二存储器存取控制电路被进一步调适成响应于指定所述至少一个预定原子操作和存储器地址的原子操作请求,将所述原子操作请求传送到所述预定原子操作电路系统并且设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,将来自所述预定原子操作的所得数据写入于所述第二存储器电路中,并且在写入所述所得数据之后,重置或清除所述设置的危险位。
根据本发明的以下详细描述和其实施例、权利要求书以及附图,本发明的大量其它优点和特征将变的显而易见。
附图说明
当结合附图考虑参考以下公开内容时,将更容易理解本发明的目标、特征和优点,附图中相似的参考标号用于在各图中表示相同的组件,并且附图中带有字母符号的参考标号用于在各图中表示选定组件实施例的额外类型、示例或变化,在附图中:
图1是代表性第一计算系统实施例的框图。
图2是代表性第二计算系统实施例的框图。
图3是代表性第一和第二存储器控制器电路的高级框图电路
图4是代表性第一存储器控制器电路实施例的框图。
图5是代表性第二存储器控制器电路实施例的框图。
图6A、6B和6C(统称为图6)分别是代表性第二存储器控制电路实施例、代表性第一存储器控制电路实施例和代表性原子与合并操作电路的框图。
图7A、7B和7C(统称为图7)是接收和解码请求并且执行读取或加载请求的代表性方法的流程图,其中图7A和7B示出接收和解码请求并且执行来自第一存储器电路的读取或加载请求的代表性方法,且图7C示出执行来自第二存储器电路的读取或加载请求的代表性方法。
图8A、8B、8C和8D(统称为图8)是示出作为原子操作请求的部分执行原子操作的代表性方法的流程图。
图9是示出作为读取(或加载)请求的部分或作为写入(或存储)请求的部分执行从第二存储器电路的数据逐出的代表性方法的流程图。
图10是执行写入或存储请求的代表性方法的流程图。
图11是代表性可编程原子操作电路系统实施例的框图。
具体实施方式
虽然本发明容许许多不同形式的实施例,但在理解本公开将被视为本发明的原理的范例且并不希望将本发明限制于所示出的具体实施例的情况下,在图式中示出且将在本文中详细地描述本发明的具体示范性实施例。在这方面,在详细解释根据本发明的至少一个实施例之前,应理解,本发明不限于应用于上文和下文阐述、图式中示出或者实例中描述的构造细节以及组件布置。根据本发明的方法和设备能够有其它实施例并且能够以各种方式实践和执行。并且,应理解,本文中采用的措词和术语以及所包含的摘要,是出于描述的目的并且不应当被看作是限制性的。
图1是代表性第一计算系统50实施例的框图。图2是代表性第二计算系统50A实施例的框图。图3是代表性第一和第二存储器控制器电路的高级框图。图4是代表性第一存储器控制器电路100实施例的框图。图5是代表性第二存储器控制器电路100A实施例的框图。图6说明为图6A、6B和6C,分别是代表性第二存储器控制电路实施例、代表性第一存储器控制电路实施例和代表性原子与合并操作电路的框图。
图1和2示出不同的第一计算系统50和第二计算系统50A实施例,其包含形成相对较大和较小系统50、50A的额外组件,其中的任何一个和全部均在本公开的范围内。如图1和2中所示,其各自可为以如所说明的各种组合适用于芯片上系统(“SOC”)的布置,例如但不限于计算系统50、50A,其可包含一或多个处理器110、通信网络150、任选地一或多个混合线程处理器(“HTP”)115、任选地一或多个可配置处理电路105、各种一或多个任选通信接口130、第一计算系统50中的第一存储器控制器电路100或第二计算系统50A中的第二存储器控制器电路100A,以及在第一计算系统50和第二计算系统50A两者中,分别耦合到第一存储器控制器电路100或第二存储器控制器电路100A的第一存储器电路125。
参考图3,第一存储器控制器电路100与第二存储器控制器电路100A不同之处在于,第一存储器控制器电路100另外包含作为集成式装置的可编程原子操作电路系统135,即,第一存储器控制器电路100包括第二存储器控制器电路100A的所有功能性和电路系统,并且另外包括可编程原子操作电路系统135。处理器110、110A包括可编程原子操作电路系统135和其它的额外电路系统,例如但不限于网络通信接口电路系统170或其它或额外通信和处理电路系统。可编程原子操作电路系统135用于可编程原子操作的执行。在第一存储器控制器电路100中,那些可编程原子操作在第一存储器控制器电路100的可编程原子操作电路系统135内执行。在第二存储器控制器电路100A中,那些可编程原子操作结合单独处理器110A的可编程原子操作电路系统135执行。
在第二计算系统50A中,第二存储器控制器电路100A例如但不限于作为单独集成电路或作为单独小芯片,例如通过单独总线结构60直接耦合到处理器110A。如下文更详细地论述,这类处理器110A可实施为与处理器110相同,或可实施为不同或较简单的处理器,其被设计成主要或仅实施可编程原子操作。处理器110A单独地说明仅是为了说明第二存储器控制器电路100A具有进出处理器110A的直接而非交换或路由的通信路径。举例来说,处理器110可用以实施处理器110A,其中处理器110A另外设置有到第二存储器控制器电路100A的直接通信路径(例如,总线60)。如先前所指示,第一存储器控制器电路100与第二存储器控制器电路100A的不同之处仅在于第一存储器控制器电路100作为例如单个集成电路内的集成式装置或作为SOC的部分包含可编程原子操作电路系统135的额外电路系统和功能性,而第二存储器控制器电路100A直接与是单独处理器110A的部分的可编程原子操作电路系统135通信,如图3中所说明。换句话说,在这类集成式装置中,第一存储器控制器电路100包括第二存储器控制器电路100A的所有相同电路系统和功能性并且另外包括额外可编程原子操作电路系统135。因此,除非描述或情境以其它方式指示,否则在本文中共同描述第一存储器控制器电路100和第二存储器控制器电路100A,其中任何和所有描述和具体说明适用于第一存储器控制器电路100和第二存储器控制器电路100A两者。
处理器110、110A通常是多核心处理器,其可嵌入于第一计算系统50或第二计算系统50A内,或可为经由例如基于PCIe的接口的通信接口130耦合到第一计算系统50或第二计算系统50A中的外部处理器。如下文更详细描述,这类处理器可实施为电子技术中已知的或变成已知的。例如基于PCIe的接口的通信接口130可实施为电子领域中已知的或变成已知的,并且提供来往于系统50、50A和另一外部装置的通信。
第一存储器控制器电路100的或处理器110、110A的可编程原子操作电路系统135可为多线程处理器,其例如具有一或多个处理器核心605,并且另外具有用于执行可编程原子操作的扩展式指令集的基于RISC-V ISA,如下文参考图11更详细地论述。当设置有用于执行可编程原子操作的扩展式指令集时,代表性可编程原子操作电路系统135和/或处理器110、110A可实现为例如但不限于第16/176,434号美国专利申请案中描述的一或多个混合线程处理器115(其全部内容由此以全文引用的方式并入本文中,具有相同的完整效力和作用,就如同在本文中完整阐述一般)。一般来说,第一存储器控制器电路100的或处理器110、110A的可编程原子操作电路系统135提供圆筒样式的轮询瞬时线程切换以维持高的每时钟速率指令。
通信网络150还可实施为电子领域中已知的或变成已知的。举例来说,在代表性实施例中,通信网络150是基于分组的通信网络,其提供处理器110、110A、第一存储器控制器电路100或第二存储器控制器电路100A、任选地一或多个混合线程处理器115、任选地一或多个可配置处理电路105和各种一或多个任选通信接口130之间和当中的数据分组路由。在这类基于分组的通信系统中,每一分组通常包含目的地和来源寻址,以及任何数据有效负载和/或指令。举例来说,出于本公开的目的,第一存储器控制器电路100或第二存储器控制器电路100A可接收具有源地址、读取(或加载)请求以及第一存储器电路125中的物理地址的分组。作为响应,且如下文更详细地描述,第一存储器控制器电路100或第二存储器控制器电路100A将读取来自指定地址(其可处于第一存储器电路125中或第二存储器电路175中,如下文所论述)的数据,并且将响应分组汇编到含有所请求的数据的源地址。类似地,第一存储器控制器电路100或第二存储器控制器电路100A可接收具有源地址、写入(或存储)请求以及第一存储器电路125中的物理地址的分组。作为响应,且如下文更详细地描述,第一存储器控制器电路100或第二存储器控制器电路100A将数据写入到指定地址(其可处于第一存储器电路125或第二存储器电路175中,如下文所论述),并且将响应分组汇编到含有对数据存储到存储器的应答的源地址(其可处于第一存储器电路125中或第二存储器电路175中,如下文所论述)。
作为实例但不限于,通信网络150可取决于系统50、50A实施例而实现为具有折叠式克劳斯(folded clos)配置的多个交叉开关,和/或实现额外连接的网状网络。并且例如但不限于,通信网络150可为异步交换结构的部分,这意指可沿着各种路径中的任一个路由数据分组,使得取决于路由,寻址的目的地处的任何所选数据分组的到达可在多个不同时间中的任一个处发生。并且例如但不限于,通信网络150可实施为同步通信网络,例如同步网状通信网络。任何和所有这类通信网络150被视为等效的且在本公开的范围内。通信网络150的代表性实施例还描述于第16/176,434号美国专利申请案。
任选的一或多个混合线程处理器115和一或多个可配置处理电路105在例如第16/176,434号美国专利申请案的各种相关应用中更详细地论述,并且说明为提供可包含于计算系统50、50A内的各种组件的实例。
参考图4,第一存储器控制器电路100耦合到第一存储器电路125,例如用于进出第一存储器电路125的写入(存储)操作和读取(加载)操作。第一存储器控制器电路100包括第一存储器控制电路155、第二存储器控制电路160、原子与合并操作电路165、第二存储器电路175和网络通信接口170。网络通信接口170例如经由总线或其它通常包含地址(路由)线和数据有效负载线(不单独地说明)的通信结构163耦合到通信网络150。第一存储器控制器电路155例如经由总线或其它通信结构157直接耦合到第一存储器125,以提供进出第一存储器电路125的写入(存储)操作和读取(加载)操作。第一存储器控制电路155还经耦合以用于输出到原子与合并操作电路165并且用于输入到第二存储器控制电路160。第二存储器控制电路160例如经由总线或其它通信结构159直接耦合到第二存储器电路175,例如经由总线或其它通信结构161耦合到网络通信接口170以用于输入(例如传入的读取或写入请求),并且经耦合以用于输出到第一存储器控制电路155。应注意,第二存储器电路175通常是具有第一存储器控制器电路100或第二存储器控制器电路100A的相同集成电路的部分。原子与合并操作电路165被耦合成接收(作为输入)第一存储器控制电路155的输出,并且提供输出到第二存储器电路175、网络通信接口170和/或直接输出到通信网络150。
参考图5,第二存储器控制器电路100A耦合到第一存储器电路125,例如用于进出第一存储器电路125的写入(存储)操作和读取(加载)操作,并且耦合到处理器110A。第二存储器控制器电路100A包括第一存储器控制电路155、第二存储器控制电路160、原子与合并操作电路165A、第二存储器电路175和网络通信接口170。网络通信接口170例如经由总线或其它通常包含地址(路由)线和数据有效负载线(不单独地说明)的通信结构163耦合到通信网络150。第一存储器控制电路155例如经由总线或其它通信结构157直接耦合到第一存储器125,以提供进出第一存储器电路125的写入(存储)操作和读取(加载)操作。第一存储器控制电路155还经耦合以用于输出到原子与合并操作电路165A并且用于输入到第二存储器控制电路160。第二存储器控制电路160例如经由总线或其它通信结构159直接耦合到第二存储器电路175,例如经由总线或其它通信结构161耦合到网络通信接口170以用于输入(例如传入的读取或写入请求),并且经耦合以用于输出到第一存储器控制电路155。原子与合并操作电路165A被耦合成接收(作为输入)第一存储器控制电路155的输出并且提供输出到第二存储器电路175、网络通信接口170和/或直接输出到通信网络150。
如上文所提及,参考图4和5,第一存储器控制器电路100与第二存储器控制器电路100A的不同之处在于,第一存储器控制器电路100包含可编程原子操作电路系统135(在原子与合并操作电路165中),通过总线或通信线路60A耦合到第一存储器控制电路155,且第二存储器控制器电路100A耦合到单独处理器110A中的可编程原子操作电路系统135,通过总线或通信线路60耦合到第一存储器控制电路155。因此,在第一存储器控制器电路100中,原子与合并操作电路165包括存储器危险清除(重置)电路190、写入合并电路180、预定原子操作电路系统185,和可编程原子操作电路系统135,且在第二存储器控制器电路100A中,原子与合并操作电路165A包括存储器危险清除(重置)电路190、写入合并电路180和预定原子操作电路系统185。存储器危险清除(重置)电路190、写入合并电路180和预定原子操作电路系统185可各自实施为具有其它组合逻辑电路系统(例如加法器(和减法器)、移位器、比较器、AND门、OR门、XOR门等)或其它逻辑电路的状态机,并且还可包含用于存储例如操作数或其它数据的一或多个寄存器或缓冲器。如上文所提及且如下文更详细地论述,可编程原子操作电路系统135可实施为一或多个处理器核心和控制电路系统,以及具有其它组合逻辑电路系统(例如加法器、移位器等)或其它逻辑电路的各种状态机,并且还可包含一或多个寄存器、缓冲器,和/或用于存储例如地址、可执行指令、操作数和其它数据的存储器,或可实施为处理器110,或更一般的处理器(如下文所描述)。应注意,存储器危险清除(重置)电路190不需要为原子与合并操作电路165、165A中的单独电路,而是替代地可为存储器危险控制电路230的部分。
网络通信接口170包含网络输入队列205,以从通信网络150接收数据分组(包含读取和写入请求分组);网络输出队列210,以将数据分组(包含读取和写入响应分组)传送到通信网络150;数据分组解码器电路215,以解码来自通信网络150的传入数据分组,呈现数据(在指定字段中,例如请求类型、源地址和有效负载数据)并且将分组中提供的数据传送到第二存储器控制电路160;和数据分组编码器电路220,以编码传出的数据分组(例如对发到第一存储器电路125的请求的响应),以供在通信网络150上发射。数据分组解码器电路215和数据分组编码器电路220可各自实施为状态机或其它逻辑电路。
第一存储器电路125和第二存储器电路175可以是任何类型或类别的存储器电路,如下文更详细地论述,例如但不限于RAM、FLASH、DRAM、SDRAM、SRAM、MRAM、FeRAM、ROM、EPROM或E2PROM,或任何其它形式的存储器装置。在代表性实施例中,第一存储器电路125是DRAM,通常是外部DRAM存储器装置,且第二存储器电路175是SRAM数据高速缓存器。举例来说,第一存储器电路125可为其自身的封装中的单独集成电路,或可例如通过共享共同中介层包含在与第一存储器控制器电路100和第二存储器控制器电路100A的封装中的单独集成电路。另外,可任选地包含多个第一存储器电路125。例如但不限于,第一存储器电路125可为目前可从美国爱达荷州博伊西8000S.Federal Way 83716(8000S.Federal Way,Boise,Idaho,83716,US.)的美光科技公司(Micron Technology,Inc.)获得的美光GDDR6存储器IC或美光NGM存储器IC(美光的下一代DRAM装置)。这类GDDR6装置是具有16Gb密度以及每装置峰值64GB/s的JEDEC标准。
第二存储器电路175(例如,SRAM高速缓存器)是存储器侧高速缓存器并且通过物理地址存取。在代表性实施例中,第二存储器电路175可为1MB大小,具有256B行大小。256B行大小经选择以使归因于ECC支持引起的可达到带宽的减小降到最低。基于应用模拟的较大线大小是可能的。具有256B的存储器行大小具有与较小行大小相比减少能量的益处,前提是假设最终使用大部分所存取的第二存储器电路175。在代表性实施例中,来自通信网络150的请求将存取具有大小设定为从单个字节直到64字节的存取的第二存储器电路175。第二存储器电路175的标记(例如,SRAM高速缓存器)应能够处置部分行读取和写入。
第二存储器电路175(作为高速缓存器)有利于对相同存储器行的反复性原子操作。应用程序将使用屏障同步操作确定过程的所有线程何时结束处理应用程序的区段。存储器内原子计数操作者用于确定所有线程何时进入屏障。原子计数操作与应用程序的所述区段中存在的线程一样多。对高速缓存器内的数据执行原子操作可允许这些屏障计数操作以每操作仅数个时钟的方式完成。
第二存储器电路175的第二高效益使用是高速缓存来自可配置处理电路105的存取。在代表性实施例中,可配置处理电路105不具有高速缓存器,而是流式传输进出内部存储器的数据。第二存储器电路175允许有效地处置对相同高速缓存行的存取。
在高层级,且如下文(关于图6中所说明的代表性实施例)更详细地论述,参考图1-5,第一存储器控制器电路100和第二存储器控制器电路100A可接收来自计算系统50、50A内的数据读取(数据加载)请求,所述请求具有物理存储器地址,并且在网络通信接口170的数据分组解码器电路215中解码,并传送到第二存储器控制电路160。第二存储器控制电路160将确定对应于物理存储器地址的所请求的数据是否处于第二存储器电路175内,如果是,则将所请求的数据(与具有请求者(来源)地址的对应请求一起)提供到第一存储器控制电路155并且最终提供到数据分组编码器电路220上以编码传出的数据分组从而供在通信网络150上发射。当对应于物理存储器地址的所请求的数据不在第二存储器电路175内时,第二存储器控制电路160将所述请求(和/或物理存储器地址)提供到第一存储器控制电路155,所述第一存储器控制电路155将从第一存储器电路125存取和获得所请求的数据。除了将所请求的数据提供到数据分组编码器电路220以编码传出的数据分组从而供在通信网络150发射之外,第一存储器控制电路155还提供数据到写入合并电路180,所述写入合并电路180还将数据写入到第二存储器电路175。
所请求的数据到共享高速缓存(例如到第二存储器电路175)的此额外写入提供显著时延减小,并且是代表性实施例的重要的新型特征。举例来说,与其它所存储的数据相比可能更频繁地需要此所请求数据,因此本地存储此所请求数据会减小原本从第一存储器电路125提取数据所需的时延(即,涉及的时间段)。
本质上,使用第二存储器电路175作为本地高速缓存器为反复存取的存储器方位(在第一存储器电路125中)提供减小的时延。另外,第二存储器电路175提供用于子存储器行存取,即,对不要求第一存储器电路125的整个存储器行的第一存储器电路125的存取的读取缓冲器。第二存储器电路175的此使用还尤其有利于系统50、50A中的具有小数据高速缓存器或不具有数据高速缓存器的计算元件。
第一存储器控制器电路100和/或第二存储器控制器电路100A负责最优地控制第一存储器电路125(例如,GDDR6 RAM)以在高速缓存未命中后即刻为第二存储器电路175(作为高速缓存器)加载所请求的数据,并且当高速缓存行传送出第二存储器电路175,即,被逐出以腾出空间来用于其它传入数据时,第一存储器电路125存储来自第二存储器电路175的数据。GDDR6装置作为(例如但不限于)第一存储器电路125的代表性实施例,具有两个非相依通道,每一通道在16GT/s下16位宽运行。单个GDDR6装置可支持64GB/s的峰值带宽。GDDR6装置具有16的通道突发长度,从而产生32B数据突发。需要来自每一敞开行的四个突发脉冲(即,128字节)来达成全存储器带宽。当位中的一些用于错误校正译码(“ECC”)时可减小带宽。
作为此操作的部分,第二存储器控制电路160将通过设置危险位(在硬件中),在第二存储器电路175中预留高速缓存行,使得另一过程无法读取、覆写或修改高速缓存行。如下文更详细地论述,此过程也可移除或“逐出”目前占据预留高速缓存行的数据,接着将所述预留高速缓存行提供给第一存储器控制电路155以写入(存储)将被替换或从第二存储器电路175“逐出”并且存储于第一存储器电路125中或存储到第一存储器电路125的此数据。在所请求的数据到第二存储器电路175的额外写入之后,存储器危险清除(重置)电路190清除(重置)设置的任何对应的危险位。
类似地,第一存储器控制器电路100和第二存储器控制器电路100A可接收来自计算系统50、50A内的数据写入(数据存储)请求,所述请求具有物理存储器地址,并且在网络通信接口170的数据分组解码器电路215中解码,并传送到第二存储器控制电路160。第二存储器控制电路160将在本地写入(存储)于第二存储器电路175中。作为此操作的部分,第二存储器控制电路160可通过设置危险位(在硬件中),在第二存储器电路175中预留高速缓存行,使得当正处于转变中时,另一过程无法读取高速缓存行。如下文更详细地论述,此过程也可移除或“逐出”目前占据预留高速缓存行的数据,所述数据还写入(存储)到第一存储器电路125。在所请求的数据到第二存储器电路175的写入/存储之后,存储器危险清除(重置)电路190将清除(重置)设置的任何对应的危险位。
预定类型的原子操作也可由原子与合并操作电路165的预定原子操作电路系统185执行,涉及对所请求的数据的预定或“标准”原子操作的请求,例如相对较简单的单个循环的整数原子,例如提取并递增(fetch-and-increment)或比较并交换(compare-and-swap),这将在与不涉及原子操作的常规存储器读取或写入操作相同的处理量下发生,例如递增一个原子操作。对于这些操作,如下文更详细地论述,第二存储器控制电路160将通过设置危险位(在硬件中),在第二存储器电路175中预留高速缓存行,使得当正处于转变中时,另一过程无法读取高速缓存行。从第一存储器电路125或第二存储器电路175获得数据,并且将所述数据提供给预定原子操作电路系统185以执行所请求的原子操作。在原子操作之后,除了将所得数据提供到数据分组编码器电路220以编码传出的数据分组供在通信网络150发射之外,预定原子操作电路系统185将所得数据提供到写入合并电路180,所述写入合并电路180还将所得数据写入到第二存储器电路175。在所得数据到第二存储器电路175的写入/存储之后,存储器危险清除(重置)电路190将清除(重置)设置的任何对应的危险位。
定制或可编程原子操作可由可编程原子操作电路系统135(其可为第一存储器控制器电路100或处理器110A的部分)执行,涉及对所请求的数据上的可编程原子操作的请求。任何用户可准备任何这类编程代码以提供这类定制或可编程原子操作,受到下文描述的各种约束。举例来说,可编程原子操作可为相对较简单的多循环操作,例如浮点加法,或相对较复杂的多指令操作,例如布隆过滤器(bloom filter)插件。可编程原子操作可与预定原子操作相同或不同,这是因为它们是由用户而非系统供应商定义。对于这些操作,还如下文更详细地论述,第二存储器控制电路160将通过设置危险位(在硬件中),在第二存储器电路175中预留高速缓存行,使得当正处于转变中时,另一过程无法读取高速缓存行。从第一存储器电路125或第二存储器电路175获得数据,并且提供给可编程原子操作电路系统135(例如,在第一存储器控制器电路100内或在通到处理器110A的专用通信链路60上)以执行所请求的可编程原子操作。在原子操作之后,可编程原子操作电路系统135将所得数据提供到网络通信接口170(第一存储器控制器电路100内或处理器110A内)以直接编码具有所得数据的传出数据分组以供在通信网络150上发射。另外,可编程原子操作电路系统135将所得数据提供到第二存储器控制电路160,所述第二存储器控制电路160还将所得数据写入到第二存储器电路175。在所得数据到第二存储器电路175的写入/存储之后,第二存储器控制电路160将清除(重置)设置的任何对应的危险位。
所采取的用于可编程(即,“定制”)原子操作的方法是提供可从例如处理器110或其它系统50、50A组件的起始源通过通信网络150发送到第一存储器控制器电路100和/或第二存储器控制器电路100A的多个通用定制原子请求类型。如下文更详细地论述,第一存储器控制器电路100和第二存储器控制器电路100A将所述请求识别为定制原子并且将所述请求转发到第一存储器控制器电路100内或处理器110A内的可编程原子操作电路系统135。在代表性实施例中,可编程原子操作电路系统135:(1)是能够有效地执行用户定义的原子操作的可编程处理元件;(2)可执行到存储器的加载和存储、算术和逻辑操作以及控制流决策;和(3)利用具有新的专门化指令集的RISC-V ISA以有利于与第一存储器控制器电路100和/或第二存储器控制器电路100A或其组件相互作用,从而以原子方式执行用户定义的操作。应注意,RISC-V ISA含有支持高级语言操作者和数据类型的全集指令。可编程原子操作电路系统135可利用RISC-V ISA,但通常支持更有限的指令集和有限寄存器组大小以减小当包含于第一存储器控制器电路100内时的单元的裸片大小。
参考图6,第二存储器控制电路160包括第二存储器存取控制电路225;存储器危险控制电路230,其具有存储器危险寄存器260;网络请求队列250;原子操作返回队列255;流入请求多路复用器245;任选延迟电路235;和流入控制多路复用器240。第二存储器存取控制电路225耦合到第二存储器电路175(例如,SRAM)并且包括状态机和逻辑电路以通过对应寻址来读取和写入到第二存储器电路175,将信令提供到存储器危险控制电路230以设置或清除各种存储器危险位,并且当第二存储器电路175的高速缓存行含有将被其它数据覆写以及将写入到第一存储器电路125的数据时产生高速缓存器“逐出”请求。
存储器危险控制电路230包括存储器危险寄存器260以及任选地状态机和逻辑电路以设置或清除存储于存储器危险寄存器260中的各种存储器危险位,进而提供基于硬件的高速缓存一致性。高速缓存器“未命中”,即,对不存储于第二存储器电路175中的数据的传入请求,需要接取第一存储器电路125以将所要数据引入到第二存储器电路175(作为本地高速缓存器)中。在此第一存储器电路125存取时间期间,存储器行不可用于其它请求。存储器危险控制电路230将危险位表维持于存储器危险寄存器260中以指示第二存储器电路175的哪些高速缓存行不可用于存取。存储器危险控制电路230(或等效地,存储器危险清除(重置)电路190)保持尝试存取这类具有设置的危险位的高速缓存行的流入请求,直到清除危险为止。一旦危险清除,则通过流入请求多路复用器245重新发送所述请求用于处理。第二存储器电路175的高速缓存行的标记地址散列到危险位索引。危险位的数目通常经选择以将危险冲突概率设置到足够低的水平。
网络请求队列250为来自通信网络150的流入请求(例如,加载、存储)提供队列。原子操作返回队列255为来自可编程原子操作的所得数据提供队列。流入请求多路复用器245在流入存储器请求源之间进行选择和优化,所述流入存储器请求源具有按优先权次序来自存储器危险清除(重置)电路190的请求、来自原子操作返回队列255的请求和来自网络请求队列250的请求,并且将这些请求提供到第二存储器存取控制电路225。任选延迟电路235是模拟来自第二存储器电路175的读取操作的延迟的管线级。流入控制多路复用器240从如下请求中进行选择:需要存取第一存储器电路125(即,当在第二存储器电路175中未找到所请求的数据时,高速缓存器“未命中”)的流入网络请求,以及当第二存储器电路175的高速缓存行含有将在被其它传入数据(来自读取或写入请求)覆写之前写入到第一存储器电路125的数据时,来自第二存储器电路175的高速缓存器“逐出”请求。
第一存储器控制电路155包括调度器电路270;一或多个第一存储器库队列265;第一存储器存取控制电路275;用于输出数据和请求数据的一或多个队列,即,第二存储器“命中”请求队列280、第二存储器“未命中”请求队列285、第二存储器“未命中”数据队列290和第二存储器“命中”数据队列295;请求选择多路复用器305和数据选择多路复用器310。
提供第一存储器库(请求)队列265以使得第一存储器电路125的每一单独管理的库具有专用库请求队列265以保持(hold)请求直到所述请求可在第一存储器电路125的相关联库上被调度。调度器电路270跨库队列265进行选择以选择对第一存储器电路125的可用库的请求,并且将所述请求提供到第一存储器存取控制电路275。第一存储器存取控制电路275耦合到第一存储器电路125(例如,DRAM)并且包括状态机和逻辑电路以通过使用第一存储器电路125的物理地址进行对应寻址(例如行寻址和列寻址)来读取(加载)和写入(存储)到第一存储器电路125。
第二存储器“命中”数据队列295保持直接从第二存储器电路175(在通信线路234上)提供的读取数据,即,保持于第二存储器电路175中以及从第二存储器电路175读取的数据,直到选择所请求的数据以供提供于响应消息中为止。第二存储器“未命中”数据队列290保持从第一存储器电路125提供的读取数据,即,保持于第一存储器电路125中以及从第一存储器电路125读取且不处于第二存储器电路175中的数据,也直到选择所请求的数据以供提供于响应消息中为止。当所请求的数据可用于第二存储器电路175中时,第二存储器“命中”请求队列280保持请求分组信息(例如,用以为响应分组提供寻址的源请求者的识别符或地址),直到选择所述请求用于准备响应消息为止。当所请求的数据可用于第一存储器电路125中(且不处于第二存储器电路175中)时,第二存储器“未命中”请求队列285保持请求分组信息(例如,用以为响应分组提供寻址的源请求者的识别符或地址),直到选择所述请求用于准备响应消息为止。
数据选择多路复用器310在第一存储器电路125读取数据(保持于第二存储器“未命中”数据队列290中)和第二存储器电路175读取数据(保持于第二存储器“命中”数据队列295中)之间进行选择。如上文所提及,所选择的数据还写入到第二存储器电路175。接着使用请求选择多路复用器305选择对应的请求数据,对应地在保持于第二存储器“未命中”请求队列285中的响应数据与保持于第二存储器“命中”请求队列280中的响应数据之间进行选择。接着使读取数据与对应的请求数据匹配,使得具有所请求的数据的返回数据分组可经汇编并且通信网络上发射到请求源的地址。如下文更详细地论述,存在使用原子与合并操作电路165或使用任选流出响应多路复用器315使上述现象发生的数种不同方式。
当被包含时,流出响应多路复用器315在如下数据之间进行选择:(1)由数据选择多路复用器310和请求选择多路复用器305提供的读取数据和请求数据;和(2)由可编程原子操作电路系统135(当包含在第一存储器控制器电路100的原子与合并操作电路165中时)产生的数据和由请求选择多路复用器305提供的请求数据。在这两种情况下,读取或产生的数据和请求数据通过流出响应多路复用器315提供到网络通信接口170,以编码和准备响应或返回数据分组以供在通信网络150上发射。在选定实施例中,执行可编程原子操作的处理器110A自身可直接编码和准备响应或返回数据分组以供在通信网络150上发射。
原子与合并操作电路165、165A包括写入合并电路180、预定原子操作电路系统185和存储器危险清除(重置)电路190,其中原子与合并操作电路165另外包括可编程原子操作电路系统135。写入合并电路180接收来自数据选择多路复用器310的读取数据和来自请求选择多路复用器305的请求数据,并且将所述请求数据和读取数据合并(以产生具有读取数据和源地址以用于响应或返回数据分组中的单个单元),接着提供:(1)到(在线路236上)第二存储器电路175的写入端口(或等效地,到第二存储器存取控制电路225以写入到第二存储器电路175);(2)任选地,到流出响应多路复用器315,以用于选择和提供到网络通信接口170,以编码和准备响应或返回数据分组从而供在通信网络150上发射;或(3)任选地,到网络通信接口170,以编码和准备响应或返回数据分组从而供在通信网络150上发射。替代地,且如图5C中说明为另一选项,流出响应多路复用器315可接收和选择直接来自数据选择多路复用器310的读取数据和直接来自请求选择多路复用器305的请求数据,以供提供到网络通信接口170,编码和准备响应或返回数据分组以供在通信网络150上发射。
当请求数据用于预定原子操作时,预定原子操作电路系统185接收来自写入合并电路180或直接来自数据选择多路复用器310与请求选择多路复用器305的请求和读取数据。执行原子操作,并且使用写入合并电路180,将所得数据写入到第二存储器电路175(存储于第二存储器电路175中),并且还提供给流出响应多路复用器315或直接提供给网络通信接口170,以编码和准备响应或返回数据分组以供在通信网络150上发射。
预定原子操作电路系统185处置预定义的原子操作,例如提取并递增(fetch-and-increment)或比较并交换(例如,在表1中列出的原子操作)。这些操作执行到32字节或更小大小的单个存储器方位的简单读取-修改-写入操作。原子存储器操作从在通信网络150上发射的请求分组起始。请求分组具有物理地址、原子操作者类型、操作数大小,以及任选地高达32字节的数据。原子操作执行到第二存储器电路175高速缓冲存储器行的读取-修改-写入,必要时填充高速缓冲存储器。原子操作者响应可为简单完成响应,或具有高达32字节数据的响应。表1示出代表性实施例中的实例原子存储器操作者的列表。请求分组大小字段将指定用于原子操作的操作数宽度。在代表性实施例中,各种处理器(例如,可编程原子操作电路系统135、处理器110、110A)、混合线程处理器115、可配置处理电路105)能够支持32和64位原子操作,以及在一些情况下,具有16和32字节的原子操作。
表1:
原子识别符 | 原子描述 |
0 | 提取并AND |
1 | 提取并OR |
2 | 提取并XOR |
3 | 提取并相加 |
4 | 提取并相减 |
5 | 提取并递增 |
6 | 提取并递减 |
7 | 提取并最小化 |
8 | 提取并最大化 |
9 | 提取并交换(互换) |
10 | 比较并交换 |
11-15 | 预留 |
16-63 | 定制(可编程)原子操作 |
如上文所提及,在读取数据写入(存储)到第二存储器电路175之前,通过存储器危险清除(重置)电路190清除针对预留高速缓存行设置的危险位。因此,当写入合并电路180接收到请求和读取数据时,存储器危险清除(重置)电路190可将重置或清除信号发射到存储器危险控制电路230(在通信线路226上),以重置或清除寄存器260中的针对预留高速缓存行设置的存储器危险位。替代地,当存储器危险清除(重置)电路190包含于存储器危险控制电路230中时,写入合并电路180可将重置或清除信号发射到存储器危险控制电路230(在通信线路226上),也重置或清除寄存器260中的针对预留高速缓存行设置的存储器危险位。还如上文所提及,此危险位的重置或清除还将释放即将发生的涉及指定(或预留)高速缓存行的读取或写入请求,提供即将发生的读取或写入请求到流入请求多路复用器245以供选择和处理。
图7A、7B和7C(统称为图7)是接收和解码请求并且执行读取或加载请求的代表性方法的流程图,其中图7A和7B示出接收和解码请求并且执行来自第一存储器电路的读取或加载请求的代表性方法,且图7C示出执行来自第二存储器电路的读取或加载请求的代表性方法。图8A、8B、8C和8D是示出作为原子操作请求的部分执行原子操作的代表性方法的流程图。图9是示出作为读取(或加载)请求的部分或作为写入(或存储)请求的部分执行从第二存储器电路的数据逐出的代表性方法的流程图。图10是执行写入或存储请求的代表性方法的流程图。
如上文所提及,第一存储器控制器电路100和/或第二存储器控制器电路100A可接收从通信网络150发射的存储器读取(或加载)请求或存储器写入(或存储)请求。表2示出代表性实施例中的实例读取、写入和原子操作和对应请求的列表(其中“…”指示可使用紧接在前的请求类型和图案指定对其它操作的请求,例如但不限于对提取并XOR原子操作的AmoXor请求、对提取并AND原子操作的AmoAnd请求)。
表2:
表3示出在代表性实施例中,来自第一存储器控制器电路100和/或第二存储器控制器电路100A的对读取、写入和原子请求的实例响应的列表,所述响应作为数据分组在通信网络150上发射。
表3:
响应名称 | 描述 |
数据8 | 数据响应,来自存储器的8字节 |
数据16 | 数据响应,来自存储器的16字节 |
数据24 | 数据响应,来自存储器的24字节 |
数据32 | 数据响应,来自存储器的32字节 |
数据40 | 数据响应,来自存储器的40字节 |
数据48 | 数据响应,来自存储器的48字节 |
数据56 | 数据响应,来自存储器的56字节 |
数据64 | 数据响应,来自存储器的64字节 |
Comp | 来自存储器的完成(例如,来自存储器的应答(ACK))响应 |
应注意,源实体或装置(即,发出读取或写入请求的实体或装置,例如各种处理器(例如,处理器110)、混合线程处理器115、可配置处理电路105)通常不具有任何信息并且不需要任何关于请求的读取数据或请求的写入数据是否保持于第一存储器电路125或第二存储器电路175中的信息,并且简单地可产生到存储器的读取或写入请求并且将所述请求在通信网络150上发射到第一存储器控制器电路100和/或第二存储器控制器电路100A。
参考图7,执行接收和解码请求并且执行读取或加载请求的代表性方法的代表性方法开始于通过第一存储器控制器电路100和/或第二存储器控制器电路100A接收请求(例如,表2的请求)(开始步骤400)。使用分组解码器电路215,解码所接收的请求,确定请求类型(读取、写入、原子操作),将请求置于对应队列(网络请求队列250或原子操作请求队列255)中(步骤402)。在另一代表性实施例中,如果不包含分组解码器电路215,那么将请求置于单个请求队列(经组合的网络请求队列250和原子操作请求队列255)中,且由第二存储器存取控制电路225执行步骤402的解码接收请求并确定请求类型的步骤。通过流入请求多路复用器245从队列选择请求(步骤404),且当请求是读取请求时(步骤406),第二存储器存取控制电路225确定所请求的数据是否存储于第二存储器电路175中(步骤408)。当请求不是读取请求时(在步骤408中),第二存储器存取控制电路225确定所述请求是否是写入请求(步骤410),如果是,继续参考图10所说明和论述的步骤540。当所接收的请求既不是读取请求也不是来自网络请求队列250的写入请求时,所述请求是来自原子操作队列255的原子操作请求,且第二存储器存取控制电路225继续参考图8所说明和论述的步骤456。
应注意,这些步骤400、402、404和406或410通常适用于所有读取、写入和/或原子操作,不仅仅是图7中所说明的读取操作.对于写入(或存储)操作,方法将具有完成的步骤400、402、404和410,且已确定选自网络请求队列250的请求是写入请求。应注意,确定请求是读取请求还是写入请求的步骤406和410可以任何次序发生;因此写入操作的开始不需要步骤406的完成。类似地,关于请求是否是原子操作请求的确定可作为单独步骤(未说明)发生,而不仅仅是通过请求不是读取请求并且不是写入请求的排除过程进行确定。另外,仅需要确定请求是否是读取请求、写入请求或原子操作请求的步骤中的两个步骤,其中通过请求不是第一请求类型并且不是第二请求类型的排除法自动确定任何第三请求类型。所有这类变型被视为等效的并且在本公开的范围内。
当第二存储器存取控制电路225已确定(在步骤408中)所请求的数据不存储于第二存储器电路175中时,第二存储器存取控制电路225选择第二存储器电路175中的高速缓存行(步骤411),并且使用存储器危险控制电路230,确定第二存储器电路175中的特定高速缓存行是否具有存储器危险寄存器260中设置的危险位(步骤412)。如果针对第二存储器电路175中的所述高速缓存行设置了危险位,那么第二存储器存取控制电路225确定另一高速缓存行是否可用(其不具有设置的危险位)(步骤414),如果是,选择第二存储器电路175中的所述可用高速缓存行(步骤416)。如果第二存储器电路175中不存在可用的高速缓存行,即,所有高速缓存行具有设置的危险位,那么第二存储器存取控制电路225将存储器危险控制电路230中的读取请求排队(步骤418),直到已经针对第二存储器电路175中的高速缓存行重置或清除危险位(步骤420),且第二存储器存取控制电路225选择危险位经重置或清除的高速缓存行,返回到步骤416。
当在步骤411或步骤416中,选择了第二存储器电路175中的高速缓存行时,第二存储器存取控制电路225确定是否存在已经存储于所选择的高速缓存行中的数据(步骤422),且如果数据存在于所述高速缓存行中,那么执行数据逐出过程(步骤423)(即,针对从第二存储器电路175的数据逐出执行参考图9所说明和论述的步骤522-534)。
当所选择的高速缓存行不具有已经存储的数据(步骤422)或数据逐出过程已完成(步骤423)时,第二存储器存取控制电路225产生发到存储器危险控制电路230的信号以针对第二存储器电路175中的所选择的高速缓存行设置危险位(步骤424),阻挡其它请求存取相同高速缓存行,这是因为所述高速缓存行中的数据将处于转变过程中且另一读取或写入过程不应存取所述高速缓存行,从而提供存储器一致性。
由于存在高速缓存器“未命中”,因此第二存储器存取控制电路225接着将读取请求传送到任选的延迟电路235(以匹配第二存储器存取控制电路225存取第二存储器电路175并且确定高速缓存未命中所花费的时间量)(或作为另一选项,将请求直接传送到流入控制多路复用器240),使得请求接着被流入控制多路复用器240选择并且存储于第一存储器库队列265中,以将对存取第一存储器电路125的读取请求排队(步骤426)。调度器电路270最终从第一存储器库队列265选择读取请求并且调度(或起始)存取第一存储器电路125的存储器库(步骤428)。从第一存储器电路125读取或获得所请求的数据并且提供给第二存储器“未命中”数据队列290,且将对应请求(或请求数据,例如源地址)提供给第二存储器“未命中”请求队列285(步骤430)。使用数据选择多路复用器310和请求选择多路复用器305,选择读取数据和对应请求并且使用写入合并电路180将所述读取数据和对应请求配对在一起(步骤432),其中写入合并电路180接着将读取数据写入到第二存储器电路175中的所选择的高速缓存行(经由通信线路236)(或等效地,写入到第二存储器存取控制电路225以写入到第二存储器电路175)(步骤434)。如本文中所使用,将读取数据和对应请求“配对”在一起简单地意味着使用数据选择多路复用器310和请求选择多路复用器305,将所述读取数据和对应请求一起选择或匹配在一起,使得数据和请求两者可一起或同时利用,例如用于原子操作或准备传出响应数据分组,(即,避免读取数据与错误请求配对并且错误地发送到错误请求的来源)。通过将读取数据写入到第二存储器电路175中的所选择的高速缓存行,针对所选择的高速缓存行重置或清除先前设置的危险位(步骤436)。使用读取数据和对应请求,准备具有请求的读取数据的读取响应数据分组(例如,来自表3的响应)并且通常在通信网络150上发射到源地址(步骤438),且来自第一存储器电路125的读取操作可结束(返回步骤440)。
当第二存储器存取控制电路225已确定(在步骤408中)所请求的数据存储于第二存储器电路175中的高速缓存行中(即,高速缓存命中)时,使用存储器危险控制电路230,第二存储器存取控制电路225确定第二存储器电路175中的特定高速缓存行是否具有存储器危险寄存器260中设置的危险位(步骤442)。如果针对第二存储器电路175中的所述高速缓存行设置了危险位,那么第二存储器存取控制电路225将存储器危险控制电路230中的读取请求排队(步骤444),直到已经针对第二存储器电路175中的所述高速缓存行重置或清除了危险位(步骤446)。
当在步骤442或步骤446之后,不存在目前设置的危险位时,第二存储器存取控制电路225从所述高速缓存行读取或获得所请求的数据并且将其直接传送到第二存储器“命中”数据队列295(步骤448)。作为步骤448的部分,由于存在高速缓存器“命中”,第二存储器存取控制电路225接着将读取请求传送到任选延迟电路235(以匹配第二存储器存取控制电路225存取第二存储器电路175并且获得数据所花费的时间量),且对应请求(或请求数据,例如源地址)提供给第二存储器“命中”请求队列280。使用数据选择多路复用器310和请求选择多路复用器305,选择读取数据和对应请求并且将其配对在一起(步骤450)。使用读取数据和对应请求,准备具有所请求的读取数据的读取响应数据分组(例如,来自表3的响应)并且通常在通信网络150上发射到源地址(步骤452),且从第二存储器电路175的读取操作可结束(返回步骤454)。
如上文所提及,对于从第一存储器电路125或第二存储器电路175的任何读取操作或预定原子操作,存在数个可用于准备和发射读取响应数据分组的选项,例如:(1)使用写入合并电路180将读取数据和对应请求提供到流出响应多路复用器315,以用于选择并提供到网络通信接口170,编码和准备响应或返回数据分组以供在通信网络150上发射;或(2)任选地,使用写入合并电路180,将读取数据和对应请求提供到网络通信接口170,编码和准备响应或返回数据分组以供在通信网络150上发射;或(3)作为另一选项,流出响应多路复用器315可接收和选择直接来自数据选择多路复用器310的读取数据和直接来自请求选择多路复用器305的请求数据,以供提供到网络通信接口170,编码和准备响应或返回数据分组以供在通信网络150上发射。
如上文所提及,发到第一存储器控制器电路100和/或第二存储器控制器电路100A的传入请求可用于原子操作,所述原子操作本质上是在操作数日期上的原子操作之后,在将所得数据保存到存储器的写入请求之后,获得操作数数据的读取请求。原子操作请求的读取操作部分通常通过用于高速缓存未命中的步骤432或通过用于高速缓存命中的步骤450,即,通过从第一存储器电路125或第二存储器电路175获得数据并且将数据和请求提供到对应队列280、285、290、295中,跟踪先前论述的读取操作,其具有针对第二存储器电路175的所选择的高速缓存行设置危险位的额外步骤。出于清楚起见,下文还论述这些步骤。
参考图8,在步骤410之后,当请求是原子操作请求时,第二存储器存取控制电路225确定请求的操作数数据是否存储于第二存储器电路175中(步骤456)。当第二存储器存取控制电路225已确定(在步骤456中)所请求的数据存储于第二存储器电路175中的高速缓存行中(即,高速缓存命中)时,使用存储器危险控制电路230,第二存储器存取控制电路225确定第二存储器电路175中的特定高速缓存行是否具有在存储器危险寄存器260中设置的危险位(步骤458)。如果针对第二存储器电路175中的所述高速缓存行设置了危险位,那么第二存储器存取控制电路225将存储器危险控制电路230中的原子操作请求排队(步骤460),直到已经针对第二存储器电路175中的所述高速缓存行重置或清除了危险位(步骤462)。
当在步骤458或步骤462之后,不存在目前设置的危险位时,第二存储器存取控制电路225针对第二存储器电路175中的所述高速缓存行设置危险位(这是由于将在原子操作之后更新所述数据)(步骤464),从所述高速缓存行获得所请求的数据并且将其直接传送到第二存储器“命中”数据队列295(步骤466),执行(例如,提取并AND的或提取并交换(更换)的)原子操作的“提取”部分。作为步骤466的部分,由于存在高速缓存器“命中”,因此第二存储器存取控制电路225接着将原子操作请求传送到任选的延迟电路235(以匹配第二存储器存取控制电路225存取第二存储器电路175并获得数据所花费的时间量),且对应请求(或请求数据,例如源地址)提供给第二存储器“命中”请求队列280。使用数据选择多路复用器310和请求选择多路复用器305,选择读取操作数数据和对应原子操作请求并将其配对在一起(步骤468)。
当第二存储器存取控制电路225已确定(在步骤456中)所请求的数据不存储于第二存储器电路175中时,第二存储器存取控制电路225选择第二存储器电路175中的高速缓存行(步骤470),并且使用存储器危险控制电路230,确定第二存储器电路175中的特定高速缓存行是否具有在存储器危险寄存器260中设置的危险位(步骤472)。如果针对第二存储器电路175中的所述高速缓存行设置了危险位,那么第二存储器存取控制电路225确定另一高速缓存行是否可用(其不具有设置的危险位)(步骤474),如果是,则选择第二存储器电路175中的所述可用的高速缓存行(步骤476)。如果在第二存储器电路175中不存在可用的高速缓存行,即,所有高速缓存行具有设置的危险位,那么第二存储器存取控制电路225将存储器危险控制电路230中的原子操作请求排队(步骤478),直到已经针对第二存储器电路175中的高速缓存行重置或清除了危险位(步骤480),且第二存储器存取控制电路225选择危险位经重置或清除的高速缓存行,返回到步骤476。
当在步骤470或步骤476中,选择了第二存储器电路175中的高速缓存行时,第二存储器存取控制电路225确定是否存在已经存储于所选择的高速缓存行中的数据(步骤482),且如果数据存在于所述高速缓存行中,那么执行数据逐出过程(步骤484)(即,针对从第二存储器电路175的数据逐出执行参考图9所说明和论述的步骤522-534)。
当所选择的高速缓存行不具有已经存储的数据(步骤482)或数据逐出过程已完成(步骤484)时,第二存储器存取控制电路225产生发到存储器危险控制电路230的信号以针对第二存储器电路175中的所选择的高速缓存行设置危险位(步骤486),阻挡其它请求存取相同高速缓存行,这是因为所述高速缓存行中的数据将处于转变过程中且另一读取或写入过程不应存取所述高速缓存行,从而提供存储器一致性。
由于存在高速缓存器“未命中”,因此第二存储器存取控制电路225接着将原子操作请求传送到任选的延迟电路235(以匹配第二存储器存取控制电路225存取第二存储器电路175并且确定高速缓存未命中所花费的时间量)(或作为另一选项,将请求直接传送到流入控制多路复用器240),使得请求接着被流入控制多路复用器240选择并且存储于第一存储器库队列265中,以将对存取第一存储器电路125的原子操作请求排队(步骤488)。调度器电路270最终从第一存储器库队列265选择原子操作请求并且调度(或起始)存取第一存储器电路125的存储器库(步骤490)。从第一存储器电路125获得(读取)所请求的数据并且提供给第二存储器“未命中”数据队列290,且将对应原子操作请求(包含请求数据,例如源地址)提供给第二存储器“未命中”请求队列285(步骤492),从而执行原子操作的“提取”部分。使用数据选择多路复用器310和请求选择多路复用器305,选择读取数据和对应请求并且将所述读取数据和对应请求配对在一起(步骤494)。
在处理原子操作请求时,在步骤468或步骤494之后,在第二存储器电路175中存在已预留(例如,设置的危险位)的可用高速缓存行,已从第二存储器电路175或第一存储器电路125读取(获得)操作数数据,且读取数据已配对或匹配到其对应的原子操作请求。当原子操作请求是针对预定原子操作(步骤496)时,数据选择多路复用器310和请求选择多路复用器305将数据和请求传送到预定原子操作电路系统185(步骤498),且预定原子操作电路系统185执行所请求的原子操作以产生所得数据(步骤500),例如提取并AND、提取并OR、提取并XOR、提取并相加、提取并相减、提取并递增、提取并递减、提取并最小化、提取并最大化、提取并交换(更换)、比较并交换。使用写入合并电路180,将所得数据写入到第二存储器电路175中的所选择的高速缓存行(经由通信线路236)(或等效地,写入到第二存储器存取控制电路225以写入到第二存储器电路175)(步骤502)。通过将所得数据写入到第二存储器电路175中的所选择的高速缓存行,使用存储器危险清除(重置)电路190或存储器危险控制电路230,针对所选择的高速缓存行重置或清除先前设置的危险位(步骤504)。使用所得数据和对应原子操作请求,准备具有所请求的所得数据的原子操作响应数据分组(例如,来自表3的响应)并且通过网络通信接口170通常在通信网络150上发射到源地址(提供于请求中)(步骤506),且预定原子操作可结束(返回步骤508)。
当在步骤496中,原子操作请求不针对预定原子操作,即,针对可编程或定制原子操作时,作为下文更详细地论述的“工作描述符”的部分,在通到处理器110A的通信线路或总线60上或在通到原子与合并操作电路165内的可编程原子操作电路系统135的通信线路或总线60A上,将原子操作请求和读取数据传送到可编程原子操作电路系统135(步骤510)。可编程原子操作电路系统135执行所请求的可编程原子操作以产生所得数据(步骤512),如下文更详细地论述,并将具有可编程原子操作请求的所得数据传送到原子操作请求队列255(步骤514)。使用流入请求多路复用器245选择可编程原子操作请求,并且使用第二存储器存取控制电路225,将所得数据写入到第二存储器电路175中的所选择的高速缓存行(本质上是写入操作)(步骤516)。通过将所得数据写入到第二存储器电路175中的所选择的高速缓存行,使用存储器危险清除(重置)电路190或存储器危险控制电路230,针对所选择的高速缓存行重置或清除先前设置的危险位(步骤518)。使用所得数据和对应可编程原子操作请求,准备具有所请求的所得数据的可编程原子操作响应数据分组(例如,来自表3的响应)并且通常在通信网络150上发射到源地址(步骤520),且可编程原子操作可结束(返回步骤505)。
存在数种其中可准备和发射可编程原子操作响应数据分组的方式。举例来说,当可编程原子操作电路系统135包含于原子与合并操作电路165内时,可以与准备和发射任何其它响应分组相同的方式来准备和发射可编程原子操作响应数据分组。替代地,当可编程原子操作电路系统135包含于处理器110A内时,可直接通过处理器110A准备和发射可编程原子操作响应数据分组,所述处理器110A通常还具有类似或相同网络通信接口170。
如上文所指示,目前保持于第二存储器电路175中的所选高速缓存行中的数据可能需要传送到第一存储器电路125,以保留并且继续存储目前保持的数据并且允许第二存储器电路175中的所选择的高速缓存行用于其它数据,此过程在本文中被称作数据“逐出”(并且用于步骤423(读取操作)、步骤484(原子操作),或步骤556(写入(或存储)请求(参考图10所说明和论述))。参考图9,在步骤422(读取操作),或步骤482(原子操作),或步骤554(写入(或存储)请求)之后,数据逐出过程开始(开始步骤522),且第二存储器存取控制电路225产生发到存储器危险控制电路230的信号以针对第二存储器电路175中的所选择的高速缓存行设置危险位(在寄存器260中)(步骤524),以阻挡其它请求存取相同高速缓存行,这是因为所述高速缓存行中的数据将处于转变到替换数据的过程中。第二存储器存取控制电路225从第二存储器电路175中的所选择的高速缓存行读取当前数据以及其对应的存储器地址(步骤526),将逐出的数据和存储器地址(实际上作为写入请求或与写入请求等效)排队以用于写入(存储)到第一存储器电路125(步骤528),例如,将当前读取数据和存储器地址传送到流入控制多路复用器240,使得数据和请求(与存储器地址一起)接着被流入控制多路复用器240选择并且存储于第一存储器库队列265中。调度器电路270最终从第一存储器库队列265选择逐出的数据和存储器地址并且调度(或起始)存取第一存储器电路125的存储器库(步骤530)。逐出的数据在指定的存储器地址处存储到第一存储器电路125(步骤532),且存储器危险控制电路230(或存储器危险清除(重置)电路190)针对第二存储器电路175中的所选择的高速缓存行重置或清除危险位(在寄存器260中)(步骤534)。数据逐出过程可结束(返回步骤536),且接着可覆写第二存储器电路175中的所选择的高速缓存行,且不会损失任何先前数据,所述先前数据现在存储于第一存储器电路125中。在步骤534或536之后,在清除或重置危险位后,要求数据逐出过程的过程即刻可恢复(例如,继续进行到用于读取(或加载)过程的步骤424,继续进行到用于写入过程的步骤558,或继续进行到用于原子操作过程的步骤486)。
如上文所提及,上文所论述的步骤400、402、404、406和410通常适用于所有读取、写入和/或原子操作,而不仅仅是图7中所说明的读取操作读取操作。参考图10,对于写入(或存储)操作,所述方法将具有完成的步骤400、402、404和410,并且已确定选自网络请求队列250的请求是写入请求。应注意,确定请求是否是读取请求或写入请求的步骤406和410可以任何次序发生;因此,开始写入操作不需要步骤406的完成。还如上文所提及,请求是写入请求(如第三类型的请求)的任何确定也可通过排除过程或默认地而发生,所述排除过程即确定其不是第一类型的请求(读取)并且不是第二类型的请求(原子操作)。
参考图10,在先前已确定请求是用于执行写入(或存储)操作的写入请求的情况下,写入(或存储)操作开始(开始步骤540),且第二存储器存取控制电路225选择第二存储器电路175中的高速缓存行(步骤542),并且使用存储器危险控制电路230,确定第二存储器电路175中的特定高速缓存行是否具有在存储器危险寄存器260中设置的危险位(步骤544)。如果针对第二存储器电路175中的所述高速缓存行设置了危险位,那么第二存储器存取控制电路225确定另一高速缓存行是否可用(其不具有设置的危险位)(步骤546),如果是,则选择第二存储器电路175中的所述可用的高速缓存行(步骤548)。如果在第二存储器电路175中不存在可用的高速缓存行,即,所有高速缓存行具有设置的危险位,那么第二存储器存取控制电路225将存储器危险控制电路230中的原子操作请求排队(步骤550),直到已经针对第二存储器电路175中的高速缓存行重置或清除了危险位(步骤552),且第二存储器存取控制电路225选择危险位经重置或清除的高速缓存行的步骤548。
当在步骤542或步骤548中,选择了第二存储器电路175中的高速缓存行时,第二存储器存取控制电路225确定是否存在已经存储于所选择的高速缓存行中的数据(步骤554),且如果数据存在于所述高速缓存行中,那么执行数据逐出过程(步骤556)(即,针对从第二存储器电路175的数据逐出执行参考图9所说明和论述的步骤522-534)。
当所选择的高速缓存行不具有已经存储的数据(步骤554)或数据逐出过程已完成(步骤556)时,第二存储器存取控制电路225产生发到存储器危险控制电路230的信号以针对第二存储器电路175中的所选择的高速缓存行设置危险位(步骤558),阻挡其它请求存取相同高速缓存行,这是因为所述高速缓存行中的数据将处于转变过程中且另一读取或写入过程不应存取所述高速缓存行,从而提供存储器一致性。
接着使用在写入请求中指定的地址,将写入请求的写入数据写入到第二存储器电路175(存储于第二存储器电路175中)(步骤560),且重置或清除先前设置的危险位(步骤562)。这些写入到第二存储器电路175并且清除危险位的步骤可以数种方式中的任一种发生,例如:(1)使用第二存储器存取控制电路225将写入数据存储于第二存储器电路175中并且产生发到存储器危险控制电路230的信号以针对第二存储器电路175中的所选择的高速缓存行重置或清除危险位;或(2)路由请求通过第二存储器“命中”请求队列280并且将写入数据路由到第二存储器“命中”数据队列295,随后使用写入合并电路180将写入数据写入到第二存储器电路175中的所选择的高速缓存行(经由通信线路236),并且产生发到存储器危险控制电路230的信号以针对第二存储器电路175中的所选择的高速缓存行重置或清除危险位。使用来自写入请求的源地址,通常在通信网络150上,准备具有应答(或完成)的写入操作响应数据分组并且发射到源地址(步骤564),且写入操作可结束(返回步骤566)。先前提及的方法和组件中的任一个可用以准备和发射响应数据分组。
因此,第二存储器电路175将存储写入到第二存储器电路175的最新数据,直到所述数据随后可被“逐出”并且移动到或重新存储于第一存储器电路125中为止。由于可相对迅速地再次利用最新数据,将数据存储于第二存储器电路175中还用以减小时延。
使用并行执行线程解决的应用程序通常具有其中多个线程可尝试修改内含的存储器区。为获得正确结果,必须一次一个地执行来自多个线程的操作。应用程序所需的多个操作复杂到足以使所述组预定或内置原子操作并不足够。这些更复杂的操作执行包含设置存储器锁定,执行操作,接着清除存储器锁定的指令序列。在现有技术中,此操作序列多次存取存储器并且有可能要求在等待清除存储器锁定必须轮询处理器线程。
根据代表性实施例,用户定义的可编程原子操作允许用户定义对单个应用程序有价值的原子操作。通过执行单个处理器指令来执行用户定义的原子操作。
根据代表性实施例,用户可创建可编程原子操作指令集,以允许应用程序将用户定义的原子操作发到存储器控制器电路100、100A。发出类似于预定原子操作的原子操作。可编程原子操作请求包含物理存储器地址、可编程原子操作识别符以及某一数目的线程状态寄存器值。存储器控制器电路100、100A接收可编程原子操作请求,第二存储器控制电路160将危险(设置危险位)置于第二存储器电路175的目标高速缓存行上,并且接着将可编程原子操作请求信息传送到存储器控制器电路100、100A内或耦合到存储器控制器电路100、100A的可编程原子操作电路系统135。可编程原子操作电路系统135从提供的可编程原子操作请求信息(包含存储器地址、位于存储器地址处的64位存储器值和线程状态寄存器)初始化其寄存器。可编程原子操作电路系统135执行一连串指令以执行可编程原子操作。将可编程原子操作的结果存储回到第二存储器电路175的目标存储器行并且可能地返回到响应分组中的请求源或处理器。
请求源或处理器通常通过需要可编程原子操作的系统调用来通知系统50、50A。操作系统通过加载存储器中的与可编程原子操作电路系统135相关联的所提供指令集来处理系统调用。
可编程原子操作电路系统135通过执行开始于从可编程原子操作请求分组中的可编程原子操作原子识别符获得的方位处的所加载指令,开始执行用户定义的可编程原子操作。
可编程原子操作电路系统135在接收到原子操作后,即刻将所有存储器请求强推到第二存储器电路175的被最初由第二存储器控制电路160设置的危险位覆盖的存储器行。另外,可编程原子操作电路系统135应将用于执行的指令的数目限制为有限数目以确保可编程原子操作完成。可编程原子操作电路系统135还检测对界外存储器行的存取和太多个指令的执行,并且对具有故障状态的请求源或处理器作出响应。请求源或处理器接着发出卡陷告警(trap)以通知系统发生故障。
在代表性实施例中,举例来说,实例可编程原子操作指令具有如表4中所示的代表性格式。
表4:
31 27 | 26 | 25 | 24 20 | 19 15 | 14 12 | 11 7 | 6 0 | |
10000 | aq | rl | 00000 | 00000 | ac | 00000 | 0101110 | AMOCUST0 |
10001 | aq | rl | 00000 | 00000 | ac | 00000 | 0101110 | AMOCUST1 |
10010 | aq | rl | 00000 | 00000 | ac | 00000 | 0101110 | AMOCUST2 |
10011 | aq | rl | 00000 | 00000 | ac | 00000 | 0101110 | AMOCUST3 |
10100 | aq | rl | 00000 | 00000 | ac | 00000 | 0101110 | AMOCUST4 |
10101 | aq | rl | 00000 | 00000 | ac | 00000 | 0101110 | AMOCUST5 |
10110 | aq | rl | 00000 | 00000 | ac | 00000 | 0101110 | AMOCUST6 |
10111 | aq | rl | 00000 | 00000 | ac | 00000 | 0101110 | AMOCUST7 |
再次参考由可编程原子操作电路系统135执行的可编程原子存储器操作,在代表性实施例中,可编程原子操作电路系统135是基于经修改以有效地执行可编程原子存储器操作的RISC-V处理器ISA。这些修改允许可编程原子操作电路系统135或其它处理器110、110A或HTP 115(例如RISC-V处理器)产生运行中的线程,从存储器存取最小数据量来执行原子操作,当原子操作完成时清除存储器危险位(锁定),并且通过在通信网络150上发送响应分组的选项来终止先前产生的线程。
修改包含跨多个线程的圆筒样式指令处理。圆筒处理允许可编程原子操作电路系统135或其它处理器110、110A通过切换到其它准备好执行(ready-to-execute)线程来隐藏存储器存取时延。圆筒处理造成用于单个原子操作的总体时间增加,但是此样式的处理极大地增加原子操作处理量。此折衷适于必须跨多个存储器方位执行定制原子操作的应用程序。在单个存储器方位上执行原子操作(例如计数屏障操作)的应用程序可使用预定原子操作。对于此情境,存储器方位将高速缓存于第二存储器电路175中,且将针对相对最小时间量设置存储器危险位(锁定)。
可编程原子操作电路系统135或其它处理器110、110A每线程具有读取/写入存储器缓冲器集。所述存储器缓冲器允许读取预提取和写入并合以使对第一存储器电路125和第二存储器电路175的存取降到最低。RISC-V架构通过获取/释放指令功能性来支持此样式的存储器接口。
在代表性实施例中,如上文所提及,可编程原子操作电路系统135体现在HTP 115中,在第16/176,434号美国专利申请案中进行更详细地描述。对于这类实施例,HTP 115用作处理器110A,且还通过进出第二存储器控制器电路100A的直接通信链路(或线路)60提供。
图11是代表性可编程原子操作电路系统135(或其它处理器110、110A)实施例的框图,其包含这类可编程原子操作电路系统135可包含在HTP 115中的情况。为易于说明和论述,应注意,在图11中并未说明HTP 115的线程存储器和网络响应存储器的所有寄存器。参考图11,可编程原子操作电路系统135包括存储器控制器接口电路720、核心控制电路系统610和一或多个处理器核心605。
存储器控制器接口电路720管理可编程原子操作电路系统135和第一存储器控制器电路100的平衡或单独第二存储器控制器电路100A之间的通信,例如(1)将可编程原子操作请求和读取数据提供到控制逻辑和线程选择电路系统630、核心控制和线程存储器615和/或可编程原子操作电路系统135的数据缓冲器715;和(2)将在处理器核心605完成可编程原子操作后即刻产生的所得数据与可编程原子操作请求数据一起提供到原子操作请求队列,以将所得数据存储于第二存储器电路175中。
核心控制电路系统610包括控制逻辑和线程选择电路系统630(以管理用于在处理器核心605上执行的对应指令的线程、存储指令以执行可编程原子操作的指令高速缓存器640,以及各种类型的存储器和寄存器,包含执行队列645、核心控制和线程存储器615和数据缓冲器715。当可编程原子操作电路系统135实现为处理器110A或HTP 115时,处理器110A或HTP 115另外包括如先前所描述用于在通信网络150上通信的网络通信接口170。控制逻辑和线程选择电路系统630包括(例如但不限于)使用多个各种逻辑门(例如,NAND、NOR、AND、OR、异或(EXCLUSIVE OR)等)中的任一个和各种状态机电路(控制逻辑电路631、线程选择控制电路系统705)的组合形成的电路系统,以及多路复用器(例如,输入多路复用器687、线程选择多路复用器685)。网络通信接口170包含输入队列205,其从通信网络150接收数据分组;输出队列210,其将数据分组(包含响应分组)传送到通信网络150;数据分组解码器电路215,其解码来自通信网络150的传入数据分组,呈现数据(在指定字段)并且将提供于分组中的数据传送到核心控制和线程存储器615的相关寄存器;和数据分组编码器电路220,其编码传出数据分组(例如可编程原子存储器操作响应分组、发到第一存储器电路125的请求)以供在通信网络150上发射。数据分组解码器电路215和数据分组编码器电路220可各自实施为状态机或其它逻辑电路系统。取决于所选择的实施例,可存在用于每一处理器核心605的单独核心控制电路系统610和单独核心控制和线程存储器615,或单个核心控制电路系统610和单个核心控制和线程存储器615可用于多个处理器核心605。
如上文所论述,使用通信总线或线或线路60、60A,分别将来自请求选择多路复用器305和数据选择多路复用器310的可编程原子操作请求和读取数据提供给存储器控制器接口电路720。所述请求包含关于请求源(例如,源地址)和原子存储器操作者识别符(其为对将执行的特定可编程原子操作的指定)的信息。共同地,源地址、原子存储器操作者识别符和读取数据(作为操作数数据)包括“工作描述符”。
可编程原子操作允许系统50、50A用户定义特定于目标应用程序集的原子存储器操作集。这些可编程原子操作包括存储于指令高速缓存器640中以供处理器核心605执行的程序指令。在代表性实施例中,存储器控制器接口电路720包含寄存器集710,其含有将原子存储器操作者识别符转换成(虚拟)指令地址的转换表,以供选择指令来开始通过处理器核心605对可编程原子操作的执行。在另一代表性实施例中,核心控制和线程存储器615包含寄存器集710,其含有将原子存储器操作者识别符转换成(虚拟)指令地址的转换表,以供选择指令来开始通过处理器核心605对可编程原子操作的执行。
当工作描述符通过存储器控制器接口电路720到达时,控制逻辑和线程选择电路系统630为工作描述符的线程指配来自线程ID池寄存器(未单独地说明)的可用线程识别符(ID),其中指配的线程ID用作到核心控制和线程存储器615的其它寄存器的索引,接着为所述其它寄存器填入来自工作描述符的对应数据,通常为程序计数和一或多个变量参数。控制逻辑和线程选择电路系统630在准备开始用于可编程原子操作的线程执行指令(例如加载数据缓冲器715)时,按需要自主地初始化线程上下文状态的剩余部分。数据缓冲器715用于通过存储读取请求数据和写入数据、预取的数据以及可在可编程原子操作的执行期间产生的任何中间结果,将请求(例如发到第一存储器电路125的请求)降到最低。
为线程ID提供有效状态(指示其准备好执行),且将线程ID推送给执行(准备好运行)队列645的第一优先级队列655,这是因为用于可编程原子操作的线程通常被指配可得的最高(第一)优先权。如果可编程原子操作电路系统135实现为也可执行其它操作的HTP115,那么提供用于可编程原子操作的线程ID的专用队列,其又具有用于快速选择和执行的最高优先权。控制逻辑和线程选择电路系统630的选择电路(例如多路复用器685)选择执行(准备好运行)队列645中的下一线程ID用作到核心控制和线程存储器615(程序计数寄存器和线程状态寄存器)中的索引,从指令高速缓存器640选择指令并接着提供给执行管线650以执行。执行管线接着执行用于可编程原子操作的所述指令。
在指令执行完成时,在控制逻辑和线程选择电路系统630的控制下,取决于各种条件,相同的信息三元组(线程ID、有效状态和优先权)可返回到执行(准备好运行)队列645的第一优先级队列655,以用于继续执行选择,继续执行用于可编程原子操作的指令。举例来说,如果用于所选线程ID的最后一个指令是返回指令(指示用于可编程原子操作的线程执行完成且正在提供所得原子操作数据),那么控制逻辑和线程选择电路系统630将线程ID返回到线程ID池寄存器中的线程ID的可用池,以可供另一不同线程使用。并且,举例来说,有效指示器可改变,例如改变到暂停状态(例如同时线程可等待信息从第一存储器电路125返回或写入到第一存储器电路125或等待另一事件),且在此情况下,线程ID(现在具有暂停状态)不返回到执行(准备好运行)队列745,直到状态改变回到有效或已经过预定量的时间(以避免在用户提供的用于可编程原子操作的指令以任何方式存在问题的情况下使可编程原子操作电路系统135停滞或中断)。
继续之前的实例,当用于所选线程ID的最后一个指令是返回指令时,接着通过执行管线650将返回信息(线程ID和返回变量参数)推送到网络命令队列690,所述网络命令队列690通常实施为先入先出(FIFO)。线程ID用作到线程返回寄存器中的索引以获得返回信息,例如交易ID和源(调用器)地址(或其它识别符),且分组编码器电路(处于第一存储器控制器电路100的网络通信接口170中或处理器110A的网络通信接口170中)接着产生传出返回数据分组(在通信网络150上)。另外,如上文所论述,所得数据提供给存储器控制器接口电路720,以用于将所得数据写入到第二存储器电路175。
在启动时间确立系统50、50A(和对应指令)支持的可编程原子操作集。通过操作系统加载寄存器710中的将原子存储器操作者识别符转换成(虚拟)指令地址的表。
也可将各种约束条件置于可编程原子操作上,例如将对应写入地址空间限制到其中既定可编程原子操作具有写入特权所针对的存储器区域,并且限制可在可编程原子操作中执行的指令的数目,以确保可编程原子操作完成(且随后当所得数据写入到第二存储器电路175时,清除或重置危险位)。另外,随后可在预定时间段之后自动清除或重置危险位,以不允许可编程原子操作无限期地在第二存储器电路175中预留高速缓存行。
举例来说,传入工作描述符还用于例如通过表5中示出的信息,初始化核心控制和线程存储器615中的线程寄存器中的新线程(用于可编程原子操作)。
表5:
继续实例,产生的线程执行标准和定制RISC-V指令以执行可编程(定制)原子操作。对于提取并操作命令,RISC-V指令将在A1和A2上执行定义的操作,以结果写入到提供于A0中的地址。A0中的地址还将用于清除存储器行危险锁定。
已发明新RISC-V指令来支持可编程原子操作。
加载非缓冲指令(加载非缓冲(NB))检查数据缓冲器715中的缓冲器命中,但在缓冲器未命中上发出对仅所请求的操作数的存储器请求并且不将获得的数据置于缓冲器中。此类型的指令具有NB后缀(非缓冲)。
LB.NB RA,40(SP)
NB加载指令预期用于汇编写入的运行时间库中。
在表6中列出实例加载指令,其示出加载非缓冲指令格式。
表6:
31 20 | 19 15 | 14 12 | 11 7 | 6 0 | |
Imm[11:0] | rs1 | 000 | rd | 0000010 | LB.NB |
Imm[11:0] | rs1 | 001 | rd | 0000010 | LH.NB |
Imm[11:0] | rs1 | 010 | rd | 0000010 | LW.NB |
Imm[11:0] | rs1 | 011 | rd | 0000010 | LD.NB |
Imm[11:0] | rs1 | 100 | rd | 0000010 | LBU.NB |
Imm[11:0] | rs1 | 101 | rd | 0000010 | LHU.NB |
Imm[11:0] | rs1 | 110 | rd | 0000010 | LWU.NB |
Imm[11:0] | rs1 | 010 | rd | 0000110 | FLW.NB |
Imm[11:0] | rs1 | 011 | rd | 0000110 | FLD.NB |
当第一存储器控制器电路100或第二存储器控制器电路100A接收到原子操作时,可编程(定制)原子操作在第二存储器电路175的高速缓存行(作为提供的地址)上设置危险位(作为“锁定”)。可编程原子操作电路系统135指示应何时清除锁定。这应在可编程原子操作电路系统135针对可编程(定制)原子操作执行的最后一个存储操作上(或在无需存储的情况下在原子返回指令上)发生。可编程原子操作电路系统135指示将通过执行危险清除存储操作来清除或重置危险位。
指示将清除或重置危险位的存储指令是:
SB.CL RA,40(SP)
SH.CL RA,40(SP)
SW.CL RA,40(SP)
SD.CL RA,40(SP)
FSW.CL RA,40(SP)
FSD.CL RA,40(SP)
在表7中示出这些存储指令的格式,其示出存储和清除锁定指令格式。
表7:
31 25 | 24 20 | 19 15 | 14 12 | 11 7 | 6 0 | |
Imm[11:5] | rs2 | rs1 | 000 | Imm[4:0] | 0110010 | SB.CL |
Imm[11:5] | rs2 | rs1 | 001 | Imm[4:0] | 0110010 | SH.CL |
Imm[11:5] | rs2 | rs1 | 010 | Imm[4:0] | 0110010 | SW.CL |
Imm[11:5] | rs2 | rs1 | 011 | Imm[4:0] | 0110010 | SD.CL |
Imm[11:5] | rs2 | rs1 | 010 | Imm[4:0] | 0110110 | FSW.CL |
Imm[11:5] | rs2 | rs1 | 011 | Imm[4:0] | 0110110 | FSD.CL |
原子返回(AR)指令(AR)用以完成可编程原子操作的执行线程,任选地清除危险位(锁定),并且任选地将响应提供回到发出可编程原子操作的源。
AR指令可将零个、一个或两个8字节变量参数值发送回到发出计算元件。通过ac2后缀(A1或A2)来确定要发送回去的变量参数的数目。无后缀意味着零变量参数,A1意指单个8字节变量参数,A2意指两个8字节变量参数。若需要,从RISC-V X寄存器a1和a2获得变量参数。
AR指令还能够清除先前针对第二存储器电路175的与原子指令相关联的高速缓存行(作为提供的地址)设置的危险位。AR使用a0寄存器中的值作为发送清除锁定操作的地址。在指令含有后缀CL的情况下发出清除锁定操作。清除锁定操作使用寄存器A0中的值作为将用以清除锁定的地址。
取决于是否清除与原子操作相关联的危险位锁定,AR指令具有两个变体。表8中示出所提议的指令,其为说明原子返回指令格式的图式。
表8:
31 25 | 24 20 | 19 15 | 14 12 | 11 7 | 6 0 | |
1010000 | 00000 | 00000 | ac2 | 00000 | 1110010 | AR |
1011000 | 00000 | 00000 | ac2 | 00000 | 1110010 | AR.CL |
表9示出用于原子返回指令的AC2后缀选项。
表9:
ac2编码 | 后缀 | 变量参数计数 |
0 | 无后缀 | 0 |
1 | A1 | 1 |
2 | A2 | 2 |
以下实例1示出实施为可编程(定制)原子操作的原子提取并XOR操作。
实例1:
第一指令xor.d对原子操作数和存取的存储器值执行XOR操作。第二指令sd.cl将寄存器a2中的64位值存储到提供于寄存器a0中的原子操作地址。另外,存储操作用以清除先前针对第二存储器电路175的高速缓存行(作为提供的地址)设置的危险位。最后一个指令ar致使线程终止。应注意,sd.cl指令将64位值存储到线程写入缓冲器但不将写入缓冲器强推到存储器。ar指令用以将所有脏写入缓冲器强推到存储器。这意味着sd.cl指令将其64位值写入到写入缓冲器,接着将写入缓冲器标记为当其通过ar指令写入到第二存储器电路175时需要清除相关联危险。
以下实例2示出实施为可编程原子操作的双重比较并交换(DCAS)操作。
实例2:
实例2示出非缓冲负载指令ld.nb的使用。非缓冲加载用以从存储器拉入仅所需的8字节。使用非缓冲加载避免预提取整个存储缓冲器(例如,64字节)。
实例2还示出存储指令sd和sd.cl序列的使用。第一指令sd将64位写入到写入缓冲器。第二指令sd.cl将第二个64位值写入到写入缓冲器。ar指令将写入缓冲器中的16字节脏数据作为标记有需要清除危险位的单个请求写入回到存储器。
DCAS的此实施将指示成功或失败的单个值返回。第二ar指令用以在没有先前存储来执行所述操作时清除危险位。
如上文所提及,代表性设备、系统和方法提供具有高性能且高效节能的存储器控制器100、100A。存储器控制器100、100A的代表性实施例提供对要求大量且高度频繁存储器存取的计算密集型内核或操作的支持,所述计算密集型内核或操作例如但不限于用于执行快速傅里叶变换(“FFT”)操作、有限脉冲响应(“FIR”)滤波的计算密集型内核或操作,以及其它通常用于例如合成孔径雷达的较大应用中的计算密集型操作、5G网络连接和5G基站操作、机器学习、AI、模板代码操作,以及图表分析操作,例如使用光谱技术的图聚类。存储器控制器100、100A的代表性实施例针对高处理量和低时延经优化,包含用于原子操作的高处理量和低时延,所述原子操作包含广泛范围的原子操作,包含预定原子操作并且还包含可编程或用户定义的原子操作。
存储器控制器100、100A的代表性实施例与当前技术发展水平的X86服务器平台相比产生显著结果。举例来说,存储器控制器100、100A的代表性实施例使用标准GDDR6DRAM存储器提供三倍以上(3.48x)的更佳原子更新性能,并且使用经修改GDDR6DRAM存储器(具有更多存储器库)提供十七倍(17.6x)的更佳原子更新性能。
存储器控制器100、100A的代表性实施例还提供极低时延和高处理量存储器读取和写入操作,所述操作通常仅受存储器库可用性、错误校正开销和通信网络150上可用的带宽(Gb/s)以及存储器125、175装置本身限制,从而在达成最大带宽之前具有平坦时延。
存储器控制器100、100A的代表性实施例还为可编程或用户定义的原子操作提供与预定原子操作的性能相当的极高性能(高处理量和低时延)。为可编程原子操作电路系统135执行可编程或用户定义的原子操作提供的额外直接数据路径允许额外写入操作,不具有通信网络150的带宽施加的任何限制,且不会增加通信网络150的任何拥塞。
如本文中所使用,“处理器核心”605可以是任何类型的处理器核心,且可实现为被配置成、设计成、编程成或以其它方式调适成执行本文中所论述的功能性的一或多个处理器核心。如本文中所使用,“处理器”110、110A可以是任何类型的处理器,并且可实现为被配置成、设计成、编程成或以其它方式调适成执行本文中所论述的功能性的一或多个处理器。作为本文中使用的术语处理器,处理器110、110A可包含使用单个集成电路(“IC”),或可包含使用多个集成电路或其它连接、布置或分组在一起的组件,例如控制器、微处理器、数字信号处理器(“DSP”)、阵列处理器、图形或图像处理器、并行处理器、多核处理器、定制IC、专用集成电路(“ASIC”)、现场可编程门阵列(“FPGA”)、自适应计算IC、相关联存储器(例如RAM、DRAM和ROM),以及其它IC和组件(不管是模拟的还是数字的)。因此,如本文中所使用,术语处理器或控制器应理解为等效地意指和包含单个IC,或定制IC、ASIC、处理器、微处理器、控制器、FPGA、自适应计算IC的布置,或与相关联存储器一起执行本文中所论述的功能的集成电路的一些其它分组,所述相关联存储器例如微处理器存储器或额外RAM、DRAM、SDRAM、SRAM、MRAM、ROM、FLASH、EPROM或E2PROM。如本文中所论述,处理器110、110A与相关联存储器可被调适或配置成(经由编程、FPGA互连,或硬布线)执行本发明的方法。举例来说,方法可当处理器110、110A是操作性的(即,通电并且起作用)时作为用于连续执行的程序指令或其它代码集(或等效配置或其它程序),通过其相关联存储器(和/或存储器125)和其它等效组件编程并存储于处理器110、110A中。等效地,当处理器110、110A可整体或部分地实施为FPGA、定制IC和/或ASIC时,FPGA、定制IC或ASIC还可被设计、配置和/或硬接线成实施本发明的方法。举例来说,处理器110、110A可实施为模拟和/或数字电路、控制器、微处理器DSP和/或ASIC的布置,统称为“处理器”或“控制器”,其分别被硬接线、编程、设计、调适或配置成实施本发明的方法,包含可能地结合存储器125实施本发明的方法。
取决于所选择的实施例,第一存储器电路125和第二存储器电路175可包含数据存储库(或数据库),可以任何数目个形式实现,包含实现在任何计算机或其它机器可读数据存储媒体、存储器装置或目前已知或将来变得可用的其它用于信息存储或通信的存储或通信装置内,包含但不限于存储器集成电路(“IC”),或集成电路的存储器部分(例如处理器110、110A或处理器IC内的常驻存储器),不管是挥发性的还是非挥发性的,是可拆卸的还是不可拆卸的,包含但不限于RAM、FLASH、DRAM、SDRAM、SRAM、MRAM、FeRAM、ROM、EPROM或E2PROM,或任何其它形式的存储器装置,例如磁性硬盘驱动器、光盘驱动器、磁盘或磁带驱动器、硬盘驱动器、其它机器可读存储或存储器媒体,例如软盘、CDROM、CD-RW、数字通用光盘(DVD)或其它光学存储器,或者已知或变成已知的任何其它类型的存储器、存储媒体、或数据存储设备或电路。存储器125、175可用于存储各种查找表、参数、系数、其它信息和数据、(本发明的软件的)程序或指令,以及其它类型的表,例如数据库表。
如上文所指示,处理器110、110A使用本发明的软件和数据结构经硬接线或编程以例如执行本发明的方法。因此,本发明的系统和相关方法包含各种指令,其可实现为提供上文所论述的这类编程或其它指令(例如实现于非暂时性计算机可读媒体内的指令集和/或元数据)的软件。另外,元数据也可用于定义查找表或数据库的各种数据结构。借助于实例但非限制,这类软件可呈源或目标代码的形式。源代码另外可编译成某一形式的指令或目标代码(包含汇编语言指令或配置信息)。本发明的软件、源代码或元数据可实现为任何类型的代码,例如C、C++、Matlab、SystemC、LISA、XML、Java、Brew、SQL和其变型(例如,SQL 99或专属版本的SQL)、DB2、Oracle或执行本文中所论述的功能性的任何其它类型的编程语言,包含各种硬件定义或硬件建模语言(例如,Verilog、VHDL、RTL)和所得数据库文件(例如,GDSII)。因此,如本文中等效地使用的“构造”、“程序构造”、“软件构造”或“软件”意指且指代具有任何语法或特征标志的任何类别的任何编程语言,其提供或可解释为提供指定的相关联功能性或方法(当实例化或加载到处理器或计算机中并且被执行时,包含例如处理器110、110A)。
本发明的软件、元数据或其它源代码和任何所得位文件(目标代码、数据库或查找表)可以体现在任何有形的非暂时性存储媒体(例如,计算机或其它机器可读数据存储媒体中的任一个)内,作为计算机可读指令、数据结构、程序模块或其它数据,例如上文关于存储器125(例如,软盘、CDROM、CD-RW、DVD、磁性硬盘驱动器、光盘驱动器或任何其它类型的数据存储设备或媒体,如上文所提及)所论述。
通信接口130用于适当连接到相关通道、网络或总线;例如通信接口130可提供用于有线或无线接口的阻抗匹配、驱动和其它功能,可提供用于无线接口的解调和模/数转换,并且可提供分别用于处理器110、110A和/或存储器125的与其它装置的物理接口。一般来说,通信接口130用以取决于所选择的实施例而接收和发射数据,例如程序指令、参数、配置信息、控制消息、数据和其它相关信息。
通信接口130可实施为已知的或可在所属领域中变成已知的,以使用任何适用标准(例如但不限于各种PCI、USB、RJ 45、以太网(快速以太网、千兆以太网、300ase-TX、300ase-FX等)、IEEE 802.11、蓝牙、WCDMA、WiFi、GSM、GPRS、EDGE、3G和上文所提及的其它标准和系统中的一个)提供系统50、50A和任何类型的网络或外部装置(例如无线、光学或有线)之间的数据通信,并且可包含阻抗匹配能力、用于低电压处理器与较高电压控制总线、有线或无线收发器介接的电压转换,以及各种响应于来自处理器110、110A的信令而使各种线或连接器接通或关断的交换机制(例如,晶体管)。另外,通信接口130也可被配置成和/或被调适成在系统50、50A外部,例如通过硬布线或RF或红外线信令接收和/或发射信号,例如以实时地接收信息来供在例如显示器输出。通信接口130可使用任何所选架构,提供连接到任何类型的总线或网络结构或媒体。借助于实例但不限于,这类架构包含工业标准结构(ISA)总线、增强型ISA(EISA)总线、微通道架构(MCA)总线、外围组件互连(PCI)总线、SAN总线,或任何其它通信或信令媒体,例如以太网、ISDN、T1、卫星、无线等。
本公开应被视为本发明的原理的范例,并且不意图使本发明限于所示的特定实施例。就此而言,应理解,本发明的应用不限于上文和下文所阐述的、图式中所示的或实例中所描述的构造细节和组件布置。根据本发明的系统、方法和设备能够有其它实施例并且能够用各种方式实践和实行。
尽管本发明已相对于其具体实施例描述,这些实施例仅为说明性的,并不限制本发明。在本文的描述中,提供许多特定细节,例如电子组件、电子和结构连接、材料以和结构变化的实例,以提供对本发明的实施例的透彻理解。然而,相关领域的技术人员将认识到,可在没有具体细节中的一或多个的情况下,或利用其它设备、系统、组合件、组件、材料、零件等实践本发明的实施例。在其它情况下,为了避免混淆本发明的实施例的各方面,未专门示出或详细描述熟知的结构、材料或操作。此外,各种图式未按比例绘制,并且不应该被看作具有限制性。
贯穿本说明书对“一个实施例”、“实施例”或特定“实施例”的参考意味着结合实施例描述的特定特征、结构或特性包含在本发明的至少一个实施例中且不必在所有实施例中,并且另外,不必指代相同实施例。此外,本发明的任何具体实施例的特定特征、结构或特性可以任何合适方式和与一或多个其它实施例的任何适当的组合(包含使用没有其它特征的对应使用的所选特征)组合。此外,可作出许多修改以使具体应用、情形或材料调适本发明的基本范围和精神。应理解,本文中所描述的和所示出的本发明的实施例的其它变化和修改根据本文中的教示是可能的,并且将被视为本发明的精神和范围的部分。
为了叙述本文的数值范围,明确涵盖它们之间具有相同精确度的每一个插入数值。举例来说,对于范围6-9,除了6和9之外涵盖数值7和8,并且对于范围6.0-7.0,明确涵盖数值6.0、6.1、6.2、6.3、6.4、6.5、6.6、6.7、6.8、6.9以及7.0。另外,设想了呈任何组合形式的范围内的每个插入子范围,它们在本公开的范围内。举例来说,对于范围5-10,设想了子范围5-6、5-7、5-8、5-9、6-7、6-8、6-9、6-10、7-8、7-9、7-10、8-9、8-10和9-10,它们在所公开的范围的范围内。
同样将了解,图式中所描绘的元件中的一或多个还可以更独立或集成的方式实施,或甚至如当其根据具体应用可为有用的时候,在某些情况下可被移除或呈现为不可操作。组件的一体化形成组合也在本发明的范围内,尤其是对于其中离散组件的分离或组合不明确或难以辨别的实施例。另外,本文使用的术语“耦合(coupled)”,包含其各种形式(“coupling”或“couplable”),是指并包含任何直接或间接的电、结构或磁耦合、连接或附接,或用于这种直接或间接的电、结构或磁耦合、连接或附接的调适或能力,包含一体形成的组件和经由或通过另一组件耦合的组件。
至于信号,在本文中指代的是“表示”给定度量或“代表”给定度量的参数,其中度量是调节器的至少部分的状态或其输入或输出的量度。如果参数与度量充分直接相关,使得调节参数能够令人满意地调节所述度量,那么参数被视为表示所述度量。如果参数表示多个或一部分度量,那么参数可被视为所述度量的可接受表示。
此外,附图/图式中的任何信号箭头应被视为仅仅是示例性的且不具有限制性,除非另外特别指出。步骤的组成部分的组合也将被视为在本发明的范围内,尤其是在分离或组合的能力不明确或可预见的时候。如遍及所附权利要求书和本文所使用的分离性术语“或”大体上意在意味着“和/或”,除非另有指示,否则其具有结合和分离性含义两者(并且并不被限制于“异或”含义)。如在本文中的描述和遍及所附权利要求书所使用的,除非上下文另外明确规定,否则“一种(a/an)”和“所述”包含多个提及物。并且,除非上下文另外明确规定,否则如在本文中的描述中和贯穿所附权利要求书所使用,“在…中(in)”的含义包括“在…中(in)”和“在…上(on)”。
所示出的本发明的实施例的前述描述,包含发明内容或摘要中的描述,并不意图为穷尽性的或将本发明限制于本文所公开的精确形式。根据前述,将观察到,可在不脱离本发明的新颖概念的精神和范围的情况下,预期并且可实现大量的变化、修改和替代。应理解,不意在限制本文所示出的特定方法和设备或不应推断所述限制。当然,本发明意在通过所附权利要求书将所有此类修改涵盖为属于权利要求书的范围。
Claims (50)
1.一种存储器控制器电路,其可耦合到第一存储器电路,所述存储器控制器包括:
第一存储器控制电路,其可耦合到所述第一存储器电路,所述第一存储器控制电路被调适成响应于读取请求而从所述第一存储器电路读取或加载所请求的数据并且响应于写入请求而将所请求的数据写入或存储到所述第一存储器电路;
可编程原子操作电路系统,其耦合到所述第一存储器控制电路,所述可编程原子操作电路系统被调适成响应于指定多个可编程原子操作中的至少一个可编程原子操作的原子操作请求而执行所述至少一个可编程原子操作;
第二存储器电路;和
第二存储器控制电路,其耦合到所述第二存储器电路和所述第一存储器控制电路,所述第二存储器控制电路被调适成响应于指定所述至少一个可编程原子操作和存储器地址的原子操作请求,将所述原子操作请求传送到所述可编程原子操作电路系统并且设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位。
2.根据权利要求1所述的存储器控制器电路,其中指定所述至少一个可编程原子操作的所述原子操作请求包括物理存储器地址、预定原子操作识别符和至少一个线程状态寄存器值。
3.根据权利要求2所述的存储器控制器电路,其中所述可编程原子操作电路系统另外包括:
至少一个寄存器,其存储线程状态信息。
4.根据权利要求3所述的存储器控制器电路,其中所述可编程原子操作电路系统被进一步调适成响应于接收到指定所述至少一个可编程原子操作的所述原子操作请求,用所述物理存储器地址、对应于所述存储器地址的任何数据以及所述至少一个线程状态寄存器值来初始化所述至少一个寄存器。
5.根据权利要求1所述的存储器控制器电路,其中所述第二存储器控制电路被进一步调适成当所述所请求的数据存储于所述第二存储器电路中时,响应于读取的读取请求而从所述第二存储器电路读取或加载所述所请求的数据,并且当所述所请求的数据不存储于所述第二存储器电路中时,将所述读取请求传送到所述第一存储器控制电路。
6.根据权利要求1所述的存储器控制器电路,其另外包括:
预定原子操作电路系统,其被调适成响应于指定多个预定原子操作中的至少一个预定原子操作的原子操作请求而执行所述至少一个预定原子操作。
7.根据权利要求6所述的存储器控制器电路,其中所述多个预定原子操作包括选自由以下组成的群组的至少两个预定原子操作:提取并AND、提取并OR、提取并XOR、提取并相加、提取并相减、提取并递增、提取并递减、提取并最小化、提取并最大化、提取并交换、比较并交换,以及其组合。
8.根据权利要求1所述的存储器控制器电路,其中所述可编程原子操作电路系统包括:
指令高速缓存器,其存储对应于所述至少一个可编程原子操作的多个处理器指令;
执行队列,其存储对应于所述可编程原子操作的线程识别符;
核心控制电路,其耦合到所述指令高速缓存器并且耦合到所述执行队列,所述核心控制电路被调适成响应于对应于所述可编程原子操作的所述线程识别符,选择所述指令高速缓存器中的开始或下一指令或指令地址以用于执行所述可编程原子操作;和
处理器核心,其被调适成执行用于所述可编程原子操作的至少一个指令并且产生所得数据。
9.根据权利要求8所述的存储器控制器电路,其中所述可编程原子操作电路系统另外包括:
存储器控制器接口电路,其耦合到所述处理器核心并且接收所述所得数据并将所述所得数据传送到所述第二存储器控制电路以将所述所得数据写入到所述第二存储器电路。
10.根据权利要求9所述的存储器控制器电路,其另外包括:
网络通信接口,其可耦合到通信网络并且耦合到所述存储器控制器接口电路,所述网络通信接口被调适成准备并在所述通信网络上发射具有所述所得数据的响应数据分组。
11.根据权利要求8所述的存储器控制器电路,其中所述可编程原子操作电路系统另外包括:
至少一个数据缓冲器,其存储从执行用于所述可编程原子操作的所述至少一个指令产生的操作数数据和中间结果。
12.根据权利要求8所述的存储器控制器电路,其中所述可编程原子操作电路系统另外包括:
网络命令队列,其耦合到所述处理器核心,所述网络命令队列存储所得数据;和
网络通信接口,其耦合到所述网络命令队列并且可耦合到通信网络,所述网络通信接口被调适成准备并在所述通信网络上发射具有所述所得数据的响应数据分组。
13.根据权利要求8所述的存储器控制器电路,其中所述处理器核心耦合到数据缓冲器,且其中所述处理器核心被进一步调适成执行加载非缓冲指令以确定操作数是否存储于所述数据缓冲器中,并且当所述数据不存储于所述数据缓冲器中时,产生发到所述第二存储器控制电路的读取请求。
14.根据权利要求8所述的存储器控制器电路,其中所述处理器核心被进一步调适成执行存储并清除锁定指令以产生发到所述第二存储器控制电路的原子写入请求,所述原子写入请求具有所述所得数据和用以在将所述所得数据写入到所述第二存储器电路之后重置或清除存储器危险位的指定。
15.根据权利要求8所述的存储器控制器电路,其中所述处理器核心被进一步调适成执行原子返回指令以在将所述所得数据写入到所述第二存储器电路之后重置或清除存储器危险位。
16.根据权利要求8所述的存储器控制器电路,其中所述处理器核心被进一步调适成执行原子返回指令以产生具有所述所得数据的响应数据分组。
17.根据权利要求8所述的存储器控制器电路,其中所述处理器核心被进一步调适成执行原子返回指令以完成原子操作。
18.根据权利要求1所述的存储器控制器电路,其另外包括:
网络通信接口,其可耦合到通信网络并且耦合到所述第一存储器控制电路和所述第二存储器控制电路,所述网络通信接口被调适成解码从所述通信网络接收的多个请求分组,并且准备并在所述通信网络上发射多个响应数据分组。
19.根据权利要求1所述的存储器控制器电路,其中所述可编程原子操作电路系统被调适成执行用户定义的原子操作、多循环操作、浮点操作和多指令操作。
20.根据权利要求1所述的存储器控制器电路,其另外包括:
写入合并电路,其被调适成将从所述第一存储器电路读取的数据写入或存储到所述第二存储器电路。
21.根据权利要求1所述的存储器控制器电路,其中所述第二存储器控制电路被进一步调适成当所述所请求的数据存储于所述第二存储器电路中时,响应于原子操作请求而从所述第二存储器电路读取或加载所述所请求的数据,并且当所述所请求的数据不存储于所述第二存储器电路中时,将所述原子操作请求传送到所述第一存储器控制电路。
22.根据权利要求1所述的存储器控制器电路,其中所述第二存储器控制电路被进一步调适成响应于写入请求或响应于原子操作请求而将数据写入或存储到所述第二存储器电路。
23.根据权利要求1所述的存储器控制器电路,其中所述第二存储器控制电路被进一步调适成响应于指定所述第二存储器电路中的存储器地址的写入请求,设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,并且在将数据在所述存储器地址处写入或存储到所述第二存储器电路之后,重置或清除所述设置的危险位。
24.根据权利要求1所述的存储器控制器电路,其中所述第二存储器控制电路被进一步调适成响应于具有写入数据并且指定所述第二存储器电路中的存储器地址的写入请求,将存储于所述存储器地址处的当前数据传送到所述第一存储器控制电路以将所述当前数据写入到所述第一存储器电路,并且用所述写入数据覆写所述第二存储器电路中的所述当前数据。
25.根据权利要求1所述的存储器控制器电路,其中所述第二存储器控制电路被进一步调适成响应于具有写入数据并且指定所述第二存储器电路中的存储器地址的写入请求,设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,将存储于所述存储器地址处的当前数据传送到所述第一存储器控制电路以将所述当前数据写入到所述第一存储器电路,用所述写入数据覆写所述第二存储器电路中的所述当前数据,并且在将所述写入数据在所述存储器地址处写入或存储到所述第二存储器电路之后,重置或清除所述设置的危险位。
26.根据权利要求1所述的存储器控制器电路,其中所述第二存储器控制电路被进一步调适成将来自所述预定原子操作的所得数据写入于所述第二存储器电路中,并且在写入所述所得数据之后,重置或清除所述设置的危险位。
27.根据权利要求1所述的存储器控制器电路,其中所述第一存储器控制电路包括:
多个存储器库请求队列,其存储发到所述第一存储器电路的多个读取或写入请求;
调度器电路,其耦合到所述多个存储器库请求队列,所述调度器被调适成从所述多个存储器库请求队列选择所述多个读取或写入请求中的一读取或写入请求并且调度所述读取或写入请求以用于存取所述第一存储器电路;和
第一存储器存取控制电路,其耦合到所述调度器,所述第一存储器存取控制电路被调适成从所述第一存储器电路读取或加载数据并且将数据写入或存储到所述第一存储器电路。
28.根据权利要求27所述的存储器控制器电路,其中所述第一存储器控制电路另外包括:
多个存储器请求队列,其存储多个存储器请求;
请求选择多路复用器,其从所述多个存储器请求队列选择存储器请求;
多个存储器数据队列,其存储对应于所述多个存储器请求的数据;和
数据选择多路复用器,其从所述多个存储器数据队列选择数据,所述所选择的数据对应于所述所选择的存储器请求。
29.根据权利要求1所述的存储器控制器电路,其中所述第二存储器控制电路包括:
网络请求队列,其存储读取请求或写入请求;
原子操作请求队列,其存储原子操作请求;
流入请求多路复用器,其耦合到所述网络请求队列和所述原子操作请求队列以选择来自所述网络请求队列或所述原子操作请求队列的请求;
存储器危险控制电路,其具有一或多个存储器危险寄存器;和
第二存储器存取控制电路,其耦合到所述存储器危险控制电路和所述流入请求多路复用器,所述第二存储器存取控制电路被调适成响应于所述所选择的请求而从所述第二存储器电路读取或加载数据并且将数据写入或存储到所述第二存储器电路,并且发信号通知所述存储器危险控制电路设置或清除存储于所述一或多个存储器危险寄存器中的危险位。
30.根据权利要求29所述的存储器控制器电路,其中所述第二存储器控制电路另外包括:
延迟电路,其耦合到所述第二存储器存取控制电路;和
流入控制多路复用器,其选择需要存取所述第一存储器电路的流入网络请求或当所述第二存储器电路的高速缓存行含有将在被来自读取请求或写入请求的数据覆写之前写入到所述第一存储器电路的数据时,选择来自所述第二存储器电路的高速缓存逐出请求。
31.根据权利要求1所述的存储器控制器电路,其中所述存储器控制器电路耦合到通信网络以用于将多个写入数据请求分组、多个写入数据请求分组、多个预定原子操作请求分组、多个可编程原子操作请求分组路由到所述存储器控制器电路,并且将来自所述存储器控制器电路的多个响应数据分组路由到请求源地址。
32.根据权利要求1所述的存储器控制器电路,其中所述可编程原子操作电路系统包括:
处理器电路,其通过无开关直接通信总线耦合到所述第一存储器控制电路。
33.根据权利要求1所述的存储器控制器电路,其中所述第一存储器控制电路、所述第二存储器电路、所述第二存储器控制电路、所述预定原子操作电路系统和所述可编程原子操作电路系统实现为单个集成电路或单个芯片上系统SOC。
34.根据权利要求1所述的存储器控制器电路,其中所述第一存储器控制电路、所述第二存储器电路、所述第二存储器控制电路和所述预定原子操作电路系统实现为第一集成电路,且所述可编程原子操作电路系统实现为通过无开关直接通信总线耦合到所述第一集成电路的第二集成电路。
35.根据权利要求1所述的存储器控制器电路,其中所述可编程原子操作电路系统被调适成产生读取请求并且产生发到所述第二存储器电路的写入请求。
36.根据权利要求1所述的存储器控制器电路,其中所述可编程原子操作电路系统被调适成执行算术操作、逻辑操作和控制流决策。
37.根据权利要求1所述的存储器控制器电路,其中所述第一存储器电路包括动态随机存取存储器DRAM电路系统,且所述第二存储器电路包括静态随机存取存储器SRAM电路系统。
38.一种使用存储器控制器电路执行可编程原子操作的方法,所述存储器控制器电路可耦合到第一存储器电路,所述方法包括:
使用可耦合到所述第一存储器电路的第一存储器控制电路,响应于读取请求而从所述第一存储器电路读取或加载所请求的数据并且响应于写入请求而将所请求的数据写入或存储到所述第一存储器电路;
使用耦合到第二存储器电路的第二存储器控制电路,当所述所请求的数据存储于所述第二存储器电路中时,响应于读取的读取请求而从所述第二存储器电路读取或加载所述所请求的数据,并且当所述所请求的数据不存储于所述第二存储器电路中时,将所述读取请求传送到所述第一存储器控制电路,并且响应于指定至少一个可编程原子操作和存储器地址的原子操作请求,将所述原子操作请求传送到可编程原子操作电路系统并且设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位;
使用预定原子操作电路系统,响应于指定多个预定原子操作中的至少一个预定原子操作的原子操作请求而执行所述至少一个预定原子操作;和
使用所述可编程原子操作电路系统,响应于指定多个可编程原子操作中的至少一个可编程原子操作的原子操作请求而执行所述至少一个可编程原子操作。
39.根据权利要求38所述的方法,其中所述可编程原子操作电路系统包括耦合到数据缓冲器的处理器核心,且其中所述方法另外包括:
使用所述处理器核心,执行加载非缓冲指令以确定操作数是否存储于所述数据缓冲器中,并且当所述数据不存储于所述数据缓冲器中时,产生发到所述第二存储器控制电路的读取请求。
40.根据权利要求38所述的方法,其中所述可编程原子操作电路系统包括处理器核心,且其中所述方法另外包括:
使用所述处理器核心,执行存储并清除锁定指令以产生发到所述第二存储器控制电路的原子写入请求,所述原子写入请求具有所述所得数据和用以在将所述所得数据写入到所述第二存储器电路之后重置或清除存储器危险位的指定。
41.根据权利要求38所述的方法,其中所述可编程原子操作电路系统包括处理器核心,且其中所述方法另外包括:
使用所述处理器核心,执行原子返回指令以在将所述所得数据写入到所述第二存储器电路之后重置或清除存储器危险位。
42.根据权利要求38所述的方法,其中所述可编程原子操作电路系统包括处理器核心,且其中所述方法另外包括:
使用所述处理器核心,执行原子返回指令以产生具有所述所得数据的响应数据分组。
43.根据权利要求38所述的方法,其中所述可编程原子操作电路系统包括处理器核心,且其中所述方法另外包括:
使用所述处理器核心,执行原子返回指令以完成原子操作。
44.根据权利要求38所述的方法,其中指定所述至少一个可编程原子操作的所述原子操作请求包括物理存储器地址、预定原子操作识别符和至少一个线程状态寄存器值。
45.根据权利要求44所述的方法,其中所述可编程原子操作电路系统另外包括存储线程状态信息的至少一个寄存器,且其中所述方法另外包括:
使用所述可编程原子操作电路系统,响应于接收到指定所述至少一个可编程原子操作的所述原子操作请求,用所述物理存储器地址、对应于所述存储器地址的任何数据以及所述至少一个线程状态寄存器值来初始化所述至少一个寄存器。
46.根据权利要求38所述的方法,其另外包括:
使用所述第二存储器控制电路,当所述所请求的数据存储于所述第二存储器电路中时,响应于原子操作请求而从所述第二存储器电路读取或加载所述所请求的数据,并且当所述所请求的数据不存储于所述第二存储器电路中时,将所述原子操作请求传送到所述第一存储器控制电路。
47.根据权利要求38所述的方法,其另外包括:
使用所述第二存储器控制电路,响应于指定所述第二存储器电路中的存储器地址的写入请求,设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,并且在将数据在所述存储器地址处写入或存储到所述第二存储器电路之后,重置或清除所述设置的危险位。
48.根据权利要求38所述的方法,其另外包括:
使用所述第二存储器控制电路,响应于具有写入数据并且指定所述第二存储器电路中的存储器地址的写入请求,将存储于所述存储器地址处的当前数据传送到所述第一存储器控制电路以将所述当前数据写入到所述第一存储器电路,并且用所述写入数据覆写所述第二存储器电路中的所述当前数据。
49.根据权利要求38所述的方法,其另外包括:
使用所述第二存储器控制电路,响应于具有写入数据并且指定所述第二存储器电路中的存储器地址的写入请求,设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,将存储于所述存储器地址处的当前数据传送到所述第一存储器控制电路以将所述当前数据写入到所述第一存储器电路,用所述写入数据覆写所述第二存储器电路中的所述当前数据,并且在将所述写入数据在所述存储器地址处写入或存储到所述第二存储器电路之后,重置或清除所述设置的危险位。
50.一种可耦合到第一存储器电路的存储器控制器,所述存储器控制器包括:
第一存储器控制电路,其可耦合到所述第一存储器电路,所述第一存储器控制电路包括:
多个存储器库请求队列,其存储发到所述第一存储器电路的多个读取或写入请求;
调度器电路,其耦合到所述多个存储器库请求队列,所述调度器被调适成从所述多个存储器库请求队列选择所述多个读取或写入请求中的一读取或写入请求并且调度所述读取或写入请求以用于存取所述第一存储器电路;和
第一存储器存取控制电路,其耦合到所述调度器,所述第一存储器存取控制电路被调适成从所述第一存储器电路读取或加载数据并且将数据写入或存储到所述第一存储器电路;
第二存储器电路;
预定原子操作电路系统,其被调适成执行多个预定原子操作中的至少一个预定原子操作;和
可编程原子操作电路系统,其被调适成执行多个可编程原子操作中的至少一个可编程原子操作;和
第二存储器控制电路,其耦合到所述第二存储器电路,所述第二存储器控制电路包括:
至少一个输入请求队列,其存储读取或写入请求;
存储器危险控制电路,其具有存储器危险寄存器;和
第二存储器存取控制电路,其被调适成从所述第二存储器电路读取或加载数据并且将数据写入或存储到所述第二存储器电路,所述第二存储器存取控制电路被进一步调适成响应于指定所述至少一个预定原子操作和存储器地址的原子操作请求,将所述原子操作请求传送到所述预定原子操作电路系统,设置存储于存储器危险寄存器中的对应于所述存储器地址的危险位,将来自所述预定原子操作的所得数据写入于所述第二存储器电路中,并且在写入所述所得数据之后,重置或清除所述设置的危险位。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862623331P | 2018-01-29 | 2018-01-29 | |
US62/623,331 | 2018-01-29 | ||
PCT/US2019/015467 WO2019148131A1 (en) | 2018-01-29 | 2019-01-28 | Memory controller with programmable atomic operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111656334A true CN111656334A (zh) | 2020-09-11 |
CN111656334B CN111656334B (zh) | 2024-07-12 |
Family
ID=67768617
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980010364.9A Active CN111656335B (zh) | 2018-01-29 | 2019-01-28 | 存储器控制器 |
CN201980010140.8A Active CN111656334B (zh) | 2018-01-29 | 2019-01-28 | 具有可编程原子操作的存储器控制器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980010364.9A Active CN111656335B (zh) | 2018-01-29 | 2019-01-28 | 存储器控制器 |
Country Status (4)
Country | Link |
---|---|
US (4) | US10915271B2 (zh) |
EP (3) | EP4276625A3 (zh) |
KR (2) | KR102407128B1 (zh) |
CN (2) | CN111656335B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113849433A (zh) * | 2021-09-14 | 2021-12-28 | 深圳市昂科技术有限公司 | 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质 |
CN114385240A (zh) * | 2020-10-20 | 2022-04-22 | 美光科技公司 | 组织可编程原子单元指令存储器的方法 |
CN114385545A (zh) * | 2020-10-20 | 2022-04-22 | 美光科技公司 | 针对可编程原子操作的存储器存取边界检查 |
CN114721996A (zh) * | 2022-06-09 | 2022-07-08 | 南湖实验室 | 一种分布式原子操作的实现方法与实现装置 |
US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
US11740929B2 (en) | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
US11829323B2 (en) | 2020-10-20 | 2023-11-28 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
US11989556B2 (en) | 2020-10-20 | 2024-05-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
US12020062B2 (en) | 2020-10-20 | 2024-06-25 | Micron Technology, Inc. | Method of executing programmable atomic unit resources within a multi-process system |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10902166B2 (en) * | 2017-12-31 | 2021-01-26 | Arteris, Inc. | System and method for isolating faults in a resilient system |
US11416422B2 (en) | 2019-09-17 | 2022-08-16 | Micron Technology, Inc. | Memory chip having an integrated data mover |
US11397694B2 (en) | 2019-09-17 | 2022-07-26 | Micron Technology, Inc. | Memory chip connecting a system on a chip and an accelerator chip |
US11163490B2 (en) * | 2019-09-17 | 2021-11-02 | Micron Technology, Inc. | Programmable engine for data movement |
US11620222B2 (en) | 2020-08-28 | 2023-04-04 | Samsung Electronics Co., Ltd. | Methods and apparatus for atomic operations with multiple processing paths |
US11580044B2 (en) | 2020-08-31 | 2023-02-14 | Micron Technology, Inc. | Network credit return mechanisms |
US11539623B2 (en) | 2020-08-31 | 2022-12-27 | Micron Technology, Inc. | Single field for encoding multiple elements |
US11412075B2 (en) | 2020-08-31 | 2022-08-09 | Micron Technology, Inc. | Multiple protocol header processing |
US11418455B2 (en) | 2020-08-31 | 2022-08-16 | Micron Technology, Inc. | Transparent packet splitting and recombining |
US11488643B2 (en) | 2020-08-31 | 2022-11-01 | Micron Technology, Inc. | Method for configuring multiple input-output channels |
US11362939B2 (en) | 2020-08-31 | 2022-06-14 | Micron Technology, Inc. | Flow control for a multiple flow control unit interface |
US11356378B2 (en) | 2020-08-31 | 2022-06-07 | Micron Technology, Inc. | Combined write enable mask and credit return field |
US11360920B2 (en) | 2020-08-31 | 2022-06-14 | Micron Technology, Inc. | Mapping high-speed, point-to-point interface channels to packet virtual channels |
US11296995B2 (en) | 2020-08-31 | 2022-04-05 | Micron Technology, Inc. | Reduced sized encoding of packet length field |
US11588745B2 (en) | 2020-08-31 | 2023-02-21 | Micron Technology, Inc. | Early credit return for credit-based flow control |
US11733920B2 (en) * | 2020-09-10 | 2023-08-22 | Western Digital Technologies, Inc. | NVMe simple copy command support using dummy virtual function |
CN112099853B (zh) * | 2020-09-17 | 2021-10-29 | 广东高云半导体科技股份有限公司 | 基于fpga实现的risc-v处理器、fpga芯片及片上系统 |
US11409539B2 (en) | 2020-10-20 | 2022-08-09 | Micron Technology, Inc. | On-demand programmable atomic kernel loading |
US11803391B2 (en) | 2020-10-20 | 2023-10-31 | Micron Technology, Inc. | Self-scheduling threads in a programmable atomic unit |
US11614942B2 (en) | 2020-10-20 | 2023-03-28 | Micron Technology, Inc. | Reuse in-flight register data in a processor |
US11409533B2 (en) | 2020-10-20 | 2022-08-09 | Micron Technology, Inc. | Pipeline merging in a circuit |
US11586443B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Thread-based processor halting |
US11431653B2 (en) | 2020-10-20 | 2022-08-30 | Micron Technology, Inc. | Packet arbitration for buffered packets in a network device |
US11614891B2 (en) * | 2020-10-20 | 2023-03-28 | Micron Technology, Inc. | Communicating a programmable atomic operator to a memory controller |
US11294848B1 (en) | 2020-10-20 | 2022-04-05 | Micron Technology, Inc. | Initialization sequencing of chiplet I/O channels within a chiplet system |
US11600332B2 (en) * | 2020-10-20 | 2023-03-07 | Micron Technology, Inc. | Programmable atomic operator resource locking |
US11520718B2 (en) | 2020-10-20 | 2022-12-06 | Micron Technology, Inc. | Managing hazards in a memory controller |
US11507453B2 (en) | 2020-10-20 | 2022-11-22 | Micron Technology, Inc. | Low-latency register error correction |
US11526361B2 (en) | 2020-10-20 | 2022-12-13 | Micron Technology, Inc. | Variable pipeline length in a barrel-multithreaded processor |
US11698853B2 (en) | 2020-12-31 | 2023-07-11 | Micron Technology, Inc. | Saturating local cache in memory-compute systems |
US11907718B2 (en) | 2020-12-31 | 2024-02-20 | Micron Technology, Inc. | Loop execution in a reconfigurable compute fabric using flow controllers for respective synchronous flows |
US11556268B2 (en) | 2021-04-22 | 2023-01-17 | Western Digital Technologies, Inc. | Cache based flow for a simple copy command |
US11740800B2 (en) | 2021-06-22 | 2023-08-29 | Micron Technology, Inc. | Alleviating memory hotspots on systems with multiple memory controllers |
US11762661B2 (en) | 2021-07-28 | 2023-09-19 | Micron Technology, Inc. | Counter for preventing completion of a thread including a non-blocking external device call with no-return indication |
US11768626B2 (en) | 2021-08-11 | 2023-09-26 | Micron Technology, Inc. | Stencil data access from tile memory |
US11861366B2 (en) | 2021-08-11 | 2024-01-02 | Micron Technology, Inc. | Efficient processing of nested loops for computing device with multiple configurable processing elements using multiple spoke counts |
US11604650B1 (en) | 2021-08-11 | 2023-03-14 | Micron Technology, Inc. | Packing conditional branch operations |
US11886728B2 (en) | 2021-08-13 | 2024-01-30 | Micron Technology, Inc. | Undo capability for memory devices |
US11709796B2 (en) | 2021-08-16 | 2023-07-25 | Micron Technology, Inc. | Data input/output operations during loop execution in a reconfigurable compute fabric |
US11782725B2 (en) | 2021-08-16 | 2023-10-10 | Micron Technology, Inc. | Mask field propagation among memory-compute tiles in a reconfigurable architecture |
US11853216B2 (en) | 2021-08-16 | 2023-12-26 | Micron Technology, Inc. | High bandwidth gather cache |
US11841823B2 (en) | 2021-08-16 | 2023-12-12 | Micron Technology, Inc. | Connectivity in coarse grained reconfigurable architecture |
US11704130B2 (en) | 2021-08-16 | 2023-07-18 | Micron Technology, Inc. | Indexing external memory in a reconfigurable compute fabric |
US11507493B1 (en) | 2021-08-18 | 2022-11-22 | Micron Technology, Inc. | Debugging dataflow computer architectures |
US20230056500A1 (en) * | 2021-08-18 | 2023-02-23 | Micron Technology, Inc. | Chained resource locking |
US11675588B2 (en) | 2021-08-20 | 2023-06-13 | Micron Technology, Inc. | Tile-based result buffering in memory-compute systems |
US11860800B2 (en) | 2021-08-20 | 2024-01-02 | Micron Technology, Inc. | Kernel mapping to nodes in compute fabric |
US20220114098A1 (en) * | 2021-12-22 | 2022-04-14 | Intel Corporation | System, apparatus and methods for performing shared memory operations |
CN116897581A (zh) * | 2022-01-29 | 2023-10-17 | 华为技术有限公司 | 计算任务调度装置、计算装置、计算任务调度方法和计算方法 |
US20230315661A1 (en) * | 2022-04-01 | 2023-10-05 | Texas Instruments Incorporated | Methods and apparatus to configure an integrated circuit using a direct memory access controller |
US11899953B1 (en) | 2022-08-30 | 2024-02-13 | Micron Technology, Inc. | Method of efficiently identifying rollback requests |
US11960403B2 (en) | 2022-08-30 | 2024-04-16 | Micron Technology, Inc. | Variable execution time atomic operations |
US11940919B2 (en) | 2022-08-30 | 2024-03-26 | Micron Technology, Inc. | Recall pending cache line eviction |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050135176A1 (en) * | 2003-12-18 | 2005-06-23 | Siva Ramakrishnan | Synchronizing memory copy operations with memory accesses |
US7007099B1 (en) * | 1999-05-03 | 2006-02-28 | Lucent Technologies Inc. | High speed multi-port serial-to-PCI bus interface |
US20070005908A1 (en) * | 2005-06-29 | 2007-01-04 | Sridhar Lakshmanamurthy | Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces |
US20080002578A1 (en) * | 2006-06-30 | 2008-01-03 | Jerrie Coffman | Network with a constrained usage model supporting remote direct memory access |
US20080109565A1 (en) * | 2006-11-02 | 2008-05-08 | Jasmin Ajanovic | PCI express enhancements and extensions |
CN101861571A (zh) * | 2007-11-15 | 2010-10-13 | 美光科技公司 | 用于修改存储器存取次序的系统、设备及方法 |
CN103946732A (zh) * | 2011-09-26 | 2014-07-23 | 微软公司 | 基于对透视、近眼显示器的传感器输入的视频显示修改 |
CN104516831A (zh) * | 2013-09-26 | 2015-04-15 | 想象技术有限公司 | 原子存储器更新单元和方法 |
US20150143036A1 (en) * | 2013-11-19 | 2015-05-21 | Emu Solutions, Inc. | Exporting computational capabilities into a block-oriented disk memory |
US20150269065A1 (en) * | 2014-03-19 | 2015-09-24 | Qualcomm Incorporated | Hardware-based atomic operations for supporting inter-task communication |
US20170153975A1 (en) * | 2015-11-27 | 2017-06-01 | Arm Limited | Apparatus and method for handling atomic update operations |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4075686A (en) * | 1976-12-30 | 1978-02-21 | Honeywell Information Systems Inc. | Input/output cache system including bypass capability |
AU5634086A (en) * | 1985-05-06 | 1986-11-13 | Wang Laboratories, Inc. | Information processing system with enhanced instruction execution and support control |
JPH08185320A (ja) | 1994-12-28 | 1996-07-16 | Mitsubishi Electric Corp | 半導体集積回路 |
US5872963A (en) * | 1997-02-18 | 1999-02-16 | Silicon Graphics, Inc. | Resumption of preempted non-privileged threads with no kernel intervention |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6643762B1 (en) * | 2000-01-24 | 2003-11-04 | Hewlett-Packard Development Company, L.P. | Processing system and method utilizing a scoreboard to detect data hazards between instructions of computer programs |
US7155716B2 (en) * | 2002-03-08 | 2006-12-26 | Intel Corporation | Weighted and prioritized task scheduler |
US7210026B2 (en) | 2002-06-28 | 2007-04-24 | Sun Microsystems, Inc. | Virtual register set expanding processor internal storage |
US8825615B2 (en) * | 2004-05-11 | 2014-09-02 | Oracle International Corporation | Simplifying implementation of custom atomic transactions in a programming environment |
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
US7962923B2 (en) * | 2005-12-30 | 2011-06-14 | Level 3 Communications, Llc | System and method for generating a lock-free dual queue |
US8489817B2 (en) * | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US8032724B1 (en) * | 2007-04-04 | 2011-10-04 | Marvell International Ltd. | Demand-driven opportunistic garbage collection in memory components |
US8055633B2 (en) * | 2008-01-21 | 2011-11-08 | International Business Machines Corporation | Method, system and computer program product for duplicate detection |
US8131951B2 (en) * | 2008-05-30 | 2012-03-06 | Freescale Semiconductor, Inc. | Utilization of a store buffer for error recovery on a store allocation cache miss |
WO2010096263A2 (en) * | 2009-02-17 | 2010-08-26 | Rambus Inc. | Atomic-operation coalescing technique in multi-chip systems |
US9218290B2 (en) * | 2009-04-27 | 2015-12-22 | Intel Corporation | Data caching in a network communications processor architecture |
US9086973B2 (en) | 2009-06-09 | 2015-07-21 | Hyperion Core, Inc. | System and method for a cache in a multi-core processor |
US8850166B2 (en) * | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
US8572322B2 (en) * | 2010-03-29 | 2013-10-29 | Freescale Semiconductor, Inc. | Asynchronously scheduling memory access requests |
CN102906706A (zh) * | 2010-05-24 | 2013-01-30 | 索尼电脑娱乐公司 | 信息处理装置及信息处理方法 |
EP2598996B1 (en) * | 2010-07-28 | 2019-07-10 | SanDisk Technologies LLC | Apparatus, system, and method for conditional and atomic storage operations |
JP5680926B2 (ja) * | 2010-09-30 | 2015-03-04 | キヤノン株式会社 | プリントシステム、印刷方法、プリントサーバ及びその制御方法、並びにプログラム |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US9122476B2 (en) * | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
US9274937B2 (en) * | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
US8934332B2 (en) | 2012-02-29 | 2015-01-13 | International Business Machines Corporation | Multi-threaded packet processing |
CN104125089A (zh) * | 2013-04-28 | 2014-10-29 | 华为技术有限公司 | 网络事务控制方法及执行方法及网络控制器及转发设备 |
US9880971B2 (en) * | 2013-12-20 | 2018-01-30 | Rambus Inc. | Memory appliance for accessing memory |
US10761212B2 (en) * | 2015-10-30 | 2020-09-01 | Paypal, Inc. | User interface configurations for data transfers |
US10437480B2 (en) * | 2015-12-01 | 2019-10-08 | Futurewei Technologies, Inc. | Intelligent coded memory architecture with enhanced access scheduler |
US10387058B2 (en) * | 2016-09-29 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods to change data category values |
US10949235B2 (en) * | 2016-12-12 | 2021-03-16 | Intel Corporation | Network semantics integrated into central processing unit (CPU) chipset |
-
2019
- 2019-01-28 US US16/259,879 patent/US10915271B2/en active Active
- 2019-01-28 EP EP23199323.9A patent/EP4276625A3/en active Pending
- 2019-01-28 US US16/259,862 patent/US10956086B2/en active Active
- 2019-01-28 EP EP19707915.5A patent/EP3746903B1/en active Active
- 2019-01-28 EP EP19705276.4A patent/EP3746902B1/en active Active
- 2019-01-28 KR KR1020207024833A patent/KR102407128B1/ko active IP Right Grant
- 2019-01-28 KR KR1020207023320A patent/KR102407106B1/ko active IP Right Grant
- 2019-01-28 CN CN201980010364.9A patent/CN111656335B/zh active Active
- 2019-01-28 CN CN201980010140.8A patent/CN111656334B/zh active Active
-
2020
- 2020-12-21 US US17/128,862 patent/US11461048B2/en active Active
-
2021
- 2021-02-08 US US17/170,001 patent/US11604605B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007099B1 (en) * | 1999-05-03 | 2006-02-28 | Lucent Technologies Inc. | High speed multi-port serial-to-PCI bus interface |
US20050135176A1 (en) * | 2003-12-18 | 2005-06-23 | Siva Ramakrishnan | Synchronizing memory copy operations with memory accesses |
US20070005908A1 (en) * | 2005-06-29 | 2007-01-04 | Sridhar Lakshmanamurthy | Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces |
US20080002578A1 (en) * | 2006-06-30 | 2008-01-03 | Jerrie Coffman | Network with a constrained usage model supporting remote direct memory access |
US20080109565A1 (en) * | 2006-11-02 | 2008-05-08 | Jasmin Ajanovic | PCI express enhancements and extensions |
CN101861571A (zh) * | 2007-11-15 | 2010-10-13 | 美光科技公司 | 用于修改存储器存取次序的系统、设备及方法 |
CN103946732A (zh) * | 2011-09-26 | 2014-07-23 | 微软公司 | 基于对透视、近眼显示器的传感器输入的视频显示修改 |
CN104516831A (zh) * | 2013-09-26 | 2015-04-15 | 想象技术有限公司 | 原子存储器更新单元和方法 |
US20150143036A1 (en) * | 2013-11-19 | 2015-05-21 | Emu Solutions, Inc. | Exporting computational capabilities into a block-oriented disk memory |
US20150269065A1 (en) * | 2014-03-19 | 2015-09-24 | Qualcomm Incorporated | Hardware-based atomic operations for supporting inter-task communication |
US20170153975A1 (en) * | 2015-11-27 | 2017-06-01 | Arm Limited | Apparatus and method for handling atomic update operations |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114385240A (zh) * | 2020-10-20 | 2022-04-22 | 美光科技公司 | 组织可编程原子单元指令存储器的方法 |
CN114385545A (zh) * | 2020-10-20 | 2022-04-22 | 美光科技公司 | 针对可编程原子操作的存储器存取边界检查 |
CN114385545B (zh) * | 2020-10-20 | 2023-03-14 | 美光科技公司 | 针对可编程原子操作的存储器存取边界检查 |
US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
US11734173B2 (en) | 2020-10-20 | 2023-08-22 | Micron Technology, Inc. | Memory access bounds checking for a programmable atomic operator |
US11740929B2 (en) | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
US11829323B2 (en) | 2020-10-20 | 2023-11-28 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
US11989556B2 (en) | 2020-10-20 | 2024-05-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
US12020062B2 (en) | 2020-10-20 | 2024-06-25 | Micron Technology, Inc. | Method of executing programmable atomic unit resources within a multi-process system |
CN113849433A (zh) * | 2021-09-14 | 2021-12-28 | 深圳市昂科技术有限公司 | 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质 |
CN113849433B (zh) * | 2021-09-14 | 2023-05-23 | 深圳市昂科技术有限公司 | 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质 |
CN114721996A (zh) * | 2022-06-09 | 2022-07-08 | 南湖实验室 | 一种分布式原子操作的实现方法与实现装置 |
Also Published As
Publication number | Publication date |
---|---|
US11461048B2 (en) | 2022-10-04 |
US10956086B2 (en) | 2021-03-23 |
US11604605B2 (en) | 2023-03-14 |
CN111656335A (zh) | 2020-09-11 |
EP4276625A3 (en) | 2024-01-24 |
US20210149600A1 (en) | 2021-05-20 |
EP3746903A1 (en) | 2020-12-09 |
KR20200111722A (ko) | 2020-09-29 |
US20190272119A1 (en) | 2019-09-05 |
KR102407128B1 (ko) | 2022-06-10 |
KR20200113264A (ko) | 2020-10-06 |
US20190324928A1 (en) | 2019-10-24 |
EP3746902A1 (en) | 2020-12-09 |
EP4276625A2 (en) | 2023-11-15 |
EP3746903B1 (en) | 2022-03-09 |
EP3746902B1 (en) | 2023-09-27 |
US10915271B2 (en) | 2021-02-09 |
US20210181991A1 (en) | 2021-06-17 |
CN111656334B (zh) | 2024-07-12 |
KR102407106B1 (ko) | 2022-06-10 |
CN111656335B (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111656334B (zh) | 具有可编程原子操作的存储器控制器 | |
US11880687B2 (en) | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network | |
US20200201634A1 (en) | Streaming engine with cache-like stream data storage and lifetime tracking | |
US11573847B2 (en) | Streaming engine with deferred exception reporting | |
US11994949B2 (en) | Streaming engine with error detection, correction and restart | |
US10860326B2 (en) | Multi-threaded instruction buffer design | |
Dysart et al. | Highly scalable near memory processing with migrating threads on the Emu system architecture | |
JP5859017B2 (ja) | 処理クラスタのための制御ノード | |
US10572179B2 (en) | Speculatively performing memory move requests with respect to a barrier | |
US20200081864A1 (en) | Instructions for Performing Multi-Line Memory Accesses | |
US8930596B2 (en) | Concurrent array-based queue | |
CN115827065A (zh) | 使用早期和后期地址以及循环计数寄存器来跟踪架构状态的流引擎 | |
US12019920B2 (en) | Memory controller with programmable atomic operations | |
US20220059163A1 (en) | Extended memory communication | |
KR20180041037A (ko) | 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법 | |
WO2019148131A1 (en) | Memory controller with programmable atomic operations | |
US11176065B2 (en) | Extended memory interface | |
US20240070077A1 (en) | Memory side cache request handling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |