KR-20260061979-A - COMPUTATIONAL STORAGE DEVICE AND COMPUTATIONAL STORAGE SYSTEM INCLUDING THE SAME
Abstract
본 발명의 일 실시예에 따른 연산 스토리지 장치는, 메모리 컨트롤러, 하드웨어 가속기, 메모리 컨트롤러에 의해 액세스되는 제1 영역 및 하드웨어 가속기에 의해 액세스되는 제1 영역과 상이한 제2 영역을 포함하는 메모리 어레이, 메모리 컨트롤러를 호스트 프로세서와 연결하는 제1 인터페이스 블록 및 하드웨어 가속기를 호스트 프로세서와 연결하는 제2 인터페이스 블록을 포함하고, 메모리 컨트롤러는 제1 영역과 연관된 호스트 프로세서의 제1 타입의 요청을 수행하도록 구성되고, 하드웨어 가속기는 제2 영역과 연관된 호스트 프로세서의 텐서와 연관된 제2 타입의 요청을 수행하도록 구성되고, 메모리 컨트롤러의 제2 영역에 대한 액세스가 제한된다.
Inventors
- 정명수
- 강승관
- 고형석
- 김희민
Assignees
- 삼성전자주식회사
- 한국과학기술원
Dates
- Publication Date
- 20260506
- Application Date
- 20241028
Claims (10)
- 메모리 컨트롤러; 하드웨어 가속기; 상기 메모리 컨트롤러에 의해 액세스되는 제1 영역 및 상기 하드웨어 가속기에 의해 액세스되는 상기 제1 영역과 상이한 제2 영역을 포함하는 메모리 어레이; 상기 메모리 컨트롤러를 호스트 프로세서와 연결하는 제1 인터페이스 블록; 및 상기 하드웨어 가속기를 상기 호스트 프로세서와 연결하는 제2 인터페이스 블록 을 포함하고, 상기 메모리 컨트롤러는 상기 제1 영역과 연관된 상기 호스트 프로세서의 제1 타입의 요청을 수행하도록 구성되고, 상기 하드웨어 가속기는 상기 제2 영역과 연관된 상기 호스트 프로세서의 텐서(tensor)와 연관된 제2 타입의 요청을 수행하도록 구성되고, 상기 메모리 컨트롤러의 상기 제2 영역에 대한 액세스가 제한되는, 연산 스토리지 장치.
- 제1항에 있어서, 상기 제2 타입의 요청은 상기 제2 영역과 연관된 프로그램 등록 요청 또는 프로그램 실행 요청 중 적어도 하나를 포함하고, 상기 프로그램은 데이터 플로우 그래프(Data Flow Graph; DFG)를 포함하고, 상기 데이터 플로우 그래프는 노드에 대한 텐서 읽기 요청 및 텐서 쓰기 요청, 그리고 커널에 대한 텐서 연산 요청과 연관된, 연산 스토리지 장치.
- 제2항에 있어서, 상기 제2 인터페이스 블록은, 상기 호스트 프로세서로부터 상기 프로그램 등록 요청을 수신하는 것에 응답하여, 상기 프로그램에 대한 프로그램 ID(identifier)를 할당하고, 상기 할당된 프로그램 ID를 상기 호스트 프로세서로 반환하도록 구성된, 연산 스토리지 장치.
- 제3항에 있어서, 상기 제2 인터페이스 블록은, 상기 호스트 프로세서로부터 상기 프로그램 ID를 포함하는 프로그램 실행 요청을 수신하는 것에 응답하여, 상기 프로그램 실행 요청에 대한 요청 ID를 할당하고, 상기 프로그램 ID와 연관된 프로그램을 상기 하드웨어 가속기로 전송하도록 더 구성되고, 상기 하드웨어 가속기는, 상기 프로그램에 포함된 데이터 플로우 그래프에 기초하여, 상기 프로그램 실행 요청을 수행하도록 더 구성된, 연산 스토리지 장치.
- 제2항에 있어서, 상기 하드웨어 가속기는, 상기 노드에 대한 텐서 읽기 요청 및 텐서 쓰기 요청을 수행하는 가속기 메모리 관리 유닛(Memory Management Unit; MMU); 상기 커널에 대한 텐서 연산 요청을 수행하는 가속기 코어; 및 상기 가속기 코어가 텐서 연산을 수행하기 위한 적어도 하나의 텐서를 저장하는 가속기 메모리 를 포함하고, 상기 메모리 어레이는 비휘발성 메모리이고, 상기 가속기 메모리는 휘발성 메모리인, 연산 스토리지 장치.
- 제5항에 있어서, 상기 가속기 메모리 관리 유닛은, 특정 텐서와 연관된 텐서 쓰기 요청을 수신하는 것에 응답하여, 상기 특정 텐서를 상기 제2 영역에 저장하고, 상기 특정 텐서에 대하여 텐서 ID를 할당하고, 상기 할당된 텐서 ID와 상기 특정 텐서가 저장된 제2 영역의 물리 주소의 대응 정보를 테이블에 저장하도록 구성된, 연산 스토리지 장치.
- 제6항에 있어서, 상기 가속기 메모리 관리 유닛은, 상기 텐서 ID를 포함하는 텐서 읽기 요청을 수신하는 것에 응답하여, 상기 제2 영역에 저장된 상기 특정 텐서를 상기 가속기 메모리로 로드(load)하도록 더 구성된, 연산 스토리지 장치.
- 제5항에 있어서, 상기 가속기 메모리 관리 유닛은, 상기 제1 영역에 저장된 특정 텐서와 연관된 텐서 읽기 요청을 수신하는 것에 응답하여, 상기 제1 영역에서 상기 특정 텐서를 로드하고, 상기 특정 텐서를 상기 제2 영역에 저장하고, 상기 특정 텐서에 대하여 텐서 ID를 할당하고, 상기 할당된 텐서 ID와 상기 특정 텐서가 저장된 제2 영역의 물리 주소의 대응 정보를 테이블에 저장하고, 상기 텐서를 상기 가속기 메모리로 로드하도록 구성된, 연산 스토리지 장치.
- 제5항에 있어서, 상기 가속기 메모리 관리 유닛은, 상기 데이터 플로우 그래프에 포함된 복수의 노드 중 제1 노드를 타겟 노드로 결정하고 - 상기 제1 노드는 제1 텐서와 연관됨 -, 상기 제1 노드와 의존 관계에 있는 제2 노드와 연관된 제2 텐서를 텐서 읽기 요청을 통해 상기 제2 영역에서 상기 가속기 메모리로 로드하도록 구성되고, 상기 가속기 코어는, 상기 제1 노드와 상기 제2 노드에 대한 텐서 연산을 수행하여 제3 노드와 연관된 제3 텐서를 생성하도록 구성된, 연산 스토리지 장치.
- 제9항에 있어서, 상기 가속기 메모리 관리 유닛은, 상기 가속기 코어가 상기 제1 노드와 상기 제2 노드에 대한 텐서 연산을 수행하는 동안, 상기 제3 노드와 의존 관계에 있는 제4 노드와 연관된 제4 텐서를 텐서 읽기 요청을 통해 상기 제2 영역에서 상기 가속기 메모리로 로드하도록 더 구성된, 연산 스토리지 장치.
Description
연산 스토리지 장치 및 이를 포함하는 연산 스토리지 시스템{COMPUTATIONAL STORAGE DEVICE AND COMPUTATIONAL STORAGE SYSTEM INCLUDING THE SAME} 본 발명은 연산 스토리지 장치 및 시스템에 관한 것이다. 최근 연산 스토리지 장치(computational storage device)에 가속기를 결합하여 처리 속도를 향상시키기 위한 시도들이 증가하고 있다. 이러한 시도는 다양한 분야에 걸쳐 이루어지고 있으며, 특히 SSD(solid state drive)와 같은 대용량 스토리지 장치에 가속기를 결합하여 연산을 처리하는 연산 스토리지 장치에 대한 연구가 진행되고 있다. 한편, 연산 스토리지 장치의 가속기와 연산 스토리지 장치 내부의 메모리의 데이터 처리 성능에 간극이 존재하는 경우, 연산 스토리지 장치에 의한 연산 효율이 떨어질 수 있다. 도 1은 본 개시의 일 실시예에 따른 연산 스토리지 시스템을 설명하기 위한 도면이다. 도 2는 본 개시의 일 실시예에 따른 연산 스토리지 시스템의 세부 사항을 설명하기 위한 도면이다. 도 3은 본 개시의 일 실시예에 따른 연산 스토리지 장치의 내부 구성을 나타내는 도면이다. 도 4는 본 개시의 일 실시예에 따른 가속기의 내부 구성을 설명하기 위한 도면이다. 도 5는 본 개시의 일 실시예에 따른 호스트 프로세서의 요청에 따라 연산 스토리지 장치가 작동하는 예시를 설명하기 위한 도면이다. 도 6a는 본 개시의 일 실시예에 따른 프로그램 등록 요청이 수행되는 예시를 설명하기 위한 도면이다. 도 6b는 본 개시의 일 실시예에 따른 프로그램 실행 요청이 수행되는 예시를 설명하기 위한 도면이다. 도 7은 본 개시의 일 실시예에 따른 데이터 플로우 그래프를 설명하기 위한 도면이다. 도 8은 본 개시의 일 실시예에 따른 메모리 어레이의 제1 영역에 대하여 텐서 쓰기 요청이 수행되는 예시를 설명하기 위한 도면이다. 도 9는 본 개시의 일 실시예에 따른 메모리 어레이의 제2 영역에 대하여 텐서 읽기 요청이 수행되는 예시를 설명하기 위한 도면이다. 도 10a 및 도 10b는 본 개시의 일 실시예에 따른 메모리 어레이의 제1 영역에 대하여 텐서 읽기 요청이 수행되는 예시를 설명하기 위한 도면이다. 도 11은 본 개시의 일 실시예에 따른 가속기 메모리 관리 유닛이 텐서 연산을 수행하는 예시를 설명하기 위한 도면이다. 도 12는 본 개시의 일 실시예에 따른 프리페치가 수행되는 예시를 설명하기 위한 도면이다. 도 13은 본 개시의 일 실시예에 따른 타일링이 수행되는 예시를 설명하기 위한 도면이다. 도 14는 본 개시의 일 실시예에 따른 타일 기반의 연산을 수행하기 위한 텐서 쓰기 요청이 수행되는 예시를 설명하기 위한 도면이다. 도 15a 및 도 15b는 본 개시의 일 실시예에 따른 타일 단위로 텐서 연산 요청이 수행되는 예시를 설명하기 위한 도면이다. 이하에서, 도 1 내지 도 15b를 참조하여, 본 발명의 다양한 실시예들에 대하여 설명한다. 명세서 전문에 걸쳐 동일한 참조 부호는 동일한 구성 요소를 지칭할 수 있다. 도 1은 본 개시의 일 실시예에 따른 연산 스토리지 시스템(100)을 설명하기 위한 도면이다. 도시된 바에 따르면, 연산 스토리지 시스템(100)은 호스트(105) 및 연산 스토리지 장치(120)를 포함할 수 있다. 도 1에서는, 설명의 편의를 위하여 호스트(105) 및 연산 스토리지 장치(120)가 연산 스토리지 시스템(100)의 외부에 위치하는 것으로 도시되었으나, 호스트(105) 및 연산 스토리지 장치(120)는 연산 스토리지 시스템(100) 내부에 포함된 구성일 수 있다. 호스트(105)는 호스트 프로세서(110) 및 호스트 메모리(115)를 포함할 수 있다. 호스트 프로세서(110)는 호스트(105)의 전반적인 동작을 제어할 수 있다. 예를 들어, 호스트 프로세서(110)는 CPU(Central Processing Unit), AP(Application Processor), GPU(Graphic Processing Unit), NPU(Neural Processing Unit), FPGA(Field-Programmable Gate Array) 또는 마이크로프로세서를 포함하는 다양한 프로세싱 유닛 중 적어도 하나로 구현될 수 있다. 또한, 호스트 프로세서(110)는 시스템 온 칩(System-on-a-Chip, SoC)으로 구현될 수 있다. 호스트 프로세서(110)는 단일 프로세서 또는 임의의 수의 프로세서로 구성될 수 있다. 호스트 프로세서(110)는 RISC(Reduced Instruction Set Computer) 아키텍처, CISC(Complex Instruction Set Computer) 아키텍처 또는 이들 조합으로 구성될 수 있다. 또한, 호스트 프로세서(110)는 단일 코어 프로세서 또는 다중 코어 프로세서일 수 있다. 호스트 프로세서(110)는 호스트 메모리(115)와 연결될 수 있다. 호스트 메모리(115)는 호스트 프로세서(110)의 동작에 필요한 데이터, 명령어 또는 프로그램을 저장할 수 있다. 일 실시예에서, 호스트 메모리(115)는 단기 데이터를 저장하기 위해 사용될 수 있다. 여기서, 단기 데이터는 장기간 저장되지 않을 것으로 예상되는 데이터를 지칭할 수 있다. 구체적 예로, 단기 데이터는 임시 파일, 캐시(cache) 등을 포함할 수 있다. 호스트 프로세서(110) 및 호스트 메모리(115)는 다양한 애플리케이션이 실행될 수 있는 운영 체제를 지원할 수 있다. 애플리케이션은 호스트 메모리(115)에 대하여 읽기 요청 또는 쓰기 요청을 발행할 수 있다. 호스트 메모리 컨트롤러(125)는 애플리케이션이 발행한 요청에 기반하여, 호스트 프로세서(110)와 호스트 메모리(115) 사이의 데이터 전송을 관리할 수 있다. 호스트 프로세서(110)는 호스트 드라이버(130)를 통해 연산 스토리지 장치(120)와 통신할 수 있다. 호스트(105)(또는, 호스트 프로세서(110))와 연산 스토리지 장치(120)는 PCIe(Peripheral Component Interconnect express) 프로토콜에 기초하여 통신할 수 있으나, 이에 한정되지 않는다. 예를 들어, 호스트 프로세서(110)와 연산 스토리지 장치(120)는 NVMe(Non-Volatile Memory Express), NVMe-oF(NVMe over Fabrics), RDMA(Remote Direct Memory Access), TCP/IP(Transmission Control Protocol/Internet Protocol), UFS(Universal Flash Storage), eMMC(embedded MultiMediaCard), InfiniBand, 인피니밴드(Infiniband), SCSI(SAS; Serial Attached Small Computer System Interface), iSCSI(Internet SCSI), SATA(Serial AT Attachment) 등 다양한 프로토콜에 기초하여 통신할 수 있다. 연산 스토리지 장치(120)는 연산 동작 및 데이터 스토리지 동작을 수행하는 장치일 수 있다. 도 1에서는, 연산 스토리지 시스템(100)이 하나의 연산 스토리지 장치(120)를 포함하는 것으로 도시되었으나, 이에 한정되지 않으며, 연산 스토리지 시스템(100)은 복수의 연산 스토리지 장치를 포함할 수 있다. 연산 스토리지 장치(120)는 SSD(Solid State Drive), HDD(Hard Disk Drive), SSHD(Solid State Hybrid Drive) 등을 포함할 수 있다. 연산 스토리지 장치(120)의 내부 구성은 도 3 및 도 4를 참조하여 상세히 후술된다. 연산 스토리지 장치(120)는 호스트 프로세서(110)로부터 수신된 요청에 대한 출력을 생성할 수 있다. 예를 들어, 연산 스토리지 장치(120)는 호스트 프로세서로부터 수신된 읽기 요청에 응답하여, 연산 스토리지 장치(120)에 저장된 데이터를 읽을 수 있다. 또한, 연산 스토리지 장치(120)는 호스트 프로세서로부터 수신된 쓰기 요청에 응답하여, 연산 스토리지 장치(120)에 데이터를 저장할 수 있다. 추가로, 연산 스토리지 장치(120)는 호스트 프로세서로부터 수신된 연산 요청에 응답하여, 연산 동작을 수행할 수 있다. 호스트 프로세서(110)로부터 수신된 요청에 따라 연산 스토리지 장치(120)가 동작하는 예시는 도 5를 참조하여 상세히 후술된다. 도 2는 본 개시의 일 실시예에 따른 연산 스토리지 시스템(100)의 호스트 프로세서(110)에 대한 세부 사항을 설명하기 위한 도면이다. 도시된 바에 따르면, 연산 스토리지 시스템(100)은 호스트 프로세서(110)를 포함할 수 있다. 호스트 프로세서(110)는 연산 스토리지 시스템(100)의 전반적인 동작을 제어할 수 있다. 호스트 프로세서(110)는 호스트 메모리 컨트롤러(125) 및 클럭(205)을 포함할 수 있다. 호스트 메모리 컨트롤러(125)는 호스트 프로세서(110)와 호스트 메모리(115) 사이의 데이터 전송을 관리할 수 있다. 클럭(205)은 호스트 프로세서(110)와 호스트 메모리(115)의 작업을 동기화할 수 있다. 호스트 프로세서(110)는 호스트 메모리(115)와 연결될 수 있다. 호스트 메모리(115)는 휘발성 메모리, 비휘발성 메모리 또는 이들의 조합일 수 있다. 예를 들어, 호스트 메모리(115)는 DRAM(Dynamic Random-Access Memory), SRAM(Static Random-Access Memory) 등과 같은 휘발성 메모리 및/또는 EEPROM(Electrically Erasable Programmable Read-Only Memory), FRAM(Ferroelectric Random-Access Memory), PRAM(Phase-Change Random-Access Memory), MRAM(Magneto-resistive Random-Access Memory), Flash Memory 등과 같은 비휘발성 메모리를 포함할 수 있다. 호스트 프로세서(