WO2021020646A1 - 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치 - Google Patents

효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치 Download PDF

Info

Publication number
WO2021020646A1
WO2021020646A1 PCT/KR2019/012758 KR2019012758W WO2021020646A1 WO 2021020646 A1 WO2021020646 A1 WO 2021020646A1 KR 2019012758 W KR2019012758 W KR 2019012758W WO 2021020646 A1 WO2021020646 A1 WO 2021020646A1
Authority
WO
WIPO (PCT)
Prior art keywords
operands
memory
instruction
processing
command
Prior art date
Application number
PCT/KR2019/012758
Other languages
English (en)
French (fr)
Inventor
김영규
김병수
장영종
Original Assignee
전자부품연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 전자부품연구원 filed Critical 전자부품연구원
Publication of WO2021020646A1 publication Critical patent/WO2021020646A1/ko
Priority to US17/587,239 priority Critical patent/US11907578B2/en

Links

Images

Classifications

    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields

Definitions

  • the present invention relates to a processing-in-memory (Processing in Memory), and more particularly, to a processing-in-memory control method for efficient instruction processing and an operation device to which the same.
  • Processing-in-memory is a next-generation memory in which a memory and a processing unit are integrated into a single chip, and improves system performance and power efficiency by reducing the frequency with which a processor accesses memory for computation.
  • the processor's processing-in-memory approach differs from the traditional memory approach by using both address and data signals as well as instruction signals for operations. Since the processing-in-memory processing unit processes instructions received from the processor, if it has high hardware complexity, the performance of the processing-in-memory as a memory decreases. Therefore, since the performance of the processing-in-memory as a memory should not be significantly degraded, the computing device requires as low a hardware complexity as possible, and thus supports only relatively simple operations.
  • the computing unit needs to access one or more operands to process instructions related to the operation, and the actual processing-in-memory operation is treated as an atomic operation.
  • Processing-in-memory is known to have the greatest system benefit when used in data-intensive applications. Therefore, when processing one instruction, the more operands are accessed so as to become a computing device, the more the processing-in-memory design intent is met.
  • the operation logic of the operation unit is relatively simple because it is the general processing-in-memory design direction to process only relatively simple operations, but the existing processor needs to access as many operands as necessary according to the instruction. Applying the design method increases hardware complexity more than necessary. This is a problem that occurs because a finite-state machine and a control device for all commands supported by the computing device must be created.
  • the present invention provides a method for classifying instructions according to the number of operands required for processing-in-memory instruction processing in order to overcome the aforementioned disadvantages of the prior art, and a data path and a control unit of a conventional processor.
  • a computing device including a finite state machine to which the instruction classification method is applied is proposed without following the hardware structure of the classified computing device.
  • the present invention provides a control method for classifying and processing instructions according to the number of operands, and a computing device applying the same.
  • determining the number of operands required when processing an instruction waiting to be processed the steps of: determining the number of operands required when processing an instruction waiting to be processed; Interpreting the command waiting to be processed; And processing a command corresponding to the identified number of required operands, wherein when the number of required operands identified in the step of determining the number of operands is 0, the command interpreting step performs the processing waiting command.
  • the command processing step executes a memory write, and the number of required operands identified in the step of determining the number of operands is not 0, the command processing step is the command interpreted in the command interpreting step
  • Provides a processing-in-memory control method characterized in that memory reads are performed from an internal memory of a processing-in-memory at the same number of times as the number of operands required in the process.
  • a processing-in-memory operation device for efficient instruction processing in a processing-in-memory includes an instruction interpreting unit for determining the number of operands required during instruction processing, and the instruction analysis.
  • the primary memory read unit is implemented by the instruction analysis unit, the required number of operands is 1, and the read response unit is executed when the number of operands is read, If the number of required operands is 2, the secondary memory read unit is implemented, when the number of operands requested is 3, the memory read unit is implemented three times, and the required number of operands is 1 and is not a read command.
  • a command processing unit implemented when at least one of the required number of operands is two or more, and a memory writing unit implemented except for a case where the required number of operands is one and a read command is included.
  • 1 is a diagram illustrating instructions classified according to the number of operands according to the present invention.
  • FIG. 2 is a schematic flowchart of a method of processing an instruction according to a required number of operands according to an embodiment of the present invention.
  • 3 to 6 are flowcharts of a method of processing instructions according to the number of specific instructions according to an embodiment of the present invention.
  • FIG. 7 is a view showing a finite state machine of the computing device according to an embodiment of the present invention.
  • FIG. 8 is a hardware structure diagram of a computing device including a finite state machine according to an embodiment of the present invention.
  • FIG. 1 is a diagram showing a method for classifying instructions according to an embodiment of the present invention.
  • the instructions described in FIG. 1 are examples, and the present invention can be applied regardless of the type and number of instructions.
  • Types of instructions according to the present embodiment include a read instruction, a write instruction, and an I-type (Immediate Type) instruction for operation, and an R-type (Recall Type) instruction, which are basic functions of memory.
  • I-type Intermediate Type
  • R-type Return Type
  • A-type Accelerate Type
  • SORT instruction 50 of FIG. 1 is an example of an A-type instruction.
  • Memory reads are performed from the internal memory of the processing-in-memory at the same number of times as the number of operands required in each instruction. For example, if the number of operands required in a specific instruction is 1, memory read is performed once in the processing-in-memory internal memory, and if the number of operands required is 2, the memory in processing-in-memory Read 2 times.
  • the instruction classification of processing-in-memory is classified by the number of operands required in each instruction. This has the same effect as classification based on the read operation of the internal memory.
  • the internal memory is accessed once for a write operation, but since no operand is required, the number of operands requiring a write instruction is 0.
  • the read command and the I-type command require one operand to process the command.
  • A-type instruction SORT reads all three operands and processes them. It is a command.
  • the instruction value (Opcode) for the instruction is 6 bits, and the upper 2 bits of the instruction value are the number of operands required for instruction processing (10).
  • instruction value is not limited to 6 bits, and may be variously set, such as 8 bits and 16 bits, and the number of operands required for instruction processing may also be variously set to the upper 3 bits and 4 bits.
  • the SORT instruction is a case in which the upper 2 bits (10) are the binary value 11, and the number of operands required in the instruction is 3 (50).
  • the number of required operands may be variously set from 0 to 5 instead of 0 to 3, and accordingly, instruction classification is different from the present embodiment. Of course it can be implemented.
  • FIG. 2 is a schematic flowchart of a method of processing an instruction according to the required number of operands according to an embodiment of the present invention.
  • FIG. 2 is a schematic flowchart of a method of processing an instruction when the maximum number of operands required for processing an instruction among a plurality of instructions is n.
  • n means a natural number of 3 or more.
  • the number of operands required when processing each instruction is determined (110).
  • the number of required operands is not 0, it is determined whether the required number of operands is 1 (130). If the required number of operands is correct, since it is a read instruction or an I-type instruction, a read response or memory write 135 is performed after reading the memory once.
  • the number of required operands is not 0 or 1
  • the number of required operands is continuously checked to determine whether the required number of operands is n-1 (150). If the required number of operands is n-1, the memory is read n-1 times and then memory write 155 is performed.
  • the memory In order to process an instruction in which the number of operands finally required is n (the maximum number of operands required among the instructions to be processed), the memory is read n times and then the memory write 160 is performed.
  • FIG. 3 is a flowchart of an instruction processing method when the number of required operands is 0.
  • the number of operands required in the present embodiment is 0, it is a write command, and the command is interpreted (220) in the waiting state 210 before processing the command, and the result is written to the memory (230).
  • FIG. 4 is a flowchart of an instruction processing method when the required number of operands is one.
  • the number of operands required in the present embodiment is 1, it is a read instruction or an I-type instruction, and the instruction is interpreted (320) and the primary memory read (330) is performed in the standby state 310 before instruction processing. Since the required number of operands is one, it is only necessary to read the memory once.
  • a read command it is determined whether it is a read command or not (340). In the case of a read command, a response 350 to the read is performed, and if the command is not a read command, since it is an I-type command, the corresponding command is processed (360) and the result is written to the memory (370).
  • FIG. 5 is a flowchart of an instruction processing method when the required number of operands is two.
  • the number of operands required in this embodiment is two, it is an R-type instruction, and the instruction is interpreted (420) and the primary memory read (430) is performed in a standby state 410 before instruction processing.
  • n is a natural number of 3 or more as described above.
  • the number of operands required in this embodiment is n, it is an A-type instruction that is an acceleration instruction, and the instruction is interpreted in the standby state 510 before processing the instruction (520), and since the number of operands required is n, n Read the meeting memory (530). Then, the instruction is processed (540) and the result is written to memory (550).
  • the required number of operands is 3, it is an A-type instruction, SORT, and the instruction is interpreted (520) and memory read (530) three times in a state of waiting 510 before instruction processing. Then, the instruction is processed (540) and the result is written to memory (550).
  • FIG. 7 shows a finite state machine 600 of a computing device according to an embodiment of the present invention.
  • the finite state machine 600 according to the present embodiment classifies instructions according to the number of required operands and processes the instructions accordingly.
  • the finite state machine 600 transitions to required states through instruction interpretation and performs an operation.
  • the number of used states is minimized while performing the above-described command processing method as it is by reusing states that are repeatedly used among states required for command processing. That is, while maintaining the hardware complexity as low as possible, the processing-in-memory maintains the performance of the memory, while accessing as many operands as possible so that it can be used in an intensive application program.
  • the commands before processing are in a standby state 610, and the command interpreting unit 620 interprets the commands. Instruction interpretation is to determine the next state to transition through the high-order bits of the instruction value of FIG. 1.
  • the upper 2 bits (10) are the binary value 00
  • the number of operands required in the instruction is 0 (20)
  • the write instruction corresponds to this.
  • the upper 2 bits (10) are the binary value 01
  • the number of operands required in the instruction is one (30)
  • a read instruction and an I-type instruction correspond to this.
  • the upper 2 bits (10) are the binary value of 10
  • the number of operands required in the instruction is 2 (40)
  • the R-type instruction corresponds to this.
  • the SORT instruction which is an A-type instruction, is a case in which the upper 2 bits (10) have a binary value of 11, and the number of operands required in the instruction is 3 (50).
  • the memory write unit 680 writes the memory without reading the memory, and returns to the standby state 610. Come back.
  • the primary memory read unit 640 performs one memory read. At this time, in the case of a read command, after a read response from the read response unit 630 is passed, it returns to the standby state 610, and in the case of an I-type command, the command is processed by the command processing unit 670 and the result is processed.
  • the memory write unit 680 writes to the memory and then returns to the standby state 610. At this time, it can be seen that the command interpreting unit 620 is being reused.
  • the second memory in the secondary memory reading unit 650 after one memory read by the primary memory reading unit 640 It reads and goes through a total of two memory reads. Then, the command is processed by the command processing unit 670, the memory writing unit 680 writes the result to the memory, and then returns to the standby state 610. At this time, it can be seen that the command interpreting unit 620, the primary memory reading unit 640, the command processing unit 670, and the memory writing unit 680 are being reused.
  • the number of operands required through the instruction analysis of the instruction analysis unit 620 is n, it is an A-type instruction that is an acceleration instruction, so memory read as much as the number of operands in the memory reading unit 660 is performed n times.
  • the command is processed by the command processing unit 670, and the result is written to the memory by the memory writing unit 680 and then returned to the standby state 610.
  • the memory since the number of operands required through instruction interpretation in the instruction interpretation unit 620 is three, the memory reads n times in the memory reader 660 three times. After proceeding, the instruction processing unit 670 processes the command, the memory writing unit 680 writes the result to the memory, and returns to the standby state 610. In this case, it can be seen that the command interpreting unit 620, the command processing unit 670, and the memory writing unit 680 are being reused.
  • FIG. 8 shows a hardware structure of a computing device 700 including a finite state machine according to an embodiment of the present invention.
  • the memory controller 730 may be located inside the computing device or may be located outside as a device independent from the computing device, but there is no functional difference between the two cases. In this embodiment, the memory controller 730 is located inside the computing device for the sake of brevity of the drawing.
  • the computing device may have devices such as a logic calculator 741, an adder 742, a comparator 743, and an acceleration calculator 744 for processing various commands, and the result of one of these devices through the interpretation of the command to be processed.
  • devices such as a logic calculator 741, an adder 742, a comparator 743, and an acceleration calculator 744 for processing various commands, and the result of one of these devices through the interpretation of the command to be processed.
  • Data responded by the memory controller 730 may be classified into rs- operand, rd- operand, and read response data according to the type of command and the control signal of the finite state machine 600.
  • the address for accessing the operand one of rs, rd, and addresses generated by the acceleration command address generator 750 is selected according to the processing command.
  • the atomic operation of the processing-in-memory transfers only the base address for efficient bus use, so the acceleration instruction address generator 750 determines the addresses of operands required for instruction processing based on the base address. Generate.
  • the finite state machine 600 generates an accurate operand address through the operand number counter 710 when it is necessary to access three or more operands and determines the number of operands.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 프로세싱-인-메모리 명령어 처리에 필요한 피연산자의 개수에 따라 명령어를 분류하는 방법 및 이를 적용한 연산장치를 제공한다. 프로세싱-인-메모리에서의 효율적인 명령어 처리에 있어서, 처리 대기 중인 명령어를 처리할 때 요구되는 피연산자의 개수를 파악하는 단계; 상기 처리 대기 중인 명령어를 해석하는 단계; 및 상기 파악된 요구되는 피연산자의 개수에 대응되는 명령어를 처리하는 단계를 포함한다. 요구되는 피연산자의 개수가 0개인 경우에, 상기 명령어 해석 단계는 상기 처리 대기 명령어를 쓰기 명령어로 해석하고, 상기 명령어 처리 단계는 메모리쓰기를 실행한다. 상기 요구되는 피연산자의 개수가 0개가 아닌 경우에는, 상기 명령어 처리 단계는 상기 명령어 해석 단계에서 해석된 명령어에서 요구되는 피연산자 개수와 같은 횟수로 프로세싱-인-메모리의 내부 메모리에서 메모리읽기를 실행한다.

Description

효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치
본 발명은 프로세싱-인-메모리(Processing in Memory)에 관한 것으로서, 구체적으로는 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치에 관한 것이다.
프로세싱-인-메모리는 메모리와 연산장치(Processing Unit)가 하나의 칩으로 집적된 차세대 메모리로서, 프로세서가 연산을 위해 메모리에 접근하는 빈도를 감소시킴으로써 시스템의 성능과 전력효율을 향상시킨다. 프로세서의 프로세싱-인-메모리 접근 방식은 전통적인 메모리 접근 방식과 다르게 주소와 데이터 신호들 외에 연산을 위한 명령어 신호를 함께 사용한다. 프로세싱-인-메모리의 연산장치는 프로세서로부터 전달받은 명령어를 처리하기 때문에 높은 하드웨어 복잡도를 갖게 되면, 프로세싱-인-메모리의 메모리로서의 성능이 저하된다. 따라서, 프로세싱-인-메모리의 메모리로서의 성능을 크게 저하시키지 않아야 하기 때문에 연산장치는 가능한 낮은 하드웨어 복잡도가 요구되며, 이에 따라 비교적 간단한 연산만을 지원한다.
연산장치는 연산과 관련된 명령어를 처리하기 위해 하나 이상의 피연산자(Operand)에 접근해야 하며 실제 프로세싱-인-메모리의 연산은 원자적(Atomic Operation)으로 처리된다. 프로세싱-인-메모리는 데이터 집약적 응용 프로그램에 이용될 때 시스템 측면에서 이득이 가장 큰 것으로 알려져 있다. 따라서, 하나의 명령어를 처리할 때 연산장치가 되도록 많은 수의 피연산자에 접근할수록 프로세싱-인-메모리 설계 의도에 부합한다.
연산장치는 앞서 설명했듯이 비교적 간단한 연산만을 처리하는 것이 지금까지의 일반적인 프로세싱-인-메모리 설계 방향이기 때문에 연산장치의 연산로직은 비교적 간단하지만, 명령어에 따라 필요한 만큼의 피연산자에 접근해야 하므로, 기존 프로세서 설계 방법을 적용하면 필요이상으로 하드웨어 복잡도가 증가하게 된다. 이는 연산장치가 지원하는 모든 명령어를 위한 유한상태기계(Finite-State Machine)와 제어장치를 만들어주어야 하기 때문에 발생하는 문제이다.
본 발명은, 전술한 종래기술의 단점을 극복하고자 프로세싱-인-메모리 명령어 처리에 필요한 피연산자의 개수에 따라 명령어를 분류하는 방법 및 전통적인 프로세서의 데이터 패스(Data Path)와 제어장치(Control Unit)로 구분되는 연산장치의 하드웨어 구조를 따르지 않고 상기 명령어 분류 방법을 적용한 유한상태기계를 포함하는 연산장치를 제안한다.
상기 과제를 해결하기 위하여, 본 발명은 피연산자의 개수에 따라 명령어를 분류하여 처리하는 제어 방법 및 이를 적용한 연산장치를 제공한다.
구체적으로, 본 발명의 제1특징에 따르면, 프로세싱-인-메모리에서의 효율적인 명령어 처리에 있어서, 처리 대기 중인 명령어를 처리할 때 요구되는 피연산자의 개수를 파악하는 단계; 상기 처리 대기 중인 명령어를 해석하는 단계; 및 상기 파악된 요구되는 피연산자의 개수에 대응되는 명령어를 처리하는 단계를 포함하되, 상기 피연산자 개수 파악 단계에서 파악된 요구되는 피연산자의 개수가 0개인 경우에, 상기 명령어 해석 단계는 상기 처리 대기 명령어를 쓰기 명령어로 해석하고, 상기 명령어 처리 단계는 메모리쓰기를 실행하고, 상기 피연산자 개수 파악 단계에서 파악된 요구되는 피연산자의 개수가 0개가 아닌 경우에, 상기 명령어 처리 단계는 상기 명령어 해석 단계에서 해석된 명령어에서 요구되는 피연산자 개수와 같은 횟수로 프로세싱-인-메모리의 내부 메모리에서 메모리읽기를 실행하는 것을 특징으로 하는 프로세싱-인-메모리 제어 방법을 제공한다.
본 발명의 제2특징에 따르면, 프로세싱-인-메모리에서의 효율적인 명령어 처리를 위한 프로세싱-인-메모리 연산장치는, 명령어 처리시에 요구되는 피연산자 개수를 파악하는 명령어 해석부, 명령어 해석을 통해 상기 요구되는 피연산자의 개수가 1개 및 2개 중 적어도 어느 하나인 경우, 명령어 해석부에서 이행되는 1차 메모리읽기부, 상기 요구되는 피연산자의 개수가 1개이고, 읽기명령인 경우 이행되는 읽기응답부, 상기 요구되는 피연산자의 개수가 2개이면 이행되는 2차 메모리읽기부, 상기 요구되는 피연산자의 개수가 3개이면 이행되는 3회 메모리읽기부, 상기 요구되는 피연산자의 개수가 1개이며 읽기명령이 아닌 경우, 상기 요구되는 피연산자의 개수가 2개 이상인 경우 중 적어도 어느 하나인 경우 이행되는 명령어 처리부, 및 상기 요구되는 피연산자의 개수가 1개이며 읽기명령인 경우를 제외하고 이행되는 메모리 쓰기부를 포함한다.
본 발명에서 제안한 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치를 사용할 경우, 다음과 같은 이점이 있다.
프로세싱-인-메모리의 연산장치에서 명령어를 처리할 때, 유한상태기계가 거듭 사용되는 상태들을 재사용하기 때문에, 명령어 개수와 무관하게 연산장치의 하드웨어 복잡도를 일정하게 유지할 수 있다.
즉, 가능한 한 낮은 하드웨어 복잡도를 유지하여 프로세싱-인-메모리의 메모리 성능을 유지하면서도, 되도록 많은 수의 피연산자에 접근할 수 있다. 따라서, 집약적 응용프로그램에서 사용시 더 큰 효과를 보이기 때문에, 스마트카, 사물인터넷, 웨어러블 디바이스 등 다양한 분야에 보다 폭넓게 사용될 수 있다.
도 1은 본 발명에 따른 피연산자 개수에 따라 명령어를 분류한 도면.
도 2는 본 발명의 일 실시예에 따른 요구되는 피연산자 개수에 따라 명령어를 처리하는 방법의 개괄적 순서도.
도 3에서 도 6은 본 발명의 일 실시예에 따른 특정 명령어 개수에 따라 명령어를 처리하는 방법의 순서도.
도 7은 본 발명의 일 실시예에 따른 연산장치의 유한상태기계를 나타낸 도면.
도 8은 본 발명의 일 실시예에 따른 유한상태기계를 포함한 연산장치의 하드웨어 구조도.
본 발명의 이점 및 특징, 그리고 이들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 기술되어 있는 실시예를 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 기재에 의해 정의된다. 본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprise)" 또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자 이외의 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 또한, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 실행될 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 본 발명의 바람직한 실시예를 첨부 도면을 참조하여 상세히 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가급적 동일한 부호를 부여하고 또한 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있는 경우에는 그 상세한 설명을 생략한다.
도 1은 본 발명의 일 실시예에 따른 명령어 분류 방법을 나타낸 도면이다. 도 1에 기재된 명령어들은 일 예시로서, 본 발명은 명령어의 종류와 개수에 상관없이 적용 가능하다.
본 실시예에 따른 명령어의 종류는, 메모리의 기본 기능인 읽기(Read) 명령어, 쓰기(Write) 명령어 및 연산을 위한 I-type(Immediate Type) 명령어, R-type(Recall Type) 명령어가 있다. 그리고, 특정 연산의 가속을 위한 가속 명령어인 A-type(Accelerate Type) 명령어가 있으며, 도 1의 SORT 명령어(50)는 A-type 명령어의 일 예이다.
각각의 명령어에서 요구되는 피연산자 개수와 같은 횟수로 프로세싱-인-메모리의 내부 메모리에서 메모리 읽기를 수행한다. 예를 들어, 특정 명령어에서 요구되는 피연산자의 개수가 1개인 경우, 프로세싱-인-메모리 내부 메모리에서는 메모리 읽기를 1회 수행하고, 요구되는 피연산자의 개수가 2개인 경우, 프로세싱-인-메모리 에서는 메모리 읽기를 2회 수행한다.
따라서, 프로세싱-인-메모리의 명령어 분류는 각 명령어에서 요구되는 피연산자 개수로 분류한다. 이는 내부 메모리의 읽기 동작을 기준으로 분류하는 것과 같은 효과를 갖는다.
쓰기 명령어의 경우, 쓰기 동작을 위해 내부 메모리에 한 번 접근하지만 피연산자를 요구하지 않기 때문에 쓰기 명령어가 요구되는 피연산자의 개수는 0개이다. 그리고, 읽기 명령어 및 I-type 명령어는 명령어를 처리하기 위해 하나의 피연산자가 필요하다.
R-type 명령어를 처리하기 위해서는 원천주소(Source Address, rs)와 목적 주소(Destination Address, rd)에 대한 두 개의 피연산자가 필요하고, A-type 명령어인 SORT는 세 개의 피연산자를 모두 읽고 이를 처리하는 명령어이다.
본 실시예에서 명령어에 대한 명령어 값(Opcode)은 6비트이며, 명령어 값의 상위 2비트가 명령어 처리에 필요한 피연산자 개수이다(10).
그러나, 명령어 값은 6비트로 한정되는 것은 아니고 8비트, 16비트 등 다양하게 설정될 수 있으며, 명령어 처리에 요구되는 피연산자 개수 역시 상위 3비트, 4비트 등으로 다양하게 설정될 수 있음은 물론이다.
상위 2비트(10)가 2진수 값 00인 경우, 명령어에서 요구되는 피연산자의 개수는 0개이고(20), 쓰기 명령어가 이에 해당한다.
상위 2비트(10)가 2진수 값 01인 경우, 명령어에서 요구되는 피연산자의 개수는 1개이고(30), 읽기 명령어 및 I-type 명령어가 이에 해당한다.
상위 2비트(10)가 2진수 값 10인 경우, 명령어에서 요구되는 피연산자의 개수는 2개이고(40), R-type 명령어가 이에 해당한다.
SORT 명령어는 상위 2비트(10)가 2진수 값 11인 경우로서, 명령어에서 요구되는 피연산자의 개수는 3개이다(50).
이 외에도 명령어의 종류와 명령어 값을 어떻게 설정하는가에 따라서 요구되는 피연산자의 개수 역시 0개에서 3개가 아니라 0개에서 5개 등으로 다양하게 설정될 수 있고, 이에 따라 명령어 분류도 본 실시예와 다르게 실시될 수 있음은 물론이다.
이하에서, 명령어 처리 중 요구되는 피연산자 개수에 따라 명령어를 처리하는 방법에 대해서 자세하게 설명한다.
도 2는 본 발명의 일 실시예에 따른 요구되는 피연산자 개수에 따라 명령어를 처리하는 방법의 개괄적 순서도이다.
구체적으로, 도 2는 다수의 명령어 중 명령어 처리에 요구되는 피연산자의 최대 개수가 n개일 때 명령어를 처리하는 방법의 개괄적인 순서도이다. 이때, n은 3 이상의 자연수를 의미한다.
우선, 도 1에서 상술한 것처럼 각 명령어를 처리할 때 요구되는 피연산자의 개수를 파악한다(110).
그 다음, 명령어 처리 시 요구되는 피연산자의 개수가 0개인지 여부를 파악한다(120). 요구되는 피연산자의 개수가 0개라면 쓰기 명령어이므로 메모리에 쓰기(125)를 한다.
요구되는 피연산자의 개수가 0개가 아니라면, 요구되는 피연산자의 개수가 1개인지 여부를 파악한다(130). 요구되는 피연산자의 개수가 1개가 맞으면, 읽기 명령어 또는 I-type 명령어이므로, 메모리를 1회 읽은 후 읽기 응답 또는 메모리 쓰기(135)를 한다.
요구되는 피연산자의 개수가 0개도 1개도 아니라면, 요구되는 피연산자의 개수가 2개인지 여부를 파악한다(140). 요구되는 피연산자의 개수가 2개가 맞으면, R-type 명령어이므로, 메모리를 2회 읽은 후 메모리 쓰기(145)를 한다.
이런 식으로 계속하여 요구되는 피연산자의 개수를 확인하여 요구되는 피연산자의 개수가 n-1개인지 여부를 파악한다(150). 요구되는 피연산자의 개수가 n-1개가 맞으면, 메모리를 n-1회 읽은 후 메모리 쓰기(155)를 한다.
최종적으로 요구되는 피연산자의 개수가 n개(처리해야 하는 명령어 중 요구되는 최대 피연산자 개수)인 명령어 처리를 위하여 메모리를 n회 읽은 후 메모리 쓰기(160)를 한다.
도 3은 요구되는 피연산자의 개수가 0개일 때의 명령어 처리 방법의 순서도이다. 본 실시예에서 요구되는 피연산자의 개수가 0개인 경우는 쓰기 명령어로서, 명령어 처리 전 대기 상태(210)에서 명령어를 해석하여(220) 그 결과를 메모리에 쓴다(230).
도 4는 요구되는 피연산자의 개수가 1개일 때의 명령어 처리 방법의 순서도이다. 본 실시예에서 요구되는 피연산자의 개수가 1개인 경우는 읽기 명령어 또는 I-type 명령어로서, 명령어 처리 전 대기 상태(310)에서 명령어를 해석하고(320) 1차 메모리읽기(330)를 한다. 요구되는 피연산자의 개수가 1개이므로 1회의 메모리읽기만 하면 된다.
그 다음, 읽기 명령인지 아닌지를 판단한다(340). 읽기 명령일 경우, 읽기에 대한 응답(350)을 하고, 읽기 명령이 아닌 경우는 I-type 명령이므로 해당 명령어를 처리(360)하고 그 결과를 메모리에 쓴다(370).
도 5는 요구되는 피연산자의 개수가 2개일 때의 명령어 처리 방법의 순서도이다. 본 실시예에서 요구되는 피연산자의 개수가 2개인 경우는 R-type 명령어로서, 명령어 처리 전 대기 상태(410)에서 명령어를 해석하고(420) 1차 메모리읽기(430)를 한다.
요구되는 피연산자의 개수가 2개이므로 2회의 메모리읽기가 필요하므로, 1차 메모리읽기(430) 후에 2차 메모리읽기(440) 과정을 거친다. 그 다음, 해당 명령어를 처리(450)하고 그 결과를 메모리에 쓴다(460).
도 6은 요구되는 피연산자의 개수가 n개일 때의 명령어 처리 방법의 순서도이다. n은 상술한 것처럼 3이상의 자연수이다. 본 실시예에서 요구되는 피연산자의 개수가 n개인 경우는 가속명령인 A-type 명령어로서, 명령어 처리 전 대기(510) 상태에서 명령어를 해석하고(520), 요구되는 피연산자의 개수가 n개이므로 n회의 메모리읽기(530)를 한다. 그 다음, 해당 명령어를 처리(540)하고 그 결과를 메모리에 쓴다(550).
본 실시예에서는, 요구되는 피연산자의 개수가 3개인 경우는 A-type 명령어인 SORT로서, 명령어 처리 전 대기(510) 상태에서 명령어를 해석하고(520), 3회의 메모리읽기(530)를 한다. 그 다음, 해당 명령어를 처리(540)하고 그 결과를 메모리에 쓴다(550).
도 7은 본 발명의 일 실시예에 따른 연산장치의 유한상태기계(600)를 나타낸다. 본 실시예에 따른 유한상태기계(600)는 상술한 바와 같이 요구되는 피연산자의 개수에 따라 명령어를 분류하여 이에 따라 명령어를 처리하는 방법을 수행한다.
구체적으로, 유한상태기계(600)는 명령어 해석을 통해 필요한 상태(State)들로 이행(Transition)되며 연산을 수행한다. 이때, 명령어 처리에 필요한 상태들 중에서 거듭 사용되는 상태를 재사용함으로써 상술한 명령어 처리 방법을 그대로 이행하면서도 사용되는 상태의 개수는 최소화된다. 즉, 가능한 한 낮은 하드웨어 복잡도를 유지하여 프로세싱-인-메모리가 메모리서의 성능을 유지하면서도, 되도록 많은 수의 피연산자에 접근하여 집약적 응용프로그램에서도 사용할 수 있도록 한다.
우선, 처리 전인 명령어들은 대기 상태(610)에 있고, 명령어 해석부(620)에서 명령어를 해석한다. 명령어 해석은 도 1의 명령어 값의 상위 비트를 통해 이행할 다음 상태를 결정하는 것이다.
즉, 상위 2비트(10)가 2진수 값 00인 경우, 명령어에서 요구되는 피연산자의 개수는 0개이고(20), 쓰기 명령어가 이에 해당한다. 상위 2비트(10)가 2진수 값 01인 경우, 명령어에서 요구되는 피연산자의 개수는 1개이고(30), 읽기 명령어 및 I-type 명령어가 이에 해당한다. 상위 2비트(10)가 2진수 값 10인 경우, 명령어에서 요구되는 피연산자의 개수는 2개이고(40), R-type 명령어가 이에 해당한다. A-type 명령어인 SORT 명령어는 상위 2비트(10)가 2진수 값 11인 경우로서, 명령어에서 요구되는 피연산자의 개수는 3개이다(50).
우선, 명령어 해석부(620)에서의 명령어 해석을 통해 요구되는 피연산자의 개수가 0개이면, 쓰기 명령어로서, 메모리읽기 없이 메모리 쓰기부(680)에서 메모리 쓰기를 하고, 다시 대기 상태(610)로 돌아온다.
명령어 해석부(620)의 명령어 해석을 통해 요구되는 피연산자의 개수가 1개이면, 1차 메모리읽기부(640)에서 1회의 메모리읽기를 한다. 이때, 읽기 명령어인 경우는 읽기응답부(630)에서의 읽기응답을 거친 후, 대기 상태(610)로 돌아가고, I-type 명령어인 경우는 해당 명령어를 명령어 처리부(670)에서 처리하고 그 결과를 메모리 쓰기부(680)에서 메모리에 쓴 다음 대기 상태(610)로 돌아간다. 이때, 명령어 해석부(620)는 재사용되고 있는 것을 알 수 있다.
명령어 해석부(620)의 명령어 해석을 통해 요구되는 피연산자의 개수가 2개이면, 1차 메모리읽기부(640)에서의 1회 메모리읽기 후, 2차 메모리읽기부(650)에서의 두 번째 메모리읽기를 하여 총 2회의 메모리읽기 과정을 거친다. 그리고, 해당 명령어를 명령어 처리부(670)에서 처리하고 메모리 쓰기부(680)에서 그 결과를 메모리에 쓴 다음 대기 상태(610)로 돌아간다. 이때, 명령어 해석부(620), 1차 메모리읽기부(640), 명령어 처리부(670) 및 메모리 쓰기부(680)는 재사용되고 있는 것을 알 수 있다.
명령어 해석부(620)의 명령어 해석을 통해 요구되는 피연산자의 개수가 n개이면, 가속 명령인 A-type 명령어이므로, n회 메모리읽기부(660)에서 피연산자의 개수에 해당하는 만큼의 메모리읽기를 진행한 후, 해당 명령어를 명령어 처리부(670)에서 처리하고, 메모리 쓰기부(680)에서 그 결과를 메모리에 쓴 다음 대기 상태(610)로 돌아간다.
본 실시예에 따른 A-type 명령어인 SORT 명령어인 경우, 명령어 해석부(620)에서의 명령어 해석을 통해 요구되는 피연산자의 개수는 3개이므로, n회 메모리읽기부(660)에서 3회의 메모리읽기를 진행한 후, 해당 명령어를 명령어 처리부(670)에서 처리하고, 메모리 쓰기부(680)에서 그 결과를 메모리에 쓴 다음 대기 상태(610)로 돌아간다. 이때, 명령어 해석부(620), 명령어 처리부(670) 및 메모리 쓰기부(680)는 재사용되고 있는 것을 알 수 있다.
도 8은 본 발명의 일 실시예에 따른 유한상태기계를 포함한 연산장치(700)의 하드웨어 구조를 나타낸다.
메모리 컨트롤러(730)는 일반적으로 연산장치의 내부에 위치할 수도 있고 연산장치와 독립적인 장치로 외부에 위치할 수도 있지만 두 경우의 기능적적 차이는 없다. 본 실시예에서는 도면의 간결함을 위해 메모리 컨트롤러(730)를 연산장치 내부에 위치시켰다.
연산장치는 다양한 명령어 처리를 위해 논리 연산기(741), 덧셈기(742), 비교기(743), 가속 연산기(744) 등의 장치를 가질 수 있으며, 처리하는 명령어 해석을 통해 이 장치들 중 하나의 결과를 선택한다.
메모리 컨트롤러(730)에서 응답하는 데이터는 명령어의 종류와 유한상태기계(600)의 제어 신호에 따라 rs-피연산자, rd-피연산자, 읽기응답 데이터로 구분할 수 있다. 피연산자에 접근을 위한 주소는 처리하는 명령어에 따라 rs, rd, 그리고 가속명령 주소생성기(750)에서 생성되는 주소들 중 하나가 선택된다.
프로세싱-인-메모리의 원자적 명령어(atomic operation)는 효율적인 버스 사용을 위해 기저주소(base address)만 전달하므로, 가속명령 주소생성기(750)는 기저주소를 기반으로 명령어 처리에 필요한 피연산자들의 주소를 생성한다.
본 발명의 일 실시예에 따른 유한상태기계(600)는 3개 이상의 피연산자에 접근해야 하는 경우 피연산자 개수 카운터(710)를 통해 정확한 피연산자 주소를 생성하고 피연산자 개수를 파악한다.
본 발명의 방법 및 이를 적용한 장치는 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허 청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (8)

  1. 프로세싱-인-메모리에서의 효율적인 명령어 처리에 있어서,
    처리 대기 중인 명령어를 처리할 때 요구되는 피연산자의 개수를 파악하는 단계;
    상기 처리 대기 중인 명령어를 해석하는 단계; 및
    상기 파악된 요구되는 피연산자의 개수에 대응되는 명령어를 처리하는 단계를 포함하되,
    상기 피연산자 개수 파악 단계에서 파악된 요구되는 피연산자의 개수가 0개인 경우에, 상기 명령어 해석 단계는 상기 처리 대기 명령어를 쓰기 명령어로 해석하고, 상기 명령어 처리 단계는 메모리쓰기를 실행하고,
    상기 피연산자 개수 파악 단계에서 파악된 요구되는 피연산자의 개수가 0개가 아닌 경우에, 상기 명령어 처리 단계는 상기 명령어 해석 단계에서 해석된 명령어에서 요구되는 피연산자 개수와 같은 횟수로 프로세싱-인-메모리의 내부 메모리에서 메모리읽기를 실행하는 것을 특징으로 하는 프로세싱-인-메모리 제어 방법.
  2. 제1항에 있어서, 상기 피연산자 개수 파악 단계에서 파악된 요구되는 피연산자의 개수가 1개인 경우에, 상기 명령어 처리 단계는
    1차 메모리읽기를 하는 단계;
    처리 대상 명령어가 읽기 명령인지 여부를 해석하여, 읽기 명령이 맞으면 읽기에 대한 응답을 하는 단계; 및
    읽기 명령이 아니라면, 상기 해석된 명령어를 처리하고 그 결과를 메모리에 쓰는 단계를 포함하는 프로세싱-인-메모리 제어 방법.
  3. 제1항에 있어서, 상기 피연산자 개수 파악 단계에서 파악된 요구되는 피연산자의 개수가 2개인 경우에, 상기 명령어 처리 단계는
    1차 메모리읽기를 하는 단계;
    2차 메모리읽기를 하는 단계; 및
    상기 명령어를 처리하고, 그 결과를 메모리에 쓰는 단계를 포함하는 프로세싱-인-메모리 제어 방법.
  4. 제1항에 있어서, 상기 피연산자 개수 파악 단계에서 파악된 요구되는 피연산자의 개수가 3개 이상인 경우에, 상기 명령어 처리 단계는
    3회 이상의 메모리읽기를 하는 단계; 및
    상기 명령어를 처리하고, 그 결과를 메모리에 쓰는 단계를 포함하는 프로세싱-인-메모리 제어 방법.
  5. 프로세싱-인-메모리에서의 효율적인 명령어 처리에 있어서,
    명령어를 처리할 때 요구되는 피연산자의 개수를 파악하는 단계;
    상기 요구되는 피연산자의 개수가 0개이면 쓰기 명령어로서, 메모리에 쓰기를 하는 단계;
    상기 요구하는 피연산자의 개수가 1개이고 읽기 명령어이면, 메모리를 1회 읽은 후 읽기 응답을 하는 단계;
    상기 요구하는 피연산자의 개수가 1개이고 읽기 명령어가 아니라면, 메모리를 1회 읽은 후 메모리에 쓰는 단계;
    상기 요구하는 피연산자의 개수가 2개이면, 메모리를 2회 읽은 후 메모리 쓰기를 하는 단계;
    상기 요구하는 피연산자의 개수가 n개이면, 메모리를 n회 읽은 후 메모리 쓰기를 하는 단계를 포함하는 프로세싱-인-메모리 제어 방법.
  6. 제5항에 있어서, 상기 요구되는 피연산자의 개수를 파악하는 단계는,
    6비트의 명령어 값의 상위 2비트로 명령어 처리에 필요한 피연산자 개수를 파악하되,
    쓰기 명령어는 상기 상위 2비트가 2진수 값이 00으로서, 명령어에서 요구하는 피연산자의 개수는 0개이고,
    읽기 명령어 및 I-type 명령어 중 적어도 어느 하나는 상기 상위 2비트가 2진수 값 01로서, 명령어에서 요구하는 피연산자의 개수는 1개이고,
    R-type 명령어는 상기 상위 2비트가 2진수 값 10으로서, 명령어에서 요구하는 피연산자의 개수는 2개이고,
    SORT 명령어는 상위 2비트가 2진수 값 11로서, 명령어에서 요구하는 피연산자의 개수는 3개인 것을 특징으로 하는 프로세싱-인-메모리 제어 방법.
  7. 프로세싱-인-메모리에서의 효율적인 명령어 처리에 있어서,
    명령어 처리시에 요구되는 피연산자 개수를 파악하는 명령어 해석부,
    명령어 해석을 통해 상기 요구되는 피연산자의 개수가 1개 및 2개 중 적어도 어느 하나인 경우, 명령어 해석부에서 이행되는 1차 메모리읽기부,
    상기 요구되는 피연산자의 개수가 1개이고, 읽기명령인 경우 이행되는 읽기응답부,
    상기 요구되는 피연산자의 개수가 2개이면 이행되는 2차 메모리읽기부,
    상기 요구되는 피연산자의 개수가 3개이면 이행되는 n회 메모리읽기부(단, n은 3 이상의 자연수),
    상기 요구되는 피연산자의 개수가 1개이며 읽기명령이 아닌 경우, 상기 요구되는 피연산자의 개수가 2개 이상인 경우 중 적어도 어느 하나인 경우 이행되는 명령어 처리부, 및
    상기 요구되는 피연산자의 개수가 1개이며 읽기명령인 경우를 제외하고 이행되는 메모리 쓰기부를 포함하는 프로세싱-인-메모리 연산장치.
  8. 제7항에 있어서, 상기 n회 메모리읽기부는,
    상기 요구되는 피연산자의 개수가 4개 이상인 경우, 요구되는 피연산자의 개수에서 3을 차감한 횟수만큼의 메모리읽기를 더 진행하는 것을 특징으로 하는 프로세싱-인-메모리 연산장치.
PCT/KR2019/012758 2019-07-29 2019-09-30 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치 WO2021020646A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/587,239 US11907578B2 (en) 2019-07-29 2022-01-28 Processing-in-memory control method for efficient instruction processing and computing device applying same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190091654A KR102213258B1 (ko) 2019-07-29 2019-07-29 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치
KR10-2019-0091654 2019-07-29

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/587,239 Continuation US11907578B2 (en) 2019-07-29 2022-01-28 Processing-in-memory control method for efficient instruction processing and computing device applying same

Publications (1)

Publication Number Publication Date
WO2021020646A1 true WO2021020646A1 (ko) 2021-02-04

Family

ID=74230387

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2019/012758 WO2021020646A1 (ko) 2019-07-29 2019-09-30 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치

Country Status (3)

Country Link
US (1) US11907578B2 (ko)
KR (1) KR102213258B1 (ko)
WO (1) WO2021020646A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170045098A (ko) * 2015-10-16 2017-04-26 삼성전자주식회사 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치
KR20170089678A (ko) * 2016-01-27 2017-08-04 한국전자통신연구원 처리 유닛, 인-메모리 데이터 처리 장치 및 방법
KR20170102418A (ko) * 2016-03-01 2017-09-11 삼성전자주식회사 재구성 가능한 계산 로직을 포함하는 3차원-적층 메모리
KR20180018269A (ko) * 2016-08-12 2018-02-21 삼성전자주식회사 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법
KR101867219B1 (ko) * 2017-02-22 2018-06-12 연세대학교 산학협력단 동적 메모리 인터페이스에 기반하여 서로 다른 메모리 연산들을 처리하기 위한 장치 및 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3220881B2 (ja) * 1992-12-29 2001-10-22 株式会社日立製作所 情報処理装置
US7428610B2 (en) * 2006-02-14 2008-09-23 Atmel Corporation Writing to flash memory
US7464253B2 (en) * 2006-10-02 2008-12-09 The Regents Of The University Of California Tracking multiple dependent instructions with instruction queue pointer mapping table linked to a multiple wakeup table by a pointer
JP5770534B2 (ja) * 2011-06-01 2015-08-26 富士通株式会社 プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US9836277B2 (en) * 2014-10-01 2017-12-05 Samsung Electronics Co., Ltd. In-memory popcount support for real time analytics
CN113383310A (zh) * 2019-03-15 2021-09-10 英特尔公司 矩阵加速器架构内的脉动分解
US20230298254A1 (en) * 2022-03-18 2023-09-21 Intel Corporation Apparatus and method for accelerating bvh builds by merging bounding boxes

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170045098A (ko) * 2015-10-16 2017-04-26 삼성전자주식회사 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치
KR20170089678A (ko) * 2016-01-27 2017-08-04 한국전자통신연구원 처리 유닛, 인-메모리 데이터 처리 장치 및 방법
KR20170102418A (ko) * 2016-03-01 2017-09-11 삼성전자주식회사 재구성 가능한 계산 로직을 포함하는 3차원-적층 메모리
KR20180018269A (ko) * 2016-08-12 2018-02-21 삼성전자주식회사 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법
KR101867219B1 (ko) * 2017-02-22 2018-06-12 연세대학교 산학협력단 동적 메모리 인터페이스에 기반하여 서로 다른 메모리 연산들을 처리하기 위한 장치 및 방법

Also Published As

Publication number Publication date
KR102213258B1 (ko) 2021-02-08
US20220156011A1 (en) 2022-05-19
US11907578B2 (en) 2024-02-20

Similar Documents

Publication Publication Date Title
US4347565A (en) Address control system for software simulation
US5278973A (en) Dual operating system computer
CA1260149A (en) Computer system for controlling virtual machines
EP0192944B1 (en) Data processing system with a main processor and a co-processor sharing the same resources
US5442802A (en) Asynchronous co-processor data mover method and means
AU613823B2 (en) Virtual computer system having improved input/output interrupt control
US5608867A (en) Debugging system using virtual storage means, a normal bus cycle and a debugging bus cycle
EP0155211A2 (en) System for by-pass control in pipeline operation of computer
US6789167B2 (en) Method and apparatus for multi-core processor integrated circuit having functional elements configurable as core elements and as system device elements
GB2075226A (en) Cpu-to-memory interface unit
JPS62214464A (ja) データ処理システム
US4755936A (en) Apparatus and method for providing a cache memory unit with a write operation utilizing two system clock cycles
US5404477A (en) Extended memory address conversion and data transfer control system
EP0431326A2 (en) Inter-processor interrupts in an n-element multi-processor
US5371857A (en) Input/output interruption control system for a virtual machine
JPH03291726A (ja) コンパイル中にソフトウェア・スケジューリング技術を用いてハードウェアのパイプライン処理の中断を最小化する方法
Mayer The architecture of the Burroughs B5000: 20 years later and still ahead of the times?
EP0265108B1 (en) Cache storage priority
WO2021020646A1 (ko) 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치
WO2013027951A1 (ko) 멀티 코어 시스템의 인터럽트 할당 방법 및 장치
WO2023068463A1 (ko) 양자 회로 시뮬레이션을 위한 저장장치 시스템
EP0660229B1 (en) Method and apparatus for modifying the contents of a register
EP0297891A2 (en) Apparatus and method for main memory unit protection using access and fault logic signals
CN114489791B (zh) 处理器装置及其指令执行方法、计算设备
KR960012354B1 (ko) 마이크로 프로세서

Legal Events

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

Ref document number: 19939809

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19939809

Country of ref document: EP

Kind code of ref document: A1