KR101858597B1 - 프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템 - Google Patents

프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템 Download PDF

Info

Publication number
KR101858597B1
KR101858597B1 KR1020160184090A KR20160184090A KR101858597B1 KR 101858597 B1 KR101858597 B1 KR 101858597B1 KR 1020160184090 A KR1020160184090 A KR 1020160184090A KR 20160184090 A KR20160184090 A KR 20160184090A KR 101858597 B1 KR101858597 B1 KR 101858597B1
Authority
KR
South Korea
Prior art keywords
memory
block
data
cache memory
processor
Prior art date
Application number
KR1020160184090A
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 KR1020160184090A priority Critical patent/KR101858597B1/ko
Application granted granted Critical
Publication of KR101858597B1 publication Critical patent/KR101858597B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Landscapes

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

Abstract

프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법이 개시된다.
프로세싱 인 메모리 시스템의 데이터 전달 방법은 호스트 프로세서가 메모리 프로세서에서 연산할 작업, 메모리 프로세서에서 연산할 데이터가 저장된 제1 위치 및 캐싱 영역에서 작업의 연산 결과 데이터가 저장될 제2 위치를 시스템 메모리의 메모리 프로세서로 전송하는 단계; 데이터 업데이터가 프로세서의 캐시 메모리와 상기 시스템 메모리의 일관성을 고려하여 상기 제1 위치에 대응하는 블록, 및 상기 제2 위치에 대응하는 블록을 시스템 메모리로 업데이트하는 단계; 메모리 프로세서가 상기 작업과 상기 제1 위치에 대응하는 업데이트된 블록을 참조하여 연산을 수행하는 단계; 상기 메모리 프로세서가 상기 연산의 수행에 따른 연산 결과 데이터를 상기 시스템 메모리의 캐싱 영역에 저장하는 단계; 및 상기 데이터 업데이터가 상기 캐싱 영역에 저장된 연산 결과 데이터를 상기 호스트 프로세서에 대응하는 캐시 메모리에 업데이트하는 단계를 포함할 수 있다.

Description

프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템{PROCESSING IN MEMORY SYSTEM AND METHOD FOR TRANSMITTING JOB, OPERAND DATA, AND CALCULATION RESULTS OF PROCESSING IN MEMORY SYSTEM}
본 발명은 프로세싱 인 메모리 시스템에서 호스트 프로세서와 메모리 프로세서 간에 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법에 관한 것이다.
프로세싱 인 메모리 기술은 시스템 메모리 내에 프로세서 혹은 연산 유닛을 통합함으로써, 호스트 프로세서의 일부 연산 동작을 시스템 메모리에서 수행하는 기술이다. 이를 위해 메모리 프로세서에서 연산할 작업과 연산할 데이터를 호스트 프로세서에서 메모리 프로세서로 전달하고, 메모리 프로세서에서 연산된 결과 데이터를 메모리 프로세서에서 호스트 프로세서로 전달해야 한다.
종래의 프로세싱 인 메모리 시스템은 호스트 프로세서가 비캐싱(Non-caching) 영역인 메모리 프로세서 내 레지스터 파일 혹은 시스템 메모리의 비캐싱 영역을 직접 접근하여 연산할 작업과 연산할 데이터, 연산된 결과 데이터의 전달을 수행하였다. 그러나, 해당 기술을 사용하는 종래의 프로세싱 인 메모리 시스템은 호스트 프로세서가 캐시 메모리를 거치지 않고 직접 시스템 메모리를 접근하므로, 호스트 프로세서의 캐시 메모리의 장점을 활용하지 못한다는 단점이 있었다.
또한, 종래의 프로세싱 인 메모리 시스템은 캐싱(Caching) 영역을 통해 연산할 데이터와 연산된 결과 데이터의 전달을 수행할 수 있다. 호스트 프로세서는 캐싱 영역에 연산할 데이터를 저장하고, 연산할 데이터가 저장된 위치와 연산된 결과 데이터가 저장될 위치를 비캐싱 영역을 통해 메모리 프로세서로 전달할 수 있다. 메모리 프로세서는 전달받은 연산할 데이터 위치를 이용하여 연산을 수행하고, 연산된 결과 데이터가 저장될 위치를 이용하여 연산된 결과 데이터를 캐싱 영역에 저장함으로써 연산된 결과 데이터를 전달할 수 있다. 캐시 메모리와 시스템 메모리 간 데이터 일관성을 유지하기 위해, 연산할 데이터를 포함하는 라스트-레벨-공유-캐시 메모리 블록에 라이트백(Write-back)을 요청하고 연산된 결과 데이터가 저장될 위치를 포함하는 라스트-레벨-공유-캐시 메모리 블록에 무효화(Invalidation)를 요청한다. 그러나, 해당 기술을 사용하는 종래의 프로세싱 인 메모리 시스템은 단일 라스트-레벨-캐시 블록에 대해서만 메모리 프로세서의 연산을 지원하므로, 메모리 프로세서의 연산 처리량을 제한한다는 문제점이 있었다.
또한, 해당 기술을 사용하는 종래의 프로세싱 인 메모리 시스템은 메모리 간 데이터 일관성 유지를 위해 연산된 결과 데이터가 저장될 위치를 포함하는 라스트-레벨-공유-캐시 메모리 블록에 항상 무효화(Invalidation)를 요청하므로, 호스트 프로세서가 연산된 결과 데이터를 접근할 때 상위 레벨 캐시에서 항상 캐시 미스(Cache miss)가 발생하게 되어, 미스 페널티(Miss penalty)에 의한 시스템의 성능 하락을 가져온다는 문제점도 있었다.
또한, 해당 기술을 사용하는 종래의 프로세싱 인 메모리 시스템은 메모리 간 데이터 일관성 유지를 위해 라스트-레벨-캐시 메모리가 모든 호스트 프로세서에 의해 공유되어야 하므로, 라스트-레벨-공유-캐시 메모리를 사용하지 않는 시스템에는 프로세싱 인 메모리를 적용하지 못한다는 문제점도 있었다.
그리고, 해당 기술을 사용하는 종래의 프로세싱 인 메모리 시스템은 시스템 메모리 내에서 연산을 위해 필요한 데이터 접근을 모두 수행하고 비교적 양이 적은 연산 결과 데이터만을 호스트 프로세서에 제공하므로, 호스트 프로세서에 전달할 실제 데이터 크기는 라스트-레벨-캐시 메모리의 블록 크기보다 일반적으로 작다. 그러나 해당 기술은 메모리 프로세서의 연산 결과 데이터 전달 시 항상 라스트-레벨-공유-캐시 메모리 블록 단위의 데이터 전송을 발생시키므로, 불필요한 데이터 전송으로 인해 호스트-메모리 인터페이스의 대역폭을 낭비한다는 문제점도 있었다.
따라서, 호스트 프로세서의 캐시 메모리의 장점을 활용할 수 있으며, 호스트 프로세서의 캐시 메모리와 시스템 메모리 간 데이터 일관성을 유지하면서 복수의 캐시 메모리 블록에 대해 메모리 프로세서의 연산을 지원하고, 호스트 프로세서의 캐시 미스 발생률(Cache miss rate)을 낮추며, 라스트-레벨-캐시 메모리의 공유를 필요로 하지 않으며, 호스트 프로세서와 시스템 메모리 간 인터페이스의 대역폭 낭비를 방지하는 방법이 필요한 실정이다.
본 발명은 메모리 프로세서에서 연산할 데이터 및 연산 결과 데이터를 시스템 메모리의 캐싱 영역을 통해 전송함으로써, 호스트 프로세서의 캐시 메모리의 장점을 활용하여 프로세싱 인 메모리 시스템의 성능을 향상시키는 시스템 및 방법을 제공할 수 있다.
또한, 본 발명은 데이터를 중복되지 않은 서로 다른 복수의 메모리 블록에 분산 저장하고, 분산 저장된 복수의 메모리 블록에 대해 메모리 프로세서의 연산을 수행함으로써, 메모리 프로세서의 처리량을 증가시켜 프로세싱 인 메모리 시스템의 성능을 향상시키는 시스템 및 방법을 제공할 수 있다.
또한, 본 발명은 메모리 프로세서에서 연산된 결과인 연산 결과 데이터를 호스트 프로세서의 모든 레벨의 캐시 메모리에 직접 업데이트함으로써, 호스트 프로세서에서 연산 결과 데이터를 접근할 때 상위 레벨 캐시 메모리에서 발생하는 캐시 미스(Cache miss)의 발생률을 낮추고 프로세싱 인 메모리 시스템의 성능을 향상시키는 시스템 및 방법을 제공할 수 있다.
또한, 본 발명은 복수 레벨의 호스트 프로세서의 캐시 메모리를 직접 업데이트함으로써, 라스트-레벨-캐시 메모리의 공유를 필요로 하지 않는 프로세싱 인 메모리 시스템 및 방법을 제공할 수 있다.
또한, 본 발명은 메모리 프로세서에서 연산된 결과인 연산 결과 데이터만을 호스트 프로세서의 캐시 메모리에 업데이트함으로써, 시스템 메모리의 캐싱 영역을 통해 호스트 프로세서와 메모리 프로세서 간 데이터를 전달하는 과정에서 라스트-레벨-캐시 메모리 블록 단위로 변경된 데이터를 전달함으로 인해 발생하는 호스트 프로세서와 시스템 메모리 간 인터페이스의 대역폭 낭비를 방지하는 시스템 및 방법을 제공할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법은 호스트 프로세서가 메모리 프로세서에서 연산할 작업, 메모리 프로세서에서 연산할 데이터가 저장된 제1 위치 및 캐싱 영역에서 작업의 연산 결과 데이터가 저장될 제2 위치를 시스템 메모리의 메모리 프로세서로 전송하는 단계; 데이터 업데이터가 프로세서의 캐시 메모리와 상기 시스템 메모리의 일관성을 고려하여 상기 제1 위치에 대응하는 블록, 및 상기 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계; 메모리 프로세서가 상기 작업과 상기 제1 위치에 대응하는 업데이트된 블록을 참조하여 연산을 수행하는 단계; 상기 메모리 프로세서가 상기 연산의 수행에 따른 연산 결과 데이터를 상기 시스템 메모리의 캐싱 영역에 저장하는 단계; 및 상기 데이터 업데이터가 상기 캐싱 영역에 저장된 연산 결과 데이터를 상기 호스트 프로세서에 대응하는 캐시 메모리에 업데이트하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법의 블록을 시스템 메모리에 업데이트하는 단계는, 상기 제1 위치가 포함된 캐시 메모리의 블록의 공유 상태에 따라 상기 메모리 프로세서가 상기 제1 위치에 저장된 데이터를 로드하기 전에 상기 제1 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계; 및 상기 제2 위치가 포함된 캐시 메모리의 블록의 공유 상태에 따라 상기 메모리 프로세서가 상기 연산 결과 데이터를 저장하기 전에 상기 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법의 제1 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는, 상기 제1 위치에 대응하는 캐시 메모리의 블록이 데이터의 변경이 발생한 수정(Modified) 상태인 경우, 상기 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제1 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법의 제1 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는, 상기 제1 위치에 대응하는 캐시 메모리의 블록이 상기 호스트 프로세서와 서로 다른 호스트 프로세서의 캐시 메모리들 중 하나에 포함된 수정(Modified) 상태인 경우, 상기 수정(Modified) 상태의 블록을 포함한 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제1 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법의 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는, 상기 제2 위치에 대응하는 캐시 메모리의 블록이 데이터의 변경이 발생한 수정(Modified) 상태인 경우, 상기 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법의 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는, 상기 제2 위치에 대응하는 캐시 메모리의 블록이 상기 호스트 프로세서와 서로 다른 호스트 프로세서의 캐시 메모리들 중 하나에 포함된 수정(Modified) 상태인 경우, 상기 수정(Modified) 상태의 블록을 포함한 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트하는 단계; 및 상기 수정(Modified) 상태의 블록을 포함했던 캐시 메모리에 무효화(Invalidation)를 요청하여 상기 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법의 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는, 상기 제2 위치에 대응하는 캐시 메모리의 블록이 복수의 캐시 메모리들에 포함된 공유(Shared) 상태인 경우, 상기 복수의 캐시 메모리들 중 상기 호스트 프로세서를 제외한 다른 호스트 프로세서의 캐시 메모리에 무효화(Invalidation)를 요청하여 상기 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템은 메모리 프로세서에서 연산할 작업, 메모리 프로세서에서 연산할 데이터가 저장된 제1 위치 및 캐싱 영역에서 작업의 연산 결과 데이터가 저장될 제2 위치를 시스템 메모리의 메모리 프로세서로 전송하는 호스트 프로세서; 프로세서의 캐시 메모리와 상기 시스템 메모리의 일관성을 고려하여 상기 제1 위치에 대응하는 블록, 및 상기 제2 위치에 대응하는 블록을 시스템 메모리로 업데이트하는 데이터 업데이터; 및 상기 작업과 상기 제1 위치에 대응하는 업데이트된 블록을 참조하여 연산을 수행하고, 상기 연산의 수행에 따른 연산 결과 데이터를 상기 시스템 메모리의 캐싱 영역에 저장하는 메모리 프로세서를 포함하고, 상기 데이터 업데이터는, 상기 캐싱 영역에 저장된 연산 결과 데이터를 상기 호스트 프로세서에 대응하는 캐시 메모리에 업데이트할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 업데이터는, 상기 제1 위치에 대응하는 캐시 메모리의 블록이 데이터의 변경이 발생한 수정(Modified) 상태인 경우, 상기 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제1 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 업데이터는, 상기 제1 위치에 대응하는 캐시 메모리의 블록이 상기 호스트 프로세서와 서로 다른 호스트 프로세서의 캐시 메모리들 중 하나에 포함된 수정(Modified) 상태인 경우, 상기 수정(Modified) 상태의 블록을 포함한 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제1 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 업데이터는, 상기 제2 위치에 대응하는 캐시 메모리의 블록이 데이터의 변경이 발생한 수정(Modified) 상태인 경우, 상기 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 업데이터는, 상기 제2 위치에 대응하는 캐시 메모리의 블록이 상기 호스트 프로세서와 서로 다른 호스트 프로세서의 캐시 메모리들 중 하나에 포함된 수정(Modified) 상태인 경우, 상기 수정(Modified) 상태의 블록을 포함한 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트하고, 상기 수정(Modified) 상태의 블록을 포함했던 캐시 메모리에 무효화(Invalidation)를 요청하여 상기 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경할 수 있다.
본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 업데이터는, 상기 제2 위치에 대응하는 캐시 메모리의 블록이 복수의 캐시 메모리들에 포함된 공유(Shared) 상태인 경우, 상기 복수의 캐시 메모리들 중 상기 호스트 프로세서를 제외한 다른 호스트 프로세서의 캐시 메모리에 무효화(Invalidation)를 요청하여 상기 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경할 수 있다.
본 발명의 일실시예에 의하면, 메모리 프로세서에서 연산할 데이터 및 연산 결과 데이터를 시스템 메모리의 캐싱 영역을 통해 전송함으로써, 호스트 프로세서의 캐시 메모리의 장점을 활용하여 프로세싱 인 메모리 시스템의 성능을 향상시킬 수 있다.
또한, 본 발명의 일실시예에 의하면, 복수의 캐시 메모리 블록에 대해 메모리 프로세서의 연산을 수행 가능하게 함으로써, 메모리 프로세서의 처리량을 증가시켜 프로세싱 인 메모리 시스템의 성능을 향상시킬 수 있다.
또한, 본 발명의 일실시예에 의하면, 메모리 프로세서에서 연산된 결과인 연산 결과 데이터를 호스트 프로세서의 모든 레벨의 캐시 메모리에 직접 업데이트함으로써, 호스트 프로세서에서 연산 결과 데이터를 접근할 때 상위 레벨 캐시 메모리에서 발생하는 캐시 미스(Cache miss)의 발생률을 낮추고 프로세싱 인 메모리 시스템의 성능을 향상시킬 수 있다.
또한, 본 발명의 일실시예에 의하면, 복수 레벨의 호스트 프로세서의 캐시 메모리를 직접 업데이트함으로써, 라스트-레벨-캐시 메모리의 공유를 필요로 하지 않는 프로세싱 인 메모리 시스템을 구현할 수 있다.
또한, 본 발명의 일실시예에 의하면, 메모리 프로세서에서 연산된 결과인 연산 결과 데이터만을 호스트 프로세서의 캐시 메모리에 업데이트함으로써, 시스템 메모리의 캐싱 영역을 통해 호스트 프로세서와 메모리 프로세서 간 데이터를 전달하는 과정에서 라스트-레벨-캐시 메모리 블록 단위로 변경된 데이터를 전달함으로 인해 발생하는 호스트 프로세서와 시스템 메모리 간 인터페이스의 대역폭 낭비를 방지할 수 있다.
도 1은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템을 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 시스템 메모리의 일례이다.
도 3은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 태스크의 일례이다.
도 4는 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산할 데이터가 저장된 제1 위치에 대응하는 블록 업데이트 과정의 제1 실시예이다.
도 5는 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산할 데이터가 저장된 제1 위치에 대응하는 블록 업데이트 과정의 제2 실시예이다.
도 6은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산 결과 데이터가 저장될 제2 위치에 대응하는 블록 업데이트 과정의 제1 실시예이다.
도 7은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산 결과 데이터가 저장될 제2 위치에 대응하는 블록 업데이트 과정의 제2 실시예이다.
도 8은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산 결과 데이터가 저장될 제2 위치에 대응하는 블록 업데이트 과정의 제3 실시예이다.
도 9는 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산할 데이터 혹은 연산 결과 데이터가 여러 개이고, 이들 데이터가 각각 복수의 메모리 블록에 분산 저장되어있는 경우의 실시예이다.
도 10은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법을 도시한 플로우차트이다.
도 11은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법의 블록 업데이트 과정을 도시한 플로우차트이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 본 발명의 일실시예에 따른 데이터 전달 방법은 프로세싱 인 메모리 시스템에 의해 수행될 수 있다.
도 1은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템을 나타내는 도면이다.
프로세싱 인 메모리 시스템은 도 1에 도시된 바와 같이 데이터 업데이터(100), 제1 호스트 프로세서(110), 제1 캐시 메모리(120), 공유 캐시 메모리(130), 시스템 메모리(140), 제2 호스트 프로세서(150), 제2 캐시 메모리(160), 데이터 업데이터(101) 중 적어도 하나이상을 포함할 수 있다. 예를 들어, 하나의 호스트 프로세서를 포함하는 프로세싱 인 메모리 시스템은 데이터 업데이터(100), 제1 호스트 프로세서(110), 제1 캐시 메모리(120), 및 시스템 메모리(140)를 포함할 수 있다. 또한, 3개 이상의 호스트 프로세서를 포함하는 프로세싱 인 메모리 시스템은 도 1의 구성에 제3 내지 제M 호스트 프로세서와 제3 내지 제M 캐시 메모리 및 각각의 호스트 프로세서와 캐시 메모리에 대응하는 데이터 업데이터들을 더 포함할 수 있다. 이때, 프로세싱 인 메모리 시스템에 따라 라스트-레벨-캐시 메모리는 공유 캐시 메모리(130)와 같이 공유되는 메모리일 수도 있고, 각각의 호스트 프로세서에 대응하며, 공유되지 않을 수도 있다.
제1 호스트 프로세서(110), 또는 제2 호스트 프로세서(150)는 메모리 프로세서(141)에서 연산할 작업, 메모리 프로세서(141)에서 연산할 데이터가 저장된 제1 위치 및 캐싱 영역에서 작업의 연산 결과 데이터가 저장될 제2 위치를 시스템 메모리(140)의 메모리 프로세서(141)로 전송할 수 있다.
이때, 제1 호스트 프로세서(110), 및 제2 호스트 프로세서(150)는 시스템 메모리(140)에 연결된 버스를 통해 제1 캐시 메모리(120), 및 제2 캐시 메모리(160)를 거치지 않고 시스템 메모리(140)에 접근하여 읽기, 쓰기를 수행할 수 있다. 구체적으로, 제1 호스트 프로세서(110), 및 제2 호스트 프로세서(150)는 시스템 메모리(140)의 비캐싱(Non-caching) 영역에 직접 시스템 메모리(140)에서 연산할 작업, 제1 위치 및 제2 위치를 저장함으로써 시스템 메모리(140)에서 연산할 작업, 제1 위치 및 제2 위치를 메모리 프로세서(141)에 전달할 수 있다. 이때, 제1 호스트 프로세서(110), 또는 제2 호스트 프로세서(150)가 시스템 메모리(140)에서 연산할 작업, 제1 위치 및 제2 위치를 시스템 메모리(140)의 비캐싱 영역에 저장하는 동작은 제1 호스트 프로세서(110), 또는 제2 호스트 프로세서(150) 상에서 동작하는 메모리 프로세서 호스트 드라이버에 의해 수행될 수 있다.
또한, 제1 호스트 프로세서(110), 및 제2 호스트 프로세서(150)는 메모리 프로세서(141)에서 연산할 작업, 제1 위치 및 제2 위치를 하나의 단위인 태스크의 형태로 전송할 수 있다. 이때, 태스크는 하나의 작업에 대응하는 적어도 하나의 제1 위치 및 적어도 하나의 제2 위치를 포함할 수 있다. 즉, 하나의 작업에 하나의 제1 위치 및 제2 위치가 대응할 수도 있고, 하나의 작업에 복수의 제1 위치 및 제2 위치가 대응할 수도 있다. 또한, 하나의 작업에 복수의 제1 위치 및 제2 위치가 대응하는 경우, 각각의 제1 위치 및 제2 위치는 하나의 캐시 메모리의 동일한 블록에 포함될 수 있다. 그리고, 제1 위치 및 제2 위치는 하나의 캐시 메모리의 서로 다른 블록들에 포함되거나, 서로 다른 캐시 메모리들 각각의 블록에 포함될 수도 있다.
데이터 업데이터(100), 또는 데이터 업데이터(101)는 제1 캐시 메모리(120), 또는 제2 캐시 메모리(160)와 시스템 메모리(140)의 일관성을 고려하여 제1 위치에 대응하는 블록, 및 제2 위치에 대응하는 블록을 업데이트할 수 있다.
이때, 데이터 업데이터(100), 또는 데이터 업데이터(101)는 제1 위치가 포함된 캐시 메모리의 블록의 공유 상태에 따라 메모리 프로세서(141)가 제1 위치에 저장된 데이터를 로드하기 전에 제1 위치에 대응하는 블록을 업데이트할 수 있다. 이때, 제1 위치가 포함된 캐시 메모리는 제1 캐시 메모리(120)일 수도 있고, 제2 캐시 메모리(160)일 수도 있다.
구체적으로, 제1 위치에 대응하는 캐시 메모리의 블록이 데이터의 변경이 발생한 수정(Modified) 상태인 경우, 데이터 업데이터(100)는 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 제1 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
또한, 제1 위치에 대응하는 캐시 메모리의 블록이 호스트 프로세서와 서로 다른 호스트 프로세서의 캐시 메모리들 중 하나에 포함된 수정(Modified) 상태인 경우, 데이터 업데이터(100)는 상기 수정(Modified) 상태의 블록을 포함한 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
제1 위치에 대응하는 블록을 업데이트하는 과정은 이하 도 4, 도 5를 참조하여 상세히 설명한다.
또한, 데이터 업데이터(100), 또는 데이터 업데이터(101)는 제2 위치가 포함된 캐시 메모리의 블록의 공유 상태에 따라 메모리 프로세서(141)가 연산 결과 데이터를 시스템 메모리(140)의 캐싱 영역에 저장하기 전에 제2 위치에 대응하는 블록을 업데이트할 수 있다.
구체적으로, 제2 위치에 대응하는 캐시 메모리의 블록이 데이터의 변경이 발생한 수정(Modified) 상태인 경우, 데이터 업데이터(100)는 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
또한, 제2 위치에 대응하는 캐시 메모리의 블록이 호스트 프로세서와 서로 다른 호스트 프로세서의 캐시 메모리들 중 하나에 포함된 수정(Modified) 상태인 경우, 데이터 업데이터(100)는 상기 수정(Modified) 상태의 블록을 포함한 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다. 다음으로, 데이터 업데이터(100)는 상기 수정(Modified) 상태의 블록을 포함했던 캐시 메모리에 무효화(Invalidation)를 요청하여 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경할 수 있다.
예를 들어, 제1 호스트 프로세서(110)가 메모리 프로세서(141)에서 연산할 작업, 제1 위치 및 제2 위치를 시스템 메모리(140)에 저장하고, 제2 위치에 대응하는 캐시 메모리의 블록이 제2 캐시 메모리(160)에 포함된 수정(Modified) 상태의 블록일 수 있다. 이때, 데이터 업데이터(100)는 제2 캐시 메모리(160)에 라이트백을 요청하여 시스템 메모리의 블록을 업데이트하고, 제2 캐시 메모리(160)에 무효화를 요청하여 제2 캐시 메모리에서 제2 위치에 대응하는 블록을 무효 상태로 변경할 수 있다.
그리고, 제2 위치에 대응하는 캐시 메모리의 블록이 복수의 캐시 메모리들에 포함된 공유(Shared) 상태인 경우, 데이터 업데이터(100)는 복수의 캐시 메모리들 중 호스트 프로세서를 제외한 다른 호스트 프로세서의 캐시 메모리에 무효화(Invalidation)를 요청하여 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경할 수 있다.
예를 들어, 제1 호스트 프로세서(110)가 메모리 프로세서(141)에서 연산할 작업, 제1 위치 및 제2 위치를 시스템 메모리(140)에 저장하고, 제2 위치에 대응하는 캐시 메모리의 블록이 제1 캐시 메모리(120)와 제2 캐시 메모리(160)에 모두 포함된 공유(Shared) 상태일 수 있다. 이때, 데이터 업데이터(100)는 제2 캐시 메모리(160)에 무효화를 요청하여 제2 캐시 메모리에서 제2 위치에 대응하는 블록을 무효 상태로 변경할 수 있다.
제2 위치에 대응하는 블록을 업데이트하는 과정은 이하 도 6 내지 도 8을 참조하여 상세히 설명한다.
제1 캐시 메모리(120) 및 제2 캐시 메모리(160)는 도 1에 도시된 바와 같이 각각 제1 호스트 프로세서(110) 및 제2 호스트 프로세서(150)에 대응하는 캐시 메모리일 수 있다. 이때, 제1 캐시 메모리(120) 및 제2 캐시 메모리(160)는 복수의 레벨 캐시들로 구성될 수 있다. 예를 들어, 제1 캐시 메모리(120) 및 제2 캐시 메모리(160)는 도 1에 도시된 바와 같이 레벨 1에 해당하는 L1 캐시와 레벨 2에 해당하는 L2 캐시로 구성될 수 있다. 또한, 실시예에 따라서는 L3 캐시 내지 L(N-1) 캐시를 더 포함할 수 있다. 이때, N은 프로세싱 인 메모리 시스템에 포함된 캐시들의 최대 레벨일 수 있다.
공유 캐시 메모리(130)는 도 1에 도시된 바와 같이 하위 레벨의 제1 캐시 메모리(120) 및 제2 캐시 메모리(160)와 데이터를 공유하여 저장하고 관리할 수 있는 캐시일 수 있다. 예를 들어, 공유 캐시 메모리(130)는 레벨 N에 해당하는 라스트-레벨-캐시 메모리일 수 있다. 또한, 프로세싱 인 메모리 시스템의 라스트-레벨-캐시 메모리가 공유되지 않는 경우, 프로세싱 인 메모리 시스템의 라스트-레벨-캐시 메모리는 공유 캐시 메모리(130)가 아니라 호스트 프로세서들 각각에 대응하는 L N 캐시일 수 있다.
시스템 메모리(140)는 제1 캐시 메모리(120), 제2 캐시 메모리(160), 및 공유 캐시 메모리(130) 중 적어도 하나로부터 블록이 캐싱되는 캐싱 영역과 태스크들을 저장하기 위한 비캐싱 영역을 포함할 수 있다.
메모리 프로세서(141)는 제1 캐시 메모리(120), 또는 제2 캐시 메모리(160)로부터 수신한 작업과 제1 위치에 대응하는 업데이트된 블록을 참조하여 연산을 수행할 수 있다. 구체적으로, 제1 캐시 메모리(120), 또는 제2 캐시 메모리(160)의 메모리 프로세서 호스트 드라이버에 의해 전달된 태스크 목록의 태스크들은 메모리 프로세서(141)에 의해 순차적 혹은 비순차적으로 수행될 수 있다.
예를 들어, 메모리 프로세서(141)는 시스템 메모리(140)의 비캐싱 영역에 저장된 태스크 목록 주소 테이블을 참조하여 태스크의 시작 메모리 주소를 확인할 수 있다. 다음으로, 메모리 프로세서(141)는 확인한 태스크의 시작 메모리 주소를 참조하여 시스템 메모리(140)의 비캐싱 영역에 저장된 태스크 목록의 태스크에 접근할 수 있다. 그 다음으로, 메모리 프로세서(141)는 접근한 태스크의 연산 코드를 참조하여 작업할 연산을 확인할 수 있다. 다음으로, 메모리 프로세서(141)는 접근한 태스크의 피연산자 정보 개수를 참조하여 태스크의 피연산자 정보 개수를 확인하고, 피연산자 정보 개수만큼의 피연산자 정보를 확인할 수 있다. 그 다음으로, 메모리 프로세서(141)는 피연산자 정보들의 시작 메모리 주소들과 크기를 참조하여 시스템 메모리(140)의 캐싱 영역에 저장된 연산할 데이터들을 획득할 수 있다. 마지막으로, 메모리 프로세서(141)는 획득한 데이터에 확인한 연산을 적용할 수 있다.
그리고, 메모리 프로세서(141)는 연산의 수행에 따른 연산 결과 데이터를 시스템 메모리(140)의 캐싱 영역에 저장할 수 있다. 예를 들어, 메모리 프로세서(141)는 접근한 태스크의 연산 결과 정보 개수를 참조하여 태스크의 연산 결과 정보 개수를 확인할 수 있다. 다음으로, 메모리 프로세서(141)는 확인한 연산 결과 정보 개수만큼의 연산 결과 정보를 확인할 수 있다. 그 다음으로, 메모리 프로세서(141)는 연산 결과 정보들의 시작 메모리 주소들과 크기를 참조하여 시스템 메모리(140)의 캐싱 영역에 연산 결과 데이터들을 저장할 수 있다. 연산 결과 데이터들의 저장이 종료되는 경우, 메모리 프로세서(141)는 태스크의 태스크 완료 플래그를 설정할 수 있다.
이때, 데이터 업데이터(100)는 시스템 메모리(140)의 캐싱 영역에 저장된 연산 결과 데이터를 제1 호스트 프로세서(110), 및 제2 호스트 프로세서(150) 중 작업을 전송한 호스트 프로세서에 대응하는 캐시 메모리에 업데이트할 수 있다. 예를 들어, 제1 호스트 프로세서(110)가 시스템 메모리(140)에 연산할 작업을 전송한 경우, 제1 호스트 프로세서(110)에 대응하는 데이터 업데이터(100)는 전송한 작업의 태스크에 태스크 완료 플래그가 설정되었는지 여부를 확인할 수 있다. 태스크에 태스크 완료 플래그가 설정된 경우, 데이터 업데이터(100)는 태스크가 완료된 것으로 판단하고, 시스템 메모리(140)의 캐싱 영역에 저장된 연산 결과 데이터를 제1 호스트 프로세서(110)에 대응하는 제1 캐시 메모리(120)에 업데이트할 수 있다.
구체적으로, 데이터 업데이터(100)는 시스템 메모리에 연결된 버스를 통해 시스템 메모리(140)의 비캐싱 영역에 접근할 수 있다. 이때, 데이터 업데이터(100)는 시스템 메모리(140)의 비캐싱 영역에 저장된 태스크의 연산 결과 정보를 확인할 수 있다. 다음으로, 데이터 업데이터(100)는 확인한 태스크의 연산 결과 정보를 참조하여 시스템 메모리(140)의 캐싱 영역에 저장된 연산 결과 데이터를 획득할 수 있다.
마지막으로, 데이터 업데이터(100)는 제1 캐시 메모리(120)에 연결된 버스들을 통하여, 연산 결과 데이터가 저장된 위치를 포함하는 블록을 캐싱(Caching)한 모든 레벨의 캐시 메모리에 업데이트함으로써, 연산 결과 데이터를 제1 캐시 메모리(120)와 공유 캐시 메모리(130)로 업데이트할 수 있다. 예를 들어, 데이터 업데이터(100)는 연산 결과 데이터가 저장된 위치를 포함하는 블록을 L1 캐시 메모리 내지 L N 캐시 메모리 각각에 전송하여 L1 캐시 메모리 내지 L N 캐시 메모리 각각에 포함된 블록을 업데이트할 수 있다.
이때, 데이터 업데이터(100)는 제1 캐시 메모리(120)가 연결된 버스에 연결되어 제1 캐시 메모리(120)에 접근할 수 있다. 또한, 데이터 업데이터(101)는 제2 캐시 메모리(160)가 연결된 버스에 연결되어 제2 캐시 메모리(160)에 접근할 수 있다. 그리고, 데이터 업데이터(100)와 데이터 업데이터(101)는 공유 캐시 메모리(130)가 연결된 버스에 연결되어 공유 캐시 메모리(130)에 접근할 수 있다.
그리고, 제1 호스트 프로세서(110)는 폴링 또는 인터럽트 방식으로 데이터 업데이터(100)에 접근하여 데이터 업데이터(100)가 연산 결과 데이터를 제1 캐시 메모리(120)에 업데이트하였는지 여부를 확인할 수 있다. 데이터 업데이터(100)가 연산 결과 데이터의 업데이트를 완료한 것이 확인되는 경우, 제1 호스트 프로세서(110)는 제1 캐시 메모리(120)에 업데이트 된 연산 결과 데이터를 사용할 수 있다.
본 발명은 메모리 프로세서에서 연산할 데이터 및 연산 결과 데이터를 시스템 메모리의 캐싱 영역을 통해 전송함으로써, 호스트 프로세서의 캐시 메모리의 장점을 활용하여 프로세싱 인 메모리 시스템의 성능을 향상시킬 수 있다.
또한, 본 발명은 데이터를 중복되지 않은 서로 다른 복수의 메모리 블록에 분산 저장하고, 분산 저장된 복수의 메모리 블록에 대해 메모리 프로세서의 연산을 수행함으로써, 메모리 프로세서의 처리량을 증가시켜 프로세싱 인 메모리 시스템의 성능을 향상시킬 수 있다.
또한, 본 발명은 메모리 프로세서에서 연산된 결과인 연산 결과 데이터를 호스트 프로세서의 모든 레벨의 캐시 메모리에 직접 업데이트함으로써, 호스트 프로세서에서 연산 결과 데이터를 접근할 때 상위 레벨 캐시 메모리에서 발생하는 캐시 미스(Cache miss)의 발생률을 낮추고 프로세싱 인 메모리 시스템의 성능을 향상시킬 수 있다.
또한, 본 발명은 복수 레벨의 호스트 프로세서의 캐시 메모리를 직접 업데이트 함으로써, 라스트-레벨-캐시 메모리의 공유를 필요로 하지 않는 프로세싱 인 메모리 시스템을 구현할 수 있다.
그리고, 본 발명은 메모리 프로세서에서 연산된 결과인 연산 결과 데이터만을 호스트 프로세서의 캐시 메모리에 업데이트함으로써, 시스템 메모리의 캐싱 영역을 통해 호스트 프로세서와 메모리 프로세서 간 데이터를 전달하는 과정에서 라스트-레벨-캐시 메모리 블록 단위로 변경된 데이터를 전달함으로 인해 발생하는 호스트 프로세서와 시스템 메모리 간 인터페이스의 대역폭 낭비를 방지할 수 있다.
도 2는 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 시스템 메모리의 일례이다.
시스템 메모리(140)는 도 2에 도시된 바와 같이 메모리 프로세서(141)에서 연산할 작업과 제1 위치 및 제2 위치가 저장되는 비캐싱(Non-caching) 영역(210)과 메모리 프로세서(141)에서 연산할 데이터 및 메모리 프로세서(141)의 연산 결과 데이터가 저장되는 캐싱 영역(220)을 포함할 수 있다. 또한, 도 2에 도시된 비캐싱 영역(210)은 메모리 프로세서(141)의 내 레지스터 파일을 포함할 수도 있다.
제1 호스트 프로세서(110), 또는 제2 호스트 프로세서(150)의 메모리 프로세서 호스트 드라이버는 메모리 프로세서(141)에서 연산할 작업과 메모리 프로세서(141)에서 연산할 데이터가 저장된 제1 위치 및 캐싱 영역에서 작업의 연산 결과 데이터가 저장될 제2 위치를 태스크 형태로 전송할 수 있다. 이때, 메모리 프로세서 호스트 드라이버가 전송한 태스크는 비캐싱 영역(210)의 태스크 목록(212)에 저장되고, 태스크 목록(212)은 도 2에 도시된 바와 같이 복수의 태스크를 포함할 수 있다. 이때, 태스크 목록에 포함된 태스크는 제1 호스트 프로세서(110), 또는 제2 호스트 프로세서(150)로부터 전송된 태스크들 중에서 메모리 프로세서(141)에서 아직 처리되지 않은 태스크들일 수 있다.
또한, 작업 별로 연산을 수행할 데이터의 개수가 다를 수 있으므로, 태스크의 크기는 가변적일 수 있다. 따라서, 메모리 프로세서 호스트 드라이버는 태스크를 태스크 목록에 저장할 때 메모리 프로세서(141) 및 데이터 업데이터(100)가 태스크에 접근하기 위하여 참조할 수 있는 태스크의 시작 메모리 주소를 태스크 목록 주소 테이블(211)에 저장할 수 있다. 이때, 태스크 목록 주소 테이블(211)에 포함된 시작 메모리 주소들은 각각 태스크 목록에 포함된 태스크에 대응할 수 있다.
도 3은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 태스크의 일례이다.
메모리 프로세서 호스트 드라이버가 시스템 메모리(140)에 전송하는 태스크(310)는 도 3에 도시된 바와 같이 연산 코드, 프로세서 식별자, 피연산자 정보 개수, 연산 결과 정보 개수, 태스크 완료 플래그, 피연산자 정보들(311), 및 연산 결과 정보들(312) 중 적어도 하나를 포함할 수 있다.
이때, 연산 코드는 태스크가 수행할 연산을 나타내는 코드일 수 있다. 그리고, 태스크는 복수의 호스트 프로세서로부터 각각 전달될 수 있으므로, 프로세서 식별자는 태스크를 전송한 호스트 프로세서를 식별하기 위한 식별 정보일 수 있다.
또한, 피연산자 정보 개수는 메모리 프로세서(141)가 연산할 데이터의 위치 개수를 전달하기 위한 정보이고, 연산 결과 정보 개수는 메모리 프로세서(141)의 연산 결과 데이터가 저장될 위치 개수를 전달하기 위한 정보일 수 있다.
그리고, 태스크 완료 플래그는 메모리 프로세서(141)가 연산을 종료하는 경우, 연산이 완료된 것을 나타낼 수 있는 플래그일 수 있다.
또한, 피연산자 정보들(311)은 시스템 메모리(140)에서 연산할 데이터가 저장된 제1 위치들의 리스트이고, 연산 결과 정보들(312)는 캐싱 영역에서 작업의 연산 결과 데이터가 저장될 제2 위치들의 리스트일 수 있다.
이때, 피연산자 정보들(311)는 320에 도시된 바와 같이 시작 메모리 주소와 시스템 메모리(140)에서 연산할 데이터가 메모리에서 차지하는 크기의 조합으로 저장될 수 있다. 또한, 연산 결과 정보들(312)는 320에 도시된 바와 같이 시작 메모리 주소와 연산 결과 데이터가 메모리에서 차지하는 크기의 조합으로 저장될 수 있다.
도 4는 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산할 데이터가 저장된 제1 위치에 대응하는 블록 업데이트 과정의 제1 실시예이다.
도 4는 연산할 데이터가 저장된 제1 위치가 포함된 블록이 태스크를 전송한 제1 호스트 프로세서(110)에 대응하는 제1 캐시 메모리(120)에 캐싱된 경우, 제1 위치에 대응하는 블록 업데이트 과정의 일례이다.
이때, 제1 호스트 프로세서(110)가 요청한 태스크 0이 시스템 메모리(140)의 비캐싱 영역의 태스크 목록에 저장될 수 있다. 이때, 태스크 0은 블록 A의 주소를 제1 주소인 피연산자 정보의 시작 메모리 주소로 가질 수 있다. 그리고, 블록 A는 제1 호스트 프로세서(110)에 대응하는 제1 캐시 메모리(120)에 캐싱되어 있으며, 제1 호스트 프로세서(110)에 의하여 업데이트됨으로써, 수정(Modified) 상태일 수 있다.
단계(410)에서 데이터 업데이터(100)는 태스크 0에 포함된 피연산자 정보를 이용하여 블록 A(411)가 캐싱된 제1 캐시 메모리(120)의 주소를 식별할 수 있다. 그리고, 데이터 업데이터(100)는 제1 캐시 메모리(120)에 라이트백(Write-back)을 요청할 수 있다. 이때, 시스템 메모리(140)의 캐싱 영역에 저장된 블록 A(412)는 제1 호스트 프로세서(110)에 의하여 업데이트되지 않은 데이터일 수 있다.
단계(420)에서 제1 캐시 메모리의 제어기는 단계(410)에서 요청한 라이트백(Write-back)에 따라 블록 A(411)를 시스템 메모리의 캐싱 영역으로 복사함으로써, 시스템 메모리의 캐싱 영역에 저장된 블록 A(412)를 블록 A(411)와 동일한 데이터인 블록A(421)로 업데이트할 수 있다.
따라서, 메모리 프로세서(141)가 시스템 메모리(140)의 캐싱 영역에 저장된 블록 A(421)를 피연산자로 사용할 경우, 시스템 메모리(140)의 캐싱 영역에 저장된 블록 A(421)와 제1 캐시 메모리(120)에 저장된 블록 A(411)간에 데이터 일관성을 유지하도록 할 수 있다.
도 5는 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산할 데이터가 저장된 제1 위치에 대응하는 블록 업데이트 과정의 제2 실시예이다.
도 5는 연산할 데이터가 저장된 제1 위치가 포함된 블록이 태스크를 전송한 제1 호스트 프로세서(110)가 아닌 제2 호스트 프로세서(150)에 대응하는 제2 캐시 메모리(160)에 캐싱된 경우, 제1 위치에 대응하는 블록 업데이트 과정의 일례이다.
이때, 제1 호스트 프로세서(110)가 요청한 태스크 0이 시스템 메모리(140)의 비캐싱 영역의 태스크 목록에 저장될 수 있다. 이때, 태스크 0은 블록 A의 주소를 제1 주소인 피연산자 정보의 시작 메모리 주소로 가질 수 있다. 그리고, 블록 A는 제2 호스트 프로세서(150)에 대응하는 제2 캐시 메모리(160)에 캐싱되어 있으며, 제2 호스트 프로세서(150)에 의하여 업데이트됨으로써, 수정(Modified) 상태일 수 있다.
단계(510)에서 데이터 업데이터(100)는 태스크 0에 포함된 피연산자 정보를 이용하여 블록 A(511)가 캐싱된 제2 캐시 메모리(160)의 주소를 식별할 수 있다. 그리고, 데이터 업데이터(100)는 제2 캐시 메모리(160)에 라이트백(Write-back)을 요청할 수 있다. 이때, 시스템 메모리(140)의 캐싱 영역에 저장된 블록 A(512)는 제2 호스트 프로세서(150)에 의하여 업데이트되지 않은 데이터일 수 있다.
단계(520)에서 제2 캐시 메모리의 제어기는 단계(510)에서 요청한 라이트백(Write-back)에 따라 블록 A(511)를 시스템 메모리의 캐싱 영역으로 복사함으로써, 시스템 메모리의 캐싱 영역에 저장된 블록 A(512)를 블록 A(511)와 동일한 데이터인 블록 A(521)로 업데이트할 수 있다.
따라서, 메모리 프로세서(141)가 시스템 메모리(140)의 캐싱 영역에 저장된 블록 A(521)를 피연산자로 사용할 경우, 시스템 메모리(140)의 캐싱 영역에 저장된 블록 A(521)와 제2 캐시 메모리(160)에 저장된 블록 A(511)간에 데이터 일관성을 유지하도록 할 수 있다.
도 6은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산 결과 데이터가 저장될 제2 위치에 대응하는 블록 업데이트 과정의 제1 실시예이다.
도 6은 작업의 연산 결과 데이터가 저장될 제2 위치가 포함된 블록이 태스크를 전송한 제1 호스트 프로세서(110)에 대응하는 제1 캐시 메모리(120)에 캐싱된 경우, 제1 위치에 대응하는 블록 업데이트 과정의 일례이다.
이때, 제1 호스트 프로세서(110)가 요청한 태스크 0이 시스템 메모리(140)의 비캐싱 영역의 태스크 목록에 저장될 수 있다. 이때, 태스크 0은 블록 A의 주소를 제2 주소인 연산 결과 정보의 시작 메모리 주소로 가질 수 있다. 그리고, 블록 A는 제1 호스트 프로세서(110)에 대응하는 제1 캐시 메모리(120)에 캐싱되어 있으며, 제1 호스트 프로세서(110)에 의하여 업데이트됨으로써, 수정(Modified) 상태일 수 있다.
단계(610)에서 데이터 업데이터(100)는 태스크 0에 포함된 연산 결과 정보를 이용하여 블록 A(611)가 캐싱된 제1 캐시 메모리(120)의 주소를 식별할 수 있다. 그리고, 데이터 업데이터(100)는 제1 캐시 메모리(120)에 라이트백(Write-back)을 요청할 수 있다. 이때, 시스템 메모리(140)의 캐싱 영역에 저장된 블록 A(612)는 제1 호스트 프로세서(110)에 의하여 업데이트되지 않은 데이터일 수 있다.
단계(620)에서 제1 캐시 메모리의 제어기는 단계(610)에서 요청한 라이트백(Write-back)에 따라 블록 A(611)를 시스템 메모리의 캐싱 영역으로 복사함으로써, 시스템 메모리의 캐싱 영역에 저장된 블록 A(612)를 블록 A(611)와 동일한 데이터인 블록A(621)로 업데이트할 수 있다.
메모리 프로세서(141)가 블록 A(612)에 연산 결과 데이터를 저장하는 경우, 데이터 업데이터(100)는 연산 결과 데이터를 캐시 메모리에 업데이트하기 위하여 블록 A(612)를 제1 캐시 메모리(120)로 업데이트할 수 있다. 이때, 블록 A(612)는 블록 A(611)의 이전 버전 데이터이므로, 제1 캐시 메모리(120)에 업데이트 된 블록 A는 연산 결과 데이터를 제외한 나머지 데이터들이 제1 호스트 프로세서(110)에 의하여 업데이트되지 않은 데이터가 되어 데이터 일관성이 깨질 수 있다.
따라서, 데이터 업데이터(100)는 연산 결과 데이터가 저장될 블록 A(612)를 제1 호스트 프로세서(110)에 의하여 업데이트된 블록A(621)로 업데이트함으로써, 연산 결과 데이터를 저장한 블록A(621)를 제1 캐시 메모리(120)로 업데이트하는 과정에서 데이터 일관성을 유지하도록 할 수 있다.
도 7은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산 결과 데이터가 저장될 제2 위치에 대응하는 블록 업데이트 과정의 제2 실시예이다.
도 7은 작업의 연산 결과 데이터가 저장될 제2 위치가 포함된 블록이 태스크를 전송한 제1 호스트 프로세서(110)가 아닌 제2 호스트 프로세서(150)에 대응하는 제2 캐시 메모리(160)에 캐싱된 경우, 제2 위치에 대응하는 블록 업데이트 과정의 일례이다.
이때, 제1 호스트 프로세서(110)가 요청한 태스크 0이 시스템 메모리(140)의 비캐싱 영역의 태스크 목록에 저장될 수 있다. 이때, 태스크 0은 블록 A의 주소를 제2 주소인 연산 결과 정보의 시작 메모리 주소로 가질 수 있다. 그리고, 블록 A는 제2 호스트 프로세서(150)에 대응하는 제2 캐시 메모리(160)에 캐싱되어 있으며, 제2 호스트 프로세서(150)에 의하여 업데이트됨으로써, 수정(Modified) 상태일 수 있다.
단계(710)에서 데이터 업데이터(100)는 태스크 0에 포함된 연산 결과 정보를 이용하여 블록 A(711)가 캐싱된 제2 캐시 메모리(160)의 주소를 식별할 수 있다. 그리고, 데이터 업데이터(100)는 제2 캐시 메모리(160)에 라이트백(Write-back)을 요청할 수 있다. 이때, 시스템 메모리(140)의 캐싱 영역에 저장된 블록 A(712)는 제2 호스트 프로세서(150)에 의하여 업데이트되지 않은 데이터일 수 있다.
단계(720)에서 데이터 업데이터(100)는 단계(710)에서 요청한 라이트백(Write-back)에 따라 블록 A(711)를 시스템 메모리의 캐싱 영역으로 복사함으로써, 시스템 메모리의 캐싱 영역에 저장된 블록 A(712)를 블록 A(711)와 동일한 데이터인 블록A(721)로 업데이트할 수 있다.
메모리 프로세서(141)가 블록A(721)에 연산 결과 데이터를 저장하는 경우, 데이터 업데이터(100)는 연산 결과 데이터가 포함된 블록A(721)를 제1 호스트 프로세서(110)에 대응하는 제1 캐시 메모리(120)에 업데이트할 수 있다.
이때, 제2 캐시 메모리(120)에 블록 A(711)가 유지되는 경우, 제1 캐시 메모리(120)에 업데이트된 연산 결과 데이터를 포함하는 블록 A(721) 간에 데이터 일관성이 깨질 수 있다. 따라서, 데이터 업데이터(100)는 제2 캐시 메모리(160)에 무효화(Invalidation)를 요청하여 블록 A(711)를 무효(Invalid) 상태로 변경함으로써, 제1 캐시 메모리(120)에 업데이트될 연산 결과 데이터를 포함하는 블록 A(721)의 데이터 일관성을 유지할 수 있다.
도 8은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산 결과 데이터가 저장될 제2 위치에 대응하는 블록 업데이트 과정의 제3 실시예이다.
도 8은 작업의 연산 결과 데이터가 저장될 제2 위치가 포함된 블록이 태스크를 전송한 프로세서의 캐시 메모리와 서로 다른 복수의 프로세서의 캐시 메모리들에 캐싱된 공유(Shared) 상태인 경우, 제2 위치에 대응하는 블록 업데이트 과정의 일례이다.
이때, 제1 호스트 프로세서(110)가 요청한 태스크 0이 시스템 메모리(140)의 비캐싱 영역의 태스크 목록에 저장될 수 있다. 이때, 태스크 0은 블록 A의 주소를 제2 주소인 연산 결과 정보의 시작 메모리 주소로 가질 수 있다. 그리고, 블록 A는 제1 호스트 프로세서(110)에 대응하는 제1 캐시 메모리(120)와 제2 호스트 프로세서(150)에 대응하는 제2 캐시 메모리(160)에 모두 캐싱된 상태이며 공유(Shared) 상태이므로, 동일한 데이터일 수 있다.
단계(810)에서 데이터 업데이터(100)는 태스크 0에 포함된 연산 결과 정보를 이용하여 블록 A(811)가 캐싱된 제1 캐시 메모리(120)의 주소, 및 블록 A(812)가 캐싱된 제2 캐시 메모리(160)의 주소를 식별할 수 있다. 메모리 프로세서(141)가 블록A(821)에 연산 결과 데이터를 저장하는 경우, 데이터 업데이터(100)는 연산 결과 데이터가 포함된 블록A(821)를 제1 호스트 프로세서(110)에 대응하는 제1 캐시 메모리(120)의 블록 A(811)에 업데이트할 수 있다.
이때, 제2 캐시 메모리(120)에 블록 A(812)가 유지되는 경우, 제1 캐시 메모리(120)의 연산 결과 데이터를 포함하는 블록 A(811)과 제2 캐시 메모리(120)의 블록 A(812) 간에 데이터 일관성이 깨질 수 있다. 따라서, 데이터 업데이터(100)는 제2 캐시 메모리(160)에 무효화(Invalidation)를 요청하여 블록 A(812)를 무효(Invalid) 상태로 변경함으로써, 제1 캐시 메모리(120)의 연산 결과 데이터를 포함하는 블록 A(821)의 데이터 일관성을 유지할 수 있다.
도 9는 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템에서 연산할 데이터 혹은 연산 결과 데이터가 여러 개이고, 이들 데이터가 각각 다수의 메모리 블록에 분산 저장되어 있는 경우의 실시예이다.
구체적으로, 도 9는 제1 호스트 프로세서(110)가 요청한 태스크 0이 연산할 데이터 혹은 연산 결과 데이터를 포함하는 블록으로 블록 A와 블록 B 두 개를 포함하는 경우, 블록 업데이트 과정의 일례이다.
이때, 제1 호스트 프로세서(110)가 요청한 태스크 0은 시스템 메모리의 비캐싱 영역의 태스크 목록에 저장될 수 있다. 또한, 태스크 0은 블록 A와 블록 B의 주소를 제1 주소인 피연산자 정보의 시작 메모리 주소로 가지거나, 제2 주소인 연산 결과 정보의 시작 메모리 주소로 가질 수 있다. 그리고, 블록 A(911)는 제1 호스트 프로세서(110)에 대응하는 제1 캐시 메모리(120)에 캐싱되어 있으며, 제1 호스트 프로세서(110)에 의하여 업데이트됨으로써, 수정(Modified) 상태일 수 있다. 또한, 블록 B(913)는 제2 호스트 프로세서(150)에 대응하는 제2 캐시 메모리(160)에 캐싱되어 있으며, 제2 호스트 프로세서(150)에 의하여 업데이트됨으로써, 수정(Modified) 상태일 수 있다.
이때, 블록 A(911)와 블록 B(913)는 공유 상태와 연산을 요청한 호스트 프로세서, 캐싱되어 있는 캐시 메모리에 따라 도 4, 내지 7의 실시예에 따른 데이터 일관성 유지 방법이 동일하게 적용될 수 있다.
예를 들어, 블록 A(911)와 블록 B(913)이 연산할 데이터를 포함하는 블록인 경우, 도 4와 도 5의 데이터 일관성 유지 방법에 따라 단계(910)과 단계(920)이 수행될 수 있다.
구체적으로, 단계(910)에서 데이터 업데이터(100)는 태스크 0에 포함된 프로세서 식별자를 이용하여 태스크를 요청한 프로세서를 식별할 수 있으며, 태스크 0에 포함된 피연산자 정보를 이용하여 블록 A(911)가 캐싱된 제1 캐시 메모리(120)의 주소 및 블록 B(913)가 캐싱된 제2 캐시 메모리(160)의 주소를 식별할 수 있다. 그리고, 데이터 업데이터(100)는 블록 A(911)와 블록 B(913)의 공유 상태를 확인하여 제1 캐시 메모리(120)와 제2 캐시 메모리(160)에 라이트백(Write-back)을 요청할 수 있다. 이때, 시스템 메모리(140)의 캐싱 영역에 저장된 블록 A(912)와 블록 B(914)는 각각 제1 호스트 프로세서(110)와 제2 호스트 프로세서(150)에 의하여 업데이트되지 않은 데이터일 수 있다.
단계(920)에서 제1 캐시 메모리(120)의 제어기는 단계(910)에서 데이터 업데이터(100)가 요청한 라이트백(Write-back)에 따라 블록 A(911)를 시스템 메모리의 캐싱 영역으로 복사함으로써, 시스템 메모리의 캐싱 영역에 저장된 블록 A(912)를 블록 A(911)와 동일한 데이터인 블록 A(921)로 업데이트할 수 있다. 또한, 제2 캐시 메모리(160)의 제어기는 단계(910)에서 데이터 업데이터(100)가 요청한 라이트백(Write-back)에 따라 블록 B(913)를 시스템 메모리의 캐싱 영역으로 복사함으로써, 시스템 메모리의 캐싱 영역에 저장된 블록 B(914)를 블록 B(913)와 동일한 데이터인 블록 B(922)로 업데이트할 수 있다.
또한, 블록 A(911)와 블록 B(913)이 연산 결과 데이터를 포함하는 블록인 경우, 도 6과 도 7의 데이터 일관성 유지 방법에 따라 단계(910)과 단계(920)이 수행될 수 있다.
구체적으로, 단계(910)에서 데이터 업데이터(100)는 태스크 0에 포함된 프로세서 식별자를 이용하여 태스크를 요청한 프로세서가 제1 호스트 프로세서(110)라는 것을 식별할 수 있다, 또한, 데이터 업데이터(100)는 태스크 0에 포함된 연산 결과 정보를 이용하여 블록 A(911)가 캐싱된 제1 캐시 메모리(120)의 주소 및 블록 B(913)가 캐싱된 제2 캐시 메모리(160)의 주소를 식별할 수 있다. 그리고, 데이터 업데이터(100)는 블록 A(911)와 블록 B(913)의 공유 상태를 확인할 수 있다.
이때, 블록 A(911)가 캐싱된 제1 캐시 메모리(120)는 태스크를 요청한 제1 호스트 프로세서(110)에 대응하는 캐시 메모리이므로, 데이터 업데이터(100)는 도 6의 단계(610)과 같이 제1 캐시 메모리(120)에 라이트백(Write-back)을 요청할 수 있다.
또한, 블록 B(913)가 캐싱된 제2 캐시 메모리(160)는 태스크를 요청한 제1 호스트 프로세서(110)가 아닌 제2 호스트 프로세서(150)에 대응하는 캐시 메모리이므로, 데이터 업데이터(100)는 도 7의 단계(710)과 같이 제2 캐시 메모리(160)에 라이트백(Write-back)과 무효화(Invalidation)를 요청할 수 있다.
이때, 시스템 메모리(140)의 캐싱 영역에 저장된 블록 A(912)와 블록 B(914)는 각각 제1 호스트 프로세서(110)와 제2 호스트 프로세서(150)에 의하여 업데이트되지 않은 데이터일 수 있다.
단계(920)에서 제1 캐시 메모리(120)의 제어기는 단계(910)에서 데이터 업데이터(100)가 요청한 라이트백(Write-back)에 따라 도 6의 단계(620)과 같이 블록 A(911)를 시스템 메모리의 캐싱 영역으로 복사함으로써, 시스템 메모리의 캐싱 영역에 저장된 블록 A(912)를 블록 A(911)와 동일한 데이터인 블록 A(921)로 업데이트할 수 있다. 또한, 제2 캐시 메모리(160)의 제어기는 단계(910)에서 데이터 업데이터(100)가 요청한 라이트백(Write-back)에 따라 도 7의 단계(720)과 같이 블록 B(913)를 시스템 메모리의 캐싱 영역으로 복사함으로써, 시스템 메모리의 캐싱 영역에 저장된 블록 B(914)를 블록 B(913)와 동일한 데이터인 블록 B(922)로 업데이트할 수 있다. 그리고, 제2 캐시 메모리(160)의 제어기는 도 7의 단계(720)과 같이 데이터 업데이터(100)가 요청한 무효화(Invalidation)에 따라 블록 B(913)를 무효화함으로써, 메모리 프로세서가 블록 B(922)에 연산 결과 데이터를 저장하는 경우 블록 B(922)의 데이터 일관성을 유지할 수 있다.
도 10은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법을 도시한 플로우차트이다.
도 10은 제1 호스트 프로세서(110)가 작업을 요청하는 경우, 프로세싱 인 메모리 시스템의 데이터 전달 방법의 일례이며, 제2 호스트 프로세서(150), 또는 다른 호스트 프로세서가 작업을 요청하는 경우에는 해당 호스트 프로세서가 도 9에서 기재된 제1 호스트 프로세서(110)의 동작을 수행할 수 있다. 또한, 해당 호스트 프로세서에 대응하는 데이터 업데이터가 도 9에 기재된 데이터 업데이터(100)의 동작을 수행할 수 있다.
단계(1010)에서 제1 호스트 프로세서(110)는 메모리 프로세서(141)에서 연산할 작업, 메모리 프로세서(141)에서 연산할 데이터가 저장된 제1 위치 및 캐싱 영역에서 작업의 연산 결과 데이터가 저장될 제2 위치를 시스템 메모리(140)의 메모리 프로세서(141)로 전송할 수 있다. 이때, 제1 호스트 프로세서(110)는 메모리 프로세서(141)에서 연산할 작업, 제1 위치 및 제2 위치를 하나의 단위인 태스크의 형태로 전송할 수 있다.
단계(1020)에서 데이터 업데이터(100)는 제1 캐시 메모리(120), 또는 제2 캐시 메모리(160)와 시스템 메모리(140)의 일관성을 고려하여 제1 위치에 대응하는 블록, 및 제2 위치에 대응하는 블록을 업데이트할 수 있다.
이때, 데이터 업데이터(100)는 제1 위치가 포함된 캐시 메모리의 블록의 공유 상태에 따라 단계(1030)이 수행되기 전에 제1 위치에 대응하는 블록을 업데이트할 수 있다. 또한, 데이터 업데이터(100)는 제2 위치가 포함된 캐시 메모리의 블록의 공유 상태에 따라 단계(1040)이 수행되기 전에 제2 위치에 대응하는 블록을 업데이트할 수 있다.
단계(1030)에서 메모리 프로세서(141)는 단계(1010)에서 수신한 작업과 단계(1020)에서 업데이트된 제1 위치에 대응하는 블록을 참조하여 연산을 수행할 수 있다. 구체적으로, 제1 호스트 프로세서(110)의 메모리 프로세서 호스트 드라이버에 의해 전달된 태스크 목록의 태스크들은 메모리 프로세서(141)에 의해 순차적 혹은 비순차적으로 수행될 수 있다.
단계(1040)에서 메모리 프로세서(141)는 단계(1030)에서 수행한 연산에 따른 연산 결과 데이터를 시스템 메모리(140)의 캐싱 영역에 저장할 수 있다. 그리고, 연산 결과 데이터들의 저장이 종료되는 경우, 메모리 프로세서(141)는 태스크의 태스크 완료 플래그를 설정할 수 있다.
단계(1050)에서 데이터 업데이터(100)는 시스템 메모리(140)의 캐싱 영역에 저장된 연산 결과 데이터를 제1 호스트 프로세서(110), 및 제2 호스트 프로세서(150) 중 작업을 전송한 호스트 프로세서에 대응하는 캐시 메모리에 업데이트할 수 있다. 예를 들어, 제1 호스트 프로세서(110)가 시스템 메모리(140)에 연산할 작업을 전송한 경우, 제1 호스트 프로세서(110)에 대응하는 데이터 업데이터(100)는 전송한 작업의 태스크에 태스크 완료 플래그가 설정되었는지 여부를 확인할 수 있다. 태스크에 태스크 완료 플래그가 설정된 경우, 데이터 업데이터(100)는 태스크가 완료된 것으로 판단하고, 시스템 메모리(140)의 캐싱 영역에 저장된 연산 결과 데이터를 제1 호스트 프로세서(110)에 대응하는 제1 캐시 메모리(120)에 업데이트할 수 있다.
도 11은 본 발명의 일실시예에 따른 프로세싱 인 메모리 시스템의 데이터 전달 방법의 블록 업데이트 과정을 도시한 플로우차트이다. 도 10의 단계(1110) 내지 단계(1160)는 도 9의 단계(1020)에 포함될 수 있다.
단계(1110)에서 데이터 업데이터(100)는 단계(1010)에서 전송된 태스크의 피연산자 정보를 이용하여 제1 위치를 포함한 블록이 캐싱된 캐시 메모리의 주소를 검색할 수 있다.
단계(1120)에서 데이터 업데이터(100)는 단계(1110)에서 검색한 제1 위치를 포함한 블록이 데이터의 변경이 발생한 수정(Modified) 상태인지 여부를 확인할 수 있다. 제1 위치를 포함한 블록이 수정(Modified) 상태인 경우, 데이터 업데이터(100)는 단계(1120)를 수행할 수 있다. 그리고, 제1 위치를 포함한 블록이 수정(Modified) 상태가 아닐 경우, 데이터 업데이터(100)는 단계(1130)를 생략하고 단계(1140)를 수행할 수 있다.
단계(1130)에서 데이터 업데이터(100)는 제1 위치를 포함한 블록이 캐싱된 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 제1 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
단계(1140)에서 데이터 업데이터(100)는 단계(1010)에서 전송된 태스크의 연산 결과 정보를 이용하여 제2 위치를 포함한 블록이 캐싱된 캐시 메모리의 주소를 검색할 수 있다.
단계(1150)에서 데이터 업데이터(100)는 단계(1140)에서 검색한 제2 위치를 포함한 블록이 데이터의 변경이 발생한 수정(Modified) 상태인지 여부를 확인할 수 있다. 제2 위치를 포함한 블록이 수정(Modified) 상태인 경우, 데이터 업데이터(100)는 단계(1160)를 수행할 수 있다. 그리고 제2 위치를 포함한 블록이 수정(Modified) 상태가 아닐 경우, 데이터 업데이터(100)는 단계(1160)를 생략하고 단계(1170)를 수행할 수 있다.
단계(1160)에서 데이터 업데이터(100)는 제2 위치를 포함한 블록이 캐싱된 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트할 수 있다.
단계(1170)에서 데이터 업데이터(100)는 제2 위치를 포함한 블록이 캐싱된 캐시 메모리가 작업을 요청한 제1 호스트 프로세서(110)에 대응되는지 여부를 확인할 수 있다. 제2 위치를 포함한 블록이 캐싱된 캐시 메모리가 제1 호스트 프로세서(110)에 대응되는 제1 캐시 메모리(120)인 경우, 데이터 업데이터(100)는 동작을 종료할 수 있다. 제2 위치를 포함한 블록이 캐싱된 캐시 메모리가 제2 호스트 프로세서(150)에 대응되는 제2 캐시 메모리(160)인 경우, 데이터 업데이터(100)는 단계(1180)을 수행할 수 있다.
또한, 제2 위치를 포함한 블록이 캐싱된 캐시 메모리가 제1 캐시 메모리(120) 및 제2 캐시 메모리(160) 모두인 경우, 데이터 업데이터(100)는 단계(1180)을 수행할 수 있다.
단계(1180)에서 데이터 업데이터(100)는 서로 다른 호스트 프로세서에 대응하는 캐시 메모리에 무효화(Invalidation)를 요청하여 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경할 수 있다. 구체적으로, 데이터 업데이터(100)는 제2 캐시 메모리(160)에 무효화(Invalidation)를 요청하여 제2 캐시 메모리(160)에서 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경할 수 있다.
본 발명은 메모리 프로세서에서 연산할 데이터 및 연산 결과 데이터를 시스템 메모리의 캐싱 영역을 통해 전송함으로써, 호스트 프로세서의 캐시 메모리의 장점을 활용하여 프로세싱 인 메모리 시스템의 성능을 향상시킬 수 있다. 또한, 본 발명은 데이터를 중복되지 않은 서로 다른 복수의 메모리 블록에 분산 저장하고, 분산 저장된 복수의 메모리 블록에 대해 메모리 프로세서의 연산을 수행함으로써, 메모리 프로세서의 처리량을 증가시켜 프로세싱 인 메모리 시스템의 성능을 향상시킬 수 있다. 또한, 본 발명은 메모리 프로세서에서 연산된 결과인 연산 결과 데이터를 호스트 프로세서의 모든 레벨의 캐시 메모리에 모두 업데이트함으로써, 호스트 프로세서에서 연산 결과 데이터를 접근할 때 상위 레벨 캐시 메모리에서 발생하는 캐시 미스(Cache miss)의 발생률을 낮추고 프로세싱 인 메모리 시스템의 성능을 향상시킬 수 있다. 또한, 본 발명은 복수 레벨의 호스트 프로세서의 캐시 메모리를 직접 업데이트함으로써, 라스트-레벨-캐시 메모리의 공유를 필요로 하지 않는 프로세싱 인 메모리 시스템을 구현할 수 있다.
또한, 본 발명은 메모리 프로세서에서 연산된 결과인 연산 결과 데이터만을 호스트 프로세서의 캐시 메모리에 업데이트함으로써, 시스템 메모리의 캐싱 영역을 통해 호스트 프로세서와 메모리 프로세서 간 데이터를 전달하는 과정에서 라스트-레벨-캐시 메모리 블록 단위로 변경된 데이터를 전달함으로 인해 발생하는 호스트 프로세서와 시스템 메모리 간 인터페이스의 대역폭 낭비를 방지할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 정보 파일, 정보 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 시스템이 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 시스템은 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 데이터 업데이터
110: 제1 호스트 프로세서
120: 제1 캐시 메모리
140: 시스템 메모리
141: 메모리 프로세서
150: 제2 호스트 프로세서
160: 제2 캐시 메모리

Claims (14)

  1. 호스트 프로세서가 메모리 프로세서에서 연산할 작업, 메모리 프로세서에서 연산할 데이터가 저장된 제1 위치 및 캐싱 영역에서 작업의 연산 결과 데이터가 저장될 제2 위치를 시스템 메모리의 메모리 프로세서로 전송하는 단계;
    데이터 업데이터가 프로세서의 캐시 메모리와 상기 시스템 메모리의 일관성을 고려하여 상기 제1 위치에 대응하는 블록, 및 상기 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계;
    메모리 프로세서가 상기 작업과 상기 제1 위치에 대응하는 업데이트된 블록을 참조하여 연산을 수행하는 단계;
    상기 메모리 프로세서가 상기 연산의 수행에 따른 연산 결과 데이터를 상기 시스템 메모리의 캐싱 영역에 저장하는 단계; 및
    상기 데이터 업데이터가 상기 캐싱 영역에 저장된 연산 결과 데이터를 상기 호스트 프로세서에 대응하는 캐시 메모리에 업데이트하는 단계
    를 포함하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템의 데이터 전달 방법.
  2. 제1항에 있어서,
    상기 블록을 시스템 메모리에 업데이트하는 단계는,
    상기 제1 위치가 포함된 캐시 메모리의 블록의 공유 상태에 따라 상기 메모리 프로세서가 상기 제1 위치에 저장된 데이터를 로드하기 전에 상기 제1 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계; 및
    상기 제2 위치가 포함된 캐시 메모리의 블록의 공유 상태에 따라 상기 메모리 프로세서가 상기 연산 결과 데이터를 저장하기 전에 상기 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계
    를 포함하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템의 데이터 전달 방법.
  3. 제2항에 있어서,
    상기 제1 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는,
    상기 제1 위치에 대응하는 캐시 메모리의 블록이 데이터의 변경이 발생한 수정(Modified) 상태인 경우, 상기 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제1 위치에 대응하는 캐시 메모리의 블록으로 업데이트하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템의 데이터 전달 방법.
  4. 제2항에 있어서,
    상기 제1 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는,
    상기 제1 위치에 대응하는 캐시 메모리의 블록이 상기 서로 다른 캐시 메모리들 중 하나에 포함된 수정(Modified) 상태인 경우, 상기 수정(Modified) 상태의 블록을 포함한 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제1 위치에 대응하는 캐시 메모리의 블록으로 업데이트하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템의 데이터 전달 방법.
  5. 제2항에 있어서,
    상기 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는,
    상기 제2 위치에 대응하는 캐시 메모리의 블록이 데이터의 변경이 발생한 수정(Modified) 상태인 경우, 상기 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템의 데이터 전달 방법.
  6. 제2항에 있어서,
    상기 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는,
    상기 제2 위치에 대응하는 캐시 메모리의 블록이 상기 호스트 프로세서와 서로 다른 호스트 프로세서의 캐시 메모리에 포함된 경우, 상기 서로 다른 호스트 프로세서의 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트하는 단계; 및
    상기 서로 다른 호스트 프로세서의 캐시 메모리에 무효화(Invalidation)를 요청하여 상기 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경하는 단계
    를 포함하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템의 데이터 전달 방법.
  7. 제2항에 있어서,
    상기 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는,
    상기 제2 위치에 대응하는 캐시 메모리의 블록이 복수의 캐시 메모리들에 포함된 공유(Shared) 상태인 경우, 상기 복수의 캐시 메모리들 중 상기 호스트 프로세서를 제외한 다른 호스트 프로세서의 캐시 메모리에 무효화(Invalidation)를 요청하여 상기 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템의 데이터 전달 방법.
  8. 제2항에 있어서,
    상기 제2 위치에 대응하는 블록을 시스템 메모리에 업데이트하는 단계는,
    상기 제2 위치에 대응하는 캐시 메모리의 블록이 상기 서로 다른 캐시 메모리들 중 하나에 포함된 수정(Modified) 상태인 경우, 상기 수정(Modified) 상태의 블록을 포함한 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트하는 단계; 및
    업데이트되어 수정(Modified) 상태에서 공유(Shared) 상태로 변경된 상기 블록을 포함한 캐시 메모리에 무효화(Invalidation)를 요청하여 상기 블록을 무효(Invalid) 상태로 변경하는 단계
    를 포함하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템의 데이터 전달 방법.
  9. 메모리 프로세서에서 연산할 작업, 메모리 프로세서에서 연산할 데이터가 저장된 제1 위치 및 캐싱 영역에서 작업의 연산 결과 데이터가 저장될 제2 위치를 시스템 메모리의 메모리 프로세서로 전송하는 호스트 프로세서;
    프로세서의 캐시 메모리와 상기 시스템 메모리의 일관성을 고려하여 상기 제1 위치에 대응하는 블록, 및 상기 제2 위치에 대응하는 블록을 업데이트하는 데이터 업데이터; 및
    상기 작업과 상기 제1 위치에 대응하는 업데이트된 블록을 참조하여 연산을 수행하고, 상기 연산의 수행에 따른 연산 결과 데이터를 상기 시스템 메모리의 캐싱 영역에 저장하는 메모리 프로세서
    를 포함하고,
    상기 데이터 업데이터는,
    상기 캐싱 영역에 저장된 연산 결과 데이터를 상기 호스트 프로세서에 대응하는 캐시 메모리에 업데이트하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템.
  10. 제9항에 있어서,
    상기 데이터 업데이터는,
    상기 제1 위치에 대응하는 캐시 메모리의 블록이 데이터의 변경이 발생한 수정(Modified) 상태인 경우, 상기 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제1 위치에 대응하는 캐시 메모리의 블록으로 업데이트하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템.
  11. 제9항에 있어서,
    상기 데이터 업데이터는,
    상기 제1 위치에 대응하는 캐시 메모리의 블록이 상기 호스트 프로세서와 서로 다른 호스트 프로세서의 캐시 메모리들 중 하나에 포함된 수정(Modified) 상태인 경우, 상기 수정(Modified) 상태의 블록을 포함한 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제1 위치에 대응하는 캐시 메모리의 블록으로 업데이트하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템.
  12. 제9항에 있어서,
    상기 데이터 업데이터는,
    상기 제2 위치에 대응하는 캐시 메모리의 블록이 데이터의 변경이 발생한 수정(Modified) 상태인 경우, 상기 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템.
  13. 제9항에 있어서,
    상기 데이터 업데이터는,
    상기 제2 위치에 대응하는 캐시 메모리의 블록이 상기 호스트 프로세서와 서로 다른 호스트 프로세서의 캐시 메모리들 중 하나에 포함된 수정(Modified) 상태인 경우, 상기 수정(Modified) 상태의 블록을 포함한 캐시 메모리에 라이트백(Write-back)을 요청하여 시스템 메모리의 블록을 상기 제2 위치에 대응하는 캐시 메모리의 블록으로 업데이트하고, 상기 수정(Modified) 상태의 블록을 포함했던 캐시 메모리에 무효화(Invalidation)를 요청하여 상기 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템.
  14. 제9항에 있어서,
    상기 데이터 업데이터는,
    상기 제2 위치에 대응하는 캐시 메모리의 블록이 복수의 캐시 메모리들에 포함된 공유(Shared) 상태인 경우, 상기 복수의 캐시 메모리들 중 상기 호스트 프로세서를 제외한 다른 호스트 프로세서의 캐시 메모리에 무효화(Invalidation)를 요청하여 상기 제2 위치에 대응하는 캐시 메모리의 블록을 무효(Invalid) 상태로 변경하는 시스템 메모리 내에서 데이터를 처리하는 프로세싱 인 메모리 시스템.
KR1020160184090A 2016-12-30 2016-12-30 프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템 KR101858597B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160184090A KR101858597B1 (ko) 2016-12-30 2016-12-30 프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160184090A KR101858597B1 (ko) 2016-12-30 2016-12-30 프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템

Publications (1)

Publication Number Publication Date
KR101858597B1 true KR101858597B1 (ko) 2018-05-17

Family

ID=62485902

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160184090A KR101858597B1 (ko) 2016-12-30 2016-12-30 프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템

Country Status (1)

Country Link
KR (1) KR101858597B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020085583A1 (ko) * 2018-10-24 2020-04-30 전자부품연구원 상용 메모리 버스를 이용하는 프로세싱 인 메모리 장치
US11626159B2 (en) 2020-06-12 2023-04-11 Korea University Research And Business Foundation Computing in-memory device supporting arithmetic operations and method of controlling the same
US11868657B2 (en) 2021-02-08 2024-01-09 Samsung Electronics Co., Ltd. Memory controller, method of operating the memory controller, and electronic device including the memory controller
US11893278B2 (en) 2021-02-08 2024-02-06 Samsung Electronics Co., Ltd. Memory controller and memory control method for generating commands based on a memory request

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020085583A1 (ko) * 2018-10-24 2020-04-30 전자부품연구원 상용 메모리 버스를 이용하는 프로세싱 인 메모리 장치
US11626159B2 (en) 2020-06-12 2023-04-11 Korea University Research And Business Foundation Computing in-memory device supporting arithmetic operations and method of controlling the same
US11868657B2 (en) 2021-02-08 2024-01-09 Samsung Electronics Co., Ltd. Memory controller, method of operating the memory controller, and electronic device including the memory controller
US11893278B2 (en) 2021-02-08 2024-02-06 Samsung Electronics Co., Ltd. Memory controller and memory control method for generating commands based on a memory request

Similar Documents

Publication Publication Date Title
US7305522B2 (en) Victim cache using direct intervention
US7305523B2 (en) Cache memory direct intervention
TWI432963B (zh) 加速器之低成本快取一致
US9740612B2 (en) Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9189403B2 (en) Selective cache-to-cache lateral castouts
KR101639672B1 (ko) 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US6199144B1 (en) Method and apparatus for transferring data in a computer system
US5043886A (en) Load/store with write-intent for write-back caches
CN108153683B (zh) 用于在存储器中的地址范围之间传输数据的装置和方法
TWI526829B (zh) 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體
US8499124B2 (en) Handling castout cache lines in a victim cache
US6088769A (en) Multiprocessor cache coherence directed by combined local and global tables
US8700863B2 (en) Computer system having a cache memory and control method of the same
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
KR101858597B1 (ko) 프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템
US20050188159A1 (en) Computer system supporting both dirty-shared and non dirty-shared data processing entities
US20100153647A1 (en) Cache-To-Cache Cast-In
US20140006716A1 (en) Data control using last accessor information
JP2021519456A (ja) キャッシュ・メモリ動作の調整
JP4577729B2 (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
JP3009430B2 (ja) プロセッサおよびそのキャッシュメモリ制御方法
US6477622B1 (en) Simplified writeback handling
US20180314638A1 (en) Network cache injection for coherent gpus
US20070180198A1 (en) Processor for multiprocessing computer systems and a computer system
US7502892B2 (en) Decoupling request for ownership tag reads from data read operations

Legal Events

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