KR20180018269A - 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법 - Google Patents

컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법 Download PDF

Info

Publication number
KR20180018269A
KR20180018269A KR1020170037674A KR20170037674A KR20180018269A KR 20180018269 A KR20180018269 A KR 20180018269A KR 1020170037674 A KR1020170037674 A KR 1020170037674A KR 20170037674 A KR20170037674 A KR 20170037674A KR 20180018269 A KR20180018269 A KR 20180018269A
Authority
KR
South Korea
Prior art keywords
cache
memory
partial operation
operands
partial
Prior art date
Application number
KR1020170037674A
Other languages
English (en)
Other versions
KR102356704B1 (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 US15/672,800 priority Critical patent/US10990589B2/en
Publication of KR20180018269A publication Critical patent/KR20180018269A/ko
Application granted granted Critical
Publication of KR102356704B1 publication Critical patent/KR102356704B1/ko

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

컴퓨팅 장치 및 컴퓨팅 장치가 연산을 처리하는 방법이 개시된다. 본 개시의 기술적 사상의 일 측면에 따른 컴퓨팅 장치는 집계 피연산자들 및 메모리에 저장된 변수에 대응되는 피연산자를 이용하는 집계 연산에 관한 정보를 출력하는 코어; 상기 코어로부터 수신된, 상기 집계 연산의 연산자 및 상기 집계 피연산자들에 대한 정보를 저장하는, 캐시; 상기 캐시에 저장된 상기 집계 피연산자들에 대하여 상기 연산자로 제 1 부분 연산을 수행하고, 상기 제 1 부분 연산 결과를 상기 캐시에 저장하는, 캐시 컨트롤러; 및 상기 변수를 저장하고, 상기 캐시에 저장된 상기 제 1 부분 연산 결과 및 상기 변수에 대응되는 상기 피연산자에 대하여 상기 연산자로 제 2 부분 연산을 수행하고, 상기 제 2 부분 연산 결과를 저장함으로써 상기 집계 연산을 처리하는, 상기 메모리;를 포함할 수 있다.

Description

컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법 {Computing apparatus and method for processing operations thereof}
본 개시의 기술적 사상은 컴퓨팅 장치에 관한 것으로서, 자세하게는 컴퓨팅 장치가 집계 연산(aggregation operation)을 처리하는 방법에 관한 것이다.
컴퓨팅 환경에서 프로세서의 역할은 점점 중요해지고 있다. 프로세서는, 점점 증가하는 해상도의 이미지 또는 동영상, 점점 복잡해지는 소프트웨어 알고리즘 등을 처리하는 주체로서, 듀얼-코어 프로세서, 쿼드-코어 프로세서, 멀티-스레딩 등의 다양한 프로세서 아키텍쳐 기술들의 발전은 이와 같은 주변 기술분야들, 예를 들어 이미지 처리 분야, 소프트웨어 엔지니어링 분야 등의 발전에 직결된다. 컴퓨팅 환경 내에서 프로세서는 한정된 리소스 내에서 구동된다. 예를 들어, 프로세서와 메모리 간의 통신 대역폭은 병목현상(performance bottleneck) 때문에 한정될 수 밖에 없고, 또한 프로세서의 에너지 소모도 일정 레벨 이하로 제한될 수 밖에 없다. 따라서, 최근에는 컴퓨팅 환경의 한정된 리소스 내에서 어떠한 방식으로 프로세싱 성능을 증대시킬 수 있을 것인지에 대한 연구가 많이 진행되고 있다.
컴퓨팅 장치와 컴퓨팅 장치에서 연산들을 처리하는 방법을 제공하는 것이다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른 컴퓨팅 장치는 집계 피연산자들(aggregation operands) 및 메모리에 저장된 변수에 대응되는 피연산자를 이용하는 집계 연산(aggregation operation)에 관한 정보를 출력하는 코어; 상기 코어로부터 수신된, 상기 집계 연산의 연산자 및 상기 집계 피연산자들에 대한 정보를 저장하는, 캐시; 상기 캐시에 저장된 상기 집계 피연산자들에 대하여 상기 연산자로 제 1 부분 연산을 수행하고, 상기 제 1 부분 연산 결과를 상기 캐시에 저장하는, 캐시 컨트롤러; 및 상기 변수를 저장하고, 상기 캐시에 저장된 상기 제 1 부분 연산 결과 및 상기 변수에 대응되는 상기 피연산자에 대하여 상기 연산자로 제 2 부분 연산을 수행하고, 상기 제 2 부분 연산 결과를 저장함으로써 상기 집계 연산을 처리하는, 상기 메모리;를 포함할 수 있다.
다른 측면에 따르면, 컴퓨팅 장치가 연산을 처리하는 방법은 집계 피연산자들(aggregation operands) 및 메모리에 저장된 변수에 대응되는 피연산자를 이용하는 집계 연산(aggregation operation)에 관한 정보를 코어에 의해, 출력하는 단계; 상기 코어로부터 수신된, 상기 집계 연산의 연산자 및 상기 집계 피연산자들에 대한 정보를 캐시에 저장하는 단계; 상기 캐시에 저장된 상기 집계 피연산자들에 대하여 상기 연산자로 제 1 부분 연산을 수행한 후, 상기 제 1 부분 연산 결과를 상기 캐시에 저장하는 단계; 상기 캐시에 저장된 상기 제 1 부분 연산 결과 및 상기 변수에 대응되는 상기 피연산자에 대하여 상기 연산자로 제 2 부분 연산을 수행하는 단계; 및 상기 메모리에 상기 제 2 부분 연산 결과를 저장하는 단계;를 포함할 수 있다.
상기된 바에 따르면, 컴퓨팅 장치의 프로세서가 연산을 처리하기 위해 메모리에 접근하는 횟수가 감소될 수 있기 때문에, 프로세서가 연산을 처리하는 시간이 줄어들고, 컴퓨팅 장치의 에너지 효율이 증가될 수 있다.
도 1은 컴퓨팅 장치의 구성을 나타낸 블록도이다.
도 2는 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른, 컴퓨팅 장치의 구성을 나타낸 블록도이다.
도 4는 일 실시예에 따른, 컴퓨팅 장치의 구성을 상세하게 나타낸 상세 블록도이다.
도 5는 일 실시예에 따른, 집계 연산을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른, 캐시 블록을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른, 캐시 블록이 메모리에 매핑되는 방법을 설명하기 위한 도면이다.
도 8은 일 실시예에 따라, 메모리가 단일 뱅크 그룹에 독립적으로 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 9는 일 실시예에 따라, 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
도 10은 다른 일 실시예에 따른, 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
도 11은 또 다른 일 실시예에 따라, 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
도 12는 일 실시예에 따라, 복수 레벨의 캐시들이 포함된 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
도 13은 다른 일 실시예에 따라, 복수 레벨의 캐시들이 포함된 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
도 14는 일 실시예에 따라, 컴퓨팅 장치가 연산을 처리하는 방법을 도시한 흐름도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 컴퓨팅 장치의 구성을 나타낸 블록도이다.
도 1을 참고하면, 컴퓨팅 장치(100)는 프로세서(110) 및 메모리(150)를 포함할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 데스크탑 컴퓨터, 노트북 컴퓨터, 스마트폰, PDA (personal digital assistants), 휴대형 미디어 플레이어, 비디오 게임용 콘솔, 텔레비젼 셋탑 박스, 태블릿 디바이스, 이북 리더, 웨어러블 디바이스 등일 수 있으나, 이에 제한되지 않는다.
프로세서(110)는 컴퓨팅 장치(100)에 포함된 모든 구성들의 동작을 제어하는 하드웨어를 의미하며, 코어(120)와 캐시(130)를 포함할 수 있다. 예를 들어, 프로세서(110)는 CPU(Central Processing Unit), GPU(Graphic Processing Unit), AP(Application Processor) 또는 이들의 조합일 수 있으나, 이에 제한되지 않는다.
코어(120)는 각종 명령어들을 수행하는 하드웨어 구성으로, 적어도 하나 이상의 코어(120)가 프로세서(110)에 포함될 수 있다. 또한, 코어(120)는 명령어에 의해 요청된 연산을 처리하고, 캐시(130) 또는 메모리(150)에 저장된 데이터 중에서 연산에 필요한 데이터를 읽거나, 캐시(130) 또는 메모리(150)에 데이터를 전달할 수 있다. 한편, 코어(120)가 메모리(150)에 접근하는 횟수가 감소하면, 코어(120)가 명령어를 처리하는 시간이 줄어들 수 있으므로, 컴퓨팅 장치(100)의 에너지 효율이 증가될 수 있다. 따라서, 컴퓨팅 장치(100)는 메모리(150)외에도, 프로세서(110) 내에 캐시(130)를 포함할 수 있다. 캐시(130)는 버퍼 형태의 고속 기억 장치이며, 메모리(150)보다 저장 용량은 작지만, 더 넓은 대역폭을 제공할 수 있다. 따라서, 프로세서(110)는 메모리(150)에 저장된 데이터 중 자주 엑세스되는 데이터를 캐시(130)에 저장하여, 메모리(150)에서 데이터를 반복해서 검색하지 않고, 캐시(130)에서 바로 읽을 수 있게 된다. 예를 들어, 캐시(130)는 플래시 메모리 타입(flash memory type), SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 중 적어도 하나의 타입의 저장매체를 포함할 수 있으나, 이에 제한되지 않는다.
메모리(150)는 프로세서(110)에서 처리가 완료된 데이터(예를 들어, 변수, 소스 코드들, 명령어 등)를 저장하거나, 또는 프로세서(110)에서 실행될 데이터를 제공하는 디바이스에 해당될 수 있다. 예를 들어, 메모리(150)는 DRAM, SRAM, ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory) 중 적어도 하나의 타입의 저장매체를 포함할 수 있으나, 이에 제한되지 않는다. 또한, 메모리(150)는 PIM(Processor in Memory)을 포함할 수 있다. PIM은 하드웨어 로직으로 구현된 프로세서로서, 전용 핀(dedicated pin)으로 메모리 어레이(array)와 연결됨으로써 메모리 어레이의 데이터를 지연(latency) 없이 처리하도록 만든 디바이스이다. 한편, PIM과 같은 내부 프로세서를 갖는 메모리(150)는 intelligent RAM(Random Access Memory), computational RAM, 또는 smart memory 등과 같은 용어로도 호칭될 수 있다.
도 2는 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
컴퓨팅 장치(100)는 메모리(150)에 반복적으로 접근함으로써, 메모리(150)에 저장된 변수에 대응되는 피연산자를 이용하는 연산을 처리할 수 있다. 구체적으로, 도 2는 명령어에 의해 요청된 연산이 메모리(150)에 저장된 변수 x에 2와 1을 순차적으로 더하는 연산인 경우, 코어(120)가 연산을 처리하는 방법을 설명하기 위한 도면이다.
단계 (a)에서, 코어(120)는 메모리(150)에서 변수 x의 초기값 5를 로딩(loading)하여 먼저 5와 2를 더한 후, 결과 값 7을 캐시(130)에 저장할 수 있다.
단계 (b)에서, 코어(120)는 두 번째 덧셈 연산을 수행하기 위해, 캐시(130)에 저장된 7과 1을 더한 후, 결과 값 8을 캐시(130)에 저장할 수 있다.
단계 (c)에서, 캐시(130)에 저장된 결과 값 8은 캐시(130)에 저장된 캐시 블록이 방출될 때, 메모리(150)에 전달될 수 있다. 여기서, 캐시 블록은 캐시(130)가 메모리(150)에 전달하는 데이터의 단위로 정의될 수 있다. 또한, 캐시 블록은 복수의 워드(word)들을 포함할 수 있다.
따라서, 컴퓨팅 장치(100)가 메모리(150) 및 캐시(130)를 이용하는 경우, 메모리(150)에 저장된 변수 x에 대응하는 피연산자를 이용하는 연산을 수행할 때마다 메모리(150)에 2번 접근해야 하기 때문에 에너지 효율이 감소될 수 있다.
도 3은 일 실시예에 따른, 컴퓨팅 장치의 구성을 나타낸 블록도이다.
일 실시예에 따른 컴퓨팅 장치(300)는 프로세서(310) 및 메모리(350)를 포함할 수 있고, 프로세서(310)는 코어(320), 캐시(330) 및 캐시 컨트롤러(340)를 포함할 수 있다. 한편, 도 3에 도시된 컴퓨팅 장치(300)에는 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
코어(320)는 집계 피연산자들(aggregation operands) 및 메모리에 저장된 변수에 대응되는 피연산자를 이용하는 집계 연산(aggregation operation)에 관한 정보를 출력할 수 있다.
여기서, 코어(320)는 명령어에 의해 요청된 연산이 교환 법칙 및 결합 법칙을 만족하는 제 1 부분 연산 및 제 2 부분 연산의 집합인 경우, 연산을 집계 연산으로 판단할 수 있다. 예를 들어, 명령어에 의해 요청된 연산이 변수 x에 2 를 더하는 제 1 부분 연산과 제 1 부분 연산의 결과와 1을 더하는 제 2 부분 연산의 집합인 경우, 제 1 부분 연산 및 제 2 부분 연산은 교환 법칙 및 결합 법칙을 만족하기 때문에, 집계 연산으로 판단될 수 있다.
또한, 집계 피연산자들은 집계 연산에 이용되는 피연산자들 중에서, 변수를 제외한 나머지 피연산자들로 정의될 수 있다. 예를 들어, 변수 x에 2 를 더하는 제 1 부분 연산과 제 1 부분 연산의 결과와 1을 더하는 제 2 부분 연산의 집합인 집계 연산의 경우, 집계 피연산자들은 2와 1이 되고, 연산자는 덧셈이 될 수 있다.
캐시(330)는 코어(320)로부터 수신된, 집계 연산의 연산자 및 집계 피연산자들에 대한 정보를 저장할 수 있다. 구체적으로, 캐시(330)는 연산자에 관한 정보를 캐시(330)의 태그 영역에 저장하고, 집계 피연산자들 또는 제 1 부분 연산 결과 중 적어도 하나를 캐시 블록에 저장할 수 있다. 또한, 캐시(330)는 캐시 미스(cache miss)일 때, 제 1 부분 연산의 항등원을 저장할 수 있다.
캐시 컨트롤러(340)는 캐시(330)에 저장된 집계 피연산자들에 대하여 연산자로 제 1 부분 연산을 수행하고, 제 1 부분 연산 결과를 캐시(330)에 저장할 수 있다.
또한, 캐시 컨트롤러(340)는 메모리(350)에 저장된 변수의 로딩(loading) 명령을 수신함에 따라, 캐시(330)에 저장된 제 1 부분 연산 결과와 메모리(350)로부터 로딩된 변수에 대응되는 피연산자에 대하여 연산자로 제 2 부분 연산을 수행하고, 제 2 부분 연산 결과를 캐시(330)에 저장할 수 있다.
메모리(350)는 변수를 저장하고, 캐시(330)에 저장된 제 1 부분 연산 결과 및 변수에 대응되는 피연산자에 대하여 연산자로 제 2 부분 연산을 수행하고, 제 2 부분 연산 결과를 저장함으로써 집계 연산을 처리할 수 있다.
도 4는 일 실시예에 따른, 컴퓨팅 장치의 구성을 상세하게 나타낸 상세 블록도이다.
다른 일 실시예에 따른 컴퓨팅 장치(400)의 프로세서(410)는 코어(420), L1 캐시(431), L2 캐시(432), 캐시 컨트롤러(440), 메모리 컨트롤러(460)를 포함할 수 있다. 또한, 컴퓨팅 장치(400)는 메모리(450)를 더 포함할 수 있다. 한편, 도 4의 코어(420)는 도 3의 코어(320)와 각각 대응되므로, 자세한 설명은 생략하기로 한다.
도 3의 캐시(330)는 레벨에 따라 분류된 L1 캐시(431) 및 L2 캐시(432)를 포함할 수 있다. 도 4를 참고하면, 코어(420)에서 출력된 정보를 수신하는 캐시를 L1 캐시(431)로 표시하고, 캐시 블록을 메모리(450)로 방출하는 캐시를 L2 캐시(432)로 표시하였으나, 레벨을 정하는 규칙은 이에 제한되지 않는다.
캐시 컨트롤러(440)는 집계 피연산자들에 대한 제 1 부분 연산을 수행하는 연산기(435)를 포함할 수 있다.
메모리 컨트롤러(460)는 캐시 블록이 캐시(330)로부터 방출됨에 따라, 뱅크(bank)에 워드를 매핑할 수 있다. 여기서, 뱅크는 메모리(450)가 병렬적으로 처리하는 데이터 단위로 정의될 수 있다. 또한, 뱅크(480)의 길이는 워드의 길이와 동일할 수 있다.
메모리(450)는 하나 이상의 뱅크 그룹(470)을 포함할 수 있고, 뱅크 그룹(470)은 하나 이상의 뱅크(bank)(480)를 포함할 수 있다. 또한, 뱅크는 캐시 블록의 연산자로 제 2 부분 연산을 수행하는 연산기(485)를 포함할 수 있으나, 연산기(485)가 메모리(450)에 포함되어 있다면 연산기(485)의 위치는 이에 제한되지 않는다. 더불어, 메모리(450)는 뱅크 그룹(470)에 포함된 복수 개의 뱅크(480)들과 연산기(485)를 이용하여, 독립적으로 연산을 수행할 수 있다.
도 5는 일 실시예에 따른, 집계 연산을 설명하기 위한 도면이다.
일 실시예에 따른, 코어(420)는 메모리(450) 접근 횟수를 감소시키기 위해, 명령어에 의해 요청된 연산이 집계 연산인지 판단하고, 판단 결과에 따라 집계 연산의 연산자 및 집계 피연산자들에 대한 정보를 캐시(330)로 송신할 수 있다. 여기서 집계 연산은 교환 법칙과 결합 법칙이 성립하는 제 1 부분 연산 및 제 2 부분 연산의 집합으로 정의될 수 있다. 예를 들어, 집계 연산은 덧셈 연산, 곱셈 연산, 피연산자들 중에서 최소값을 구하는 연산을 포함하는 복수의 연산들의 집합일 수 있으나, 이에 제한되지 않는다.
도 5는 검색 엔진에 적용되는 페이지 랭크 알고리즘(page rank algorithm)을 나타내는 코드이다. 검색 엔진은 사용자로부터 키워드가 입력되면, 페이지 랭크 알고리즘을 이용하여, 검색 결과의 표시 순서를 결정할 수 있다. 도 5의 코드가 적용된 검색 엔진을 이용하면, 페이지 랭크 지수(v.pagerank)가 높은 웹 페이지일 수록 검색 결과의 상단에 표시될 수 있다. 여기서 도 5의 11번째 줄을 참고하면, 페이지 랭크 지수 v.pagerank를 결정하는 변수 w.next_pagerank는 변수 w.next_pagerank에 저장된 값과 다른 변수 value를 더한 결과를 저장하는 변수이다. 다시 말해서, 11번째 줄에 기재된 연산은 수학식 1과 같이 표현할 수 있다.
Figure pat00001
한편, 수학식 1의 덧셈 연산은 교환 법칙(a+b =b+a)과 결합 법칙(a+b+c = (a+b)+c)을 만족하는 연산이고, 도 5의 변수 w.next_pagerank는 for 구문 내에서 반복적으로 계산되므로, 집계 연산으로 결정될 수 있다. 따라서, 컴퓨팅 장치(400)는 도 5에 기재된 코드를 실행할 때, 집계 연산이 포함된 것으로 판단하여, 덧셈 연산자 및 집계 피연산자인 변수 value에 관한 정보를 송신할 수 있다.
이하 도면들에서는 코어(420)가 처리하는 집계 연산을 덧셈 연산인 제 1 부분 연산과 다른 덧셈 연산인 제 2 부분 연산의 집합인 것으로 가정하였으나, 집계 연산이라면 본 발명이 적용될 수 있음은 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
도 6은 일 실시예에 따른, 캐시 블록을 설명하기 위한 도면이다.
일 실시예에 따른 컴퓨팅 장치(300)는 캐시(330)에 저장된 데이터가 메모리(350)로 방출되는 경우, 연산자 및 집계 피연산자들에 관한 정보를 캐시 블록(620) 단위로 메모리(350)에 전달할 수 있다. 도 6을 참고하면, 집계 연산의 연산자에 대한 정보(615)는 캐시 태그 영역(610)에 위치할 수 있으나, 연산자에 대한 정보(615)가 저장되는 위치는 이에 제한되지 않는다. 또한, 캐시 블록(620)은 제 1 부분 연산 결과 중 적어도 하나를 저장할 수 있다. 더불어, 캐시 블록(620)은 복수 개의 워드(625)들을 포함할 수 있다.
따라서, 캐시 컨트롤러(340)는, 캐시(330)에 변수가 저장된 경우뿐만 아니라, 코어(320)로부터 연산자 및 집계 피연산자들에 관한 정보를 수신한 경우, 캐시 태그 영역(610)에 집계 연산의 연산자에 대한 정보(615)가 포함되어 있으면, 캐시 히트(cache hit)된 것으로 결정할 수 있다. 한편, 캐시 블록(620)은 총 8개의 8 바이트의 워드(625)들을 포함할 수 있으나, 캐시 블록(620)의 길이는 이에 제한되지 않는다.
도 7은 일 실시예에 따른, 캐시 블록이 메모리에 매핑되는 방법을 설명하기 위한 도면이다.
캐시(330)로부터 캐시 블록(700)이 방출되면, 메모리 컨트롤러(460)는 메모리(450)의 뱅크(480)에 캐시 블록(700)의 워드들을 매핑할 수 있다. 도 7은 다른 매핑 방식이 적용된 제 1 메모리(710) 및 제 2 메모리(720)를 설명하기 위한 도면이다.
먼저, 제 1 메모리(710)를 참고하면, 캐시 블록(700)의 한 워드에 포함된 바이트들은 각각 다른 뱅크(712)에 매핑될 수 있다. 도 7을 참고하면, 워드는 캐시 블록(700)에 포함된 인접한 8 바이트들의 그룹으로 정의될 수 있다. 이러한 경우, 캐시 블록(700)의 하나의 워드가 제 1 메모리(710)의 여러 뱅크(712)에 교차 배치(interleaved)되기 때문에, 단일 뱅크 그룹(711)만으로는 연산을 수행할 수 없다.
반면, 일 실시예에 따른 제 2 메모리(720)를 참고하면, 캐시 블록(700)의 한 워드에 포함된 바이트들은 하나의 뱅크(722)에 매핑될 수 있다. 다시 말해서, 단일 뱅크 그룹(721)은 뱅크 그룹(721)에 포함된 복수 개의 뱅크(722)들을 이용하여 독립적으로 연산을 수행할 수 있다.
도 8은 일 실시예에 따라, 메모리가 단일 뱅크 그룹에 독립적으로 연산을 수행하는 방법을 설명하기 위한 도면이다.
구체적으로, 도 8은 도 7의 제 2 메모리(720) 매핑 방식이 적용된 메모리(450)가 단일 뱅크 그룹(721)을 이용하여, 연산을 처리하는 방법을 설명하기 위한 도면이다. 도 8을 참고하면, 제 1 캐시 블록(820)에 8개의 워드들 12253842(16진수) 중에서 5가 저장된 4번째 워드가 변수 x를 의미하고, 제 2 캐시 블록(810)에 집계 피연산자 3 및 덧셈 연산자에 관한 정보(811)가 포함된 경우, 제 2 메모리(720) 매핑 방식이 적용된 메모리(450)는 변수 x에 대한 덧셈 연산을 독립적으로 처리하여, 연산 결과(830)를 저장할 수 있다. 다시 말해서, 제 1 캐시 블록(820)에 포함된 다른 변수들과 독립적으로, 제 2 메모리(720)는 변수 x에 대한 집계 연산을 수행할 수 있다.
도 9는 일 실시예에 따라, 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
구체적으로, 도 9는 도 7의 제 2 메모리(720) 매핑 방식이 적용된 컴퓨팅 장치(400)가 캐시(330)를 이용하지 않고, 연산을 처리하는 방법을 설명하기 위한 도면이다. 예를 들어, 명령어에 의해 요청된 집합 연산이 변수 x에 2 를 더하는 제 1 부분 연산과 제 1 부분 연산의 결과와 1을 더하는 제 2 부분 연산의 집합인 경우, 일 실시예에 따른 코어(420)는 변수 x가 저장된 메모리(450)에 집계 피연산자인 2를 송신하여, 메모리(450)가 제 1 부분 연산을 수행하고, 제 1 부분 연산 결과 값을 저장할 수 있게 한다. 따라서, 메모리(450)는 변수 x에 저장되어 있던 5와 2를 더한 후, 제 1 부분 연산 결과 값 7를 변수 x에 저장할 수 있다. 여기서, 캐시(330)가 이용된다면, 캐시(330)가 항상 변수 x의 최신 값을 저장하고 있음을 의미하는 캐시 일관성(cache conscious)이 보장되지 않는 경우가 있으므로, 코어(420)는 집계 피연산자 2를 캐시(330) 대신 메모리(450)에 전송하여, 메모리(450)에서 연산이 수행될 수 있게 한다.
또한, 코어(420)는 제 2 부분 연산을 수행하기 위해, 메모리(450)에 집계 피연산자 1을 전송하여, 메모리(450)가 메모리(450)에 저장된 7과 1을 더한 후, 제 2 부분 연산 결과 값 8을 메모리(450)에 저장할 수 있다.
다시 말해서, 컴퓨팅 장치(400)가 도 7의 제 2 메모리(450)를 이용하는 경우, 캐시(330)를 이용하면 캐시 일관성이 보장되지 않을 수 있다. 따라서, 코어(420)는 매번 연산을 수행하기 위해, 캐시(330) 대신 메모리(450)에 접근하기 때문에, 캐시(330)를 이용하는 경우에 비하여 메모리(450) 접근 횟수가 증가될 수 있다.
도 10은 다른 일 실시예에 따른, 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
명령어에 의해 요청된 집합 연산이 변수 x에 2 를 더하는 제 1 부분 연산과 제 1 부분 연산의 결과와 1을 더하는 제 2 부분 연산의 집합인 경우, 일 실시예에 따른 컴퓨팅 장치(400)는 도 6의 캐시 블록(620) 및 도 7의 제 2 메모리(720) 매핑 방식을 이용하여, 집계 연산을 처리할 수 있다.
단계 (a)에서, 코어(420)는 명령어에 포함된 연산이 집계 연산인지 판단할 수 있다. 도 10을 참고하면, 제 1 부분 연산과 제 2 부분 연산은 교환 법칙 및 결합 법칙을 만족하는 연산의 집합이므로, 코어(420)는 명령어에 의해 요청된 연산이 집계 연산인 것으로 판단할 수 있다. 따라서, 코어(420)는 복수의 연산들에 관한 정보를 캐시(330)로 출력할 수 있다. 예를 들어, 코어(420)는 집계 연산에 관한 정보를 캐시(330)로 출력할 수 있다. 여기서, 집계 연산에 관한 정보는 집계 연산의 연산자 및 집계 피연산자들에 대한 정보를 포함할 수 있다. 도 10을 참고하면, 집계연산의 연산자는 덧셈이고, 집계 피연산자들은 2와 1이 될 수 있다.
단계 (b)에서, 캐시 컨트롤러(440)는 캐시(330)에 저장된 집계 피연산자들에 대하여 연산자로 제 1 부분 연산을 수행하고, 제 1 부분 연산 결과를 캐시(330)에 저장할 수 있다. 도 10을 참고하면, 캐시 컨트롤러(440)는 집계 피연산자들인 2 및 1을 더하는 제 1 부분 연산을 수행한 후, 캐시(330)에 제 1 부분 연산 결과 값 3을 저장할 수 있다.
단계 (c)에서, 캐시(330)에 저장된 캐시 블록이 방출될 때, 캐시(330)에 저장된 제 1 부분 연산 결과 값 3은 메모리(450)에 전달될 수 있고, 메모리(450)는 변수 x에 대응되는 피연산자 5와 제 1 부분 연산 결과 3를 더하는 제 2 부분 연산을 수행한 후, 제 2 부분 연산 결과 값 8을 저장할 수 있다.
따라서, 일 실시예에 따른 컴퓨팅 장치(400)는 메모리(450)에 저장된 변수에 대응되는 피연산자를 제외한 집계 피연산자들에 대한 제 1 부분 연산 결과를 캐시(330)에 저장한 후, 제 1 부분 연산 결과를 메모리(450)에 전달함으로써, 집계 연산을 처리하기 위해 프로세서(410)가 메모리(450)에 접근하는 횟수를 감소시킬 수 있다.
도 11은 또 다른 일 실시예에 따라, 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
캐시 컨트롤러(440)는 메모리(450)에 저장된 변수의 로딩(loading) 명령을 수신함에 따라, 캐시(330)에 저장된 제 1 부분 연산 결과와 메모리(450)로부터 로딩된 변수에 대응되는 피연산자에 대하여 연산자로 제 2 부분 연산을 수행하고, 제 2 부분 연산 결과를 캐시(330)에 저장할 수 있다. 한편, 도 11의 단계 (a)는 도 10의 단계 (a)와 대응되므로, 자세한 설명은 생략하기로 한다.
단계 (b)에서, 코어(420)가 변수 x의 로딩 명령을 수신하면, 코어(420)는 메모리(450)에 저장된 변수 x를 캐시(330)로 전달할 수 있다.
단계 (c)에서, 캐시 컨트롤러(440)는 캐시(330)에 저장된 제 1 부분 연산 결과 값 3과 메모리(450)로부터 수신된 변수 x에 대응되는 피연산자 5를 더하는 제 2 부분 연산을 수행한 후, 제 2 부분 연산 결과 값 8을 캐시(330)에 저장할 수 있다.
도 12는 일 실시예에 따라, 복수 레벨의 캐시들이 포함된 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 캐시(330)는 캐시 미스인 경우, 제 1 부분 연산의 항등원을 저장할 수 있다. 한편, 컴퓨팅 장치(400)는 복수 레벨의 캐시들을 포함할 수 있다.
단계 (a)에서, 코어(420)는 명령어에 의해 요청된 연산이 집계 연산인지 판단하고, 판단 결과에 따라 집계 연산의 연산자 및 집계 피연산자들에 대한 정보를 캐시(330)로 출력할 수 있다. 도 10을 참고하면, 예를 들어, 코어(420)는 집계 피연산자들인 2 및 1과 연산자에 관한 정보를 순차적으로 L1 캐시(431)로 출력할 수 있다.
단계 (b)에서, 캐시 컨트롤러(440)는 코어(420)로부터 집계 연산의 연산자 및 집계 피연산자들에 대한 정보를 수신하면, 집계 피연산자들에 연산자로 제 1 부분 연산을 수행할 수 있다. 도 12를 참고하면, 캐시 컨트롤러(440)는 집계 피연산자들인 2 및 1을 더하는 제 1 부분 연산을 수행한 후, 제 1 부분 연산 결과 값 3을 L1 캐시(431)에 저장할 수 있다. 이때, L2 캐시(432)는 캐시 미스이므로, L2 캐시(432)는 제 1 부분 연산의 항등원인 0이 저장할 수 있다. 또한, L1 캐시(431)의 캐시 블록은 L2 캐시(432)로 방출될 수 있다. 따라서, L1 캐시(431)에 저장되어 있던 제 1 부분 연산 결과 값 3이 L2 캐시(432)로 전달될 수 있다.
단계 (c)에서, L2 캐시(432)에 저장된 캐시 블록이 방출될 때, L2 캐시(432)에 저장된 제 1 부분 연산 결과 값 3은 메모리(450)에 전달될 수 있다.
단계 (d)에서, 메모리(450)는 변수 x에 대응되는 피연산자 5와 L2 캐시(432)로부터 수신된 제 1 부분 연산 결과 값 3을 더하는 제 2 부분 연산을 수행한 후, 제 2 부분 연산 결과 값 8을 저장할 수 있다.
도 13은 다른 일 실시예에 따라, 복수 레벨의 캐시들이 포함된 컴퓨팅 장치가 연산을 처리하는 방법을 설명하기 위한 도면이다.
구체적으로, 도 13은 일 실시예에 따른 컴퓨팅 장치(400)가 도 6의 캐시 블록(620) 및 제 2 메모리(720) 매핑 방식을 이용하여, 집계 연산을 처리하는 방법을 설명하기 위한 도면이다. 도 13의 변수 x 및 y 는 한 캐시 블록에 저장될 수 있고, 변수 x 및 y 의 초기값은 각각 12 및 34 이다.
단계 (b)에서, 코어(420)에 변수 x에 1을 더하는 연산이 요청되면(add $1, x), 코어(420)는 덧셈 연산자 및 집계 피연산자 1에 관한 정보를 L1 캐시(431)로 출력할 수 있다. 또한, L1 캐시(431)는 집계 피연산자 1을 변수 x에 대응되는 L1 캐시(431)의 워드에 저장할 수 있다. 이때, 변수 y는 캐시 미스이므로, 변수 y에 대응되는 L1 캐시(431)의 워드에는 덧셈 연산의 항등원인 0 이 저장될 수 있다. 또한, L2 캐시(432)는 모두 캐시 미스이므로, 변수 x 및 y에 대응되는 L2 캐시(432)의 워드들은 모두 0이 저장될 수 있다.
단계 (c)에서, 변수 x에 다시 1을 더하는 연산이 요청되면 (add $1, x), 캐시 컨트롤러(430)는 코어(420)로부터 수신된 집계 피연산자 1과 L1 캐시(431)의 워드에 저장된 1을 더하는 부분 연산을 수행한 후, 부분 연산 결과값 2를 변수 x에 대응되는 L1 캐시(431)의 워드에 저장할 수 있다. 한편, 변수 y는 캐시 미스이므로, 변수 y에 대응되는 L1 캐시(431)의 워드는 덧셈 연산의 항등원인 0 이 유지될 수 있다.
단계 (d)에서, L1 캐시(431)의 캐시 블록은 L2 캐시(432)로 방출될 수 있다.
단계 (e)에서, 변수 y에 1을 더하는 연산이 요청되면(add $1, y), 코어(420)는 덧셈 연산자 및 집계 피연산자 1에 관한 정보를 L1 캐시(431)로 출력할 수 있다. 또한, L1 캐시(431)는 집계 피연산자 1을 변수 y에 대응되는 L1 캐시(431)의 워드에 저장할 수 있다. 이때, 변수 x는 캐시 미스이므로, 변수 x에 대응되는 L1 캐시(431)의 워드는 덧셈 연산의 항등원인 0 이 저장될 수 있다. 또한, L2 캐시(432)는 단계 (d)에서 방출된 캐시 블록이 유지될 수 있다.
단계 (f)에서, L1 캐시(431)의 캐시 블록이 L2 캐시(432)로 방출되면, 캐시 컨트롤러(430)는 L1 캐시(431)로부터 수신된 캐시 블록의 워드들과 L2 캐시(432)의 워드들을 더하는 부분 연산을 수행한 후, 부분 연산 결과값을 L2 캐시(432)의 워드들에 저장할 수 있다. 여기서, 메모리(450)는 제 2 메모리(720) 매핑 방식이 적용됨에 따라, 변수 x 및 변수 y에 대한 연산이 독립적으로 수행될 수 있다. 따라서, L2 캐시(432)는 변수 x에 관한 부분 연산 결과 값 2와 변수 y에 관한 부분 연산 결과 값 1을 저장할 수 있다.
단계 (g)에서, L2 캐시(432)의 캐시 블록은 메모리(450)로 방출될 수 있다. 이때, 메모리(450)는 L2 캐시(432)로부터 수신되는 캐시 블록을 이용하여, 메모리(450)에 저장된 변수 x 및 변수 y에 대한 덧셈 연산을 독립적으로 수행할 수 있다. 예를 들어, 메모리(450)는 변수 x의 초기값인 12에 부분 연산 결과 값 2를 더한 후, 결과 값 14를 변수 x에 저장할 수 있고, 변수 y의 초기값인 34와 집계 피연산자 1을 더한 후, 연산 결과 값 35를 변수 y에 저장할 수 있다.
단계 (h)에서, 다시 변수 x에 1을 더하는 연산이 요청되면(add $1, x), (a) 단계가 동일한 절차가 수행될 수 있다.
단계 (i)에서, 변수 x의 로딩 명령이 수신되면, 코어(420)는 메모리(450)에 저장된 변수 x 를 포함하는 캐시 블록을 L2 캐시(432) 및 L1 캐시(431)에 순차적으로 전달할 수 있다. 여기서, 변수 x 를 포함하는 캐시 블록은 변수 y도 포함하기 때문에, 변수 y도 함께 L2 캐시(432) 및 L1 캐시(431)에 순차적으로 전달될 수 있다. 이때, 변수 x에 대응되는 L1 캐시(431)의 워드에 집계 피연산자 1이 저장되어 있으므로, 캐시 컨트롤러(440)는 변수 x에 대응되는 피연산자 14와 L1 캐시(431)의 워드에 저장된 집계 피연산자 1을 더하는 부분 연산을 수행한 후, 부분 연산 결과값 15를 변수 x에 대응되는 L1 캐시(431)의 워드에 저장할 수 있다.
단계 (j)에서, 다시 변수 x에 1을 더하는 연산이 요청되면(add $1, x), 캐시 컨트롤러(440)는 새로운 집계 피연산자 1과 L1 캐시(431)의 워드에 저장된 부분 연산 결과값 15를 더하는 부분 연산을 수행한 후, 부분 연산 결과값 16을 변수 x에 대응되는 L1 캐시(431)의 워드에 저장할 수 있다.
도 14는 일 실시예에 따라, 컴퓨팅 장치가 연산을 처리하는 방법을 도시한 흐름도이다.
단계 1410에서, 코어(420)는 집계 피연산자들 및 메모리(450)에 저장된 변수에 대응되는 피연산자를 이용하는 집계 연산에 관한 정보를 출력할 수 있다. 구체적으로, 단계 1410는 명령어에 의해 요청된 연산이 교환 법칙 및 결합 법칙을 만족하는 제 1 부분 연산 및 제 2 부분 연산의 집합인 경우, 코어(420)가 연산을 집계 연산으로 판단하고, 판단 결과에 따라, 집계 연산의 연산자 및 집계 피연산자들에 대한 정보를 캐시(330)로 출력하는 단계를 포함할 수 있다.
단계 1420에서, 캐시(330)는 코어(420)로부터 수신된, 집계 연산의 연산자 및 집계 피연산자들에 대한 정보를 저장할 수 있다. 구체적으로, 캐시(330)는 연산자에 관한 정보를 캐시(330)의 태그 영역에 저장하고, 집계 피연산자들 또는 제 1 부분 연산 결과 중 적어도 하나를 캐시 블록에 저장할 수 있다.
또한, 캐시 미스(cache miss)일 때, 단계 1420에서, 캐시(330)는 제 1 부분 연산의 항등원을 저장할 수 있다.
단계 1430에서, 캐시 컨트롤러(440)는 캐시(330)에 저장된 집계 피연산자들에 대하여 연산자로 제 1 부분 연산을 수행한 후, 제 1 부분 연산 결과를 캐시(330)에 저장할 수 있다.
단계 1440에서, 메모리(450)는 캐시(330)에 저장된 제 1 부분 연산 결과 및 변수에 대응되는 피연산자에 대하여 연산자로 제 2 부분 연산을 수행할 수 있다.
만약, 메모리(450)에 저장된 변수의 로딩(loading) 명령을 수신되면, 캐시 컨트롤러(440)는 캐시(330)에 저장된 제 1 부분 연산 결과와 메모리(450)로부터 로딩된 변수에 대응되는 피연산자에 대하여 연산자로 제 2 부분 연산을 수행한 후, 제 2 부분 연산 결과를 캐시(330)에 저장할 수 있다.
단계 1450에서, 메모리(450)는 제 2 부분 연산 결과를 저장할 수 있다.
한편, 일 실시예에 따른 캐시 블록은 복수의 워드(word)들을 포함하고, 워드의 크기는 메모리(450)가 병렬적으로 처리하는 데이터 단위인 뱅크(bank)와 동일할 수 있다. 이러한 경우, 컴퓨팅 장치에서 연산을 처리하는 방법은 캐시 블록이 캐시로부터 방출됨에 따라, 메모리 컨트롤러(460)에 의해, 뱅크에 워드를 매핑하는 단계를 더 포함할 수 있다.
또한, 일 실시예에 따른 메모리(450)는 복수 개의 뱅크들을 포함하는, 뱅크 그룹과 방출된 캐시 블록의 연산자로 제 2 부분 연산을 수행하는 연산기(485)를 더 포함할 수 있다. 이러한 경우, 뱅크에 워드를 매핑하는 단계는 뱅크 그룹에 포함된 복수 개의 뱅크들과 연산기(485)를 이용하여, 제 2 부분 연산을 수행한 후, 제 2 부분 연산의 결과를 뱅크 그룹에 저장하는 단계를 포함할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 집계 피연산자들(aggregation operands) 및 메모리에 저장된 변수에 대응되는 피연산자를 이용하는 집계 연산(aggregation operation)에 관한 정보를 출력하는 코어;
    상기 코어로부터 수신된, 상기 집계 연산의 연산자 및 상기 집계 피연산자들에 대한 정보를 저장하는, 캐시;
    상기 캐시에 저장된 상기 집계 피연산자들에 대하여 상기 연산자로 제 1 부분 연산을 수행하고, 상기 제 1 부분 연산 결과를 상기 캐시에 저장하는, 캐시 컨트롤러; 및
    상기 변수를 저장하고, 상기 캐시에 저장된 상기 제 1 부분 연산 결과 및 상기 변수에 대응되는 상기 피연산자에 대하여 상기 연산자로 제 2 부분 연산을 수행하고, 상기 제 2 부분 연산 결과를 저장함으로써 상기 집계 연산을 처리하는, 상기 메모리;
    를 포함하는, 컴퓨팅 장치.
  2. 제 1 항에 있어서,
    상기 코어는,
    명령어에 의해 요청된 연산이 교환 법칙 및 결합 법칙을 만족하는 상기 제 1 부분 연산 및 상기 제 2 부분 연산의 집합인 경우, 상기 연산을 집계 연산으로 판단하고,
    상기 판단 결과에 따라, 상기 집계 연산의 연산자 및 상기 집계 피연산자들에 대한 정보를 상기 캐시로 출력하는, 컴퓨팅 장치.
  3. 제 1 항에 있어서,
    상기 캐시 컨트롤러는,
    상기 메모리에 저장된 상기 변수의 로딩(loading) 명령을 수신함에 따라, 상기 캐시에 저장된 상기 제 1 부분 연산 결과와 상기 메모리로부터 로딩된 상기 변수에 대응되는 상기 피연산자에 대하여 상기 연산자로 상기 제 2 부분 연산을 수행하고, 상기 제 2 부분 연산 결과를 상기 캐시에 저장하는, 컴퓨팅 장치.
  4. 제 1 항에 있어서,
    상기 캐시는,
    캐시 미스(cache miss)일 때, 상기 제 1 부분 연산의 항등원을 저장하는 것인, 컴퓨팅 장치.
  5. 제 1 항에 있어서,
    상기 캐시는,
    상기 연산자에 관한 정보를 상기 캐시의 태그 영역에 저장하고, 상기 집계 피연산자들 또는 상기 제 1 부분 연산 결과 중 적어도 하나를 캐시 블록에 저장하는, 컴퓨팅 장치.
  6. 집계 피연산자들(aggregation operands) 및 메모리에 저장된 변수에 대응되는 피연산자를 이용하는 집계 연산(aggregation operation)에 관한 정보를 코어에 의해, 출력하는 단계;
    상기 코어로부터 수신된, 상기 집계 연산의 연산자 및 상기 집계 피연산자들에 대한 정보를 캐시에 저장하는 단계;
    상기 캐시에 저장된 상기 집계 피연산자들에 대하여 상기 연산자로 제 1 부분 연산을 수행한 후, 상기 제 1 부분 연산 결과를 상기 캐시에 저장하는 단계;
    상기 캐시에 저장된 상기 제 1 부분 연산 결과 및 상기 변수에 대응되는 상기 피연산자에 대하여 상기 연산자로 제 2 부분 연산을 수행하는 단계; 및
    상기 메모리에 상기 제 2 부분 연산 결과를 저장하는 단계;
    를 포함하는, 컴퓨팅 장치가 연산을 처리하는 방법.
  7. 제 6 항에 있어서,
    상기 집계 연산에 관한 정보를 출력하는 단계는,
    명령어에 의해 요청된 연산이 교환 법칙 및 결합 법칙을 만족하는 상기 제 1 부분 연산 및 상기 제 2 부분 연산의 집합인 경우, 상기 연산을 집계 연산으로 판단하는 단계; 및
    상기 판단 결과에 따라, 상기 집계 연산의 연산자 및 상기 집계 피연산자들에 대한 정보를 상기 캐시로 출력하는 단계;
    를 포함하는, 컴퓨팅 장치가 연산을 처리하는 방법.
  8. 제 6 항에 있어서,
    상기 제 2 부분 연산을 수행하는 단계는,
    상기 메모리에 저장된 상기 변수의 로딩(loading) 명령을 수신함에 따라, 상기 캐시에 저장된 상기 제 1 부분 연산 결과와 상기 메모리로부터 로딩된 상기 변수에 대응되는 상기 피연산자에 대하여 상기 연산자로 상기 제 2 부분 연산을 수행하는 단계; 및
    상기 제 2 부분 연산 결과를 상기 캐시에 저장하는 단계;
    를 포함하는, 컴퓨팅 장치가 연산을 처리하는 방법.
  9. 제 6 항에 있어서,
    상기 집계 연산의 연산자 및 상기 집계 피연산자들에 대한 정보를 저장하는 단계는,
    캐시 미스(cache miss)일 때, 상기 캐시가 상기 제 1 부분 연산의 항등원을 저장하는 단계;
    를 포함하는, 컴퓨팅 장치가 연산을 처리하는 방법.
  10. 제 6 항에 있어서,
    상기 집계 연산의 연산자 및 상기 집계 피연산자들에 대한 정보를 저장하는 단계는,
    상기 연산자에 관한 정보를 상기 캐시의 태그 영역에 저장하고, 상기 집계 피연산자들 또는 상기 제 1 부분 연산 결과 중 적어도 하나를 캐시 블록에 저장하는 단계;
    를 포함하는, 컴퓨팅 장치가 연산을 처리하는 방법.
KR1020170037674A 2016-08-12 2017-03-24 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법 KR102356704B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/672,800 US10990589B2 (en) 2016-08-12 2017-08-09 Computing apparatuses and methods of processing operations thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662374143P 2016-08-12 2016-08-12
US62/374,143 2016-08-12

Publications (2)

Publication Number Publication Date
KR20180018269A true KR20180018269A (ko) 2018-02-21
KR102356704B1 KR102356704B1 (ko) 2022-01-27

Family

ID=61524876

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170037674A KR102356704B1 (ko) 2016-08-12 2017-03-24 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법

Country Status (1)

Country Link
KR (1) KR102356704B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021020646A1 (ko) * 2019-07-29 2021-02-04 전자부품연구원 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8990505B1 (en) * 2007-09-21 2015-03-24 Marvell International Ltd. Cache memory bank selection
US20160139920A1 (en) * 2014-11-14 2016-05-19 Cavium, Inc. Carry chain for simd operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8990505B1 (en) * 2007-09-21 2015-03-24 Marvell International Ltd. Cache memory bank selection
US20160139920A1 (en) * 2014-11-14 2016-05-19 Cavium, Inc. Carry chain for simd operations

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021020646A1 (ko) * 2019-07-29 2021-02-04 전자부품연구원 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치
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
KR102356704B1 (ko) 2022-01-27

Similar Documents

Publication Publication Date Title
Shanbhag et al. Efficient top-k query processing on massively parallel hardware
KR102402672B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법
US9558094B2 (en) System and method for selecting useful smart kernels for general-purpose GPU computing
EP2542973B1 (en) Gpu support for garbage collection
CN104133780B (zh) 一种跨页预取方法、装置及系统
US10332229B2 (en) System and method for high performance k-means clustering on GPU with smart kernels
US9513886B2 (en) Heap data management for limited local memory(LLM) multi-core processors
US9317456B2 (en) Method and system for performing event-matching with a graphical processing unit
US9798543B2 (en) Fast mapping table register file allocation algorithm for SIMT processors
WO2021232769A1 (zh) 一种存储数据的方法及数据处理装置
CN111984400A (zh) 神经网络的内存分配方法及装置
CN110073338A (zh) 翻译旁视缓冲器中的可配置的偏斜关联性
US11030714B2 (en) Wide key hash table for a graphics processing unit
Kasagi et al. Offline permutation algorithms on the discrete memory machine with performance evaluation on the GPU
US9928033B2 (en) Single-pass parallel prefix scan with dynamic look back
CN116529775A (zh) 用于光线追踪的合并函数调用的方法和装置
US20230385258A1 (en) Dynamic random access memory-based content-addressable memory (dram-cam) architecture for exact pattern matching
KR102356704B1 (ko) 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법
US10990589B2 (en) Computing apparatuses and methods of processing operations thereof
Nishimura et al. Accelerating the Smith-waterman algorithm using bitwise parallel bulk computation technique on GPU
US11157174B2 (en) Hybrid first-fit K-choice insertions for hash tables, hash sets, approximate set membership data structures, and caches
US20210200584A1 (en) Multi-processor system, multi-core processing device, and method of operating the same
CN114064222A (zh) 数据处理方法、装置、计算机设备及存储介质
US20230126783A1 (en) Leveraging an accelerator device to accelerate hash table lookups
Bentley Random access of elements in data containers which use multiple memory blocks of increasing capacity

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant