CN102947807A - 多核处理器系统、缓存一致性控制方法以及缓存一致性控制程序 - Google Patents
多核处理器系统、缓存一致性控制方法以及缓存一致性控制程序 Download PDFInfo
- Publication number
- CN102947807A CN102947807A CN2010800674377A CN201080067437A CN102947807A CN 102947807 A CN102947807 A CN 102947807A CN 2010800674377 A CN2010800674377 A CN 2010800674377A CN 201080067437 A CN201080067437 A CN 201080067437A CN 102947807 A CN102947807 A CN 102947807A
- Authority
- CN
- China
- Prior art keywords
- thread
- cache memory
- cpu
- core
- situation
- 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
Images
Classifications
-
- 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/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
-
- 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/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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
- 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
- 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/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- 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/17—Embedded application
- G06F2212/171—Portable consumer electronics, e.g. mobile phone
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
多核处理器系统(100)包含执行被CPU分别访问的高速缓冲存储器中储存的共享数据的值的一致性的执行部(503)。多核处理器系统(100)利用检测部(504)检测被CPU(#0)执行的第1线程,确定被成为CPU(#0)以外的CPU(#1)正在执行的第2线程。在确定后,多核处理器系统(100)利用判断部(506)判断是否存在被第1以及第2线程共同访问的共享数据。在判断为不存在共享数据的情况下,多核处理器系统(100)利用执行部(503)使与CPU(#0)对应的监听对应高速缓冲存储器(#0)和与CPU(#1)对应的监听对应高速缓冲存储器(#1)的一致性的执行停止。
Description
技术领域
本发明涉及对缓存一致性(cache coherency)机构进行控制的多核处理器系统、缓存一致性控制方法以及缓存一致性控制程序。
背景技术
近些年,在多核处理器系统中,采取了按每个核心搭载独立的高速缓冲存储器,且通过缓存一致性机构维持高速缓冲存储器的一贯性这一方式。在利用了缓存一致性机构的多核处理器系统中,由于通过硬件进行高速缓冲存储器中储存的共享数据的一贯性的维持,所以能够容易地制作面向多核处理器的并行软件。
由于缓存一致性机构监视高速缓冲存储器的动作,所以产生高速缓冲存储器访问时的延迟。作为防止延迟的技术,公开有基于SMP(Symmetric Multi Processing:对称多处理)或ASMP(AsymmetricMulti Processing:非对称多处理)来控制缓存一致性机构的技术(例如参照下述专利文献1)。在专利文献1中,将多个核心执行多个进程(process)的情况设为SMP,将多个核心执行单一进程的情况设为ASMP。进程是程序的执行单位,一个以上的线程属于一个进程。属于相同进程的线程访问相同的存储器空间。
另外,作为其他的技术,公开有多个核心在执行属于同一进程的线程的情况下执行一致性,在执行属于不同进程的线程的情况下不执行一致性这一技术(例如参照下述专利文献2)。
另外,作为解析线程间的依存关系的技术,公开有通过按每1个语句(statement)执行各线程,来生成表示对共享数据的访问的信息,来解析线程的每个语句的依存关系的技术(例如参照下述专利文献3)。
专利文献1:日本特开平10-97465号公报
专利文献2:日本特开2004-133753号公报
专利文献3:日本特开2000-207248号公报
在上述的现有技术中,专利文献1、2的技术以进程的单位判断是否执行一致性。另外,在嵌入式设备等不同时使用较多的功能的情况下,以单一进程执行的情况多。因此,即使将专利文献1、2涉及的技术应用于嵌入式设备,也存在经常执行一致性,缓存一致性机构的动作增加,导致产生对高速缓冲存储器访问的延迟、消耗电力增大这样的问题。
另外,若使用专利文献3涉及的技术,则由于按每个语句解析共享数据的访问信息,所以按每个语句控制缓存一致性机构,存在控制次数非常大这一问题。
发明内容
为了消除上述现有技术的问题点,本发明的目的在于,提供能够减少缓存一致性机构的动作的多核处理器系统、缓存一致性控制方法、以及缓存一致性控制程序。
为了解决上述的课题、实现目的,公开的多核处理器系统包含执行部,其执行被多个核心的每一个访问的高速缓冲存储器中储存的共享数据的值的一致性,检测被多个核心中的第1核心执行的第1线程,在检测出第1线程的情况下,确定被多个核心中的第1核心以外的第2核心正在执行的第2线程,判断是否存在被第1线程以及确定出的第2线程共同访问的共享数据,在判断为不存在被共同访问的共享数据的情况下,利用执行部使与第1核心对应的第1高速缓冲存储器和与第2核心对应的第2高速缓冲存储器的一致性的执行停止。
根据本多核处理器系统、缓存一致性控制方法以及缓存一致性控制程序,起到能够减少缓存一致性机构内的动作,可实现消耗电力的削减、防止延迟的效果。
附图说明
图1是表示实施方式所涉及的多核处理器系统100的硬件的框图。
图2是表示多核处理器系统100的硬件的一部分和软件的框图。
图3是表示监听(snoop)对应高速缓冲存储器#0的内部的框图。
图4是表示监听对应的总线110的详细情况的说明图。
图5是表示多核处理器系统100的功能的框图。
图6是表示缓存一致性的执行状态和停止状态的说明图。
图7是多核处理器系统100的动作概要。
图8是表示依存信息501的登记方法的说明图。
图9是表示扩展后的线程数据结构901的成员一览和存储内容的一个例子的说明图。
图10是表示监听控制部#0进行的行取出(line fetch)处理的流程图。
图11是表示监听控制部#0进行的对行的写入处理的流程图。
图12是表示一致性控制处理的流程图。
图13是表示一致性对象CPU决定处理的流程图。
具体实施方式
以下参照附图,对本发明所涉及的多核处理器系统、缓存一致性控制方法、以及缓存一致性控制程序的优选实施方式进行详细说明。
(多核处理器系统100的硬件)
图1是表示实施方式所涉及的多核处理器系统100的硬件的框图。在图1中,多核处理器系统100具备:搭载多个CPU的CPUs101、ROM(Read-Only Memory:只读存储器)102、和RAM(Random AccessMemory:随机存储器)103。而且,多核处理器系统100具备闪存ROM104、闪存ROM控制器105和闪存ROM106。另外,多核处理器系统100具备显示器107、I/F(Interface:接口)108和键盘109,作为与用户或其他设备的输入输出装置。另外,各部通过总线110分别连接。
这里,CPUs101管理多核处理器系统100整体的控制。CPUs101是指将单核心处理器并列连接的全部CPU。关于CPUs101的详细内容,将利用图2在后面叙述。另外,多核处理器系统是包含搭载了多个核心的处理器的计算机系统。其中,在本实施方式中,为了使说明简化,以单核心处理器并列而成的处理器组为例进行说明。
ROM102存储有引导程序等程序。RAM103作为CPUs101的工作区域被使用。闪存ROM104存储有OS(Operating System:操作系统)等系统软件、应用程序软件等。例如,在更新OS的情况下,多核处理器系统100通过I/F108接收新的OS,将闪存ROM104储存的原来的OS更新为接收到的新的OS。
闪存ROM控制器105根据CPUs101的控制,控制针对闪存ROM106的数据的读/写。闪存ROM106存储通过闪存ROM控制器105的控制而写入的数据。作为数据的具体例,是使用多核处理器系统100的用户通过I/F108获取的图像数据、映像数据等。闪存ROM106例如能够采用存储卡、SD卡等。
以光标、图标或者工具箱为代表,显示器107显示文档、图像、功能信息等数据。该显示器107例如能够采用TFT液晶显示器等。
I/F108通过通信线路与LAN(Local Area Network:局域网)、WAN(Wide Area Network:广域网)、因特网等网络111连接,经由网络111与其他装置连接。而且,I/F108掌管网络111和内部的接口,控制来自外部装置的数据的输入输出。I/F108例如能够采用调制解调器、LAN适配器等。键盘109具备用于输入数字、各种指示等的键,进行数据的输入。另外,键盘109也可以是触摸面板式的输入板、数字键等。
图2是表示多核处理器系统100的硬件的一部分和软件的框图。图2所示的硬件是缓存一致性机构201、共享存储器202、和CPUs101所包含的CPU#0~CPU#3。共享存储器202和CPU#0~CPU#3通过缓存一致性机构201连接。另外,CPU#0~CPU#3为了能够高速访问共享存储器202的数据,保持复制了共享存储器202的数据的高速缓冲存储器。本实施方式中的CPU#0~CPU#3的高速缓冲存储器存在于缓存一致性机构201的内部。
缓存一致性机构201是取得CPU#0~CPU#3所访问的高速缓冲存储器的匹配性的装置。作为缓存一致性机构的方式,大致有监听方式和目录(directory)方式。
监听方式是高速缓冲存储器管理自身的高速缓冲存储器、其他CPU的高速缓冲存储器的更新状态,与其他的高速缓冲存储器交换更新状态的信息的方式。采取监听方式的缓存一致性机构通过交换更新状态的信息,来判断在哪个高速缓冲存储器中存在最新的数据。另外,为了各高速缓冲存储器能够获取最新的数据,采取监听方式的缓存一致性机构变更自身的高速缓冲存储器的状态或者进行高速缓冲存储器的无效化。
目录方式是在称为目录的专用区域统一管理高速缓冲存储器的一致性的方式。在采取目录方式的缓存一致性机构中,从高速缓冲存储器向目录发送数据,全部的高速缓冲存储器共享数据。
无论在哪个方式中,缓存一致性机构201均判断各CPU的高速缓冲存储器与成为主存的共享存储器202是否一致。在发生了不一致的情况下,缓存一致性机构201为了取得一致,通过进行高速缓冲存储器的复制、更新、无效化等来消除不一致。以监听方式对本实施方式中的缓存一致性机构201进行了说明,但目录方式也能够应用本实施方式。
另外,作为缓存一致性机构201的内部,存在监听对应高速缓冲存储器#0~监听对应高速缓冲存储器#3、和监听对应的总线110。CPU#0~CPU#3分别访问对应的监听对应高速缓冲存储器#0~监听对应高速缓冲存储器#3。例如,CPU#0访问监听对应高速缓冲存储器#0。关于监听对应高速缓冲存储器的详细内容,将利用图3在后面叙述。
监听对应的总线110是除了现有的总线功能之外,为了与监听对应还被追加了功能的总线。关于监听对应的总线110的详细内容,将利用图4在后面叙述。另外,监听对应高速缓冲存储器#0通过主I/F#0和从I/F#0与监听对应的总线110连接。同样,监听对应高速缓冲存储器#1~监听对应高速缓冲存储器#3也分别通过主I/F和从I/F与监听对应的总线110连接。
共享存储器202是能够从CPU#0~CPU#3进行访问的存储区域。具体而言,存储区域例如是ROM102、RAM103、和闪存ROM104。
图2所示的软件是OS203和线程#0~线程#3。OS203是控制多核处理器系统100的程序。具体而言,OS203进行CPU#0~CPU#3所执行的软件的调度处理。线程#0~线程#3是由OS203分配给CPU#0~CPU#3的线程。对于线程#0~线程#3而言,存在属于同一进程的情况,也存在属于不同进程的情况。
图3是表示监听对应高速缓冲存储器#0的内部的框图。在图3中,使用监听对应高速缓冲存储器#0~监听对应高速缓冲存储器#3中的监听对应高速缓冲存储器#0来对内部进行说明。
监听对应高速缓冲存储器#0在内部包含高速缓存行存储部#0和高速缓存行控制部#0。高速缓存行存储部#0包含数据字段、地址字段、状态(state)字段。数据字段是几十字节(byte)左右的被称为行的连续的数据的单位,存储有数据。地址字段储存数据字段存储的行在共享存储器202上对应的地址。状态字段储存数据字段的状态。另外,将地址字段和状态字段一并作为标签区域。
另外,状态字段能够取得的状态因实现监听方式的协议而不同,作为代表的状态是M状态、E状态、S状态、I状态这4个状态。
M状态表示对应的行仅存在于相应的高速缓冲存储器,从主存被变更的状态。E状态表示对应的行仅存在于相应的高速缓冲存储器,没从主存变更的状态。S状态表示对应的行存在于多个高速缓冲存储器,没从主存变更的状态。I状态表示对应的行为无效的状态。并且,也存在如下协议:作为与上述的4个状态不同的O状态,使用对应的行存在于多个高速缓冲存储器,相应的行被更新,具有写回到主存的责任的状态。
实现监听方式的协议大致存在无效型协议和更新型协议。无效型协议是针对多个高速缓冲存储器参照的地址,在某个高速缓冲存储器进行更新的情况下,该地址为脏数据(dirty)而使参照中的全部高速缓冲存储器的相应的行无效化的协议。更新型协议是在针对多个高速缓冲存储器参照的地址进行数据更新时,对主存和其他的高速缓冲存储器通知更新数据的协议。
作为无效型协议的例子,存在取得M状态、E状态、S状态、I状态这4个状态的MESI(Illinois)协议,或者取得M状态、O状态、S状态、I状态这4个状态的MOSI(Berkeley)协议等。作为更新型协议的例子,存在取得M状态、E状态、I状态这3个状态的MEI(Firefly)协议,或者取得M状态、O状态、E状态、S状态这4个状态的MOES(DRAGON)协议等。
在本实施方式中,以作为无效型协议之一的MESI协议为例进行说明,但其他的无效型协议、或者更新型协议也能够应用本实施方式。
高速缓存行控制部#0具有为了实现高速缓冲存储器的功能而被要求的数据储存构造决定处理、行更换处理、数据更新处理等各种功能。另外,高速缓存行控制部#0与对应的CPU#0通过CPUI/F连接,与总线110通过主I/F#0和从I/F#0连接。
另外,高速缓存行控制部#0包含用于与监听对应的监听控制部#0。监听控制部#0具有根据实现监听方式的协议,来控制高速缓存行存储部#0的功能。本实施方式中的监听控制部#0按照MESI协议来控制高速缓存行存储部#0。监听控制部#0进行重新提取高速缓存行的处理和对高速缓存行的写入处理。利用图10、图11在后面叙述上述2个处理。
由于监听对应高速缓冲存储器与CPU#0~CPU#3的每一个对应地存在,所以成为监听对应高速缓冲存储器的内部构造的高速缓存行存储部、高速缓存行控制部也与各个CPU对应地存在。例如,高速缓存行存储部#1表示监听对应高速缓冲存储器#1的高速缓存行存储部。高速缓存行存储部#2、高速缓存行存储部#3也分别对应于监听对应高速缓冲存储器#2、监听对应高速缓冲存储器#3。高速缓存行控制部、监听控制部也同样。
图4是表示监听对应的总线110的详细内容的说明图。图4中的线是一根物理信号线,黑圆表示信号线彼此的连接。总线110从主I/F#0~主I/F#3和从I/F#0~从I/F#3接受信号。主I/F发送地址信息、读出或写入这样的指令信息。控制器401基于地址信息和预先登记到控制器401的映射信息,向对应的从I/F输出选择信号。接收到选择信号的从I/F接受地址信息和指令信息,根据指令信息进行数据的交换。
在图4的例子中,控制器401接收由主I/F#0发送来的信号。控制器401例如对从I/F#1~从I/F#3输出选择信号。接收到选择信号的从IF#1~从I/F#3接受地址信息和指令信息,根据指令信息进行数据的交换。
并且,对应于监听的总线110被追加广播、阻止、废止这3个功能。广播是从主I/F向被预先设定为广播目的地的所有从I/F发送指令信息与数据信息的组合的请求的功能。阻止是强制解除当前的总线连接的功能。废止是针对高速缓冲存储器使与地址对应的行无效的功能。通过使用这些功能,总线110满足作为缓存一致性机构而被要求的功能。
(多核处理器系统100的功能)
接下来,对多核处理器系统100的功能进行说明。图5是表示多核处理器系统100的功能的框图。多核处理器系统100包含执行部503、检测部504、确定部505、判断部506、和控制部507。对于成为该控制部的功能(检测部504~控制部507)而言,通过例如CPU#0执行存储装置中存储的程序来实现该功能。具体而言,存储装置例如是图1所示的ROM102、RAM103、闪存ROM104等。另外,执行部503通过缓存一致性机构201执行来实现该功能。
另外,多核处理器系统100针对任意的线程能够访问储存有未访问相同的共享数据的线程的一览、和任意的线程未访问的进程间通信的区域的依存信息501。关于依存信息501的详细内容,将利用图9后述。
另外,检测部504~控制部507可以作为内部的功能而存在于调度器502,或者也可以位于调度器502的外部,以能够通知调度器502的处理结果的状态存在。调度器502是包含于OS203的软件,具有决定分配给CPU的进程的功能。另外,在图5中,检测部504~控制部507存在于CPU#0的内部,但也可以存在于CPU#1~CPU#3的任意一个,也可以存在于CPU#0~CPU#3的全部。
例如,调度器502基于对线程设定的优先级等,决定接下来分配给CPU的线程。在到达规定的时刻的情况下,调度器502将决定了调度程序(dispatcher)的线程分配给CPU。作为调度器的功能之一,也存在包含调度程序的方式。在本实施方式中,调度器502内存在调度程序的功能。
执行部503具有执行在被多个核心的每一个访问的高速缓冲存储器中储存的共享数据的值的一致性的功能。例如,成为执行部503的缓存一致性机构201执行CPU#0所访问的监听对应高速缓冲存储器#0和CPU#1所访问的监听对应高速缓冲存储器#1的共享数据的值的一致性。
检测部504具有检测由多个核心中的第1核心执行的第1线程的功能。例如,检测部504检测由成为第1核心的CPU#0执行的线程A-1。具体而言,作为检测线程A-1的定时,是通过调度器502进行线程的再次调度请求时。其中,检测出的线程的信息被储存于CPU#0的寄存器、本地存储器等。
确定部505具有在由检测部504检测出第1线程的情况下,对通过多个核心中的第1核心以外的第2核心正在执行的第2线程进行确定的功能。例如,在检测出线程A-1的情况下,确定部505确定通过CPU#0~CPU#3中的CPU#0以外的例如CPU#1正在执行的线程A-2。其中,确定出的线程的信息被储存于CPU#0的寄存器、本地存储器等。
判断部506具有对是否存在被第1线程以及由确定部505确定出的第2线程共同访问的共享数据进行判断的功能。另外,判断部506也可以进一步判断第1以及第2线程是否属于同一进程。另外,判断部506也可以判断第1以及第2线程是否属于不同的进程,并且是否存在被第1以及第2线程共同使用的进程间通信的区域。关于进程间通信的区域的详细内容,将利用图8后述。
另外,判断部506也可以判断是否存在第1以及第2线程所属的进程彼此使用的进程间通信的区域。而且,判断部506也可以在判断是否存在被共同使用的进程间通信的区域的情况下,首先判断第1以及第2线程的至少一方未使用进程间通信的区域的状态。在第1以及第2线程都使用进程间通信的区域的情况下,判断部506也可以判断是否存在被第1以及第2线程共同使用的进程间通信的区域。
例如,判断部506访问依存信息501,判断在第1线程的未访问相同的共享数据的线程一览中是否包含第2线程,是否存在被线程共同访问的共享数据。另外,判断部506也可以访问依存信息501,从第1以及第2线程未访问的进程间区域,判断是否存在被共同使用的进程间通信的区域。其中,判断结果被储存在CPU#0的寄存器、本地存储器等。
控制部507具有在由判断部506判断为不存在被共同访问的共享数据的情况下,利用执行部503使与第1以及第2核心分别所对应的第1以及第2高速缓冲存储器的一致性的执行停止的功能。另外,控制部507也可以在判断为第1以及第2线程是同一进程、且判断为不存在被共同访问的共享数据的情况下,使与第1以及第2高速缓冲存储器的一致性的执行停止。另外,控制部507还可以在判断为第1以及第2线程属于不同的进程、且判断为不存在被共同使用的进程间通信的区域的情况下,使与第1以及第2高速缓冲存储器的一致性的执行停止。
另外,控制部507也可以在停止了与第1以及第2高速缓冲存储器的一致性的执行的情况下,使第1高速缓冲存储器中储存的共享数据从第1高速缓冲存储器中消除。
例如,设想判断部506判断为不存在被线程A-1和线程A-2共同访问的共享数据的情况。此时,控制部507通过缓存一致性机构201使监听对应高速缓冲存储器#0和监听对应高速缓冲存储器#1的一致性的执行停止。另外,控制部507通过刷新(flash)监听对应高速缓冲存储器#0中储存的共享数据,使共享数据从监听对应高速缓冲存储器#0中消除。关于具体的刷新操作,将利用图12后述。
图6是表示缓存一致性的执行状态和停止状态的说明图。以符号601表示的框图对在多核处理器系统100中动作的进程A所保有的线程、和各线程访问的存储器进行了表示。进程A保有线程A-1、线程A-2、和线程A-3。另外,线程A-1访问共享存储器202的进程A用数据区域中的数据A。线程A-2访问数据B。线程A-3访问数据A和数据B。
根据符号601所示的前提,在以符号602表示的多核处理器系统100中,线程A-1被分配给CPU#0,线程A-3被分配给CPU#1。在符号602的状态下,通过缓存一致性机构201执行缓存一致性,CPU#0和CPU#1能够以获得了匹配性的状态共享数据A。
接下来,在以符号603表示的多核处理器系统100中,表示了从符号602的状态起分配给CPU#1的线程从线程A-3切换到线程A-2的状态。在符号603的状态中,由于CPU#0和CPU#1中不存在共同访问的数据,所以缓存一致性机构201可以停止缓存一致性的执行。为了使缓存一致性无效,例如在利用图4中所述的与监听对应的总线110进行广播发送时,通过从广播目的地中删除来实现缓存一致性的执行停止。
作为具体进行无效的方法,有利用总线110使监听对应高速缓冲存储器#0和监听对应高速缓冲存储器#1的广播停止这一方法。例如,缓存一致性机构201在从监听对应高速缓冲存储器#0的主I/F#0广播发送无效化通知等时,不向从I/F#1发送而向从I/F#2和从I/F#3发送。这样,在缓存一致性机构201中,若停止特定的CPU间的缓存一致性的执行,则由于发送目的地减少,所以总线110的通信量、处理量减少,能够削减消耗电力,而且能够防止延迟。
图7是多核处理器系统100的动作概要。在图7中,作为用于实现基于图6中提示那样的线程所访问的共享数据来切换缓存一致性机构201的执行和停止的处理组,表示了处理701~处理710。在多核处理器系统100的设计时执行处理701和处理702,在多核处理器系统100的动作中执行处理703~处理710。
在处理701中,针对线程间的依存关系,通过ESL(Electronic SystemLevel:电子系统级)模拟器等解析属于对象进程的线程间的依存关系。关于具体的解析的例子,将利用图8后述。解析后,在处理702中通过编译器改写成为对象进程的源的程序。具体而言,编译器将与特定的线程有依存关系的线程的信息追加到特定的线程的前端等而追加到程序内。
在处理703中,执行对象进程的CPU重新生成线程。生成后,在处理704中,上述的CPU将通过编译器追加的依存关系的信息追加到OS203内的依存信息501。关于依存信息501的详细内容,将利用图9后述。追加后,对象进程对OS203进行线程的分配请求,在处理705中,通过由OS203内的调度器502决定了分配的CPU执行生成的线程。
在处理706中,OS203的调度器502决定分配给对象CPU的线程。根据在处理703中生成的线程、成为可执行状态的线程来决定成为决定对象的线程。决定了线程后,在处理707中,调度器502获取由其他的CPU正在执行的线程。
当获取了正在执行的线程后,在处理708中,调度器502根据所登记的依存信息501,决定一致性的执行或者停止。在决定后,调度器502在处理709中根据决定内容来控制缓存一致性机构201。在控制后,调度器502在处理710中向对象CPU分配所决定的线程。关于处理706~处理710的详细内容,将利用图12、图13后述。
图8是表示依存信息501的登记方法的说明图。在图8中,针对以符号601表示的进程A,表示了依存信息501的登记方法。在多核处理器系统100的设计时,ESL模拟器针对进行线程并列处理的进程A内的线程,调查各个线程所利用的数据区域。
关于调查方法,存在通过解析源代码来得到所使用的数据区域的静态方法、实际执行线程来从存储器访问的记录得到线程所使用的数据区域的动态方法等。在线程的数据区域的完全解析困难的情况下,也可以对通过调查明确地判明了没有共享数据区域的线程的组合进行记录。
若除了数据区域的共享的调查之外,调查对象的线程存在OS203所提供的进程间通信的区域中明确未利用的区域,则也记录该区域。进程间通信的区域是用于在多个进程间进行通信的区域,OS203通过API(Application Programming Interface:应用程序接口)等提供。一般而言,存储器空间在进程间独立,不能够直接访问相互的存储器空间。因此,当在进程间收发信息时,进程利用进程间通信的区域来收发信息。例如,OS203确保成为存储器空间的集合的空间集合(Chunk),将确保了的空间集合作为进程间通信的区域,提供给进程。
符号801是成为进程A的源的程序。ESL模拟器以在进程A的执行中起动线程时,将成为调查的结果的、未共享数据的线程的信息和未利用的进程间通信区域的信息登记到依存信息501的方式来变更程序。编译器对变更后的程序进行编译,生成执行代码。具体而言,在图8中,由于线程A-1和线程A-2不存在被共同访问的共享数据,所以ESL模拟器对进程A的程序追记线程A-1和线程A-2无依存的信息。
OS203将未共享数据的线程的信息登记到依存信息501。在图8所示的进程A的线程间的依存关系802中,线程A-1和线程A-2中被登记“无依存”。OS203将线程数据结构扩展,作为对未共享数据的线程的信息和未利用的进程间通信区域进行管理的依存信息501。关于扩展后的线程数据结构,将利用图9后述。
图9是表示扩展后的线程数据结构901的成员一览和存储内容的一个例子的说明图。在图9中,作为扩展后的线程数据结构901和线程数据结构901的存储内容的一个例子,表示了表902、线程ID列表903、线程ID列表904、进程间通信区域列表905、和进程间通信区域列表906。
在线程数据结构901的线程ID字段中,设定按每个线程编号的值。线程函数字段被设定线程的函数名。除此以外,作为线程数据结构901的字段,存在现有的线程数据结构中存在的字段。另外,成为依存信息501的实体的、未共享数据的线程ID列表字段和未利用的进程间通信区域列表字段是在本实施方式中被扩展了的字段。
未共享数据的线程ID列表字段被设定有对象的线程和指向未共享数据的线程ID列表的指针。例如,在表902中,线程ID为“1”的Browser_Main线程在未共享数据的线程ID列表字段中设定有线程ID列表903。线程ID列表903中登记有线程ID“2”和线程ID“3”的线程。由此,表示了Browser_Main线程相对线程ID为“2”的Browser_Download线程和线程ID为“3”的Browser_Upload线程没有数据的共享。
同样,在Browser_Download线程的未共享数据的线程ID列表字段中设定有线程ID列表904。根据线程ID列表904的内容,表示了Browser_Download线程与Browser_Main线程没有数据的共享。
未利用的进程间通信区域列表字段被设定有指向线程未利用的进程间通信区域列表的指针。例如,Browser_Main线程在未利用的进程间通信区域列表字段中设定有进程间通信区域列表905。在进程间通信区域列表905登记有空间集合3和空间集合4。
另外,作为与Browser_Main线程不同的进程被执行的、线程ID为“4”的FTP_Download线程在未利用的进程间通信区域列表字段中设定有进程间通信区域列表906。在进程间通信区域列表906中登记有空间集合1和空间集合2。在OS203确保的空间集合是空间集合1~空间集合4的情况下,在进程间通信区域列表905和进程间通信区域列表906中不存在被共同利用的进程间通信区域。
如利用图9所说明那样,OS203通过线程数据结构901来管理线程,但同样也可以管理作为线程的集合的进程。并且,OS203也可以按每个进程生成未利用的进程间通信区域列表。
图10是表示监听控制部#0进行的行取出处理的流程图。在图10中,设想了监听对应高速缓冲存储器#0从CPU#0接收对高速缓冲存储器的读入请求,CPU#0请求的高速缓冲存储器在高速缓存行存储部#0中不存在,产生了监听控制部#0进行的行取出处理的情况。监听控制部#0以外的监听控制部#1~监听控制部#3也根据来自对应的CPU的读入请求,进行行取出处理。
监听控制部#0决定新行取出(步骤S1001)。在决定之后,监听控制部#0将1行量的读出请求作为广播从主I/F#0发送至总线110(步骤S1002)。
接收到读出请求的监听控制部#1~监听控制部#3开始行取出处理的响应。需要说明的是,由于监听控制部#1~监听控制部#3全部进行相等的处理,所以在以下的叙述中为了说明的简化,利用监听控制部#1进行说明。监听控制部#1从高速缓存行存储部#1的标签区域对是否存在具有与被请求的地址一致的地址的行进行检索(步骤S1003)。其中,在检索具有一致的地址的行时,从作为无效状态的I状态以外的行检索。
在检索后,监听控制部#1判断是否存在具有一致的地址的行(步骤S1004)。在不存在具有一致的地址的行的情况下(步骤S1004:“否”),监听控制部#1结束行取出处理的响应。在存在具有一致的地址的行的情况下(步骤S1004:“是”),监听控制部#1向读出请求的发送源发行停止命令,在图10的例子中向监听控制部#0发行阻止命令(步骤S1005)。
在发行后,监听控制部#1判断一致的行的状态是否为M状态(步骤S1006)。在一致的行的状态是M状态的情况下(步骤S1006:“是”),监听控制部#1将一致的行的数据写入到共享存储器202(步骤S1007)。在写入结束后,或者被检索的行的状态是M状态以外的情况下(步骤S1006:“否”),监听控制部#1将行变更为S状态(步骤S1008),结束行取出处理的响应。
判断监听控制部#0判断是否从监听控制部#1~监听控制部#3的任意一个通过阻止命令被阻止(步骤S1009)。在未被阻止的情况下(步骤S1009:“否”),监听控制部#0将读出的行以E状态储存至高速缓存行存储部#0(步骤S1010),并结束行取出处理。在被阻止的情况下(步骤S1009:“是”),监听控制部#0再次向总线110发送1行量的读出请求(步骤S1011)。在再次发送后,监听控制部#0将读出的行以S状态储存至高速缓存行存储部#0(步骤S1012),并结束行取出处理。
图11是表示监听控制部#0进行的对行的写入处理的流程图。在图11中,设想了监听对应高速缓冲存储器#0从CPU#0接收了对高速缓冲存储器的写入请求的情况。监听控制部#0以外的监听控制部#1~监听控制部#3也基于来自对应的CPU的写入请求,进行写入处理。
监听控制部#0决定对行的写入(步骤S1101)。在决定后,监听控制部#0判断预定写入的行是否是S状态(步骤S1102)。在是S状态的情况下(步骤S1102:“是”),监听控制部#0通过广播将无效化请求发送给监听控制部#1~监听控制部#3(步骤S1103)。在发送了无效化请求后,或者不是S状态的情况下(步骤S1102:“否”),监听控制部#0将预定写入的行变更为M状态(步骤S1104)。在变更后,监听控制部#0向预定写入的行写入数据(步骤S1105),并结束对行的写入处理。
通过步骤S1103的处理接收到无效化请求的监听控制部#1~监听控制部#3开始对行的写入处理的响应。其中,由于监听控制部#1~监听控制部#3都进行相等的处理,所以在以下的叙述中为了说明的简化,利用监听控制部#1进行说明。
监听控制部#1从高速缓存行存储部#1的标签区域检索是否存在具有与被请求的地址一致的地址的行(步骤S1106)。其中,在检索具有一致的地址的行时,从作为无效状态的I状态以外的行检索。在检索后,监听控制部#1判断是否存在具有一致的地址的行(步骤S1107)。在存在具有一致的地址的行的情况下(步骤S1107:“是”),监听控制部#1通过将行设为I状态来进行无效化(步骤S1108)。在行无效化后,或者不存在具有一致的地址的行的情况下(步骤S1107:“否”),监听控制部#1结束对行的写入处理的响应。
图12是表示一致性控制处理的流程图。在CPU#0~CPU#3中的任意一个CPU中都执行一致性控制处理。在图12中,对由CPU#0执行一致性控制处理的情况进行说明。
CPU#0检测再次调度请求的受理(步骤S1201)。每当进行线程的再次调度时便执行一致性控制处理。因此,一致性控制处理可以位于调度器502的内部,也可以位于调度器502的外部而是能够通知的状态。CPU#0决定对再次调度的对象CPU分配的线程(步骤S1202)。再次调度对象CPU可以是CPU#0,在调度器502还进行其他CPU的调度处理的情况下,也可以是成为再次调度请求的受理对象的其他CPU。
在决定后,CPU#0判断是否设定有分配禁止标志(步骤S1203)。在设定有分配禁止标志的情况下(步骤S1203:“是”),CPU#0在一定时间后再次执行步骤S1203。在没有设定分配禁止标志的情况下(步骤S1203:“否”),CPU#0对对象CPU以外的其他CPU设定分配禁止标志(步骤S1204)。
在设定了分配禁止标志后,CPU#0执行一致性对象CPU决定处理(步骤S1205)。关于一致性对象CPU决定处理的详细内容,将利用图13后述。在执行后,CPU#0通过一致性对象CPU决定处理来判断是否存在从执行了一致性的状态变化到停止的CPU(步骤S1206)。在存在变化为停止的CPU的情况下(步骤S1206:“是”),CPU#0刷新对象CPU的高速缓冲存储器(步骤S1207)。刷新例如是指监听控制部将M状态等数据正被更新的行写入道共享存储器202,将包含M状态的所有行设定为I状态的操作。
在刷新后,或者没有变化为停止的CPU的情况下(步骤S1206:“否”),CPU#0控制缓存一致性机构201(步骤S1208)。作为具体的控制内容,设想在步骤S1205的处理中,对象CPU是CPU#0,决定为停止CPU#0和CPU#1的一致性的执行的情况。
该情况下,CPU#0指示监听对应高速缓冲存储器#0将监听对应高速缓冲存储器#1从广播目的地中删除。具体而言,CPU#0通过变更监听对应高速缓冲存储器#0的设定寄存器,将监听对应高速缓冲存储器#1从广播目的地中删除。
同样,CPU#0也指示监听对应高速缓冲存储器#1将监听对应高速缓冲存储器#0从广播目的地中删除。通过从广播目的地中删除,在步骤S1002、步骤S1103的处理中进行的广播的发送量减少,能够减少总线110内的通信量。另外,由于从广播目的地中删除的监听对应高速缓冲存储器也可以不进行各自的响应处理,所以能够减少处理量。
在控制后,CPU#0解除其他CPU的分配禁止标志(步骤S1209),将决定的线程分配给对象CPU(步骤S1210)。在分配后,CPU#0结束一致性控制处理。
图13是表示一致性对象CPU决定处理的流程图。与一致性控制处理相同,在CPU#0~CPU#3中的任意一个CPU中也执行一致性对象CPU决定处理。在图13中,与图12同样,对由CPU#0执行一致性对象CPU决定处理的情况进行说明。另外,一致性对象CPU决定处理从一致性控制处理获取对象CPU和预定分配的线程即对象线程作为参数。
CPU#0从对象CPU以外的其他CPU中选择未选择的CPU(步骤S1301)。在选择后,CPU#0判断对象线程所属的进程与由选择出的CPU正在执行的线程所属的进程是否相同(步骤S1302)。
在相同的情况下(步骤S1302:“是”),CPU#0判断在对象线程的未共享数据的线程ID列表字段中是否包含由选择出的CPU正在执行的线程(步骤S1303)。在包含的情况下(步骤S1303:“是”),CPU#0决定停止对象CPU和选择出的CPU的一致性(步骤S1304)。在未包含的情况下(步骤S1303:“否”),CPU#0决定执行对象CPU和选择出的CPU的一致性(步骤S1305)。
在对象线程所属的进程和由选择出的CPU正在执行的线程所属的进程不相同的情况下(步骤S1302:“否”),CPU#0判断进程彼此是否利用同一进程间通信区域(步骤S1306)。在利用同一进程间通信区域的情况下(步骤S1306:“是”),CPU#0判断对象线程和由选择出的CPU正在执行的线程是否利用同一进程间通信区域(步骤S1307)。
在利用同一进程间通信区域的情况下(步骤S1307:“是”),CPU#0决定执行对象CPU和选择出的CPU的一致性(步骤S1308)。在未利用同一进程间通信区域的情况下(步骤S1306:“否”、步骤S1307:“否”),CPU#0决定停止对象CPU和选择出的CPU的一致性(步骤S1309)。
在步骤S1304、步骤S1305、步骤S1308、步骤S1309的任意一个处理之后,CPU#0从对象CPU以外的其他CPU判断是否存在未选择的CPU(步骤S1310)。在存在未选择的CPU的情况下(步骤S1310:“是”),CPU#0移至步骤S1301的处理。在没有未选择的CPU的情况下(步骤S1310:“否”),CPU#0结束一致性对象CPU决定处理。
如以上说明那样,根据多核处理器系统、缓存一致性控制方法以及缓存一致性控制程序,判断为在第1以及第2核心中正在执行的第1以及第2线程所访问的区域不同。在判断为区域不同的情况下,多核处理器系统使对应于第1核心的第1高速缓冲存储器和对应于第2核心的第2高速缓冲存储器的一致性停止。由于被访问的区域不同,所以即使停止一致性也不发生共享数据的不匹配。因此,在多核处理器系统中,通过缓存一致性机构的通信量减少,能够削减消耗电力,而且可防止通信量增大引起的延迟。
另外,多核处理器系统也可以在判断为第1以及第2线程属于同一进程、且不存在被共同访问的共享数据的情况下,停止一致性。由此,在多核处理器系统中,即使2个核心执行同一进程的线程,也能够减少高速缓存一致性机构的通信量,可削减消耗电力。在移动电话所代表的嵌入式设备中,由于同时起动多个进程的情况较少,执行属于同一进程的多个线程的机会较多,所以本实施方式特别有效。
并且,在搭载于嵌入式设备的嵌入式OS中,也存在没有进程的概念,所有线程(任务)访问同一存储器空间的OS。例如,是在下述参考文献1中说明的μITRON。
(参考文献1:組み込みOS適材適所《Windows(登録商標)Embedded CE編》(1)――まず、μITRONとWindows(登録商標)Embedded CE の違いを理解する|Tech Village/CQ出版株式会社:[online]、[平成22年05月13日検索]、インターネット<URL:http://www.Kumikomi.net /archives /2009/09/itronwindows_embedded_ceoswindows_embedded_ce1.php?page=2>)
在上述那样的OS中,由于所有线程能够访问整个存储器空间,所以即使应用现有方法,也处于总是执行一致性的状态。但是,在本实施方式的多核处理器系统100中,当判断为不存在被共同访问的共享数据时,能够削减缓存一致性机构的通信量、处理量,特别有效果。
另外,对于多核处理器系统而言,在第1以及第2线程属于不同的进程、且不存在被第1以及第2线程共同使用的进程间通信的区域的情况下,也可以停止一致性。由此,对于多核处理器系统而言,即使是不同的进程,通过除了应该执行一致性的情况以外停止一致性,能够减少通信量、处理量,可削减消耗电力,而且能够防止通信量的增大引起的延迟。
另外,对于多核处理器系统而言,也可以判断是否存在第1以及第2线程所属的进程彼此所使用的进程间通信的区域。另外,在判断是否存在被第1以及第2线程共同使用的进程间通信的区域的情况下,多核处理器系统可以首先判断第1以及第2线程的至少一方未使用进程间通信的区域的状态。
是否使用了进程间通信的区域的判断比是否存在被共同使用的进程间通信的区域的判断处理量小。因此,按照首先判断第1以及第2线程是否使用进程间通信的区域,在均使用区域的情况下,判断是否存在被共同使用的区域这一处理顺序,能够减少整体的处理量。
另外,对于多核处理器系统而言,也可以在停止了第1高速缓冲存储器和第2高速缓冲存储器的一致性的执行的情况下,将储存于第1高速缓冲存储器的共享数据从第1高速缓冲存储器中消除。由此,对于多核处理器系统而言,即使停止一致性的执行,也能够取得共享存储器的匹配性。
此外,能够通过由个人计算机、工作站等计算机执行预先准备的程序,来实现在本实施方式中说明的缓存一致性控制方法。可将本缓存一致性控制程序记录到硬盘、软盘、CD-ROM、MO、DVD等计算机能够读取的记录介质中,通过由计算机从记录介质中读出而加以执行。另外,也可以经由因特网等网络来发布本缓存一致性控制程序。
附图标记说明:#0、#1…CPU、监听对应高速缓冲存储器;A-1、A-2…线程;100…多核处理器系统;110…总线;501…依存信息;502…调度器;503…执行部;504…检测部;505…确定部;506…判断部;507…控制部。
Claims (6)
1.一种多核处理器系统,其特征在于,具备:
执行单元,其执行被多个核心分别访问的高速缓冲存储器中储存的共享数据的值的一致性;
检测单元,其检测被所述多个核心中的第1核心执行的第1线程;
确定单元,其在通过所述检测单元检测出所述第1线程的情况下,确定被所述多个核心中的所述第1核心以外的第2核心正在执行的第2线程;
判断单元,其判断是否存在被所述第1线程以及由所述确定单元确定出的第2线程共同访问的共享数据;以及
控制单元,在由所述判断单元判断为不存在被共同访问的共享数据的情况下,利用所述执行单元使与所述第1核心对应的第1高速缓冲存储器和与所述第2核心对应的第2高速缓冲存储器的一致性的执行停止。
2.根据权利要求1所述的多核处理器系统,其特征在于,
所述判断单元进一步判断所述第1以及第2线程是否属于同一进程;
所述控制单元在由所述判断单元判断为所述第1以及第2线程是同一进程、且判断为不存在被共同访问的共享数据的情况下,利用所述执行单元使所述第1高速缓冲存储器和所述第2高速缓冲存储器的一致性的执行停止。
3.根据权利要求1所述的多核处理器系统,其特征在于,
所述判断单元判断所述第1以及第2线程是否属于不同的进程、且是否存在被所述第1以及第2线程共同使用的进程间通信的区域,
所述控制单元在由所述判断单元判断为所述第1以及第2线程属于不同的进程、且不存在被共同使用的进程间通信的区域的情况下,利用所述执行单元使所述第1高速缓冲存储器和所述第2高速缓冲存储器的一致性的执行停止。
4.根据权利要求1~3中任意一项所述的多核处理器系统,其特征在于,
所述控制单元在停止了所述第1高速缓冲存储器和所述第2高速缓冲存储器的一致性的执行的情况下,使所述第1高速缓冲存储器中储存的共享数据从所述第1高速缓冲存储器中消除。
5.一种缓存一致性控制方法,其特征在于,
能够对缓存一致性机构进行控制的多个核心中的第1核心执行下述步骤,其中,所述缓存一致性机构执行被所述多个核心分别访问的高速缓冲存储器中储存的共享数据的值的一致性,所述步骤包括:
检测被所述第1核心执行的第1线程的检测步骤;
在通过所述检测步骤检测出所述第1线程的情况下,确定被所述多个核心中的所述第1核心以外的第2核心正在执行的第2线程的确定步骤;
判断是否存在被所述第1线程以及通过所述确定步骤确定出的第2线程共同访问的共享数据的判断步骤;以及
在通过所述判断步骤判断为不存在被共同访问的共享数据的情况下,利用所述缓存一致性机构使与所述第1核心对应的第1高速缓冲存储器和与所述第2核心对应的第2高速缓冲存储器的一致性的执行停止的控制步骤。
6.一种缓存一致性控制程序,其特征在于,
使能够对缓存一致性机构进行控制的多个核心中的第1核心执行下述步骤,其中,所述缓存一致性机构执行被所述多个核心分别访问的高速缓冲存储器中储存的共享数据的值的一致性;所述步骤包括:
检测被所述第1核心执行的第1线程的检测步骤;
在通过所述检测步骤检测出所述第1线程的情况下,确定被所述多个核心中的所述第1核心以外的第2核心正在执行的第2线程的确定步骤;
判断是否存在被所述第1线程以及通过所述确定步骤确定出的第2线程共同访问的共享数据的判断步骤;以及
在通过所述判断步骤判断出不存在被共同访问的共享数据的情况下,利用所述缓存一致性机构使与所述第1核心对应的第1高速缓冲存储器和与所述第2核心对应的第2高速缓冲存储器的一致性的执行停止的控制步骤。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/060056 WO2011158320A1 (ja) | 2010-06-14 | 2010-06-14 | マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102947807A true CN102947807A (zh) | 2013-02-27 |
CN102947807B CN102947807B (zh) | 2015-09-09 |
Family
ID=45347746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080067437.7A Expired - Fee Related CN102947807B (zh) | 2010-06-14 | 2010-06-14 | 多核处理器系统、缓存一致性控制方法以及缓存一致性控制程序 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8996820B2 (zh) |
EP (1) | EP2581834A4 (zh) |
JP (1) | JP5360299B2 (zh) |
CN (1) | CN102947807B (zh) |
WO (1) | WO2011158320A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407995A (zh) * | 2014-11-28 | 2015-03-11 | 上海兆芯集成电路有限公司 | 基于缓存一致性的控制系统和方法 |
CN109416682A (zh) * | 2016-06-30 | 2019-03-01 | 华为技术有限公司 | 用于管理数据库的系统和方法 |
CN109508315A (zh) * | 2017-09-15 | 2019-03-22 | 株式会社东芝 | 系统lsi以及系统lsi的故障检测方法 |
CN109840151A (zh) * | 2017-11-29 | 2019-06-04 | 大唐移动通信设备有限公司 | 一种用于多核处理器的负载均衡方法和装置 |
CN110114732A (zh) * | 2016-12-27 | 2019-08-09 | 东芝三菱电机产业系统株式会社 | 可编程控制器、管理装置和控制系统 |
CN110968180A (zh) * | 2019-11-14 | 2020-04-07 | 武汉纺织大学 | 一种通过减少数据传输实现gpu降耗的方法及系统 |
CN115917519A (zh) * | 2021-07-30 | 2023-04-04 | 株式会社软技 | 信息处理程序、信息处理装置和信息处理方法 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013063484A1 (en) * | 2011-10-28 | 2013-05-02 | The Regents Of The University Of California | Multiple-core computer processor |
US11733908B2 (en) | 2013-01-10 | 2023-08-22 | Pure Storage, Inc. | Delaying deletion of a dataset |
US10908835B1 (en) | 2013-01-10 | 2021-02-02 | Pure Storage, Inc. | Reversing deletion of a virtual machine |
US9830263B1 (en) * | 2014-06-30 | 2017-11-28 | EMC IP Holding Company LLC | Cache consistency |
CN105740164B (zh) | 2014-12-10 | 2020-03-17 | 阿里巴巴集团控股有限公司 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
US10176012B2 (en) | 2014-12-12 | 2019-01-08 | Nxp Usa, Inc. | Method and apparatus for implementing deterministic response frame transmission |
US10505757B2 (en) | 2014-12-12 | 2019-12-10 | Nxp Usa, Inc. | Network interface module and a method of changing network configuration parameters within a network device |
US9612881B2 (en) | 2015-03-30 | 2017-04-04 | Nxp Usa, Inc. | Method, apparatus, and system for unambiguous parameter sampling in a heterogeneous multi-core or multi-threaded processor environment |
US10268503B2 (en) * | 2015-06-24 | 2019-04-23 | International Business Machines Corporation | Performance of virtual machine fault tolerance micro-checkpointing using transactional memory |
US10038744B1 (en) * | 2015-06-29 | 2018-07-31 | EMC IP Holding Company LLC | Intelligent core assignment |
US10628352B2 (en) | 2016-07-19 | 2020-04-21 | Nxp Usa, Inc. | Heterogeneous multi-processor device and method of enabling coherent data access within a heterogeneous multi-processor device |
JP2020177074A (ja) * | 2019-04-16 | 2020-10-29 | 株式会社デンソー | 車両用装置、車両用装置の制御方法 |
JP7278632B2 (ja) * | 2021-05-19 | 2023-05-22 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP7049509B2 (ja) * | 2021-05-19 | 2022-04-06 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP7125525B2 (ja) * | 2021-05-19 | 2022-08-24 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007011580A (ja) * | 2005-06-29 | 2007-01-18 | Toshiba Corp | 情報処理装置 |
CN1983163A (zh) * | 2005-12-16 | 2007-06-20 | 中国科学院计算技术研究所 | 一种利用例外机制维护多线程处理器的存储一致性的方法 |
JP2008152571A (ja) * | 2006-12-18 | 2008-07-03 | Toshiba Corp | キャッシュメモリ装置およびマルチプロセッサシステム |
CN101449250A (zh) * | 2006-05-30 | 2009-06-03 | 英特尔公司 | 用于高速缓存一致性协议的方法、装置及系统 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6071318A (ja) | 1983-09-27 | 1985-04-23 | Mitsubishi Electric Corp | 車両用自動空気清浄装置 |
US5303362A (en) * | 1991-03-20 | 1994-04-12 | Digital Equipment Corporation | Coupled memory multiprocessor computer system including cache coherency management protocols |
JP3820645B2 (ja) | 1996-09-20 | 2006-09-13 | 株式会社日立製作所 | マルチプロセッサシステム |
JP3139392B2 (ja) | 1996-10-11 | 2001-02-26 | 日本電気株式会社 | 並列処理システム |
JP2000207248A (ja) | 1999-01-14 | 2000-07-28 | Toshiba Corp | 並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体 |
JP2002007371A (ja) * | 2000-06-23 | 2002-01-11 | Hitachi Ltd | L1キャッシュフォールスシェア緩和制御方式 |
JP3661614B2 (ja) | 2001-07-12 | 2005-06-15 | 日本電気株式会社 | キャッシュメモリ制御方法及びマルチプロセッサシステム |
US7530066B2 (en) * | 2002-06-24 | 2009-05-05 | Chang Stephen S | Controlling snoop activities using task table in multiprocessor system |
JP3925854B2 (ja) | 2002-10-11 | 2007-06-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチ・プロセッサ・システムにおけるプログラム |
JP4180569B2 (ja) * | 2003-01-27 | 2008-11-12 | 富士通株式会社 | 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法 |
US20050210204A1 (en) | 2003-01-27 | 2005-09-22 | Fujitsu Limited | Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method |
KR100515059B1 (ko) | 2003-07-22 | 2005-09-14 | 삼성전자주식회사 | 멀티프로세서 시스템 및 멀티프로세서 시스템의 캐쉬일관성 유지 방법 |
GB2427715A (en) | 2005-06-24 | 2007-01-03 | Advanced Risc Mach Ltd | Managing snoop operations in a multiprocessor system |
US7404041B2 (en) * | 2006-02-10 | 2008-07-22 | International Business Machines Corporation | Low complexity speculative multithreading system based on unmodified microprocessor core |
JP2008026944A (ja) | 2006-07-18 | 2008-02-07 | Renesas Technology Corp | バス結合型マルチプロセッサ |
JP4965974B2 (ja) * | 2006-11-14 | 2012-07-04 | ルネサスエレクトロニクス株式会社 | 半導体集積回路装置 |
US7681020B2 (en) * | 2007-04-18 | 2010-03-16 | International Business Machines Corporation | Context switching and synchronization |
US7765363B2 (en) | 2007-07-26 | 2010-07-27 | Hewlett-Packard Development Company, L.P. | Mask usable for snoop requests |
US8131941B2 (en) | 2007-09-21 | 2012-03-06 | Mips Technologies, Inc. | Support for multiple coherence domains |
-
2010
- 2010-06-14 EP EP10853202.9A patent/EP2581834A4/en not_active Withdrawn
- 2010-06-14 JP JP2012520182A patent/JP5360299B2/ja not_active Expired - Fee Related
- 2010-06-14 CN CN201080067437.7A patent/CN102947807B/zh not_active Expired - Fee Related
- 2010-06-14 WO PCT/JP2010/060056 patent/WO2011158320A1/ja active Application Filing
-
2012
- 2012-12-12 US US13/712,816 patent/US8996820B2/en not_active Expired - Fee Related
-
2015
- 2015-02-24 US US14/630,400 patent/US9390012B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007011580A (ja) * | 2005-06-29 | 2007-01-18 | Toshiba Corp | 情報処理装置 |
CN1983163A (zh) * | 2005-12-16 | 2007-06-20 | 中国科学院计算技术研究所 | 一种利用例外机制维护多线程处理器的存储一致性的方法 |
CN101449250A (zh) * | 2006-05-30 | 2009-06-03 | 英特尔公司 | 用于高速缓存一致性协议的方法、装置及系统 |
JP2008152571A (ja) * | 2006-12-18 | 2008-07-03 | Toshiba Corp | キャッシュメモリ装置およびマルチプロセッサシステム |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407995B (zh) * | 2014-11-28 | 2018-10-09 | 上海兆芯集成电路有限公司 | 基于缓存一致性的控制系统和方法 |
CN104407995A (zh) * | 2014-11-28 | 2015-03-11 | 上海兆芯集成电路有限公司 | 基于缓存一致性的控制系统和方法 |
CN109416682B (zh) * | 2016-06-30 | 2020-12-15 | 华为技术有限公司 | 用于管理数据库的系统和方法 |
CN109416682A (zh) * | 2016-06-30 | 2019-03-01 | 华为技术有限公司 | 用于管理数据库的系统和方法 |
US11354307B2 (en) | 2016-06-30 | 2022-06-07 | Huawei Technologies Co., Ltd. | Systems and methods for managing databases |
CN110114732A (zh) * | 2016-12-27 | 2019-08-09 | 东芝三菱电机产业系统株式会社 | 可编程控制器、管理装置和控制系统 |
CN110114732B (zh) * | 2016-12-27 | 2022-02-25 | 东芝三菱电机产业系统株式会社 | 可编程控制器、管理装置和控制系统 |
CN109508315A (zh) * | 2017-09-15 | 2019-03-22 | 株式会社东芝 | 系统lsi以及系统lsi的故障检测方法 |
CN109840151B (zh) * | 2017-11-29 | 2021-08-27 | 大唐移动通信设备有限公司 | 一种用于多核处理器的负载均衡方法和装置 |
CN109840151A (zh) * | 2017-11-29 | 2019-06-04 | 大唐移动通信设备有限公司 | 一种用于多核处理器的负载均衡方法和装置 |
CN110968180B (zh) * | 2019-11-14 | 2020-07-28 | 武汉纺织大学 | 一种通过减少数据传输实现gpu降耗的方法及系统 |
CN110968180A (zh) * | 2019-11-14 | 2020-04-07 | 武汉纺织大学 | 一种通过减少数据传输实现gpu降耗的方法及系统 |
CN115917519A (zh) * | 2021-07-30 | 2023-04-04 | 株式会社软技 | 信息处理程序、信息处理装置和信息处理方法 |
CN115917519B (zh) * | 2021-07-30 | 2023-09-08 | 株式会社软技 | 存储有信息处理程序的记录介质、信息处理装置和信息处理方法 |
US11762663B2 (en) | 2021-07-30 | 2023-09-19 | SoftGear Co., Ltd. | Information processing program, information processing device, and information processing method |
Also Published As
Publication number | Publication date |
---|---|
CN102947807B (zh) | 2015-09-09 |
JP5360299B2 (ja) | 2013-12-04 |
US20130097384A1 (en) | 2013-04-18 |
US20150169456A1 (en) | 2015-06-18 |
US9390012B2 (en) | 2016-07-12 |
US8996820B2 (en) | 2015-03-31 |
JPWO2011158320A1 (ja) | 2013-08-15 |
WO2011158320A1 (ja) | 2011-12-22 |
EP2581834A1 (en) | 2013-04-17 |
EP2581834A4 (en) | 2014-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102947807B (zh) | 多核处理器系统、缓存一致性控制方法以及缓存一致性控制程序 | |
CN106548789B (zh) | 用于操作叠瓦式磁记录设备的方法和装置 | |
CN102937979B (zh) | 网页的自定义优化 | |
KR101482285B1 (ko) | 복수의 이종의 솔리드 스테이트 저장 위치들의 선택적 이용 | |
US9052993B2 (en) | Multi-core processor system, control program, and control method | |
CN101593161B (zh) | 确保微处理器的快取存储器层级数据一致性的装置与方法 | |
CN100407169C (zh) | 为dma控制器提供高速缓存管理命令的系统和方法 | |
CN109902255B (zh) | 页面混合浏览记录生成方法、装置、设备和存储介质 | |
CN103765419A (zh) | 用于在主机文档服务中提供离线访问的系统和方法 | |
CN105190571A (zh) | 页表数据管理 | |
CN101784993A (zh) | 使用闪存作为存储器的设备及其操作方法 | |
EP3025237A1 (en) | Methods and apparatus for supporting persistent memory | |
JP2007219790A5 (zh) | ||
KR20130079865A (ko) | 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치 | |
CN108959108A (zh) | 固态硬盘访问方法以及使用该方法的装置 | |
US9313239B2 (en) | Information processing apparatus, electronic meeting system, and program | |
WO2013123589A1 (en) | General storage functionality extension | |
CN102947817A (zh) | 通信装置、通信方法以及通信程序 | |
WO2005066789A2 (en) | Method and apparatus for enabling volatile shared data across caches in a coherent memory multiprocessor system to reduce coherency traffic | |
JP2014002787A (ja) | マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム | |
CN115016714B (zh) | 电子设备控制方法、系统、电子设备及存储介质 | |
JP6880766B2 (ja) | 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム | |
US20220050786A1 (en) | Inter-device processing system with cache coherency | |
JP2008250395A (ja) | メモリシステム及びコンピュータシステム | |
JP2011059778A (ja) | 情報処理装置及びファイルシステムマウント処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150909 Termination date: 20180614 |