KR20150097001A - 인-스토리지 컴퓨팅 동작들을 수행할 수 있는 스토리지 장치, 이의 동작 방법, 및 이를 포함하는 시스템 - Google Patents
인-스토리지 컴퓨팅 동작들을 수행할 수 있는 스토리지 장치, 이의 동작 방법, 및 이를 포함하는 시스템 Download PDFInfo
- Publication number
- KR20150097001A KR20150097001A KR1020140017997A KR20140017997A KR20150097001A KR 20150097001 A KR20150097001 A KR 20150097001A KR 1020140017997 A KR1020140017997 A KR 1020140017997A KR 20140017997 A KR20140017997 A KR 20140017997A KR 20150097001 A KR20150097001 A KR 20150097001A
- Authority
- KR
- South Korea
- Prior art keywords
- data processing
- memory
- data
- processing code
- host
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
Abstract
인-스토리지 컴퓨팅 동작들을 수행할 수 있는 스토리지 장치는 데이터를 저장하는 불휘발성 메모리와, 온-칩 메모리를 포함하고 상기 불휘발성 메모리의 동작을 제어하는 컨트롤러를 포함한다. 상기 컨트롤러는 호스트의 크로스 컴파일러에 의해 생성된 데이터 처리 코드를 수신하고, 수신된 데이터 처리 코드를 상기 온-칩 메모리에 오버레이하고, 상기 불휘발성 메모리에 저장된 상기 데이터로부터 오버레이된 데이터 처리 코드에 상응하는 데이터를 처리하고 처리된 데이터를 상기 호스트로 전송한다.
Description
본 발명의 개념에 따른 실시 예는 스토리지 장치에 관한 것으로, 특히 인-스토리지 컴퓨팅 동작들을 수행할 수 있는 스토리지 장치, 이의 동작 방법, 및 이를 포함하는 시스템에 관한 것이다.
일반적인 서버와 데이터베이스를 포함하는 데이터 서버 시스템에서, 빅 데이터(big data)는 관계형 데이터베이스(relational databases)나 NoSQL 데이터베이스에 저장된다.
상기 관계형 데이터베이스 또는 상기 NoSQL 데이터베이스에 저장된 빅 데이터로부터 원하는 데이터는 SQL(structured query language) 또는 고유의 쿼리 (query) 언어를 이용하여 추출된다.
빅 데이터는 데이터베이스로부터 서버(또는 호스트)의 메인 메모리로 전송되고, 상기 서버의 프로세서(또는 CPU)는 상기 메인 메모리에 저장된 상기 빅 데이터로부터 원하는 데이터를 추출한다.
그러나, 서버의 메인 메모리에 저장된 빅 데이터 중에서 필요한 일부만이 상기 서버의 프로세서에 의해 추출되므로, 상기 서버와 상기 데이터베이스 사이의 네트워크의 데이터 트래픽(data traffic)의 관점에서 볼 때, 상기 서버의 상기 프로세서를 이용하여 상기 빅 데이터로부터 원하는 데이터를 추출하는 방법은 효율성이 낮다. 서버의 프로세서에 의해 데이터 추출이 수행되므로, 상기 서버의 컴퓨팅 (computing) 전력은 증가한다.
또한, 데이터베이스는 상기 빅 데이터를 상기 서버로 전송해야 하므로, 상기 서버와 상기 데이터베이스 사이의 데이터 트래픽은 감소하지 않는다. 따라서, 서버의 컴퓨팅 전력과 네트워크 트래픽을 감소시키는 방법들이 필요하다.
본 발명이 해결하고자 하는 기술적인 과제는, 호스트의 컴퓨팅 전력과 네트워크 트래픽을 감소시키기 위해, 인-스토리지 컴퓨팅 동작들을 수행할 수 있는 스토리지 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 기술적인 과제는 호스트의 크로스 컴파일러를 통해 스토리지 장치의 내부에서 실행될 수 있는 데이터 처리 코드를 생성하고, 생성된 데이터 처리 코드를 상기 스토리지 장치로 전송하고, 상기 데이터 처리 코드에 상응하는 인-스토리지 컴퓨팅 동작들을 수행할 수 있는 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 스토리지 장치는 데이터를 저장하는 불휘발성 메모리와, 온-칩 메모리를 포함하고 상기 불휘발성 메모리의 동작을 제어하는 컨트롤러를 포함하며, 상기 컨트롤러는 호스트의 크로스 컴파일러에 의해 생성된 데이터 처리 코드를 수신하고, 수신된 데이터 처리 코드를 상기 온-칩 메모리에 오버레이하고, 상기 불휘발성 메모리에 저장된 상기 데이터로부터 오버레이된 데이터 처리 코드에 상응하는 데이터를 처리하고, 처리된 데이터를 상기 호스트로 전송한다.
상기 컨트롤러는 코어들을 포함하는 CPU와, 상기 데이터 처리 코드를 포함하는 명령에 응답하여 인터럽트를 생성하는 인터페이스 컨트롤러를 포함하고, 상기 코어들 중에서 상기 인터럽트에 응답하여 동작하는 코어는 상기 데이터 처리 코드를 상기 온-칩 메모리에 오버레이할 수 있다.
실시 예에 따라, 상기 코어는, 상기 데이터 처리 코드를 상기 온-칩 메모리에 오버레이한 후, 상기 데이터 처리 코드를 상기 불휘발성 메모리에 저장할 수 있다.
다른 실시 예에 따라, 상기 코어는 상기 온-칩 메모리에 저장된 펌웨어를 상기 데이터 처리 코드로 오버레이하고, 상기 처리가 종료된 후 상기 코어는 상기 펌웨어를 상기 온-칩 메모리로 롤백할 수 있다.
상기 온-칩 메모리는 TCM(tightly-coupled memory), DRAM, 및 SRAM 중에서 어느 하나일 수 있다.
상기 스토리지 장치는 솔리드 스테이트 드라이브(solid state drive(SSD)), 임베디드 MMC(embedded multimedia card(eMMC)), 및 UFS(universal flash storage) 중에서 어느 하나일 수 있다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 상기 스토리지 장치와, 상기 호스트와 상기 스토리지 장치 사이에 접속된 인터페이스를 포함한다.
상기 인터페이스는 SATA(Serial ATA)와 SAS(Serial Attached SCSI) 중에서 어느 하나일 수 있다.
상기 데이터 처리 시스템은 파일 호스팅 서비스, 클라우드 스토리지 서비스, 인터넷 호스팅 서비스, 및 웹 호스팅 서비스 중에서 어느 하나를 제공하는 시스템일 수 있다.
본 발명의 실시 예에 따른, 데이터를 저장하는 불휘발성 메모리와 상기 불휘발성 메모리의 동작을 제어하는 컨트롤러를 포함하는 스토리지 장치의 동작 방법은 호스트의 크로스 컴파일러에 의해 생성된 데이터 처리 코드를 수신하는 단계와, 수신된 데이터 처리 코드를 상기 스토리지 장치에 포함된 메모리에 오버레이하는 단계와, 상기 불휘발성 메모리에 저장된 상기 데이터로부터 상기 메모리에 오버레이된 데이터 처리 코드에 상응하는 데이터를 처리하고 처리된 데이터를 상기 호스트로 전송하는 단계를 포함한다.
상기 오버레이하는 단계는 상기 데이터 처리 코드를 포함하는 명령에 응답하여 인터럽트를 생성하는 단계와, CPU에 포함된 코어들 중에서 상기 인터럽트에 응답하여 동작하는 코어의 제어에 따라, 상기 데이터 처리 코드를 상기 메모리에 오버레이하는 단계를 포함한다.
상기 메모리는 TCM(tightly-coupled memory), DRAM, 및 SRAM 중에서 어느 하나일 수 있다.
본 발명의 실시 예에 따른 스토리지 장치는 호스트로부터 전송된 데이터 처리 코드에 상응하는 인-스토리지 컴퓨팅 동작들을 수행하고, 수행 결과를 상기 호스트로 전송할 수 있는 효과가 있다.
따라서, 상기 스토리지 장치의 내부에서 호스트로부터 전송된 데이터 처리 코드에 상응하는 데이터가 처리되므로, 상기 호스트의 컴퓨팅 전력과 상기 호스트의 전력 소모가 감소하고, 상기 호스트와 상기 스토리지 장치 사이의 네트워크 트래픽이 감소하는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 CPU와 온-칩 메모리의 동작을 설명하기 위한 개념도이다.
도 3은 본 발명의 일 실시 예에 따른 오버레이(overlay)의 개념도이다.
도 4는 본 발명의 다른 실시 예에 따른 오버레이의 개념도이다.
도 5는 도 1에 도시된 데이터 처리 시스템의 동작을 설명하기 위한 플로우차트이다.
도 6은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 CPU와 온-칩 메모리의 동작을 설명하기 위한 개념도이다.
도 3은 본 발명의 일 실시 예에 따른 오버레이(overlay)의 개념도이다.
도 4는 본 발명의 다른 실시 예에 따른 오버레이의 개념도이다.
도 5는 도 1에 도시된 데이터 처리 시스템의 동작을 설명하기 위한 플로우차트이다.
도 6은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(200)와 데이터 스토리지 장치(또는 데이터 저장 장치, 이하, 간단히 "스토리지(storage)"라 한다. 400)를 포함할 수 있다.
데이터 처리 시스템(100)은 PC(personal computer), 인터넷 데이터 센터 (internet data center(IDC)), 데이터베이스를 관리하는 시스템, 또는 휴대용 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 스마트폰, 태블릿 PC, 모바일 인터넷 장치(mobile internet device(MID)) 또는 웨어러블 컴퓨터로 구현될 수 있다.
호스트(200)는 스토리지(400)에 대한 데이터 처리를 제어할 수 있다.
호스트(200)는 애플리케이션 프로그래머에게 애플리케이션 프로그래밍 인터페이스(application programming interface(API))를 제공할 수 있다.
예컨대, 애플리케이션 프로그래머가 API를 이용하여 데이터 처리에 필요한 프로그램 코드(CODE)를 작성하면, 호스트(200)에서 실행되는 크로스 컴파일러 (cross complier; 210)는 프로그램 코드(CODE)로부터 스토리지(400)에서 실행될 수 있는 실행 파일(executable file), 예컨대 데이터 처리 코드를 생성할 수 있다.
예컨대, 상기 데이터 처리 코드는 이진 코드(binary code) 또는 이진 파일 (binary file)을 의미할 수 있다.
예컨대, 호스트(200)는 애플리케이션 프로그래머에게 스토리지(400)를 제어할 수 있는 코드 오버레이 방법(code overlay method)을 제공할 수 있다.
호스트(200)에서 실행되는 프로그램 또는 크로스 컴파일러(210)는 데이터 처리 코드를 포함하는 명령(CMD)을 생성하고, 생성된 명령(CMD)을 인터페이스(300)를 통해 스토리지(400)로 전송할 수 있다. 예컨대, 명령(CMD)은 인-스토리지 컴퓨팅 명령을 의미할 수 있다.
예컨대, 호스트(200)와 스토리지(400) 사이에 접속된 인터페이스(300)는 SATA(Serial ATA) 또는 SAS(Serial Attached SCSI)로 구현될 수 있다.
호스트(200)는 서버, 집적 회로, 시스템 온 칩(system on chip(SoC)), 인쇄 회로 기판(printed circuit board(PCB)), 애플리케이션 프로세서(application processor), 또는 모바일 AP로 구현될 수 있다.
스토리지(400)는 호스트(200)로부터 전송된 명령(CMD)에 기초하여 인-스토리지 컴퓨팅 동작들(in-storage computing operations)을 수행할 수 있다.
인-스토리지 컴퓨팅 동작들은 호스트(200)가 아닌 스토리지(400)의 내부에서 수행되는 스캔(scan) 동작, 조인(join) 동작, 및/또는 비교(comparison) 동작 등을 의미할 수 있다.
스토리지(400)는 컨트롤러(410), DRAM(419), 및 복수의 플래시 메모리들 (430-1~430-n; n은 자연수)을 포함할 수 있다.
스토리지(400)는 플래시-기반 메모리 장치일 수 있다. 예컨대, 스토리지 (400)는 솔리드 스테이트 드라이브(solid state drive(SSD)), 임베디드 SSD (embedded SSD(eSSD)), 스마트 SSD, 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC(eMMC)), 또는 유니버셜 플래시 스토리지(universal flash storage(UFS))로 구현될 수 있다.
컨트롤러(410)는 DRAM(419)과 복수의 플래시 메모리들(430-1~430-n) 사이의 데이터 처리 동작(예컨대, 라이트 동작과 리드 동작)을 제어할 수 있다. 컨트롤러 (410)는 데이터 필터링 동작을 제어할 수 있다.
컨트롤러(410)의 관점에서 볼 때, DRAM(419)은 메인(main) 메모리의 기능을 수행할 수 있고, 복수의 플래시 메모리들(430-1~430-n)은 보조(auxiliary) 메모리들의 기능을 수행할 수 있다. 예컨대, DRAM(419)은 휘발성 메모리의 일 실시 예이고, 복수의 플래시 메모리들(430-1~430-n)은 불휘발성 메모리의 일 실시 예이다.
복수의 플래시 메모리들(430-1~430-n)은 NAND 플래시 메모리들(간단히, "NAND"라 한다.) 또는 NOR 플래시 메모리들로 구현될 수 있다.
예컨대, 컨트롤러(410)는 집적 회로 또는 SoC로 구현될 수 있다.
컨트롤러(410)는 버스(411), 호스트 인터페이스 컨트롤러(412), CPU(414), 온-칩 메모리(416), DRAM 컨트롤러(418), 및 복수의 플래시 메모리 컨트롤러들 (420-1~420-n)을 포함할 수 있다.
CPU(414)는 버스(411)를 통해 각 구성 요소(412, 416, 418, 및 420-1~420-n)의 동작을 제어할 수 있다. 예컨대, CPU(414)는 하나 또는 그 이상의 코어들을 포함할 수 있다.
호스트 인터페이스 컨트롤러(412)는 호스트(200)와 스토리지(400) 사이에서 주고받는 명령 및/또는 데이터를 제어(또는 인터페이스)할 수 있다.
호스트 인터페이스 컨트롤러(412)는 호스트(200)로부터 출력된 명령(CMD)에 응답하여 인터럽트(INT)를 생성하고, 생성된 인터럽트(INT)를 CPU(414)로 전송할 수 있다. 인터럽트(INT)는 인-스토리지 컴퓨팅 동작들에 관련된 요청을 지시할 수 있다.
실시 예에 따라, 호스트 인터페이스 컨트롤러(412)는, CPU(414)의 제어에 따라, 명령(CMD)에 포함된 데이터 처리 코드(DP_CODE)를 온-칩 메모리(416)에 라이트할 수 있다. 예컨대, 온-칩 메모리(416)는 인터럽트(INT)에 관련된 코어에 의해 액세스 가능한 메모리일 수 있다. 예컨대, 온-칩 메모리(416)는 TCM(tightly coupled memory) 또는 SRAM(static random access memory)으로 구현될 수 있다.
다른 실시 예에 따라, 호스트 인터페이스 컨트롤러(412)는, CPU(414)의 제어에 따라, 명령(CMD)에 포함된 데이터 처리 코드(DP_CODE)를 DRAM 컨트롤러(418)로 전송할 수 있다. 따라서, DRAM 컨트롤러(418)는 데이터 처리 코드(DP_CODE)를 DRAM (419)에 라이트할 수 있다.
즉, 데이터 처리 코드(DP_CODE)는 오버레이(overlay) 방법 또는 오버레잉 (overlaying) 방법으로 대응되는 메모리(416 또는 419)에 라이트될 수 있다. 상기 오버레이 방법 또는 상기 오버레잉 방법은 지시들(instructions) 또는 데이터에 저장된 블록(block)을 다른 블록으로 대체하는 것을 의미한다.
따라서, 본 명세서에서 라이트는 오버레이를 포함하는 개념으로 이해될 수 있다. 데이터 처리 코드(DP_CODE)는 데이터 필터링에 관련된 쿼리(query)를 의미할 수 있다.
대응되는 메모리(416 또는 419)에 오버레이된 데이터 처리 코드(DP_CODE)는 CPU(414)로 로드되고, CPU(414)로 로드된 데이터 처리 코드(DP_CODE)는 실행될 수 있다.
CPU(414)의 제어에 따라, 대응되는 플래시 메모리 컨트롤러(420-1~420-n)는 대응되는 플래시 메모리(430-1~430-n)에 저장된 데이터로부터 데이터 처리 코드 (DP_CODE)에 상응하는 데이터를 처리하고, 처리된 데이터를 구성 요소들(411과 412)을 통해 호스트(200)로 전송할 수 있다.
종래에는 데이터 필터링이 호스트 주도로 수행되었으나, 본 발명의 실시 예에 따른 스토리지(400)는, 데이터 처리 코드(DP_CODE)에 기초하여, 데이터 필터링을 수행하고 수행 결과만을 호스트(200)로 전송할 수 있다. 따라서, 데이터 필터링에 대한 호스트(200)의 부하(load)는 감소하고 호스트(200)의 전력 소모도 감소하는 효과가 있다.
또한, 호스트(200)는 스토리지(400)로부터 출력된 필터링 결과를 이용할 수 있으므로, 호스트(200)의 부하는 감소하는 효과가 있다.
DRAM 컨트롤러(418)는 DRAM(419)에 데이터를 저장하거나 DRAM(418)으로부터 데이터를 리드할 수 있다.
각 플래시 메모리 컨트롤러(420-1~420-n)는 대응되는 채널(channel)을 통해 각 플래시 메모리(430-1~430-n)에 대한 라이트 동작과 리드 동작을 수행할 수 있다.
도 2는 도 1에 도시된 CPU와 온-칩 메모리의 동작을 설명하기 위한 개념도이다.
도 1과 도 2를 참조하면, 설명의 편의를 위해 CPU(414)는 4개의 코어들 (CORE0~CORE3)을 포함한다고 가정한다. 예컨대, 각 코어(CORE0과 CORE1)는 호스트 (200)를 위한 코어 또는 프로토콜(protocol)을 처리하는 코어일 수 있고, 각 코어 (CORE2와 CORE3)는 각 플래시 메모리 컨트롤러(420-1~420-n)를 위한 코어일 수 있다.
예컨대, 호스트(200)로부터 입출력을 위한 요청(request)이 없을 때, 코어들 (CORE0과 CORE1)는 아무 일도 하지 않는다. 그러나, 코어들(CORE2와 CORE3)은 FTL (flash translation layer) 동작들(예컨대, 가비지 컬렉션(garbage collection) 및/또는 웨어 레벨링(wear leaveling) 등)을 위해 내부 일들(internal jobs)을 수행할 수 있다. 이때, 코어들(CORE0과 CORE1) 중에서 어느 하나(예컨대, CORE1)는 호스트(200)로부터 출력된 명령(CMD)에 포함된 데이터 처리 코드(DP_CODE)를 실행시킬 수 있다.
예컨대, 코어(CORE1)는 인터럽트(INT)를 처리하는 코어일 수 있다. 즉, 인-스토리지 컴퓨팅 동작들을 담당하는 코어(CORE1)는 메모리 영역(416-1)에 저장된 펌웨어를 데이터 처리 코드(DP_CODE)로 오버레이한다. 이때, 오버레이는 대체를 의미할 수 있다.
시작 위치, 예컨대 고정 오프셋(fixed offset)을 갖는 데이터 처리 코드 (DP_CODE)가 더미들과 함께 프레임위크(framework)에 포함될 때, 상기 더미들이 제거된 데이터 처리 코드(DP_CODE)는 명령(CMD)에 포함되어 스토리지(400)로 전송될 수 있다.
예컨대, 메모리 영역(416-1)에 저장된 상기 펌웨어가 실행중일 때, 코어 (CORE1)는 상기 펌웨어의 실행을 중지시키고, 상기 펌웨어를 데이터 처리 코드 (DP_CODE)로 오버레이할 수 있다. 그러나, 메모리 영역(416-1)에 저장된 상기 펌웨어가 실행되지 않을 때, 코어(CORE1)는 상기 펌웨어를 데이터 처리 코드(DP_CODE)로 오버레이할 수 있다.
예컨대, 메모리 영역(416-1)으로 데이터 처리 코드(DP_CODE)가 오버레이될 때, 데이터 처리 코드(DP_CODE)는 온-칩 메모리(416)의 프레임워크 중에서 시작 위치, 예컨대 고정 오프셋(FO)으로 정의된 메모리 영역으로 오버레이될 수 있다.
메모리 영역(416-1)에 저장된 데이터 처리 코드(DP_CODE)는 코어(CORE1)로 로드된 후 실행될 수 있다. 예컨대, 시작 위치(FO)로 프로그램 카운터가 점프할 수 있다. 이에 따라, 데이터 처리 코드(DP_CODE)는 실행될 수 있다.
상술한 바와 같이, 데이터 처리 코드(DP_CODE)는 데이터 필터링을 위한 쿼리를 포함할 수 있다. 예컨대, 상기 쿼리는 SQL(Structured Query Language)일 있다.
도 3은 본 발명의 일 실시 예에 따른 오버레이의 개념도이고, 도 4는 본 발명의 다른 실시 예에 따른 오버레이의 개념도이다.
도 3을 참조하면, 온-칩 메모리(416)의 메모리 영역(416-1)에 저장된 펌웨어 (FW0)는 데이터 처리 코드(DP_CODE)로 오버레이되고, 데이터 처리 코드(DP_CODE)에 상응하는 데이터 처리가 종료되면, 코어(CORE1)의 제어에 따라 펌웨어(FW0)는 메모리 영역(416-1)으로 롤백(rollback)될 수 있다.
예컨대, 데이터 처리 코드(DP_CODE)에 상응하는 데이터 처리가 종료되면, 코어(CORE1)는 메모리들(419, 430-1~430-n) 중에서 어느 하나에 저장된 펌웨어(FW0)를 메모리 영역(416-1)으로 다시 로드할 수 있다. 즉, 펌웨어(FW0)가 다시 온-칩 메모리(416)의 메모리 영역(416-1)으로 로드되는 과정을 롤백이라 할 수 있다.
도 4를 참조하면, 온-칩 메모리(416)의 메모리 영역(416-1)에서, 데이터 처리 코드(DP_CODE)는 펌웨어(FW1)가 저장된 메모리 영역과 다른 메모리 영역으로 오버레이될 수 있다. 그 후, 데이터 처리 코드(DP_CODE)의 시작 위치(FO)로 프로그램 카운터는 점프할 수 있다.
도 5는 도 1에 도시된 데이터 처리 시스템의 동작을 설명하기 위한 플로우차트이다.
도 1부터 도 5를 참조하면, 크로스 컴파일러(210)에 의해 생성된 데이터 처리 코드(DP_CODE)를 포함하는 명령(CMD)은 인터페이스(300)를 통해 호스트(200)로부터 스토리지(400)로 전송된다.
호스트 인터페이스 컨트롤러(412)는 데이터 처리 코드(DP_CODE)를 포함하는 명령(CMD)을 수신하고, 명령(CMD)에 응답하여 인터럽트(INT)를 생성하고, 생성된 인터럽트(INT)를 CPU(414)의 코어(CORE1)로 전송한다(S110).
인터럽트(INT)에 기초하여 동작하는 코어(CORE1)는 호스트 인터페이스 컨트롤러(412)로부터 출력된 데이터 처리 코드(DP_CODE)를 온-칩 메모리(416)의 메모리 영역(416-1)에 오버레이한다(S120). 이때, 오버레이 방법은 도 3과 도 4를 참조하여 설명한 바와 같다.
코어(CORE1)는 데이터 처리 코드(DP_CODE)를 저장할 필요가 있는지를 판단한다(S130). 데이터 처리 코드(DP_CODE)가 저장될 필요가 있을 때, 예컨대, 데이터 처리 코드(DP_CODE)가 스토리지(400)에서 지속적으로 사용될 가능성이 있을 때, 코어(CORE1)의 제어에 따라 플래시 메모리 컨트롤러들(420-1~420-n) 중에서 적어도 하나는 데이터 처리 코드(DP_CODE)를 플래시 메모리들(430-1~430-n) 중에서 적어도 어느 하나에 라이트한다(S140).
데이터 처리 코드(DP_CODE)가 상기 어느 하나에 라이트된 후 또는 데이터 처리 코드(DP_CODE)가 저장될 필요가 없을 때(예컨대, 데이터 처리 코드(DP_CODE)가 스토리지(400)에서 일시적으로 사용될 때), 코어(CORE1)는 프로그램 카운터를 데이터 처리 코드(DP_CODE)의 시작 위치(FO)로 점프시킨다(S150).
코어(CORE1)의 제어에 따라 데이터 처리 코드(DP_CODE)가 실행된다.
예컨대, 데이터 처리 코드(DP_CODE)가 플래시 메모리들(430-1~430-n) 중에서 적어도 어느 하나에 저장된 데이터로부터 특정 데이터를 추출할 수 있는 코드(또는 쿼리)일 때, 코어(CORE1)는 플래시 메모리들(430-1~430-n) 중에서 적어도 어느 하나로부터 출력된 데이터로부터 특정 데이터를 추출하고(S160), 추출된 데이터를 호스트 인터페이스 컨트롤러(412)와 인터페이스(300)를 통해 호스트(200)로 전송할 수 있다(S170).
상기 추출이 종료될 때, 코어(CORE1)는 원래의 펌웨어(FW0)를 온-칩 메모리 (416)로 롤백하고, 프로그램 카운터를 펌웨어(FW0 또는 FW1)의 시작 위치로 점프시킬 수 있다.
도 6은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 1부터 도 6을 참조하면, 데이터 처리 시스템(500)은 메인 컴퓨팅 서버 (510), 복수의 스토리지 서버들(520-1, 520-2, 및 520-3), 및 복수의 스토리지들 (400)을 포함할 수 있다.
실시 예에 따라, 데이터 처리 시스템(500)은 파일 호스팅(file hosting) 서비스, 클라우드 스토리지(cloud storage) 서비스, 인터넷 호스팅(internet hosting) 서비스, 또는 웹 호스팅 서비스(web hosting service)를 제공하는 시스템으로 구현될 수 있다.
다른 실시 예에 따라, 데이터 처리 시스템(500)은 NAS(Network-attached storage)로 구현될 수 있다.
메인 컴퓨팅 서버(510)는 제1네트워크를 통해 복수의 스토리지 서버들(520-1, 520-2, 및 520-3)의 동작을 제어할 수 있다. 복수의 스토리지 서버들(520-1, 520-2, 및 520-3) 각각은 제2네트워크를 통해 대응되는 복수의 스토리지들(400)의 동작을 제어할 수 있다. 복수의 스토리지들(400) 각각은 도 1부터 도 5를 참조하여 설명한 바와 같이 인-스토리지 컴퓨팅 동작들을 수행할 수 있다.
예컨대, 상기 제1네트워크와 상기 제2네트워크는 서로 동일한 네트워크일 수도 있고 서로 다른 네트워크일 수도 있다. 상기 제1네트워크와 상기 제2네트워크 중에서 적어도 하나는 유선 네트워크일 수도 있고 무선 네트워크일 수도 있다.
각 스토리지(400)에서 인-스토리지 컴퓨팅 동작들이 수행됨에 따라, 각 스토리지(400)는 데이터(예컨대, 빅 데이터)로부터 원하는 데이터를 추출하는 동작을 수행할 수 있다.
즉, 호스트(200, 510, 520-1, 520-2, 및/또는 520-3) 대신에 각 스토리지 (400)에서 데이터 추출 동작이 수행됨에 따라, 각 호스트(200, 510, 520-1, 520-2, 및/또는 520-3)의 전력 소모가 감소한다.
또한, 각 스토리지(400)는 데이터 자체를 호스트(200, 510, 520-1, 520-2, 및/또는 520-3)로 전송하는 대신에 인-스토리지 컴퓨팅 동작들의 결과에 따라 처리된 데이터를 호스트(200, 510, 520-1, 520-2, 및/또는 520-3)로 전송할 수 있으므로, 각 스토리지(400)와 호스트(200, 510, 520-1, 520-2, 및/또는 520-3) 사이의 네트워크의 트래픽은 감소한다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; 데이터 처리 시스템
200; 호스트
210; 크로스 컴파일러
300; 인터페이스
400; 스토리지 장치
410; 컨트롤러
411; 버스
412; 호스트 인터페이스 컨트롤러
414; CPU
416; 온-칩 메모리
418; DRAM 컨트롤러
420-1~420-n; 플래시 메모리 컨트롤러
430-1~430-n; 플래시 메모리
200; 호스트
210; 크로스 컴파일러
300; 인터페이스
400; 스토리지 장치
410; 컨트롤러
411; 버스
412; 호스트 인터페이스 컨트롤러
414; CPU
416; 온-칩 메모리
418; DRAM 컨트롤러
420-1~420-n; 플래시 메모리 컨트롤러
430-1~430-n; 플래시 메모리
Claims (10)
- 데이터를 저장하는 불휘발성 메모리; 및
온-칩 메모리를 포함하고 상기 불휘발성 메모리의 동작을 제어하는 컨트롤러를 포함하며,
상기 컨트롤러는,
호스트의 크로스 컴파일러에 의해 생성된 데이터 처리 코드를 수신하고, 수신된 데이터 처리 코드를 상기 온-칩 메모리에 오버레이하고, 상기 불휘발성 메모리에 저장된 상기 데이터로부터 오버레이된 데이터 처리 코드에 상응하는 데이터를 처리하고, 처리된 데이터를 상기 호스트로 전송하는 스토리지 장치. - 제1항에 있어서, 상기 컨트롤러는,
코어들을 포함하는 CPU; 및
상기 데이터 처리 코드를 포함하는 명령에 응답하여 인터럽트를 생성하는 인터페이스 컨트롤러를 포함하고,
상기 코어들 중에서 상기 인터럽트에 응답하여 동작하는 코어는 상기 데이터 처리 코드를 상기 온-칩 메모리에 오버레이하는 스토리지 장치. - 제2항에 있어서,
상기 코어는, 상기 데이터 처리 코드를 상기 온-칩 메모리에 오버레이한 후, 상기 데이터 처리 코드를 상기 불휘발성 메모리에 저장하는 스토리지 장치. - 제2항에 있어서,
상기 코어는 상기 온-칩 메모리에 저장된 펌웨어를 상기 데이터 처리 코드로 오버레이하고, 상기 처리가 종료된 후 상기 코어는 상기 펌웨어를 상기 온-칩 메모리로 롤백(rollback)하는 스토리지 장치. - 제1항에 있어서,
상기 온-칩 메모리는 TCM(tightly-coupled memory), DRAM, 및 SRAM 중에서 어느 하나인 스토리지 장치. - 제1항에 있어서,
상기 스토리지 장치는 솔리드 스테이트 드라이브(solid state drive(SSD)), 임베디드 MMC(embedded multimedia card(eMMC)), 및 UFS(universal flash storage) 중에서 어느 하나인 스토리지 장치. - 제1항의 상기 스토리지 장치; 및
상기 호스트와 상기 스토리지 장치 사이에 접속된 인터페이스를 포함하는 데이터 처리 시스템. - 제7항에 있어서,
상기 인터페이스는 SATA(Serial ATA)와 SAS(Serial Attached SCSI) 중에서 어느 하나인 데이터 처리 시스템. - 제7항에 있어서,
상기 데이터 처리 시스템은 파일 호스팅 서비스, 클라우드 스토리지 서비스, 인터넷 호스팅 서비스, 및 웹 호스팅 서비스 중에서 어느 하나를 제공하는 시스템인 데이터 처리 시스템. - 데이터를 저장하는 불휘발성 메모리와 상기 불휘발성 메모리의 동작을 제어하는 컨트롤러를 포함하는 스토리지 장치의 동작 방법에 있어서,
호스트의 크로스 컴파일러에 의해 생성된 데이터 처리 코드를 수신하는 단계;
수신된 데이터 처리 코드를 상기 스토리지 장치에 포함된 메모리에 오버레이하는 단계; 및
상기 불휘발성 메모리에 저장된 상기 데이터로부터 상기 메모리에 오버레이된 데이터 처리 코드에 상응하는 데이터를 처리하고 처리된 데이터를 상기 호스트로 전송하는 단계를 포함하는 스토리지 장치의 동작 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140017997A KR102128472B1 (ko) | 2014-02-17 | 2014-02-17 | 인-스토리지 컴퓨팅 동작들을 수행할 수 있는 스토리지 장치, 이의 동작 방법, 및 이를 포함하는 시스템 |
US14/616,779 US9652416B2 (en) | 2014-02-17 | 2015-02-09 | Storage device for performing in-storage computing operations, method of operation the same, and system including the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140017997A KR102128472B1 (ko) | 2014-02-17 | 2014-02-17 | 인-스토리지 컴퓨팅 동작들을 수행할 수 있는 스토리지 장치, 이의 동작 방법, 및 이를 포함하는 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150097001A true KR20150097001A (ko) | 2015-08-26 |
KR102128472B1 KR102128472B1 (ko) | 2020-06-30 |
Family
ID=53798171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140017997A KR102128472B1 (ko) | 2014-02-17 | 2014-02-17 | 인-스토리지 컴퓨팅 동작들을 수행할 수 있는 스토리지 장치, 이의 동작 방법, 및 이를 포함하는 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9652416B2 (ko) |
KR (1) | KR102128472B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11188485B2 (en) | 2017-12-12 | 2021-11-30 | SK Hynix Inc. | Memory system and operating method thereof |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10496335B2 (en) * | 2017-06-30 | 2019-12-03 | Intel Corporation | Method and apparatus for performing multi-object transformations on a storage device |
KR20200095103A (ko) | 2019-01-31 | 2020-08-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
KR20200117256A (ko) * | 2019-04-03 | 2020-10-14 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN110737612A (zh) * | 2019-09-18 | 2020-01-31 | 复旦大学 | 一种含有存储内计算的处理器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080086631A1 (en) * | 2000-01-06 | 2008-04-10 | Chow David Q | Flash memory controller controlling various flash memory cells |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6701369B1 (en) | 1998-09-11 | 2004-03-02 | L.V. Partners, L.P. | Method and apparatus for accessing a remote location by sensing a machine-resolvable code |
WO2003032158A2 (en) | 2001-10-11 | 2003-04-17 | Curl Corporation | System and method for specifying access to resources in a mobile code system |
KR100880379B1 (ko) | 2006-05-25 | 2009-01-23 | 삼성전자주식회사 | 외부로부터 제공받는 부트 코드로 부팅되는 정보기기시스템 |
US8356361B2 (en) | 2006-11-07 | 2013-01-15 | Spansion Llc | Secure co-processing memory controller integrated into an embedded memory subsystem |
US7970919B1 (en) | 2007-08-13 | 2011-06-28 | Duran Paul A | Apparatus and system for object-based storage solid-state drive and method for configuring same |
US20100261454A1 (en) | 2009-04-14 | 2010-10-14 | Research In Motion Limited | Retrieving additional content based on data within a mobile code |
US9350787B2 (en) | 2009-06-01 | 2016-05-24 | Sony Interactive Entertainment America Llc | Methods and systems for generation and execution of miniapp of computer application served by cloud computing system |
US8832652B2 (en) | 2010-03-26 | 2014-09-09 | Bmc Software, Inc. | Method for customizing software applications |
US8719804B2 (en) | 2010-05-05 | 2014-05-06 | Microsoft Corporation | Managing runtime execution of applications on cloud computing systems |
US8688926B2 (en) | 2010-10-10 | 2014-04-01 | Liqid Inc. | Systems and methods for optimizing data storage among a plurality of solid state memory subsystems |
US20120131131A1 (en) | 2010-11-18 | 2012-05-24 | Samsung Electronics Co. Ltd. | Sharing of mobile code information |
-
2014
- 2014-02-17 KR KR1020140017997A patent/KR102128472B1/ko active IP Right Grant
-
2015
- 2015-02-09 US US14/616,779 patent/US9652416B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080086631A1 (en) * | 2000-01-06 | 2008-04-10 | Chow David Q | Flash memory controller controlling various flash memory cells |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11188485B2 (en) | 2017-12-12 | 2021-11-30 | SK Hynix Inc. | Memory system and operating method thereof |
Also Published As
Publication number | Publication date |
---|---|
KR102128472B1 (ko) | 2020-06-30 |
US20150234606A1 (en) | 2015-08-20 |
US9652416B2 (en) | 2017-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11042297B2 (en) | Techniques to configure a solid state drive to operate in a storage mode or a memory mode | |
KR102261815B1 (ko) | 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 | |
US9558016B2 (en) | Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product | |
US9003381B2 (en) | Context-specific optimized code | |
EP2988221B1 (en) | Controller, flash memory device and method for writing data into flash memory device | |
KR102128472B1 (ko) | 인-스토리지 컴퓨팅 동작들을 수행할 수 있는 스토리지 장치, 이의 동작 방법, 및 이를 포함하는 시스템 | |
US10055150B1 (en) | Writing volatile scattered memory metadata to flash device | |
CN103268257A (zh) | 硬件资源存取系统及其存取电子装置的硬件资源的方法 | |
US9720819B2 (en) | Concurrent, moving, garbage collector | |
US20170083419A1 (en) | Data management method, node, and system for database cluster | |
CN104268229A (zh) | 一种基于多进程浏览器的资源获得方法及装置 | |
US9553761B2 (en) | Dynamic server to server configuration and initialization | |
US20160224325A1 (en) | Hiding compilation latency | |
CN203455832U (zh) | 一种电子设备 | |
KR102116984B1 (ko) | 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템 | |
CN104866388A (zh) | 数据处理方法及装置 | |
US9519527B1 (en) | System and method for performing internal system interface-based communications in management controller | |
CN111444117A (zh) | 存储空间碎片化实现方法、装置、存储介质及电子设备 | |
US9588918B2 (en) | Storage control devices and method therefor to invoke address thereof | |
JP6312837B2 (ja) | コンピューティングデバイスにおける消費電力の低減 | |
KR102457183B1 (ko) | 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법 | |
US20140019950A1 (en) | Information processing apparatus and method for determining whether a modified program is to be applied | |
TWI674531B (zh) | 資料儲存裝置及操作該資料儲存裝置的方法 | |
KR101175355B1 (ko) | 스토리지 제어 장치, 이를 포함하는 모바일 장치 및 스토리지 제어 방법 | |
CN110474941A (zh) | 一种日志打点同步到服务端的实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |