KR101944037B1 - 저항 변화 메모리 기반 가속기 - Google Patents

저항 변화 메모리 기반 가속기 Download PDF

Info

Publication number
KR101944037B1
KR101944037B1 KR1020180046378A KR20180046378A KR101944037B1 KR 101944037 B1 KR101944037 B1 KR 101944037B1 KR 1020180046378 A KR1020180046378 A KR 1020180046378A KR 20180046378 A KR20180046378 A KR 20180046378A KR 101944037 B1 KR101944037 B1 KR 101944037B1
Authority
KR
South Korea
Prior art keywords
memory
data
resistance
address
row
Prior art date
Application number
KR1020180046378A
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 US16/032,675 priority Critical patent/US10929059B2/en
Priority to CN201810929808.6A priority patent/CN109426628A/zh
Application granted granted Critical
Publication of KR101944037B1 publication Critical patent/KR101944037B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10NELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10N70/00Solid-state devices without a potential-jump barrier or surface barrier, and specially adapted for rectifying, amplifying, oscillating or switching
    • H10N70/20Multistable switching devices, e.g. memristors
    • H10N70/231Multistable switching devices, e.g. memristors based on solid-state phase change, e.g. between amorphous and crystalline phases, Ovshinsky effect
    • H01L45/06
    • 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
    • G06F13/1673Details of memory controller using buffers
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • H01L45/12
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10NELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10N70/00Solid-state devices without a potential-jump barrier or surface barrier, and specially adapted for rectifying, amplifying, oscillating or switching
    • H10N70/801Constructional details of multistable switching devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Semiconductor Memories (AREA)

Abstract

CPU와 시스템 메모리를 포함하는 호스트에 연결되도록 구성된 저항 변화 메모리 기반 가속기가 제공된다. 저항 변화 메모리 모듈은 호스트에서 오프로드되는 커널을 저장한다. 가속기 코어는 복수의 프로세싱 엘리먼트를 포함하며, 타깃 프로세싱 엘리먼트에서 커널을 실행한다. MCU는 타깃 프로세싱 엘리먼트에서 커널의 실행에 따라 생성된 메모리 요청을 관리한다. 메모리 컨트롤러는 저항 변화 메모리 모듈에 연결되어 있으며, MCU로부터 전달되는 메모리 요청에 따라 저항 변화 메모리 모듈과 타깃 프로세싱 엘리먼트 사이에서 메모리 요청에 따른 데이터를 이동시킨다. 네트워크는 가속기 코어, 복수의 프로세싱 엘리먼트 및 메모리 컨트롤러를 통합한다.

Description

저항 변화 메모리 기반 가속기{RESISTANCE SWITCHING MEMORY BASED ACCELERATOR}
본 발명은 저항 변화 메모리 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스에 관한 것이다.
그래픽 처리 유닛(graphic processing unit, GPU) 및 MIC(many integrated core) 디바이스와 같은 멀티 코어 기반의 가속기(manycore-based coprocessor)는 최근 수백에서 수천 개의 프로세싱 코어를 사용하여 계산 능력을 향상시켰다.
이와 같이 가속기는 병렬 처리를 통해 전에 비해 많은 양의 데이터를 처리할 수 있지만 많은 양의 데이터를 처리하기 위해서 호스트에 연결된 별도의 외부 스토리지 장치, 예를 들면 솔리드 스테이트 디스크(solid state disk, SSD)를 사용하고 있다.
그러나 가속기와 스토리지 장치가 분리되어 있으며 서로 다른 소프트웨어 스택에 의해 관리되므로, 가속기가 스토리지 장치로부터 데이터를 읽거나 스토리지 장치로 데이터를 쓰기 위해서는, 불필요한 많은 소프트웨어 개입과 데이터 이동/복사가 발생한다. 이러한 오버헤드로 인해 가속기의 성능에 비해서 실제 속도 향상 효과가 크지 않으며 많은 에너지 소모가 발생한다는 문제점이 있다.
본 발명이 이루고자 하는 과제는 불필요한 소프트웨어 개입과 데이터 이동/복사를 제거할 수 있는 저항 변화 메모리 기반 가속기를 제공하는 것이다.
본 발명의 한 실시예에 따르면, 중앙 프로세싱 유닛(central processing unit, CPU)과 시스템 메모리를 포함하는 호스트에 연결되도록 구성된 저항 변화 메모리 기반 가속기가 제공된다. 상기 저항 변화 메모리 기반 가속기는, 상기 호스트에서 오프로드되는 커널을 저장하는 저항 변화 메모리(resistance switching memory) 모듈, 가속기 코어, 메모리 컨트롤러 유닛(memory controller unit, MCU), 메모리 컨트롤러, 그리고 네트워크를 포함한다. 상기 가속기 코어는, 복수의 프로세싱 엘리먼트를 포함하며, 상기 복수의 프로세싱 엘리먼트 중 타깃 프로세싱 엘리먼트에서 상기 커널을 실행한다. 상기 MCU는 상기 타깃 프로세싱 엘리먼트에서 상기 커널의 실행에 따라 생성된 메모리 요청을 관리한다. 상기 메모리 컨트롤러는, 상기 저항 변화 메모리 모듈에 연결되어 있으며, 상기 MCU로부터 전달되는 상기 메모리 요청에 따라 상기 저항 변화 메모리 모듈과 상기 타깃 프로세싱 엘리먼트 사이에서 상기 메모리 요청에 따른 데이터를 이동시킨다. 상기 네트워크는, 상기 가속기 코어, 상기 복수의 프로세싱 엘리먼트 및 상기 메모리 컨트롤러를 통합한다.
상기 호스트의 운영 체제(operation system, OS)의 도움 없이 상기 저항 변화 메모리 모듈과 상기 타깃 프로세싱 엘리먼트 사이에서 상기 메모리 요청에 따른 데이터가 이동될 수 있다.
상기 타깃 프로세싱 엘리먼트는 전형적인 로드/저장 명령어(load/store instruction)의 변경 없이 상기 메모리 요청을 통해 상기 저항 변화 메모리 모듈에 액세스할 수 있다.
상기 MCU는 상기 복수의 프로세싱 엘리먼트 이외의 프로세싱 엘리먼트에 포함될 수 있다.
상기 MCU는 상기 타깃 프로세싱 엘리먼트에 포함될 수 있다.
상기 저항 변화 메모리 모듈은, 복수의 파티션으로 분할되어 있는 복수의 저항 변화 메모리 셀을 포함하는 메모리 셀 어레이, 그리고 복수의 행 데이터 버퍼를 포함하고, 상기 복수의 파티션은 제1 파티션 및 제2 파티션을 포함하고, 상기 복수의 행 데이터 버퍼는 제1 행 데이터 버퍼 및 제2 행 데이터 버퍼를 포함할 수 있다. 이 경우, 상기 메모리 컨트롤러는, 제1 메모리 요청에 따라 상기 제1 파티션으로부터 상기 제1 행 데이터 버퍼로 데이터를 가지고 오는 동작과, 제2 메모리 요청에 따라 상기 제2 파티션으로부터 상기 제2 행 데이터 버퍼로 이동되어 있는 데이터를 상기 제2 메모리 요청의 타깃 프로세싱 엘리먼트로 이동하는 동작을 병렬로 처리할 수 있다.
상기 저항 변화 메모리 모듈은, 복수의 파티션으로 분할되어 있는 복수의 저항 변화 메모리 셀을 포함하는 메모리 셀 어레이, 복수의 행 어드레스 버퍼, 그리고 복수의 행 데이터 버퍼를 포함하고, 상기 메모리 컨트롤러는 3단계 어드레싱을 수행할 수 있다. 이 경우, 상기 3단계 어드레싱은, 상기 메모리 요청에 따라 상기 저항 변화 메모리 모듈에 액세스하기 위한 행 어드레스 중 상위 어드레스를 상기 복수의 행 어드레스 버퍼 중 타깃 행 어드레스 버퍼에 저장하는 프리액티브 단계, 읽기 명령의 경우, 상기 행 어드레스 중 하위 어드레스와 상기 타깃 행 어드레스에 저장된 상기 상위 어드레스를 결합한 행 어드레스에 기초하여 상기 메모리 셀 어레이로부터 상기 복수의 행 데이터 버퍼 중 타깃 행 데이터 버퍼로 데이터를 가지고 오는 액티브 단계, 그리고 상기 타깃 행 데이터 버퍼로부터 상기 데이터를 상기 타깃 프로세싱 버퍼로 전달하는 읽기/쓰기 단계를 포함할 수 있다.
상기 저항 변화 메모리 모듈은, 일련의 제어 레지스터와 프로그램 버퍼를 포함하는 오버레이 윈도우를 더 포함할 수 있다. 쓰기 명령의 경우, 상기 액티브 단계에서 상기 행 어드레스가 상기 오버레이 윈도우의 어드레스 범위 내에 있는 경우 타깃 데이터가 상기 프로그램 버퍼에 저장되고, 상기 읽기/쓰기 단계에서 상기 프로그램 버퍼에 저장된 상기 타깃 데이터가 상기 메모리 셀 어레이로 프로그램될 수 있다.
상기 복수의 파티션은 제1 파티션 및 제2 파티션을 포함할 수 있다. 이 경우, 상기 메모리 컨트롤러는, 제1 메모리 요청에 따라 상기 제1 파티션을 위한 상기 프리액티브 단계 및 상기 액티브 단계를 수행하는 동안, 제2 메모리 요청에 따라 상기 제2 파티션을 위한 상기 읽기/쓰기 단계가 수행할 수 있다.
상기 메모리 컨트롤러는 상기 커널의 실행에 의해 오버라이트될 상기 메모리 셀 어레이의 어드레스를 리셋 상태로 설정할 수 있다.
상기 메모리 컨트롤러는 상기 커널의 실행 전에 상기 선택적 소거를 수행할 수 있다.
상기 MCU는, 상기 커널의 실행을 위해 상기 저항 변화 메모리 모듈에 저장된 상기 커널의 메모리 어드레스를 상기 타깃 프로세싱 엘리먼트의 캐시에 부트 어드레스로 저장할 수 있다.
상기 프로세싱 엘리먼트의 슬립 모드를 제어하는 파워 슬립 컨트롤러를 더 포함할 수 있다. 이 경우, 상기 MCU는 상기 커널의 메모리 어드레스를 상기 타깃 프로세싱 엘리먼트에 저장하기 전에 상기 파워 슬립 컨트롤러를 통해 상기 타깃 프로세싱 엘리먼트를 슬립 모드로 전환하고, 상기 커널의 메모리 어드레스를 상기 타깃 프로세싱 엘리먼트에 저장한 후에 상기 파워 슬립 컨트롤러를 통해 상기 프로세싱 엘리먼트를 깨울 수 있다.
상기 타깃 프로세싱 엘리먼트는, L2 캐시, 상기 서버에 연결되어 있으며 상기 메모리 요청을 생성하여 상기 서버로 전달하는 제1 온칩 메모리 컨트롤러, 그리고 상기 L2 캐시에 연결되어 있으며 상기 L2 캐시와 상기 저항 변화 메모리 모듈 사이에서 상기 데이터를 이동시키는 제2 온칩 메모리 컨트롤러를 포함할 수 있다.
상기 저항 변화 메모리 모듈은 상변화 메모리(phase-change memory) 모듈, 저항성 메모리(resistive memory) 모듈 또는 자기저항 메모리(magnetoresistive memory) 모듈을 포함할 수 있다.
본 발명의 다른 실시예에 따르면, CPU와 시스템 메모리를 포함하는 호스트에 연결되도록 구성된 저항 변화 메모리 기반 가속기가 제공된다. 상기 저항 변화 메모리 기반 가속기는, 저항 변화 메모리 모듈, 가속기 코어, MCU, 메모리 컨트롤러, 그리고 네트워크를 포함한다. 상기 저항 변화 메모리 모듈은, 상기 호스트에서 오프로드되는 커널을 저장하며, 복수의 파티션으로 분할되어 있는 복수의 저항 변화 메모리 셀 및 복수의 행 데이터 버퍼를 포함한다. 상기 가속기 코어는, 복수의 프로세싱 엘리먼트를 포함하며, 상기 복수의 프로세싱 엘리먼트 중 타깃 프로세싱 엘리먼트에서 상기 커널을 실행한다. 상기 MCU는 상기 타깃 프로세싱 엘리먼트에서 상기 커널의 실행에 따라 생성된 메모리 요청을 관리한다. 상기 메모리 컨트롤러는, 상기 저항 변화 메모리 모듈에 연결되어 있으며, 상기 MCU로부터 전달되는 상기 메모리 요청에 따라 상기 저항 변화 메모리 모듈과 상기 타깃 프로세싱 엘리먼트 사이에서 상기 메모리 요청에 따른 데이터 이동을 관리하며, 상기 복수의 파티션 중 제1 파티션에서 상기 복수의 행 데이터 버퍼 중 제1 행 데이터 버퍼로 제1 데이터를 가지고 오는 동작과, 상기 복수의 행 데이터 버퍼 중 제2 행 데이터 버퍼에서 상기 타깃 프로세싱 엘리먼트로 제2 데이터를 이동하는 동작을 병렬로 처리한다. 상기 네트워크는 상기 가속기 코어, 상기 복수의 프로세싱 엘리먼트 및 상기 메모리 컨트롤러를 통합한다.
상기 제1 데이터는 상기 제1 파티션에서 상기 제2 행 데이터 버퍼로 상기 제2 데이터를 가지고 오기 전에 상기 복수의 파티션 중 제2 파티션에서 상기 제1 행 데이터 버퍼로 이동되어 있을 수 있다.
상기 메모리 컨트롤러는 프리액티브 단계, 액티브 단계 및 읽기/쓰기 단계를 포함하는 3단계 어드레싱을 수행할 수 있다. 이 경우, 상기 제1 데이터를 위한 상기 프리액티브 단계와 상기 액티브 단계가 수행되는 동안, 상기 제2 데이터를 위한 상기 읽기/쓰기 단계가 수행될 수 있다.
본 발명의 다른 실시예에 따르면, CPU와 시스템 메모리를 포함하는 호스트에 연결되도록 구성된 저항 변화 메모리 기반 가속기가 제공된다. 상기 저항 변화 메모리 기반 가속기는, 저항 변화 메모리 모듈, 가속기 코어, MCU, 메모리 컨트롤러, 그리고 네트워크를 포함한다. 상기 저항 변화 메모리 모듈은, 상기 호스트에서 오프로드되는 커널을 저장하며, 복수의 저항 변화 메모리 셀을 포함하는 메모리 셀 어레이를 포함한다. 상기 가속기 코어는, 복수의 프로세싱 엘리먼트를 포함하며, 상기 복수의 프로세싱 엘리먼트 중 타깃 프로세싱 엘리먼트에서 상기 커널을 실행한다. 상기 MCU는 상기 타깃 프로세싱 엘리먼트에서 상기 커널의 실행에 따라 생성된 메모리 요청을 관리한다. 상기 메모리 컨트롤러는, 상기 저항 변화 메모리 모듈에 연결되어 있으며, 상기 MCU로부터 전달되는 상기 메모리 요청에 따라 상기 저항 변화 메모리 모듈과 상기 타깃 프로세싱 엘리먼트 사이에서 상기 메모리 요청에 따른 데이터 이동을 관리하며, 상기 타깃 프로세싱 엘리먼트에서 상기 커널을 실행하기 전에 상기 커널의 실행에 의해 오버라이트될 상기 메모리 셀 어레이의 어드레스를 소정의 데이터로 프로그램한다. 상기 네트워크는 상기 저항 변화 메모리 기반 가속기 코어, 상기 복수의 프로세싱 엘리먼트 및 상기 메모리 컨트롤러를 통합한다.
상기 소정의 데이터는 상기 어드레스에 대응하는 저항 변화 메모리 셀을 리셋 상태로 설정하는 데이터일 수 있다.
본 발명의 한 실시예에 따르면, 저항 변화 메모리 기반 가속기를 제공함으로써 불필요한 소프트웨어 개입과 데이터 이동/복사를 제거할 수 있다.
도 1은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 개략적인 블록도이다.
도 2는 PRAM에서 하나의 메모리 셀을 개략적으로 나타내는 도면이다.
도 3은 도 2에 도시한 메모리 셀에 인가되는 전류를 나타내는 도면이다.
도 4는 도 2에 도시한 메모리 셀에 도 3에 도시한 전류가 인가될 때의 온도 변화를 나타내는 도면이다.
도 5는 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서 PRAM 모듈의 개략적인 블록도이다.
도 6은 본 발명의 한 실시예에 따른 PRAM 모듈에서 메모리 셀 어레이의 파티션 방법의 한 예를 설명하는 도면이다.
도 7은 본 발명의 한 실시예에 따른 PRAM 모듈에서 하프 파티션의 한 예를 설명하는 도면이다.
도 8은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 개략적인 블록도이다.
도 9는 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서 에이전트의 개략적인 블록도이다.
도 10은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 3단계 어드레싱을 설명하는 도면이다.
도 11은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 오버레이 윈도우를 설명하는 도면이다.
도 12 및 도 13은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 동작을 설명하는 도면이다.
도 14는 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 데이터 이동 방법을 나타내는 흐름도이다.
도 15는 기존의 컴퓨팅 디바이스의 가속기에서의 데이터 이동을 나타내는 도면이다.
도 16은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 PRAM 기반 가속기에서의 데이터 이동을 나타내는 도면이다.
도 17은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 프로그래밍 모델을 나타내는 도면이다.
도 18은 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서 읽기 타이밍을 설명하는 도면이다.
도 19는 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서 쓰기 타이밍을 설명하는 도면이다.
도 20 및 도 21은 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서의 메모리 요청 인터리빙을 설명하는 도면이다.
도 22는 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서의 선택적 소거를 설명하는 도면이다.
도 23은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 메모리 컨트롤러의 개략적인 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 개략적인 블록도이다. 도 1은 가능한 컴퓨팅 디바이스의 한 예이며, 본 발명의 실시예에 따른 컴퓨팅 디바이스의 다른 다양한 구조로 구현될 수 있다.
도 1을 참고하면, 본 발명의 한 실시예에 따른 컴퓨팅 디바이스는 CPU(110), 시스템 메모리(120) 및 저항 변화 메모리(resistance switching memory) 기반 가속기(130)를 포함한다.
저항 변화 메모리는 비휘발성 메모리로, 저장 매체(상변화 물질)의 저항율을 이용하는 상변화 메모리(phase-change memory, PCM), 메모리 소자의 저항을 이용하는 저항성 메모리(resistive memory) 또는 자기저항(magnetoresistive) 메모리를 포함한다. 아래에서 설명하는 실시예에서는 PCM, 특히 상변화 랜덤 액세스 메모리(phase-change random access memory, PRAM)를 저항 변화 메모리의 한 예로 설명하지만, 본 발명의 실시예는 PCM(PRAM)에 한정되지 않고 저항성 메모리, 예를 들면 저항성 랜덤 액세스 메모리(resistive random access memory, RRAM) 또는 자기저항 메모리, 예를 들면 스핀 전달 토크 자기저항 랜덤 액세스 메모리(spin-transfer torque magnetoresistive random access memory, STT-MRAM)과 같은 MRAM에도 적용될 수 있다.
시스템 메모리(120)는 컴퓨팅 디바이스의 메인 메모리로서 예를 들면 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM)일 수 있다. PRAM 기반 가속기(130)에 사용되는 가속기는 범용 CPU와는 다른 보조 데이터 프로세싱 디바이스로서, CPU의 기능을 보조하여서 데이터 프로세싱을 수행하거나 CPU와 별도로 데이터 프로세싱을 수행할 수 있는 컴퓨터 하드웨어일 수 있다. 이러한 가속기의 예로 그래픽 처리 유닛(graphic processing unit, GPU), MIC(many integrated core) 디바이스 등이 있다.
어떤 실시예에서, 컴퓨팅 디바이스는 시스템 메모리(120)와 PRAM 기반 가속기(130)를 CPU(110)와 연결하기 위해서 메모리 브릿지(140)를 더 포함할 수 있다. PRAM 기반 가속기(130)는 CPU(110) 측에 위치한 메모리 브릿지(140)에 연결된다. 예를 들면, PRAM 기반 가속기(130)는 PCIe(peripheral component interconnect express) 인터페이스를 통해서 메모리 브릿지(140)에 연결될 수 있다. 메모리 브릿지(140)는 예를 들면 노스브릿지(northbridge) 또는 메모리 컨트롤러 허브(memory controller hub, MCH)일 수 있다.
또한 메모리 브릿지(140)는 입출력(input/output, I/O) 브릿지(150)에 연결될 수 있다. I/O 브릿지(150)는 예를 들면 사우스브릿지(southbridge) 또는 입출력 컨트롤러 허브(I/Q controller hub, ICH)일 수 있으며, 사용자 입력 장치(도시하지 않음)로부터 사용자 입력을 수신하고 이를 메모리 브릿지(140)를 거쳐 CPU(110)로 전달할 수 있다.
전형적인 가속기의 경우 병렬 처리를 위한 복수의 프로세싱 엘리먼트(processing elements, PEs)만 포함하지만, 본 발명의 한 실시예에 따른 PRAM 기반의 가속기(130)는 가속기의 코어에 해당하는 복수의 프로세싱 엘리먼트(131)와 저항 변화 메모리 모듈(132)을 물리적으로 통합한 형태를 가진다. 앞서 설명한 것처럼, 저항 변화 메모리 모듈(132)은 PRAM 모듈(132)로 설명한다. 이와 같이, 가속기(130)에 비휘발성 메모리인 PRAM 모듈(132)를 통합으로써, 외부 스토리지 장치와 데이터를 주고받지 않으면서 가속기(130)의 동작이 수행될 수 있다.
어떤 실시예에서, CPU(110), 시스템 메모리(120), 메모리 브릿지(140) 및 I/O 브릿지(150)를 포함하는 시스템을 호스트(host)라 할 수 있다.
컴퓨팅 디바이스는 커널을 PRAM 기반 가속기(130)에 오프로드(offload)하여서 가속기(130)가 해당 커널을 직접 실행할 수 있다. 커널은 가속기(130)에서 실행되는 모든 형태의 함수 또는 프로그램을 의미한다. 예를 들면 이러한 커널은 호스트로부터의 계산(computation)을 가속기(300)에 오프로드(offload)하는 어플리케이션일 수 있다. 이러한 어플리케이션은 커널로 불릴 수 있다. 따라서 컴퓨팅 디바이스는 커널을 오프로드하거나 데이터의 읽기/쓰기(write/read)를 처리하기 위해서 가속기(130)에 접근할 수 있다. 이 경우, 가속기(130)의 프로세싱 엘리먼트(131)는 커널을 실행하면서 가속기(130)의 PRAM 모듈(132)에 직접 접근할 수 있으므로, 종래의 가속기가 외부에 존재하는 메모리로부터 데이터를 읽거나 메모리로 데이터를 쓰기 위해서 필요한 많은 메모리 할당/해제 및 데이터 복사가 필요 없게 된다.
다음, 본 발명의 한 실시예에 따른 PRAM 기반 가속기(130)에 포함되는 PRAM 모듈(132)의 한 예에 대해서 설명한다.
도 2는 PRAM에서 하나의 메모리 셀을 개략적으로 나타내는 도면이며, 도 3은 도 2에 도시한 메모리 셀에 인가되는 전류를 나타내는 도면이고, 도 4는 도 2에 도시한 메모리 셀에 도 3에 도시한 전류가 인가될 때의 온도 변화를 나타내는 도면이다.
도 2에 도시한 메모리 셀은 하나의 예이며, 본 발명의 실시예에 따른 PRAM의 메모리 셀은 다양한 형태로 구현될 수 있다.
도 2를 참고하면, PRAM의 메모리 셀(200)은 상변화 소자(210)와 스위칭 소자(220)를 포함한다. 스위칭 소자(220)는 모스 트랜지스터, 다이오드 등의 다양한 소자로 구현될 수 있다. 상변화 소자(210)는 상변화막(211), 상벽화막 위에 형성되어 있는 상부 전극(212) 및 상변화막(211) 아래에 형성되어 있는 하부 전극(213)을 포함한다. 예를 들면, 상변화막(210)은 상변화 물질로 게르마늄(germanium, Ge), 안티몬(antimony, Sb) 및 텔루르(tellurium, Te)의 혼합물("GST 물질"이라 불리기도 함)을 포함할 수 있다.
상변화 물질은 비교적 높은 저항율(resistivity)을 가지는 비정질 상태와 비교적 낮은 저항율을 가지는 결정질 상태를 전환할 수 있다. 이때, 상변화 물질의 상태는 가열되는 온도와 가열 시간에 의해 결정될 수 있다.
다시 도 2를 참고하면, 메모리 셀(200)에 전류가 인가되면, 인가된 전류는 하부 전극(213)을 통해 흐르게 된다. 짧은 시간 동안 전류가 메모리 셀(200)에 인가되면, 인가된 전류는 하부 전극(213)의 인접한 막을 가열한다. 이때, 가열 프로파일의 차이에 의해서 상변화막(211)의 일부(도 2에서 해칭된 부분)가 결정질 상태로 되거나 비정질 상태로 된다. 결정질 상태는 "셋(set) 상태"로, 비정질 상태로 "리셋(reset) 상태"로 불린다.
도 3 및 도 4를 참고하면, 높은 전류의 리셋 펄스(RESET)가 짧은 시간(tRST) 동안 메모리 셀(200)에 인가될 때, 상변화막(211)은 리셋 상태로 된다. 리셋 펄스(RESET)의 인가에 따라 상변화막(211)의 상변화 물질이 가열되어 온도(Tr)가 녹는점 이상으로 되면, 상변화 물질이 녹은 후 식으면서 비정질 상태로 변화한다. 리셋 펄스(RESET)보다 낮은 전류를 가지는 셋 펄스(SET)가 리셋 펄스(RESET)보다 긴 시간(tSET) 동안 상변화막(211)에 인가될 때, 상변화막(211)은 셋 상태로 된다. 셋 전류(SET)의 인가에 따라, 상변화 물질이 가열되어서 온도(Ts) 녹는점보다 낮은 결정화 온도에 도달하면 결정질 상태로 변화한다. 셋 펄스(SET)보다 낮은 전류가 인가되거나 짧은 시간 동안 전류가 인가되는 경우에는 이러한 리셋 상태 및 셋 상태가 유지되므로, 메모리 셀(200)에 데이터를 기입할 수 있다.
이때, 리셋 상태와 셋 상태는 각각 "1"과 "0"의 데이터로 설정될 수 있으며, 이는 메모리 셀(200)의 상변화 소자(210)의 저항율을 측정함으로써 감지될 수 있다. 이와는 달리, 리셋 상태와 셋 상태를 각각 "0"과 "1"의 데이터로 설정될 수도 있다.
따라서 메모리 셀(200)에 읽기 펄스(READ)를 인가함으로써 메모리 셀(200)에 저장된 데이터를 읽을 수 있다. 읽기 펄스(READ)는 낮은 전류로 짧은 시간(tREAD) 동안 인가되어 메모리 셀(200)의 상태를 변경하지 않을 수 있다. 읽기 펄스(READ)는 전류 크기가 셋 펄스(SET)보다 낮을 수 있고, 인가되는 시간(tREAD)이 리셋 펄스(RESET)의 인가 시간(tRST)보다 짧을 수 있다. 메모리 셀(200)의 상변화 소자(210)의 저항율이 상태에 따라 다르므로, 상변화 소자(210)에 흐르는 전류의 크기 또는 상변화 소자(210)에서의 전압 강하의 크기로 메모리 셀(200)의 상태, 즉 메모리 셀(200)에 저장된 데이터를 읽을 수 있다.
한 실시예에서, 읽기 펄스(READ)를 인가하였을 때, 메모리 셀(200)에 걸리는 전압의 크기의 차이로 메모리 셀(200)의 상태를 읽을 수 있다. 이 경우, 리셋 상태에서 메모리 셀(200)의 상변화 소자(210)는 큰 저항을 가지므로, 상변화 소자(210)에서 감지된 전압인 큰 경우를 리셋 상태로, 상변화 소자(210)에서 감지된 전압이 작은 경우를 셋 상태로 결정할 수 있다. 다른 실시예에서, 메모리 셀(200)에 전압을 인가하였을 때, 출력되는 전류의 차이로 메모리 셀(200)의 상태를 읽을 수 있다. 이 경우, 상변화 소자(210)에서 감지된 전류가 작은 경우를 리셋 상태로, 상변화 소자(210)에서 감지된 전류가 큰 경우를 셋 상태로 결정할 수 있다.
PRAM에서는 데이터 쓰기는 일련의 리셋 과정과 셋 과정을 통해서 수행되므로, 인가 시간이 긴 리셋 펄스로 인해 쓰기 동작이 읽기 동작보다 느리다.
도 5는 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서 PRAM 모듈의 개략적인 블록도이다. 도 5에 도시한 PRAM 모듈은 하나의 PRAM 칩 또는 하나의 PRAM 뱅크일 수 있다.
도 5를 참고하면, PRAM 모듈(500)은 메모리 셀 어레이(510), 행 어드레스 버퍼(520), 행 데이터 버퍼(530), 행 디코더(540), 센스 앰프(sense amplifier)(550) 및 기입 드라이버(560)를 포함한다.
메모리 셀 어레이(510)는 대략 행 방향으로 뻗어 있는 복수의 워드 라인(도시하지 않음), 대략 열 방향으로 뻗어 있는 복수의 비트 라인(도시하지 않음), 그리고 이에 연결되어 있으며 대략 행렬의 형태로 배열된 복수의 메모리 셀(도시하지 않음)을 포함한다. 메모리 셀은 예를 들면 도 2를 참고로 하여 설명한 메모리 셀(200)일 수 있다.
행 어드레스 버퍼(520)와 행 데이터 버퍼(530)는 행 버퍼를 형성한다. 쓰기 동작이 읽기 동작보다 느린 비대칭 지연을 해결하기 위해서, 복수의 행 버퍼, 즉 복수의 행 어드레스 버퍼(520)와 복수의 행 데이터 버퍼(530)가 제공된다. 각 행 버퍼는 행 어드레스 버퍼(520)와 행 데이터 버퍼(530)에 의해 논리적으로 짝이 지워져 있으며, 버퍼 어드레스에 의해 선택된다.
행 어드레스 버퍼(520)는 메모리 컨트롤러(도시하지 않음)로부터 전달되는 명령 데이터와 어드레스(특히, 행 어드레스)를 저장한다. 행 데이터 버퍼(530)는 메모리 셀 어레이(510)에서 전달된 데이터를 저장한다.
어떤 실시예에서, PRAM 모듈(500)은 복수의 행 버퍼(520, 530)를 사용하기 위해서 비휘발성 메모리 인터페이스를 채용할 수 있다. 한 실시예에서, 비휘발성 메모리 인터페이스는 DDR(double data rate) 인터페이스, 예들 들면 LPDDR2(low-power double data rate 2)-NVM(non-volatile memory) 인터페이스일 수 있다. 행 어드레스 버퍼(520)는 비휘발성 메모리 인터페이스를 통해 행 어드레스 및 뱅크 어드레스를 수신하고, 행 데이터 버퍼(530)는 비휘발성 메모리 인터페이스를 통해 데이터를 출력한다.
행 디코더(540)는 행 어드레스를 복호하여서 메모리 셀 어레이(510)의 복수의 행에서 타깃 행을 선택한다. 즉, 행 디코더(540)는 메모리 셀 어레이(510)의 복수의 워드 라인 중 데이터를 읽거나 데이터를 쓸 워드 라인을 선택한다.
어떤 실시예에서, 메모리 컨트롤러에서 전달되는 행 어드레스는 상위 어드레스(upper address)와 하위 어드레스(lower address)를 포함할 수 있다. 이 경우, 상위 어드레스는 행 어드레스 버퍼(520)로 전달되고, 하위 어드레스는 행 디코더(540)로 직접 전달될 수 있다. 이때, 행 디코더(540)는 행 어드레스 버퍼(520)에 저장된 상위 어드레스와 직접 전달된 하위 어드레스를 결합하여서 타깃 행을 선택할 수 있다.
센스 앰프(550)는 메모리 셀 어레이(510)에 저장된 데이터를 읽는 동작을 수행한다. 센스 앰프(550)는 행 디코더(540)가 선택한 워드 라인에 연결된 복수의 메모리 셀로부터 복수의 비트 라인을 통해서 데이터를 읽을 수 있다. 기입 드라이버(560)는 입력되는 데이터를 메모리 셀 어레이(510)에 쓴다. 기입 드라이버(560)는 행 디코더(540)가 선택한 워드 라인에 연결된 복수의 메모리 셀에 복수의 비트 라인을 통해서 데이터를 쓸 수 있다.
어떤 실시예에서, PRAM 모듈(500)에서는 쓰기 동작이 읽기 동작보다 느리므로, 이를 해결하기 위해서 PRAM 모듈(500)은 입력되는 데이터를 버퍼에 먼저 저장한 후에, 이를 메모리 셀 어레이(510)에 쓸 수 있다. 이를 위해, PRAM 모듈(500)은 메모리 매핑된(memory-mapped) 레지스터로서 오버레이 윈도우(570, 580)를 포함할 수 있다. 오버레이 윈도우는 오버레이 윈도우 레지스터(570)와 프로그램 버퍼(580)를 포함할 수 있다. 한 실시예에서, 쓰기 데이터에 대한 정보(예를 들면, 첫 번째 데이터 어드레스와 기입될 바이트 수)가 레지스터(570)에 써진 후에, 쓰기 데이터가 프로그램 버퍼(580)에 저장된다. 다음 오버레이 윈도우 레지스터(570)에 소정의 값이 써지면, 프로그램 버퍼(580)에 저장된 데이터가 메모리 셀 어레이(510)에 기입된다. 이 경우, 메모리 컨트롤러는 오버레이 윈도우 레지스터(570)를 폴링함으로써 메모리 셀 어레이(510)로의 쓰기 동작이 완료되었는지를 확인할 수 있다.
도 6은 본 발명의 한 실시예에 따른 PRAM 모듈에서 메모리 셀 어레이의 파티션 방법의 한 예를 설명하는 도면이고, 도 7은 본 발명의 한 실시예에 따른 PRAM 모듈에서 하프 파티션의 한 예를 설명하는 도면이다.
도 6을 참고하면, 어떤 실시예에서, 하나의 메모리 셀 어레이(510), 예를 들면 PRAM 뱅크는 복수의 파티션(PART0-PART15)으로 분할될 수 있다. 도 6에서는 메모리 셀 어레이(510)가 행 방향으로 2개, 열 방향으로 8개의 파티션으로 분할되어 총 16개의 파티션(PART0-PART15)으로 분할되는 것으로 도시하였다. 이때, 복수의 행 버퍼(520, 530)는 복수의 파티션(PART0-PART15)에 연결될 수 있다. 또한 비트 라인과 워드 라인 사이의 기생 저항 성분을 줄이고 스니크 경로(sneak path) 문제를 해결하기 위해서, 각 파티션은 두 개의 부분(앞으로 "하프 파티션"이라 함)으로 분할될 수 있다. 예를 들면, 각 하프 파티션은 64 비트 병렬 입출력 처리를 할 수 있다.
도 7을 참고하면, 어떤 실시예에서, 각 하프 파티션은 복수의 서브어레이(sub-array)를 포함할 수 있다. 서브어레이는 저항성 타일(resistive tile)이라 불릴 수 있다. 도 7에서는 하나의 하프 파티션이 64개의 타일(Tile0-Tile63)을 포함하는 것으로 도시하였다.
각 타일은 복수의 비트 라인(예를 들면 2048 비트 라인)과 복수의 워드 라인(예를 들면 4096 워드 라인)에 연결되는 복수의 메모리 셀, 즉 PRAM 코어을 포함한다. 설명의 편의상, 도 7에서는 각 타일에 포함되어 있는 복수의 메모리 셀 중에서 하나의 메모리 셀과 이에 연결되어 있는 하나의 비트 라인(BL) 및 워드 라인(WL)만을 도시하였고, 메모리 셀을 형성하는 상변화 소자와 스위칭 소자를 각각 저항과 다이오드로 도시하였다.
각 타일에는 로컬 열 디코더(local column decoder)(앞으로 "LYDEC"이라 함)(710)가 연결되어 있을 수 있다. LYDEC(710)은 대응하는 타일의 복수의 비트 라인(BL)에 연결되어 있다. 어떤 실시예에서, 두 개의 LYDEC(710)이 대응하는 타일의 양끝에 연결될 수 있다. 또한 하프 파티션에는 복수의 타일에 각각 대응하는 복수의 글로벌 비트 라인(GBL)이 형성될 수 있다. 각 글로벌 비트 라인(GBL)은 대응하는 타일의 복수의 비트 라인(BL)에 연결되어 있으며, 글로벌 열 디코더(global column decoder)(앞으로 "GYDEC"이라 함)에 연결되어 있다. 어떤 실시예에서, LYDEC(710)은 GYDEC과 함께 대응하는 하프 파티션의 대응하는 타일에서 비트 라인(BL)을 선택하는데 사용될 수 있다. 센스 앰프(도 5의 550)가 선택된 비트 라인(BL)을 통해 데이터를 읽거나, 기입 드라이버(도 5의 570)가 선택된 비트 라인(BL)을 통해 데이터를 쓸 수 있다.
병렬화를 최대화하기 위해서, 각 타일에는 서브 워드라인 드라이버(sub word line driver)(앞으로 "SWD"라 함)(720)가 연결되어 있을 수 있다. 하프 파티션에 글로벌 워드 라인(GWL)이 형성되고, 글로벌 워드 라인(GWL)은 메인 워드 라인 드라이버(main word line driver)(앞으로 "MWD"라 함)(730)에 연결되어 있을 수 있다. 이 경우 하프 파티션에 형성되는 복수의 워드 라인(WL)이 글로벌 워드 라인(GWL)에 연결되어 있을 수 있다. 어떤 실시예에서, 도 7에 도시한 것처럼, 하프 파티션에 두 개의 글로벌 워드 라인(GWL)이 형성되어 MWD(730)에 연결되어 있을 수 있다. 이러한 방식을 이중 워드 라인 방식(dual word line scheme)이라 한다. 이 경우, 하프 파티션에 포함되어 있는 복수의 타일이 두 개의 타일 그룹으로 그룹화되고, 두 개의 글로벌 워드 라인(GWL)은 두 개의 타일 그룹에 각각 대응할 수 있다. 하프 파티션 내의 모든 SWD는 메인 워드라인 드라이버(main word line driver, MWD)에 연결되어 있다. 또한 두 개의 타일은 듀얼 워드라인 방식에 의해 블록으로 그룹화될 수 있다. 어떤 실시예에서, SWD(720)는 MWD(730)과 함께 대응하는 타일에서 워드 라인(WL)을 구동하는데 사용될 수 있다. 이때, 구동되는 워드 라인(WL)은 행 디코더(도 5의 540)에 의해 선택될 수 있다.
도 6 및 도 7에 도시한 파티션 구조를 사용하는 경우, 하프 파티션당 복수의 입출력(input/output, I/O) 동작(예를 들면 도 7의 예에서는 64개의 I/O 동작)을 동시에 수행할 수 있다. 따라서 파티션당 128 비트 병렬 I/O 동작을 수행할 수 있으므로, 도 6 및 도 7에 도시한 파티션 구조에서는 2개의 파티션이 병렬로 접근될 수 있으므로, 256 비트 데이터를 동시에 가지고 올 수 있다. 이를 위해 복수의 센스 앰프(도 5의 550) 및 복수의 기입 드라이버(560)가 하프 파티션 그룹 앞에 제공될 수 있다.
다음 본 발명의 한 실시예에 따른 PRAM 기반 가속기에 대해서 도 8 내지 도 13을 참고로 하여 설명한다.
도 8은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 개략적인 블록도이며, 도 9는 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서 에이전트의 개략적인 블록도이다.
도 8을 참고하면, PRAM 기반 가속기(800)는 가속기 코어(810) 및 PRAM 서브시스템을 포함하며, PRAM 서브시스템은 메모리 컨트롤러(820) 및 PRAM 모듈(830)를 포함한다.
가속기 코어(810)는 복수의 프로세싱 엘리먼트(PE0-PEn)를 포함하며, 각 프로세싱 엘리먼트는 프로세싱 엘리먼트 코어와 캐시를 포함한다. 어떤 실시예에서, 캐시는 L1(level 1) 캐시와 L2(level 2) 캐시를 포함할 수 있으며, L1 캐시는 L1 명령어(L1 instruction, L1I) 캐시와 L1 데이터(L1 data, L1D) 캐시를 포함할 수 있다.
복수의 프로세싱 엘리먼트(PE0-PEn)는 그 역할에 따라 서버(PE0)와 에이전트(PE1-PEn)로 구분될 수 있다. 복수의 프로세싱 엘리먼트(PE0-PEn) 중 대부분의 프로세싱 엘리먼트(PE1-PEn)는 호스트에서 전달된 커널을 처리하는데 할당되며, 이러한 프로세싱 엘리먼트(PE1-PEn)를 에이전트라 할 수 있다. 또한 복수의 프로세싱 엘리먼트 중 일부 프로세싱 엘리먼트(PE0)는 에이전트에서의 커널 실행을 계속하고 중단하는데 할당되며, 이러한 프로세싱 엘리먼트(PE0)를 서버라 할 수 있다. 서버(PE0)는 에이전트(PE1-PEn)에 의해 요청된 메모리 트래픽을 관리할 수 있다.
어떤 실시예에서, 서버(PE0)는 에이전트(PE1-PEn)가 생성한 메모리 요청을 관리하므로, 코어로 사용되는 프로세싱 엘리먼트 대신 컨트롤러에 의해 구현될 수도 있다.
어떤 실시예에서, 서버(PE0)는 에이전트(PE1-PEn)의 캐시 미스, 특히 L2 캐시 미스를 받아서, 메모리 컨트롤러(820)와 협력해서 관련된 PRAM 액세스를 처리하는 메모리 컨트롤러 유닛(memory controller unit, MCU)를 포함할 수 있다.
어떤 실시예에서, 에이전트는 도 9에 도시한 것처럼 프로세싱 엘리먼트 코어(811), 캐시(812a, 812b, 812c), 캐시 컨트롤러(813a, 813b, 813c) 및 온칩 메모리 컨트롤러(814a, 814b)를 포함할 수 있다.
한 실시예에서, 캐시는 L1I 캐시(812a), L1D 캐시(812b) 및 L2 캐시(812c)를 포함할 수 있다. 이 경우, 캐시 컨트롤러는 L1I 캐시(812a), L1D 캐시(812b) 및 L2 캐시(812c)에 각각 연결되어 있는 L1I 캐시 컨트롤러(813a), L1D 캐시 컨트롤러(813b) 및 L2 캐시 컨트롤러(813c)를 포함할 수 있다. 이러한 캐시 컨트롤러(813a, 813b, 813c)는 메모리 요청이 해당하는 캐시(812a, 812b, 812c)에서 캐시 히트 또는 캐시 미스인지를 확인할 수 있다. L1I 캐시(812a)와 L1D 캐시(812b)는 각각 L1I 캐시 컨트롤러(813a) 및 L1D 캐시 컨트롤러(813b)를 통해 프로세싱 엘리먼트(811)에 연결될 수 있으며, L2 캐시(812c)는 L1D 캐시 컨트롤러(813b)에 연결된 L2 캐시 컨트롤러(813c)를 통해 프로세싱 엘리먼트(811)에 연결될 수 있다. 예를 들면, L1I 캐시 컨트롤러(813a)와 L1I 캐시(812a) 사이, L1D 캐시 컨트롤러(813b)와 L2 캐시 컨트롤러(813c) 사이 및 L2 캐시 컨트롤러(813c)와 L2 캐시(812c) 사이는 128 비트 버스를 통해 연결될 수 있다.
어떤 실시예에서, 코어(811)는 복수의 기능 유닛 및 범용 레지스터를 포함할 수 있다. 한 실시예에서, 코어(811)는 두 세트의 복수의 기능 유닛 및 두 개의 범용 레지스터(regA, regB)를 포함할 수 있다. 예를 들면, 복수의 기능 유닛은 4개의 기능 유닛(.M, .L, .S, .D)을 포함할 수 있다. 기능 유닛(.M, .L, .S, .D)과 레지스터(regA, regB)는 명령어 페치(instruction fetch, IF) 모듈을 통해 L1I(812a) 캐시에 연결될 수 있다. . D 기능 유닛은 메모리 동작과 관련된 전형적인 L/S(load and store) 명령어를 실행할 수 있다. 예를 들면, . D 기능 유닛은 데이터를 메모리로부터 레지스터(regA, regB)로 로드하거나, 결과를 레지스터(regA, regB)에서 메모리로 저장할 수 있다. .M 기능 유닛은 곱셈(multiplication) 기능을 수행하고, .S 기능 유닛과 .L 기능 유닛은 일반적인 산술(arithmetic), 논리(logical) 및 브랜치(branch) 기능을 수행할 수 있다.
또한 L1D 캐시 컨트롤러(813b)는 코어(811)와 64 비트 버스를 통해 각각 연결될 수 있으며, L1D 컨트롤러(813b)는 L1D 캐시(812b)와 8개의 32 비트 버스를 통해 병렬로 연결될 수 있다.
한 실시예에서, 온칩 메모리 컨트롤러는 캐시 컨트롤러, 특히 L2 캐시 컨트롤러(813c)에 연결되어 있으며, 온칩 메모리 컨트롤러(814a, 814b)를 포함할 수 있다. 온칩 메모리 컨트롤러(814a)는 서버(PE0)에 연결되어 있으며, 온칩 메모리 컨트롤러(814b)는 메모리 컨트롤러(820)에 연결되어 있다. 예를 들면, 온칩 메모리 컨트롤러(814a)는 256 비트 버스를 통해 L2 캐시 컨트롤러(813c)에 연결되고, 256 비트 버스를 통해 서버(PE0)에 연결될 수 있다. 또한 온칩 메모리 컨트롤러(814b)는 256 비트 버스를 통해 L2 캐시 컨트롤러(813c)에 연결되고, 128 비트 버스를 통해 두 개의 메모리 컨트롤러(820)에 각각 연결될 수 있다.
어떤 실시예에서, 온칩 메모리 컨트롤러(814a, 814b)는 직접 메모리 액세스(direct memory access, DMA) 컨트롤러일 수 있다.
한 실시예에서, L2 캐시 컨트롤러(813c)는 L2 캐시(812c)에서 캐시 미스를 확인하는 경우 온칩 메모리 컨트롤러(814a)를 통해 메모리 요청을 생성할 수 있다. 그러면 메모리 요청은 온칩 메모리 컨트롤러(814a)를 통해 서버(PE0)로 전달될 수 있다. 또한 메모리 요청에 따라 메모리 컨트롤러(820)에서 PRAM 모듈(830)에서 읽은 데이터는 온칩 메모리 컨트롤러(814b)와 L2 캐시 컨트롤러(813c)를 통해 L2 캐시(812c)로 저장될 수 있다. 이와 같이, 온칩 메모리 컨트롤러(814a)에 의해 생성된 메모리 요청은 서버(PE0), 특히 서버(PE0)의 MCU를 통해 PRAM 서브시스템(820, 830)으로 전달되지만, 타깃 데이터는 각 에이전트의 L2 캐시에 연결된 온칩 메모리 컨트롤러(814b)로 직접 전달될 수 있다.
도 8에서는 복수의 프로세싱 엘리먼트(PE0-PEn) 중 하나의 프로세싱 엘리먼트(PE0)가 서버로 할당되고, 나머지 프로세싱 엘리먼트(PE1-PEn)가 에이전트로 할당되는 것으로 도시하였지만, 둘 이상의 프로세싱 엘리먼트가 서버로 할당될 수도 있다.
어떤 실시예에서, 어떤 프로세싱 엘리먼트(PE0)를 서버로 제공하지 않고, 각 프로세싱 엘리먼트(PE1-PEn)가 MCU를 포함할 수 있다. 이 경우, 각 MCU가 대응하는 프로세싱 엘리먼트의 메모리 요청을 관리할 수 있다.
메모리 컨트롤러(820)는 채널("버스"라고도 함)(840)을 통해 PRAM 모듈(830)에 연결되어 있다. 메모리 컨트롤러(820)는 서버로부터 메모리 요청을 수신하여 채널(840)을 통해 PRAM 모듈(830)로 전달한다. 따라서 메모리 컨트롤러(820)는 채널(840)을 통해 PRAM 모듈(830)에 메모리 읽기/쓰기 명령 및 어드레스를 전달하고, 데이터를 교환할 수 있다.
어떤 실시예에서, PRAM 모듈(830)은 비휘발성 메모리 인터페이스를 채용할 수 있다. 한 실시예에서, 비휘발성 메모리 인터페이스는 DDR 인터페이스, 예들 들면 LPDDR2-NVM 인터페이스일 수 있다. DDR 인터페이스를 채용하는 경우, 채널(840)은 DDR 채널, 예를 들면 LPDDR2 채널일 수 있다. 어떤 실시예에서, 복수의 PRAM 뱅크, 예를 들면 16개의 PRAM 뱅크가 하나의 채널(840)에 공통으로 연결될 수 있다.
어떤 실시예에서, 복수의 메모리 컨트롤러(820)가 제공될 수 있다. 도 8 및 도 9에서는 두 개의 메모리 컨트롤러(820)가 제공되는 것으로 도시하였다. 이 경우, 복수의 메모리 컨트롤러(820)는 서로 다른 복수의 채널(840)에 각각 연결된다. 예를 들면, 각 채널(840)은 LPDDR2 채널일 수 있다.
PRAM 기반 가속기는 프로세싱 엘리먼트(PE0-PEn)와 메모리 컨트롤러(820)를 연결하여 프로세싱 엘리먼트(PE0-PEn), 메모리 컨트롤러(820) 및 PRAM 모듈(830) 등을 통합하는 네트워크(850)를 더 포함할 수 있다. 어떤 실시예에서 네트워크(850)는 p:q 통신을 위한 크로스바 네트워크(crossbar network)일 수 있다(p와 q는 1 이상의 정수이다).
어떤 실시예에서, PRAM 기반 가속기는 호스트와 통신하기 위한 인터페이스 모듈(860)을 더 포함할 수 있다. 인터페이스 모듈(860)은 예를 들면 PCIe(peripheral component interconnect express) 인터페이스를 위한 PCIe 모듈일 수 있다. 인터페이스 모듈(860)을 통해 호스트는 가속기 코어(810), 특히 가속기(810)의 서버(PE0) 및 메모리 컨트롤러(820)와 통신할 수 있다. 이러한 통신을 위해서 인터페이스 모듈(860) 또한 네트워크(850)에 연결되어 있다.
어떤 실시예에서, PRAM 기반 가속기는 파워 슬립 컨트롤러(power sleep controller, PSC)(870)를 더 포함할 수 있다. PSC(870)는 서버(PE0)의 제어에 따라 각 에이전트(PE1-PEn)의 모드를 제어할 수 있다. 즉, 서버(PE0)는 PSC(870)를 사용하여서 각 에이전트(PE1-PEn)를 슬립 모드(또는 휴지 모드라 함)에 넣든지, 슬립 모드에 깨울 수 있다. 이에 따라 서버(PE0)는 각 에이전트(PE1-PEn)에서의 커널 실행을 중지하거나 계속할 수 있다.
어떤 실시예에서, 각 프로세싱 엘리먼트(PE0-PEn)는 마스터 포트와 슬레이브 포트를 통해 네트워크(850)에 연결되고, 메모리 컨트롤러(820)도 마스터 포트와 슬레이브 포트를 통해 네트워크(850)에 연결될 수 있다. 한 실시예에서, 인터페이스 모듈(860)가 마스터 포트와 슬레이브 포트를 통해 네트워크(850)에 연결되어 호스트가 서버(PE0) 및 메모리 컨트롤러(820)와 통신할 수 있다. PSC(870)도 마스터 포트와 슬레이브 포트를 통해 네트워크(850)에 연결될 수 있다.
위에서 설명한 실시예에 따르면, 서버(PE0)는 에이전트(PE1-PEn)의 캐시 미스를 네트워크(850)를 통해 받아서, 메모리 컨트롤러(820)와 협력해서 관련된 PRAM 액세스를 처리할 수 있다. 서버(PE0)는 버스를 통해 메모리 컨트롤러(820)로 메모리 읽기 또는 쓰기 메시지를 보내고, 메모리 컨트롤러(820)가 PRAM 모듈(830) 상의 트랜잭션을 관리할 수 있다.
어떤 실시예에서, PRAM 모듈(830)이 DDR 인터페이스, 예들 들면 LPDDR2-NVM 인터페이스를 채용하는 경우, 메모리 컨트롤러(820)가 서버(PE0)의 요청을 LPDDR2-NVM 트랜잭션(transactions)으로 변환할 수 있다. 이를 위해, 메모리 컨트롤러(820)는 메모리 어드레스를 3단계로 PRAM 모듈(830)로 전달하는 3단계 어드레싱(three-phase addressing)을 수행할 수 있다.
메모리 컨트롤러(820)가 PRAM 모듈(830)로 전달하기 위한 메모리 어드레스, 즉 행 어드레스는 상위 어드레스(upper address)와 하위 어드레스(lower address)를 포함할 수 있다. 예를 들면, (n+1)비트를 사용하는 경우, 상위 어드레스는 상위 (n-m+1)비트(a[n:m])를 사용하고 하위 어드레스는 하위 (m-x)비트(a[m-1:x])를 사용할 수 있다(여기서, n, m, x는 0 이상의 정수).
도 10은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 3단계 어드레싱을 설명하는 도면이다.
도 10을 참고하면, 3단계 어드레싱 중 첫 번째 단계인 프리액티브(preactive) 단계에서, 메모리 컨트롤러(도 8의 820)는 버퍼 어드레스(buffer address, BA) 선택 신호를 보내서 행 어드레스 버퍼(520)를 선택하고, 행 어드레스 중에서 상위 행 어드레스(a[n,m])를 선택한 행 어드레스 버퍼(520)에 저장한다. 행 어드레스는 타깃 행과 관련되어 있다.
두 번째 단계인 액티브(active) 단계에서, 메모리 컨트롤러(820)는 남아 있는 어드레스 부분(즉, 하위 행 어드레스)(a[m-1,x])을 타깃 PRAM 모듈(도 8의 830)로 전달한다. 그러면 PRAM 모듈(830)로 전달된 하위 행 어드레스(a[m-1,x])는 선택된 행 어드레스 버퍼(520)에서 검색한 상위 행 어드레스(a[n,m])와 합쳐서 실제 행 어드레스를 구성한다. 이에 따라 RPAM 모듈(830)은 메모리 셀 어레이(510)에서 타깃 데이터를 불러서 행 데이터 버퍼(530), 즉 선택된 행 어드레스 버퍼(520)와 연관된 행 데이터 버퍼(530)에 저장한다. 예를 들면, RPAM 모듈(830)은 행 어드레스를 타깃 행 디코더(도 5의 540)로 전달하고, 행 디코더(540)는 행 어드레스로 메모리 셀 어레이에서 타깃 행을 선택할 수 있다. 센스 앰프(550)가 타깃 데이터를 타깃 행에서 행 데이터 버퍼(530)로 전달할 수 있다.
액티브 단계 이후에, 행 데이터 버퍼(530) 내에서의 특정 데이터 위치(즉, 열 어드레스)가 읽기/쓰기 단계 명령에 의해 전달될 수 있다. 예를 들면, 명령이 읽기이면, 마지막 단계인 읽기 단계에서, 메모리 컨트롤러(820)는 버퍼 어드레스(BA)로 타깃 행 데이터 버퍼(530)를 선택하고, 열 어드레스로 읽기 데이터의 시작 어드레스를 선택할 수 있다. 이에 따라 메모리 컨트롤러(820)는 행 데이터 버퍼(530)에 저장된 타깃 데이터를 읽어서 출력할 수 있다. 타깃 데이터는 인터페이스 클록 신호의 하강 및 상승 에지마다 지정된 행 데이터 버퍼(530)로부터 추출될 수 있다.
이와 같이, 메모리 컨트롤러(820)가 행 어드레스를 상위 어드레스와 하위 어드레스로 나누어서 PRAM 모듈(830)로 전달함으로써, PRAM 기반 가속기는 DDR 인터페이스, 특히 LPDDR2-NVM 인터페이스를 사용해서 구현될 수 있다.
어떤 실시예에서, 타깃 행의 상위 어드레스가 이미 행 어드레스 버퍼(520)에 존재하면, 메모리 컨트롤러(820)는 프리액티브 단계를 건너뛰고 액티브 단계로 바로 진행할 수 있다. 어떤 실시예에서, 타깃 행의 데이터가 이미 행 데이터 버퍼(530)에 존재하면, 메모리 컨트롤러(830)는 액티브 단계를 건너뛸 수 있다.
명령이 쓰기인 경우, 메모리 컨트롤러는 타깃 데이터를 타깃 PRAM 모듈(830)에 의해 제공되는 특별한 레지스터 세트와 버퍼로 전달할 수 있다. 이러한 레지스터 세트와 버퍼는 오버레이 윈도우 레지스터(도 5의 570)와 프로그램 버퍼(도 5의 580)일 수 있다. 예를 들면, 행 디코더(540)는 행 상위 어드레스와 하위 행 어드레스를 합친 행 어드레스를 오버레이 윈도우 레지스터(570)로 전달한다. 그러면 오버레이 윈도우 레지스터(570)를 통해 타깃 데이터가 프로그램 버퍼(580)에 저장된다. 이에 따라, 서버(PE0) 또는 호스트는 쓰기 데이터가 PRAM 모듈(830)에 기입된 것으로 인식할 수 있어서, 쓰기 동작이 읽기 동작보다 느린 문제를 해결할 수 있다. 또한 프로그램 버퍼(580)에 저장된 데이터가 메모리 셀 어레이(510)에 기입되므로, 메모리 컨트롤러(820)는 오버레이 윈도우 레지스터(570)를 폴링함으로써 실제 메모리 셀 어레이(510)로의 쓰기 동작이 완료되었는지를 확인할 수 있다.
이와 같이, PRAM 기반 가속기는 오버레이 윈도우 레지스터(570)와 프로그램 버퍼(580)를 사용하여서 쓰기 동작을 수행함으로써, PRAM에서 쓰기 동작이 읽기 동작보다 느린 문제를 해결할 수 있다.
어떤 실시예에서, PRAM 모듈(830)의 액세스 횟수를 줄이기 위해서, 서버(PE0)는 L2 캐시를 활용하여서 채널당 소정 바이트(예를 들면 512 바이트(뱅크당 32 바이트)를 기반으로 메모리 요청을 개시하고, 다른 뱅크의 모든 행 데이터 버퍼(530)를 사용하여서 데이터를 프리페치(prefetch)할 수 있다.
도 11은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 오버레이 윈도우를 설명하는 도면이다.
도 11을 참고하면, 오버레이 윈도우, 즉 오버레이 윈도우 레지스터(570)와 프로그램 버퍼(580)는 메모리 매핑된 레지스터로서 메모리 셀 어레이(510)의 어드레스 공간에 매핑될 수 있다. 오버레이 윈도우 레지스터(570)는 메타 정보(meta-information)(571)와 매모리 매핑된 레지스터로서 일련의 제어 레지스터(572)를 포함할 수 있다. 메타 정보는 오버레이 윈도우 크기, 장치 식별자(ID), 프로그램 버퍼 옵셋 및 프로그램 버퍼 크기를 포함할 수 있으며, 예를 들면 128 바이트를 가질 수 있다. 제어 레지스터(572)는 다양한 레지스터, 예를 들면 명령 코드 레지스터(572a), 어드레스 레지스터(572b), 다목적 레지스터(572c), 실행 레지스터(572d) 및 상태 레지스터(572e)를 포함할 수 있다.
어떤 실시예에서, 프로그램 버퍼(580)의 어드레스는 오버레이 윈도우 공간의 소정 위치, 예를 들면 끝에 매핑될 수 있다. 한 실시예에서, 프로그램 버퍼(580)는 기입 드라이버(560)를 가지는 복수의 파티션 앞에 위치할 수 있다. 한 실시예에서, 오버레이 윈도우의 일부로서의 프로그램 버퍼(580)는 메타 정보(571) 및 제어 레지스터(572) 다음에 시작될 수 있다.
오버레이 윈도우(570, 580)는 메모리 셀 어레이(도 5의 510)의 어드레스 공간에 매핑될 수 있는 어드레스 범위를 가지며, 예를 들면 오버레이 윈도우 베이스 어드레스(overlay window base address)를 통해 메모리 셀 어레이(510)의 어드레스 공간에 매핑될 수 있다. 따라서 메모리 컨트롤러는 OWBA를 구성한 후 3단계 어드레싱을 통해 프로그램 버퍼(580)에 데이터를 쓸 수 있다.
호스트가 PRAM 모듈에 데이터를 프로그래밍할 때마다 메모리 컨트롤러는 명령을 업데이트하고 오버레이 윈도우 레지스터(570)를 실행하여 프로그램을 시작할 수 있다. 그러면 PRAM 모듈은 자동으로 프로그램 버퍼(580)에서 데이터를 가져와 오버레이 윈도우의 어드레스 레지스터(572b)에 저장된 행 어드레스를 기초로 지정된 파티션에 저장할 수 있다. 프로그램이 시작되면 메모리 컨트롤러는 오버레이 윈도우의 상태 레지스터(572e)를 통해 대상 파티션의 진행 상태를 확인할 수 있다. 데이터를 타깃에 프로그래밍하는 동안 오버레이 윈도우(570, 580)가 다른 어드레스에 병렬로 매핑될 수 있으므로, 이러한 메모리 동작은 높은 데이터 지역성 및 긴 요청 간격이 있는 경우에 유용할 수 있다.
오버레이 윈도우(570, 580)에 대한 모든 레지스터 조작은 3단계 어드레싱 인터페이스에 따라 수행될 수 있다. 따라서 메모리 컨트롤러는 들어오는 요청을 3단계 어드레싱 동작으로 적절히 변환할 수 있다. 또한 다중 행 버퍼(530)는 센스 앰프(550)를 통해 대상 메모리 셀 어레이의 파티션에 연결되지만 오버레이 윈도우(570, 580)로부터는 분리되어 있을 수 있다.
도 12 및 도 13은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 동작을 설명하는 도면이며, 도 14는 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 데이터 이동 방법을 나타내는 흐름도이다.
도 12 및 도 14를 참고하면, 호스트는 인터럽트, 예를 들면 PCIe 인터럽트를 PRAM 기반 가속기로 발행한다. 이에 따라 PRAM 기반 가속기 내부에서는 호스트로부터의 인터럽트가 인터페이스 모듈(860)에서 서버(PE0)로 전달된다(S1210). 그러면 메모리 컨트롤러(820)가 호스트측 메모리로부터 인터페이스 모듈(860)을 통해 커널을 포함하는 데이터를 PRAM 모듈(830)로 다운로드하여 저장한다(S1220). 어떤 실시예에서, 데이터는 PRAM 모듈(830)의 지정된 이미지 공간에 저장될 수 있다.
다운로드가 완료되면, 서버(PE0)는 복수의 에이전트 중에서 타깃 에이전트(PE1)의 캐시에 실행할 커널의 메모리 어드레스(즉, PRAM 모듈(230)의 이미지 어드레스)를 부트(boot) 어드레스로서 저장한다(S1240). 어떤 실시예에서, 메모리 어드레스가 저장되는 캐시는 L2 캐시일 수 있다. 어떤 실시예에서, 서버(PE0)가 커널의 메모리 어드레스를 저장하기 전에, PSC(870)를 사용해서 타깃 에이전트(PE1)를 슬립 모드로 설정할 수 있다(S1230).
커널의 메모리 어드레스가 저장되면, 캐시에 메모리 어드레스가 부트 어드레스로 저장되었으므로, 타깃 에이전트(PE1)는 캐시에 저장된 메모리 어드레스에 기초해서 PRAM 모듈(830)로부터 커널을 로드하여서 실행한다(S1260). 어떤 실시예에서, 서버(PE0)는 PSC(870)를 통해 슬립 모드에 있는 타깃 에이전트(PE1)를 깨울 수 있다(S1250). 그러면 타깃 에이전트(PE1)가 깨면서 부트 어드레스로 저장된 메모리 어드레스에 기초하여 PRAM 모듈(830)로부터 커널을 로드하여서 실행한다(S1260).
도 13 및 도 14를 참고하면, 커널 실행 동안, 에이전트(PE1)에 의해 요청되는 데이터가 캐시, 예를 들면 L2 캐시에 히트(hit)하면, 에이전트(PE1)는 캐시에 저장된 데이터를 사용할 수 있다. 그러나 캐시에 미스(miss)되는 경우, 에이전트(PE1)는 캐시 미스에 의해 생성되는 메모리 요청을 서버(PE0), 즉 서버(PE0)의 MCU로 전달한다(S1270). 그러면 서버(PE0)는 메모리 컨트롤러(820)를 통해 에이전트(PE1)와 PRAM 모듈(830)의 행 데이터 버퍼(530) 또는 오버레이 윈도우(570) 사이에서 데이터를 이동시킨다(S1280, S1290). 어떤 실시예에서, 서버(PE0)는 메모리 컨트롤러(820)를 통해 에이전트(PE1)와 PRAM 모듈(830)의 행 데이터 버퍼(530) 또는 오버레이 윈도우(570) 사이의 DMA를 개시하고(S1280), 에이전트(PE1)와 PRAM 모듈(830) 사이에서 DMA로 데이터가 이동할 수 있다(S1290).
한 실시예에서, 서버(PE0)는 메모리 요청을 PRAM 모듈(830)의 메모리 컨트롤러(820)로 전달한다(S1280). 어떤 실시예에서, 메모리 컨트롤러(820)는 메모리 요청에 따라 PRAM 모듈(830)에 액세스하기 위한 행 어드레스를 상위 어드레스와 하위 어드레스로 나누어서 PRAM 모듈(830)로 전달할 수 있다. 메모리 컨트롤러(820)는 메모리 요청에 해당하는 데이터를 응답과 함께 에이전트(PE1)로 전달한다(S1290). 즉, 메모리 컨트롤러(820)는, 메모리 요청에 따라 PRAM 모듈(830)의 행 어드레스 버퍼(도 5의 520)로 선택한 메모리 셀 어레이(도 5의 510)의 타깃 행에서 행 데이터 버퍼(도 5의 530)로 데이터를 이동하고, 행 데이터 버퍼(530)에 이동된 데이터를 에이전트(PE1)로 전달할 수 있다. 이 경우, 행 데이터 버퍼(530)에 이미 해당하는 데이터가 저장되어 있으면, 메모리 셀 어레이(510)에서 행 데이터 버퍼(530)로 다시 데이터를 이동할 필요가 없을 수 있다. 예를 들면, 메모리 컨트롤러(820)는 PRAM 모듈(830)에서 읽은 데이터를 에이전트(PE1)의 L2 캐시에 올릴 수 있다. 이와 같이, PRAM 기반 가속기는 컴퓨팅 디바이스의 메인 메모리(도 1의 120)나 다른 메모리의 도움 없이 PRAM 모듈(830)의 행 버퍼(520, 530)를 사용하여서 에이전트(PE1)의 L2 캐시에 데이터를 저장할 수 있다.
또한 에이전트(PE1)는 PRAM 모듈(830)에 데이터 쓰기를 요청하는 메모리 요청을 서버(PE0)로 전달할 수 있다(S1270). 그러면 서버(PE0)는 메모리 요청을 PRAM 모듈(830)의 메모리 컨트롤러(820)로 전달하고(S1280), 메모리 컨트롤러(820)는 메모리 요청에 해당하는 데이터를 에이전트(PE1)에서 PRAM 모듈(830)로 쓰고 이에 대한 응답을 에이전트(PE1)로 전달할 수 있다(S1290). 즉, 메모리 컨트롤러(820)는, 메모리 요청에 따라 행 어드레스 버퍼(520)로 타깃 행 어드레스를 확인하고 에이전트(PE1)의 쓰기 데이터를 PRAM 모듈(830)의 프로그램 버퍼(도 5의 590)로 저장한 후에, 프로그램 버퍼(590)에 저장된 데이터를 메모리 셀 어레이(510)에 쓸 수 있다. 예를 들면, 메모리 컨트롤러(820)는 에이전트(PE1)의 L2 캐시에서 데이터를 가지고 와서 PRAM 모듈(830)에 쓸 수 있다. 이와 같이, PRAM 기반 가속기는 컴퓨팅 디바이스의 메인 메모리(120)나 다른 메모리의 도움 없이 PRAM 모듈(830)의 행 어드레스 버퍼(520)를 사용하여서 에이전트(PE1)의 L2 캐시에서 데이터를 로드하여 PRAM 모듈(530)에 쓸 수 있다.
따라서 서버(PE0)는 메모리 컨트롤러(820)를 통해 에이전트(PE1)와 PRAM 모듈(830)의 행 데이터 버퍼(530) 또는 프로그램 버퍼(590) 사이에서 데이터를 전달할 수 있다. 이와 같이 각 프로세싱 엘리먼트는 전형적인 로드/저장(load/store) 명령어의 변경 없이 메모리 요청을 생성하여, PRAM 기반 가속기 내의 스토리지 코어, 즉 PRAM 모듈(830)에 직접 액세스할 수 있다. 즉, PRAM 모듈 액세스가 기존의 명령어 세트 아키텍처(instruction set architecture)의 어떤 변경 없이 또한 컴퓨팅 디바이스의 운영 체제(operating system, OS) 및 시스템 메모리(즉, DRAM)의 도움 없이 수행될 수 있다. 그러므로 호스트의 스토리지 장치와 가속기 사이의 데이터 전달 과정을 없앨 수 있다.
도 15는 기존의 컴퓨팅 디바이스의 가속기에서의 데이터 이동을 나타내는 도면이며, 도 16은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 PRAM 기반 가속기에서의 데이터 이동을 나타내는 도면이다.
도 15를 참고하면, 사용자의 어플리케이션 실행에 따라 어플리케이션은 OS를 통해 읽기 및/또는 쓰기를 위한 파일 디스크립터를 생성하고(S1501), 스토리지 장치로부터 데이터를 읽거나 스토리지 장치로 데이터를 쓰기 위해서 시스템 메모리, 예를 들면 DRAM에 가상 메모리가 할당된다(S1502). 또한 가속기에 데이터를 쓰거나 가속기로부터 데이터를 읽기 위해서 가속기 메모리가 할당된다(S1503).
이어서 어플리케이션은 OS를 통해 스토리지 장치에 대해서 파일 읽기를 요청하고(S1504), DRAM에 물리적 메모리가 할당되다(S1505). OS를 통해 스토리지 장치에 대해서 파일 데이터가 요청된다(S1506). 그러면, 스토리지 장치로부터 DRAM의 물리적 메모리로 파일 데이터가 전달되고, DRAM의 물리적 메모리에서 가상 메모리로 파일 데이터가 복사된다(S1507, S1508). 다음 DRAM에서 가속기 메모리로 파일 데이터가 전달된다(S1509). 이에 따라 가속기가 파일 데이터를 처리한다. 다음 파일 데이터를 처리한 결과 데이터가 가속기 메모리로부터 DRAM의 가상 메모리로 전달된다(S1510).
이어서 어플리케이션은 스토리지 장치에 대해서 파일 쓰기를 요청한다(S1511). DRAM에 물리적 메모리가 할당되어서 가상 메모리로부터 물리적 메모리로 결과 데이터가 복사되고(S1512, S1513), DRAM의 물리적 메모리에서 스토리지 장치로 결과 데이터가 전달된다(S1514).
다음, 어플리케이션은 읽기 및/또는 쓰기를 위해 할당한 DRAM의 가상 메모리를 해제하고(S1515), 쓰기 및/또는 읽기를 위해 할당한 가속기 메모리를 해제한다(S1516). 또한 어플리케이션은 읽기 및/또는 쓰기를 위해 생성한 파일 디스크립터를 커널에서 삭제한다(S1517).
도 15에서 단계 S1501-S1506, S1511, S1512 및 S1515-S1517은 시스템 오퍼레이션을 나타내고, 단계 S1507-S1510, S1513 및 S1514는 데이터 이동을 나타낸다.
이와 같이, 기존의 컴퓨팅 디바이스에서는 파일 디스크립터를 생성하고, 호스트측 메모리(DRAM) 및 가속기 메모리에 위치하는 다수의 메모리 공간을 할당할 필요가 있으며, 이에 따라 스토리지 장치에 대한 입출력 및 호스트측 메모리와 가속기 메모리 사이의 데이터 이동이 수행될 수 있다. 이 경우, CPU가 가속기와 스토리지 스택과 연관된 사용자 소프트웨어 및 커널 모듈 사이의 데이터 전달에 자주 개입할 필요가 있다. 이로 인해 사용자 모드와 커널 모드 사이의 스위칭 및 불필요한 데이터 복사가 발생하고, 스토리지 장치와 가속기 사이에서 데이터를 이동하는데 많은 사이클이 낭비될 수 있다. 그러나 사용자 관점에서는 타깃 가속기에서 주로 사용된 입력(또는 출력) 데이터에 CPU가 접근할 것이 요구되지 않는다.
반면, 본 발명의 한 실시예에 따르면, 도 16에 도시한 것처럼, 사용자에 의해 커널이 생성되어 시스템 메모리, 예를 들면 DRAM에 저장된다(S1610). 이러한 커널은 시스템 메모리에서 PRAM 기반 가속기로 전달되고(S1620), PRAM 기반 가속기 내에서 커널의 태스크를 수행하여서 완료한다(S1630).
이와 같이, 본 발명의 한 실시예에 따른 PRAM 기반 가속기는 계산 자원과 스토리지 자원을 통합함으로써, 사용자가 호스트 상에서 커널을 구성한 후에 그 실행을 위해서는 단지 커널을 타깃 가속기로 전달하면 된다. 이에 따라, CPU, 스토리지 장치 및 가속기 사이에서의 불필요한 호스트측 소프트웨어 개입 및 메모리 복사를 제거할 수 있다. 또한 시스템 메모리(DRAM)의 도움 없이 커널을 실행할 수 있다.
도 17은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 프로그래밍 모델을 나타내는 도면이다.
도 17을 참고하면, 사용자는 packData 인터페이스를 통해 커널을 패킹(pack)하고, pushData 인터페이스를 통해 커널을 PRAM 기반 가속기로 로드할 수 있다. packData 인터페이스는 복수의 어플리케이션, 즉 커널(예를 들면, app0, app1, ..., appN)을 위한 코드 세그먼트를 다운로드하기 위해서 가속기의 메모리 어드레스를 정의하는 메타데이터(meta)와 공유된 공통 코드(shared)를 파라미터로 포함할 수 있다. packData 인터페이스는 복수의 커널을 패킹하여서 커널 이미지(img)를 리턴한다. pushData 인터페이스는 커널 이미지(img)가 저장된 호스트의 메모리 어드레스를 참조하는 포인터와 다운로드될 가속기의 메모리 어드레스(&pram_addr)를 파라미터로 포함할 수 있다. 커널 이미지가 가속기의 메모리에 도달하면, 서버는 unpackData 인터페이스[unpackData(img)]를 통해서 커널 이미지(img)로부터 메타데이터 정보를 추출하기 시작하고, load 인터페이스를 통해 코드 세그먼트를 메타데이터에 기재된 타깃 어드레스로 로드할 수 있다. load 인터페이스는 각 코드 세그먼트(seg)와 타깃 어드레스(&addr)를 파라미터로 포함할 수 있다.
커널 이미지를 파싱한 후에, 각 커널에 대해서, 서버는 polling 인터페이스를 통해 이용 가능한 에이전트를 체크하기(즉, 폴링하기) 시작할 수 있다. polling 인터페이스는 이용 가능한 에이전트(available_pe)를 파라미터로 포함하고, 유휴 상태의 에이전트(pe)를 리턴할 수 있다. 하나의 에이전트가 유휴 상태이면, 서버는 sleep 인터페이스[sleep(pe)]를 통해 해당 에이전트를 슬립 모드에 넣고(즉, 파워오프하고), writeMemory 인터페이스를 통해 에이전트에 커널을 할당하고, boot 인터페이스를 통해 해당 에이전트를 깨울(즉, 리부팅할) 수 있다. writeMemory 인터페이스는 에이전트의 부트 어드레스(즉, 매직 어드레스)를 해당 커널이 저장된 어드레스(즉, 부트 엔트리 어드레스)로 갱신하기 위해서, 매직 어드레스(MAGIC_ADDR)와 부트 엔트리 어드레스(&app.boot_addr)를 파라미터로 포함할 수 있다. 따라서 각 에이전트(pei)는 해당 커널을 실행해서 데이터 처리를 완료할 수 있다(processing appi).
다음, 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서 읽기 및 쓰기 타이밍에 대해서 도 18 및 도 19를 참고로 하여 설명한다.
도 18은 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서 읽기 타이밍을 설명하는 도면이고, 도 19는 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서 쓰기 타이밍을 설명하는 도면이다.
도 10을 참고로 하여 설명한 것처럼, 읽기 및 쓰기를 위한 행 액세스는 3단계 어드레싱 중에서 프리액티브 단계와 액티브 단계에서 수행될 수 있다. 도 18 및 도 19를 참고하면, 프리액티브 단계의 프리액티브 시간(tRP) 내에서 가속기는 타깃 행 어드레스 버퍼(RAB)가 상위 행 어드레스를 저장할 수 있도록 한다. tRP 시간은 종래 DRAM에서 사용된 DDR 인터페이스에서의 프리차지 시간과 유사할 수 있다.
액티브 단계의 액티브 시간(tRCD)은 행 어드레스에 의한 열 어드레스 지연으로 분류될 수 있으며, tRCD 시간은, 타깃 행 위치를 확인하기 위해서 타깃 행 어드레스 버퍼(RAB)에 저장된 값(상위 행 어드레스)과 하위 행 어드레스를 결합하는 어드레스 합성 시간 및 메모리 동작 시간을 포함할 수 있다. 쓰기 명령의 경우, tRCD 시간 내에서, 타깃 PRAM 모듈은 합성된 타깃 행 어드레스가 오버레이 윈도우의 어드레스 범위 내에 있는지를 확인할 수 있다. 타깃 행 어드레스가 오버레이 윈도우의 어드레스와 일치하면, 타깃 행 어드레스와 관련된 타깃 데이터가 오버레이 윈도우의 레지스터에 의해 처리되어 프로그램 버퍼에 저장될 수 있다. 그렇지 않으면, 타깃 데이터는 지정된 메모리 셀 어레이에 의해 참조될 수 있다. 읽기 명령의 경우, tRCD는 타깃 행에서 타깃 행 데이터 버퍼(RDB)로 행 데이터를 가지고 오는 시간을 포함할 수 있다.
도 18을 참고하면, 읽기 단계에서, 읽기 지연(RL)과 데이터 스트로브 신호(data strobe signal, DQS) 출력 액세스 시간(DQS access time from clock)(tDQSCK)을 포함하는 읽기 프리앰블 기간이 소비된다. 다음, 데이터 버스트는 읽기 버스트 시간(tBURST) 동안 읽기 명령에 내장된 열 어드레스를 참조함으로써 행 데이터 버퍼(RDB)로부터 전달될 수 있다.
도 19를 참고하면, 쓰기 단계에서, 쓰기 명령을 위한 메모리 타이밍은 읽기 단계 명령과 유사하다. 특히, 쓰기 명령은 읽기 지연(RL) 대신에 쓰기 프리앰블 기간에서의 쓰기 지연 클록(WL)에 노출되고, tDQSCK 대신에 쓰기 프리앰블 기간에서의 tDQSS(DQS latching transition to clock edge) 시간에 노출된다. 다음, 데이터 버스터는 쓰기 버스트 시간(tBURST) 동안 쓰기 명령에 내장된 열 어드레스를 참조함으로써 오버레이 윈도우의 프로그램 버퍼에서 메모리 셀 어레이로 프로그래밍될 수 있다. 쓰기 단계에서의 프로그램 타임 시퀀스는 프로그램 버퍼의 모든 데이터가 타깃 메모리 셀 어레이로 완전히 프로그램되는 것을 보장하기 위한 시간인 쓰기 복구(write recovery) 기간(tWRA)을 포함할 수 있다.
어떤 실시예에서, 동일한 PRAM 모듈 내의 서로 다른 파티션에 대한 메모리 요청을 인터리빙할 수 있다. 이러한 실시예에 대해서 도 19를 참고로 하여 설명한다.
도 20 및 도 21은 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서의 메모리 요청 인터리빙을 설명하는 도면이다.
도 20 및 도 21에서는 설명의 편의상 두 개의 읽기 메모리 요청(req-0, req-1)이 병렬로 처리되는 경우에 대해서 설명한다. 이 경우, 두 메모리 요청(req-0, req-1)은 동일한 PRAM 모듈 내에서 서로 다른 파티션을 타깃으로 한다.
어떤 실시예에서, PRAM 모듈(예를 들면 도 8의 830)과 타깃 에이전트(예를 들면 도 8의 PE1)의 캐시(L2 캐시) 사이의 데이터 이동의 지연을 줄이기 위해서, 메모리 컨트롤러(예를 들면 도 8의 820)는 PRAM 모듈(830)의 다중 파티션과 행 버퍼를 인지해서 메모리 요청을 스케줄링할 수 있다. 각 PRAM 모듈(830)은, 어떤 행 데이터 버퍼(도 5의 530)에서 타깃 캐시로 데이터가 전달되는 동안, 병렬로, 어떤 파티션에서 다른 행 데이터 버퍼로 나가는 데이터를 감지할 수 있다. 따라서, 데이터를 전달하는 시간과 파티션에 액세스할 때의 지연을 중첩시킬 수 있다.
도 20 및 도 21을 참고하면, 메모리 컨트롤러(820)가 메모리 요청(req-0)의 프리액티브 명령을 발행한다(S2010). 한편, 메모리 요청(req-0)의 프리액티브 명령을 발행하기 직전에, 다른 메모리 요청(req-1)의 프리액티브 명령이 개시되었다고 가정한다. 그러면 메모리 요청(req-0)에 대해서 프리액티브 시간(tRP) 및 액티브 시간(tRCD)이 걸리는 동안(S2010, S2020, S2040), 메모리 컨트롤러(820)는 다른 행 데이터 버퍼의 어드레스를 가진 다른 타깃 파티션을 위한 읽기 단계 명령을 보낼 수 있다(S2030). 즉, 메모리 컨트롤러(820)가 상위 행 어드레스를 행 어드레스 버퍼(RAB)에 저장한 후에(S2010), 어떤 파티션에 액세스하여서 메모리 셀 어레이로부터 타깃 행 데이터 버퍼(RDB)로 데이터를 가지고 오는 동안(S2020, S2040), 메모리 컨트롤러(820)는 다른 파티션을 위한 읽기 단계 명령을 보낼 수 있다(S2030). 메모리 요청(req-1)과 관련된 행 데이터 버퍼(RDB)에 데이터가 준비되어 있으므로, 메모리 요청(req-0)의 tRCD 동안(S2020, S2040), 메모리 컨트롤러(820)는 메모리 요청(req-1)의 데이터를 행 데이터 버퍼(RDB)로부터 가지고 와서 타깃 L2 캐시에 둘 수 있다(S2030). 즉, 메모리 요청(req-1)의 RL 시간, tDQSCK 시간 및 tBURST 시간이 차례로 소비될 수 있다(S2030). 메모리 요청(req-1)의 모든 데이터가 전달되었다면, 메모리 컨트롤러(820)가 다른 파티션에 액세스하고 있는 동안, 메모리 요청(req-0)의 읽기 단계 동작(RL, tDQSCK, tBURST)가 처리될 수 있다(S2050). 이러한 방식으로, 데이터 전달이 에이전트(PE1)에게 보이지 않도록 만들 수 있다.
이와 같이, 메모리 요청(req-0, req-1)을 병렬로 처리할 수 있으므로, 메모리 액세스의 지연(latency)을 줄일 수 있다. 한편, 도 20 및 도 21을 참고로 하여 설명한 인터리빙 방식은 하나의 PRAM 모듈(즉, 하나의 PRAM 뱅크) 내에서 모든 메모리 요청이 인터리빙된다는 점에서 뱅크 인터리빙과 다를 수 있다.
어떤 실시예에서, PRAM 기반 가속기는 오버라이트 오버헤드를 줄이기 위해서 선택적 소거(selectional erasing)을 수행할 수 있다. 이러한 실시예에 대해서 도 22를 참고로 하여 설명한다.
도 22는 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서의 선택적 소거를 설명하는 도면이다.
플래시와 같은 다른 NVM 기술과 유사하게, PRAM에서도 오버라이트에서 리셋 동작을 제거하기 위해서 타깃 블록 상에서 프리리셋(pre-reset)을 수행하는 소거 동작을 지원할 수 있다. PRAM 모듈에서 일반적인 소거 동작을 수행하는 경우, 소거 동작으로 인한 지연이 소거 동작이 없는 오버라이트에 의한 지연보다 더 클 수 있다. 이러한 소거 동작이 긴 지연 시간 동안 모든 메모리 요청이 차단될 수 있다.
따라서 어떤 실시예에 따른 PRAM 기반 가속기는 선택적 소거를 사용한다. 리셋이 타깃 셀을 프로그램된 상태에서 깨끗한 상태로 빠르게 토글하는 처리이므로, PRAM 서브시스템은 리셋 상태로 설정하는 데이터(예를 들면, '0'인 데이터)를 오버라이트될 어드레스만을 선택적으로 프로그램할 수 있다. 한 실시예에서, PRAM 서브시스템의 메모리 컨트롤러(도 8의 820)는, 타깃 커널이 로드되는 동안 오버라이트될 어드레스만을 선택적으로 프로그램할 수 있다. 이 경우, 타깃 커널의 실행이 완료되기 전에 메모리 컨트롤러(820)는, 타깃 커널이 로드되는 동안 오버라이트될 어드레스만을 선택적으로 프로그램할 수 있다.
한 실시예에서, 도 22를 참고하면, 서버(PE0)가 타깃 에이전트(PE1)를 슬립 모드로 설정하고(S1230), 타깃 에이전트(PE1)의 캐시에 실행할 커널의 메모리 어드레스를 저장하고(S1240), 슬립 모드에 있는 타깃 에이전트(PE1)를 깨우는(S1250) 동안, 메모리 컨트롤러(820)는 커널 실행에 의해 오버라이트될 어드레스만을 리셋 상태로 설정하는 데이터로 선택적으로 프로그램해서 선택적 소거를 수행할 수 있다(S2210). 이 경우, 커널 실행에 의해 액세스될 어드레스(즉, 오버라이트될 어드레스)는 호스트로부터 커널이 다운로드될 때 제공될 수 있다.
이러한 선택적 소거 기술을 구현해서 PRAM 모듈에 테스트한 결과, 선택적 소거가 오버라이트 지연을 평균적으로 55% 줄일 수 있으며, 선택적 소거 동안 및 소거 동작 후에 액세스당 비트 에러가 없는 것이 확인되었다.
도 23은 본 발명의 한 실시예에 따른 PRAM 기반 가속기의 메모리 컨트롤러의 개략적인 블록도이다.
도 23을 참고하면, 메모리 컨트롤러(2300)는 트랜스레이터(2310) 및 메모리 컨트롤 롤직(2320) 및 데이터패스(2330)을 포함한다.
트랜스레이터(2310)는 서버(도 8의 PE0), 예를 들면 서버(PE0)의 MCU에 링크될 수 있는 어드레스 레지스터(2311)와 모드 레지스터(2312)를 포함한다. 어드레스 레지스터(2311)와 모드 레지스터(2312)는 각각 32비트 레지스터일 수 있다. 앞서 설명한 것처럼, PRAM 모듈(2340)에서는 데이터가 메모리 셀 어레이에 직접 써지지 않고 프로그램 버퍼에 먼저 써지므로, 트랜스레이터(2310)는 어드레스 레지스터(2311)와 모드 레지스터(2312)를 사용해서 서버(PE0)를 위해 타깃 PRAM 모듈(2340)의 오버레이 윈도우를 핸들링한다.
어떤 실시예에서, 쓰기 동작을 위해, 트랜스레이터(2310)는 먼저 쓰기 동작 코드를 오버레이 윈도우 베이스 어드레스(OWBA)의 소정 어드레스(예를 들면 0x80)에 매핑되어 있는 코드 레지스터(도 11의 572a)에 저장하여서 메모리 동작 유형을 타깃 PRAM 모듈(2340)에 알린다. 그러면, 트랜스레이터(2310)는 타깃 행 어드레스를 소정 어드레스(예를 들면, OWBA+0x8B)에 매핑된 어드레스 레지스터(도 11의 572b)에 기록하고, 소정 어드레스(예를 들면, OWBA+0x93)에 매핑된 다목적 레지스터(도 11의 572c)를 통해서 데이터 버스트 크기를 타깃 PRAM 모듈(2340)에 바이트로 환산하여서 알린다. 오버레이 윈도우 상에서 이들 레지스터를 설정한 후에, 트랜스레이터(2310)는 데이터를 소정 어드레스(예를 들면, OWBA+0x800)에 매핑된 프로그램 버퍼(도 11의 580)에 쓰기 시작하고, 다음 소정 어드레스(예를 들면, OWBA+0xC0)에 매핑된 실행 레지스터(도 11의 572d)를 구성함으로써 쓰기 동작을 실행할 수 있다. 트랜스레이터(2310)의 이러한 동작은 모두 동일한 메모리 컨트롤러에서 메모리 컨트롤러 로직(2320)에 의해 관리될 수 있다. 읽기 동작을 위해, 트랜스레이터(2310)는 메모리 컨트롤러 로직(2320)으로 읽기를 포워딩한다.
어떤 실시예에서, 읽기 및 쓰기를 위한 데이터는 16개의 데이터 핀(사이클당 4 바이트)를 통해 타깃 PRAM 모듈(2340)로 전달될 수 있다. 프로세싱 엘리먼트가 사용하는 로드 및 저장 명령어의 피연산 크기가 32 바이트이므로, 로드(읽기) 동작 및 저장(쓰기) 동작 각각을 위해 데이터패스(2330)에 256 비트 레지스터가 구현될 수 있다.
메모리 컨트롤 로직(2320)은 명령 생성기(2321) 및 초기화기(2322)를 포함할 수 있다.
초기화기(2322)는 자동 초기화(auto initialization)를 활성화하고 온다이(on-die) 임피던스 작업을 보정하여 모든 PRAM 모듈의 부트업(boot-up) 프로세스를 처리할 수 있다. 부트업 프로세스 후에, 초기화기(2322)는 I/O 크기(예를 들면, 뱅크 당 32 바이트)를 고려하여 버스트 길이 및 오버레이 윈도우 어드레스를 설정할 수 있다.
명령 생성기(2321)는 3단계 어드레싱 및 트랜잭션(예를 들면 LPDDR2 트랜잭션)을 처리한다. 명령 생성기(2321)는 PRAM의 물리 계층(PHY)를 통해 3단계 어드레싱 및 트랜잭션을 처리할 수 있다. 단일 동작이 PRAM 모듈의 인터페이스에서 프리액티브, 액티브 및 읽기/쓰기 단계로 분할되므로, 명령 생성기(2321)는 트랜스레이터(2310)에 의해 요청된 모든 메모리 참조를 3단계 어드레싱 요청으로 변환할 수 있다. 구체적으로, 명령 생성기(2321)는 타깃 어드레스를 상위 행 어드레스, 하위 행 어드레스, 행 버퍼 어드레스 및 열 어드레스로 분해할 수 있다. 이렇게 분해된 어드레스는 신호 패킷(예를 들면, 20 비트 DDR 신호 패킷)을 통해 PRAM 모듈로 전달될 수 있다. 신호 패킷은 오버레이 윈도우 또는 타깃 PRAM 파티션의 동작 유형(예를 들면, 2~4 비트), 버퍼 어드레스(예를 들면, 2 비트), 타깃 어드레스(예를 들면, 7~15 비트)로 이루어질 수 있다. 프리액티브 단계에서, 명령 생성기(2321)는 버퍼 어드레스(BA) 신호를 전달하여 타깃 행 버퍼를 선택하고, 상위 행 어드레스를 선택한 행 어드레스 버퍼에 저장한다. 액티브 단계에서, 명령 생성기(2321)는 타깃 PRAM 모듈(2340)에 하위 행 어드레스와 버퍼 어드레스를 신호로 보낸다. 그러면 타깃 행이 활성화되고, 프로그램 버퍼에 저장된 데이터가 타깃 행으로 전달되어 프로그래밍된다. 읽기의 경우, 타깃 PRAM 모듈의 내부 센스 앰프가 타깃 행에서 데이터를 선택한 행 어드레스 버퍼와 관련된 행 데이터 버퍼로 전달한다.
한편, 본 발명의 한 실시예에 따른 PRAM 기반 가속기를 실제 하드웨어에 구현하여서 성능을 측정한 결과에 대해서 설명한다.
성능 측정을 위해, 3x nm 다중 파티션 PRAM을 28nm 기술 FPGA 로직 셀에 연결하는 메모리 컨트롤러를 구현한다. 다음 이러한 메모리 컨트롤러를 PCIe 패브릭(fabric)을 거쳐 병렬 임베디드 코어를 사용하는 상용 하드웨어 플랫폼과 결합하여 PRAM 기반 가속기를 설계한다. 또한 성능 측정을 위해서 도 18 및 도 19를 참고로 하여 설명한 읽기/쓰기 타이밍에서의 파라미터는 표 1에 나타낸 파라미터가 사용된다. 표 1에서 tCK는 클록의 주기(즉, 사이클)이고, BL4, BL8, BL16은 각각 버스트 길이가 4, 8, 16인 경우를 나타낸다.
이 경우, 도 20 내지 도 22를 참고로 하여 설명한 메모리 요청 인터리빙과 선택적 소거를 사용하는 경우, PRAM 기반 가속기는 스토리지 장치와 및 하드웨어 가속기 사이에서 피어 투 피어 DMA를 사용하는 진보된 이종 컴퓨팅 기술보다 평균적으로 47% 더 나은 성능을 달성한다는 것이 확인된다.
파라미터 파라미터 파라미터
RL(cycle) 6 tRP(cycle) 3 tDQSS(ns) 0.75-1.25
WL(cycle) 3 tRCD(ns) 80 tWRA(ns) 15
tCK(ns) 2.5 tDQSCK(ns) 2.5-5.5 tBURST(cycle):
BL4/BL8/BL16
4/8/16
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 중앙 프로세싱 유닛(central processing unit, CPU)과 시스템 메모리를 포함하는 호스트에 연결되도록 구성된 저항 변화 메모리 기반 가속기로서,
    상기 호스트에서 오프로드되는 커널을 저장하는 저항 변화 메모리(resistance switching memory) 모듈,
    복수의 프로세싱 엘리먼트를 포함하며, 상기 복수의 프로세싱 엘리먼트 중 타깃 프로세싱 엘리먼트에서 상기 커널을 실행하는 가속기 코어,
    상기 타깃 프로세싱 엘리먼트에서 상기 커널의 실행에 따라 생성된 메모리 요청을 관리하는 메모리 컨트롤러 유닛(memory controller unit, MCU),
    상기 저항 변화 메모리 모듈에 연결되어 있으며, 상기 MCU로부터 전달되는 상기 메모리 요청에 따라 상기 저항 변화 메모리 모듈과 상기 타깃 프로세싱 엘리먼트 사이에서 상기 메모리 요청에 따른 데이터를 이동시키는 메모리 컨트롤러, 그리고
    상기 가속기 코어, 상기 복수의 프로세싱 엘리먼트 및 상기 메모리 컨트롤러를 통합하는 네트워크
    를 포함하는 저항 변화 메모리 기반 가속기.
  2. 제1항에서,
    상기 호스트의 운영 체제(operation system, OS)의 도움 없이 상기 저항 변화 메모리 모듈과 상기 타깃 프로세싱 엘리먼트 사이에서 상기 메모리 요청에 따른 데이터가 이동되는 저항 변화 메모리 기반 가속기.
  3. 제1항에서,
    상기 타깃 프로세싱 엘리먼트는 전형적인 로드/저장 명령어(load/store instruction)의 변경 없이 상기 메모리 요청을 통해 상기 저항 변화 메모리 모듈에 액세스하는 저항 변화 메모리 기반 가속기.
  4. 제1항에서,
    상기 MCU는 상기 복수의 프로세싱 엘리먼트 이외의 프로세싱 엘리먼트에 포함되는 저항 변화 메모리 기반 가속기.
  5. 제1항에서,
    상기 MCU는 상기 타깃 프로세싱 엘리먼트에 포함되어 있는 저항 변화 메모리 기반 가속기.
  6. 제1항에서,
    상기 저항 변화 메모리 모듈은, 복수의 파티션으로 분할되어 있는 복수의 저항 변화 메모리 셀을 포함하는 메모리 셀 어레이, 그리고 복수의 행 데이터 버퍼를 포함하며,
    상기 복수의 파티션은 제1 파티션 및 제2 파티션을 포함하고,
    상기 복수의 행 데이터 버퍼는 제1 행 데이터 버퍼 및 제2 행 데이터 버퍼를 포함하며,
    상기 메모리 컨트롤러는, 제1 메모리 요청에 따라 상기 제1 파티션으로부터 상기 제1 행 데이터 버퍼로 데이터를 가지고 오는 동작과, 제2 메모리 요청에 따라 상기 제2 파티션으로부터 상기 제2 행 데이터 버퍼로 이동되어 있는 데이터를 상기 제2 메모리 요청의 타깃 프로세싱 엘리먼트로 이동하는 동작을 병렬로 처리하는
    저항 변화 메모리 기반 가속기.
  7. 제1항에서,
    상기 저항 변화 메모리 모듈은,
    복수의 파티션으로 분할되어 있는 복수의 저항 변화 메모리 셀을 포함하는 메모리 셀 어레이,
    복수의 행 어드레스 버퍼, 그리고
    복수의 행 데이터 버퍼를 포함하고,
    상기 메모리 컨트롤러는 3단계 어드레싱을 수행하며,
    상기 3단계 어드레싱은,
    상기 메모리 요청에 따라 상기 저항 변화 메모리 모듈에 액세스하기 위한 행 어드레스 중 상위 어드레스를 상기 복수의 행 어드레스 버퍼 중 타깃 행 어드레스 버퍼에 저장하는 프리액티브 단계,
    읽기 명령의 경우, 상기 행 어드레스 중 하위 어드레스와 상기 타깃 행 어드레스 버퍼에 저장된 상기 상위 어드레스를 결합한 행 어드레스에 기초하여 상기 메모리 셀 어레이로부터 상기 복수의 행 데이터 버퍼 중 타깃 행 데이터 버퍼로 상기 데이터를 가지고 오는 액티브 단계, 그리고
    상기 타깃 행 데이터 버퍼로부터 상기 데이터를 상기 타깃 프로세싱 엘리먼트로 전달하는 읽기/쓰기 단계를 포함하는
    저항 변화 메모리 기반 가속기.
  8. 제7항에서,
    상기 저항 변화 메모리 모듈은, 일련의 제어 레지스터와 프로그램 버퍼를 포함하는 오버레이 윈도우를 더 포함하며,
    쓰기 명령의 경우, 상기 액티브 단계에서 상기 행 어드레스가 상기 오버레이 윈도우의 어드레스 범위 내에 있는 경우 타깃 데이터가 상기 프로그램 버퍼에 저장되고, 상기 읽기/쓰기 단계에서 상기 프로그램 버퍼에 저장된 상기 타깃 데이터가 상기 메모리 셀 어레이로 프로그램되는
    저항 변화 메모리 기반 가속기.
  9. 제8항에서,
    상기 복수의 파티션은 제1 파티션 및 제2 파티션을 포함하고,
    상기 메모리 컨트롤러는, 제1 메모리 요청에 따라 상기 제1 파티션을 위한 상기 프리액티브 단계 및 상기 액티브 단계를 수행하는 동안, 제2 메모리 요청에 따라 상기 제2 파티션을 위한 상기 읽기/쓰기 단계가 수행하는
    저항 변화 메모리 기반 가속기.
  10. 제1항에서,
    상기 저항 변화 메모리 모듈은 복수의 저항 변화 메모리 셀을 포함하는 메모리 셀 어레이를 포함하며,
    상기 메모리 컨트롤러는 상기 커널의 실행에 의해 오버라이트될 상기 메모리 셀 어레이의 어드레스를 리셋 상태로 설정하는 선택적 소거를 수행하는 저항 변화 메모리 기반 가속기,
  11. 제10항에서,
    상기 메모리 컨트롤러는 상기 커널의 실행 전에 상기 선택적 소거를 수행하는 저항 변화 메모리 기반 가속기.
  12. 제1항에서,
    상기 MCU는, 상기 커널의 실행을 위해 상기 저항 변화 메모리 모듈에 저장된 상기 커널의 메모리 어드레스를 상기 타깃 프로세싱 엘리먼트의 캐시에 부트 어드레스로 저장하는 저항 변화 메모리 기반 가속기.
  13. 제12항에서,
    상기 프로세싱 엘리먼트의 슬립 모드를 제어하는 파워 슬립 컨트롤러를 더 포함하며,
    상기 MCU는 상기 커널의 메모리 어드레스를 상기 타깃 프로세싱 엘리먼트에 저장하기 전에 상기 파워 슬립 컨트롤러를 통해 상기 타깃 프로세싱 엘리먼트를 슬립 모드로 전환하고, 상기 커널의 메모리 어드레스를 상기 타깃 프로세싱 엘리먼트에 저장한 후에 상기 파워 슬립 컨트롤러를 통해 상기 프로세싱 엘리먼트를 깨우는
    저항 변화 메모리 기반 가속기.
  14. 제1항에서,
    상기 타깃 프로세싱 엘리먼트는
    L2 캐시,
    상기 MCU에 연결되어 있으며, 상기 메모리 요청을 생성하여 상기 MCU로 전달하는 제1 온칩 메모리 컨트롤러, 그리고
    상기 L2 캐시에 연결되어 있으며, 상기 L2 캐시와 상기 저항 변화 메모리 모듈 사이에서 상기 데이터를 이동시키는 제2 온칩 메모리 컨트롤러
    를 포함하는 저항 변화 메모리 기반 가속기.
  15. 제1항에서,
    상기 저항 변화 메모리 모듈은 상변화 메모리(phase-change memory) 모듈, 저항성 메모리(resistive memory) 모듈 또는 자기저항 메모리(magnetoresistive memory) 모듈을 포함하는 저항 변화 메모리 기반 가속기.
  16. 중앙 프로세싱 유닛(central processing unit, CPU)과 시스템 메모리를 포함하는 호스트에 연결되도록 구성된 저항 변화 메모리 기반 가속기로서,
    상기 호스트에서 오프로드되는 커널을 저장하며, 복수의 파티션으로 분할되어 있는 복수의 저항 변화 메모리 셀 및 복수의 행 데이터 버퍼를 포함하는 저항 변화 메모리(resistance switching memory) 모듈,
    복수의 프로세싱 엘리먼트를 포함하며, 상기 복수의 프로세싱 엘리먼트 중 타깃 프로세싱 엘리먼트에서 상기 커널을 실행하는 가속기 코어,
    상기 타깃 프로세싱 엘리먼트에서 상기 커널의 실행에 따라 생성된 메모리 요청을 관리하는 메모리 컨트롤러 유닛(memory controller unit, MCU),
    상기 저항 변화 메모리 모듈에 연결되어 있으며, 상기 MCU로부터 전달되는 상기 메모리 요청에 따라 상기 저항 변화 메모리 모듈과 상기 타깃 프로세싱 엘리먼트 사이에서 상기 메모리 요청에 따른 데이터 이동을 관리하며, 상기 복수의 파티션 중 제1 파티션에서 상기 복수의 행 데이터 버퍼 중 제1 행 데이터 버퍼로 제1 데이터를 가지고 오는 동작과, 상기 복수의 행 데이터 버퍼 중 제2 행 데이터 버퍼에서 상기 타깃 프로세싱 엘리먼트로 제2 데이터를 이동하는 동작을 병렬로 처리하는 메모리 컨트롤러, 그리고
    상기 가속기 코어, 상기 복수의 프로세싱 엘리먼트 및 상기 메모리 컨트롤러를 통합하는 네트워크
    를 포함하는 저항 변화 메모리 기반 가속기.
  17. 제16항에서,
    상기 제1 데이터는 상기 제1 파티션에서 상기 제2 행 데이터 버퍼로 상기 제2 데이터를 가지고 오기 전에 상기 복수의 파티션 중 제2 파티션에서 상기 제1 행 데이터 버퍼로 이동되어 있는 저항 변화 메모리 기반 가속기.
  18. 제16항에서,
    상기 메모리 컨트롤러는 프리액티브 단계, 액티브 단계 및 읽기/쓰기 단계를 포함하는 3단계 어드레싱을 수행하며,
    상기 제1 데이터를 위한 상기 프리액티브 단계와 상기 액티브 단계가 수행되는 동안, 상기 제2 데이터를 위한 상기 읽기/쓰기 단계가 수행되는
    저항 변화 메모리 기반 가속기.
  19. 중앙 프로세싱 유닛(central processing unit, CPU)과 시스템 메모리를 포함하는 호스트에 연결되도록 구성된 저항 변화 메모리 기반 가속기로서,
    상기 호스트에서 오프로드되는 커널을 저장하며, 복수의 저항 변화 메모리 셀을 포함하는 메모리 셀 어레이를 포함하는 저항 변화 메모리(resistance switching memory) 모듈,
    복수의 프로세싱 엘리먼트를 포함하며, 상기 복수의 프로세싱 엘리먼트 중 타깃 프로세싱 엘리먼트에서 상기 커널을 실행하는 가속기 코어,
    상기 타깃 프로세싱 엘리먼트에서 상기 커널의 실행에 따라 생성된 메모리 요청을 관리하는 메모리 컨트롤러 유닛(memory controller unit, MCU),
    상기 저항 변화 메모리 모듈에 연결되어 있으며, 상기 MCU로부터 전달되는 상기 메모리 요청에 따라 상기 저항 변화 메모리 모듈과 상기 타깃 프로세싱 엘리먼트 사이에서 상기 메모리 요청에 따른 데이터 이동을 관리하며, 상기 타깃 프로세싱 엘리먼트에서 상기 커널을 실행하기 전에 상기 커널의 실행에 의해 오버라이트될 상기 메모리 셀 어레이의 어드레스를 소정의 데이터로 프로그램하는 메모리 컨트롤러, 그리고
    상기 가속기 코어, 상기 복수의 프로세싱 엘리먼트 및 상기 메모리 컨트롤러를 통합하는 네트워크
    를 포함하는 저항 변화 메모리 기반 가속기.
  20. 제19항에서,
    상기 소정의 데이터는 상기 어드레스에 대응하는 저항 변화 메모리 셀을 리셋 상태로 설정하는 데이터인 저항 변화 메모리 기반 가속기.
KR1020180046378A 2016-07-26 2018-04-20 저항 변화 메모리 기반 가속기 KR101944037B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/032,675 US10929059B2 (en) 2016-07-26 2018-07-11 Resistance switching memory-based accelerator
CN201810929808.6A CN109426628A (zh) 2017-09-04 2018-08-14 基于电阻开关存储器的加速器

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20170112840 2017-09-04
KR1020170112840 2017-09-04

Publications (1)

Publication Number Publication Date
KR101944037B1 true KR101944037B1 (ko) 2019-01-30

Family

ID=65277183

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180046378A KR101944037B1 (ko) 2016-07-26 2018-04-20 저항 변화 메모리 기반 가속기

Country Status (2)

Country Link
KR (1) KR101944037B1 (ko)
CN (1) CN109426628A (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100076657A (ko) * 2008-12-26 2010-07-06 주식회사 하이닉스반도체 비휘발성 메모리 장치
KR20160006034A (ko) * 2014-07-08 2016-01-18 삼성전자주식회사 저항성 메모리 장치 및 저항성 메모리 장치의 동작방법
KR20170027125A (ko) * 2015-09-01 2017-03-09 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법
KR20170064259A (ko) * 2015-12-01 2017-06-09 에스케이하이닉스 주식회사 메모리 및 이를 포함하는 전자 장치
KR20170084969A (ko) * 2016-01-13 2017-07-21 삼성전자주식회사 시스템 온 칩, 모바일 기기 및 시스템 온 칩의 동작 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4646485B2 (ja) * 2002-06-25 2011-03-09 ルネサスエレクトロニクス株式会社 薄膜磁性体記憶装置
US8375392B2 (en) * 2010-01-12 2013-02-12 Nec Laboratories America, Inc. Data aware scheduling on heterogeneous platforms
US8645637B2 (en) * 2010-11-16 2014-02-04 Micron Technology, Inc. Interruption of write memory operations to provide faster read access in a serial interface memory
US20130083048A1 (en) * 2011-09-29 2013-04-04 Advanced Micro Devices, Inc. Integrated circuit with active memory and passive variable resistive memory with shared memory control logic and method of making same
JP5948976B2 (ja) * 2012-03-06 2016-07-06 富士ゼロックス株式会社 画像形成装置および情報処理装置
US20140240327A1 (en) * 2013-02-22 2014-08-28 The Trustees Of Princeton University Fine-grained cpu-gpu synchronization using full/empty bits
US9734097B2 (en) * 2013-03-15 2017-08-15 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
US10223326B2 (en) * 2013-07-31 2019-03-05 Oracle International Corporation Direct access persistent memory shared storage
US9811456B2 (en) * 2014-11-26 2017-11-07 Advanced Micro Devices, Inc. Reliable wear-leveling for non-volatile memory and method therefor
US9847125B2 (en) * 2015-08-05 2017-12-19 University Of Rochester Resistive memory accelerator

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100076657A (ko) * 2008-12-26 2010-07-06 주식회사 하이닉스반도체 비휘발성 메모리 장치
KR20160006034A (ko) * 2014-07-08 2016-01-18 삼성전자주식회사 저항성 메모리 장치 및 저항성 메모리 장치의 동작방법
KR20170027125A (ko) * 2015-09-01 2017-03-09 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법
KR20170064259A (ko) * 2015-12-01 2017-06-09 에스케이하이닉스 주식회사 메모리 및 이를 포함하는 전자 장치
KR20170084969A (ko) * 2016-01-13 2017-07-21 삼성전자주식회사 시스템 온 칩, 모바일 기기 및 시스템 온 칩의 동작 방법

Also Published As

Publication number Publication date
CN109426628A (zh) 2019-03-05

Similar Documents

Publication Publication Date Title
US10929059B2 (en) Resistance switching memory-based accelerator
TWI783369B (zh) 準揮發性系統級記憶體
Caulfield et al. Understanding the impact of emerging non-volatile memories on high-performance, IO-intensive computing
US9600407B2 (en) Generation of far memory access signals based on usage statistic tracking
TWI578156B (zh) 非依電性隨機存取記憶磁碟
KR101890426B1 (ko) 저항 변화 메모리 기반 코프로세서 및 이를 포함하는 컴퓨팅 디바이스
CN103946826B (zh) 用于在公共存储器通道上实现多级存储器层级的设备和方法
EP3364304B1 (en) Memory channel that supports near memory and far memory access
US9286212B2 (en) Semiconductor device and method of controlling non-volatile memory device
CN104106057B (zh) 用非易失性随机存取存储器提供对休眠状态转变的即时响应的方法和系统
TW200842887A (en) Fast suspend-resume of computer motherboard using phase-change memory
JP2009080920A (ja) エミュレートされるコンビネーションメモリデバイス
US11544207B2 (en) Synchronous memory bus access to storage media
US9202548B2 (en) Efficient PCMS refresh mechanism
US20080298120A1 (en) Peripheral Devices Using Phase-Change Memory
WO2017161020A1 (en) Data register copying for non-volatile storage array operations
CN207008602U (zh) 一种基于NandFlash存储器多通道的存储阵列控制装置
KR101944037B1 (ko) 저항 변화 메모리 기반 가속기
Jung Nearzero: An integration of phase change memory with multi-core coprocessor
CN107656883A (zh) 基于电阻切换式存储器的协处理器和包括其的计算设备
KR20220150199A (ko) 최적화된 판독을 갖는 비휘발성 메모리
EP4018323A1 (en) Hierarchical memory systems
JP2024508064A (ja) メモリ、メモリの制御方法及びメモリシステム

Legal Events

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