WO2016136197A1 - データ処理装置、データ処理方法及び記録媒体 - Google Patents

データ処理装置、データ処理方法及び記録媒体 Download PDF

Info

Publication number
WO2016136197A1
WO2016136197A1 PCT/JP2016/000825 JP2016000825W WO2016136197A1 WO 2016136197 A1 WO2016136197 A1 WO 2016136197A1 JP 2016000825 W JP2016000825 W JP 2016000825W WO 2016136197 A1 WO2016136197 A1 WO 2016136197A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
category
range
exception
corrected
Prior art date
Application number
PCT/JP2016/000825
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 JP2017501908A priority Critical patent/JPWO2016136197A1/ja
Publication of WO2016136197A1 publication Critical patent/WO2016136197A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis

Definitions

  • the present invention relates to a technique capable of classifying data into a specific range.
  • classification calculation for classifying data is used in various data processing (for example, image processing, audio processing, other statistical processing, etc.).
  • the classification calculation is, for example, a calculation for classifying each data included in a data string that is a set of data into a category (category or the like) divided into a predetermined range.
  • a histogram calculation is known as a representative classification calculation.
  • the histogram calculation is a calculation for counting the number (number) of elements belonging to each section with respect to the data included in the data string.
  • a technique for example, parallel processing capable of speeding up or improving the processing is required.
  • Patent Document 1 Japanese Patent Application Laid-Open No. 2009-020781 executes a process (limit process) for limiting the calculation target data to fall within a predetermined upper and lower limit range, and a histogram relating to the data for which the limit process has been executed. Disclosed is a technique for calculating.
  • Patent Document 2 Japanese Patent Laid-Open No. 2013-008270 discloses a technique related to an arithmetic device that calculates a histogram of data input in parallel.
  • N is a natural number
  • N selectors have M (M Is a natural number) histogram selection target. The M counters count the selection results by the selector, thereby calculating a histogram.
  • SIMD Single Instruction Multiple Data
  • Patent Document 3 Japanese Patent Laid-Open No. 2010-2721057 discloses a technique for performing a lattice calculation using a SIMD calculation function.
  • the technique disclosed in Patent Document 3 introduces dummy nodes according to the number of specific nodes in the lattice.
  • the technique disclosed in Patent Document 3 uses a previous node for a specific node and the introduced dummy node to perform an operation related to the specific node.
  • Patent Document 4 Japanese Patent Laid-Open No. 11-126255 classifies pixels of an input image into a plurality of gradation ranges using a SIMD type arithmetic unit capable of processing the input image in units of scanning lines. Then, a histogram for each gradation is calculated. Such a technique executes a gradation conversion process on the input image based on the calculated histogram.
  • Patent Document 5 determines that an error has occurred when the calculation result in the iterative process exceeds a predetermined limit value, and uses the calculation result in which the error has occurred as a result of the past calculation in the iterative process. To correct.
  • data to be processed may be limited to a specific range within a set of data. More specifically, for example, predetermined data processing may be performed on data included in a range defined by a certain threshold value. In such a case, a range determination process for determining whether or not the data included in the data set is included in the range is executed. There is a problem that a delay (for example, an execution delay of a computer program) occurs in data processing due to the occurrence of conditional branching associated with such determination processing.
  • a delay for example, an execution delay of a computer program
  • the process executed for data included in the specific range may be different from the process executed for data not included. In this case, it is difficult to execute the same processing on all data in parallel. With the occurrence of the delay as described above and the difficulty of parallel processing, the processing efficiency of the classification processing related to data included in a specific range may be reduced.
  • Patent Document 1 determines whether or not the data to be calculated falls within a predetermined range, so that a conditional branch may occur and a delay may occur in data processing. There is sex.
  • Patent Document 2 determines whether or not the data to be calculated falls within a predetermined range, so that a conditional branch may occur and a delay may occur in data processing. There is sex.
  • Patent Document 3 assumes that the input data includes data that is outside the range to be calculated. Therefore, none of the techniques disclosed in the above patent documents is sufficient to solve the above-described problems.
  • the present invention has been made in view of the above circumstances. That is, one of the main objects of the present invention is to provide a data processing apparatus and the like that can reduce the influence of delay related to classification processing for data included in a certain range.
  • a data processing apparatus has the following arrangement. That is, the data processing device according to one aspect of the present invention corrects the data not included in the first range among the data included in the data set to specific exception data, and includes the data within the first range. Data classification means for classifying the included data and the corrected data into different categories, and category holding means for holding the result of classifying the data into the categories.
  • the data processing method has the following configuration. That is, in the data processing method according to one aspect of the present invention, the information processing apparatus corrects the data that is not included in the first range, among the data included in the data set, to specific exception data, and The data included in the first range and the corrected data are classified into different categories, and the result of classifying the data into the categories is held.
  • FIG. 1 is a block diagram illustrating a functional configuration of a data processing apparatus according to the first embodiment of the present invention.
  • FIG. 2 is a flowchart illustrating an outline of the operation of the data processing apparatus according to the first embodiment of the present invention.
  • FIG. 3 is a diagram illustrating a specific example of data stored in the storage unit included in the data processing apparatus according to the first embodiment of the present invention.
  • FIG. 4 is a diagram illustrating a specific example of category classification for input data.
  • FIG. 5 is a diagram illustrating a specific example of the category classification process executed by the data processing apparatus according to the first embodiment of the present invention.
  • FIG. 6 is a flowchart (1/3) illustrating the specific operation of the data processing apparatus according to the first embodiment of the present invention.
  • FIG. 7 is a flowchart (2/3) illustrating the specific operation of the data processing apparatus according to the first embodiment of the present invention.
  • FIG. 8 is a flowchart (3/3) illustrating the specific operation of the data processing apparatus according to the first embodiment of the present invention.
  • FIG. 9 is a block diagram illustrating a functional configuration of a data processing apparatus according to the second embodiment of the present invention.
  • FIG. 10 is a flowchart illustrating an outline of the operation of the data processing apparatus according to the second embodiment of the present invention.
  • FIG. 11 is a diagram illustrating a specific example of data stored in the storage unit included in the data processing apparatus according to the second embodiment of the present invention.
  • FIG. 12 is a block diagram illustrating a functional configuration of a data processing apparatus according to the third embodiment of the present invention.
  • FIG. 13 is a flowchart illustrating a specific operation of the data processing apparatus according to the third embodiment of the present invention.
  • FIG. 14 is a block diagram illustrating a functional configuration of a data processing device according to the fourth embodiment of the present invention.
  • FIG. 15 is a diagram illustrating a data processing device or hardware configuration capable of realizing the components of each embodiment of the present invention.
  • FIG. 16 is a block diagram illustrating a functional configuration of an apparatus that executes data classification processing.
  • FIG. 16 is a block diagram illustrating a functional configuration of an arithmetic processing unit (for example, a processor such as a CPU (Central Processing Unit)) and a device (for example, an information processing device such as a computer) having a storage unit (memory). It is.
  • arithmetic processing unit for example, a processor such as a CPU (Central Processing Unit)
  • a device for example, an information processing device such as a computer having a storage unit (memory). It is.
  • data input data string and histogram array
  • histogram calculation processing executed in the arithmetic processing unit are schematically illustrated.
  • a range determination process for determining whether or not input data is included in a certain range is executed. More specifically, the range determination process determines whether or not the input data is within a range defined by a predetermined threshold. Then, as a result of the range determination process, the histogram calculation process is executed for the input data determined to be included in the range (within the threshold value).
  • the present invention is not limited to the histogram calculation illustrated in FIG. 16.
  • the same range as the processing illustrated in FIG. Judgment processing may be executed. Then, after determining whether or not the input data is within a predetermined threshold in the range determination process, the classification calculation is executed.
  • the range determination process is implemented as a conditional branch process in a computer program executed in the information processing apparatus, for example.
  • the conditional branch process is implemented using, for example, a conditional statement (IF statement) in various programming languages or a conditional branch instruction.
  • the conditional branch processing may be realized by using a conditional branch instruction that is executed in a processor constituting the information processing apparatus, for example. If the processor is pipelined, a conditional branch instruction is executed, which may stall a pipeline that is pending judgment of a condition. As a result, the execution of the program may be delayed.
  • a conditional branch instruction in a processor is generally called a jump instruction (hereinafter sometimes referred to as “JMP instruction”) or the like, and is assigned to a specific address based on a result of a conditional comparison. It is an instruction to jump.
  • JMP instructions include, for example, a “JE” instruction that jumps when the operand is “0”, a “JG” instruction that jumps when the operand comparison result is large, and the like.
  • the processor branches to a new address, acquires (fetches) a new instruction, and executes the acquired instruction. That is, in this case, there is a possibility that the processor stops the pipeline processing that was executed before the branch and starts execution of a new process. In this case, since the pipeline processing is stalled, data processing is delayed.
  • the above-described jump instruction and the like may be different in specific instruction format or the like for each processor, they are well-known techniques and thus will not be described in detail.
  • the classification process as described above determines whether or not to perform a specific calculation process (for example, histogram calculation or the like) on the data according to the result of the range determination process regarding the data. As a result, it may not be possible to execute the same calculation for all data because the calculation processing may be different for each data. Therefore, even when input data is given by, for example, a data structure (array or the like) that can be processed in parallel, the SIMD operation instruction may not be applied to the data.
  • the SIMD operation instruction is an instruction that can execute operation processing in parallel on a plurality of data included in a data structure (vector data) that can be processed in parallel, such as an array. Since the SIMD instruction itself is a well-known technique, detailed description thereof is omitted.
  • a range determination process for input data may be executed.
  • a delay may occur due to execution of conditional branching in the range determination process.
  • the same calculation may not be performed on all input data.
  • the same processing may not be executed in parallel on all input data (for example, using SIMD instructions).
  • the present invention described using each embodiment below can reduce the influence of delay associated with the execution of a conditional branch instruction in the classification processing as described above, and performs the same processing on each data. Realize technology that can be executed in parallel.
  • the data processing device in each of the following embodiments can be realized by using one or more dedicated hardware devices, information processing devices, or the like.
  • the data processing device in each of the following embodiments may be realized as a single hardware device, or may be realized as a system including a plurality of hardware devices (or information processing devices).
  • a hardware configuration (for example, FIG. 15) capable of realizing such a data processing apparatus will be described later.
  • the data processing apparatus may be realized by using a virtual information processing apparatus (virtual computer or the like) using a well-known virtualization platform technology.
  • FIG. 1 is a block diagram illustrating a functional configuration of a data processing apparatus according to this embodiment.
  • the data processing apparatus 100 includes an arithmetic processing unit 101, a storage unit 102, and an input unit 103. These components constituting the data processing apparatus 100 may be connected to each other so as to be able to communicate with each other by an appropriate communication method (for example, a communication bus or a communication network).
  • an appropriate communication method for example, a communication bus or a communication network.
  • the arithmetic processing unit 101 is, for example, a dedicated or general-purpose processor (CPU or the like) capable of executing various arithmetic processes on data stored in the storage unit 102 described later.
  • the arithmetic processing unit 101 may be able to execute, for example, a software program (computer program, which may be simply referred to as “program” hereinafter) stored in the storage unit 102.
  • program is not limited to the storage unit 102, and may be held in a device (not shown) inside or outside the data processing device. In this case, the arithmetic processing unit 101 reads and executes the program as necessary.
  • the storage unit 102 is a storage device (memory) capable of storing various data.
  • the storage unit 102 may be realized by a volatile or non-volatile memory device realized by a semiconductor storage device or the like.
  • the storage unit 102 is not limited to the above, and can be realized by other appropriate storage devices (for example, a magnetic storage device, a magneto-optical storage device, an optical storage device, etc.).
  • the input unit 103 is an input device that can input various data to the data processing device 100.
  • the input unit 103 can be realized by using an appropriate input device according to the configuration of the data processing device 100. That is, the input unit 103 may be a network device that can input various data via a network, for example.
  • the input unit 103 may be an interface device that allows a user of the data processing apparatus 100 to directly input data, for example.
  • the input unit 103 may be, for example, a storage medium reading device that can input data via various storage media.
  • input data that is a data set to be processed is input to the data processing apparatus 100 via the input unit 103, and the input data is held (stored) in the storage unit 102.
  • the data processing apparatus 100 in the present embodiment configured as described above executes a classification process for classifying input data into a specific range (category). More specifically, in the data processing apparatus 100 according to the present embodiment, the arithmetic processing unit 101 performs a classification process on data (input data) stored in the storage unit 102. In this case, the arithmetic processing unit 101 may execute the classification process by executing a program. However, the present invention is not limited to this, and the arithmetic processing unit 101 may execute the classification process based on a logic incorporated in advance.
  • FIG. 2 is a flowchart illustrating an outline of the operation of the data processing apparatus 100 according to this embodiment. As illustrated in FIG. 2, the main operation of the data processing apparatus 100 is roughly divided into an exceptional value calculation step (step S202), a category calculation step (step S204), and a category processing step (step S205). .
  • the execution order of each process in the flowchart illustrated in FIG. 2 may be changed within a range that does not affect the process result. The process in each step will be described later.
  • FIG. 3 is an explanatory diagram schematically showing a part of data stored in the storage unit 102 in the data processing apparatus 100 according to the present embodiment.
  • an input data array 301 and an extended category array 302 are arranged in continuous storage areas.
  • the continuous storage area may be a storage area in which addresses or the like constituting the storage area are physically continuous, or may be a logically continuous storage area.
  • the input data array 301 is an array that holds m (m is a natural number) data sets (input data) that are classification calculation targets.
  • the input data array 301 may be expressed as “input data array X”, and the elements of the input data array X may be expressed as input data x.
  • the i-th element (i is an integer of 0 or more) of the input data array may be represented as x [i].
  • the extended category array 302 is an array that holds the result of classifying data within a range defined by a certain threshold value (hereinafter sometimes referred to as “threshold range”) into n categories (n is a natural number). .
  • the extended category array 302 holds the result of classifying input data that is greater than or equal to the upper limit of the threshold range or less than the lower limit of the threshold range (ie, data outside the threshold range) into another category.
  • the extended category array 302 may hold the result of classifying data within the threshold range and the result of classifying data outside the threshold range in a continuous area.
  • the input data array 301 and the extended category array 302 are not necessarily limited to the array structure, and may be realized (implemented) using an appropriate data structure that allows continuous access to data.
  • the threshold range may be set in advance in the data processing apparatus 100, may be set in a program executed in the data processing apparatus 100, or may be given as an input.
  • the input data x when the value of the input data x is within a specific threshold range (more than the lower limit “min_x” and less than the upper limit “max_x”), the input data x Is classified into a specific category.
  • the lower limit value “min_x” of the threshold value may be referred to as “minimum threshold value”
  • the upper limit value “max_x” of the threshold value may be referred to as “maximum threshold value”.
  • it is assumed that the input data x within the threshold range is classified into a category whose value width (range) is h.
  • FIG. 5 is a diagram illustrating a specific example of a category into which each input data x is classified when the data processing apparatus 100 according to the present embodiment executes the classification process illustrated in FIG.
  • the extended category array (“extended category array Y” in FIG. 5) is an array that can hold the classification result for the input data outside the threshold range in addition to the classification result for the data within the threshold range.
  • the extended category array may hold these data continuously.
  • the 0th element of the extended category array Y holds input data less than the lower limit value of the threshold range. That is, the 0th element of the extended category array Y represents a category into which input data less than the lower limit value (min_x) of the threshold range is classified. Hereinafter, such a category may be referred to as a “fourth category”.
  • the first to tenth elements of the extended category array Y hold input data (data within the threshold range) included in the threshold range. That is, the first element to the tenth element of the extended category array Y represent each category (10 category classifications) into which data within the threshold range is classified. Hereinafter, such a category may be referred to as a “first category” or a “threshold category”.
  • ten categories are included in the first category, but the present embodiment is not limited to this. The number of categories included in the first category may be determined as appropriate.
  • the eleventh element of the extended category array Y holds input data equal to or higher than the upper limit value of the threshold range. That is, the eleventh element of the extended category array Y represents a category into which input data greater than a specific upper limit (max_x) is classified.
  • a category may be referred to as a “third category”.
  • the fourth category and the third category described above may be collectively referred to as “second category” or “non-threshold category”.
  • the “second category” (non-threshold category) is a category into which data outside a specific threshold range is classified.
  • the number of categories included in the third category and the fourth category may be determined as appropriate.
  • FIGS. 6 to 8 are flowcharts illustrating detailed processes of the exceptional value calculation step (step S202), the category calculation step (step S204), and the category processing step (step S205) in FIG. 2, respectively.
  • the flow of processing in the data processing apparatus 100 will be described with reference to FIG. 2 and flowcharts illustrated in FIGS. 6 to 8.
  • the input unit 103 receives input data (step S201).
  • the input unit 103 may provide the received input data to the storage unit 102 and may hold the input data related to the storage unit 102 as an input data array (for example, 301 in FIG. 3).
  • the data processing apparatus 100 calculates the maximum exception value “max_ex” and the minimum exception value “min_ex” for the input data (exception value calculation step (step S202)).
  • the maximum exception value (hereinafter sometimes referred to as “upper limit exception data”) is input when the input data x is not included in the threshold range, particularly when the input data x is equal to or greater than the maximum threshold “max_x”. This is the value to which the data is corrected.
  • the minimum exception value (hereinafter sometimes referred to as “lower limit exception data”) is the input data when the input data x is not included in the threshold range, particularly when the input data is less than the minimum threshold “min_x”. Is a value to be corrected. The correction of these input data will be described in the category calculation step in step S204.
  • step S202 the arithmetic processing unit 101 sets the maximum exceptional value (max_ex) to be equal to or greater than the maximum threshold “max_x” and less than “maximum threshold + h” (“+” is an addition symbol, “h” is a range of values of each category). Calculate to be the value of. Further, the arithmetic processing unit 101 calculates the minimum exceptional value “min_ex” to be a value less than the minimum threshold “min_x” and equal to or greater than “minimum threshold ⁇ h” (“ ⁇ ” is a subtraction symbol).
  • the arithmetic processing unit 101 performs classification calculation for all the elements of the input data array X by performing an iterative process (loop process) on all the elements of the input data array X (steps S203a to S203b). ).
  • a category calculation step (step S204) and a category processing step (step S205) are executed for all input data.
  • the arithmetic processing unit 101 calculates a classification destination (category) in the extended category array Y into which x [i] (i-th element of the input data array X) is classified.
  • the arithmetic processing unit 101 corrects x [i] to the maximum exception value “max_ex” (step S701 illustrated in FIG. 7).
  • the arithmetic processing unit 101 executes such a correction process by executing a MIN operation for calculating a minimum value of x [i] and the maximum exception value “max_ex”.
  • the arithmetic processing unit 101 can acquire the minimum value of the input data and the maximum exception value “max_ex” by executing the MIN operation on each input data. In this case, the arithmetic processing unit 101 can execute the same arithmetic processing for each input data.
  • the arithmetic processing unit 101 corrects x [i] to the minimum exception value “min_ex” (step S702 illustrated in FIG. 7).
  • the arithmetic processing unit 101 executes the correction processing by executing a MAX operation for calculating the maximum value of x [i] and the minimum exception value “min_ex”.
  • the arithmetic processing unit 101 can acquire the maximum value of the input data and the minimum exception value “min_ex” by executing the MAX operation on each input data. In this case, the arithmetic processing unit 101 can execute the same arithmetic processing for each input data.
  • the corrected input data is referred to as “a”.
  • the above-described MAX operation and MIN operation can be realized by, for example, operation instructions that can be used in a general-purpose processor corresponding to each operation.
  • Such an arithmetic instruction is executed by, for example, a relatively small number of machine cycles (one to several cycles), and can be pipelined. Thereby, when such an arithmetic instruction is used, it is possible to reduce a delay caused by the execution of the conditional branch instruction.
  • the program executed by the arithmetic processing unit 101 may be programmed so as to directly use the arithmetic instruction. Further, the execution code of such a program may be generated so that a compiler or the like uses each of the above arithmetic instructions.
  • the method of using the said arithmetic instruction is a matter which can be selected for every well-known processor, detailed description is abbreviate
  • omitted since the method of using the said arithmetic instruction is a matter which can be selected for every well-known processor, detailed description is abbreviate
  • the arithmetic processing unit 101 performs an operation “(a + h) / h” on the corrected input data “a”. Thereby, the arithmetic processing unit 101 calculates an array index for the extended category array Y (step S703 illustrated in FIG. 7). In this case, for example, the arithmetic processing unit 101 uses, as an index for the extended category array Y, an integer value obtained by truncating the decimal point from the calculation result “(a + h) / h”.
  • the input data included in the range of the specific threshold among the input data is classified into one of the first element to the tenth element (first category) of the extended category array Y.
  • Input data less than the minimum threshold is classified into the 0th element of the extended category array Y (that is, the input data is classified into the fourth category).
  • input data that is equal to or greater than the maximum threshold is classified into the eleventh element of the extended category array Y (that is, the input data is classified into the third category).
  • the data classified into the first category and the data classified into the third category or the fourth category may be continuously arranged in adjacent areas.
  • step S205 the operation processing unit 101 performs an operation on the element y [index] of the extended category array Y using the array index (index) for the extended category array Y calculated in step S204. Execute the process. More specifically, the arithmetic processing unit 101 executes a specific operation f (y [index]) on the element y [index] of the extended category array Y (step S801 illustrated in FIG. 8).
  • the element y [index] represents the index-th element of the extended category array Y.
  • f (y [index]) represents that the operation f is performed on the element y [index].
  • the calculation processing unit 101 performs a process of incrementing (adding) the value of y [index].
  • the data processing apparatus 100 can perform classification calculation on the input data. That is, as a result of the above-described classification calculation, the classification result regarding the data within the threshold range is held in the first to tenth elements of the extended category array Y. Further, the classification result regarding the data outside the threshold range is held in the 0th element and the 11th element (final element) of the extended category array Y. Note that the elements of the extended category array Y in which data within the threshold range and data outside the threshold range are arranged are not limited to the above, and may be appropriately determined.
  • the data processing apparatus 100 has an extended category array that can hold a category classification result outside the range defined by a predetermined threshold. Then, the data processing apparatus 100 performs a specific operation (for example, a MAX operation, a MIN operation, etc.) on the input data, thereby obtaining input data outside the range defined by the specific threshold (outside the threshold range). to correct. More specifically, the data processing apparatus 100 corrects the input data outside the threshold range to a specific neighborhood value outside the threshold range (for example, the above-described maximum exception value or minimum exception value).
  • a specific neighborhood value outside the threshold range (for example, the above-described maximum exception value or minimum exception value).
  • the data processing apparatus 100 classifies the category related to the input data by placing the corrected input data in specific elements (for example, the 0th element and the final element) in the extended category array. Thereby, the data processing apparatus 100 according to the present embodiment can determine the category of the classification destination without (explicitly) using the conditional branch instruction in the classification calculation for classifying the input data included in the specific threshold range. . Therefore, the data processing apparatus 100 in the present embodiment can reduce the delay due to the conditional branch instruction. As described above, according to the data processing apparatus 100 of the present embodiment, it is possible to reduce the influence of delay related to the classification processing for data included in a specific range.
  • the data processing apparatus 100 corrects input data that is equal to or higher than the upper limit of the threshold range to the maximum exception value (“upper exception data”), and sets input data that is less than the lower limit of the threshold range to the minimum exception value. (“Lower limit exception data”)
  • the data processing apparatus 100 according to the present modification executes the following processing according to, for example, settings or parameters given from the outside. That is, the data processing apparatus 100 according to the present modified example corrects input data that is greater than or equal to the upper limit of the threshold range to the maximum exception value (“upper limit exception data”), and inputs data that is less than the lower limit of the threshold range to the minimum exception value ( “Lower limit exception data”) is corrected.
  • upper limit exception data the maximum exception value
  • Lower limit exception data inputs data that is less than the lower limit of the threshold range to the minimum exception value
  • the data processing apparatus 100 may perform a process of correcting input data that is equal to or greater than the upper limit of the threshold range to the maximum exception value (“upper exception data”).
  • upper exception data the upper limit value of the input data
  • the data processing apparatus 100 may perform a process of correcting input data that is less than the lower limit of the threshold range to the minimum exception value (“lower limit exception data”). That is, the data processing apparatus 100 corrects data that is not included in a certain threshold range among data included in the set of input data to specific exception data (for example, the maximum exception value or the minimum exception value). Then, the data processing apparatus 100 classifies the data within the threshold range and the corrected data into different categories.
  • the data processing apparatus 100 can determine the category for classifying the input data without using the conditional branch instruction (explicitly), as in the first embodiment. Therefore, the data processing apparatus 100 in the present embodiment can reduce the delay due to the conditional branch instruction.
  • FIG. 9 is a diagram illustrating a functional configuration of the data processing apparatus 900 according to the present embodiment.
  • the data processing apparatus 900 according to the present embodiment can execute a SIMD operation instruction in the operation processing unit 901, and executes classification calculation using the SIMD operation instruction.
  • the arithmetic processing unit 901 may have the same configuration as the arithmetic processing unit 101 in the first embodiment. Since the other components (input unit 103 and storage unit 102) constituting the data processing apparatus 900 may be the same as those in the first embodiment, detailed description thereof is omitted.
  • FIG. 11 is a diagram illustrating a part of the data stored in the storage unit 102 in the data processing apparatus 900 according to the present embodiment. Similar to the first embodiment, the storage unit 102 holds an input data array (1101 in FIG. 11) and an extended category array (1103 in FIG. 11). In addition, the storage unit 102 stores information representing an element (category) in an extended category array into which each element of the input data array is classified (arranged) in an index array (1102 in FIG. 11). In the storage unit 102, the input data array 1101, the index array 1102, and the extended category array 1103 may be arranged in continuous storage areas. In this case, the continuous storage area may be an area in which addresses or the like constituting the storage area are physically continuous, or may be a logically continuous area.
  • FIG. 10 is a flowchart illustrating the operation of the data processing apparatus 900 according to this embodiment.
  • the operation of the data processing apparatus according to the present embodiment broadly includes an exceptional value calculation step S902, a category calculation step S904, and a category processing step S906.
  • the execution order of each process in the flowchart illustrated in FIG. 10 may be changed within a range that does not affect the process result.
  • the category calculation step S904 is performed on all input data by, for example, loop processing. Further, the category processing step S906 is executed for all input data by, for example, a loop process different from the category calculation step S904. The category processing step S906 may be executed only for data classified into a specific category (for example, the first category in the first embodiment).
  • the exceptional value calculating step S902, the category calculating step S904, and the category processing step S906 are respectively an exceptional value calculating step (step S202), a category calculating step (step S204), and a category processing step (step S205) in the first embodiment.
  • the processing may be equal to or approximately equal to.
  • the category calculation step S904 and the category processing step S906 are separately repeated. That is, category calculation step S904 and category processing step S906 are processed in separate loops (steps S903a to S903b and steps S905a to S905b illustrated in FIG. 10). Therefore, an index array 1102 as illustrated in FIG. 11 is used as data for mediating the calculation result (category classification result) in category calculation step S904 to category processing step S906.
  • the index array 1102 has the same size as the input data array 1101.
  • the calculation processing unit 901 performs the same calculation for all input data in a loop including the category calculation step S904. As a result, the arithmetic processing unit 901 can execute arithmetic operations on each data included in the input data in parallel.
  • the arithmetic processing unit 901 in the present embodiment can execute the SIMD arithmetic instruction as described above, and executes the repetitive processing in steps S903a to S903b illustrated in FIG. 10 in parallel using the SIMD instruction. More specifically, the arithmetic processing unit 901 according to the present embodiment executes the classification calculation including the above-described MAX operation, MIN operation, and the like using the SIMD instruction.
  • the arithmetic processing unit 901 executes classification calculation in parallel using a SIMD instruction for a specific number of elements in the input data array (1101), and stores the result of the classification calculation in the index array (1102). To do. More specifically, the arithmetic processing unit 901 performs, for example, classification calculation for input data (all elements of the input data array 1101) in parallel for each specific number, and stores the result of the classification calculation in the index array. To do. In this case, the i-th element (i is an integer of 0 or more) of the index array 1102 stores the result of the classification process for the i-th element of the input data array 1101.
  • the specific number may be determined based on, for example, the number of elements that the SIMD instruction can process at one time.
  • the arithmetic processing unit 901 may execute the arithmetic processing in parallel.
  • the data processing apparatus 900 Similar to the first embodiment, the data processing apparatus 900 according to this embodiment has an extended category array that holds a category classification result outside a predetermined threshold range. Then, the data processing device 900 executes a specific operation (MAX operation, MIN operation, etc.), so that input data outside the threshold range is converted into a neighboring value outside the threshold range (for example, the maximum exception value or the minimum exception value). To correct. Then, the data processing apparatus 900 classifies the categories related to the input data, for example, by arranging corrected input data related to specific elements (for example, the 0th element and the final element) in the extended category array.
  • a specific operation for example, the 0th element and the final element
  • the data processing apparatus can realize parallel processing using SIMD operation instructions by executing the processing related to the classification calculation using SIMD operation instructions. That is, the data processing apparatus according to the present embodiment can execute the classification calculation in parallel using the SIMD operation instruction, and therefore can efficiently execute the classification process for the data included in the specific range.
  • the data processing device 900 has the same configuration as the data processing device 100 in the first embodiment, the same effect as in the first embodiment can be obtained.
  • FIG. 12 is a diagram illustrating a functional configuration of the data processing device 1200 according to the present embodiment.
  • the data processing device 1200 in this embodiment is different from the data processing devices (100, 900) in each of the above embodiments only in part of the operation of the arithmetic processing unit 1201, and the other components are the same. Hereinafter, the difference will be described. Note that the other components (the storage unit 102 and the input unit 103) in the data processing device 1200 may be the same as those in the above embodiments, and thus detailed description thereof is omitted.
  • the data processing device 1200 (especially the arithmetic processing unit 1201) in the present embodiment is different from the data processing device in the first embodiment in the operation in the category calculation step (step S204 in FIG. 2).
  • the difference will be described with reference to a specific example illustrated in FIGS. 4 and 5 and a flowchart (FIG. 13) illustrating processing of the category calculation step (step S204) in the present embodiment. Note that the execution order of the steps in the flowchart illustrated in FIG. 13 may be changed within a range that does not affect the calculation result.
  • the arithmetic processing unit 1201 calculates which category of the extended category array Y the element x [i] of the input data array X is classified into.
  • x [i] represents the i-th element in the input data array X, as in the first embodiment.
  • the arithmetic processing unit 1201 corrects x [i] to the maximum exception value “max_ex” (step S1301 in FIG. 13).
  • the arithmetic processing unit 1201 executes such correction processing as follows, for example. First, the arithmetic processing unit 1201 performs a comparison operation between x [i] and the maximum threshold “max_x” using a comparison operation instruction (for example, a CMP instruction, a CMPGE instruction, or the like). Then, the arithmetic processing unit 1201 executes a conditional move instruction (for example, a CMOVGE instruction or a CMOVL instruction). Accordingly, the arithmetic processing unit 1201 substitutes the maximum exception value “max_ex” for x [i] when x [i] is equal to or larger than the maximum threshold “max_x” based on the comparison result by the comparison operation instruction.
  • a comparison operation instruction for example, a CMP instruction, a CMPGE instruction, or the like.
  • the arithmetic processing unit 1201 corrects x [i] to the minimum exception value min_ex (step S1302 in FIG. 13).
  • the arithmetic processing unit 1201 executes such correction processing as follows, for example. First, the arithmetic processing unit 1201 executes a comparison operation between the minimum threshold value min_x and x [i] by a comparison operation instruction (for example, a CMP instruction). Then, the arithmetic processing unit 1201 executes a conditional move instruction (for example, a CMOVGE instruction). Accordingly, the arithmetic processing unit 1201 assigns the minimum exception value “min_ex” to x [i] when the minimum threshold “min_x” is equal to or larger than x [i] based on the comparison result by the comparison operation instruction.
  • a comparison operation instruction for example, a CMP instruction
  • a conditional move instruction for example, a CMOVGE instruction
  • comparison operation instruction is, for example, an instruction for comparing data set as an argument.
  • conditional move instruction is, for example, an instruction for moving (transferring) data set as an argument according to the result of the comparison operation instruction. Since these instructions can be selected for each well-known processor, detailed description thereof is omitted.
  • the arithmetic processing unit 1201 performs an operation “(a + h) / h” on the corrected x [i] (that is, “a”) as in the first embodiment. Thereby, the arithmetic processing unit 1201 calculates an array index (index) for the extended category array Y (step S1303 in FIG. 13).
  • the arithmetic processing unit 1201 determines that, if all input data is within the threshold range, the input data is either the first element to the tenth element of the extended category array Y. Classify into: If certain input data is less than the minimum threshold, the arithmetic processing unit 1201 classifies the input data into the 0th element of the extended category array Y. If certain input data is equal to or greater than the maximum threshold, the arithmetic processing unit 1201 classifies the input data into the eleventh element of the extended category array Y.
  • the data processing device 1200 according to this embodiment that operates as described above has the same effects as those of the above embodiments. Further, the data processing apparatus 1200 according to the present embodiment explicitly uses a conditional branch instruction by combining a comparison operation instruction and a conditional move instruction even in a processor that does not have a MAX operation or a MIN operation. And classification calculations can be performed. Thereby, the data processing device 1200 according to the present embodiment can reduce the delay caused by the conditional branch instruction.
  • FIG. 14 is a block diagram illustrating a functional configuration of the data processing device 1400 according to this embodiment.
  • the data processing device 1400 includes a data classification unit 1401 and a category holding unit 1402. These components constituting the data processing device 1400 may be communicably connected by appropriate communication means (for example, a communication bus, a communication network, etc.). Hereinafter, each component will be described.
  • appropriate communication means for example, a communication bus, a communication network, etc.
  • the data classification unit 1401 corrects data not included in the first range among the data included in the data set to specific exception data, and converts the data included in the first range and the corrected data. Execute processing to classify into different categories.
  • the specific exception data may be, for example, the maximum exception value (upper limit exception data) or the minimum exception value (lower limit exception data) in the first embodiment.
  • the data classification unit 1401 may be configured by an arithmetic processing unit such as a CPU, for example, and may execute the classification process by executing a specific program (computer program).
  • the data classification unit 1401 is not limited to the above, and logic or the like for executing the classification process may be incorporated in advance.
  • the data classification unit 1401 may store the result of the classification process in the category holding unit 1402.
  • the data classification unit 1401 may be the same as the arithmetic processing units (101, 901, 1201) in the above embodiments, for example.
  • the data set may be input data to the data processing device 1400.
  • the category holding unit 1402 holds the result of classifying data into the above categories.
  • the category holding unit 1402 may be configured by, for example, various storage devices (memory) or the like, and may hold the classification result passed from the data classification unit 1401 in a continuous storage area. Note that the category holding unit 1402 may be the same as the storage unit 102 in each of the above embodiments, for example.
  • the data processing device 1400 configured as described above includes a category holding unit 1402 that can hold the category classification results for both data included in a specific range (first range) and data not included.
  • the data processing device 1400 corrects data that is not included in the first range among the data included in the data set.
  • the data processing device 1400 can execute the same category classification process for both data included in the first range and data not included in the first range. That is, the data processing device 1400 can execute the same category classification process for data not included in the first range.
  • the data processing apparatus 1400 can reduce the influence of delay associated with the determination as to whether or not the data processing apparatus 1400 falls within a specific range.
  • each of the above embodiments may be configured by one or a plurality of dedicated hardware devices.
  • each component shown in each of the above drawings may be realized as hardware that is partially or wholly integrated (an integrated circuit or the like on which processing logic is mounted).
  • the constituent elements of the data processing device may be realized by using a circuit configuration capable of providing each function.
  • a circuit configuration includes, for example, an integrated circuit, a SoC (System on a Chip), or a chip set mounted using these.
  • data held by the components of the data processing apparatus may be stored in a RAM (Random Access Memory) area or a flash memory area integrated as an SoC.
  • a well-known communication bus may be adopted as a communication line for connecting each component of the data processing device. Further, the communication line connecting each component is not limited to bus connection, and each component may be connected by peer-to-peer.
  • the hardware devices may be communicably connected by an appropriate communication method (wired, wireless, or a combination thereof).
  • the above-described data processing apparatus may be configured by general-purpose hardware exemplified in FIG. 15 and various software programs (computer programs) executed by the hardware.
  • the data processing device may be configured by one or more hardware devices and software programs.
  • the arithmetic device 1501 in FIG. 15 is an arithmetic processing device such as a general-purpose CPU (Central Processing Unit) or a microprocessor.
  • the arithmetic device 1501 may read various software programs stored in a non-volatile storage device 1503 (to be described later) into the storage device 1502, for example, and execute processing according to the software programs.
  • the operation of the data processing device in each of the above embodiments can be realized using a software program executed by the arithmetic device 1501.
  • the storage device 1502 is a memory device such as a RAM that can be referred to from the arithmetic device 1501, and stores software programs, various data, and the like. Note that the storage device 1502 may be a volatile memory device.
  • the storage unit 102 and the category holding unit 1402 in each of the above embodiments can be realized using the storage device 1502.
  • the nonvolatile storage device 1503 is a nonvolatile storage device such as a magnetic disk drive or a semiconductor storage device using flash memory.
  • the nonvolatile storage device 1503 can store various software programs, data, and the like.
  • the network interface 1506 is an interface device connected to a communication network.
  • a wired and wireless LAN (Local Area Network) connection interface device or the like may be employed.
  • the drive device 1504 is, for example, a device that processes reading and writing of data with respect to a recording medium 1505 described later.
  • the recording medium 1505 is a recording medium capable of recording data, such as an optical disk, a magneto-optical disk, and a semiconductor flash memory.
  • the input / output interface 1507 is a device that controls input / output with an external device.
  • the input unit 103 in the first embodiment can be realized by using any one of the network interface 1506, the drive device 1504, the input / output interface 1507, or a combination thereof.
  • the data processing apparatus described by taking the above-described embodiments as an example is a software program capable of realizing the functions (operations) described in the above-described embodiments with respect to, for example, the hardware apparatus illustrated in FIG. May be realized by supplying More specifically, for example, the present invention may be realized by causing the arithmetic device 1501 to execute a software program supplied to such a device.
  • a software program supplied to such a device.
  • an operating system running on the hardware device, middleware such as database management software, network software, or the like may execute a part of each process.
  • the arithmetic device 1501 may realize the operations described in the above embodiments using an appropriate software program such as a process, thread, task, or the like that can be processed in parallel.
  • the software programs may be recorded on the recording medium 1505.
  • each of the software programs may be stored in the nonvolatile storage device 1503 through the drive device 1504 as appropriate in the shipping stage or the operation stage of the communication device.
  • the method of supplying various software programs to the data processing apparatus is installed in the apparatus using an appropriate jig at the manufacturing stage before shipment or the maintenance stage after shipment. You may adopt the method of doing.
  • a method for supplying various software programs a general procedure may be adopted at present, such as a method of downloading from the outside via a communication line such as the Internet.
  • the present invention can be understood to be constituted by a code constituting the software program or a computer-readable recording medium on which the code is recorded.
  • the recording medium is not limited to a medium independent of the hardware device, but includes a storage medium in which a software program transmitted via a LAN or the Internet is downloaded and stored or temporarily stored.
  • the data processing apparatus described above or the constituent elements of the data processing apparatus include a virtual environment obtained by virtualizing the hardware device illustrated in FIG. 15 and various software programs (computers) executed in the virtual environment. -A program).
  • the components of the hardware device illustrated in FIG. 15 are provided as virtual devices in the virtual environment.
  • the present invention can be realized with the same configuration as when the hardware device illustrated in FIG. 15 is configured as a physical device.
  • the data classification means is Classifying the data included in the first range into a first category comprising a plurality of categories included in the first range; The data not included in the first range is corrected to one or more of the one or more exception data not included in the first range, and the corrected data is defined as the first category. Classify into a second category of one or more different categories, The data processing apparatus according to appendix 1, wherein the category holding unit holds a classification result related to the first category and a classification result related to the second category.
  • the data classification means is Among the data not included in the first range, at least a part of the data is converted into one of the one or more exception data not included in the first range based on a value represented by the data. While correcting, Classifying the data corrected to the exception data into different categories for each exception data in the second category; The data processing device according to attachment 2.
  • the data classification means is Among the data determined to be larger than the upper limit of the first range, at least a part of the data is corrected to upper exception data that is the exception data larger than the upper limit of the first range, and Classifying the corrected upper limit exception data into a third category included in the second category, Among the data determined to be smaller than the lower limit of the first range, at least a part of the data is corrected to lower exception data that is the exception data smaller than the lower limit of the first range, and Classifying the corrected lower limit exception data into a fourth category included in the second category;
  • the data processing device according to attachment 3.
  • the data classification means for each of the data included in the data set, Processing to correct the data to the calculated minimum value by calculating the minimum value of the data and the upper limit exception data; A process for correcting the data to the calculated maximum value by calculating the maximum value of the data and the lower limit exception data; By executing at least one of the above, the data not included in the first range is corrected to the upper limit exception data or the lower limit data, The data processing device according to attachment 4.
  • the data classification means for each of the data included in the data set, A process of calculating a minimum value of the data and the upper limit exception data by executing an instruction to obtain a minimum value for the data and the upper limit exception data, and correcting the data to the calculated minimum value; , Processing to calculate the maximum value of the data and the upper limit exception data by executing an instruction to obtain the maximum value for the data and the lower limit exception data, and correcting the data to the calculated maximum value;
  • the data processing device according to appendix 4 or appendix 5, which executes at least one of the above.
  • the data classification means for each of the data included in the data set, By executing a comparison instruction, a process of comparing the size of the data with the upper limit of the first range is executed, and based on the result of the comparison process, a conditional move instruction is executed, When the data is larger than the upper limit of the first range, a process of correcting the data to the upper limit exception data; By executing a comparison instruction, a process of comparing the size of the data with the lower limit of the first range is executed, and based on the result of the comparison process, a conditional move instruction is executed, When the data is smaller than the lower limit of the first range, at least one of the process of correcting the data to the lower limit exception data is executed.
  • the data processing device according to any one of appendix 4 to appendix 6.
  • the data classification means can execute a SIMD instruction capable of executing a plurality of arithmetic processes in parallel by a single instruction
  • the data classifying means executes a process of classifying the specific number of the data into categories by executing a SIMD instruction for the specific number of the data included in the data set.
  • Information processing device Among the data included in the data set, the data not included in the first range is corrected to specific exception data, and the data included in the first range and the corrected data are Into different categories, A data processing method for holding a result of classifying the data into the category.
  • the data classifying means corrects the data not included in the first range by performing a specific same operation on all data included in the data set;
  • the data processing device according to attachment 1.
  • the data classification means corrects the data not included in the first range by executing the same specific operation without a conditional branch instruction on all data included in the data set. , The data processing apparatus according to appendix 1 or appendix 11.
  • the data classification means can execute a SIMD instruction capable of executing a plurality of arithmetic processes in parallel by a single instruction
  • the data classifying means uses, for each of the data included in the data set, a SIMD instruction to acquire the minimum value, an instruction to acquire the maximum value, the comparison instruction, and the condition
  • the data processing apparatus according to appendix 8, wherein the processing for classifying the data into categories based on the reference is executed in parallel by executing at least one of the append movement command.
  • the category holding means arranges the classification result related to the first category in a first storage area which is a continuous storage area,
  • the classification result related to the third category is adjacent to the area where the category included in the first category in which the data closest to the upper limit of the first range is classified in the first storage area is arranged.
  • the classification result related to the fourth category is adjacent to the area where the category included in the first category into which the data closest to the lower limit of the first range is classified in the first storage area.
  • the data processing device according to attachment 4 which is arranged in the third storage area.
  • DESCRIPTION OF SYMBOLS 100 Data processing apparatus 101 Arithmetic processing part 102 Storage part 103 Input part 900 Data processing apparatus 901 Arithmetic processing part 1200 Data processing apparatus 1201 Arithmetic processing part 1400 Data processing apparatus 1401 Data classification part 1402 Category holding part 1501 Arithmetic apparatus 1502 Storage apparatus 1503 Non-volatile Storage device 1504 drive device 1505 recording medium 1506 network interface 1507 input / output interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Algebra (AREA)
  • Evolutionary Biology (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 特定の範囲に含まれるデータに関する分類処理において生じる遅延の影響を低減する。データ処理装置(1400)は、データ集合に含まれるデータのうち、第1の範囲に含まれない上記データを、特定の例外データに補正するとともに、上記第1の範囲に含まれる上記データと、補正後の上記データとを、異なるカテゴリに分類するデータ分類手段(1401)と、上記データを上記カテゴリに分類した結果を保持するカテゴリ保持手段(1402)と、を備える。

Description

データ処理装置、データ処理方法及び記録媒体
 本発明は、データを特定の範囲に分類可能な技術に関する。
 近年、様々なデータ処理(例えば、画像処理、音声処理、その他統計処理等)において、データを分類する分類計算が用いられている。分類計算は、例えば、データの集合であるデータ列に含まれる各データを、所定の範囲に区切られた区分(カテゴリ等)に分類する計算である。代表的な分類計算として、例えば、ヒストグラム計算が知られている。ヒストグラム計算は、データ列に含まれるデータに関して、各区分に属する要素がいくつあるか(個数)を数え上げる計算である。このような分類計算を含むデータ処理においては、処理を高速化あるいは効率化可能な技術(例えば、並列処理等)が求められている。
 上記したような分類計算に関連する技術が、例えば、以下の各特許文献に開示されている。
 特許文献1(特開2009-020781号公報)は、演算対象のデータが所定の上下限の範囲内に収まるよう制限する処理(リミット処理)を実行し、当該リミット処理が実行されたデータに関するヒストグラムを算出する技術を開示する。
 特許文献2(特開2013-008270号公報)は、並列的に入力されるデータのヒストグラムを算出する演算装置に関する技術を開示する。特許文献2に開示された技術は、入力データに対してN(Nは自然数)個の演算装置が並列に処理を実行し、当該処理の結果に基づいてN個のセレクタが、M個(Mは自然数)のヒストグラムのカウント対象を選択する。そして、M個のカウンタが上記セレクタによる選択結果を計数することにより、ヒストグラムが算出される。
 また、データに関する処理を高速化する技術に関して、演算処理装置(プロセッサ等)が用意するSIMD(Single Instruction Multiple Data)命令を用いて、データ処理を並列に実行する技術が、以下の各特許文献に開示されている。
 例えば、特許文献3(特開2010-272107号公報)は、SIMD演算機能を利用して格子演算を行う技術を開示する。特許文献3に開示された技術は、格子における特定の節点の数に応じて、ダミーの節点を導入する。特許文献3に開示された技術は、特定の節点に対する一つ前の節点と、導入したダミー節点とを用いて、特定の節点に関する演算を実行する。
 特許文献4(特開平11-126255号公報)に開示された技術は、入力画像を走査線単位で処理可能なSIMD型演算器を用いて、入力画像の画素を複数の階調度範囲に分類し、各階調毎のヒストグラムを算出する。係る技術は、算出したヒストグラムに基づいて入力画像に対する階調度変換処理を実行する。
 また、上記分類計算には直接関係しないものの、データ処理に関連する技術として、特許文献5が存在する。特許文献5に開示された技術は、反復処理における計算結果が所定の限界値を超えた場合にエラーが発生したと判定し、エラーが生じた計算結果を、反復処理における過去の計算結果を用いて補正する。
特開2009-020781号公報 特開2013-008270号公報 特開2010-272107号公報 特開平11-126255号公報 国際公開第2014/033941号
 データ処理(例えば、上記した分類処理)においては、データの集合のうち、処理対象となるデータがある特定の範囲に限られる場合がある。より具体的には、例えば、ある閾値により定められた範囲に含まれるデータに対して、所定のデータ処理が実行される場合がある。このような場合、データ集合に含まれるデータが当該範囲に含まれるか否かを判定する範囲判定処理が実行される。係る判定処理に伴う条件分岐の発生に起因して、データ処理において遅延(例えば、コンピュータ・プログラムの実行遅延等)が生じるという問題がある。
 また、係る判定処理の結果に応じて、当該特定の範囲に含まれるデータに対して実行される処理と、含まれないデータに対して実行される処理とが異なる場合がある。この場合、全てのデータに対して同じ処理を並列に実行することが困難である。上記したような遅延の発生や、並列処理の困難性に伴い、特定の範囲に含まれるデータに関する分類処理の処理効率が低下する虞がある。
 これに対して、例えば、特許文献1に開示された技術は、演算対象のデータが所定の範囲内に収まるか否かを判定することから、条件分岐が発生し、データ処理において遅延が生じる可能性がある。また、特許文献2、特許文献3、特許文献4に開示された技術はいずれも、入力されたデータに演算対象の範囲外であるデータが含まれることを想定していない。よって、上記各特許文献に開示された技術は、いずれも上記したような問題を解決するには不十分である。
 本発明は上記のような事情を鑑みてなされたものである。即ち、本発明は、ある範囲に含まれるデータを対象とした分類処理に関する遅延の影響を低減可能な、データ処理装置等を提供することを主たる目的の一つとする。
 上記の目的を達成すべく、本発明の一態様に係るデータ処理装置は、以下の構成を備える。即ち、本発明の一態様に係るデータ処理装置は、データ集合に含まれるデータのうち、第1の範囲に含まれない上記データを、特定の例外データに補正するとともに、上記第1の範囲に含まれる上記データと、補正後の上記データとを、異なるカテゴリに分類するデータ分類手段と、上記データを上記カテゴリに分類した結果を保持するカテゴリ保持手段と、備える。
 また、本発明の一態様に係るデータ処理方法は、以下の構成を備える。即ち、本発明の一態様に係るデータ処理方法は、情報処理装置が、データ集合に含まれるデータのうち、第1の範囲に含まれない上記データを、特定の例外データに補正するとともに、上記第1の範囲に含まれる上記データと、補正後の上記データとを、異なるカテゴリに分類し、上記データを上記カテゴリに分類した結果を保持する構成を有する。
 また、同目的は、上記構成を有するデータ処理装置、並びに対応するデータ処理方法を、コンピュータによって実現するコンピュータ・プログラム、及び、そのコンピュータ・プログラムが記憶されている、コンピュータ読み取り可能な記録媒体等によっても達成される。
 本発明によれば、ある範囲に含まれるデータを対象とした分類処理に関する遅延の影響を低減可能である。
図1は、本発明の第1の実施形態に係るデータ処理装置の機能的な構成を例示するブロック図である。 図2は、本発明の第1の実施形態に係るデータ処理装置の動作の概要を例示するフローチャートである。 図3は、本発明の第1の実施形態に係るデータ処理装置を構成する記憶部に記憶されたデータの具体例を示す図である。 図4は、入力データに対するカテゴリ分類の具体例を表す図である。 図5は、本発明の第1の実施形態に係るデータ処理装置が実行するカテゴリ分類処理の具体例を表す図である。 図6は、本発明の第1の実施形態に係るデータ処理装置の具体的な動作を例示するフローチャート(1/3)である。 図7は、本発明の第1の実施形態に係るデータ処理装置の具体的な動作を例示するフローチャート(2/3)である。 図8は、本発明の第1の実施形態に係るデータ処理装置の具体的な動作を例示するフローチャート(3/3)である。 図9は、本発明の第2の実施形態に係るデータ処理装置の機能的な構成を例示するブロック図である。 図10は、本発明の第2の実施形態に係るデータ処理装置の動作の概要を例示するフローチャートである。 図11は、本発明の第2の実施形態に係るデータ処理装置を構成する記憶部に記憶されたデータの具体例を示す図である。 図12は、本発明の第3の実施形態に係るデータ処理装置の機能的な構成を例示するブロック図である。 図13は、本発明の第3の実施形態に係るデータ処理装置の具体的な動作を例示するフローチャートである。 図14は、本発明の第4の実施形態に係るデータ処理装置の機能的な構成を例示するブロック図である。 図15は、本発明の各実施形態にデータ処理装置、あるいは、その構成要素を実現可能なハードウェアの構成を例示する図である。 図16は、データの分類処理を実行する装置の機能的な構成を例示するブロック図である。
 以下、本発明を実施する形態について図面を参照して詳細に説明する。以下の各実施形態に記載されている構成は単なる例示であり、本発明の技術範囲はそれらには限定されない。
 まず、本発明の各実施形態に関する説明に先立って、本発明の理解を容易にするため、本発明に関する技術的背景等について説明する。
 データ集合(例えば入力データ)のうち、ある特定の範囲に含まれるデータに対して、なんらかのデータ処理(例えば、ヒストグラム算出等)が実行される場合を想定する。例えば、ヒストグラムの算出を想定した場合、係るヒストグラムの算出処理は、例えば、図16に例示するような構成により実行可能である。図16は、演算処理部(例えば、CPU(Central Processing Unit)等のプロセッサ)と、記憶部(メモリ)を有する装置(例えば、コンピュータ等の情報処理装置)の機能的な構成を例示するブロック図である。図16においては、説明の便宜上、記憶部に含まれるデータ(入力データ列、及びヒストグラム配列)と、演算処理部において実行されるヒストグラム算出処理とが模式的に例示されている。
 図16に示すようなヒストグラム算出処理においては、入力データがある範囲に含まれるか否かを判定する、範囲判定処理が実行される。より具体的には、範囲判定処理は、入力データが所定の閾値により定められた範囲に収まっているか否かを判定する。そして、係る範囲判定処理の結果、範囲内(閾値内)に含まれると判定された入力データについて、ヒストグラム算出処理が実行される。
 図16に例示するようなヒストグラム計算に限定されず、例えば、特定の範囲に含まれる入力データのみに対して分類処理を行うような分類計算では、図16に例示するような処理と同様の範囲判定処理が実行される場合がある。そして、係る範囲判定処理において入力データが所定の閾値内であるか否かが判定された後に、分類計算が実行される。
 例えば、係る分類計算がコンピュータ等の情報処理装置により実行される場合を想定する。この場合、係る範囲判定処理は、例えば、当該情報処理装置において実行されるコンピュータ・プログラムにおいて、条件分岐処理として実装される。より具体的には、係る条件分岐処理は、例えば、各種プログラミング言語における条件文(IF文)や、条件分岐命令を用いて実装される。この場合、係る条件分岐処理は、例えば、情報処理装置を構成するプロセッサにおいて実行される、条件分岐命令を用いて実現される場合がある。プロセッサがパイプライン化されている場合、条件分岐命令が実行されることで、条件の判断を保留中のパイプラインがストールする可能性がある。これにより、プログラムの実行が遅延する可能性がある。
 より具体的には、プロセッサにおける条件分岐命令は、一般的にジャンプ命令(以下「JMP命令」と記載する場合がある)等と総称され、条件比較を行った結果に基づいて、特定のアドレスにジャンプする命令である。係るJMP命令には、例えば、オペランドが「0(ゼロ)」の場合にジャンプする「JE」命令や、オペランドの比較結果が大きい場合にジャンプする「JG」命令等が含まれる。
 これらのJMP命令が実行された場合、プロセッサは新しいアドレスに分岐した後、新たな命令を取得(フェッチ)し、当該取得した命令を実行する。即ち、この場合、プロセッサは、分岐前までに実行されていたパイプライン処理を停止して、新たな処理の実行を開始する可能性がある。この場合、パイプライン処理がストールすることから、データ処理に遅延が生じる。なお、上記説明したジャンプ命令等は、プロセッサ毎に具体的な命令の形式等が異なる場合があるものの、周知の技術であることから、詳細な説明は省略する。
 上記したような分類処理は、あるデータに関する範囲判定処理の結果に応じて、当該データに対する、ある特定の演算処理(例えばヒストグラム算出等)を行うか否かを決定する。これにより、データ毎に当該演算処理が実行されるか否かが異なる場合があることから、全てのデータに対して、同じ演算を実行することができない場合がある。したがって、入力データが、例えば並列処理可能なデータ構造(配列等)により与えられた場合でも、係るデータに対してSIMD演算命令を適用できない場合がある。ここで、SIMD演算命令は、一つの命令で、配列等の並列処理可能なデータ構造(ベクトルデータ)に含まれる複数のデータに対して、並列に演算処理を実行可能な命令である。SIMD命令自体は周知の技術であることから、詳細な説明を省略する。
 以上をまとめると、上記した分類処理においては、入力データに対する範囲判定処理が実行される場合がある。この場合、範囲判定処理における条件分岐の実行により、遅延が生じる可能性がある。また、係る分類処理においては、各データに対する範囲判定処理の結果に基づいて、各データに対する分類処理の実行要否が判断される。これにより、全ての入力データに対して同じ演算を実行できない場合がある。即ち、全ての入力データに対して、同じ処理を(例えばSIMD命令を用いて)並列に実行できない場合がある。
 そこで、以下の各実施形態を用いて説明する本発明は、上記したような分類処理において、条件分岐命令の実行に伴う遅延の影響を低減可能であり、また、各データに対して同じ処理を並列に実行可能な技術を実現する。
 以下、本発明の各実施形態におけるデータ処理装置等について詳細に説明する。なお、以下の各実施形態におけるデータ処理装置は、1以上の専用のハードウェア装置、あるいは、情報処理装置等を用いて実現可能である。以下の各実施形態におけるデータ処理装置は単体のハードウェア装置として実現されてもよく、複数のハードウェア装置(あるいは情報処理装置)等から構成されるシステムとして実現されてもよい。係るデータ処理装置を実現可能なハードウェア構成(例えば図15)については後述する。なお、係るデータ処理装置は、周知の仮想化基盤技術を用いた、仮想的な情報処理装置(仮想コンピュータ等)を用いて実現されてもよい。
 <第1の実施形態>
 本発明の第1の実施形態に係るデータ処理装置について、図面を参照して詳細に説明する。図1は、本実施形態におけるデータ処理装置の機能的な構成を例示するブロック図である。
 図1を参照すると、本発明の第1の実施形態におけるデータ処理装置100は、演算処理部101と、記憶部102と、入力部103とを備える。データ処理装置100を構成するこれらの構成要素の間は、適切な通信方法(例えば、通信バスや通信ネットワーク等)により、相互に通信可能に接続されていてもよい。以下、それぞれの構成要素について概要を説明する。
 演算処理部101は、例えば、後述する記憶部102に記憶されたデータに対して各種演算処理を実行可能な、専用又は汎用のプロセッサ(CPU等)である。演算処理部101は、例えば、記憶部102に記憶されたソフトウェア・プログラム(コンピュータ・プログラム、以下単に「プログラム」と称する場合がある)を実行可能であってもよい。なお、係るプログラムは、記憶部102に限定されず、データ処理装置の内外の装置(不図示)に保持されてもよい。この場合、必要に応じて演算処理部101が当該プログラムを読み出して実行する。
 記憶部102は、各種のデータを記憶可能な記憶デバイス(メモリ)である。係る記憶部102は、半導体記憶装置等により実現された揮発性あるいは不揮発性のメモリデバイスにより実現されてもよい。なお、記憶部102は、上記に限定されず、その他の適切な記憶デバイス(例えば、磁気記憶デバイス、光磁気記憶デバイス、光記憶デバイス、等)により実現可能である。
 入力部103は、データ処理装置100に対して各種のデータを入力可能な入力装置である。係る入力部103は、データ処理装置100の構成に応じて、適切な入力装置を用いて実現可能である。即ち、入力部103は、例えば、ネットワークを介して各種のデータを入力可能なネットワークデバイスでもよい。また、入力部103は、例えば、データ処理装置100のユーザが直接データを入力可能な、インタフェース装置であってもよい。また、入力部103は、例えば、各種の記憶媒体を介してデータを入力可能な、記憶媒体の読み込みデバイスであってもよい。本実施形態においては、入力部103を介して、処理対象のデータ集合である入力データがデータ処理装置100に入力され、係る入力データが記憶部102に保持(記憶)される。
 上記のように構成された本実施形態におけるデータ処理装置100は、入力データをある特定の範囲(カテゴリ)に分類する分類処理を実行する。より具体的には、本実施形態におけるデータ処理装置100においては、演算処理部101が、記憶部102に記憶されたデータ(入力データ)に対し、分類処理を実行する。この場合、演算処理部101は、プログラムを実行することにより、係る分類処理を実行してもよい。これに限定されず、演算処理部101は、予め組み込まれたロジック等により、係る分類処理を実行してもよい。
 以下、本実施形態におけるデータ処理装置100の動作について図面を参照して説明する。
 図2は、本実施形態におけるデータ処理装置100の動作の概要を例示するフローチャートである。図2に例示するように、データ処理装置100の主要な動作は、大別して、例外値計算ステップ(ステップS202)と、カテゴリ計算ステップ(ステップS204)と、カテゴリ処理ステップ(ステップS205)とを含む。なお、図2に例示するフローチャートにおける各処理の実行順序は、処理結果に影響を与えない範囲で変更されてもよい。各ステップにおける処理については、後述する。
 図3は、本実施形態におけるデータ処理装置100における、記憶部102に記憶されたデータの一部を模式的に示す説明図である。図3に例示するように、記憶部102には、入力データ配列301、及び、拡張カテゴリ配列302が、それぞれ連続した記憶領域に配置される。なお、係る連続した記憶領域は、記憶領域を構成するアドレス等が物理的に連続した記憶領域であってもよく、論理的に連続した記憶領域であってもよい。
 入力データ配列301は、分類計算対象であるm個(mは自然数)のデータ集合(入力データ)を保持する配列である。以下、入力データ配列301を、「入力データ配列X」と表し、入力データ配列Xの要素を、入力データxと表す場合がある。特に、入力データ配列のi番目の要素(iは0以上の整数)をx[i]と表す場合がある。
 拡張カテゴリ配列302は、ある閾値により定められた範囲(以下、「閾値範囲」と称する場合がある)内のデータを、n個(nは自然数)のカテゴリに分類した結果を保持する配列である。拡張カテゴリ配列302は、これに加えて、閾値範囲の上限以上、あるいは閾値範囲の下限未満の入力データ(即ち、閾値範囲外のデータ)を他のカテゴリに分類した結果を保持する。拡張カテゴリ配列302は、閾値範囲内のデータを分類した結果と、閾値範囲外のデータを分類した結果とを、連続した領域に保持してもよい。なお、入力データ配列301及び拡張カテゴリ配列302は、必ずしも配列構造に限らず、データに連続してアクセス可能な、適切なデータ構造を用いて実現(実装)されてよい。なお、閾値範囲は、例えば、データ処理装置100に予め設定されてもよく、データ処理装置100において実行されるプログラムに設定されてもよく、入力等として与えられてもよい。
 以下、データ処理装置100の動作について詳細に説明する。なお、以下においては、図4及び図5に示す具体例を用いて、データ処理装置の動作について説明する。
 まず、図4及び図5に示す具体例においては、入力データxの値が、特定の閾値範囲内(下限値「min_x」以上、上限値「max_x」未満)である場合に、係る入力データxを特定のカテゴリに分類することを想定する。以下、閾値の下限値「min_x」を「最小閾値」、閾値の上限値「max_x]を「最大閾値」と称する場合がある。以下においては、閾値範囲内の入力データxは、値の幅(範囲)がhであるカテゴリに分類されることを想定する。図4及び図5に示す具体例においては、説明の便宜上、閾値の下限値「min_x」は、「min_x = 0」であり、閾値の上限値「max_x」は、「max_x = 100」であり、値の幅(範囲)「h=10」であることを想定する。この場合、入力データxは、閾値0以上10未満、10以上20未満といったように、値の幅(範囲)が10である10個のカテゴリに分類される。
 図5は、本実施形態におけるデータ処理装置100が図4に例示する分類処理を実行する場合に、各入力データxが分類されるカテゴリの具体例を示す図である。上記したように、拡張カテゴリ配列(図5における「拡張カテゴリ配列Y」)は、閾値範囲内のデータに対する分類結果に加えて、閾値範囲外の入力データに対する分類結果を保持可能な配列である。拡張カテゴリ配列は、これらのデータを連続して保持してもよい。
 図5に示す具体例において、拡張カテゴリ配列Yの0番目の要素は、閾値範囲の下限値未満の入力データを保持する。即ち、拡張カテゴリ配列Yの0要素目は、閾値範囲の下限値(min_x)未満の入力データが分類されるカテゴリを表す。以下、係るカテゴリを、「第4のカテゴリ」と称する場合がある。
 また、図5に示す具体例において、拡張カテゴリ配列Yの1番目から10番目の要素は、閾値範囲に含まれる入力データ(閾値範囲内のデータ)を保持する。即ち、拡張カテゴリ配列Yの1要素目から10要素目は、閾値範囲内のデータが分類される各カテゴリ(10個のカテゴリ分類)を表す。以下、係るカテゴリを「第1のカテゴリ」あるいは「閾値内カテゴリ」と称する場合がある。なお、図5に示す具体例においては、第1のカテゴリに10のカテゴリが含まれるが、本実施形態はこれには限定されない。第1のカテゴリがいくつのカテゴリを含むかは、適宜定められてよい。
 更に、図5に示す具体例において、拡張カテゴリ配列Yの11番目の要素は、閾値範囲の上限値以上の入力データを保持する。即ち、拡張カテゴリ配列Yの11番目の要素は、特定の上限値(max_x)以上の入力データが分類されるカテゴリを表す。以下、係るカテゴリを「第3のカテゴリ」と称する場合がある。また、上記説明した第4のカテゴリと、第3のカテゴリとを併せて「第2のカテゴリ」あるいは「閾値外カテゴリ」と称する場合がある。係る「第2のカテゴリ」(閾値外カテゴリ)は、特定の閾値範囲外のデータが分類されるカテゴリである。本実施形態において、第3のカテゴリ、第4のカテゴリに含まれるカテゴリの数は、適宜定められてよい。
 図6乃至図8は、それぞれ、図2における例外値計算ステップ(ステップS202)、カテゴリ計算ステップ(ステップS204)、及び、カテゴリ処理ステップ(ステップS205)の詳細な処理を例示したフローチャートである。以降、図2、並びに、図6乃至図8に例示するフローチャートを参照して、データ処理装置100における処理の流れを説明する。
 まず、入力部103が、入力データを受け付ける(ステップS201)。入力部103は、受け付けた入力データを記憶部102に提供し、記憶部102が係る入力データを、入力データ配列(例えば図3の301)として保持してもよい。
 次に、データ処理装置100(特には、演算処理部101)は、入力データに対する最大例外値「max_ex」と、最小例外値「min_ex」とを計算する(例外値計算ステップ(ステップS202))。
 最大例外値(以下「上限例外データ」と記載する場合がある)は、入力データxが閾値範囲に含まれない場合、特には入力データxが最大閾値「max_x」以上である場合に、当該入力データが補正される値である。最小例外値(以下「下限例外データ」と記載する場合がある)は、入力データxが閾値範囲に含まれない場合、特には入力データが最小閾値「min_x」未満である場合に、当該入力データが補正される値である。これらの入力データの補正については、ステップS204におけるカテゴリ計算ステップにおいて説明する。
 ステップS202において、演算処理部101は、最大例外値(max_ex)を、最大閾値「max_x」以上で「最大閾値+h」(「+」は加算記号、「h」は各カテゴリの値の範囲)未満の値となるよう計算する。また、演算処理部101は、最小例外値「min_ex」を、最小閾値「min_x」未満で、「最小閾値-h」(「-」は減算記号)以上の値となるよう計算する。より具体的には、演算処理部101は、例えば、「max_ex=max_x+h/2」([/]は除算記号)、「min_ex=min_x-h/2」という計算により、「max_ex」及び「min_ex」を算出する(図6に例示するステップS601、S602)。
 図5に示す具体例においては、「max_ex」は、「max_ex=105」と算出され、「min_ex」は、「min_ex=-5」と算出される。
 次に、演算処理部101は、入力データ配列Xの全ての要素に対して繰り返し処理(ループ処理)を実行することにより、入力データ配列Xの全要素について分類計算を行う(ステップS203a乃至ステップS203b)。係るループ処理においては、全入力データに対して、カテゴリ計算ステップ(ステップS204)と、カテゴリ処理ステップ(ステップS205)とが実行される。
 カテゴリ計算ステップ(ステップS204)において、演算処理部101は、x[i](入力データ配列Xのi番目の要素)が分類される、拡張カテゴリ配列Yにおける分類先(カテゴリ)を計算する。
 演算処理部101は、まず、x[i]が最大例外値max_ex以上である場合、係るx[i]を最大例外値「max_ex」に補正する(図7に例示するステップS701)。演算処理部101は、x[i]と、最大例外値「max_ex」との最小値を算出するMIN演算を実行することにより、係る補正処理を実行する。演算処理部101は、例えば、各入力データに対して、係るMIN演算を実行することで、入力データと、最大例外値「max_ex」との最小値を取得することができる。この場合、演算処理部101は、各入力データに対して、同じ演算処理を実行可能である。
 同様に、演算処理部101は、x[i]が最小例外値「min_ex」未満の場合、x[i]を最小例外値「min_ex」に補正する(図7に例示するステップS702)。演算処理部101は、x[i]と最小例外値「min_ex」との最大値を算出するMAX演算を実行することにより、係る補正処理を実行する。演算処理部101は、例えば、各入力データに対して係るMAX演算を実行することで、入力データと、最小例外値「min_ex」との最大値を取得することができる。この場合、演算処理部101は、各入力データに対して、同じ演算処理を実行可能である。以下、上記補正後の入力データを、「a」と記載する。
 上記したMAX演算、及びMIN演算は、例えば、それぞれの演算に対応する、汎用プロセッサにおいて利用可能な演算命令により実現可能である。係る演算命令は、例えば、比較的少ないマシンサイクル(1乃至数サイクル)により実行され、パイプライン処理が可能である。これにより、係る演算命令を用いた場合、条件分岐命令の実行に起因する遅延を低減することが可能である。本実施形態においては、例えば、上記演算処理部101により実行されるプログラムは、係る演算命令を直接使用するようにプログラミングされてもよい。また、コンパイラ等が上記各演算命令を使用するように、係るプログラムの実行コードを生成してもよい。なお、上記演算命令を使用する方法は、例えば、周知のプロセッサ毎に選択可能な事項であるので、詳細な説明を省略する。
 次に、演算処理部101は、補正後の入力データ「a」に対して、「(a+h)/h」という演算を実行する。これにより、演算処理部101は、拡張カテゴリ配列Yに対する配列のインデックス(index)を計算する(図7に例示するステップS703)。なお、この場合、演算処理部101は、例えば、「(a+h)/h」の演算結果から小数点以下を切り捨てた整数値を、拡張カテゴリ配列Yに対するインデックスとして用いる。
 以上の処理により、入力データのうち、特定の閾値の範囲内に含まれる入力データは、拡張カテゴリ配列Yの1要素目から10要素目(第1のカテゴリ)のいずれかに分類される。また、最小閾値未満の入力データは、拡張カテゴリ配列Yの0要素目に分類される(即ち、係る入力データは第4のカテゴリに分類される)。また、最大閾値以上の入力データは、拡張カテゴリ配列Yの11要素目に分類される(即ち、係る入力データは第3のカテゴリに分類される)。この場合、拡張カテゴリ配列Yにおいて、第1のカテゴリに分類されたデータと、第3のカテゴリあるいは第4のカテゴリに分類されたデータとは、隣接した領域に連続して配置されてもよい。
 次にステップS205(カテゴリ処理ステップ)において、演算処理部101は、ステップS204において計算された拡張カテゴリ配列Yに対する配列のインデックス(index)を用いて、拡張カテゴリ配列Yの要素y[index]に対する演算処理を実行する。より具体的には、演算処理部101は、拡張カテゴリ配列Yの要素y[index]に対して、ある特定の演算f(y[index])を実行する(図8に例示するステップS801)。上記において、要素y[index]は、拡張カテゴリ配列Yのindex番目の要素を表す。また、f(y[index])は、要素y[index]に対して、演算fを実行することを表す。例えば、係る演算fがヒストグラム演算である場合、演算処理部101は、y[index]の値をインクリメント(加算)する処理を行う。
 以上の処理を行うことで、データ処理装置100は、入力データに対して分類計算を実行可能である。即ち、上記した分類計算の結果、閾値範囲内のデータに関する分類結果は、拡張カテゴリ配列Yの1から10番目の要素に保持される。また、閾値範囲外のデータに関する分類結果は、拡張カテゴリ配列Yの0番目の要素と、11番目の要素(最終要素)とに保持される。なお、上記に限定されず、閾値範囲内のデータと、閾値範囲外のデータとが配置される拡張カテゴリ配列Yの要素は、適宜定められてよい。
 次に、本実施形態におけるデータ処理装置100が奏する効果について説明する。本実施形態におけるデータ処理装置100は、所定の閾値により定められた範囲以外のカテゴリ分類結果を保持可能な拡張カテゴリ配列を有する。そして、データ処理装置100は、入力データに対して特定の演算(例えば、MAX演算やMIN演算等)を実行することにより、特定の閾値により定められた範囲外(閾値範囲外)の入力データを補正する。より具体的には、データ処理装置100は、閾値範囲外の入力データを、閾値範囲外のある特定の近傍値(例えば、上記した最大例外値あるいは最小例外値)に補正する。そして、データ処理装置100は、当該補正された入力データを、拡張カテゴリ配列における特定の要素(例えば、第0要素と最終要素、等)に配置することで、当該入力データに関するカテゴリを分類する。これにより、本実施形態におけるデータ処理装置100は、特定の閾値範囲に含まれる入力データを分類する分類計算に際して、条件分岐命令を(明示的は)用いることなく分類先のカテゴリを判定可能である。よって、本実施形態におけるデータ処理装置100は、条件分岐命令による遅延を低減可能である。以上より、本実施形態におけるデータ処理装置100によれば、特定の範囲に含まれるデータを対象とした分類処理に関する遅延の影響を低減可能である。
 <第1の実施形態の変形例>
 上記第1の実施形態の変形例について説明する。本変形例におけるデータ処理装置100の構成は、上記第1の実施形態と同様としてよい。
 上記第1の実施形態におけるデータ処理装置100は、閾値範囲の上限以上の入力データを、最大例外値(「上限例外データ」)に補正し、閾値範囲の下限未満の入力データを、最小例外値(「下限例外データ」)に補正する。
 本変形例におけるデータ処理装置100は、例えば、設定や外部から与えられたパラメータ等に応じて、以下の処理を実行する。即ち、本変形例におけるデータ処理装置100は、閾値範囲の上限以上の入力データを最大例外値(「上限例外データ」)に補正する処理と、閾値範囲の下限未満の入力データを最小例外値(「下限例外データ」)に補正する処理とのいずれかを実行する。
 例えば、入力データの下限値が閾値範囲に含まれることが分かっている場合を想定する。この場合、データ処理装置100は、閾値範囲の上限以上の入力データを最大例外値(「上限例外データ」)に補正する処理を実行すればよい。同様に、例えば、入力データの上限値が閾値範囲に含まれることが分かっている場合を想定する。この場合、データ処理装置100は、閾値範囲の下限未満の入力データを最小例外値(「下限例外データ」)に補正する処理を実行すればよい。即ち、データ処理装置100は、入力データの集合に含まれるデータのうち、ある閾値範囲に含まれないデータを、特定の例外データ(例えば、最大例外値又は最小例外値)に補正する。そして、データ処理装置100は、閾値範囲内のデータと、補正後のデータとを異なるカテゴリに分類する。
 これにより、本変形例におけるデータ処理装置100は、上記第1の実施形態と同様、条件分岐命令を(明示的には)用いることなく、入力データを分類するカテゴリを判定可能である。よって、本実施形態におけるデータ処理装置100は、条件分岐命令による遅延を低減可能である。
 <第2の実施形態>
 次に、本発明の第2の実施形態について図面を参照して説明する。以下においては、上記第1の実施形態と同様の構成については同様の参照符号を付すことにより、詳細な説明を省略する。
 図9は、本実施形態におけるデータ処理装置900の機能的な構成を例示する図である。本実施形態におけるデータ処理装置900は、演算処理部901においてSIMD演算命令を実行可能であり、係るSIMD演算命令を用いて分類計算を実行する。なお、演算処理部901は、上記第1の実施形態における演算処理部101と同様の構成を有してもよい。データ処理装置900を構成するその他の構成要素(入力部103及び記憶部102)は、上記第1の実施形態と同様としてよいので、詳細な説明を省略する。
 図11は、本実施形態におけるデータ処理装置900における、記憶部102に記憶されたデータの一部を例示する図である。記憶部102は、上記第1の実施形態と同様、入力データ配列(図11の1101)と、拡張カテゴリ配列(図11の1103)とを保持する。また、記憶部102は、入力データ配列の各要素が分類(配置)される拡張カテゴリ配列における要素(カテゴリ)を表す情報を、インデックス配列(図11の1102)に保持する。記憶部102において、入力データ配列1101、インデックス配列1102、及び、拡張カテゴリ配列1103は、それぞれ連続した記憶領域に配置されてもよい。この場合、係る連続した記憶領域は、記憶領域を構成するアドレス等が物理的に連続した領域であってもよく、論理的に連続した領域であってもよい。
 図10は、本実施形態におけるデータ処理装置900の動作を例示するフローチャートである。図10を参照すると、本実施形態におけるデータ処理装置の動作は、大別して例外値計算ステップS902と、カテゴリ計算ステップS904と、カテゴリ処理ステップS906と、を含む。図10に例示するフローチャートにおける各処理の実行順序は、処理結果に影響を与えない範囲で変更されてもよい。
 カテゴリ計算ステップS904は、例えば、ループ処理等により、全入力データに対して実行される。また、カテゴリ処理ステップS906は、例えば、上記カテゴリ計算ステップS904とは別のループ処理等により、全入力データに対して実行される。なお、カテゴリ処理ステップS906は、特定のカテゴリ(例えば、上記第1の実施形態における第1のカテゴリ)に分類されたデータに関してのみ実行されてもよい。
 例外値計算ステップS902、カテゴリ計算ステップS904、カテゴリ処理ステップS906は、それぞれ、上記第1の実施形態における例外値計算ステップ(ステップS202)、カテゴリ計算ステップ(ステップS204)、カテゴリ処理ステップ(ステップS205)と等しいか、略等しい処理としてよい。
 図10に例示するように、本実施形態においては、カテゴリ計算ステップS904と、カテゴリ処理ステップS906とについて、別々に繰り返し処理が実行される。即ち、カテゴリ計算ステップS904と、カテゴリ処理ステップS906とは、別々のループで処理される(図10に例示するステップS903a乃至S903b、及び、ステップS905a乃至S905b)。このため、カテゴリ計算ステップS904における演算結果(カテゴリ分類の結果)をカテゴリ処理ステップS906に仲介するデータとして、図11に例示するような、インデックス配列1102が用いられる。係るインデックス配列1102は、入力データ配列1101と同じサイズである。
 演算処理部901は、カテゴリ計算ステップS904を含むループにおいて、全入力データそれぞれに対して同様の演算を行う。これにより、演算処理部901は、入力データに含まれる各データに対して、並列に演算を実行可能である。
 本実施形態における演算処理部901は、上記したようにSIMD演算命令を実行可能であり、図10に例示するステップS903a乃至S903bにおける繰り返し処理を、SIMD命令を用いて並列に実行する。より具体的には、本実施形態における演算処理部901は、上記説明したMAX演算、MIN演算等を含む分類計算を、SIMD命令を用いて実行する。
 演算処理部901は、例えば、入力データ配列(1101)のうち、特定数の要素に対してSIMD命令を用いて並列に分類計算を実行し、係る分類計算の結果をインデックス配列(1102)に格納する。より具体的には、演算処理部901は、例えば、入力データ(入力データ配列1101の全要素)について、特定数毎に分類計算を並列して実行し、係る分類計算の結果をインデックス配列に格納する。この場合、インデックス配列1102のi番目(iは0以上の整数)の要素には、入力データ配列1101のi番目の要素に対する分類処理の結果が格納される。上記特定数は、例えば、SIMD命令が一度に処理可能な要素の数等に基づいて定められてもよい。
 なお、カテゴリ処理ステップS906における演算処理がSIMD命令を用いて実行可能である場合、演算処理部901は、当該演算処理を並列に実行してもよい。
 次に、本実施形態におけるデータ処理装置900が奏する効果について説明する。本実施形態におけるデータ処理装置900は、上記第1の実施形態と同様、所定の閾値範囲外のカテゴリ分類結果を保持する拡張カテゴリ配列を有する。そして、データ処理装置900は、特定の演算(MAX演算やMIN演算等)を実行することにより、閾値範囲外の入力データを、閾値範囲外の近傍値(例えば、最大例外値あるいは最小例外値)に補正する。そして、データ処理装置900は、例えば、拡張カテゴリ配列における特定の要素(例えば、第0要素及び最終要素)に係る補正後の入力データを配置することで、当該入力データに関するカテゴリを分類する。本実施形態におけるデータ処理装置は、上記分類計算に関する処理を、SIMD演算命令を用いて実行することにより、SIMD演算命令を使った並列処理を実現できる。即ち、本実施形態におけるデータ処理装置は、SIMD演算命令を用いて、分類計算を並列に実行可能であることから、特定の範囲に含まれるデータに対する分類処理を効率的に実行可能である。また、データ処理装置900は、上記第1の実施形態におけるデータ処理装置100と同様の構成を有することから、上記第1の実施形態と同様の効果を奏する。
 <第3の実施形態>
 次に、本発明の第2の実施形態について図面を参照して説明する。以下においては、上記各実施形態と同様の構成については同様の参照符号を付すことにより、詳細な説明を省略する。
 図12は、本実施形態におけるデータ処理装置1200の機能的な構成を例示する図である。本実施形態におけるデータ処理装置1200は、上記各実施形態におけるデータ処理装置(100、900)と、演算処理部1201の動作の一部のみが相違し、他の構成要素は同様である。以下、係る相違について説明する。なお、データ処理装置1200における他の構成要素(記憶部102及び入力部103)は、上記各実施形態と同様としてよいので、詳細な説明を省略する。
 本実施形態におけるデータ処理装置1200(特には演算処理部1201)は、上記第1の実施形態におけるデータ処理装置と、カテゴリ計算ステップ(図2のステップS204)における動作が相違する。以下、係る相違について、図4及び図5に例示する具体例と、本実施形態におけるカテゴリ計算ステップ(ステップS204)の処理を示すフローチャート(図13)とを用いて説明する。なお、図13に例示したフローチャートにおける各ステップは、演算結果に影響を与えない範囲で、実行順序を変更してもよい。
 カテゴリ計算ステップ(ステップS204)において、演算処理部1201は、入力データ配列Xの要素x[i]が拡張カテゴリ配列Yのどのカテゴリに分類されるか計算を行う。x[i]は、上記第1の実施形態と同様、入力データ配列Xにおけるi番目の要素を表す。
 まず、演算処理部1201は、x[i]が最大閾値「max_x」以上である場合、係るx[i]を最大例外値「max_ex」に補正する(図13におけるステップS1301)。演算処理部1201は、係る補正処理を、例えば、以下のように実行する。まず、演算処理部1201は、比較演算命令(例えば、CMP命令や、CMPGE命令等)を用いてx[i]と最大閾値「max_x」との比較演算を行う。そして、演算処理部1201は、条件付き移動命令(例えば、CMOVGE命令や、CMOVL命令等)を実行する。これにより、演算処理部1201は、比較演算命令による比較結果に基づいて、x[i]が最大閾値「max_x」と等しいか大きい場合、x[i]に最大例外値「max_ex」を代入する。
 次に、演算処理部1201は、x[i]が最小閾値min_x以下である場合、係るx[i]を最小例外値min_exに補正する(図13におけるステップS1302)。演算処理部1201は、係る補正処理を、例えば、以下のように実行する。まず、演算処理部1201は、比較演算命令(例えば、CMP命令)により最小閾値min_xとx[i]との比較演算を実行する。そして、演算処理部1201は、条件付き移動命令(例えば、CMOVGE命令)を実行する。これにより、演算処理部1201は、比較演算命令による比較結果に基づいて、最小閾値「min_x」がx[i]と等しいか大きい場合、x[i]に最小例外値「min_ex」を代入する。
 なお、上記比較演算命令は、例えば、引数として設定されたデータを比較する命令である。また、上記条件付き移動命令は、例えば、比較演算命令の結果に応じて、引数として設定されたデータの移動(転送)を行う命令である。これらの命令は周知のプロセッサ毎に選択可能であることから、詳細な説明を省略する。
 次に、演算処理部1201は、上記補正後のx[i](即ち「a」)に対して、上記第1の実施形態と同様、「(a+h)/h」という演算を実行する。これにより、演算処理部1201は、拡張カテゴリ配列Yに対する配列インデックス(index)を計算する(図13におけるステップS1303)。
 上記処理により、演算処理部1201は、全ての入力データのうち、ある入力データが閾値の範囲内であれば、当該入力データを、拡張カテゴリ配列Yの1要素目から10要素目のいずかに分類する。また、ある入力データが最小閾値未満であれば、演算処理部1201は、当該入力データを拡張カテゴリ配列Yの0要素目に分類する。また、ある入力データが最大閾値以上であれば、演算処理部1201は、当該入力データを拡張カテゴリ配列Yの11要素目に分類する。
 上記のように動作する本実施形態におけるデータ処理装置1200は、上記各実施形態と同様の効果を奏する。また、本実施形態におけるデータ処理装置1200は、MAX演算あるいはMIN演算が用意されていないプロセッサにおいても、比較演算命令と、条件付き移動命令とを組み合わせることにより、条件分岐命令を明示的に用いることなく、分類計算を実行可能である。これにより、本実施形態におけるデータ処理装置1200は、条件分岐命令による遅延を低減可能である。
 <第4の実施形態>
 次に、本発明の第4の実施形態について、図面を参照して説明する。図14は、本実施形態におけるデータ処理装置1400の機能的な構成を例示するブロック図である。
 図14に例示するように、本実施形態におけるデータ処理装置1400は、データ分類部1401と、カテゴリ保持部1402とを有する。データ処理装置1400を構成するこれらの構成要素の間は、適切な通信手段(例えば、通信バスや通信ネットワーク等)により、通信可能に接続されていてもよい。以下、それぞれの構成要素について説明する。
 データ分類部1401は、データ集合に含まれるデータのうち、第1の範囲に含まれないデータを特定の例外データに補正するとともに、第1の範囲に含まれるデータと、補正後のデータとを、異なるカテゴリに分類する処理を実行する。係る特定の例外データは、例えば、上記第1の実施形態における最大例外値(上限例外データ)、又は、最小例外値(下限例外データ)であってもよい。
 データ分類部1401は、例えば、CPU等の演算処理装置により構成され、特定のプログラム(コンピュータ・プログラム)を実行することにより、上記分類処理を実行してもよい。上記に限定されず、データ分類部1401には、係る分類処理を実行するロジック等が予め組み込まれていてもよい。データ分類部1401は上記分類処理の結果を、カテゴリ保持部1402に格納してもよい。係るデータ分類部1401は、例えば、上記各実施形態における演算処理部(101、901、1201)と同様としてもよい。なお、上記データ集合は、データ処理装置1400に対する入力データであってもよい。
 カテゴリ保持部1402は、データを上記カテゴリに分類した結果を保持する。係るカテゴリ保持部1402は、例えば、各種の記憶装置(メモリ)等により構成され、上記データ分類部1401から渡された分類結果を、連続した記憶領域に保持してもよい。なお、係るカテゴリ保持部1402は、例えば、上記各実施形態における記憶部102と同様としてもよい。
 上記のように構成されたデータ処理装置1400は、特定の範囲(第1の範囲)に含まれるデータと、含まれないデータとの双方に対するカテゴリ分類結果を保持可能なカテゴリ保持部1402を有する。また、データ処理装置1400は、データ集合に含まれるデータのうち、第1の範囲に含まれないデータを補正する。以上から、データ処理装置1400は、第1の範囲に含まれるデータと、第1の範囲に含まれないデータとの双方に対して、ともに同様のカテゴリ分類処理を実行することができる。即ち、データ処理装置1400は、第1の範囲に含まれないデータについても、同様のカテゴリ分類処理を実行可能である。これにより、データ処理装置1400は、特定の範囲に含まれるか否かの判定に伴う遅延の影響を低減可能である。以上より、本実施形態におけるデータ処理装置1400によれば、特定の範囲に含まれるデータに関する分類処理において生じる遅延の影響を低減可能である。
 <ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
 以下、上記説明した各実施形態におけるデータ処理装置を実現可能なハードウェア構成について説明する。以下の説明において、上記各実施形態において説明したデータ処理装置(100、900、1200、及び、1400)をまとめて、単に「データ処理装置」と称する。またデータ処理装置の各構成要素を、単に「データ処理装置の構成要素」と称する。
 上記各実施形態において説明したデータ処理装置は、1つ又は複数の専用のハードウェア装置により構成してもよい。その場合、上記各図に示した各構成要素は、一部又は全部を統合したハードウェア(処理ロジックを実装した集積回路等)として実現されてもよい。
 例えば、データ処理装置を専用のハードウェア装置により実現する場合、係るデータ処理装置の構成要素は、それぞれの機能を提供可能な回路構成(circuitry)を用いて実現されてもよい。係る回路構成には、例えば、集積回路、SoC(System on a Chip)、あるいはそれらを用いて実装されたチップセット等が含まれる。この場合、例えば、データ処理装置の構成要素が保持するデータは、SoCとして統合されたRAM(Random Access Memory)領域やフラッシュメモリ領域に記憶されてもよい。また、この場合、データ処理装置の各構成要素を接続する通信回線としては、周知の通信バスを採用してもよい。また、各構成要素を接続する通信回線はバス接続に限らず、それぞれの構成要素間をピアツーピアで接続してもよい。
 データ処理装置を複数のハードウェア装置により構成する場合、それぞれのハードウェア装置の間は、適切な通信方法(有線、無線、またはそれらの組み合わせ)により通信可能に接続されていてもよい。
 また、上述したデータ処理装置は、図15に例示するような汎用のハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、データ処理装置は、1以上の数のハードウェア装置及びソフトウェア・プログラムにより構成されてもよい。
 図15における演算装置1501は、汎用のCPU(中央処理装置:Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置1501は、例えば後述する不揮発性記憶装置1503に記憶された各種ソフトウェア・プログラムを記憶装置1502に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。例えば、上記各実施形態におけるデータ処理装置の動作は、演算装置1501により実行されるソフトウェア・プログラムを用いて実現可能である。
 記憶装置1502は、演算装置1501から参照可能な、RAM等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置1502は、揮発性のメモリ装置であってもよい。上記各実施形態における記憶部102、及び、カテゴリ保持部1402は、記憶装置1502を用いて実現可能である。
 不揮発性記憶装置1503は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置である。不揮発性記憶装置1503は、各種ソフトウェア・プログラムやデータ等を記憶可能である。
 ネットワークインタフェース1506は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のLAN(Local Area Network)接続用インタフェース装置等を採用してもよい。
 ドライブ装置1504は、例えば、後述する記録媒体1505に対するデータの読み込みや書き込みを処理する装置である。
 記録媒体1505は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な記録媒体である。
 入出力インタフェース1507は、外部装置との間の入出力を制御する装置である。
 例えば、上記第1の実施形態における入力部103は、上記ネットワークインタフェース1506、ドライブ装置1504、入出力インタフェース1507のいずれか一つ、またはこれらの組み合わせを用いて実現可能である。
 上述した各実施形態を例に説明した本発明におけるデータ処理装置は、例えば、図15に例示するハードウェア装置に対して、上記各実施形態において説明した機能(動作)を実現可能なソフトウェア・プログラムを供給することにより、実現されてもよい。より具体的には、例えば、係る装置に対して供給したソフトウェア・プログラムを、演算装置1501が実行することによって、本発明が実現されてもよい。この場合、係るハードウェア装置で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト等のミドルウェアなどが各処理の一部を実行してもよい。なお、演算装置1501は、並列に処理可能なプロセス、スレッド、タスク等の適切なソフトウェア・プログラムを用いて、上記各実施形態において説明した動作を実現してもよい。
 上記各ソフトウェア・プログラムは記録媒体1505に記録されてもよい。この場合、上記各ソフトウェア・プログラムは、上記通信装置等の出荷段階、あるいは運用段階等において、適宜ドライブ装置1504を通じて不揮発性記憶装置1503に格納されるよう構成されてもよい。
 なお、上記の場合において、上記データ処理装置への各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
 そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記録媒体によって構成されると捉えることができる。この場合、係る記録媒体は、ハードウェア装置と独立した媒体に限らず、LANやインターネットなどにより伝送されたソフトウェア・プログラムをダウンロードして記憶又は一時記憶した記憶媒体を含む。
 また、上述したデータ処理装置、あるいは、当データ処理装置の構成要素は、図15に例示するハードウェア装置を仮想化した仮想化環境と、当該仮想化環境において実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、図15に例示するハードウェア装置の構成要素は、当該仮想化環境における仮想デバイスとして提供される。なお、この場合も、図15に例示するハードウェア装置を物理的な装置として構成した場合と同様の構成にて、本発明を実現可能である。
 以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。更に、上述した各実施形態、あるいは、係る変更又は改良を加えた新たな実施形態を組み合わせた実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、請求の範囲に記載した事項から明らかである。
 上記の各実施形態の一部又は全部は、以下の付記のようにも記載されうる。なお、以下の付記は本発明をなんら限定するものではない。
 (付記1)
 データ集合に含まれるデータのうち、第1の範囲に含まれない上記データを、特定の例外データに補正するとともに、上記第1の範囲に含まれる上記データと、補正後の上記データとを、異なるカテゴリに分類するデータ分類手段と、
 上記データを上記カテゴリに分類した結果を保持するカテゴリ保持手段と、を備える
データ処理装置。
 (付記2)
 上記データ分類手段は、
  上記第1の範囲に含まれる上記データを、上記第1の範囲に含まれる複数のカテゴリからなる第1のカテゴリに分類するとともに、
  上記第1の範囲に含まれない上記データを、上記第1の範囲に含まれない1以上の上記例外データのいずれかに補正するとともに、当該補正後の上記データを、上記第1のカテゴリとは異なる1以上のカテゴリからなる第2のカテゴリに分類し、
 上記カテゴリ保持手段は、上記第1のカテゴリに関する分類結果と、上記第2のカテゴリに関する分類結果とを保持する
付記1に記載のデータ処理装置。
 (付記3)
 上記データ分類手段は、
  上記第1の範囲に含まれない上記データのうち、少なくとも一部の上記データを、当該データが表す値に基づいて、上記第1の範囲に含まれない1以上の上記例外データのいずれかに補正するとともに、
  上記例外データに補正された上記データを、上記第2のカテゴリのうち、上記例外データ毎に異なるカテゴリに分類する、
付記2に記載のデータ処理装置。
 (付記4)
 上記データ分類手段は、
  上記第1の範囲の上限よりも大きいと判定された上記データのうち、少なくとも一部のデータを、上記第1の範囲の上限よりも大きい上記例外データである上限例外データに補正するとともに、上記補正された上限例外データを、上記第2のカテゴリに含まれる第3のカテゴリに分類し、
  上記第1の範囲の下限よりも小さいと判定された上記データのうち、少なくとも一部のデータを、上記第1の範囲の下限よりも小さい上記例外データである下限例外データに補正するとともに、上記補正された下限例外データを、上記第2のカテゴリに含まれる第4のカテゴリに分類する、
付記3に記載のデータ処理装置。
 (付記5)
 上記データ分類手段は、上記データ集合に含まれるそれぞれの上記データについて、
  当該データと上記上限例外データとの最小値を算出することにより、当該データを上記算出した最小値に補正する処理と、
  当該データと上記下限例外データとの最大値を算出することにより、当該データを上記算出した最大値に補正する処理と、
  の少なくとも何れかを実行することにより、上記第1の範囲に含まれない上記データを、上記上限例外データあるいは上記下限データに補正する、
 付記4に記載のデータ処理装置。
 (付記6)
 上記データ分類手段は、上記データ集合に含まれるそれぞれの上記データについて、
  当該データと、上記上限例外データとに対する最小値を取得する命令を実行することにより、当該データと上記上限例外データとの最小値を算出し、当該データを上記算出した最小値に補正する処理と、
  当該データと上記下限例外データとに対する最大値を取得する命令を実行することにより、当該データと上記上限例外データとの最大値を算出し、当該データを上記算出した最大値に補正する処理と、の少なくともいずれか一方を実行する
付記4又は付記5に記載のデータ処理装置。
 (付記7)
 上記データ分類手段は、上記データ集合に含まれるそれぞれの上記データについて、
  比較命令を実行することにより、上記データと、上記第1の範囲の上限との大小を比較する処理を実行し、当該比較処理の結果に基づいて、条件付き移動命令を実行することにより、上記データが上記第1の範囲の上限よりも大きい場合に、上記データを上記上限例外データに補正する処理と、
  比較命令を実行することにより、上記データと、上記第1の範囲の下限との大小を比較する処理を実行し、当該比較処理の結果に基づいて、条件付き移動命令を実行することにより、上記データが上記第1の範囲の下限よりも小さい場合に、上記データを上記下限例外データに補正する処理と、の少なくともいずれか一方を実行する、
付記4乃至付記6のいずれかに記載のデータ処理装置。
 (付記8)
 上記データ分類手段が、単一の命令により複数の演算処理を並列実行可能なSIMD命令を実行可能である場合において、
 上記データ分類手段は、上記データ集合に含まれる特定数の上記データについて、SIMD命令を実行することにより、当該特定数の上記データをカテゴリに分類する処理を並列に実行する
付記6又は付記7に記載のデータ処理装置。
 (付記9)
 情報処理装置が、
  データ集合に含まれるデータのうち、第1の範囲に含まれない上記データを、特定の例外データに補正するとともに、上記第1の範囲に含まれる上記データと、補正後の上記データとを、異なるカテゴリに分類し、
  上記データを上記カテゴリに分類した結果を保持する
データ処理方法。
 (付記10)
 データ集合に含まれるデータのうち、第1の範囲に含まれない上記データを、特定の例外データに補正するとともに、上記第1の範囲に含まれる上記データと、補正後の上記データとを、異なるカテゴリに分類する処理と、
 上記データを上記カテゴリに分類した結果を保持する処理と、をコンピュータに実行させる
コンピュータ・プログラム。
 (付記11)
 上記データ分類手段は、上記データ集合に含まれる全てのデータに対して特定の同じ演算を実行することにより、上記第1の範囲に含まれない上記データを補正する、
付記1に記載のデータ処理装置。
 (付記12)
 上記データ分類手段は、上記データ集合に含まれる全てのデータに対して、条件分岐命令を伴わない上記特定の同じ演算を実行することにより、上記第1の範囲に含まれない上記データを補正する、
付記1又は付記11に記載のデータ処理装置。
 (付記13)
 上記データ分類手段が、単一の命令により複数の演算処理を並列実行可能なSIMD命令を実行可能である場合において、
 上記データ分類手段は、上記データ集合に含まれるそれぞれの上記データについて、それぞれSIMD命令を用いて、上記最小値を取得する命令と、上記最大値を取得する命令と、上記比較命令と、上記条件付き移動命令と、の少なくとも何れかを実行することにより、上記データをそれぞれ上記基準に基づいてカテゴリに分類する上記処理を並列に実行する付記8に記載のデータ処理装置。
 (付記14)
 上記カテゴリ保持手段は、上記第1のカテゴリに関する分類結果を連続した記憶領域である第1の記憶領域に配置し、
 上記第3のカテゴリに関する分類結果を、上記第1の記憶領域において、上記第1の範囲の上限に最も近い上記データが分類された上記第1のカテゴリに含まれるカテゴリが配置された領域に隣接する第2の記憶領域に配置し、
 上記第4のカテゴリに関する分類結果を、上記第1の記憶領域において、上記第1の範囲の下限に最も近い上記データが分類された上記第1のカテゴリに含まれるカテゴリが配置された領域に隣接する第3の記憶領域に配置する
付記4に記載のデータ処理装置。
 以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
 この出願は、2015年2月25日に出願された日本出願特願2015-035059を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 100 データ処理装置
 101 演算処理部
 102 記憶部
 103 入力部
 900 データ処理装置
 901 演算処理部
 1200 データ処理装置
 1201 演算処理部
 1400 データ処理装置
 1401 データ分類部
 1402 カテゴリ保持部
 1501 演算装置
 1502 記憶装置
 1503 不揮発性記憶装置
 1504 ドライブ装置
 1505 記録媒体
 1506 ネットワークインタフェース
 1507 入出力インタフェース

Claims (10)

  1.  データ集合に含まれるデータのうち、第1の範囲に含まれない前記データを、特定の例外データに補正するとともに、前記第1の範囲に含まれる前記データと、補正後の前記データとを、異なるカテゴリに分類するデータ分類手段と、
     前記データをカテゴリに分類した結果を保持するカテゴリ保持手段と、を備える
    データ処理装置。
  2.  前記データ分類手段は、
      前記第1の範囲に含まれる前記データを、前記第1の範囲に含まれる複数のカテゴリからなる第1のカテゴリに分類し、
      前記第1の範囲に含まれない前記データを、前記第1の範囲に含まれない1以上の前記例外データのいずれかに補正するとともに、当該補正後の前記データを、前記第1のカテゴリとは異なる1以上のカテゴリからなる第2のカテゴリに分類し、
     前記カテゴリ保持手段は、前記第1のカテゴリに関する分類結果と、前記第2のカテゴリに関する分類結果とを保持する
    請求項1に記載のデータ処理装置。
  3.  前記データ分類手段は、
      前記第1の範囲に含まれない前記データのうち、少なくとも一部の前記データを、当該データが表す値に基づいて、前記第1の範囲に含まれない1以上の前記例外データのいずれかに補正するとともに、
      前記例外データに補正された前記データを、前記第2のカテゴリのうち、前記例外データ毎に異なるカテゴリに分類する、
    請求項2に記載のデータ処理装置。
  4.  前記データ分類手段は、
      前記第1の範囲の上限よりも大きいと判定された前記データのうち、少なくとも一部のデータを、前記第1の範囲の上限よりも大きい前記例外データである上限例外データに補正するとともに、前記補正された上限例外データを、前記第2のカテゴリに含まれる第3のカテゴリに分類する処理と、
      前記第1の範囲の下限よりも小さいと判定された前記データのうち、少なくとも一部のデータを、前記第1の範囲の下限よりも小さい前記例外データである下限例外データに補正するとともに、前記補正された下限例外データを、前記第2のカテゴリに含まれる第4のカテゴリに分類する処理と、の少なくとも何れかを実行する
    請求項3に記載のデータ処理装置。
  5.  前記データ分類手段は、前記データ集合に含まれるそれぞれの前記データについて、
      当該データと前記上限例外データとの最小値を算出することにより、当該データを前記算出した最小値に補正する処理と、
      当該データと前記下限例外データとの最大値を算出することにより、当該データを前記算出した最大値に補正する処理と、
      の少なくともいずれかを実行することにより、前記第1の範囲に含まれない前記データを、前記上限例外データあるいは上記下限データに補正する、
     請求項4に記載のデータ処理装置。
  6.  前記データ分類手段は、前記データ集合に含まれるそれぞれの前記データについて、
      当該データと、前記上限例外データとに対する最小値を取得する命令を実行することにより、当該データと前記上限例外データとの最小値を算出し、当該データを前記算出した最小値に補正する処理と、
      当該データと前記下限例外データとに対する最大値を取得する命令を実行することにより、当該データと前記上限例外データとの最大値を算出し、当該データを前記算出した最大値に補正する処理と、の少なくともいずれか一方を実行する
    請求項4又は請求項5に記載のデータ処理装置。
  7.  前記データ分類手段は、前記データ集合に含まれるそれぞれの前記データについて、
      比較命令を実行することにより、前記データと、前記第1の範囲の上限との大小を比較する処理を実行し、当該比較処理の結果に基づいて、条件付き移動命令を実行することにより、前記データが前記第1の範囲の上限よりも大きい場合に、前記データを前記上限例外データに補正する処理と、
      比較命令を実行することにより、前記データと、前記第1の範囲の下限との大小を比較する処理を実行し、当該比較処理の結果に基づいて、条件付き移動命令を実行することにより、前記データが前記第1の範囲の下限よりも小さい場合に、前記データを前記下限例外データに補正する処理と、の少なくともいずれか一方を実行する、
    請求項4乃至請求項6のいずれかに記載のデータ処理装置。
  8.  前記データ分類手段が、単一の命令により複数の演算処理を並列実行可能なSIMD命令を実行可能である場合において、
     前記データ分類手段は、前記データ集合に含まれる特定数の前記データについて、SIMD命令を実行することにより、当該特定数の前記データをカテゴリに分類する処理を並列に実行する
    請求項6又は請求項7に記載のデータ処理装置。
  9.  情報処理装置が、
      データ集合に含まれるデータのうち、第1の範囲に含まれない前記データを、特定の例外データに補正するとともに、前記第1の範囲に含まれる前記データと、補正後の前記データとを、異なるカテゴリに分類し、
      前記データを前記カテゴリに分類した結果を保持する
    データ処理方法。
  10.  データ集合に含まれるデータのうち、第1の範囲に含まれない前記データを、特定の例外データに補正するとともに、前記第1の範囲に含まれる前記データと、補正後の前記データとを、異なるカテゴリに分類する処理と、
     前記データを前記カテゴリに分類した結果を保持する処理と、をコンピュータに実行させる
    コンピュータ・プログラムが記憶された記録媒体。
PCT/JP2016/000825 2015-02-25 2016-02-17 データ処理装置、データ処理方法及び記録媒体 WO2016136197A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017501908A JPWO2016136197A1 (ja) 2015-02-25 2016-02-17 データ処理装置、データ処理方法及びコンピュータ・プログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015-035059 2015-02-25
JP2015035059 2015-02-25

Publications (1)

Publication Number Publication Date
WO2016136197A1 true WO2016136197A1 (ja) 2016-09-01

Family

ID=56788255

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/000825 WO2016136197A1 (ja) 2015-02-25 2016-02-17 データ処理装置、データ処理方法及び記録媒体

Country Status (2)

Country Link
JP (1) JPWO2016136197A1 (ja)
WO (1) WO2016136197A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3457876B1 (en) 2016-05-20 2023-07-05 Nicoventures Trading Limited Filter for aerosol generating device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006318249A (ja) * 2005-05-13 2006-11-24 Ricoh Co Ltd 顧客の分類システム、顧客の分類方法および記録媒体
JP2009020781A (ja) * 2007-07-13 2009-01-29 Sony Corp ヒストグラム算出回路およびヒストグラム算出方法、並びにプログラム
JP2011514598A (ja) * 2008-03-28 2011-05-06 インテル コーポレイション 効率的な同期および並列リダクション演算を可能にするベクトル命令
JP2012059131A (ja) * 2010-09-10 2012-03-22 Ricoh Co Ltd Simd型マイクロプロセッサ及びその処理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006318249A (ja) * 2005-05-13 2006-11-24 Ricoh Co Ltd 顧客の分類システム、顧客の分類方法および記録媒体
JP2009020781A (ja) * 2007-07-13 2009-01-29 Sony Corp ヒストグラム算出回路およびヒストグラム算出方法、並びにプログラム
JP2011514598A (ja) * 2008-03-28 2011-05-06 インテル コーポレイション 効率的な同期および並列リダクション演算を可能にするベクトル命令
JP2012059131A (ja) * 2010-09-10 2012-03-22 Ricoh Co Ltd Simd型マイクロプロセッサ及びその処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3457876B1 (en) 2016-05-20 2023-07-05 Nicoventures Trading Limited Filter for aerosol generating device

Also Published As

Publication number Publication date
JPWO2016136197A1 (ja) 2017-12-14

Similar Documents

Publication Publication Date Title
US20200204501A1 (en) Data-plane stateful processing units in packet processing pipelines
US11693633B2 (en) Methods and apparatus to detect and annotate backedges in a dataflow graph
US10819633B2 (en) Data-plane stateful processing units in packet processing pipelines
US9916145B2 (en) Utilizing special purpose elements to implement a FSM
US9898266B2 (en) Loop vectorization methods and apparatus
US8434074B2 (en) Register allocation with SIMD architecture using write masks
EP3719633B1 (en) Methods and apparatus to insert buffers in a dataflow graph
US9740493B2 (en) System and method of loop vectorization by compressing indexes and data elements from iterations based on a control mask
US11709716B2 (en) Hardware offload support for an operating system offload interface using operation code verification
US10990073B2 (en) Program editing device, program editing method, and computer readable medium
US20160098278A1 (en) Instruction forwarding based on predication criteria
US10353591B2 (en) Fused shader programs
WO2016136197A1 (ja) データ処理装置、データ処理方法及び記録媒体
Haaß et al. Automatic custom instruction identification in memory streaming algorithms
US11221851B2 (en) Method executed by computing device, apparatus, device and computer-readable storage medium
US11106438B2 (en) Integration of automated complier dataflow optimizations
KR102248846B1 (ko) 데이터를 병렬 처리하는 방법 및 이를 위한 장치
US11829754B2 (en) Compile device, compile method, and non-transitory computer readable medium for increasing a speed of a program
US9891955B2 (en) Heterogenous multicore processor configuration framework
US20230385040A1 (en) Splitting vector processing loops with an unknown trip count
US10572233B2 (en) Vectorization device, vectorization method, and recording medium on which vectorization program is stored
JP2016189363A (ja) 半導体外観検査装置および画像処理装置
KR20200061280A (ko) 네트워크 스위치 병렬화를 위한 데이터 의존성 기반의 데이터 평면 정적 분석 방법 및 이를 이용한 병렬화 장치
JP2008293169A (ja) コード生成方法、計算機システム
JP2014225200A (ja) 半導体装置の設計装置、設計方法、設計プログラム

Legal Events

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

Ref document number: 16754949

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017501908

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16754949

Country of ref document: EP

Kind code of ref document: A1