CN112559433B - 一种多核互联总线、核间通信方法及多核处理器 - Google Patents
一种多核互联总线、核间通信方法及多核处理器 Download PDFInfo
- Publication number
- CN112559433B CN112559433B CN201910913359.0A CN201910913359A CN112559433B CN 112559433 B CN112559433 B CN 112559433B CN 201910913359 A CN201910913359 A CN 201910913359A CN 112559433 B CN112559433 B CN 112559433B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- request
- processor core
- returned
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000006854 communication Effects 0.000 title claims abstract description 24
- 238000004891 communication Methods 0.000 title claims abstract description 22
- 230000004044 response Effects 0.000 claims abstract description 108
- 230000000977 initiatory effect Effects 0.000 claims abstract description 8
- 239000000872 buffer Substances 0.000 description 31
- 230000008569 process Effects 0.000 description 18
- 238000012545 processing Methods 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000003139 buffering effect Effects 0.000 description 6
- 238000003491 array Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 206010063385 Intellectualisation Diseases 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0877—Cache access modes
- G06F12/0884—Parallel mode, e.g. in parallel with main memory or CPU
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- 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/60—Details of cache memory
- G06F2212/603—Details of cache memory of operating mode, e.g. cache mode or local memory mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种多核互联总线,包括:请求收发模块,适于接收处理器核发来的数据请求,并将数据请求通过请求执行模块转发至侦听与缓存模块,数据请求包括请求地址;侦听与缓存模块,适于查找请求地址的缓存数据有效性信息,以及从共享缓存中获取数据,将缓存数据有效性信息和从共享缓存获取到的数据先后返回至请求执行模块;请求执行模块,适于根据缓存数据有效性信息来确定本地缓存中存有有效数据的目标处理器核,向目标处理器核转发数据请求并接收返回数据;以及从目标处理器核和侦听与缓存模块返回的数据中确定响应数据,将响应数据通过请求收发模块返回给发起数据请求的处理器核。本发明一并公开了相应的核间通信方法及多核处理器。
Description
技术领域
本发明涉及处理器技术领域,尤其涉及一种能够实现高效核间通信的多核互联总线,基于该多核互联总线的核间通信方法,以及包括该多核互联总线的多核处理器、片上系统及智能设备。
背景技术
为了提高处理器并行处理任务的能力,现代处理器多采用多核架构。多核处理器中的每个处理器核对存储器中数据的访问权限可能有所区别。在存储器中,能够被多个处理器核访问的地址为共享地址,仅能被某个特定处理器核访问的地址为非共享地址。
存储器的存取速度与处理器的执行速度并不匹配(前者低于后者)。目前,通常采用缓存机制来平衡存储器的存取速度与处理器的执行速度,即,在处理器中设置低容量的高速缓存(Cache)来缓存速度慢但成本低的存储器(Memory)中的数据。对于多核处理器,通常包括多级缓存。例如,每个处理器核内部设有本地缓存,本地缓存中的数据仅能由其所在的处理器核访问;在处理器核外部的多核互联总线上挂载有多个处理器核的共享缓存,共享缓存中的数据可以被多个处理器核访问。
当某一个处理器核发起针对共享地址的数据请求时,多核互联总线先向各处理器核转发数据请求,各处理器核访问其本地缓存,将数据返回给多核互联总线。若所有处理器核返回的数据均无效,再访问共享缓存。若共享缓存返回的数据也无效,则进一步访问下级存储单元(下级缓存或存储器)。该方法先访问本地缓存,再访问共享缓存,访问延时较长,性能损失。
因此,需要提供一种低延时、高效的核间通信方法及多核互联总线。
发明内容
为此,本发明提供一种多核互联总线、核间通信方法及多核处理器,以力图解决或至少缓解上面存在的问题。
根据本发明的第一个方面,提供一种多核互联总线,包括:请求收发模块,分别与处理器核和请求执行模块耦接,适于接收处理器核发来的数据请求,并将所述数据请求通过所述请求执行模块转发至侦听与缓存模块,所述数据请求包括请求地址;侦听与缓存模块,适于查找所述请求地址的缓存数据有效性信息,以及从共享缓存中获取数据,将所述缓存数据有效性信息和从共享缓存获取到的数据先后返回至所述请求执行模块;请求执行模块,适于根据所述缓存数据有效性信息来确定本地缓存中存有有效数据的目标处理器核,向目标处理器核转发所述数据请求,接收目标处理器核返回的数据;以及从目标处理器核和侦听与缓存模块返回的数据中确定响应数据,将所述响应数据通过所述请求收发模块返回给发起数据请求的处理器核。
可选地,在根据本发明的多核互联总线中,请求执行模块还适于:判断所述请求地址是否为共享地址;当所述请求地址为共享地址时,将所述数据请求转发至所述侦听与缓存模块;当所述请求地址不是共享地址时,访问与其耦接的下级存储单元以获取响应数据。
可选地,在根据本发明的多核互联总线中,缓存数据有效性信息适于确定各处理器核的本地缓存以及共享缓存中是否存有有效数据。
可选地,在根据本发明的多核互联总线中,缓存数据有效性信息包括共享缓存有效位和多个本地缓存有效位,所述共享缓存有效位适于标识共享缓存中的数据的有效性,所述多个本地缓存有效位适于标识多个处理器核的本地缓存中的数据的有效性。
可选地,在根据本发明的多核互联总线中,侦听与缓存模块存储有至少一个地址阵列,所述地址阵列包括多个地址所对应的缓存数据有效性信息;所述侦听与缓存模块进一步适于:通过将所述请求地址与所述地址阵列中的地址进行比对,来确定所述请求地址的缓存数据有效性信息。
可选地,在根据本发明的多核互联总线中,侦听与缓存模块还适于:在未查找到所述请求地址的缓存数据有效性信息时,将查找未命中的消息返回给所述请求执行模块,以便所述请求执行模块访问与其耦接的下级存储单元以获取响应数据。
可选地,在根据本发明的多核互联总线中,侦听与缓存模块进一步适于:根据所述缓存数据有效性信息,判断共享缓存中是否存有有效数据;在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据返回至请求执行模块。
可选地,在根据本发明的多核互联总线中,请求执行模块进一步适于:接收目标处理器核返回的数据以及该数据的有效性标签;当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
可选地,在根据本发明的多核互联总线中,请求执行模块进一步适于:若所有目标处理器核返回的数据均无效,则将侦听与缓存模块返回的数据作为响应数据。
可选地,在根据本发明的多核互联总线中,侦听与缓存模块还适于:在共享缓存中未存有有效数据时,不访问共享缓存。
可选地,在根据本发明的多核互联总线中,请求执行模块还适于:若所有目标处理器核返回的数据均无效,则访问与其耦接的下级存储单元以获取响应数据。
可选地,在根据本发明的多核互联总线中,在所述侦听与缓存模块中存储的缓存数据有效性信息与各处理器核当前真实的数据有效性标签一致时,所述侦听与缓存模块还适于:在所述缓存数据有效性信息指示至少存在一个本地缓存中存有有效数据的目标处理器核时,将所述数据有效性信息发送至请求执行模块,以便请求执行模块确定本地缓存中存有有效数据的目标处理器核,并向目标处理器核转发所述数据请求;且不访问共享缓存;所述请求执行模块还适于:将目标处理器核返回的数据作为响应数据。
可选地,在根据本发明的多核互联总线中,侦听与缓存模块还适于:在所述缓存数据有效性信息指示所有处理器核的本地缓存中均不存在有效数据,且共享缓存中存在有效数据时,从共享缓存中获取数据,将获取到的数据发送至请求执行模块;所述请求执行模块还适于:将侦听与缓存模块返回的数据作为响应数据。
根据本发明的第二个方面,提供一种核间通信方法,包括步骤:接收请求执行模块转发的来自处理器核的数据请求,所述数据请求包括请求地址;查找所述请求地址的缓存数据有效性信息,从共享缓存中获取数据,将所述缓存数据有效性信息和从共享缓存获取到的数据先后返回至所述请求执行模块,以便请求执行模块:根据所述缓存数据有效性信息来确定本地缓存中存有有效数据的目标处理器核,向目标处理器核转发所述数据请求,接收目标处理器核返回的数据;以及从目标处理器核返回的数据和所述从共享缓存获取到的数据中确定响应数据,将所述响应数据返回给发起数据请求的处理器核。
根据本发明的第三个方面,提供一种多核处理器,包括:多个处理器核;以及如上所述的多核互联总线。
根据本发明的第四个方面,提供一种片上系统,包括如上所述的多核处理器。
根据本发明的第五个方面,提供一种智能设备,包括如上所述的片上系统。
根据本发明的技术方案,多核互联总线包括侦听与缓存模块,侦听与缓存模块中存储有多个地址的缓存数据有效性信息。当请求收发模块接收到处理器核发来的包含请求地址的数据请求后,侦听与缓存模块查找该请求地址的缓存数据有效性信息,将缓存数据有效性信息发送至请求执行模块,以便请求执行模块确定本地缓存中存有有效数据的目标处理器核,并向目标处理器核转发数据请求;同时,若共享缓存中存储有有效数据,则侦听与缓存模块进一步从共享缓存中获取数据,将获取到的数据发送至请求处理模块。请求处理模块根据目标处理器核返回的数据以及侦听与缓存模块返回的从共享缓存中获取的数据,来确定响应数据,通过请求收发模块来将响应数据返回给发起数据请求的处理器核。
本发明的侦听与缓存模块采用了两级返回的机制来向请求执行模块返回信息。在第一级返回中,侦听与缓存模块将请求地址的缓存数据有效性信息返回至请求执行模块,以便请求执行模块可以根据缓存数据有效性信息来确定本地缓存中存储有有效数据的目标处理器核,并立即向目标处理器核转发数据请求;在第二级返回中,侦听与缓存模块将共享缓存中的数据返回给请求执行模块。基于两级返回机制,请求执行模块向目标处理器核转发数据请求以访问目标处理器核的本地缓存的过程,以及侦听与缓存模块访问共享缓存的过程可以并行进行,相较于现有技术中先访问本地缓存、再访问共享缓存的技术方案,访问延时大大降低,提高了核间数据通信的速度。
此外,本发明的技术方案将各地址的缓存数据有效性信息(即地址阵列)与共享缓存中的数据本身(即数据阵列)均仅存储一次,避免了地址、缓存数据有效性信息的重复存储,有效节省了存储空间。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的多核处理器100的示意图;
图2A、2B示出了根据本发明两个实施例的多个处理核的本地缓存、共享缓存的结构示意图;
图3示出了根据本发明另一个实施例的多核处理器300的示意图;
图4示出了根据本发明一个实施例的侦听与缓存模块220的两级返回过程(第一级返回请求地址的缓存数据有效性信息,第二级返回从共享缓存中获取的数据)的示意图;
图5示出了根据本发明一个实施例的核间通信方法500的流程图;
图6示出了根据本发明一个实施例的核间通信过程600的示意图;
图7示出了根据本发明一个实施例的片上系统700的示意图。
实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
现有技术中,当多核处理器的某一个处理器核发起针对共享地址的数据请求时,多核互联总线先向各处理器核转发数据请求,各处理器核访问其本地缓存,并将数据返回给多核互联总线。若所有处理器核返回的数据均无效,再访问共享缓存。若共享缓存返回的数据也无效,则进一步访问下级存储单元(下级缓存或存储器)。
在某些改进的方案中,多核处理器中设置有侦听过滤器(Snoop Filter),侦听过滤器用于记录各处理器核的本地缓存中的数据的有效性。当多核处理器的某一个处理器核发起针对共享地址的数据请求时,多核互联总线首先访问侦听过滤器,确定各处理器核的本地缓存中是否存有有效数据,然后仅向存有有效数据的处理器核请求数据,从而避免没有必要的总线传输,减少传输阻塞。若所有处理器核返回的数据均无效,再访问共享缓存。若共享缓存返回的数据也无效,则进一步访问下级存储单元。
在现有技术中,无论多核互联总线中是否设置有侦听过滤器,针对处理器核发起的针对共享地址的数据请求,总是先访问各处理器核的本地缓存,再访问共享缓存,访问延时较长,造成很大的性能损失。
另外,在设置有侦听过滤器时,侦听过滤器与共享缓存是两个独立的模块,二者中均需要存储地址信息和数据的有效性信息(共享缓存中还需要存储地址对应的数据),地址信息和数据有效性信息的重复存储需要占用较多的存储空间,增加了硬件资源开销。
针对现有技术中的上述问题,本发明提供一种多核互联总线以及基于该多核互联总线的核间通信方法,以实现低延时的、高效的核间通信。同时,也可以避免因重复存储地址信息和数据有效性信息而造成的存储空间浪费,节省硬件资源。
图1示出了根据本发明一个实施例的多核处理器100的示意图。如图1所示,多核处理器100包括多个处理器核110(110-0~110-N)和多核互联总线200。多核互联总线200分别与每一个处理器核110耦接,用于实现各处理器核的核间通信。
如图1所示,每个处理器核110均包括本地缓存112,本地缓存中的数据只能由其所在的处理器核110访问。多核互联总线200包括共享缓存,共享缓存中的数据可以被多个处理器核110访问(有时可以被所有处理器核110访问)。在本发明的实施例中,多核互联总线200中的共享缓存实现于侦听与缓存模块220内部,侦听与缓存模块220为内嵌了侦听过滤器的共享缓存模块,其功能和处理逻辑将于下文中详述。
需要说明的是,本发明不限制本地缓存及共享缓存的具体结构,任意位于处理器核内部的本地缓存、位于处理器核外部的能够被多个处理器核访问的共享缓存均在本发明的保护范围之内。图2A、2B示例性地示出了两种本地缓存、共享缓存的结构。
如图2A所示,每个处理器核110的本地缓存仅包括L1(一级)高速缓存,各处理器核的共享缓存为L2(二级)高速缓存。共享缓存的下级存储单元可以是L3(三级)高速缓存或存储器(内存)。
如图2B所示,每个处理器核110的本地缓存由L1、L2两级高速缓存组成,其中L1高速缓存进一步包括用于缓存指令的L1P高速缓存以及用于缓存数据的L1D高速缓存。各处理器核的共享缓存为L3(三级)高速缓存。共享缓存的下级存储单元可以是存储器。本领域技术人员可以理解,虽然目前L4(四级)高速缓存、L5(五级)高速缓存等多级缓存结构比较罕见,若存在L4、L5等高速缓存,这些高速缓存也是L3高速缓存的下级存储单元。
另外,需要说明的是,本发明不限制本地缓存及共享缓存之间的数据关系,任意数据关系均在本发明的保护范围之内。实际上,本地缓存与共享缓存之间的数据关系与预设的分级缓存策略相关。在某些实施例中,本地缓存中的数据是共享缓存中的数据的子集,即,本地缓存中存储了某些地址的数据,共享缓存中一定也存储有这些地址的数据(但是数据的有效性可能不同)。在另一些实施例中,本地缓存中的数据与共享缓存中的数据互斥,即,本地缓存中存储了某些地址的数据,共享缓存中一定不存在这些地址的数据。在还有一些实施例中,本地缓存中的数据与共享缓存中的数据存在交叉,即,本地缓存中存在的某些地址的数据在共享缓存中也存在(但是数据的有效性可能不同),本地缓存中存在的某些地址的数据在共享缓存中不存在。
由于多个处理器核110均可以对共享地址中的数据进行操作,共享地址中的数据可能在多个处理器核110的本地缓存112中存在副本。若某一处理器核对共享地址中的数据进行了修改操作,将产生多核之间的数据不一致问题。因此,需要维护多个处理器核的数据一致性。每个处理器核110还包括缓存控制器113(缓存控制器113未在图1中示出),用于按照预设的缓存一致性协议来维护多个处理器之间的缓存数据一致性,具体地,通过监听其他处理器核中的缓存操作来确定其所在的处理器核110中缓存的数据是否有效,并存储数据的有效性标签。缓存一致性协议例如可以是MESI(Modified Exclusive Shared orInvalid)协议,但不限于此。
在一些实施例中,缓存控制器113进一步可以通过监听其他处理器核中的缓存操作来确定其他处理器核110中缓存的数据是否有效,并存储其他处理器核110的数据有效性标签。本领域技术人员可以理解,缓存控制器113监听并存储其他处理器核110中的数据的有效性,会增加多核互联总线200上的传输压力,并占用本地缓存112的存储空间。优选地,可以在处理器核110中设置开关组件,本领域技术人员可以根据实际需要,通过控制开关组件来开启或关闭缓存控制器113监听并存储其他处理器核110中的数据有效性的功能。开关组件例如可以是处理器核110中的一个寄存器,通过向寄存器中写入不同的值来控制上述功能的开关状态。
如图1所示,多核互联总线200包括多个请求收发模块210(210-0~210-N)、侦听与缓存模块220以及请求执行模块230。
请求收发模块210与处理器核110耦接,用于接收处理器核110发来的数据请求(Request),以及将响应数据(Response)返回给相应的处理器核110。在图1所示的实施例中,多核互联总线200所包括的请求收发模块210的数量与多核处理器100所包括的处理器核110的数量相同,即,每一个处理器核110对应于一个请求收发模块210。本领域技术人员可以理解,在其他实施例中,请求收发模块210的数量也可以与处理器核110的数量不同,一个请求收发模块210可以对应于多个处理器核110。
侦听与缓存模块220为内嵌有侦听过滤器的共享缓存模块。侦听与缓存模块220包括缓存控制单元(缓存控制单元在图1中未示出)、地址阵列和数据阵列。其中,地址阵列中存储有多个地址所对应的缓存数据有效性信息,可以用于实现侦听过滤器的功能。数据阵列为共享缓存中的数据所组成的阵列。缓存控制单元用于维护共享缓存与各处理器核的本地缓存的数据一致性,通过监听各处理器核针对本地缓存的操作来确定本地缓存以及共享缓存中的数据的有效性,更新地址阵列中的缓存数据有效性信息,以及更新数据阵列中的数据。需要说明的是,根据缓存控制单元的控制机制的不同,地址阵列中的缓存数据有效性信息可能能够保证与各处理器核当前真实的数据有效性标签一致,也可能不能保证一致。
请求执行模块230分别与请求收发模块210、侦听与缓存模块220、各处理器核110以及下级存储单元(下级存储单元未在图1中示出)耦接,适于接收请求收发模块210转发的从处理器核110处获取的数据请求,从处理器核110、侦听与缓存模块220、或者下级存储单元(下级存储单元)处获取数据,并从获取到的数据中确定该数据请求的响应数据,将响应数据通过请求收发模块210返回给发起数据请求的处理器核110。
图3示出了根据本发明另一个实施例的多核处理器300的示意图。图3所示的多核处理器300与图1所示的多核处理器100包括一些相同的处理模块,这些相同的处理模块在图1、图3中采用相同的编号。
如图3所示,多核处理器300包括多个处理器核110(110-0~110-N)和多核互联总线400。多核互联总线400分别与每一个处理器核110耦接,用于实现各处理器核的核间通信。
如图3所示,每个处理器核110均包括本地缓存112、请求模块114、转发模块116和缓存读写模块118。
请求模块114与多核互联总线400中相应的请求收发模块210耦接,适于向请求收发模块210发送数据请求,以及接收请求收发模块210返回的响应数据。
转发模块116与多核互联总线400中相应的请求转发模块240耦接,适于接收请求转发模块240转发的其他处理器核发起的数据请求,并控制缓存读写模块118对本地缓存112进行目标数据的读取操作。若本地缓存112中存在目标数据,则缓存读写模块118将目标数据和目标数据的有效性标签返回给转发模块116;若本地缓存112中不存在目标数据,则缓存读写模块118向转发模块116返回数据缺失信息。转发模块116进一步通过请求转发模块240将接收到的目标数据及其有效性标签或数据缺失信息返回给多核互联总线400。
多核互联总线400包括多个请求收发模块210、侦听与缓存模块220、请求执行模块230以及多个请求转发模块240。
请求收发模块210、侦听与缓存模块220、请求执行模块230与图1相同,此处不再赘述。请求转发模块240适于将其他处理器核110发起的数据请求转发至与其耦接的处理器核,并接收与其耦接的处理器核返回的数据。
在本发明的实施例中,请求收发模块210适于接收处理器核发来的数据请求,数据请求包括请求地址。
请求收发模块210在接收到处理器核发来的数据请求后,将该数据请求转发至请求执行模块230,请求执行模块230进一步将该数据请求转发至侦听与缓存模块220。
根据一种实施例,请求执行模块230在接收到请求收发模块210发来的数据请求后,判断请求地址是否为共享地址。当请求地址为共享地址时,请求执行模块230将该数据请求转发至侦听与缓存模块220,以便侦听与缓存模块220返回缓存数据有效性信息以及从共享缓存中获取的数据。当请求地址不是共享地址时,请求执行模块230访问与其耦接的下级存储单元以获取响应数据,并将响应数据通过请求收发模块210发送至发起数据请求的处理器核。
当请求地址为共享地址时,请求执行模块230将数据请求转发至侦听与缓存模块220。侦听与缓存模块220查找该请求地址的缓存数据有效性信息,以及从共享缓存中获取数据,将缓存数据有效性信息和从共享缓存获取到的数据先后返回至请求执行模块230。
缓存数据有效性信息用于确定各处理器核的本地缓存以及共享缓存中是否存有有效数据。根据一种实施例,侦听与缓存模块220中存储有至少一个地址阵列,地址阵列中存储有多个地址所对应的缓存数据有效性信息。缓存数据有效性信息包括共享缓存有效位和多个本地缓存有效位,共享缓存有效位适于标识共享缓存中的数据的有效性,多个本地缓存有效位适于标识多个处理器核的本地缓存中的数据的有效性。侦听与缓存模块220适于通过将请求地址与地址阵列中的地址进行比对,来确定请求地址的缓存数据有效性信息。
进一步地,当侦听与缓存模块220中存储有多个地址阵列时,每个地址阵列中存储不同地址的缓存数据有效性信息。相应地,可以分别在每个地址阵列中查找是否存在请求地址的缓存数据有效性信息,若在某个地址阵列查找命中,则终止其他地址阵列的查找过程,以节省功耗。
根据一种实施例,地址信息可以划分为块地址(Tag)、索引地址(Index)和偏移量(Offset)三部分。例如,对于一个32位(bit)的地址,其高20位为块地址,中间6位为索引地址,低6位为偏移量。本发明不限制块地址、索引地址、偏移量的具体划分方式,块地址、索引地址、偏移量可以包括任意位数。
在侦听与缓存模块的数据阵列中,数据以块(Block)为单位存储,相应地,地址阵列中存储的是各地址块的缓存数据有效性信息。地址阵列中的每一行对应于一个地址块的缓存数据有效性信息,地址块通过块地址Tag和索引地址Index的组合来标识。其中,索引地址Index用于确定地址块的缓存数据有效性信息位于地址阵列的哪一行,块地址Tag和缓存数据有效性信息均存储于地址阵列的相应行中。
在查找请求地址的缓存数据有效性信息时,将请求地址也相应划分为块地址、索引地址和偏移量三部分,通过索引地址来确定请求地址的缓存数据有效性信息位于地址阵列的哪一行,然后通过对比该行中存储的块地址与请求地址的块地址是否一致来判断是否查找命中。
若侦听与缓存模块220查找到请求地址的缓存数据有效性信息,则将该缓存数据有效性信息发送至请求执行模块230。请求执行模块230根据接收到的缓存数据有效性信息来确定本地缓存中存储有有效数据的目标处理器核,向目标处理器核转发该数据请求,并接收目标处理器核返回的数据。例如,请求执行模块230可以通过请求转发模块240来向目标处理器核转发数据请求。
若侦听与缓存模块220未查找到请求地址的缓存数据有效性信息,则将查找未命中的消息返回给请求执行模块230。请求执行模块230将访问与其耦接的下级存储单元以获取响应数据,并将响应数据通过请求收发模块210发送至发起数据请求的处理器核。
侦听与缓存模块220在将请求地址的缓存数据有效性信息发送至请求执行模块230后,进一步根据请求地址的缓存数据有效性信息,判断共享缓存中是否存有有效数据。在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据发送至请求执行模块230。
参考以上描述,本发明的侦听与缓存模块220采用了两级返回的机制来向请求执行模块230返回信息。在第一级返回中,侦听与缓存模块220将请求地址的缓存数据有效性信息返回至请求执行模块230,以便请求执行模块230可以根据缓存数据有效性信息来确定本地缓存中存储有有效数据的目标处理器核,并立即向目标处理器核转发数据请求;在第二级返回中,侦听与缓存模块220将共享缓存中的数据返回给请求执行模块230。基于两级返回机制,请求执行模块230向目标处理器核转发数据请求以访问目标处理器核的本地缓存的过程,以及侦听与缓存模块220访问共享缓存的过程可以并行进行。考虑到数据阵列往往需要占用较大的存储空间,因此访问延时比地址阵列极大可能更长,因此更快地把地址阵列访问后的结果返回给请求执行模块230能加请求响应速度。相较于现有技术中先访问本地缓存、再访问共享缓存的技术方案,访问延时大大降低,提高了核间数据通信的速度。
图4示出了根据本发明一个实施例的侦听与缓存模块220向请求执行模块230返回信息的过程,该过程更加明确地示出了本发明的两级返回机制。
如图4所示,侦听与缓存模块220中包括两个地址阵列和两个数据阵列。数据阵列的每一行存储有一个地址块的缓存数据有效性信息,缓存数据有效性信息包括共享缓存有效位(即图4地址阵列中的“有效位”列)和多个本地缓存有效位(即图4地址阵列中的“核0数据有效位”~“核N数据有效位”列)。地址块由块地址和索引地址联合标识。
如图4左上角所示,与地址阵列一致地,请求地址也被划分为块地址TAG、索引地址INDEX和偏移量OFFSET三部分。侦听与缓存模块220首先通过索引地址INDEX来确定请求地址的缓存数据有效性信息位于地址阵列的哪一行,索引地址INDEX即为地址阵列的行号。在确定行号之后,判断该行存储的块地址是否与请求地址的块地址TAG相同,若相同,则查找命中,将该行存储的缓存数据有效性信息,即(共享缓存)有效位、核0数据有效位~核N数据有效位返回给请求执行模块230,此为第一级返回。请求执行模块230在接收到侦听与缓存模块220发来的缓存数据有效性信息后,根据该缓存数据有效性信息来确定本地缓存中存有有效数据的目标处理器核,并向目标处理器核转发数据请求,以获取目标处理器核的本地缓存中的数据。
侦听与缓存模块220在将请求地址的缓存数据有效性信息发送至请求执行模块230后,根据共享缓存有效位,判断共享缓存中是否存有有效数据,即判断是否命中共享缓存中的数据。在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据发送至请求执行模块230,此为第二级返回。
需要说明的是,尽管在图4所示的实施例中,地址阵列与数据阵列实现为两个独立的列表,但本领域技术人员可以理解,地址阵列与数据阵列也可以实现为同一个列表,例如,可以将图4中的数据阵列合并至地址阵列的右侧,这样,地址阵列中的每一行将包括块地址(TAG)、有效位、核0数据有效位~核N数据有效位以及数据。
基于侦听与缓存模块220的第一级返回,请求执行模块230立即向目标处理器核转发数据请求,随后,请求执行模块230将接收到目标处理器核返回的数据。基于侦听与缓存模块220的第二级返回,请求执行模块230接收到侦听与缓存模块220返回的从共享缓存获取的数据。也就是说,请求执行模块230适于接收目标处理器核返回的数据以及侦听与缓存模块返回的从共享缓存获取的数据。请求执行模块230根据接收到的数据确定响应数据,将响应数据通过请求收发模块210返回给发起数据请求的处理器核,本次数据请求即响应完成。
目标处理器核返回的数据包括数据本身以及该数据的有效性标签。相应地,请求执行模块230接收目标处理器核返回的数据以及该数据的有效性标签。当接收到目标处理器核返回的有效的数据时,将该有效的数据作为响应数据,通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。需要说明的是,可能多个目标处理器核的本地缓存中均存储有有效数据,在这种情况下,请求执行模块230一旦接收到目标处理器核返回的有效的数据,旋即将该有效的数据作为响应数据返回给发起数据请求的处理器核,本次数据请求即响应完成,后续接收到的其他目标处理器核返回的信息可以被丢弃。
若所有目标处理器核返回的数据均无效,则请求执行模块230将从共享缓存获取的数据作为响应数据,并通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。
需要说明的是,由于在高速缓存中,数据以块为单位存储,因此,处理器核以及侦听与缓存模块220向请求执行模块230返回的数据均为请求地址中的块地址Tag和索引地址Index所标识的地址块的数据,而不是针对该完整的请求地址的数据,相应地,请求执行模块230所确定的响应数据也是块地址Tag和索引地址Index所标识的地址块的数据。请求执行模块230可以将整个地址块的数据返回给发起数据请求的处理器核。处理器核可以从中找出特定偏移(Offset)的数据,地址块中的其他数据可以保留也可以丢弃。在另一些实施例中,请求执行模块230也可以从地址块中找出特定偏移(Offset)的数据,然后将特定偏移的数据返回给发起数据请求的处理器核,地址块中的其他数据可以保留也可以丢弃。
以上以共享缓存中存有有效数据的情况为例,介绍了本发明的两级返回机制。在共享缓存中未存有有效数据时,侦听与缓存模块220不再访问共享缓存,相应地,上述第二级返回过程(即向请求执行模块230返回从共享缓存中获取的数据)便被省略掉了。在这种情况下,请求执行模块230接收目标处理器核返回的数据以及该数据的有效性标签,当接收到目标处理器核返回的有效的数据时,将该有效的数据作为响应数据,通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。若所有目标处理器核返回的数据均无效,则从与请求执行模块230耦接的下级存储单元获取响应数据,通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。
根据一种实施例,若侦听与缓存模块220中存储的缓存数据有效性信息与各处理器核当前真实的数据有效性标签一致,即,若缓存数据有效性信息指示某一处理器核的本地缓存中存有有效数据,则该处理器核的本地缓存中必然存有有效数据,上述两级返回过程可以缩减为下述一级返回过程:
侦听与缓存模块220在缓存数据有效性信息指示至少存在一个本地缓存中存有有效数据的目标处理器核时,将数据有效性信息发送至请求执行模块230,以便请求执行模块230确定本地缓存中存有有效数据的目标处理器核,并向目标处理器核转发所述数据请求;且侦听与缓存模块220不访问共享缓存,即无需向请求执行模块230返回从共享缓存中获取的数据,上述第二级返回便被省略掉了。请求执行模块230将目标处理器核返回的数据作为响应数据,通过请求收发模块210返回给发起数据请求的处理器核。
侦听与缓存模块220在缓存数据有效性信息指示所有处理器核的本地缓存中均不存在有效数据,且共享缓存中存在有效数据时,从共享缓存中获取数据,将获取到的数据发送至请求执行模块230。侦听与缓存模块220无需向请求执行模块230返回缓存数据有效性信息,上述第一级返回便被省略掉了。请求执行模块230将侦听与缓存模块220返回的数据作为响应数据,通过请求收发模块210返回给发起数据请求的处理器核。
图5示出了根据本发明一个实施例的核间通信方法500的流程图。方法500在多核互联总线的侦听与缓存模块220中执行。如图5所示,方法500始于步骤S510。
在步骤S510中,接收请求执行模块转发的来自处理器核的数据请求,数据请求包括请求地址。
在多核处理器的某一个处理器核发起数据请求时,多核互联总线的请求收发模块210接收该数据请求,并将该数据请求转发至请求执行模块230。请求执行模块230判断请求地址是否为共享地址。当请求地址为共享地址时,请求执行模块230将该数据请求转发至侦听与缓存模块220,相应地,侦听与缓存模块220执行步骤S510,接收请求执行模块230发来的数据请求。
当请求地址不是共享地址时,不再执行步骤S510,由请求执行模块230访问与其耦接的下级存储单元以获取响应数据,并将响应数据通过请求收发模块210发送至发起数据请求的处理器核。
随后,在步骤S520中,查找请求地址的缓存数据有效性信息,从共享缓存中获取数据,将缓存数据有效性信息和从共享缓存获取到的数据先后返回至请求执行模块,以便请求执行模块:根据缓存数据有效性信息来确定本地缓存中存有有效数据的目标处理器核,向目标处理器核转发数据请求,接收目标处理器核返回的数据;以及从目标处理器核返回的数据和从共享缓存获取到的数据中确定响应数据,将响应数据返回给发起数据请求的处理器核。
缓存数据有效性信息用于确定各处理器核的本地缓存以及共享缓存中是否存有有效数据。根据一种实施例,侦听与缓存模块220中存储有至少一个地址阵列,地址阵列中存储有多个地址所对应的缓存数据有效性信息。缓存数据有效性信息包括共享缓存有效位和多个本地缓存有效位,共享缓存有效位适于标识共享缓存中的数据的有效性,多个本地缓存有效位适于标识多个处理器核的本地缓存中的数据的有效性。侦听与缓存模块220适于通过将请求地址与地址阵列中的地址进行比对,来确定请求地址的缓存数据有效性信息。
在步骤S520查找到请求地址的缓存数据有效性信息时,将缓存数据有效性信息返回至请求执行模块230;在步骤S520未查找到请求地址的缓存数据有效性信息时,将查找未命中的消息返回给请求执行模块230,以便请求执行模块230访问与其耦接的下级存储单元以获取响应数据,并将响应数据通过请求收发模块210发送至发起数据请求的处理器核。
在步骤S520中,侦听与缓存模块220将缓存数据有效性信息返回至请求执行模块230,请求执行模块230根据缓存数据有效性信息确定本地缓存中存有有效数据的目标处理器核,向目标处理器核转发数据请求,并接收目标处理器核返回的数据。
随后,侦听缓存模块220根据缓存数据有效性信息,判断共享缓存中是否存有有效数据;在共享缓存中存有有效数据时,从共享缓存中获取数据,将获取到的数据返回至请求执行模块230,以便:请求执行模块接收目标处理器核返回的数据以及从共享缓存获取的数据,根据接收到的数据确定响应数据,将响应数据返回给发起数据请求的处理器核。
侦听与缓存模块220将缓存数据有效性信息返回至请求执行模块230的步骤对应于本发明的两级返回机制的第一级返回。在第一级返回中,侦听与缓存模块220将请求地址的缓存数据有效性信息返回至请求执行模块230,以便请求执行模块230可以根据缓存数据有效性信息来确定本地缓存中存储有有效数据的目标处理器核,并立即向目标处理器核转发数据请求。
侦听与缓存模块220将共享缓存中的数据返回至请求执行模块230的步骤对应于本发明的两级返回机制的第二级返回。在第二级返回中,侦听与缓存模块220将共享缓存中的数据返回给请求执行模块230。基于两级返回机制,请求执行模块230向目标处理器核转发数据请求以访问目标处理器核的本地缓存的过程,以及侦听与缓存模块220访问共享缓存的过程可以并行进行。考虑到数据阵列往往需要占用较大的存储空间,因此访问延时比地址阵列极大可能更长,因此更快地把地址阵列访问后的结果返回给请求执行模块230能加请求响应速度。相较于现有技术中先访问本地缓存、再访问共享缓存的技术方案,访问延时大大降低,提高了核间数据通信的速度。
基于侦听与缓存模块220的第一级返回,请求执行模块230立即向目标处理器核转发数据请求,随后,请求执行模块230将接收到目标处理器核返回的数据。基于侦听与缓存模块220的第二级返回,请求执行模块230接收到侦听与缓存模块220返回的从共享缓存获取的数据。也就是说,请求执行模块230适于接收目标处理器核返回的数据以及侦听与缓存模块返回的从共享缓存获取的数据。请求执行模块230根据接收到的数据确定响应数据,将响应数据通过请求收发模块210返回给发起数据请求的处理器核,本次数据请求即响应完成。
目标处理器核返回的数据包括数据本身以及该数据的有效性标签。相应地,请求执行模块230接收目标处理器核返回的数据以及该数据的有效性标签。当接收到目标处理器核返回的有效的数据时,将该有效的数据作为响应数据,通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。需要说明的是,可能多个目标处理器核的本地缓存中均存储有有效数据,在这种情况下,请求执行模块230一旦接收到目标处理器核返回的有效的数据,旋即将该有效的数据作为响应数据返回给发起数据请求的处理器核,本次数据请求即响应完成,后续接收到的其他目标处理器核返回的信息可以被丢弃。
若所有目标处理器核返回的数据均无效,则请求执行模块230将从共享缓存获取的数据作为响应数据,并通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。
以上以共享缓存中存有有效数据的情况为例,介绍了本发明的两级返回机制。若在步骤S520中,发现共享缓存中未存有有效数据,则侦听与缓存模块220不再访问共享缓存,相应地,上述步骤S520的第二级返回过程便被省略掉了。在这种情况下,请求执行模块230接收目标处理器核返回的数据以及该数据的有效性标签,当接收到目标处理器核返回的有效的数据时,将该有效的数据作为响应数据,通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。若所有目标处理器核返回的数据均无效,则从与请求执行模块230耦接的下级存储单元获取响应数据,通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。
根据一种实施例,若侦听与缓存模块220中存储的缓存数据有效性信息与各处理器核当前真实的数据有效性标签一致,即,若缓存数据有效性信息指示某一处理器核的本地缓存中存有有效数据,则该处理器核的本地缓存中必然存有有效数据,步骤S520所示的两级返回过程可以缩减为下述一级返回过程:
侦听与缓存模块220在缓存数据有效性信息指示至少存在一个本地缓存中存有有效数据的目标处理器核时,将数据有效性信息发送至请求执行模块230,以便请求执行模块230确定本地缓存中存有有效数据的目标处理器核,并向目标处理器核转发所述数据请求;且侦听与缓存模块220不访问共享缓存,即无需向请求执行模块230返回从共享缓存中获取的数据,第二级返回便被省略掉了。请求执行模块230将目标处理器核返回的数据作为响应数据,通过请求收发模块210返回给发起数据请求的处理器核。
侦听与缓存模块220在缓存数据有效性信息指示所有处理器核的本地缓存中均不存在有效数据,且共享缓存中存在有效数据时,从共享缓存中获取数据,将获取到的数据发送至请求执行模块230。侦听与缓存模块220无需向请求执行模块230返回缓存数据有效性信息,因此第一级返回便被省略掉了。请求执行模块230将侦听与缓存模块220返回的数据作为响应数据,通过请求收发模块210返回给发起数据请求的处理器核。
图6示出了根据本发明一个实施例的核间通信过程600的示意图。
在步骤S612中,请求收发模块接收处理器核发来的数据请求。例如,参见图1、图3,请求收发模块210-0接收处理器核110-0发来的数据请求,数据请求包括请求地址。
随后,在步骤S614中,请求收发模块210-0将数据请求发送至请求执行模块230。
随后,在步骤S616中,请求执行模块230判断请求地址是否为共享地址。若请求地址为共享地址,则执行步骤S620,请求执行模块230将数据请求发送至侦听与缓存模块220;若请求地址不是共享地址,则执行步骤S618,请求执行模块230从下级存储单元获取响应数据,并通过请求收发模块210-0将响应数据返回给处理器核110-0。
在步骤S620之后,执行步骤S622。在步骤S622中,侦听与缓存模块220在地址阵列中查找请求地址的缓存数据有效性信息,缓存数据有效性信息包括用于指示共享缓存数据有效性的共享缓存有效位,和用于指示本地缓存数据有效性的本地缓存有效位。侦听与缓存模块220将请求地址的缓存数据有效性信息,即对应于各个处理器核的本地缓存有效位返回给请求执行模块230,此为第一级返回。
随后,在步骤S624中,请求执行模块230根据侦听与缓存模块220返回的缓存数据有效性信息,确定本地缓存中存储有有效数据的目标处理器核,将数据请求转发至目标处理器核。
步骤S626与步骤S624同时进行。在步骤S626中,侦听与缓存模块220根据共享缓存有效位来判断共享缓存中的数据是否有效。若共享缓存中的数据有效,则执行步骤S630;若共享缓存中的数据无效,则执行步骤S628,侦听与缓存模块220无需访问数据阵列,即无需从共享缓存中获取数据。
在步骤S630中,侦听与缓存模块220访问数据阵列,以获取共享缓存中存储的对应于请求地址的数据,将获取到的数据返回给请求执行模块230,此为第二级返回。
随后,在步骤S632中,请求执行模块230接收各目标处理器核和侦听与缓存模块220返回的数据,从接收到的数据中确定响应数据,将响应数据通过请求收发模块210-0返回给发起数据请求的处理器核110-0。
目标处理器核返回的数据包括数据本身以及该数据的有效性标签。相应地,请求执行模块230接收目标处理器核返回的数据以及该数据的有效性标签。当接收到目标处理器核返回的有效的数据时,将该有效的数据作为响应数据,通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。
若所有目标处理器核返回的数据均无效,则请求执行模块230将从共享缓存获取的数据作为响应数据,并通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。
对于步骤S628中示出的无需访问数据阵列的情况,在步骤S632中,请求执行模块230将仅接受各目标处理器核返回的数据及数据有效性标签。当接收到目标处理器核返回的有效的数据时,将该有效的数据作为响应数据,通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。若所有目标处理器核返回的数据均无效,则从与请求执行模块230耦接的下级存储单元获取响应数据,通过请求收发模块210将该响应数据返回给发起数据请求的处理器核。
图7示出了根据本发明的一个实施例的片上系统(System on Chip,SoC)700的示意图。图7所示的片上系统包含了图1所示的多核处理器100或图3所示的多核处理器300,因此与图1、图3中相同的部件具有同样的附图标记。如图7所示,互联单元710耦接到多核处理器100(300)、系统代理单元720、一个或多个协处理器730、一个或多个总线控制器单元740、一个或多个集成存储器控制器单元750、静态随机存取存储器(SRAM)单元760、直接存储器存取(DMA)单元770以及用于耦合至一个或多个外部显示器的显示单元780。
多核处理器100(300)包括多个处理器核110-0~110-N以及本发明的多核互联总线200(400)。
系统代理单元720包括协调和操作处理器核110-0~110-N的那些组件。系统代理单元720可包括例如功率控制单元(PCU),但不限于此。PCU可以包括调整处理器核110-0~110-N和集成图形逻辑的功率状态所需的逻辑和组件。
协处理器730包括集成图形逻辑、图像处理器、音频处理器和视频处理器。在一个实施例中,协处理器730包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
上面描述的片上系统可以包含在智能设备中,以便在智能设备中实现相应的功能,包括但不限于执行相关控制程序、进行数据分析、运算和处理、网络通信、控制智能设备中的外设等。
这样的智能设备包括专门的智能设备,如移动终端和个人数字终端等,这些设备中包括根据本发明的一个或者多个片上系统来进行数据处理,或者对设备中的外设进行控制。
这样的智能设备还包括为了实现特定功能而构造的专门设备,例如智能音箱、和智能显示设备等。这些设备中包括根据本发明的片上系统来对音箱和显示设备进行控制,从而赋予音箱和显示设备额外的通信、感知和数据处理等功能。
这样的智能设备还包括各种 IoT 和 AIoT 设备。这些设备中包括根据本发明的片上系统进行数据处理,例如进行 AI 运算、数据通信和传输等,从而实现了更加密集且更加智能的设备分布。
这样的智能设备还可以在车辆中使用,例如可以实现为车载设备、或者可以嵌入到车辆中,从而为车辆的智能驾驶提供数据处理能力。
这样的智能设备还可以用于家庭和娱乐领域,例如可以实现为智能音箱、智能空调、智能冰箱、智能显示设备等。这些设备包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了家庭和娱乐设备的智能化。
另外,这样的智能设备还可以用于工业领域,例如可以实现为工控设备、感测设备、IoT 设备,AIoT 设备和制动设备等。这些设备中包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了工业设备的智能化。
以上对智能设备的描述仅仅是示意性的,根据本发明的智能设备不受限于此,所有可以利用根据本发明的片上系统进行数据处理的智能设备都在本发明的保护范围之内。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (51)
1.一种多核互联总线,包括:
请求收发模块,分别与处理器核和请求执行模块耦接,适于接收处理器核发来的数据请求,并将所述数据请求通过所述请求执行模块转发至侦听与缓存模块,所述数据请求包括请求地址;
侦听与缓存模块,适于查找所述请求地址的缓存数据有效性信息,以及从共享缓存中获取数据,将所述缓存数据有效性信息和从共享缓存获取到的数据先后返回至所述请求执行模块;
请求执行模块,适于根据所述缓存数据有效性信息来确定本地缓存中存有有效数据的目标处理器核,向目标处理器核转发所述数据请求,接收目标处理器核返回的数据;以及
从目标处理器核和侦听与缓存模块返回的数据中确定响应数据,将所述响应数据通过所述请求收发模块返回给发起数据请求的处理器核。
2.如权利要求1所述的多核互联总线,其中,所述请求执行模块还适于:
判断所述请求地址是否为共享地址;
当所述请求地址为共享地址时,将所述数据请求转发至所述侦听与缓存模块;
当所述请求地址不是共享地址时,访问与其耦接的下级存储单元以获取响应数据。
3.如权利要求1所述的多核互联总线,其中,所述缓存数据有效性信息适于确定各处理器核的本地缓存以及共享缓存中是否存有有效数据。
4.如权利要求1-3中任一项所述的多核互联总线,其中,所述缓存数据有效性信息包括共享缓存有效位和多个本地缓存有效位,
所述共享缓存有效位适于标识共享缓存中的数据的有效性,
所述多个本地缓存有效位适于标识多个处理器核的本地缓存中的数据的有效性。
5.如权利要求1-3中任一项所述的多核互联总线,其中,所述侦听与缓存模块存储有至少一个地址阵列,所述地址阵列包括多个地址所对应的缓存数据有效性信息;
所述侦听与缓存模块进一步适于:
通过将所述请求地址与所述地址阵列中的地址进行比对,来确定所述请求地址的缓存数据有效性信息。
6.如权利要求4所述的多核互联总线,其中,所述侦听与缓存模块存储有至少一个地址阵列,所述地址阵列包括多个地址所对应的缓存数据有效性信息;
所述侦听与缓存模块进一步适于:
通过将所述请求地址与所述地址阵列中的地址进行比对,来确定所述请求地址的缓存数据有效性信息。
7.如权利要求1-3、6中任一项所述的多核互联总线,其中,所述侦听与缓存模块还适于:
在未查找到所述请求地址的缓存数据有效性信息时,将查找未命中的消息返回给所述请求执行模块,以便所述请求执行模块访问与其耦接的下级存储单元以获取响应数据。
8.如权利要求4所述的多核互联总线,其中,所述侦听与缓存模块还适于:
在未查找到所述请求地址的缓存数据有效性信息时,将查找未命中的消息返回给所述请求执行模块,以便所述请求执行模块访问与其耦接的下级存储单元以获取响应数据。
9.如权利要求5所述的多核互联总线,其中,所述侦听与缓存模块还适于:
在未查找到所述请求地址的缓存数据有效性信息时,将查找未命中的消息返回给所述请求执行模块,以便所述请求执行模块访问与其耦接的下级存储单元以获取响应数据。
10.如权利要求1-3、6、8、9中任一项所述的多核互联总线,所述侦听与缓存模块进一步适于:
根据所述缓存数据有效性信息,判断共享缓存中是否存有有效数据;
在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据返回至请求执行模块。
11.如权利要求4所述的多核互联总线,所述侦听与缓存模块进一步适于:
根据所述缓存数据有效性信息,判断共享缓存中是否存有有效数据;
在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据返回至请求执行模块。
12.如权利要求5所述的多核互联总线,所述侦听与缓存模块进一步适于:
根据所述缓存数据有效性信息,判断共享缓存中是否存有有效数据;
在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据返回至请求执行模块。
13.如权利要求7所述的多核互联总线,所述侦听与缓存模块进一步适于:
根据所述缓存数据有效性信息,判断共享缓存中是否存有有效数据;
在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据返回至请求执行模块。
14.如权利要求1-3、6、8、9、11-13中任一项所述的多核互联总线,其中,所述请求执行模块进一步适于:
接收目标处理器核返回的数据以及该数据的有效性标签;
当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
15.如权利要求4所述的多核互联总线,其中,所述请求执行模块进一步适于:
接收目标处理器核返回的数据以及该数据的有效性标签;
当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
16.如权利要求5所述的多核互联总线,其中,所述请求执行模块进一步适于:
接收目标处理器核返回的数据以及该数据的有效性标签;
当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
17.如权利要求7所述的多核互联总线,其中,所述请求执行模块进一步适于:
接收目标处理器核返回的数据以及该数据的有效性标签;
当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
18.如权利要求10所述的多核互联总线,其中,所述请求执行模块进一步适于:
接收目标处理器核返回的数据以及该数据的有效性标签;
当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
19.如权利要求14所述的多核互联总线,其中,所述请求执行模块进一步适于:
若所有目标处理器核返回的数据均无效,则将侦听与缓存模块返回的数据作为响应数据。
20.如权利要求15-18中任一项所述的多核互联总线,其中,所述请求执行模块进一步适于:
若所有目标处理器核返回的数据均无效,则将侦听与缓存模块返回的数据作为响应数据。
21.如权利要求1所述的多核互联总线,其中,所述侦听与缓存模块还适于:
在共享缓存中未存有有效数据时,不访问共享缓存。
22.如权利要求21所述的多核互联总线,其中,所述请求执行模块还适于:
若所有目标处理器核返回的数据均无效,则访问与其耦接的下级存储单元以获取响应数据。
23.如权利要求1所述的多核互联总线,其中,在所述侦听与缓存模块中存储的缓存数据有效性信息与各处理器核当前真实的数据有效性标签一致时,所述侦听与缓存模块还适于:
在所述缓存数据有效性信息指示至少存在一个本地缓存中存有有效数据的目标处理器核时,将所述数据有效性信息发送至请求执行模块,以便请求执行模块确定本地缓存中存有有效数据的目标处理器核,并向目标处理器核转发所述数据请求;且不访问共享缓存;
所述请求执行模块还适于:将目标处理器核返回的数据作为响应数据。
24.如权利要求23所述的多核互联总线,其中,
所述侦听与缓存模块还适于:
在所述缓存数据有效性信息指示所有处理器核的本地缓存中均不存在有效数据,且共享缓存中存在有效数据时,从共享缓存中获取数据,将获取到的数据发送至请求执行模块;
所述请求执行模块还适于:将侦听与缓存模块返回的数据作为响应数据。
25.一种核间通信方法,包括步骤:
接收请求执行模块转发的来自处理器核的数据请求,所述数据请求包括请求地址;
查找所述请求地址的缓存数据有效性信息,从共享缓存中获取数据,将所述缓存数据有效性信息和从共享缓存获取到的数据先后返回至所述请求执行模块,以便请求执行模块:
根据所述缓存数据有效性信息来确定本地缓存中存有有效数据的目标处理器核,向目标处理器核转发所述数据请求,接收目标处理器核返回的数据;以及从目标处理器核返回的数据和所述从共享缓存获取到的数据中确定响应数据,将所述响应数据返回给发起数据请求的处理器核。
26.如权利要求25所述的方法,还包括步骤:
当所述请求地址为共享地址时,执行所述接收请求执行模块发来的请求地址步骤;
当所述请求地址不是共享地址时,不执行所述接收请求执行模块发来的请求地址的步骤,且所述请求执行模块访问与之耦接的下级存储单元以获取响应数据。
27.如权利要求25所述的方法,其中,所述缓存数据有效性信息适于确定各处理器核的本地缓存以及共享缓存中是否存有有效数据。
28.如权利要求25-27中任一项所述的方法,其中,所述缓存数据有效性信息包括共享缓存有效位和多个本地缓存有效位,
所述共享缓存有效位适于标识共享缓存中的数据的有效性,
所述多个本地缓存有效位适于标识多个处理器核的本地缓存中的数据的有效性。
29.如权利要求25-27中任一项所述的方法,还包括步骤:
通过将所述请求地址与地址阵列中的地址进行比对,来确定所述请求地址的缓存数据有效性信息,其中,所述地址阵列包括多个地址所对应的缓存数据有效性信息。
30.如权利要求28所述的方法,还包括步骤:
通过将所述请求地址与地址阵列中的地址进行比对,来确定所述请求地址的缓存数据有效性信息,其中,所述地址阵列包括多个地址所对应的缓存数据有效性信息。
31.如权利要求25-27、30中任一项所述的方法,其中,在未查找到所述请求地址的缓存数据有效性信息时,将查找未命中的消息返回给所述请求执行模块,以便所述请求执行模块访问与其耦接的下级存储单元以获取响应数据。
32.如权利要求28所述的方法,其中,在未查找到所述请求地址的缓存数据有效性信息时,将查找未命中的消息返回给所述请求执行模块,以便所述请求执行模块访问与其耦接的下级存储单元以获取响应数据。
33.如权利要求29所述的方法,其中,在未查找到所述请求地址的缓存数据有效性信息时,将查找未命中的消息返回给所述请求执行模块,以便所述请求执行模块访问与其耦接的下级存储单元以获取响应数据。
34.如权利要求25-27、30、32-33中任一项所述的方法,其中,所述从共享缓存中获取数据的步骤包括:
根据所述缓存数据有效性信息,判断共享缓存中是否存有有效数据;
在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据返回至请求执行模块。
35.如权利要求28所述的方法,其中,所述从共享缓存中获取数据的步骤包括:
根据所述缓存数据有效性信息,判断共享缓存中是否存有有效数据;
在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据返回至请求执行模块。
36.如权利要求29所述的方法,其中,所述从共享缓存中获取数据的步骤包括:
根据所述缓存数据有效性信息,判断共享缓存中是否存有有效数据;
在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据返回至请求执行模块。
37.如权利要求31所述的方法,其中,所述从共享缓存中获取数据的步骤包括:
根据所述缓存数据有效性信息,判断共享缓存中是否存有有效数据;
在共享缓存中存有有效数据时,从共享缓存中获取数据,并将获取到的数据返回至请求执行模块。
38.如权利要求25-27、30、32-33、35-37中任一项所述的方法,其中,所述接收目标处理器核返回的数据;以及从目标处理器核返回的数据和所述从共享缓存获取到的数据中确定响应数据的步骤包括:
接收目标处理器核返回的数据以及该数据的有效性标签;
当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
39.如权利要求28所述的方法,其中,所述接收目标处理器核返回的数据;以及从目标处理器核返回的数据和所述从共享缓存获取到的数据中确定响应数据的步骤包括:
接收目标处理器核返回的数据以及该数据的有效性标签;
当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
40.如权利要求29所述的方法,其中,所述接收目标处理器核返回的数据;以及从目标处理器核返回的数据和所述从共享缓存获取到的数据中确定响应数据的步骤包括:
接收目标处理器核返回的数据以及该数据的有效性标签;
当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
41.如权利要求31所述的方法,其中,所述接收目标处理器核返回的数据;以及从目标处理器核返回的数据和所述从共享缓存获取到的数据中确定响应数据的步骤包括:
接收目标处理器核返回的数据以及该数据的有效性标签;
当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
42.如权利要求34所述的方法,其中,所述接收目标处理器核返回的数据;以及从目标处理器核返回的数据和所述从共享缓存获取到的数据中确定响应数据的步骤包括:
接收目标处理器核返回的数据以及该数据的有效性标签;
当接收到目标处理器核返回的有效的数据时,将所述有效的数据作为响应数据。
43.如权利要求38所述的方法,其中,所述接收目标处理器核返回的数据;以及从目标处理器核返回的数据和所述从共享缓存获取到的数据中确定响应数据的步骤包括:
若所有目标处理器核返回的数据均无效,则将从共享缓存获取的数据作为响应数据。
44.如权利要求39-42中任一项所述的方法,其中,所述接收目标处理器核返回的数据;以及从目标处理器核返回的数据和所述从共享缓存获取到的数据中确定响应数据的步骤包括:
若所有目标处理器核返回的数据均无效,则将从共享缓存获取的数据作为响应数据。
45.如权利要求25所述的方法,还包括步骤:
在共享缓存中未存有有效数据时,不访问共享缓存。
46.如权利要求45所述的方法,其中,所述接收目标处理器核返回的数据;以及从目标处理器核返回的数据和所述从共享缓存获取到的数据中确定响应数据的步骤包括:
若所有目标处理器核返回的数据均无效,则从与所述请求执行模块耦接的下级存储单元获取响应数据。
47.如权利要求25所述的方法,在所述缓存数据有效性信息与各处理器核当前真实的数据有效性标签一致时,还包括步骤:
在所述缓存数据有效性信息指示至少存在一个本地缓存中存有有效数据的目标处理器核时,将所述数据有效性信息发送至请求执行模块,以便请求执行模块确定本地缓存中存有有效数据的目标处理器核,并向目标处理器核转发所述数据请求;且不访问共享缓存;以便
所述请求执行模块将目标处理器核返回的数据作为响应数据。
48.如权利要求47所述的方法,还包括步骤:
在所述缓存数据有效性信息指示所有处理器核的本地缓存中均不存在有效数据,且共享缓存中存在有效数据时,从共享缓存中获取数据,将获取到的数据发送至请求执行模块;以便
所述请求执行模块将从共享缓存获取的数据作为响应数据。
49.一种多核处理器,包括:
多个处理器核;以及
如权利要求1-24中任一项所述的多核互联总线。
50.一种片上系统,包括如权利要求49所述的多核处理器。
51.一种智能设备,包括如权利要求50所述的片上系统。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910913359.0A CN112559433B (zh) | 2019-09-25 | 2019-09-25 | 一种多核互联总线、核间通信方法及多核处理器 |
PCT/US2020/050847 WO2021061445A1 (en) | 2019-09-25 | 2020-09-15 | Multi-core interconnection bus, inter-core communication method, and multi-core processor |
US17/021,527 US11354256B2 (en) | 2019-09-25 | 2020-09-15 | Multi-core interconnection bus, inter-core communication method, and multi-core processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910913359.0A CN112559433B (zh) | 2019-09-25 | 2019-09-25 | 一种多核互联总线、核间通信方法及多核处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559433A CN112559433A (zh) | 2021-03-26 |
CN112559433B true CN112559433B (zh) | 2024-01-02 |
Family
ID=74880901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910913359.0A Active CN112559433B (zh) | 2019-09-25 | 2019-09-25 | 一种多核互联总线、核间通信方法及多核处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11354256B2 (zh) |
CN (1) | CN112559433B (zh) |
WO (1) | WO2021061445A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559433B (zh) * | 2019-09-25 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 一种多核互联总线、核间通信方法及多核处理器 |
CN114237509B (zh) * | 2021-12-17 | 2024-03-26 | 西安紫光展锐科技有限公司 | 数据访问方法及装置 |
CN117014504B (zh) * | 2023-08-11 | 2024-04-16 | 北京市合芯数字科技有限公司 | 数据传输方法、装置、设备、介质及产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0667578A2 (en) * | 1994-02-14 | 1995-08-16 | Hewlett-Packard Company | Double cache snoop mechanism |
US6341337B1 (en) * | 1998-01-30 | 2002-01-22 | Sun Microsystems, Inc. | Apparatus and method for implementing a snoop bus protocol without snoop-in and snoop-out logic |
CN101958834A (zh) * | 2010-09-27 | 2011-01-26 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
CN102866923A (zh) * | 2012-09-07 | 2013-01-09 | 杭州中天微系统有限公司 | 对称多核的高效一致性侦听过滤装置 |
CN104462007A (zh) * | 2013-09-22 | 2015-03-25 | 中兴通讯股份有限公司 | 实现多核间缓存一致性的方法及装置 |
CN104899160A (zh) * | 2015-05-30 | 2015-09-09 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和系统 |
CN105677580A (zh) * | 2015-12-30 | 2016-06-15 | 杭州华为数字技术有限公司 | 访问缓存的方法和装置 |
WO2016094686A1 (en) * | 2014-12-10 | 2016-06-16 | Alibaba Group Holding Limited | Multi-core processor having cache consistency |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856448B2 (en) * | 2009-02-19 | 2014-10-07 | Qualcomm Incorporated | Methods and apparatus for low intrusion snoop invalidation |
US9274960B2 (en) * | 2012-03-20 | 2016-03-01 | Stefanos Kaxiras | System and method for simplifying cache coherence using multiple write policies |
US8904100B2 (en) * | 2012-06-11 | 2014-12-02 | International Business Machines Corporation | Process identifier-based cache data transfer |
US9304925B2 (en) * | 2012-10-24 | 2016-04-05 | Texas Instruments Incorporated | Distributed data return buffer for coherence system with speculative address support |
US20150012711A1 (en) * | 2013-07-04 | 2015-01-08 | Vakul Garg | System and method for atomically updating shared memory in multiprocessor system |
WO2015057857A1 (en) | 2013-10-15 | 2015-04-23 | Mill Computing, Inc. | Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines |
US9990292B2 (en) * | 2016-06-29 | 2018-06-05 | Arm Limited | Progressive fine to coarse grain snoop filter |
US20180074960A1 (en) * | 2016-09-09 | 2018-03-15 | Marvell World Trade Ltd. | Multi-CPU Device with Tracking of Cache-Line Owner CPU |
US11106468B2 (en) * | 2017-05-23 | 2021-08-31 | Eta Scale Ab | System and method for non-speculative reordering of load accesses |
US10585800B2 (en) * | 2017-06-16 | 2020-03-10 | International Business Machines Corporation | Reducing cache transfer overhead in a system |
US10417127B2 (en) * | 2017-07-13 | 2019-09-17 | International Business Machines Corporation | Selective downstream cache processing for data access |
US10635590B2 (en) * | 2017-09-29 | 2020-04-28 | Intel Corporation | Software-transparent hardware predictor for core-to-core data transfer optimization |
CN109062613B (zh) * | 2018-06-01 | 2020-08-28 | 杭州中天微系统有限公司 | 多核互联二级缓存访问验证方法 |
CN112559433B (zh) * | 2019-09-25 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 一种多核互联总线、核间通信方法及多核处理器 |
-
2019
- 2019-09-25 CN CN201910913359.0A patent/CN112559433B/zh active Active
-
2020
- 2020-09-15 US US17/021,527 patent/US11354256B2/en active Active
- 2020-09-15 WO PCT/US2020/050847 patent/WO2021061445A1/en active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0667578A2 (en) * | 1994-02-14 | 1995-08-16 | Hewlett-Packard Company | Double cache snoop mechanism |
US6341337B1 (en) * | 1998-01-30 | 2002-01-22 | Sun Microsystems, Inc. | Apparatus and method for implementing a snoop bus protocol without snoop-in and snoop-out logic |
CN101958834A (zh) * | 2010-09-27 | 2011-01-26 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
CN102866923A (zh) * | 2012-09-07 | 2013-01-09 | 杭州中天微系统有限公司 | 对称多核的高效一致性侦听过滤装置 |
CN104462007A (zh) * | 2013-09-22 | 2015-03-25 | 中兴通讯股份有限公司 | 实现多核间缓存一致性的方法及装置 |
WO2016094686A1 (en) * | 2014-12-10 | 2016-06-16 | Alibaba Group Holding Limited | Multi-core processor having cache consistency |
CN104899160A (zh) * | 2015-05-30 | 2015-09-09 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和系统 |
CN105677580A (zh) * | 2015-12-30 | 2016-06-15 | 杭州华为数字技术有限公司 | 访问缓存的方法和装置 |
Non-Patent Citations (4)
Title |
---|
Cell处理器上软件缓存的设计与实现;孙守航;杨灿群;;计算机工程(第02期);全文 * |
一种针对片上众核结构共享末级缓存的改进的LFU替换算法;张轮凯;宋风龙;王达;;计算机应用与软件(第01期);全文 * |
多处理器共享缓存设计与实现;张剑飞;;计算机与数字工程(第09期);全文 * |
频率2GHz的16核处理器二级缓存设计;李永进;邓让钰;晏小波;衣晓飞;周宏伟;张英;;上海交通大学学报(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US11354256B2 (en) | 2022-06-07 |
US20210089479A1 (en) | 2021-03-25 |
WO2021061445A1 (en) | 2021-04-01 |
CN112559433A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112559433B (zh) | 一种多核互联总线、核间通信方法及多核处理器 | |
EP2476051B1 (en) | Systems and methods for processing memory requests | |
US8015365B2 (en) | Reducing back invalidation transactions from a snoop filter | |
US11474951B2 (en) | Memory management unit, address translation method, and processor | |
US20110072212A1 (en) | Cache memory control apparatus and cache memory control method | |
JP6859361B2 (ja) | 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと | |
TWI506444B (zh) | 改良mmio請求處置之處理器及方法 | |
US9135177B2 (en) | Scheme to escalate requests with address conflicts | |
TWI773683B (zh) | 使用在以一中央處理器單元為基礎的系統中之適應性壓縮提供記憶體頻寬壓縮 | |
US20140089600A1 (en) | System cache with data pending state | |
US20150143045A1 (en) | Cache control apparatus and method | |
US6715035B1 (en) | Cache for processing data in a memory controller and a method of use thereof to reduce first transfer latency | |
WO2006012047A1 (en) | Direct processor cache access within a system having a coherent multi-processor protocol | |
US20100281222A1 (en) | Cache system and controlling method thereof | |
JP2008503807A (ja) | コヒーレンシ・プロトコルを有するシステム内の1またはそれ以上のプロセッサに対応する1またはそれ以上のキャッシュへのクリーン・データのプッシング | |
US20050172049A1 (en) | Data processor | |
US9396122B2 (en) | Cache allocation scheme optimized for browsing applications | |
US8495091B2 (en) | Dynamically routing data responses directly to requesting processor core | |
CN115509959A (zh) | 处理系统、控制方法、芯片及计算机可读存储介质 | |
CN113222115B (zh) | 面向卷积神经网络的共享缓存阵列 | |
CN113722247A (zh) | 物理内存保护单元、物理内存权限控制方法和处理器 | |
US7581042B2 (en) | I/O hub resident cache line monitor and device register update | |
US9442856B2 (en) | Data processing apparatus and method for handling performance of a cache maintenance operation | |
CN112559434B (zh) | 一种多核处理器及核间数据转发方法 | |
US8117393B2 (en) | Selectively performing lookups for cache lines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |