A multi-thread processor, comprising: a functional unit (130, 131); and a controller, the multi-thread processor characterized by: a mode register, and the controller being configured to: control the mode register to store information about a thread mode corresponding to a task to be processed from among a plurality of preset thread modes, wherein each of the plurality of thread modes is based on the number and sizes of a plurality of threads concurrently processable in the functional unit, allocate the plurality of threads included in the task to the functional unit based on the information about the thread mode stored in the mode register and control the functional unit to process the plurality of threads, wherein the plurality of thread modes includes a mode of allocating, to the functional unit, threads of different data sizes less than a maximum size of processable data of the functional unit a functional unit (130, 131); and a controller, the multi-thread processor characterized by: a mode register, and the controller being configured to: control the mode register to store information about a thread mode corresponding to a task to be processed from among a plurality of preset thread modes, wherein each of the plurality of thread modes is based on the number and sizes of a plurality of threads concurrently processable in the functional unit, allocate the plurality of threads included in the task to the functional unit based on the information about the thread mode stored in the mode register and control the functional unit to process the plurality of threads, wherein the plurality of thread modes includes a mode of allocating, to the functional unit, threads of different data sizes less than a maximum size of processable data of the functional unit a mode register, and the controller being configured to: control the mode register to store information about a thread mode corresponding to a task to be processed from among a plurality of preset thread modes, wherein each of the plurality of thread modes is based on the number and sizes of a plurality of threads concurrently processable in the functional unit, allocate the plurality of threads included in the task to the functional unit based on the information about the thread mode stored in the mode register and control the functional unit to process the plurality of threads, wherein the plurality of thread modes includes a mode of allocating, to the functional unit, threads of different data sizes less than a maximum size of processable data of the functional unit control the mode register to store information about a thread mode corresponding to a task to be processed from among a plurality of preset thread modes, wherein each of the plurality of thread modes is based on the number and sizes of a plurality of threads concurrently processable in the functional unit, allocate the plurality of threads included in the task to the functional unit based on the information about the thread mode stored in the mode register and control the functional unit to process the plurality of threads, wherein the plurality of thread modes includes a mode of allocating, to the functional unit, threads of different data sizes less than a maximum size of processable data of the functional unit