According to a bus coupled multiprocessor according to the present invention, a plurality of processors are connected to the same bus. Each processor includes a cash memory and each processor has a snooping function for the cache memory. Each embodiment as will be described below is provided based on the bus coupled multiprocessor having the above structure.
The present invention will be described with reference to the drawings showing its embodiments hereinafter. In addition, in the following description, the processor is referred to as the CPU (Central Processing Unit).
As shown in
Furthermore, as shown in
According to the example shown in
Here, a distributed processing mechanism called CPUSET is mounted on a certain OS for multiprocessor recently. The function of the OS is to control the CPU for executing a program at OS level, and the CPUs may be grouped such that the CPUs 0 and 1 belong to an A group and the CPUs 2 and 3 belong to a B group, for example. This technology is based on the fact that performance is higher when a specific CPU continues to execute a predetermined program in executing a plurality of programs. In the case of moving between CPUs (referred to as process migration), since it is necessary to flash the cache or TLB, the cost becomes considerably high. Thus, when a plurality of programs are executed by a plurality of CPUs, a software execution environment in which the CPUs are grouped to execute each program as described above, has been prepared.
Going back, the CPUs #0 to #7 include cache memories m0 to m7, respectively as described above, and have a bus snooping (hereinafter referred to simply as snooping) function for the cache memories m0 to m7.
The specific constitution of each of the CPUs #0 to #7 will be described with reference to
As shown in
In addition, an enlarged view of the constitution in the vicinity of the bus interface if1 and the bus B1 (area circled with a dotted line) is also shown in
The bus interface if1 outputs a CPU access address to another CPU, data from itself, and its identification information (CPUID), to the bus B1 at the time of bus accessing. Meanwhile, the bus interface if1 receives a CPU access address from another CPU, data from the other CPU and CPUID from the other CPU transmitted when the other CPU accesses the bus.
Here, the CPUID is identification information unique to each of the CPUs #0 to #7. That is, each of the CPUs #0 to #7 has a different unique CPUID and each of the CPUs #0 to #7 outputs the CPUID to the bus B1 in addition to the CPU access address and the data when it accesses the bus.
As shown in
A bit string shown in
As shown in
Referring to
In
Furthermore, in
Focusing on the bit string (in the top row in
Focusing on the bit string (the fifth row in
Similarly, focusing on the bit string (in the fourth row in
The same description can be made for the other bit strings shown in
Next, the comparing unit 20 will be described.
The comparing unit 20 compares the CPUID outputted when a predetermined CPU accesses the bus with the first bit stored in the register 10. The operation of the comparing unit 20 will be described in detail with reference to
First, description will be made on a case where the CPU #0 outputs a snooping request.
When the snooping request is outputted from the CPU #0 (that is, when the CPU #0 accesses the bus), the bus interface if1 shown in
The decoder 21 receives the CPUID of the CPU #0, outputs a signal of “1” from an output corresponding to the CPU #0, and outputs a signal of “0” from other outputs corresponding to the other CPUs #1 to #7.
Then, each of the plurality of AND circuits 22 arranged at a latter stage of the decoder 21 performs logical computation between the signal transmitted from one output of the decoder 21 and the first bit contained in the bit string stored in the register 10.
For example, focusing on one AND circuit 22a, one input of the AND circuit 22a is connected to the output of the decoder 21 corresponding to the CPU #0. Therefore, “1” is inputted to the one input of the AND circuit 22a in this case. Meanwhile, the other input of the AND circuit 22a is connected to the first bit of the bit string stored in the register 10. Here, the bit string stored in the register 10 is shown in the second row in
Further, focusing on another AND circuit 22b, one input of the AND circuit 22b is connected to the output of the decoder 21 corresponding to the CPU #7. Therefore, “0” is inputted to the one input of the AND circuit 22b in this case. Meanwhile, the other input of the AND circuit 22b is connected to the eighth bit of the bit string stored in the register 10. Here, the bit string stored in the register 10 is shown in the second row in
Thus, it is found that when the CPU #0 outputs the snooping request, the signal of “0” is outputted from the another AND circuit (not shown in
Therefore, the logical computation result of an OR circuit 23 is “1” and the signal of “1” is inputted to the other input of the AND circuit 30. Thus, it can be understood that the logical computation using the plurality of AND circuits 22 and one OR circuit 23 is the comparing operation in the comparing unit 20.
Here, a signal of “1” is outputted from the output of the AND circuit 30 in this case and the signal of “1” is inputted to an input of a selector 40. The selector 40 is so constituted that it gives preference to the snooping request from another CPU over the access request of its own CPU #1.
As described above, since it is determined that the CPU #1 and the CPU #0 belong to the same group G1 from the result of comparison by the comparing unit 20 in this case, the CPU #1 performs the snooping process for its own cache memory m1.
Next, a description will be made of a case where the CPU #7 outputs the snooping request, for example.
When the snooping request is outputted from the CPU #7 (that is, when the CPU #7 accesses the bus), the bus interface if1 shown in
The decoder 21 receives the CPUID of the CPU #7 and outputs the signal of “1” from the output corresponding to the CPU #7 and outputs the signal of “0” from the outputs corresponding to the other CPUs #0 to #6.
Then, in the plurality of AND circuits 22 arranged at the subsequent stage of the decoder 21, each AND circuit 22 performs logical computation between the signal transmitted from one output of the decoder 21 and the first bit contained in the bit string stored in the register 10.
For example, focusing on one AND circuit 22a, one input of the AND circuit 22a is connected to the output of the decoder 21 corresponding to the CPU #0. Therefore, “0” is inputted to the one input of the AND circuit 22a in this case. Meanwhile, the other input of the AND circuit 22a is connected to the first bit of the bit string stored in the register 10. Here, the bit string stored in the register 10 is shown in the second row in
Focusing on another AND circuit 22b, one input of the AND circuit 22b is connected to the output of the decoder 21 corresponding to the CPU #7. Therefore, “1” is inputted to the one input of the AND circuit 22b in this case. Meanwhile, the other input of the AND circuit 22b is connected to the eighth bit of the bit string stored in the register 10. Here, the bit string stored in the register 10 is shown in the second row in
Thus, it is found that when the CPU #7 outputs the snooping request, the signal of “0” is outputted from another AND circuit (not shown in
Therefore, the result of logical computation by OR circuit 23 is “0” and the signal of “0” is inputted to the other input of the AND circuit 30. Thus, it can be grasped that the logical computation using the plurality of AND circuits 22 and one OR circuit 23 is the comparing operation in the comparing unit 20.
In addition, the signal of “0” is outputted from the output of the AND circuit 30 in this case and the signal of “0” is inputted to the input of the selector 40.
As described above, since it is determined that the CPU #1 and the CPU #7 belong to different groups from the result of comparison in the comparing unit 20 in this case, the CPU #1 does not perform the snooping process for its own cache memory m1.
As can be known from the description so far, the CPU to perform the snooping process is determined by the register 10 and the comparing unit 20.
According to the bus coupled multiprocessor regarding the background technique, when another CPU accesses the bus, it cannot be determined whether the accessed data is shared data or not by its own CPU. Therefore, since the hardware of the CPU cannot detect that another OS is activated by another CPU, all of the accesses to the bus from the other CPUs are snooped. That is, each of the CPUs #0 to #7 performs the snooping process without knowing the contents (shared or not) of the software activated in another CPU.
Thus, according to the bus coupled multiprocessor regarding the background technique, the problem is that the processing capability of each CPU is lowered and its power consumption is increased.
Thus, according to the bus coupled multiprocessor regarding to the present embodiment, when one of the CPUs #0 to #7 accesses the bus, it outputs its own CPUID to the bus B1 and the other CPUs #0 to #7 to perform the snooping process observe (receive) the outputted CPUID. Furthermore, each of the CPUs #0 to #7 has a register 10 storing the bit string (especially, the first bit) for identifying whether another CPU belongs to the same group (any of G1 to G3) as its own CPU or not (whether it belongs to the sharing group or not) and only when the CPU determines that the other CPU belonging to the same group accesses, the CPU performs the snooping process.
Therefore, when the CPUs #0 to #7 are grouped as described above (refer to
In addition, as described above, since the CPUs #0 to #7 do not need to access the cache memories m0 to m7, respectively in response to each bus access of all the CPU (that is, since the number of snooping processes is decreased as compared with the conventional case), each of the CPUs #0 to #7 can reduce their power consumption.
In addition, as described above, when the CPUs are grouped based on the OS program, since there is no need to share data between the groups G1 to G3 basically, the bus coupled multiprocessor according to the present embodiment is effective. In addition, when data has to be shared between the different OSs in the above, interruption between the CPUs without using the shared memory may be used.
The bus coupled multiprocessor according to the second embodiment can determine whether each CPU performs the snooping process or not depending on the operation mode of each CPU based on the first embodiment.
Therefore, the bus coupled multiprocessor according to the present embodiment also includes the constitution shown in
Furthermore, as described in the first embodiment, the processors #0 to #7 are divided into a plurality of groups. For example, the processors #0 to #7 are divided into a plurality of groups based on the operating system (OS) to be executed. That is, each group has an OS different from each other.
In addition, a more specific constitution of each of the CPUs #0 to #7 is as shown in
The different point between the constitution shown in
In addition, each bus interface if1 receives the CPU access address transmitted from another CPU, the data transmitted from the other CPU, and the CPUID transmitted from the other CPU when the other CPU accesses the bus, and additionally receives mode information regarding the operation mode of the other CPU transmitted from the other CPU.
Here, there are a supervisor mode and a user mode as the operation mode of each of the CPUs #0 to #7. In addition, since both the above modes are well-known operation modes, description thereof will be omitted here.
In addition, as shown in
In addition, the constitution according to the present embodiment is different from that according to the first embodiment in the constitution of the comparing unit and the constitution of the bit string stored in the register (refer to
As shown in
A bit string including a first bit and a second bit is stored in each register 15 arranged in each of the CPUs #0 to #7. Here, the first bit indicates whether the snooping process is performed or not when the CPUs #0 to #7 are in a predetermined operation mode (supervisor mode and user mode). The second bit is the same as the identifiable bit described in the first embodiment, that is, it can identify another CPU belonging to the group among groups G1 to G3 to which the CPU belongs, and another CPU that does not belong to the group to which the CPU belongs.
For example, a bit string shown in
As shown in
Referring to
More specifically, referring to
Similarly, referring to
The same can be applied to the other bits in
Here, referring to
When one CPU accesses the other CPU via the bus in the supervisor mode between the CPUs #4 and #5 in the group G2, both the CPUs #4 and #5 perform the snooping process in the present embodiment. In other words, even when each of the CPUs #4 and #5 is accessed from the other CPUs #0 to #3 and #6 and #7 via the bus in the supervisor mode, the snooping process is not performed. When the CPU #4 is accessed from the other CPUs #0 to #3 and #5 to #7 via the bus in the user mode, the snooping process is not performed. In addition, when the CPU #5 is accessed from the other CPUs #0 to #4 and #6 and #7 via the bus in the user mode, the snooping process is not performed.
When one CPU accesses the other CPU via the bus in the supervisor mode among the CPUs #2, #3, #6 and #7 in the group G3, the CPUs #2, #3, #6 and #7 perform the snooping process. In other words, even when each of the CPUs #2, #3, #6 and #7 is accessed from the other CPUs #0, #1, #4 and #5 via the bus in the supervisor mode, the snooping process is not performed. When one CPU accesses the other CPU via the bus between the CPUs #2 and #3 in the user mode, both the CPUs #2 and #3 perform snooping process. In other words, even when each of the CPUs #2 and #3 is accessed from the other CPUs #0, #1 and #4 to #7 via the bus in the user mode, the snooping process is not performed. When the CPU #6 is accessed from the other CPUs #0 to #5 and #7 via the bus in the user mode, the snooping process is not performed. Further, when the CPU #7 is accessed from the other CPUs #0 to #6 via the bus in the user mode, the snooping process is not performed.
That is, when one CPU is accessed from another CPU belonging to the same group via the bus in the supervisor mode, the snooping process is performed. Even when one CPU is accessed from another CPU via the bus in the user mode, the snooping process is not performed. However, when one CPU is accessed from another CPU via the bus in the user mode in a group g1 (that is, between the CPUs #2 and #3), in
In view of the above, the bit string stored in each register 15 is as shown in
For example, according to the case of the present embodiment, since the CPU #1 belongs to the same group as that of the CPU #0 only, as shown in the second row in
Similarly, according to the present embodiment, since the CPU #2 belongs to the same group as that of the CPUs #3, #6 and #7, as shown in the third row in
The same description can be applied to the other bit strings shown in
Next, the comparing unit 17 will be described.
The comparing unit 17 according to the present embodiment compares mode information indicating the kind of the operation mode outputted when a predetermined CPU (#0 to #7) accesses the bus, with the first bit stored in the register 15 (referred to as the first comparing process). Furthermore, the comparing unit 17 compares identification information (CPUID) given uniquely to each of the CPUs #0 to #7 outputted when a predetermined CPU (#0 to #7) accesses the bus with the second bit stored in the register 15 (referred to as the second comparing process).
As a result of the first comparing process, when the CPU #1 that received the mode information and has the constitution shown in
Furthermore, as a result of the second comparing process, when the CPU #1 that received the CPUID determines that it belongs to the same group as that of the predetermined CPU (#0 to #7), the comparing unit 17 outputs the signal of “1” separately from the above to the AND circuit 30 at the subsequent stage.
For example, when the CPU #0 accesses the bus in the supervisor mode, the CPU #0 outputs the CPUID of the CPU #0 and the mode information of the supervisor mode to the bus B1. In the CPU #1 that received the CPUID and the mode information, the comparing unit 17 compares the CPUID and the mode information with the bit string in the resister 15 in the CPU #1.
Here, as described above, when the CPU #0 accesses the bus in the supervisor mode, since the comparing unit 17 of the CPU #1 determines to perform the snooping process, the comparing unit 17 outputs a signal of “1” to the AND circuit 30 as a result of the first comparing process.
Since the CPUs #0 and #1 belong to the same group G1 as described above, the comparing unit 17 outputs a signal of “1” separately, to the AND circuit 30 as a result of the second comparing process.
When another snooping request is transmitted, a snooping request signal of “1” is inputted to the AND circuit 30. Therefore, in this case, since the signal of “1” is inputted to each of three inputs of the AND circuit 30, a signal of “1” is outputted from the AND circuit 30 to the selector 40. Here, the selector 40 is so constituted that it gives preference to the snooping request from the other CPU over the access request of its own CPU #1.
As described above, in this case, since the CPU #1 determines that the CPUs #1 and #0 belong to the same group G1 and determines to perform the snooping process when the CPU #0 is in the supervisor mode as the result of the first and second comparing processes, the CPU #1 performs the snooping process. That is, the CPU #1 performs the snooping process for its own cache memory m1.
In addition, for example, when the CPU #0 accesses the bus in the user mode, the CPU #0 outputs the CPUID of the CPU #0 and the mode information of the user mode to the bus B1. The CPU #1 receives the CPUID and the mode information and its comparing unit 17 compares the CPUID and the mode information with the bit string stored in the register 15 in its own CPU #1.
Here, as described above, when the CPU #0 accesses the bus in the user mode, since the comparing unit 17 of the CPU #1 determines not to perform the snooping process, the comparing unit 17 outputs a signal of “0” to the AND circuit 30 as a result of the first comparing process.
In addition, since the CPUs #0 and #1 belong to the same group G1, the comparing unit 17 outputs the signal of “1” separately to the AND circuit 30 as a result of the second comparing process.
In addition, when another snooping request is transmitted, the snooping request signal of “1” is inputted to the AND circuit 30. Therefore, in this case, since the signal of “1” is inputted to two inputs of the AND circuit 30 and the signal of “0” is inputted to the other one input thereof, a signal of “0” is outputted from the AND circuit 30 to the selector 40.
As described above, in this case, since the CPU #1 determines that the CPUs #1 and #0 belong to the same group G1 and determines not to perform the snooping process when the CPU #0 is in the user mode as the result of the first and second comparing processes, the CPU #1 does not perform the snooping process. That is, the CPU #1 does not perform the snooping process for its own cache memory m1.
In addition, for example, when the CPU #5 accesses the bus in the supervisor mode or the user mode, the CPU #5 outputs the CPUID of the CPU #5 and the mode information of the supervisor mode or the user mode to the bus B1. The CPU #1 receives the CPUID and the mode information and its comparing unit 17 compares the CPUID and the mode information with the bit string stored in the register 15 in it own CPU #1.
Here, as described above, when the CPU #5 accesses the bus in the supervisor mode or the user mode, since the comparing unit 17 of the CPU #1 determines not to perform the snooping process, the comparing unit 17 outputs the signal of “0” to the AND circuit 30 as a result of the first comparing process.
Since the CPUs #5 and #1 belong to different groups as described above, the comparing unit 17 outputs the signal of “0” separately to the AND circuit 30 as a result of the second comparing process.
When another snooping request is transmitted, the snooping request signal of “1” is inputted to the AND circuit 30. Therefore, in this case, since the signal of “0” is inputted to the two inputs of the AND circuit 30 and the signal of “1” is inputted to the other one input thereof, the signal of “0” is outputted from the AND circuit 30 to the selector 40.
As described above, in this case, since the CPU #1 determines that the CPUs #1 and #5 belong to different groups and determines not to perform the snooping process when the CPU #5 is in the supervisor mode or in the user mode as the result of the first and second comparing processes, the CPU #1 does not perform the snooping process. That is, the CPU #1 does not perform the snooping process for its own cache memory m1.
In order to prevent the error in the process of the comparing unit 17 and the operation for determining whether the snooping process is performed or not, another case is used for description.
For example, when the CPU #7 accesses the bus in the supervisor mode, the CPU #7 outputs the CPUID of the CPU #7 and the mode information of the supervisor mode to the bus B1. The CPU #3 receives the CPUID and the mode information and its comparing unit 17 compares the CPUID and the mode information with the bit string stored in the register 15 in its own CPU #3.
Here, as described above, when the CPU #7 accesses the bus in the supervisor mode, since the comparing unit 17 of the CPU #3 determines to perform the snooping process, the comparing unit 17 outputs a signal of “1” to the AND circuit 30 as a result of the first comparing process.
Since the CPUs #7 and #3 belong to the same group G3 as described above, the comparing unit 17 outputs a signal of “1” separately to the AND circuit 30 as a result of the second comparing process.
When another snooping request is transmitted, the snooping request signal of “1” is inputted to the AND circuit 30. Therefore, in this case, since the signal of “1” is inputted to three inputs of the AND circuit 30, the signal of “1” is outputted from the AND circuit 30 to the selector 40.
As described above, in this case, since the CPU #3 determines that the CPUs #3 and #7 belong to the same group G3 and determines to perform the snooping process when the CPU #7 is in the supervisor mode as the result of the first and second comparing processes, the CPU #3 performs the snooping process. That is, the CPU #3 performs the snooping process for its own cache memory m3.
Further, for example, when the CPU #7 accesses the bus in the user mode, the CPU #7 outputs the CPUID of the CPU #7 and the mode information of the user mode to the bus B1. The CPU #3 receives the CPUID and the mode information and its comparing unit 17 compares the CPUID and the mode information with the bit string stored in the register 15 in its own CPU #3.
Here, as described above, when the CPU #7 accesses the bus in the user mode, since the comparing unit 17 of the CPU #3 determines not to perform the snooping process, the comparing unit 17 outputs the signal of “0” to the AND circuit 30 as a result of the first comparing process.
In addition, as described above, since the CPUs #3 and #7 belong to the same group G3, the comparing unit 17 outputs the signal of “1” separately to the AND circuit 30 as a result of the second comparing process.
When another snooping request is transmitted, the snooping request signal of “1” is inputted to the AND circuit 30. Therefore, in this case, since the signal of “1” is inputted to the two inputs of the AND circuit 30 and the signal of “0” is inputted to the other one input thereof, the signal of “0” is outputted from the AND circuit 30 to the selector 40.
As described above, in this case, since the CPU #3 determines that the CPUs #3 and #7 belong to the same group G3 and determines not to perform the snooping process when the CPU #7 is in the user mode as the result of the first and second comparing processes, the CPU #3 does not perform the snooping process. That is, the CPU #3 does not perform the snooping process for its own cache memory m3.
In addition, for example, when the CPU #2 accesses the bus in the user mode, the CPU #2 outputs the CPUID of the CPU #2 and the mode information of the user mode to the bus B1. The CPU #3 receives the CPUID and the mode information and its comparing unit 17 compares the CPUID and the mode information with the bit string stored in the register 15 in its own CPU #3.
Here, as described above, when the CPU #2 accesses the bus in the user mode, since the comparing unit 17 of the CPU #3 determines to perform the snooping process, the comparing unit 17 outputs a signal of “1” to the AND circuit 30 as a result of the first comparing process.
Since the CPUs #2 and #3 belong to the same group G3 as described above, the comparing unit 17 outputs a signal of “1” separately to the AND circuit 30 as a result of the second comparing process.
When another snooping request is transmitted, the snooping request signal of “1” is inputted to the AND circuit 30. Therefore, in this case, since the signal of “1” is inputted to the three inputs of the AND circuit 30, a signal of “1” is outputted from the AND circuit 30 to the selector 40.
As described above, in this case, since the CPU #3 determines that the CPUs #3 and #2 belong to the same group and determines to perform the snooping process when the CPU #2 is in the user mode as the result of the first and second comparing processes, the CPU #3 performs the snooping process. That is, the CPU #3 performs the snooping process for its own cache memory m3.
Here, the above determining operation in another case can be easily understood from the above description. Therefore, the description here will be omitted. Thus, the comparing unit 17 capable of performing the above first and second comparing operations and the above determining operation after each of the comparing operations includes a combination of the plurality of AND circuits and the plurality of OR circuits.
As can be seen from the above description so far, according to the present embodiment, the CPU that received the CPUID and the mode information identifies the CPU to be snooped based on the register 15 and the comparing unit 17 (that is, based on the CPUID and the mode information outputted from each of the CPUs #0 to #7 at the time of accessing the bus).
As described above, in the bus coupled multiprocessor according to the present embodiment, each of the CPUs #0 to #7 includes the register 15 storing the bit string (refer to
In other words, when each of the CPUs #0 to #7 accesses the bus in a predetermined operation mode, each of the CPUs #0 to #7 outputs the mode information. Thus, each of the CPUs #0 to #7 observes (receives) the mode information, and the comparing unit 17 performs the first comparing process using the first bit stored in its own register 15 and the mode information. Then, each of the CPUs #0 to #7 determines whether the snooping process is performed or not based on the result of the first comparing process. Each of the CPUs #0 to #7 does not access the cache for the bus access that is determined as unshared data.
According to the above constitution, since each of the CPUs #0 to #7 only has to perform the snooping process when the CPU that accessed the bus is in the predetermined operation mode, the snooping process is not wasted in each of the CPUs #0 to #7. As a result, the processing capability of each of the CPUs #0 to #7 can be improved and its power consumption can be reduced.
For example, although it is different from the above case, a case where eight CPUs #0 to #7 operate one OS and each of the eight CPUs #0 to #7 executes a different user program may be assumed. Here, the case may be such that some CPUs of the CPUs #0 to #7 execute one user program cooperatively. For example, the case may be such that the CPUs #0 to #5 execute user programs different from each other and the CPUs #6 and #7 execute another user program cooperatively.
In the above case, a first bit that can determine that the snooping process is performed when each of the CPUs #0 to #7 accesses the bus in the supervisor mode is stored in each resister 15 in each of the CPUs #0 to #7. Furthermore, when each of the eight CPUs #0 to #7 executes a user program different from each other, a first bit that can determine that the snooping process is not performed when each of the CPUs #0 to #7 accesses the bus in the user mode is stored in the resister 15.
Since the comparing unit 17 performs the first comparing process in the above situation, each of the CPUs #0 to #7 constituting the bus coupled multiprocessor according to the present embodiment can operate one OS program normally. In addition, when each of the CPUs #0 to #7 accesses the bus in the user mode in which it is not necessary to share the data, since each of the CPUs #0 to #7 does not perform the snooping process, the processing capability of the CPUs #0 to #7 is improved and the power consumption can be reduced.
However, according to the actual bus coupled multiprocessor, as shown in
In this case, as described above, the bit string including the first bit and the second bit as shown in
In other words, when each of the CPUs #0 to #7 accesses the bus in the predetermined operation mode, each of the CPUs #0 to #7 outputs the mode information and the CPUID. Thus, each of the CPUs #0 to #7 observes (receives) the mode information and the CPUID, and the comparing unit 17 performs the first comparing process using the first bit stored in its own register 15 and the mode information, and the comparing process using the second bit and the CPUID. Thus, each of the CPUs #0 to #7 determines whether the snooping process is performed or not based on the result of the first comparing process.
That is, as the result of the first and second comparing processes in the comparing unit 17, when each of the CPUs #0 to #7 determines that the CPU that received the CPUID and the mode information and the CPU that transmitted the CPUID and the mode information belong to the same group (G1 to G3) and that the snooping process is performed when the CPU is in the operation mode designated by the transmitted mode signal, the CPU that received the CPUID and the mode information performs the snooping process.
Thus, the OS program can be normally operated in each of the groups G1 to G3. Here, as shown in
In addition, even when the predetermined CPU accesses the bus in the supervisor mode or the user mode, the CPU belonging to the group (G1 to G3) different from that of the predetermined CPU does not perform the snooping process. Thus, the processing capability of each of the CPUs #0 to #7 can be improved and the power consumption can be reduced.
Furthermore, when the CPU #2 accesses the bus in the user mode in the above example, the CPU #3 belonging to the same group g2 as that of the CPU #2 performs the snooping process but the CPUs #6 and #7 belonging to the same group G3 as that of the CPU #2 does not perform the snooping process. Thus, in the above example, the processing capability of the CPUs #6 and #7 can be improved and their power consumption can be reduced.
In addition, in the case of the first embodiment, when each of the CPUs #0 to #7 activates each user program in each of the groups G1 to G3, every time the CPU belonging to the same group accesses the bus, another CPU belonging to the same group performs the snooping process. However, in the case where the OS program is activated in each group, it is necessary to share the data between the CPUs belonging to the same group, but in the case where each CPU belonging to the same group activates each user program, another CPU belonging to the same group does not need to perform the snooping process each time the CPU belonging to the same group accesses the bus in many cases.
Therefore, as described above, when another CPU belonging to the same group performs the snooping process every time the CPU belonging to the same group accesses the bus in the user mode, processing capability of each CPU is lowered and its power consumption is increased.
In contrast, according to the bus coupled multiprocessor regarding the present embodiment, the problem with the first embodiment can be solved as described above.
In addition, each bit string shown in
Moreover, the groups G1 to G3 of the CPUs #0 to #7 may be changed according to the specifications of the bus coupled multiprocessor.
While the invention has been shown and described in detail, the foregoing description is in all aspects illustrative and not restrictive. It is therefore understood that numerous modifications and variations can be devised without departing from the scope of the invention.
Number | Date | Country | Kind |
---|---|---|---|
2006-195399 | Jul 2006 | JP | national |