TECHNICAL FIELD
[0001] The embodiments discussed herein are related to a memory access controller, a multi-core
processor system, a memory access control method, and a memory access control program
that control memory access.
BACKGROUND ART
[0002] Conventionally, exclusive control over shared data between different cores is important
for shared memory multi-core processors. When data is shared among multiple cores
and is processed without performing exclusive control, even if the cores execute the
same process the same number of times, results may vary depending on the execution
timing of the process. One technique of performing exclusive control has been disclosed
as a technique of exclusive access to memory.
[0003] One example of exclusive access of memory is a method that uses an exclusive load
command, an exclusive store command, an exclusive access mechanism. This method expands
the cores command set and bus protocol to enable the issue of special load/store commands
on exclusive loading and exclusive storing. In addition, the exclusive access mechanism
is disposed on a shared bus connecting multiple cores to shared memory. The exclusive
access mechanism has a field recording therein identification information of a CPU
that issues an exclusive load command and information of the address and the tag of
a load destination, and monitors special load/store commands.
[0004] Exclusive access is defined as a state where exclusive storing is performed after
exclusive loading is performed. An issuance of an exclusive access request is equivalent
to exclusive loading having been performed, and completion of exclusive access is
equivalent to exclusive storing having ended.
[0005] When an exclusive load command is issued, the exclusive mechanism performs ordinary
loading and returns data to the issuing CPU. The exclusive access mechanism records
the address of the load destination. When searching information recorded in the exclusive
access mechanism and finding no CPU having the same address as the recorded load destination
and for which a tag is recorded in the exclusive access mechanism, the exclusive access
mechanism records a tag for the exclusive load command issuing CPU.
[0006] When an exclusive store command is issued, if a recorded associated with an issuing
CPU matches the address of a storing destination and a tag is recorded, the exclusive
access mechanism issues a store command, returns information indicating successful
storage to the issuing CPU, and deletes tag information. Otherwise, the exclusive
access mechanism does not issue a store command and executes an operation of returning
to the issuing CPU, information indicating failed storage.
[0007] Utilization of exclusive loading exclusive storing enables the matching of results
of the timing of processing. For example, when a given CPU performs exclusive loading
exclusive storing of a variable while another CPU performs exclusive loading of the
same variable, if the other CPU performing exclusive loading later fails in exclusive
storing, no result is reflected. As a result, the CPU having failed in exclusive storing
executes the same process over again from exclusive loading, which allows the CPU
to use a value properly reflecting the result of processing by the CPU having performed
loading first. Hence, results can be matched regardless of timing of processing.
[0008] For example, a technique is disclosed, according to which the exclusive access mechanism
is realized such that when an exclusive access request is made, a value representing
execution of the request is recorded in a register, and when release from exclusive
access occurs, the value is cleared from the register (see, e.g., Patent document
1 indicated below).
[0009] As one method of realizing the exclusive access mechanism, another technique is disclosed,
according to which when an exclusive access request is made, exclusive access is performed
using information of a CPU ID, memory that is a device with an address to which the
exclusive access request is made, I/O, etc. (see, e.g., Patent document 2 indicated
below).
[0010] Still another technique is disclosed, according to which the exclusive access mechanism
is realized by transmitting a release notification to each CPU when release from exclusive
access occurs, and memory traffic is reduced by causing a CPU that has made an exclusive
access request and failed to standby until the CPU receives notification (see, e.g.,
Patent document 3 indicated below).
[0011] In this manner, by using the exclusive access mechanism, data shared between different
processors are processed properly. The exclusive access mechanism, however, can control
an area of data of 32 bits or 64 bits at most, to which the exclusive access mechanism
is accessible through one load/store command. OSs or application programs often share
data in a larger area, because of which many OSs realize a function called spinlock
by utilizing the exclusive access mechanism and thereby, realize exclusive control
in a larger area. Overviews of spinlock described, for example, in Non-patent literatures
1 and 2 indicated below, and an example of spinlock is described, for example, in
Non-patent literature 3 indicated below.
[0012] In the case of executing spinlock, a CPU additionally provided with a synchronization
command and a synchronization wait command is present so that a CPU having failed
in securing an area is caused to standby and is released from standby when becoming
able to secure an area (see, e.g., Non-patent literatures 4 and 5 indicated below).
A synchronization command is a command to send a synchronous signal to a different
CPU. A synchronization wait command is a command for a CPU to standby until receiving
a synchronous signal. In application of this group of commands, a CPU having failed
in securing an area issues a synchronization wait command and stands by, while a CPU
having succeeded in securing an area sends a synchronous signal to a different CPU
after ending exclusive storing. Hence, the CPU having failed in securing the area
stands by to wait for a synchronous signal. As a result, access of a memory becomes
less frequent, which enables a reduction in power consumption.
[0013]
Patent document 1: Japanese Laid-Open Patent Publication No. H1-305457
Patent document 2: Published Japanese-Translation of PCT Application, Publication
No. 2007/099616
Patent document 3: Japanese Laid-Open Patent Publication No. H8-320828
[0014]
Non-patent document 1: "Spinlock - Wikipedia, the free encyclopedia" [online], retrieved Apr. 9, 2010, Internet
<URL:http://en.wikipedia.org/wiki/Spinlock>
Non-patent document 2: "pthread_spin_lock" [online], retrieved Apr. 9, 2010, Internet <URL:http://www.opengroup.org/onlinepubs/009695399/function
s/pthread_spin_lock.htm>
Non-patent document 3: "User-Level Spin Locus - CodeProject" [online], retrieved Apr. 9, 2010, Internet <URL:http://www.codeproject.com/kb/threads/spinlocks.aspx>
Non-patent document 4: "RealView Compilation Tools Version 3.1 Assembler Guide" [online], retrieved Apr. 9,
2010, Internet <URL:http://infocenter.arm.com/help/topic/com.arm.doc.dui02 04h/DUI0204H_rvct_assembler_guide.pdf>,
p.4-139, p.4-140
Non-patent document 5: "ARM11 MPCore Processor Revision: r2p0 Technical Reference Manual" [online], retrieved
Apr. 12, 2010, Internet <http://infocenter.arm.com/help/topic/com.arm.doc.ddi0360f/
DD10360F_arm11_mpcore_r2p0_trm.pdf>, p.11-8
DISCLOSURE OF INVENTION
PROBLEM TO BE SOLVED BY THE INVENTION
[0015] Among the above conventional techniques, however, the techniques of the exclusive
access mechanism according to Patent documents 1 and 2 pose a problem in that because
a synchronous signal is not sent at the timing of the completion of exclusive access,
implementing a synchronization command and a synchronization wait command is difficult.
[0016] In the technique of the exclusive access mechanism according to Patent document 3,
a synchronization command and a synchronization wait command can be implemented because
a synchronous signal is sent at the timing of the completion of exclusive access.
A CPU to which the synchronous signal is to be sent is, however, not identified and
thus, the synchronous signal is sent to each CPU. Consequently, a CPU in a standby
state according to a synchronization wait command for a purpose other than exclusive
access and a CPU having made an exclusive access request to a different area and being
in a state of standby are released temporarily from the standby state and then are
brought back into the standby state again. Hence, a problem of increased power consumption
by CPUs arises.
[0017] To solve the problems associated with the conventional techniques above, an object
of the present invention is to provide a memory access controller, a multi-core processor
system, a memory access control method, and a memory access control program that can
release a core that has requested exclusive access and is in a state of standby from
the standby state without starting another unintended core and thus, reduce power
consumption.
MEANS FOR SOLVING PROBLEM
[0018] To solve the problems above and achieve an object, the disclosed memory access controller
classifies into a first group of cores having made an exclusive access request to
the shared memory and a second group of cores not having made an exclusive access
request to the shared memory, multiple cores capable of accessing a shared memory;
detects a core having completed the exclusive access among the first group of cores
classified at the classifying; and sends to a core among the first group of cores
and standing by for the exclusive access and sending when a core having completed
the exclusive access is detected at the detecting, a notification of release from
a standby state.
EFFECT OF THE INVENTION
[0019] The memory access controller, the multi-core processor system, the memory access
control method, and the memory access control program offer an effect of releasing
a core that has requested exclusive access request and is in a standby state from
the standby state without starting another unintended core and thus, reduce power
consumption.
BRIEF DESCRIPTION OF DRAWINGS
[0020]
FIG. 1 is a block diagram of a hardware configuration of a multi-core processor system
according to embodiments;
Fig. 2 is a block diagram depicting the relation between CPUS and a memory access
controller 202 in the multi-core processor system 100 according to a first embodiment;
FIG. 3 is a block diagram of functional units of the memory access controller 202
according to the first embodiment;
FIG. 4 is an explanatory diagram of an overview of operation in a case where a CPU
making an exclusive access request to the memory access controller 202 is present;
FIG. 5 is an explanatory diagram of an overview of operation in a case where a CPU
making an exclusive access request to the memory access controller 202 is not present;
FIG. 6 is an explanatory diagram of an overview of operation in a case where Valid
information is not set in the memory access controller 202;
FIG. 7 is an explanatory diagram of wiring of the memory access controller 202 according
to the first embodiment;
FIG. 8 is a flowchart of an exclusive load process by the exclusive access unit 205
according to the first embodiment;
FIG. 9 is a flowchart of an exclusive store process by the exclusive access unit 205
according to the first embodiment;
FIG. 10 is a flowchart of a synchronous signal control process according to the first
embodiment;
FIG. 11 is an explanatory diagram of the relation between CPUs and a memory access
controller in a multi-core processor system 100 according to a second embodiment;
FIG. 12 is a block diagram of functional units of the multi-core processor system
100 according to the second embodiment;
FIG. 13A is a flowchart of a synchronous signal control process consequent to exclusive
access according to the second embodiment (part 1);
FIG. 13B is a flowchart of the synchronous signal control process consequent to exclusive
access according to the second embodiment (part 2); and
FIG. 14 is a flowchart of a synchronous signal control process consequent to an event
other than exclusive access according to the second embodiment.
BEST MODE(S) FOR CARRYING OUT THE INVENTION
[0021] Preferred embodiments of a memory access controller, a multi-core processor system,
a memory access control method, and a memory access control program according to the
present invention will be described in detail with reference to the accompanying drawings.
(Hardware of multi-core processor system)
[0022] FIG. 1 is a block diagram of a hardware configuration of a multi-core processor system
according to a first embodiment and a second embodiment. As depicted in FIG. 1, a
multi-core processor system 100 includes multiple central processing units (CPUs)
101, read-only memory (ROM) 102, random access memory (RAM) 103, flash ROM 104, a
flash ROM controller 105, and flash ROM 106. The multi-core process system includes
a display 107, an interface (I/F) 108, and a keyboard 109, as input/output devices
for the user and other devices. The components of the multi-core system 100 are respectively
connected by a bus 110.
[0023] The CPUs 101 govern overall control of the multi-core processor system 100. The CPUs
101 refer to CPUs that are single core processors connected in parallel. Details of
the OPUS 101 of the first embodiment will be described hereinafter with reference
to FIG. 2 and of the second embodiment, with reference to FIG. 11. Further, the multi-core
processor system 100 is a system of computers that include processors equipped with
multiple cores. Provided that multiple cores are provided, implementation may be by
a single processor equipped with multiple cores or a group of single-core processors
in parallel.
[0024] The ROOM 102 stores therein programs such as a boot program. The RAM 103 is used
as a work area of the CPUs 101. The flash ROM 104 stores system software such as an
operating system (OS), and application software. For example, when the OS is updated,
multi-core processor system 100 receives a new OS via the I/F 108 and updates the
old OPS that is stored in the flash ROM 104 to the received new OS.
[0025] The flash ROM controller 105, under the control of the PUS 101, controls the reading
and writing of data with respect to the flash ROM 106. The flash ROM 106 stores therein
data written under control of the flash ROM controller 105. Examples of the data include
image data and video data received by the user of the multi-core processor system
through the I/F 108. A memory card, SD card and the like may be adopted as the flash
ROM 106.
[0026] The display 107 displays, for example, data such as text, images, functional information,
etc., in addition to a cursor, icons, and/or tool boxes A thin-film-transistor (TFT)
liquid crystal display and the like may be employed as the display 107.
[0027] The I/F 108 is connected to a network 111 such as a local area network (LAN), a wide
area network (WAN), and the Internet through a communication line and is connected
to other apparatuses through the network 111. The I/F 108 administers an internal
interface with the network 111 and controls the input and output of data with respect
to external apparatuses. For example, a modem or a LAN adaptor may be employed as
the I/F 108.
[0028] The keyboard 109 includes, for example, keys for inputting letters, numerals, and
various instructions and performs the input of data. Alternatively, a touch-panel-type
input pad or numeric keypad, etc. may be adopted.
(Overview of First Embodiment)
[0029] FIG. 2 is a block diagram depicting the relation between CPUs and a memory controller
202 in the multi-core processor system 100 according to a first embodiment. Hardware
depicted in FIG. 2 includes a shared memory 201, the memory controller 202, and a
CPU#0 to a CPU#3 making up the CPUs 101. The memory access controller 202 and the
CPU#0 to CPU#3 are connected through the bus 110.
[0030] The CPU#0 to CPU#3 are connected to the memory access controller 202 not only through
the bus 110 but also through synchronous signal lines 206 and synchronous signal lines
207. For example, the CPU#0 sends a synchronous signal to the memory access controller
202 through a synchronous signal line 206#0. The memory access controller 202 sends
a synchronous signal to the CPU#0 through a synchronous signal line 207#0.
[0031] In the same manner, the CPU#1 to CPU#3 send a synchronous signal to the memory access
controller 202 through the synchronous signal lines 206#1 to 206#3, respectively.
The memory access controller 202 sends a synchronous signal to the CPU#1 to CPU#3
through the synchronous signal lines 207#1 to 207#3, respectively.
[0032] The shared memory 201 is a memory area that can be accessed through the memory access
controller 202. The memory area is provided as, for example, the ROM 102, the RAM
103, and the flash ROM 104. For example, when the CPU#0 requests the display 107 to
display image data, the CPU#0 accesses a video RAM (VRAM) included in the RAM 103
and writes the image data to the VRAM. Accessing the VRAM, therefore, may be inclusively
regarded as accessing the shared memory 201. A memory of a resource connected to the
I/F 108 may also be inclusively regarded as the shared memory 201. In this manner,
in the multi-core processor system 100, the memory of devices accessed by the CPU#0
to CPU#3 may be inclusively regarded as the shared memory 201.
[0033] The memory access controller 202 has a conventional exclusive access mechanism and
serves as an apparatus that provides the CPU#0 to CPU#3 with a function of making
exclusive access of the shared memory 201. The exclusive access function has an exclusive
load command and an exclusive store command. An exclusive load command issued in the
memory access controller 202 includes an additional process of recording that an exclusive
access request has been made.
[0034] The memory access controller 202 includes a synchronous signal control unit 203,
load destination address management flag registers 204, and an exclusive access unit
205. The synchronous signal control unit 203 controls the sending destinations of
synchronous signals output from the synchronous signal lines 207#0 to the synchronous
signal line 207#3, based on incoming synchronous signals from the synchronous signal
lines 206#0 to the synchronous signal line 206#3 and on the load destination address
management flag registers 204.
[0035] The load destination address management flag registers 204 are a group of registers
accessed by the synchronous signal control unit 203 and the exclusive access unit
205. The load destination address management flag registers 204 are provided for the
CPU#0 to the CPU#3 as load destination address management flag registers 204#0 to
204#3 corresponding to the CPU#0 to the CPU#3, respectively. The load destination
address management flag register 204 has a Valid field, a tag field, and an address
field. When any one of the CPU#0 to the CPU#3 performs exclusive loading, TRUE is
entered in the Valid field as a value indicating exclusive loading having been performed,
regardless of whether exclusive loading is successful or not. When exclusive loading
is not performed, FALSE is stored in the Valid field. Hereinafter, TRUE is written
as "T" and FALSE is written as "F" in FIGS. 2, 4 to 6, and 11.
[0036] When any one of the CPU#0 to the CPU#3 performs exclusive loading and succeeds in
acquiring a right to execute exclusive storing, TRUE is entered in the tag field as
a value indicating a success in acquiring the right to execute exclusive storing.
When the CPU fails in acquiring the right to execute exclusive storing or does not
try to acquire the right to execute exclusive storing, FALSE is entered in the tag
field. Following execution of exclusive storing by the CPU having succeeded in acquiring
the right to execute exclusive storing, a value for the tag field is reset to an initial
value.
[0037] A value for a flag associated with an address to which exclusive access is made is
entered in the address field. For example, when a shared aren 1 and a shared area
2 are present in the shared memory 201, an OS prepares a flag 1 corresponding to the
shared area 1 and a flag 2 corresponding to the shared area 2. Exclusive control is
thus performed in such a way that a CPU having acquired the flag 1 is allowed to use
the shared area 1 and a CPU having acquired the flag 2 is allowed to use the shared
area 2. The size of each field is determined such that 1 bit is allocated for the
Valid field, 1 bit for the tag field, and 32 bits for the address field. Entering
1 in the Valid field and in the tag filed is defined as entering TRUE in both fields,
and entering 0 is defined as entering FALSE.
[0038] For example, in the load destination address management flag register 204#0 depicted
in FIG. 2, TRUE is entered in the Valid field and in the tag field while the flag
1 is entered in the address field, indicating that the CPU#0 has acquired an exclusive
store right for the shared area corresponding to the flag 1. In the same manner, in
the load destination address management flag register 204#1, TRUE is entered in the
Valid field, FALSE is in the tag field, and the flag 1 is in the address field, indicating
that the CPU#1 has failed in acquiring an exclusive store right for the shared area
corresponding to the flag 1.
[0039] In the load destination address management flag register 204#2, TRUE is entered in
the Valid field and in the tag field while the flag 2 is entered in the address field,
indicating that the CPU#2 has acquired an exclusive store right for the shared area
corresponding to the flag 2. Finally, in the load destination address management flag
register 204#3, FALSE is entered in the Valid field and in the tag field while the
flag 1 is entered in the address field, indicating that the CPU#3 has already completed
exclusive storing in the shared area corresponding to the flag 1.
[0040] The exclusive access unit 205 has a function of executing an exclusive load process
and an exclusive store process based on the load destination address management flag
registers 204 when an exclusive load command and ain exclusive store command are issued
from any one of the CPU#0 to the CPU#3. The exclusive access unit 205 updates the
load destination address management flag registers 204 through the exclusive load
process and the exclusive store process. Processing will be described later, with
reference to FIGS. 8 and 9.
(Function of Memory access controller 202)
[0041] Functional units of the memory access controller 202 will be described. FIG. 3 is
a block diagram of functional units of the memory access controller 202 according
to the first embodiment. The memory access controller 202 includes a setting unit
301, a classifying unit 302, a detecting unit 303, and a notifying unit 304. These
functional units (setting unit 301 to notifying unit 304) serve as a controller and
are realized by a semiconductor circuit implemented on the memory access controller
202.
[0042] The setting unit 301 has a function of updating a value in the load destination address
management flag registers 204. For example, when the exclusive load process is executed,
the setting unit 301 changes a value for the Valid field of the load destination address
management flag register 204 from FALSE to TRUE.
[0043] The classifying unit 302 has a function of classifying into a first group of cores
having made an exclusive access request to the shared memory 201 and a second group
of cores not having made an exclusive access request to the shared memory, 201, cores
capable of accessing the shared memory 201. The cores mean are CPUs. The classifying
unit 302 may classify the cores into a first group of cores having made an exclusive
access request to a specific area of the shared memory 201 and a second group of cores
not having made an exclusive access request to the specific area of the shared memory
201. The specific area is a shared area of the shared memory 201. The entire address
space of the shared memory 201 may be used as the shared area, or a partial address
space of the shared memory 201 may be used as the shared area so that multiple shared
areas are present in the shared memory 201.
[0044] For example, when a value for the Valid field of the load destination address management
flag register 204 is TRUE, the classifying unit 302 classifies the corresponding core
into the first group of cores having made an exclusive access request, and when the
value is FALSE, the classifying unit 302 classifies the corresponding core into the
second group of cores not having made an exclusive access request. The result of the
classification is stored to a register, RAM, etc., of the memory access controller
202.
[0045] The detecting unit 303 has a function of detecting a core having completed exclusive
access among the first group of cores classified by the classifying unit 302. The
detecting unit 303 may detect a core having sent a notification of release from the
standby state, as a core having completed exclusive access among the first group of
cores. A core having sent a notification of release from the standby state is a CPU
having sent a synchronous signal based on a synchronization command. For example,
when a synchronous signal is sent from the synchronous signal line 206#0 and TRUE
is set in the Valid field of the load destination address management flag register
204#0, the detecting unit 303 detects the CPU#0 as a CPU having completed exclusive
access. The result of the detection is stored in the register, RAM, etc., of the memory
access controller 202.
[0046] The detecting unit 303 may detect a core having sent a notification of release from
the standby state, among the second group of cores classified by the classifying unit
302 as cores not having made an exclusive access request. For example, when a synchronous
signal is sent from the synchronous signal line 206#0 and FALSE is set in the Valid
field of the load destination address management flag register 204#0, the detecting
unit 303 detects the CPU#0 as a CPU having sent a notification of release from the
standby state. A case where a synchronous signal is sent when FALSE is set in the
Valid field is a case where a synchronous signal is sent for a purpose other than
exclusive access. A case where a synchronous signal is sent for a purpose other than
exclusive access is a case of executing a barrier synchronization process. The details
of the barrier synchronization process will be described later, with reference to
FIG. 6.
[0047] The notifying unit 304 has a function of sending a notification of release from the
standby state to a core standing by for exclusive access among the first group of
cores when the detecting unit 303 detects a core having completed exclusive access.
When the detecting unit 303 detects a core having completed exclusive access, the
notifying unit 304 may send a notification of release from the standby state to cores
excluding the core having completed exclusive access from the first group of cores.
[0048] For example, when the CPU#0 is detected as a CPU having completed exclusive access,
the notifying unit 304 sends a synchronous signal to the first group of cores for
which a value for the Valid field is TRUE.
[0049] When the detecting unit 303 detects a core having sent a notification of release
from the standby state among the second group of cores not having made an exclusive
access request, the notifying unit 304 may send a notification of release from the
standby state to cores excluding the core having sent the notification of release
from the standby state from the second group of cores. For example, a case is assumed
where the detecting unit 303 detects the CPU#1 as a CPU having sent a notification
of release from the standby state and detects the CPU#1 and the CPU#3 for which the
Valid fields are set to FALSE as the second group of cores. In this case, the notifying
unit 304 sends a notification of release from the standby state to the CPU#3 excluding
the CPU#1 from the second group of cores. Information of sending the notification
may be stored to a register, RAM, etc., of the memory access controller 202.
[0050] FIG. 4 is an explanatory diagram of an overview of operation in a case where a CPU
making an exclusive access request to the memory access controller 202 is present.
According to the contents of the load destination address management flag register
204 for the CPU#0 to CPU#3 of FIG. 4, the CPU#0 has acquired an exclusive store right
for the shared area corresponding to the flag 1 and has performed exclusive storing;
the CPU#1 has failed in acquiring an exclusive store right for the shared area corresponding
to the flag 1 and is standing by to wait for a synchronous signal; the CPU#2 has acquired
an exclusive store right for the shared area corresponding to the flag 2; and the
CPU#3 is unrelated to the accessing of the shared area.
[0051] A case is assumed where the CPU#0 sends a synchronous signal to the synchronous signal
control unit 203 through the synchronous signal line 206#0. Receiving the synchronous
signal, the synchronous signal control unit 203 detects a register meeting conditions
that a value for the address field matches a value for the address field of the load
destination address management flag register 204#0 and TRUE, which indicates exclusive
loading having been performed, is entered in the Valid field. In FIG. 4, the load
destination address management flag register 204#1 meets such conditions. The synchronous
signal control unit 203, therefore, sends a synchronous signal to the CPU#1 through
the synchronous signal line 207#1.
[0052] After sending the synchronous signal, the synchronous signal control unit 203 changes
the values in the Valid fields of the load destination address management flag register
204#0 and in the load destination address management flag register 204#1, from TRUE
to FALSE. Having received the synchronous signal, the CPU#1 is released from a state
of waiting for a synchronous signal and performs exclusive loading onto the shared
area corresponding to the flag 1.
[0053] FIG. 5 is an explanatory diagram of an overview of operation in a case where a CPU
making an exclusive access request to the memory access controller 202 is not present.
Because the load destination address management flag registers 204 depicted in FIG.
5 have the contents as the load destination address management flag registers 204
depicted in FIG. 4, the states of the CPU#0 to CPU#3 in FIG. 5 are the same as the
states of the CPU#0 to CPU#3 in FIG. 4, and description thereof is omitted.
[0054] A case is assumed where the CPU#2 sends a synchronous signal to the synchronous signal
control unit 203 through the synchronous signal line 206#2. Receiving the synchronous
signal, the synchronous signal control unit 203 detects a register meeting conditions
that a value in the address field matches a value in the address field of the load
destination address management flag register 204#2 and TRUE, which indicates exclusive
loading having been performed, is entered in the Valid field. In FIG. 5, no load destination
address management flag register 204 meeting such conditions is present. The synchronous
signal control unit 203, therefore, does not send a synchronous signal to any of the
CPU#0 to CPU#3.
[0055] The synchronous signal control unit 203 changes the value in the Valid field of the
load destination address management flag register 204#2, from TRUE to FALSE. As described
above, the operation of the memory access controller 202 depicted in FIGs. 4 and 5
is consequent to exclusive access, whereby the synchronous signal control unit 203
executes a synchronous signal control process that is consequent to an exclusive access
event.
[0056] FIG. 6 is an explanatory diagram of an overview of operation in a case where Valid
information is not set in the memory access controller 202. Because the load destination
address management flag registers 204 in FIG. 6 have the same contents as the load
destination address management flag registers 204 in FIG. 4, the states of the CPU#0
to CPU#3 in FIG. 6 are the same as the states of the CFU#0 to CPU#3 in FIG. 4, and
description thereof is omitted.
[0057] A case is assumed where the CPU#3 outputs a synchronous signal to the synchronous
signal control unit 203 through the synchronous signal line 206#3. Receiving the synchronous
signal, the synchronous signal control unit 203 determines the received synchronous
signal to be a synchronous signal for a purpose other than exclusive access consequent
to TRUE not being entered in the Valid field of the load destination address management
flag register 204#3. The synchronous signal control unit 203 thus searches for a register
meeting a condition that TRUE is not entered in the Valid field, and when finding
a register, sends a synchronous signal to the corresponding CPU. In FIG. 6, no load
destination address management flag register 204 meeting such a condition is present.
The synchronous signal control unit 203, therefore, does not send a synchronous signal
to any of the CPU#0 to CPU#3.
[0058] A synchronous signal is sent for a purpose other than exclusive access in a case
of, for example, distributed processing by multiple CPUs where completion of processes
by all the CPUs is confirmed and then the next process is started. Each CPU executes
a barrier synchronization process, which is a wait-queuing process, until the CPUs
complete the processes as a whole.
[0059] For example, a case is assumed where the CPU#1 and the CPU#3 execute distributed
processes and the next process is started when both CPU complete the processes, respectively.
If the CPU#1 completes processing first and determines based on memory contents, etc.,
that the CPU#3 is still executing a process, the CPU#1 issues a synchronous signal
wait command. Here, because the CPU#1 does not perform exclusive loading, TRUE is
not entered in the Valid field of the load destination address management flag register
204#1. Subsequently, when the CPU#3 completes processing and determines based on memory
contents, etc., that the CPU#1 has already completed processing, the CPU#3 sends a
synchronous signal to the memory access controller 202.
[0060] Receiving the synchronous signal, the memory access controller 202 determines the
received synchronous signal to be a synchronous signal for a purpose other than exclusive
access consequent to TRUE not being entered in the Valid field of the load destination
address management flag register 204#3. The memory access controller 202 thus sends
a synchronous signal to the CPU#1. As a result, the CPU#1 is released from the state
of waiting for a synchronous signal, enabling both the CPU#1 and the CPU#3 to proceed
to the next process.
[0061] As described, the operation of the memory access controller 202 depicted in FIG.
6 is consequent to an event other than exclusive access, and the synchronous signal
control unit 203 executes a synchronous signal control process consequent to an event
other than exclusive access.
[0062] FIG. 7 is an explanatory diagram of wiring of the memory access controller 202 according
to the first embodiment. The memory access controller 202 depicted in FIG. 7 executes
the operations depicted in FIGs. 4 and 5. The exclusive access unit 205 receives an
exclusive load command and an exclusive store command through a bus I/F 701, and accesses
the shared memory 201. The exclusive access unit 205 updates a value in the load destination
address management flag registers 204. This updating by the exclusive access unit
205 is equivalent to the function of the setting unit 301. When receiving a synchronous
signal sent via any one of the synchronous signal lines 206#0 to 206#3, a selector
702 outputs a value for the corresponding address field. For example, when a synchronous
signal is sent from the synchronous signal line 206#0, the selector 702 outputs a
value for the address field of the load destination address management flag register
204#0.
[0063] An address match block 703 compares a value output from the selector 702 with a value
for the address field of a load destination address management flag register 204 and
outputs TRUE or FALSE. The selector 702 and the address match block 703 are equivalent
in function to the classifying unit 302. For example, if the output value matches
the value for the address field of the load destination address management flag register
204, the address match block 703 outputs TRUE. If TRUE is output, the corresponding
CPU belongs to the first group. If the output value is different from the value for
the address field of the load destination address management flag register 204, the
address match block 703 outputs FALSE. If FALSE is output, the corresponding CPU belongs
to the second group.
[0064] For example, an address match block 703#0 compares a value output from the selector
702 with a value for the address field of the load destination address management
flag register 204#0 and outputs TRUE or FALSE.
[0065] An AND circuit 704 outputs TRUE if a value output from the address match block 703
and a value for the Valid field are both TRUE. For example, an AND circuit 704#0 outputs
TRUE if a value output from the address match block 703#0 and a value for the Valid
field of the load destination address management flag register 204#0 are both TRUE.
A Valid deleting block 705 sets the Valid field to FALSE when receiving a TRUE signal.
[0066] The selector 706 outputs a value for the Valid field corresponding to a synchronous
signal line from which a synchronous signal is sent, among the synchronous signal
lines 206#0 to 206#3. The AND circuit 704 and the selector 706 are equivalent in function
to the detecting unit 303. For example, when a synchronous signal is sent from the
synchronous signal line 206#0, the selector 706 outputs a value for the Valid field
of the load destination address management flag register 204#0. Hence, if a synchronous
signal is received and a value for the Valid field is TRUE, the corresponding CPU
is detected as a CPU having completed exclusive access.
[0067] The AND circuit 707 outputs TRUE if values output from the AND circuit 704 and selector
706 are both TRUE and no synchronous signal is sent from the corresponding synchronous
signal line among the signal line 206#0 to the synchronous signal line 206#3. The
AND circuit 707 is equivalent in function to the notifying unit 304. If an output
value from the AND circuit 707 is TRUE, the corresponding CPU is in a state of standby
for exclusive access. The AND circuit 707 thus sends a synchronous signal through
the synchronous signal line corresponding to the CPU among the signal line 206#0 to
the synchronous signal line 206#3. For example, the AND circuit 707#0 sends a synchronous
signal through the synchronous signal line 207#0 if values output from the AND circuit
704#0 and selector 706 are both TRUE and no synchronous signal is sent from the synchronous
signal line 206#0.
[0068] FIG. 8 is a flowchart of an exclusive load process by the exclusive access unit 205
according to the first embodiment. In FIGs. 8 to 10, 13A, 13B, and 14, 1 entered into
a field represents TRUE and 0 represents FALSE. Terms "Valid [x]", "tag [x]", and
"address [x]" used in FIGS. 8 to 10 represent the Valid field, the tag field, and
the address field of the load destination address management flag register 204#0x,
respectively.
[0069] The memory access controller 202 receives an exclusive load request to #adr from
any one of the CPU#0 to CPU#3 (step S801). #adr represents a flag corresponding to
a shared area in the shared memory 201.
[0070] After receiving the exclusive load request, the memory access controller 202 sets
the CPU ID of an exclusive load request issuer as a variable x (step S802). For example,
the memory access controller 202 sets 0 as the variable x when receiving an exclusive
load request from the CPU#0, and sets 3 as the variable x when receiving an exclusive
load request from the CPU#3. After setting a value as the variable x, the memory access
controller 202 enters #adr in the address [x] (step S803), TRUE in the Valid [x] (step
S804), and FALSE in the tag [x] (step S805).
[0071] The memory access controller 202 sets 0 as a variable y (step S806). After setting
0 as the variable y, the memory access controller 202 determines whether the value
for an address [y] is #adr and the value for a tag [y] is TRUE (step S807). If the
value for the address [y] is not #adr or the value for the tag [y] is FALSE (step
S807: NO), the memory access controller 202 increases the variable y by 1 (step S808).
Subsequently, the memory access controller 202 determines whether the variable y is
less than the number of CPUs (step S809). If the variable y is less than the number
of CPUs (step S809: YES), the memory access controller 202 proceeds to the process
of step S807.
[0072] If the variable y is greater than or equal to the number of CPUs (step S809: NO),
the memory access controller 202 enters TRUE in the tag [x] (step S810). After entering
TRUE in the tag [x], the memory access controller 202 loads data onto a shared area
corresponding to #adr (step S811), and ends the exclusive load process. If the value
for the address [y] is #adr or the value for the tag [y] is TRUE (step S807: YES),
the memory access controller 202 proceeds to the process of step S811. A state of
having executed the process of step S810 is equivalent to a state of having acquired
an exclusive store right, while a state of having executed the process oaf (step S807:
YES) is equivalent to a state of failing in acquiring an exclusive store right.
[0073] FIG. 9 is a flowchart of an exclusive store process by the exclusive access unit
205 according to the first embodiment. The memory access controller 202 receives an
exclusive store request to #adr from any one of the CPU#0 to CPU#3 (step S901). After
receiving the exclusive store request, the memory access controller 202 sets the CPU
ID of an exclusive store request issuer as the variable x (step S902).
[0074] After setting the CPU ID as the variable x, the memory access controller 202 determines
whether the value for the address [x] is #adr and the value for the tag [x] is TRUE
(step S903). If the value for the address [x] is #adr and the value for the tag [x]
is TRUE (step S903: YES), the memory access controller 202 enters FALSE in the tag
[x] (step S904). After entering FALSE, the memory access controller 202 stores a shared
area corresponding to #adr, transmits to the CPU#x, information indicating success
in storing (step S905), and ends the exclusive store process. If the value for the
address [x] is not #adr or the value for the tag [x] is FALSE (step S903: NO), the
memory access controller 202 determines that exclusive storing has failed, and ends
the exclusive store process.
[0075] FIG. 10 is a flowchart of a synchronous signal control process according to the first
embodiment. The memory access controller 202 receives a synchronous signal from any
one of the synchronous signal lines 260#0 to 260#3 (step S1001). After receiving the
synchronous signal, the memory access controller 202 sets the CPU ID of a synchronous
signal sender as the variable x (step S1002). For example, the memory access controller
202 sets 0 as the variable x when receiving a synchronous signal from the synchronous
signal line 260#0, and sets 3 as the variable x when receiving a synchronous signal
from the synchronous signal line 260#0.
[0076] After setting a value as the variable x, the memory access controller 202 determines
whether the value for the Valid [x] is TRUE (step S1003). If the value for the Valid
[x] is TRUE (step S1003: YES), the memory access controller 202 enters FALSE in the
Valid [x] (step S1004). A path following (step S1003: YES) represents synchronous
signal control process consequent to exclusive access, as depicted in FIGs. 4 and
5. Subsequently, the memory access controller 202 sees 0 as the variable y (step S1005),
and determines whether the value for an address [y] is equal to the value for the
address [x] and the value for a Valid [y] is TRUE (step S1006).
[0077] If the value for the address [y] is equal to the value for the address [x] and the
value for the Valid [y] is TRUE (step S1006: YES), the memory access controller 202
sends a synchronous signal to the CPU#y (step S1007). When the synchronous signal
is sent to the CPU#y, the synchronous signal is sent through the synchronous signal
line corresponding to the CPU#y. For example, if y is 0, the synchronous signal is
through the synchronous signal line 207#0. If y is 3, the synchronous signal is sent
through the synchronous signal line 207#3. When the memory access controller 202 executes
a process of a route following (step S1006: YES), the CPU#y belongs to the first group
of cores having issued an exclusive access request and is a CPU standing by for exclusive
access.
[0078] After sending the synchronous signal, the memory access controller 202 sets the Valid
[y] to FALSE (step S1008). After setting the Valid [y] to FALSE, the memory access
controller 202 increases the variable y by 1 (step S1009), and determines if the variable
y is greater than or equal to the number of CPUs (step S1010). If the variable y is
less than the number of CPUs (step S1010: NO), the memory access controller 202 proceeds
to the process of step S1006.
[0079] If the value for the address [y] is not equal to the value for the address [x] or
the value for the Valid [y] is FALSE (step S1006: NO), the memory access controller
202 proceeds to the process of step S1009. When the memory access controller 202 executes
a process of a route following (step S1006: NO), the CPU#y other than the CPU#x belongs
to the second group of cores not having made an exclusive access request.
[0080] If the value for the Valid [x] is FALSE (step S1003: NO), the memory access controller
202 sets 0 as the variable [y] (step S1011), and determines whether the value for
the Valid [y] is FALSE (step S1012). A route following (step S1003: NO) represents
the synchronous signal control process consequent to exclusive access, as depicted
in FIG. 6. If the value for the Valid [y] is FALSE (step S1012: YES), the memory access
controller 202 sends a synchronous signal to the CPU#y (step S1013).
[0081] After sending the synchronous signal or if the value for the Valid [y] is TRUE (step
S1012: NO), the memory access controller 202 increases the variable y by 1 (step S1014),
and determines if the variable y is greater than or equal to the number of CPUs (step
S1015). If the variable y is less than the number of CPUs (step S1015: NO), the memory
access controller 202 proceeds to the process of
step S1012.
[0082] If the variable y is greater than or equal to the number of CPUs (step S1010: YES,
step S1015: YES), the memory access controller 202 ends the synchronous signal control
process.
[0083] As described above, according to the memory access controller, the memory access
control method, and the memory access control program, multiple cores are classified
into the first group of cores having made an exclusive access request and the second
group of cores not having made an exclusive access request. When detecting a core
having completed exclusive access, the memory access controller releases the core
that has made an exclusive access request and is in the standby state from the standby
state. In this manner, with respect to a core that is in the standby state and makes
no exclusive access request, the memory access controller does not release the core
from the standby state and consequently, unnecessarily start the core. As a result,
unnecessary access of the memory can be suppressed to reduce power consumption.
[0084] The memory access controller may classify multiple cores into the first group of
cores having made an exclusive access request to a specific area and the second group
of cores not having made an exclusive access request to the specific area. As a result,
with respect to a core that has made an exclusive access request to an area other
than the specific area and that is in the standby state, the memory access controller
does not unnecessarily start the core by releasing the core from the state of standby.
Power consumption, therefore, can be reduced.
[0085] The memory access controller may send a notification of release from the standby
state to cores excluding a core having completed exclusive access from the first group
of cores. The core having completed exclusive access is not a core to be released
from the standby state, consequently, sending a synchronous signal to the core poses
no problem. Nevertheless, information of input of the synchronous signal is saved
to the core. Thus, when the core having completed exclusive access newly executes
a spinlock process and issues a synchronization wait command, the core is temporarily
released from the state of waiting for synchronization. The memory controller of the
first embodiment sends a notification of from the standby state to cores other than
a core having completed exclusive access, thereby preventing the core having completed
exclusive access from being released from the state of waiting for synchronization.
Hence, power consumption can be reduced.
[0086] The detecting unit 303 may detect a core having sent a notification of release from
the standby state, as a core having completed exclusive access, among the first group
of cores. As a result, the memory access controller can release a core that has made
an exclusive access request and is in the standby state from the standby state, through
an operation connected with the sending of a synchronous signal from a CPU.
[0087] The memory access controller may detect a core having sent a notification of release
from the standby state, among the second group of cores and send a notification of
release from the standby state to cores excluding the core having sent the notification
of release from the standby state, among the second group of cores. As a result, the
memory access controller can release a core standing by for a purpose other than exclusive
access, from the standby state and does not unnecessarily start a core that has made
an exclusive access request and is in a state of standby by releasing the core from
the standby state. Hence, power consumption can be reduced.
(Description of Summary of Second Embodiment)
[0088] TIG. 11 is an explanatory diagram of the relation between CPUs and a memory access
controller in the multi-core processor system 100 according to a second embodiment.
In the first embodiment, the memory access controller 202 executes the synchronous
signal control process. In the embodiment, however, the CPU#0 to CPU#3 execute the
synchronous signal control process, Hardware depicted in FIG. 11 includes the shared
memory 201, a memory access controller 1101, a synchronous signal sending device 1102,
and the CPU#0 to CPU#3 making up the CPUs 101. The memory access controller 1101 and
the CPU#0 to CPU#3 are connected through the bus 101.
[0089] The CPU#0 to CPU#3 are connected to the synchronous signal sending device 1102 not
only through the bus 110 but also through synchronous signal lines 1104. For example,
the synchronous signal sending device 1102 send a synchronous signal to the CPU#0
through a synchronous signal line 1104#0. In the same manner, the synchronous signal
sending device 1102 sends a synchronous signal to the CPU#1 to CPU#3 through synchronous
signal lines 1104#1 to 1104#3, respectively.
[0090] The memory access controller 1101 has a conventional exclusive access mechanism,
and serves as an apparatus that provides the CPU#0 to CPU#3 with a function of exclusively
accessing the shared memory 201. The exclusive access function has an exclusive load
command and an exclusive store command.
[0091] The synchronous signal sending device 1102 has a function of sending a synchronous
signal in response to a synchronous signal sending request from any one of the CPU#0
to CPU#3. For example, when receiving from the CPU#0, a synchronous signal sending
request to send a synchronous signal to the CPU#3, the synchronous signal sending
device 1102 sends a synchronous signal to the CPU#3 through the synchronous signal
line 1104#3.
[0092] A load destination address flag table 1103 is stored in the shared memory 201. The
table has three fields, including a CPU field, a Valid field, and an field. In the
CPU field, CPU IDs corresponding to records of the load destination address flag table
1103 are entered. The Valid field and the address field of the load destination address
flag table 1103 are the same as the Valid field and the address field of the load
destination address management flag registers 204, and description thereof is omitted.
[0093] For example, in the load destination address flag table 1103, the CPU#0 and the CPU#1
are indicated to have made an exclusive load request for the shared area corresponding
to the flag 1, the CPU#2 is indicated to have made an exclusive load request for the
shared area corresponding to the flag 1, and the CPU#3 is indicated to have completed
exclusive storing of the shared area corresponding to the flag 1.
(Function of Multi-Core Processor System 100)
[0094] FIG. 12 is a block diagram of functional units of the multi-core processor system
100 according to the second embodiment. The multi-core processor system 100 includes
an exclusive access unit 1201 and a synchronous signal control unit 1203. Functions
of the synchronous signal control unit 1203 are realized when the CPU#0 to the CPU#3
execute programs stored in memory devices such as the ROM 102, the RAM 103, the flash
ROM 104, the flash ROM 106, etc., depicted in FIG. 1.
[0095] The synchronous signal control unit 1203 has a setting unit 1204, a determining unit
1205, a detecting unit 1206, and a notification requesting unit 1207. In FIG. 12,
the synchronous signal control unit 1203 is included in the CPU#0 as a function of
the CPU#0. The synchronous signal control unit 1203, however, may be included in CPU,
i.e., in the CPU#0 to the CPU#3, respectively, as a function thereof.
[0096] The exclusive access unit 1201 has a function of executing an exclusive load process
and an exclusive store process based on load destination address management registers
1202 when an exclusive load command and an exclusive store command are issued from
any one of the CPU#0 to CPU#3.
[0097] The load destination address management registers 1202 represents a group of registers
accessed by the exclusive access unit 1201. The load destination address management
registers 1202 have a tag field and an address field for each CPU. The tag field and
the address field are the same as the tag field and address field of the load destination
address management flag registers 204, and description thereof is omitted.
[0098] The synchronous signal control unit 1203 executes a synchronous signal control process
of controlling a synchronous signal sending destination based on a request for release
from the standby state made by software running on each CPU and on the load destination
address flag table 1103. Following execution of the synchronous signal control process,
a synchronous signal is sent by the synchronous signal sending device 1102 through
the synchronous signal lines 1104#0 to 1104#3.
[0099] The setting unit 1204 has a function of updating a value in the load destination
address flag table 1103. For example, when the exclusive load process is executed
by software running on CPU#0, the setting unit 1204 changes the value of the Valid
field on the record corresponding to the CPU#0 of the load destination address flag
table 1103, from FALSE to TRUE.
[0100] The determining unit 1205 has a function of determining to which group, the first
group of cores having made an exclusive access request to the shared memory 201 or
the second group of cores not having made an exclusive access request to the shared
memory, 201, each core belongs. The determining unit 1205 may determine to which group,
the first group of cores having made an exclusive access request or the second group
of cores not having made an exclusive access request, each core belongs based on a
determination of whether the core has made an exclusive access request to a specific
area of the shared memory 201.
[0101] For example, if the value for the Valid field of the load destination address flag
table 1103 is TRUE, the determining unit 1205 being executed on the CPU#0 determines
that the CPU#0 belongs to the first group of cores having made an exclusive access
request. If the value is FALSE, determining unit 1205 that the CPU#0 belongs to the
second group of not having made an exclusive access request. The result of the determination
is stored to the register, cache memory, RAM 103, etc., of the CPU executing the determining
unit.
[0102] The detecting unit 1206 has a function of detecting a completion of exclusive access
by a core consequent to determining that the core belongs to the first group of cores.
The detecting unit 1206 may detect the completion of exclusive access upon determining
that the core belongs to the first group of cores and the core has made a request
for release from the standby state through software running on the core.
[0103] For example, detecting unit 1206 being executed on the CPU#0 detects completion of
exclusive access by the CPU#0, upon detecting the issue of a request for release from
the standby state by software running on the CPU#0 and upon determining unit 1205
determining the CPU#0 to be a core belonging to the first group. The result of the
detection is stored to a register, memory, the RAM 103, etc., of the CPU executing
the detecting unit.
[0104] The detecting unit 1206 may detect that a core has made a request for release from
the standby state through software running on the core upon the determining unit 1205
determining that the core belongs to the second group. For example, the detecting
unit 1206 detects the CPU#0 as a CPU having sent a notification of release from the
standby state when the detecting unit 1206 detects the CPU#0 issuing a request for
release from the standby state through software running on the CPU#0 and the determining
unit 1205 determines the CPU#0 to be a core belonging to the second group.
[0105] The notification requesting unit 1207 has a function of requesting that a notification
of release from the standby state be sent to a core standing by for exclusive access,
among the first group of cores when the detecting unit 1206 detects a core having
completed exclusive access. When the detecting unit 1206 detects a core having completed
exclusive access, the notification requesting unit 1207 may request that a notification
of release from the standby state be sent to cores excluding the core having completed
exclusive access, among the first group of cores.
[0106] For example, when the CPU#0 is detected as a CPU having completed exclusive access,
the notification requesting unit 1207 requests the synchronous signal sending device
1102 to send a synchronous signal to a group of CPUs for which the value of the Valid
field is TRUE.
[0107] When the detecting unit 1206 detects a core having made a request for release from
the standby state, among the second group of cores, the notification requesting unit
1207 may that a notification of release from the standby state be sent to cores excluding
the core having made a request for release from the standby state among the second
group of cores.
[0108] For example, a case is assumed where the detecting unit 1206 detects the CPU#1 as
a CPU having sent a notification of release from the standby state and detects, as
the second group of cores, the CPU#1 and the CPU#3 for which the Valid fields are
set to FALSE. In this situation, the notification requesting unit 1207 requests the
synchronous signal sending device 1102 to send a synchronous signal to the CPU#3 excluding
the CPU#1 among the second group of cores. The result of the request may be stored
to a register, cache memory, RAM, etc.
[0109] FIGS. 13A and 13B are flowcharts of the synchronous signal control process consequent
to exclusive access according to the second embodiment. The synchronous signal control
process is executed at each of the CPU#0 to CPU#3. FIGs. 13A, 13B, and 14 depict explanations
of an assumed case where an arbitrary CPU#x among the CPU#0 to CPU#3 executes the
synchronous signal control process. Terms "Valid [x]" "address [x]" represent the
Valid field and the address field in a record with the CPU field set to CPU#x in the
load destination address flag table 1103.
[0110] The CPU#x makes an exclusive load request with respect to #adr (step S1301). For
example, when software running on the CPU#x makes an exclusive access request, the
synchronous signal control process embedded as a library is executed.
[0111] After making an exclusive load request, the CPU#x sets #adr and Valid in the record
for the CPU#x, in load destination flag table 1103 (step S1302). For example, when
the variable x is 2, the CPU#x selects a record with the CPU field set to CPU#2 and
sets TRUE and #adr in the Valid field and the address field of the record, respectively.
After setting these values, the CPU#x makes an exclusive load request to the memory
access controller 1101 (step S1303).
[0112] After making the exclusive load request, the CPU#x determines whether the CPU#x has
succeeded in exclusive loading (step S1304). When failing in exclusive loading (step
S1304: NO), the CPU#x issues a synchronous signal wait command (step S1307). Issuing
the synchronous signal wait command, CPU#x by until receiving a synchronous signal.
When receiving a synchronous signal, the CPU#x proceeds to the process at step S1301.
When succeeding in exclusive loading (step S1304: YES), the CPU#x makes an exclusive
store request to the memory access controller 1101 (step S1305).
[0113] After making an exclusive store request, the CPU#x determines whether the CPU#x has
succeeded in exclusive storing (step S1306). When failing in exclusive storing (step
S1306: NO), the CPU#x proceeds to the process at step S1307. When succeeding in exclusive
storing (step S1306: YES), the CPU#x accesses #adr (step S1308).
[0114] After accessing #adr, CPU#x sets FALSE in the Valid [x] (step S1309). After setting
FALSE, the CPU#x sets the variable y to 0 (step S1310), and acquires a value for the
Valid [y] and a value for the address [y] from the record for the CPU#y of the load
destination address flag table 1103 (step S1311).
[0115] After acquiring these values, the CPU#x determines whether value for the address
[y] is equal to a value for the address [x] and the value for the Valid [y] is TRUE
(step S1312). If the value for the address [y] is equal to the value for the address
[x] the value for the Valid [y] is TRUE (step S1312: YES), the CPU#x selects the CPU#y
as a synchronous signal sending destination (step S1313). When the CPU#x executes
a process of a route following (step S1312: YES), the CPU#y belongs to the first group
of cores having an exclusive access request and is a CPU standing by for exclusive
access.
[0116] After selecting the synchronous signal sending destination, the CPU#x increases the
variable y by 1 (step S1314), and determines if the variable y is greater than or
equal to the number of CPUs (step S1315). If the variable y is smaller than the number
of CPUs (step S1315: NO), the CPU#x proceeds to the process of step S1311. If value
for the address [y] is not equal to the value for the address [x] or value for the
Valid [y] is FALSE (step S1312: NO), the CPU#x proceeds to the process of step S1314.
When CPU#x executes a process of a route following (step S1312: NO), the CPU#y other
than the CPU#x belongs to the second group of not having made an exclusive request.
[0117] If the variable y is greater than or equal to the number of CPUs (step S1315: YES),
the CPU#x the Valid field for the selected CPU in the load destination address flag
table 1103, to FALSE (step S1316). After setting FALSE, CPU#x writes synchronous signal
sending destination information to the synchronous signal sending device 1102 (step
S1317), and ends the synchronous signal control process.
[0118] FIG. 14 is a flowchart of a synchronous signal control process consequent to an event
other than exclusive access according to the second embodiment. The CPU#x detests
a request for from the standby state (step S1401). For example, software running on
the CPU#x makers a for release from the standby state, the synchronous signal control
process embedded as a library is executed. After detecting the for release from the
standby state, the CPU#x sets the ID of the CPU having detected the request as the
variable x (step S1402). The CPU having detected the request matches the CPU executing
the synchronous signal control process. After setting the ID, the CPU#x determines
whether the value for the Valid [x] is FALSE (step S1403).
[0119] If the value for the Valid [x] is FALSE (step S1403: YES), the CPU#x sets the variable
y to 0 (step S1404), and determines whether the value for the Valid [y] is FALSE (step
S1405). If the value for the Valid [y] is FALSE (step S1405: YES), the CPU#x selects
the CPU#y as a synchronous signal sending destination (step S1406).
[0120] Following the of the process of step S1406 or if the value for the Valid [y] is FALSE
(step S1405: NO), the CPU#x increases variable y by 1 (step S1407), and determines
if variable y is greater than or equal tao the number of CPUs (step S1408). If variable
y is smaller the number of CPUs (step S1408: NO), the CPU#x proceeds to the process
of step S1405. If variable y is greater than or equal to the number of CPUs (step
S1408: YES), the CPU#x writes synchronous signal sending destination information to
the synchronous signal sending device 1102 (step S1409), and the synchronous signal
control process that is consequent to an event other than exclusive access.
[0121] If the value for the Valid [x] is TRUE (step S1403: NO), the CPU#x ends synchronous
signal control process that is consequent to an other than exclusive access. If NO
results at step S1403, it means the synchronous signal control process is consequent
to exclusive access. Subsequent to NO at step S1403, therefore, CPU#x may proceed
to step S1309 to continue executing the process from step S1309.
[0122] As described above, according to the multi-core processor system, the memory control
method, and the memory control program, the multi-core processor determines to which
group, the first group of cores having an exclusive request or the group of not having
an exclusive request, each of multiple belongs. Subsequently, when finding that a
core determined to be a core belonging to the first group has completed exclusive
access, the multi-core processor system sends to a core standing by for exclusive
access, a notification of release from the standby state. In this manner, the multi-core
processor system does not unnecessarily start a core that is in the standby state
and made no exclusive access request, by releasing the core from the standby state.
As a result, unnecessary access oaf the memory can be to reduce power consumption.
[0123] The multi-core processor may determine to which group, the first group of cores having
made an exclusive access request to a specific area of the shared memory our the group
of cores not having made an exclusive access request to a specific area of the shared
memory, each core belongs. In this manner, the multi-core processor system does not
unnecessarily start a core that has made an access request to an area other than the
specific area and is in the standby state, by releasing the core from the standby
state. Hence, power consumption can be reduced.
[0124] The multi-core processor system may send to cores excluding a having completed exclusive
access from the first group of cores, a notification of release from the standby state,
thereby enabling the multi-core processor system to prevent the core that has completed
exclusive access from being released from the state of waiting for synchronization.
Hence, power consumption can be reduced.
[0125] A determined to be a core belonging to the first group makes a for release from a
state of standby through software running on the core, multiprocessor system may detect
the core determined to be a core belonging to the first group completing exclusive
access. As a result, multi-core processor system can release a core that has an exclusive
access request and is in the standby state, from the standby state through an operation
connected with a request for release from the standby state.
[0126] When finding that a core determined to be a core belonging to the group has made
a request for release from a state of standby through software running on the core,
the multi-core processor system may send a notification of release from the standby
state to cores excluding the core having the for release from a state of standby from
the second group of cores. In this manner, the multi-core processor system can release
from the standby state, a standing by for a purpose other than exclusive access, and
does not unnecessarily start a that has an exclusive access request and is in a state
of standby, by releasing the core from the standby state. Hence, power consumption
can be reduced.
[0127] The memory access control methods described in the present embodiment may be implemented
by executing a prepared program on a computer such as a personal computer and a workstation.
The program is stored on a computer-readable recording medium such as a hard disk,
a flexible disk, a CD-ROM, an MO, and a DVD, out from the computer-readable medium,
and executed by computer. The program may be distributed through a network such as
the Internet.
EXPLANATIONS OF LETTERS OR NUMERALS
[0128]
- #0 to #3
- CPUS
- 110
- bus
- 201
- shared memory
- 202
- memory access controller
- 203
- synchronous signal unit
- 204
- load destination address management flag registers
- 205
- exclusive access unit
- 206
- synchronous signal lines
- 207
- synchronous signal lines
- 301
- setting unit
- 302
- classifying unit
- 303
- detecting unit
- 304
- notifying unit
- 1101
- memory access controller
- 1102
- synchronous signal sending device
- 1103
- load destination address flag table
- 1104
- synchronous signal lines
- 1201
- exclusive access unit
- 1202
- load destination address management registers
- 1203
- synchronous signal control unit
- 1204
- setting unit
- 1205
- determining unit
- 1206
- detecting unit
- 1207
- notification requesting unit