WO2011118013A1 - マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム - Google Patents

マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム Download PDF

Info

Publication number
WO2011118013A1
WO2011118013A1 PCT/JP2010/055289 JP2010055289W WO2011118013A1 WO 2011118013 A1 WO2011118013 A1 WO 2011118013A1 JP 2010055289 W JP2010055289 W JP 2010055289W WO 2011118013 A1 WO2011118013 A1 WO 2011118013A1
Authority
WO
WIPO (PCT)
Prior art keywords
port
address space
software
cpu
physical address
Prior art date
Application number
PCT/JP2010/055289
Other languages
English (en)
French (fr)
Inventor
浩一郎 山下
早川 文彦
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2012506730A priority Critical patent/JP5472447B2/ja
Priority to PCT/JP2010/055289 priority patent/WO2011118013A1/ja
Priority to EP10848406.4A priority patent/EP2551769A4/en
Publication of WO2011118013A1 publication Critical patent/WO2011118013A1/ja
Priority to US13/623,399 priority patent/US8990516B2/en
Priority to US14/609,630 priority patent/US20150194198A1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Definitions

  • the present invention relates to a multi-core processor system for controlling a memory controller, a memory controller control method, and a memory controller control program.
  • a memory controller As a memory accessed from a plurality of CPUs (Central Processing Units), a multi-port memory technology having a plurality of memory banks capable of storing data and a plurality of input / output ports enabling data input / output It has been known.
  • a technique using a memory controller is also known as a device for controlling a memory when the CPU reads and writes data in the memory.
  • As a function of the memory controller there is a technology that provides a buffer mechanism between the memory and the bus or between the CPU and the bus, temporarily holds data in the buffer, and has a function of automatically branching to the branch destination port (See, for example, Patent Document 1 below).
  • the latency on the path can be minimized by setting a high clock between the memory and the buffer and between the bus and the buffer.
  • the technique according to Patent Document 1 has a problem that the power consumption is increased by using a high clock.
  • the technology according to Patent Document 2 has a problem that access contention continues even if the request and response paths are separated.
  • Patent Document 3 has a problem in that access conflict occurs when two pieces of software having different functions access the same address space. Further, it is necessary to prepare a port for each function type, and as the function type increases, the number of ports also increases, resulting in a problem that power consumption increases.
  • An object of the present invention is to provide a multi-core processor system, a memory controller control method, and a memory controller control program that can avoid access contention in order to solve the above-described problems caused by the prior art.
  • a plurality of cores a memory controller having a plurality of ports corresponding to the cores, a shared memory having a physical address space divided for each port, and software for each software
  • the number of cores to which the execution target software is allocated is obtained from a database that stores the number of cores to be allocated, and the execution target software is determined based on the number of cores to which the acquired execution target software is allocated and the usage status of the plurality of cores.
  • the address range accessed by the CPU is different from the address range accessed by another CPU, and an access conflict can be avoided.
  • FIG. 2 is a block diagram showing a part of hardware and software of the multi-core processor system 100.
  • FIG. It is explanatory drawing which shows the example of the division
  • FIG. 2 is a block diagram for explaining the relationship between each part in the multi-core processor system 100.
  • 3 is a block diagram of a port connector 203.
  • FIG. 6 is an explanatory diagram showing a software execution state and a setting state of a memory controller 202 at a timing t3. It is explanatory drawing which shows the state of the memory controller 202 in the timing t3. It is a flowchart which shows a scheduling process. It is a flowchart which shows an address space conversion process.
  • FIG. 1 is a block diagram of hardware of the multi-core processor system according to the embodiment.
  • a multi-core processor system 100 includes CPUs 101 on which a plurality of CPUs are mounted, a ROM (Read-Only Memory) 102, and a RAM (Random Access Memory) 103.
  • the multi-core processor system 100 includes a flash ROM 104, a flash ROM controller 105, and a flash ROM 106.
  • the multi-core processor system 100 includes a display 107, an I / F (Interface) 108, and a keyboard 109 as input / output devices for a user and other devices. Each unit is connected by a bus 110.
  • CPUs 101 are responsible for overall control of the multi-core processor system 100.
  • CPUs 101 refers to all CPUs in which single-core processors are connected in parallel. Details of the CPUs 101 will be described later with reference to FIG.
  • a multi-core processor system is a computer system including a processor having a plurality of cores.
  • the present embodiment is premised on a TCMP (Tightly Coupled Multi Processor) architecture that shares a memory, regardless of the CPU connection method.
  • TCMP Transmissionly Coupled Multi Processor
  • the ROM 102 stores a program such as a boot program.
  • the RAM 103 is used as a work area for the CPUs 101.
  • the flash ROM 104 stores system software such as an OS (Operating System), application software, and the like. For example, when updating the OS, the multi-core processor system 100 receives the new OS through the I / F 108 and updates the old OS stored in the flash ROM 104 to the received new OS.
  • OS Operating System
  • the flash ROM controller 105 controls reading / writing of data with respect to the flash ROM 106 under the control of the CPUs 101.
  • the flash ROM 106 stores data written under the control of the flash ROM controller 105. Specific examples of the data include image data and video data acquired by the user using the multi-core processor system 100 through the I / F 108.
  • As the flash ROM 106 for example, a memory card, an SD card, or the like can be adopted.
  • the display 107 displays data such as a document, an image, and function information as well as a cursor, an icon, or a tool box.
  • a TFT liquid crystal display can be adopted as the display 107.
  • the I / F 108 is connected to a network 111 such as a LAN (Local Area Network), a WAN (Wide Area Network), and the Internet through a communication line, and is connected to another device via the network 111.
  • the I / F 108 controls an internal interface with the network 111 and controls data input / output from an external device.
  • a modem or a LAN adapter can be employed as the I / F 108.
  • the keyboard 109 has keys for inputting numbers, various instructions, etc., and inputs data.
  • the keyboard 109 may be a touch panel type input pad or a numeric keypad.
  • FIG. 2 is a block diagram showing a part of hardware and software of the multi-core processor system 100.
  • the hardware shown in FIG. 2 is the shared memory 201, the memory controller 202, and the CPUs # 1 to # 4 included in the CPUs 101.
  • the memory controller 202 and the CPUs # 1 to # 4 are connected by a bus 110.
  • the codes attached with any of # 1 to # 4 mean codes corresponding to the CPUs # 1 to # 4, respectively.
  • the shared memory 201 is a storage area accessible through the memory controller 202.
  • the storage area is, for example, the ROM 102, the RAM 103, and the flash ROM 104.
  • the shared memory 201 has ports # 1 to # 4 that are accessible lines.
  • the CPUs # 1 to # 4 can access any of the ports # 1 to # 4. In this embodiment, CPU # 1 controls port # 1, CPU # 2 controls port # 2, CPU # 3 controls port # 3, and CPU # 4 controls port # 4. To do.
  • the shared memory 201 is divided into shared memory block # 1 to shared memory block # 4 in which the physical address space is divided for each port # 1 to port # 4.
  • the shared memory block # 1 to shared memory block # 4 may have a continuous physical address space or may be separated from each other.
  • the shared memory 201 may exist as one memory bank, or one shared memory block may exist as one memory bank.
  • port # 1 can access shared memory block # 1.
  • port # 2 to port # 4 can access shared memory block # 2 to shared memory block # 4, respectively.
  • one port may be able to access a plurality of shared memory blocks by setting the port.
  • the port # 1 may be accessible to the shared memory block # 1 and the shared memory block # 2 by changing the setting of the port # 1.
  • the memory controller 202 has a function of controlling reading and writing of data to the shared memory 201.
  • the memory controller 202 controls the access to the shared memory 201 by the CPUs # 1 to # 4 by changing the settings of the ports # 1 to # 4 that access the shared memory 201.
  • the port connector 203 exists inside the memory controller 202 and connects or disconnects the ports # 1 to # 4. In the example of FIG. 2, the port connector 203 does not connect the port # 3 on the bus 110 side.
  • the address converter 204 exists inside the memory controller 202 and performs address conversion of the port # 1 to port # 4. An example of the conversion method will be described later with reference to FIG. CPU # 1 to CPU # 4 are equipped with cache memory # 1 to cache memory # 4.
  • the software shown in FIG. 2 is scheduler # 1 to scheduler # 4 and software 205-1 to software 205-4. Further, there are cache memory blocks 206-1 to 206-4 and shared memory blocks 207-1 to 207-4 as storage areas accessed by the software.
  • Scheduler # 1-Scheduler # 4 determines on which CPU the OS or software requested to be activated by the user is executed based on the usage status of CPU # 1-CPU # 4. For example, the scheduler # 1 to the scheduler # 4 determine the least used CPU among the CPUs # 1 to # 4 as the CPU for which the activation request has been made. Further, the scheduler # 1 to the scheduler # 4 notify the setting to the port connector 203 and the address converter 204 based on the software requested to be activated.
  • Software 205-1 is executed by CPU # 1.
  • the CPU # 1 accesses the cache memory block 206-1 by the software 205-1 and also when the necessary data does not exist in the cache memory block 206-1, the shared memory block 207-1 is passed through the port # 1. To access.
  • Software 205-2 is executed by CPU # 2 and CPU # 3.
  • the CPU # 2 accesses the cache memory block 206-2-1 by the software 205-2, and when there is no necessary data in the cache memory block 206-2-1, the shared memory block via the port # 2 Access to 207-2.
  • the CPU # 3 also accesses the shared memory block via the port # 2 when the necessary data does not exist in the cache memory block 206-2-2. Access to 207-2.
  • Software 205-3 and software 205-4 are executed by CPU # 4.
  • the CPU # 4 accesses the cache memory block 206-3 and the cache memory block 206-4 corresponding to the software by the software 205-3 and the software 205-4.
  • the CPU # 4 accesses the shared memory block 207-3 and the shared memory block 207-4 via the port # 4.
  • FIG. 3 is an explanatory diagram showing an example of the division of the physical address space and the combination of the logical address space.
  • the physical address spaces of the shared memory block # 1 to the shared memory block # 4 including the shared memory 201 are set as follows.
  • the physical address space of the shared memory block # 1 is 0x0000 to 0x00ff.
  • the physical address space of the shared memory block # 2 is 0x1000 to 0x10ff.
  • the physical address space of the shared memory block # 3 is 0x2000 to 0x20ff.
  • the physical address space of the shared memory block # 4 is 0x3000 to 0x30ff.
  • the logical address space accessed by the software 205-1 is 0x0000 to 0x00ff in the above state.
  • CPU # 1 uses port connector 203 to place port # 1 in a connected state.
  • the CPU # 1 sets the address converter 204 to address through.
  • the address through setting is a setting for accessing the shared memory 201 using a logical address as a physical address without conversion.
  • the logical address space accessed by the software 205-2 is 0x0000 to 0x01ff. It is assumed that the master thread of software 205-2 executed by CPU # 2 also accesses 0x0000 to 0x01ff as a logical address. In order to access the port # 2, the CPU # 2 sets the port # 2 in the connected state by the port connector 203.
  • the CPU # 2 notifies the address converter 204 to convert the logical address space and the physical address spaces of the shared memory block # 2 and the shared memory block # 3.
  • the port # 2 converts the logical addresses 0x0000 to 0x00ff into the physical addresses 0x1000 to 0x10ff, and converts the logical addresses 0x0100 to 0x01ff into the physical addresses 0x2000 to 0x20ff.
  • the address converter 204 converts it to a physical address that is 0x1010.
  • the address converter 204 can provide the physical address space that is not continuous to the software as a continuous logical space.
  • the CPU # 4 notifies the address converter 204 to convert the logical address space and the physical address space of the shared memory block # 4.
  • the port # 4 converts the logical address 0x0000 to 0x00ff into the physical address 0x3000 to 0x30ff.
  • the address converter 204 converts the address in the initial conversion state. You may make it do.
  • FIG. 4 is a block diagram for explaining the relationship between the components in the multi-core processor system 100.
  • the multi-core processor system 100 includes, for example, an acquisition unit 402, a determination unit 403, a setting unit 404, an address notification unit 405, a selection unit 406, a release notification unit 407, an aggregation unit 408, a detection unit 409, An execution start notification unit 410.
  • the CPUs 101 execute programs stored in the storage device. Examples of the storage device include the ROM 102, the RAM 103, and the flash ROM 104 shown in FIG. Alternatively, another CPU may execute it via the I / F 108.
  • the multi-core processor system 100 includes a memory controller 202 having a plurality of cores and a plurality of ports corresponding to the cores, and a shared memory 201 having a physical address space divided for each port.
  • the plurality of cores may be all CPUs belonging to the CPUs 101, or may be a part of the CPUs 101 to which the present embodiment is applied.
  • the plurality of ports corresponding to the core are specific ports accessed by the CPU. For example, port # 1 for CPU # 1, port # 2 for CPU # 2, and so on. The port has been determined. In FIG. 4, since the number of CPUs and the number of ports are the same, the CPUs and the ports are in a one-to-one correspondence. .
  • Each port is set to be accessible to a physical address space obtained by dividing the physical address space of the shared memory 201. For example, when the physical address space of the shared memory 201 is 0x0000 to 0x01ff, port # 1 can access the physical address space of 0x0000 to 0x00ff, and port # 2 can access the physical address space of 0x0100 to 0x01ff. To do. As described above, the physical address space may be divided equally for each port as described above, or may be divided unevenly.
  • the multi-core processor system 100 can access the parallelism information table 401 as a database that stores the number of cores to which target software is assigned for each software.
  • the software 205-1 is registered as distributed software for assigning one CPU
  • the software 205-2 is registered as parallel software for assigning two CPUs. Details of the parallelism information table 401 will be described later with reference to FIG.
  • the acquisition unit 402 has a function of acquiring the number of cores to which the execution target software is allocated from the parallelism information table 401.
  • the execution target software is software that has been activated by the user or the OS, or software that is about to be executed by the scheduler again after the CPU is deallocated after execution by the scheduler.
  • the acquisition unit 402 acquires from the parallelism information table 401 that the number of CPUs to be allocated is two.
  • the acquired data is stored in a storage area such as the RAM 103 and the flash ROM 104.
  • the determining unit 403 has a function of determining the core to which the execution target software is allocated based on the number of cores to which the execution target software acquired by the acquisition unit 402 is allocated and the usage status of the plurality of cores.
  • the determination unit 403 determines the CPUs # 2 and # 3 as low-load CPUs from the CPUs 101 as CPUs to which the software 205-2 is assigned. Note that the determined CPU information is stored in a storage area such as the RAM 103 or the flash ROM 104.
  • the setting unit 404 acquires a physical address space accessible by a specific port corresponding to the core determined by the determination unit 403 among the plurality of ports. From the acquired physical address space, the setting unit 404 has a function of setting a physical address space corresponding to the logical address space defined by the execution target software for each determined core. The setting unit 404 may set the physical address space aggregated by the aggregation unit 408 as a physical address space that can be newly accessed by the port selected by the selection unit 406.
  • the determined cores are CPU # 2 and CPU # 3, and the ports corresponding to the aforementioned CPU are port # 2 and port # 3. Subsequently, it is assumed that the physical address space in which port # 2 can access the shared memory 201 is 0x1000 to 0x10ff, and the physical address space in which port # 3 can access the shared memory 201 is 0x2000 to 0x20ff.
  • the setting unit 404 sets the physical address space corresponding to the logical address space defined by the execution target software for each determined CPU from the physical address spaces 0x1000 to 0x10ff and 0x2000 to 0x20ff. If the specified logical address space is 0x0000 to 0x01ff, the logical address space 0x0000 to 0x00ff is set in association with the physical address space 0x1000 to 0x10ff when the CPU # 2 accesses the port # 2. Similarly, when CPU # 3 accesses port # 3, logical address space 0x0100 to 0x01ff is set in association with physical address space 0x2000 to 0x20ff. The set address correspondence information is stored in a storage area such as the RAM 103 and the flash ROM 104.
  • the address notification unit 405 has a function of notifying a specific port of the physical address space set by the setting unit 404 and the logical address space corresponding to the set physical address space.
  • the address notification unit 405 may notify the port selected by the selection unit 406 of the newly accessible physical address space set by the setting unit 404.
  • the address notification unit 405 notifies the address correspondence information set by the CPU # 2 to the port # 2 of the address converter 204. Further, it is assumed that the physical address space aggregated by the aggregation unit 408 is 0x0000 to 0x01ff, and the port # 2 is selected by the selection unit 406. At this time, the address notification unit 405 notifies the port # 2 of 0x0000 to 0x01ff as a physical address space that can be newly accessed by the port # 2.
  • a configurable pattern may be prepared. For example, when there are four ports and the physical address space of the shared memory 201 is divided into four, the divided physical address space may be associated with the bit string in the register. The logical address space may be associated with the address space starting from 0x0000.
  • the address notification unit 405 may notify the upper limit value and lower limit value of the physical address space, the upper limit value and lower limit value of the logical address, or prepares a settable pattern, thereby notifying processing. May be simplified.
  • the setting unit 404 sets the bit of the register corresponding to the physical address space 0x0200 to 0x02ff to “1”, and sets the physical address space 0x0200 to 0x02ff and the logical address space 0x0000 to 0x00ff in association with each other.
  • the address notification unit 405 may notify the set register value.
  • the address notification unit may notify the corresponding bit “0b1010”. Good.
  • the notified address correspondence information may be stored in a storage area such as the RAM 103 or the flash ROM 104.
  • the selection unit 406 has a function of selecting an arbitrary port among the specific ports when there are a plurality of specific ports corresponding to the core determined by the determination unit 403. For example, when CPU # 2 and CPU # 3 are determined by determining unit 403 and there are a plurality of corresponding ports such as port # 2 and port # 3, port # 2 is selected as an arbitrary port.
  • the port selection criteria may be performed in any way. For example, a port corresponding to the CPU executing the master thread of the execution target software may be selected. Also, if the performance of multiple existing ports is asymmetric and the capabilities of a specific port outperform the capabilities of other ports, you can select a port that performs better than others. .
  • the selected port information is stored in a storage area such as the RAM 103 or the flash ROM 104.
  • the release notification unit 407 has a function of notifying the remaining ports of a notification for releasing the connection of the remaining ports excluding the port selected by the selection unit 406 among the specific ports. For example, when the port # 2 and the port # 3 are selected as the specific ports and the port # 2 is selected by the selection unit 406, the port connector 203 notifies the remaining port # 3 of the release of the port connection. To port # 3.
  • the notified connection release information may be stored in a storage area such as the RAM 103 or the flash ROM 104.
  • the aggregating unit 408 has a function of aggregating physical address spaces accessible by a plurality of specific ports. For example, assume that the specific ports are port # 2 and port # 3, and the physical address spaces of port # 2 and port # 3 are 0x0000 to 0x00ff and 0x0100 to 0x01ff, respectively. In the above state, the aggregating unit 408 sets the aggregated physical address space to 0x0000 to 0x01ff.
  • the aggregated physical address information is stored in a storage area such as the RAM 103 and the flash ROM 104.
  • the detecting unit 409 has a function of detecting a start time for simultaneously executing the execution target software among the determined cores when there are a plurality of cores determined by the determining unit 403. Further, the detection unit 409 detects the time when the address notification unit 405 has completed notification to a specific port as the start time. For example, if the determined CPUs are CPU # 2 and CPU # 3 and the specific port is port # 2, CPU # 2 or CPU # 3 has completed execution of address notification unit 405 at port # 2 The time can be detected as the start time of the execution target software. Information indicating that the detection has been performed is stored in a storage area such as the RAM 103 or the flash ROM 104.
  • the execution start notification unit 410 has a function of notifying the execution target software of the execution start after notifying a specific port by the address notification unit 405.
  • the execution start notifying unit 410 may notify the execution target software of the execution start after the detection unit 409 detects the start time.
  • the CPU # 2 can notify the execution target software of the execution start. Further, when the determined CPUs are CPU # 2 and CPU # 3, after the start time is detected by the detection unit 409, the CPU # 2 and CPU # 3 notify the execution target software of the execution start. be able to.
  • the execution start notification may be stored in a storage area such as the RAM 103 and the flash ROM 104.
  • FIG. 5 is a block diagram of the port connector 203.
  • the port connector 203 is a form of the memory controller 202 and exists between the bus 110 and the address converter 204 and controls connection / disconnection of each port. Connection / disconnection of each port is controlled by a setting register 501 accessed by the CPUs # 1 to # 4.
  • the setting register 501 includes setting registers 501 # 1 to 501 # 4, and controls connection / disconnection of each port.
  • the setting register 501 # 1 controls the switch # 1 to set connection / non-connection of the port # 1.
  • the setting register 501 # 1 connects the port # 1 if the setting value is “1”, and disconnects the port # 1 if the setting value is “0”.
  • the setting registers 501 # 2 to 501 # 4 connect and disconnect the ports # 2 to # 4, respectively.
  • the disconnected port is not supplied with power to the connection within the port. As a result, the power saving effect can be obtained by disconnecting the port when the port is unnecessary.
  • FIG. 6 is an explanatory diagram showing an example of the address converter 204 and settings.
  • the explanatory diagram denoted by reference numeral 601 shows the address converter 204.
  • the address converter 204 is a form of the memory controller 202 and exists between the port connector 203 and the shared memory 201, and converts the logical address and physical address of each port. The conversion between the logical address and the physical address of each port is controlled by conversion registers 603 # 1 to 603 # 4 accessed by CPU # 1 to CPU # 4.
  • the conversion register 603 # 1 controls a TLB (Translation Lookaside Buffer) # 1.
  • the controlled TLB # 1 converts the logical address space and physical address space of the port # 1.
  • the explanatory diagram denoted by reference numeral 602 is an explanatory diagram illustrating an example of the relationship between the conversion register 603 # 1 and the TLB # 1.
  • the content set in TLB # 1 changes according to the setting of conversion register 603 # 1. For example, when the CPU # 1 sets the conversion register 603 # 1 to “0b0000”, the setting of the TLB # 1 is not set and the address through is set.
  • the TLB # 1 setting 604-1 designates the logical address space 0x0000 to 0x00ff as the physical address space of the shared memory block # 1.
  • the setting of the TLB # 1 becomes the TLB # 1 setting 604-2.
  • the TLB # 1 setting 604-2 designates the logical address space 0x0000 to 0x01ff as the physical address space of the shared memory block # 1 and the shared memory block # 2.
  • TLB # 1 setting 604-3 designates the logical address space 0x0000 to 0x01ff as the physical addresses of the shared memory block # 1 and the shared memory block # 3.
  • TLB # 1 setting 604-4 designates the logical address space 0x0000 to 0x02ff as the physical addresses of the shared memory block # 1 to the shared memory block # 3.
  • the address translation method is designated by the translation register 603 # 2 to translation register 603 # 4.
  • the content of the TLB is specified by the conversion register 603.
  • the content of the TLB may be directly described by the conversion register 603.
  • FIG. 7 is an explanatory diagram showing an example of the stored contents of the parallel degree information table 401.
  • the parallel degree information table 401 includes, for example, three fields: software name, parallel degree information, and parallel number P.
  • the software name field stores the name of the software. For example, a process start address corresponding to software is set, and the CPU can execute processing with reference to the process start address.
  • the parallel degree information field stores an identifier indicating whether each CPU is distributed to process software or a plurality of CPUs operate in parallel to process software.
  • the stored identifiers are “distributed” and “parallel”.
  • the “distributed” identifier indicates that the software stored in the name field is distributed software executed by one CPU.
  • the “parallel” identifier indicates that the software stored in the name field is parallel software executed by two or more CPUs.
  • the parallel number P field indicates the number of CPUs when the software stored in the name field is executed. For example, the UI processing is distributed software and is executed by one CPU.
  • the web browser is parallel software and is executed by three CPUs.
  • FIG. 8 is an explanatory diagram showing a state in which distributed software and parallel software are mixedly loaded.
  • the multicore processor system 100 executes parallel software P1, parallel software P2, and distributed software S1 to distributed software S6 as software.
  • the CPUs # 1 to # 4 access the shared memory 201 through the memory controller 202.
  • the CPU # 1 sequentially executes the master thread P1, the distributed software S2, and the distributed software S3 of the parallel software P1 by the OS # 1.
  • the CPU # 2 sequentially executes the slave thread P1-1 of the parallel software P1, the master thread P2 of the parallel software P2, and the distributed software S4 by the OS # 2.
  • the CPU # 3 sequentially executes the slave thread P1-2 of the parallel software P1, the slave thread P2-1 of the parallel software P2, and the distributed software S5 by the OS # 3.
  • the CPU # 4 sequentially executes the distributed software S1, the slave thread P2-2 of the parallel software P2, and the distributed software S6 by the OS # 4.
  • FIG. 9 is an explanatory diagram showing a dispatch cycle pattern of the CPU in FIG.
  • the CPUs # 1 to # 4 periodically notify the settings of the memory controller 202 to the ports # 1 to # 4 by the converter setting process.
  • the converter setting process is a process for setting the setting register 501 of the port connector 203 and setting the conversion register 603 of the address converter 204.
  • distributed software can be set by the converter setting process u # 1-1.
  • the converter setting process u # 2-1 is performed for the port # 2
  • the converter setting process u # 3-1 is performed for the port # 3
  • the port # 4 is processed.
  • the distributed software is set by the converter setting process u # 4-1.
  • the setting process there are connection setting and release setting performed for the port connector 203, logical single space setting and logical continuous space setting performed for the address converter 204. By setting the logical continuous space, the physical address space accessible by a plurality of ports is aggregated into the physical address space accessible by one port.
  • the settings of port # 1 to port # 4 are updated by converter setting processing u # 1-2 to converter setting processing u # 4-2.
  • the port # 1 is updated to the distributed software setting by the converter setting process u # 1-2.
  • Ports # 2 to # 4 are updated to the settings of the parallel software P2 by the converter setting process u # 2-2 to the converter setting process u # 4-2.
  • the CPU controlling the port # 2 to port # 4 can execute the barrier synchronization code 903-1 to barrier synchronization code 903-3.
  • the barrier synchronization code is a code that waits for the processing of all CPUs that require synchronization to end.
  • CPU # 2 controls port # 2
  • CPU # 3 controls port # 3
  • CPU # 4 controls port # 4. Therefore, after the CPU # 2 performs the converter setting process U # 2-2, the CPU # 2 executes the barrier synchronization code 903-1 and stands by.
  • CPU # 3 and CPU # 4 execute the converter setting process, execute the barrier synchronization code, and wait.
  • the CPU # 2 to CPU # 4 execute the barrier synchronization code
  • the CPU detects the start time for starting execution of the software, and the CPU that has been waiting returns to execute the parallel software P2.
  • the CPU # 2 to CPU # 4 can simultaneously access the parallel software P2.
  • the synchronization code 901 with the parallel software P1 is a code for the parallel software P1 to access a continuous logical address space. For example, at timing t1, the synchronization code 901 sets the parallel software P1 by the converter setting process u # 1-3 to converter setting process u # 3-3 and the barrier synchronization code 904-1 to barrier synchronization code 904-3. Do.
  • the synchronization code 902 with the parallel software P2 is a code for the parallel software P2 to access a continuous logical address space.
  • the synchronization code 902 sets the parallel software P2 by the converter setting process u # 2-5 to the converter setting process u # 4-5 and the barrier synchronization code 905-1 to the barrier synchronization code 905-3.
  • the execution state of software in the multi-core processor system 100 and the setting state of the memory controller 202 from timing t1 to timing t3 are shown in FIGS.
  • FIG. 10 is an explanatory diagram showing a software execution state and a setting state of the memory controller 202 at the timing t1.
  • the CPU # 1 to CPU # 3 execute the parallel software P1
  • the CPU # 4 executes the distributed software S1.
  • the port # 1 becomes a master port
  • the port # 1 accesses the shared memory 201 by executing the parallel software P1 in the CPUs # 1 to # 3.
  • Port # 2 and port # 3 are not connected.
  • Port # 4 also becomes a master port, and port # 4 accesses shared memory 201 by execution of distributed software S1 in CPU # 4.
  • FIG. 11 is an explanatory diagram showing the state of the memory controller 202 at the timing t1.
  • the diagram denoted by reference numeral 1101 shows the state of the port connector 203 and the state of the address converter 204.
  • a table group denoted by reference numeral 1102 indicates a setting state of TLB # 1 and TLB # 4.
  • port # 1 “1” is set in the setting register 501-1 by the converter setting process u # 1-3.
  • port # 1 is connected.
  • the converter setting process u # 1-3 sets the conversion register 603 # 1 to “0b1110”, whereby the TLB # 1 setting 1103 is set to the TLB # 1.
  • the port # 1 can access the shared memory block # 1 to the shared memory block # 3, and provide the continuous logical address space 0x0000 to 0x02ff to the parallel software P1.
  • port # 2 In port # 2, “0” is set in the setting register 501-2 by the converter setting process u # 2-3. As a result, the port # 2 is disconnected. Similarly, at port # 3, “0” is set in the setting register 501-3 by the converter setting process u # 3-3. As a result, port # 3 is also disconnected. At port # 4, “1” is set in the setting register 501-4 by the converter setting process u # 4-3. As a result, the port # 4 is connected. Subsequently, in the port # 4, the TLB # 4 setting 1104 is set in the TLB # 4 by the converter setting process u # 4-3. As a result, the port # 4 can access the shared memory block # 4 and provide the logical address space converted from the physical address space to the distributed software S1.
  • FIG. 12 is an explanatory diagram showing a software execution state and a setting state of the memory controller 202 at the timing t2.
  • the multi-core processor system 100 at the timing t2 executes the distributed software S3 on the CPU # 1.
  • the CPU # 2 executes the distributed software S4
  • the CPU # 3 executes the distributed software S5
  • the CPU # 4 executes the distributed software S6.
  • the port # 1 to the port # 4 become master ports and access to the shared memory 201 is performed.
  • FIG. 13 is an explanatory diagram showing the state of the memory controller 202 at the timing t2.
  • the diagram denoted by reference numeral 1301 shows the state of the port connector 203 and the state of the address converter 204.
  • a table group denoted by reference numeral 1302 indicates the setting states of TLB # 1 to TLB # 4.
  • port # 1 “1” is set in the setting register 501-1 by the converter setting process u # 1-4.
  • port # 1 is connected.
  • TLB # 1 setting 1303 is set in TLB # 1 by converter setting processing u # 1-4.
  • the port # 1 can access the shared memory block 201 # 1 and provide the logical address space converted from the physical address space to the distributed software S3.
  • Port # 2 is connected by converter setting processing u # 2-4, accesses shared memory block 201 # 2, TLB # 2 is set to TLB # 2 setting 1304, and logical address space is set to distributed software S4. provide.
  • Port # 3 is connected by the converter setting process u # 3-4, accesses the shared memory block 201 # 3, TLB # 3 setting 1305 is set in TLB # 3, and the logical address space is set in the distributed software S5. provide.
  • the port # 4 is connected by the converter setting process u # 4-4, accesses the shared memory block 201 # 4, the TLB # 4 setting 1306 is set in the TLB # 4, and the logical address space is set in the distributed software S6. provide.
  • FIG. 14 is an explanatory diagram showing a software execution state and a setting state of the memory controller 202 at the timing t3.
  • the multi-core processor system 100 at the timing t3 executes the distributed software S2 at the CPU # 1, and executes the parallel software P2 at the CPUs # 2 to # 4.
  • the port # 1 becomes a master port, and the port # 1 accesses the shared memory 201 by executing the distributed software S2 in the CPU # 1.
  • Port # 2 is also a master port, and port # 2 accesses the shared memory 201 by executing parallel software P2 in CPU # 2 to CPU # 4.
  • Port # 3 and port # 4 are not connected.
  • FIG. 15 is an explanatory diagram showing the state of the memory controller 202 at the timing t3.
  • the diagram indicated by reference numeral 1501 shows the state of the port connector 203 and the state of the address converter 204.
  • a table group denoted by reference numeral 1502 indicates a setting state of TLB # 1 and TLB # 2.
  • TLB # 1 setting 1503 is set in TLB # 1 by setting conversion register 603 # 1 to “0b1000” by converter setting processing u # 1-5.
  • the port # 1 can access the shared memory block 201 # 1 and provide the logical address space converted from the physical address space to the distributed software S2.
  • port # 2 “1” is set in the setting register 501-2 by the converter setting process u # 2-5. As a result, port # 2 is connected. Subsequently, in the port # 2, the TLB # 2 setting 1504 is set in the TLB # 2 by the converter setting process u # 2-5. Thereby, the port # 2 can access the shared memory block 201 # 2 to the shared memory block 201 # 4 and provide the continuous logical address space 0x0000 to 0x02ff to the parallel software P2.
  • port # 3 “0” is set in the setting register 501-3 by the converter setting process u # 3-5. As a result, the port # 3 is disconnected.
  • port # 4 “0” is set in the setting register 501-4 by the converter setting process u # 4-5. As a result, port # 4 is also disconnected.
  • FIG. 16 is a flowchart showing the scheduling process.
  • the scheduling process is executed by scheduler # 1 to scheduler # 4 as a function when the software is activated.
  • Steps S1601 to S1604, S1610, and S1611 are executed by a specific CPU among the CPUs 101, and steps S1605 to S1609 are executed by the CPU detected in step S1603.
  • the specific CPU described above is CPU # 1.
  • CPU # 1 receives a request to activate the target software (step S1601).
  • the activation request is issued by the user operating the UI, for example.
  • CPU # 1 obtains the parallel degree information and the parallel number P of the target software from the parallel degree information table 401 (step S1602).
  • CPU # 1 detects P CPUs having a low load in parallel (step S1603).
  • the CPU # 1 can detect P CPUs from the CPU having a low load according to the usage state of the CPU from the information of the scheduler # 1 to the scheduler # 4.
  • CPU # 1 selects the first CPU from the detected CPU group (step S1604).
  • the selected CPU executes an address space conversion process (step S1605). Details of the address space conversion processing will be described later with reference to FIG. After the processing, the selected CPU determines whether or not the parallel degree information of the target software is “parallel” (step S1606).
  • step S1606 When the degree of parallelism information is “distributed” (step S1606: No), the selected CPU executes a driver task for controlling the port connector 203 and the address converter 204 (step S1608).
  • the operation content of the driver task is a task for performing the setting to the port connector 203 and the address converter 204 set in the processing of step S1605 and the execution of the barrier synchronization code at a constant cycle.
  • step S1606 If the degree of parallelism information is “parallel” (step S1606: Yes), the selected CPU subsequently determines whether the selected CPU is a CPU that operates the main thread of the target software (step S1607). When the selected CPU is a CPU that executes the main thread (step S1607: Yes), the selected CPU proceeds to the process of step S1608. When the selected CPU is a CPU that executes a slave thread (step S1607: No), or after the process of step S1608 is completed, the selected CPU performs dispatch according to the result of the scheduling process (step S1609).
  • CPU # 1 determines whether the selected CPU is the last CPU in the detected CPU group (step S1610). If it is not the last CPU (step S1610: No), CPU # 1 selects the next CPU in the detected CPU group (step S1611), and proceeds to the process of step S1605. If it is the last CPU (step S1610: Yes), the CPU # 1 ends the scheduling process.
  • FIG. 17 is a flowchart showing the address space conversion process.
  • the address space conversion process is executed by the CPU selected in step S1604 or step S1611.
  • the selected CPU determines whether the parallel number P is 1 (step S1701). When the parallel number P is 1 (step S1701: Yes), the selected CPU executes the port connector 203 connection setting (step S1702) and the address converter 204 logical single space setting (step S1703), and the address The space conversion process ends.
  • the port connector 203 connection setting is a process of setting a port corresponding to the selected CPU to a connected state. For example, if the selected CPU is CPU # 1, CPU # 1 can set the setting register 501 # 1 for controlling the connection state of port # 1 to “1”.
  • the address converter 204 logical single space setting is a setting for associating the logical address space of software with any one physical address space of the shared memory block # 1 to shared memory block # 4 of the port corresponding to the selected CPU. It is.
  • step S1704 determines whether the selected CPU is a CPU that executes the main thread (step S1704).
  • the selected CPU sets the port connector 203 connection setting (step S1705) and the address converter 204 logical continuous space setting (step S1706).
  • Address converter 204 logical contiguous space setting means that the logical address space of software is the physical address of two or more shared memory blocks among the shared memory block # 1 to shared memory block # 4 of the port corresponding to the selected CPU. It is a setting that aggregates and associates with space. Further, the associated logical addresses are set to be a continuous space.
  • the selected CPU executes the port connector 203 release setting (step S1707).
  • the port connector 203 release setting is a process for disconnecting the port corresponding to the selected CPU. Further, the port connector 203 connection setting, the port connector 203 release setting, the address converter 204 logical single space setting, and the address converter 204 logical continuous space setting are the converter setting processing described above with reference to FIG.
  • the selected CPU performs simultaneous execution setting in the thread dispatcher (step S1708). For example, the selected CPU registers the target software in the thread dispatcher as software that simultaneously executes the target software. Subsequently, the selected CPU sets the barrier synchronization code and the cycle timing (step S1709), and ends the address space conversion process. By executing the barrier synchronization code before the parallel software is executed, the CPU group executing the parallel software can detect the start time of executing the parallel software simultaneously. The setting of the cycle timing is to set the target software so as to be allocated at the same timing between the CPUs.
  • the CPU to which the execution target software is assigned is determined in a state where the physical address space is divided for each port. Subsequently, the logical address defined by the execution target software is designated from the physical address space accessible by the port corresponding to the CPU, and the execution target software is started after notifying the port.
  • the multi-core processor system may select any one port and release the connection of the port that was not selected. Subsequently, the multi-core processor system may aggregate the physical address space of a specific port and set the aggregated physical address space as the physical address space of the selected port.
  • the multi-core processor system may notify the execution target software of the execution start after completing the address conversion notification to the specific port.
  • the parallel software P1 is assigned to the CPUs # 1 to # 3
  • the parallel software P2 is assigned to the CPUs # 2 to # 4. Even when mixed, parallel software should be executed at the same timing in each core.
  • an address conversion notification is sent to a specific port of the memory controller, and the parallel software is executed after the notification is completed, so that it can operate normally.
  • the number of cores and the number of ports may be equal.
  • the CPU and the port have a one-to-one correspondence, and access contention between the CPUs can be avoided. Even when the number of ports is smaller than the number of CPUs, access contention among some CPUs can be avoided.
  • CPU # 1 has port # 1
  • CPU # 2 has port # 2
  • CPU # 3 and CPU # 4 have port # 3.
  • the software assigned by CPU # 3 and CPU # 4 is software that frequently accesses each other's memory, the same logical address space may be used for one port.
  • the memory controller control method described in the present embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
  • the memory controller control program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer.
  • the memory controller control program may be distributed through a network such as the Internet.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

 マルチコアプロセッサシステム(100)は、複数のポートを備えたメモリコントローラ(202)と、ポートごとに分割された物理アドレス空間を備えた共用メモリ(201)を備える。CPU(#1)は、取得部(402)によって並列度情報テーブル(401)から、マルチコアプロセッサシステム(100)にて実行される実行対象ソフトウェアを割り当てるCPU数を取得する。取得後、CPU(#1)は、決定部(403)によって実行対象ソフトウェアを割り当てるCPUを決定し、設定部(404)によって実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間をCPUごとに設定する。設定後、CPU(#1)は、アドレス変換器(204)にアドレスを通知し、実行対象ソフトウェアに実行開始を通知する。

Description

マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム
 本発明は、メモリコントローラを制御するマルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラムに関する。
 従来から、複数個のCPU(Central Processing Unit)からアクセスされるメモリとして、データを記憶可能な複数のメモリバンクと、データの入出力を可能とする複数の入出力ポートを備えるマルチポートメモリの技術が知られている。また、CPUがメモリのデータを読み書きする際にメモリを制御する装置として、メモリコントローラを用いる技術も知られている。メモリコントローラの機能として、メモリとバスの間、またはCPUとバスの間に、バッファ機構を設け、バッファにデータを一時保留するほか、分岐先のポートへの自動分岐を行う機能を持つという技術が開示されている(たとえば、下記特許文献1を参照。)。
 また、メモリへのリクエストとレスポンスの経路を分離し、CPUからのリクエストではマルチポートメモリを制御するメモリコントローラが即座にダミーレスポンスを返す機構により、CPUは次の処理に即座に移行できるといった技術が開示されている(たとえば、下記特許文献2を参照。)。
 また、マルチポートを使用する技術として、アドレス空間を機能種別ごとに分割し、分割されたアドレス空間ごとにポートを用意することで、複数の機能を同時に実行し、高速に処理を実行できるという技術が開示されている(たとえば、下記特許文献3を参照。)。
特表平11-510285号公報 特開2008-117109号公報 特開2003-114797号公報
 しかしながら、上述した従来技術において、特許文献1にかかる技術では、メモリとバッファ間、バスとバッファ間を高クロックにすることで、経路上のレイテンシを最小にすることができる。しかし、特許文献1にかかる技術は、高クロックにすることで、消費電力が増加するという問題があった。また、特許文献2にかかる技術では、リクエストとレスポンスの経路を分離してもアクセス競合は発生し続けるという問題があった。また、特許文献1にかかる技術と同様に、バスからバッファの間が高クロックとなるため、消費電力が増加するという問題があった。
 また、特許文献3にかかる技術では、機能が異なる2つのソフトウェアが同一のアドレス空間にアクセスする場合に、アクセス競合を起こすという問題があった。また、機能種別ごとにポートを用意する必要があり、機能種別が増加するにつれ、ポート数も増加することになり、消費電力が増加するという問題があった。
 本発明は、上述した従来技術による問題点を解消するため、アクセス競合を回避できるマルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラムを提供することを目的とする。
 本実施例の一実施態様によると、複数のコアと、コアに対応する複数のポートを備えたメモリコントローラと、ポートごとに分割された物理アドレス空間を備えた共用メモリと、ソフトウェアごとにソフトウェアを割り当てるコアの数を記憶するデータベースから、実行対象ソフトウェアを割り当てるコアの数を取得し、取得された実行対象ソフトウェアを割り当てるコアの数と前記複数のコアの使用状況とに基づいて、実行対象ソフトウェアを割り当てるコアを決定し、複数のポートのうち決定されたコアに対応する特定のポートがアクセス可能な物理アドレス空間の中から、実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を決定されたコアごとに設定し、設定された物理アドレス空間と設定された物理アドレス空間に対応する論理アドレス空間とを特定のポートに通知し、特定のポートに通知した後に、実行対象ソフトウェアに実行開始を通知するマルチコアプロセッサシステムを提供する。
 本マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラムによれば、CPUがアクセスするアドレス範囲と他のCPUがアクセスするアドレス範囲とが異なり、アクセス競合を回避できるという効果を奏する。
実施の形態にかかるマルチコアプロセッサシステムのハードウェアを示すブロック図である。 マルチコアプロセッサシステム100のハードウェアの一部とソフトウェアを示すブロック図である。 物理アドレス空間の分割と論理アドレス空間の結合の例を示す説明図である。 マルチコアプロセッサシステム100内の各部の関係を説明するブロック図である。 ポート接続器203のブロック図である。 アドレス変換器204と設定の一例を示す説明図である。 並列度情報テーブル401の記憶内容の一例を示す説明図である。 分散ソフトウェアと並列ソフトウェアが混載した状態を示す説明図である。 図8におけるCPUのディスパッチ周期パターンを示す説明図である。 タイミングt1におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。 タイミングt1におけるメモリコントローラ202の状態を示す説明図である。 タイミングt2におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。 タイミングt2におけるメモリコントローラ202の状態を示す説明図である。 タイミングt3におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。 タイミングt3におけるメモリコントローラ202の状態を示す説明図である。 スケジューリング処理を示すフローチャートである。 アドレス空間変換処理を示すフローチャートである。
 以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラムの好適な実施の形態を詳細に説明する。
(マルチコアプロセッサシステム)
 図1は、実施の形態にかかるマルチコアプロセッサシステムのハードウェアを示すブロック図である。図1において、マルチコアプロセッサシステム100は、CPUを複数搭載するCPUs101と、ROM(Read‐Only Memory)102と、RAM(Random Access Memory)103と、を備えている。また、マルチコアプロセッサシステム100は、フラッシュROM104と、フラッシュROMコントローラ105と、フラッシュROM106と、を備えている。また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ107と、I/F(Interface)108と、キーボード109と、を備えている。また、各部はバス110によってそれぞれ接続されている。
 ここで、CPUs101は、マルチコアプロセッサシステム100の全体の制御を司る。CPUs101は、シングルコアのプロセッサを並列して接続したすべてのCPUを指している。CPUs101の詳細は、図2にて後述する。また、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。本実施形態では、CPUの接続方法によらず、メモリを共有する、すなわちTCMP(Tightly Coupled Multi Processor)のアーキテクチャーを前提とする。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
 ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPUs101のワークエリアとして使用される。フラッシュROM104は、OS(Operating System)などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、I/F108によって新しいOSを受信し、フラッシュROM104に格納されている古いOSを、受信した新しいOSに更新する。
 フラッシュROMコントローラ105は、CPUs101の制御に従ってフラッシュROM106に対するデータのリード/ライトを制御する。フラッシュROM106は、フラッシュROMコントローラ105の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがI/F108を通して取得した画像データ、映像データなどである。フラッシュROM106は、たとえば、メモリカード、SDカードなどを採用することができる。
 ディスプレイ107は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ107は、たとえば、TFT液晶ディスプレイなどを採用することができる。
 I/F108は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク111に接続され、ネットワーク111を介して他の装置に接続される。そして、I/F108は、ネットワーク111と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F108には、たとえばモデムやLANアダプタなどを採用することができる。
 キーボード109は、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、キーボード109は、タッチパネル式の入力パッドやテンキーなどであってもよい。
 図2は、マルチコアプロセッサシステム100のハードウェアの一部とソフトウェアを示すブロック図である。図2で示されるハードウェアは、共用メモリ201と、メモリコントローラ202と、CPUs101に含まれるCPU#1~CPU#4とである。メモリコントローラ202と、CPU#1~CPU#4はバス110によって接続されている。また、以下に登場する符号のうち、#1~#4のいずれかが付属する符号は、それぞれCPU#1~CPU#4に対応する符号であることを意味する。
 共用メモリ201は、メモリコントローラ202を通してアクセス可能な記憶領域である。記憶領域とは、たとえば、ROM102、RAM103、フラッシュROM104である。また、共用メモリ201は、アクセス可能な回線であるポート#1~ポート#4を持つ。CPU#1~CPU#4は、ポート#1~ポート#4のいずれのポートにもアクセスすることが可能である。また、本実施の形態では、CPU#1はポート#1を制御し、CPU#2はポート#2を制御し、CPU#3はポート#3を制御し、CPU#4はポート#4を制御する。
 また、共用メモリ201は、ポート#1~ポート#4ごとに物理アドレス空間を分断した共用メモリブロック#1~共用メモリブロック#4に分けられる。共用メモリブロック#1~共用メモリブロック#4は、物理アドレス空間が連続していてもよいし、離れていてもよい。また、共用メモリ201で1つのメモリバンクとして存在してもよいし、1つの共用メモリブロックが1つのメモリバンクとして存在してもよい。
 また、初期状態としてポート#1は共用メモリブロック#1にアクセス可能とする。同様に、ポート#2~ポート#4も、それぞれ共用メモリブロック#2~共用メモリブロック#4にアクセス可能とする。しかし、ポートの設定により、1つのポートは複数の共用メモリブロックにアクセス可能としてもよい。たとえば、ポート#1の設定を変更することにより、ポート#1は共用メモリブロック#1と共用メモリブロック#2にアクセス可能としてもよい。
 メモリコントローラ202は、共用メモリ201へのデータの読み出し、書き込みを制御する機能を有する。本実施の形態では、メモリコントローラ202は、共用メモリ201にアクセスするポート#1~ポート#4の設定を変更することで、CPU#1~CPU#4の共用メモリ201へのアクセスを制御する。
 ポート接続器203は、メモリコントローラ202の内部に存在し、ポート#1~ポート#4の接続、または非接続を行う。図2の例では、ポート接続器203は、バス110側のポート#3を非接続としている。アドレス変換器204は、メモリコントローラ202の内部に存在し、ポート#1~ポート#4のアドレス変換を行う。変換方法の一例は、図3にて後述する。CPU#1~CPU#4には、キャッシュメモリ#1~キャッシュメモリ#4が搭載されている。
 図2で示されるソフトウェアは、スケジューラ#1~スケジューラ#4、ソフトウェア205-1~ソフトウェア205-4である。また、ソフトウェアがアクセスする記憶領域として、キャッシュメモリブロック206-1~キャッシュメモリブロック206-4と共用メモリブロック207-1~共用メモリブロック207-4が存在する。
 スケジューラ#1~スケジューラ#4は、OS、またはユーザから起動要求が行われたソフトウェアを、CPU#1~CPU#4の使用状況から、どのCPUで実行するかを決定する。たとえば、スケジューラ#1~スケジューラ#4は、CPU#1~CPU#4のうち最も使用されていないCPUを起動要求が行われたCPUとして決定する。また、スケジューラ#1~スケジューラ#4は、起動要求が行われたソフトウェアに基づいて、ポート接続器203とアドレス変換器204に設定を通知する。
 ソフトウェア205-1は、CPU#1で実行されている。CPU#1は、ソフトウェア205-1によってキャッシュメモリブロック206-1にアクセスするほか、キャッシュメモリブロック206-1に必要なデータが存在しない場合に、ポート#1を経由して共用メモリブロック207-1にアクセスする。
 ソフトウェア205-2は、CPU#2とCPU#3で実行されている。CPU#2は、ソフトウェア205-2によってキャッシュメモリブロック206-2-1にアクセスするほか、キャッシュメモリブロック206-2-1に必要なデータが存在しない場合、ポート#2を経由して共用メモリブロック207-2にアクセスする。CPU#3も、ソフトウェア205-2によってキャッシュメモリブロック206-2-2にアクセスするほか、キャッシュメモリブロック206-2-2に必要なデータが存在しない場合、ポート#2を経由して共用メモリブロック207-2にアクセスする。
 ソフトウェア205-3とソフトウェア205-4は、CPU#4で実行されている。CPU#4は、ソフトウェア205-3とソフトウェア205-4によってそれぞれのソフトウェアに対応するキャッシュメモリブロック206-3、キャッシュメモリブロック206-4にアクセスする。キャッシュメモリブロックに必要なデータが存在しない場合、CPU#4は、ポート#4を経由して共用メモリブロック207-3、共用メモリブロック207-4にアクセスする。
 図3は、物理アドレス空間の分割と論理アドレス空間の結合の例を示す説明図である。ハードウェアとして、共用メモリ201を含む共用メモリブロック#1~共用メモリブロック#4の物理アドレス空間は、次のように設定する。共用メモリブロック#1の物理アドレス空間は、0x0000~0x00ffとする。同様に、共用メモリブロック#2の物理アドレス空間は、0x1000~0x10ffとする。共用メモリブロック#3の物理アドレス空間は、0x2000~0x20ffとする。共用メモリブロック#4の物理アドレス空間は、0x3000~0x30ffとする。
 前述の状態で、ソフトウェア205-1によってアクセスされる論理アドレス空間が、0x0000~0x00ffである場合を想定する。CPU#1は、ポート#1にアクセスするため、ポート接続器203によってポート#1を接続状態にする。また、CPU#1は、論理アドレス空間と共用メモリブロック#1の物理アドレス空間とが等しいため、アドレス変換器204をアドレススルーに設定する。アドレススルーの設定とは、論理アドレスを変換せずに物理アドレスとし、共用メモリ201にアクセスする設定である。
 次に、ソフトウェア205-2によってアクセスされる論理アドレス空間が、0x0000~0x01ffである場合を想定する。CPU#2で実行されるソフトウェア205-2のマスタスレッドも、論理アドレスとして0x0000~0x01ffにアクセスすることを想定する。CPU#2は、ポート#2にアクセスするため、ポート接続器203によってポート#2を接続状態にする。
 また、CPU#2は、アドレス変換器204によって、論理アドレス空間と、共用メモリブロック#2および共用メモリブロック#3の物理アドレス空間と、を変換する通知をする。通知を受けることによりポート#2は、論理アドレス0x0000~0x00ffを物理アドレス0x1000~0x10ffに変換し、論理アドレス0x0100~0x01ffを物理アドレス0x2000~0x20ffに変換する。たとえば、CPU#2が0x0010である論理アドレスにアクセスすると、アドレス変換器204によって、0x1010である物理アドレスに変換される。これにより、アドレス変換器204は、連続していなかった物理アドレス空間を、連続した論理空間としてソフトウェアに提供することができる。
 同様に、CPU#3で実行されるソフトウェア205-2のスレーブスレッドは、論理アドレスとして0x0000~0x01ffにアクセスすることを想定する。CPU#3は、ポート#2にアクセスし、ポート#3にはアクセスしないため、ポート接続器203によってポート#3を非接続状態にする。
 また、ソフトウェア205-3によってアクセスされる論理アドレス空間が、0x0000~0x00ffである場合を想定する。CPU#4は、ポート#4にアクセスするため、ポート接続器203によってポート#4を接続状態にする。
 また、CPU#4は、アドレス変換器204によって、論理アドレス空間と共用メモリブロック#4の物理アドレス空間を変換する通知をする。通知を受けることによりポート#4は、論理アドレス0x0000~0x00ffを物理アドレス0x3000~0x30ffに変換する。また、論理アドレス0x0000~0x00ffを物理アドレス0x3000~0x30ffに変換する状態を初期の変換状態とし、CPU#4がアドレススルーを設定した場合に、アドレス変換器204は、初期の変換状態でアドレスを変換するようにしてもよい。
(マルチコアプロセッサシステム100)
 次に、マルチコアプロセッサシステム100の動作について説明する。図4は、マルチコアプロセッサシステム100内の各部の関係を説明するブロック図である。マルチコアプロセッサシステム100は、たとえば、取得部402と、決定部403と、設定部404と、アドレス通知部405と、選択部406と、解除通知部407と、集約部408と、検出部409と、実行開始通知部410と、を含む。制御部となる取得部402~実行開始通知部410は、記憶装置に記憶されたプログラムをCPUs101が実行する。記憶装置とは、たとえば、図1に示したROM102、RAM103、フラッシュROM104などである。または、I/F108を経由して他のCPUが実行してもよい。
 また、マルチコアプロセッサシステム100は、複数のコアと、コアに対応する複数のポートを備えたメモリコントローラ202と、ポートごとに分割された物理アドレス空間を備えた共用メモリ201を備える。複数のコアとは、CPUs101に属するすべてのCPUであってもよいし、CPUs101のうち、本実施の形態を適用する一部のCPUであってもよい。コアに対応する複数のポートとは、CPUがアクセスする特定のポートであり、たとえば、CPU#1であればポート#1、CPU#2であればポート#2といったように、CPUごとに対応したポートが決定している。図4ではCPU数とポート数が一致しているためCPUとポートが1対1対応となるが、CPU数に比べポート数が少ない場合は、異なるCPUに対応するポートが一致していてもよい。
 また各ポートは、共用メモリ201の物理アドレス空間を分割した物理アドレス空間にアクセス可能であると設定されている。たとえば、共用メモリ201の物理アドレス空間が0x0000~0x01ffであった場合に、ポート#1は0x0000~0x00ffの物理アドレス空間にアクセス可能とし、ポート#2は0x0100~0x01ffの物理アドレス空間にアクセス可能とする。分割方法は、前述のように物理アドレス空間をポートごとに均等に分割してもよいし、不均等に分割してもよい。
 マルチコアプロセッサシステム100は、ソフトウェアごとに対象のソフトウェアを割り当てるコアの数を記憶するデータベースとして、並列度情報テーブル401にアクセス可能である。たとえば、ソフトウェア205-1は、CPU1つを割り当てる分散ソフトウェアとして、ソフトウェア205-2は、CPU2つを割り当てる並列ソフトウェアとして登録されている。並列度情報テーブル401の詳細は、図7にて後述する。
 取得部402は、並列度情報テーブル401から、実行対象ソフトウェアを割り当てるコアの数を取得する機能を有する。実行対象ソフトウェアとは、ユーザ、またはOSによって起動要求を受けたソフトウェアか、または、スケジューラによって実行後にCPUの割り当てを解除された後に再びスケジューラにより実行されようとしているソフトウェアである。たとえば、ソフトウェア205-2を実行対象とする場合、取得部402は、並列度情報テーブル401から割り当てるCPU数が2つであることを取得する。なお、取得されたデータは、RAM103、フラッシュROM104などの記憶領域に記憶される。
 決定部403は、取得部402によって取得された実行対象ソフトウェアを割り当てるコアの数と複数のコアの使用状況とに基づいて、実行対象ソフトウェアを割り当てるコアを決定する機能を有する。
 決定部403の具体例として、たとえば、ソフトウェア205-2を実行対象ソフトウェアとし、取得部402によって割り当てるCPU数が2つであると取得できた場合を想定する。決定部403は、CPUs101の中から、低負荷のCPUとしてCPU#2とCPU#3を、ソフトウェア205-2を割り当てるCPUとして決定する。なお、決定されたCPUの情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
 設定部404は、複数のポートのうち決定部403によって決定されたコアに対応する特定のポートがアクセス可能な物理アドレス空間を取得する。取得された物理アドレス空間の中から、設定部404は、実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を決定されたコアごとに設定する機能を有する。また、設定部404は、集約部408によって集約された物理アドレス空間を、選択部406によって選択されたポートが新たにアクセス可能な物理アドレス空間に設定してもよい。
 たとえば、決定されたコアがCPU#2とCPU#3であり、前述のCPUに対応するポートがポート#2、ポート#3であることを想定する。続けて、ポート#2が共用メモリ201にアクセス可能な物理アドレス空間が0x1000~0x10ffであり、ポート#3が共用メモリ201にアクセス可能な物理アドレス空間が0x2000~0x20ffであることを想定する。
 この時、設定部404は、物理アドレス空間0x1000~0x10ff、0x2000~0x20ffから、実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を決定されたCPUごとに設定する。規定された論理アドレス空間が0x0000~0x01ffであれば、CPU#2がポート#2にアクセスする際に、論理アドレス空間0x0000~0x00ffを物理アドレス空間0x1000~0x10ffに対応づけて設定する。同様に、CPU#3がポート#3にアクセスする際に、論理アドレス空間0x0100~0x01ffを物理アドレス空間0x2000~0x20ffに対応づけて設定する。なお、設定されたアドレス対応情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
 アドレス通知部405は、設定部404によって設定された物理アドレス空間と設定された物理アドレス空間に対応する論理アドレス空間とを特定のポートに通知する機能を有する。また、アドレス通知部405は、設定部404によって設定された新たにアクセス可能な物理アドレス空間を選択部406によって選択されたポートに通知してもよい。
 たとえば、CPU#2がポート#2にアクセスする際に論理アドレス空間0x0000~0x00ffを物理アドレス空間0x0100~0x01ffに対応づけて設定された場合を想定する。この時アドレス通知部405は、CPU#2が設定したアドレス対応情報をアドレス変換器204のポート#2に通知する。また、集約部408によって集約された物理アドレス空間が、0x0000~0x01ffであり、選択部406によってポート#2が選択された場合を想定する。この時アドレス通知部405は、ポート#2が新たにアクセス可能な物理アドレス空間として、0x0000~0x01ffをポート#2に通知する。
 また、アドレス対応情報として、ある程度範囲が決められている場合は、設定可能なパターンを用意してもよい。たとえば、ポートが4つ存在し、共用メモリ201の物理アドレス空間が4つに分割される場合、分割された物理アドレス空間とレジスタ内のビット列を対応づけてもよい。また、論理アドレス空間は、0x0000から開始しアドレス空間が連続となるように対応づけてもよい。
 これにより、レジスタの特定のビットを“1”にすることで、物理アドレスと論理アドレスを対応づけることができる。このように、アドレス通知部405は、物理アドレス空間の上限値と下限値、論理アドレスの上限値と下限値を通知するようにしてもよいし、設定可能なパターンを用意することで、通知処理を簡略化してもよい。
 前述した、共用メモリ201の物理アドレス空間が4つに分割された場合を想定する。このとき、設定部404が物理アドレス空間0x0200~0x02ffに対応するレジスタのビットを“1”にし、物理アドレス空間0x0200~0x02ffと論理アドレス空間0x0000~0x00ffを対応づけて設定する。そしてアドレス通知部405は、設定されたレジスタの値を通知してもよい。また、集約部408によって、4つに分割された物理アドレス空間のうち、先頭と3番目の物理アドレス空間が集約された場合、アドレス通知手段としては、対応するビット“0b1010”を通知してもよい。なお、通知したアドレス対応情報は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
 選択部406は、決定部403によって決定されたコアに対応する特定のポートが複数存在する場合、特定のポートのうち、任意のポートを選択する機能を有する。たとえば、決定部403によってCPU#2、CPU#3が決定され、対応するポートがポート#2、ポート#3というように複数存在した場合に、任意のポートとしてポート#2を選択する。
 ポートの選択基準はどのように行ってもよいが、たとえば、実行対象ソフトウェアのマスタスレッドを実行しているCPUに対応しているポートを選択してもよい。また、複数存在するポートの性能が非対称であり、複数のポートのうち、特定のポートの能力が他のポートの能力が上回っているなら、他より性能が上回っているポートを選択してもよい。なお、選択されたポートの情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
 解除通知部407は、特定のポートのうち、選択部406によって選択されたポートを除く残余のポートの接続を解除する通知を残余のポートに通知する機能を有する。たとえば、特定のポートがポート#2、ポート#3となり、選択部406によってポート#2が選択された場合、残余となるポート#3に対して、ポートの接続を解除する通知をポート接続器203のポート#3に通知する。なお、通知した接続解除情報は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
 集約部408は、複数存在する特定のポートがアクセス可能な物理アドレス空間を集約する機能を有する。たとえば、特定のポートがポート#2、ポート#3であり、ポート#2、ポート#3の物理アドレス空間がそれぞれ、0x0000~0x00ff、0x0100~0x01ffである場合を想定する。前述の状態で、集約部408は、集約した物理アドレス空間を0x0000~0x01ffとする。なお、集約された物理アドレス情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
 検出部409は、決定部403によって決定されたコアが複数存在する場合、実行対象ソフトウェアを決定されたコア間で同時に実行する開始時刻を検出する機能を有する。また、検出部409は、アドレス通知部405によって特定のポートへの通知を完了した時刻を開始時刻として検出する。たとえば、決定されたCPUがCPU#2、CPU#3であり、特定のポートがポート#2であった場合、CPU#2またはCPU#3がポート#2にアドレス通知部405の実行を完了した時刻を実行対象ソフトウェアの開始時刻として検出することができる。なお、検出が行われたことを示す情報はRAM103、フラッシュROM104などの記憶領域に記憶される。
 実行開始通知部410は、アドレス通知部405によって特定のポートに通知した後に、実行対象ソフトウェアに実行開始を通知する機能を有する。また、実行開始通知部410は、検出部409によって開始時刻が検出された後に、実行対象ソフトウェアに実行開始を通知してもよい。
 たとえば、CPU#2がポート#2にアドレス通知を行った後に、CPU#2は、実行対象ソフトウェアに実行開始を通知することができる。また、決定された複数のCPUがCPU#2、CPU#3である場合に、検出部409によって開始時刻が検出された後に、CPU#2、CPU#3が実行対象ソフトウェアに実行開始を通知することができる。なお、実行開始通知は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
 図5は、ポート接続器203のブロック図である。ポート接続器203は、メモリコントローラ202の一形態であり、バス110とアドレス変換器204の間に存在し、各ポートの接続、非接続を制御する。各ポートの接続、非接続は、CPU#1~CPU#4によってアクセスされる設定レジスタ501によって制御される。設定レジスタ501は、設定レジスタ501#1~設定レジスタ501#4を含み、各ポートの接続、非接続を制御する。
 たとえば、設定レジスタ501#1は、スイッチ#1を制御し、ポート#1の接続、非接続を設定する。設定レジスタ501#1は、設定値が“1”であればポート#1を接続にし、設定値が“0”であればポート#1を非接続にする。他の設定レジスタも同様に、設定レジスタ501#2~設定レジスタ501#4が、それぞれポート#2~ポート#4の接続、非接続を行う。非接続となったポートは、ポート内の結線に電力が供給されなくなる。結果、ポートが不要の場合にポートを非接続とすることで、省電力効果を得ることができる。
 図6は、アドレス変換器204と設定の一例を示す説明図である。符号601で示す説明図は、アドレス変換器204を示す。アドレス変換器204は、メモリコントローラ202の一形態であり、ポート接続器203と共用メモリ201の間に存在し、各ポートの論理アドレスと物理アドレスを変換する。各ポートの論理アドレスと物理アドレスの変換は、CPU#1~CPU#4によってアクセスされる変換レジスタ603#1~変換レジスタ603#4によって制御される。
 一実施形態として変換レジスタ603#1は、TLB(Translation Lookaside Buffer)#1を制御する。制御されたTLB#1は、ポート#1の論理アドレス空間と物理アドレス空間を変換する。符号602で示す説明図は、変換レジスタ603#1とTLB#1との関係の一例を示す説明図である。変換レジスタ603#1の設定に応じて、TLB#1に設定される内容が変化する。たとえば、CPU#1が、変換レジスタ603#1を“0b0000”に設定した場合、TLB#1の設定は設定なしとなり、アドレススルーの設定となる。
 また、CPU#1が、変換レジスタ603#1を“0b1000”に設定した場合、TLB#1の設定がTLB#1設定604-1となる。TLB#1設定604-1は、論理アドレス空間0x0000~0x00ffを、共用メモリブロック#1の物理アドレス空間に指定している。
 また、CPU#1が、変換レジスタ603#1を“0b1100”に設定した場合、TLB#1の設定がTLB#1設定604-2となる。TLB#1設定604-2は、論理アドレス空間0x0000~0x01ffを、共用メモリブロック#1と共用メモリブロック#2の物理アドレス空間に指定している。このように、ポート#1が共用メモリブロック#1に、ポート#2が共用メモリブロック#2にアクセス可能であった状態から、ポート#1にポート#1とポート#2のアクセス可能な物理アドレス空間を集約することになる。
 また、CPU#1が、変換レジスタ603#1を“0b1010”に設定した場合、TLB#1の設定がTLB#1設定604-3となる。TLB#1設定604-3は、論理アドレス空間0x0000~0x01ffを、共用メモリブロック#1と共用メモリブロック#3の物理アドレスに指定している。このように、ポート#1が共用メモリブロック#1に、ポート#3が共用メモリブロック#3にアクセス可能であった状態から、ポート#1にポート#1とポート#3のアクセス可能な物理アドレス空間を集約することになる。
 また、CPU#1が、変換レジスタ603#1を“0b1110”に設定した場合、TLB#1の設定がTLB#1設定604-4となる。TLB#1設定604-4は、論理アドレス空間0x0000~0x02ffを、共用メモリブロック#1~共用メモリブロック#3の物理アドレスに指定している。このように、ポート#1~ポート#3がそれぞれ共用メモリブロック#1~共用メモリブロック#3にアクセス可能であった状態から、ポート#1にポート#1~ポート#3のアクセス可能な物理アドレス空間を集約することになる。
 同様にTLB#2~TLB#4も、変換レジスタ603#2~変換レジスタ603#4によって、アドレス変換方法が指定される。また、本実施の形態では、変換レジスタ603によってTLBの内容を指定していたが、変換レジスタ603にて直接TLBの内容を記述してもよい。
 図7は、並列度情報テーブル401の記憶内容の一例を示す説明図である。並列度情報テーブル401は、たとえば、ソフトウェア名称、並列度情報、並列数Pという3つのフィールドを含む。ソフトウェア名称フィールドは、ソフトウェアの名称を格納する。たとえば、ソフトウェアに対応するプロセスの開始アドレスが設定されており、CPUは、プロセスの開始アドレスを参照して処理を実行することができる。
 並列度情報フィールドは、各CPUが分散されてソフトウェアを処理するか、複数のCPUが並列に動作してソフトウェアを処理するかを示す識別子を格納する。格納される識別子は、“分散”と“並列”である。“分散”識別子は、名称フィールドに格納されたソフトウェアが1つのCPUで実行される分散ソフトウェアであることを示す。“並列”識別子は、名称フィールドに格納されたソフトウェアが2つ以上のCPUで実行される並列ソフトウェアであることを示す。並列数Pフィールドは、名称フィールドに格納されたソフトウェアが実行される際のCPU数を示す。たとえば、UI処理は、分散ソフトウェアであり、1つのCPUで実行される。Webブラウザは、並列ソフトウェアであり、3つのCPUで実行される。
 図8は、分散ソフトウェアと並列ソフトウェアが混載した状態を示す説明図である。マルチコアプロセッサシステム100は、ソフトウェアとして、並列ソフトウェアP1、並列ソフトウェアP2、分散ソフトウェアS1~分散ソフトウェアS6を実行している。CPU#1~CPU#4は、メモリコントローラ202を通じて、共用メモリ201にアクセスする。
 次に各CPUのソフトウェア実行状態を説明する。CPU#1は、OS#1によって並列ソフトウェアP1のマスタスレッドP1と分散ソフトウェアS2と分散ソフトウェアS3を順次実行する。CPU#2は、OS#2によって並列ソフトウェアP1のスレーブスレッドP1-1と並列ソフトウェアP2のマスタスレッドP2と分散ソフトウェアS4を順次実行する。CPU#3は、OS#3によって並列ソフトウェアP1のスレーブスレッドP1-2と並列ソフトウェアP2のスレーブスレッドP2-1と分散ソフトウェアS5を順次実行する。CPU#4は、OS#4によって分散ソフトウェアS1と並列ソフトウェアP2のスレーブスレッドP2-2と分散ソフトウェアS6を順次実行する。
 図9は、図8におけるCPUのディスパッチ周期パターンを示す説明図である。CPU#1~CPU#4は、変換器設定処理によってメモリコントローラ202の設定を定期的にポート#1~ポート#4に通知する。変換器設定処理とは、ポート接続器203の設定レジスタ501の設定と、アドレス変換器204の変換レジスタ603の設定を行う処理である。
 たとえば、ポート#1では、変換器設定処理u#1-1によって分散ソフトウェアの設定を行うことができる。変換器設定処理u#1-1が実行されるタイミングで、ポート#2では変換器設定処理u#2-1によって、ポート#3では変換器設定処理u#3-1によって、ポート#4では変換器設定処理u#4-1によって、分散ソフトウェアの設定が行われる。設定処理の一例としては、ポート接続器203に行う接続設定、解除設定と、アドレス変換器204に行う論理単独空間設定、論理連続空間設定である。論理連続空間設定を行うことにより、複数のポートがアクセス可能な物理アドレス空間を、1つのポートがアクセス可能な物理アドレス空間に集約することになる。
 また、一定期間経過後、ポート#1~ポート#4は、変換器設定処理u#1-2~変換器設定処理u#4-2によって設定が更新される。一例として、ポート#1は、変換器設定処理u#1-2によって分散ソフトウェアの設定に更新される。ポート#2~ポート#4は変換器設定処理u#2-2~変換器設定処理u#4-2によって並列ソフトウェアP2の設定に更新される。この例において並列ソフトウェアP2の設定は同時に実行されるため、ポート#2~ポート#4を制御するCPUは、バリア同期コード903-1~バリア同期コード903-3を実行することができる。
 バリア同期コードとは、同期が必要なすべてのCPUの処理が終了するのを待つコードである。たとえば、本実施の形態では、ポート#2の制御をCPU#2が行い、ポート#3の制御をCPU#3が行い、ポート#4の制御をCPU#4が行う。よって、CPU#2が変換器設定処理U#2-2を行った後、CPU#2は、バリア同期コード903-1を実行し待機する。
 CPU#3、CPU#4も同様に、変換器設定処理を行った後、バリア同期コードを実行し待機する。CPU#2~CPU#4がバリア同期コードを実行した段階で、ソフトウェアを実行開始する開始時刻として検出し、待機していたCPUは復帰し、並列ソフトウェアP2を実行する。これにより、並列ソフトウェアP2のアクセスをCPU#2~CPU#4が同時に行うことができる。
 並列ソフトウェアP1との同期コード901は、並列ソフトウェアP1が連続する論理アドレス空間にアクセスするためのコードである。同期コード901は、たとえばタイミングt1では、変換器設定処理u#1-3~変換器設定処理u#3-3とバリア同期コード904-1~バリア同期コード904-3によって並列ソフトウェアP1の設定を行う。
 同様に、並列ソフトウェアP2との同期コード902は、並列ソフトウェアP2が連続する論理アドレス空間にアクセスするためのコードである。同期コード902は、たとえばタイミングt3では、変換器設定処理u#2-5~変換器設定処理u#4-5とバリア同期コード905-1~バリア同期コード905-3によって並列ソフトウェアP2の設定を行う。タイミングt1~タイミングt3における、マルチコアプロセッサシステム100でのソフトウェアの実行状態と、メモリコントローラ202の設定状態を、図10~図15にて示す。
 図10は、タイミングt1におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。タイミングt1におけるマルチコアプロセッサシステム100は、CPU#1~CPU#3にて、並列ソフトウェアP1を実行し、CPU#4にて分散ソフトウェアS1を実行する。また、メモリコントローラ202の設定状態としては、ポート#1がマスタポートとなり、CPU#1~CPU#3における並列ソフトウェアP1の実行により、ポート#1が共用メモリ201のアクセスを行う。また、ポート#2とポート#3は非接続状態である。ポート#4もマスタポートとなり、CPU#4における分散ソフトウェアS1の実行により、ポート#4が共用メモリ201のアクセスを行う。
 図11は、タイミングt1におけるメモリコントローラ202の状態を示す説明図である。符号1101で示す図は、ポート接続器203の状態と、アドレス変換器204の状態を示す。符号1102で示す表群は、TLB#1とTLB#4の設定状態を示す。ポート#1では、変換器設定処理u#1-3によって、設定レジスタ501-1に“1”が設定される。これによりポート#1は接続状態となる。続けてポート#1では、変換器設定処理u#1-3によって、変換レジスタ603#1を“0b1110”に設定することでTLB#1にTLB#1設定1103が設定される。これにより、ポート#1は、共用メモリブロック#1~共用メモリブロック#3にアクセスし、かつ、連続する論理アドレス空間0x0000~0x02ffを並列ソフトウェアP1に提供することができる。
 ポート#2では、変換器設定処理u#2-3によって、設定レジスタ501-2に“0”が設定される。これによりポート#2は非接続状態となる。同様に、ポート#3では、変換器設定処理u#3-3によって、設定レジスタ501-3に“0”が設定される。これによりポート#3も非接続状態となる。ポート#4では、変換器設定処理u#4-3によって、設定レジスタ501-4に“1”が設定される。これによりポート#4は接続状態となる。続けて、続けてポート#4では、変換器設定処理u#4-3によって、TLB#4にTLB#4設定1104が設定される。これにより、ポート#4は、共用メモリブロック#4にアクセスし、かつ、物理アドレス空間から変換された論理アドレス空間を分散ソフトウェアS1に提供することができる。
 図12は、タイミングt2におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。タイミングt2におけるマルチコアプロセッサシステム100は、CPU#1にて分散ソフトウェアS3を実行する。同様に、マルチコアプロセッサシステム100は、CPU#2にて分散ソフトウェアS4を、CPU#3にて分散ソフトウェアS5を、CPU#4にて分散ソフトウェアS6をそれぞれ実行する。また、メモリコントローラ202の設定状態としては、ポート#1~ポート#4がマスタポートとなり、共用メモリ201のアクセスを行う。
 図13は、タイミングt2におけるメモリコントローラ202の状態を示す説明図である。符号1301で示す図は、ポート接続器203の状態と、アドレス変換器204の状態を示す。符号1302で示す表群は、TLB#1~TLB#4の設定状態を示す。ポート#1では、変換器設定処理u#1-4によって、設定レジスタ501-1に“1”が設定される。これによりポート#1は接続状態となる。続けてポート#1では、変換器設定処理u#1-4によって、TLB#1にTLB#1設定1303が設定される。これにより、ポート#1は、共用メモリブロック201#1にアクセスし、かつ、物理アドレス空間から変換された論理アドレス空間を分散ソフトウェアS3に提供することができる。
 ポート#2~ポート#4も同様である。ポート#2は、変換器設定処理u#2-4によって接続状態となり、共用メモリブロック201#2にアクセスし、TLB#2にTLB#2設定1304が設定され、論理アドレス空間を分散ソフトウェアS4に提供する。ポート#3は、変換器設定処理u#3-4によって接続状態となり、共用メモリブロック201#3にアクセスし、TLB#3にTLB#3設定1305が設定され、論理アドレス空間を分散ソフトウェアS5に提供する。ポート#4は、変換器設定処理u#4-4によって接続状態となり、共用メモリブロック201#4にアクセスし、TLB#4にTLB#4設定1306が設定され、論理アドレス空間を分散ソフトウェアS6に提供する。
 図14は、タイミングt3におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。タイミングt3におけるマルチコアプロセッサシステム100は、CPU#1にて分散ソフトウェアS2を実行し、CPU#2~CPU#4にて、並列ソフトウェアP2を実行する。また、メモリコントローラ202の設定状態としては、ポート#1はマスタポートとなり、CPU#1における分散ソフトウェアS2の実行により、ポート#1が共用メモリ201のアクセスを行う。また、ポート#2もマスタポートとなり、CPU#2~CPU#4における並列ソフトウェアP2の実行により、ポート#2が共用メモリ201のアクセスを行う。また、ポート#3とポート#4は非接続状態である。
 図15は、タイミングt3におけるメモリコントローラ202の状態を示す説明図である。符号1501で示す図は、ポート接続器203の状態と、アドレス変換器204の状態を示す。符号1502で示す表群は、TLB#1とTLB#2の設定状態を示す。ポート#1では、変換器設定処理u#1-5によって、設定レジスタ501-1に“1”が設定される。これによりポート#1は接続状態となる。続けてポート#1では、変換器設定処理u#1-5によって、変換レジスタ603#1を“0b1000”に設定することでTLB#1にTLB#1設定1503が設定される。これにより、ポート#1は、共用メモリブロック201#1にアクセスし、物理アドレス空間から変換された論理アドレス空間を分散ソフトウェアS2に提供することができる。
 ポート#2では、変換器設定処理u#2-5によって、設定レジスタ501-2に“1”が設定される。これによりポート#2は接続状態となる。続けてポート#2では、変換器設定処理u#2-5によって、TLB#2にTLB#2設定1504が設定される。これにより、ポート#2は、共用メモリブロック201#2~共用メモリブロック201#4にアクセスし、かつ、連続する論理アドレス空間0x0000~0x02ffを並列ソフトウェアP2に提供することができる。
 ポート#3では、変換器設定処理u#3-5によって、設定レジスタ501-3に“0”が設定される。これによりポート#3は非接続状態となる。同様に、ポート#4では、変換器設定処理u#4-5によって、設定レジスタ501-4に“0”が設定される。これによりポート#4も非接続状態となる。
 図16は、スケジューリング処理を示すフローチャートである。スケジューリング処理は、ソフトウェアが起動されたときの機能としてスケジューラ#1~スケジューラ#4で実行される。ステップS1601~ステップS1604、ステップS1610、ステップS1611は、CPUs101のうち、特定のCPUで実行され、ステップS1605~ステップS1609は、ステップS1603で検出されたCPUで実行される。本実施の形態では、前述した特定のCPUがCPU#1であることを想定する。
 CPU#1は、対象のソフトウェアの起動要求を受ける(ステップS1601)。起動要求は、たとえば、ユーザがUIの操作によって発行される。続けて、CPU#1は、並列度情報テーブル401から、対象のソフトウェアの並列度情報と並列数Pを取得する(ステップS1602)。続けて、CPU#1は、低負荷のCPUを並列数P個検出する(ステップS1603)。
 たとえば、CPU#1は、スケジューラ#1~スケジューラ#4の情報より、CPUの使用状況に応じて負荷の低いCPUから、P個のCPUを検出することができる。CPUの使用状況とは、CPU使用率でもよいし、CPUのメモリ使用率でもよい。たとえば、P=2であり、CPUの使用状況の高い順が、CPU4、CPU3、CPU2、CPU1であった場合、CPU#1は、CPU2、CPU1を検出することができる。
 検出後、CPU#1は、検出されたCPU群のうち、先頭のCPUを選択する(ステップS1604)。選択されたCPUは、アドレス空間変換処理を実行する(ステップS1605)。アドレス空間変換処理の詳細は、図17にて後述する。処理後、選択されたCPUは、対象のソフトウェアの並列度情報が“並列”か否かを判断する(ステップS1606)。
 並列度情報が“分散”である場合(ステップS1606:No)、選択されたCPUは、ポート接続器203、アドレス変換器204を制御するドライバタスクを実行する(ステップS1608)。ドライバタスクの動作内容は、ステップS1605の処理にて設定されたポート接続器203、アドレス変換器204への設定と、バリア同期コードの実行を一定周期で行うタスクである。
 並列度情報が“並列”である場合(ステップS1606:Yes)、選択されたCPUは、続けて、選択されたCPUが対象のソフトウェアのメインスレッドを動作するCPUかを判断する(ステップS1607)。選択されたCPUがメインスレッドを実行するCPUである場合(ステップS1607:Yes)、選択されたCPUは、ステップS1608の処理に移行する。選択されたCPUがスレーブスレッドを実行するCPUである場合(ステップS1607:No)、またはステップS1608の処理終了後、選択されたCPUは、スケジューリング処理の結果に従ったディスパッチを行う(ステップS1609)。
 ステップS1609終了後、CPU#1は、選択されたCPUが検出されたCPU群の末尾のCPUであるかを判断する(ステップS1610)。末尾のCPUでない場合(ステップS1610:No)、CPU#1は、検出されたCPU群の、次のCPUを選択し(ステップS1611)、ステップS1605の処理に移行する。末尾のCPUである場合(ステップS1610:Yes)、CPU#1はスケジューリング処理を終了する。
 図17は、アドレス空間変換処理を示すフローチャートである。アドレス空間変換処理は、ステップS1604、またはステップS1611で選択されたCPUによって実行される。選択されたCPUは、並列数Pが1かを判断する(ステップS1701)。並列数Pが1である場合(ステップS1701:Yes)、選択されたCPUは、ポート接続器203接続設定(ステップS1702)と、アドレス変換器204論理単独空間設定(ステップS1703)を実行し、アドレス空間変換処理を終了する。
 ポート接続器203接続設定とは、選択されたCPUに対応するポートを接続状態にする処理である。たとえば、選択されたCPUがCPU#1であれば、CPU#1は、ポート#1の接続状態を制御する設定レジスタ501#1を“1”に設定することができる。アドレス変換器204論理単独空間設定とは、ソフトウェアの論理アドレス空間を、選択されたCPUに対応するポートの共用メモリブロック#1~共用メモリブロック#4のいずれか1つの物理アドレス空間に対応づける設定である。
 並列数Pが1でない場合(ステップS1701:No)、選択されたCPUは、選択されたCPUがメインスレッドを実行するCPUかを判断する(ステップS1704)。選択されたCPUがメインスレッドを実行するCPUである場合(ステップS1704:Yes)、選択されたCPUは、ポート接続器203接続設定(ステップS1705)と、アドレス変換器204論理連続空間設定(ステップS1706)を実行する。アドレス変換器204論理連続空間設定とは、ソフトウェアの論理アドレス空間を、選択されたCPUに対応するポートの共用メモリブロック#1~共用メモリブロック#4のうち2つ以上の共用メモリブロックの物理アドレス空間に集約して対応づける設定である。また、対応づけられた論理アドレスは連続空間となるように設定される。
 選択されたCPUがスレーブスレッドを実行するCPUである場合(ステップS1704:No)、選択されたCPUは、ポート接続器203解除設定を実行する(ステップS1707)。ポート接続器203解除設定とは、選択されたCPUに対応するポートを非接続状態にする処理である。また、ポート接続器203接続設定、ポート接続器203解除設定、アドレス変換器204論理単独空間設定、アドレス変換器204論理連続空間設定が、図9にて前述した変換器設定処理となる。
 ステップS1706、またはステップS1707の処理終了後、選択されたCPUは、スレッドディスパッチャに同時実行設定を行う(ステップS1708)。たとえば、対象となるソフトウェアを同時に実行するソフトウェアとして、選択されたCPUは、スレッドディスパッチャに対象となるソフトウェアを登録する。続けて、選択されたCPUは、バリア同期コードと周期タイミングを設定し(ステップS1709)、アドレス空間変換処理を終了する。バリア同期コードを並列ソフトウェアが実行される前に実行することで、並列ソフトウェアを実行するCPU群は、並列ソフトウェアを同時に実行する開始時刻を検出することができる。周期タイミングの設定とは、対象となるソフトウェアをCPU間で同じタイミングで割り当てるように設定することである。
 以上説明したように、マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラムによれば、ポートごとに物理アドレス空間を分割した状態にて、実行対象ソフトウェアを割り当てるCPUを決定する。続けて、CPUに対応したポートがアクセス可能な物理アドレス空間の中から、実行対象ソフトウェアで規定された論理アドレスを指定して、ポートに通知した後に、実行対象ソフトウェアを起動する。
 これにより、実行対象ソフトウェアを実行するCPUがアクセスするポートの物理アドレス空間と、他のCPUがアクセスするポートの物理アドレス空間が異なるため、アクセス競合を回避することができる。
 また、マルチコアプロセッサシステムは、実行対象ソフトウェアを割り当てるCPUに対応する特定のポートが複数存在する場合、任意の一つのポートを選択し、選択しなかったポートの接続を解除してもよい。続けて、マルチコアプロセッサシステムは、特定のポートの物理アドレス空間を集約し、集約した物理アドレス空間を選択したポートの物理アドレス空間に設定してもよい。
 これにより、ソフトウェア間でのアクセス競合を回避することができ、さらに、不要なポートを解除したことで省電力効果を得ることができる。また、複数のCPUを使用する実行対象ソフトウェアにて、マスタスレッドとスレーブスレッドでアクセスする論理アドレス空間が離れている場合には、物理アドレス空間の集約を行わなくてもよい。これにより、ソフトウェア内でのアクセス競合も回避することができる。
 また、マルチコアプロセッサシステムは、実行対象ソフトウェアを割り当てるCPUが複数存在する場合に、特定のポートへのアドレス変換通知を完了した後に、実行対象ソフトウェアに実行開始を通知してもよい。
 これにより、ソフトウェア間のアクセス競合を回避することができ、さらに、複数のCPUに割り当てられるソフトウェアを混載することができる。混載の具体例としては、図8で示したように、並列ソフトウェアP1がCPU#1~CPU#3に割り当てられ、並列ソフトウェアP2がCPU#2~CPU#4に割り当てられた状態である。混載された場合でも、並列ソフトウェアが各コアで同じタイミングに実行対象となるようにする。実行対象となった際には、メモリコントローラの特定のポートにアドレス変換通知を行い、通知完了後に並列ソフトウェアを実行することで、正常に動作することができる。
 また、マルチコアプロセッサシステムは、コアの数とポートの数が等しくてもよい。これにより、CPUとポートが1対1対応となり、CPU間にてアクセス競合を回避することができる。また、CPUの数よりポートの数が少ない場合にも、一部のCPU間でアクセス競合を避けることができる。
 たとえば、CPUを4つ備え、ポートを3つ備えるマルチコアプロセッサシステムにて、CPU#1にはポート#1、CPU#2にはポート#2、CPU#3とCPU#4にはポート#3が対応づけることができる。この場合、CPU#1と、CPU#2と、CPU#3またはCPU#4の間ではアクセス競合を避けることができる。また、CPU#3とCPU#4にて割り当てられるソフトウェアが、お互いのメモリにアクセスする頻度が高いソフトウェアであれば、1つのポートで同じ論理アドレス空間を使用してもよい。
 このように、依存関係が高いソフトウェアを割り当てる複数のCPUが決定されているならば、CPU数分ポートを用意し、決定されているCPUに対応するポートに関しては1つにまとめることで、ポート結線にかかるコストを抑えることができる。
 なお、本実施の形態で説明したメモリコントローラ制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本メモリコントローラ制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本メモリコントローラ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
 100 マルチコアプロセッサシステム
 #1~#4 CPU、ポート
 110 バス
 201 共用メモリ
 202 メモリコントローラ
 203 ポート接続器
 204 アドレス変換器
 401 並列度情報テーブル
 402 取得部
 403 決定部
 404 設定部
 405 アドレス通知部
 406 選択部
 407 解除通知部
 408 集約部
 409 検出部
 410 実行開始通知部

Claims (6)

  1.  複数のコアと、
     前記コアに対応する複数のポートを備えたメモリコントローラと、
     前記ポートごとに分割された物理アドレス空間を備えた共用メモリと、
     ソフトウェアごとに当該ソフトウェアを割り当てるコアの数を記憶するデータベースから、実行対象ソフトウェアを割り当てるコアの数を取得する取得手段と、
     前記取得手段によって取得された前記実行対象ソフトウェアを割り当てるコアの数と前記複数のコアの使用状況とに基づいて、前記実行対象ソフトウェアを割り当てるコアを決定する決定手段と、
     前記複数のポートのうち前記決定手段によって決定されたコアに対応する特定のポートがアクセス可能な物理アドレス空間の中から、前記実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を前記決定されたコアごとに設定する設定手段と、
     前記設定手段によって設定された物理アドレス空間と前記設定された物理アドレス空間に対応する論理アドレス空間とを前記特定のポートに通知するアドレス通知手段と、
     前記アドレス通知手段によって前記特定のポートに通知した後に、前記実行対象ソフトウェアに実行開始を通知する実行開始通知手段と、
     を備えることを特徴とするマルチコアプロセッサシステム。
  2.  前記決定手段によって決定されたコアに対応する特定のポートが複数存在する場合、前記特定のポートのうち、任意のポートを選択する選択手段と、
     前記特定のポートのうち、前記選択手段によって選択されたポートを除く残余のポートの接続を解除する通知を前記残余のポートに通知する解除通知手段と、
     複数存在する前記特定のポートがアクセス可能な物理アドレス空間を集約する集約手段と、をさらに備え、
     前記設定手段は、
     前記集約手段によって集約された物理アドレス空間を、前記選択されたポートが新たにアクセス可能な物理アドレス空間に設定し、
     前記アドレス通知手段は、
     前記設定手段によって設定された新たにアクセス可能な物理アドレス空間を前記選択されたポートに通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3.  前記決定手段によって決定されたコアが複数存在する場合、前記実行対象ソフトウェアを前記決定されたコア間で同時に実行する開始時刻を検出する検出手段をさらに備え、
     前記アドレス通知手段は、
     前記設定手段によって設定された物理アドレス空間と前記設定された物理アドレス空間に対応する論理アドレス空間とを前記特定のポートに通知し、
     前記検出手段は、
     前記アドレス通知手段によって前記特定のポートへの通知を完了した時刻を前記開始時刻として検出し、
     前記実行開始通知手段は、
     前記検出手段によって開始時刻が検出された後に、前記実行対象ソフトウェアに実行開始を通知することを特徴とする請求項2に記載のマルチコアプロセッサシステム。
  4.  前記コアの数と前記ポートの数とが等しいことを特徴とする請求項3に記載のマルチコアプロセッサシステム。
  5.  複数のコアのおのおのに対応する複数のポートのおのおのに分割された物理アドレス空間を備えた共用メモリを制御する前記複数のポートを備えたメモリコントローラの制御を前記複数のコアの中の特定のコアが、
     ソフトウェアごとに当該ソフトウェアを割り当てるコアの数を記憶するデータベースから、実行対象ソフトウェアを割り当てるコアの数を取得する取得工程と、
     前記取得工程によって取得された前記実行対象ソフトウェアを割り当てるコアの数と前記複数のコアの使用状況とに基づいて、前記実行対象ソフトウェアを割り当てるコアを決定する決定工程と、
     前記複数のポートのうち前記決定工程によって決定されたコアに対応する特定のポートがアクセス可能な物理アドレス空間の中から、前記実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を前記決定されたコアごとに設定する設定工程と、
     前記設定工程によって設定された物理アドレス空間と前記設定された物理アドレス空間に対応する論理アドレス空間とを前記特定のポートに通知するアドレス通知工程と、
     前記アドレス通知工程によって前記特定のポートに通知した後に、前記実行対象ソフトウェアに実行開始を通知する実行開始通知工程と、
     を実行することを特徴とするメモリコントローラ制御方法。
  6.  複数のコアのおのおのに対応する複数のポートのおのおのに分割された物理アドレス空間を備えた共用メモリを制御する前記複数のポートを備えたメモリコントローラの制御を前記複数のコアの中の特定のコアに、
     ソフトウェアごとに当該ソフトウェアを割り当てるコアの数を記憶するデータベースから、実行対象ソフトウェアを割り当てるコアの数を取得する取得工程と、
     前記取得工程によって取得された前記実行対象ソフトウェアを割り当てるコアの数と前記複数のコアの使用状況とに基づいて、前記実行対象ソフトウェアを割り当てるコアを決定する決定工程と、
     前記複数のポートのうち前記決定工程によって決定されたコアに対応する特定のポートがアクセス可能な物理アドレス空間の中から、前記実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を前記決定されたコアごとに設定する設定工程と、
     前記設定工程によって設定された物理アドレス空間と前記設定された物理アドレス空間に対応する論理アドレス空間とを前記特定のポートに通知するアドレス通知工程と、
     前記アドレス通知工程によって前記特定のポートに通知した後に、前記実行対象ソフトウェアに実行開始を通知する実行開始通知工程と、
     を実行させることを特徴とするメモリコントローラ制御プログラム。
PCT/JP2010/055289 2010-03-25 2010-03-25 マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム WO2011118013A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2012506730A JP5472447B2 (ja) 2010-03-25 2010-03-25 マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム
PCT/JP2010/055289 WO2011118013A1 (ja) 2010-03-25 2010-03-25 マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム
EP10848406.4A EP2551769A4 (en) 2010-03-25 2010-03-25 MULTI-C URS PROCESSOR SYSTEM, MEMORY CONTROLLER CONTROL METHOD, AND MEMORY CONTROLLER CONTROL PROGRAM
US13/623,399 US8990516B2 (en) 2010-03-25 2012-09-20 Multi-core shared memory system with memory port to memory space mapping
US14/609,630 US20150194198A1 (en) 2010-03-25 2015-01-30 Multi-core processor system, memory controller control method, and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/055289 WO2011118013A1 (ja) 2010-03-25 2010-03-25 マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/623,399 Continuation US8990516B2 (en) 2010-03-25 2012-09-20 Multi-core shared memory system with memory port to memory space mapping

Publications (1)

Publication Number Publication Date
WO2011118013A1 true WO2011118013A1 (ja) 2011-09-29

Family

ID=44672604

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/055289 WO2011118013A1 (ja) 2010-03-25 2010-03-25 マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム

Country Status (4)

Country Link
US (2) US8990516B2 (ja)
EP (1) EP2551769A4 (ja)
JP (1) JP5472447B2 (ja)
WO (1) WO2011118013A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168890A (zh) * 2017-04-01 2017-09-15 杭州联吉技术有限公司 一种内存池的管理方法和装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9894012B2 (en) * 2014-01-07 2018-02-13 Wind River Systems, Inc. Method and system to improve network connection locality on multicore systems
EP3111333B1 (en) * 2014-02-27 2022-03-30 Mercury Kingdom Assets Limited Thread and data assignment in multi-core processors
KR102438319B1 (ko) * 2018-02-07 2022-09-01 한국전자통신연구원 공통 메모리 인터페이스 장치 및 방법
US11347644B2 (en) * 2018-10-15 2022-05-31 Texas Instruments Incorporated Distributed error detection and correction with hamming code handoff

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11510285A (ja) 1995-08-07 1999-09-07 エム・エム・シー・ネットワークス・インコーポレイテッド メモリインタフェースユニット、共有メモリスイッチシステムおよび関連の方法
JP2003114797A (ja) 2001-10-04 2003-04-18 Matsushita Electric Ind Co Ltd データ処理装置
JP2003316752A (ja) * 2002-04-25 2003-11-07 Nec Corp マルチプロセッサシステムおよびリソース割り当て方法
JP2008117109A (ja) 2006-11-02 2008-05-22 Renesas Technology Corp 半導体集積回路装置
WO2009057208A1 (ja) * 2007-10-31 2009-05-07 Fujitsu Limited 資源割当プログラム、管理ノード、資源割当方法、および並列計算機システム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63225846A (ja) * 1987-03-16 1988-09-20 Yaskawa Electric Mfg Co Ltd アドレス変換機構付マルチポ−トメモリ
JPH08221319A (ja) * 1995-02-13 1996-08-30 Hitachi Ltd 半導体記憶装置
US6480941B1 (en) * 1999-02-23 2002-11-12 International Business Machines Corporation Secure partitioning of shared memory based multiprocessor system
JP2002007364A (ja) * 2000-06-22 2002-01-11 Fujitsu Ltd 並列計算機システムのジョブスケジューリングを行うスケジューリング装置
EP1384160A2 (en) * 2001-03-02 2004-01-28 Atsana Semiconductor Corp. Apparatus for variable word length computing in an array processor
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US20060282588A1 (en) * 2005-06-09 2006-12-14 Jonah Proujansky-Bell Processor system that allows for simultaneous access by multiple requestors to a target with multiple ports
KR20090008519A (ko) 2007-07-18 2009-01-22 삼성전자주식회사 공유 레지스터를 갖는 멀티패쓰 억세스블 반도체 메모리장치 및 그에 따른 공유 레지스터 운영방법
US8028113B2 (en) * 2008-08-15 2011-09-27 International Business Machines Corporation Methods and systems for deadlock-free allocation of memory
US8832173B2 (en) * 2009-01-20 2014-09-09 Sap Ag System and method of multithreaded processing across multiple servers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11510285A (ja) 1995-08-07 1999-09-07 エム・エム・シー・ネットワークス・インコーポレイテッド メモリインタフェースユニット、共有メモリスイッチシステムおよび関連の方法
JP2003114797A (ja) 2001-10-04 2003-04-18 Matsushita Electric Ind Co Ltd データ処理装置
JP2003316752A (ja) * 2002-04-25 2003-11-07 Nec Corp マルチプロセッサシステムおよびリソース割り当て方法
JP2008117109A (ja) 2006-11-02 2008-05-22 Renesas Technology Corp 半導体集積回路装置
WO2009057208A1 (ja) * 2007-10-31 2009-05-07 Fujitsu Limited 資源割当プログラム、管理ノード、資源割当方法、および並列計算機システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2551769A4

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168890A (zh) * 2017-04-01 2017-09-15 杭州联吉技术有限公司 一种内存池的管理方法和装置
CN107168890B (zh) * 2017-04-01 2021-03-19 杭州联吉技术有限公司 一种内存池的管理方法和装置

Also Published As

Publication number Publication date
JPWO2011118013A1 (ja) 2013-07-04
JP5472447B2 (ja) 2014-04-16
EP2551769A4 (en) 2013-11-27
US20150194198A1 (en) 2015-07-09
US8990516B2 (en) 2015-03-24
US20130019069A1 (en) 2013-01-17
EP2551769A1 (en) 2013-01-30

Similar Documents

Publication Publication Date Title
JP5780243B2 (ja) スケジューリング方法、およびマルチコアプロセッサシステム
JP4536618B2 (ja) リコンフィグ可能な集積回路装置
JP6475625B2 (ja) コア間通信装置及び方法
US6363453B1 (en) Parallel processor with redundancy of processor pairs
JP5461339B2 (ja) 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
JP5472447B2 (ja) マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム
JP2016541072A (ja) リソース処理方法、オペレーティング・システム、およびデバイス
JP2011517497A (ja) Pcieのsr−iov機能をレガシー機能として現出するように変換するシステム及び方法
CN111258935B (zh) 数据传输装置和方法
US20080022052A1 (en) Bus Coupled Multiprocessor
JPH0748197B2 (ja) データ・バスを確保する方法
US20190196978A1 (en) Single instruction multiple data page table walk scheduling at input output memory management unit
JP5817860B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
CN111258769B (zh) 数据传输装置和方法
KR100978083B1 (ko) 공유 메모리형 멀티 프로세서에 있어서의 절차 호출 방법 및 절차 호출 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체
JP2001236335A (ja) 分散メモリ型並列計算機及びそのデータ転送終了確認方法
WO2012127534A1 (ja) バリア同期方法、バリア同期装置及び演算処理装置
JP2021117577A (ja) 情報処理装置、情報処理方法およびプログラム
WO2011030498A1 (ja) データ処理装置及びデータ処理方法
JP3866873B2 (ja) 情報処理装置
JP3878097B2 (ja) バス制御方式及びコンピュータシステム
JPH0883248A (ja) 情報処理システム及びその方法
JP2006331452A (ja) バス制御方式及びコンピュータシステム
KR19980037089A (ko) 분산 처리 시스템에서의 작업 제어 장치 및 그 방법
JPS6375954A (ja) チヤネル制御方式

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10848406

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012506730

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2010848406

Country of ref document: EP