WO2014006722A1 - 半導体集積回路およびその制御方法 - Google Patents

半導体集積回路およびその制御方法 Download PDF

Info

Publication number
WO2014006722A1
WO2014006722A1 PCT/JP2012/067210 JP2012067210W WO2014006722A1 WO 2014006722 A1 WO2014006722 A1 WO 2014006722A1 JP 2012067210 W JP2012067210 W JP 2012067210W WO 2014006722 A1 WO2014006722 A1 WO 2014006722A1
Authority
WO
WIPO (PCT)
Prior art keywords
system bus
arithmetic processing
clock frequency
clock
semiconductor integrated
Prior art date
Application number
PCT/JP2012/067210
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 PCT/JP2012/067210 priority Critical patent/WO2014006722A1/ja
Priority to JP2014523499A priority patent/JPWO2014006722A1/ja
Priority to TW102118015A priority patent/TWI525443B/zh
Publication of WO2014006722A1 publication Critical patent/WO2014006722A1/ja
Priority to US14/579,808 priority patent/US20150106635A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the embodiment referred to in this application relates to a semiconductor integrated circuit and a control method thereof.
  • DVFS Dynamic Voltage Frequency Frequency Scaling
  • Patent Document 4 a technique for reducing the unstable operation of the CPU when the clock frequency is switched while the clock is continuously supplied to the CPU has been proposed (see, for example, Patent Document 4).
  • JP 2003-324735 A Japanese Patent Laying-Open No. 2005-210525 JP 2011-101372 A JP 2008-092010 A JP 2006-260568 A Japanese Unexamined Patent Publication No. 2000-078212
  • a system in which signals are exchanged between two circuits operating at different clock frequencies by applying a synchronization circuit for example, between a CPU and a system bus can be considered.
  • LSIs have also been provided that connect a plurality of CPU cores (CPUs) to a system bus to increase the processing speed.
  • An object of the present invention is to reduce power consumption while suppressing a decrease in performance of a semiconductor integrated circuit.
  • a semiconductor integrated circuit includes a system bus that operates with a first clock, a plurality of arithmetic processing devices, and a control circuit that controls the system bus and the arithmetic processing devices.
  • the plurality of processing units include a first processing unit connected to the system bus and operating with a second clock.
  • the control circuit changes the frequency of the first clock or the second clock after confirming that no access to the system bus has occurred from the arithmetic processing unit.
  • the disclosed semiconductor integrated circuit and the control method thereof have an effect that power consumption can be reduced by DVFS technology while suppressing the performance degradation of the semiconductor integrated circuit.
  • FIG. 1 is a block diagram showing the overall configuration of an embodiment of a semiconductor integrated circuit.
  • FIG. 2 is a block diagram showing an example of a clock generator in the semiconductor integrated circuit shown in FIG.
  • FIG. 3 is a block diagram showing in more detail an example of the through circuit in the semiconductor integrated circuit shown in FIG.
  • FIG. 4 is a timing chart for explaining a data read operation in the case where the CPU and the system bus have the same clock frequency in the through circuit shown in FIG.
  • FIG. 5 is a timing chart for explaining a data write operation when the CPU and the system bus have the same clock frequency in the through circuit shown in FIG.
  • FIG. 6 is a timing diagram for explaining a data write operation when the clock frequency of the CPU and the system bus are different in the through circuit shown in FIG.
  • FIG. 1 is a block diagram showing the overall configuration of an embodiment of a semiconductor integrated circuit.
  • FIG. 2 is a block diagram showing an example of a clock generator in the semiconductor integrated circuit shown in FIG.
  • FIG. 3 is a block diagram
  • FIG. 7 is a flowchart for explaining an example of processing for changing the clock frequency and the power supply voltage.
  • FIG. 8 is a diagram for explaining an example of an operation in which the CPU changes the clock frequency of the system bus.
  • FIG. 9 is a diagram for explaining another example of the operation in which the CPU changes the clock frequency of the system bus.
  • FIG. 10 is a diagram for explaining an example of the operation after the CPU changes the clock frequency of the system bus.
  • FIG. 11 is a diagram illustrating an example of a state transition machine of the control circuit.
  • FIG. 1 is a block diagram showing the overall configuration of an embodiment of a semiconductor integrated circuit.
  • reference numeral 1 is a semiconductor integrated circuit (LSI)
  • 2 is a system bus (internal bus)
  • 3 is a control circuit
  • 4 is a clock generator
  • 5 is a DC-DC converter
  • 61 to 6n are peripheral circuits
  • 101 to 10 m represent calculation blocks.
  • Each calculation block 101 to 10m includes a CPU core 111 to 11m (CPU1 to CPUm), a through circuit 121 to 12m, and a snoop circuit 131 to 13m, respectively.
  • the through circuits 121 to 12m will be described in detail later.
  • the clock frequency of the signal on the transmission side or the signal on the transmission side is changed to the clock frequency of the signal on the reception side. Select and output one of the synchronized signals.
  • the snoop circuits 131 to 13m are not circuits for matching the contents of the local caches, but are circuits for snooping request signals from the corresponding CPU cores 111 to 11m, as will be described in detail later. That is, the snoop circuits 131 to 13m are circuits for confirming (search: snoop) that all access requests of the CPU cores 111 to 11m are not generated, for example.
  • the CPU core 111 to 11m access request means, for example, that a certain CPU core accesses the system bus 2 or accesses another CPU core or the clock generator 4 or the peripheral circuits 61 to 6n via the system bus 2. Is a request.
  • a signal from the CPU core 111 (processor core IP) to the system bus 2 is input via the through circuit 121 and the snoop circuit 131 in the operation block 101 (the same applies to 102 to 10m).
  • a signal from the system bus 2 to the CPU core 111 is input via the through circuit 121.
  • a clock generator 4, n peripheral circuits 61 to 6n, and a DC-DC converter 5 are connected to the system bus 2.
  • the clock generator 4 receives a clock Fi as a reference clock signal from the outside of the LSI 1, generates clocks F1 to Fm to be supplied to the CPU cores 111 to 11m, and a clock Fs and outputs them.
  • the clock Fs is input to, for example, the system bus 2, the peripheral circuits 61 to 6n, and the DC-DC converter 5.
  • the DC-DC converter 5 receives the power supply voltage Vi supplied from the outside of the LSI 1, and supplies the power supply voltages Vdd1 to Vddm supplied to the CPU cores 111 to 11m and the power supply voltage supplied to the system bus 2 and the peripheral circuits 61 to 6n. Generate and output Vdds. Note that the voltage levels of Vdd1 to Vddm and Vdds are controlled in accordance with, for example, a value written in a setting register included in the DC-DC converter 5.
  • dedicated clocks F1 to Fm and power supply voltages Vdd1 to Vddm are given to the respective operation blocks 101 to 10m. That is, the clocks F1 to Fm and the power supply voltages Vdd1 to Vddm of the CPU cores 111 to 11m are controlled according to the processing load required for the system (LSI 1) by the DVFS technique.
  • the operation block 101 includes a CPU core 111, a through circuit 121, and a snoop circuit 131.
  • the clock F1 from the clock generator 4 and the power supply voltage Vdd1 from the DC-DC converter 5 are used. Is supplied.
  • the operation block 102 includes a CPU core 112, a through circuit 122, and a snoop circuit 132, and a clock F2 from the clock generator 4 and a power supply voltage Vdd2 from the DC-DC converter 5 are supplied to these circuits. Is done.
  • the arithmetic block 10m includes a CPU core 11m, a through circuit 12m, and a snoop circuit 13m.
  • the clock Fm from the clock generator 4 and the power supply voltage Vddm from the DC-DC converter 5 are supplied to these circuits. Is done.
  • the power supply voltage Vdds from the DC-DC converter 5 is supplied to the other circuits, that is, the system bus 2, the control circuit 3, the clock generator 4, and the peripheral circuits 61 to 6n. Further, the clock Fs from the clock generator 4 is supplied to the system bus 2, the control circuit 3, the DC-DC converter 5, and the peripheral circuits 61 to 6n.
  • the control circuit 3 receives the change completion signal CCS from the clock generator 4 and the snoop signals 1 to m ("SNOOP DONE1 to SNOOP DONEm") from the snoop circuits 131 to 13m.
  • the control circuit 3 outputs control signals CNT1 to CNTm and selection signals SEL1 to SELm to the through circuits 121 to 12m.
  • AHB Advanced High Performance Bus: registered trademark
  • APB Advanced Peripheral Bus
  • the system bus 2 may be a bus that operates based on standardized protocols such as AXI (Advanced eXtensible Interface), OCP (Open Core Protocol), and NIF (Native Application Interface). Further, a bus that operates based on a protocol uniquely designed by the LSI designer can be applied as the system bus 2.
  • AXI Advanced eXtensible Interface
  • OCP Open Core Protocol
  • NIF Native Application Interface
  • the peripheral circuits 61 to 6n include, for example, a system timer, a DMA (Direct Memory Access) controller, an AD (Analog-to-digital) converter, and a DA (Digita-to-analog) converter.
  • a system timer for example, a system timer, a DMA (Direct Memory Access) controller, an AD (Analog-to-digital) converter, and a DA (Digita-to-analog) converter.
  • each of the peripheral circuits 61 to 6n for example, an SPI (Serial Peripheral Interface Bus) interface or a PWM (Pulse width modulation) interface can be applied.
  • each of the peripheral circuits 61 to 6n may be, for example, a UART (Universal Asynchronous Receiver / Transmitter) interface, a GPIO (General Purpose Input / Output) interface, or the like.
  • the LSI (semiconductor integrated circuit) 1 shown in FIG. 1 includes the frequencies of the clocks F1 to Fm and the power supply voltages Vdd1 to Vddm of the operation blocks 101 to 10m, and the clocks of the system bus 2 and the peripheral circuits 61 to 6n.
  • the frequency of Fs and the power supply voltage Vdds can be controlled independently.
  • FIG. 2 is a block diagram showing an example of a clock generator in the semiconductor integrated circuit shown in FIG.
  • the clock generator 4 includes p clock generation blocks 401 to 40p each having a PLL (Phase Locked Loop) circuit and a frequency dividing circuit, a control register 41, and m + 1 selectors 42s. And 421-42m.
  • PLL Phase Locked Loop
  • the PLL circuit performs feedback control based on the input clock Fi and outputs a phase-synchronized signal, and the frequency dividing circuit divides the frequency of the output signal of the PLL circuit by 1 / integer. Output the signal (clock).
  • the PLL circuits in the clock generation blocks 401 to 40p have their respective multiplication factors controlled by the multiplication factor control signals MR1 to MRp from the control register 41. Further, the frequency dividing circuits in the clock generation blocks 401 to 40p have their frequency dividing ratios (frequency dividing ratios) controlled by the frequency dividing ratio control signals DR1 to DRp from the control register 41.
  • the clock generation blocks 401 to 40p output clocks f1 to fp in which the input clock signal Fi is controlled according to the multiplication rate control signals MR1 to MRp and the division ratio control signals DR1 to DRp from the control register 41.
  • the clocks f1 to fp have different frequencies (clock frequencies), for example.
  • the clocks f1 to fp are input to the selectors 42s and 421 to 42m, the clocks according to the selection signals sel s and sel 1 to sel m from the control register 41 are selected, and the clocks Fs and F1 are selected from the selectors 42s and 421 to 42m. ⁇ Fm is output.
  • the control register 41 is connected to the system bus 2 and holds, for example, each control signal (MR1 to MRp, DR1 to DRp, sel s, sel 1 to sel m) in accordance with a CPU 1 (CPU core 111) described later.
  • FIG. 3 is a block diagram showing in more detail an example of the through circuit in the semiconductor integrated circuit shown in FIG. In FIG. 3, only one calculation block 101 and the system bus 2 are shown, but the same applies to the other calculation blocks 102 to 10m.
  • a signal WDATA indicating a write value at the time of write access, a signal RDATA indicating a read value at the time of read access, and a signal ACK indicating that the access has been established are exchanged between the CPU core 111 and the system bus 2. .
  • the signals output by the transmission sources are described as REQ1, WRITE1, ADDR1, WDATA1, RDATA1, and ACK1, respectively. Further, signals that pass through the synchronization circuits 221 to 226 and the selectors 211 to 216 and are actually input to the reception destination are described as REQ2, WRITE2, ADDR2, WDATA2, RDATA2, and ACK2.
  • the synchronization circuits 221 to 226 are circuits for synchronizing the clock frequency of the signal on the transmission side with the clock frequency of the signal on the reception side in the CPU core 111 and the system bus 2 as will be described in detail later.
  • a selector (access selector) 210, a synchronization circuit 221 and a selector 211 are provided between REQ1 and REQ2, and a synchronization circuit 222 and a selector 212 are provided between WRITE1 and WRITE2. Is provided.
  • a synchronization circuit 223 and a selector 213 are provided between ADDR1 and ADDR2, and a synchronization circuit 224 and a selector 214 are provided between WDATA1 and WDATA2.
  • the synchronization circuits 221 to 224 have a two-stage flip-flop (FF) whose data fetch is controlled by the same clock Fs as that of the system bus 2, and the signal from the CPU core 111 is sent to the system bus 2. Output in synchronization.
  • FF flip-flop
  • a synchronization circuit 225 and a selector 215 are provided between RDATA1 and RDATA2, and a synchronization circuit 226 and a selector 216 are provided between ACK1 and ACK2.
  • the synchronization circuits 225 and 226 have a two-stage FF whose data fetch is controlled by the same clock F1 as the CPU core 111, and outputs a signal from the system bus 2 in synchronization with the CPU core 111. To do.
  • the selector 210 is controlled by the selection signal SEL1 from the control circuit 3.
  • SEL1 is “0: low level“ L ”
  • REQ1 from the CPU core 111 is selected and output
  • SEL1 is “1”.
  • the high level is “H” ”
  • “ 0 ” is always output.
  • 4 and 5 are timing charts for explaining the data read operation and data write operation in the case where the CPU and the system bus have the same clock frequency in the through circuit shown in FIG.
  • the value of the control signal CNT1 (CNT1 to CNTm) output from the control circuit 3 is held at “1”, and the selectors 211 to 214 are Select input "1" and output. That is, the signals REQ1, WRITE1, ADDR1, and WDATA1 are output as they are as REQ2, WRITE2, ADDR2, and WDATA2 without passing through the synchronization circuits 221 to 224.
  • selectors 215 and 216 also select and output input “1”. That is, the signals RDATA1 and ACK1 are output as RDATA2 and ACK2 as they are without passing through the synchronization circuits 225 and 226.
  • the signals REQ2, WRITE2, ADDR2, WDATA2, RDATA2, and ACK2 have the same values as the signals REQ1, WRITE1, ADDR1, WDATA1, RDATA1, and ACK1.
  • the output signal from the CPU core 111 is input to the system bus 2 without delay, and the output signal from the system bus 2 is input to the CPU core 111 without delay. That is, when the clock frequencies of both the CPU core and the system bus are the same, signals are exchanged without passing through the synchronization circuit, thereby avoiding a delay due to the synchronization circuit.
  • the CPU core 111 (CPU 1), which is the master circuit, wants to access the slave circuit, notification is performed by changing REQ1 from “0” to “1”.
  • the CPU core 111 transmits the address of the access destination by ADDR1, transmits by WRITE1 whether it is write access or read access, and transmits the value to be written in WRITE1 in the case of write access.
  • the system bus 2 determines the access destination slave circuit based on the address of the ADDR1, and accesses the access destination slave circuit.
  • the fact that the access is accepted is transmitted by ACK1, and the read value in the case of the read access is transmitted by RDATA1.
  • a read access occurs during the period T2. That is, in the period T2, REQ1 changes from “0” to “1”, and at the same time, the access destination address is transmitted by ADDR1, and the read access is transmitted by WRITE1.
  • ACK1 is changed from “0” to “1” to indicate that the read access is established, and the read value is transmitted by RDATA1. Since the CPU core 111 receives the read value and completes the access, the CPU core 111 changes REQ1 from “1” to “0” in the period T6 and terminates the access.
  • the write access is generated in the period T12. That is, in the period T12, REQ1 changes from “0” to “1”, and at the same time, the access destination address is transmitted by ADDR1, and the write access is transmitted by WRITE1.
  • period T15 it is transmitted that ACK1 is changed from “0” to “1”, so that the write access is established, and the write value is transmitted by WDATA2. Since the CPU core 111 has completed the write access, the REQ1 is changed from “1” to “0” in the period T16 and the access ends.
  • FIG. 6 is a timing diagram for explaining a data write operation when the clock frequency of the CPU and the system bus are different in the through circuit shown in FIG. That is, in FIG. 6, the frequency of the clock F1 of the CPU core 111 (CPU1) in the calculation block 101 is different from the frequency of the clock Fs of the system bus.
  • reference numerals T21 to T29 indicate timing periods synchronized with the clock F1 of the CPU core 111
  • T31 to T43 indicate timing periods synchronized with the clock Fs of the stem bus.
  • the signals WRITE2, ADDR2, WDATA2, RDATA2, and ACK2 are values after the signals REQ1, WRITE1, ADDR1, WDATA1, RDATA1, and ACK1 have passed through the synchronization circuits 221 to 226, respectively.
  • the synchronization circuits 221 to 224 have a two-stage FF whose data fetch timing is controlled by the same clock Fs as the system bus 2, and synchronizes the signal from the CPU core 111 with the system bus 2. Output.
  • the synchronization circuits 225 and 226 have a two-stage FF whose data fetch timing is controlled by the same clock F1 as the CPU core 111, and outputs a signal from the system bus 2 in synchronization with the CPU core 111. To do. That is, each of the synchronization circuits 221 to 226 has a two-stage FF whose value (synchronization timing) changes with the clock signal of the circuit on the reception side.
  • REQ1 when REQ1 changes from “0” to “1” in the period T32, REQ2 is in the period T23. Changes from “0” to “1”. That is, REQ2 changes from “0” to “1” in the period T23 because the synchronization circuit 221 having a two-stage FF whose signal transitions with the clock Fs of the system bus 2 is interposed.
  • WRITE1 and ADDR1 that change in the period T32 also change in the period T23 via the synchronization circuits 222 and 223 (224).
  • ACK1 changes from “0” to “1” in the period T25
  • ACK3 changes from “0” to “1” in the period T39 via the synchronization circuit 226
  • RDATA1 that changes in the period T25 also changes in the period T39 via the synchronization circuit 225.
  • the control signal CNTi continues to hold “1” or “0”, so that the signal is correctly transmitted and received by the above-described operation. be able to. If the clock frequency of the CPUi and the clock frequency of the system bus are the same, as described with reference to FIGS. 4 and 5, the signal on the path where no delay occurs can be obtained by not interposing the synchronization circuit. Transmission and reception are possible.
  • FIG. 7 is a flowchart for explaining an example of processing for changing the clock frequency and the power supply voltage.
  • the processing shown in FIG. 7 is the same for both the change of the clock frequency and power supply voltage of the CPU (CPU cores 111 to 11m) and the change of the clock frequency and power supply voltage of the system bus 2.
  • step ST1 the register is read to obtain the current clock frequency, and the process proceeds to step ST2.
  • step ST2 it is determined whether or not the clock frequency to be set is higher than the current value. If it is determined that the clock frequency to be set is higher than the current value, the process proceeds to step ST3.
  • step ST3 a write access is made to the register of the DC-DC converter 5 to change the power supply voltage. Further, the process proceeds to step ST4, where a write access is made to the register (control register 41) of the clock generator 4, the clock frequency is changed, and the process is completed (finished). That is, when the clock frequency to be set is larger than the current value, first, the power supply voltage is changed, and then the clock frequency is changed.
  • step ST2 determines whether or not the clock frequency to be set is lower than the current value. If it is determined that the clock frequency to be set is lower than the current value, the process proceeds to step ST6.
  • step ST6 a write access is made to the register of the clock generator 4 to change the clock frequency.
  • step ST7 the register of the DC-DC converter 5 is accessed for writing, the power supply voltage is changed, and the process is completed. That is, when the clock frequency to be set is smaller than the current value, the clock frequency is first changed, and then the power supply voltage is changed.
  • step ST5 If it is determined in step ST5 that the clock frequency to be set is not smaller than the current value, that is, the clock frequency to be set is the same as the current clock frequency, the processing is completed as it is.
  • FIG. 8 is a diagram for explaining an example of an operation in which the CPU changes the clock frequency of the system bus.
  • operation A corresponds to, for example, the process of step ST3 in FIG. 7
  • operation B corresponds to, for example, the process of step ST4 in FIG.
  • the operation B in FIG. 8 shows an operation for performing processing for changing the frequency Fs of the clock of the system bus 2.
  • 8 shows an operation for increasing the power supply voltage Vdds of the system bus 2 and the peripheral circuits 61 to 6n
  • an operation C of FIG. 8 shows the power supply voltage of the system bus 2 and the peripheral circuits 61 to 6n. The operation to increase Vdds is shown.
  • FIG. 8 shows a state in which one CPU core 111 (CPU 1) in the plurality of CPU cores 111 to 11m integrated in the LSI 1 issues an instruction to change the clock frequency Fs of the system bus 2, and the clock frequency is changed. Show. While the clock frequency Fs of the system bus 2 is changed, each of the other CPU cores 112 to 11m continues to execute the program.
  • CPU 1 CPU 1
  • CPU 2 CPU 1
  • FIG. 8 shows a state in which one CPU core 111 (CPU 1) in the plurality of CPU cores 111 to 11m integrated in the LSI 1 issues an instruction to change the clock frequency Fs of the system bus 2, and the clock frequency is changed. Show. While the clock frequency Fs of the system bus 2 is changed, each of the other CPU cores 112 to 11m continues to execute the program.
  • the signal “vdd change start” represents an instruction to change the power supply voltage Vdds of the system bus 2 from the CPU core 111 to the DC-DC converter 5, and the signal “vdd change done” is sent from the DC-DC converter 5 to the CPU core 111. Indicates that the power supply voltage change has been completed.
  • the CPU core 111 sends “vdd change start” to the power supply voltage setting register provided in the DC-DC converter 5 via the through circuit 121 (through circuit 1: ST101) and the system bus 2 (ST102). On the other hand, write access is made (ST103).
  • the DC-DC converter 5 changes the power supply voltage Vdds of the system bus 2 in accordance with the power supply voltage change instruction written in the register, and indicates that the change of the power supply voltage Vdds has been completed ("vdd change done ") is returned to the CPU core 111 (ST104).
  • a register whose value changes depending on whether or not the change of the power supply voltage is completed is provided in the DC-DC converter 5, and the value of the register is polled from the CPU core 111 via the system bus 2. If the changed value can be read as a result of the polling, the CPU core 111 determines that the change of the power supply voltage has been completed.
  • the signal “req clock change” indicates that the CPU core 111 outputs an instruction to change the clock frequency Fs of the system bus 2 to the clock generator 4. For example, the CPU core 111 writes the clock frequency to be set to the clock frequency setting register provided in the clock generator 4 via the through circuit 121 (ST105) and the system bus 2 (ST106) (ST107).
  • the clock generator 4 transmits a signal “clk change start (corresponding to the signal CCS in FIG. 1)” to the control circuit 3 (ST108).
  • the control circuit 3 sets the signal “req.snoop” for the snoop circuit 131 to “1” (ST109) and the signal “req.stop” for the through circuit 121 to “1” (ST110).
  • the control circuit 3 waits for the signal “snoop done” from the snoop circuit 131 to be “1” (ST111) and the signal “req snoop” from the through circuit 121 to be “1” (ST113). Then, the signal “all req stop done” for the clock generator 4 is set to “1” (ST114).
  • req snoop corresponds to “REQ SNOOP1 to REQ SNOOPm” to the snoop circuits 131 to 13m
  • req stop corresponds to “REQ STOP1 to REQ STOPm” to the through circuits 121 to 12m
  • snoop done corresponds to “SNOOP DONE1 to SNOOP DONEm” from the snoop circuits 131 to 13m.
  • the CPU core (arithmetic block) whose clock frequency is newly changed by changing the clock frequency Fs of the system bus 2 transmits and receives signals via the synchronization circuit. Even if the CPU core has a different clock frequency before the clock frequency Fs of the system bus 2 is changed, as long as the clock frequency Fs of the system bus 2 after the change is the same, the synchronization circuit Do not intervene.
  • each arithmetic block 101 to 10m, CPUi (CPU1 to CPUm: CPU core 111 to 11m), through circuit i (121 to 12m), snoop circuit i (131 to 13m), and generalized signals are used. explain.
  • REQ SNOOPi “1” (i is an integer of 1 to m) (ST109)
  • the snoop circuit i confirms that the access from the CPU i to the system bus 2 is not being executed, and then the control circuit 3 “SNOOP DONEi” to (ST111) and through circuit i (ST112) is set to “1”. It can be determined that the access is not being executed by confirming that the REQ2 signal from the through circuit i is “1”.
  • the selection signal SEL1 is set to “1” to thereby select the selector 210 in the through circuit 121.
  • “0” is always selected and output regardless of the value of REQ1.
  • the through circuit 121 sets the selection signal SEL1 to “1” and then sets the signal “REQ STOP DONE1” to the control circuit 3 to “1” (ST113).
  • control circuit 3 confirms that the signals “REQ STOP DONE1 to m” from the through circuit i are all “1”, and the signal to the clock generator 4 ”. Set ALL REQ STOP DONE "to” 1 "(ST114).
  • the clock generator 4 changes the clock frequency Fs of the system bus 2 (ST115).
  • the signal “CLK CHANGE DONE” to the control circuit 3 is set to “1” (ST116).
  • control circuit 3 sets the signal CNTi to the through circuit i to “1” when the clock Fi of the CPU i is the same as the clock Fs of the system bus 2, and sets CNTi to “0” when it is different. .
  • the operation C corresponds to the operation A, and the description thereof is omitted. That is, steps ST118 to ST121 in operation C correspond to steps ST101 to ST104 in operation A.
  • the control circuit 3 does not check “SNOOP DONE1 to SNOOP DONEm” from all the snoop circuits 1 to m, but only checks “SNOOP DONE3” from the snoop circuit 3 in the operation block 103. It will be.
  • the snoop circuit i transmits the signal “SNOOP DONEi” notifying that the CPU i is not accessing the system bus, and the control circuit 3 receives that all the snoop circuits i are not accessing. To do.
  • control circuit 3 transmits a signal “ALL REQ STOP DONE” instructing the clock generator 4 to switch the clock Fs of the system bus 2. To do.
  • the switching of the clock Fs of the system bus 2 can be performed at a timing when no access to the system bus 2 from all the CPUi, and an erroneous signal is transmitted by executing the access during the clock change. Can be prevented.
  • the through circuit 121 does not pass through the synchronization circuits (two-stage FFs) 221 to 226.
  • the CPU core 111 and the system bus 2 are connected by a route.
  • the selector 210 of the through circuit 101 can always output “0” to block access from the CPU core 111 to the system bus 2.
  • the clock is continuously supplied to the CPU that is not exchanging signals with the system bus on the CPU.
  • the execution of the program can be continued. As a result, it is possible to minimize the performance degradation of the system.
  • the case where the clock frequency of the CPU and the system bus is the same includes, for example, the case where the clock frequency of the CPU and the system bus becomes the same as a result of changing the clock frequency of the CPU or the system bus. Not too long.
  • FIG. 9 is a diagram for explaining another example of the operation in which the CPU changes the clock frequency of the system bus. While the CPU 2 is accessing the system bus, the CPU 1 issues an instruction to change the clock frequency of the system bus. It shows the operation when putting out.
  • FIG. 9 shows that in operation B of FIG. 8, the CPU core 112 (second arithmetic processing unit) sends a request signal “req” to the peripheral circuit (for example, peripheral circuit) via the through circuit 122 (ST201) and the system bus 2 (ST202).
  • FIG. 8 shows a case where the operation B in FIG. 8 is processed in the state of being output to the circuit 61). In this case, the acknowledge signal “ack” from the peripheral circuit 61 is returned from the system bus 2 via the through circuit 122 (ST214) to the CPU core 112 (ST215).
  • the signal “req clock change” is outputted from the CPU 111 (third arithmetic processing unit) (ST203).
  • the signal “req ⁇ snoop (REQ SNOOP1, REQ SNOOP2)” is output from the control circuit 3 to the snoop circuits 131 and 132 (ST207, ST208).
  • FIG. 9 The other processes in FIG. 9 are substantially the same as those in FIG. 8 except for the processes (ST208, ST210, ST214 to ST217) related to the CPU core 112 (arithmetic block 101), and a description thereof will be omitted.
  • steps ST203 to ST207, ST209, ST211 to ST213, and ST218 to ST221 in FIG. 9 correspond to steps ST105 to ST109, ST110, ST111 to ST113, and ST114 to ST117 in FIG.
  • FIG. 10 is a diagram for explaining an example of the operation after the CPU changes the clock frequency of the system bus. While the clock frequency Fs of the system bus 2 is being changed, the CPU core 112 changes to the system bus 2. This shows the operation when an access occurs.
  • the request signal “req” is output from the CPU core 112 to the through circuit 122 (ST302). That is, REQ1 for the through circuit 122 from the CPU core 112 changes to “1”.
  • the selector (access selector) 210 of the through circuit 122 continues to output “0” and suppresses the REQ2 from becoming “1”.
  • the signal “clk ⁇ change done” is output from the clock generator 4 to the control circuit 3 (ST303).
  • the control circuit 3 confirms that the change of the clock frequency Fs of the system bus 2 is completed, and outputs a signal “path change” to the through circuit 122 (ST304).
  • the request signal “req” transferred to the system bus 2 is output to, for example, the peripheral circuit 61 connected to the system bus 2, and the acknowledge signal “ack” from the peripheral circuit is sent from the system bus 2 to the through circuit 122. (ST306), the process returns to the CPU core 112 (ST307).
  • the clock is continuously supplied to the CPU that is not exchanging signals with the system bus on the CPU.
  • the execution of the program can be continued. As a result, it is possible to minimize the performance degradation of the system.
  • FIG. 11 is a diagram illustrating an example of a state transition machine of the control circuit. As shown in FIG. 11, the control circuit 3 has three states: idle (“idle”), wait (“wait”), and change (“change”).
  • the idle state is a steady state in which the system bus clock is not changed and is operating with a constant clock signal.
  • the operable CPU continues processing. Can be made.
  • a CPU having an operating frequency different from the clock frequency of the system bus interposes a synchronizing circuit, and a CPU having the same operating frequency directly transmits and receives signals, thereby delaying the synchronizing circuit.
  • the present invention should not be construed as being limited to the above-described examples and conditions specifically described, and the configurations of the examples in the present specification regarding the superiority and inferiority of the present invention. .

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

本発明の半導体集積回路は、第1クロックで動作するシステムバスと、前記システムバスに接続され、第2クロックで動作する第1演算処理装置を含む複数の演算処理装置と、前記システムバス及び前記演算処理装置を制御する制御回路とを有し、前記制御回路は、前記演算処理装置から前記システムバスへのアクセスが発生していないことを確認した後に、前記第1クロック又は第2クロックの周波数を変更する。

Description

半導体集積回路およびその制御方法
 この出願で言及する実施例は、半導体集積回路およびその制御方法に関する。
 近年、半導体集積回路に対して、低消費電力化が強く求められており、その低消費電力化を実現するものとして、例えば、DVFS(Dynamic Voltage Frequency Scaling)と呼ばれる技術が注目されている。
 従来、DVFSとして、演算処理装置(CPU)のクロック周波数と電源電圧を、システムに求められる処理負荷に応じて制御することで、CPUが消費する電力を最適化する技術が提案されている(例えば、特許文献1および特許文献2参照)。
 また、従来、システムバスのクロック周波数と電源電圧を、システムバスを介して転送されるデータ量に応じて制御することで、システムバスが消費する電力を最適化する技術も提案されている(例えば、特許文献3参照)。
 さらに、従来、CPUにクロックの供給を続けたまま、そのクロック周波数を切り替えたときのCPUの不安定動作を低減する技術も提案されている(例えば、特許文献4参照)。
 また、近年、半導体集積回路の製造技術の向上に伴って、複数のプロセッサコアIP(Intellectual property)を1つのLSIチップ内に集積した製品が実用化されている(例えば、特許文献5参照)。そのような製品では、1つのシステムバス(内部バス)に複数のCPUコアが接続されることになる。
 さらに、従来、異なるクロック周波数で動作している2つの回路の間で信号を遣り取りする際、受信側回路が正しい値の信号を受信できるように,フリップフロップ(FF)を用いた同期化回路を適用する技術も提案されている(例えば、特許文献6参照)。
特開2003-324735号公報 特開2005-210525号公報 特開2011-101372号公報 特開2008-092010号公報 特開2006-260568号公報 特開2000-078122号公報
 ところで、例えば、同期化回路を適用して異なるクロック周波数で動作している2つの回路の間、例えば、CPUとシステムバスの間で信号を遣り取りするシステムが考えられる。また、近年、システムバスに対して複数のCPUコア(CPU)を接続し、処理を高速化するLSIも提供されている。
 このような複数のCPUおよびシステムバスに対してDVFS技術を適用する場合、例えば、システムバスのクロック周波数を変化させると、各CPUの同期化回路を制御し、或いは、全てのCPUの動作を停止するといった性能低下を招く処理を行うことになる。
 本発明の目的は、半導体集積回路の性能低下を抑えつつ、消費電力の低減を図ることである。
 一実施形態によれば、第1クロックで動作するシステムバスと、複数の演算処理装置と、前記システムバスおよび前記演算処理装置を制御する制御回路と、を有する半導体集積回路が提供される。
 前記複数の演算処理装置は、前記システムバスに接続され、第2クロックで動作する第1演算処理装置を含む。前記制御回路は、前記演算処理装置から前記システムバスへのアクセスが発生していないことを確認した後に、前記第1クロックまたは前記第2クロックの周波数を変更する。
 開示の半導体集積回路およびその制御方法は、半導体集積回路の性能低下を抑えつつ、DVFS技術による消費電力の低減を図ることができるという効果を奏する。
図1は、半導体集積回路の一実施例の全体構成を示すブロック図である。 図2は、図1に示す半導体集積回路におけるクロック生成器の一例を示すブロック図である。 図3は、図1に示す半導体集積回路におけるスルー回路の一例をより詳細に示すブロック図である。 図4は、図3に示すスルー回路において、CPUとシステムバスのクロック周波数が同一の場合のデータ読み出し動作を説明するためのタイミング図である。 図5は、図3に示すスルー回路において、CPUとシステムバスのクロック周波数が同一の場合のデータ書き込み動作を説明するためのタイミング図である。 図6は、図3に示すスルー回路において、CPUとシステムバスのクロック周波数が異なる場合のデータ書き込み動作を説明するためのタイミング図である。 図7は、クロック周波数および電源電圧の変更処理の一例を説明するためのフローチャートである。 図8は、CPUがシステムバスのクロック周波数を変更する動作の一例を説明するための図である。 図9は、CPUがシステムバスのクロック周波数を変更する動作の他の例を説明するための図である。 図10は、CPUがシステムバスのクロック周波数を変更した後の動作の一例を説明するための図である。 図11は、制御回路の状態遷移マシンの一例を示す図である。
 以下、半導体集積回路およびその制御方法の実施例を、添付図面を参照して詳述する。図1は、半導体集積回路の一実施例の全体構成を示すブロック図である。
 図1において、参照符号1は半導体集積回路(LSI)、2はシステムバス(内部バス)、3は制御回路、4はクロック生成器、5はDC-DCコンバータ、61~6nは周辺回路、そして、101~10mは演算ブロックを示す。
 各演算ブロック101~10mは、それぞれCPUコア111~11m(CPU1~CPUm)、スルー回路121~12m、および、スヌープ回路131~13mを含む。
 ここで、スルー回路121~12mは、後に詳述するが、CPUコア111~11mおよびシステムバス2において、送信側の信号、または、送信側の信号のクロック周波数を受信側の信号のクロック周波数に同期させた信号のいずれかを選択して出力する。
 また、スヌープ回路131~13mは、各ローカルキャッシュの内容を一致させるためのものではなく、後に詳述するように、対応するCPUコア111~11mからのリクエスト信号をスヌープするための回路である。すなわち、スヌープ回路131~13mは、例えば、CPUコア111~11mの全てのアクセスリクエストが発生していないことを確認(探索:スヌープ)するための回路である。
 なお、CPUコア111~11mのアクセスリクエストとは、例えば、あるCPUコアがシステムバス2に対し、或いは、システムバス2を介して他のCPUコアまたはクロック生成器4や周辺回路61~6nに対するアクセスの要求である。
 図1に示されるように、演算ブロック101(102~10mも同様)において、CPUコア111(プロセッサコアIP)からシステムバス2への信号は、スルー回路121およびスヌープ回路131を介して入力される。また、システムバス2からCPUコア111への信号は、スルー回路121を介して入力される。ここで、システムバス2には、例えば、クロック生成器4、n個の周辺回路61~6n、および、DC-DCコンバータ5が接続されている。
 クロック生成器4は、LSI1の外部から基準クロック信号となるクロックFiを受け取り、CPUコア111~11mに供給するクロックF1~Fm、および、クロックFsを生成して出力する。なお、クロックFsは、例えば、システムバス2、周辺回路61~6n、および、DC-DCコンバータ5に入力される。
 DC-DCコンバータ5は、LSI1の外部から供給される電源電圧Viを受け取り、CPUコア111~11mに供給する電源電圧Vdd1~Vddm、並びに、システムバス2および周辺回路61~6nに供給する電源電圧Vddsを生成して出力する。なお、Vdd1~VddmおよびVddsの電圧レベルは、例えば、DC-DCコンバータ5が内部に持つ設定レジスタに書き込まれた値に応じて制御される。
 ここで、各演算ブロック101~10mに対しては、それぞれ専用のクロックF1~Fmおよび電源電圧Vdd1~Vddmが与えられている。すなわち、各CPUコア111~11mのクロックF1~Fmと電源電圧Vdd1~Vddmは、DVFS技術により、システム(LSI1)に求められる処理負荷に応じて制御されるようになっている。
 具体的に、演算ブロック101は、CPUコア111,スルー回路121およびスヌープ回路131を含み、これらの回路に対しては、クロック生成器4からのクロックF1およびDC-DCコンバータ5からの電源電圧Vdd1が供給される。
 また、演算ブロック102は、CPUコア112,スルー回路122およびスヌープ回路132を含み、これらの回路に対しては、クロック生成器4からのクロックF2およびDC-DCコンバータ5からの電源電圧Vdd2が供給される。
 さらに、演算ブロック10mは、CPUコア11m,スルー回路12mおよびスヌープ回路13mを含み、これらの回路に対しては、クロック生成器4からのクロックFmおよびDC-DCコンバータ5からの電源電圧Vddmが供給される。
 そして、他の回路、すなわち、システムバス2、制御回路3、クロック生成器4、および、周辺回路61~6nに対しては、DC-DCコンバータ5からの電源電圧Vddsが供給される。また、システムバス2、制御回路3、DC-DCコンバータ5、および、周辺回路61~6nに対しては、クロック生成器4からのクロックFsが供給される。
 制御回路3は、クロック生成器4からの変更完了信号CCS、並びに、スヌープ回路131~13mからのスヌープ信号1~m("SNOOP DONE1~SNOOP DONEm")を受け取る。そして、制御回路3は、スルー回路121~12mに対して制御信号CNT1~CNTmおよび選択信号SEL1~SELmを出力する。
 以上において、システムバス2としては、例えば、AHB(Advanced High performance Bus:登録商標)およびAPB(Advanced. Peripheral Bus)等を適用することができる。また、システムバス2は、例えば、AXI(Advanced eXtensible Interface)、OCP(Open Core Protocol)およびNIF(Native Application Interface)などの標準化されたプロトコルに基づいて動作するバスであってもよい。さらに、LSI設計者が独自に設計したプロトコルに基づいて動作するバスを、システムバス2として適用することもできる。
 なお、各周辺回路61~6nとしては、例えば、システムタイマー、DMA(Direct Memory Access)コントローラ、AD(Analog-to-digital)コンバータ、および、DA(Digita-to-analog)コンバータなどである。
 また、各周辺回路61~6nとしては、例えば、SPI(Serial Peripheral Interface Bus)インターフェースやPWM(Pulse width modulation)インターフェースなどを適用することができる。さらに、各周辺回路61~6nとしては、例えば、UART(Universal Asynchronous Receiver/Transmitter)インターフェース、および、GPIO(General Purpose Input/Output)インターフェースなどであってもよい。
 このように、図1に示すLSI(半導体集積回路)1は、各演算ブロック101~10mのクロックF1~Fmの周波数および電源電圧Vdd1~Vddm、並びに、システムバス2や周辺回路61~6nのクロックFsの周波数および電源電圧Vddsが独立に制御可能となっている。
 図2は、図1に示す半導体集積回路におけるクロック生成器の一例を示すブロック図である。図2に示されるように、クロック生成器4は、それぞれがPLL(Phase Locked Loop)回路および分周回路を有するp個のクロック生成ブロック401~40p、制御レジスタ41、並びに、m+1個のセレクタ42sおよび421~42mを含む。
 ここで、PLL回路は、それぞれ入力するクロックFiを元にフィードバック制御を行って位相同期した信号を出力し、また、分周回路は、PLL回路の出力信号の周波数を整数分の1に分周した信号(クロック)を出力する。
 なお、各クロック生成ブロック401~40pにおけるPLL回路は、制御レジスタ41からの逓倍率制御信号MR1~MRpによりそれぞれの逓倍率が制御される。また、各クロック生成ブロック401~40pにおける分周回路は、制御レジスタ41からの分周率制御信号DR1~DRpによりそれぞれの分周率(分周比)が制御される。
 これにより、クロック生成ブロック401~40pは、入力クロック信号Fiが、制御レジスタ41からの逓倍率制御信号MR1~MRpおよび分周率制御信号DR1~DRpに従って制御されたクロックf1~fpを出力する。ここで、クロックf1~fpは、例えば、それぞれの周波数(クロック周波数)が異なっている。
 クロックf1~fpは、セレクタ42sおよび421~42mに入力され、制御レジスタ41からの選択信号sel sおよびsel 1~sel mに従ったクロックが選択され、セレクタ42sおよび421~42mからクロックFsおよびF1~Fmとして出力される。
 なお、制御レジスタ41は、システムバス2に接続され、例えば、後述するCPU1(CPUコア111)に従って各制御信号(MR1~MRp,DR1~DRp,sel s,sel 1~sel m)を保持する。
 図3は、図1に示す半導体集積回路におけるスルー回路の一例をより詳細に示すブロック図である。なお、図3では、1つの演算ブロック101およびシステムバス2のみが描かれているが、他の演算ブロック102~10mも同様である。
 CPUコア111(CPU1)とシステムバス2の間では、アクセスリクエストを示す信号REQ、書き込みアクセスか読み出しアクセスかを区別する信号WRITE、および、アクセス先アドレスを示す信号ADDRが遣り取りされる。
 さらに、CPUコア111とシステムバス2の間では、書き込みアクセス時の書き込み値を示す信号WDATA、読み出しアクセス時の読み出し値を示す信号RDATA、および、アクセスが成立したことを示す信号ACKが遣り取りされる。
 ここで、それぞれ送信元が出力する信号を、REQ1,WRITE1,ADDR1,WDATA1,RDATA1およびACK1と記載する。また、同期化回路221~226やセレクタ211~216を通過して実際に受信先に入力される信号を、REQ2,WRITE2,ADDR2,WDATA2,RDATA2およびACK2と記載する。
 なお、同期化回路221~226は、後に詳述するが、CPUコア111およびシステムバス2において、送信側の信号のクロック周波数を、受信側の信号のクロック周波数に同期させるための回路である。
 図3に示されるように、REQ1とREQ2の間には、セレクタ(アクセスセレクタ)210,同期化回路221およびセレクタ211が設けられ、WRITE1とWRITE2の間には、同期化回路222およびセレクタ212が設けられている。
 さらに、ADDR1とADDR2の間には、同期化回路223およびセレクタ213が設けられ、WDATA1とWDATA2の間には、同期化回路224およびセレクタ214が設けられている。
 ここで、同期化回路221~224は、システムバス2と同じクロックFsによりデータの取り込みが制御される2段のフリップフロップ(FF)を有し、CPUコア111からの信号を、システムバス2に同期させて出力する。
 また、RDATA1とRDATA2の間には、同期化回路225およびセレクタ215が設けられ、ACK1とACK2の間には、同期化回路226およびセレクタ216が設けられている。
 ここで、同期化回路225および226は、CPUコア111と同じクロックF1によりデータの取り込みが制御される2段のFFを有し、システムバス2からの信号を、CPUコア111に同期させて出力する。
 なお、セレクタ210は、制御回路3からの選択信号SEL1により制御され、SEL1が『0:低レベル”L”』のときは、CPUコア111からのREQ1を選択して出力し、SEL1が『1:高レベル”H”』のときは、常に『0』を出力する。
 ところで、システムバス2のクロックFsの周波数(クロック周波数Fs)を変更する際、システムバス2との間で信号を遣り取りしていないCPUコアに対してはクロックの供給を継続し、そのCPUコア上でのプログラムの実行を継続させるのが好ましい。すなわち、システムバス2との間で信号の送受信(遣り取り)をしていないCPUコアは、そのCPUコア上でのプログラムの実行を継続させることで、システムの性能低下を低減することができる。
 また、CPUコアのクロック周波数とシステムバス2のクロック周波数Fsが異なる場合、信号の遣り取りは、同期化回路(221~226)を介して行う。これに対して、CPUコアおよびシステムバス2の両者のクロック周波数が同じ場合、同期化回路を介さずに信号の遣り取りをして同期化回路による遅延を回避するのが好ましい。
 図4および図5は、図3に示すスルー回路において、CPUとシステムバスのクロック周波数が同一の場合におけるデータ読み出し動作およびデータ書き込み動作を説明するためのタイミング図である。
 まず、図4および図5を参照して、演算ブロック101におけるCPUコア111(CPU1)のクロックF1の周波数(クロック周波数F1)と、システムバス2のクロックFsの周波数が同一の場合におけるアクセスの動作を説明する。
 CPUコア111のクロック周波数F1とシステムバス2のクロック周波数Fsが同一の場合、制御回路3が出力する制御信号CNT1(CNT1~CNTm)の値は『1』に保持され、セレクタ211~214は、入力『1』を選択して出力する。すなわち、信号REQ1,WRITE1,ADDR1およびWDATA1は、同期化回路221~224を通ることなく、そのままREQ2,WRITE2,ADDR2およびWDATA2として出力される。
 同様に、セレクタ215および216も、入力『1』を選択して出力する。すなわち、信号RDATA1およびACK1は、同期化回路225および226を通ることなく、そのままRDATA2およびACK2として出力される。
 従って、信号REQ2,WRITE2,ADDR2,WDATA2,RDATA2およびACK2は、信号REQ1,WRITE1,ADDR1,WDATA1,RDATA1およびACK1と同じ値になる。
 その結果、CPUコア111からの出力信号は、遅延なくシステムバス2に入力され、また、システムバス2からの出力信号は、遅延なくCPUコア111に入力されることになる。すなわち、CPUコアおよびシステムバスの両者のクロック周波数が同じ場合、同期化回路を介さずに信号の遣り取りすることで、同期化回路による遅延を回避するようになっている。
 ここで、CPUコアまたはシステムバスのクロック周波数の変更を指示するマスタ回路は、CPUi(i=1~m:CPUコア111~11m)であり、また、スレーブ回路は、制御回路3,クロック生成器4,DC-DCコンバータ5および周辺回路61~6nである。
 従って、例えば、マスタ回路であるCPUコア111(CPU1)がスレーブ回路にアクセスしたいとき、REQ1を『0』から『1』に変更することで通知を行う。同時に、CPUコア111は、アクセス先のアドレスをADDR1で送信し、書き込みアクセスか読み出しアクセスかをWRITE1で送信し、そして、書き込みアクセスの場合の書き込みたい値をWRITE1で送信する。
 システムバス2は、ADDR1のアドレスを元にアクセス先のスレーブ回路を判定し、アクセス先のスレーブ回路に対するアクセスを行う。そして、アクセスが受け付けられた場合、アクセスが受け付けられたことをACK1で送信し、さらに、読み出しアクセスの場合の読み出し値をRDATA1で送信する。
 具体的に、図4に示すCPUコア111とシステムバス2のクロック周波数が同一の場合におけるデータ読み出し動作の例では、期間T2で読み出しアクセスが発生している。すなわち、期間T2において、REQ1が『0』から『1』に変化し、同時に、アクセス先アドレスがADDR1により送信され、また、読み出しアクセスであることがWRITE1により送信されている。
 さらに、期間T5において、ACK1が『0』から『1』に変化することで読み出しアクセスが成立したことが送信され、そして、読み出し値がRDATA1により送信されている。なお、CPUコア111は、読み出し値を受け取ってアクセスが完了したので、期間T6において、REQ1を『1』から『0』に変更してアクセスを終了する。
 また、図5に示すCPUコア111とシステムバス2のクロック周波数が同一の場合におけるデータ書き込み動作の例では、期間T12で書き込みアクセスが発生している。すなわち、期間T12において、REQ1が『0』から『1』に変化し、同時に、アクセス先アドレスがADDR1により送信され、また、書き込みアクセスであることがWRITE1により送信されている。
 さらに、期間T15において、ACK1が『0』から『1』に変化することで書き込みアクセスが成立したことが送信され、そして、書き込み値がWDATA2により送信されている。なお、CPUコア111は、書き込みアクセスが完了したので、期間T16において、REQ1を『1』から『0』に変更してアクセスを終了する。
 図6は、図3に示すスルー回路において、CPUとシステムバスのクロック周波数が異なる場合のデータ書き込み動作を説明するためのタイミング図である。すなわち、図6において、演算ブロック101におけるCPUコア111(CPU1)のクロックF1の周波数とシステムバスのクロックFsの周波数は異なっている。
 なお、図6において、参照符号T21~T29は、CPUコア111のクロックF1に同期したタイミングの期間を示し、また、T31~T43は、ステムバスのクロックFsに同期したタイミングの期間を示す。
 CPUコア111のクロック周波数F1とシステムバス2のクロック周波数Fsが異なる場合、制御回路3が出力する制御信号CNT1(CNT1~CNTm)の値は、『0』に保持され、セレクタ212~216は、入力『0』を選択して出力する。
 すなわち、信号WRITE2,ADDR2,WDATA2,RDATA2およびACK2は、それぞれ信号REQ1,WRITE1,ADDR1,WDATA1,RDATA1およびACK1が同期化回路221~226を通った後の値になる。
 ここで、同期化回路221~224は、システムバス2と同じクロックFsによりデータの取り込みタイミングが制御される2段のFFを有し、CPUコア111からの信号を、システムバス2に同期させて出力する。
 また、同期化回路225および226は、CPUコア111と同じクロックF1によりデータの取り込みタイミングが制御される2段のFFを有し、システムバス2からの信号を、CPUコア111に同期させて出力する。すなわち、各同期化回路221~226は、受信側の回路のクロック信号で値(同期タイミング)が変化する2段のFFを有している。
 具体的に、図6に示すCPUコア111とシステムバス2のクロック周波数が異なる場合におけるデータ読み出し動作の例では、期間T32において、REQ1が『0』から『1』に変化すると、REQ2は期間T23で『0』から『1』に変化する。すなわち、REQ2は、システムバス2のクロックFsで信号遷移する2段のFFを有する同期化回路221が介在するため、期間T23で『0』から『1』に変化する。
 同様に、期間T32で変化するWRITE1およびADDR1(WDATA1)も、同期化回路222および223(224)を介して、期間T23で変化する。また、期間T25において、ACK1が『0』から『1』に変化すると、ACK3は、同期化回路226を介して、期間T39で『0』から『1』に変化する。同様に、期間T25で変化するRDATA1も、同期化回路225を介して、期間T39で変化する。
 このように、同期化回路221~224を介して信号を遣り取りすることにより、システムバス2が受信するREG2,WRITE2およびADDR2(WDATA2)は、システムバス2のクロックFsに同期して値が変化する。さらに、同期化回路225および226を介して信号を遣り取りすることにより、CPUコア111が受信するACK2およびRDATA2は、CPUコア111のクロック信号F1に同期して値が変化する。
 このように、CPUコア111とシステムバス2のクロック周波数が異なる場合には、同期化回路221~226を介在させることによって、それぞれ正しく信号を遣り取りすることができる。
 以上のように、任意のCPUiとシステムバスのクロック信号の切り替えを行わない間は、制御信号CNTiが『1』または『0』を保持し続けることで、上述した動作によって正しく信号の送受信を行うことができる。なお、CPUiのクロック周波数とシステムバスのクロック周波数が同じ場合には、図4および図5を参照して説明したように、同期化回路を介在させないことで、遅延が生じない経路での信号の送受信が可能になる。
 図7は、クロック周波数および電源電圧の変更処理の一例を説明するためのフローチャートである。なお、図7に示す処理は、CPU(CPUコア111~11m)のクロック周波数および電源電圧の変更と、システムバス2のクロック周波数および電源電圧の変更の両方とも同様である。
 図7に示されるように、クロック周波数および電源電圧の変更処理を開始すると、ステップST1において、レジスタを読み出して現在のクロック周波数を取得し、そして、ステップST2に進む。
 ステップST2では、設定したいクロック周波数が現在の値より大きいかどうかを判定し、設定したいクロック周波数が現在の値より大きいと判定すると、ステップST3に進む。
 ステップST3では、DC-DCコンバータ5のレジスタに書き込みアクセスして電源電圧を変更する。さらに、ステップST4に進んで、クロック生成器4のレジスタ(制御レジスタ41)に書き込みアクセスし、クロック周波数を変更して処理を完了(終了)する。すなわち、設定したいクロック周波数が現在の値より大きい場合には、まず、電源電圧を変更し、その後、クロック周波数を変更する。
 一方、ステップST2において、設定したいクロック周波数が現在の値より大きくないと判定すると、ステップST5に進む。ステップST5では、設定したいクロック周波数が現在の値より小さいかどうかを判定し、設定したいクロック周波数が現在の値より小さいと判定すると、ステップST6に進む。
 ステップST6では、クロック生成器4のレジスタに書き込みアクセスしてクロック周波数を変更する。さらに、ステップST7に進んで、DC-DCコンバータ5のレジスタに書き込みアクセスし、電源電圧を変更して処理を完了する。すなわち、設定したいクロック周波数が現在の値より小さい場合には、まず、クロック周波数を変更し、その後、電源電圧を変更する。
 なお、ステップST5において、設定したいクロック周波数が現在の値より小さくない、すなわち、設定したいクロック周波数が現在のクロック周波数と同じであると判定すると、そのまま処理を完了する。
 図8は、CPUがシステムバスのクロック周波数を変更する動作の一例を説明するための図である。図8において、動作Aは、例えば、図7におけるステップST3の処理に対応し、また、動作Bは、例えば、図7におけるステップST4の処理に対応する。
 すなわち、図8の動作Bは、システムバス2のクロックの周波数Fsを変更する処理を行う動作を示す。また、図8の動作Aは、システムバス2および周辺回路61~6nの電源電圧Vddsを上げる処理を行う動作を示し、図8の動作Cは、システムバス2および周辺回路61~6nの電源電圧Vddsを上げる処理を行う動作を示す。
 ところで、半導体集積回路(LSI)1を高いクロック周波数で動かすためには、高い電源電圧で動作させるため、DVFSによってクロック周波数を上げる場合、先に高い電源電圧に変更してからクロック周波数を上げる。逆に、DVFSによってクロック周波数を下げる場合、先に低いクロック周波数に変更してから電源電圧を下げる。
 従って、図8において、動作Bによりクロック周波数を上げる場合、先に動作Aにより電源電圧を上げる処理を行い、その後、動作Bによりクロック周波数を上げる処理を行う。このとき、動作Cは実行しない。
 逆に、動作Bによりクロック周波数を下げる場合には、動作Aは実行せずに、動作Bによりクロック周波数を下げる処理を行い、その後、動作Cにより電源電圧を下げる処理を行う。
 図8は、LSI1に集積されている複数のCPUコア111~11mにおける1つのCPUコア111(CPU1)がシステムバス2のクロック周波数Fsの変更の指示を出し、そのクロック周波数が変更される様子を示している。なお、システムバス2のクロック周波数Fsが変更される間、他のCPUコア112~11mは、それぞれプログラムの実行を継続する。
 信号"vdd change start"は、CPUコア111からDC-DCコンバータ5に対するシステムバス2の電源電圧Vddsを変更する指示を表し、信号"vdd change done"は、DC-DCコンバータ5からCPUコア111に対する電源電圧の変更が完了したことを表す。
 具体的に、CPUコア111は、スルー回路121(スルー回路1:ST101)およびシステムバス2(ST102)を介し、"vdd change start"をDC-DCコンバータ5内に設けられた電源電圧設定レジスタに対して書き込みアクセスする(ST103)。
 これを受けて、DC-DCコンバータ5は、レジスタに書き込まれた電源電圧の変更指示に従ってシステムバス2の電源電圧Vddsを変更し、その電源電圧Vddsの変更が完了したことを表す指示("vdd change done")をCPUコア111へ戻す(ST104)。
 これは、例えば、DC-DCコンバータ5内に電源電圧の変更が完了したかどうかによって値が変化するレジスタを設け、そのレジスタの値を、CPUコア111からシステムバス2を介してポーリングする。そして、ポーリングの結果、変化した後の値が読み出せた場合には、CPUコア111が電源電圧の変更が完了したと判断する。
 信号"req clock change"は、CPUコア111からクロック生成器4に対してシステムバス2のクロック周波数Fsを変更する指示を出力していることを表す。例えば、CPUコア111からスルー回路121(ST105)およびシステムバス2(ST106)を介し、クロック生成器4内に設けられたクロック周波数設定レジスタに対して設定したいクロック周波数を書き込む(ST107)。
 クロック生成器4は、指示を受け取ったら、制御回路3に対して信号"clk change start(図1における信号CCSに対応)"を送信する(ST108)。"clk change start"を受け取った制御回路3は、スヌープ回路131に対する信号"req snoop"を『1』にし(ST109)、スルー回路121に対する信号"req stop"を『1』にする(ST110)。
 制御回路3は、スヌープ回路131からの信号"snoop done"が『1』になる(ST111)のと、スルー回路121からの信号"req snoop"が『1』になる(ST113)のを待って、クロック生成器4に対する信号"all req stop done"を『1』にする(ST114)。
 ここで、"req snoop"は、スヌープ回路131~13mへの"REQ SNOOP1~REQ SNOOPm"に対応し、また、"req stop"は、スルー回路121~12mへの"REQ STOP1~REQ STOPm"に対応する。さらに、"snoop done"は、スヌープ回路131~13mからの"SNOOP DONE1~SNOOP DONEm"に対応する。
 例えば、CPUコア111がシステムバス2のクロック周波数Fsを変更する場合(ST115)、このシステムバス2のクロック周波数Fsと、全ての演算ブロック101~10mにおけるクロック周波数F1~Fmの一致を確認する(ST116)。
 すなわち、システムバス2のクロック周波数Fsが変更されることで新たにクロック周波数が異なることになったCPUコア(演算ブロック)は、同期化回路を介して信号を送受信する。なお、システムバス2のクロック周波数Fsが変更される前にクロック周波数が異なっていたCPUコアであっても、変更された後のシステムバス2のクロック周波数Fsと同じであれば、同期化回路は介在させない。
 一方、例えば、CPUコア111が、CPUコア113(第1演算処理装置)のクロック周波数F3(第2クロック)を変更する場合を考える。このとき、CPUコア113(演算ブロック103)以外のCPUコアのクロック周波数F1,F2およびF4~Fmとシステムバス2のクロック周波数Fsの関係は変化しない。従って。この場合、CPUコア113のクロック周波数F3とシステムバス2のクロック周波数Fsの一致を確認するのみでよいことになる。
 以下の説明は、CPUコア111がシステムバス2のクロック周波数Fsを変更する場合を想定し、図8におけるST109以降の処理を、各信号を一般化して説明する。すなわち、各演算ブロック101~10m、CPUi(CPU1~CPUm:CPUコア111~11m)、スルー回路i(121~12m)、スヌープ回路i(131~13m)、並びに、一般化された信号を用いて説明する。
 REQ SNOOPi=『1』(iは、1以上m以下の整数)を受け取った(ST109)スヌープ回路iは、CPUiからシステムバス2へのアクセスが実行中で無いことを確認した後、制御回路3(ST111)とスルー回路i(ST112)への"SNOOP DONEi"を『1』にする。なお、アクセスが実行中で無いことは、スルー回路iからのREQ2信号が『1』であることを確認することで判定できる。
 REQ STOPi=『1』を受け取った(ST110)スルー回路iは、スヌープ回路iからSNOOP DONEi=『1』を受信した(ST112)後、CPUiからシステムバスへの新規のアクセスを遮断する。そして、この新規のアクセスを遮断した後、制御回路3への信号"REQ STOP DONEi"を『1』にする(ST113)。
 ここで、図3に示す演算ブロック101では、例えば、制御回路3がSNOOP DONEi=『1』を受信した(ST111)後、選択信号SEL1を『1』にすることで、スルー回路121におけるセレクタ210が、REQ1の値によらず常に『0』を選択して出力する。スルー回路121は、選択信号SEL1を『1』にした後、制御回路3への信号"REQ STOP DONE1"を『1』にする(ST113)。
 再び、一般化した説明に戻すと、制御回路3は、スルー回路iからの信号"REQ STOP DONE1~m"が全て『1』になったことを確認して、クロック生成器4への信号"ALL REQ STOP DONE"を『1』にする(ST114)。
 "ALL REQ STOP DONE"=『1』を受信した(ST114)クロック生成器4は、システムバス2のクロック周波数Fsを変更する(ST115)。クロック周波数Fsの変更が完了したら、制御回路3への信号"CLK CHANGE DONE"を『1』にする(ST116)。
 "CKL CHANGE DONE"=『1』を受信した(ST116)制御回路3は、クロック生成器4内のクロック設定レジスタの値を読み出し、スルー回路iに対する信号"PATH CHANGE"制御する(ST117)。
 すなわち、制御回路3は、CPUiのクロックFiがシステムバス2のクロックFsと同一の場合には、スルー回路iへの信号CNTiを『1』にし、違う場合には、CNTiを『0』にする。
 CNTi=『1』を受信したスルー回路iのセレクタ211~216は、入力『1』側の値(同期化回路221~226を介さないそのままの値)を選択して出力する。一方、CNTi=『0』を受信したスルー回路iのセレクタ211~216は、入力『0』側の値(同期化回路221~226を介して送信側の回路に同期化された値)を選択して出力する。
 なお、動作Cは、動作Aに対応し、その説明は省略する。すなわち、動作CにおけるステップST118~ST121は、動作AにおけるステップST101~ST104に対応する。
 上述した図8の説明は、CPUコア111がシステムバス2のクロック周波数を変更した結果、CPUコア111~11m(CPU1~m)のいずれかのクロック周波数とシステムバス2のクロック周波数が異なる場合を想定している。しかしながら、結果的に、CPUのクロック周波数とシステムバスのクロック周波数が異なる場合も同様である。
 すなわち、例えば、CPUコア111がCPUコア113(演算ブロック103)のクロック周波数F3を変更した結果、CPUコア113のクロック周波数F3とシステムバス2のクロック周波数Fsが異なる場合も同様である。この場合、制御回路3は、全てのスヌープ回路1~mからの"SNOOP DONE1~SNOOP DONEm"を確認するのではなく、演算ブロック103におけるスヌープ回路3からの"SNOOP DONE3"のみを確認すればよいことになる。
 上述したように、スヌープ回路iは、CPUiがシステムバスにアクセス中で無いことを通知する信号"SNOOP DONEi"を送信し、制御回路3は、全てのスヌープ回路iからアクセス中で無いことを受信する。
 そして、制御回路3は、全てのスヌープ回路iからアクセス中で無いことを確認した後、クロック生成器4に対してシステムバス2のクロックFsの切り替えを指示する信号"ALL REQ STOP DONE"を送信する。
 従って、システムバス2のクロックFsの切り替えは、全てのCPUiからシステムバス2へのアクセスがないタイミングで行うことができ、クロック変更中にアクセスを実行することによって誤った信号が伝送されるのを防ぐことができる。
 ここで、例えば、図3において、CPUコア111のクロック周波数F1とシステムバス2のクロック信号Fsが同じになる場合、スルー回路121は、同期化回路(2段のFF)221~226を介さない経路でCPUコア111とシステムバス2の間を繋ぐことになる。
 すなわち、CPUとシステムバスに対して、異なる周波数のクロックが供給される場合、同期化回路を介した経路で信号の送受信を行うが、同じ周波数のクロックが供給される場合には、同期化回路を介さずに直接信号の送受信を行うことができる。このように、同期化回路を介さずに直接信号の送受信を行うと、例えば、同期化回路によるFF2段分の遅延を無くすことが可能になる。
 さらに、例えば、図3において、システムバス2のクロック切り替え中は、スルー回路101のセレクタ210は常に『0』を出力してCPUコア111からシステムバス2へのアクセスを遮断することができる。
 すなわち、図10を参照して後に詳述するが、システムバスのクロック切り替え中であっても、各CPUで実行中のプログラムがシステムバスにアクセスするかしないかに関わらず、安全にプログラムの実行を継続させることができる。
 このように、本実施例によれば、例えば、システムバスのクロック周波数を変更する場合、システムバスとの間で信号を遣り取りしていないCPUに対しては、クロック供給を継続してCPU上でのプログラムの実行を継続させることができる。これにより、システムの性能低下を最小限に抑えることが可能になる。
 これは、システムバスのクロック周波数を変更した場合に限定されるものではなく、例えば、いずれか1つのCPUのクロック周波数を変更してシステムバスのクロック周波数と異なるようになった場合でも、システムの性能低下を抑えることが可能になる。この場合、クロック周波数を変更しない残りのCPUに対しては、それまでの動作を継続させることができる。
 また、CPUとシステムバスのクロック周波数が異なる場合、信号の遣り取りは、例えば、同期化回路を介して行うことになるが、CPUとシステムバスのクロック周波数が同じ場合には、同期化回路を介さずに信号の遣り取りすることができる。これにより、同期化回路による遅延を回避することが可能になる。
 ここで、CPUとシステムバスのクロック周波数が同じ場合とは、例えば、CPUまたはシステムバスの一方のクロック周波数を変更した結果、CPUとシステムバスのクロック周波数が同じになった場合も含むのはいうまでもない。
 図9は、CPUがシステムバスのクロック周波数を変更する動作の他の例を説明するための図であり、CPU2がシステムバスにアクセスしている間に、CPU1がシステムバスのクロック周波数変更指示を出す場合の動作を示すものである。
 図9は、図8の動作Bにおいて、CPUコア112(第2演算処理装置)がリクエスト信号"req"をスルー回路122(ST201)およびシステムバス2(ST202)を介して周辺回路(例えば、周辺回路61)に出力した状態で、図8の動作Bを処理する場合を示している。この場合、その周辺回路61からのアクノリッジ信号"ack"は、システムバス2からスルー回路122を介して(ST214)、CPUコア112に戻される(ST215)。
 このように、図9では、CPUコア112が出力した信号"req (REQ1)"=『1』がスルー回路122を経由して(ST201)システムバス2に転送される(ST202)。このアクセスに対するアクノリッジ信号"ack"がシステムバス2から出力される(ST214)前に、CPU111(第3演算処理装置)から信号"req clock change"が出力される(ST203)。さらに、制御回路3からスヌープ回路131および132に対して信号"req snoop (REQ SNOOP1, REQ SNOOP2)"が出力される(ST207,ST208)。
 スヌープ回路132は、スルー回路122からの信号"req (REQ1)"が『0』に変化したのを確認して"snoop done (SNOOP DONE2)"=『1』を出力する(ST216)。制御回路3は、全てのスヌープ回路(131,132)からの信号"snoop done (SNOOP DONE1, SNOOP DONE2)"の受信(ST211,ST216)を待って、"all req stop done"=『1』を出力する(ST218)。
 なお、図9における他の処理は、CPUコア112(演算ブロック101)に関する処理(ST208,ST210,ST214~ST217)を除き、実質的に図8と同様であり、その説明は省略する。
 すなわち、図9のステップST203~ST207,ST209,ST211~ST213およびST218~ST221は、図8のステップST105~ST109,ST110,ST111~ST113およびST114~ST117に対応する。
 図10は、CPUがシステムバスのクロック周波数を変更した後の動作の一例を説明するための図であり、システムバス2のクロック周波数Fsを変更している間に、CPUコア112からシステムバス2へのアクセスが発生した場合の動作を示している。
 システムバス2のクロック周波数Fsの変更中(ST301)に、CPUコア112からスルー回路122に対してリクエスト信号"req"が出力される(ST302)。すなわち、CPUコア112からスルー回路122に対するREQ1が『1』に変化する。ここで、システムバス2のクロック周波数変更中、スルー回路122のセレクタ(アクセスセレクタ)210は『0』を出力し続け、REQ2が『1』になるのを抑制する。
 システムバス2のクロック周波数Fsの変更が完了すると、クロック生成器4から制御回路3に対して信号"clk change done"を出力する(ST303)。制御回路3は、システムバス2のクロック周波数Fsの変更が完了したのを確認して信号"path change"をスルー回路122に出力する(ST304)。
 すなわち、システムバス2のクロック周波数Fsの変更が完了すると、制御回路3からのSEL2=『0』を受信した後、CPUコア112からのREQ1を選択して出力する。これにより、スルー回路122からシステムバス2に対してリクエスト信号"req"が出力される(ST305)。
 なお、システムバス2に転送されたリクエスト信号"req"は、例えば、システムバス2に接続された周辺回路61に出力され、その周辺回路からのアクノリッジ信号"ack"がシステムバス2からスルー回路122を介して(ST306)、CPUコア112に戻される(ST307)。
 これにより、システムバスのクロック切り替え中であっても、各CPUで実行中のプログラムがシステムバスにアクセスするかしないかに関わらず、安全にプログラムの実行を継続させることができる。
 このように、本実施例によれば、例えば、システムバスのクロック周波数を変更する場合、システムバスとの間で信号を遣り取りしていないCPUに対しては、クロック供給を継続してCPU上でのプログラムの実行を継続させることができる。これにより、システムの性能低下を最小限に抑えることが可能になる。
 図11は、制御回路の状態遷移マシンの一例を示す図である。図11に示されるように、制御回路3の状態としては、アイドル("idle"),待ち("wait")および変更("change")の3つが存在する。
 アイドル状態は、システムバスのクロック変更を行っておらず、一定のクロック信号で動作している定常状態である。このアイドル状態において、クロック生成器から"clk change start"=『1』を受信すると、待ち状態に遷移する。
 待ち状態では、"req snoop (REQ SNOOP1~REQ SNOOPm)"=『1』、および、"req stop (REQ STOP1~REQ STOPm)"=『1』を出力し、"SNOOP DONE1~SNOOP DONEm"と"REQ STOP DONE1~REQ STOP DONEm"の全てが『1』になるのを待って、変更状態に遷移する。
 以上、詳述したように、本実施例によれば、半導体集積回路に含まれる複数のCPUにおいて、システムバス或いはいずれかのCPUのクロック周波数を変更する場合、動作可能なCPUはそのまま処理を継続させることができる。
 さらに、クロック周波数の変更により、システムバスのクロック周波数と異なる動作周波数のCPUは、同期化回路を介在させ、また、同じ動作周波数のCPUは直接信号の送受信を行うことで、同期化回路の遅延による性能の低下を最小限に抑えることができる。
 変更状態では、"all req stop done"=『1』を出力し、クロック生成器内の制御レジスタの各CPUのクロック設定値とシステムバスのクロック設定値を読み出す。さらに、CPUiとシステムバスのクロックが同一の場合はCNTi=『1』、また、異なる場合はCNTi=『0』を設定して出力する。そして、"clk change done"が『1』になるのを待ってアイドル状態に遷移する。
 ここに記載されている全ての例および条件的な用語は、読者が、本発明と技術の進展のために発明者により与えられる概念とを理解する際の助けとなるように、教育的な目的を意図したものである。
 また、具体的に記載されている上記の例および条件、並びに、本発明の優位性および劣等性を示すことに関する本明細書における例の構成に限定されることなく、解釈されるべきものである。
 さらに、本発明の実施例は詳細に説明されているが、本発明の精神および範囲から外れることなく、様々な変更、置換および修正をこれに加えることが可能であると解すべきである。
 1  半導体集積回路(LSI)
 2  システムバス(内部バス)
 3  制御回路
 4  クロック生成器
 5  DC-DCコンバータ
 41  制御レジスタ
 42s,421~42m  セレクタ
 61~6n  周辺回路
 101~10m  演算ブロック
 111~11m  CPUコア(演算処理装置、CPUi:CPU1~CPUm)
 121~12m  スルー回路
 131~13m  スヌープ回路
 210  セレクタ(アクセスセレクタ)
 211~216  セレクタ
 221~226  同期化回路
 401~40p  クロック生成ブロック

Claims (15)

  1.  第1クロックで動作するシステムバスと、
     前記システムバスに接続され、第2クロックで動作する第1演算処理装置を含む複数の演算処理装置と、
     前記システムバスおよび前記演算処理装置を制御する制御回路と、を有し、
     前記制御回路は、前記演算処理装置から前記システムバスへのアクセスが発生していないことを確認した後に、前記第1クロックまたは前記第2クロックの周波数を変更する、
     ことを特徴とする半導体集積回路。
  2.  前記各演算処理装置、該演算処理装置に対応して設けられたスルー回路、および、当該演算処理装置に対応して設けられたスヌープ回路は、それぞれ演算ブロックに設けられ、
     前記各演算処理装置のクロック信号は、当該演算処理装置が設けられた演算ブロックに含まれる回路に対して与えられる、
     ことを特徴とする請求項1に記載の半導体集積回路。
  3.  前記スルー回路は、
     前記演算処理装置および前記システムバスにおいて、送信側の信号のクロック周波数を、受信側の信号のクロック周波数に同期させる同期化回路と、
     前記送信側の信号、または、前記同期化回路により前記受信側の信号のクロック周波数に同期された信号のいずれかを選択するセレクタと、を有する、
     ことを特徴とする請求項2に記載の半導体集積回路。
  4.  前記セレクタは、
     前記演算処理装置のクロック周波数と前記システムバスのクロック周波数が異なる場合、前記同期化回路により前記受信側の信号のクロック周波数に同期された信号を選択して出力し、
     前記演算処理装置のクロック周波数と前記システムバスのクロック周波数が等しい場合、前記送信側の信号を選択して出力する、
     ことを特徴とする請求項3に記載の半導体集積回路。
  5.  前記制御回路は、
     前記第1クロックの周波数を変更する際、前記複数の演算処理装置からの全てのアクセスが発生していないことを確認してから実行する、
     ことを特徴とする請求項2乃至請求項4のいずれか一項に記載の半導体集積回路。
  6.  前記制御回路は、
     前記スヌープ回路により検出した前記演算処理装置の全てのアクセスリクエストが発生していないことを確認した後、前記システムバスのクロック周波数を変更する、
     ことを特徴とする請求項5に記載の半導体集積回路。
  7.  前記制御回路は、
     前記第2クロックの周波数を変更する際、前記第1演算処理装置からのアクセスが発生していないことを確認してから実行する、
     ことを特徴とする請求項2乃至請求項4のいずれか一項に記載の半導体集積回路。
  8.  前記制御回路は、
     前記スヌープ回路により検出した前記第1演算処理装置からのアクセスリクエストが発生していないことを確認した後、前記第1演算処理装置のクロック周波数を変更する、
     ことを特徴とする請求項7に記載の半導体集積回路。
  9.  前記各スルー回路は、さらに、
     前記各演算処理装置からのアクセスリクエストに従うことなく、クロック周波数の変更中、前記演算処理装置からのアクセスリクエストを遮断するアクセスセレクタを有する、
     ことを特徴とする請求項2乃至請求項8のいずれか一項に記載の半導体集積回路。
  10.  前記制御回路は、
     前記複数の演算処理装置における第2演算処理装置が前記システムバスに対するアクセスを実行中に、前記複数の演算処理装置における第3演算処理装置が前記システムバスのクロック周波数を変更する際、前記システムバスに対する前記第2演算処理装置のアクセスが完了したのを確認した後、前記システムバスのクロック周波数を変更する、
     ことを特徴とする請求項1乃至請求項9のいずれか一項に記載の半導体集積回路。
  11.  前記複数の演算処理装置および前記システムバスは、それぞれ電源電圧およびクロック周波数が独立に制御される、
     ことを特徴とする請求項1乃至請求項10のいずれか一項に記載の半導体集積回路。
  12.  システムバスおよび該システムバスに接続された複数の演算処理装置を有する半導体集積回路の制御方法であって、
     前記複数の演算処理装置および前記システムバスは、それぞれ電源電圧およびクロック周波数が独立に制御され、
     前記演算処理装置から前記システムバスへのアクセスが発生していないことを確認した後に、前記第1クロックまたは前記第2クロックの周波数を変更する、
     ことを特徴とする半導体集積回路の制御方法。
  13.  システムバスおよび該システムバスに接続された複数の演算処理装置を有する半導体集積回路の制御方法であって、
     前記複数の演算処理装置および前記システムバスは、それぞれ電源電圧およびクロック周波数が独立に制御され、
     前記演算処理装置における第1演算処理装置のクロック周波数を変更する際、該第1演算処理装置からのアクセスが発生していないことを確認してから実行する、
     ことを特徴とする半導体集積回路の制御方法。
  14.  前記システムバスのクロック周波数に等しいクロック周波数で動作する演算処理装置は、当該演算処理装置および前記システムバスにおける送信側の信号を、そのまま受信側の信号として出力し、
     前記システムバスのクロック周波数とは異なるクロック周波数で動作する演算処理装置は、当該演算処理装置および前記システムバスにおける送信側の信号を、受信側の信号のクロック周波数に同期させて出力する、
     ことを特徴とする請求項12または請求項13に記載の半導体集積回路の制御方法。
  15.  前記複数の演算処理装置における、前記システムバスに対するアクセスを行っていない演算処理装置は、
     前記クロック周波数の変更を行っている間、当該演算処理装置で実行中の処理を継続する、
     ことを特徴とする請求項12乃至請求項14のいずれか一項に記載の半導体集積回路の制御方法。
PCT/JP2012/067210 2012-07-05 2012-07-05 半導体集積回路およびその制御方法 WO2014006722A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/JP2012/067210 WO2014006722A1 (ja) 2012-07-05 2012-07-05 半導体集積回路およびその制御方法
JP2014523499A JPWO2014006722A1 (ja) 2012-07-05 2012-07-05 半導体集積回路およびその制御方法
TW102118015A TWI525443B (zh) 2012-07-05 2013-05-22 半導體積體電路及其控制方法
US14/579,808 US20150106635A1 (en) 2012-07-05 2014-12-22 Semiconductor integrated circuit and method of controlling the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/067210 WO2014006722A1 (ja) 2012-07-05 2012-07-05 半導体集積回路およびその制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/579,808 Continuation US20150106635A1 (en) 2012-07-05 2014-12-22 Semiconductor integrated circuit and method of controlling the same

Publications (1)

Publication Number Publication Date
WO2014006722A1 true WO2014006722A1 (ja) 2014-01-09

Family

ID=49881512

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/067210 WO2014006722A1 (ja) 2012-07-05 2012-07-05 半導体集積回路およびその制御方法

Country Status (4)

Country Link
US (1) US20150106635A1 (ja)
JP (1) JPWO2014006722A1 (ja)
TW (1) TWI525443B (ja)
WO (1) WO2014006722A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102474620B1 (ko) * 2016-01-25 2022-12-05 삼성전자주식회사 반도체 장치, 반도체 시스템 및 반도체 장치의 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204634A (ja) * 1991-08-29 1993-08-13 Internatl Business Mach Corp <Ibm> マイクロプロセツサ回路
JPH11184554A (ja) * 1997-12-24 1999-07-09 Mitsubishi Electric Corp クロック制御タイプ情報処理装置
JP2002041452A (ja) * 2000-07-27 2002-02-08 Hitachi Ltd マイクロプロセッサ、半導体モジュール及びデータ処理システム
JP2008084882A (ja) * 2006-09-25 2008-04-10 Toshiba Corp 半導体集積回路
JP2011180708A (ja) * 2010-02-26 2011-09-15 Brother Industries Ltd データ通信制御装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093153B1 (en) * 2002-10-30 2006-08-15 Advanced Micro Devices, Inc. Method and apparatus for lowering bus clock frequency in a complex integrated data processing system
GB2403561A (en) * 2003-07-02 2005-01-05 Advanced Risc Mach Ltd Power control within a coherent multi-processor system
US7640446B1 (en) * 2003-09-29 2009-12-29 Marvell International Ltd. System-on-chip power reduction through dynamic clock frequency
KR100716730B1 (ko) * 2004-06-11 2007-05-14 삼성전자주식회사 중앙 처리 장치의 아이들 상태에서의 시스템 전력 소모절감을 위한 방법 및 그 방법을 적용한 모바일 장치
US7870407B2 (en) * 2007-05-18 2011-01-11 Advanced Micro Devices, Inc. Dynamic processor power management device and method thereof
US8711653B2 (en) * 2012-04-28 2014-04-29 Hewlett-Packard Development Company, L.P. Changing a system clock rate synchronously

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204634A (ja) * 1991-08-29 1993-08-13 Internatl Business Mach Corp <Ibm> マイクロプロセツサ回路
JPH11184554A (ja) * 1997-12-24 1999-07-09 Mitsubishi Electric Corp クロック制御タイプ情報処理装置
JP2002041452A (ja) * 2000-07-27 2002-02-08 Hitachi Ltd マイクロプロセッサ、半導体モジュール及びデータ処理システム
JP2008084882A (ja) * 2006-09-25 2008-04-10 Toshiba Corp 半導体集積回路
JP2011180708A (ja) * 2010-02-26 2011-09-15 Brother Industries Ltd データ通信制御装置

Also Published As

Publication number Publication date
US20150106635A1 (en) 2015-04-16
JPWO2014006722A1 (ja) 2016-06-02
TWI525443B (zh) 2016-03-11
TW201409243A (zh) 2014-03-01

Similar Documents

Publication Publication Date Title
US8312299B2 (en) Method and apparatus for dynamic power management control using serial bus management protocols
US9298212B2 (en) Distributed management of a shared clock source to a multi-core microprocessor
JP2822986B2 (ja) Dma内蔵シングルチップマイクロコンピュータ
KR102467172B1 (ko) 반도체 장치
TWI470439B (zh) 在以正交時脈操作的中央處理器及至少一直接記憶存取週邊設備之間單一埠靜態隨機存取記憶體之頻寬分享
JP4136822B2 (ja) 半導体集積回路装置、クロック制御方法及びデータ転送制御方法
US20040123178A1 (en) Method and apparatus having dynamically scalable clook domains for selectively interconnecting subsystems on a synchronous bus
TWI772300B (zh) 半導體裝置
JP5499693B2 (ja) 半導体集積回路、半導体集積回路の制御方法及びその制御プログラム
WO2014006722A1 (ja) 半導体集積回路およびその制御方法
US20130290768A1 (en) Arithmetic processing device, method for controlling arithmetic processing device, and system
US10248155B2 (en) Semiconductor device including clock generating circuit and channel management circuit
JP2008041106A (ja) 半導体集積回路装置、クロック制御方法及びデータ転送制御方法
US8645602B2 (en) Microcomputer
JP2004094945A (ja) ホストと、ホストよりも大きなレイテンシを有するスレーブデバイス間のインタフェース
JPH0215357A (ja) データ処理装置
US20230213960A1 (en) Paired processing unit architecture for improved microcontroller performance
CN108319326B (zh) 半导体装置
US9170768B2 (en) Managing fast to slow links in a bus fabric
KR20170088749A (ko) 반도체 장치, 반도체 시스템 및 반도체 장치의 동작 방법
JP3980401B2 (ja) メモリアクセス制御システム及びメモリアクセス制御方法
JP2010033314A (ja) バスアクセス回路装置及びバスアクセス方法
CN108268085B (zh) 半导体装置
JP2023070309A (ja) データ転送装置およびデータ転送装置の転送方法
CN115543913A (zh) 片上系统、电子设备和基于片上系统的功率管理方法

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: 12880598

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014523499

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12880598

Country of ref document: EP

Kind code of ref document: A1