KR20210113859A - 데이터 처리 시스템 및 그 동작 방법 - Google Patents

데이터 처리 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR20210113859A
KR20210113859A KR1020200029131A KR20200029131A KR20210113859A KR 20210113859 A KR20210113859 A KR 20210113859A KR 1020200029131 A KR1020200029131 A KR 1020200029131A KR 20200029131 A KR20200029131 A KR 20200029131A KR 20210113859 A KR20210113859 A KR 20210113859A
Authority
KR
South Korea
Prior art keywords
data
controller
memory device
area
application
Prior art date
Application number
KR1020200029131A
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 KR1020200029131A priority Critical patent/KR20210113859A/ko
Priority to US16/996,638 priority patent/US11403236B2/en
Priority to CN202010931492.1A priority patent/CN113377694A/zh
Publication of KR20210113859A publication Critical patent/KR20210113859A/ko
Priority to US17/878,389 priority patent/US11966342B2/en

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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

일 실시예에 의한 데이터 처리 시스템은 메모리 장치, 호스트가 어플리케이션의 오프로드 처리를 요청함에 따라 메모리 장치에 접근하여 어플리케이션을 처리하는 컨트롤러 및, 호스트가 어플리케이션 처리에 사용되는 데이터를 메모리 장치의 타겟 영역에 저장함에 따라, 타겟 영역의 접근 권한을 컨트롤러가 갖도록 설정하고, 어플리케이션의 처리 상태에 따라 타겟 영역의 접근 권한을 컨트롤러 또는 호스트가 갖도록 설정하며, 컨트롤러에 구비되는 공유 메모리 관리부;를 포함하도록 구성될 수 있다.

Description

데이터 처리 시스템 및 그 동작 방법{Data Processing System and Operating Method Thereof}
본 발명은 컴퓨팅 장치에 관한 것으로, 보다 구체적으로는 데이터 처리 시스템 및 그 동작 방법에 관한 것이다.
인공지능 어플리케이션 및 빅데이터 분석에 대한 관심과 중요성이 높아지면서, 대용량의 데이터를 효율적으로 처리할 수 있는 컴퓨팅 시스템에 대한 요구가 증가하고 있다.
전통적인 컴퓨팅 시스템이 프로세서 중심 컴퓨팅에 집중하였다면, 최근의 컴퓨팅 시스템은 방대한 데이터를 고속으로 병렬 처리할 수 있는 데이터 중심 컴퓨팅, 또는 메모리 중심 컴퓨팅으로 진화하였다. 이에 따라 프로세서와 메모리 간의 데이터 병목 현상을 줄일 수 있어 연산 성능이 극대화되고 있다.
메모리 중심 컴퓨팅 장치에서는 연산을 수행하는 프로세서가 메모리 장치 내에 또는 메모리 장치에 근접하여 배치될 수 있다. 빅 데이터 처리를 위해 프로세서와 메모리 장치 간에 방대한 양의 데이터가 송수신되어야 하며, 송수신되는 데이터의 양은 데이터 처리 시스템의 소모 전력 및 연산 성능과 밀접한 관계가 있다.
본 기술의 실시예는 호스트 및 호스트로부터 특정 연산을 오프로드하여 처리하는 프로세서가 호스트 독립적으로 메모리 장치에 접근할 수 있는 데이터 처리 시스템 및 그 동작 방법을 제공할 수 있다.
본 기술의 일 실시예에 의한 데이터 처리 시스템은 메모리 장치; 호스트가 어플리케이션의 오프로드 처리를 요청함에 따라 상기 메모리 장치에 접근하여 상기 어플리케이션을 처리하는 컨트롤러; 및 상기 호스트가 상기 어플리케이션 처리에 사용되는 데이터를 상기 메모리 장치의 타겟 영역에 저장함에 따라, 상기 타겟 영역의 접근 권한을 상기 컨트롤러가 갖도록 설정하고, 상기 어플리케이션의 처리 상태에 따라 상기 타겟 영역의 접근 권한을 상기 컨트롤러 또는 상기 호스트가 갖도록 설정하며, 상기 컨트롤러에 구비되는 공유 메모리 관리부;를 포함하도록 구성될 수 있다.
본 기술의 일 실시예에 의한 데이터 처리 시스템의 동작 방법은 메모리 장치 및, 상기 메모리 장치를 제어하는 컨트롤러를 포함하는 데이터 처리 시스템의 동작 방법으로서, 상기 호스트가 상기 컨트롤러로 어플리케이션의 오프로드 처리를 요청하고, 상기 어플리케이션 처리에 사용되는 데이터를 상기 메모리 장치의 타겟 영역에 저장함에 따라, 상기 컨트롤러가 상기 타겟 영역의 접근 권한을 상기 컨트롤러가 갖도록 설정하는 단계; 및 상기 어플리케이션의 처리 상태에 따라, 상기 컨트롤러가 상기 타겟 영역의 접근 권한을 상기 컨트롤러 또는 상기 호스트가 갖도록 설정하는 단계;를 포함하도록 구성될 수 있다.
본 기술에 의하면, 메모리 장치 내(in-memory), 또는 메모리 장치와 근접한(near-memory) 곳에 구비된 프로세서가 호스트와 독립적으로 메모리 장치에 접근하여 연산을 수행할 수 있다.
이에 따라 메모리 장치 접근에 필요한 시간을 감소시켜 데이터 처리 시스템의 소모 전력을 줄이고 연산 성능을 향상시킬 수 있다.
데이터 처리 시스템 외부의 호스트와 내부의 연산 코어가 메모리 장치에 동시에 접근할 수 있도록 독립적인 메모리 인터페이스 및 독립적인 메모리 공간을 사용하므로 어느 하나의 장치가 메모리 장치를 점유함에 따른 성능 저하를 방지할 수 있다.
도 1은 일 실시예에 의한 데이터 처리 시스템을 포함하는 전자 장치의 구성도이다.
도 2는 일 실시예에 의한 데이터 처리 시스템을 포함하는 전자 장치의 구성도이다.
도 3은 일 실시예에 의한 메모리 모듈의 구성도이다.
도 4는 일 실시예에 의한 컨트롤러의 구성도이다.
도 5는 일 실시예에 의한 컨트롤러의 구성도이다.
도 6은 일 실시예에 의한 공유 메모리 관리부의 구성도이다.
도 7 및 도 8은 실시예들에 따른 데이터 처리 시스템의 동작 방법을 설명하기 위한 흐름도이다.
도 9 및 도 10은 실시예들에 따른 데이터 처리 시스템의 동작 방법을 설명하기 위한 개념도이다.
도 11 내지 도 13은 실시예들에 의한 적층형 반도체 장치의 구성도이다.
도 14는 일 실시예에 의한 네트워크 시스템의 구성도이다.
이하, 첨부된 도면을 참조하여 본 기술의 실시예를 보다 구체적으로 설명한다.
도 1은 일 실시예에 의한 데이터 처리 시스템을 포함하는 전자 장치의 구성도이다.
도 1을 참조하면, 전자 장치(1)는 호스트(10) 및 데이터 처리 시스템(100)을 포함할 수 있다.
전자 장치(1)는 개인용 컴퓨터, 서버 컴퓨터, 모바일 컴퓨팅 장치, 자동차의 전자 제어 장치 등 다양한 전자 장치일 수 있다.
전자 장치(1)는 슈퍼컴퓨터 또는 컴퓨터 클러스터를 사용하여 협력적인 방식으로 연산을 수행하는 고성능 컴퓨팅(High Performance Computing: HPC) 장치, 또는 개별적으로 데이터를 처리하는 네트워킹된 정보 처리 장치들 또는 서버들의 어레이를 포함할 수 있다.
호스트(10)는 미도시한 사용자 인터페이스를 통해 사용자에게 다양한 서비스를 제공할 수 있다. 이를 위해 호스트(10)는 데이터 처리 시스템(100)으로 데이터 처리와 관련된 요청과 어드레스, 그리고 필요한 경우 데이터를 전송하고, 그에 대한 처리 결과를 수신할 수 있다.
데이터 처리 시스템(100)은 호스트(10)의 요청 및 어드레스에 응답하여 대응하는 동작을 처리(연산)하고, 필요한 경우 처리 결과로 얻어진 데이터를 호스트(10)로 전송할 수 있다.
호스트(10)는 데이터 처리 시스템(100)으로 데이터 입출력을 요청하거나, 또는 데이터 입출력을 수반하는 어플리케이션을 오프로드하여 처리(실행)할 것을 요청할 수 있다. 어플리케이션의 오프로드 처리 요청시 호스트(10)는 데이터 처리 시스템(100)으로 동작 제어정보 및 초기 파라미터(또는 초기 파라미터가 저장된 메모리 영역의 주소)를 전송할 수 있다. 동작 제어정보는 데이터 처리 시스템(100)에서 실행할 어플리케이션 종류, 어플리케이션의 프로그램 코드 또는 프로그램 코드의 저장 주소를 포함할 수 있고, 초기 파라미터는 프로그램 코드를 실행시키기 위해 필요한 초기 데이터 또는 초기 데이터의 저장 주소를 포함할 수 있다.
데이터 처리 시스템(100)은 동작 제어정보 및 초기 파라미터에 응답하여 호스트의 요청을 처리할 수 있다. 여기에서, 오프로드란 호스트(10)의 연산을 다른 장치, 예를 들어 데이터 처리 시스템(100)으로 위임하는 것을 의미한다.
일 실시예에서, 호스트(10)는 데이터 처리 시스템(100)으로 신경망 어플리케이션, 다른 관점에서는 신경망 처리를 위한 연산을 오프로드하여 처리할 것을 요청할 수 있으나 이에 한정되는 것은 아니다. 호스트(10)가 데이터 처리 시스템(100)으로 신경망 어플리케이션을 위한 연산 처리를 요청하는 경우 초기 파라미터는 초기 데이터 및 초기 가중치를 포함할 수 있다.
데이터 처리 시스템(100)은 메모리 장치(200) 및 컨트롤러(300)를 포함할 수 있다.
호스트(10)는 데이터 처리 시스템(100)으로 특정 어플리케이션의 오프로드 처리를 요청하기 위해 컨트롤러(300)로 동작 제어정보를 전송하는 한편, 메모리 장치(200)로 초기 파라미터를 전송하여 저장할 수 있다.
메모리 장치(200)는 컨트롤러(300)의 제어에 따라 데이터를 저장하거나 저장된 데이터를 출력할 수 있다. 메모리 장치(200)는 복수의 메모리 모듈(200-1~200-l)을 포함할 수 있고, 페이지(바이트) 단위로 접근 가능하게 구성될 수 있다. 즉, 컨트롤러(300)는 메모리 장치(200)에 페이지 단위로 접근할 수 있다.
메모리 모듈(200-1~200-l)은 휘발성 메모리 모듈을 포함할 수 있고, 이에 더하여 비휘발성 메모리 모듈을 더 포함할 수 있다. 메모리 모듈은 워드라인(로우라인) 및 비트라인(컬럼라인, 스트링) 간에 접속되는 복수의 메모리 셀을 포함하며, 예를 들어 하나의 워드라인에 접속되는 메모리 셀들이 하나의 페이지를 이룰 수 있다.
휘발성 메모리 모듈은 예를 들어 DRAM(Dynamic Random Access Memory) 및/또는 SRAM(Static Random Access Memory)을 포함하도록 구성될 수 있다. 비휘발성 메모리 모듈은 예를 들어 EEPROM(Electrically Erasable and Programmable ROM), 낸드(NAND) 플래시 메모리, 노어(NOR) 플래시 메모리, PRAM(Phase-Change RAM), ReRAM(Resistive RAM) FRAM(Ferroelectric RAM), STT-MRAM(Spin Torque Transfer Magnetic RAM)중 적어도 하나를 포함하도록 구성될 수 있다.
일 실시예에서, 메모리 모듈(200-1~200-l) 각각은 인쇄회로 기판과 같은 모듈 보드 상에 장착된 다수의 메모리 칩들을 포함하는 SIMM(single in-line memory module) 또는 DIMM(dual inline memory module) 형태의 메모리 모듈 또는, 고 대역폭 메모리(high bandwidth memory, HBM)일 수 있다. HBM 모듈은 인터포저(Interposer) 상에 장착된 복수의 HBM들 및 적어도 하나의 하드웨어 가속기를 포함할 수 있다. 일 실시예에서, 메모리 모듈(200-1~200-l)은 모듈 보드 상에 컨트롤러(300)를 포함하는 형태로, 또는 HBM 모듈의 경우 베이스 다이에 컨트롤러(300)를 포함하는 형태로 구성될 수 있다.
컨트롤러(300)는 호스트(10)로부터 제공되는 동작 제어정보에 따라, 어플리케이션 프로그램 코드 저장 주소에 대응하는 메모리 영역으로부터 프로그램 코드를 읽어와 내부 메모리에 로딩하는 한편, 메모리 장치(200)로부터 초기 파라미터를 리드하고 내부 메모리에 로딩하여 프로그램 코드를 실행, 즉 연산할 수 있다. 어플리케이션 프로그램 코드는 호스트(10)의 메모리 또는 메모리 장치(200)의 비휘발성 메모리 모듈에 저장될 수 있다. 어플리케이션의 프로그램 코드를 실행함에 따라 생성된 데이터들은 메모리 장치(200)에 저장되고 호스트(10)로 제공될 수 있다. 예를 들어, 프로그램 코드를 실행하여 생성된 데이터들은 휘발성 메모리 모듈에 임시 저장된 후, 필요에 따라 비휘발성 메모리 모듈에 저장될 수 있다.
일 실시예에서, 호스트(10)는 데이터 처리 시스템(100)으로 기계학습이나 인공지능 어플리케이션, 예를 들어 신경망 연산을 오프로드하여 처리할 것을 요청할 수 있다.
본 기술의 일 실시예에서, 컨트롤러(300)는 호스트 인터페이스(303) 및 메모리 인터페이스(307)를 포함할 수 있다. 컨트롤러(300)는 메모리 장치(200)에 근접하게 배치되어 메모리 인터페이스(307)를 통해 메모리 장치(200)에 접근할 수 있다. 도 1에 도시한 데이터 처리 시스템(100)은 메모리 근접 프로세서(Processor Near Memory; PNM)라 지칭될 수 있다.
일 실시예에서, 컨트롤러(300)는 호스트(10)가 특정 어플리케이션의 프로그램 코드 및 초기 파라미터를 메모리 장치(200)에 저장하여 해당 어플리케이션을 오프로드하여 처리할 것을 요청함에 따라, 프로그램 코드가 저장된 메모리 장치(200)의 제 1 영역 및 초기 파라미터가 저장된 메모리 장치(200)의 제 2 영역에 대한 접근 권한을 컨트롤러(300)가 소유하도록 설정할 수 있다. 컨트롤러(300)는 어플리케이션 처리 결과에 따라 생성된 데이터를 메모리 장치(200)의 제 2 영역에 저장하는 한편, 제 2 영역에 대한 접근 권한을 호스트(10)가 갖도록 변경할 수 있다.
호스트가 처리 요청한 어플리케이션의 실행이 종료될 때까지 호스트(10)가 처리 대상 데이터를 메모리 장치(200)의 특정 영역에 저장함에 따라, 컨트롤러(300)가 데이터 저장 영역에 대한 접근 권한을 변경하여 어플리케이션을 처리하고, 접근 권한을 다시 호스트(10)로 이양하는 등의 과정이 반복될 수 있다.
일 실시예에서, 호스트(10)가 처리 요청한 어플리케이션을 처리하는 동안 컨트롤러(300)가 지속적으로 사용하여야 하는 제 1 데이터, 예를 들어 프로그램 코드가 저장된 메모리 영역은 해당 어플리케이션의 처리가 종료될 때까지 컨트롤러(300)에 의해서만 접근되도록 접근 권한을 설정할 수 있다.
한편, 호스트(10)가 처리 요청한 어플리케이션을 처리하는 동안 연산되는 제 2 데이터(연산 데이터)가 저장된 메모리 영역은 연산이 수행되는 동안은 컨트롤러(300)가 접근 권한을 갖도록, 연산이 종료된 후에는 호스트(10)가 접근 권한을 갖도록 설정할 수 있다.
이와 같이, 연산에 필요한 데이터가 저장된 영역에 컨트롤러(300)가 독점적으로 접근하여 어플리케이션을 처리하고, 처리 결과로 생성된 데이터는 호스트(10)가 접근 가능하도록 할 수 있다. 따라서, 호스트(10)와 메모리 장치(200) 간에 송수신되는 데이터의 양이 최소화되어 전자 장치(1)의 동작 속도가 향상될 수 있다.
일 실시예에서, 컨트롤러(300)는 메모리 영역의 어드레스별 접근 권한 정보를 모드 설정 커맨드에 포함시켜 메모리 장치(200)로 전송할 수 있고, 이에 응답하여 메모리 장치(200)는 모드 레지스터 셋(Mode Register Set; MRS)을 설정할 수 있다. 일 실시예에서, 메모리 장치(200)는 뱅크로 구분되는 영역을 가질 수 있고, 컨트롤러(300)는 뱅크별 접근 권한 정보를 MRS 커맨드의 형태로 메모리 장치(200)에 전송할 수 있다.
메모리 영역별 접근 권한 정보는 MRS를 통해 설정하는 것에 한정되지 않으며, 메일박스 등 다양한 방식을 이용할 수 있다.
메모리 장치(200)에 영역별 접근 권한 정보가 설정됨에 따라, 메모리 장치(200)는 특정 메모리 영역(뱅크)을 접근하려는 주체가 설정값과 동일한 경우에만 접근을 허용할 수 있다. 특정 메모리 영역(뱅크)에 접근하여는 주체가 설정값과 상이한 경우에는 에러 정보를 생성하고 컨트롤러(300)를 통해 호스트(10)로 전송하여 디버깅에 이용하도록 할 수 있다.
도 2는 일 실시예에 의한 데이터 처리 시스템을 포함하는 전자 장치의 구성도이다.
도 2에 도시한 전자 장치(11)는 호스트(110) 및 데이터 처리 시스템(101)을 포함할 수 있다.
데이터 처리 시스템(101)은 복수의 메모리 모듈(200-1~200-L)을 포함하는 메모리 장치(1011) 및 컨트롤러(1013)를 포함할 수 있다.
도 1에 도시한 데이터 처리 시스템(100)과 비교하여, 도 2의 데이터 처리 시스템(101)는 컨트롤러(1013)가 메모리 장치(1011) 내에 구비되도록 단일 패키지로 구성될 수 있으며, 메모리 내 프로세서(Processor In Memory; PIM)이라 지칭될 수 있다. 단일 패키지란 집적 회로 장치들, 즉 컨트롤러(1013)와 메모리 장치(1011)를 하나의 패키지 내에 탑재한 것을 의미한다.
도 3은 일 실시예에 의한 메모리 모듈의 구성도이다.
메모리 모듈(200-1~200-L)은 복수의 메모리 뱅크(201)를 포함할 수 있다.
도 3을 참조하면, 메모리 뱅크(201)는 데이터가 저장되는 메모리 셀 어레이(2011), 메모리 셀 어레이(2011)의 프로그램, 리드, 리프레쉬 등의 내부 동작을 제어하는 주변 회로들(2013~2023)을 포함할 수 있다. 주변 회로들(2013~2023)은 제어 로직(2013), 전압 생성부(2015), 어드레스 처리 회로(2017), 로우 디코더(2019), 컬럼 디코더(2021) 및 입출력 회로(2023)를 포함할 수 있다.
메모리 셀 어레이(2011)는 복수의 메모리 셀들, 예를 들어 DRAM 셀들을 포함할 수 있다.
제어 로직(2013)은 입출력 회로(2023)로부터 수신받은 커맨드(CMD)에 응답하여 동작 코드(OP)를 출력할 수 있다. 제어 로직(2013)은 프로그램, 리드, 리프레쉬 동작에 필요한 전압들을 생성하기 위한 동작 코드(OP)를 출력할 수 있다.
전압 생성부(2015)는 동작 코드(OP)에 응답하여 프로그램, 리드, 리프레쉬 동작에 필요한 동작 전압들(Vop)을 생성하고, 생성된 동작 전압들(Vop)을 출력할 수 있다.
어드레스 처리 회로(2017)는 입출력 회로(2023)로부터 수신한 어드레스(ADD)를 로우 어드레스(RADD)과 컬럼 어드레스(CADD)로 구분하고 출력할 수 있다.
로우 디코더(2019)는 로우 어드레스(RADD)에 응답하여 동작 전압들(Vop)을 메모리 셀 어레이(2011)에 전달할 수 있다.
컬럼 디코더(2021)는 컬럼 어드레스(CADD)에 응답하여 입출력 회로(2023)로부터 수신한 데이터(DATA)를 메모리 셀 어레이(2011)에 전달하거나 메모리 셀 어레이(2011)로부터 리드된 데이터(DATA)를 입출력 회로(70)로 전달할 수 있다.
입출력 회로(2023)는 컨트롤러(300, 1013)로부터 커맨드(CMD), 어드레스(ADD) 및 데이터(DATA)를 수신받을 수 있다. 입출력 회로(2023)는 컨트롤러(300, 1013)로부터 수신받은 커맨드(CMD)는 제어 로직(2013)으로, 어드레스(ADD)는 어드레스 처리 회로(2017)로, 데이터(DATA)를 수신받고, 수신받은 데이터(DATA)를 컬럼 디코더(2021)로 전송하고, 컬럼 디코더(2021)로부터 수신받은 데이터(DATA)를 컨트롤러(300, 1013)로 전송할 수 있다.
도 4는 일 실시예에 의한 컨트롤러의 구성도로서, 도 1에 도시한 컨트롤러(300)의 일 예시도이다.
도 4를 참조하면, 일 실시예에 의한 컨트롤러(300)는 공유 메모리 관리부(301), 호스트 인터페이스(303), ROM(3051), RAM(3053), 메모리 인터페이스(307) 및 연산 코어(309)를 포함할 수 있다.
공유 메모리 관리부(301)는 메모리 장치(200)의 동작 전반을 제어할 수 있고, 호스트(10)가 전송하는 명령에 응답하여 호스트(10)가 요청한 연산을 처리하도록 연산 코어(309)를 제어할 수 있다.
호스트 인터페이스(303)는 호스트(10)와 데이터 처리 시스템(100) 간의 인터페이스를 제공할 수 있다. 호스트 인터페이스(303)는 호스트(10)로부터 제공되는 커맨드 및 데이터를 공유 메모리 관리부(301)를 통해 연산 코어(309)로 제공할 수 있다. 호스트 인터페이스(303)는 공유 메모리 관리부(301)의 제어에 따라 호스트(10)와 메모리 장치(200) 간에 데이터가 송수신되도록 할 수 있다.
ROM(3051)은 컨트롤러(300)의 동작에 필요한 프로그램 코드, 예를 들어 펌웨어 또는 소프트웨어가 저장되고, 프로그램 코드들이 이용하는 코드 데이터 등이 저장될 수 있다.
RAM(3053)은 컨트롤러(300)의 동작에 필요한 데이터 또는 컨트롤러(300)에 의해 생성된 데이터를 저장할 수 있다.
메모리 인터페이스(307)는 호스트(10)가 도 5는 일 실시예에 의한 컨트롤러의 구성도이다.
제 1 및 제 2 메모리 인터페이스(3071, 3073)는 컨트롤러(300)와 메모리 장치(200)를 연결하는 물리적인 통신 채널일 수 있다.
일 실시예에서, 연산 코어(309)는 전자 장치(1)에서 실행되는 특화된 어플리케이션을 위한 연산을 수행할 수 있다. 일 실시예에서, 전자 장치(1)는 높은 대역폭을 요구하는 기계학습 어플리케이션, 또는 인공지능 어플리케이션을 실행할 수 있고 연산 코어(309)는 기계학습이나 인공지능 어플리케이션에 특화된 논리 함수를 실행하는 하드웨어 가속기일 수 있다.
연산 코어(309)는 호스트(10)가 요청한 연산을 처리하기 위하여 호스트(10) 또는 메모리 장치(200)로부터 제공되는 데이터를 이용할 수 있다.
호스트(10)는 데이터 처리 시스템(100)으로 특정 어플리케이션에 대한 연산 처리를 컨트롤러(300)의 연산 코어(309)에서 오프로드하여 처리하도록 명령할 수 있고, 공유 메모리 관리부(301)는 호스트(10)의 오프로드 명령을 추출하고 복호화하여 연산 코어(309)를 제어할 수 있다.
연산 코어(309)는 공유 메모리 관리부(301)로부터 출력된 명령에 응답하여 메모리 장치(200)에 로딩된 프로그램 코드 및 초기 파라미터에 따라 연산을 수행할 수 있다. 연산 코어(309)의 처리 결과로 생성된 데이터는 메모리 장치(200)의 특정 영역에 저장되고 호스트(10)로 전송될 수 있다.
일 실시예에서, 연산 코어(309)는 산술논리장치(Arithmetic Logic Unit; ALU), 부동소수점장치(Floating-Point Unit; FPU)를 포함할 수 있다. 가속기(309)는 FPGA(Field-programmable gate array), MPPA(Massively parallel processor array), GPU(Graphics processing unit), ASIC(Application-Specific Integrated Circuit), NPU(Neural processing unit), TPU(Tensor Processing Unit) 및 MPSoC(Multi-Processor System-on-Chip) 등의 다양한 종류의 가속기 중에서 선택될 수 있다.
일 실시예에서, 호스트(10)가 특정 어플리케이션의 프로그램 코드 및 초기 파라미터를 메모리 장치(200)에 저장하고 해당 어플리케이션을 오프로드하여 처리할 것을 요청함에 따라, 공유 메모리 관리부(301)는 프로그램 코드가 저장된 메모리 장치(200)의 제 1 영역 및 초기 파라미터가 저장된 메모리 장치(200)의 제 2 영역에 대한 접근 권한을 컨트롤러(300)가 소유하도록 설정할 수 있다. 공유 메모리 관리부(309)는 제 2 영역에 저장된 데이터를 이용한 연산 결과를 메모리 장치(200)의 제 2 영역에 저장하는 한편, 제 2 영역에 대한 접근 권한을 호스트(10)가 갖도록 변경할 수 있다.
호스트(10)가 처리 요청한 어플리케이션의 실행이 종료될 때까지 호스트(10)가 처리 대상 데이터를 메모리 장치(200)의 특정 영역에 저장하고, 컨트롤러(300)가 데이터 저장 영역에 대한 접근 권한을 변경하여 어플리케이션을 처리하고, 접근 권한을 다시 호스트(10)로 이양하는 등의 과정이 반복될 수 있다.
도 5는 일 실시예에 의한 컨트롤러의 구성도로서, 도 2에 도시한 컨트롤러(1013)의 일 예시도이다.
도 5에 도시한 컨트롤러(1013)는 메모리 장치(1011) 내에서 호스트(110)가 요청한 어플리케이션을 실행하도록 구성될 수 있다.
도 5를 참조하면, 컨트롤러(1013)는 메모리 장치(1011)와 제 1 버스(315) 및 제 2 버스(317)를 통해 접속될 수 있다. 제 1 버스(315)는 호스트(110)가 메모리 장치(1011)에 접근할 수 있는 경로이고, 제 2 버스(317)는 공유 메모리 관리부(301)가 메모리 장치(1011)에 전근할 수 있는 경로로 작용할 수 있다.
도 6은 일 실시예에 의한 공유 메모리 관리부의 구성도이다.
도 6을 참조하면, 공유 메모리 관리부(301)는 커맨드 해석부(3011), 모니터링부(3013), 권한 설정부(3015) 및 어드레스 맵퍼(3017)를 포함할 수 있다.
커맨드 해석부(3011)는 호스트(10, 110)의 오프로드 명령을 추출하고 복호화하여 연산 코어309)를 제어할 수 있다.
모니터링부(3013)는 호스트(10, 110)의 데이터가 저장되는 메모리 영역의 어드레스를 추출할 수 있다. 아울러, 메모리 장치(200, 1011)에 저장된 데이터를 이용한 연산 완료 여부를 감시할 수 있다.
권한 설정부(3015)는 호스트(10, 110)가 오프로드 처리 요청한 어플리케이션 관련 데이터가 저장된 메모리 영역의 권한을 변경할 수 있다.
일 실시예에서, 권한 설정부(3015)는 호스트(10, 110)가 처리 요청한 어플리케이션을 처리하는 동안 컨트롤러(300, 1013)가 지속적으로 사용하여야 하는 제 1 데이터, 예를 들어 프로그램 코드가 저장된 메모리 영역은 해당 어플리케이션의 처리가 종료될 때까지 컨트롤러(300, 1013)에 의해서만 접근되도록 접근 권한을 설정할 수 있다.
한편, 호스트(10, 110)가 처리 요청한 어플리케이션을 처리하는 동안 연산되는 제 2 데이터가 저장된 메모리 영역은 연산이 수행되는 동안은 컨트롤러(300, 1013)가 접근 권한을 갖도록, 연산이 종료된 후에는 호스트(10, 110)가 접근 권한을 갖도록 설정할 수 있다.
호스트(10, 110) 및 컨트롤러(300, 1013)가 메모리 장치(200, 1011)의 물리 어드레스를 그대로 사용하여 메모리 장치(200, 1011)에 접근하거나, 호스트(10, 110)나 컨트롤러(300, 1013)에서 부여하는 논리 어드레스를 사용하여 메모리 장치(200, 1011)에 접근할 수 있다.
어드레스 맵퍼(3017)는 컨트롤러(300, 1013)가 논리 어드레스를 사용하여 메모리 장치(200, 1011)에 접근하는 경우, 컨트롤러(300, 1013)로 접근 권한을 이양한 메모리 영역의 물리 어드레스와, 컨트롤러(300, 103)가 메모리 장치(200, 1011)를 접근하는 데 사용하는 논리 어드레스 간의 맵핑 정보를 저장할 수 있다.
일 실시예에서, 어드레스 맵퍼(3017)는 호스트(10, 110)가 전송한 데이터가 저장된 메모리 영역 각각에 대해, 데이터가 저장된 순서에 따라 논리 주소를 초기값(예를 들어 0번지)부터 오름차순으로 할당하여 물리 주소와 맵핑시킬 수 있으나 이에 한정되는 것은 아니다.
일 실시예에 의한 공유 메모리 관리부(301)에 의하면, 상기 호스트(10, 110)가 어플리케이션 처리에 필요한 데이터를 상기 메모리 장치(200, 1011)의 특정 영역에 저장함에 따라, 데이터 저장 영역의 접근 권한을 컨트롤러(300, 1013)가 소유하도록 하고, 어플리케이션의 처리 상태에 따라 데이터 저장 영역의 접근 권한을 컨트롤러(300, 1013) 또는 호스트(10, 110)가 갖도록 설정할 수 있다.
도 7 및 도 8은 실시예들에 따른 데이터 처리 시스템의 동작 방법을 설명하기 위한 흐름도이다.
도 7을 참조하면, 전자 장치(1, 11)에 전원이 인가되어 부팅되면(S101), 메모리 장치(200, 1011)의 모든 영역에 대한 접근 권한은 호스트(10, 110)에게 부여될 수 있다.
호스트(10, 110)가 데이터 처리 시스템(100, 101)으로 특정 어플리케이션의 오프로드 처리를 요청하고, 이를 위한 데이터를 전송함에 따라(S103), 컨트롤러(300, 101)는 호스트(10, 110)가 데이터를 저장한 메모리 영역의 접근 권한을 컨트롤러(300, 1013)가 소유하도록 설정할 수 있다(S105). 일 실시예에서, 호스트(10, 110)가 전송하는 데이터는 메모리 장치(200, 1011)의 제 1 영역에 저장되는 프로그램 코드 및 메모리 장치(200, 1011)의 제 2 영역에 저장되고 프로그램 코드에 의해 연산되는 제 2 데이터를 포함할 수 있다. 접근 권한 설정시(S105) 컨트롤러(300, 1013)는 제 1 영역 및 제 2 영역의 접근 권한을 컨트롤러(300, 1013)로 이양할 수 있다.
컨트롤러(300, 1013)는 제 1 영역에 저장된 프로그램 코드를 이용하여 제 2 영역에 저장된 데이터를 연산하고(S107), 연산이 완료되면 제 2 영역에 대한 접근 권한을 호스트(10, 110)가 갖도록 변경하고 연산이 완료되었음을 호스트(10, 110)로 보고할 수 있다(S109).
호스트(10, 110)는 오프로드 처리 요청할 추가 작업이 존재하는지 확인하여(S111), 추가 작업이 존재하는 경우(S111:Y) 추가 작업을 처리하기 위한 데이터를 전송하고(S103), 이후의 과정이 수행될 수 있다.
추가 작업이 존재하지 않는 경우(S111:N)에는 메모리 장치(200, 1011)의 모든 영역에 대한 접근 권한을 호스트(10, 110)가 갖도록 변경할 수 있다(S113).
도 8을 참조하면, 전자 장치(1, 11)에 전원이 인가되어 부팅되면(S200), 메모리 장치(200, 1011)의 모든 영역에 대한 접근 권한은 호스트(10, 110)에게 부여될 수 있다.
호스트(10, 110)가 데이터 처리 시스템(100, 101)으로 특정 어플리케이션의 오프로드 처리를 요청하고, 이를 위한 제 1 데이터를 전송함에 따라(S201), 컨트롤러(300, 1013)는 호스트(10, 110)가 제 1 데이터를 저장한 메모리 영역의 접근 권한을 컨트롤러(300, 1013)가 소유하도록 설정할 수 있다(S203). 일 실시예에서, 제 1 데이터는 오프로드 처리 요청된 어플리케이션의 처리시 지속적으로 사용되는 데이터, 예를 들어 메모리 장치(200, 1011)의 제 1 영역에 저장되는 프로그램 코드를 포함할 수 있다.
호스트(10, 110)가 제 2 데이터를 전송함에 따라(S205), 컨트롤러(300, 1013)는 호스트(10, 110)가 제 2 데이터를 저장한 메모리 영역의 접근 권한을 컨트롤러(300, 1013)가 소유하도록 설정할 수 있다(S207). 일 실시예에서, 제 2 데이터는 메모리 장치(200, 1011)의 제 2 영역에 저장되고 프로그램 코드에 의해 연산되는 데이터를 포함할 수 있다. 제 2 영역에 저장된 데이터는 연산이 진행됨에 따라 중간 연산 결과 및 최종 연산 결과로 업데이트될 수 있다.
컨트롤러(300, 1013)는 제 1 영역에 저장된 프로그램 코드를 이용하여 제 2 영역에 저장된 데이터를 연산하고(S209), 연산이 완료되면 호스트(10, 110)로 보고하는 한편, 제 2 영역에 대한 접근 권한을 호스트(10, 110)가 갖도록 변경할 수 있다(S211).
호스트(10, 110)는 연산에 필요한 데이터가 제 2 영역의 크기를 초과하여 메모리 장치(200, 1011)로 전송할 추가 데이터가 존재하는지 확인하여(S213), 추가 데이터가 존재하는 경우에는 제 3 데이터를 메모리 장치(200, 1011)의 제 3 영역에 저장할 수 있다(S215). 컨트롤러(300, 1013)는 제 2 영역에 저장된 제 2 데이터에 대한 연산이 완료되면 제 3 영역의 접근 권한을 컨트롤러(300, 1013)가 갖도록 변경하고(S217) 제 3 데이터에 대한 연산을 수행하는 단계(S209)로 진행할 수 있다.
추가 데이터가 존재하지 않는 경우(S213:N)에는 제 1 데이터인 프로그램 데이터에 의해 처리할 추가 작업이 존재하는지 확인할 수 있다(S219).
추가 작업이 존재하는 경우(S219:Y)에는 단계 S205)로 진행하여 추가 작업을 처리하기 위한 데이터를 전송하고, 이후의 과정을 수행할 수 있다. 추가 작업이 존재하지 않는 경우(S219:N)에는 메모리 장치(200, 1011)의 모든 영역에 대한 접근 권한을 호스트(10, 110)가 갖도록 변경할 수 있다(S221).
도 9 및 도 10은 실시예들에 따른 데이터 처리 시스템의 동작 방법을 설명하기 위한 개념도이다.
도 9는 컨트롤러(300, 1013)가 메모리 장치(200, 1011)의 물리 어드레스를 그대로 사용하여 메모리 장치(200, 1011)에 접근하는 경우의 권한 설정 방법을 나타낸다.
(a)에 도시한 것과 같이, 전자 장치(1, 11)에 전원이 인가되어 부팅되면, 메모리 장치(200, 1011)의 모든 영역에 대한 접근 권한은 호스트(10, 110)에게 부여될 수 있다.
(b)에 도시한 것과 같이, 호스트(10, 110)가 데이터 처리 시스템(100, 101)으로 특정 어플리케이션의 오프로드 처리를 요청하고, 이를 위한 프로그램 코드를 메모리 장치(200, 1011)의 제 1 영역(뱅크 7, 8)에 저장할 수 있다. 이에 따라 컨트롤러(300, 101)는 뱅크 7 및 8에 대한 접근 권한을 컨트롤러(300, 1013)가 소유하도록 설정할 수 있다.
(c)에 도시한 것과 같이, 호스트(10, 110)가 프로그램 코드에 의해 연산할 제 2 데이터를 제 2 영역(뱅크 5, 6)에 저장함에 따라, 컨트롤러(300, 1013)는 뱅크 5 및 6에 대한 접근 권한을 컨트롤러(300, 1013)가 소유하도록 설정할 수 있다. 아울러, 호스트(10, 110)는 다음 연산을 위한 데이터를 제 3 영역(뱅크 3, 4)에 준비해둘 수 있다.
(d)에 도시한 것과 같이, 뱅크 5 및 6에 저장된 제 2 데이터에 대한 연산이 완료되면, 컨트롤러(300, 1013)는 뱅크 5 및 6에 대한 접근 권한을 호스트(10, 110)가 갖도록 변경하고 뱅크 3 및 4에 대한 접근 권한을 컨트롤러(300, 1013)가 소유하도록 설정하고 연산할 수 있다.
도 10은 컨트롤러(300, 1013)가 메모리 장치(200, 1011)의 물리 어드레스에 논리 어드레스를 맵핑시켜 메모리 장치(200, 1011)에 접근하는 경우의 권한 설정 방법을 나타낸다.
(a)에 도시한 것과 같이, 전자 장치(1, 11)에 전원이 인가되어 부팅되면, 메모리 장치(200, 1011)의 모든 영역에 대한 접근 권한은 호스트(10, 110)에게 부여될 수 있다.
(b)에 도시한 것과 같이, 호스트(10, 110)가 데이터 처리 시스템(100, 101)으로 특정 어플리케이션의 오프로드 처리를 요청하고, 이를 위한 프로그램 코드를 메모리 장치(200, 1011)의 제 1 영역(뱅크 7, 8)에 저장할 수 있다. 이에 따라 컨트롤러(300, 101)는 물리 뱅크 7 및 8에 논리 주소 1 및 2를 맵핑시키고 논리 뱅크 1 및 2에 대한 접근 권한을 컨트롤러(300, 1013)가 소유하도록 설정할 수 있다.
(c)에 도시한 것과 같이, 호스트(10, 110)가 프로그램 코드에 의해 연산할 제 2 데이터를 제 2 영역(뱅크 5, 6)에 저장함에 따라, 컨트롤러(300, 1013)는 물리 뱅크 5 및 6에 논리 주소 3 및 4를 맵핑시키고 논리 뱅크 3 및 4에 대한 접근 권한을 컨트롤러(300, 1013)가 소유하도록 설정할 수 있다. 아울러, 호스트(10, 110)는 다음 연산을 위한 데이터를 제 3 영역(물리 뱅크 3, 4)에 준비해둘 수 있다.
(d)에 도시한 것과 같이, 논리 뱅크 3 및 4에 저장된 제 2 데이터에 대한 연산이 완료되면, 컨트롤러(300, 1013)는 물리 뱅크 3 및 4 에 논리 주소 3 및 4를 맵핑시키고 논리 뱅크 3 및 4에 대한 접근 권한을 컨트롤러(300, 1013)가 소유하도록 설정하고 연산할 수 있다.
모든 데이터에 대한 연산이 완료되면 모든 메모리 영역의 접근 권한을 호스트(10, 110)가 갖도록 설정할 수 있다.
컨트롤러(300, 1013)가 논리 주소를 이용하여 메모리 장치(200, 1011)에 접근하는 경우 컨트롤러(300, 1013)가 동일한 논리 영역에 계속 접근하여 연산하도록 제어할 수 있어 메모리 영역별 접근 권한을 변경하는 빈도를 대폭 감소시킬 수 있다.
도 11 내지 도 13은 실시예들에 의한 적층형 반도체 장치의 구성도이다.
도 11은 일 실시예에 의한 적층형 반도체 장치의 구성도이다.
일 실시예에 의한 적층형 반도체 장치(40)는 복수의 다이가 적층된 적층 구조체(410)를 포함할 수 있다. 적층 구조체(410)는 복수의 다이를 적층하고, 관통 전극(TSV, Through Silicon Via)을 통해 전기적으로 연결시킴으로써 입/출력 유닛의 수를 늘려 대역폭(Bandwidth)을 증가시킨 HBM(High Bandwidth Memory) 형태로 구성될 수 있다.
적층 구조체(410)는 베이스 다이(Base Die)(414) 및 복수의 코어 다이(Core Die)(412)를 포함할 수 있다.
복수의 코어 다이(412)는 베이스 다이(414) 상에 적층될 수 있으며, 관통 전극(TSV)을 통해 서로 연결될 수 있다. 코어 다이(412) 각각에는 데이터를 저장하기 위한 메모리 셀들 및 메모리 셀의 코어 동작을 위한 회로들이 배치될 수 있다.
코어 다이(412)는 관통전극(TSV)을 통해 베이스 다이(414)와 전기적으로 접속되어, 관통전극(TSV)을 통해 베이스 다이(414)로부터 신호 및 전원 등을 제공받을 수 있다.
베이스 다이(414)는 예를 들어 도 4 또는 도 5에 도시한 것과 같은 컨트롤러(300, 1013)를 포함할 수 있다. 베이스 다이(414)는 적층형 반도체 장치(40) 내의 다양한 기능, 예를 들어, 메모리 셀들의 부분적 활성화를 통한 전력 관리 기능 혹은 코어 다이(412)와 베이스 다이(414) 간의 타이밍조절 기능들을 수행할 수 있다.
베이스 다이(414)에 구비되는 물리 영역(PHY)은 어드레스, 명령어, 데이터, 제어신호 등의 입출력 영역일 수 있다. 물리 영역(PHY)에는 적층형 반도체 장치(40)에 요구되는 데이터 처리 속도를 만족시킬 수 있는 수만큼의 입출력 회로부가 구비될 수 있다. 그리고 베이스 다이(414)의 배면 중 물리 영역(PHY) 부분에는 입출력 동작시 필요한 신호 및 전원을 공급받을 수 있도록 복수의 입출력 단자와 전원공급 단자가 구비될 수 있다.
도 12는 일 실시예에 의한 적층형 반도체 장치의 구성도이다.
도 12를 참조하면, 적층형 반도체 장치(400)는 복수의 코어 다이(412)와 베이스 다이(414)의 적층 구조체(410), 메모리 호스트(420) 및 인터페이스 기판(430)을 포함할 수 있다. 호스트(420)는 CPU, 또는 GPU, 또는 ASIC(Application Specific Integrated Circuit), 또는 FPGA(Field Programmable Gate Arrays) 등이 될 수 있다.
베이스 다이(414)는 코어 다이(412)와 호스트(420) 간의 인터페이스를 위한 회로가 실장될 수 있다. 적층 구조체(410)는 도 11을 참조하여 설명한 것과 유사한 구조를 가질 수 있다.
적층 구조체(410)와 호스트(420)는 인터페이스 기판(430)을 통해 각각의 물리 영역(PHY)이 연결될 수 있다. 인터페이스 기판(430)은 인터포저(Interposer)가 지칭될 수 있다.
도 13은 일 실시예에 의한 적층형 반도체 장치의 구성도이다.
도 13에 도시한 적층형 반도체 장치(4000)는 도 12에 도시한 적층형 반도체 장치(40)를 패키지 기판(440) 상에 배치한 것으로 이해할 수 있다.
패키지 기판(440)과 인터페이스 기판(430)은 접속단자를 통해 전기적으로 접속될 수 있다.
인터페이스 기판(430) 상에 도 11에 도시한 것과 같은 적층 구조체(410) 및 호스트(420)를 적층하고, 이를 패키지 기판(440)에 장착한 후 패키징함으로써 시스템 인 패키지(System In Package; SiP) 타입의 반도체 장치를 구현할 수 있다.
도 14는 일 실시예에 의한 네트워크 시스템의 구성도이다.
도 14를 참조하면, 네트워크 시스템(5000)은 네트워크(5500)를 통해서 연결된 서버 시스템(5300) 및 복수의 클라이언트 시스템들(5410~5430)을 포함할 수 있다.
서버 시스템(5300)은 복수의 클라이언트 시스템들(5410~5430)의 요청에 응답하여 데이터를 서비스할 수 있다. 예를 들면, 서버 시스템(5300)은 복수의 클라이언트 시스템들(5410~5430)로부터 제공된 데이터를 저장할 수 있다. 다른 예로서, 서버 시스템(5300)은 복수의 클라이언트 시스템들(5410~5430)로 데이터를 제공할 수 있다.
서버 시스템(5300)은 호스트 장치(5100) 및 메모리 시스템(5200)을 포함할 수 있다. 메모리 시스템(5200)은 도 1 내지 도 6에 도시한 데이터 처리 시스템으로 구성될 수 있다.
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
1, 11 : 전자 장치
10, 110 : 호스트
100, 101 : 데이터 처리 시스템
200, 1011 : 메모리 장치
300, 1013 : 컨트롤러

Claims (16)

  1. 메모리 장치;
    호스트가 어플리케이션의 오프로드 처리를 요청함에 따라 상기 메모리 장치에 접근하여 상기 어플리케이션을 처리하는 컨트롤러; 및
    상기 호스트가 상기 어플리케이션 처리에 사용되는 데이터를 상기 메모리 장치의 타겟 영역에 저장함에 따라,
    상기 타겟 영역의 접근 권한을 상기 컨트롤러가 갖도록 설정하고, 상기 어플리케이션의 처리 상태에 따라 상기 타겟 영역의 접근 권한을 상기 컨트롤러 또는 상기 호스트가 갖도록 설정하며, 상기 컨트롤러에 구비되는 공유 메모리 관리부;
    를 포함하도록 구성되는 데이터 처리 시스템.
  2. 제 1 항에 있어서,
    상기 데이터는, 상기 어플리케이션의 프로그램 코드를 포함하여 상기 메모리 장치의 제 1 영역에 저장되는 제 1 데이터; 및
    상기 프로그램 코드에 의해 연산되며 상기 메모리 장치의 제 2 영역에 저장되는 제 2 데이터를 포함하도록 구성되는 데이터 처리 시스템.
  3. 제 2 항에 있어서,
    상기 공유 메모리 관리부는,
    상기 어플리케이션의 실행 종료시까지 상기 제 1 영역의 접근 권한을 상기 컨트톨러가 소유하도록 설정하고,
    상기 제 2 데이터를 이용한 연산 결과가 상기 제 2 영역에 저장될 때까지 상기 제 2 영역의 접근 권한을 상기 컨트롤러가 소유하도록 설정하는 데이터 처리 시스템.
  4. 제 1 항에 있어서,
    상기 공유 메모리 관리부는, 상기 메모리 장치의 영역별 접근 권한 정보를 모드 설정 커맨드에 포함시켜 상기 메모리 장치로 전송하고, 상기 메모리 장치는 상기 접근 권한 정보에 따라 모드 레지스터 셋(Mode Register Set; MRS)을 설정하도록 구성되는 데이터 처리 시스템.
  5. 제 1 항에 있어서,
    상기 공유 메모리 관리부는, 상기 타겟 영역의 물리 주소에 논리 주소를 할당하도록 구성되는 데이터 처리 시스템.
  6. 제 5 항에 있어서,
    상기 데이터는, 상기 어플리케이션의 프로그램 코드를 포함하여 제 1 논리 주소가 할당된 제 1 물리 영역에 저장되는 제 1 데이터; 및
    상기 프로그램 코드에 의해 연산되며 제 2 논리 주소가 할당된 제 2 물리 영역에 저장되는 제 2 데이터를 포함하고,
    상기 공유 메모리 관리부는 상기 제 2 데이터의 연산이 완료되면 상기 제 2 데이터에 후속하여 상기 프로그램 코드에 의해 연산되는 제 3 데이터가 저장된 제 3 물리 영역에 상기 제 2 논리 주소를 할당하도록 구성되는 데이터 처리 시스템.
  7. 제 1 항에 있어서,
    상기 호스트가 상기 컨트롤러를 통해 상기 메모리 장치로 접근하도록 하는 제 1 인터페이스; 및
    상기 컨트롤러가 상기 메모리 장치로 접근하도록 하는 제 2 인터페이스;
    를 더 포함하도록 구성되는 데이터 처리 시스템.
  8. 제 1 항에 있어서,
    상기 컨트롤러와 상기 메모리 장치는 독립적인 모듈 보드로 구성되고 인터페이싱하도록 구성되는 데이터 처리 시스템.
  9. 제 1 항에 있어서,
    상기 컨트롤러는 상기 메모리 장치와 단일 패키지로 구성되는 데이터 처리 시스템.
  10. 메모리 장치 및, 상기 메모리 장치를 제어하는 컨트롤러를 포함하는 데이터 처리 시스템의 동작 방법으로서,
    상기 호스트가 상기 컨트롤러로 어플리케이션의 오프로드 처리를 요청하고, 상기 어플리케이션 처리에 사용되는 데이터를 상기 메모리 장치의 타겟 영역에 저장함에 따라,
    상기 컨트롤러가 상기 타겟 영역의 접근 권한을 상기 컨트롤러가 갖도록 설정하는 단계; 및
    상기 어플리케이션의 처리 상태에 따라, 상기 컨트롤러가 상기 타겟 영역의 접근 권한을 상기 컨트롤러 또는 상기 호스트가 갖도록 설정하는 단계;
    를 포함하도록 구성되는 데이터 처리 시스템의 동작 방법.
  11. 제 10 항에 있어서,
    상기 데이터는, 상기 어플리케이션의 프로그램 코드를 포함하여 상기 메모리 장치의 제 1 영역에 저장되는 제 1 데이터를 포함하고,
    상기 어플리케이션의 실행 종료시까지 상기 제 1 영역의 접근 권한을 상기 컨트롤러가 소유하도록 설정하는 단계를 더 포함하도록 구성되는 데이터 처리 시스템의 동작 방법.
  12. 제 11 항에 있어서,
    상기 데이터는, 상기 프로그램 코드에 의해 연산되며 상기 메모리 장치의 제 2 영역에 저장되는 제 2 데이터를 포함하고,
    상기 제 2 데이터를 이용한 연산 결과가 상기 제 2 영역에 저장될 때까지 상기 제 2 영역의 접근 권한을 상기 컨트롤러가 소유하도록 설정하는 단계를 더 포함하도록 구성되는 데이터 처리 시스템의 동작 방법.
  13. 제 10 항에 있어서,
    상기 컨트롤러가, 상기 메모리 장치의 영역별 접근 권한 정보를 모드 설정 커맨드에 포함시켜 상기 메모리 장치로 전송하고,
    상기 메모리 장치는, 상기 접근 권한 정보에 따라 모드 레지스터 셋(Mode Register Set; MRS)을 설정하는 단계를 더 포함하도록 구성되는 데이터 처리 시스템의 동작 방법.
  14. 제 10 항에 있어서,
    상기 컨트롤러가, 상기 타겟 영역의 물리 주소에 논리 주소를 할당하는 단계를 더 포함하도록 구성되는 데이터 처리 시스템의 동작 방법.
  15. 제 14 항에 있어서,
    상기 데이터는, 상기 어플리케이션의 프로그램 코드를 포함하여 제 1 논리 주소가 할당된 제 1 물리 영역에 저장되는 제 1 데이터; 및
    상기 프로그램 코드에 의해 연산되며 제 2 논리 주소가 할당된 제 2 물리 영역에 저장되는 제 2 데이터를 포함하고,
    상기 컨트롤러가, 상기 제 2 데이터의 연산이 완료되면 제 3 데이터가 저장된 제 3 물리 영역에 상기 제 2 논리 주소를 할당하는 단계를 더 포함하도록 구성되는 데이터 처리 시스템의 동작 방법.
  16. 제 10 항에 있어서,
    상기 컨트롤러는, 상기 상기 호스트가 제 1 인터페이스를 통해 상기 메모리 장치로 접근하도록 하고,
    상기 컨트롤러는 제 2 인터페이스를 통해 상기 메모리 장치로 접근하는 데이터 처리 시스템의 동작 방법.
KR1020200029131A 2020-03-09 2020-03-09 데이터 처리 시스템 및 그 동작 방법 KR20210113859A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200029131A KR20210113859A (ko) 2020-03-09 2020-03-09 데이터 처리 시스템 및 그 동작 방법
US16/996,638 US11403236B2 (en) 2020-03-09 2020-08-18 Data processing system and operating method thereof
CN202010931492.1A CN113377694A (zh) 2020-03-09 2020-09-07 数据处理系统及其操作方法
US17/878,389 US11966342B2 (en) 2020-03-09 2022-08-01 Data processing system and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200029131A KR20210113859A (ko) 2020-03-09 2020-03-09 데이터 처리 시스템 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20210113859A true KR20210113859A (ko) 2021-09-17

Family

ID=77556568

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200029131A KR20210113859A (ko) 2020-03-09 2020-03-09 데이터 처리 시스템 및 그 동작 방법

Country Status (3)

Country Link
US (2) US11403236B2 (ko)
KR (1) KR20210113859A (ko)
CN (1) CN113377694A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190115728A (ko) 2018-04-03 2019-10-14 엘에스산전 주식회사 제어감시시스템의 제어단말장치에 구비되는 데이터처리장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210154277A (ko) * 2020-06-11 2021-12-21 삼성전자주식회사 메모리 모듈 및 그의 동작 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6976136B2 (en) * 2001-05-07 2005-12-13 National Semiconductor Corporation Flash memory protection scheme for secured shared BIOS implementation in personal computers with an embedded controller
US7610585B2 (en) * 2004-06-03 2009-10-27 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
KR100740635B1 (ko) 2005-12-26 2007-07-18 엠텍비젼 주식회사 휴대형 단말기 및 휴대형 단말기에서의 공유 메모리 제어방법
US7581073B2 (en) * 2006-08-09 2009-08-25 International Business Machines Corporation Systems and methods for providing distributed autonomous power management in a memory system
US8464069B2 (en) * 2007-02-05 2013-06-11 Freescale Semiconductors, Inc. Secure data access methods and apparatus
US8001334B2 (en) * 2007-12-06 2011-08-16 Silicon Image, Inc. Bank sharing and refresh in a shared multi-port memory device
TWI479359B (zh) * 2013-08-01 2015-04-01 Phison Electronics Corp 指令執行方法、記憶體控制器與記憶體儲存裝置
US10459909B2 (en) * 2016-01-13 2019-10-29 Walmart Apollo, Llc System for providing a time-limited mutual exclusivity lock and method therefor
US10592408B2 (en) * 2017-09-13 2020-03-17 Intel Corporation Apparatus, computer program product, system, and method for managing multiple regions of a memory device
US10817176B2 (en) * 2018-06-18 2020-10-27 Intel Corporation Compute offload in block storage using virtual objects
US11204819B2 (en) * 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190115728A (ko) 2018-04-03 2019-10-14 엘에스산전 주식회사 제어감시시스템의 제어단말장치에 구비되는 데이터처리장치

Also Published As

Publication number Publication date
US20210279185A1 (en) 2021-09-09
US11403236B2 (en) 2022-08-02
CN113377694A (zh) 2021-09-10
US20220382687A1 (en) 2022-12-01
US11966342B2 (en) 2024-04-23

Similar Documents

Publication Publication Date Title
US20210026774A1 (en) Data processing system and operating method thereof
CN110582745B (zh) 存储器装置及可促进张量存储器存取的方法
CN108009119B (zh) 处理器和控制工作流的方法
US11966342B2 (en) Data processing system and operating method thereof
CN113126898A (zh) 存储器设备及其操作方法和存储器控制器的操作方法
US20180115496A1 (en) Mechanisms to improve data locality for distributed gpus
KR20200108774A (ko) 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법
JP2023529653A (ja) マルチバンクメモリコマンドの動的統合
US11461024B2 (en) Computing system and operating method thereof
KR20200115114A (ko) 메모리에서 계산 동작들을 수행하기 위한 스케일링가능 아키텍처를 제공하는 기술들
KR20200130113A (ko) 고대역폭 메모리 시스템
US11392494B2 (en) Technologies for performant column read operations on clustered data in a dimm architecture
KR20230017802A (ko) 근거리-메모리 어드레스 생성을 갖는 메모리 액세스 명령
EP3138009A1 (en) Variable width error correction
US11763876B2 (en) Memory devices including an operation mode supporting virtual bank calculation, and operating methods of the memory devices
US12014052B2 (en) Cooperative storage architecture
CN112988047A (zh) 数据处理系统及其操作方法
US20200293452A1 (en) Memory device and method including circular instruction memory queue
US20200333980A1 (en) Data processing system and operating method thereof
US11593202B2 (en) Data processing system, memory controller therefor, and operating method thereof
US11960735B2 (en) Memory channel controller operation based on data types
US20240143498A1 (en) Methods, devices, and systems for allocating memory space
CN118377607A (zh) 加速器模块和包括加速器模块的计算系统

Legal Events

Date Code Title Description
A201 Request for examination