Patent Publication Number: US-11645072-B2

Title: Semiconductor device

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This is a Continuation of U.S. application Ser. No. 16/520,761, filed Jul. 24, 2019, issued as U.S. Pat. No. 10,990,388 on Apr. 27, 2021, which is a Continuation of U.S. application Ser. No. 15/905,979, filed Feb. 27, 2018, issued as U.S. Pat. No. 10,409,593 on Sep. 10, 2019, which is a Divisional of U.S. application Ser. No. 15/717,989, filed Sep. 28, 2017, issued as U.S. Pat. No. 10,649,771 on May 12, 2020, and a claim for priority under 35 U.S.C. § 119 is made to Korean Patent Application No. 10-2017-0041748 filed on Mar. 31, 2017 in the Korean Intellectual Property Office, the entire contents of which are hereby incorporated by reference. 
    
    
     BACKGROUND 
     The present inventive concepts herein relate to a semiconductor device, and more particularly to a semiconductor device that is performs image processing, vision processing and neural network processing on image data. 
     Applications related to image processing, vision processing and neural network processing may be implemented for example on or as part of a system including instructions and memory structures specialized for matrix calculation. However, although applications related to image processing, vision processing and neural network processing may use similar methods of calculation, systems which carry out such processing in many cases include multiple processors that are isolated and implemented for independently carrying out the image processing, the vision processing and the neural network processing. This is because, despite the functional similarity among the applications related to image processing, vision processing, and neural network processing, details such as data processing rate, memory bandwidth, synchronization, among other things that are necessary for the respective applications are different. It is difficult to implement a single processor that is capable of integrated image processing, vision processing and neural network processing. Accordingly, for systems in which each of image processing, vision processing and neural network processing are required, there is a need to provide an integrated processing environment and method that can satisfy the respective requirements of the applications. 
     SUMMARY 
     Embodiments of the inventive concepts provide a semiconductor device which is capable of providing an integrated processing environment enabling efficient control and increased data utilization for image processing, vision processing and neural network processing. 
     Embodiments of the inventive concept provide a semiconductor device including a first processor having a first register, the first processor configured to perform region of interest (ROI) calculations using the first register; and a second processor having a second register, the second processor configured to perform arithmetic calculations using the second register. The first register is shared with the second processor, and the second register is shared by the first processor. 
     Embodiments of the inventive concepts provide a semiconductor device including a first processor having a first register, the first processor configured to perform region of interest (ROI) calculations using the first register; and a second processor having a second register, the second processor configured to perform arithmetic calculations using the second register. The first processor and the second processor share a same instruction set architecture (ISA). 
     Embodiments of the inventive concepts provide a semiconductor device including a load store unit configured to transmit image data to a memory device and to receive image data from the memory device; an internal register configured to store the received image data provided from the load store unit; a data arrange layer configured to rearrange the stored image data from the internal register into N number of data rows, wherein the data rows each have a plurality of lanes; and a plurality of arithmetic logic units (ALUs) having N number of ALU groups. The N number of ALU groups respectively configured to process the rearranged image data of the N number of data rows. 
     Embodiments of the inventive concepts provide a semiconductor device including a first processor having a first register, the first processor configured to perform region of interest (ROI) calculations using the first register; and a second processor having a second register, the second processor configured to perform arithmetic calculations using the second register. The first processor includes a data arrange layer configured to rearrange image data from the first register into N number of data rows, wherein the N number of data rows each have a plurality of lanes; and a plurality of arithmetic logic units (ALUs) having N number of ALU groups, the N number of ALU groups respectively configured to process the rearranged image data of the N number of data rows. The first register is shared with the second processor, and the second register is shared with the first processor. 
     Embodiments of the inventive concept provide a region of interest (ROI) calculation method of a semiconductor device. The semiconductor device includes an internal register configured to store image data, a data arrange layer configured to rearrange the stored image data into N number of data rows each having a plurality of lanes, and a plurality of arithmetic logic units (ALUs) having N ALU groups configured to process the N number of data rows. The method includes rearranging, by the data arrange layer, first data of the stored image data to provide rearranged first image data, the first data having n×n matrix size wherein n is a natural number; performing, by the ALUs, a first map calculation using the rearranged first image data to generate first output data; rearranging, by the data rearrange layer, third data of the stored image data to provide rearranged second image data, the third data and the first data included as parts of second data of the stored image data, the second data having (n+1)×(n+1) matrix size, and the third data not belonging to the first data; performing, by the ALUs, a second map calculation using the rearranged second image data to generate second output data; and performing, by the ALUs, a reduce calculation using the first and second output data to generate final image data. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The above and other objects, features and advantages of the inventive concepts will become more apparent to those of ordinary skill in the art by describing in detail exemplary embodiments thereof with reference to the accompanying drawings. 
         FIG.  1    illustrates a schematic view explanatory of a semiconductor device according to an embodiment of the inventive concepts. 
         FIG.  2    illustrates a schematic view explanatory of a first processor of a semiconductor device according to an embodiment of the inventive concepts. 
         FIG.  3    illustrates a view explanatory of a second processor of a semiconductor device according to an embodiment of the inventive concepts. 
         FIG.  4    illustrates a schematic view explanatory of architecture of a semiconductor device according to an embodiment of the inventive concepts. 
         FIGS.  5 A,  5 B,  5 C and  5 D  illustrate schematic views explanatory of the structure of registers of a semiconductor device according to an embodiment of the inventive concepts. 
         FIG.  6    illustrates a schematic view explanatory of an implementation in which data is stored in a semiconductor device according to an embodiment of the inventive concepts. 
         FIG.  7    illustrates a schematic view explanatory of an implementation in which data is stored in a semiconductor device according to another embodiment of the inventive concepts. 
         FIG.  8 A  illustrates a schematic view explanatory of data patterns for region of interest (ROI) calculation of matrices of varying sizes. 
         FIGS.  8 B and  8 C  illustrate schematic views explanatory of data patterns for ROI calculation according to an embodiment of the inventive concepts. 
         FIGS.  8 D,  8 E,  8 F and  8 G  illustrate schematic views explanatory of data patterns for ROI calculation according to another embodiment of the inventive concepts. 
         FIG.  8 H  illustrates a schematic view explanatory of a shiftup calculation of a semiconductor device according to an embodiment of the inventive concepts. 
         FIG.  9    illustrates a flowchart explanatory of an exemplary operation in which Harris corner detection is performed using a semiconductor device according to various embodiments of the inventive concepts. 
         FIG.  10    illustrates a view explanatory of an implementation of instructions for efficiently processing matrix calculations used in an application associated with vision processing and neural network processing, supported by a semiconductor device according to an embodiment of the inventive concepts. 
         FIGS.  11 A and  11 B  illustrate views explanatory of an example of actual assembly instructions for convolution calculation of a 5×5 matrix in  FIG.  8 D . 
         FIG.  12    illustrates a flowchart explanatory of an exemplary region of interest (ROI) calculation using a semiconductor device according to an embodiment of the inventive concepts. 
     
    
    
     DETAILED DESCRIPTION OF EMBODIMENTS 
     As is traditional in the field of the inventive concepts, embodiments may be described and illustrated in terms of blocks which carry out a described function or functions. These blocks, which may be referred to herein as units or modules or the like, are physically implemented by analog and/or digital circuits such as logic gates, integrated circuits, microprocessors, microcontrollers, memory circuits, passive electronic components, active electronic components, optical components, hardwired circuits and the like, and may optionally be driven by firmware and/or software. The circuits may, for example, be embodied in one or more semiconductor chips, or on substrate supports such as printed circuit boards and the like. The circuits constituting a block may be implemented by dedicated hardware, or by a processor (e.g., one or more programmed microprocessors and associated circuitry), or by a combination of dedicated hardware to perform some functions of the block and a processor to perform other functions of the block. Each block of the embodiments may be physically separated into two or more interacting and discrete blocks without departing from the scope of the inventive concepts. Likewise, the blocks of the embodiments may be physically combined into more complex blocks without departing from the scope of the inventive concepts. 
       FIG.  1    illustrates a schematic view explanatory of a semiconductor device according to an embodiment of the inventive concepts. Referring to  FIG.  1   , the semiconductor device  1  includes a first processor  100 , a second processor  200 , a controller  300  and a memory bus  400 . Controller  300  controls overall operation of the first processor  100 , the second processor  200  and the memory bus  400 . The memory bus  400  may be connected to a memory device  500 . In some embodiments the memory device  500  may be disposed separately of the semiconductor device  1  including the controller  300 , the first processor  100 , the second processor  200  and the memory bus  400 . In other embodiments the memory device  500  may be disposed as part of the semiconductor device  1 . 
     The first processor  100  may be a processor specialized for region of interest (ROI) calculations mainly used in image processing, vision processing and neural network processing. For example, the first processor  100  may perform one-dimensional filter calculations, two-dimensional filter calculations, census transform calculations, min/max filter calculations, sum of absolute difference (SAD) calculations, sum of squared difference (SSD) calculations, non maximum suppression (NMS) calculations, matrix multiplication calculations or the like. 
     The first processor  100  may include first registers  112 ,  114  and  116 , and may perform ROI calculations using the first registers  112 ,  114  and  116 . In some exemplary embodiments, the first registers may include at least one of an image register (IR)  112 , a coefficient register (CR)  114 , and an output register (OR)  116 . 
     For example, the IR  112  may store image data inputted for processing at the first processor  100 , and the CR  114  may store a coefficient of a filter for calculation on the image data. Further, the OR  116  may store a result of calculating performed on the image data after processing at the first processor  100 . 
     The first processor  100  may further include data arrange module (DA)  190  which generates data patterns for processing at the first processor  100 . The data arrange module  190  may generate data patterns for efficient performance of the ROI calculations with respect to various sizes of matrices. 
     Specifically, in some exemplary embodiments, the data arrange module  190  may include an image data arranger (IDA)  192  which generates data patterns for efficient ROI calculations at the first processor  100 , by arranging the image data inputted for processing at the first processor  100  and stored in the IR  112 , for example. Further, the data arrange module  190  may include a coefficient data arranger (CDA)  194  which generates data patterns for efficient ROI calculations at the first processor  100 , by arranging the coefficient data of a filter stored in the CR  114  for calculation on the image data, for example. Specific explanation with respect to the data patterns generated by the data arrange module  190  will be described below with reference to  FIGS.  6  to  8 E . The first processor  100  may be a flexible convolution engine (FCE) unit. 
     The second processor  200  is a universal processor adapted for performing arithmetic calculations. In some exemplary embodiments, the second processor  200  may be implemented as a vector processor specialized for vector calculation processing including for example vector specialized instructions such as prediction calculations, vector permute calculations, vector bit manipulation calculations, butterfly calculations, sorting calculations, or the like. In some exemplary embodiments, the second processor  200  may adopt the structure of a single instruction multiple data (SIMD) architecture or a multi-slot very long instruction word (multi-slot VLIW) architecture. 
     The second processor  200  may include second registers  212  and  214 , and may perform arithmetic calculations using the second registers  212  and  214 . In some exemplary embodiments, the second registers may include at least one of a scalar register (SR)  212  and a vector register (VR)  214 . 
     For example, the SR  212  may be a register used in the scalar calculations of the second processor  200 , and the VR  214  may be a register used in the vector calculations of the second processor  200 . 
     In some exemplary embodiments, the first processor  100  and the second processor  200  may share the same instruction set architecture (ISA). Accordingly, the first processor  100  specialized for ROI calculations and the second processor  200  specialized for arithmetic calculations may be shared at the instruction level, thus facilitating control of the first processor  100  and the second processor  200 . 
     Meanwhile, in some exemplary embodiments, the first processor  100  and the second processor  200  may share registers. That is, the first registers  112 ,  114  and  116  of the first processor  100  may be shared with (i.e., used by) the second processor  200 , and the second registers  212  and  214  of the second processor  200  may be shared with (i.e., used by) the first processor  100 . Accordingly, the first processor  100  specialized for the ROI calculations and the second processor  200  specialized for the arithmetic calculations may share respective internal registers, which may in turn increase data utilization and decrease the number of accesses to memory. 
     In some exemplary embodiments, the first processor  100  and the second processor  200  may be implemented such that they are driven by separate or respective independent power supplies. Accordingly, power may be cut off to either of the first processor  100  and the second processor  200  not being used depending on specific operating situations. 
       FIG.  2    illustrates a schematic view explanatory of a first processor of a semiconductor device according to an embodiment of the inventive concepts. Referring to  FIG.  2   , the first processor  100  of the semiconductor device  1  (shown in  FIG.  1   ) includes an internal register  110 , a load store unit (LSU)  120 , a data arrange layer  130 , a map layer  140  and a reduce layer  150 . 
     The internal register  110  includes the IR  112 , the CR  114 , and the OR  116  described above with reference to  FIG.  1   . 
     The load store unit  120  may transmit and receive data to and from a memory device (such as memory device  500  shown in  FIG.  1   ). For example, the load store unit  120  may read the data stored in the memory device (not shown) through a memory bus  400  such as shown in  FIG.  1   . The load store unit  120  and the memory bus  400  may correspond to a memory hierarchy  105  to be described below with reference to  FIG.  4   . 
     In some exemplary embodiments, the load store unit  120  may simultaneously read 1024 bits of data. Meanwhile, in some exemplary embodiments, the load store unit  120  may simultaneously read 1024×n bits of data by supporting n number of ports (n is 2, 4, 8, and so on, for example). Because the load store unit  120  may simultaneously read data on a 1024 bit basis, the data arrange layer  130  to be described below may rearrange the data in an arrangement form in which one line is composed of 1024 bits according to single instruction multiple data (SIMD) architecture. 
     The data arrange layer  130  may correspond to an element illustrated as the data arrange module  190  in  FIG.  1   , and may rearrange the data for processing at the first processor  100 . Specifically, the data arrange layer  130  may generate data patterns for efficiently performing the ROI calculations with respect to various sizes of data (e.g., matrices) to be processed by the first processor  100 . According to a type of the data generated as the data pattern, the data arrange layer  130  may include sub-units respectively corresponding to elements illustrated as the IDA  192  and the CDA  194  in  FIG.  1   . 
     Specifically, the data arrange layer  130  may rearrange the data for processing at the first processor  100  in a form of a plurality of data rows each including a plurality of data according to SIMD architecture. For example, the data arrange layer  130  may rearrange image data in a form of a plurality of data rows each including a plurality of data according to SIMD architecture so that the first processor  100  efficiently performs the ROI calculations, while also rearranging coefficient data of a filter for calculation on the image data in a form of a plurality of data rows each including a plurality of data according to SIMD architecture. 
     Although only a single arithmetic logic unit (ALU)  160  is shown in  FIG.  2   , the first processor  100  may include a plurality of arithmetic logic units (ALUs)  160  which are arranged in parallel with respect to each other so as to correspond to each of a plurality of data rows. Each of the plurality of ALUs  160  may include a map layer  140  and a reduce layer  150 . The ALUs  160  may perform map calculations, reduce calculations or the like so as to process the data stored in each of a plurality of data rows in parallel using the map layer  140  and the reduce layer  150 . 
     By employing the structure of rearranging the data, efficient processing may be performed especially with respect to 3×3, 4×4, 5×5, 7×7, 8×8, 9×9, 11×11 matrices for example, which are often used in image processing, vision processing, and neural network processing. Specific explanation will be described below with reference to  FIGS.  4 ,  6  and  7   . 
       FIG.  3    illustrates a view explanatory of a second processor of a semiconductor device according to an embodiment of the inventive concepts. Referring to  FIG.  3   , the second processor  200  of semiconductor device  1  (shown in  FIG.  1   ) includes a fetch unit  220  and a decoder  230 . 
     The decoder  230  may decode instructions provided from the fetch unit  220 . In some exemplary embodiments, the instructions may be processed by four slots  240   a ,  240   b ,  240   c  and  240   d  according to the VLIW architecture, whereby the fetch unit  220  provides VLIW instructions to the decoder  230 . For example, when the instruction fetched by the fetch unit  220  is 128 bits, the decoder  230  may decode the fetched instruction into four instructions each being composed of 32 bits, and the four instructions may be respectively processed by the slots  240   a ,  240   b ,  240   c  and  240   d . That is, the fetch unit  220  may be configured to provide VLIW instructions to the decoder  230 , and the decoder  230  may be configured to decode the VLIW instructions into a plurality of instructions. 
     Although the embodiment illustrates that the fetched instruction is decoded into four instructions and processed by the four slots for convenience of explanation, the second processor  200  is not limited to processing at four slots. For example, the instructions may be implemented for processing at any number slots not less than 2. 
     In some exemplary embodiments, the four slots  240   a ,  240   b ,  240   c ,  240   d  may simultaneously perform all the instructions except for a control instruction performed at control unit (CT)  244   d . For efficiency of such parallel-processing, there may be arranged scalar functional units (SFU)  242   a ,  242   b  and  242   d , vector functional units (VFU)  244   a ,  244   b  and  244   c , and move units (MV)  246   a ,  246   b ,  246   c  and  246   d , in the four slots  240   a ,  240   b ,  240   c  and  240   d.    
     Specifically, the first slot  240   a  may include the SFU  242   a , the VFU  244   a  and the MV  246   a , and the second slot  240   b  may include the SFU  242   b , the VFU  244   b  and the MV  246   b . The third slot  240   c  may include a flexible convolution engine (FCE) unit  242   c , the VFU  244   c , and the MV  246   c , which correspond to processing of instructions using the first processor  100 . The fourth slot  240   d  may include the SFU  242   d , control unit (CT)  244   d  corresponding to a control instruction, and the MV  246   d.    
     In this example, the FCE unit  242   c  of the third slot  240   c  may correspond to the first processor  100 . Further, the slots other than the third slot  240   c , i.e., the first slot  240   a , the second slot  240   b  and the fourth slot  240   d  may correspond to the second processor  200 . For example, the instruction arranged in the FCE unit  242   c  of the third slot  240   c  may be executed by the first processor  100  and the instruction arranged in the fourth slot  240   d  may be executed by the second processor  200 . 
     Further, the first processor  100  and the second processor  200  may share each other&#39;s data using the MVs  246   a ,  246   b ,  246   c  and  246   d  included in each of the slots  240   a ,  240   b ,  240   c  and  240   d . Accordingly, work that may have been intended to be processed by the second processor  200  may instead be processed by the first processor  100  via the FCE unit  242   c  of the slot  240   c , if needed. Further, in this case, data may have been intended to be processed by the second processor  200  may be also shared with the first processor  100 . 
     A result of processing by the SFUs  242   a ,  242   b  and  242   d  may be stored in the SR  212  as described with respect to  FIG.  1   , and a result of processing by the VFUs  244   a ,  244   b  and  244   c  may be stored in the VR  214  as also described with respect to  FIG.  1   . Of course, the results stored in the SR  212  and the VR  214  may be used by at least one of the first processor  100  and the second processor  200  according to need. 
     It should be understood that the configuration illustrated in  FIG.  3    is merely one of various embodiments of the inventive concepts presented for convenient explanation, and the second processor  200  should not be limited to the embodiment as shown in  FIG.  2   . 
       FIG.  4    illustrates a schematic view explanatory of architecture of a semiconductor device according to an embodiment of the inventive concepts. Referring to  FIG.  4   , the architecture of the semiconductor device according to an embodiment of the inventive concepts may include a memory hierarchy  105 , a register file  110 , a data arrange layer  130 , a plurality of ALUs  160  and a controller  170  for controlling overall operation of these elements. 
     For example, the memory hierarchy  105  may provide (or include) a memory interface, a memory device (such as memory device  500  shown in  FIG.  1   ), the memory bus  400 , the load store unit  120  or the like, which are described above with reference to  FIGS.  1  and  2   . 
     The register file  110  may correspond to the internal register  110  including the IR  112 , the CR  114 , and the OR  116  which are described above with reference to  FIG.  2   . Further, the register file  110  may include an exemplary structure to be described below with reference to  FIGS.  5 A to  5 D . 
     The data arrange layer  130  may correspond to the data arrange layer  130  described above with reference to  FIG.  2   , and may generate data patterns for efficient performance of ROI calculations of various sizes of data (e.g., matrices) for processing at the first processor  100 . 
     A plurality of ALUs  160  may correspond to a plurality of ALUs  160  described above with reference to  FIG.  2   , may include the map layer  140  and the reduce layer  150 , and may perform the map calculation, the reduce calculation or the like. 
     The architecture of  FIG.  4    enables accurate flow control and complicated arithmetic calculations using the register file  110  that can be shared with a plurality of ALUs  160 , while also enabling patternizing of the data stored in the register file  110  using the data arrange layer  130 , thus enhancing reutilization of the input data. 
     For example, the data arrange layer  130  may generate data patterns so that the data for processing (specifically data for the ROI calculations) can be processed by a plurality of ALUs belonging to a first ALU group  160   a , a second ALU group  160   b , . . . , an eighth ALU group  160   c  and a ninth ALU group  160   d , respectively. The ALU groups  160   a ,  160   b ,  160   c  and  160   d  are illustrated as each including for example 64 ALUs, although in other embodiments of the inventive concept the ALU groups may include any other appropriate number of ALUs. Generating data patterns suitable for processing by the nine ALU groups  160   a ,  160   b ,  160   c  and  160   d  will be specifically described below with reference to  FIGS.  6  to  8 E . 
       FIGS.  5 A,  5 B,  5 C and  5 D  illustrate schematic views explanatory of the structure of registers of a semiconductor device according to an embodiment of the inventive concepts. 
     Referring to  FIG.  5 A , the image register (IR)  112  of the semiconductor device  1  shown in  FIG.  1    is provided to store input image data particularly for processing of the ROI calculations at the first processor  100 . It should be understood that IR  112  in this embodiment is characterized as an image register ‘IR’ because it is used to store input image data, but in other embodiments IR  112  may be named differently, depending on a specific implementation. 
     According to an embodiment of the inventive concepts, the IR  112  may be implemented to include 16 entries, for example. Further, the size of each of the entries IR[i] (where, i is an integer having a value of 0 to 15) may be implemented as 1024 bits, for example. 
     Among the entries, the entries IR[ 0 ] to IR[ 7 ] may be defined and used as the register file ISR 0  for supporting the image data size for various ROI calculations. Likewise, the entries IR[ 8 ] to IR[ 15 ] may be defined and used as the register file ISR 1  for supporting the image data size for various ROI calculations. 
     However, it should be understood that the definitions of the register file ISR 0  and the register file ISR 1  are not limited as described with respect to  FIG.  5 A , but they may be grouped and defined variably according to the size of processed data. That is, the register file ISR 0  and the register file ISR 1  may be defined to have different structure from that illustrated in  FIG.  5 A , in consideration of for example image data size, matrix calculation features, filter calculation features, or the like. 
     Next, referring to  FIG.  5 B , the coefficient register (CR)  114  of the semiconductor device  1  shown in  FIG.  1    is provided to store coefficients of a filter for calculation on the image data stored in the IR  112 . It should be understood that CR  114  in this embodiment is characterized as a coefficient register ‘CR’ because it is used to store coefficients, but in other embodiments CR  114  may be named differently depending on a specific implementation. 
     According to an embodiment of the inventive concepts, the CR  114  may be implemented to include 16 entries, for example. Further, the size of each of the entries CR[i] (where, i is an integer having a value of 0 to 15) may be implemented as 1024 bits, for example. 
     Among the entries, the entries CR[ 0 ] to CR[ 7 ] may be defined and used as the register file CSR 0  for supporting image data size for various ROI calculations, as in the case of the IR  112 . Likewise, the entries CR[ 8 ] to CR[ 15 ] may be defined and used as the register file CSR 1  for supporting the image data size for various ROI calculations. 
     However, it should be understood that the definitions of the register file CSR 0  and the register file CSR 1  are not limited as described with respect to  FIG.  5 B , but they may be grouped and defined variably according to size of processed data. That is, the register file CSR 0  and the register file CSR 1  may be defined to have different structure from that illustrated in  FIG.  5 B , in consideration of for example image data size, matrix calculation features, filter calculation features, or the like. 
     Next, referring to  FIG.  5 C , the output register (OR)  116  of the semiconductor device  1  shown in  FIG.  1    is provided to store a result of calculation from the processing of the image data at the first processor  100 . It should be understood that OR  116  in this embodiment is characterized as an output register ‘OR’ because it is used to store a result of calculations, but in other embodiments OR  116  may be named differently depending on a specific implementation. 
     According to an embodiment of the inventive concepts, the OR  116  may be implemented to include 16 entries, for example. The entries of OR  116  may include corresponding parts ORh[i] and ORh[i] as shown in  FIG.  5 C . The entries including the corresponding parts ORh[i] and ORh[i] may hereinafter be generally characterized as entries OR[i] (where, i is an integer having a value of 0 to 15). Further, the size of each of the entries OR[i] may be implemented as 2048 bits, for example. In an embodiment of the inventive concepts, a size of OR  116  may be an integer multiple of a size of the IR  112 . 
     In some exemplary embodiments of the inventive concepts, the OR  116  may be used as an input register of the data arrange layer  130  shown in  FIG.  4   . In this case, in order to reuse the result of calculation stored in the OR  116  efficiently, each entry OR[i] of the OR  116  may be divided into an upper part ORh[i] and a lower part ORh[i]. For example, an entry OR[ 0 ] may include the upper part ORh[ 0 ] having 1024 bits and the lower part ORl[ 0 ] having 1024 bits. Such division of each entry OR[i] into the upper part ORh[i] and the lower part ORh[i] may be implemented for compatibility with a W register to be described below with reference to  FIG.  5 D . The W register refers to respective single entries which store the result of integrating a corresponding entry included in the register file Ve and a corresponding entry included in the register file Vo, as illustrated in  FIG.  5 D . 
     By defining the entries of the OR  116  such that the entries have the same size as each of the entries of the IR  112  and the CR  114 , moving the data between the IR  112 , the CR  114  and the OR  116  may be achieved more easily and more conveniently. That is, the data may be moved conveniently with efficiency because entries of the OR  116  are compatible with entries of the IR  112  and entries of the CR  114 . 
     Among the entries, the entries OR[ 0 ] (including parts ORh[ 0 ] and ORl[ 0 ] as shown) to OR[ 7 ] (including parts ORh[ 7 ] and ORl[ 7 ] as shown) may be defined and used as the register file OSR 0  for supporting image data size for various ROI calculations, as in the case of the IR  112  and the CR  114 . Likewise, the entries OR[ 8 ] (including parts ORh[ 8 ] and ORl[ 8 ] as shown) to OR[ 15 ] (including parts ORh[ 15 ] and ORl[ 15 ] as shown) may be defined and used as the register file OSR 1  for supporting the image data size for various ROI calculations. 
     However, it should be understood that the definitions of the register file OSR 0  and the register file OSR 1  are not limited as described with respect to  FIG.  5 C , but they may be grouped and defined variably according to size of processed data. That is, the register file OSR 0  and the register file OSR 1  may be defined to have different structure from that illustrated in  FIG.  5 C , in consideration of for example image data size, matrix calculation features, filter calculation features, or the like. 
     Further, the size of the entries for the IR  112 , the CR  114  and the OR  116 , and/or the number of the entries constituting the register files, are not limited to the embodiments described above, and the size and/or the number of the entries may be varied according to the specific purpose of an implementation. 
     The IR  112 , the CR  114  and the OR  116  in  FIGS.  5 A to  5 C  are individually described based on the usage thereof. However, in some exemplary embodiments, register virtualization may be implemented so that from the perspective of the first processor  100 , it may be perceived as if there exists four sets of registers having a same size. 
     Referring now to  FIG.  5 D , the vector register (VR)  214  is provided to store data for performing vector calculations at the second processor  200 . 
     According to an embodiment, the VR  214  may be implemented to include 16 entries. For example, the 16 entries as shown in  FIG.  5 D  may include entries Ve[ 0 ], Ve[ 2 ], Ve[ 4 ], Ve[ 6 ], Ve[ 8 ], Ve[ 10 ], Ve[ 12 ] and Ve[ 14 ] which may hereinafter be generally characterized as entries Ve[i] wherein i is an even integer between 0 and 15 (i.e., even-numbered indices), and entries Vo[ 1 ], Vo[ 3 ], Vo[ 5 ], Vo[ 7 ], Vo[ 9 ], Vo[ 11 ], Vo[ 13 ] and Vo[ 15 ] which may hereinafter be generally characterized as entries Vo[i] wherein i is an odd integer between 0 and 15 (i.e., odd-numbered indices). Further, the size of each of the entries Ve[i] and Vo[i] may be implemented as 1024 bits, for example. 
     According to an embodiment, 8 entries Ve[i] corresponding to even-numbered indices among the 16 entries may be defined as the register file Ve, and 8 entries Vo[i] corresponding to odd-numbered indices among the 16 entries may be defined as the register file Vo. Further, the W register may be implemented, which includes respective single entries which may hereinafter be generally characterized as entries W[i] (i is an integer having a value of 0 to 7) and which store the result of integrating a corresponding entry included in the register file Ve and a corresponding entry included in the register file Vo. 
     For example, one entry W[ 0 ] storing the result of integrating an entry Ve[ 0 ] and an entry Vo[ 1 ] may be defined, and one entry W[ 1 ] storing the result of integrating an entry Ve[ 2 ] and an entry Vo[ 3 ] may be defined, whereby the W register as shown including a total of 8 entries W[i] is established. 
     The size of the entries for the VR  214 , and/or the number of the entries constituting the register file are not limited to the embodiments described above, and the size and/or the number of the entries may be varied according to the specific purpose of an implementation. 
     As in the case of the IR  112 , the CR  114  and the OR  116  described above in  FIGS.  5 A to  5 C , for the VR  214 , register virtualization may be implemented so that, from the perspective of the first processor  100  and the second processor  200 , it may be perceived as if there exists five sets of registers having a same size. 
     In the above case, the data stored in the virtual register may move between the IR  112 , the CR  114 , the OR  116  and the VR  214  through the MVs  246   a ,  246   b ,  246   c  and  246   d  illustrated in  FIG.  3   . Accordingly, the first processor  100  and the second processor  200  may share the data or reuse the stored data using the virtual register, rather than accessing or using a memory device (such as memory device  500  shown in  FIG.  1   ). 
       FIG.  6    illustrates a schematic view explanatory of an implementation in which data is stored in a semiconductor device according to an embodiment of the inventive concepts. Referring to  FIG.  6   , the data rearranged by the data arrange layer  130  may constitute 9 parallel-arranged data rows (DATA  1  to DATA  9 ). 
     Each of the data rows (DATA  1  to DATA  9 ) may have a plurality of lanes in a vertical direction. For example, a first element A 1  of the first data row DATA  1 , a first element B 1  of the second data row DATA  2 , a first element C 1  of the third data row DATA 3 , . . . , and a first element D 1  of the ninth data row DATA  9  may form a first lane, and a second element A 2  of the first data row DATA  1 , a second element B 2  of the second data row DATA  2 , a second element C 3  of the third data row DATA 3 , . . . , and a second element D 2  of the ninth data row DATA  9  may form a second lane. In  FIG.  6   , the data rearranged by the data arrange layer  130  includes 64 lanes. 
     According to an embodiment, the width of each lane may be 16 bits. That is, the first element A 1  of the first data row DATA  1  may be stored in 16 bit data form. In this case, the first data row DATA  1  may include 64 elements A 1 , A 2 , A 3 , . . . , and A 64  each having 16 bit data form. Similarly, the second data row DATA  2  may include 64 elements B 1 , B 2 , B 3 , . . . , and B 64  each having 16 bit data form, the third data row DATA  3  may include 64 elements C 1 , C 2 , C 3 , . . . , and C 64  each having 16 bit data form, . . . , and the ninth data row DATA  9  may include 64 elements D 1 , D 2 , D 3 , . . . , and D 64  each having 16 bit data form 
     The first processor  100  may include a plurality of ALUs for processing the data rearranged by the data arrange layer  130 , and the plurality of ALUs may include 9×64 ALUs respectively corresponding to 9 data rows (DATA  1  to DATA  9 ). For example, the first ALU group  160   a  of  FIG.  4    may correspond to the first data row DATA  1 , and the second ALU group  160   b  of  FIG.  4    may correspond to the second data row DATA  2 . Further, the eighth ALU group  160   c  of  FIG.  4    may correspond to an eighth data row DATA  8  (not shown), and the ninth ALU group  160   d  of  FIG.  4    may correspond to the ninth data row DATA  9 . 
     Further, 64 ALUs of the first ALU group  160   a  (i.e., ALU 1 _ 1  to ALU 1 _ 64 ) may parallel-process the data corresponding to 64 elements of the first data row DATA  1 , respectively, and 64 ALUs of the second ALU group  160   b  (i.e., ALU 2 _ 1  to ALU 2 _ 64 ) may parallel-process the data corresponding to 64 elements of the second data row DATA  2 , respectively. Further, 64 ALUs of the eighth ALU group  160   c  (i.e., ALU 8 _ 1  to ALU 8 _ 64 ) may parallel-process the data corresponding to 64 elements of the eighth data row DATA  8 , and 64 ALUs of the ninth ALU group  160   d  may parallel-process the data corresponding to 64 elements of the ninth data row DATA  9 , respectively. Therefore, in an embodiment as described with respect to  FIGS.  4  and  6   , the semiconductor device  1  includes N number of data rows each having M number of lanes, and N number of ALU groups respectively processing the N number of data rows, wherein the N number of ALU groups each respectively include M number of ALUs. In the embodiment of  FIGS.  4  and  6   , N is 9 and M is 64. 
     According to various embodiments, the number of data rows in the data rearranged by the data arrange layer  130  is not limited to be 9, and may be varied according to the specific purpose of an implementation. Also, the number of a plurality of ALUs respectively corresponding to a plurality of data rows may be varied according to the purpose of an implementation. 
     Meanwhile, as described below with reference to  FIG.  8 A , when the number of the data rows of the data rearranged by the data arrange layer  130  is 9, efficiency may be enhanced especially in the ROI calculations of various sizes of matrices. 
       FIG.  7    illustrates a schematic view explanatory of an implementation in which data is stored in a semiconductor device according to another embodiment of the inventive concepts. 
     Referring to  FIG.  7   , the data rearranged by the data arrange layer  130  may constitute 9 parallel-arranged data rows (DATA  1  to DATA  9 ). 
     In referring to  FIG.  7   , only the differences between the implementation of  FIG.  6    and the implementation of  FIG.  7    are described. In  FIG.  7    each of the data rows (DATA  1  to DATA  9 ) may have a plurality of lanes in a vertical direction and the width of each lane may be 8 bits according to an embodiment. That is, the first element A 1  of the first data row DATA  1  may be stored in an 8 bit data form. In this case, the first data row DATA  1  may include 128 elements each having an 8 bit data form. 
     The first processor  100  may include a plurality of ALUs for processing the data rearranged by the data arrange layer  130 , and a plurality of ALUs may include 9×128 ALUs respectively corresponding to 9 data rows (DATA  1  to DATA  9 ). 
     According to various embodiments, the number of data rows in the data rearranged by the data arrange layer  130  is not limited to be 9, and may be varied according to the specific purpose of an implementation. Also, the number of a plurality of ALUs respectively corresponding to a plurality of data rows may be varied according to the specific purpose of an implementation. 
     As described below with reference to  FIG.  8 A , when the number of the data rows of the data rearranged by the data arrange layer  130  is 9, efficiency may be enhanced especially in ROI calculations of matrices of various sizes. 
       FIG.  8 A  illustrates a schematic view provided explanatory of data patterns for ROI calculations with respect to matrices of various sizes,  FIGS.  8 B and  8 C  illustrate schematic views explanatory of data patterns for ROI calculations according to an embodiment of the inventive concepts, and  FIGS.  8 D,  8 E,  8 F and  8 G  illustrate schematic views explanatory of data patterns for ROI calculations according to another embodiment of the inventive concept. Referring to  FIGS.  8 A to  8 G , the patterns of using the data rearranged by the data arrange layer  130  may be determined according to a matrix size most frequently used in applications associated with image processing, vision processing, and neural network processing. 
     Referring to  FIG.  8 A , matrix M 1  includes image data that is required for an image size 3×3 to be executed by ROI calculations, and matrix M 2  includes image data that is required for an image size 4×4 to be executed by ROI calculations. Matrix M 3  includes image data required for an image size 5×5 to be executed by ROI calculations, matrix M 4  includes image data required for an image size 7×7 to be executed by ROI calculations, and matrix M 5  includes image data required for an image size 8×8 to be executed by ROI calculations. Likewise, matrix M 6  includes image data required for an image size 9×9 to be executed by ROI calculations, and matrix M 7  includes image data required for an image size 11×11 to be executed by ROI calculations. For example, it is assumed that the image data illustrated in  FIG.  8 A  is stored in a memory device (such as memory device  500  shown in  FIG.  1   ). As illustrated in  FIG.  8 B , when ROI calculations are executed for 3×3 size matrices (e.g., M 11 , M 12  and M 13 ), the first processor  100  may read the image data of  FIG.  8 A  stored in the memory device and store it in the IR  112 . 
     In this case, referring to  FIG.  8 C , image data (N 11  to N 19 ) corresponding to the matrix M 11  may be arranged at a first lane in a vertical direction of the 9 parallel-arranged data rows (DATA  1  to DATA  9 ). Next, image data N 12 , N 13 , N 21 , N 15 , N 16 , N 22 , N 18 , N 19  and N 23  corresponding to the matrix M 12  may be arranged at a second lane. Next, image data N 13 , N 21 , N 31 , N 16 , N 22 , N 32 , N 19 , N 23  and N 33  corresponding to the matrix M 13  may be arranged at a third lane. 
     Accordingly, a plurality of ALUs (ALU 1 _ 1  to ALU 9 _ 1 ) such as shown in  FIG.  4    may perform ROI calculations on the first lane including the image data corresponding to the matrix M 11 , and a plurality of ALUs (ALU 1 _ 2  to ALU 9 _ 2 ) may perform an ROI calculation on the second lane including the image data corresponding to the matrix M 12 . Further, a plurality of ALUs (ALU 1 _ 3  to ALU 9 _ 3 ) may perform an ROI calculation on the third lane including the image data corresponding to the matrix M 13 . 
     As the image data is processed as described in the above embodiment, when it is assumed that the matrix to be executed by the ROI calculations has 3×3 size, the first processor  100  may perform matrix calculation with respect to three image lines per one cycle. In this example, use of a plurality of ALUs for the parallel-processing of 9 data rows (DATA  1  to DATA  9 ) provides 100% efficiency. 
     As illustrated in  FIG.  8 D , when ROI calculations are executed for 5×5 size matrices (e.g., M 31  and M 32 ), the first processor  100  may read the image data of  FIG.  8 A  stored in the memory device and store it in the IR  112 . 
     In this case, referring to  FIGS.  8 E,  8 F and  8 G , 5×5 matrix calculation is performed for three cycles in total. During a first cycle as shown in  FIG.  8 E , calculation is performed with the same method used for a 3×3 matrix as described with respect to  FIGS.  8 B and  8 C . During a second cycle as shown in  FIG.  8 F , the image data (N 21 , N 22 , N 23 , N 27 , N 26 , N 25  and N 24 ) in the matrix M 2  of  FIG.  8 A  excluding the image data for the matrix M 1  of  FIG.  8 A , are allocated to the ALUs (ALU 1 _ 1  to ALU 9 _ 1 ) or to the first vector lane, and the data of the image data N 31 , N 32 , N 33 , N 34 , N 27 , N 26  and N 25  are allocated to the ALUs (ALU 1 _ 2  to ALU 9 _ 2 ) or to the second vector lane. Data are continuously allocated to the lanes using the same method during the second cycle. During a third cycle as shown in  FIG.  8 G , the image data (N 31 , N 32 , N 33 , N 34 , N 37 , N 36 , N 35 , N 29  and N 28 ) in the matrix M 3  excluding the image data for the matrix M 2  are allocated to the ALUs (ALU 1 _ 1  to ALU 9 _ 1 ) or to the first vector lane, and allocation and processing continues in the same manner for the subsequent lanes. 
     As the image data are processed in the manner described according to the above embodiment, when it is assumed that the matrix to be executed by ROI calculations has 5×5 size, the first processor  100  skips the calculation for only the two data (as indicated by the entries dm in  FIG.  8 F ) during the second cycle, and accordingly, 93% efficiency of using the ALUs is achieved ((64 lanes×9 columns×3 cycles−64 lanes×2 columns)×100/64×9×3). 
     In the same context, when it is assumed that the matrix to be executed by ROI calculation has 4×4 size, the first processor  100  performs the matrix calculation over two cycles, while skipping the calculation for only two data, in which case 89% efficiency of using the ALUs is achieved. 
     When it is assumed that the matrix to be executed by an ROI calculation has 7×7 size, the first processor  100  performs the matrix calculation over six cycles, while skipping the calculation for only five data, in which case 91% efficiency of using the ALUs is achieved. 
     When it is assumed that the matrix to be executed by an ROI calculation has 8×8 size, the first processor  100  performs the matrix calculation over eight cycles, while skipping the calculation for only eight data, in which case 89% efficiency of using the ALUs is achieved. 
     When it is assumed that the matrix to be executed by an ROI calculation has 9×9 size, the first processor  100  performs 9×9 matrix calculation over the nine cycles for nine image lines, while using all the data, in which case 100% efficiency of using the ALUs is achieved. 
     When it is assumed that the matrix to be executed by an ROI calculation has 11×11 size, the first processor  100  performs the matrix calculation over the 14 cycles, while skipping the calculation for only eight data from the 11 image lines, in which case 96% efficiency of using the ALUs is achieved. 
     As described above with reference to  FIGS.  8 A to  8 G , when the number of the data rows of the data rearranged by the data arrange layer  130  is 9, 90% efficiency of using ALUs of the first processor  100  can be maintained, when performing the ROI calculation with respect to various sizes of the matrix including 3×3, 4×4, 5×5, 7×7, 8×8, 9×9, 11×11 sizes which are most frequently used matrix sizes in applications associated with image processing, vision processing and neural network processing. 
     In some exemplary embodiments, when a size of the calculated matrix increases, data arrangement is performed only on a portion which is increased from the previous matrix size. For example, to perform a second calculation for the matrix M 2  shown in  FIG.  8 A , after performing a first calculation for the matrix M 1 , additional data arrangement may be performed only with respect to the image data (N 21 , N 22 , N 23 , N 27 , N 26 , N 25  and N 24 ) required for the second calculation. 
     In some exemplary embodiments, a plurality of ALUs may perform the calculation using the image data stored in the IR  112  and filter coefficients stored in the CR  114 , and store a result in the OR  116 . 
       FIG.  8 H  illustrates a schematic view explanatory of a shiftup calculation of a semiconductor device according to an embodiment of the inventive concepts. 
     Referring to  FIG.  8 H , a shiftup calculation performed by the semiconductor device according to an embodiment of the inventive concepts may control a method for reading the data stored in the IR  112  in order to efficiently process the image data previously stored in the IR  112  from the memory device. 
     To specifically explain the shiftup calculation, when ROI calculations are necessary for 5×5 matrices M 31  and M 32  such as shown in  FIG.  8 D , all the image data corresponding to the first region R 1  of  FIG.  8 H  may have already been processed, and when it becomes necessary to process the image data corresponding to the second region R 2  of  FIG.  8 H , only the sixth line of data (i.e., image data N 38 , N 39 , N 46 , N 47 , N 48 , N 49 , N 56 , N 76 , N 96 , NA 6  and NB 6 ) which are additionally required are read from the memory to the IR  112 . 
     For example, when the data of the first to fifth lines corresponding to the first region R 1  are respectively stored in the IR[ 0 ] to the IR[ 4 ] of  FIG.  5 A , the data of the sixth line may be stored in the IR[ 5 ] in advance. By doing so, the ROI calculations may be continuously performed for the 5×5 matrices M 31  and M 32  with respect to the second to sixth lines only by adjusting the read region of the IR  112  to the second region R 2  while avoiding additional memory access. 
       FIG.  9    illustrates a flowchart explanatory of an exemplary operation in which Harris corner detection is performed using a semiconductor device according to various embodiments of the inventive concept. Harris corner detection should be understood as well known to a person skilled in the art, and therefore will not be specifically explained here. 
     Referring to  FIG.  9   , an embodiment of the Harris corner detection includes inputting an image, at S 901 . For example, an image for corner detection is input (e.g., from a memory device such as memory device  500  shown in  FIG.  1   ) to the first processor  100  via the memory bus  400  of  FIG.  1   . 
     At S 903 , a derivative value DV is calculated. For example, the first processor  100  may calculate a derivative value DV with respect to pixels along X and Y axes, for example, from the image data rearranged by the data arrange layer  130 , according to need. In this example, derivatives may be easily obtained by applying a one-dimensional filter such as a Sobel filter, by multiplying each image by a derivative coefficient in the x axis direction (Ix=Gx*I) and the y axis direction (Iy=Gy*I). The inputted images are stored in the IR  112 , the derivative coefficients (Gx and Gy) are stored in the CR  114 , and the results of multiplication (Ix and Iy) are stored in the OR  116 . 
     Next, at S 905 , the derivative product DP is calculated. For example, according to need, the first processor  100  may calculate the derivative product DP with respect to every pixel from the derivative values DV rearranged by the data arrange layer  130 . Based on a result of S 903 , the x axis and y axis results (i.e., derivative values) are squared (Ix 2 , Iy 2 ), and the x axis and y axis squared results are multiplied by each other (Ixy=Ix 2 *Iy 2 ), thus providing the DP value. In this example, by reusing the results of S 903  stored in the OR  116 , the x axis and y axis results of calculations are used as the vector ALU inputs using the IDA  192 /CDA  194  pattern of the OR  116 , and the result of the calculation is stored again in the OR  116 . 
     Next, at S 907 , the sum of squared difference (SSD) is calculated. For example, the first processor  100  calculates the SSD using the derivative product DP. Similar to the operation at S 905 , the SSD calculation (Sx 2 =Gx*Ix 2 , Sy 2 =Gy*Iy 2 , Sxy=Gxy*Ix*Iy) also processes the data stored in OR  116  as the result of the operation in S 905  and the IDA  192  allocates the data to the vector functional units (VFUs)  244   a ,  244   b  and  244   c  such as shown in  FIG.  3   , multiplies the derivative coefficient stored in the CR  114 , and stores the result in the OR  116  again. 
     At S 909 , the key point matrix is defined. Incidentally, because determining the key point matrix is difficult to perform with only the first processor  100  specialized for the ROI processing, it may be performed through the second processor  200 . That is, the second processor  200  defines the key point matrix. 
     In this case, resultant values stored in the OR  116  of the first processor  100  may be shared with the second processor  200  and reused. For example, resultant values stored in the OR  116  of the first processor  100  may be moved to the VR  214  of the second processor  200  using the MVs  246   a ,  246   b ,  246   c  and  246   d  of  FIG.  3   . Alternatively, the vector functional units (VFUs)  244   a ,  244   b  and  244   c  that can be directly inputted with the values of the OR  116  may use the result at the first processor  100 , without going through the MVs  246   a ,  246   b ,  246   c  and  246   d.    
     Next, at S 911 , a response function (R=Det(H)−k(Trace(H) 2 )) is calculated. For example, the second processor  200  calculates a response function using resultant values of S 909  stored in the VR  214 . At this stage, because only the second processor  200  is used, intermediate and final results of all the calculations are stored in the VR  214 . 
     Next, at S 913 , a key point is detected by performing a non maximum suppression (NMS) calculation. The operation at S 913  may be processed by the first processor  100  again. 
     In this case, resultant values stored in the VR  214  of the first processor  200  may be shared with the first processor  100  and reused. For example, resultant values stored in the VR  214  of the second processor  200  may be moved to the OR  116  of the first processor  100  using the MVs  246   a ,  246   b ,  246   c  and  246   d  of  FIG.  3   . Alternatively, the resultant values may be allocated to the VFUs  244   a ,  244   b  and  244   c  from the VR  214  directly through the IDA  192 /CDA  194 . 
     Since only the registers of the first processor  100  (i.e., IR  112 , CR  114  and ORl 16 ) and the registers of the second processor  200  (i.e., SR  212  and VR  214 ) are used until the corner detection work of the input image is finished in the manner described above, there is no need to access the memory device. Accordingly, cost such as overhead and power consumption expended in accessing the memory device may be considerably reduced. 
       FIG.  10    illustrates a view explanatory of an implementation of instructions for efficiently processing matrix calculations used in an application associated with vision processing and neural network processing, supported by a semiconductor device according to an embodiment of the inventive concept. 
     Referring to  FIG.  10   , the first processor  100  supports instructions for efficiently processing matrix calculations used in applications associated with vision processing and neural network processing. The instructions may be divided mainly into three types of instructions (or stages). 
     The MAP instructions are instructions for calculating data using a plurality of ALUs  160 , for example, and support calculations identified by opcodes such as Add, Sub, Abs, AbsDiff, Cmp, Mul, Sqr, or the like. The MAP instructions have the OR  116  of the first processor  100  as a target register, and use the data pattern generated from at least one of the IDA  192  and the CDA  194  as an operand. Further, a field may be additionally (optionally) included, indicating whether a unit of the processed data is 8 bits or 16 bits. 
     The REDUCE instructions are instructions for tree calculation, for example, and support calculations identified by opcodes such as Add tree, minimum tree, maximum tree, or the like. The REDUCE instructions have at least one of the OR  116  of the first processor  100  and the VR  214  of the second processor  200  as a target register, and use the data pattern generated from at least one of the IDA  192  and the CDA  194 . Further, a field may be additionally included, indicating whether a unit of the processed data is 8 bits or 16 bits. 
     MAP_REDUCE instructions are instructions combining the map calculation and the reduce calculation. MAP_REDUCE instructions have at least one of the OR  116  of the first processor  100  and the VR  214  of the second processor  200  as a target register, and use the data pattern generated from at least one of the IDA  192  and the CDA  194 . Further, a field may be additionally included, indicating whether a unit of the processed data is 8 bits or 16 bits. 
     According to the various embodiments described above, the first processor  100  and the second processor  200  share the same ISA so that the first processor  100  specialized for ROI calculations and the second processor  200  specialized for arithmetic calculations are shared at an instruction level, thus facilitating control. Further, by sharing the registers, the first processor  100  and the second processor  200  may increase data utilization and decrease the number of memory access. Further, by using data patterns for efficiently performing the ROI calculations with respect to various sizes of data (e.g., matrix) for processing at the first processor  100 , efficient processing may be possibly performed specifically with respect to 3×3, 4×4, 5×5, 7×7, 8×8, 9×9, 11×11 matrices which are frequently used matrix sizes in image processing, vision processing and neural network processing. 
       FIGS.  11 A and  11 B  illustrates views explanatory of an example of actual assembly instructions for convolution calculation of a 5×5 matrix in  FIG.  8 D . 
     Referring to  FIGS.  10  and  11 A , in MAPMUL_ReduceAcc16(IDA_Conv3(IR), CDA_Conv3(CR, w16)) instructions at a first line (i.e., a first assembly instruction), MAPMUL_ReduceAcc16 indicates instructions to be performed at MAP stage and reduce stage according to stage, target register, operator  1 , operator  2  and Opcode of  FIG.  10   . Accordingly, with respect to 16 bit data, Mul instructions are performed at the MAP stage and add tree is performed at the reduce stage, in which Acc instructions are used because the previous result of addition is accumulated. An operator, “.”, of each line is an operator for distinguishing instructions to be processed in each of the slots  240   a ,  240   b ,  240   c  and  240   d  of the first processor  100  and the second processor  200 . Accordingly, calculating operations are performed in the first processor  100  and the second processor  200  using instruction sets of SIMD and multi slot VLIW structures. For example, MAPMul_ReducedAcc16 is allocated to the slot where the first processor  100  is positioned and the ShUpReg=1 instruction is allocated to the slot corresponding to the second processor  200 . The instructions ‘ShUpReg’ is a shiftup register instruction for changing a register data region (register window) used in a calculation, as described above in  FIG.  8 F , and may be implemented to be performed by the first processor  100  or the second processor  200 . The other instructions except for MAPMul_ReducedAcc16 may be performed in the slot corresponding to the second processor  200 , but are not be limited hereto. Depending on methods of implementation, the other instructions may be performed also in the first processor  100 . 
     In this example, an input value is received from a virtual register, IDA_Conv3(IR) and CDA_Conv3(CR, w16). Conv3 indicates that the data pattern of 3×3 matrix (i.e., n×n matrix) in  FIG.  8 B  is inputted from the IR  112  and the CR  114 . When the first assembly instruction is performed, the data of the matrix M 11  of  FIG.  8 B  is stored at a first lane, the data of the matrix M 12  is stored at a second lane, the data of the matrix M 13  is stored at a third lane, and the other corresponding data are likewise stored in the following lanes. 
     The second assembly instruction, MAPMUL_reduceAcc16(IDA_Conv4(IR), CDA_Conv4(CR, w16)), is calculated with the same method while varying only the input data pattern. In this example, as described above with respect to the 5×5 matrix calculation, the rest of the data of the 4×4 matrix (i.e., (n+1)×(n+1) matrix) other than data of the 3×3 matrix (e.g., image data of the region of D 2  region excluding D 1  region in  FIG.  11 B ) are inputted to each lane of the VFUs, and a corresponding result is stored in the OR  116  together with the 3×3 result according to the add tree. Such result indicates a result of convolution calculation with respect to 4×4 size. 
     The final MAPMUL_ReduceAcc16(IDA_Conv5(IR), CDA_Conv5(CR, w16)) performs the same calculation as the previous calculation with respect to the rest of the data of the 5×5 matrix other than data of the 4×4 matrix. 
     When these three instructions are performed, a result of the convolution filter is stored in the OR  116  with respect to the 5×5 matrix of the inputted 5 rows. Later when the calculation window goes down for one line and begins the 5×5 matrix calculation corresponding to the first to fifth rows again, only the fifth row is newly inputted for this purpose, while the previously-used first to fourth rows are reused with the register shiftup instruction as described above with reference to  FIG.  8 H . 
     According to an embodiment, data once inputted will not be read again from the memory device so that the frequency of accessing the memory device can be reduced, and performance and power efficiency can be maximized. 
       FIG.  12    illustrates a flowchart explanatory of an exemplary region of interest (ROI) calculation using a semiconductor device according to an embodiment of the inventive concepts. 
     The ROI calculation may be performed using a semiconductor device such as semiconductor device  1  described with respect to  FIGS.  1 - 5 D , in accordance with features further described with respect  FIGS.  6 - 8 H,  10 ,  11 A and  11 B . The semiconductor device in this embodiment may include the internal register  110  configured to store image data provided from the memory device  500 ; the data arrange layer  130  configured to rearrange the stored image data into N number of data rows each having a plurality of lanes; and the plurality of arithmetic logic units (ALUs)  160  arranged into N ALU groups  160   a ,  160   b ,  160   c  and  160   d  configured to process the N number of data rows. 
     Referring to  FIG.  12   , at S 1201  the data arrange layer  130  is configured to rearrange first data of the stored image data in the internal register  110  to provide rearranged first image data. The first data may have n×n matrix size wherein n is a natural number. For example, the first data may be a 3×3 matrix, and may for example correspond to the image data of the D 1  region of  FIG.  11 B . 
     At S 1203  of  FIG.  12   , the ALUs  160  are configured to perform a first map calculation using the rearranged first image data to generate first output data. 
     At S 1205  of  FIG.  12   , the data arrange layer  130  is configured to rearrange third data of the stored image data in the internal register  110  to provide rearranged second image data. Here, the third data and the first data are included as parts of second data of the stored image data in the internal register  110 . For example, the second data may have (n+1)×(n+1) matrix size. For example, the second data may be a 4×4 matrix including data entries N 11 , N 12 , N 13 , N 21 , N 14 , N 15 , N 16 , N 22 , N 17 , N 18 , N 19 , N 23 , N 24 , N 25 , N 26  and N 27  shown in  FIG.  11 B . In this example, the third data may correspond to data entries N 21 , N 22 , N 23 , N 27 , N 26 , N 25  and N 24  of the D 2  region of  FIG.  11 B . Of further note with respect to this example, the third data of the D 2  region does not belong to the first data of the D 1  region. That is, the third data of the D 2  region are not included in the 3×3 matrix consisting of the first data of the D 1  region shown in  FIG.  11 B . 
     At S 1207  of  FIG.  12   , the ALUs  160  are configured to perform a second map calculation using the rearranged second image data to generate second output data. 
     At S 1209  of  FIG.  12   , the ALUs  160  are configured to perform a reduce calculation using the first and second output data to generate final image data. 
     While the present inventive concepts have been particularly shown and described with reference to exemplary embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the present inventive concepts as defined by the following claims. It is therefore desired that the present embodiments be considered in all respects as illustrative and not restrictive, reference being made to the appended claims rather than the foregoing description to indicate the scope of the inventive concepts.