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

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

Info

Publication number
KR102213258B1
KR102213258B1 KR1020190091654A KR20190091654A KR102213258B1 KR 102213258 B1 KR102213258 B1 KR 102213258B1 KR 1020190091654 A KR1020190091654 A KR 1020190091654A KR 20190091654 A KR20190091654 A KR 20190091654A KR 102213258 B1 KR102213258 B1 KR 102213258B1
Authority
KR
South Korea
Prior art keywords
memory
operands
processing
command
instruction
Prior art date
Application number
KR1020190091654A
Other languages
English (en)
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 KR1020190091654A priority Critical patent/KR102213258B1/ko
Priority to PCT/KR2019/012758 priority patent/WO2021020646A1/ko
Application granted granted Critical
Publication of KR102213258B1 publication Critical patent/KR102213258B1/ko
Priority to US17/587,239 priority 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

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

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

Description

효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치{Control Method of Processing In Memory for efficient Instruction Processing and Processing Unit Employing The Same}
본 발명은 프로세싱-인-메모리(Processing In Memory)에 관한 것으로서, 구체적으로는 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치에 관한 것이다.
프로세싱-인-메모리는 메모리와 연산장치(Processing Unit)가 하나의 칩으로 집적된 차세대 메모리로서, 프로세서(Processor)가 연산을 위해 메모리에 접근하는 빈도를 감소시킴으로써 시스템의 성능과 전력효율을 향상시킨다. 프로세서의 프로세싱-인-메모리 접근 방식은 전통적인 메모리 접근 방식과 다르게 주소와 데이터 신호들 외에 연산을 위한 명령어 신호를 함께 사용한다. 프로세싱-인-메모리의 연산장치(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은 본 발명의 일 실시예에 따른 유한상태기계를 포함한 연산장치의 하드웨어 구조도.
본 발명의 이점 및 특징, 그리고 이들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 기술되어 있는 실시예를 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 기재에 의해 정의된다.
한편, 본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(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)의 하드웨어 구조를 나타낸다.
메모리 컨트롤러(Memory Controller, 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을 차감한 횟수만큼의 메모리읽기를 더 진행하는 것
    인 프로세싱-인-메모리 연산장치.
KR1020190091654A 2019-07-29 2019-07-29 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치 KR102213258B1 (ko)

Priority Applications (3)

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

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

Publications (1)

Publication Number Publication Date
KR102213258B1 true KR102213258B1 (ko) 2021-02-08

Family

ID=74230387

Family Applications (1)

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

Country Status (3)

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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160098200A1 (en) * 2014-10-01 2016-04-07 Zvi GUZ In-memory popcount support for real time analytics
KR20170045098A (ko) * 2015-10-16 2017-04-26 삼성전자주식회사 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치

Family Cites Families (11)

* 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
KR20170089678A (ko) * 2016-01-27 2017-08-04 한국전자통신연구원 처리 유닛, 인-메모리 데이터 처리 장치 및 방법
US11079936B2 (en) * 2016-03-01 2021-08-03 Samsung Electronics Co., Ltd. 3-D stacked memory with reconfigurable compute logic
KR102356704B1 (ko) * 2016-08-12 2022-01-27 삼성전자주식회사 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법
KR101867219B1 (ko) * 2017-02-22 2018-06-12 연세대학교 산학협력단 동적 메모리 인터페이스에 기반하여 서로 다른 메모리 연산들을 처리하기 위한 장치 및 방법
JP7408671B2 (ja) * 2019-03-15 2024-01-05 インテル コーポレイション シストリックアレイに対するブロックスパース演算のためのアーキテクチャ
US20230298254A1 (en) * 2022-03-18 2023-09-21 Intel Corporation Apparatus and method for accelerating bvh builds by merging bounding boxes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160098200A1 (en) * 2014-10-01 2016-04-07 Zvi GUZ In-memory popcount support for real time analytics
KR20170045098A (ko) * 2015-10-16 2017-04-26 삼성전자주식회사 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Junwhan Ahn 외 3명. PIM-Enabled Instructions: A Low-Overhead, Locality-Aware Processing-in-Memory Architecture. 2015년 *

Also Published As

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

Similar Documents

Publication Publication Date Title
US4347565A (en) Address control system for software simulation
US10261796B2 (en) Processor and method for executing in-memory copy instructions indicating on-chip or off-chip memory
US6212625B1 (en) General purpose dynamically programmable state engine for executing finite state machines
US5608867A (en) Debugging system using virtual storage means, a normal bus cycle and a debugging bus cycle
KR20170027125A (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법
CN113468079B (zh) 内存访问方法及装置
CN111400986A (zh) 一种集成电路计算设备及计算处理系统
US20230289187A1 (en) Method and apparatus for rectifying weak memory ordering problem
EP3846036B1 (en) Matrix storage method, matrix access method, apparatus and electronic device
KR920003044B1 (ko) 가상 머신 시스템용의 게스트 머신 실행 제어 시스템
US11237994B2 (en) Interrupt controller for controlling interrupts based on priorities of interrupts
US8990741B2 (en) Circuit design support device, circuit design support method and program
KR102213258B1 (ko) 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치
US10713047B2 (en) Fast unaligned memory access
CN112948136A (zh) 一种嵌入式操作系统异步日志记录的实现方法
JP2014215624A (ja) 演算処理装置
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法
JPH07210382A (ja) レジスタの内容を変更するための装置および方法
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
JP6292324B2 (ja) 演算処理装置
CN111177027A (zh) 动态随机存取存储器、内存管理方法、系统及存储介质
US6907484B2 (en) Method and apparatus for atomically changing selected bits within a register
US11880231B2 (en) Accurate timestamp or derived counter value generation on a complex CPU
JPS59112479A (ja) キヤツシユメモリの高速アクセス方式
JPS595496A (ja) メモリプロテクト方式

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant