WO2016157505A1 - メモリチェック機能を有するdmac - Google Patents

メモリチェック機能を有するdmac Download PDF

Info

Publication number
WO2016157505A1
WO2016157505A1 PCT/JP2015/060508 JP2015060508W WO2016157505A1 WO 2016157505 A1 WO2016157505 A1 WO 2016157505A1 JP 2015060508 W JP2015060508 W JP 2015060508W WO 2016157505 A1 WO2016157505 A1 WO 2016157505A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
check
memory
read
address
Prior art date
Application number
PCT/JP2015/060508
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/JP2015/060508 priority Critical patent/WO2016157505A1/ja
Publication of WO2016157505A1 publication Critical patent/WO2016157505A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents

Definitions

  • the present invention relates to a DMA (Direct Memory Access) controller implemented in an embedded system, that is, a memory check device that performs a memory check using a DMAC (Direct Memory Access Controller), an embedded system, and a memory check method.
  • DMA Direct Memory Access
  • DMAC Direct Memory Access Controller
  • the current embedded system realizes a high-performance and high-performance system by using a CPU (Central Processing Unit) and a program for operating the CPU.
  • a CPU Central Processing Unit
  • a main memory that holds and stores programs or data is indispensable.
  • the memory check for confirming the soundness of the main memory is essential in the system operation.
  • the capacity of the main memory is increased and miniaturized with the advancement of semiconductor technology, and the possibility of abnormality occurring in the memory cell increases.
  • ⁇ Embedded systems are also applied to those where safety is important.
  • abnormalities in embedded systems affect social life.
  • an abnormality of an embedded system may be life threatening.
  • One cause of abnormalities in embedded systems is data abnormalities in the memory.
  • the memory stores various data from a program executed by the CPU of the embedded system to intermediate data used in processing. In order to keep the operation of the embedded system sound, it is necessary to detect that the data on the memory is abnormal and to deal with it.
  • Patent Document 1 discloses a technique for performing a memory check using DMAC.
  • An object of the present invention is to provide a memory check device that suppresses an increase in cost by executing a memory check by using a function of a DMAC without interrupting or delaying a process executed by a CPU. .
  • the memory check device is: In a memory check device for checking data stored in a memory, A DMA controller that executes DMA transfer according to a transfer command from the CPU; The DMA controller A check start address storage unit for storing a check start address indicating a position where the check is started; A controller that determines whether or not a DMA transfer is being executed, and outputs a read request for reading data from the memory when it is determined that a DMA transfer is not being executed; When the reading request is output from the control unit, a data reading unit that reads check data including read data to be checked from a position indicated by the check start address; And a determination unit that determines whether or not the read data read by the data reading unit has an error.
  • the DMA controller determines whether or not a DMA transfer is being executed and a check start address storage unit that stores the check start address, and determines that the DMA transfer is not being executed In addition, there is an error in the read data, a control unit that outputs a read request for reading data from the memory, and a data read unit that reads check data including read data from the position indicated by the check start address when the read request is output. And a determination unit that determines whether or not the memory is executed, the memory check can be performed without interrupting or delaying the processing executed by the CPU, and the memory check device with reduced manufacturing cost can be provided.
  • FIG. 1 is a configuration diagram of an embedded system according to Embodiment 1.
  • FIG. 1 is a block configuration diagram of a DMAC according to Embodiment 1.
  • FIG. 3 is a state transition diagram of a DMAC mode according to the first embodiment.
  • FIG. 3 is a flowchart showing an overall operation from reset cancellation after power-on to memory check processing in the DMAC according to the first embodiment.
  • FIG. 3 is a flowchart showing an operation of initialization processing S100 according to the first embodiment.
  • FIG. 3 is a configuration diagram of a check start address storage unit according to the first embodiment.
  • FIG. 4 is a flowchart showing an overall operation of a memory check process S200 according to the first embodiment.
  • FIG. 5 is a flowchart showing the operation of memory-specific memory check processing S203 according to the first embodiment.
  • FIG. 6 is a flowchart showing the operation of ECC memory check processing S302 according to the first embodiment.
  • FIG. 6 is a flowchart showing an operation of CRC memory check processing S303 according to the first embodiment.
  • FIG. 6 is a flowchart showing the overall operation of DMA transfer execution processing S2041 according to the first embodiment.
  • FIG. 6 is a flowchart showing an operation of ECC DMA transfer processing S608 according to the first embodiment.
  • FIG. 6 is a flowchart showing an operation of CRC DMA transfer processing S609 according to the first embodiment.
  • FIG. 3 is a configuration diagram of a code read address calculation unit according to the first embodiment.
  • Embodiment 1 FIG. *** Explanation of configuration *** The configuration of the embedded system 1000 according to the present embodiment will be described with reference to FIG.
  • the embedded system 1000 includes a DMAC 10, a CPU 20, a memory 30, a memory bus 40, and a local bus 50.
  • the DMA controller 10 ⁇ / b> A that is, the DMAC 10 is an example of a memory check device 800 that checks data stored in the memory 30.
  • the DMAC 10 is connected to the CPU 20 by the local bus 50.
  • the DMAC 10 is connected to the memory 30 via the memory bus 40.
  • the DMAC 10 executes DMA transfer according to a transfer command transmitted from the CPU 20 via the local bus 50. Further, the DMAC 10 executes a memory check process for confirming the soundness of the memory 30 via the memory bus 40.
  • the memory bus 40 includes a memory data bus 41 that transfers data to the memory 30 and a memory address bus 42 that transfers addresses to the memory 30.
  • the DMAC 10 includes a control unit 100, a data reading unit 140, and a data writing unit 160.
  • the DMAC 10 includes a local bus IF 270, a DMA address storage unit 280, a timer unit 290, a check start address storage unit 300, and a memory type storage unit 310.
  • the check start address storage unit 300 stores a check start address 301 indicating a position where the check is started.
  • the check start address storage unit 300 receives the data read address 302 and outputs the check start address 301.
  • the DMA address storage unit 280 stores a read address 2811 indicating a position where data is read during DMA transfer, and a write address 2812 indicating a position where data is written during DMA transfer.
  • the DMA address storage unit 280 outputs a read address 2811, a write address 2812, an address including a transfer size, and a transfer size 281.
  • the DMA address storage unit 280 is also referred to as a DMA read / write address storage unit.
  • the read address 2811 is also called a DMA read address
  • the write address 2812 is also called a DMA write address.
  • the control unit 100 controls each component of the DMAC 10 and executes a memory check process.
  • the control unit 100 determines whether or not DMA transfer is being performed, and outputs a read request 101A for reading data from the memory 30 when determining that DMA transfer is not being performed. Further, when it is determined that the DMA transfer is being performed, the control unit 100 outputs a transfer request 101B that requests execution of the DMA transfer.
  • the timing notification 291 is output from the timer unit 290, the control unit 100 starts determining whether or not the DMA transfer is being executed.
  • the control unit 100 outputs a data read address 101, a data write address 102, and an error notification signal 103.
  • the data read address 101 is an example of a read request 101A for reading the read data to be checked from the memory 30, and an example of a transfer request 101B for requesting execution of DMA transfer.
  • the data reading unit 140 receives data via the memory bus 40.
  • the data reading unit 140 reads the check data 142A including the read data 132 to be checked from the position indicated by the check start address 301. Further, when the data read address 101 is output as the transfer request 101B from the control unit 100, the data reading unit 140 reads the check data 142A from the position indicated by the read address 2811.
  • the check data 142A includes read data 132 and an error detection code 131 that detects an error in the read data 132.
  • the data reading unit 140 receives the error detection code and the read data 142 as the check data 142A, and outputs the error detection code and the read data 141.
  • the data writing unit 160 transmits data via the memory bus 40.
  • the data writing unit 160 writes the check data 142A to the write address 2812 when it is determined that there is no error in the read data 132 during execution of the DMA transfer.
  • the data writing unit 160 receives the error detection code and the write data 151 and transmits the error detection code and the write data 161.
  • the local bus IF 270 outputs a DMA read / write address 271, an error detection code base address 272, a DMA activation instruction 273, and a memory type 274.
  • the timer unit 290 outputs a timing notification 291 periodically.
  • the memory type storage unit 310 outputs a memory type 311 indicating the type of the memory 30.
  • the DMAC 10 includes a code check unit 110, a code storage unit 120, an error detection code read data selection 130, and a data and code temporary storage unit 150.
  • the code check unit 110, the code storage unit 120, the error detection code read data selection 130, and the data and code temporary storage unit 150 are used for executing an error check of the memory using the error detection code.
  • the code check unit 110 is an example of a determination unit 110A that determines whether or not there is an error in the read data 132 read by the data reading unit 140.
  • the code checking unit 110 determines whether or not there is an error in the read data 132 based on the read data 132 and the error detection code 131.
  • the code check unit 110 outputs an error check result 111, an error detection code 112, and read data 113.
  • the code check unit 110 is also referred to as an error detection code check unit.
  • the code storage unit 120 outputs an error detection code 121.
  • the code storage unit 120 is also referred to as an error detection code storage unit.
  • the error detection code read data selection 130 outputs an error detection code 131 and read data 132.
  • the data and code temporary storage unit 150 outputs an error detection code and write data 151.
  • the data and code temporary storage unit 150 is also referred to as data and error detection code temporary storage unit.
  • the DMAC 10 includes a code read address storage unit 180, a code read address calculation unit 200, a code write address calculation unit 210, a code base address storage unit 220, and a code write address storage unit 230.
  • the code read address storage unit 180, the code read address calculation unit 200, the code write address calculation unit 210, the code base address storage unit 220, and the code write address storage unit 230 are used for processing the read address and write address of the error detection code. .
  • the code base address storage unit 220 outputs the error detection code base address 221 set by the CPU 20.
  • the code base address storage unit 220 is also referred to as an error detection code base address storage unit.
  • the code read address calculation unit 200 outputs an error detection code read address 201 calculated based on the error detection code base address 221.
  • the code read address calculation unit 200 is also referred to as an error detection code read address calculation unit.
  • the code write address calculation unit 210 outputs an error detection code write address 211 calculated based on the error detection code base address 221.
  • the code write address calculation unit 210 is also referred to as an error detection code write address calculation unit.
  • the code read address storage unit 180 outputs an error detection code read address 181.
  • the code read address storage unit 180 is also referred to as an error detection code read address storage unit.
  • the code write address storage unit 230 outputs an error detection code write address 231.
  • the code write address storage unit 230 is also referred to as an error detection code write address storage unit.
  • the DMAC 10 includes a data read address storage unit 170, a data write address storage unit 240, a read address selection 190, a write address selection 250, and a read / write address selection 260.
  • the data read address storage unit 170 and the data write address storage unit 240 are used for processing related to the read address and write address of data.
  • the read address selection 190, the write address selection 250, and the read / write address selection 260 are used to select the read address and write address of data and error detection codes.
  • the data read address storage unit 170 outputs a data read address 171.
  • the data write address storage unit 240 outputs a data write address 241.
  • the read address selection 190 outputs a read address 191.
  • the write address selection 250 outputs the write address 251.
  • the read / write address selection 260 outputs the memory address 261.
  • the operation of the DMAC 10 according to the present embodiment will be described with reference to FIGS.
  • the DMAC 10 includes a control unit 100 that controls the operation of each constituent unit, and executes the operations described below under the control of the control unit 100.
  • the memory 30 that is a memory check target used in this embodiment is a memory with an ECC (Error Check and Correct) function and a memory without an ECC function. Two examples of the memory 30 used in this embodiment will be described below.
  • ECC code error correction code
  • CRC code bit width in the memory 30 are not limited to the following.
  • Data and ECC error correction codes are output from the memory data bus 41.
  • the error correction code for ECC is called a hamming bit or ECC code. In the present embodiment, it is assumed that the data is 64 bits and the error correction code is 8 bits.
  • the error detection code is assumed to be a cyclic redundancy check code having a bit width of 8, that is, a CRC (Cyclic Redundancy Check) code.
  • the state transition of the mode of the DMAC 10 will be described with reference to FIG.
  • the DMAC 10 has a memory check mode, that is, a memory check mode 2020, and performs a memory check in the memory check mode 2020.
  • the mode in which the memory check is not performed is a non-memory check mode 2010.
  • the memory check mode 2020 and the non-memory check mode 2010 in the DMAC 10 are changed by a memory check operation start instruction 2030 and a memory check mode release 2040 from the CPU 20.
  • the CPU 20 determines whether or not reset is cancelled. In the case of reset cancellation, the CPU 20 proceeds to initialization processing S100. If the reset is not cancelled, the CPU 20 repeats S10 until the reset is cancelled.
  • CPU 20 executes an initialization process S100.
  • the initialization process S100 will be described in detail later.
  • the DMAC 10 determines whether or not there is a memory check operation start instruction 2030. If there is a memory check operation start instruction 2030, the DMAC 10 proceeds to the memory check process S200. If there is no memory check operation start instruction 2030, the DMAC 10 repeats S20 until there is a memory check operation start instruction 2030.
  • the DMAC 10 executes a memory check process S200.
  • the memory check process S200 will be described in detail later.
  • ⁇ Initialization S100> The operation of the initialization process S100 according to the present embodiment will be described with reference to FIG.
  • the CPU 20 sets values necessary for the DMA transfer process and the memory check process in the DMAC 10.
  • the CPU 20 writes a value to each storage unit in the DMAC 10 via the local bus 50 and the local bus IF 270 of the DMAC 10.
  • the initialization process S100 is also referred to as a configuration process.
  • the CPU 20 determines whether the memory 30 is a memory with an ECC function. If the memory 30 is a memory with an ECC function, the process proceeds to S102. If the memory 30 is not a memory with an ECC function, the process proceeds to S103.
  • the CPU 20 sets the error detection code base address 221 in the code base address storage unit 220 of the DMAC 10.
  • the error detection code base address 221 is the head address of the error detection code on the memory 30.
  • the CPU 20 sets the “inspection start address” and the “inspection end address” for starting the memory check in the check start address storage unit 300.
  • the check start address storage unit 300 includes a test end address register 3001, a test target top address register 3002, a selector 3003, a check start address register 3004, and an address adder 3005.
  • “inspection target start address” is set.
  • “inspection end address” is set. Values are set from the CPU 20 to the inspection target start address register 3002 and the inspection end address register 3001 via the local bus 50.
  • the check start address storage unit 300 sets the same value in the check start address register 3004.
  • the value of the inspection target head address register 3002 is set in the check start address register 3004. Further, even when the value of the output 3006 from the address adder 3005 exceeds the address value set in the test end address register 3001, the value of the test start address register 3002 is set in the check start address register 3004. .
  • the value set in the check start address register 3004 is output as the check start address 301.
  • the address adder 3005 and the selector 3003 will be described later.
  • the control unit 100 of the DMAC 10 starts the memory check process in response to the timing notification 291 issued by the timer unit 290 in the memory check mode.
  • the timer unit 290 issues a timing notification 291 to the control unit 100 at regular intervals in the memory check mode.
  • the issuing time interval of the timing notification 291 of the timer unit 290 is set by the CPU 20 via the local bus 50.
  • the control unit 100 of the DMAC 10 determines whether or not the DMA transfer processing S204 is being executed by the DMA transfer activation from the CPU 20. If the DMA transfer process S204 is not being executed (NO in S202), the control unit 100 of the DMAC 10 starts the memory-specific memory check process S203. When the DMA transfer process S204 is being executed (YES in S202), since the DMA transfer process S204 has already been executed and data is being transferred, the control unit 100 of the DMAC 10 ends without doing anything. To do.
  • the control unit 100 uses a DMA transfer flag indicating whether or not the DMA transfer process S204 is being executed in the determination process of whether or not the DMA transfer process S204 is being executed in S202.
  • DMA transfer execution processing S2041 of FIG. 11 described later the control unit 100 starts DMA transfer before starting DMA transfer by activation of DMA transfer from the CPU 20 (that is, before YES after S601 and before S602). Turn on the transfer flag.
  • the control unit 100 turns off the DMA transfer flag immediately before the end. Therefore, the DMA transfer flag is turned on while the DMA transfer is being executed, and is turned off when the DMA transfer is not being executed. Therefore, by using this DMA transfer flag, the control unit 100 can determine whether or not the DMA transfer process S204 in S202 is being executed.
  • the control unit 100 of the DMAC 10 manages an address to be subjected to memory check in the check start address storage unit 300 when executing the memory check process. As illustrated in FIG. 6, the check start address storage unit 300 outputs the value set in the check start address register 3004 to the control unit 100 as the check start address 301. When one memory access on the memory data bus 41 is completed, the control unit 100 outputs a data read address 302 for data reading in the next memory check. The check start address storage unit 300 performs address addition on the data read address 302 output from the control unit 100 by the address adder 3005 to indicate the next address.
  • the check start address storage unit 300 stores the value on which the address addition has been performed (the output 3006 of the address adder 3005) in the check start address register 3004. At this time, if the address set in the check end address register 3001 matches the output 3006 of the address adder 3005, the check start address storage unit 300 stores the check target start address register 3002 in the check start address register 3004. Store the address stored in. Selection between the output 3006 of the address adder 3005 and the inspection target start address 3007 is performed by a selector 3003.
  • step S ⁇ b> 301 the control unit 100 determines a memory check process to be performed based on the memory type set in the memory type storage unit 310.
  • the control unit 100 of the DMAC 10 determines that the memory is a memory with ECC function, and executes ECC memory check processing S302.
  • the control unit 100 of the DMAC 10 determines that the memory is a memory without ECC function, and executes a CRC memory check process S303.
  • step S ⁇ b> 401 the control unit 100 sets the check start address 301 as the data read address 101.
  • the data read address 101 output by the control unit 100 is an example of a read request 101A output when the control unit 100 determines that the DMA transfer is not being executed.
  • the DMAC 10 selects the data read address 171 by the read address selection 190, selects the read address 191 by the read / write address selection 260, and outputs the read address 191 to the memory address bus 42 as the memory address 261.
  • the DMAC 10 reads the read data and the error detection code from the memory address 261 of the memory 30.
  • the DMAC 10 receives the error detection code and the read data 142, that is, the check data 142A from the memory data bus 41 via the data reading unit 140.
  • the error detection code here is an ECC code.
  • the DMAC 10 stores the error detection code 131 in the code storage unit 120.
  • the DMAC 10 combines the error detection code 121 (ECC code) output from the code storage unit 120 and the read data 132 that has been read out, and outputs the combined data to the code check unit 110.
  • ECC code error detection code
  • the code check unit 110 executes an error check that determines whether or not there is an error in the read data 132 based on the read data 132 and the error detection code 131 (ECC code).
  • ECC code error detection code 131
  • the DMAC 10 generates the data read address 101 to be accessed next based on the data read address 171 stored in the data read address storage unit 170.
  • the control unit 100 generates a byte address obtained by adding 8 as the data read address 101.
  • the DMAC 10 sets the generated data read address 101 in the check start address register 3004 in preparation for the case where the DMA transfer activation is executed from the CPU 20.
  • control unit 100 determines whether or not DMA transfer activation is performed from the CPU 20. When the DMA transfer is activated (YES in S410), the control unit 100 ends the ECC memory check process. If DMA transfer is not activated (NO in S410), the process returns to S402 and the ECC memory check process is repeated.
  • step S421 the control unit 100 stops the memory check operation.
  • step S422 the control unit 100 asserts the error notification signal 103 to the CPU 20, notifies the memory that there is an abnormality, and ends the ECC memory check process.
  • the code check unit 110 determines that the read data 132 has an error
  • the code check unit 110 corrects the check data 142A based on the error detection code 131. That is, the code check unit 110 corrects the error detection code (ECC code) and data.
  • the code check unit 110 outputs and stores the correct error detection code (ECC code) and data as the error detection code 112 (ECC code) and the read data 113 to the data and code temporary storage unit 150.
  • the control unit 100 acquires the data read address 171 read from the data read address storage unit 170.
  • the control unit 100 outputs the acquired data read address 171 as the data write address 102 and sets it in the data write address storage unit 240. That is, the data write address 102 is an address where a 1-bit error error is detected, and the data at this address is rewritten with a correct error detection code 112 (ECC code) and read data 113.
  • ECC code error detection code
  • the DMAC 10 selects the data write address 241 by the write address selection 250, selects the write address 251 by the read / write address selection 260, and outputs the write address 251 as the memory address 261.
  • the data writing unit 160 writes the corrected check data 142A to the check start address 301.
  • the DMAC 10 reads the corrected error detection code and the write data 151 stored in the data and code temporary storage unit 150 via the data writing unit 160, outputs them to the memory bus 40, and writes them to the memory 30.
  • the subsequent processing is the same as in the case where there is no ECC error. That is, the DMAC 10 determines whether or not all the areas to be subjected to memory check have been completed in S407, and executes the processes after S407.
  • step S ⁇ b> 501 the control unit 100 sets the check start address 301 as the data read address 101.
  • the DMAC 10 selects the error detection code read address 181 by the read address selection 190, selects the read address 191 by the read / write address selection 260, and outputs the read address 191 to the memory address bus 42 as the memory address 261.
  • the DMAC 10 reads out the CRC error detection code from the memory address 261 of the memory 30.
  • the DMAC 10 receives the error detection code from the memory data bus 41 via the data reading unit 140.
  • the error detection code here is a cyclic redundancy check code, that is, a CRC code.
  • the DMAC 10 stores the error detection code 131 (CRC code) in the code storage unit 120.
  • step S ⁇ b> 504 the DMAC 10 selects the data read address 171 by the read address selection 190, selects the read address 191 by the read / write address selection 260, and reads the read data from the memory 30.
  • step S ⁇ b> 505 the DMAC 10 acquires the read data 132 from the memory data bus 41 through the data reading unit 140 and the error detection code read data selection 130. The read data 132 is input to the sign check unit 110.
  • step S ⁇ b> 506 the code check unit 110 generates an error detection code from the read data 132.
  • a cyclic redundancy check code (CRC code) is assumed as an error detection code generated from read data 132, but other error detection codes may be used.
  • the code check unit 110 compares the error detection code generated from the read data 132 with the error detection code 121 (CRC code) output from the code storage unit 120.
  • the code check unit 110 calculates the read data 132 and determines whether or not the calculated calculation result matches the error detection code 131.
  • the code check unit 110 determines that there is no error in the read data 132 if they match, and determines that there is an error in the read data 132 if they do not match.
  • step S508 determines in step S508 whether or not the memory check has been completed for all areas to be checked. If the memory check has been completed for all areas subject to memory check (YES in S508), the CRC memory check process is terminated. If there is an area where the memory check has not been completed in all areas subject to memory check (NO in S508), the process proceeds to S509.
  • step S509 the control unit 100 generates the data read address 101 to be accessed next based on the data read address 171 stored in the data read address storage unit 170.
  • the control unit 100 When the data read address 171 is 64 bit data, the control unit 100 generates a byte address obtained by adding 8 as the data read address 101.
  • the code read address calculation unit 200 generates an error detection code read address 201 from the data read address 101 to be accessed next, and stores it in the code read address storage unit 180.
  • S ⁇ b> 510 the control unit 100 sets the generated data read address 101 in the check start address register 3004 in preparation for the case where DMA transfer activation is performed from the CPU 20.
  • step S ⁇ b> 511 the control unit 100 determines whether DMA transfer activation is performed from the CPU 20. If the DMA transfer is activated (YES in S511), the control unit 100 ends the CRC memory check process. If the DMA transfer has not been activated (NO in S511), the process returns to S502 and the memory check operation is repeated.
  • step S521 the control unit 100 stops the memory check operation.
  • the control unit 100 asserts the error notification signal 103 to the CPU 20, notifies the memory that there is an abnormality, and ends the CRC memory check process.
  • the operation of the DMA transfer execution process S2041 according to the present embodiment will be described with reference to FIGS.
  • the DMA transfer of the DMAC 10 according to the present embodiment is executed regardless of the memory check mode.
  • the DMAC 10 starts DMA transfer according to the address and transfer size 281 set in the DMA address storage unit 280.
  • the address and transfer size 281 includes a DMA read address, a DMA write address, and a transfer size.
  • step S601 the DMAC 10 waits for DMA activation.
  • the CPU 20 activates DMA transfer to the DMAC 10 via the local bus 50.
  • S ⁇ b> 602 when writing is performed to the register for starting DMA transfer of the local bus IF 270, the local bus IF 270 outputs a DMA start instruction 273 to the control unit 100.
  • the control unit 100 starts a DMA transfer operation, that is, a DMA transfer process S204.
  • step S ⁇ b> 603 the control unit 100 reads the DMA read address included in the address and transfer size 281 and outputs it to the data read address 101.
  • step S ⁇ b> 604 the control unit 100 sets the data read address 101 in the data read address storage unit 170.
  • step S ⁇ b> 605 the control unit 100 reads the DMA write address included in the address and transfer size 281 and outputs the DMA write address to the data write address 102.
  • step S ⁇ b> 606 the control unit 100 sets the data write address 102 in the data write address storage unit 240.
  • step S ⁇ b> 607 the control unit 100 determines the DMA transfer processing to be performed based on the memory type set in the memory type storage unit 310.
  • the control unit 100 executes the ECC DMA transfer process S608, assuming that the memory 30 is a memory with ECC function. If the control unit 100 determines that “memory without ECC function” is set in the memory type storage unit 310, the control unit 100 determines that the memory 30 is a memory without ECC function, and executes the DMA transfer process for CRC S609.
  • the DMA transfer process differs depending on whether the memory 30 is a memory with an ECC function or not.
  • the DMAC 10 reads the data read address 171 set in the data read address storage unit 170.
  • the DMAC 10 reads the memory contents at the data read address 171.
  • the DMAC 10 receives the error detection code and the read data 142 from the memory data bus 41.
  • the error detection code here is an ECC code.
  • the DMAC 10 stores in the code storage unit 120 an error detection code 131 that is an error correction code for ECC, that is, an ECC code.
  • step S ⁇ b> 703 the DMAC 10 combines the error detection code 121 (ECC code) output from the code storage unit 120 and the read data 132 that has been read out, and outputs the combined data to the code check unit 110.
  • the code check unit 110 determines whether there is an error in the read data 132 based on the read data 132 and the error detection code 131. That is, the DMAC 10 performs an ECC error check by the code check unit 110.
  • step S ⁇ b> 706 the DMAC 10 stores the error detection code 112 (ECC code) output from the code check unit 110 and the read data 113 in the data and code temporary storage unit 150.
  • the DMAC 10 reads the data write address 241 stored in the data write address storage unit 240.
  • step S ⁇ b> 708 the DMAC 10 outputs the error detection code and the write data 151 output from the data and code temporary storage unit 150 to the data writing unit 160.
  • step S709 the DMAC 10 writes the error detection code and the write data 151 to the memory area of the data write address 241 by the data writing unit 160.
  • step S710 the DMAC 10 determines whether or not an ECC1 bit error has occurred. If YES in step S705, it means that no ECC1 bit error has occurred (NO in step S710), and therefore the ECC DMA transfer process S608 ends.
  • the process of S706 is executed after the process of S722 described below, since an ECC1 bit error has occurred (YES in S710), the process proceeds to S731.
  • control unit 100 stops the operation of the DMA transfer itself.
  • control unit 100 asserts the error notification signal 103 to the CPU 20, notifies the memory that there is an abnormality, and ends the ECC DMA transfer process S608.
  • the DMAC 10 determines whether or not an ECC1 bit error has occurred. If an ECC1 bit error has occurred (YES in S710), the DMAC 10 proceeds to S731. In this case, the control unit 100 determines whether or not an ECC 1-bit error has occurred in order to write back the corrected ECC code and data in the read area.
  • the DMAC 10 acquires the data read address 171 read from the data read address storage unit 170.
  • the DMAC 10 outputs the data read address 171 to the data write address 102 and sets it in the data write address storage unit 240.
  • the DMAC 10 writes back the corrected ECC code and data corrected to the correct ECC code and data by the code check unit 110 to the memory area of the data write address 241 that is the address value to be written back. That is, the data writing unit 160 writes the check data 142A (correct ECC code and data) corrected by the code check unit 110 to the read address 2811 that is the source of the DMA transfer.
  • step S ⁇ b> 801 the DMAC 10 reads the data read address 171 set in the data read address storage unit 170.
  • step S801 the DMAC 10 reads the memory contents of the data read address 171.
  • the DMAC 10 inputs the error detection code and the read data 142 from the memory data bus.
  • the error detection code and read data 142 include only read data that has been read.
  • step S ⁇ b> 803 the DMAC 10 inputs the read read data to the code check unit 110 as the read data 132 via the data reading unit 140 and the error detection code read data selection 130.
  • the code check unit 110 generates an error detection code from the input read data 132. Note that the DMAC 10 does not perform error detection when reading data by DMA transfer in order to shorten the transfer processing time by omitting the time required for reading the error detection code.
  • the code check unit 110 outputs the generated error detection code 112 and the read data 113 to the data and code temporary storage unit 150.
  • the error detection code 112 and the read data 113 are stored in the data and code temporary storage unit 150.
  • the DMAC 10 reads the data write address 241 stored in the data write address storage unit 240 by the control unit 100.
  • step S ⁇ b> 807 the DMAC 10 outputs the error detection code and write data 151 stored in the data and code temporary storage unit 150 to the data writing unit 160.
  • the error detection code and write data 151 include only the read data 113.
  • the DMAC 10 writes the error detection code of the data writing unit 160 and the write data 151 (data only) into the memory area of the data write address 241.
  • the DMAC 10 reads the error detection code write address 231 stored in the code write address storage unit 230 by the control unit 100.
  • the DMAC 10 outputs the error detection code and write data 151 stored in the data and code temporary storage unit 150 to the data writing unit 160.
  • the error detection code and write data 151 include only the error detection code 112 (CRC code).
  • the DMAC 10 writes the error detection code and the write data 151 (only the CRC code) to the memory area of the error detection code write address 231 via the data writing unit 160. This is the end of the description of the operation of the CRC DMA transfer process S609.
  • the code read address calculation unit 200 includes a subtracter 2001, a right 3-bit shifter 2004, and an adder 2006.
  • the code read address calculation unit 200 receives the memory start address 2002.
  • the subtracter 2001 outputs a data read offset address 2003.
  • the right 3-bit shifter 2004 outputs an error detection code read offset address 2005.
  • the data is 64-bit data
  • the error detection code is an 8-bit cyclic redundancy check code (CRC code).
  • the code read address calculation unit 200 sets an address obtained by subtracting the memory start address 2002 from the data read address 171 by the subtractor 2001 as a data read offset address 2003.
  • the memory start address 2002 is set by the CPU 20 during the initialization process S100 and stored in the DMAC 10.
  • the code read address calculation unit 200 sets the value obtained by dividing the data read offset address 2003 by 8, that is, the output of the right 3-bit shifter 2004 as the error detection code read offset address 2005.
  • the code read address calculation unit 200 adds the error detection code base address 221 stored in the code base address storage unit 220 to the error detection code read offset address 2005 by the adder 2006.
  • the code read address calculation unit 200 generates the output of the adder 2006 as the error detection code read address 201.
  • the error detection code read address 201 is output to the code read address storage unit 180.
  • the error detection code write address generation process of the code write address calculation unit 210 is the same as the error detection code read address generation process of the code read address calculation unit 200 described above.
  • FIG. 15 is a diagram illustrating an example of a hardware configuration of the embedded system 1000 according to the present embodiment.
  • the embedded system 1000 is a computer.
  • the embedded system 1000 includes hardware such as a processor 901, an auxiliary storage device 902, a memory 903, a communication device 904, an input interface 905, a display interface 906, and a DMAC 10.
  • the processor 901 is connected to other hardware via the signal line 910, and controls these other hardware.
  • the CPU 20 described above is an example of the processor 901.
  • the memory 30 described above is an example of the memory 903. Further, the memory bus 40 and the local bus 50 described above are examples of the signal line 910.
  • the input interface 905 is connected to the input device 907.
  • the display interface 906 is connected to the display 908.
  • the processor 901 is an IC (Integrated Circuit) that performs processing.
  • the processor 901 is, for example, a CPU, a DSP (Digital Signal Processor), or a GPU.
  • the auxiliary storage device 902 is, for example, a ROM (Read Only Memory), a flash memory, or an HDD (Hard Disk Drive).
  • the memory 903 is, for example, a RAM (Random Access Memory).
  • the communication device 904 includes a receiver 9041 that receives data and a transmitter 9042 that transmits data.
  • the communication device 904 is, for example, a communication chip or a NIC (Network Interface Card).
  • the input interface 905 is a port to which the cable 911 of the input device 907 is connected.
  • the input interface 905 is, for example, a USB (Universal Serial Bus) terminal.
  • the display interface 906 is a port to which the cable 912 of the display 908 is connected.
  • the display interface 906 is, for example, a USB terminal or an HDMI (registered trademark) (High Definition Multimedia Interface) terminal.
  • the input device 907 is, for example, a mouse, a keyboard, or a touch panel.
  • the display 908 is, for example, an LCD (Liquid Crystal Display).
  • the auxiliary storage device 902 stores a program that realizes the functions of the embedded system 1000.
  • components that implement the functions of the embedded system 1000 are collectively referred to as “parts”.
  • the program that realizes the function of “unit” may be a single program or a plurality of programs. This program is loaded into the memory 903, read into the processor 901, and executed by the processor 901.
  • auxiliary storage device 902 also stores an OS (Operating System). Then, at least a part of the OS is loaded into the memory 903, and the processor 901 executes a program that realizes the function of “unit” while executing the OS.
  • OS Operating System
  • the embedded system 1000 may include a plurality of processors 901.
  • a plurality of processors 901 may execute a program for realizing the function of “unit” in cooperation with each other.
  • information, data, signal values, and variable values indicating the processing results of the “unit” are stored as files in the memory 903, the auxiliary storage device 902, or a register or cache memory in the processor 901.
  • circuitry may be provided as “circuitry”. Further, “part” may be read as “circuit”, “process”, “procedure”, or “processing”. Further, “processing” may be read as “circuit”, “process”, “procedure”, or “part”. “Circuit” and “Circuitry” include not only the processor 901 but also other types of processing circuits such as a logic IC or GA (Gate Array) or ASIC (Application Specific Integrated Circuit) or FPGA (Field-Programmable Gate Array). It is a concept to include.
  • GA Gate Array
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable Gate Array
  • a program product is a storage medium, a storage device, or the like on which a program that realizes the function described as a “part” is recorded. It is what you are loading.
  • the DMAC has a memory check function separately from the DMA transfer function. Therefore, the memory check can be executed even when the DMAC is not performing DMA transfer. Further, according to the memory check device, even when DMA transfer is in progress, the DMAC can perform a memory check and execute the DMA transfer process when the check result is normal. Therefore, the memory check device can perform the memory check process without interrupting or delaying the DMA transfer process.
  • the memory check device has a memory type storage unit that stores memory type information indicating whether or not the memory subject to DMA transfer and memory check has an ECC function. Therefore, the DMAC can easily determine the memory type.
  • the memory is an ECC function-equipped memory and when it is possible to perform error correction by checking the validity of data at the time of DMA transfer (in the case of a 1-bit error)
  • the memory check device is based on the ECC code. Data can be corrected. According to the memory check device, the corrected ECC code and data can be written in the memory of the write destination and the read source, so that the memory can be corrected without interrupting or delaying the processing.
  • the memory check device If the memory is not a memory with an ECC function, the memory check device generates a cyclic redundancy check (CRC) code at the time of DMA transfer and writes it in the corresponding memory address (CRC code storage area).
  • the memory check device can check data using a CRC code.
  • the memory check device can be employed in various types of embedded systems.
  • the memory check device corrects the data when the error can be corrected by the memory check (1 bit error), and after the correction.
  • the ECC code and data are written to the memory address of the reading source.
  • the memory check device reads the CRC code from the corresponding memory address, and checks for a match with the CRC code generated from the read data generated in the DMAC. To do.
  • the memory check device when the memory check is not performed at the time of DMA transfer, the memory check process is performed according to the type of the memory regardless of whether the memory is an ECC function memory or an ECC function memory. Can be executed. Therefore, the memory check device can be employed in various types of embedded systems.
  • the memory check device has a mode in which a memory check operation is possible (memory check mode) and a non-operation mode (non-memory check mode).
  • the mode is changed between the memory check mode and the non-memory check mode according to an instruction from the CPU via the local bus.
  • the memory check device since the built-in timer unit periodically shifts to the memory check mode by the timing notification of light emission, the memory check can be executed finely.
  • the memory check device priority is given to DMA transfer activation, and it is confirmed that there is no DMA transfer activation before and during the memory check, so that the memory transfer can be performed without interrupting or delaying the DMA transfer processing. Perform check processing. Further, according to the memory check device, when the memory check is interrupted by the start of the DMA transfer, the next memory check can be executed from the subsequent address stored in the check start address storage unit.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

 DMA転送を実行するDMAC(10)は、チェックを開始する位置を示すチェック開始アドレス(301)を記憶するチェック開始アドレス記憶部(300)と、DMA転送を実行中であるか否かを判定し、DMA転送の実行中でないと判定した場合に、メモリからデータを読み込む読込み要求(101A)を出力する制御部(100)と、読込み要求(101A)が出力されると、チェック開始アドレス(301)が示す位置からリードデータ(132)を含むチェックデータ(142A)を読み込むデータ読込み部(140)と、リードデータ(132)に誤りがあるか否かを判定する判定部(110A)とを備える。

Description

[規則37.2に基づきISAが決定した発明の名称] メモリチェック機能を有するDMAC
 本発明は、組込みシステムに実装されるDMA(Direct Memory Access)コントローラ、すなわちDMAC(Direct Memory Access Controller)によりメモリチェックを実行するメモリチェック装置、組込みシステム及びメモリチェック方法に関する。
 現在の組込みシステムは、CPU(Central Processing Unit)とCPUを動作させるプログラムとにより高機能かつ高性能なシステムを実現している。高機能かつ高性能なシステムの構成において、プログラムあるいはデータを保持及び記憶するメインメモリは必須のものとなっている。
 メインメモリの健全性を確認するメモリチェックは、システム動作において必須である。一方メインメモリは、半導体技術の進歩と共にその容量が増加かつ微細化しており、メモリセルで異常が発生する可能性も大きくなる。
 組込みシステムは安全性が重要となるものにも適用されている。特に、社会インフラへの適用では、組込みシステムの異常が社会生活へ影響を与える。例えば、医療機器あるいは自動車等への適用では、組込みシステムの異常が生命を脅かす可能性もある。組込みシステムの異常を引き起こす原因の一つは、メモリ上のデータの異常である。メモリには、組込みシステムのCPUが実行するプログラムから、処理で利用される中間データまでの様々なデータが格納される。組込みシステムの動作を健全に保つためには、メモリ上のデータが異常であることを検出し、対処することが必要である。
 特許文献1には、DMACを用いたメモリチェックを行う技術が開示されている。
特開2002-259228号公報
 しかしながら、特許文献1の技術では、DMACがDMA転送されたROM(Read Only Memory)の所定領域のデータを演算し、ROMに記憶されたデータと演算結果とをCPUが比較する。このため、CPUで本来実行する処理が中断または遅延されるという課題がある。
 また、組込みシステムにメモリチェック専用の回路を追加することにより、メモリチェックを行うことは可能であるが、専用の回路の付加は製品コストの上昇となるという課題がある。
 本発明は、CPUが実行する処理を中断または遅延することなく、DMACが有する機能を利用することでメモリチェックを実行することにより、コスト上昇を抑えたメモリチェック装置を提供することを目的とする。
 本発明に係るメモリチェック装置は、
 メモリに記憶されたデータをチェックするメモリチェック装置において、
 CPUからの転送命令によりDMA転送を実行するDMAコントローラを備え、
 前記DMAコントローラは、
 チェックを開始する位置を示すチェック開始アドレスを記憶するチェック開始アドレス記憶部と、
 DMA転送を実行中であるか否かを判定し、DMA転送の実行中でないと判定した場合に、前記メモリからデータを読み込む読込み要求を出力する制御部と、
 前記制御部から前記読込み要求が出力されると、前記チェック開始アドレスが示す位置からチェックの対象であるリードデータを含むチェックデータを読み込むデータ読込み部と、
 前記データ読込み部により読み込まれた前記リードデータに誤りがあるか否かを判定する判定部とを備える。
 本発明に係るメモリチェック装置では、DMAコントローラが、チェック開始アドレスを記憶するチェック開始アドレス記憶部と、DMA転送を実行中であるか否かを判定し、DMA転送の実行中でないと判定した場合に、メモリからデータを読み込む読込み要求を出力する制御部と、読込み要求が出力されると、チェック開始アドレスが示す位置からリードデータを含むチェックデータを読み込むデータ読込み部と、リードデータに誤りがあるか否かを判定する判定部とを備えるので、CPUが実行する処理を中断または遅延することなくメモリチェックを実行することができると共に、製造コストを抑えたメモリチェック装置を提供することができる。
実施の形態1に係る組込みシステムの構成図。 実施の形態1に係るDMACのブロック構成図。 実施の形態1に係るDMACのモードの状態遷移図。 実施の形態1に係るDMACにおける電源投入後のリセット解除からメモリチェック処理までの全体動作を示すフロー図。 実施の形態1に係る初期化処理S100の動作を示すフロー図。 実施の形態1に係るチェック開始アドレス記憶部の構成図。 実施の形態1に係るメモリチェック処理S200の全体動作を示すフロー図。 実施の形態1に係るメモリ別メモリチェック処理S203の動作を示すフロー図。 実施の形態1に係るECC用メモリチェック処理S302の動作を示すフロー図。 実施の形態1に係るCRC用メモリチェック処理S303の動作を示すフロー図。 実施の形態1に係るDMA転送実行処理S2041の全体動作を示すフロー図。 実施の形態1に係るECC用DMA転送処理S608の動作を示すフロー図。 実施の形態1に係るCRC用DMA転送処理S609の動作を示すフロー図。 実施の形態1に係る符号リードアドレス計算部の構成図。 実施の形態1に係る組込みシステムのハードウェア構成の一例を示す図。
 実施の形態1.
***構成の説明***
 図1を用いて、本実施の形態に係る組込みシステム1000の構成について説明する。
 組込みシステム1000は、DMAC10、CPU20、メモリ30、メモリバス40、ローカルバス50を備える。DMAコントローラ10A、すなわちDMAC10は、メモリ30に記憶されたデータをチェックするメモリチェック装置800の例である。
 DMAC10は、ローカルバス50によりCPU20に接続される。また、DMAC10は、メモリバス40によりメモリ30と接続される。DMAC10は、ローカルバス50を介してCPU20から送信される転送命令によりDMA転送を実行する。また、DMAC10は、メモリバス40を介してメモリ30の健全性を確認するメモリチェック処理を実行する。
 図2を用いて、本実施の形態に係るDMAC10のブロック構成について説明する。
 メモリバス40は、メモリ30にデータを転送するメモリデータバス41とメモリ30にアドレスを転送するメモリアドレスバス42とを備える。
 DMAC10は、制御部100、データ読込み部140、データ書込み部160を備える。また、DMAC10は、ローカルバスIF270、DMAアドレス記憶部280、タイマ部290、チェック開始アドレス記憶部300、メモリ種類記憶部310を備える。
 チェック開始アドレス記憶部300は、チェックを開始する位置を示すチェック開始アドレス301を記憶する。チェック開始アドレス記憶部300は、データリードアドレス302を入力し、チェック開始アドレス301を出力する。
 DMAアドレス記憶部280は、DMA転送の際にデータを読み込む位置を示す読込みアドレス2811と、DMA転送の際にデータを書き込む位置を示す書込みアドレス2812とを記憶する。DMAアドレス記憶部280は、読込みアドレス2811、書込みアドレス2812及び転送サイズが含まれるアドレス及び転送サイズ281を出力する。
 DMAアドレス記憶部280はDMAリードライトアドレス記憶部とも称される。読込みアドレス2811はDMAリードアドレス、書込みアドレス2812はDMAライトアドレスとも称される。
 制御部100は、DMAC10の各構成部を制御し、メモリチェック処理を実行する。
 制御部100は、DMA転送を実行中であるか否かを判定し、DMA転送の実行中でないと判定した場合に、メモリ30からデータを読み込む読込み要求101Aを出力する。
 また、制御部100は、DMA転送の実行中であると判定した場合に、DMA転送の実行を要求する転送要求101Bを出力する。
 制御部100は、タイマ部290からタイミング通知291が出力されると、DMA転送を実行中であるか否かの判定を開始する。
 制御部100は、データリードアドレス101、データライトアドレス102、エラー通知信号103を出力する。データリードアドレス101はメモリ30からチェック対象のリードデータを読み込む読込み要求101Aの例であると共に、DMA転送の実行を要求する転送要求101Bの例である。
 データ読込み部140は、メモリバス40を介してデータの受信を実行する。
 データ読込み部140は、制御部100から読込み要求101Aとしてデータリードアドレス101が出力されると、チェック開始アドレス301が示す位置からチェックの対象であるリードデータ132を含むチェックデータ142Aを読み込む。
 また、データ読込み部140は、制御部100から転送要求101Bとしてデータリードアドレス101が出力されると、読込みアドレス2811が示す位置からチェックデータ142Aを読み込む。
 チェックデータ142Aは、リードデータ132とリードデータ132の誤りを検出する誤り検出符号131とを含む。
 データ読込み部140は、チェックデータ142Aとして誤り検出符号及びリードデータ142が入力され、誤り検出符号及びリードデータ141を出力する。
 データ書込み部160は、メモリバス40を介してデータの送信を実行する。データ書込み部160は、DMA転送の実行中にリードデータ132に誤りがないと判定された場合に、チェックデータ142Aを書込みアドレス2812に書き込む。データ書込み部160は、誤り検出符号及びライトデータ151が入力され、誤り検出符号及びライトデータ161を送信する。
 ローカルバスIF270は、DMAリードライトアドレス271、誤り検出符号ベースアドレス272、DMA起動指示273、メモリ種類274を出力する。
 タイマ部290は、定期的にタイミング通知291を出力する。
 メモリ種類記憶部310は、メモリ30の種類を示すメモリ種類311を出力する。
 DMAC10は、符号チェック部110、符号格納部120、誤り検出符号リードデータ選択130、データ及び符号一時格納部150を備える。
 符号チェック部110、符号格納部120、誤り検出符号リードデータ選択130、データ及び符号一時格納部150は、誤り検出符号を用いたメモリのエラーチェックの実行に用いられる。
 符号チェック部110は、データ読込み部140により読み込まれたリードデータ132に誤りがあるか否かを判定する判定部110Aの例である。符号チェック部110は、リードデータ132と誤り検出符号131とに基づいてリードデータ132に誤りがあるか否かを判定する。
 符号チェック部110は、エラーチェックのチェック結果111、誤り検出符号112、リードデータ113を出力する。符号チェック部110は、誤り検出符号チェック部とも称される。
 符号格納部120は、誤り検出符号121を出力する。符号格納部120は、誤り検出符号格納部とも称される。
 誤り検出符号リードデータ選択130は、誤り検出符号131、リードデータ132を出力する。
 データ及び符号一時格納部150は、誤り検出符号及びライトデータ151を出力する。データ及び符号一時格納部150は、データ及び誤り検出符号一時格納部とも称される。
 DMAC10は、符号リードアドレス格納部180、符号リードアドレス計算部200、符号ライトアドレス計算部210、符号ベースアドレス記憶部220、符号ライトアドレス格納部230を備える。
 符号リードアドレス格納部180、符号リードアドレス計算部200、符号ライトアドレス計算部210、符号ベースアドレス記憶部220、符号ライトアドレス格納部230は、誤り検出符号のリードアドレス、ライトアドレスの処理に用いられる。
 符号ベースアドレス記憶部220は、CPU20により設定された誤り検出符号ベースアドレス221を出力する。符号ベースアドレス記憶部220は、誤り検出符号ベースアドレス記憶部とも称される。
 符号リードアドレス計算部200は、誤り検出符号ベースアドレス221を元に算出された誤り検出符号リードアドレス201を出力する。符号リードアドレス計算部200は、誤り検出符号リードアドレス計算部とも称される。
 符号ライトアドレス計算部210は、誤り検出符号ベースアドレス221を元に算出された誤り検出符号ライトアドレス211を出力する。符号ライトアドレス計算部210は、誤り検出符号ライトアドレス計算部とも称される。
 符号リードアドレス格納部180は、誤り検出符号リードアドレス181を出力する。符号リードアドレス格納部180は、誤り検出符号リードアドレス格納部とも称される。
 符号ライトアドレス格納部230は、誤り検出符号ライトアドレス231を出力する。符号ライトアドレス格納部230は、誤り検出符号ライトアドレス格納部とも称される。
 DMAC10は、データリードアドレス格納部170、データライトアドレス格納部240、リードアドレス選択190、ライトアドレス選択250、リードライトアドレス選択260を備える。
 データリードアドレス格納部170、データライトアドレス格納部240は、データのリードアドレス、ライトアドレスに関する処理に用いられる。リードアドレス選択190、ライトアドレス選択250、リードライトアドレス選択260は、データ及び誤り検出符号のリードアドレス、ライトアドレスの選択に用いられる。
 データリードアドレス格納部170は、データリードアドレス171を出力する。
 データライトアドレス格納部240は、データライトアドレス241を出力する。
 リードアドレス選択190は、リードアドレス191を出力する。
 ライトアドレス選択250は、ライトアドレス251を出力する。
 リードライトアドレス選択260は、メモリアドレス261を出力する。
 図2における各構成部及び入出力については、以下の動作の説明において詳しく説明する。
***動作の説明***
 図3から図14を用いて、本実施の形態に係るDMAC10の動作について説明する。
 DMAC10は、各構成部の動作を制御する制御部100を備え、制御部100の制御により以下に説明する動作を実行する。
 本実施の形態で使用するメモリチェック対象のメモリ30は、ECC(Error Check and Correct)機能付メモリ及びECC機能無しメモリである。本実施の形態で使用するメモリ30の例として、以下に2つ説明する。ただし、メモリ30におけるデータ幅、誤り訂正符号(ECCコード)ビット幅、並びにCRCコードビット幅は以下に限らない。
(1)メモリがECC機能付メモリである場合、ECC用の訂正用の符号がメモリ30から読み出せる。また、メモリデータバス41からは、データとECC用の誤り訂正符号とが出力される。ECC用の誤り訂正符号は、ハミングビット、ECCコードと呼ばれる。本実施の形態では、データは64ビット、誤り訂正符号は8ビットを想定する。
(2)メモリがECC機能無しメモリである場合、誤り検出符号を格納する領域をメモリ30上に確保し、CPU20はその領域を認識している。本実施の形態では、誤り検出符号はビット幅8の巡回冗長検査コード、すなわちCRC(Cyclic Redundancy Check)コードを想定する。
 図3を用いて、DMAC10のモードの状態遷移について説明する。
 DMAC10は、メモリチェックを実施するモード、すなわちメモリチェックモード2020を持ち、メモリチェックモード2020時にメモリチェックを行う。メモリチェックを実施しないモードは非メモリチェックモード2010とする。
 DMAC10におけるメモリチェックモード2020と非メモリチェックモード2010とは、CPU20からのメモリチェック動作開始指示2030とメモリチェックモード解除2040とによって遷移する。
 図4を用いて、DMAC10における電源投入後のリセット解除からメモリチェック処理までの全体動作について説明する。
 S10において電源が投入されると、CPU20はリセット解除か否かを判定する。リセット解除の場合は、CPU20は初期化処理S100に進む。リセット解除でない場合は、CPU20はリセット解除になるまでS10を繰り返す。
 CPU20は、初期化処理S100を実行する。初期化処理S100については後で詳しく説明する。
 S20において、DMAC10はメモリチェック動作開始指示2030があるか否かを判定する。メモリチェック動作開始指示2030がある場合は、DMAC10はメモリチェック処理S200に進む。メモリチェック動作開始指示2030がない場合は、DMAC10はメモリチェック動作開始指示2030があるまでS20を繰り返す。
 DMAC10は、メモリチェック処理S200を実行する。メモリチェック処理S200については後で詳しく説明する。
<初期化処理S100>
 図5を用いて、本実施の形態に係る初期化処理S100の動作について説明する。
 初期化処理S100では、CPU20は、DMAC10に対し、DMA転送処理及びメモリチェック処理に必要な値の設定を行う。CPU20は、ローカルバス50とDMAC10のローカルバスIF270とを経由し、DMAC10内の各記憶部に値の書き込みを実行する。初期化処理S100は、コンフィグレーション処理とも称される。
 S101において、CPU20は、メモリ30がECC機能付メモリか否かを判定する。
 メモリ30がECC機能付メモリの場合は、処理はS102に進む。
 メモリ30がECC機能付メモリでない場合は、処理はS103に進む。
 S102において、CPU20は、「ECC機能付メモリ」をDMAC10のメモリ種類記憶部310に設定する。
 S103において、CPU20は、「ECC機能無しメモリ」をDMAC10のメモリ種類記憶部310に設定する。
 S104において、CPU20は、DMAC10の符号ベースアドレス記憶部220に誤り検出符号ベースアドレス221を設定する。誤り検出符号ベースアドレス221は、メモリ30上の誤り検出符号の先頭アドレスである。
 S105において、CPU20は、メモリチェックを開始する「検査対象先頭アドレス」及び「検査終了アドレス」を、チェック開始アドレス記憶部300に設定する。
<チェック開始アドレス記憶部300の構成>
 ここで、図6を用いて、チェック開始アドレス記憶部300の構成について説明する。
 チェック開始アドレス記憶部300は、検査終了アドレスレジスタ3001、検査対象先頭アドレスレジスタ3002、選択器3003、チェック開始アドレスレジスタ3004、アドレス加算器3005を備える。
 検査対象先頭アドレスレジスタ3002には、「検査対象先頭アドレス」が設定される。検査終了アドレスレジスタ3001には、「検査終了アドレス」が設定される。検査対象先頭アドレスレジスタ3002と検査終了アドレスレジスタ3001には、ローカルバス50を経由してCPU20から値が設定される。
 チェック開始アドレス記憶部300は、CPU20により検査対象先頭アドレスレジスタ3002に値が設定されると、チェック開始アドレスレジスタ3004にも同じ値を設定する。つまり、CPU20から検査対象先頭アドレスレジスタ3002に書き込みを行った時(アドレスをセットした時)に、チェック開始アドレスレジスタ3004に検査対象先頭アドレスレジスタ3002の値が設定される。さらに、アドレス加算器3005からの出力3006の値が、検査終了アドレスレジスタ3001に設定されているアドレス値を超えた時にも、チェック開始アドレスレジスタ3004に検査対象先頭アドレスレジスタ3002の値が設定される。
 チェック開始アドレスレジスタ3004に設定された値がチェック開始アドレス301として出力される。
 アドレス加算器3005及び選択器3003については後で説明する。
 以上で、初期化処理S100についての説明を終わる。
<メモリチェック処理S200>
 次に、図7から図10を用いて、本実施の形態に係るメモリチェック処理S200の動作について説明する。
 上述したように、メモリチェック動作開始指示2030があると、DMAC10はメモリチェック処理S200を開始する。
 まず、図7を用いて、メモリチェック処理S200の全体動作について説明する。
 S201において、DMAC10の制御部100は、メモリチェックモード時おいてタイマ部290が発行するタイミング通知291を契機とし、メモリチェック処理を開始する。
 タイマ部290は、メモリチェックモード時おいて一定の時間毎にタイミング通知291を制御部100に発行する。タイマ部290のタイミング通知291の発行時間間隔は、ローカルバス50を経由しCPU20により設定される。
 タイマ部290からのタイミング通知291があると、DMAC10の制御部100は、CPU20からのDMA転送起動によりDMA転送処理S204の実行中であるか否かを判定する。
 DMA転送処理S204の実行中でなければ(S202でNO)、DMAC10の制御部100は、メモリ別メモリチェック処理S203を開始する。
 DMA転送処理S204の実行中の場合(S202でYES)、DMA転送処理S204は既に実行されていてデータの転送が行われている状態であるため、DMAC10の制御部100は、何もせずに終了する。
 例えば、制御部100は、S202におけるDMA転送処理S204の実行中であるか否かの判定処理に、DMA転送処理S204の実行中であるか否かを示すDMA転送フラグを用いる。
 具体的には、後述する図11のDMA転送実行処理S2041において、制御部100は、CPU20からのDMA転送起動によりDMA転送を始める前(すなわち、S601のYESの次でS602の前)に、DMA転送フラグをオンにする。また、図11のDMA転送実行処理S2041において、制御部100は、終了の直前に、DMA転送フラグをオフにする。したがって、DMA転送フラグは、DMA転送の実行中にオンになり、DMA転送の実行中でないときはオフになる。よって、このDMA転送フラグを用いることにより、制御部100は、S202におけるDMA転送処理S204の実行中であるか否かを判定することができる。
<メモリチェックの対象となるアドレスの管理処理>
 DMAC10の制御部100は、メモリチェック処理実行時において、メモリチェックの対象となるアドレスをチェック開始アドレス記憶部300で管理する。
 図6に示すように、チェック開始アドレス記憶部300は、チェック開始アドレスレジスタ3004に設定された値を、チェック開始アドレス301として制御部100に出力する。
 メモリデータバス41上の1回のメモリアクセスが完了すると、次のメモリチェックにおけるデータ読み出しのために、制御部100がデータリードアドレス302を出力する。チェック開始アドレス記憶部300は、次のアドレスを示すために、制御部100から出力されたデータリードアドレス302に対し、アドレス加算器3005によりアドレス加算を実行する。チェック開始アドレス記憶部300は、アドレス加算が実行された値(アドレス加算器3005の出力3006)をチェック開始アドレスレジスタ3004に格納する。
 この時、チェック開始アドレス記憶部300は、検査終了アドレスレジスタ3001に設定されたアドレスと、アドレス加算器3005の出力3006とが一致した場合は、チェック開始アドレスレジスタ3004に、検査対象先頭アドレスレジスタ3002に格納されたアドレスを格納する。
 アドレス加算器3005の出力3006と検査対象先頭アドレス3007との選択は、選択器3003で行う。
 以上で、メモリチェック処理S200の全体動作についての説明を終わる。
<メモリ別メモリチェック処理S203>
 次に、図8を用いて、メモリ別メモリチェック処理S203の動作について説明する。
 メモリチェック動作は、メモリ30がECC機能付メモリの場合とECC機能付メモリでない場合とで異なる。
 S301において、制御部100は、メモリ種類記憶部310に設定されているメモリ種類により、実施するメモリチェック処理を判定する。
 DMAC10の制御部100は、メモリ種類記憶部310に「ECC機能付メモリ」が設定されていると判定すると、メモリがECC機能付メモリであるとしECC用メモリチェック処理S302を実行する。
 DMAC10の制御部100は、メモリ種類記憶部310に「ECC機能無しメモリ」が設定されていると判定すると、メモリがECC機能無しメモリであるとしCRC用メモリチェック処理S303を実行する。
 以上で、メモリ別メモリチェック処理S203の動作についての説明を終わる。
<ECC用メモリチェック処理S302>
 図9を用いて、ECC用メモリチェック処理S302、ECC用メモリチェック方法(メモリチェック方法)の動作について説明する。
 S401において、制御部100は、チェック開始アドレス301をデータリードアドレス101とする。ここで、制御部100が出力するデータリードアドレス101は、制御部100がDMA転送の実行中でないと判定した場合に出力する読込み要求101Aの例である。
 S402において、DMAC10は、リードアドレス選択190によりデータリードアドレス171を選択し、リードライトアドレス選択260によりリードアドレス191を選択し、リードアドレス191をメモリアドレス261としてメモリアドレスバス42に出力する。このように、DMAC10は、メモリ30のメモリアドレス261からリードデータ及び誤り検出符号の読み出しを実行する。
 DMAC10は、メモリデータバス41からデータ読込み部140を介して誤り検出符号及びリードデータ142、すなわちチェックデータ142Aを受信する。
 なお、ここでの誤り検出符号はECCコードである。
 S403において、DMAC10は、符号格納部120に、誤り検出符号131を格納する。
 また、S404において、DMAC10は、符号格納部120から出力される誤り検出符号121(ECCコード)と、読み出したリードデータ132とをあわせて、符号チェック部110に出力する。
 S405において、符号チェック部110は、リードデータ132と誤り検出符号131(ECCコード)とに基づいてリードデータ132に誤りがあるか否かを判定するエラーチェックを実行する。ここでの誤り検出符号によるエラーチェックは、ECCエラーチェックである。
<ECCエラーチェック正常の場合の処理>
 ECCエラーチェックのチェック結果111が正常の場合(S406でYES)、制御部100は、S407において、メモリチェック対象の全領域についてメモリチェックが完了したか否かを判定する。チェック結果111が正常とは、ECCエラーがない場合である。
 メモリチェック対象の全領域についてメモリチェックが完了した場合(S407でYES)は、ECC用メモリチェック処理を終了する。
 メモリチェック対象の全領域においてメモリチェックが未完了の領域がある場合(S407でNO)は、S408に進む。
 S408において、DMAC10は、データリードアドレス格納部170に格納されたデータリードアドレス171を基に、次にアクセスするデータリードアドレス101を生成する。制御部100は、データリードアドレス171が64bitデータ時は8加算したバイトアドレスをデータリードアドレス101として生成する。
 S409において、DMAC10は、DMA転送起動がCPU20から実施された場合に備え、チェック開始アドレスレジスタ3004に生成したデータリードアドレス101を設定する。
 S410において、制御部100は、DMA転送起動がCPU20から実施されたか否か判定する。
 DMA転送が起動されている場合(S410でYES)は、制御部100はECC用メモリチェック処理を終了する。
 DMA転送が起動されていない場合(S410でNO)は、S402に戻りECC用メモリチェック処理を繰り返す。
<ECCエラーチェックでエラー検出の場合の処理>
 ECCエラーチェックのチェック結果111が異常の場合(S406でNO)、処理はS406aに進む。
 ECCエラーチェックのチェック結果111において2ビット誤りエラーを検出した場合(S406aでYES)、処理はS421に進む。
 S421において、制御部100は、メモリチェックの動作を停止する。
 S422において、制御部100は、CPU20にエラー通知信号103をアサートし、メモリに異常があることを通知し、ECC用メモリチェック処理を終了する。
 ECCエラーチェックのチェック結果111において1ビット誤りエラーを検出した場合(S406aでNO)、処理はS431に進む。
 S431において、符号チェック部110は、リードデータ132に誤りがあると判定した場合、誤り検出符号131に基づいてチェックデータ142Aを訂正する。すなわち、符号チェック部110は、正しい誤り検出符号(ECCコード)及びデータに訂正する。
 S432において、符号チェック部110は、正しい誤り検出符号(ECCコード)及びデータを誤り検出符号112(ECCコード)及びリードデータ113として、データ及び符号一時格納部150に出力し格納する。
 S433において、制御部100は、データリードアドレス格納部170から読み出したデータリードアドレス171を取得する。制御部100は、取得したデータリードアドレス171をデータライトアドレス102として出力し、データライトアドレス格納部240に設定する。すなわち、このデータライトアドレス102は、1ビット誤りエラーを検出したアドレスであり、このアドレスのデータを正しい誤り検出符号112(ECCコード)及びリードデータ113で書き換える。
 DMAC10は、ライトアドレス選択250でデータライトアドレス241を選択し、リードライトアドレス選択260でライトアドレス251を選択し、ライトアドレス251をメモリアドレス261として出力する。
 S434において、データ書込み部160は、訂正されたチェックデータ142Aを、チェック開始アドレス301に書き込む。DMAC10は、データ書込み部160を介してデータ及び符号一時格納部150に格納された訂正後の誤り検出符号及びライトデータ151を読み出し、メモリバス40に出力しメモリ30へ書き込む。
 以降の処理は、ECCエラーがない場合と同様である。すなわち、DMAC10は、S407においてメモリチェック対象となる全領域が完了したか否か判定し、S407以降の処理を実行する。
 以上で、ECC用メモリチェック処理S302の動作についての説明を終わる。
<CRC用メモリチェック処理S303>
 図10を用いて、CRC用メモリチェック処理S303、CRC用メモリチェック方法(メモリチェック方法)の動作について説明する。
 S501において、制御部100は、チェック開始アドレス301をデータリードアドレス101とする。
 S502において、DMAC10は、リードアドレス選択190により誤り検出符号リードアドレス181を選択し、リードライトアドレス選択260によりリードアドレス191を選択し、リードアドレス191をメモリアドレス261としてメモリアドレスバス42に出力する。このように、DMAC10は、メモリ30のメモリアドレス261からCRC用の誤り検出符号の読み出しを実行する。DMAC10は、メモリデータバス41からデータ読込み部140を介して誤り検出符号を受信する。
 なお、ここでの誤り検出符号は巡回冗長検査コード、すなわちCRCコードである。
 S503において、DMAC10は、符号格納部120に、誤り検出符号131(CRCコード)を格納する。
 S504において、DMAC10は、リードアドレス選択190でデータリードアドレス171を選択し、リードライトアドレス選択260でリードアドレス191を選択し、メモリ30からリードデータを読み出す。
 S505において、DMAC10は、メモリデータバス41からデータ読込み部140と誤り検出符号リードデータ選択130を介してリードデータ132を取得する。リードデータ132は、符号チェック部110に入力される。
 S506において、符号チェック部110は、リードデータ132から誤り検出符号の生成を行う。
 なお、本実施の形態では、リードデータ132から生成する誤り検出符号として巡回冗長検査コード(CRCコード)を想定しているが、その他の誤り検出符号でもよい。
 S507において、符号チェック部110は、リードデータ132から生成した誤り検出符号と、符号格納部120から出力される誤り検出符号121(CRCコード)とを比較する。
 符号チェック部110は、リードデータ132を演算し、演算した演算結果と誤り検出符号131とが一致するか否かを判定する。符号チェック部110は、一致する場合にリードデータ132に誤りがないと判定し、不一致の場合にリードデータ132に誤りがあると判定する。
<CRCエラーチェック正常の場合の処理>
 リードデータ132から生成した誤り検出符号と誤り検出符号121(CRCコード)とが一致する場合(S507でYES)は、符号チェック部110はメモリチェックが正常のチェック結果111を出力する。
 チェック結果111が正常の場合、制御部100は、S508において、メモリチェック対象の全領域についてメモリチェックが完了したか否かを判定する。
 メモリチェック対象の全領域についてメモリチェックが完了した場合(S508でYES)は、CRC用メモリチェック処理を終了する。
 メモリチェック対象の全領域においてメモリチェックが未完了の領域がある場合(S508でNO)は、S509に進む。
 S509において、制御部100は、データリードアドレス格納部170に格納されたデータリードアドレス171を基に、次にアクセスするデータリードアドレス101を生成する。制御部100は、データリードアドレス171が64bitデータ時は8加算したバイトアドレスをデータリードアドレス101として生成する。
 この時、符号リードアドレス計算部200は、次にアクセスするデータリードアドレス101から、誤り検出符号リードアドレス201を生成し、符号リードアドレス格納部180に格納する。
 S510において、制御部100は、DMA転送起動がCPU20から実施された場合に備え、チェック開始アドレスレジスタ3004に生成したデータリードアドレス101を設定する。
 S511において、制御部100は、DMA転送起動がCPU20から実施されたか否か判定する。
 DMA転送が起動されている場合(S511でYES)は、制御部100はCRC用メモリチェック処理を終了する。
 DMA転送が起動されていない場合(S511でNO)は、S502に戻りメモリチェック動作を繰り返す。
<CRCエラーチェック異常の場合の処理>
 リードデータ132から生成した誤り検出符号と誤り検出符号121(CRCコード)とが不一致の場合(S507でNO)は、符号チェック部110はメモリチェックが異常のチェック結果111を出力する。
 S521において、制御部100は、メモリチェックの動作を停止する。
 S522において、制御部100は、CPU20にエラー通知信号103をアサートし、メモリに異常があることを通知し、CRC用メモリチェック処理を終了する。
 以上で、CRC用メモリチェック処理S303の動作についての説明を終わる。
<DMA転送実行処理S2041>
 図11から図13を用いて、本実施の形態に係るDMA転送実行処理S2041の動作について説明する。
 本実施の形態に係るDMAC10のDMA転送は、メモリチェックモードとは無関係に実行される。
 CPU20がDMAC10に対してDMA起動を行うと、DMAC10はDMAアドレス記憶部280に設定されているアドレス及び転送サイズ281に従い、DMA転送を開始する。アドレス及び転送サイズ281には、DMAリードアドレス、DMAライトアドレス及び転送サイズが含まれる。
 まず、図11を用いて、DMA転送実行処理S2041の全体動作について説明する。
 S601において、DMAC10は、DMA起動を待つ。CPU20は、ローカルバス50を介してDMAC10に対してDMA転送起動をする。
 S602において、ローカルバスIF270のDMA転送を起動するレジスタに書き込みが行われると、ローカルバスIF270は制御部100にDMA起動指示273を出力する。制御部100はDMA転送動作、すなわちDMA転送処理S204を開始する。
 S603において、制御部100は、アドレス及び転送サイズ281に含まれるDMAリードアドレスを読み出し、データリードアドレス101に出力する。
 S604において、制御部100は、データリードアドレス格納部170にデータリードアドレス101を設定する。
 S605において、制御部100は、アドレス及び転送サイズ281に含まれるDMAライトアドレスを読み出し、データライトアドレス102に出力する。
 S606において、制御部100は、データライトアドレス格納部240にデータライトアドレス102を設定する。
 S607において、制御部100は、メモリ種類記憶部310に設定されているメモリ種類により、実施するDMA転送処理を判定する。
 制御部100は、メモリ種類記憶部310に「ECC機能付メモリ」が設定されていると判定すると、メモリ30がECC機能付メモリであるとして、ECC用DMA転送処理S608を実行する。
 制御部100は、メモリ種類記憶部310に「ECC機能無しメモリ」が設定されていると判定すると、メモリ30がECC機能無しメモリであるとして、CRC用DMA転送処理S609を実行する。
 このように、DMA転送処理は、メモリ30がECC機能付メモリの場合とECC機能付メモリでない場合とで異なる。
 以上で、DMA転送実行処理S2041の全体動作についての説明を終わる。
<ECC用DMA転送処理S608>
 図12を用いて、ECC用DMA転送処理S608の動作について説明する。
 S701において、DMAC10は、データリードアドレス格納部170に設定されたデータリードアドレス171を読み出す。
 S702において、DMAC10は、データリードアドレス171のメモリ内容の読み出しを行う。DMAC10は、メモリデータバス41より誤り検出符号及びリードデータ142を受信する。ここでの誤り検出符号はECCコードである。DMAC10は、符号格納部120に、ECC用の誤り訂正符号である誤り検出符号131、すなわちECCコードを格納する。
 S703において、DMAC10は、符号格納部120から出力される誤り検出符号121(ECCコード)と、読み出したリードデータ132とをあわせて、符号チェック部110に出力する。
 S704において、符号チェック部110は、リードデータ132と誤り検出符号131とに基づいてリードデータ132に誤りがあるか否を判定する。すなわち、DMAC10は、符号チェック部110によりECCエラーチェックを実行する。
<ECCエラーチェック正常の場合の処理>
 ECCエラーチェックのチェック結果111が正常の場合(S705でYES)、S706に進む。
 S706において、DMAC10は、符号チェック部110から出力される誤り検出符号112(ECCコード)とリードデータ113とをデータ及び符号一時格納部150に格納する。
 S707において、DMAC10は、データライトアドレス格納部240に格納されたデータライトアドレス241を読み出す。
 S708において、DMAC10は、データ及び符号一時格納部150から出力された誤り検出符号及びライトデータ151をデータ書込み部160に出力する。
 S709において、DMAC10は、データライトアドレス241のメモリ領域へ、データ書込み部160により誤り検出符号及びライトデータ151を書き込む。
 S710において、DMAC10は、ECC1ビットエラーが発生していたか否かを判定する。S705でYESの場合はECC1ビットエラーが発生していない場合(S710でNO)であるため、ECC用DMA転送処理S608を終了する。
 以下に説明するS722の処理の後にS706の処理を実行した場合は、ECC1ビットエラーが発生している場合(S710でYES)であるため、S731に進む。
<ECCエラーチェック異常の場合の処理>
 ECCエラーチェックのチェック結果111が異常の場合(S705でNO)、S721に進む。
 ECCエラーチェックのチェック結果111において2ビット誤りエラーを検出した場合(S721でYES)、処理はS741に進む。
 S741において、制御部100は、DMA転送自体の動作を停止する。
 S742において、制御部100は、CPU20にエラー通知信号103をアサートし、メモリに異常があることを通知し、ECC用DMA転送処理S608を終了する。
 ECCエラーチェックのチェック結果111において1ビット誤りエラーを検出した場合(S721でNO)、処理はS722に進む。
 S722において、符号チェック部110は、リードデータ132に誤りがあると判定した場合、誤り検出符号131に基づいてチェックデータ142Aを訂正する。符号チェック部110は、正しいECCコード及びデータに訂正し、訂正したECCコード及びデータを誤り検出符号112(ECCコード)及びリードデータ113としてデータ及び符号一時格納部150に出力し格納する。
 以降、S707からS710を実行する。
 すなわち、データ書込み部160は、符号チェック部110により訂正されたチェックデータ142A(正しいECCコード及びデータ)を、DMA転送先である書込みアドレス2812に書き込む。
 なお、S710において、DMAC10は、ECC1ビットエラーが発生しているか否かを判定し、ECC1ビットエラーが発生している場合(S710でYES)、S731に進むと説明した。これは、制御部100が、読み出した領域に訂正後のECCコード及びデータを書き戻すために、ECC1ビットエラーが発生していたのか否かを判定するものである。
 S731において、DMAC10は、データリードアドレス格納部170から読み出したデータリードアドレス171を取得する。
 S732において、DMAC10は、そのデータリードアドレス171をデータライトアドレス102に出力し、データライトアドレス格納部240に設定する。
 S733において、DMAC10は、書き戻すアドレス値となっているデータライトアドレス241のメモリ領域へ、符号チェック部110によって正しいECCコード及びデータに訂正された訂正後のECCコード及びデータを書き戻す。
 すなわち、データ書込み部160は、符号チェック部110により訂正されたチェックデータ142A(正しいECCコード及びデータ)を、DMA転送の読み込み元である読込みアドレス2811に書き込む。
<CRC用DMA転送処理S609>
 図13を用いて、CRC用DMA転送処理S609の動作について説明する。
 S801において、DMAC10は、データリードアドレス格納部170に設定されたデータリードアドレス171を読み出す。
 S801において、DMAC10は、データリードアドレス171のメモリ内容の読み出しを行う。この時、DMAC10は、メモリデータバスより誤り検出符号及びリードデータ142を入力する。誤り検出符号及びリードデータ142には、読み出したリードデータのみが含まれる。
 S803において、DMAC10は、読み出したリードデータをデータ読込み部140と誤り検出符号リードデータ選択130とを経由し、リードデータ132として符号チェック部110に入力する。
 S804において、符号チェック部110は、入力されたリードデータ132から誤り検出符号の生成を行う。なお、誤り検出符号の読み出しにかかる時間を省略し転送処理時間を短くするために、DMAC10は、DMA転送によるデータの読み出し時は誤り検出を行わない。
 S805において、符号チェック部110は、生成した誤り検出符号112と、リードデータ113とをデータ及び符号一時格納部150に出力する。誤り検出符号112とリードデータ113とは、データ及び符号一時格納部150に格納される。
 S806において、DMAC10は、制御部100によりデータライトアドレス格納部240に格納されたデータライトアドレス241を読み出す。
 S807において、DMAC10は、データ書込み部160にデータ及び符号一時格納部150に格納された誤り検出符号及びライトデータ151を出力する。ここで、誤り検出符号及びライトデータ151には、リードデータ113のみが含まれる。
 S808において、DMAC10は、データライトアドレス241のメモリ領域へ、データ書込み部160の誤り検出符号及びライトデータ151(データのみ)を書き込む。
 S809において、DMAC10は、制御部100により、符号ライトアドレス格納部230に格納された誤り検出符号ライトアドレス231を読み出す。
 S810において、DMAC10は、データ書込み部160にデータ及び符号一時格納部150に格納された誤り検出符号及びライトデータ151を出力する。ここでは、誤り検出符号及びライトデータ151には、誤り検出符号112(CRCコード)のみが含まれる。
 S811において、DMAC10は、誤り検出符号ライトアドレス231のメモリ領域へ、データ書込み部160を介して誤り検出符号及びライトデータ151(CRCコードのみ)の書き込みを行う。
 以上で、CRC用DMA転送処理S609の動作についての説明を終了する。
<誤り検出符号リードアドレスの生成処理>
 ここで、図14を用いて、符号リードアドレス計算部200の誤り検出符号リードアドレスの生成処理について説明する。
 データリードアドレス格納部170にデータリードアドレス101が格納されるとデータリードアドレス171が出力される。符号リードアドレス計算部200には、このデータリードアドレス171が入力される。
 符号リードアドレス計算部200は、データリードアドレス171が入力されると、データリードアドレス171から誤り検出符号が格納されている相対アドレスを計算する。
 図14に示すように、符号リードアドレス計算部200は、減算器2001、右3ビットシフタ2004、加算器2006を備える。
 符号リードアドレス計算部200には、メモリ先頭番地2002が入力される。
 減算器2001は、データリードオフセットアドレス2003を出力する。
 右3ビットシフタ2004は、誤り検出符号リードオフセットアドレス2005を出力する。
 データを64ビットのデータとし、誤り検出符号を8ビットの巡回冗長検査コード(CRCコード)とする。
 符号リードアドレス計算部200は、データリードアドレス171からメモリ先頭番地2002を減算器2001で引いたアドレスを、データリードオフセットアドレス2003とする。メモリ先頭番地2002は初期化処理S100時にCPU20により設定され、DMAC10内で記憶される。
 次に、符号リードアドレス計算部200は、データリードオフセットアドレス2003を8で割った値、すなわち右3ビットシフタ2004の出力を、誤り検出符号リードオフセットアドレス2005とする。
 次に、符号リードアドレス計算部200は、誤り検出符号リードオフセットアドレス2005に、符号ベースアドレス記憶部220に格納された誤り検出符号ベースアドレス221を加算器2006で加算する。符号リードアドレス計算部200は、加算器2006の出力を誤り検出符号リードアドレス201として生成する。
 誤り検出符号リードアドレス201は、符号リードアドレス格納部180に出力される。
 なお、符号ライトアドレス計算部210の誤り検出符号ライトアドレスの生成処理については、上記の符号リードアドレス計算部200の誤り検出符号リードアドレスの生成処理と同様である。
 図15は、本実施の形態に係る組込みシステム1000のハードウェア構成の一例を示す図である。
 組込みシステム1000はコンピュータである。
 組込みシステム1000は、プロセッサ901、補助記憶装置902、メモリ903、通信装置904、入力インタフェース905、ディスプレイインタフェース906、DMAC10といったハードウェアを備える。
 プロセッサ901は、信号線910を介して他のハードウェアと接続され、これら他のハードウェアを制御する。上述したCPU20はプロセッサ901の例である。また、上述したメモリ30はメモリ903の例である。また、上述したメモリバス40及びローカルバス50は、信号線910の例である。
 入力インタフェース905は、入力装置907に接続されている。
 ディスプレイインタフェース906は、ディスプレイ908に接続されている。
 プロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。
 プロセッサ901は、例えば、CPU、DSP(Digital Signal Processor)、GPUである。
 補助記憶装置902は、例えば、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)である。
 メモリ903は、例えば、RAM(Random Access Memory)である。
 通信装置904は、データを受信するレシーバー9041及びデータを送信するトランスミッター9042を含む。
 通信装置904は、例えば、通信チップ又はNIC(Network Interface Card)である。
 入力インタフェース905は、入力装置907のケーブル911が接続されるポートである。
 入力インタフェース905は、例えば、USB(Universal Serial Bus)端子である。
 ディスプレイインタフェース906は、ディスプレイ908のケーブル912が接続されるポートである。
 ディスプレイインタフェース906は、例えば、USB端子又はHDMI(登録商標)(High Definition Multimedia Interface)端子である。
 入力装置907は、例えば、マウス、キーボード又はタッチパネルである。
 ディスプレイ908は、例えば、LCD(Liquid Crystal Display)である。
 補助記憶装置902には、組込みシステム1000の機能を実現するプログラムが記憶されている。以下、組込みシステム1000の機能を実現する構成部をまとめて「部」と表記する。
 「部」の機能を実現するプログラムは、1つのプログラムであってもよいし、複数のプログラムから構成されていてもよい。
 このプログラムは、メモリ903にロードされ、プロセッサ901に読み込まれ、プロセッサ901によって実行される。
 更に、補助記憶装置902には、OS(Operating System)も記憶されている。
 そして、OSの少なくとも一部がメモリ903にロードされ、プロセッサ901はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
 図15では、1つのプロセッサ901が図示されているが、組込みシステム1000が複数のプロセッサ901を備えていてもよい。
 そして、複数のプロセッサ901が「部」の機能を実現するプログラムを連携して実行してもよい。
 また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ903、補助記憶装置902、又は、プロセッサ901内のレジスタ又はキャッシュメモリにファイルとして記憶される。
 「部」を「サーキットリー」で提供してもよい。
 また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。また、「処理」を「回路」又は「工程」又は「手順」又は「部」に読み替えてもよい。
 「回路」及び「サーキットリー」は、プロセッサ901だけでなく、ロジックIC又はGA(Gate Array)又はASIC(Application Specific Integrated Circuit)又はFPGA(Field-Programmable Gate Array)といった他の種類の処理回路をも包含する概念である。
 なお、プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体、記憶装置などであり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
***本実施の形態の効果の説明***
 以上のように、メモリチェック装置によれば、DMACがメモリチェック機能を有するので、CPUの処理を中断あるいは遅延させることなくメモリチェック処理を実行することができる。
 また、メモリチェック装置によれば、DMACがDMA転送機能と別にメモリチェック機能を持つ。よって、DMACがDMA転送中でない場合でもメモリチェックを実行することができる。
 また、メモリチェック装置によれば、DMA転送中であっても、DMACがメモリチェックを行い、チェック結果が正常の場合にDMA転送処理を実行することができる。よって、メモリチェック装置は、DMA転送の処理を中断あるいは遅延させることなくメモリチェック処理を行うことができる。
 また、メモリチェック装置によれば、DMA転送及びメモリチェックの対象となるメモリがECC機能付であるか否かのメモリ種類の情報を格納するメモリ種類記憶部を持つ。よって、DMACはメモリ種類を容易に判定することができる。
 メモリがECC機能付メモリである場合で、かつDMA転送時のデータの正当性チェックで誤り訂正を行うことが可能である時(1ビットエラーの時)、メモリチェック装置は、ECCコードに基づいてデータを修正することができる。そして、メモリチェック装置によれば、訂正後のECCコード及びデータを書き込み先及び読み出し元のメモリへ書き込むことができるので、処理を中断あるいは遅延させることなくメモリの訂正をすることができる。
 また、メモリがECC機能付メモリでない場合は、メモリチェック装置は、DMA転送時に巡回冗長検査(CRC)コードを生成し、対応するメモリ番地(CRCコード格納領域)に書き込む。メモリチェック装置は、CRCコードを用いてデータのチェックをすることができる。
 このように、メモリチェック装置によれば、DMA転送時に、メモリがECC機能付メモリであってもECC機能付メモリでなくても、メモリの種類に応じてメモリチェック処理及びDMA転送を実行することができる。よって、メモリチェック装置は、様々な種類の組込みシステムに採用することができる。
 また、メモリがECC機能付メモリである場合で、DMA転送時でない場合、メモリチェック装置は、メモリチェックで誤り訂正を行うことが可能である時(1ビットエラー)、データを訂正し、訂正後のECCコード及びデータを読み出し元のメモリ番地へ書き込む。一方、メモリがECC機能付メモリでない場合で、DMA転送時でない場合、メモリチェック装置は、CRCコードを対応するメモリ番地から読み出し、DMAC内で生成するリードデータから生成するCRCコードとの一致を検査する。
 このように、メモリチェック装置によれば、DMA転送時でない場合のメモリチェック時に、メモリがECC機能付メモリであってもECC機能付メモリでなくても、メモリの種類に応じてメモリチェック処理を実行することができる。よって、メモリチェック装置は、様々な種類の組込みシステムに採用することができる。
 また、メモリチェック装置は、メモリチェック動作可能なモード(メモリチェックモード)と非動作なモード(非メモリチェックモード)を持つ。メモリチェックモードと非メモリチェックモードとは、ローカルバス経由によるCPUからの指示によりモードを遷移する。
 また、本実施の形態に係るメモリチェック装置によれば、内蔵するタイマ部が発光するタイミング通知により定期的にメモリチェックモードに遷移するので、メモリチェックをきめ細かく実行することができる。
 また、メモリチェック装置によれば、DMA転送の起動を優先し、メモリチェック開始前及びメモリチェック中にDMA転送の起動がないことを確認するので、DMA転送の処理を中断あるいは遅延させることなくメモリチェック処理を行う。
 また、メモリチェック装置によれば、メモリチェックがDMA転送の起動によって中断された場合に、次回のメモリチェックではチェック開始アドレス記憶部に記憶された続きのアドレスから実行することができる。
 以上、実施の形態1について説明したが、この実施の形態に含まれる複数の部分について部分的に組み合わせて実施しても構わない。あるいは、この実施の形態に含まれる1つの部分を部分的に実施しても構わない。その他、この実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
 なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
 10 DMAC、10A DMAコントローラ、20 CPU、30 メモリ、40 メモリバス、41 メモリデータバス、42 メモリアドレスバス、50 ローカルバス、100 制御部、101 データリードアドレス、101A 読込み要求、101B 転送要求、102 データライトアドレス、103 エラー通知信号、110 符号チェック部、110A 判定部、111 チェック結果、112 誤り検出符号、113 リードデータ、120 符号格納部、121,131 誤り検出符号、130 誤り検出符号リードデータ選択、132 リードデータ、140 データ読込み部、141,142 誤り検出符号及びリードデータ、142A チェックデータ、150 データ及び符号一時格納部、151,161 誤り検出符号及びライトデータ、160 データ書込み部、170 データリードアドレス格納部、180 符号リードアドレス格納部、190 リードアドレス選択、200 符号リードアドレス計算部、210 符号ライトアドレス計算部、220 符号ベースアドレス記憶部、230 符号ライトアドレス格納部、240 データライトアドレス格納部、250 ライトアドレス選択、260 リードライトアドレス選択、270 ローカルバスIF、280 DMAアドレス記憶部、290 タイマ部、300 チェック開始アドレス記憶部、310 メモリ種類記憶部、171 データリードアドレス、181 誤り検出符号リードアドレス、191 リードアドレス、201 誤り検出符号リードアドレス、211 誤り検出符号ライトアドレス、221 誤り検出符号ベースアドレス、231 誤り検出符号ライトアドレス、241 データライトアドレス、251 ライトアドレス、261 メモリアドレス、271 DMAリードライトアドレス、272 誤り検出符号ベースアドレス、273 DMA起動指示、274 メモリ種類、281 アドレス及び転送サイズ、291 タイミング通知、301 チェック開始アドレス、302 データリードアドレス、311 メモリ種類、2001 減算器、2002 メモリ先頭番地、2003 データリードオフセットアドレス、2004 右3ビットシフタ、2005 誤り検出符号リードオフセットアドレス、2006 加算器、2811 読込みアドレス、2812 書込みアドレス、3001 検査終了アドレスレジスタ、3002 検査対象先頭アドレスレジスタ、3003 選択器、3004 チェック開始アドレスレジスタ、3005 アドレス加算器、3006 出力、3007 検査対象先頭アドレス、800 メモリチェック装置、901 プロセッサ、902 補助記憶装置、903 メモリ、904 通信装置、905 入力インタフェース、906 ディスプレイインタフェース、907 入力装置、908 ディスプレイ、910 信号線、911,912 ケーブル、1000 組込みシステム、2020 メモリチェックモード、2010 非メモリチェックモード、2030 メモリチェック動作開始指示、2040 メモリチェックモード解除、9041 レシーバー、9042 トランスミッター、S100 初期化処理、S200 メモリチェック処理、S203 メモリ別メモリチェック処理、S302 ECC用メモリチェック処理、S303 CRC用メモリチェック処理、S204 DMA転送処理、S608 ECC用DMA転送処理、S609 CRC用DMA転送処理、S2041 DMA転送実行処理。

Claims (10)

  1.  メモリに記憶されたデータをチェックするメモリチェック装置において、
     CPU(Central Processing Unit)からの転送命令によりDMA(Direct Memory Access)転送を実行するDMAコントローラを備え、
     前記DMAコントローラは、
     チェックを開始する位置を示すチェック開始アドレスを記憶するチェック開始アドレス記憶部と、
     DMA転送を実行中であるか否かを判定し、DMA転送の実行中でないと判定した場合に、前記メモリからデータを読み込む読込み要求を出力する制御部と、
     前記制御部から前記読込み要求が出力されると、前記チェック開始アドレスが示す位置からチェックの対象であるリードデータを含むチェックデータを読み込むデータ読込み部と、
     前記データ読込み部により読み込まれた前記リードデータに誤りがあるか否かを判定する判定部と
    を備えるメモリチェック装置。
  2.  前記DMAコントローラは、
     DMA転送の際にデータを読み込む位置を示す読込みアドレスと、DMA転送の際にデータを書き込む位置を示す書込みアドレスとを記憶するDMAアドレス記憶部を備え、
     前記制御部は、
     DMA転送の実行中であると判定した場合に、DMA転送の実行を要求する転送要求を出力し、
     前記データ読込み部は、
     前記制御部から前記転送要求が出力されると、前記読込みアドレスが示す位置から前記チェックデータを読み込み、
     前記DMAコントローラは、
     前記判定部により前記リードデータに誤りがないと判定された場合に、前記チェックデータを前記書込みアドレスに書き込むデータ書込み部を備える請求項1に記載のメモリチェック装置。
  3.  前記データ読込み部は、
     前記リードデータの誤りを検出する誤り検出符号を含む前記チェックデータを読み込み、
     前記判定部は、
     前記リードデータと前記誤り検出符号とに基づいて前記リードデータに誤りがあるか否かを判定し、前記リードデータに誤りがあると判定した場合、前記誤り検出符号に基づいて前記チェックデータを訂正し、
     前記DMAコントローラは、
     前記判定部により訂正された前記チェックデータを、前記チェック開始アドレスに書き込むデータ書込み部を備える請求項1に記載のメモリチェック装置。
  4.  前記データ読込み部は、
     前記リードデータの誤りを検出する誤り検出符号を含む前記チェックデータを読み込み、
     前記判定部は、
     前記リードデータと前記誤り検出符号とに基づいて前記リードデータに誤りがあるか否かを判定し、前記リードデータに誤りがあると判定した場合、前記誤り検出符号に基づいて前記チェックデータを訂正し、
     前記DMAコントローラは、
     前記判定部により訂正された前記チェックデータを、前記読込みアドレスに書き込むと共に前記書込みアドレスに書き込むデータ書込み部を備える請求項2に記載のメモリチェック装置。
  5.  前記メモリチェック装置は、
     ECC(Error Check and Correct)機能付メモリを前記メモリとしてチェックする請求項3または4に記載のメモリチェック装置。
  6.  前記データ読込み部は、
     前記リードデータの誤りを検出する誤り検出符号を含む前記チェックデータを読み込み、
     前記判定部は、
     前記リードデータを演算し、演算した演算結果と前記誤り検出符号とが一致するか否かを判定し、一致する場合に前記リードデータに誤りがないと判定し、不一致の場合に前記リードデータに誤りがあると判定する請求項1に記載のメモリチェック装置。
  7.  前記データ読込み部は、
     前記誤り検出符号としてCRC(Cyclic Redundancy Check)符号を読み込む請求項6に記載のメモリチェック装置。
  8.  前記DMAコントローラは、
     定期的にタイミング通知を出力するタイマ部を備え、
     前記制御部は、
     前記タイマ部から前記タイミング通知が出力されると、DMA転送を実行中であるか否かの判定を開始する請求項1から6のいずれか1項に記載のメモリチェック装置。
  9.  請求項1から8のいずれか1項に記載のメモリチェック装置と、
     前記メモリチェック装置とローカルバスにより接続されたCPUと、
     前記メモリチェック装置とメモリバスにより接続されたメモリとを備える組込みシステム。
  10.  メモリに記憶されたデータをチェックするメモリチェック装置のメモリチェック方法において、
     CPU(Central Processing Unit)からの転送命令によりDMA(Direct Memory Access)転送を実行すると共に、チェックを開始する位置を示すチェック開始アドレスを記憶するチェック開始アドレス記憶部を備えるDMAコントローラを備え、
     前記DMAコントローラの制御部が、DMA転送を実行中であるか否かを判定し、DMA転送の実行中でないと判定した場合に、前記メモリからチェックの対象であるリードデータを含むチェックデータを読み込む読込み要求を出力し、
     前記DMAコントローラのデータ読込み部が、前記制御部から前記読込み要求が出力されると、前記チェック開始アドレスが示す位置からデータをリードデータとして読み込み、
     前記DMAコントローラの判定部が、前記データ読込み部により読み込まれた前記リードデータに誤りがあるか否かを判定するメモリチェック方法。
PCT/JP2015/060508 2015-04-02 2015-04-02 メモリチェック機能を有するdmac WO2016157505A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/060508 WO2016157505A1 (ja) 2015-04-02 2015-04-02 メモリチェック機能を有するdmac

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/060508 WO2016157505A1 (ja) 2015-04-02 2015-04-02 メモリチェック機能を有するdmac

Publications (1)

Publication Number Publication Date
WO2016157505A1 true WO2016157505A1 (ja) 2016-10-06

Family

ID=57004104

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/060508 WO2016157505A1 (ja) 2015-04-02 2015-04-02 メモリチェック機能を有するdmac

Country Status (1)

Country Link
WO (1) WO2016157505A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5841497A (ja) * 1981-09-02 1983-03-10 Toshiba Corp メモリ制御方式
JPS6242396A (ja) * 1985-08-15 1987-02-24 マイテル・コ−ポレ−シヨン ダイナミツク・メモリ・リフレツシユ及びパリテイ・チエツク回路
JPH06223002A (ja) * 1992-10-30 1994-08-12 Hewlett Packard Co <Hp> マイクロプロセッサメモリのテスト回路
US5588112A (en) * 1992-12-30 1996-12-24 Digital Equipment Corporation DMA controller for memory scrubbing
JP2005149503A (ja) * 2003-11-14 2005-06-09 Hewlett-Packard Development Co Lp Dmaを使用してメモリをテストするためのシステムおよび方法
JP2014071543A (ja) * 2012-09-27 2014-04-21 Yamaha Corp 半導体集積回路

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5841497A (ja) * 1981-09-02 1983-03-10 Toshiba Corp メモリ制御方式
JPS6242396A (ja) * 1985-08-15 1987-02-24 マイテル・コ−ポレ−シヨン ダイナミツク・メモリ・リフレツシユ及びパリテイ・チエツク回路
JPH06223002A (ja) * 1992-10-30 1994-08-12 Hewlett Packard Co <Hp> マイクロプロセッサメモリのテスト回路
US5588112A (en) * 1992-12-30 1996-12-24 Digital Equipment Corporation DMA controller for memory scrubbing
JP2005149503A (ja) * 2003-11-14 2005-06-09 Hewlett-Packard Development Co Lp Dmaを使用してメモリをテストするためのシステムおよび方法
JP2014071543A (ja) * 2012-09-27 2014-04-21 Yamaha Corp 半導体集積回路

Similar Documents

Publication Publication Date Title
JP5212369B2 (ja) 演算器及び演算器の制御方法
US10796003B2 (en) Divided integrity verification using memory segment protection
JP2009527820A (ja) エラー訂正方法およびエラー訂正装置
EP3734466A1 (en) Apparatus, systems, and methods to detect and/or correct bit errors using an in band link over a serial peripheral interface
US10319461B2 (en) Low-overhead mechanism to detect address faults in ECC-protected memories
US9721104B2 (en) CPU-based measured boot
JP2012198876A (ja) メモリデバイスにおける読み出し不可状態を解決するための装置及び方法
US8555050B2 (en) Apparatus and method thereof for reliable booting from NAND flash memory
JP6341795B2 (ja) マイクロコンピュータ及びマイクロコンピュータシステム
US8127052B2 (en) Data transfer control device and computer system
US20150046759A1 (en) Semiconductor integrated circuit device
CN117136355A (zh) 在卸载操作中使用的错误校验数据
US20120254656A1 (en) Method, apparatus and system for providing memory sparing information
JP5561791B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
CN112558884A (zh) 数据保护方法以及基于NVMe的存储设备
JP2012173933A (ja) データ記憶装置及び誤り検出訂正方法
JP2010181990A (ja) データプロセッサ
WO2016157505A1 (ja) メモリチェック機能を有するdmac
JP2007299249A (ja) Nand型フラッシュメモリデバイス及びこれを利用したコンピューティングシステムの起動方法
TWI595361B (zh) 電子裝置與其載入程式碼之方法
JP2008065725A (ja) Nand型フラッシュメモリデバイス及びこれを利用したコンピューティングシステムの起動方法
US20130055017A1 (en) Device and method for restoring information in a main storage unit
CN111061591A (zh) 基于存储器完整性检查控制器实现数据完整性检查的系统和方法
JP7074291B2 (ja) 情報処理装置、情報処理方法及びプログラム
US11836048B2 (en) Information processing apparatus

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15887651

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP