KR20240081422A - 연산 스토리지 장치의 메모리 보호를 위한 시스템, 방법 및 장치 - Google Patents

연산 스토리지 장치의 메모리 보호를 위한 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR20240081422A
KR20240081422A KR1020230169830A KR20230169830A KR20240081422A KR 20240081422 A KR20240081422 A KR 20240081422A KR 1020230169830 A KR1020230169830 A KR 1020230169830A KR 20230169830 A KR20230169830 A KR 20230169830A KR 20240081422 A KR20240081422 A KR 20240081422A
Authority
KR
South Korea
Prior art keywords
memory
program
resources
storage
computational
Prior art date
Application number
KR1020230169830A
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 삼성전자주식회사
Publication of KR20240081422A publication Critical patent/KR20240081422A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory

Abstract

연산 스토리지 장치에서 메모리를 관리하기 위한 시스템, 방법 및 장치가 설명된다. 방법은 컨트롤러에 의해, 연산 리소스들의 양과 프로그램과 관련된 메모리 리소스들의 양을 지정하는 커맨드를 수신하는 단계; 및 컨트롤러에 의해 커맨드를 처리하는 단계를 포함하고, 처리는 하나 이상의 연산 리소스들의 일부를 동적으로 할당하고 프로그램에 의해 사용하기 위한 커맨드에 기초하여 하나 이상의 메모리 리소스들의 일부를 할당하는 것을 포함한다.

Description

연산 스토리지 장치의 메모리 보호를 위한 시스템, 방법 및 장치{SYSTEMS, METHODS, AND APPARATUS FOR MEMORY PROTECTION FOR COMPUTATIONAL STORAGE DEVICES}
본 개시는 일반적으로 스토리지 시스템에 관한 것이며, 특히 연산 스토리지 장치, 특히 연산 스토리지 장치를 사용하는 멀티-테넌트 환경에서의 프로그램 실행을 위한 동적 메모리 보호를 위한 시스템 및 방법에 관한 것이다.
발명의 배경이 되는 기술 부분은 단지 문맥을 제공하기 위한 것이며, 이 부분의 어떤 개념의 개시도 상기 개념이 선행 기술이라는 것을 인정하는 것은 아니다.
기술의 발전으로 모바일 기기, 사물인터넷(Internet of things; IOT) 기기, 항공(원격 감지) 기기, 소프트웨어 로그, 카메라, 마이크, 무선 주파수 식별(radio-frequency identification; RFID) 리더, 무선 센서 네트워크 등과 같은 장치에 의해 데이터가 수집되면서 데이터의 크기와 양이 급격하게 증가하고 있다. 수집된 데이터로 표현되는 정보를 처리하고 사용하기 위해, 데이터센터에서는 스토리지 장치, 프로세싱 요소들 및 서버들을 사용하여 데이터를 필터링, 계산, 저장 및 관련 작업을 수행하는 경우가 많다. 스토리지 장치의 연산 기능을 향상시키는 시스템 및 방법이 요구된다.
발명의 배경이 되는 기술 부분에 개시된 정보는 발명의 배경에 대한 이해를 돕기 위한 것일 뿐, 선행기술을 구성하지 않는 정보를 포함할 수 있다.
본 개시의 목적은 연산 스토리지 장치의 메모리 보호를 위한 시스템, 방법 및 장치를 제공하는 데에 있다.
다양한 실시예들에서, 본 명세서에 설명된 것은 연산 스토리지 장치에 대한 메모리 보호를 위한 시스템, 방법, 및 장치를 포함한다. 다양한 실시예들에서, 개시된 시스템은 메모리를 관리하기 위한 시스템을 설명하며, 시스템은 컨트롤러, 하나 이상의 연산 리소스들, 및 하나 이상의 메모리 리소스들을 포함한다. 또한, 시스템은 프로그램과 관련된 연산 리소스들의 양 및 메모리 리소스들의 양을 지정하는 커맨드를 수신하도록 구성될 수 있다. 시스템은 컨트롤러에 의해 커맨드를 처리할 수 있으며, 여기서 처리에는 프로그램에서 사용하기 위한 커맨드에 기초하여, 하나 이상의 연산 리소스들의 일부를 동적으로 할당하고, 하나 이상의 메모리 리소스들의 일부를 할당하는 것이 포함될 수 있다. 다른 실시예들에서, 커맨드는 하나 이상의 메모리 리소스들의 일부가 액세스로부터 제한되도록 지정할 수 있다. 일 실시예에서, 시스템은 프로그램이 하나 이상의 메모리 리소스들의 할당된 부분과 다른 하나 이상의 메모리 리소스들의 영역에 액세스하려고 시도하는 것을 판단하고, 시스템은 프로그램의 실행을 중지한다. 일부 실시예들에서, 상기 하나 이상의 메모리 리소스들은 하나 이상의 로컬 메모리 네임스페이스들을 포함할 수 있다. 다른 실시예들에서, 상기 시스템은 상기 하나 이상의 스토리지 네임스페이스들을 포함하는 하나 이상의 스토리지 리소스들을 더 포함할 수 있다. 일부 실시예들에서, 상기 프로그램은 적어도 제2 프로그램을 포함하는 다중 테넌트 환경의 제1 프로그램이다. 다른 실시예들에서, 상기 커맨드는 NVMe(non-volatile memory express)를 포함하는 프로토콜에 기초할 수 있다. 일 실시 예에서, 상기 하나 이상의 연산 리소스들은 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), FPGA(field-programmable gate array), TPU(tent processing unit), 또는 ASIC(application-specific integrated circuit) 중 적어도 하나를 포함하는 연산 리소스를 포함할 수 있다. 일부 실시예들에서, 상기 연산 스토리지 장치는 NVMe 지원(enabled) 스토리지 장치를 포함할 수 있다.
대응하는 방법, 장치 컴퓨터 판독 가능 매치(computer-readable medium)가 설명된다.
상술된 바와 같이, 개시된 메커니즘은 연산 스토리지 장치(예를 들어, 처리 기능을 갖는 저장 장치) 및 관련 시스템에 적용될 수 있다. 다른 측면에서, 개시된 시스템은 NVMe(non-volatile memory express), NVMe-oF(nvme-over fabric) 및/또는 NVMe가 아닌 SSD(solid state drive)와 같은 임의의 적절한 스토리지 장치와 관련하여 사용될 수 있다. 또한, 공개된 시스템 및 방법은 표준화되어 다양한 스토리지 장치들 및 관련 시스템들에 적용될 수 있으며, 벤더에 구애받지 않는다.
본 개시에 따른 시스템은 프로그램들에 대한 동적 메모리 보호 제공을 지원하는 연산 스토리지 유닛을 포함할 수 있다. 이에 따라, 향상된 성능을 갖는 연산 스토리지 장치의 메모리 보호를 위한 시스템, 방법 및 장치가 제공된다.
본 기술들의 상술된 양태들 및 다른 양태들은 참조 번호들이 유사하거나 동일한 요소들을 나타내는 다음 도면들을 고려하여 본 출원을 읽을 때 더 잘 이해될 것이다. 또한, 여기에 제공된 도면들은 특정 실시 예들을 설명하기 위한 목적으로만 제공된다. 명시적으로 예시되지 않을 수 있는 다른 실시 예들은 본 개시의 범위에서 제외되지 않는다.
본 발명의 이들 및 다른 특징들 및 이점들은 명세서, 청구범위 및 첨부된 도면들을 참조하여 이해될 것이다:
도 1은 본 개시의 실시예들에 따른, 스토리지 장치 상에서 유지보수를 지원하는 연산 스토리지 유닛을 포함하는 시스템을 도시한 도면이다.
도 2는 본 개시의 실시예들에 따른 도 1의 기계의 상세도를 도시한다.
도 3a는 본 개시의 실시예들에 따라, 도 1의 스토리지 장치와 연관될 수 있는 연산 스토리지 유닛의 배열의 제1 예시를 도시한다.
도 3b는 본 개시의 실시예들에 따라, 도 1의 스토리지 장치와 연관될 수 있는 연산 스토리지 유닛의 배열의 제2 예시를 도시한다.
도 3c는 본 개시의 실시예들에 따라, 도 1의 스토리지 장치와 연관될 수 있는 연산 스토리지 유닛의 배열의 제3 예시를 도시한다.
도 3d는 본 개시의 실시예들에 따라, 도 1의 스토리지 장치와 연관될 수 있는 연산 스토리지 유닛의 배열의 제4 예시를 도시한다.
도 4는 본 개시의 실시예에 따른 연산 스토리지 장치를 도시한 도면이다.
도 5a는 개시된 예시적인 실시예들에 따라 연산 스토리지 장치들에 대한 메모리 보호에 사용될 수 있는 파라미터를 지정하는 필드를 도시한다.
도 5b는 개시된 실시예들에 따라, 연산 스토리지 장치에 대한 메모리 보호를 위해 사용될 수 있는 파라미터를 지정하는 또 다른 필드를 도시한다.
도 6은 개시된 실시예들에 따라, 연산 스토리지 장치에 대한 메모리 보호를 위해 사용될 수 있는 데이터 포인터의 표현을 도시한 도면이다.
도 7은 본 개시의 예시적인 실시예들에 따라, 개시된 시스템들과 관련된 예시적인 동작들을 예시하는 예시적인 동작 흐름의 도면이다.
도 8은 본 개시의 실시예를 실시하는데 사용될 수 있는 시스템의 예시적인 개략도를 도시한다.
도 9는 본 개시의 예시적인 실시예에 따른 관리 컴퓨팅 개체의 예시적인 개략도를 도시한다.
도 10은 본 개시의 예시적인 실시예에 따른 사용자 장치의 예시적인 개략도를 도시한다.
본 기술들은 다양한 변형 및 대체 형태가 가능하만, 그 구체적인 실시 예들은 도면에 예시로 도시되어 있으며, 본 명세서에서 설명될 것이다. 도면의 축척이 맞지 않을 수 있다. 다만, 도면 및 그에 대한 상세한 설명은 본 기술을 개시된 특정한 형태로 한정하기 위한 것이 아니라, 반대로 첨부된 청구범위에 의해 정의된 바와 같이 본 기술의 정신 및 범위 내에 속하는 모든 수정들, 균등물들 및 대안들을 포괄하는 것임을 이해해야 한다.
본 명세서에 기술된 주제의 하나 이상의 실시예들의 세부 사항들은 첨부된 도면들 및 아래의 설명에서 설명된다. 주제의 다른 특징들, 양태들 및 장점들은 설명, 도면들 및 청구범위에 의해 명백해질 것이다.
본 개시의 다양한 실시 예들은 첨부된 도면들을 참조하여 이하에서 보다 상세하게 설명될 것이며, 모든 실시 예들이 아닌 일부 실시 예들이 도시되어 있다. 실제로, 본 개시는 다양한 형태로 구체화될 수 있으며, 본 개시에 명시된 실시 예들에 한정되어서는 안 된다. 오히려, 이러한 실시 예들은 본 개시가 적용 가능한 법적 요건들을 충족하도록 제공된다. 달리 명시되지 않은 한, 본 명세서에서 "또는"라는 용어는 대안적 의미와 결합적 의미 모두에서 사용된다. "설명" 및 "예시"라는 용어는 품질 수준을 나타내지 않는 예들에 사용된다. 동일한 번호는 전체적으로 동일한 요소를 나타낸다. 각 그림의 화살표는 양방향 데이터 흐름 및/또는 양방향 데이터 흐름 기능을 나타낸다. "경로" 및 "라우트(route)"라는 용어는 본 명세서에서 상호교환적으로 사용된다.
본 개시의 실시 예들은 제조 물품을 포함하는 컴퓨터 프로그램 제품으로서 다양한 방식으로 구현될 수 있다. 컴퓨터 프로그램 제품은 응용 프로그램, 프로그램, 프로그램 구성 요소, 스크립트, 소스 코드, 프로그램 코드, 객체 코드, 바이트 코드, 컴파일된 코드, 해석된 코드, 기계 코드, 실행 가능한 커맨드 등을 저장하는 비일시적인 컴퓨터 판독 가능 저장 매체를 포함할 수 있다(본 명세서에서는 실행 가능 커맨드, 실행 커맨드, 컴퓨터 프로그램 제품, 프로그램 코드 및/또는 본 명세서에서 상호 교환적으로 사용되는 유사한 용어라고도 함). 이러한 비일시적 컴퓨터 판독 가능 저장 매체(non-transitory computer-readable storage media)는 모든 컴퓨터 판독 가능 매체(휘발성 및 비휘발성 매체 포함)를 포함한다.
일 실시 예에서, 비휘발성 컴퓨터 판독 가능 저장 매체(non-volatile computer-readable storage medium)는 플로피 디스크, 플렉서블 디스크, 하드 디스크, SSS(Solid-State Storage), SSC(Solid State Card), SSM(Solid State Module), 엔터프라이즈 플래시 드라이브, 자기 테이프 또는 기타 비일시적 자기 매체 등을 포함할 수 있다. 비휘발성 컴퓨터 판독 가능 저장 매체(non-volatile computer-readable storage medium)는 또한 펀치 카드, 종이 테이프, 광학 마크 시트(또는 구멍 패턴이나 기타 광학적으로 인식 가능한 표시가 있는 임의의 다른 물리적 매체), CD-ROM(Compact Disc Read Only Memory), 재기록 가능한 컴팩트 디스크(compact disc-rewritable, CD-RW), 디지털 다용도 디스크(digital versatile disc, DVD), 블루레이 디스크(Blu-ray disc, BD), 임의의 기타 비일시적 광 매체 등을 포함할 수 있다. 이러한 비휘발성 컴퓨터 판독 가능 저장 매체는 또한 ROM(read-only memory), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 플래시 메모리(예를 들어, Serial, NAND, NOR 등), 멀티미디어 메모리 카드(Multi Media Memory Card; MMC)들, 보안 디지털(Secure Digital; SD) 메모리 카드들, 스마트 미디어(SmartMedia) 카드들, 컴팩트 플래시(CompactFlash, CF) 카드들, 메모리 스틱들 등을 포함할 수 있다. 또한, 비휘발성 컴퓨터 판독 가능 저장 매체는 CBRAM(Conductive-Bridging Random-Access Memory), PRAM(Phase-Change Random-Access Memory), FeRAM(FErroelectric Random-Access Memory), NVRAM(NonVolatile Random-Access Memory), MRAM(Magnetoresistive Random-Access Memory), RRAM(resistive random-access memory), SONOS(Silicon-Oxide-Nitride-Oxide-Silicon memory), FJG RAM(Floating Junction Gate Random-Access Memory), 밀리피데 메모리(Millipede memory), 레이스 트랙 메모리(racetrack memory) 등을 포함할 수 있다.
일 실시 예에서, 휘발성 컴퓨터 판독 가능 저장 매체는 RAM(random access memory), DRAM(dynamic random access memory), SRAM(static random access memory), FPM DRAM(fast page mode dynamic random access memory), EDO DRAM(Extended Data-Out Dynamic Random Access Memory), SDRAM(Synchronous Dynamic Random Access Memory), DDR SDRAM(Double Data Rate), DDR2 SDRAM(Double Data Rate Type Two Synchronous Dynamic Random Access Memory), DDR3 SDRAM(double data rate type three synchronous dynamic random access memory), RDRAM(Rambus dynamic random access memory), TTRAM(Twin Transistor RAM), T-RAM(Thyristor RAM), Z-RAM(Zero-capacitor), 램버스 인라인 메모리 컴포넌트(Rambus in-line memory component; RIMM), 듀얼 인라인 메모리 컴포넌트(Dual in-line memory component, DIMM), 단일 인라인 메모리 컴포넌트(single in-line memory component, SIMM), VRAM(video random access memory), 캐시 메모리(다양한 레벨들을 포함함), 플래시 메모리, 레지스터 메모리 등을 포함할 수 있다. 실시 예들이 컴퓨터 판독 가능 저장 매체를 사용하는 것으로 설명되는 경우, 다른 유형의 컴퓨터 판독 가능 저장 매체가 전술한 컴퓨터 판독 가능 저장 매체를 대체하거나 추가로 사용될 수 있음을 이해할 것이다.
본 개시의 다양한 실시 예들은 또한 방법, 장치, 시스템, 컴퓨팅 디바이스, 컴퓨팅 엔티티 등으로 구현될 수 있다. 이와 같이, 본 개시의 실시 예들은 컴퓨터 판독 가능한 저장 매체에 저장된 커맨드들을 실행하여 특정 단계들 또는 동작들을 수행하는 장치, 시스템, 컴퓨팅 디바이스, 컴퓨팅 엔티티 등의 형태를 취할 수 있다. 따라서, 본 발명의 실시 예들은 또한 완전한 하드웨어 실시 예, 완전한 컴퓨터 프로그램 제품 실시 예 및/또는 특정 단계들 또는 동작들을 수행하는 컴퓨터 프로그램 제품들과 하드웨어의 조합을 포함하는 실시예의 형태를 취할 수 있다.
본 개시의 실시 예들은 블록 다이어그램들 및 흐름도들을 참조하여 이하에서 설명된다. 따라서 블록 다이어그램들과 흐름도들의 각 블록은 컴퓨터 프로그램 제품, 완전한 하드웨어 구현, 하드웨어와 컴퓨터 프로그램 제품들의 조합 및/또는 장치, 시스템, 컴퓨팅 장치, 컴퓨팅 엔티티의 형태, 및/또는 실행을 위해 컴퓨터 판독 가능한 저장 매체에서 상호 교환적으로 사용되는 명령어들, 동작들, 단계들 및 유사 단어들(예를 들어, 실행 가능한 명령어들, 실행을 위한 명령어들, 프로그램 코드들 등)을 수행하는 것으로 구현될 수 있음을 이해해야 한다. 예를 들어, 코드 검색, 로드 및 실행은 한 번에 하나의 명령어가 검색, 로드 및 실행되도록 순차적으로 수행될 수 있다. 일부 예시적인 실시예들에서, 검색, 로딩 및/또는 실행은 다수의 커맨드가 함께 검색, 로딩 및/또는 실행되도록 병렬로 수행될 수 있다. 따라서, 이러한 실시 예들은 블록도들 및 흐름도들의 예시에 명시된 단계 또는 동작을 수행하는 구체적으로 구성된 장치들을 생성할 수 있다. 따라서, 블록도들 및 흐름도들은 지정된 커맨드, 동작 또는 단계를 수행하기 위한 실시 예들의 다양한 조합들을 지원한다.
다양한 측면에서, 연산 스토리지는 스토리지 장치들(예를 들어, NVMe 지원 스토리지 장치들)의 기능과 작동 방식에 큰 영향을 미칠 수 있다. CS(computational storage) 장치들에 의해 가능한 연산이 추가됨에 따라 다양한 연산 동작들이 호스트에서 데이터가 있는 스토리지 장치로 오프로드될 수 있다. 특정 데이터에 대한 연산이 수행되기 때문에, 일부 모델들은 스토리지 매체 또는 네트워크 리소스에서 호스트의 메모리로 데이터를 가져온 다음, CPU가 데이터에 대해 연산 동작을 수행하도록 한다(예: 바이러스 감염이 유행하는 모든 집 코드(zip code)들의 개수 찾기). 이 방법은 데이터가 직접 연결된 PCIe 버스나 네트워크 패브릭 등 패브릭을 통과해야 하므로 레이턴시(latency)가 증가한다는 한계가 있다.
또한, 이러한 장치들을 여러 대 연결하면 버스가 NVMe 장치들이 제공하는 전체 성능을 활용하지 못할 수 있으므로 장치당 총 처리량(throughput)이 단일 장치를 연결할 때보다 낮아질 수 있다. 연산 스토리지를 사용하면, 스토리지 근처에서 연산을 수행할 수 있으므로 전송 레이턴시를 줄일 수 있다. 또한, 특정 사용 사례들에서는 매우 클 수 있는 소스 데이터 대신 연산 결과만 복사하면 된다. CS 장치는 임베디드 CPU, 전용 ASIC, FPGA, GPU 등을 통해 컴퓨팅을 수행한다. 어떤 연산은 CS 장치에서 더 효율적으로 수행될 수 있는 반면, 어떤 연산은 호스트 CPU를 사용하는 게 더 나을 수 있다.
CS 지원 장치들은 장치 내에서 특정 알고리즘들이 포함된 프로그램들을 실행한다. 이러한 프로그램들은 제조 시점에 미리 구축(prebuilt)되어 있거나 나중에 호스트 유저가 다운로드할 수 있다. 이러한 프로그램들은 호스트 유저에 의해 데이터에 대해 실행되며, 프로그램에 기초한 결과가 서비스될 수 있다.
일부 양태들에서, 처리 능력을 갖는 스토리지 장치들은 장치 내의 CS 커맨드 처리를 포함하는 연산 스토리지(computational storage, CS) 동작을 통해 근접 데이터 처리를 제공할 수 있다. 일부 측면에서, CS 커맨드 처리는 구성 및 적용 가능성이 다를 수 있기 때문에, 호스트 CPU, CS 저장 디바이스, 또는 다른 연산 디바이스에 의해 적어도 부분적으로 수행될 수 있다. 일부 측면에서, 연산 프로그램은 입력으로 제공된 데이터에 대한 연산 동작을 실행할 수 있고, 연산 프로그램은 연산 동작의 결과를 출력으로 제공할 수 있다. 일부 측면에서, 그러한 프로그램은 소프트웨어 프로그램으로서 호스트 CPU에 포함되거나, 소프트웨어 프로그램 또는 하드웨어 프로그램으로서 CS 장치에(예를 들어, 프로세싱 요소에) 포함될 수 있다.
일부 양태들에서, 프로그램/기능은 컴퓨팅 유형(예를 들어, FPGA 기반 컴퓨팅을 위한 FPGA 비트파일, 임베디드 CPU를 위한 eBPF 프로그램, C/C++ 언어 기반 프로그램 등)을 대상으로 하는 장치 내 실행을 위해 다르게 구축될 수 있다. 또한 프로그램 실행 및 데이터 처리는 CS 장치가 실행하는 알고리즘(들)과 CS 장치가 소비할 수 있는 데이터의 양에 따라 달라질 수 있다. 어떤 측면에서, 호스트 애플리케이션은 이러한 장치 프로그램들을 사용하여 호스트가 일반적으로 사용하는 연산 및 메모리 리소스들을 CS 장치로 오프로드하도록 설정될 수 있다.
또한, 주어진 작업을 위해 실행 프로그램에 의해 요구되고 소비되는 CS 장치 메모리의 양은 항상 미리 알려지지 않을 수 있으며, 처리되는 데이터의 동적 특성(예를 들어, 다양한 크기의 객체 데이터 수신)으로 인해 발생할 수 있다. 일부 측면, 데이터 처리에 앞서 장치 메모리를 사전 할당하는 것은 장치 메모리가 소진될 수 있는 제한된 리소스일 수 있으므로 실행 가능하지 않을 수 있다. CS 장치는 실행 프로그램이 특정 메모리 영역에 액세스할 수 있도록 장치 메모리 보호 기능을 제공할 수 있다. 또한, 프로그램이 멀티-테넌트(multi-tenant) 환경에서 실행될 때, 프로그램 간 데이터를 보호하기 위해 메모리 보호가 필요할 수 있다.
정의된 메모리 보호를 위한 일부 메커니즘들은 동적 메모리 사용량이 아닌 사전 할당된 메모리를 처리할 수 있다. 이는 멀티-테넌트 환경에서 CS 디바이스에 대한 실행 프로그램 전반에 걸쳐 데이터 보호를 제공하는 기능을 제한할 수 있다. 본 개시의 실시예들은 연산 스토리지용 프로그램들의 실행을 위한 동적 장치 메모리 사용량 기반 보호를 지원한다. 메커니즘은 CS 가능 장치에서 실행 프로그램과 함께 사용되는 메모리 사용량에 기초한 동적 메모리 보호를 포함할 수 있다.
일부 측면들에서, 본 개시의 실시예들은 커맨드(예를 들어, NVMe 실행 프로그램 커맨드)에서 사용하기 위한 메모리 영역들을 지정하는 시스템들 및 방법들을 포함할 수 있다. 다른 양상에서, 개시된 시스템들은 실행 커맨드와 연관된 하나 이상의 메모리 영역들을 포함할 수 있다. 또한, 개시된 시스템들은 멀티-테넌트 환경에서 보호를 위한 메모리 영역들을 지정할 수 있다. 일부 측면들에서, 개시된 시스템들은 제공된 메모리 영역들이 지정된 장치 메모리 영역들에만 실행 프로그램 액세스를 제한하도록 장치에 적용될 수 있는 메커니즘을 포함할 수 있다. 일부 측면에서, 그러한 메모리 보호는 피어-투-피어(P2P) 디바이스, 로드/저장 디바이스, 다른 호스트, 및/또는 별도의 디바이스 또는 다른 컨테이너/가상 머신에서 실행되는 프로그램을 포함하는 허가되지 않은 엔티티에 의해 지정된 메모리 영역의 사용을 제한할 수 있다. 일부 측면들에서, 그러한 메모리 보호는 피어-투-피어(peer-to-peer; P2P) 장치, 로드/저장 장치, 다른 호스트, 및/또는 별도의 디바이스 또는 다른 컨테이너/가상 머신에서 실행되는 프로그램을 포함하는 허가되지 않은 엔티티에 의해 지정된 메모리 영역들의 사용을 제한할 수 있다.
일부 측면들에서, 개시된 시스템들은 호스트 데이터 포인터 버퍼에 메모리 영역들 및 프로그램 파라미터 데이터를 포함하는 방법을 포함할 수 있다. 다른 양태들에서, 개시된 시스템들은 메모리 영역들을 지정하기 위해 관리 권한들(권한 있는 유저)을 필요로 하지 않는 메커니즘을 포함할 수 있다. 다른 양태들에서, 개시된 시스템들은 동적 메모리 보호가 활성화된 프로그램의 실행을 지원하는 연산 네임스페이스를 포함할 수 있다. 또한, 개시된 시스템들은 커맨드(예를 들어, 실행 커맨드)에 지정된 보호 범위를 벗어난 메모리 영역들에 액세스하는 경우, 장치가 프로그램의 추가 실행을 일시 중지하고 중단하도록 허용할 수 있다.
다양한 양태들에서, 개시된 시스템들은 하나 이상의 API들을 사용하여 프로그램 액세스를 위한 동적 메모리 범위들을 구축하는 것을 용이하게 하고, 호스트에서 실행되는 프로그램을 포함할 수 있다. API들은 프로그램들에 대한 동적 메모리 범위 기반 보호를 용이하게 하는 프로그램의 실행과 인터페이싱하는데 사용될 수 있다. 시스템들 및 방법들은 기존 스토리지 프로토콜(예를 들어, NVMe, CS 표준)과 호환되며 공존할 수 있다. 또한, 개시된 시스템들은 스토리지 장치(예컨대, 솔리드 스테이트 드라이브, SSD) 및 연산 능력을 갖는 스토리지 장치에서 실행될 수 있다.
전반적으로, 개시된 시스템들은 장치에 대한 동적 메모리 사용 보호를 가능하게 할 수 있는 NVMe 호환 장치를 포함하는 CS-가능 스토리지 장치에서, 프로그램을 실행하기 위한 동적 메모리 보호를 지정할 수 있는 능력을 제공한다. 또한, 개시된 시스템들은 멀티-테넌트 환경에서 메모리 보호를 가능하게 하여 지원되는 연산 및 알고리즘 유형을 확장한다.
도 1은 본 개시의 실시예에 따라, 스토리지 장치 상에서 다양한 기능(예를 들어, 프로그램들에 대한 동적 메모리 보호 제공)을 지원하는 연산 스토리지 유닛을 포함하는 시스템을 도시한다. 도 1에서, 호스트 또는 시스템으로 지칭될 수도 있는 머신(105)은 프로세서(110), 메모리(115) 및 스토리지 장치(120)를 포함할 수 있다. 프로세서(110)는 임의의 다양한 프로세서일 수 있다. (프로세서(110)는 이하에서 논의되는 다른 구성요소들과 함께 설명의 용이성을 위해 머신 외부에 도시되어 있으나, 본 개시의 실시예들은 머신 내부에 이러한 구성요소를 포함할 수 있다). 도 1은 단일 프로세서(110)를 도시하고 있지만, 머신(105)은 임의의 수의 프로세서들을 포함할 수 있으며, 각 프로세서는 단일 코어 또는 멀티코어 프로세서일 수 있고, 각 프로세서는 (다른 가능성들 중에서) 축소 명령어 집합 컴퓨터(RISC) 아키텍처 또는 복합 명령어 집합 컴퓨터(CISC) 아키텍처를 구현할 수 있으며, 원하는 조합으로 혼합될 수 있다.
프로세서(110)는 메모리(115)에 결합될 수 있다. 메모리(115)는 플래시 메모리, 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM), 정적 랜덤 액세스 메모리(static random access memory, SRAM), 영구 랜덤 액세스 메모리(persistent random access memory), 강유전체 랜덤 액세스 메모리(ferroelectric random access memory, FRAM), 또는 자기 저항성 랜덤 액세스 메모리(magneto-resistive random access memory, MRAM) 등과 같은 비휘발성 랜덤 액세스 메모리(non-volatile random access memory, NVRAM) 등과 같은 임의의 다양한 메모리일 수 있다. 메모리(115)는 또한 상이한 메모리 타입의 임의의 원하는 조합일 수 있으며, 메모리 컨트롤러(125)에 의해 관리될 수 있다. 메모리(115)는 "단기" 데이터, 즉 장시간 동안 저장될 것으로 예상되지 않는 데이터를 저장하는 데 사용될 수 있다. 단기 데이터의 예로는 임시 파일, 애플리케이션에 의해 로컬로 사용되는 데이터(다른 저장 위치로부터 복사되었을 수 있음) 등이 포함될 수 있다.
프로세서(110) 및 메모리(115)는 또한 다양한 애플리케이션이 실행될 수 있는 운영 체제를 지원할 수 있다. 이러한 애플리케이션들은 메모리(115) 또는 스토리지 장치(120)로부터 데이터를 읽거나 스토리지 장치(120)에 데이터를 쓰기 위한 요청들(커맨드들이라고 지칭할 수 있음)을 발행할 수 있다. 스토리지 장치(120)는 장치 드라이버(130)를 사용하여 액세스될 수 있다.
스토리지 장치(120)는 연산 스토리지 유닛(135)과 연관될 수 있다. 도 3a 내지 도 3d에 도시된 바와 같이, 연산 스토리지 유닛(135)은 스토리지 장치(120)의 일부일 수도 있고, 또는 스토리지 장치(120)와 분리될 수도 있다. "연관된"이라는 문구는 연산 스토리지 유닛을 포함하는 스토리지 장치 및 연산 장치 자체의 일부가 아닌 연산 스토리지 유닛과 쌍을 이루는 스토리지 장치를 모두 포함하도록 의도되었다. 즉, 스토리지 장치와 연산 스토리지 장치는 물리적으로 분리된 장치이지만 서로 통신할 수 있는 방식으로 연결되어 있는 경우 "쌍을 이룬다"고 지칭할 수 있다.
또한, 스토리지 장치(120)와 쌍을 이루는 연산 스토리지 유닛(135) 사이의 연결은 두 장치들이 통신할 수 있게 할 수도 있지만, 어느 한쪽(또는 둘 다)의 장치가 다른 파트너와 동작할 수 있게 하지 않을 수도 있다. 즉, 스토리지 장치120)는 다른 연산 스토리지 유닛과 통신할 수 없을 수도 있고, 및/또는 연산 스토리지 유닛(135)은 다른 스토리지 장치 통신할 수 없을 수도 있다.
프로세서(110) 및 스토리지 장치(120)는 패브릭(fabric)에 연결될 수 있다. 패브릭은 정보가 전달될 수 있는 임의의 패브릭일 수 있다. 패브릭은 머신(105) 내부에 있을 수 있고, PCIe(Peripheral Component Interconnect Express), SATA(Serial AT Attachment), SCSI(Small Computer Systems Interface)와 같은 인터페이스를 사용할 수 있는 패브릭을 포함할 수 있다. 패브릭은 또한 머신(105)의 외부에 있을 수 있고, 이더넷(ethernet), 인피니밴드(infiniband) 또는 파이버 채널(Fibre Channel)과 같은 인터페이스를 사용할 수 있는 패브릭을 포함할 수도 있다. 또한 패브릭은 NVMe(Non-Volatile Memory) Express(NVMe), NVMe-oF(NVMe over Fabrics) 또는 SSDP(Simple Service Discovery Protocol)와 같은 하나 이상의 프로토콜들을 지원할 수 있다. 따라서, 패브릭은 내부 및 외부 네트워킹 연결을 모두 포함하는 것으로 생각될 수 있으며, 이를 통해, 커맨드가 직접적으로 또는 간접적으로 스토리지 장치(120)(보다 구체적으로는 스토리지 장치(120)와 연관된 연산 스토리지 장치)에 전송될 수 있다.
도 1은 하나의 스토리지 장치(120)와 하나의 연산 스토리지 유닛(135)을 도시하지만, 머신(105)에는 임의의 수(하나 이상)의 스토리지 장치 및/또는 임의의 수(하나 이상의)의 연산 스토리지 유닛이 존재할 수 있다.
도 1은 "스토리지 장치"라는 일반적인 용어를 사용하지만, 본 개시의 실시예는 연산 스토리지 유닛의 사용으로부터 이득을 얻을 수 있는 임의의 스토리지 장치 포맷들을 포함할 수 있으며, 그 예로는 하드 디스크 드라이브 및 SSD(Solid State Drive)가 포함될 수 있다. 이하에서, "SSD"에 대한 모든 언급은 본 개시의 다른 실시예를 포함하는 것으로 이해되어야 한다. 또한, 이상(및 이하)의 논의는 연산 스토리지 유닛과 연관된 스토리지 장치(120)에 초점을 맞추고 있지만, 본 개시의 실시예는 연산 스토리지 유닛을 포함하거나 연산 스토리지 유닛과 연관될 수 있는 스토리지 장치 이외의 장치로 확장될 수 있다. 이상(및 이하)의 "스토리지 장치"에 대한 모든 참조는 연산 스토리지 장치와 연관될 수 있는 다른 장치도 포함하는 것으로 이해될 수 있다.
호스트는, 예를 들어, 컴퓨팅 서버, 스토리지 서버, 스토리지 노드, 네트워크 서버 등과 같은 서버, 워크스테이션, 개인용 컴퓨터, 태블릿, 스마트폰 등과 같은 컴퓨터, 또는 이들의 임의의 조합을 포함하여, 호스트로서 구성될 수 있는 임의의 유형의 장치로 구현될 수 있다. 장치는, 예를 들어, 가속 장치(accelerator device), 스토리지 장치, 네트워크 장치, 메모리 확장(expansion) 및/또는 버퍼 장치, 그래픽 처리 장치(GPU), 신경 처리 장치(NPU), 텐서 처리 장치(TPU) 및/또는 이와 유사한 장치 또는 이들의 임의의 조합을 포함하는 장치로 구성될 수 있는 임의의 유형의 장치로 구현될 수 있다.
장치들(예를 들어, 호스트, CS 장치 및/또는 임의의 중개 장치) 간의 임의의 통신은 임의의 유형의 유선 및/또는 무선 통신 매체, 인터페이스, 프로토콜 및/또는PCIe, NVMe, 이더넷, NVMe-oF, 컴퓨트 익스프레스 링크(CXL) 및/또는 코히어런트 프로토콜(예: CXL.mem, CXL.cache, CXL.IO 및/또는 이와 유사한 것, Gen-Z, OpenCAPI(Open Coherent Accelerator Processor Interface), CCIX(가속기용 캐시 일관성 상호 연결), AXI(Advanced eXtensible Interface) 등 또는 이들의 조합, TCP/IP(전송 제어 프로토콜/인터넷 프로토콜), 파이버 채널(FibreChannel), 인피니밴드(InfiniBand), SATA(Serial AT Attachment), SCSI(Small Computer Systems Interface), SAS(Serial Attached SCSI), iWARP, 2G, 3G, 4G, 5G 등을 포함한 모든 세대의 무선 네트워크, 모든 세대의 Wi-Fi, Bluetooth, 근거리 통신(NFC) 등 또는 이들의 조합과 같은 일관성 있는 프로토콜 등을 포함하여 구현될 수 있는 인터페이스를 통해 발생할 수 있다. 일부 실시예들에서, 통신 인터페이스는 하나 이상의 링크들, 버스들, 스위치들, 허브들, 노드들, 라우터들, 변환기들, 중계기들 등을 포함하는 통신 패브릭을 포함할 수 있다. 일부 실시예들에서, 여기에 설명된 시스템은 하나 이상의 추가 통신 인터페이스들을 갖는 하나 이상의 추가 장치들을 포함할 수 있다.
장치가 스토리지 장치로 구현되는 실시 예에서, 스토리지 장치는 예를 들어, 솔리드 스테이트 미디어(예를 들어, SSD(solid state drive), 자기 미디어(예를 들어, 하드 디스크 드라이브(HDD)), 광학 미디어 및/또는 이와 유사한 것에 기초한 임의의 유형의 비휘발성 저장 매체 또는 이들의 임의의 조합을 포함할 수 있다. 예를 들어, 일부 실시예들에서, 스토리지 장치는 낸드(NAND) 플래시 메모리, 크로스 그리드 비휘발성 메모리와 같은 영구 메모리, 벌크 저항 변화 메모리, 상변화 메모리(PCM) 및/또는 이와 같은 메모리, 또는 이들의 조합에 기초한 SSD로 구현될 수 있다. 이러한 스토리지 장치는 3.5인치, 2.5인치, 1.8인치, M.2, EDSFF(Enterprise and Data Center SSD Form Factor), NF1 등과 같은 임의의 폼 팩터로 구현될 수 있으며, SATA, SCSI, SAS, U.2, M.2 등과 같은 임의의 커넥터 구성을 사용하여 구현될 수 있다. 이러한 스토리지 장치는 서버 섀시, 서버 랙, 데이터룸, 데이터센터, 에지 데이터센터, 모바일 에지 데이터센터 및/또는 이들의 조합과 함께 전체 또는 부분적으로 구현 및/또는 이와 관련하여 사용될 수 있다.
호스트 기능, 디바이스 기능 및/또는 그 밖의 기능을 포함하여, 여기에 설명된 임의의 기능은 하드웨어, 소프트웨어, 펌웨어 또는 하드웨어 및/또는 소프트웨어 조합 논리, 순차 논리, 타이머, 카운터, 레지스터, 상태 머신, DRAM(dynamic random access memory) 및/또는 SRAM(static random access memory)과 같은 휘발성 메모리, 플래시 메모리를 포함하는 비휘발성 메모리, 크로스 그리드(cross-gridded) 비휘발성 메모리와 같은 영구 메모리(persistent memory), 벌크 저항 변화 메모리, 상변화 메모리(phase change memory, PCM) 및/또는 이와 유사한 메모리 및/또는 이들의 조합, CLPD(complex programmable logic devices), FPGA(field programmable gate arrays), x86 프로세서와 같은 CISC(Complex Instruction Set Computer) 프로세서 및/또는 RISC-V 및/또는 ARM 프로세서와 같은 RISC(Reduced Instruction Set Computer) 프로세서들을 포함하는 ASIC(application specific integrated circuits) CPU들, GPU들, 뉴럴 프로세싱 유닛들(neural processing unit, NPU), 텐서 프로세싱 유닛들(tensor processing unit, TPU), 및/또는 임의의 메모리 유형에 저장된 커맨드들을 실행하는 것으로 구현될 수 있다. 일부 실시예에서, 하나 이상의 구성요소들은 시스템 온 칩(SOC)으로 구현될 수 있다.
도 2는 본 개시의 실시예에 따른 도 1의 머신(105)의 상세도를 도시한다. 도 2에서, 일반적으로, 머신(105)은 하나 이상의 프로세서(110)들을 포함하며, 이는 메모리 컨트롤러(125) 및 시계(205)을 포함할 수 있고, 이는 머신의 구성요소들의 동작을 조정하는 데 사용될 수 있다. 프로세서(110)는 또한 메모리(115)에 결합될 수 있으며, 메모리(115)는 예를 들어 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM) 또는 기타 상태 보존 미디어를 포함할 수 있다. 프로세서(110)는 또한 스토리지 장치(120) 및 네트워크 커넥터(210)에 결합될 수 있으며, 이는 예를 들어 이더넷 커넥터 또는 무선 커넥터일 수 있다. 프로세서(110)는 또한 버스(215)에 연결될 수 있으며, 버스(215)에는 사용자 인터페이스(220) 및 입출력(I/O) 인터페이스 포트가 부착될 수 있고, 입출력 엔진(225)을 사용하여 관리될 수 있는 다른 구성요소들 중에서도 입출력(I/O) 인터페이스 포트가 부착될 수 있다.
도 3a 내지 도 3d는 본 개시의 실시예들에 따라, 도 1의 스토리지 장치(120)와 연관될 수 있는 도 1의 연산 스토리지 장치(135)("연산 장치" 또는 "장치"라고도 지칭될 수 있음)의 다양한 배열을 도시한다. 도 3a에는 스토리지 장치(305) 및 연산 장치(310-1)가 도시되어 있다. 스토리지 장치(305)는 컨트롤러(315) 및 스토리지 장치(320-1)를 포함할 수 있고, 큐 페어들(queue pairs)을 통해 접속할 수 있다: 큐 페어들(325)은 스토리지 장치(305)의 관리 및 스토리지 장치(305)의 I/O 제어를 위해 모두 사용될 수 있다.
연산 장치(310-1)는 스토리지 장치(305)와 쌍을 이룰 수 있다. 연산 장치(310-1)는 하나 이상의 서비스들(335-1 및 335-2)을 제공할 수 있는 임의의 수(하나 이상)의 프로세서(330)들을 포함할 수 있다. 더 명확히 하기 위해, 각 프로세서(330)는 임의의 수(하나 이상)의 서비스들(335-1 및 335-2)을 제공할 수 있다(본 개시의 실시예들은 정확히 2개의 서비스들(335-1 및 335-2)를 포함하는 연산 장치(310-1)를 포함할 수 있다). 각 프로세서(330)는 단일 코어 프로세서 또는 멀티코어 프로세서일 수 있다. 연산 장치(310-1)는 큐 페어들(queue pair)(340)을 통해 접근될 수 있으며, 이는 연산 장치(310-1)의 관리 및/또는 연산 장치(310-1)의 입출력을 제어하기 위해 사용될 수 있다.
프로세서(들)(330)은 근접-스토리지 처리(near-storage processing), 즉 도 1의 프로세서(110)보다 스토리지 장치(305)에 더 가까운 처리로 간주될 수 있다. 프로세서(들)(330)가 스토리지 장치(305)에 더 가깝기 때문에, 프로세서(들)(330)는 도 1의 프로세서(110)가 그러한 커맨드를 실행하는 것보다 더 빠르게 스토리지 장치(305)에 저장된 데이터에 대한 커맨드를 실행할 수 있을 수 있다. 도 3a에는 도시되지 않았지만, 프로세서(들)는 스토리지 장치(305)에 저장된 데이터에 대한 커맨드의 로컬 실행에 사용될 수 있는 연관된 메모리(예컨대, 도 4 및 관련 설명 참조)를 가질 수 있다. 이러한 연관된 메모리는 도 1의 메모리(115)와 유사한 로컬 메모리, 온칩 메모리(메모리(115)와 같은 메모리보다 빠를 수 있지만, 아마도 생산 비용이 더 많이 들 수 있는), 또는 둘 다를 포함할 수 있다.
도 3A는 스토리지 장치(305) 및 연산 장치(310-1)가 패브릭(345)을 통해 개별적으로 접근 가능한 것으로 도시하지만, 본 개시의 실시예들은 또한 스토리지 장치(305) 및 연산 장치(310-1)가 직렬로 연결될 수 있다(도 1에 도시된 바와 같이). 즉, 스토리지 장치(305) 및 연산 장치(310-1)로 향하는 커맨드들은 모두 패브릭(345)에 대한 동일한 물리적 연결에서 수신될 수 있고, 하나의 장치를 통과하여 다른 디바이스에 도달할 수 있다. 예를 들어, 연산 장치(310-1)가 스토리지 장치(305)와 패브릭(345) 사이에 위치하는 경우, 연산 장치(310-1)는 연산 장치(310-1)와 스토리지 장치(305) 양쪽으로 향하는 커맨드들을 수신할 수 있다: 연산 장치(310-1)는 연산 장치(310-1)로 향하는 커맨드들을 처리할 수 있고, 스토리지 장치(305)로 향하는 커맨드들을 스토리지 장치(305)로 전달할 수 있다. 유사하게, 스토리지 장치(305)가 연산 장치(310-1)와 패브릭(345) 사이에 위치하는 경우, 스토리지 장치(305)는 스토리지 장치(305) 및 연산 장치(310-1) 모두로 향하는 커맨드들을 수신할 수 있다: 스토리지 장치(305)는 스토리지 장치(305)로 향하는 커맨드들을 처리하고, 연산 장치(310-1)로 향하는 커맨드들을 연산 장치(310-1)로 전달할 수 있다.
서비스들(335-1 및 335-2)은 스토리지 장치(305)에 저장된 데이터 상에서 실행될 수 있는 다수의 상이한 기능들(예컨대, CSF들)을 제공할 수 있다. 예를 들어, 서비스들(335-1 및 335-2)은 데이터의 암호화, 복호화, 압축 및/또는 압축 해제, 삭제 코딩, 및/또는 정규 표현식 적용(applying regular expressions)과 같은 미리 정의된 기능들을 제공할 수 있다. 또는, 서비스들(335-1 및 335-2)은 데이터 검색 및/또는 SQL 기능과 같은 보다 일반적인 기능들을 제공할 수 있다. 서비스들(335-1 및 335-2)은 또한, 애플리케이션별(application-specific) 코드 실행도 지원할 수 있다. 즉, 서비스들(335-1 및 335-2)을 사용하는 애플리케이션은 스토리지 장치(305)의 데이터를 사용하여 실행되는 커스텀 코드를 제공할 수 있다. 서비스들(335-1 및 335-2)은 또한 그러한 기능들의 임의의 조합일 수도 있다. 표 1은 프로세서(330)에 의해 제공될 수 있는 서비스들의 일부 예들을 나열한다.
압축(compression)
암호화(encryption)
데이터베이스 필터(database filter)
이레이저 코드(erasure coding)
RAID
해시(hash)/crc
RegEx (패턴 매칭)
분산 수집(scatter gather)
파이프라인(pipeline)
비디오 압축(video compression)
데이터 중복 제거(data deduplication)
운영 체제 이미지 로더(operating system image loader)
컨테이너 이미지 로더(container image loader)
버클리 패킷 필터(BPF) 로더(berkeley packet filter (BPF) loader)
FPGA 비트스트림 로더(FPGA bitstream loader)
대용량 데이터 세트(large data set)
프로세서(들)(330)(및, 실제로, 연산 장치(310-1))는 임의의 원하는 방식으로 구현될 수 있다. 예시적인 구현들은, 중앙 처리 유닛(CPU) 또는 일부 다른 프로세서, 그래픽 처리 유닛(GPU), 범용 GPU(GPGPU), 데이터 처리 유닛(DPU), 텐서 처리 유닛(TPU), 또는 신경 처리 유닛(NPU) 등과 같은 로컬 프로세서를 포함할 수 있다. 프로세서(들)(330)는 또한 다른 가능성들 중에서도, FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)을 사용하여 구현될 수 있다. 연산 장치(310-1)가 하나 이상의 프로세서(330)들을 포함하는 경우, 각 프로세서는 상술한 바와 같이 구현될 수 있다. 예를 들어, 연산 장치(310-1)는 CPU, TPU 및 FPGA를 각각 하나씩 포함할 수도 있고, 연산 장치(310-1)는 2개의 FPGA를 포함할 수도 있고, 연산 장치(310-1)는 2개의 CPU와 1개의 ASIC 등을 포함할 수도 있다.
원하는 해석에 따라, 연산 장치(310-1) 또는 프로세서(들)(330)는 연산 스토리지 유닛으로 생각될 수 있다.
도 3a는 스토리지 장치(305)와 연산 장치(310-1)를 별개의 장치로 도시한 반면, 도 3b에서는 이들이 결합될 수 있다. 따라서, 연산 장치(310-2)는 컨트롤러(315), 스토리지 장치(320-1), 및 서비스들(335-1 및 335-2)을 제공하는 프로세서(들)(330)를 포함할 수 있다. 도 3a의 저장 디바이스(305) 및 연산 디바이스(310-1)와 마찬가지로, 관리 및 입출력 커맨드들은 큐 페어들(340)을 통해 수신될 수 있다. 비록 연산 장치(310-2)가 스토리지 장치 및 프로세서(들)(330)를 모두 포함하는 것으로 도시되어 있지만, 도 3b는 여전히 연산 스토리지 장치와 연관된 스토리지 장치를 포함하는 것으로 간주될 수 있다.
도 3c에 도시된 또 다른 변형에서, 연산 장치(310-3)가 도시된다. 연산 장치(310-3)는 컨트롤러(315) 및 스토리지(320-1), 및 서비스들(335-1 및 335-2)을 제공하는 프로세서(들)(330)를 포함할 수 있다. 그러나, 연산 장치(310-3)는 컨트롤러(315), 스토리지(320-1) 및 프로세서(들)를 포함하는 단일 구성 요소로 간주될 수 있지만(또한 연산 스토리지 유닛과 연관된 스토리지 장치로도 간주될 수 있음), 도 3B에 도시된 구현과 달리, 컨트롤러(315) 및 프로세서(들)는 각각 자체 큐 페어들(325 및 340)(다시, 관리 및/또는 I/O를 위해 사용될 수 있음)을 포함할 수 있다. 큐 페어들(325)을 포함함으로써, 컨트롤러(315)는 스토리지(320-1)에 대한 투명한 액세스를 제공할 수 있다(모든 통신이 프로세서(들)(330)를 통해 진행되도록 요구하지 않고).
또한, 프로세서(들)(330)는 스토리지(320-1)에 대한 프록시된 스토리지 액세스(proxied storage access)(350)를 가질 수 있다. 따라서, 컨트롤러(315)를 통해 액세스 요청을 라우팅하는 대신에, 프로세서(들)(330)는 스토리지(320-1)로부터 데이터에 직접 액세스할 수 있을 수 있다.
도 3c에서, 컨트롤러(315) 및 프록시된 스토리지 액세스(350)는 모두 선택적 요소임을 나타내기 위해 점선으로 도시되어 있으며, 구현에 따라 생략될 수 있다.
마지막으로, 도 3d는 또 다른 구현을 도시한다. 도 3에는, 도 3C와 유사한 컨트롤러(315) 및 프록시된 스토리지 액세스(350)를 포함할 수 있는 연산 장치(310-4)가 도시되어 있다. 또한, 연산 장치(310-4)는 하나 이상의 스토리지들(320-1 내지 320-4)의 어레이를 포함할 수 있다. 도 3d은 4개의 스토리지 요소들을 도시하지만, 본 개시의 실시예들은 임의의 수(하나 이상)의 스토리지 요소들을 포함할 수 있다. 또한, 개별 스토리지 요소들은 도 3a 내지 도 3d에 도시된 것과 같은 다른 스토리지 장치일 수 있다.
연산 장치(310-4)는 하나 이상의 스토리지 요소들(320-1 내지 320-4)를 포함할 수 있기 때문에, 연산 장치(310-4)는 어레이 컨트롤러(355)를 포함할 수 있다. 어레이 컨트롤러(355)는 데이터가 스토리지 요소들(320-1 내지 320-4)에 저장되고 스토리지 요소들(320-1 내지 320-4)로부터 검색되는 방법을 관리할 수 있다. 예를 들어, 스토리지 요소들(320-1 내지 320-4)이 RAID(Redundant Array of Independent Disks)의 일부 레벨로 구현되는 경우, 어레이 컨트롤러(355)는 RAID 컨트롤러일 수 있다. 스토리지 요소들(320-1 내지 320-4)이 어떤 형태의 이레이저 코딩(erasure coding)을 사용하여 구현되는 경우, 어레이 컨트롤러(355)는 이레이저 코딩 컨트롤러일 수 있다.
도 4는 본 개시의 예시적인 실시예에 따라, 프로그램에 대한 동적 메모리 보호를 제공하는 연산 스토리지 장치의 개념도를 도시한다. 특히, 도 4는 컨트롤러(404, 예를 들어, NVMe 컨트롤러), 하나 이상의 연산 네임스페이스들(406), 서브시스템 로컬 메모리 네임스페이스(장치 메모리)들을 포함할 수 있는 하나 이상의 메모리 네임스페이스들(408), 및 논의될 하나 이상의 스토리지 네임스페이스들(410) 및 통신 포트(411)(NVMe와 같은 적절한 프로토콜을 사용하여 호스트와 같은 임의의 적절한 디바이스와 정보를 송수신하기 위한)를 포함할 수 있는 CS 장치(402)를 나타낸다. 일부 측면들에서, 하나 이상의 메모리 네임스페이스들(408)은 휘발성 메모리를 포함할 수 있다. 다른 측면들에서, 하나 이상의 스토리지 네임스페이스들(410)은 플래시와 같은 비휘발성 메모리를 포함할 수 있다. 일부 양태들에서, 메모리 네임스페이스들은 바이트 주소 지정이 가능한 반면, 스토리지 네임스페이스들은 표준 블록 주소 지정이 가능할 수 있다. 연산 네임스페이스는 연산 프로그램을 실행하기 위해 NVMe 커맨드를 통해 주소가 지정될 수 있는 추상 리소스를 포함할 수 있다.
연산 네임스페이스(406)는 프로그램(예컨대, 도 4의 프로그램 0)을 실행하는 하나 이상의 컴퓨팅 엔진들(예를 들어, 도 4에 도시된 CE0, CE1 및 CE2와 같은 연산 엔진들)의 추상화의 표현을 포함할 수 있다. 연산 네임스페이스(406)는 연산 엔진(computing engine, CE) 및 프로그램으로 지정된 실제 연산 모듈과 같은 추가 리소스들을 포함할 수 있다. 연산 엔진 리소스는 CPU, ASIC, FPGA, GPU, TPU 등과 같은 하나 이상의 프로세싱 요소들로 구성될 수 있다. 예를 들어, 연산 네임스페이스(406)는 FPGA와 추가적으로 페어링될 수 있는 CPU 코어를 포함할 수 있다. 이러한 각 자원의 활용은 배타적일 필요는 없다. CPU 코어는 다른 연산 네임스페이스에도 유사하게 재사용/매핑될 수 있으며, ASIC 등에도 유사하게 재사용될 수 있다. 네임스페이스 추상화를 통해 연산 리소스의 하드웨어 특성을 선택적으로 노출할 수 있다(즉, 호스트가 CPU 또는 FPGA에 직접 노출되지 않고 가상화된 연산 네임스페이스와 인터페이스하는 방식).
연산 프로그램들은 연산 엔진(CE)들에서 실행될 수 있으며, 기기 로컬 메모리를 통해 제공되거나 연산 엔진(CE)들로 직접 스트리밍되는 데이터를 처리할 수 있다. 이러한 프로그램들은 일부 측면들에서 NVMe 장치에 대한 연산 스토리지를 허용할 수 있다. 다양한 사용 모델들을 사용하여 장치에서 제공되는 연산 스토리지(CS) 기능을 관리하고 사용할 수 있다. 연산 리소스는 네임스페이스로 제공될 수 있으며, 필요한 경우 가상 머신의 가상 환경에 직접 매핑될 수 있다.
언급된 바와 같이, 일부 양태들에서, 개시된 실시예들은 멀티-테넌트 환경에서 디바이스 메모리를 보호하기 위한 시스템 및 방법들을 포함할 수 있다. 메모리 네임 스페이스(408)는 NVMe를 위한 서브시스템 로컬 메모리(subsystem local memory, SLM)로 지칭될 수 있는 장치 메모리를 포함할 수 있다. 또한, 그러한 SLM은 희소 리소스를 나타낼 수 있다(즉, 특정 양의 메모리만 설치되어 호스트에 제공될 수 있음). 이러한 메모리의 희소성은 디바이스 폼 팩터, 전력 소비, 비용 및 시장 적용 가능성을 포함한 다양한 요인에 기인할 수 있다. 예를 들어, 디바이스(402)는 8GB의 DRAM으로만 채워질 수 있는 반면, 호스트 시스템은 1TB의 DRAM이 허용될 수 있다. 장치 메모리(예컨대, SLM)는 장치에서 실행되는 프로그램들에서 연산 스토리지의 일부로 사용될 수 있으며, 프로그램들이 호스트에서 전적으로 실행되는 경우와 비교하여 성능, 전력 및 비용 절감을 제공할 수 있다. 일부 측면들에서, 디바이스(402)에서 실행되는 프로그램이 하나 이상 존재할 수 있고, 디바이스 프로그램을 실행하는 호스트 유저가 하나 이상 존재할 수 있다.
일부 측면들에서, 호스트 유저들은 독립형(standalone) 방식으로 프로그램을 실행하거나 가상 머신 또는 컨테이너에서 실행할 수 있다. 이러한 각각의 테넌트들은 더 큰 메모리 네임스페이스(408)(예컨대, SLM)로부터 할당된 그들 자신의 메모리 공간을 사용할 수 있다. 한 유저에게 할당된 메모리는 기기에서 실행 중인 프로그램을 통해 다른 유저가 액세스할 수 없는 경우에만 데이터 보안 및 데이터 프라이버시가 유지된다. 이를 위해 일부 NVMe 기반 장치에서는 메모리 영역이 해당 애플리케이션의 용도에 맞게 장치에 사전 등록되는 메커니즘을 사용할 수 있다. 이 등록에는 프로그램 실행 시 액세스할 메모리 영역이 포함될 수 있다. 실행 전에 미리 여러 번 등록할 수 있다. 장치 프로그램이 실행될 때, 등록 ID는 액세스될 실제 SLM 영역들이 포함된 프로그램의 다른 파라미터들과 함께 제공된다.
이러한 사전-등록 메커니즘은 모든 애플리케이션들이 특정 프로그램 실행을 위해 소비할 메모리 양을 결정할 수 있는 것은 아니기 때문에, 일부 애플리케이션에서는 작동할 수 있지만 모든 애플리케이션에서는 작동하지 않을 수 있다. 일부 특정 사용 사례들의 경우 애플리케이션이 SLM 양을 미리 결정할 수 있지만, 다른 사용 사례들의 경우 애플리케이션은 IO 요청이 수신될 때만 메모리 사용량을 알 수 있다. 오브젝트 스토리지 및 처리 애플리케이션은 다양한 크기의 데이터 스트림을 소비할 수 있다(예를 들어, 약 1MB에서 1,000MB까지 범위). SLM은 부족한 리소스를 나타낼 수 있으므로, 사전-할당은 실행 가능한 옵션이 아닐 수 있다. 장치 메모리 요구 사항은 즉각적으로 처리되어야 하며 보호 기능을 적용해야 한다(예를 들어, 여기에 공개된 동적 메모리 보호 체계).
따라서, 사전 등록 메커니즘은 적어도 다음과 같은 이유로, 몇몇 케이스에서 유용성이 부족할 수 있다: 프로그램 실행을 위한 메모리 사용량을 사전에 잘 알고 있어야 한다. 메모리 영역을 장치에 미리 등록해야 한다. 등록 커맨드는 NVMe 관리 큐에 실행되는 권한 있는 커맨드이다. 실행 전에 관리자 커맨드를 전송하는 방법이 있더라도 커맨드에 대해 발생하는 레이턴시는 각 프로그램 실행에 대한 세금이 된다.
이러한 이유로 일부 정의들은 제한적이며 장치 메모리를 동적으로 사용하는 애플리케이션에는 적용되지 않을 수 있다. 본 개시는 동적 메모리 범위가 커맨드에 존재하는지를 지정하는 커맨드의 필드가 연산 스토리지(CS) 장치에 의해 수신되는 실시예들을 설명한다.
도 5a는 본 개시의 일 실시예에 따라, 연산 스토리지 장치에 대한 메모리 보호를 위해 사용될 수 있는 파라미터를 지정하는 필드를 도시한다. 다이어그램(500)에 표시된 것처럼, 메모리 영역들의 개수(number of memory regions, NUMR)는 커맨드에 지정된 서브시스템 로컬 메모리 영역들의 개수를 지정하는 데 사용될 수 있다. 또한 메모리 영역들의 개수(NUMR)가 0이 아닌 값이면 동적 메모리 영역이 프로그램 실행 커맨드에 적용된다. 메모리 영역들의 개수(NUMR)가 0으로 설정되면 메모리 영역이 지정되지 않으며, 시스템은 사전 등록된 (정적) 메모리 범위를 적용할 수 있다.
일부 실시예들에서, RSID(Memory Range Set ID)와 같은 메모리 범위 식별자는 사전 등록된 메모리 영역들에 대한 필드를 포함할 수 있으며, 사전 등록된 영역 세트가 사용되지 않는다고 주장하는 0으로 설정될 수 있다.
그런 다음, 실제 메모리 영역들은 데이터 포인터(data pointer, DPTR) 필드로 주소 지정된 메모리에 채워진다(예를 들어, NVMe 표준(specification)에서 제공하는 정의와 유사). 이 필드는 프로그램 매개변수들을 포함하는 호스트 버퍼를 지정한다. 버퍼의 길이는 데이터 길이(DLEN) 필드에 의해 정의된다.
도 6은 본 개시의 예시적인 실시예에 따라, 연산 스토리지 장치에 대한 메모리 보호를 위해 사용될 수 있는 데이터 포인터의 표현을 도시한다. 다이어그램(600)에 도시된 바와 같이, NUMR 필드가 0이 아니고 RSID가 0으로 설정되면, 호스트 버퍼는 프로그램 파라미터가 뒤따르는 오프셋 0의 NUMR 메모리 영역을 포함할 수 있다. 이 경우 DLEN 필드는 지정된 전체 메모리 영역과 프로그램 파라미터 데이터 길이의 합과 같다. 일부 양태들에서, NUMR이 0이 아닌 필드일 때, 메모리 범위들(602)은 데이터 포인터(DPTR)의 오프셋 0에서 시작하는 메모리 범위들을 나타낸다. 각 메모리 범위는 프로토콜(예를 들어, NVMe 프로토콜)에 따라 지정될 수 있다. 프로그램 파라미터 데이터(604)는 하나 이상의 프로그램 파라미터를 포함할 수 있고, NUMR에 의해 지정된 메모리 범위의 총 개수를 곱한 각 메모리 범위의 길이에 의해 결정될 수 있는 데이터 포인터(DPTR)의 오프셋에서 시작할 수 있다. 메모리 범위들(602)의 개수가 동적일 수 있으므로, 프로그램 파라미터 데이터(604)의 시작도 동적이다.
각 메모리 영역에는 메모리 네임스페이스 ID, 메모리 네임스페이스 내 영역의 시작 오프셋, 사용 중인 메모리 영역의 총 길이 등의 세부 정보가 포함된 정의가 존재한다. 위에 지정된 대로 이 커맨드에서 동적으로 캡처할 수 있는 프로그램이 사용할 수 있는 메모리 영역이 많이 있을 수 있다
따라서, 메커니즘은 멀티-테넌트 환경에서 장치 메모리에 액세스하는 동안 연산 프로그램에 대한 동적 메모리 보호(예를 들어, 업데이트 가능한 프로그램 상태별 메모리 보호)를 지원하는 것을 가능하게 한다. 현재 프로토콜과 메커니즘은 적어도 메모리 사용에 앞서 권한 있는 사용자 및 지식이 필요할 수 있기 때문에 금지될 수 있다. 데이터 분석, 빅 데이터, 객체 기반 컴퓨팅과 같은 대부분의 프로그램 사용은 필요할 때 동적으로 메모리를 사용한다. 이 동적 메모리 사용 보호 체계를 통해, 호스트 응용 프로그램은 멀티-테넌트 환경의 장치에서 상술된 보호 기능을 사용하여 프로그램을 안전하게 실행할 수 있다. 이러한 보호를 제공하면 연산 스토리지 가능 장치가 더 많은 태스크들을 수행하고 다양한 용도를 지원할 수 있다.
도 7은 본 개시의 실시예들에 따라, 개시된 시스템과 연관된 일부 예시적인 동작을 예시하는 대표적인 흐름도(700)를 도시한다. S702 단계에서, 개시된 시스템은 프로그램과 관련된 연산 리소스들의 양과 메모리 리소스들의 양을 지정하는 커맨드를 수신한다. 다른 실시예들에서, 커맨드는 하나 이상의 메모리 리소스들의 일부에 대한 액세스가 제한되도록 지정할 수 있다. S704 단계에서, 개시된 시스템은 컨트롤러에 의해 커맨드를 처리하며, 처리는 하나 이상의 연산 리소스들의 일부를 할당하는 것 및 프로그램에 의해 사용하기 위한 커맨드에 기초하여 하나 이상의 메모리 리소스들의 일부를 할당하는 것이 포함한다. 일 실시예에서, 시스템은 프로그램이 하나 이상의 메모리 리소스들의 할당된 부분과 다른 하나 이상의 메모리 리소스들의 영역에 액세스하려고 시도하는 것을 판별하고, 시스템이 프로그램의 실행을 중지한다고 결정한다. 일부 실시예들들에서, 하나 이상의 메모리 리소스들은 하나 이상의 로컬 메모리 네임스페이스들을 포함할 수 있다. 다른 실시예들에서, 시스템은 하나 이상의 스토리지 네임스페이스들을 포함하는 하나 이상의 스토리지 리소스들을 더 포함할 수 있다. 일 실시예에서, 프로그램은 적어도 제2 프로그램을 포함하는 멀티-테넌트 환경의 제1 프로그램이다. 다른 실시예들에서, 커맨드는 NVMe(non-volatile memory express)를 포함하는 프로토콜에 기초할 수 있다. 일 실시 예에서, 하나 이상의 연산 리소스들은 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), FPGA(field programmable gate array), 텐서 처리 장치(TPU) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나를 포함하는 연산 리소스들을 포함할 수 있다. 몇몇 실시예들에서, 연산 스토리지 장치는 NVMe(non-volatile memory express) 지원 스토리지 장치를 포함할 수 있다.
도 8은 본 발명의 실시 예들을 실시하기 위해 사용될 수 있는 시스템의 예시적인 개략도를 도시한다. 도 8에 도시된 바와 같이, 이 특정 실시 예는 하나 이상의 관리 컴퓨팅 엔티티들(800), 하나 이상의 네트워크들(805) 및 하나 이상의 사용자 장치들(810)(예를 들어, 호스트 장치, 스토리지 장치, 추가 장치 등)를 포함할 수 있다. 다양한 실시예들에서, 관리 컴퓨팅 엔티티들(800)은 도 7의 예시적인 동작과 관련하여 설명된 동작을 포함하지만 이에 제한되지 않는 본 개시 전반에 걸쳐 설명된 개시된 시스템들 및 관련된 실시 예들과 관련된 동작들을 실행하도록 구성될 수 있다. 또한, 관리 컴퓨팅 엔티티들(800)은 개시된 시스템의 임의의 적절한 부분(예를 들어, 하나 이상의 CSD, 호스트 애플리케이션, 원격 호스트, 다른 장치, 이들의 조합 등)에 존재할 수 있다. 본 명세서에서 상호 교환적으로 사용되는 이러한 구성 요소들, 엔티티들, 장치들, 시스템들 및 유사 단어들 각각은 예를 들어 동일하거나 다른 유선 또는 무선 네트워크를 통해 서로 직접 또는 간접적으로 통신할 수 있다. 또한, 도 8은 다양한 시스템 엔티티들을 별도의 독립적인 엔티티들로 설명하지만, 다양한 실시 예들이 이 특정 아키텍처에 한정되지는 않는다. 언급된 바와 같이, 통신은 본 명세서에서 추가로 설명되는 임의의 적합한 프로토콜을 사용하여 수행될 수 있다.
도 9는 본 발명의 실시 예들에 따른 관리 컴퓨팅 엔티티의 예시적인 개략도를 도시한다. 언급된 바와 같이, 관리 컴퓨팅 엔티티는 개시된 시스템들 및 개시 전체에 걸쳐 기술된 관련 실시 예들과 관련된 동작을 실행하도록 구성될 수 있다. 또한, 관리 컴퓨팅 엔티티(800)는 개시된 시스템의 임의의 적절한 부분에 존재할 수 있다. 특히, 콘텐츠 구성 요소는 여기에 설명된 시스템을 통해 전송될 데이터(예를 들어, 비디오, 오디오, 텍스트, 데이터, 이들의 조합 등)를 나타내는 신호들을 결정하는 역할을 할 수 있다. 다른 실시 예에서, 전송을 위한 신호의 결정은 예를 들어, 장치에 대한 사용자 입력, 시스템과 연관된 네트워크 상의 미리 결정된 데이터 전송 스케줄, 네트워크 조건의 변화 등에 기초할 수 있다. 일 실시 예에서, 신호는 데이터 프레임에 캡슐화 될 수 있는 데이터 및/또는 장치에서 네트워크의 하나 이상의 장치로 보내지도록 구성된 패킷을 포함할 수 있다
다른 실시 예에서, 프로세싱 요소(905)는 개시된 시스템들과 연관된 네트워크를 통해 전송되는 데이터와 관련된 다양한 파라미터들을 결정하는 역할을 할 수 있다. 다른 예로서, 프로세싱 요소(905)는 오프로드 기능의 적어도 일부, 데이터 전처리 또는 후처리, 이들의 조합 등과 같은 다양한 가속 동작들을 수행하는 역할을 할 수 있다.
일 실시예에서, 전송 구성요소(미도시)는 네트워크상의 한 장치에서 다른 장치로 신호를 전송하는 역할을 할 수 있다. 예를 들어, 송신 컴포넌트는 네트워크를 통해 신호를 송신하기 위해 송신기(예를 들어, 이하 도 10의 송신기(1004))를 준비하는 역할을 할 수 있다. 예를 들어, 전송 구성 요소는 하나 이상의 버퍼에 데이터를 대기시킬 수 있고, 전송 장치 및 관련 송신기들이 기능하고 네트워크를 통해 신호를 전송하기에 충분한 전력을 가지고 있는지 확인할 수 있고, 데이터의 전송과 관련된 하나 이상의 파라미터들(예를 들어, 변조 유형, 신호 증폭, 신호 전력 레벨, 잡음 제거, 이들의 조합 등)을 조정할 수 있다.
일반적으로, 본 명세서에서 사용되는 컴퓨팅 엔티티, 컴퓨터, 엔티티, 디바이스, 시스템 및/또는 유사한 용어는 예를 들어 하나 이상의 컴퓨터들, 컴퓨팅 엔티티, 데스크톱 컴퓨터, 휴대폰, 태블릿, 패블릿, 노트북, 노트북, 분산 시스템, 게임 콘솔(예: Xbox, Play Station, Wii), 시계, 안경, iBeacon, 근접 비콘, 키포브, 무선 주파수 식별(RFID) 태그, 이어피스, 스캐너, 텔레비전, 동글(dongles), 카메라, 손목 밴드, 웨어러블 아이템/디바이스, 키오스크, 입력 단자, 서버 또는 서버 네트워크, 블레이드, 게이트웨이, 스위치, 처리 장치, 처리 장치, 셋톱 박스, 릴레이, 라우터, 네트워크 액세스 포인트, 기지국 등 및/또는 여기에 설명된 기능들, 동작들 및/또는 프로세스들을 수행하도록 조정된 장치들 또는 엔티티들의 조합을 지칭할 수 있다. 이러한 기능들, 동작들 및/또는 프로세스들은 예를 들어 전송, 수신, 작동, 처리, 표시, 저장, 결정, 생성/생성, 모니터링, 평가, 비교 및/또는 본 명세서에서 상호교환적으로 사용되는 유사한 용어들을 포함할 수 있다. 일 실시 예에서, 이러한 기능들, 동작들 및/또는 프로세스들은 데이터, 콘텐츠, 정보 및/또는 본 명세서에서 교환 가능하게 사용되는 유사한 용어들에 대해 수행될 수 있다.
나타낸 바와 같이, 일 실시 예에서, 관리 컴퓨팅 엔티티(800)는 또한 예를 들어 전송, 수신, 작동, 처리, 표시, 저장 및/또는 기타 등등이 될 수 있는 데이터, 콘텐츠, 정보 및/또는 본 문서에서 상호교환적으로 사용되는 유사한 용어를 통신함으로써 다양한 컴퓨팅 엔티티들과 통신하기 위한 하나 이상의 통신 인터페이스(920)들을 포함할 수 있다. 예를 들어, 관리 컴퓨팅 엔티티(800)는 사용자 장치(810) 및/또는 다양한 다른 컴퓨팅 엔티티들과 통신할 수 있다.
도 9에 도시된 바와 같이, 일 실시 예에서, 관리 컴퓨팅 엔티티(800)는 예를 들어 버스를 통해 관리 컴퓨팅 엔티티(800) 내의 다른 요소와 통신하는 하나 이상의 프로세싱 요소(905)(프로세서, 프로세싱 회로 및/또는 본 문서에서 상호 교환적으로 사용되는 유사한 용어들로 지칭될 수 있음)들을 포함하거나 그와 통신할 수 있다. 이해될 수 있는 바와 같이, 프로세싱 요소(905)는 다수의 상이한 방식으로 구현될 수 있다. 예를 들어, 프로세싱 요소(905)는 하나 이상의 CPLD(complex programmable logic device)들, 마이크로프로세서들, 멀티코어 프로세서들, 공동 프로세싱 엔티티들, ASIP(application-specific instruction-set processor)들, 마이크로컨트롤러들 및/또는 컨트롤러들로 구현될 수 있다. 또한, 프로세싱 요소(905)는 하나 이상의 다른 프로세싱 장치들 또는 회로들로 구현될 수 있다. 회로라는 용어는 완전한 하드웨어 구현 또는 하드웨어와 컴퓨터 프로그램 제품들의 조합을 의미할 수 있다. 따라서, 프로세싱 요소(905)는 집적 회로, ASIC(application specific integrated circuit)들, FPGA(field programmable gate array)들, PLA(programmable logic array)들, 하드웨어 가속기들, 기타 회로 등으로 구현될 수 있다. 따라서 이해되는 바와 같이, 프로세싱 요소(905)는 특정 용도를 위해 구성되거나 휘발성 또는 비휘발성 매체에 저장된 커맨드를 실행하도록 구성될 수 있으며, 그렇지 않으면 프로세싱 요소(905)에 액세스 가능하도록 구성될 수 있다. 이와 같이, 하드웨어 또는 컴퓨터 프로그램 제품들에 의해 구성되든, 또는 이들의 조합에 의해 구성되든, 프로세싱 요소(905)는 그에 따라 구성될 때 본 발명의 실시 예들에 따른 단계들 또는 동작들을 수행할 수 있다.
일 실시 예에서, 관리 컴퓨팅 엔티티(800)는 비휘발성 매체(비휘발성 스토리지 장치, 메모리, 메모리 저장 장치, 메모리 회로 및/또는 본 명세서에서 상호교환적으로 사용되는 유사한 용어라고도 함)를 더 포함하거나 이와 통신할 수 있다. 일 실시 예에서, 비휘발성 스토리지 장치 또는 메모리는 하드 디스크, ROM, PROM, EPROM, EEPROM, 플래시 메모리, MMC, SD 메모리 카드, 메모리 스틱, CBRAM, PRAM, FeRAM, NVRAM, MRRAM, SONOS, FJG RAM, Millipede 메모리, Racetrack 메모리 등 의 메모리를 포함하지만 이에 한정되지 않는 하나 이상의 비휘발성 스토리지 장치 또는 메모리 매체(910)를 포함할 수 있다. 인식되는 바와 같이, 비휘발성 스토리지 또는 메모리 매체는 데이터베이스들, 데이터베이스 인스턴스들, 데이터베이스 관리 시스템들, 데이터, 애플리케이션들, 프로그램들, 프로그램 구성 요소들, 스크립트들, 소스 코드, 객체 코드, 바이트 코드, 컴파일된 코드, 해석된 코드, 기계 코드, 실행 가능한 커맨드들 등을 저장할 수 있다. 본 명세서에서 사용되는 용어 데이터베이스, 데이터베이스 인스턴스, 데이터베이스 관리 시스템 및/또는 유사한 용어는 하나 이상의 데이터베이스 모델들을 사용하여 컴퓨터 판독 가능 저장 매체에 저장되는 레코드 또는 데이터의 집합을 의미할 수 있다. 하나 이상의 데이터베이스 모델들은 계층적 데이터베이스 모델, 네트워크 모델, 관계형(relational) 모델, 엔티티-관계 모델, 객체(object) 모델, 문서(document) 모델, 시맨틱(Semantic) 모델, 그래프 모델 등과 같은 것을 의미할 수 있다.
일 실시 예에서, 관리 컴퓨팅 엔티티(800)는 휘발성 매체(휘발성 스토리지 장치, 메모리, 메모리 저장 장치, 메모리 회로 및/또는 본 명세서에서 교환 가능하게 사용되는 유사한 용어라고도 함)를 더 포함하거나 이와 통신할 수 있다. 일 실시 예에서, 휘발성 스토리지 또는 메모리는 또한 RAM, DRAM, SRAM, FPM DRAM, EDO DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, RDRAM, TTRAM, T-RAM, Z-RAM, RIMM, DIMM, SIMM, VRAM, 캐시 메모리, 레지스터 메모리 등을 포함하지만 이에 제한되지 않는 하나 이상의 휘발성 스토리지 또는 메모리 매체(915)를 포함할 수 있다. 인식되는 바와 같이, 휘발성 스토리지 또는 메모리 매체는 예를 들어 프로세싱 요소(905)에 의해 실행되는 데이터베이스, 데이터베이스 인스턴스, 데이터베이스 관리 시스템, 데이터, 응용 프로그램, 프로그램, 프로그램 구성 요소, 스크립트, 소스 코드, 개체 코드, 바이트 코드, 컴파일된 코드, 해석된 코드, 기계 코드, 실행 가능한 커맨드 등의 적어도 일부를 저장하는 데 사용될 수 있다. 따라서 데이터베이스, 데이터베이스 인스턴스, 데이터베이스 관리 시스템, 데이터, 애플리케이션, 프로그램, 프로그램 구성 요소, 스크립트, 소스 코드, 개체 코드, 바이트 코드, 컴파일된 코드, 해석된 코드, 기계 코드, 실행 가능한 커맨드 등은 프로세싱 요소(905) 및 운영 체제의 도움으로 관리 컴퓨팅 엔티티(800)의 동작의 특정 측면을 제어하는 데 사용될 수 있다.
상술된 바와 같이, 일 실시 예에서, 관리 컴퓨팅 엔티티(800)는 데이터, 콘텐츠, 정보 및/또는 본 명세서에서 예를 들어 전송, 수신, 작동, 처리, 표시, 저장 및/또는 기타 등이 될 수 있는 데이터, 콘텐츠, 정보 및/또는 본 문서에서 상호교환적으로 사용되는 유사한 용어들을 통신함으로써 다양한 컴퓨팅 엔티티들과 통신하기 위한 하나 이상의 통신 인터페이스(920)를 또한 포함할 수 있다. 이러한 통신은 유선 데이터 전송 프로토콜을 사용하여 수행될 수 있다. 유선 데이터 전송 프로토콜은 PCIe(Peripheral Component Interconnect Express), FDDI(Fibre Distributed Data Interface), DSL(Digital Subscriber Line), 이더넷, 비동기 전송 모드(asynchronous transfer mode, ATM), 프레임 릴레이(frame relay), DOCSIS(Data over Cable Service Interface Specification), 또는 다른 유선 전송 프로토콜일 수 있다. 마찬가지로, 관리 컴퓨팅 엔티티(500)는 다양한 프로토콜들 중 임의의 프로토콜을 사용하여 무선 외부 통신 네트워크를 통해 통신하도록 구성될 수 있다. 다양한 프로토콜들은 일반 패킷 무선 서비스(General Packet Radio Service, GPRS), 범용 이동 통신 시스템(Universal Mobile Telecommunications System, UMTS), 부호분할다중접속 2000(Code Division Multiple Access 2000, CDMA2000), CDMA 2000 1X(1xRTT), 광대역 부호분할다중접속(Wideband Code Division Multiple Access, WCDMA), 시분할-동기 부호분할다중접속(Time Division-Synchronous Code Division Multiple Access, TD-SCDMA), 롱텀에볼루션(Long Term Evolution, LTE), 진화된 범용 지상 무선 액세스 네트워크(Evolved Universal Terrestrial Radio Access Network, E-UTRAN), 진화-데이터 최적화(Evolution-Data Optimized, EVDO), 고속 패킷 액세스(High Speed Packet Access, HSPA), 고속 다운링크 패킷 액세스(High-Speed Downlink Packet Access, HSDPA), IEEE 802.11(와이파이), Wi-Fi Direct, 802.16(WiMAX), 초 광대역(ultra-wideband, UWB), 적외선 통신 프로토콜(Infrared (IR) Protocols), 근거리 무선 통신 프로토콜(Near Field Communication, NFC), ZigBee, 블루투스 프로토콜, 5G 프로토콜, 무선 범용 직렬 버스(wireless universal serial bus, USB) 프로토콜 및/또는 기타 무선 프로토콜을 포함할 수 있다.
도시되지는 않았지만, 관리 컴퓨팅 엔티티(800)는 하나 이상의 입력 요소들을 포함하거나 이와 통신할 수 있다. 하나 이상의 입력 요소들은 키보드 입력, 마우스 입력, 터치 스크린/디스플레이 입력, 동작 입력, 이동 입력, 오디오 입력, 포인팅 장치 입력, 조이스틱 입력, 키패드 입력 등을 의미할 수 있다. 관리 컴퓨팅 엔티티(800)는 또한 오디오 출력, 비디오 출력, 스크린/디스플레이 출력, 모션 출력, 이동 출력 등과 같은 하나 이상의 출력 요소(미도시)를 포함하거나 그와 통신할 수 있다.
알 수 있는 바와 같이, 관리 컴퓨팅 엔티티(800)의 구성 요소 중 하나 이상은 분산 시스템과 같이 다른 관리 컴퓨팅 엔티티(800) 구성 요소로부터 멀리 떨어져 위치할 수 있다. 또한, 구성 요소들 중 하나 이상이 결합될 수 있고 본 명세서에서 설명된 기능을 수행하는 추가 구성 요소가 관리 컴퓨팅 엔티티(800)에 포함될 수 있다. 따라서, 관리 컴퓨팅 엔티티(800)는 다양한 요구 및 상황을 수용하도록 적응될 수 있다 인식되는 바와 같이, 이들 아키텍처 및 설명은 예시적인 목적으로만 제공되며 다양한 실시 예들로 제한되지 않는다.
사용자는 개인, 가족, 회사, 조직, 단체, 조직 내 부서, 조직 및/또는 개인의 대표자 등일 수 있다. 일 실시 예에서, 사용자는 직원, 거주자, 고객 등일 수 있다. 예를 들어, 사용자는 관리 컴퓨팅 엔티티(도 8의 800)의 구성 요소들과 기능적으로 유사한 하나 이상의 구성 요소들을 포함하는 사용자 장치(도 8의 810)를 작동할 수 있다.
다양한 양태들에서, 처리 컴포넌트, 전송 컴포넌트 및/또는 수신 컴포넌트(미도시)는 도 8 및 9와 관련하여 도시되고 기술된 관리 컴퓨팅 엔티티(도 8의 500)의 기능의 양태들을 포함할 수 있는 하나 이상에서 동작하도록 구성될 수 있다. 특히, 처리 컴포넌트, 송신 컴포넌트 및/또는 수신 컴포넌트는 하나 이상의 프로세싱 요소(905), 메모리(910), 휘발성 메모리(915)와 통신하도록 구성될 수 있고, 통신 인터페이스(920)를 포함할 수 있다(예를 들어, 장치들 간 통신을 용이하게 하기 위해).
도 10은 본 발명의 실시 예들에 따른 사용자 장치의 예시적인 개략도를 도시한다. 도 10은 본 발명의 실시 예들과 함께 사용될 수 있는 사용자 장치(1010)(예를 들어, 호스트 장치, 저장 장치, 주변 장치 등)를 나타내는 예시적인 개략도를 제공한다. 일반적으로, 본 명세서에서 사용되는 장치, 시스템, 컴퓨팅 엔티티, 엔티티 및/또는 유사한 용어는 예를 들어 하나 이상의 컴퓨터들, 컴퓨팅 엔티티들, 데스크톱, 휴대폰, 태블릿, 패블릿, 노트북, 랩탑, 분산 시스템, 게임 콘솔(예를 들어, Xbox, Play Station, Wii), 시계, 안경, 키포브, 무선 주파수 식별(Radio Frequency IDentification, RFID) 태그, 이어피스, 스캐너, 카메라, 손목 밴드, 키오스크, 입력 단자, 서버 또는 서버 네트워크, 블레이드, 게이트웨이, 스위치, 처리 장치, 처리 엔티티, 셋톱 박스, 릴레이, 라우터, 네트워크 액세스 포인트, 기지국 등, 본 명세서에 설명된 기능들, 동작들 및/또는 프로세스들을 수행하도록 제조된 장치들 또는 엔티티들의 조합을 의미할 수 있다. 사용자 장치(1010)는 다양한 당사자에 의해 작동될 수 있다. 도 10에 도시된 바와 같이, 사용자 장치(1010)는 안테나(1012), 송신기(1004)(예를 들어, 라디오), 수신기(1006)(예를 들어, 라디오), 및 송신기(1004) 및 수신기(1006) 각각에 신호를 제공하고 신호를 수신하는 프로세싱 요소(1008)(예를 들어, CPLD, FPGA, 마이크로프로세서, 멀티코어 프로세서, 공동 처리 엔티티, ASIP, 마이크로컨트롤러 및/또는 컨트롤러)를 포함할 수 있다.
송신기(1004) 및 수신기(1006) 각각에 제공되고, 송신기(1004) 및 수신기(1006) 각각으로부터 수신되는 신호들은 적용 가능한 무선 시스템의 에어 인터페이스 표준에 따른 시그널링 정보를 포함할 수 있다. 이와 관련하여, 사용자 장치(1010)는 하나 이상의 무선 인터페이스 표준들, 통신 프로토콜들, 변조 유형들 및 액세스 유형들로 동작할 수 있다. 보다 구체적으로, 사용자 장치(1010)는 도 9의 관리 컴퓨팅 엔티티(800)와 관련하여 전술한 것과 같은 임의의 다수의 무선 통신 표준들 및 프로토콜들에 따라 동작할 수 있다. 특정 실시 예에서, 사용자 장치(1010)는 개시된 IoT DOCSIS 프로토콜, UMTS, CDMA2000, 1xRTT, WCDMA, TD-SCDMA, LTE, E-UTRAN, EVDO, HSPA, HSDPA, 5G, Wi-Fi, Wi-Fi Direct, WiMAX, UWB, IR, NFC, Bluetooth, USB 등과 같은 다수의 무선 통신 표준들 및 프로토콜들에 따라 동작할 수 있다. 유사하게, 사용자 장치(1010)는 네트워크 인터페이스(1020)를 통해 관리 컴퓨팅 엔티티(도 8의 800)와 관련하여 위에서 설명된 것과 같은 다수의 유선 통신 표준들 및 프로토콜들에 따라 동작할 수 있다.
이러한 통신 표준 및 프로토콜을 통해, 사용자 장치(1010)는 USSD(Unstructured Supplementary Service Data), SMS(Short Message Service), MMS(Multimedia Messaging Service), DTMF(Dual-Tone Multi-Frequency Signaling) 및/또는 SIM 다이얼러(Subscriber Identity Component Dialer) 등과 같은 개념들을 사용하여 다양한 다른 엔티티들과 통신할 수 있다. 사용자 장치(1010)는 예를 들어 펌웨어, 소프트웨어(예를 들어 실행 가능한 커맨드, 애플리케이션, 프로그램 구성 요소 포함) 및 운영 체제에 대한 변경 사항, 추가 기능 및 업데이트를 다운로드할 수도 있다.
일 실시 예에 따르면, 사용자 장치(1010)는 위치 결정 양태들, 장치들, 구성 요소들, 기능들 및/또는 본 명세서에서 교환 가능하게 사용되는 유사한 단어들을 포함할 수 있다. 예를 들어, 사용자 장치(1010)는 예를 들어 위도, 경도, 고도, 지오코드, 코스, 방향, 표제, 속도, 세계시(UTC), 날짜 및/또는 기타 다양한 정보/데이터를 획득하도록 적응된 위치 컴포넌트와 같은 실외 포지셔닝 양태들을 포함할 수 있다. 일 실시 예에서, 위치 컴포넌트는 시야에 있는 위성들의 수 및 위성들의 상대 위치를 식별함으로써 데이터를 획득할 수 있다. 예를 들어, 데이터는 천문력(ephemeris) 데이터로 알려진 데이터 일 수 있다. 위성들은 저궤도(Low Earth Orbit , LEO) 위성 시스템, 국방부(Department of Defense, DOD) 위성 시스템, 유럽 연합 갈릴레오 포지셔닝 시스템(European Union Galileo positioning systems), 중국 나침반 내비게이션 시스템(Chinese Compass navigation systems), 인도 지역 내비게이션 위성 시스템(Indian Regional Navigational satellite systems) 등을 포함하는 다양한 상이한 위성일 수 있다. 대안적으로, 위치 정보는 셀룰러 타워, Wi-Fi 액세스 포인트 등을 포함하는 다양한 다른 시스템과 관련하여, 사용자 장치(1010)의 위치를 삼각 측량함으로써 결정될 수 있다. 유사하게, 사용자 장치(1010)는 예를 들어 위도, 경도, 고도, 지오코드, 경로, 방향, 표제, 속도, 시간, 날짜 및/또는 다양한 기타 정보/데이터를 획득하도록 적응된 위치 구성요소와 같은 실내 포지셔닝 양태들을 포함할 수 있다. 일부 실내 시스템들은 RFID 태그, 실내 비콘 또는 송신기, Wi-Fi 액세스 포인트, 셀룰러 타워, 근접 컴퓨팅 장치들(예: 스마트폰, 랩탑) 등을 포함하는 다양한 장소 또는 위치 기술들을 사용할 수 있다. 예를 들어, 기술들은 iBeacons, Gimbal 근접 비콘, Bluetooth 저에너지(BLE) 송신기, NFC 송신기 등을 포함할 수 있다. 이러한 실내 포지셔닝 양태들은 인치 또는 센티미터 이내의 사람 또는 물건의 위치를 결정하기 위해 다양한 환경에서 사용될 수 있다.
사용자 장치(1010)는 또한 사용자 인터페이스(프로세싱 요소(1008)에 결합된 디스플레이(1016)를 포함할 수 있음) 및/또는 사용자 입력 인터페이스(프로세싱 요소(1008)에 결합됨)를 포함할 수 있다. 예를 들어, 사용자 인터페이스는 본 명세서에 설명된 바와 같이 관리 컴퓨팅 엔티티(800)와 상호 작용하거나 관리 컴퓨팅 엔티티(800)로부터의 정보의 표시를 유발하기 위해 사용자 장치(1010)에서 상호 교환적으로 실행되거나 사용자 장치(1010)를 통해 액세스 가능한 사용자 애플리케이션, 브라우저, 사용자 인터페이스 및/또는 유사한 단어일 수 있다. 사용자 입력 인터페이스는 키패드(1018)(하드 또는 소프트), 터치 디스플레이, 음성/음성 또는 모션 인터페이스, 또는 기타 입력 장치들과 같이 사용자 장치(1010)가 데이터를 수신할 수 있도록 하는 임의의 수의 장치들 또는 인터페이스들을 포함할 수 있다. 키패드(1018)를 포함하는 실시 예에서, 키패드(1018)는 종래의 숫자들(0-9) 및 관련 키들(#, *), 및 사용자 장치(1010)를 작동하기 위해 사용되는 다른 키들을 포함(또는 표시를 유발)할 수 있고, 전체 알파벳 키 세트 또는 전체 영숫자 키 세트를 제공하기 위해 활성화될 수 있는 키 세트를 포함할 수 있다. 입력을 제공하는 것 외에도, 사용자 입력 인터페이스는 예를 들어, 화면 보호기 및/또는 절전 모드와 같은 특정 기능을 활성화 또는 비활성화하는 데 사용될 수 있다.
사용자 장치(1010)는 내장될 수 있고/또는 제거될 수 있는 휘발성 스토리지 장치 또는 메모리(1022) 및/또는 비휘발성 스토리지 장치 또는 메모리(1024)를 더 포함할 수 있다. 예를 들어, 비휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, MMC, SD 메모리 카드, 메모리 스틱, CBRAM, PRAM, FeRAM, NVRAM, MRAM, RRAM, SONOS, FJG RAM, Millipede 메모리, Racetrack 메모리 등일 수 있다. 휘발성 메모리는 RAM, DRAM, SRAM, FPM DRAM, EDO DRAM, SDRAM, DDR2 SDRAM, DDR3 SDRAM, RDRAM, TTRAM, TRAM, Z-RAM, RIMM, DIMM, SIMM, VRAM, 메모리 레지스터 등일 수 있다. 휘발성 및 비휘발성 스토리지 또는 메모리는 사용자 장치(1010)의 기능을 구현하기 위한 데이터베이스, 데이터베이스 인스턴스들, 데이터베이스 관리 시스템들, 데이터, 애플리케이션들, 프로그램들, 프로그램 구성 요소들, 스크립트들, 소스 코드, 객체 코드, 바이트 코드, 컴파일된 코드, 해석된 코드, 기계 코드, 실행 가능한 커맨드들 등을 저장할 수 있다. 나타낸 바와 같이, 이는 관리 컴퓨팅 엔티티(700) 및/또는 다양한 다른 컴퓨팅 엔티티들과 통신하기 위해 브라우저 또는 다른 사용자 인터페이스를 통해 액세스 가능하거나 엔티티에 존재하는 사용자 애플리케이션을 포함할 수 있다.
다른 실시 예에서, 사용자 장치(1010)는 위에서 더 상세히 설명된 바와 같이 관리 컴퓨팅 엔티티(700)의 것과 동일하거나 유사한 하나 이상의 컴포넌트들 또는 기능을 포함할 수 있다. 인식되는 바와 같이, 이들 아키텍처 및 설명은 예시적인 목적으로만 제공되며 다양한 실시 예들로 제한되지 않는다.
특정 실시 예들은 하드웨어, 펌웨어 및 소프트웨어 중 하나 또는 조합으로 구현될 수 있다. 다른 실시 예들은 또한 여기에서 설명된 동작을 수행하기 위해 적어도 하나의 프로세서에 의해 판독되고 실행될 수 있는 컴퓨터 판독 가능 스토리지 장치(Computer-Readable Storage Device)에 저장된 명령어들로서 구현될 수 있다. 컴퓨터 판독 가능 스토리지 장치는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형식으로 정보를 저장하기 위한 임의의 비일시적 메모리 메커니즘을 포함할 수 있다. 예를 들어, 컴퓨터 판독 가능 스토리지 장치는 ROM(read-only memory), RAM(random-access memory), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 장치들 및 기타 저장 장치들 및 매체를 포함할 수 있다.
"예시적인"이라는 단어는 본 명세서에서 "예, 실례 또는 예시로서 제공하는 것"을 의미하는 것으로 사용된다. 본 명세서에서 "예시적인" 것으로 기술된 임의의 실시예는 반드시 다른 실시예보다 바람직하거나 유리한 것으로 해석되어서는 안 된다. 본 명세서에서 사용되는 용어 "컴퓨팅 장치", "사용자 장치", "통신국", "스테이션", "핸드헬드 장치", "모바일 장치", "무선 장치" 및 "사용자 장비(User Equipment, UE)”는 휴대 전화, 스마트폰, 태블릿, 넷북, 무선 단말, 노트북 컴퓨터, 펨토셀, HDR(High Data Rate) 가입자 스테이션, 액세스 포인트, 프린터, POS(Point of Sale) 장치, 액세스 터미널 또는 기타 개인 통신 시스템(Personal Communication System; PCS) 장치를 의미할 수 있다. 장치는 이동식이거나 고정식일 수 있다.
본 명세서 내에서 사용되는 바와 같이, "통신하다"라는 용어는 전송 또는 수신 또는 전송 및 수신 모두를 포함하도록 의도된다. 이것은 한 장치에서 전송되고 다른 장치에서 수신되는 데이터의 구성을 설명할 때 청구범위에서 특히 유용할 수 있지만, 청구범위를 침해하려면 해당 장치 중 하나의 기능만 필요하다. 마찬가지로, 두 장치 간의 양방향 데이터 교환(교환 중에 두 장치 모두 전송 및 수신)은 이러한 장치들 중 하나의 기능만 주장하는 경우 '통신'으로 설명될 수 있다. 무선 통신 신호와 관련하여 본 명세서에서 사용되는 "통신하는"이라는 용어는 무선 통신 신호를 전송하는 것 및/또는 무선 통신 신호를 수신하는 것을 포함한다. 예를 들어, 무선 통신 신호를 통신할 수 있는 무선 통신 유닛은 무선 통신 신호를 적어도 하나의 다른 무선 통신 유닛으로 송신하기 위한 무선 송신기를 포함할 수 있고, 및/또는 적어도 하나의 다른 무선 통신 유닛으로부터 무선 통신 신호를 수신하는 무선 통신 수신기를 포함할 수 있다.
일부 실시 예들은 다양한 장치들 및 시스템들과 함께 사용될 수 있다. 다양한 장치들 및 시스템들은 예를 들어, PC, 데스크탑 컴퓨터, 모바일 컴퓨터, 노트북 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 서버 컴퓨터, 핸드헬드 컴퓨터, 핸드헬드 장치, PDA 장치, 핸드헬드 PDA 장치, 온보드 장치, 오프보드 장치, 하이브리드 장치, 차량 장치, 비차량 장치, 모바일 또는 휴대용 장치, 소비자 장치, 비모바일 또는 비휴대용 장치, 무선 통신 스테이션, 무선 통신 장치, 무선 액세스 포인트(AP), 유선 또는 무선 라우터, 유선 또는 무선 모뎀, 비디오 장치, 오디오 장치, 오디오-비디오(A/V) 장치, 유선 또는 무선 네트워크, 무선 영역 네트워크, 무선 비디오 영역 네트워크(WVAN), LAN(Local Area Network), 무선 LAN(WLAN), PAN(Personal Area Network), WPAN(Wireless PAN) 등을 의미할 수 있다.
일부 실시 예들은 단방향 및/또는 양방향 무선 통신 시스템, 셀룰러 무선 전화 시스템, 휴대폰, 셀룰러 전화, 무선 전화, 개인 통신 시스템(PCS) 장치, 무선 통신 장치를 포함하는 PDA 장치, 모바일 또는 휴대용 GPS(Global Positioning System) 장치, GPS 수신기 또는 송수신기 또는 칩을 통합하는 장치, RFID 요소 또는 칩을 통합하는 장치, MIMO(Multiple Input Multiple Output) 트랜시버 또는 장치, SIMO(Single Input Multiple Output) 트랜시버 또는 장치, 다중 입력 단일 출력(MISO) 송수신기 또는 장치, 하나 이상의 내부 안테나 및/또는 외부 안테나가 있는 장치, DVB(Digital Video Broadcast) 장치 또는 시스템, 다중 표준 라디오 장치 또는 시스템, 유선 또는 무선 핸드헬드 장치(예: 스마트폰, WAP) 장치 등과 함께 사용될 수 있다.
일부 실시예들은 하나 이상의 무선 통신 프로토콜들을 따르는 하나 이상의 유형의 무선 통신 신호 및/또는 시스템들과 함께 사용될 수 있다. 무선 통신 신호 및/또는 시스템은 예를 들어, 무선 주파수(RF), 적외선(IR), 주파수 분할 다중(FDM), 직교 FDM(Time-Division Multiplexing), 시분할다중접속(TDMA), 확장TDMA(E-TDMA), 일반패킷무선서비스(GPRS), 확장GPRS, 코드분할다중접속(CDMA), 광대역CDMA(WCDMA), CDMA 2000, 단일캐리어 CDMA, 멀티캐리어 CDMA, 멀티캐리어 변조(Multi-Carrier Modulation), 이산형 블루투스TM, 위성위치확인시스템(GPS), 와이파이, 와이맥스(Wi-Max), 지그비(ZigBeeTM), UWB(Ultra-Wideband), GSM(Global System for Mobile Communication), 2G, 2.5G, 3.5G, 4G, 5세대(5G) 이동통신망, 3GPP, 롱텀에볼루션(LTE), LTE 어드밴스트, GSM 에볼루션(Edge) 등을 의미할 수 있다. 다른 실시예들은 다양한 다른 장치들, 시스템들 및/또는 네트워크들에서 사용될 수 있다.
예시적인 프로세싱 시스템이 위에서 설명되었지만, 본 명세서에서 설명된 주제 및 기능적 동작의 실시 예들은 본 명세서에 개시된 구조들 및 이들의 구조적 등가물들을 포함하는 다른 유형의 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어, 하드웨어, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다.
본 명세서에 기술된 주제 및 동작의 실시 예들은 본 명세서에 개시된 구조 및 이들의 구조적 등가물을 포함하는 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 기술된 주제의 실시 예들은 하나 이상의 컴퓨터 프로그램들, 즉 정보/데이터 처리 장치에 의한 실행을 위해 또는 그 동작을 제어하기 위해 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 구성요소들로서 구현될 수 있다. 대안적으로 또는 추가로, 프로그램 커맨드는 인공적으로 생성된 전파 신호, 예를 들어 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 전파 신호는 정보/데이터 처리 장치에 의한 실행을 위해 적합한 수신기 장치로의 전송을 위해 정보/데이터를 인코딩하도록 생성된다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 장치, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 장치, 또는 이들 중 하나 이상의 조합이거나 이에 포함될 수 있다. 더욱이, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 커맨드의 소스 또는 목적지가 될 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 별도의 물리적 구성 요소들 또는 매체(예를 들어, 복수의 CD들, 디스크들 또는 기타 저장 장치들)이거나 이에 포함될 수 있다.
여기에 설명된 동작들은 하나 이상의 컴퓨터 판독 가능 저장 장치들에 저장되거나 다른 소스로부터 수신된 정보/데이터에 대해 정보/데이터 처리 장치에 의해 수행되는 동작들로 구현될 수 있다.
"데이터 처리 장치"라는 용어는 데이터를 처리하는 모든 종류의 장치, 장치 및 기계를 포함하며, 예를 들어, 프로그래밍 가능한 프로세서, 컴퓨터, 시스템 온 칩, 또는 전술한 것의 다수 또는 조합을 포함한다. 장치는 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)과 같은 특수 목적 논리 회로를 포함할 수 있다. 장치는 또한 하드웨어뿐 아니라 해당 컴퓨터 프로그램의 실행 환경을 조성하는 코드를 포함할 수 있다. 코드는 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 교차 플랫폼 런타임 환경, 가상 머신 또는 이들 중 하나 이상의 조합을 구성하는 코드일 수 있다. 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드로도 알려져 있음)은 컴파일 또는 해석 언어, 선언적 또는 절차적 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있다. 또한, 컴퓨터 프로그램은 독립 실행형 프로그램 또는 구성 요소, 서브루틴, 개체 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하여 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수 있지만 반드시 그럴 필요는 없다. 프로그램은 다른 프로그램이나 정보/데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일부, 해당 프로그램 전용 단일 파일 또는 여러 조정 파일(예를 들어, 하나 이상의 구성 요소, 하위 프로그램 또는 코드 부분을 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 있거나 여러 사이트에 분산되어 통신 네트워크로 연결된 여러 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스 및 논리 흐름은 하나 이상의 프로그램 가능한 프로세서들이 하나 이상의 컴퓨터 프로그램들을 실행하여 입력 정보/데이터에 대해 동작하고 출력을 생성함으로써 동작들을 수행하도록 수행될 수 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서는 예를 들어 범용 및 특수 목적 마이크로프로세서 모두와 모든 종류의 디지털 컴퓨터의 하나 이상의 프로세서들을 포함한다. 일반적으로 프로세서는 읽기 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 커맨드와 정보/데이터를 수신한다. 컴퓨터의 필수 요소는 커맨드에 따라 작업을 수행하기 위한 프로세서와 커맨드 및 데이터를 저장하기 위한 하나 이상의 메모리 장치들이다. 일반적으로 컴퓨터는 또한 자기, 자기 광학 디스크 또는 광 디스크와 같은 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치로부터 정보/데이터를 수신하거나 전송하거나 둘 모두로 전송하기 위해 작동 가능하게 결합된다. 일반적으로 컴퓨터는 또한 자기, 자기 광학 디스크 또는 광 디스크와 같은 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치를 포함하거나, 하나 이상의 대용량 저장 장치로부터 정보/데이터를 수신하거나 전송하거나, 양자 모두를 수행하기 위해 작동 가능하게 결합된다. 그러나 컴퓨터에는 이러한 장치가 필요하지 않다. 컴퓨터 프로그램 커맨드 및 정보/데이터를 저장하는 데 적합한 장치는 예를 들어, 반도체 메모리 장치를 포함한 모든 형태의 비휘발성 메모리, 미디어 및 메모리 장치를 포함한다. 컴퓨터 프로그램 커맨드 및 정보/데이터를 저장하는 데 적합한 장치는 예를 들어, EPROM, EEPROM 및 플래시 메모리 장치, 자기 디스크(예: 내부 하드 디스크 또는 이동식 디스크), 자기 광학 디스크, CD ROM 및 DVD-ROM 디스크 등을 포함할 수 있다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에 기술된 주제의 실시 예들은 디스플레이 장치, 예를 들어 CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터, 사용자에게 정보/데이터를 표시하기 위한 키보드 및 사용자가 컴퓨터에 입력을 제공할 수 있는 포인팅 장치(예를 들어, 마우스 또는 트랙볼)를 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 장치들도 사용자와의 상호 작용을 제공하기 위해 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각 피드백 또는 촉각 피드백과 같은 모든 형태의 감각 피드백일 수 있다. 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함한 모든 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자가 사용하는 장치와 문서들을 주고받음으로써 사용자와 상호 작용할 수 있다. 예를 들어, 컴퓨터는 웹 브라우저에서 받은 요청들에 대한 응답으로 사용자 클라이언트 장치의 웹 브라우저에 웹 페이지들을 보낼 수 있다.
본 명세서에 설명된 주제의 실시 예들은 백엔드 컴포넌트를 포함하는 컴퓨팅 시스템, 예를 들어 정보/데이터 서버 또는 미들웨어 구성요소를 포함하는 서버, 예를 들어 애플리케이션 서버 또는 프런트 엔드 구성 요소를 포함하는 서버, 예를 들어, 사용자가 여기에 설명된 주제의 실시예와 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 가진 클라이언트 컴퓨터, 또는 하나 이상의 백엔드, 미들웨어 또는 프론트엔드 구성요소들의 조합에서 구현될 수 있다. 시스템의 구성 요소들은 통신 네트워크와 같은 디지털 정보/데이터 통신의 모든 형태 또는 매체에 의해 상호 연결될 수 있다. 통신 네트워크의 예로는 LAN(Local Area Network) 및 WAN(Wide Area Network), 인터넷(Inter-Network) 및 피어-투-피어 네트워크(Peer-to-Peer Network)(예를 들어, 애드 혹 피어-투-피어 네트워크(Ad Hoc Peer-to-Peer Network))가 포함된다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램으로 의해 발생한다. 일부 실시 예들에서, 서버는 정보/데이터(예를 들어, HTML 페이지)를 클라이언트 장치로 전송한다(예를 들어, 클라이언트 장치와 상호 작용하는 사용자에게 정보/데이터를 디스플레이하고 그로부터 사용자 입력을 수신하기 위해). 클라이언트 장치에서 생성된 정보/데이터(예를 들어, 사용자 상호 작용의 결과)는 서버의 클라이언트 장치에서 수신할 수 있다.
본 명세서는 많은 구체적인 실시 예들의 세부 사항을 포함하지만, 이들은 임의의 실시 예 또는 청구될 수 있는 범위에 대한 제한으로 해석되어서는 안 되며, 오히려 특정 실시 예들의 특유한 특징들에 대한 설명으로 해석되어야 한다. 별도의 실시 예들의 맥락에서 본 명세서에 기술된 특정 특징들은 또한 단일 실시 예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 맥락에서 설명된 다양한 특징들은 또한 여러 실시 예에서 개별적으로 또는 임의의 적합한 하위 조합으로 구현될 수 있다. 또한, 특징들이 특정 조합들에서 동작하는 것으로 위에서 설명되어 있고, 초기에 그렇게 주장되었지만, 경우에 따라, 청구된 조합으로부터 하나 이상의 특징들이 조합으로부터 제거될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형으로 향할 수 있다.
마찬가지로, 동작들이 도면들에 특정 순서로 표시되지만, 바람직한 결과를 얻기 위해 표시된 특정 순서 또는 순차적인 순서로 해당 동작들을 수행하거나 표시된 모든 동작들을 수행해야 하는 것으로 이해되어서는 안 된다. 특정 상황들에서는 멀티태스킹 및 병렬 처리가 유리할 수 있다. 더욱이 위에서 설명된 실시 예들에서 다양한 시스템 구성요소들의 분리가 모든 실시예들에서 그러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 구성요소들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 여러 소프트웨어 제품들로 패키징될 수 있음을 이해해야 한다.
따라서, 주제의 특정 실시 예들이 설명되었다. 다른 실시 예들은 이하의 청구항들의 범위 내에 있다. 경우에 따라, 청구 범위에 인용된 동작들은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 또한 첨부된 도면들에 묘사된 프로세스들은 원하는 결과를 얻기 위해 표시된 특정 순서 또는 순차적인 순서를 반드시 요구하지는 않는다. 특정 실시 예들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.
본 명세서에 명시된 본 개시의 많은 수정들 및 다른 실시 예들은 전술한 설명 및 관련 도면에 제시된 교시의 이점을 갖는 관련 기술 분야의 통상의 지식을 가진 자에게 떠오를 것이다. 따라서, 실시 예들이 개시된 특정 실시 예들에 한정되는 것은 아니며, 수정들 및 다른 실시 예들이 첨부된 청구범위 내에 포함되도록 의도된 것으로 이해되어야 한다. 본 명세서에서는 특정 용어들이 사용되더라도, 이들은 일반적이고 설명적인 의미로 사용되며 제한의 목적으로 사용되지 않는다.
105: 머신
215: 버스
800: 컴퓨팅 엔티티
810: 사용자 장치
1012: 안테나

Claims (20)

  1. 메모리를 관리하기 위한 시스템에 있어서,
    컨트롤러;
    하나 이상의 연산 리소스들; 및
    하나 이상의 메모리 리소스들을 포함하고,
    프로그램과 관련된 연산 리소스들의 양 및 메모리 리소스들의 양을 지정하는 커맨드를 수신하고, 그리고
    상기 컨트롤러에 의해 상기 커맨드를 처리하도록 구성되고,
    상기 처리는 상기 하나 이상의 연산 리소스들의 일부를 동적으로 할당하는 것 및 상기 프로그램에 의한 사용을 위해, 상기 하나 이상의 메모리 리소스들의 일부를 할당하는 것을 포함하는 시스템.
  2. 제1 항에 있어서,
    상기 커맨드는 상기 하나 이상의 메모리 리소스들의 일부에 대한 액세스가 제한되도록 지정하는 시스템.
  3. 제1 항에 있어서,
    상기 프로그램이 상기 하나 이상의 메모리 리소스들의 할당된 부분과 다른 상기 하나 이상의 메모리 리소스들의 영역에 액세스하려고 시도하는 것을 판별하고,
    상기 프로그램의 실행을 중지한다고 결정하도록 더 구성되는 시스템.
  4. 제1 항에 있어서,
    상기 하나 이상의 메모리 리소스들은 하나 이상의 로컬 메모리 네임 스페이스들을 포함하는 시스템.
  5. 제1 항에 있어서,
    하나 이상의 스토리지 네임 스페이스들을 포함하는 하나 이상의 스토리지 리소스들을 더 포함하는 시스템.
  6. 제1 항에 있어서,
    상기 프로그램은 적어도 제2 프로그램을 포함하는 멀티-테넌트 환경의 제1 프로그램인 시스템.
  7. 제1 항에 있어서,
    상기 커맨드는 프로토콜에 기초하고,
    상기 프로토콜은 NVMe(non-volatile memory express)를 포함하는 시스템.
  8. 제1 항에 있어서
    상기 하나 이상의 연산 리소스들은,
    중앙 처리 장치(central processing unit, CPU), 그래픽 처리 장치(graphic processing unit, GPU), FPGA(field-programmable gate array), 텐서 처리 장치(tensor processing unit, TPU) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나를 포함하는 연산 리소스를 포함하는 시스템.
  9. 제1 항에 있어서,
    상기 하나 이상의 연산 리소스들은 NVMe(Non-Volatile Memory Express) 지원 스토리지 장치를 포함하는 시스템.
  10. 메모리 관리 방법에 있어서,
    컨트롤러가 프로그램과 관련된 연산 리소스들의 양 및 메모리 리소스들의 양을 지정하는 커맨드를 수신하는 단계; 및
    상기 컨트롤러에 의해 상기 커맨드를 처리하는 단계를 포함하고,
    상기 처리는 상기 하나 이상의 연산 리소스들의 일부를 동적으로 할당하는 것 및 상기 프로그램에 의한 사용을 위해, 상기 하나 이상의 메모리 리소스들의 일부를 할당하는 것을 포함하는 방법.
  11. 제10 항에 있어서,
    상기 커맨드는 상기 하나 이상의 메모리 리소스들의 일부에 대한 액세스가 제한되도록 지정하는 방법.
  12. 제10 항에 있어서,
    상기 프로그램이 상기 하나 이상의 메모리 리소스들의 할당된 부분과 다른 상기 하나 이상의 메모리 리소스들의 영역에 액세스하려고 시도하는 것을 판별하고, 상기 프로그램의 실행을 중지한다고 결정하는 단계를 더 포함하는 방법.
  13. 제10 항에 있어서,
    상기 프로그램은 적어도 제2 프로그램을 포함하는 멀티-테넌트 환경의 제1 프로그램인 방법.
  14. 제1 항에 있어서,
    상기 커맨드는 프로토콜에 기초하고,
    상기 프로토콜은 NVMe(non-volatile memory express)를 포함하는 방법.
  15. 메모리를 관리하기 위한 장치에 있어서,
    컨트롤러;
    하나 이상의 연산 리소스들; 및
    하나 이상의 메모리 리소스들을 포함하고,
    프로그램과 관련된 연산 리소스들의 양 및 메모리 리소스들의 양을 지정하는 커맨드를 수신하고, 그리고
    상기 컨트롤러에 의해 상기 커맨드를 처리하도록 구성되고,
    상기 처리는 상기 하나 이상의 연산 리소스들의 일부를 동적으로 할당하는 것 및 상기 프로그램에 의한 사용을 위해, 상기 하나 이상의 메모리 리소스들의 일부를 할당하는 것을 포함하는 장치.
  16. 제15 항에 있어서,
    상기 커맨드는 상기 하나 이상의 메모리 리소스들의 일부에 대한 액세스가 제한되도록 지정하는 장치.
  17. 제15 항에 있어서,
    상기 프로그램이 상기 하나 이상의 메모리 리소스들의 할당된 부분과 다른 상기 하나 이상의 메모리 리소스들의 영역에 액세스하려고 시도하는 것을 판별하고,
    상기 프로그램의 실행을 중지한다고 결정하도록 더 구성되는 장치.
  18. 제15 항에 있어서,
    상기 프로그램은 적어도 제2 프로그램을 포함하는 멀티-테넌트 환경의 제1 프로그램인 장치.
  19. 제15 항에 있어서,
    상기 커맨드는 프로토콜에 기초하고,
    상기 프로토콜은 NVMe(non-volatile memory express)를 포함하는 장치.
  20. 제15 항에 있어서,
    하나 이상의 스토리지 네임 스페이스들을 포함하는 하나 이상의 스토리지 리소스들을 더 포함하는 장치.
KR1020230169830A 2022-11-30 2023-11-29 연산 스토리지 장치의 메모리 보호를 위한 시스템, 방법 및 장치 KR20240081422A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US63/429,125 2022-11-30
US18/521,875 2023-11-28

Publications (1)

Publication Number Publication Date
KR20240081422A true KR20240081422A (ko) 2024-06-07

Family

ID=

Similar Documents

Publication Publication Date Title
US20210397577A1 (en) Systems and methods for communications within a storage chassis
KR20210147976A (ko) 확장 가능하고 일관성 있는 메모리 장치를 위한 시스템 및 방법
CN107077441A (zh) 使用远程直接存储器访问(rdma)和主动消息的异构输入/输出(i/o)
EP4086747A1 (en) Systems, methods, and apparatus for computational storage functions
CN107622207B (zh) 加密系统级数据结构
US20210109822A1 (en) Systems and methods for backup and restore of container-based persistent volumes
US20230042551A1 (en) Systems, methods, and apparatus for the management of device local memory
TW202230140A (zh) 管理記憶體的方法及非暫時性電腦可讀媒體
KR20240081422A (ko) 연산 스토리지 장치의 메모리 보호를 위한 시스템, 방법 및 장치
EP4379525A1 (en) Systems, methods, and apparatus for memory protection for computational storage devices
EP4350500A1 (en) Systems, methods, and apparatus for transferring programs for computational storage devices
US20230289084A1 (en) Systems and methods for checking data alignment between applications, file systems, and computational storage devices
CN105074654B (zh) 用于存储设备上的文件系统命令的特权化执行支持的方法和系统
EP4155895A1 (en) Systems and methods for near-storage processing in solid state drives
CN118114317A (zh) 电子系统以及用于管理存储器的方法和装置
CN117908770A (zh) 用于传送计算存储设备的程序的系统、方法和装置
US20230362659A1 (en) Microwave design tool
KR20190082652A (ko) 데이터베이스에서 이터레이터 연산을 수행하기 위한 장치
US11627150B2 (en) Proxy services for the secure upload of file system tree structures
US11835992B2 (en) Hybrid memory system interface
CN116737063A (zh) 用于存储器管理的方法和装置
KR20240009909A (ko) 데이터 비교를 위한 시스템 및 방법
WO2014187256A1 (zh) 一种应用信息提供装置和方法