WO2012172682A1 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
WO2012172682A1
WO2012172682A1 PCT/JP2011/063925 JP2011063925W WO2012172682A1 WO 2012172682 A1 WO2012172682 A1 WO 2012172682A1 JP 2011063925 W JP2011063925 W JP 2011063925W WO 2012172682 A1 WO2012172682 A1 WO 2012172682A1
Authority
WO
WIPO (PCT)
Prior art keywords
unit
command
instruction
state information
control unit
Prior art date
Application number
PCT/JP2011/063925
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 EP11868012.3A priority Critical patent/EP2722761A1/en
Priority to PCT/JP2011/063925 priority patent/WO2012172682A1/ja
Publication of WO2012172682A1 publication Critical patent/WO2012172682A1/ja
Priority to US14/097,371 priority patent/US20140095841A1/en

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers

Definitions

  • the present invention relates to an arithmetic processing unit and a control method for the arithmetic processing unit.
  • FIG. 10 is a diagram showing a hardware information reading operation inside the CPU according to the prior art.
  • the CPU 900 includes a core unit 901, a core unit 902, a common unit 903, a memory control unit 904, and a test control circuit 905.
  • the CPU 900 is connected to a service processor 910 via a bus 920.
  • the core unit 901 includes FFs (Flip Flops) 901a, 901b, 901c, and 901d that are storage circuits.
  • the core unit 902 includes FFs 902a, 902b, 902c, and 902d.
  • the common unit 903 includes FFs 903a, 903b, 903c, and 903d inside.
  • the memory control unit 904 includes FFs 904a, 904b, 904c, and 904d. These FFs are serially connected to form a scan chain.
  • a failure flag indicating a failure location is stored in the FF. Then, when accessed from the service processor 910, the test control circuit 905 reads the failure flag stored in the FF using the scan chain, and outputs the read failure flag to the service processor 910. Then, the service processor 910 performs failure location analysis using the read failure flag.
  • JP 2005-44361 A JP 2009-236879 A JP-A-6-139112 JP 2010-218367 A
  • the hardware information inside the CPU is acquired via the service processor.
  • the CPU user is not authorized to access the service processor.
  • software such as an OS cannot access hardware information in the CPU.
  • An object of one aspect of the present invention is to provide an arithmetic processing device that can access hardware information in a CPU from a program without using a service processor, and a control method for the arithmetic processing device.
  • the first proposal is an arithmetic processing unit having a circuit unit.
  • the arithmetic processing unit holds state information indicating the state of the circuit unit.
  • the arithmetic processing unit decodes a control instruction generation instruction for generating a control instruction included in the program. Further, the arithmetic processing unit generates a state information read instruction when the decoded control instruction generation instruction is a control instruction generation instruction for generating a state information read instruction for reading state information. Then, the arithmetic processing unit reads the state information based on the generated state information read command and stores it in the register unit that can be read from the program.
  • Hardware information in the CPU can be accessed from a program without using a service processor.
  • FIG. 1 is a block diagram illustrating the configuration of the CPU according to the first embodiment.
  • FIG. 2 is a block diagram showing the configuration of the I2C command execution unit.
  • FIG. 3 is a block diagram showing the configuration of the failure flag latch.
  • FIG. 4A is a diagram showing a data pattern of the ASI command “ASI_CMD_ACCESS_REG”.
  • FIG. 4B is a diagram showing a data pattern of the ASI command “ASI_CMD_RECEIVE_REG”.
  • FIG. 5 is a diagram showing a failure flag read operation in the CPU.
  • FIG. 6 is a diagram for explaining the operation in the failure flag latch.
  • FIG. 7 is a diagram for explaining the operation of the shift register.
  • FIG. 1 is a block diagram illustrating the configuration of the CPU according to the first embodiment.
  • FIG. 2 is a block diagram showing the configuration of the I2C command execution unit.
  • FIG. 3 is a block diagram showing the configuration of the failure flag latch.
  • FIG. 8 is a flowchart showing a processing procedure of ASI command issue processing by the instruction control unit.
  • FIG. 9 is a flowchart illustrating a processing procedure of a failure flag read process by the I2C command execution unit.
  • FIG. 10 is a diagram illustrating a hardware information reading operation inside the CPU according to the related art.
  • FIG. 1 is a block diagram illustrating the configuration of the CPU according to the first embodiment.
  • the CPU 100 is connected to the service processor 10 via an I2C (Inter-Integrated Circuit, registered trademark, hereinafter the same) 101.
  • I2C Inter-Integrated Circuit
  • the connection between the CPU 100 and the service processor 10 is not limited to I2C, and is a JTAG (Joint Test Architecture Group) defined by SPI (Serial Peripheral Interface, registered trademark), MicroWire (registered trademark), IEEE 1149.1. Other buses may be used.
  • the service processor 10 is a system control device that operates independently of the CPU 100 and controls the CPU 100. For example, the service processor 10 monitors the operation status in the CPU 100 or acquires an operation history in the CPU 100 to diagnose whether the operation of the CPU 100 is normal.
  • the CPU 100 includes a common unit 110, a core unit 120, an L2 cache control unit 130, an input / output control unit 140, and a memory control unit 150.
  • a common unit 110 when the core unit 120, the L2 cache control unit 130, the input / output control unit 140, and the memory control unit 150 are generalized and referred to as functional blocks, they are appropriately described.
  • the common unit 110, the core unit 120, the L2 cache control unit 130, the input / output control unit 140, and the memory control unit 150 are generally referred to, they are appropriately described as circuits.
  • the number of core parts which CPU100 has is not limited to this, It can change arbitrarily.
  • the common unit 110 is connected to the service processor 10 by I2C101.
  • the common unit 110 is connected to the core unit 120, the L2 cache control unit 130, the input / output control unit 140, and the memory control unit 150 through the I2C102. That is, the common unit 110 connects the service processor 10 and each functional block by I2C101 and I2C102.
  • the common unit 110 interprets an ASI (Address Space Identifier) command, which is a memory access instruction for accessing an ASI (Address Space Identifier) space that is an alternative memory space received from the core unit 120, and generates a control command. And the common part 110 accesses the hardware information which the common part 110 and each functional block have using the produced
  • the ASI command will be described later.
  • the common unit 110 includes an I2C command interpretation unit 111, an I2C command control unit 112, an I2C command execution unit 113, a failure flag latch 114, an I2C receive register 115, and a flag freeze register 116.
  • the I2C command interpretation unit 111 interprets an ASI command received from the instruction control unit 121 described later, generates data such as a function block to be accessed and a register to be accessed, and transmits the data to the I2C command control unit 112.
  • the I2C command interpretation unit 111 receives from the instruction control unit 121 an ASI command that rewrites status information held in a failure flag latch 114, which will be described later, to specified information, the following processing is executed. That is, the I2C command interpretation unit 111 generates data for rewriting the state information held by the failure flag latch 114 with the specified information. Then, the I2C command interpretation unit 111 transmits the generated data to the I2C command control unit 112.
  • the I2C command interpretation unit 111 when the ISI command interpretation unit 111 receives an ASI command for reading the state information held by the failure flag latch 114 from the instruction control unit 121, the I2C command interpretation unit 111 generates data for reading the state information from the failure flag latch 114. Then, the I2C command interpretation unit 111 transmits the generated data to the I2C command control unit 112.
  • the I2C command control unit 112 receives data from the I2C command interpretation unit 111 and generates a control command based on the received data. Then, the I2C command control unit 112 transmits the generated control command to the I2C command execution unit 113 described later and the designated I2C command execution unit among the I2C command execution units of each functional block. In the following description, a control command generated by the I2C command control unit 112 is appropriately described as an I2C command. Note that the I2C command is an example of a control command transmitted to a circuit connected via the data bus.
  • the I2C command control unit 112 issues an I2C command, transmits it to the I2C command execution unit of each functional block, and rewrites and reads the value of each setting register.
  • the I2C command control unit 112 issues an I2C command and sets a shift number in a shift length register 113b described later.
  • the I2C command control unit 112 generates an I2C command for collecting the failure flag when the ASI command for collecting the failure flag is issued by the instruction control unit 121, and generates the I2C command for the designated I2C command execution unit. Send an I2C command.
  • the I2C command execution unit 113 receives the I2C command from the I2C command control unit 112 and executes an operation based on the received I2C command. For example, the I2C command execution unit 113 reads a register instructed by the I2C command control unit 112 and transfers the read result to the I2C command control unit 112. For example, the I2C command execution unit 113 receives an I2C command from the I2C command control unit 112 and reads a failure flag from the failure flag latch 114. Then, the I2C command execution unit 113 transfers the read failure flag to the I2C receive register 115 described later.
  • the I2C command execution unit 113 receives the I2C command from the I2C command control unit 112, and rewrites the information held in the failure flag latch 114 to the specified information.
  • FIG. 2 is a block diagram showing the configuration of the I2C command execution unit.
  • the I2C command execution unit 113 includes a shift-enb 113a, a shift length register 113b, and a shift register 113c.
  • the shift-enb 113a receives from the I2C command control unit 112 an I2C command “READ-SHIFT-REG” that allows the data held in the shift register 113c to be shifted. Then, the shift-enb 113a converts the received I2C command “READ-SHIFT-REG” into a shift-enb signal and outputs it to the shift register 113c. As a result, the shift register 113c shifts the held data.
  • the shift length register 113b holds the number of scan shifts by the shift register 113c.
  • the number of shifts held by the shift length register 113b is set by the I2C command transmitted by the I2C command control unit 112.
  • the value set in the shift length register 113b is set to the same number of bits as the failure flag latch 114 that reads the failure flag.
  • the value of the shift length register 113b is set to 64 bits.
  • the value set in the shift length register 113b is decremented by one each time one bit of the failure flag is read into the shift register 113c by scan shift.
  • the shift register 113c is a shift register dedicated to a 64-bit failure flag of bit 0 to bit 63, and is connected to the shift-enb 113a and the shift length register 113b. Bit 0 of the shift register 113c is connected to the output terminal of the failure flag latch 114, and bit 63 of the shift register 113c is connected to the input terminal of the failure flag latch 114.
  • the shift register 113c reads the failure flag from the failure flag latch 114 and holds the read failure flag when receiving the shift-enb signal that is a signal for allowing the data to be shifted from the shift-enb 113a.
  • the data stored in the shift register 113c is transferred to the I2C receive register 115.
  • the shift register 113c may hold a value designated by the service processor 10.
  • the failure flag latch 114 holds state information indicating the state of the circuit.
  • the failure flag latch 114 holds a failure flag indicating a failure state of the common unit 110.
  • the configuration of the failure flag latch will be described with reference to FIG. FIG. 3 is a block diagram showing the configuration of the failure flag latch.
  • the failure flag latch 114 has a loop, ERR_LV1_loop1, ERR_LV2_loop1, and ERR_LV2_loop2 formed from a plurality of FFs (Flip Flops).
  • each loop included in the failure flag latch 114 is selectively used according to the degree of failure.
  • ERR_LV1 is used for a failure indicating a serious failure that affects the operation of the system
  • ERR_LV2 is used for a minor error that does not affect the operation of the system.
  • Each FF is used in association with the type of failure. Note that the number of loops is determined according to the number of FFs that store a failure.
  • ERR_LV2 is described as having two loops, ERR_LV2_loop1 and ERR_LV2_loop2.
  • ERR_LV1_loop1 has FF114a-1, FF114a-2, FF114a-3, ..., FF114a-n.
  • ERR_LV2_loop1 includes FF114b-1, FF114b-2, FF114b-3,..., FF114b-n, and ERR_LV2_loop2 includes FF114c-1, FF114c-2, FF114c-3,.
  • n is an arbitrary natural number.
  • the I2C receive register 115 is a register that holds 64-bit data read by the scan shift control of the I2C command execution unit 113.
  • the data held in the I2C receive register 115 can be read out to a program such as an OS by issuing an ASI command by an instruction control unit 121 described later. That is, the I2C receive register 115 is a register accessible from software.
  • the flag freeze register 116 holds information indicating whether or not the change of the value held in the failure flag latch 114 or the failure flag latch included in each functional block is permitted.
  • the flag freeze register 116 indicates “1” indicating that the update of the value of the failure flag held in the failure flag latch 114 is suppressed, and “0” indicates that the update of the value of the failure flag held in the failure flag latch is permitted. Is stored. In other words, the failure flag latch 114 and the failure flag latch included in each functional block continue to hold the state information to be held without updating while “1” is stored in the flag freeze register 116.
  • the core unit 120 includes an instruction control unit 121, an I2C command execution unit 122, and a failure flag latch 123.
  • the core unit 120 reads and executes an instruction from an L1 cache (not shown).
  • the instruction control unit 121 decodes the instruction of the program being executed read from the L1 cache (not shown) included in the core unit 120, and executes the decoded instruction.
  • the instruction control unit 121 issues an ASI command when the read instruction is an instruction to issue an I2C command.
  • ASI command will be described.
  • the details of the ASI command are described in detail in Japanese Patent Application Laid-Open No. 2010-218367, and therefore, the ASI command will be briefly described here.
  • the ASI command is a command for designating an identifier called an 8-bit ASI space number for identifying the ASI space.
  • the ASI space number can specify an operation for converting a virtual address into a physical address, or can specify reading / writing of a register included in the CPU 100.
  • one new ASI space number is defined, and two virtual addresses are assigned to the newly defined ASI space number.
  • the ASI command designates the newly assigned ASI space number and virtual address, so that the common unit 110 executes the I2C command as access to the designated virtual address.
  • the ASI command has two virtual addresses of “ASI_CMD_ACCESS_REG” and “ASI_CMD_RECEIVE_REG”.
  • ASI_CMD_ACCESS_REG is an instruction for issuing an I2C command
  • ASI_CMD_RECEIVE_REG is an instruction for reading a result of the issued I2C command.
  • FIG. 4A is a diagram showing a data pattern of the ASI command “ASI_CMD_ACCESS_REG”. As shown in FIG. 4A, “ASI_CMD_ACCESS_REG” has a data pattern of 64-bit data and issues an I2C command.
  • Bit 63 is a LOCK bit and indicates that an I2C command is being executed. That is, bit 63 indicates the designation of exclusive control for avoiding I2C command contention.
  • Bits 62 to 56 indicate LOCK_ID.
  • LOCK_ID is information indicating a functional block executing the I2C command, and a value designated in advance is stored in each functional block.
  • Bits 55 to 49 indicate the code of the I2C command.
  • Bit 48 is Read / Write, and stores information for designating reading or writing to the register.
  • Bits 47 to 32 are not used in this embodiment.
  • Bit 31 to bit 0 indicate an argument to the I2C command.
  • FIG. 4B is a diagram showing a data pattern of the ASI command “ASI_CMD_RECEIVE_REG”.
  • ASI_CMD_RECEIVE_REG is a command for reading the result of the I2C command, and the data pattern of 64-bit data accompanying the reading is defined as follows.
  • Bit 63 indicates a LOCK bit.
  • the LOCK bit information indicating whether or not the execution right of the I2C command has been acquired as a result of the exclusive control is stored.
  • Bits 62 to 56 indicate LOCK_ID.
  • This LOCK_ID field stores information indicating which functional block is being accessed.
  • Bits 55 to 54 indicate BUSY / NACK.
  • BUSY indicates that the I2C command is being executed.
  • NACK Negative ACKnowledgement
  • ASI_CMD an error code indicating that an error has occurred in the execution of ASI_CMD is set in bits 31 to 28.
  • Bit 53 to bit 32 are unused in this embodiment.
  • Bit 31 to bit 0 are a return value of the I2C command and are read data.
  • the instruction control unit 121 executes the following process. That is, the instruction control unit 121 issues an ASI command to cause the common unit 110 to generate an I2C command and cause the I2C command execution unit to execute the generated I2C command. In this case, the instruction control unit 121 transfers the ASI data [63: 0] to the I2C command interpretation unit 111.
  • the instruction control unit 121 can read and write the registers in the CPU 100 by designating a specific ASI space number in advance.
  • the I2C command execution unit 122 receives the I2C command from the I2C command control unit 112 and reads the failure flag from the failure flag latch 123. Then, the I2C command execution unit 122 transfers the read failure flag to the I2C receive register 115.
  • the configuration of the I2C command execution unit 122 is the same as the configuration of the I2C command execution unit 113, and a description thereof will be omitted.
  • the configuration of the failure flag latch 123 is the same as the configuration of the failure flag latch 114, and thus the description thereof is omitted.
  • the L2 cache control unit 130 has an L2 cache (not shown), and determines whether data or an instruction requested from the core unit 120 exists in the L2 cache. If the L2 cache control unit 130 determines that the requested data or instruction exists in the L2 cache, the L2 cache control unit 130 reads the requested data or instruction from the L2 cache and transfers it to the L1 cache.
  • the L2 cache control unit 130 includes an I2C command execution unit 131 and a failure flag latch 132.
  • the I2C command execution unit 131 receives the I2C command from the I2C command control unit 112 and reads the failure flag from the failure flag latch 132. Then, the I2C command execution unit 131 transfers the read failure flag to the I2C receive register 115.
  • the configuration of the I2C command execution unit 131 is the same as the configuration of the I2C command execution unit 113, and a description thereof will be omitted.
  • the configuration of the failure flag latch 132 is the same as the configuration of the failure flag latch 114, and thus the description thereof is omitted.
  • the input / output control unit 140 has an interface for connecting a CPU and an input / output device (not shown), and controls data exchange between the CPU and the input / output device.
  • the input / output control unit 140 includes an I2C command execution unit 141 and a failure flag latch 142.
  • the I2C command execution unit 141 receives the I2C command from the I2C command control unit 112 and reads the failure flag from the failure flag latch 142. Then, the I2C command execution unit 141 transfers the read failure flag to the I2C receive register 115.
  • the configuration of the I2C command execution unit 141 is the same as the configuration of the I2C command execution unit 113, and a description thereof will be omitted.
  • the configuration of the failure flag latch 142 is the same as the configuration of the failure flag latch 114, and thus the description thereof is omitted.
  • the memory control unit 150 controls data exchange with a main storage device (not shown). Further, the memory control unit 150 includes an I2C command execution unit 151 and a failure flag latch 152. For example, the I2C command execution unit 151 receives the I2C command from the I2C command control unit 112 and reads the failure flag from the failure flag latch 152. Then, the I2C command execution unit 151 transfers the read failure flag to the I2C receive register 115. Note that the configuration of the I2C command execution unit 151 is the same as the configuration of the I2C command execution unit 113, and a description thereof will be omitted. Further, the configuration of the failure flag latch 152 is the same as the configuration of the failure flag latch 114, and thus description thereof is omitted.
  • FIG. 5 is a diagram showing a failure flag read operation in the CPU.
  • the failure flag read operation of the core unit 120 will be described. This operation is the same as the failure flag read operation of the common unit 110, the L2 cache control unit 130, the input / output control unit 140, and the memory control unit 150. It is.
  • the instruction control unit 121 of the CPU 100 issues “ASI_CMD_ACCESS_REG” instructing reading of a failure flag, and transmits ASI data [63: 0] to the I2C command interpretation unit 111 (S1). Then, the I2C command interpretation unit 111 decodes the received ASI data, generates data such as a function block to be accessed and a register to be accessed, and transmits the data to the I2C command control unit 112 (S2).
  • the I2C command control unit 112 converts the received data into an I2C command and transmits it to the I2C command execution unit 122 (S3). Subsequently, the I2C command execution unit 122 starts reading the failure flag instructed from the failure flag latch 123 (S4), and acquires the failure flag (S5). Then, the I2C command execution unit 122 transmits the read result to the I2C receive register 115 (S6).
  • the I2C receive register 115 holds the failure flag received from the I2C command execution unit 122 in data [63: 0].
  • the instruction control unit 121 issues the “ASI_CMD_RECEIVE_REG” instruction to read out data [31: 0] of the I2C receive register 115 and stores it in the lower 32 bits of the I2C receive register 115. Subsequently, the instruction control unit 121 issues “ASI_CMD_ACCESS_REG” by designating CODE “02”, thereby reading data [63:32] of the I2C receive register 115, and 32 on the upper side of the I2C receive register 115. Store in bits. That is, the instruction control unit 121 stores the failure flag in the I2C receive register 115 accessible from the program by executing the ASI command. In this way, the instruction control unit 121 holds the failure flag acquired by executing the ASI command in the I2C receive register 115 that can be used from the program.
  • FIG. 6 is a diagram for explaining the operation in the failure flag latch.
  • the ERR_LV1_loop1 of the failure flag latch 114 included in the common unit 110 will be described as an example, but the processing operation is the same in the failure flag latch included in each functional block.
  • ERR_LV1_loop1 of the failure flag latch 114 includes FF 114a-1,... FF 114a-n.
  • the FF 114 a-1 includes an AND circuit (logical product circuit) 201-1, an AND circuit 202-1, an AND circuit 203-1, an OR circuit (logical sum circuit) 204-1, and an FF 205-1.
  • the AND circuit 201-1 receives the inverted flag freeze signal, the inverted loop_0_shift-enb signal, and the error signal, and outputs a logical product of the received values to the OR circuit 204-1.
  • the AND circuit 202-1 accepts the loop_0_shift-enb signal and the data from the shift register 113c, and outputs a logical product of the accepted values to the OR circuit 204-1.
  • the AND circuit 203-1 receives the inverted loop_0_shift-enb signal, the inverted clear error flag signal, and the output from the FF 205-1, and outputs the logical product of the received values to the OR circuit 204-1. .
  • the OR circuit 204-1 accepts outputs from any two of the AND circuit 201-1, the AND circuit 202-1 and the AND circuit 203-1, and outputs a logical sum of the accepted values. Then, the OR circuit 204-1 accepts the output logical sum and the output from the remaining AND circuit, and outputs the logical sum of the accepted values to the FF 205-1.
  • the FF 205-1 outputs the received value to the AND circuit 203-1 and the adjacent AND circuit 202 of the FF.
  • the configuration of the FF 114a-n is the same as the configuration of the FF 114a-1, and a description thereof will be omitted.
  • failure flag latch 114 does not receive a signal permitting data shift.
  • the AND circuit 201-1 receives the inverted flag freeze signal “1”, the inverted loop_0_shift-enb signal “1”, and the error signal “1”, and sets “1” to the OR circuit 204-1. Output.
  • the AND circuit 202-1 does not accept any signal and outputs “0” to the OR circuit 204-1.
  • the AND circuit 203-1 receives the inverted loop_0_shift-enb “1”, the inverted clear error flag signal “1”, and the output “1” of the FF 205-1, and the OR circuit 204-1 receives “1”. Is output.
  • the OR circuit 204-1 receives “1” from the AND circuit 201-1, “0” from the AND circuit 202-1, “1” from the AND circuit 203-1, and outputs “1” to the FF 205-1. To do. Note that “1” received by the FF 205-1 is maintained when the FF 205-1 outputs “1” to the AND circuit 203-1.
  • the AND circuit 201-1 receives the inverted flag freeze signal “0”, the inverted loop_0_shift-enb signal “0”, and the error signal “0”, and sets “0” to the OR circuit 204-1. Output.
  • the AND circuit 202-1 receives the loop_0_shift-enb signal “1” and “0” stored in the shift register 113c, and outputs “0” to the OR circuit 204-1.
  • the AND circuit 203-1 receives the inverted loop_0_shift-enb signal “0”, the inverted clear error flag signal “1”, and the output “1” of the FF 205-1, and the OR circuit 204-1 receives “0”. Is output.
  • the OR circuit 204-1 receives “0” from all of the AND circuit 201-1, the AND circuit 202-1 and the AND circuit 203-1 and outputs “0” to the FF 205-1. Further, “1” stored in the FF 205-1 is output to the AND circuit 202-2 included in the adjacent FF 114a-2, and is shifted to the FF 205-2.
  • the failure flag latch 114 when the failure flag latch 114 receives a signal permitting shifting of data from the shift register 113c, the failure flag latch 114 shifts the data by the number held in the shift length register 113b. As a result, the data held in the failure flag latch 114 is shifted to the shift register 113c.
  • FIG. 7 is a diagram for explaining the operation of the shift register.
  • the shift register 113c included in the common unit 110 is described as an example, but the processing operation is the same in the shift register included in each functional block.
  • the shift register 113c includes an AND circuit 401-1, an AND circuit 402-1, an AND circuit 403-1, an OR circuit 404-1, and an FF 405-1.
  • the shift register 113c includes an AND circuit 401-n, an AND circuit 402-n, an AND circuit 403-n, an OR circuit 404-n, and an FF 405-n.
  • the AND circuit 401-1 receives the I2C_WRITE_VAL signal, the I2C_WRITE_DATA [0] signal, and the inverted shift-enb signal, and outputs a logical product of the received values to the OR circuit 404-1.
  • the AND circuit 402-1 accepts the shift-enb signal and the data from the selected loop, and outputs a logical product of the accepted values to the OR circuit 404-1.
  • the AND circuit 403-1 receives the inverted shift-enb signal, the inverted I2C_WRITE_VAL signal, and the output from the FF 405-1, and outputs the logical product of the received values to the OR circuit 404-1.
  • the OR circuit 404-1 accepts outputs from any two of the AND circuit 401-1, the AND circuit 402-1, and the AND circuit 403-1 and outputs a logical sum of the accepted values. Then, the OR circuit 404-1 receives the output logical sum and the output from the remaining AND circuit, and outputs the logical sum of the received values to the FF 405-1. The FF 405-1 outputs the received value to the AND circuit 402-2 adjacent to the AND circuit 403-1.
  • the AND circuit 401-1 receives the inverted shift-enb signal “1” and outputs “0” to the OR circuit 404-1.
  • the AND circuit 402-1 does not accept any signal and outputs “0” to the OR circuit 404-1.
  • the AND circuit 403-1 receives the inverted shift-enb signal “1”, the inverted I2C_WRITE_VAL signal “1”, and the output “0” of the FF 405-1, and sets “0” to the OR circuit 404-1. Output.
  • the OR circuit 404-1 receives “0” from all of the AND circuit 401-1, the AND circuit 402-1, and the AND circuit 403-1 and outputs “0” to the FF 405-1. Note that “0” received by the FF 405-1 is maintained when the FF 405-1 outputs “0” to the AND circuit 403-1.
  • the AND circuit 401-1 receives the inverted shift-enb signal “0” and outputs “0” to the OR circuit 404-1.
  • the AND circuit 402-1 receives the shift-enb signal “1” and “1” stored in the FF 114a-n, and outputs “1” to the OR circuit 404-1.
  • the AND circuit 403-1 receives the inverted shift-enb signal “0”, the inverted I2C_WRITE_VAL signal “1”, and the output “0” of the FF 405-1, and sets “0” to the OR circuit 404-1. Output.
  • the OR circuit 404-1 receives “0” from the AND circuit 401-1, “1” from the AND circuit 402-1, and “0” from the AND circuit 403-1, and outputs “1” to the FF 405-1. To do. Further, “0” stored in the FF 405-1 is output to the adjacent AND circuit 402-2 and shifted to the FF 405-2.
  • the shift register 113c when the shift register 113c receives a signal permitting shifting of data from the shift-enb 113a, the shift register 113c shifts the data by the number held in the shift length register 113b. As a result, the data held in the failure flag latch 114 is shifted to the shift register 113c.
  • FIG. 8 illustrates the processing procedure of the ASI command issuance processing by the instruction control unit
  • FIG. 9 illustrates the processing procedure of the failure flag read processing by the I2C command execution unit.
  • FIG. 8 is a flowchart showing a processing procedure of ASI command issue processing by the instruction control unit.
  • the instruction control unit 121 issues an “ASI_CMD_RECEIVE_REG” instruction (step S101). Then, the instruction control unit 121 uses asi_cmd_receive_reg. The LOCK bit is read and it is determined whether or not the read value is “0” (step S102).
  • step S102 when the instruction control unit 121 determines that the read value is not “0” (step S102, No), the instruction control unit 121 proceeds to step S101. That is, in the instruction control unit 121, another processor unit or the service processor 100 is executing an I2C command. Therefore, when the read value is not “0”, the instruction control unit 121 waits for completion of the I2C command by another processor unit or the service processor 100. Then, the instruction control unit 121 issues the I2C command after completion of the I2C command by the other processor unit or the service processor 100. Therefore, the instruction control unit 121 repeats issuing the “ASI_CMD_RECEIVE_REG” instruction at a predetermined interval until the read value becomes “0”.
  • the instruction control unit 121 issues an “ASI_CMD_RECEIVE_REG” instruction (step S104). Then, the instruction control unit 121 uses asi_cmd_receive_reg. The LOCK bit and LOCK_ID are read, and it is determined whether or not the read value is “1” and the specified LOCK_ID (step S105).
  • Step S101 when the instruction control unit 121 determines that the read value is “1” and one of the two conditions of the specified LOCK_ID is not satisfied (No in Step S105), the instruction control unit 121 proceeds to Step S101. In this case, it means that acquisition of the execution right of “ASI_CMD_ACCESS_REG” issued in step S103 has failed and the instruction has not been executed.
  • step S105 when it is determined that the two conditions are satisfied (step S105, Yes), the instruction control unit 121 issues an “ASI_CMD_RECEIVE_REG” instruction (step S106).
  • step S108 determines whether the command issued in step S103 is a Read command for reading the state of the functional block.
  • step S109 if the command control unit 121 determines that the command is a Read command (Yes in step S109), it reads data [31: 0] (step S110), and proceeds to step S111. On the other hand, if the command control unit 121 determines that the command is not a Read command (No in step S109), the command control unit 121 proceeds to step S111.
  • the command control unit 121 proceeds to step S114.
  • step S113 determines that a soft error has occurred (step S115), and ends the process. In this case, the instruction control unit 121 notifies the service processor 10 that a soft error has occurred.
  • FIG. 9 is a flowchart illustrating a processing procedure of a failure flag read process by the I2C command execution unit.
  • the I2C command execution unit executes processing upon receiving access from the I2C command control unit 112.
  • the I2C command execution unit of the functional block that reads the failure flag sets the flag freeze register 116 to “1” (step S201). Then, the I2C command execution unit determines the number of shifts in the shift length register (step S202), and sets the SHIFT_enb signal to “1” (step S203).
  • the failure flag connected to LOOP0 is selected and read as 64-bit data into the shift register. Further, when 64-bit data is read out to the shift register, the SHIFT_enb signal becomes “0”.
  • the I2C command execution unit transfers the read data to the I2C receive register accessible by the program included in the I2C command control unit (step S204). Further, the I2C command execution unit determines whether or not an access for reading a failure flag from another loop has been received (step S205). If the I2C command execution unit determines that access to read a failure flag from another loop has been received (step S205, Yes), the process proceeds to step S202, and a failure flag read process is executed.
  • step S205 when the I2C command execution unit determines that access for reading the failure flag from another loop is not accepted (No in step S205), the flag freeze register 116 is set to “0” (step S206), and the process is performed. finish.
  • the common unit 110 and each functional block have the I2C command execution unit.
  • the I2C command control unit 112 generates an I2C command for recovering the failure flag when the instruction control unit 121 issues an ASI command for recovering the failure flag, and the generated I2C command is used for the common unit 110 and each functional block. Send to.
  • the I2C command execution unit can read the failure flag held in the failure flag latch. That is, in the CPU 100 according to the first embodiment, the failure flag of the CPU 100 can be read without scanning out the failure flag from the service processor 10 using the scan chain.
  • each function block determines asi_cmd_access_reg. Control can be performed by writing a value designated in advance to each functional block in LOCK_ID.
  • the hardware information can be read out by accessing the I2C command execution unit from the software via the I2C control unit even without a service processor. Therefore, the CPU 100 can be set by the CPU 100 alone without using the service processor. Further, since the CPU setting can be changed, the CPU configuration can be changed to match the software. As a result, the processing performance of the CPU can be improved.
  • the software can read the hardware information of the CPU, it becomes possible to avoid a fatal failure from the obtained failure information.
  • the function for controlling the CPU hardware settings can be reduced, so that the cost can be reduced by simplifying the service processor.
  • the present invention may be implemented in various different forms other than the above-described embodiments. Accordingly, in the second embodiment, another embodiment included in the present invention will be described.
  • the present invention can also be used for debugging the error control logic to guarantee the quality of the circuit.
  • a value with a service processor for example, “0 ⁇ 123456789abcdef” is written in data [63: 0] of the shift register included in the functional block.
  • the number of failure flag latches connected to the I2C command execution unit is also written to the shift length register.
  • the I2C command control unit 112 sets “1” in the flag freeze register so that the failure flag is not updated. Subsequently, the I2C command control unit 112 issues a command for reading the failure flag latch until the value of the shift length register becomes “0”.
  • the service processor writes “1” in any bit of the shift register. Then, the I2C command control unit 112 sets the freeze signal to “1” so that the failure flag register is not updated. Subsequently, the numbers individually assigned to the FFs to be subjected to the pseudo failure of the failure flag latch are written to the shift length register and a read command is issued. As a result, the value written in the shift register is shifted to the FF that is the target of causing the pseudo failure of the failure flag register, and the value of the FF that is the target of causing the pseudo failure is changed to “1”. By this method, it is possible to simulate the operation when the CPU is faulty.
  • the information stored in the illustrated storage unit is only an example, and it is not always necessary to store the information as illustrated.
  • each illustrated component is functionally conceptual and does not necessarily need to be physically configured as illustrated.
  • the I2C command interpretation unit 111 and the I2C command control unit 112 may be integrated.
  • Service processor 100 CPU 110 Common part 111 I2C command interpretation part 112 I2C command control part 113, 122, 131, 141, 151 I2C command execution part 113a shift-enb 113b Shift length register 113c Shift register 114, 123, 132, 142, 152 Fault flag latch 115 I2C receive register 116 Flag freeze register 120 Core unit 121 Instruction control unit 130 L2 cache control unit 140 I / O control unit 150 Memory control unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

 本願の開示するCPU(100)は、命令制御部(121)とI2Cコマンド制御部(112)とI2Cコマンド実行部(122)とを有する。命令制御部(121)は、プログラムに含まれる、制御命令を生成するための制御命令生成命令をデコードする。I2Cコマンド制御部(112)は、命令制御部(121)がデコードした制御命令生成命令が、故障フラグラッチ(123)からの状態情報を読み出す状態情報読出命令を生成する制御命令生成命令である場合に、状態情報読出命令を生成する。I2Cコマンド実行部(122)は、I2Cコマンド制御部(112)が生成した状態情報読出命令に基づき、故障フラグラッチ(123)から状態情報を読出して、プログラムから読出し可能なI2Cレシーブレジスタ(115)に格納する。

Description

演算処理装置及び演算処理装置の制御方法
 本発明は、演算処理装置及び演算処理装置の制御方法に関する。
 従来、演算処理装置であるCPU(Central Processing Unit)内部のハードウェア情報は、サービスプロセッサがCPUにアクセスすることによって読み出される。図10を用いて、従来技術に係るCPU内部のハードウェア情報の読み出し動作を説明する。
 図10は、従来技術に係るCPU内部のハードウェア情報の読み出し動作を示す図である。図10に示すように、CPU900は、コア部901、コア部902、共通部903、メモリ制御部904、テスト制御回路905を有する。また、CPU900は、サービスプロセッサ(Service Processor)910とバス920を介して接続されている。
 コア部901は、内部に記憶回路であるFF(Flip Flop)901a、901b、901c、901dを有する。コア部902は、内部にFF902a、902b、902c、902dを有する。共通部903は、内部にFF903a、903b、903c、903dを有する。また、メモリ制御部904は、内部にFF904a、904b、904c、904dを有する。これらのFFは、シリアルに接続されてスキャンチェーンを形成する。
 また、CPU900の内部に故障が発生した場合、FFには故障箇所を示す故障フラグが格納される。そして、テスト制御回路905は、サービスプロセッサ910からアクセスされた場合、スキャンチェーンを使用して、FFに格納される故障フラグを読み出し、読み出した故障フラグをサービスプロセッサ910に出力する。そして、サービスプロセッサ910は、読み出した故障フラグを用いて故障箇所の解析を実行する。
特開2005-44361号公報 特開2009-236879号公報 特開平6-139112号公報 特開2010-218367号公報
 しかしながら、上述した従来の技術では、OS(Operating System)などのプログラムからCPU内部のハードウェア情報にアクセスすることができないという課題があった。
 具体的には、CPU内部のハードウェア情報は、サービスプロセッサを介して取得される。しかし、CPUのユーザは、サービスプロセッサへのアクセスを許可されていない。このため、OSなどのソフトウェアは、CPU内部のハードウェア情報にアクセスすることができない。
 1つの側面では、サービスプロセッサを用いずに、プログラムからCPU内部のハードウェア情報にアクセスすることができる演算処理装置及び演算処理装置の制御方法を提供することを目的とする。
 第1の案では回路部を有する演算処理装置である。演算処理装置は、回路部の状態を示す状態情報を保持する。また、演算処理装置は、プログラムに含まれる、制御命令を生成するための制御命令生成命令をデコードする。また、演算処理装置は、デコードした制御命令生成命令が、状態情報を読み出す状態情報読出命令を生成する制御命令生成命令である場合に、状態情報読出命令を生成する。そして、演算処理装置は、生成した状態情報読出命令に基づき、状態情報を読出して、プログラムから読出し可能なレジスタ部に格納する。
 サービスプロセッサを用いずに、プログラムからCPU内部のハードウェア情報にアクセスすることができる。
図1は、実施例1に係るCPUの構成を示すブロック図である。 図2は、I2Cコマンド実行部の構成を示すブロック図である。 図3は、故障フラグラッチの構成を示すブロック図である。 図4Aは、ASIコマンド『ASI_CMD_ACCESS_REG』のデータパターンを示す図である。 図4Bは、ASIコマンド『ASI_CMD_RECEIVE_REG』のデータパターンを示す図である。 図5は、CPUにおける故障フラグの読み出し動作を示す図である。 図6は、故障フラグラッチにおける動作を説明する図である。 図7は、シフトレジスタの動作を説明する図である。 図8は、命令制御部によるASIコマンド発行処理の処理手順を示すフローチャートである。 図9は、I2Cコマンド実行部による故障フラグ読み出し処理の処理手順を示すフローチャートである。 図10は、従来技術に係るCPU内部のハードウェア情報の読み出し動作を示す図である。
 以下に、本願の開示する演算処理装置及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
 実施例1では、図1から図9を用いて、CPUの構成、処理動作、処理手順、効果などについて説明する。
[CPUの構成]
 図1を用いて、実施例1に係るCPUの構成を説明する。図1は、実施例1に係るCPUの構成を示すブロック図である。図1に示すように、CPU100は、サービスプロセッサ10とI2C(Inter-Integrated Circuit、登録商標、以下同様)101を介して接続されている。なお、CPU100とサービスプロセッサ10との接続はI2Cに限定されるものではなく、SPI(Serial Peripheral Interface、登録商標)、MicroWire(登録商標)、IEEE1149.1で規定されるJTAG(Joint Test Architecture Group)などの他のバスであってもよい。
 サービスプロセッサ10は、CPU100とは独立に動作し、CPU100の制御を行うシステム制御装置である。例えば、サービスプロセッサ10は、CPU100内の動作状況を監視したり、CPU100内の動作履歴を取得したりして、CPU100の動作が正常であるか否かを診断する。
 CPU100は、共通部110と、コア部120と、L2キャッシュ制御部130と、入出力制御部140と、メモリ制御部150とを有する。また、以下の説明では、コア部120、L2キャッシュ制御部130、入出力制御部140、メモリ制御部150のそれぞれを一般化して称する場合には、機能ブロックと適宜記載する。また、共通部110、コア部120、L2キャッシュ制御部130、入出力制御部140、メモリ制御部150のそれぞれを一般化して称する場合には、回路と適宜記載する。なお、CPU100が有するコア部の数はこれに限定されるものではなく、任意に変更可能である。
 共通部110は、I2C101によって、サービスプロセッサ10と接続されている。また、共通部110は、I2C102によって、コア部120、L2キャッシュ制御部130、入出力制御部140、メモリ制御部150と接続されている。すなわち、共通部110は、I2C101及びI2C102によってサービスプロセッサ10と各機能ブロックとを接続する。
 そして、共通部110は、コア部120から受信した代替メモリ空間であるASI(Address Space Identifier)空間をアクセスするメモリアクセス命令であるASI(Address Space Identifier)コマンドを解釈し、制御コマンドを生成する。そして、共通部110は、生成した制御コマンドを用いて、共通部110や各機能ブロックが有するハードウェア情報にアクセスする。また、共通部110は、サービスプロセッサ10からもアクセスを受付け、共通部110や各機能ブロックが有するハードウェア情報にアクセスする。なお、ASIコマンドについては後述する。
 次に、共通部110の構成について説明する。図1に示すように、共通部110は、I2Cコマンド解釈部111とI2Cコマンド制御部112とI2Cコマンド実行部113と故障フラグラッチ114とI2Cレシーブレジスタ115とフラグフリーズレジスタ116とを有する。
 I2Cコマンド解釈部111は、後述する命令制御部121から受信したASIコマンドを解釈し、アクセスする機能ブロックやアクセスするレジスタなどのデータを生成して、I2Cコマンド制御部112に送信する。
 例えば、I2Cコマンド解釈部111は、後述する故障フラグラッチ114が保持する状態情報を指定された情報に書き換えるASIコマンドを命令制御部121から受信した場合、以下の処理を実行する。すなわち、I2Cコマンド解釈部111は、故障フラグラッチ114が保持する状態情報を指定された情報に書き換えるデータを生成する。そして、I2Cコマンド解釈部111は、生成したデータをI2Cコマンド制御部112に送信する。
 また、I2Cコマンド解釈部111は、故障フラグラッチ114が保持する状態情報を読み出すASIコマンドを命令制御部121から受信した場合、故障フラグラッチ114から状態情報を読み出すデータを生成する。そして、I2Cコマンド解釈部111は、生成したデータをI2Cコマンド制御部112に送信する。
 I2Cコマンド制御部112は、I2Cコマンド解釈部111からデータを受信し、受信したデータに基づいて制御コマンドを生成する。そして、I2Cコマンド制御部112は、後述するI2Cコマンド実行部113や各機能ブロックのI2Cコマンド実行部のうち指定されたI2Cコマンド実行部に生成した制御コマンドを送信する。なお、以降の説明では、I2Cコマンド制御部112が生成する制御コマンドをI2Cコマンドと適宜記載する。なお、I2Cコマンドは、データバスを介して接続される回路に対して送信される制御命令の一例である。
 例えば、I2Cコマンド制御部112は、I2Cコマンドを発行し、各機能ブロックのI2Cコマンド実行部に送信して、それぞれの設定レジスタの値の書き換え及び読み出しを行う。一例を挙げると、I2Cコマンド制御部112は、I2Cコマンドを発行して、後述するシフトレングスレジスタ113bにシフト数を設定する。
 また、I2Cコマンド制御部112は、命令制御部121によって故障フラグを回収するASIコマンドが発行された場合、故障フラグを回収するI2Cコマンドを生成し、指定されたI2Cコマンド実行部に対して生成したI2Cコマンドを送信する。
 I2Cコマンド実行部113は、I2Cコマンド制御部112からI2Cコマンドを受信し、受信したI2Cコマンドに基づいて動作を実行する。例えば、I2Cコマンド実行部113は、I2Cコマンド制御部112によって指示されたレジスタを読み出し、読み出した結果をI2Cコマンド制御部112に転送する。一例を挙げると、I2Cコマンド実行部113は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ114から故障フラグを読み出す。そして、I2Cコマンド実行部113は、読み出した故障フラグを後述するI2Cレシーブレジスタ115に転送する。
 また、I2Cコマンド実行部113は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ114が保持する情報を指定された情報に書き換える。
 図2を用いて、I2Cコマンド実行部113の構成を説明する。図2は、I2Cコマンド実行部の構成を示すブロック図である。図2に示すように、I2Cコマンド実行部113は、shift-enb113a、シフトレングスレジスタ113b、シフトレジスタ113cを有する。
 shift-enb113aは、シフトレジスタ113cに保持されるデータをシフトさせることを許可するI2Cコマンド「READ-SHIFT-REG」をI2Cコマンド制御部112から受信する。そして、shift-enb113aは、受信したI2Cコマンド「READ-SHIFT-REG」をshift-enb信号に変換してシフトレジスタ113cに出力する。この結果、シフトレジスタ113cは、保持するデータをシフトさせる。
 シフトレングスレジスタ113bは、シフトレジスタ113cによるスキャンシフトのシフト数を保持する。ここで、シフトレングスレジスタ113bが保持するシフト数は、I2Cコマンド制御部112により送信されるI2Cコマンドによって設定される。例えば、故障フラグラッチ114から故障フラグを読み出す場合、シフトレングスレジスタ113bに設定された値は、故障フラグを読み出す故障フラグラッチ114が有するビット数と同数に設定される。言い換えると、故障フラグラッチ114に64ビットのデータが保持されている場合、シフトレングスレジスタ113bの値は64ビットに設定される。そして、シフトレングスレジスタ113bに設定された値は、シフトレジスタ113cに故障フラグをスキャンシフトにより1ビット読み出すごとに1つずつ減算される。
 シフトレジスタ113cは、ビット0~ビット63の64ビットの故障フラグ専用のシフトレジスタであり、shift-enb113a、シフトレングスレジスタ113bと接続されている。また、シフトレジスタ113cのビット0は、故障フラグラッチ114の出力端と接続され、シフトレジスタ113cのビット63は、故障フラグラッチ114の入力端と接続されている。
 シフトレジスタ113cは、shift-enb113aからデータをシフトさせることを許可する信号であるshift-enb信号を受信した場合に、故障フラグラッチ114から故障フラグを読み出し、読み出した故障フラグを保持する。そして、シフトレジスタ113cに格納されたデータは、I2Cレシーブレジスタ115に転送される。
 また、シフトレジスタ113cには、サービスプロセッサ10から指定された値を保持するようにしてもよい。
 図1に戻り、故障フラグラッチ114は、回路の状態を示す状態情報を保持する。例えば、故障フラグラッチ114は、共通部110の故障状態を示す故障フラグを保持する。図3を用いて故障フラグラッチの構成を説明する。図3は、故障フラグラッチの構成を示すブロック図である。
 例えば、図3に示すように、故障フラグラッチ114は、複数のFF(Flip Flop)から形成されるloop、ERR_LV1_loop1、ERR_LV2_loop1、ERR_LV2_loop2を有する。
 ここで、故障フラグラッチ114が有する各loopは、障害の程度に応じて使い分けられる。例えば、ERR_LV1は、システムの動作に影響をきたす重大な障害を示す障害に用いられ、ERR_LV2は、システムの動作に影響をきたさないマイナーエラーに用いられる。また、各FFは、障害の種類に対応付けて用いられる。なお、障害を記憶するFFの数に応じてloopの数は決定され、ここでは、ERR_LV2は、ERR_LV2_loop1及びERR_LV2_loop2の2つのloopを有するものとして説明する。
 例えば、ERR_LV1_loop1は、FF114a‐1、FF114a‐2、FF114a‐3、・・・、FF114a‐nを有する。また、ERR_LV2_loop1は、FF114b‐1、FF114b‐2、FF114b‐3、・・・、FF114b‐nを有し、ERR_LV2_loop2は、FF114c‐1、FF114c‐2、FF114c‐3、・・・、FF114c‐nを有する。なお、ここで、nは、任意の自然数である。
 I2Cレシーブレジスタ115は、I2Cコマンド実行部113のスキャンシフト制御によって読み出された64ビットのデータを保持するレジスタである。I2Cレシーブレジスタ115に保持されるデータは、後述する命令制御部121がASIコマンドを発行することによってOS等のプログラムに読み出すことができる。すなわち、I2Cレシーブレジスタ115は、ソフトウェアからアクセス可能なレジスタである。
 フラグフリーズレジスタ116は、故障フラグラッチ114や各機能ブロックが有する故障フラグラッチに保持される値の変更を許可するか否かを示す情報を保持する。フラグフリーズレジスタ116には、故障フラグラッチ114に保持される故障フラグの値の更新を抑制することを示す「1」、故障フラグラッチに保持される故障フラグの値の更新を許可することを示す「0」が格納される。すなわち、故障フラグラッチ114や各機能ブロックが有する故障フラグラッチは、フラグフリーズレジスタ116に「1」が格納されている間は、保持する状態情報を更新せずに保持し続ける。
 図1に戻り、コア部120は、命令制御部121と、I2Cコマンド実行部122と、故障フラグラッチ123とを有し、例えば、図示しないL1キャッシュから命令を読み出して実行する。
 命令制御部121は、コア部120が有する図示しないL1キャッシュから読み出した実行中のプログラムの命令をデコードし、デコードした命令を実行する。ここで、命令制御部121は、読み出した命令がI2Cコマンドの発行を指示するものであった場合、ASIコマンドを発行する。
 ここでは、ASIコマンドについて説明する。なお、ASIコマンドの詳細は、特開2010-218367号公報に詳細に記載されているので、ここでは、ASIコマンドについて簡潔に説明する。
 ASIコマンドは、ASI空間を識別する8ビットのASI空間番号とよばれる識別子を指定するコマンドである。また、このASI空間番号は、仮想アドレスを物理アドレスに変換する動作を指定したり、CPU100が有するレジスタの読み書きを指定したりすることができる。
 本実施例において、ASI空間番号を一つ新たに定義し、この新たに定義したASI空間番号に対して2つの仮想アドレスを割り当てる。ASIコマンドは、この新たに割り当てたASI空間番号と仮想アドレスとを指定することで、共通部110がI2Cコマンドを、指定された仮想アドレスへのアクセスをとして実行する。
 本実施例において、ASIコマンドは、『ASI_CMD_ACCESS_REG』、『ASI_CMD_RECEIVE_REG』の2つの仮想アドレスを有する。『ASI_CMD_ACCESS_REG』は、I2Cコマンドを発行する命令であり、『ASI_CMD_RECEIVE_REG』は、発行したI2Cコマンドによる結果を読み出す命令である。以下では、ASIコマンドのデータパターンについて説明する。
(ASI_CMD_ACCESS_REG)
 図4Aを用いて、ASIコマンド『ASI_CMD_ACCESS_REG』のデータパターンについて説明する。図4Aは、ASIコマンド『ASI_CMD_ACCESS_REG』のデータパターンを示す図である。図4Aに示すように、『ASI_CMD_ACCESS_REG』は、64ビットデータのデータパターンを有しており、I2Cコマンドを発行する。
 ビット63は、LOCKビットであり、I2Cコマンドが実行中であることを示す。すなわち、ビット63は、I2Cコマンドの競合を回避するための排他制御の指定を示す。
 ビット62からビット56は、LOCK_IDを示す。LOCK_IDは、I2Cコマンドを実行している機能ブロックを示す情報であり、各機能ブロックにあらかじめ指定されている値が格納される。
 ビット55からビット49は、I2Cコマンドのコードを示す。ビット48は、Read/Writeであり、レジスタの読みまたはレジスタへの書き込みを指定する情報が格納される。ビット47からビット32は、本実施例では未使用であるものとする。ビット31からビット0は、I2Cコマンドへの引数を示す。
 なお、以下の説明で、例えば、ビット62からビット56のデータを示す場合、data[62:56]として適宜記載する。
 また、以下の説明では、『ASI_CMD_ACCESS_REG』コマンドのデータパターンの一部をasi_cmd_access_reg.LOCK、asi_cmd_access_reg.LOCK_IDのように適宜記載する。
(ASI_CMD_RECEIVE_REG)
 次に、図4Bを用いて、ASIコマンド『ASI_CMD_RECEIVE_REG』のデータパターンについて説明する。図4Bは、ASIコマンド『ASI_CMD_RECEIVE_REG』のデータパターンを示す図である。図4Bに示すように、『ASI_CMD_RECEIVE_REG』は、I2Cコマンドによる結果を読み出すコマンドであり、読み出しに伴う64ビットデータのデータパターンは次のように定義される。
 ビット63は、LOCKビットを示す。このLOCKビットには、排他制御の結果、I2Cコマンドの実行権を取得できたか否かを示す情報が格納される。
 ビット62からビット56は、LOCK_IDを示す。このLOCK_IDフィールドには、どの機能ブロックにアクセス中であるかを示す情報が格納される。
 ビット55からビット54は、BUSY/NACKを示す。BUSYは、I2Cコマンドが実行中であることを示す。また、NACK(Negative ACKnowledgement)は、I2Cコマンドが実行できなかったことを示す。また、data[55:54]の値が「01」の場合、ビット31からビット28には、ASI_CMDの実行でエラーが生じたことを示すエラーコードが設定される。
 ビット53からビット32は、本実施例では未使用であるものとする。ビット31からビット0は、I2Cコマンドの返り値であり、読み出されたデータになる。
 なお、以下の説明では、『ASI_CMD_RECEIVE_REG』コマンドのデータパターンの一部をasi_cmd_receive_reg.LOCK、asi_cmd_receive_reg.LOCK_IDのように適宜記載する。
 このようなASIコマンドを発行することによって、命令制御部121は、以下に示す処理を実行する。すなわち、命令制御部121は、ASIコマンドを発行することによって、共通部110にI2Cコマンドを生成させ、生成されたI2CコマンドをI2Cコマンド実行部に実行させる。また、この場合、命令制御部121は、ASIデータ[63:0]をI2Cコマンド解釈部111に転送する。
 また、命令制御部121は、予め特定のASI空間番号を指定することによって、CPU100内のレジスタの読み書きを実行することができる。
 図1に戻り、例えば、I2Cコマンド実行部122は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ123から故障フラグを読み出す。そして、I2Cコマンド実行部122は、読み出した故障フラグをI2Cレシーブレジスタ115に転送する。なお、I2Cコマンド実行部122の構成は、I2Cコマンド実行部113の構成と同様であるので、説明を省略する。また、故障フラグラッチ123の構成は、故障フラグラッチ114の構成と同様であるので、説明を省略する。
 L2キャッシュ制御部130は、図示しないL2キャッシュを有し、コア部120から要求されたデータや命令がL2キャッシュに存在するか否かを判定する。ここで、L2キャッシュ制御部130は、要求されたデータや命令がL2キャッシュに存在していると判定した場合、要求されたデータや命令をL2キャッシュから読み出して、L1キャッシュへ転送する。
 また、L2キャッシュ制御部130は、I2Cコマンド実行部131、故障フラグラッチ132を有する。例えば、I2Cコマンド実行部131は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ132から故障フラグを読み出す。そして、I2Cコマンド実行部131は、読み出した故障フラグをI2Cレシーブレジスタ115に転送する。なお、I2Cコマンド実行部131の構成は、I2Cコマンド実行部113の構成と同様であるので、説明を省略する。また、故障フラグラッチ132の構成は、故障フラグラッチ114の構成と同様であるので、説明を省略する。
 入出力制御部140は、CPUと図示しない入出力装置とを接続するインターフェースを有し、CPUと入出力装置との間のデータのやり取りを制御する。また、入出力制御部140は、I2Cコマンド実行部141、故障フラグラッチ142を有する。例えば、I2Cコマンド実行部141は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ142から故障フラグを読み出す。そして、I2Cコマンド実行部141は、読み出した故障フラグをI2Cレシーブレジスタ115に転送する。なお、I2Cコマンド実行部141の構成は、I2Cコマンド実行部113の構成と同様であるので、説明を省略する。また、故障フラグラッチ142の構成は、故障フラグラッチ114の構成と同様であるので、説明を省略する。
 メモリ制御部150は、図示しない主記憶装置との間のデータのやり取りを制御する。また、メモリ制御部150は、I2Cコマンド実行部151、故障フラグラッチ152を有する。例えば、I2Cコマンド実行部151は、I2Cコマンド制御部112からI2Cコマンドを受信し、故障フラグラッチ152から故障フラグを読み出す。そして、I2Cコマンド実行部151は、読み出した故障フラグをI2Cレシーブレジスタ115に転送する。なお、I2Cコマンド実行部151の構成は、I2Cコマンド実行部113の構成と同様であるので、説明を省略する。また、故障フラグラッチ152の構成は、故障フラグラッチ114の構成と同様であるので、説明を省略する。
[処理動作]
 次に、図5から図7を用いて、CPUにおける処理動作を説明する。
(I2Cコマンドによる故障フラグの読み出し動作)
 次に、図5を用いて、CPU100における故障フラグの読み出し動作を説明する。図5は、CPUにおける故障フラグの読み出し動作を示す図である。なお、図5では、コア部120の故障フラグの読み出し動作について説明するが、この動作は共通部110、L2キャッシュ制御部130、入出力制御部140、メモリ制御部150の故障フラグ読み出し動作でも同様である。
 図5に示すように、CPU100が有する命令制御部121は、故障フラグの読み出しを指示する『ASI_CMD_ACCESS_REG』を発行し、ASIデータ[63:0]をI2Cコマンド解釈部111に送信する(S1)。そして、I2Cコマンド解釈部111は、受け取ったASIデータをデコードし、アクセスをする機能ブロックやアクセスを行うレジスタなどのデータを生成し、I2Cコマンド制御部112に送信する(S2)。
 I2Cコマンド制御部112は、受信したデータをI2Cコマンドに変換して、I2Cコマンド実行部122に送信する(S3)。続いて、I2Cコマンド実行部122は、故障フラグラッチ123から指示された故障フラグの読み出しを開始し(S4)、故障フラグを取得する(S5)。そして、I2Cコマンド実行部122は、読み出した結果をI2Cレシーブレジスタ115に送信する(S6)。I2Cレシーブレジスタ115は、data[63:0]にI2Cコマンド実行部122から受信した故障フラグを保持する。
 その後、命令制御部121は、『ASI_CMD_RECEIVE_REG』命令を発行することによって、I2Cレシーブレジスタ115のdata[31:0]を読み出して、I2Cレシーブレジスタ115の下位側の32ビットに格納する。続いて、命令制御部121は、CODE「02」を指定して『ASI_CMD_ACCESS_REG』を発行することで、I2Cレシーブレジスタ115のdata[63:32]を読み出して、I2Cレシーブレジスタ115の上位側の32ビットに格納する。すなわち、命令制御部121は、ASIコマンドを実行することにより、プログラムからアクセス可能なI2Cレシーブレジスタ115に故障フラグを格納する。このようにして、命令制御部121は、ASIコマンドの実行により取得した故障フラグをプログラムから利用可能なI2Cレシーブレジスタ115に保持する。
(故障フラグラッチにおける処理動作)
 次に、図6を用いて故障フラグラッチ114における動作を説明する。図6は、故障フラグラッチにおける動作を説明する図である。なお、ここでは、共通部110が有する故障フラグラッチ114のERR_LV1_loop1を例にして説明するが、各機能ブロックが有する故障フラグラッチにおいても処理動作は同様である。
 図6に示すように、故障フラグラッチ114のERR_LV1_loop1は、FF114a‐1、・・・FF114a‐nを有する。FF114a‐1は、AND回路(論理積回路)201‐1、AND回路202‐1、AND回路203‐1、OR回路(論理和回路)204‐1、FF205‐1を有する。
 AND回路201‐1は、反転させたフラグフリーズ信号と反転させたloop_0_shift-enb信号とエラー信号とを受付けて、受付けた値の論理積をOR回路204‐1に出力する。また、AND回路202‐1は、loop_0_shift-enb信号とシフトレジスタ113cからのデータとを受付け、受付けた値の論理積をOR回路204‐1に出力する。また、AND回路203‐1は、反転させたloop_0_shift-enb信号と反転させたクリアエラーフラグ信号とFF205‐1からの出力とを受付け、受付けた値の論理積をOR回路204‐1に出力する。
 OR回路204‐1は、AND回路201‐1、AND回路202‐1、AND回路203‐1のいずれか2つからの出力を受付け、受付けた値の論理和を出力する。そして、OR回路204‐1は、出力した論理和と、残るAND回路からの出力とを受付け、受付けた値の論理和をFF205‐1に出力する。FF205‐1は、受付けた値をAND回路203‐1と隣接するFFのAND回路202とに出力する。
 なお、FF114a‐nの構成は、FF114a‐1の構成と同様であるので、説明は省略する。
 このような、故障フラグラッチ114において、データをシフトさせることを許可する信号を受信していない場合の動作について説明する。なお、ここでは、FF205‐1には「1」、FF205‐nには「0」が格納されており、フラグフリーズ信号及びクリアエラーフラグ信号が故障フラグラッチ114には入力されていないとする。
 この場合、AND回路201‐1は、反転させたフラグフリーズ信号「1」、反転させたloop_0_shift-enb信号「1」、エラー信号「1」を受付けて、OR回路204‐1に「1」を出力する。AND回路202‐1は、いずれの信号も受付けず、OR回路204‐1に「0」を出力する。また、AND回路203‐1は、反転させたloop_0_shift-enb「1」、反転させたクリアエラーフラグ信号「1」、FF205‐1の出力「1」を受付け、OR回路204‐1に「1」を出力する。
 そして、OR回路204‐1は、AND回路201‐1から「1」、AND回路202‐1から「0」、AND回路203‐1から「1」を受付け、FF205‐1に「1」を出力する。なお、FF205‐1が受付けた「1」は、FF205‐1がAND回路203‐1に「1」を出力することで維持される。
 このような状況の故障フラグラッチ114において、シフトレジスタ113cからデータをシフトさせることを許可する信号を受信した場合の動作について説明する。なお、ここでは、シフトレジスタ113cには「0」が格納されていると仮定する。
 この場合、AND回路201‐1は、反転させたフラグフリーズ信号「0」、反転させたloop_0_shift-enb信号「0」、エラー信号「0」を受付けて、OR回路204‐1に「0」を出力する。AND回路202‐1は、loop_0_shift-enb信号「1」とシフトレジスタ113cに格納されていた「0」とを受付けて、OR回路204‐1に「0」を出力する。また、AND回路203‐1は、反転させたloop_0_shift-enb信号「0」、反転させたクリアエラーフラグ信号「1」、FF205‐1の出力「1」を受付け、OR回路204‐1に「0」を出力する。
 そして、OR回路204‐1は、AND回路201‐1、AND回路202‐1、AND回路203‐1のすべてから「0」を受付け、FF205‐1に「0」を出力する。また、FF205‐1に格納されていた「1」は、隣接するFF114a‐2が有するAND回路202‐2に出力され、FF205‐2にシフトする。
 このように、故障フラグラッチ114は、シフトレジスタ113cからデータをシフトさせることを許可する信号を受信した場合、シフトレングスレジスタ113bに保持される数だけデータをシフトさせる。この結果、シフトレジスタ113cには、故障フラグラッチ114に保持されていたデータがシフトする。
(シフトレジスタにおける処理動作)
 次に、図7を用いてシフトレジスタ113cの動作を説明する。図7は、シフトレジスタの動作を説明する図である。なお、ここでは、共通部110が有するシフトレジスタ113cを例にして説明するが、各機能ブロックが有するシフトレジスタにおいても処理動作は同様である。
 図7に示すように、シフトレジスタ113cは、AND回路401‐1、AND回路402‐1、AND回路403‐1、OR回路404‐1、FF405‐1を有する。また、シフトレジスタ113cは、同様に、AND回路401‐n、AND回路402‐n、AND回路403‐n、OR回路404‐n、FF405‐nを有する。
 AND回路401‐1は、I2C_WRITE_VAL信号とI2C_WRITE_DATA[0]信号と反転させたshift-enb信号とを受付けて、受付けた値の論理積をOR回路404‐1に出力する。また、AND回路402‐1は、shift-enb信号と選択されたloopからのデータとを受付け、受付けた値の論理積をOR回路404‐1に出力する。また、AND回路403‐1は、反転させたshift-enb信号と反転させたI2C_WRITE_VAL信号とFF405‐1からの出力とを受付け、受付けた値の論理積をOR回路404‐1に出力する。
 OR回路404‐1は、AND回路401‐1、AND回路402‐1、AND回路403‐1のいずれか2つからの出力を受付け、受付けた値の論理和を出力する。そして、OR回路404‐1は、出力した論理和と、残るAND回路からの出力とを受付け、受付けた値の論理和をFF405‐1に出力する。FF405‐1は、受付けた値をAND回路403‐1と隣接するAND回路402‐2に出力する。
 このような、シフトレジスタ113cにおいて、shift-enb113aからデータをシフトさせることを許可する信号を受信していない場合の動作について説明する。なお、ここでは、FF405‐1には「0」が格納されており、I2C_WRITE_VAL信号及びI2C_WRITE_DATA[0]信号がシフトレジスタ113cには入力されていないとする。
 この場合、AND回路401‐1は、反転させたshift-enb信号「1」を受付けて、OR回路404‐1に「0」を出力する。AND回路402‐1は、いずれの信号も受付けず、OR回路404‐1に「0」を出力する。また、AND回路403‐1は、反転させたshift-enb信号「1」、反転させたI2C_WRITE_VAL信号「1」、FF405‐1の出力「0」を受付け、OR回路404‐1に「0」を出力する。
 そして、OR回路404‐1は、AND回路401‐1、AND回路402‐1、AND回路403‐1のすべてから「0」を受付け、FF405‐1に「0」を出力する。なお、FF405‐1が受付けた「0」は、FF405‐1がAND回路403‐1に「0」を出力することで維持される。
 このような状況のシフトレジスタ113cにおいて、shift-enb113aからデータをシフトさせることを許可する信号を受信した場合の動作について説明する。なお、ここでは、故障フラグラッチが有するFF114a-nに「1」が格納されていると仮定する。
 この場合、AND回路401‐1は、反転させたshift-enb信号「0」を受付けて、OR回路404‐1に「0」を出力する。AND回路402‐1は、shift-enb信号「1」とFF114a-nに格納されていた「1」とを受付けて、OR回路404‐1に「1」を出力する。また、AND回路403‐1は、反転させたshift-enb信号「0」、反転させたI2C_WRITE_VAL信号「1」、FF405‐1の出力「0」を受付け、OR回路404‐1に「0」を出力する。
 そして、OR回路404‐1は、AND回路401‐1から「0」、AND回路402‐1から「1」、AND回路403‐1から「0」を受付け、FF405‐1に「1」を出力する。また、FF405‐1に格納されていた「0」は、隣接するAND回路402‐2に出力され、FF405‐2にシフトする。
 このように、シフトレジスタ113cは、shift-enb113aからデータをシフトさせることを許可する信号を受信した場合、シフトレングスレジスタ113bに保持される数だけデータをシフトさせる。この結果、シフトレジスタ113cには、故障フラグラッチ114に保持されていたデータがシフトする。
[故障フラグ取得処理の処理手順]
 次に図8及び図9を用いて、実施例1に係るCPU100における故障フラグ取得処理の処理手順を説明する。図8では、命令制御部によるASIコマンド発行処理の処理手順を説明し、図9では、I2Cコマンド実行部による故障フラグの読み出し処理の処理手順を説明する。
(命令制御部によるASIコマンド発行処理)
 図8は、命令制御部によるASIコマンド発行処理の処理手順を示すフローチャートである。図8に示すように、命令制御部121は、『ASI_CMD_RECEIVE_REG』命令を発行する(ステップS101)。そして、命令制御部121は、asi_cmd_receive_reg.LOCKビットを読み出し、読み出した値が「0」であるか否かを判定する(ステップS102)。
 ここで、命令制御部121は、読み出した値が「0」でないと判定した場合(ステップS102、No)、ステップS101に移行する。すなわち、命令制御部121は、他のプロセッサ部、またはサービスプロセッサ100がI2Cコマンドを実行中である。したがって、命令制御部121は、読み出した値が「0」でない場合には、他のプロセッサ部、またはサービスプロセッサ100によるI2Cコマンドの完了を待つ。そして、命令制御部121は、他のプロセッサ部あるいはサービスプロセッサ100によるI2Cコマンドの完了後に、I2Cコマンドを発行する。そのために、命令制御部121は、読み出した値が「0」になるまで所定の間隔を置いて、『ASI_CMD_RECEIVE_REG』命令の発行を繰り返す。
 一方、命令制御部121は、読み出した値が「0」であると判定した場合(ステップS102、Yes)、ASIコマンド経由のI2Cコマンドの実行が可能であると判定し、以下の処理を実行する。すなわち、命令制御部121は、LOCK=1、制御したい機能ブロックのLOCK_ID、実行コマンドを指定して、『ASI_CMD_ACCESS_REG』命令を発行する(ステップS103)。
 続いて、命令制御部121は、『ASI_CMD_RECEIVE_REG』命令を発行する(ステップS104)。そして、命令制御部121は、asi_cmd_receive_reg.LOCKビット及びLOCK_IDを読み出し、読み出した値が「1」であり、かつ、指定したLOCK_IDであるか否かを判定する(ステップS105)。
 ここで、命令制御部121は、読み出した値が「1」、指定したLOCK_IDの2つの条件のいずれかが満たされていないと判定した場合(ステップS105、No)、ステップS101に移行する。この場合、ステップS103で発行した『ASI_CMD_ACCESS_REG』の実行権の獲得が失敗し、命令が実行されなかったことを意味する。
 一方、命令制御部121は、2つの条件が満たされていると判定した場合(ステップS105、Yes)、『ASI_CMD_RECEIVE_REG』命令を発行する(ステップS106)。
 そして、命令制御部121は、asi_cmd_receive_reg.BUSY=「0」であるか否かを判定する(ステップS107)。ここで、命令制御部121は、BUSY=「0」でないと判定した場合(ステップS107、No)、ステップS106に移行し、BUSY=「0」になるまで処理を繰り返す。この場合、命令制御部121は、ステップS103で発行したI2CコマンドがI2Cコマンド実行部によって実行中であると判定する。
 一方、命令制御部121は、BUSY=「0」であると判定した場合(ステップS107、Yes)、asi_cmd_receive_reg.NACK=「0」であるか否かを判定する(ステップS108)。ここで、命令制御部121は、NACK=「0」であると判定した場合(ステップS108、Yes)、ステップS103において発行したコマンドが機能ブロックの状態を読み出すReadコマンドであるか否かを判定する(ステップS109)。
 ここで、命令制御部121は、Readコマンドであると判定した場合(ステップS109、Yes)、data[31:0]を読み出し(ステップS110)、ステップS111に移行する。一方、命令制御部121は、Readコマンドでないと判定した場合(ステップS109、No)、ステップS111に移行する。
 ステップS111において、命令制御部121は、連続して新たなコマンドを発行するか否かを判定する(ステップS111)。命令制御部121は、連続して新たなコマンドを発行しないと判定した場合(ステップS111、No)、asi_cmd_access_reg.LOCK=「0」で『ASI_CMD_ACCESS_REG』命令を発行する(ステップS112)。この命令により、命令制御部121は、ASIコマンドによるI2Cコマンドの排他制御権を開放し、一連のI2Cコマンド処理を終了する。一方、命令制御部121は、連続して新たなコマンドを発行すると判定した場合(ステップS111、Yes)、ステップS114に移行する。
 命令制御部121は、ステップS108において、NACK=「0」でないと判定した場合(ステップS108、No)、asi_cmd_receive_reg.NACK=「1」であるか否かを判定する(ステップS113)。ここで、命令制御部121は、NACK=「1」でないと判定した場合(ステップS113、No)、ステップS114に移行する。
 一方、命令制御部121は、NACK=「1」であると判定した場合(ステップS113、Yes)、ソフトエラーが生じていると判定し(ステップS115)、処理を終了する。なお、この場合、命令制御部121は、ソフトエラーが生じたことをサービスプロセッサ10に通知する。
 ステップS114において、命令制御部121は、LOCK=1、LOCK_ID=7Fを指定して、『ASI_CMD_ACCESS_REG』命令を発行し(ステップS114)、ステップS106に移行する。
(I2Cコマンド実行部による故障フラグの読み出し処理)
 図9は、I2Cコマンド実行部による故障フラグ読み出し処理の処理手順を示すフローチャートである。例えば、I2Cコマンド実行部は、I2Cコマンド制御部112からアクセスを受付けたことを契機に処理を実行する。
 図9に示すように、故障フラグを読み出す機能ブロックのI2Cコマンド実行部は、フラグフリーズレジスタ116が「1」に設定される(ステップS201)。そして、I2Cコマンド実行部は、シフトレングスレジスタにシフト数を決定し(ステップS202)、SHIFT_enb信号を「1」にする(ステップS203)。
 ここで、I2Cコマンド実行部において、SHIFT_enb信号が「1」になった場合、LOOP0に接続された故障フラグが選択されて、シフトレジスタに64ビットのデータとして読み出される。また、64ビットのデータをシフトレジスタに読み出した場合、SHIFT_enb信号が「0」になる。
 続いて、I2Cコマンド実行部は、読み出したデータをI2Cコマンド制御部が有する、プログラムからアクセス可能なI2Cレシーブレジスタに転送する(ステップS204)。また、I2Cコマンド実行部は、さらに別のloopから故障フラグを読み出すアクセスを受付けたか否かを判定する(ステップS205)。ここで、I2Cコマンド実行部は、さらに別のloopから故障フラグを読み出すアクセスを受付けたと判定した場合(ステップS205、Yes)、ステップS202に移行し、故障フラグの読み出し処理を実行する。
 一方、I2Cコマンド実行部は、別のloopから故障フラグを読み出すアクセスを受付けていないと判定した場合(ステップS205、No)、フラグフリーズレジスタ116が「0」に設定され(ステップS206)、処理を終了する。
[実施例1の効果]
 上述してきたように、実施例1では、共通部110及び各機能ブロックがI2Cコマンド実行部を有する。そして、I2Cコマンド制御部112は、命令制御部121によって故障フラグを回収するASIコマンドが発行された場合、故障フラグを回収するI2Cコマンドを生成し、生成したI2Cコマンドを共通部110及び各機能ブロックに送信する。これによって、I2Cコマンド実行部は、故障フラグラッチに保持される故障フラグを読み出すことができる。すなわち、実施例1に係るCPU100において、サービスプロセッサ10からスキャンチェーンを用いて故障フラグをスキャンアウトしなくても、CPU100の故障フラグを読み出すことができる。
 これまで記述してきたような回路を各機能ブロックにI2Cコマンド実行部を組み込むことで、1つの機能ブロックの故障フラグを読み出している間に、他の機能ブロックで起きたエラーを漏れることなく故障フラグラッチに取り込むことが可能となる。なお、各機能ブロックは、決定は、asi_cmd_access_reg.LOCK_IDに各機能ブロックにあらかじめ指定されている値を書き込むことで制御可能である。
 また、近年、SoC(System on Chip)化によってCPUが大規模になってきている。このため、CPU全体のシミュレーションモデルを作成し、システム制御のテストベンチを走行するシミュレーションを行う場合、コンパイル時間、テストベンチの走行時間が長くなる。すなわち、CPU全体でシミュレーションを実行することは、非常に困難になってきている。しかし、本発明によりエミュレータを使用したCPUの検証を行う場合、ASIコマンドを使用したテストプログラムを作成することで、CPU全体のモデルでのシステム制御レジスタの検証を行うことが可能になる。
 CPUのシステム制御の検証においても、CPU全体でエミュレートすることが可能となり、CPUの品質向上が可能となる。
 本発明のI2Cコマンド制御部及びI2Cコマンド実行部を組み込むことでサービスプロセッサがなくても、ソフトウェアからI2C制御部を介してI2Cコマンド実行部にアクセスし、ハードウェア情報が読み出せる。このため、サービスプロセッサを用いず、CPU100単独でCPU100の設定が可能となる。また、CPUの設定を変えることができるので、ソフトウェアにあったCPUの構成に変更することができる。この結果、CPUの処理性能を向上させることができる。
 また、ソフトウェアは、CPUのハードウェア情報が読み出せるために、得られた故障情報から致命的な故障を回避することが可能になる。
 また、サービスプロセッサが必要なシステムであっても、CPUのハードウェアの設定を制御する機能を削減できるため、サービスプロセッサの簡易化によりコストの削減が可能である。
 ところで、本発明は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例2では、本発明に含まれる他の実施例について説明する。
(エラー制御論理のデバッグ)
 また本発明は、このエラー制御論理のデバッグにも用いることでこの回路の品質を保証することが可能である。
 機能ブロックが有するシフトレジスタのdata[63:0]に、サービスプロセッサがある値、例えば、「0×123456789abcdef」を書き込んでおく。また、I2Cコマンド実行部に接続されている故障フラグラッチのラッチ数をシフトレングスレジスタにも書き込む。
 そして、I2Cコマンド制御部112は、フラグフリーズレジスタに「1」を設定し、故障フラグが更新されないようする。続いて、I2Cコマンド制御部112は、シフトレングスレジスタの値が「0」になるまで故障フラグラッチを読み出すコマンドを発行する。
 ここで、シフトレジスタに書き込んだ値が故障フラグレジスタを伝播して再度シフトレジスタに格納される場合、故障フラグレジスタの制御回路が正常であると判定できる。一方、正しい値がシフトレジスタに戻ってこなければ、制御回路または故障フラグレジスタの接続を誤っていることが検出できる。
(擬似故障によるCPUの動作シミュレーション)
 また、このシフトレジスタへの書き込み方法を利用してシフトレジスタに接続されている故障フラグラッチを「1」にセットすることで、CPUに擬似故障を起こした場合の動作をシミュレーションすることも可能である。
 例えば、サービスプロセッサがシフトレジスタのいずれかのビットに「1」を書き込んでおく。そして、I2Cコマンド制御部112は、故障フラグレジスタが更新されないようにフリーズ信号を「1」にする。続いて、故障フラグラッチの擬似故障を起こす対象となるFFに個別に割り振られている番号をシフトレングスレジスタに書き込み、読み出しコマンドを発行する。この結果、シフトレジスタに書き込んだ値は、故障フラグレジスタの擬似故障を起こす対象となるFFまでシフトされて、擬似故障を起こす対象となるFFの値が「1」に変化する。この方法によって、CPUの故障時の動作のシミュレーションをおこなうことが可能となる。
(システム構成等)
 本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
 また、図示した記憶部が格納する情報は一例に過ぎず、必ずしも図示のごとく情報が格納される必要はない。
 また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更してもよい。
 また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、共通部110において、I2Cコマンド解釈部111とI2Cコマンド制御部112とが統合されてもよい。
 10 サービスプロセッサ
 100 CPU
 110 共通部
 111 I2Cコマンド解釈部
 112 I2Cコマンド制御部
 113、122、131、141、151 I2Cコマンド実行部
 113a shift-enb
 113b シフトレングスレジスタ
 113c シフトレジスタ
 114、123、132、142、152 故障フラグラッチ
 115 I2Cレシーブレジスタ
 116 フラグフリーズレジスタ
 120 コア部
 121 命令制御部
 130 L2キャッシュ制御部
 140 入出力制御部
 150 メモリ制御部

Claims (10)

  1.  回路部を有する演算処理装置において、
     前記回路部の状態を示す状態情報を保持する状態情報保持部と、
     プログラムに含まれる、制御命令を生成するための制御命令生成命令をデコードする命令制御部と、
     前記命令制御部がデコードした制御命令生成命令が、前記状態情報保持部からの状態情報を読み出す状態情報読出命令を生成する制御命令生成命令である場合に、状態情報読出命令を生成する命令生成部と、
     前記命令生成部が生成した状態情報読出命令に基づき、前記状態情報保持部から状態情報を読出して、プログラムから読出し可能なレジスタ部に格納する命令実行部と
     を有することを特徴とする演算処理装置。
  2.  前記命令生成部は、前記命令制御部がデコードした制御命令生成命令が、前記状態情報保持部が保持する状態情報を指定された情報に書き換える状態情報書換命令を生成する制御命令生成命令である場合に、前記状態情報書換命令を生成し、
     前記命令実行部は、前記命令生成部が生成した状態情報書換命令に基づき、前記状態情報保持部が保持する状態情報を、指定された情報に書き換えることを特徴とする請求項1記載の演算処理装置。
  3.  前記演算処理装置はさらに、
     前記状態情報保持部が保持する状態情報の更新を抑止するロック情報を保持するロック情報保持部を有し、
     前記状態情報保持部は、前記ロック情報保持部がロック情報を保持している間は、保持する状態情報を更新せずに保持し続けることを特徴とする請求項1記載の演算処理装置。
  4.  前記演算処理装置が、
     命令を読み出して実行するコア部、L2キャッシュの制御を実行するL2キャッシュ制御部、自装置と接続される入出力装置との情報の入出力を制御する入出力制御部、メモリの制御を実行するメモリ制御部及び、前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部それぞれに接続される共通部を前記回路部として有し、
     前記コア部は、前記命令制御部と前記レジスタ部とを有し、
     前記共通部は、前記命令生成部を有し、
     前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部、前記共通部それぞれは、前記命令実行部と前記状態情報保持部とを有する
     ことを特徴とする請求項1に記載の演算処理装置。
  5.  前記命令生成部は、前記状態情報読出命令を生成するとともに、前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部、前記共通部のいずれの命令実行部に前記状態情報読出命令を送信するかを決定し、決定した命令実行部に前記生成した状態情報読出命令を送信することを特徴とする請求項4に記載の演算処理装置。
  6.  回路部を有する演算処理装置の制御方法において、
     前記演算処理装置が有する命令制御部が、プログラムに含まれ、前記回路部の状態を示す状態情報を読み出す制御命令を生成する制御命令生成命令をデコードし、
     前記演算処理装置が有する命令生成部が、前記命令制御部がデコードした制御命令生成命令に基づき、状態情報読出命令を生成し、
     前記演算処理装置が有する命令実行部が、前記命令生成部が生成した状態情報読出命令に基づき、前記回路部の状態を示す状態情報を保持する状態情報保持部から状態情報を読出して、プログラムから読出し可能なレジスタ部に格納する
     ことを特徴とする演算処理装置の制御方法。
  7.  前記演算処理装置の制御方法はさらに、
     前記命令生成部が、前記命令制御部がデコードした制御命令生成命令に基づき、前記状態情報保持部が保持する情報を、指定された情報に書き換える状態情報書換命令を生成し、
     前記命令実行部が、前記命令生成部が生成した状態情報書換命令に基づき、前記前記状態情報保持部が保持する情報を、指定された情報に書き換える
     ことを特徴とする請求項6記載の演算処理装置の制御方法。
  8.  前記演算処理装置の制御方法において、
     前記演算処理装置はさらに、
     前記状態情報保持部が保持する状態情報の更新を抑止するロック情報を保持するロック情報保持部を有し、
     前記状態情報保持部は、前記ロック情報保持部がロック情報を保持している間は、保持する状態情報を更新せずに保持し続ける
     ことを特徴とする請求項6記載の演算処理装置の制御方法。
  9.  前記演算処理装置の制御方法において、
     前記演算処理装置はさらに、
     命令を読み出して実行するコア部、L2キャッシュの制御を実行するL2キャッシュ制御部、自装置と接続される入出力装置との情報の入出力を制御する入出力制御部、メモリの制御を実行するメモリ制御部及び、前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部それぞれに接続される共通部を前記回路部として有し、
     前記コア部が有する前記命令制御部が、制御命令生成命令をデコードし、
     前記共通部が有する前記命令生成部が、前記命令制御部がデコードした制御命令生成命令に基づき、状態情報読出命令を生成し、
     前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部、前記共通部それぞれが有する命令実行部が、前記状態情報読出命令に基づき、自身を含む回路部が有する前記状態情報保持部から状態情報を読出して、前記コア部が有する前記レジスタ部に格納する
     ことを特徴とする請求項6に記載の演算処理装置の制御方法。
  10.  前記演算処理装置の制御方法において、
     前記命令生成部は、前記状態情報読出命令を生成するとともに、前記コア部、前記L2キャッシュ制御部、前記入出力制御部、前記メモリ制御部、前記共通部のいずれの命令実行部に前記状態情報読出命令を送信するかを決定し、決定した命令実行部に前記生成した状態情報読出命令を送信することを特徴とする請求項9に記載の演算処理装置の制御方法。
PCT/JP2011/063925 2011-06-17 2011-06-17 演算処理装置及び演算処理装置の制御方法 WO2012172682A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP11868012.3A EP2722761A1 (en) 2011-06-17 2011-06-17 Arithmetic processing device and control method for arithmetic processing device
PCT/JP2011/063925 WO2012172682A1 (ja) 2011-06-17 2011-06-17 演算処理装置及び演算処理装置の制御方法
US14/097,371 US20140095841A1 (en) 2011-06-17 2013-12-05 Processor and control method of processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/063925 WO2012172682A1 (ja) 2011-06-17 2011-06-17 演算処理装置及び演算処理装置の制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/097,371 Continuation US20140095841A1 (en) 2011-06-17 2013-12-05 Processor and control method of processor

Publications (1)

Publication Number Publication Date
WO2012172682A1 true WO2012172682A1 (ja) 2012-12-20

Family

ID=47356708

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/063925 WO2012172682A1 (ja) 2011-06-17 2011-06-17 演算処理装置及び演算処理装置の制御方法

Country Status (3)

Country Link
US (1) US20140095841A1 (ja)
EP (1) EP2722761A1 (ja)
WO (1) WO2012172682A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6828271B2 (ja) 2016-05-18 2021-02-10 ソニー株式会社 通信装置、通信方法、プログラム、および、通信システム
US10289473B2 (en) * 2017-03-23 2019-05-14 Netscout Systems, Inc. Situation analysis

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6229820B2 (ja) * 1982-05-10 1987-06-29 Hitachi Ltd
JPS62192824A (ja) * 1986-02-20 1987-08-24 Fujitsu Ltd 処理装置アクセス方式
JPH08235073A (ja) * 1995-02-28 1996-09-13 Nec Kyushu Ltd マイクロコンピュータ

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4228061B2 (ja) * 2000-12-07 2009-02-25 富士通マイクロエレクトロニクス株式会社 集積回路の試験装置および試験方法
US6675334B2 (en) * 2001-05-31 2004-01-06 Texas Instruments Incorporated Apparatus and method for multi-cycle memory access mapped to JTAG finite state machine with external flag for hardware emulation
JP2005309867A (ja) * 2004-04-22 2005-11-04 Fujitsu Ltd マルチコア・プロセサ試験方法
US7568138B2 (en) * 2006-07-26 2009-07-28 International Business Machines Corporation Method to prevent firmware defects from disturbing logic clocks to improve system reliability
US8650437B2 (en) * 2010-06-29 2014-02-11 International Business Machines Corporation Computer system and method of protection for the system's marking store

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6229820B2 (ja) * 1982-05-10 1987-06-29 Hitachi Ltd
JPS62192824A (ja) * 1986-02-20 1987-08-24 Fujitsu Ltd 処理装置アクセス方式
JPH08235073A (ja) * 1995-02-28 1996-09-13 Nec Kyushu Ltd マイクロコンピュータ

Also Published As

Publication number Publication date
US20140095841A1 (en) 2014-04-03
EP2722761A1 (en) 2014-04-23

Similar Documents

Publication Publication Date Title
US5202889A (en) Dynamic process for the generation of biased pseudo-random test patterns for the functional verification of hardware designs
US20050268195A1 (en) Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems
US6732297B2 (en) Pipeline testing method, pipeline testing system, pipeline test instruction generation method and storage method
JP2005129053A (ja) フォールトトレラント・マルチコア・マイクロプロセッシング
US7047464B2 (en) Method and system for use of a field programmable function within an application specific integrated circuit (ASIC) to access internal signals for external observation and control
CN107451025B (zh) 控制存储芯片的测试方法及系统
US7447966B2 (en) Hardware verification scripting
US8626965B2 (en) Using a DMA engine to automatically validate DMA data paths
KR100607023B1 (ko) 프로그램 처리 장치
WO2012172682A1 (ja) 演算処理装置及び演算処理装置の制御方法
KR20050021241A (ko) 프로그램 처리 장치
US9702933B1 (en) System and method for concurrent interconnection diagnostics field
JP2878503B2 (ja) 標準セルとアプリケーションセルと試験セルとを含む集積回路
US20220308892A1 (en) Processing system, related integrated circuit, device and method
JP2007058450A (ja) 半導体集積回路
JPWO2012172682A1 (ja) 演算処理装置及び演算処理装置の制御方法
JP2010134789A (ja) 要求処理装置、要求処理システムおよびアクセス試験方法
CN113704040A (zh) 一种微处理器内存可靠性测试方法
JPS63193237A (ja) 半導体集積回路装置
Grosso et al. A software-based self-test methodology for system peripherals
US9721048B1 (en) Multiprocessing subsystem with FIFO/buffer modes for flexible input/output processing in an emulation system
JP2004094451A (ja) オンチップjtagインタフェース回路およびシステムlsi
CN113742198B (zh) 测试方法、装置、电子设备及存储介质
JP7172155B2 (ja) 電子制御装置及びソフトウエア生成方法
Ravindrakumar et al. Method to Generate Bus Stress Pattern Using iBUS (Infineon Bus Under Stress) framework

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013520386

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2011868012

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE