KR20170089678A - Processing unit, apparatus and method for in-memory data processing - Google Patents

Processing unit, apparatus and method for in-memory data processing Download PDF

Info

Publication number
KR20170089678A
KR20170089678A KR1020160010215A KR20160010215A KR20170089678A KR 20170089678 A KR20170089678 A KR 20170089678A KR 1020160010215 A KR1020160010215 A KR 1020160010215A KR 20160010215 A KR20160010215 A KR 20160010215A KR 20170089678 A KR20170089678 A KR 20170089678A
Authority
KR
South Korea
Prior art keywords
data
processing unit
processing
instruction
unit
Prior art date
Application number
KR1020160010215A
Other languages
Korean (ko)
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 KR1020160010215A priority Critical patent/KR20170089678A/en
Priority to US15/198,555 priority patent/US20170213581A1/en
Publication of KR20170089678A publication Critical patent/KR20170089678A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4239Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/106Data output latches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Abstract

A processing unit, an in-memory data processing apparatus and a method thereof are disclosed. According to another aspect of the present invention, the in-memory data processing apparatus comprises: a memory for storing data at a predetermined position; a plurality of selector units for selecting a data set to be used in the calculation from the stored data; and a plurality of processing units for performing operations using authorized command sets sequentially applied from the outside and the selected data sets.

Description

처리 유닛, 인-메모리 데이터 처리 장치 및 방법{PROCESSING UNIT, APPARATUS AND METHOD FOR IN-MEMORY DATA PROCESSING}TECHNICAL FIELD [0001] The present invention relates to a processing unit, an in-memory data processing apparatus,

본 발명은 데이터 중심의 인-메모리 데이터 처리 장치 및 방법에 관한 것으로, 특히 메모리 장치의 데이터 위치를 고정하고, 메모리 장치와 연결된 처리 유닛에서 실행되는 연산 명령을 이동시키면서 데이터를 처리하는 기술에 관한 것입니다. The present invention relates to data-centric in-memory data processing apparatus and methods, and more particularly to techniques for fixing data locations in a memory device and processing data while moving operational instructions executed in a processing unit coupled to the memory device is.

컴퓨터 시스템은 데이터를 처리하기 위하여 주로 고속의 프로세서를 사용하며, 오늘날 반도체 공정의 발달로 프로세서는 고속의 데이터 처리가 가능해졌다. Computer systems use mainly high-speed processors to process data, and with the development of semiconductor processing today, processors are capable of high-speed data processing.

그러나 처리를 위하여 프로세서에 제공되는 데이터는 프로세서에 비하여 상대적으로 느린 외부의 메모리에 위치하며, 이로 인하여 프로세서에서의 데이터 처리가 지연되는 문제가 발생한다. 이러한 문제를 해결하기 위하여, 프로세서 내부에 캐쉬(Cache)를 내장하여, 외부의 느린 메모리 속도를 보완하도록 하였다. However, the data provided to the processor for processing is located in an external memory relatively slower than the processor, which causes a delay in data processing in the processor. To solve this problem, a cache is built in the processor to compensate for the slow external memory speed.

최근에는 처리해야 하는 데이터의 절대적인 양이 증가함에 따라, 잦은 데이터 로딩으로 인한 속도 저하를 보완하기 위하여, 다층의 캐쉬 구조를 채용하고 있다. 또한, 메모리 내부에서 데이터를 처리하기 위한 데이터 처리 구조(PIM, Processing In-Memory)에 관한 연구도 활발히 진행되고 있다. In recent years, as the absolute amount of data to be processed has increased, a multi-layered cache structure has been adopted to compensate for the speed reduction due to frequent data loading. In addition, research on a data processing structure (PIM) for processing data in a memory is actively under way.

기존의 프로세서 구조 및 최근의 PIM 구조에서, 데이터를 처리하기 위해서는 데이터를 처리하는 처리 유닛으로 데이터를 이동하는 방식이 기본적으로 사용된다. 그러나 이러한 종래 기술은 데이터 처리 속도와 데이터 이동 속도 간의 차이로 인하여 문제가 발생하거나, 데이터 이동을 위하여 필요로 하는 에너지와 데이터 처리에 사용되는 에너지와의 차이로 인하여 문제가 발생할 수 있다. In an existing processor structure and a recent PIM structure, in order to process data, a method of moving data to a processing unit that processes data is basically used. However, such conventional techniques may cause problems due to the difference between the data processing speed and the data movement speed, or may be caused by the difference between the energy required for data movement and the energy used for data processing.

반도체 기술의 발전으로 단일 명령어에서의 데이터 처리 속도는 매우 빨라졌다. 그러나 프로세서 내의 실행 유닛과 같은 데이터를 처리하는 처리 유닛으로 데이터를 이동할 때에는 상대적으로 많은 시간이 소요되며, 이로 인하여 데이터의 처리 속도가 느려진다. With advances in semiconductor technology, the speed of data processing in a single instruction is much faster. However, it takes a relatively long time to move data to a processing unit that processes data such as an execution unit in the processor, thereby slowing the processing speed of the data.

예를 들어, 1GHz로 동작하는 프로세서는 1개의 명령어 처리에 1ns의 시간이 소요된다. 그러나, 프로세서의 외부에 존재하는 메모리로 버스를 통하여 데이터에 접근하는 경우 수 십ns의 시간이 소요된다. 그리고 최악의 경우 메모리 접근 속도로 데이터의 처리 성능이 저하될 수 있다. For example, a processor operating at 1 GHz takes 1 ns of time to process one instruction. However, it takes tens of ns of time to access the data through the bus to the memory existing outside the processor. At worst, memory access speed can degrade data processing performance.

또한, 빅 데이터(Big Data) 응용과 같이, 많은 양의 데이터를 처리하는 응용의 경우, 데이터 처리를 위하여 데이터를 처리장소인 프로세서로 옮겨야 한다. 이때 소모되는 에너지는 단일 명령어를 수행하는데 소모되는 에너지의 수 십~수 백배에 해당한다. Also, for applications that process large amounts of data, such as Big Data applications, data must be moved to the processor, which is the processing location, for data processing. The energy consumed here is several tens to several hundreds of times the energy consumed to perform a single instruction.

예를 들어, 1개의 ADD 명령어를 처리할 때는 0.64nJ의 에너지가 소비되지만, 데이터를 외부 메모리에서 내부 레지스터로 옮기기 위해서는 63.64nJ의 에너지가 필요하다. For example, when processing one ADD instruction, 0.64 nJ of energy is consumed, but 63.64 nJ of energy is required to move the data from the external memory to the internal register.

따라서, 종래의 데이터 처리시, 데이터를 외부 메모리로부터 메모리 제어기와 버스를 통해 처리 유닛으로 옮겨서 사용하는 방식으로 인한 성능 저하 문제와 과다한 양의 에너지 사용 문제를 해결하기 위한 기술 개발이 시급하다. Therefore, in the conventional data processing, it is urgent to develop a technique for solving the problems of performance degradation and excessive use of energy due to a method of transferring data from an external memory to a processing unit through a memory controller and a bus.

한국 공개 특허 제10-2002-7008455호, 2002년 09월 13일 공개(명칭: 입력 정보 단위를 처리하는 방법 및 장치, 데이터 패킷처리 장치)Korean Patent Publication No. 10-2002-7008455, published on September 13, 2002 (name: method and apparatus for processing input information unit, data packet processing apparatus)

본 발명의 목적은 데이터 처리를 위하여, 외부 메모리에 저장된 데이터를 버스를 통하여 처리 유닛으로 이동시킴에 따른 시간 지연 문제를 해결하고, 시간 지연으로 인한 성능 저하를 방지하여, 고속으로 데이터를 처리할 수 있도록 하는 것이다. An object of the present invention is to solve a time delay problem caused by moving data stored in an external memory to a processing unit via a bus for data processing and to prevent performance degradation due to time delay, .

또한, 본 발명의 목적은 데이터 처리에 소모되는 불필요한 에너지를 절감하여, 적은 전력 소모로 많은 양의 데이터를 처리할 수 있도록 하는 것이다. It is also an object of the present invention to reduce unnecessary energy consumed in data processing so that a large amount of data can be processed with low power consumption.

상기한 목적을 달성하기 위한 본 발명에 따른 인-메모리 데이터 처리 장치는, 정해진 위치에 데이터를 저장하는 메모리, 저장된 상기 데이터 중에서 연산에 사용할 데이터 셋을 선택하는 복수개의 셀렉터 유닛들, 그리고 외부로부터 순차적으로 인가받은 명령어 셋과 선택된 상기 데이터 셋을 이용하여 연산을 수행하는 복수개의 처리 유닛들을 포함한다.According to an aspect of the present invention, there is provided an in-memory data processing apparatus including a memory for storing data at a predetermined position, a plurality of selector units for selecting a data set to be used for the calculation from the stored data, And a plurality of processing units that perform operations using the selected instruction set and the selected data set.

이때, 상기 메모리는, 데이터를 저장하는 메모리 외에, 상기 셀렉터 유닛들과 상기 처리 유닛들을 포함하여 구성될 수 있다.At this time, the memory may be configured to include the selector units and the processing units in addition to a memory for storing data.

이때, 상기 복수개의 처리 유닛들은, 다차원 배열로 상호 연결되어 구성될 수 있다. At this time, the plurality of processing units may be interconnected in a multi-dimensional array.

이때, 상기 메모리에 저장된 각각의 상기 데이터들은, 상기 처리 유닛과 상기 셀렉터 유닛을 통하여, 각각의 상기 처리 유닛으로 직접 연결될 수 있다. At this time, each of the data stored in the memory can be directly connected to each of the processing units through the processing unit and the selector unit.

이때, 상기 셀렉터 유닛의 수는, 상기 복수개의 처리 유닛들의 개수에 상응하며, 상기 복수개의 셀렉터 유닛들은 다차원 배열로 상호 연결되어 구성될 수 있다. At this time, the number of the selector units corresponds to the number of the plurality of processing units, and the plurality of selector units can be configured to be interconnected in a multi-dimensional array.

이때, 상기 각각의 처리 유닛들은, 상기 처리 유닛이 처리할 데이터를 선택하는 상기 셀렉터 유닛과 쌍을 이룰 수 있다. At this time, each of the processing units may be paired with the selector unit in which the processing unit selects data to be processed.

이때, 상기 각각의 셀렉터 유닛들은, 상기 쌍을 이룬 각각의 처리 유닛들이 상기 메모리의 특정 위치에 저장된 데이터와 결합하여 쌍을 이룰 수 있다. At this time, each of the selector units can be paired by combining the data stored in a specific location of the memory with each of the paired processing units.

이때, 상기 처리 유닛과 상기 데이터의 쌍은 직렬로 연결되어, 상기 각각의 처리 유닛들에 의해 연산될 수 있다. At this time, the pair of the processing unit and the data may be connected in series and operated by the respective processing units.

이때, 상기 처리 유닛의 입력은, 인접한 이전 처리 유닛으로부터 수신된 것으로, 해당 상기 처리 유닛이 수행할 연산과 데이터 지정 명령어인 이전 명령어 및 이전 처리 결과와, 상기 처리 유닛에 상응하는 상기 셀렉터 유닛으로부터 수신된 상기 데이터일 수 있다. At this time, the input of the processing unit is an instruction received from an adjacent previous processing unit, which is an operation to be performed by the processing unit, a previous instruction as a data designation instruction and a previous processing result, Lt; / RTI >

이때, 상기 처리 유닛의 출력은, 상기 처리 유닛이 입력받아 수행중인 명령어, 상기 명령어에 상응하는 처리 결과일 수 있다. In this case, the output of the processing unit may be a command that is input and executed by the processing unit, and a processing result corresponding to the command.

이때, 상기 처리 유닛들은, 상기 처리 유닛의 출력인 상기 명령어 및 상기 처리 결과를 인접한 다음 처리 유닛으로 전달하기 위하여, 공통의 클럭을 사용하거나, 비동기적 핸드쉐이킹 방식을 사용할 수 있다. At this time, the processing units may use a common clock or an asynchronous handshaking method in order to transfer the instruction and the processing result, which are outputs of the processing unit, to the next adjacent processing unit.

이때, 상기 처리 유닛은, 상기 연산에 사용할 데이터의 선택을 요청하는 데이터 선택 신호를 상기 처리 유닛에 상응하는 상기 셀렉터 유닛으로 출력하고, 상기 셀렉터 유닛은, 상기 처리 유닛에 상응하는 상기 데이터 셋 중에서 일부의 데이터를 선택하여 상기 처리 유닛으로 전송할 수 있다. At this time, the processing unit outputs a data selection signal requesting selection of data to be used for the operation to the selector unit corresponding to the processing unit, and the selector unit selects a part of the data set corresponding to the processing unit And transmit the selected data to the processing unit.

이때, 상기 명령어 셋은, 상기 처리 유닛으로 순차적으로 인가되며, 상기 명령어 셋에 포함된 명령어는, 하나 이상의 연산자 필드, 복수개의 피연산자 필드들, 하나 이상의 연산결과 필드로 구성될 수 있다. At this time, the instruction set is sequentially applied to the processing unit, and the instructions included in the instruction set may be composed of one or more operator fields, a plurality of operand fields, and one or more operation result fields.

또한, 처리 유닛은, 수행할 연산과 상기 연산에 사용되는 데이터를 포함하는 명령어를 디코딩하여 제어 신호를 생성하는 명령어 디코더, 상기 명령어에 상응하도록 상기 데이터를 연산하는 내부 실행 유닛, 상기 제어 신호를 이용하여, 입력된 이전 처리 유닛의 처리 결과를 사용할지 여부를 판단하는 입력 결과 셀렉터, 그리고 상기 명령어 및 상기 명령어에 상응하는 처리 결과를 전달할 다음 처리 유닛을 선택하는 출력 셀렉터를 포함한다. The processing unit may further include: an instruction decoder that decodes an instruction to be performed and an instruction including data used in the operation to generate a control signal; an internal execution unit that operates the data to correspond to the instruction; An input result selector for determining whether to use the processing result of the input previous processing unit and an output selector for selecting the next processing unit to transmit the processing result corresponding to the command and the command.

이때, 상기 명령어 디코더는, 외부로부터 순차적으로 인가받은 명령어 셋 또는 인접한 이전 처리 유닛으로부터 수신된 이전 명령어를 디코딩할 수 있다. At this time, the instruction decoder may decode a previous instruction received from an adjacent instruction set or an instruction sequence sequentially applied from the outside.

이때, 상기 내부 실행 유닛은, At this time,

상기 처리 유닛이 수행중인 상기 명령어 및 상기 명령어에 상응하는 처리 결과를 출력할 수 있다. The processing unit may output the instruction being executed and the processing result corresponding to the instruction.

이때, 상기 명령어 셋은, 하나 이상의 연산자 필드, 복수개의 피연산자 필드들, 하나 이상의 연산결과 필드로 구성된 것일 수 있다. At this time, the instruction set may consist of one or more operator fields, a plurality of operand fields, and one or more operation result fields.

이때, 상기 연산자 필드는, 상기 내부 실행 유닛에서 수행할 연산의 종류를 의미하고, 상기 피연산자 필드는, 데이터 셋 중에서 연산에 필요한 데이터를 의미하며, 상기 연산결과 필드는, 상기 이전 처리 유닛의 처리 결과를 사용하여 상기 처리 유닛이 연산을 수행할지 여부를 의미하거나, 상기 처리 유닛의 연산 결과를 상기 다음 처리 유닛으로 전달할지 여부를 의미할 수 있다. Here, the operator field indicates a type of operation to be performed in the internal execution unit, the operand field indicates data necessary for operation in the data set, and the operation result field indicates a result of the processing of the previous processing unit Means whether the processing unit performs an operation or whether to transmit the operation result of the processing unit to the next processing unit.

이때, 상기 처리 유닛은, 상기 데이터가 저장된 메모리 장치에 내장된 것일 수 있다. At this time, the processing unit may be embedded in the memory device in which the data is stored.

또한, 인-메모리 데이터 처리 장치에 의해 수행되는 데이터 처리 방법은 외부로부터 순차적으로 명령어 셋을 인가받는 단계, 셀렉터 유닛을 이용하여, 정해진 위치에 데이터가 저장된 메모리에서 상기 명령어 셋에 상응하는 연산에 사용할 데이터 셋을 선택하는 단계, 그리고 복수개의 처리 유닛들을 이용하여, 상기 명령어 셋과 상기 데이터 셋에 상응하는 연산을 수행하는 단계를 포함한다. In addition, the data processing method performed by the in-memory data processing apparatus may include a step of sequentially receiving an instruction set from the outside, a step of using a selector unit to use the memory in a memory where data is stored at a predetermined position, Selecting a data set, and using the plurality of processing units, performing an operation corresponding to the instruction set and the data set.

이때, 상기 복수개의 처리 유닛들은, 다차원 배열로 상호 연결되어 구성될 수 있다. At this time, the plurality of processing units may be interconnected in a multi-dimensional array.

이때, 상기 명령어 셋에 포함된 각각의 명령어들을 인접한 다음 처리 유닛으로 전달하는 단계를 더 포함할 수 있다. At this time, each of the instructions included in the instruction set may be transferred to an adjacent next processing unit.

본 발명에 따르면, 데이터 처리를 위하여, 외부 메모리에 저장된 데이터를 버스를 통하여 처리 유닛으로 이동시킴에 따른 시간 지연 문제를 해결하고, 시간 지연으로 인한 성능 저하를 방지하여, 고속으로 데이터를 처리할 수 있다. According to the present invention, it is possible to solve a time delay problem caused by moving data stored in an external memory to a processing unit through a bus for data processing, prevent a performance degradation due to a time delay, have.

또한, 본 발명은 데이터 처리에 소모되는 불필요한 에너지를 절감하여, 적은 전력 소모로 많은 양의 데이터를 처리할 수 있다. Further, the present invention can reduce unnecessary energy consumed in data processing, and can process a large amount of data with low power consumption.

도 1은 종래 기술에 따른 컴퓨터 연산 처리를 위한 프로세서 구조를 나타낸 도면이다.
도 2는 본 발명의 일실시예에 따른 인-메모리 데이터 처리 장치의 구성을 나타낸 블록도이다.
도 3은 본 발명의 일실시예에 따른 인-메모리 데이터 처리 구조를 설명하기 위한 도면이다.
도 4는 본 발명의 일실시예에 따른 처리 유닛의 명령어 전달 및 데이터 처리 흐름을 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 인-메모리 데이터 처리 장치의 하드웨어 논리 구조를 나타낸 예시도이다.
도 6은 본 발명의 일실시예에 따른 인-메모리 데이터 처리 장치의 물리 구조를 나타낸 예시도이다.
도 7은 본 발명의 일실시예에 따른 처리 유닛의 구조를 설명하기 위한 도면이다.
도 8은 본 발명의 일실시예에 따른 셀렉터 유닛의 구조를 설명하기 위한 도면이다.
도 9는 본 발명의 일실시예에 따른 명령어 셋의 구조를 설명하기 위한 도면이다.
1 is a diagram illustrating a processor structure for a computer operation process according to the prior art.
2 is a block diagram illustrating a configuration of an in-memory data processing apparatus according to an embodiment of the present invention.
3 is a view for explaining an in-memory data processing structure according to an embodiment of the present invention.
4 is a diagram for explaining a command transfer and a data processing flow of a processing unit according to an embodiment of the present invention.
5 is an exemplary diagram illustrating a hardware logic structure of an in-memory data processing apparatus according to an embodiment of the present invention.
6 is an exemplary view showing a physical structure of an in-memory data processing apparatus according to an embodiment of the present invention.
7 is a diagram for explaining the structure of a processing unit according to an embodiment of the present invention.
8 is a view for explaining a structure of a selector unit according to an embodiment of the present invention.
9 is a diagram illustrating a structure of an instruction set according to an embodiment of the present invention.

본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.The present invention will now be described in detail with reference to the accompanying drawings. Hereinafter, a repeated description, a known function that may obscure the gist of the present invention, and a detailed description of the configuration will be omitted. Embodiments of the present invention are provided to more fully describe the present invention to those skilled in the art. Accordingly, the shapes and sizes of the elements in the drawings and the like can be exaggerated for clarity.

이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, preferred embodiments according to the present invention will be described in detail with reference to the accompanying drawings.

도 1은 종래 기술에 따른 컴퓨터 연산 처리를 위한 프로세서 구조를 나타낸 도면이다. 1 is a diagram illustrating a processor structure for a computer operation process according to the prior art.

도 1에 도시한 바와 같이, 마이크로프로세서를 의미하는 종래의 처리 유닛(PU, Processing Unit)(10)은 명령어 메모리(Instruction Memory)(20)으로부터 처리 유닛 외부의 메모리 제어기와 명령어 버스를 통하여 순차적으로 공급되는 명령어(I1, I2, I3, ... In)의 순서에 따라, 처리 유닛 외부의 메모리 제어기와 데이터 버스를 통하여 데이터 메모리(Data Memory)(30)으로부터 복수개의 데이터 셋(D1, D2, D3, ... DN)을 읽는다. As shown in FIG. 1, a conventional processing unit (PU) 10, which means a microprocessor, is connected to an instruction memory 20 through a memory controller external to the processing unit and a command bus supplied instruction (I 1, I 2, I 3, ... I n) a plurality of data sets from the data memory (data memory) (30) in order, through the processing unit external to the memory controller and the data bus of the ( D 1 , D 2 , D 3 , ... D N.

그리고 처리 유닛(10)은 데이터 셋을 읽은 해당 시점에서의 명령어를 처리하고, 그 결과(R1, R2, R3, ... RN)를 처리 유닛 외부의 메모리 제어기와 데이터 버스를 통하여 데이터 메모리(30)에 저장한다. The processing unit 10 then processes the instruction at the point in time at which the data set was read and sends the result (R 1 , R 2 , R 3 , ... R N ) to the memory controller and data bus And stores it in the data memory 30.

예를 들어, 10번의 덧셈을 수행하고자 하는 경우, 10개의 덧셈 명령과 20개의 데이터를 필요로 한다. 각 덧셈 연산에서 2개의 데이터를 외부 메모리인 데이터 메모리(30)로부터 데이터 버스를 통하여 읽어 들여 처리 유닛(10)에서 연산하는 과정을 시간의 순서에 따라 10번 반복한다. For example, if you want to perform 10 additions, you need 10 addition instructions and 20 data. In the addition operation, the two data are read from the data memory 30, which is an external memory, through the data bus, and are calculated in the processing unit 10 by repeating 10 times in the order of time.

이때, 외부 메모리인 데이터 메모리(30)로부터 메모리 제어기와 데이터 버스를 통하여 데이터를 읽어 들이는 속도가 처리 유닛(10)에서 데이터를 연산하는 속도보다 느릴 경우, 데이터 처리는 메모리의 읽기 성능에 따라 결정되고, 이로 인하여 성능 저하가 발생한다. 또한, 데이터 메모리(30)로부터의 데이터 읽기를 빈번하게 수행하므로, 많은 에너지 소모가 발생한다. At this time, when the speed at which data is read from the data memory 30, which is an external memory, through the memory controller and the data bus is slower than the speed at which the data is read by the processing unit 10, the data processing is determined according to the read performance of the memory Thereby causing a performance degradation. In addition, since data is frequently read from the data memory 30, a large amount of energy is consumed.

그리고 종래의 마이크로 프로세서는 파이프라인 기반의 데이터 처리를 주로 적용하여 데이터를 처리하였다. 종래의 파이프라인 방식의 데이터 처리는 파이프라인 내의 각 처리 유닛의 처리 연산 종류와 기능이 정해진 단일 연산 기능만 수행하였다. And, conventional microprocessor mainly processed pipeline based data processing. Conventional pipelined data processing performed only a single operation function in which the types and functions of the processing operations of each processing unit in the pipeline are determined.

즉, 일련의 연산 처리 과정에 따라 정해진 기능을 가지는 복수개의 처리 유닛을 연결한 후, 파이프라인의 외부에서 처리하고자 하는 데이터를 순차적으로 인가하여 데이터를 처리하였다. That is, a plurality of processing units having predetermined functions are connected according to a series of arithmetic processing processes, and data to be processed is sequentially applied outside the pipeline to process the data.

반면, 본 발명의 일실시예에 따른 인-메모리 데이터 처리 장치는 종래의 데이터 처리 방식의 문제점을 해결하기 위하여, 데이터 중심의 인-메모리 처리 방식을 적용하였다. On the other hand, the in-memory data processing apparatus according to an embodiment of the present invention applies a data-centric in-memory processing method in order to solve the problem of the conventional data processing method.

이하에서는 도 2 내지 도 9를 통하여, 본 발명의 일실시예에 따른 인-메모리 데이터 처리 장치에 대하여 상세하게 설명한다. Hereinafter, an in-memory data processing apparatus according to an embodiment of the present invention will be described in detail with reference to FIG. 2 through FIG.

도 2는 본 발명의 일실시예에 따른 인-메모리 데이터 처리 장치의 구성을 나타낸 블록도이다.2 is a block diagram illustrating a configuration of an in-memory data processing apparatus according to an embodiment of the present invention.

도 2에 도시한 바와 같이, 인-메모리 데이터 처리 장치(200)는 메모리(210), 복수개의 셀렉터 유닛들(220) 및 복수개의 처리 유닛들(230)을 포함한다. 2, the apparatus 200 for processing in-memory data includes a memory 210, a plurality of selector units 220, and a plurality of processing units 230. [

도 2의 인-메모리 데이터 처리 장치(200)를 구성하는 메모리(210), 복수개의 셀렉터 유닛들(220) 및 복수개의 처리 유닛들(230)의 상호 연결은 종래의 메모리 제어기와 이에 기반한 버스를 통하여 메모리(210)와 처리 유닛들(230)을 연결하는 방식이 아니며, 메모리(210)의 개별 데이터 비트가 셀렉터 유닛들(230)을 통하여 그에 상응하는 처리 유닛들(230)에 직접 연결되는 구조이다.The interconnection of the memory 210, the plurality of selector units 220 and the plurality of processing units 230 constituting the in-memory data processing apparatus 200 of FIG. 2 can be realized by using a conventional memory controller and a bus based thereon In which the individual data bits of the memory 210 are directly connected to the corresponding processing units 230 via the selector units 230 to be.

먼저, 메모리(210)는 연산을 수행하고자 하는 데이터들을 저장한다. 이때, 메모리(210)는 정해진 위치에 데이터들을 저장한다. First, the memory 210 stores data to be operated. At this time, the memory 210 stores data at a predetermined position.

다음으로 복수개의 셀렉터 유닛들(220)은 각각에 상응하는 처리 유닛들(230)과 연관되어 직접 연결 되어 있는 저장된 데이터들 중에서 연산에 사용할 데이터 셋을 선택한다. Next, the plurality of selector units 220 selects a dataset to be used in the operation among the stored data directly associated with the corresponding processing units 230, respectively.

이때, 복수개의 셀렉터 유닛들(220)의 수는 복수개의 처리 유닛들(230)의 개수에 상응하며, 복수개의 셀렉터 유닛들(220)은 다차원 배열로 상호 연결되어 구성될 수 있다. At this time, the number of the plurality of selector units 220 corresponds to the number of the plurality of processing units 230, and the plurality of selector units 220 can be configured to be interconnected with the multi-dimensional array.

마지막으로, 복수개의 처리 유닛들(230)은 외부로부터 순차적으로 입력받은 명령어 셋과 선택된 데이터 셋을 이용하여 연산을 수행한다. 이때, 명령어 셋은 복수개의 처리 유닛들(230)로 순차적으로 인가되며, 명령어 셋에 포함된 명령어는 하나 이상의 연산자 필드, 복수개의 피연산자 필드들 및 하나 이상의 연산결과 필드로 구성될 수 있다. 그리고 복수개의 처리 유닛들(230)은 다차원 배열로 상호 연결되어 구성될 수 있다. Finally, the plurality of processing units 230 perform an operation using the instruction set sequentially input from the outside and the selected data set. At this time, the instruction set is sequentially applied to the plurality of processing units 230, and the instructions included in the instruction set may be composed of one or more operator fields, a plurality of operand fields, and one or more operation result fields. The plurality of processing units 230 may be interconnected in a multidimensional array.

또한, 복수개의 처리 유닛들(230)은 각각 해당 처리 유닛이 처리할 데이터를 선택하는 셀렉터 유닛과 쌍을 이룬다. 이때, 각각의 셀렉터 유닛들(220)은 쌍을 이룬 각각의 처리 유닛들(230)이 메모리(210)의 특정 위치에 저장된 데이터와 결합하여 쌍을 이루도록 할 수 있다. 그리고 처리 유닛과 데이터 쌍은 직렬로 연결되며, 각각의 처리 유닛들에 의해 데이터가 연산된다.Further, the plurality of processing units 230 are each paired with a selector unit for selecting data to be processed by the corresponding processing unit. At this time, each selector unit 220 may couple each of the paired processing units 230 with data stored at a particular location in the memory 210 to form a pair. The processing unit and the data pair are connected in series, and data is calculated by each of the processing units.

즉, 처리 유닛들(230)과 셀렉터 유닛들(220)의 개별 처리 유닛-셀렉터 유닛 쌍은 해당 처리 유닛-셀렉터 유닛 쌍과 짝을 이루는 메모리(210)의 내부에 위치하는 고정된 위치의 개별 데이터와 결합된 쌍을 이루어 데이터를 처리한다.That is, the individual processing unit-selector unit pairs of the processing units 230 and selector units 220 are in the form of individual data at a fixed location located within the memory 210 mating with the corresponding processing unit- Lt; RTI ID = 0.0 > a < / RTI >

복수개의 처리 유닛들(230)의 입력은 해당 처리 유닛과 인접한 이전 처리 유닛으로부터 수신된 이전 명령어 및 이전 처리 결과와, 해당 처리 유닛에 상응하는 셀렉터 유닛으로부터 수신된 데이터이다. The inputs of the plurality of processing units 230 are the previous command and previous processing result received from the previous processing unit adjacent to the processing unit, and the data received from the selector unit corresponding to the processing unit.

즉, 처리 유닛은 인접한 이전 처리 유닛이 이전 단위 시간에 수행한 명령어를 입력받아 해당 단위 시간에 명령어에 상응하는 연산을 수행한다. 그리고 처리 유닛은 이전 처리 유닛의 연산 결과 대신 상수를 입력받을 수도 있다. That is, the processing unit receives an instruction executed in a previous unit time by an adjacent previous processing unit, and performs an operation corresponding to the instruction in the unit time. The processing unit may receive a constant instead of the operation result of the previous processing unit.

또한, 복수개의 처리 유닛들(230)의 출력은 각각의 해당 처리 유닛이 입력받아 수행중인 명령어 및 수행중인 명령어에 상응하는 처리 결과이다. The output of the plurality of processing units 230 is a processing result corresponding to the instruction being executed and the command being executed by each corresponding processing unit.

그리고 복수개의 처리 유닛들(230)은 출력인 명령어 및 처리 결과를 인접한 다음 처리 유닛으로 전달하기 위하여, 공통의 클럭을 사용하거나, 비동기적 핸드쉐이킹 방식을 사용할 수 있다. The plurality of processing units 230 may use a common clock or an asynchronous handshaking method in order to transfer an instruction and an output result to an adjacent next processing unit.

또한, 각각의 처리 유닛들은 연산에 사용할 데이터의 선택을 요청하는 데이터 선택 신호를 처리 유닛에 상응하는 셀렉터 유닛으로 출력하고, 셀렉터 유닛으로부터 처리 유닛에 상응하는 데이터 셋 중에서 선택된 일부의 데이터를 수신할 수 있다. Further, each of the processing units may output a data selection signal requesting selection of data to be used for the operation to a selector unit corresponding to the processing unit, and may receive a part of data selected from the data sets corresponding to the processing unit from the selector unit have.

도 3은 본 발명의 일실시예에 따른 인-메모리 데이터 처리 구조를 설명하기 위한 도면이다. 3 is a view for explaining an in-memory data processing structure according to an embodiment of the present invention.

도 3과 같이, 본 발명의 일실시예에 따른 인-메모리 데이터 처리 장치는 고정된 단일 연산 기능이 아닌, 범용 연산 처리가 가능한 산술 논리 처리 장치 기반의 처리 유닛(PU)를 사용한다. As shown in FIG. 3, the in-memory data processing apparatus according to an embodiment of the present invention uses a processing unit (PU) based on an arithmetic logic processing apparatus capable of general-purpose arithmetic processing rather than a fixed single arithmetic function.

인-메모리 데이터 처리 장치는 일련의 명령을 처리하기 위하여, 처리 유닛(PU)을 연산하고자 하는 데이터가 위치하는 메모리 장치에 내장되어 있다. 그리고 인-메모리 데이터 처리 장치는 데이터 셋의 크기에 상응하도록 복수개의 처리 유닛(PU)을 구비할 수 있다. An in-memory data processing apparatus is built in a memory device in which data to be processed is located, in order to process a series of instructions. The in-memory data processing apparatus may have a plurality of processing units (PU) corresponding to the size of the data set.

인-메모리 데이터 처리 장치는 메모리 장치에 내장되며, 메모리 장치 내의 개별 데이터는 해당되는 개별 데이터에 상응하는 처리 유닛(PU)과 쌍을 이루어 구성되며, 개별 데이터는 특정 처리 유닛(PU)과 직접 연결될 수 있다. The in-memory data processing device is embedded in the memory device, and the individual data in the memory device is paired with a processing unit (PU) corresponding to the corresponding individual data, and the individual data is directly connected to the specific processing unit (PU) .

또한, 종래의 마이크로프로세서 및 파이프라인 장치와 달리, 본 발명의 일실시예에 따른 인-메모리 데이터 처리 장치는 데이터가 메모리 상에 정해진 위치에 저장되어 있으므로, 외부에서 데이터를 인가하는 방식이 아니라 일련의 명령어 셋을 외부에서 순차적으로 인가하는 방식으로 동작한다. 즉, 인-메모리 데이터 처리 장치는 데이터의 연산시 종래의 방식과 달리 메모리 제어기와 데이터 버스를 통하여 외부로부터 데이터를 인가 받지 않는다. 그리고 외부로부터 인가되는 각각의 명령어들은 인-메모리 데이터 처리 장치 내부의 각 처리 유닛(PU)으로 이동되면서 연산이 수행된다. In addition, unlike conventional microprocessors and pipeline devices, an in-memory data processing apparatus according to an embodiment of the present invention stores data at a predetermined location on a memory, And a set of instructions from the outside in a sequential manner. That is, the in-memory data processing apparatus does not receive data from the outside through the memory controller and the data bus unlike the conventional method when calculating the data. And each instruction applied from the outside is moved to each processing unit (PU) in the in-memory data processing apparatus to perform the operation.

그리고 처리 유닛(PU)들은 해당 처리 유닛에서 수행하고자 하는 연산과 연산에 사용할 데이터를 지정하는 명령어(I)와 상수 또는 이전 처리 유닛의 연산 결과(R) 및 해당 처리 유닛(PU)과 쌍을 이루어 메모리의 고정된 위치에 존재하는 데이터 셋(D)을 입력받는다. 또한, 해당 처리 유닛(PU)들은 해당 처리 유닛이 이전 단위 시간에 입력받아 연산을 수행한 명령어(I)와 해당 명령어에 상응하는 연산 결과(R)를 출력한다. The processing units (PUs) pair with the instruction (I) specifying the operation to be performed in the corresponding processing unit and the data to be used in the operation, the operation result (R) of the constant or previous processing unit and the corresponding processing unit And receives a data set D existing at a fixed position of the memory. In addition, the processing units (PU) output the instruction (I) in which the corresponding processing unit has been received in the preceding unit time and the operation result (R) corresponding to the instruction word.

데이터 처리를 위하여, 각각의 처리 유닛(PU)들은 처리하고자 하는 데이터와 쌍(PUn-Dn PAIRS)을 이룬다. 그리고 각각의 처리 유닛-데이터 쌍은 직렬로 연결되어 일련의 데이터로 처리된다. For data processing, each processing unit (PU) forms a pair (PU n -D n PAIRS) with the data to be processed. Each processing unit-data pair is serially connected and processed as a series of data.

도 3과 같이, 고정된 데이터에 일련의 연산이 반복적으로 처리되도록 하기 위하여, 각각의 처리 유닛(PU)들은 외부로부터 각 처리 유닛(PU)에서 수행해야 하는 일련의 연산 명령을 순차적으로 입력받아 처리한다. As shown in FIG. 3, in order to allow a series of operations to be repeatedly performed on the fixed data, each of the processing units (PU) sequentially receives a series of operation instructions to be executed in each processing unit (PU) do.

예를 들어, 10번의 덧셈을 수행하고자 하는 경우, 처리 유닛-데이터 쌍이 직렬로 연결하여 구성된 데이터 중심 인-메모리 데이터 처리 장치는 10개의 덧셈 명령을 순차적으로 인가하여, 직렬 연결의 최종 출력으로 20개의 데이터에 대한 덧셈 결과를 출력한다. For example, in a case where 10 additions are to be performed, the data-centered data processing device configured by connecting the processing unit-data pairs in series is sequentially applied with 10 addition instructions to sequentially output 20 And outputs the addition result to the data.

도 4는 본 발명의 일실시예에 따른 처리 유닛의 명령어 전달 및 데이터 처리 흐름을 설명하기 위한 도면이다.4 is a diagram for explaining a command transfer and a data processing flow of a processing unit according to an embodiment of the present invention.

PUn-Dn PAIRS는 데이터 처리가 일어나는 처리 유닛-데이터 쌍을 의미하고, 각 단위 시간 T에 따라 인가되는 명령어에 의해 수행되는 연산의 수행 과정을 나타내었다. PU n -D n PAIRS is a processing unit-data pair in which data processing takes place, and shows a process of performing an operation performed by an instruction applied according to each unit time T.

도 4에 도시한 바와 같이, 첫번째 명령어인 I1이 PUn-Dn 쌍으로 인가되면, T=1의 단위 시간에, PUn-Dn 쌍은 I1에 따른 연산을 수행하고 그 결과로 I1 명령과 연산결과 R1을 출력한다. When as shown in Fig. 4, the first command I 1 is applied to the PU n -D n pairs, the unit of time of T = 1, PU n -D n pairs to perform, and as a result the operation of the I 1 I 1 command and the operation result R 1 .

그리고 T=2의 시간에, PUn-Dn 쌍은 새로운 명령어인 I2를 입력받아 명령을 수행하고, 동시에 PU(n-1)-D(n-1) 쌍은 이전 단계인 PUn-Dn 쌍의 출력인 I1 명령과 연산 결과 R1을 입력으로하는 D(n-1) 데이터 셋에 대한 연산을 수행한다. 이와 같이 연산을 n번의 단위 시간 동안 반복 수행하여 도4의 우측 최종 열과 같이 PU1-D1 쌍의 출력으로 모든 연산에 대한 결과가 출력된다. And the time of T = 2, PU n -D n pair is performing the command receives the I 2 of the new command and, at the same time, PU (n-1) -D ( n-1) pairs PU n the previous step, - D n (n-1) data set having an I 1 instruction as an output of D n pairs and an operation result R 1 as an input. Thus, the operation is repeated for n unit times, and the result of all the operations is output as the output of the PU 1 -D 1 pair as shown in the rightmost column of FIG.

즉, 도 4에 도시한 바와 같이, 인-메모리 데이터 처리 장치는 외부로부터 순차적으로 명령어 셋(I)을 인가받는 단계, 셀렉터 유닛을 이용하여 명령어 셋에 상응하는 연산에 사용할 데이터 셋(D)을 선택하는 단계, 복수개의 처리 유닛(PU)들을 이용하여 명령어 셋(I)과 데이터 셋(D)에 상응하는 연산을 수행하는 단계, 그리고 명령어 셋에 포함된 명령어들을 인접한 다음 처리 유닛(PU)으로 전달하는 단계를 수행한다. That is, as shown in FIG. 4, the in-memory data processing apparatus receives the instruction set I sequentially from the outside, uses a selector unit to set a data set D to be used in the operation corresponding to the instruction set , Performing an operation corresponding to the instruction set (I) and the data set (D) using a plurality of processing units (PU), and instructing the instructions contained in the instruction set to an adjacent next processing unit (PU) .

도 5는 본 발명의 일실시예에 따른 인-메모리 데이터 처리 장치의 하드웨어 논리 구조를 나타낸 예시도이다. 5 is an exemplary diagram illustrating a hardware logic structure of an in-memory data processing apparatus according to an embodiment of the present invention.

본 발명의 일 실시예에 따른 인-메모리 데이터 처리 장치의 구조는 다양한 형태로 구성 및 구현될 수 있으며, 도 5와 같이 처리 유닛(511), 데이터 메모리(531) 및 추가적인 셀렉터 유닛(521)을 이용하여 인-메모리 데이터 처리 장치의 하드웨어가 구현될 수도 있다. The structure of the in-memory data processing apparatus according to an exemplary embodiment of the present invention may be configured and implemented in various forms, and includes a processing unit 511, a data memory 531, and an additional selector unit 521 The hardware of the in-memory data processing device may be implemented.

도 5는 처리 유닛(511)을 2차원으로 배열하여 매트릭스 연산과 같이 복잡한 연산을 수행할 수 있도록 구현한 구조이다. 도 5와 같이, 인-메모리 데이터 처리 장치는 복잡한 연산을 수행하는 경우, 사용 가능한 데이터 셋 중에서 필요한 데이터를 선택하여 연산을 수행하기 위한 셀렉터 유닛을 포함할 수 있다. 5 is a structure in which the processing units 511 are arranged in a two-dimensional manner so as to perform complex operations such as a matrix operation. As shown in FIG. 5, the in-memory data processing apparatus may include a selector unit for performing an operation by selecting necessary data from available data sets when performing complex operations.

도 5에 도시한 바와 같이, 처리 계층(Processing Layer)(510)은 복수 개의 단위 처리 유닛(511)들을 2차원으로 배열한 구조를 특징으로 한다. 그리고 각 처리 유닛(511)들은 인접한 처리 유닛으로 명령어와 해당 처리 유닛의 처리 결과를 전달하여, 연산을 순차적으로 처리한다. As shown in FIG. 5, a processing layer 510 features a structure in which a plurality of unit processing units 511 are two-dimensionally arranged. Each of the processing units 511 transfers the instruction and the processing result of the corresponding processing unit to the adjacent processing unit, and sequentially processes the operation.

데이터 셀렉션 계층(Data Selection Layer)(520)은 처리 유닛 PUnm과 하나 또는 그 이상 개수의 데이터로 구성된 데이터 셋 Dnm의 사이에 위치하며, PUnm에서 사용할 데이터 셋 Dnm를 선택한다. 셀렉터 유닛(522)은 처리 유닛(511)이 복수의 오퍼랜드(데이터) 중에서 연산에 사용할 데이터를 메모리로부터 선택한다.A data selection layer 520 is located between the processing unit PU nm and the data set D nm consisting of one or more pieces of data and selects the data set D nm to be used in the PU nm . The selector unit 522 selects, from the memory, data to be used for the operation among the plurality of operands (data) by the processing unit 511. [

그리고 데이터 계층(Data Layer)(530)은 물리적인 메모리 장치로 구성된다. The data layer 530 is composed of a physical memory device.

도 5에서는 하나의 데이터 셋을 처리하기 위하여 처리 유닛-셀렉터 유닛-데이터 셋이 하나의 단위(PUnm-Snm-Dnm pair)를 구성하는 것으로 설명하였으나, 이에 한정되지 않는다. In FIG. 5, the processing unit-selector unit-data set has been described as one unit (PU nm -S nm -D nm pair) for processing one data set, but the present invention is not limited thereto.

도 6은 본 발명의 일실시예에 따른 인-메모리 데이터 처리 장치의 물리 구조를 나타낸 예시도이다.6 is an exemplary view showing a physical structure of an in-memory data processing apparatus according to an embodiment of the present invention.

도 6에 도시한 바와 같이, 인-메모리 데이터 처리 장치의 하드웨어 물리 구조는 처리 계층(610), 데이터 셀렉션 계층(620) 및 데이터 계층(630)이 적층되어 구성될 수 있다. 즉, 처리 계층(610), 데이터 셀렉션 계층(620) 및 데이터 계층(630)을 구현한 복수개의 실리콘 기판(silicon die)을 적층하여 3D stacked silicon die 형태로 구현될 수 있다. 6, the hardware physical structure of the in-memory data processing apparatus may be configured by stacking a processing layer 610, a data selection layer 620, and a data layer 630. [ That is, a plurality of silicon dies embodying the processing layer 610, the data selection layer 620, and the data layer 630 may be stacked to form a 3D stacked silicon die.

그러나, 본 발명의 실시예에 따른 데이터 중심 인-메모리 데이터 처리 장치의 논리적 구조, 물리적 구조 및 형상은 도 5 및 도 6에 도시한 예시에 국한하지 않는다. However, the logical structure, physical structure, and shape of the data-centric in-memory data processing apparatus according to the embodiment of the present invention are not limited to the examples shown in FIGS. 5 and 6. FIG.

도 7은 본 발명의 일실시예에 따른 처리 유닛의 구조를 설명하기 위한 도면이다.7 is a diagram for explaining the structure of a processing unit according to an embodiment of the present invention.

도 7에 도시한 바와 같이, 처리 계층에 위치한 임의의 처리 유닛 PUnm(700)은 이전 처리 유닛으로부터 입력된 명령어 Inm과 이전 처리 유닛의 연산 결과인 Rnm을 입력으로 전달받아 사용한다. 그리고 처리 유닛 PUnm(700)는 이전 단위 시간에서 사용한 명령어를 2차원 배치에서 인접한 다음 단계인 PUn(m+1), PU(n+1)(m+1), PU(n+1)m 중에서 어느 하나의 처리 유닛으로 전달하기 위한 명령어인 In(m+1), I(n+1)(m+1), I(n+1)m과, 연산 결과인 Rn(m+1), R(n+1)(m+1), R(n+1)m을 출력한다. 7, any of the processing units PU nm (700) in the processing layer is used by receiving the operation result of the instruction I is R nm nm and old processing unit input from the previous processing unit as input. And a processing unit PU nm (700) are adjacent in the two-dimensional arrangement of instruction used in the previous unit time period the next step, PUn (m + 1), PU (n + 1) (m + 1), PU (n + 1) m I n (m + 1) a command for transmitting to any one processing unit from, I (n + 1) ( m + 1), I (n + 1) m and a calculation result of the R n (m + 1 ) , R (n + 1) (m + 1) and R (n + 1) m .

또한, 처리 유닛 PUnm(700)은 데이터 셋 Dnm에서 연산에 필요한 데이터를 선택하기 위한 신호인 DSELnm 신호를 출력하고, 입력 연산 데이터로 DAnm, DBnm을 입력받는다. In addition, the processing unit PU nm 700 outputs a DSEL nm signal, which is a signal for selecting data necessary for the operation in the data set D nm , and receives DA nm and DB nm as input operation data.

그리고 처리 유닛 PUnm(700)은 내부적으로 명령어 디코더(Instruction Decoder)(710), 내부 실행 유닛(Execution Unit)(720), 입출력 선택을 위한 RSelector(740) 및 ISelector(730-1, 730-2)를 포함한다. The processing unit PU nm 700 internally includes an instruction decoder 710, an execution unit 720, an RS selector 740 for selecting input and output, and ISelectors 730-1 and 730-2 ).

처리 유닛 PUnm(700)은 입력된 명령어를 분석하고, 처리해야 하는 연산의 종류를 명시하여 실행 유닛으로 전달함으로써 데이터를 처리한다. 또한, 명령어 디코더(710)는 이전 단계 결과 선택 및 다음 단계 선택을 위한 신호를 생성한다. 그리고 입력 결과 셀렉터(RSelector)(740)는 디코더의 결과에 따라 입력되는 이전 단계의 결과를 사용할지 여부를 선택하고, 출력 셀렉터(ISelector)(730-1, 730-2)는 다음 단계에 어떤 처리 유닛으로 명령어 및 연산 결과를 전달할지를 결정한다. The processing unit PU nm 700 analyzes the input command, processes the data by specifying the type of the operation to be processed and transmitting it to the execution unit. In addition, the instruction decoder 710 generates a signal for previous stage result selection and next stage selection. Then, the input selector (RSelector) 740 selects whether or not to use the result of the previous step input according to the result of the decoder, and the output selectors (ISelector) 730-1 and 730-2 perform processing Decide whether to transfer the instruction and operation result to the unit.

또한, 명령어 디코더(710)는 데이터 셀렉션 신호인 DSELnm 신호를 생성하고, 데이터 셀렉션 계층의 Snm를 통하여 입력 연산 데이터인 DAnm, DBnm을 입력받도록 한다. Also, the command decoder 710 generates a DSEL nm signal, which is a data selection signal, and receives input data DA nm and DB nm through S nm of the data selection layer.

설명의 편의상, 처리 유닛이 셀렉터 유닛을 포함하는 것으로 설명하였으나, 이에 한정하지 않고, 별도의 외부 셀렉터 유닛을 사용하여 구현될 수 있다. 또한, 외부의 셀렉터 유닛을 별도로 사용하거나, 처리 유닛이 1차원으로 연결되는 경우, 또는 필요에 따라 ISelector, RSelector, DSELnm 등은 선택적으로 생략되어 구현될 수 있다. For convenience of explanation, the processing unit has been described as including a selector unit, but the present invention is not limited thereto, and can be implemented using a separate external selector unit. Also, the external selector unit may be used separately, or the processing unit may be connected in one dimension, or the ISelector, the RSelector, the DSEL nm, and the like may be selectively omitted if necessary.

도 8은 본 발명의 일실시예에 따른 셀렉터 유닛의 구조를 설명하기 위한 도면이다.8 is a view for explaining a structure of a selector unit according to an embodiment of the present invention.

도 8와 같이, 셀렉터 유닛(800)은 처리 유닛(PUnm)으로부터 전달받은 DSELnm 신호를 이용하여, 연산에 사용될 데이터를 선택하여 출력한다. 즉, 셀렉터 유닛(800)은 DSELnm 신호를 이용하여 데이터 셋(Dnm)을 구성하는 D(n-1)m, Dn (m-1), Dnm, D(n+1)m, Dn (m+1) 데이터 들 중에서 연산에 사용될 데이터 DAnm, DBnm을 선택한다. 이때, 데이터 셋(Dnm)을 구성하는 데이터의 종류 및 개수는 도 8의 설명으로 제한되지 않는다. As shown in Fig. 8, the selector unit 800 selects and outputs data to be used for the calculation using the DSEL nm signal transmitted from the processing unit PU nm . That is, the selector unit 800 by using the DSEL nm signal dataset D constituting (D nm) (n-1) m, D n (m-1), D nm, D (n + 1) m, Data DA nm and DB nm to be used in the operation are selected from the D n (m + 1) data. At this time, the types and the number of data constituting the data set (D nm ) are not limited to the description of FIG.

도 9는 본 발명의 일실시예에 따른 명령어 셋의 구조를 설명하기 위한 도면이다.9 is a diagram illustrating a structure of an instruction set according to an embodiment of the present invention.

도 9와 같이, 명령어 셋(900)은 하나 이상의 연산자(901), 복수개의 피연산자(OPERAND_A, OPERAND_B)(902, 903) 및 하나 이상의 연산 결과(OPERAND_C)(904)로 구성된다. 9, the instruction set 900 is composed of one or more operators 901, a plurality of operands OPERAND_A and OPERAND_B 902 and 903, and one or more operation results OPERAND_C 904.

먼저, 연산자(901)는 처리 유닛 내의 실행 유닛에서 수행할 연산의 종류를 의미한다. First, the operator 901 indicates the type of operation to be performed in the execution unit in the processing unit.

그리고 제1 피연산자(902) 및 제2 피연산자(903)는 실행 유닛에서 필요로 하는 메모리 내의 데이터를 의미한다. 또한, 제1 피연산자(902) 및 제2 피연산자(903)는 셀렉터 유닛을 위한 DSELnm 신호 생성에 사용된다. And the first operand 902 and the second operand 903 refer to data in a memory required by the execution unit. Also, the first operand 902 and the second operand 903 are used to generate the DSELnm signal for the selector unit.

마지막으로, 연산 결과(904)는 처리 유닛이 이전 단계의 출력을 사용할지 여부, 현재 처리 유닛이 다음 단계에 어느 처리 유닛으로 결과를 전달할지에 관한 정보를 의미한다. 또한, 연산 결과(904)는 처리 유닛 내의 RSelector 및 ISelector의 제어에 사용될 수 있다. Finally, the operation result 904 means information about whether or not the processing unit uses the output of the previous step, and to which processing unit the current processing unit delivers the result to the next step. Further, the operation result 904 can be used to control RSelector and ISelector in the processing unit.

설명의 편의상 명령어 셋의 구조가 도 9와 같은 것으로 설명하였으나, 명령어 셋 내의 필드별 비트 폭, 비트별 할당 등의 방식 및 구성은 이에 한정되지 않는다. For convenience of explanation, the structure of the instruction set has been described with reference to FIG. 9. However, the method and structure of the bit width and bit allocation for each field in the instruction set are not limited thereto.

이상에서와 같이 본 발명에 따른 처리 유닛, 인-메모리 데이터 처리 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.As described above, the processing unit, the in-memory data processing apparatus, and the method according to the present invention can be applied to a case where the configuration and method of the embodiments described above are not limitedly applied, All or some of the embodiments may be selectively combined.

10: 처리 유닛
20: 명령어 메모리
30: 데이터 메모리
200: 인-메모리 데이터 처리 장치
210: 메모리
220: 복수개의 셀렉터 유닛들
230: 복수개의 처리 유닛들
510, 610: 처리 계층
511: 처리 유닛
520, 620: 데이터 셀렉션 계층
522: 셀렉터 유닛
530, 630: 데이터 계층
533: 데이터 셋
700: 처리 유닛
710: 명령어 디코더
720: 내부 실행 유닛
730: 출력 셀렉터
740: 입력 셀렉터
800: 셀렉터 유닛
801~805: 데이터 셋
900: 명령어 셋
901: 연산자 필드
902: 제1 피연산자 필드
903: 제2 피연산자 필드
904: 연산결과 필드
10: Processing unit
20: Instruction memory
30: Data memory
200: In-memory data processing device
210: memory
220: a plurality of selector units
230: a plurality of processing units
510, 610: processing layer
511: Processing unit
520, 620: Data selection layer
522: selector unit
530, 630: Data layer
533: Dataset
700: Processing unit
710: Instruction decoder
720: Internal execution unit
730: Output selector
740: Input selector
800: selector unit
801 to 805: Data set
900: instruction set
901: Operator field
902: first operand field
903: Second operand field
904: Operation result field

Claims (21)

정해진 위치에 데이터를 저장하는 메모리,
저장된 상기 데이터 중에서 연산에 사용할 데이터 셋을 선택하는 복수개의 셀렉터 유닛들, 그리고
외부로부터 순차적으로 인가받은 명령어 셋과 선택된 상기 데이터 셋을 이용하여 연산을 수행하는 복수개의 처리 유닛들
을 포함하는 인-메모리 데이터 처리 장치.
A memory for storing data at a predetermined position,
A plurality of selector units for selecting a data set to be used in the operation from among the stored data, and
A plurality of processing units for performing an operation using an instruction set sequentially applied from the outside and the selected data set,
Memory device.
제1항에 있어서,
상기 복수개의 처리 유닛들은,
다차원 배열로 상호 연결되어 구성된 것을 특징으로 하는 인-메모리 데이터 처리 장치.
The method according to claim 1,
The plurality of processing units may include:
Dimensional array, and are interconnected in a multi-dimensional array.
제1항에 있어서,
상기 메모리에 저장된 각각의 상기 데이터들은,
상기 처리 유닛과 상기 셀렉터 유닛을 통하여, 각각의 상기 처리 유닛으로 직접 연결되는 것을 특징으로 하는 인-메모리 데이터 처리 장치.
The method according to claim 1,
Each said data stored in said memory,
Through the processing unit and the selector unit, directly to each of the processing units.
제1항에 있어서,
상기 셀렉터 유닛의 수는, 상기 복수개의 처리 유닛들의 개수에 상응하며, 상기 복수개의 셀렉터 유닛들은 다차원 배열로 상호 연결되어 구성된 것을 특징으로 하는 인-메모리 데이터 처리 장치.
The method according to claim 1,
Wherein the number of selector units corresponds to the number of the plurality of processing units, and the plurality of selector units are interconnected in a multi-dimensional array.
제4항에 있어서,
상기 각각의 처리 유닛들은, 상기 처리 유닛이 처리할 데이터를 선택하는 상기 셀렉터 유닛과 쌍을 이루는 것을 특징으로 하는 인-메모리 데이터 처리 장치.
5. The method of claim 4,
Wherein each of the processing units is paired with the selector unit for selecting data to be processed by the processing unit.
제5항에 있어서,
상기 각각의 셀렉터 유닛들은,
상기 쌍을 이룬 각각의 처리 유닛들이 상기 메모리의 특정 위치에 저장된 데이터와 결합하여 쌍을 이루도록 하는 것을 특징으로 하는 인-메모리 데이터 처리 장치.
6. The method of claim 5,
Each of the selector units comprising:
Wherein each of the paired processing units is coupled with data stored in a specific location in the memory to form a pair.
제6항에 있어서,
상기 처리 유닛과 상기 데이터의 쌍은 직렬로 연결되어, 상기 각각의 처리 유닛들에 의해 연산되는 것을 특징으로 하는 인-메모리 데이터 처리 장치.
The method according to claim 6,
Wherein the processing unit and the data pair are connected in series and are operated by the respective processing units.
제7항에 있어서,
상기 처리 유닛의 입력은,
인접한 이전 처리 유닛으로부터 수신된 것으로, 해당 상기 처리 유닛이 수행할 연산과 데이터 지정 명령어인 이전 명령어 및 이전 처리 결과와, 상기 처리 유닛에 상응하는 상기 셀렉터 유닛으로부터 수신된 상기 데이터인 것을 특징으로 하는 인-메모리 데이터 처리 장치.
8. The method of claim 7,
The input of the processing unit
Characterized in that the data is received from an adjacent previous processing unit and is the data received from the selector unit corresponding to the processing unit and a previous instruction and previous processing result which is an operation to be performed by the corresponding processing unit and a data designation instruction - a memory data processing device.
제8항에 있어서,
상기 처리 유닛의 출력은,
상기 처리 유닛이 입력받아 수행중인 명령어, 상기 명령어에 상응하는 처리 결과인 것을 특징으로 하는 인-메모리 데이터 처리 장치.
9. The method of claim 8,
The output of the processing unit
Wherein the processing unit is an instruction to be input and executed and a processing result corresponding to the instruction.
제9항에 있어서,
상기 처리 유닛들은,
상기 처리 유닛의 출력인 상기 명령어 및 상기 처리 결과를 인접한 다음 처리 유닛으로 전달하기 위하여, 공통의 클럭을 사용하거나, 비동기적 핸드쉐이킹 방식을 사용하는 것을 특징으로 하는 인-메모리 데이터 처리 장치.
10. The method of claim 9,
The processing units,
Characterized by using a common clock or an asynchronous handshaking scheme in order to transfer the instruction and the result of the processing which are the output of the processing unit to the next adjacent processing unit.
제9항에 있어서,
상기 처리 유닛은, 상기 연산에 사용할 데이터의 선택을 요청하는 데이터 선택 신호를 상기 처리 유닛에 상응하는 상기 셀렉터 유닛으로 출력하고,
상기 셀렉터 유닛은, 상기 처리 유닛에 상응하는 상기 데이터 셋 중에서 일부의 데이터를 선택하여 상기 처리 유닛으로 전송하는 것을 특징으로 하는 인-메모리 데이터 처리 장치.
10. The method of claim 9,
The processing unit outputs a data selection signal for requesting selection of data to be used for the operation to the selector unit corresponding to the processing unit,
Wherein the selector unit selects a part of the data set corresponding to the processing unit and transmits the selected data to the processing unit.
제1항에 있어서,
상기 명령어 셋은, 상기 처리 유닛으로 순차적으로 인가되며,
상기 명령어 셋에 포함된 명령어는, 하나 이상의 연산자 필드, 복수개의 피연산자 필드들, 하나 이상의 연산결과 필드로 구성된 것을 특징으로 하는 인-메모리 데이터 처리 장치.
The method according to claim 1,
Wherein the instruction set is sequentially applied to the processing unit,
Wherein the instructions contained in the instruction set comprise one or more operator fields, a plurality of operand fields, and one or more operation result fields.
수행할 연산과 상기 연산에 사용되는 데이터를 포함하는 명령어를 디코딩하여 제어 신호를 생성하는 명령어 디코더,
상기 명령어에 상응하도록 상기 데이터를 연산하는 내부 실행 유닛,
상기 제어 신호를 이용하여, 입력된 이전 처리 유닛의 처리 결과를 사용할지 여부를 판단하는 입력 결과 셀렉터, 그리고
상기 명령어 및 상기 명령어에 상응하는 처리 결과를 전달할 다음 처리 유닛을 선택하는 출력 셀렉터
를 포함하는 처리 유닛.
A command decoder for decoding a command including an operation to be performed and data used for the operation to generate a control signal,
An internal execution unit for calculating the data to correspond to the instruction,
An input result selector for using the control signal to determine whether to use the processing result of the input previous processing unit,
An output selector for selecting the next processing unit to communicate the instruction and a processing result corresponding to the instruction;
.
제13항에 있어서,
상기 명령어 디코더는,
외부로부터 순차적으로 인가받은 명령어 셋 또는 인접한 이전 처리 유닛으로부터 수신된 이전 명령어를 디코딩하는 것을 특징으로 하는 단위 처리 유닛.
14. The method of claim 13,
Wherein the instruction decoder comprises:
And decodes a previous command received from an externally-supplied instruction set or an adjacent previous processing unit.
제13항에 있어서,
상기 내부 실행 유닛은,
상기 처리 유닛이 수행중인 상기 명령어 및 상기 명령어에 상응하는 처리 결과를 출력하는 것을 특징으로 하는 처리 유닛.
14. The method of claim 13,
The internal execution unit,
And the processing unit outputs the instruction that is being executed and the processing result corresponding to the instruction.
제14항에 있어서,
상기 명령어 셋은,
하나 이상의 연산자 필드, 복수개의 피연산자 필드들, 하나 이상의 연산결과 필드로 구성된 것을 특징으로 하는 처리 유닛.
15. The method of claim 14,
The instruction set includes:
One or more operand fields, a plurality of operand fields, and one or more operation result fields.
제16항에 있어서,
상기 연산자 필드는, 상기 내부 실행 유닛에서 수행할 연산의 종류를 의미하고,
상기 피연산자 필드는, 데이터 셋 중에서 연산에 필요한 데이터를 의미하며,
상기 연산결과 필드는, 상기 이전 처리 유닛의 처리 결과를 사용하여 상기 처리 유닛이 연산을 수행할지 여부를 의미하거나, 상기 처리 유닛의 연산 결과를 상기 다음 처리 유닛으로 전달할지 여부를 의미하는 것을 특징으로 하는 처리 유닛.
17. The method of claim 16,
The operator field indicates a type of operation to be performed in the internal execution unit,
The operand field indicates data necessary for operation in the data set,
Wherein the operation result field indicates whether the processing unit performs an operation using the processing result of the previous processing unit or whether or not to transmit an operation result of the processing unit to the next processing unit .
제13항에 있어서,
상기 처리 유닛은,
상기 데이터가 저장된 메모리 장치에 내장된 것을 특징으로 하는 처리 유닛.
14. The method of claim 13,
The processing unit includes:
Wherein the data is embedded in a memory device in which the data is stored.
인-메모리 데이터 처리 장치에 의해 수행되는 데이터 처리 방법에 있어서,
외부로부터 순차적으로 명령어 셋을 인가받는 단계,
셀렉터 유닛을 이용하여, 정해진 위치에 데이터가 저장된 메모리에서 상기 명령어 셋에 상응하는 연산에 사용할 데이터 셋을 선택하는 단계, 그리고
복수개의 처리 유닛들을 이용하여, 상기 명령어 셋과 상기 데이터 셋에 상응하는 연산을 수행하는 단계를 포함하는 데이터 처리 방법.
A data processing method performed by an in-memory data processing apparatus,
Receiving an instruction set sequentially from the outside,
Selecting a data set to be used in an operation corresponding to the instruction set in a memory in which data is stored at a predetermined position using a selector unit,
And using the plurality of processing units to perform an operation corresponding to the instruction set and the data set.
제19항에 있어서,
상기 복수개의 처리 유닛들은,
다차원 배열로 상호 연결되어 구성된 것을 특징으로 하는 데이터 처리 방법.
20. The method of claim 19,
The plurality of processing units may include:
Dimensional arrays are interconnected in a multi-dimensional array.
제20항에 있어서,
상기 명령어 셋에 포함된 각각의 명령어들을 인접한 다음 처리 유닛으로 전달하는 단계를 더 포함하는 데이터 처리 방법.
21. The method of claim 20,
And forwarding each of the instructions contained in the instruction set to an adjacent next processing unit.
KR1020160010215A 2016-01-27 2016-01-27 Processing unit, apparatus and method for in-memory data processing KR20170089678A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160010215A KR20170089678A (en) 2016-01-27 2016-01-27 Processing unit, apparatus and method for in-memory data processing
US15/198,555 US20170213581A1 (en) 2016-01-27 2016-06-30 Processing unit, in-memory data processing apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160010215A KR20170089678A (en) 2016-01-27 2016-01-27 Processing unit, apparatus and method for in-memory data processing

Publications (1)

Publication Number Publication Date
KR20170089678A true KR20170089678A (en) 2017-08-04

Family

ID=59359865

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160010215A KR20170089678A (en) 2016-01-27 2016-01-27 Processing unit, apparatus and method for in-memory data processing

Country Status (2)

Country Link
US (1) US20170213581A1 (en)
KR (1) KR20170089678A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021020646A1 (en) * 2019-07-29 2021-02-04 전자부품연구원 Processing-in-memory control method for efficient instruction processing and computing device applying same

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182158B2 (en) * 2019-05-22 2021-11-23 Intel Corporation Technologies for providing adaptive memory media management
US11372585B2 (en) 2020-05-05 2022-06-28 Micron Technology, Inc. Asynchronous process topology in a memory device

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001184300A (en) * 1999-12-27 2001-07-06 Hitachi Ltd Data processing processor
US6928501B2 (en) * 2001-10-15 2005-08-09 Silicon Laboratories, Inc. Serial device daisy chaining method and apparatus
GB2419006B (en) * 2002-04-22 2006-06-07 Micron Technology Inc Providing a register file memory with local addressing in a SIMD parallel processor
US20070076502A1 (en) * 2005-09-30 2007-04-05 Pyeon Hong B Daisy chain cascading devices
US7752364B2 (en) * 2006-12-06 2010-07-06 Mosaid Technologies Incorporated Apparatus and method for communicating with semiconductor devices of a serial interconnection

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021020646A1 (en) * 2019-07-29 2021-02-04 전자부품연구원 Processing-in-memory control method for efficient instruction processing and computing device applying same
US11907578B2 (en) 2019-07-29 2024-02-20 Korea Electronics Technology Institute Processing-in-memory control method for efficient instruction processing and computing device applying same

Also Published As

Publication number Publication date
US20170213581A1 (en) 2017-07-27

Similar Documents

Publication Publication Date Title
CN109147842B (en) Apparatus and method for simultaneous computational operations in a data path
CN110326046B (en) Apparatus and method for computation in a data path
CN111512292A (en) Apparatus, method and system for unstructured data flow in a configurable spatial accelerator
US20180293203A1 (en) Processing apparatus and methods
US10678541B2 (en) Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
CN111656339B (en) Memory device and control method thereof
US11474965B2 (en) Apparatuses and methods for in-memory data switching networks
KR102318531B1 (en) Streaming memory transpose operations
US8959275B2 (en) Byte selection and steering logic for combined byte shift and byte permute vector unit
JP2010102719A (en) Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in memory subsystem
KR20030067892A (en) Apparatus and method for dispatching very long instruction word with variable length
EP3729261B1 (en) A centralized-distributed mixed organization of shared memory for neural network processing
US11640444B2 (en) Device and method for accelerating matrix multiply operations
CN112148251A (en) System and method for skipping meaningless matrix operations
US20210117375A1 (en) Vector Processor with Vector First and Multiple Lane Configuration
US8024549B2 (en) Two-dimensional processor array of processing elements
KR20170089678A (en) Processing unit, apparatus and method for in-memory data processing
CN111164583A (en) Runtime optimization of configurable hardware
JP6130058B2 (en) An array of reconfigurable instruction cells with conditional channel routing and in-place functionality
KR100722428B1 (en) Resource Sharing and Pipelining in Coarse-Grained Reconfigurable Architecture
KR20230162012A (en) System and method for aggregated multicast data transfers over memory interfaces