A method for performing an operation of a convolutional layer in a convolutional neural network, characterized in comprising: reading unfolded feature data provided to the convolutional layer and an original convolution kernel of the convolutional layer from a dynamic random access memory, DRAM; folding the unfolded feature data in at least one dimension of width and height to generate folded feature data; pre-processing the folded feature data and the original convolution kernel; storing the pre-processed folded feature data into a static random-access memory, SRAM; folding the pre-processed original convolution kernel in the at least one dimension to generate one or more folded convolution kernels corresponding to the original convolution kernel; storing the one or more folded convolution kernels in the SRAM; and reading the pre-processed folded feature data and the one or more folded convolution kernels from the SRAM into a calculation unit for convolving the pre-processed folded feature data with the one or more folded convolution kernels, wherein said folding is splicing every N consecutive slices of the unfolded feature data or the original convolution kernel in at least one of width and height in depth together, such that a number of the at least one of width and height of folded feature data or folded convolution kernel is reduced, a number of the other of width and height of the folded feature data or the folded convolution kernel is unchanged, and a number of the depth of the folded feature data or the folded convolution kernel is doubled, where N is a positive integer determined by a number of channels supported by the SRAM or the calculation unit. reading unfolded feature data provided to the convolutional layer and an original convolution kernel of the convolutional layer from a dynamic random access memory, DRAM; folding the unfolded feature data in at least one dimension of width and height to generate folded feature data; pre-processing the folded feature data and the original convolution kernel; storing the pre-processed folded feature data into a static random-access memory, SRAM; folding the pre-processed original convolution kernel in the at least one dimension to generate one or more folded convolution kernels corresponding to the original convolution kernel; storing the one or more folded convolution kernels in the SRAM; and reading the pre-processed folded feature data and the one or more folded convolution kernels from the SRAM into a calculation unit for convolving the pre-processed folded feature data with the one or more folded convolution kernels, wherein said folding is splicing every N consecutive slices of the unfolded feature data or the original convolution kernel in at least one of width and height in depth together, such that a number of the at least one of width and height of folded feature data or folded convolution kernel is reduced, a number of the other of width and height of the folded feature data or the folded convolution kernel is unchanged, and a number of the depth of the folded feature data or the folded convolution kernel is doubled, where N is a positive integer determined by a number of channels supported by the SRAM or the calculation unit.