KR102478633B1 - 프로세싱을 수행하는 컴퓨팅 시스템 및 그것의 동작 방법 - Google Patents

프로세싱을 수행하는 컴퓨팅 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102478633B1
KR102478633B1 KR1020150170102A KR20150170102A KR102478633B1 KR 102478633 B1 KR102478633 B1 KR 102478633B1 KR 1020150170102 A KR1020150170102 A KR 1020150170102A KR 20150170102 A KR20150170102 A KR 20150170102A KR 102478633 B1 KR102478633 B1 KR 102478633B1
Authority
KR
South Korea
Prior art keywords
storage device
interface
block
host device
language
Prior art date
Application number
KR1020150170102A
Other languages
English (en)
Other versions
KR20160082229A (ko
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 KR20160082229A publication Critical patent/KR20160082229A/ko
Application granted granted Critical
Publication of KR102478633B1 publication Critical patent/KR102478633B1/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
    • 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
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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
    • 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/0661Format or protocol conversion 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

컴퓨팅 시스템은 호스트 장치가 스토리지 장치를 액세스하기 위하여 이슈한 요청 동작을 통신하기 위한 수정 동작을 생성하도록 구성되는 게이트웨이 블록을 포함한다. 게이트웨이 블록은, 요청 동작에 포함된 상호 작용 인터페이스를 스토리지 장치에 의해 실행 가능한 상호 작용 인터페이스로 변환하기 위해 변환 인터페이스를 생성하도록 구성되는 변환 블록, 그리고 변환 블록과 결합되고, 요청 동작에 포함된 객체 표현을 스토리지 장치에서 사용되는 객체 표현으로 번역하기 위해 번역 표현을 생성하도록 구성되는 번역 블록을 포함한다.

Description

프로세싱을 수행하는 컴퓨팅 시스템 및 그것의 동작 방법{COMPUTING SYSTEM WITH PROCESSING AND METHOD OF OPERATION THEREOF}
본 발명은 컴퓨팅 시스템에 관한 것으로, 더 상세하게는 프로세싱 시스템을 갖는 시스템에 관한 것이다.
최근의 소비자들 및 콤퓨팅 시스템, 서버, 가전, 텔레비전, 핸드폰, 자동차, 위성 및 이들의 조합 장치와 같은 산업 전자 장치는 향상되는 기능 레벨을 제공하여 최신의 삶을 지원한다. 개인용 제품 및 기업 또는 상업 제품 사이에 성능 요구가 다를 수 있지만, 데이터 저장의 효율성에 대한 공통적인 요구가 존재한다.
현존해는 기술의 연구 및 개발은 서로 다른 방향들을 가질 수 있다. 일부는 디스크 기반의 저장소에서 동종으로(homogeneously) 데이터를 처리할 수 있다. 더 상세하세는, 복수의 분산된 스토리지 시스템들이 동질(homogeneous)의 인터이스에서 구동될 수 있다. 다른 분산된 스토리지 시스템들은 클라우드에서 데이터를 처리하여 데이터를 저장할 수 있다.
따라서, 프로세싱 메커니즘을 구비한 컴퓨팅 시스템에서 이종으로(heterogeneously) 효율적으로 데이터를 처리하는 것에 대한 요구가 여전히 존재한다. 끊임없이 증가하는 상업 경쟁 압박의 관점에서, 소비자의 증가하는 기대치 및 시장에서 차별화된 의미있는 제품의 기회가 감소함에 따라, 이러한 문제들에 대한 해답을 찾는 것이 더 중요하게 되고 있다. 또한, 비용을 절감하고, 효율성 및 성능을 향상하고, 그리고 경쟁 압박을 충족시키고자 하는 요구는 이러한 문제들에 대한 해답을 찾는 것의 중요성에 긴급성을 더한다. 이러한 문제들의 해답들은 오랫동안 검색되어 왔으나, 선행하는 개발은 더 효율적인 해답을 가르치거나 제안하지 못하였으며, 따라서 이러한 문제들에 대한 해답은 이 분야의 기술자들에게 오랫동안 해결할 수 없었던 난제이다.
본 발명은 향상된 효율성을 갖는 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예들에 따른 컴퓨팅 시스템은 호스트 장치가 스토리지 장치를 액세스하기 위하여 이슈한 요청 동작을 통신하기 위한 수정 동작을 생성하도록 구성되는 게이트웨이 블록을 포함한다. 상기 게이트웨이 블록은, 상기 요청 동작에 포함된 상호 작용 인터페이스를 스토리지 장치에 의해 실행 가능한 상호 작용 인터페이스로 변환하기 위해 변환 인터페이스를 생성하도록 구성되는 변환 블록, 그리고 상기 변환 블록과 결합되고, 상기 요청 동작에 포함된 객체 표현을 상기 스토리지 장치에서 사용되는 객체 표현으로 번역하기 위해 번역 표현을 생성하도록 구성되는 번역 블록을 포함한다.
본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작 방법은, 요청 동작에 포함된 상호 작용 인터페이스를 스토리지 장치에 의해 실행 가능한 상호 작용 인터페이스로 변환하기 위해, 게이트웨이 블록으로 변환된 인터페이스를 생성하는 단계, 상기 요청 동작에 포함된 객체 표현을 상기 스토리지 장치에서 사용되는 객체 표현으로 번역하기 위해, 번역된 표현을 생성하는 단계, 그리고 상기 스토리지 장치를 액세스하기 위해 상기 호스트 장치에 의해 이슈된 상기 요청 동작을 통신하기 위해, 상기 변환된 인터페이스, 상기 번역된 표현 또는 이들의 조합을 포함하는 수정 동작을 생성하는 단계를 포함한다.
본 발명의 실시 예들은, 게이트웨이 블록에 의해 실행되는 명령들을 포함하는 컴퓨터로 독출되는 저장 매체를 제공한다. 상기 컴퓨터로 독출되는 저장 매체는, 요청 동작에 포함된 상호 작용 인터페이스를 스토리지 장치에 의해 실행 가능한 상호 작용 인터페이스로 변환하기 위해, 게이트웨이 블록으로 변환된 인터페이스를 생성하는 단계, 상기 요청 동작에 포함된 객체 표현을 상기 스토리지 장치에서 사용되는 객체 표현으로 번역하기 위해, 번역된 표현을 생성하는 단계, 그리고 상기 스토리지 장치를 액세스하기 위해 상기 호스트 장치에 의해 이슈된 상기 요청 동작을 통신하기 위해, 상기 변환된 인터페이스, 상기 번역된 표현 또는 이들의 조합을 포함하는 수정 동작을 생성하는 단계를 포함한다.
본 발명의 실시 예들에 따르면, 게이트웨이 블록은 변환된 인터페이스 및 번역된 객체 표현을 제공한다. 따라서, 이종의 스토리지 장치와 통신하는 컴퓨팅 장치의 효율성이 향상된다.
도 1은 본 발명의 제1 실시 예에 따른 프로세싱 메커니즘을 구비한 컴퓨팅 시스템의 구조도이다.
도 2는 본 발명의 제2 실시 예에 따른 프로세싱 메커니즘을 구비한 컴퓨팅 시스템의 구조도이다.
도 3은 본 발명의 제3 실시 예에 따른 프로세싱 메커니즘을 구비한 컴퓨팅 시스템의 구조도이다.
도 4는 본 발명의 제4 실시 예에 따른 프로세싱 메커니즘을 구비한 컴퓨팅 시스템의 구조도이다.
도 5는 컴퓨팅 시스템의 제어 흐름의 예이다.
도 6은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 응용 예이다.
도 7은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작 방법의 순서도이다.
다양한 실시 예들은 컴퓨팅 시스템을 포함한다. 컴퓨팅 시스템은 변환된 인터페이스, 번역된 표현 또는 이들의 조합을 생성함으로써 수정 동작을 생성하여, 스토리지 장치와 통신하는 호스트 장치의 효율성을 향상시킨다. 수정 동작을 생성함으로써, 호스트 장치는 호스트 장치와 다른 언어 인터페이스, 통신 프로토콜, 객체 표현 또는 이들의 조합을 사용하는 스토리지 장치와 통신할 수 있다. 결과적으로, 호스트 장치는 요청 동작을 끊김없이 통신하여 클라이언트에 의해 요청된 동작 결과를 획득할 수 있다.
다양한 실시 예들은 컴퓨팅 시스템을 포함한다. 컴퓨팅 시스템은 요청 동작에 포함된 상호 작용 인터페이스를 스토리지 장치에서 실행 가능한 상요 작용 인터페이스로 변환하기 위해 게이트웨이 블록으로 변환된 인터페이스를 생성하며, 이는 스토리지 장치와 통신하는 호스트 장치의 효율성을 향상시킨다. 또한, 컴퓨팅 시스템은 요청 동작에 포함된 객체 표현을 스토리지 장치에서 사용되는 객체 표현으로 번역하기 위해 번역된 표현을 생성할 수 있다. 호스트 장치는 스토리지 장치에서 사용되는 객체 표현이 호스트 장치와 다르더라도, 상호 작용 인터페이스를 사용하여 스토리지 장치와 통신할 수 있다. 또한, 컴퓨팅 시스템이 스토리지 장치를 액세스하기 위하여 호스트 장치에 의해 이슈된 요청 동작을 통신하기 위해, 변환된 인터페이스, 번역된 표현 또는 이들의 조합을 포함하는 수정 동작을 생성함에 따라, 컴퓨팅 시스템은 서로 다른 종류의 언어 인터페이스, 통신 프토토콜 또는 이들의 조합을 지원하는 장치들을 지원할 수 있다. 결과적으로, 컴퓨팅 시스템은 스토리지 장치와 통신하는 호스트 장치의 효율성을 향상시켜, 요청된 동작 결과를 획득할 수 있다.
후술되는 실시 예들은 당업자가 본 발명을 구현하고 사용할 수 있을 정도로 상세하게 설명된다. 후술되는 기재에 기반하여, 시스템, 프로세스, 구조 또는 기계적 변경이 적용된 다른 실시 예들이 본 발명의 실시 예들의 범위로부터 괴리되지 않으며 구현될 수 있음이 이해될 것이다.
후술되는 기재에서, 본 발명의 다양한 실시 예들의 철저한 이해를 제공하기 위하여 다양한 구체적인 상세(detail)들이 제공된다. 그러나, 이러한 구체적인 상세 없이 다양한 실시 예들이 구현될 수 있다. 다양한 실시 예들이 모호해지는 것을 회피하기 위하여, 일부 잘 알려진 회로들, 시스템 구성 및 프로세스 단계들은 상세하게 설명되지 않는다.
시스템의 실시 예들을 보여주는 도면들은 부분적으로 개략적이며, 스케일(scale), 더 상세하게는 면적들의 일부는 명확한 설명을 위하여 도면에서 강조되어 도시된다. 마찬가지로, 간결한 설명을 위하여 도면들은 유사한 방향들을 보여주지만, 도면들의 이러한 묘사는 대부분 임의적인 것이다. 일반적으로, 실시 예는 어느 방향으로도 동작될 수 있다. 실시 예들은 제1 실시 예, 제2 실시 예 등으로 표시되지만, 이는 설명의 편의를 위한 것이며 중요한 의미를 갖거나 본 발명을 한정하지 않는다.
여기에 개시되는 '모듈'은 본 발명의 실시 예들에서 해당 용어가 사용되는 맥락에 따라, 소프트웨어, 하드웨어 또는 이들의 조합을 포함할 수 있다. 예를 들어, 소프트웨어 모듈은 기계 코드, 펌웨어, 임베디드 코드, 그리고/또는 응용 소프트웨어일 수 있다. 예를 들어, 하드웨어 모듈은 회오, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어, 압력 센서, 관성 센서, 미세전자기게시스템(MEMS, microelectromechanical system), 수동 장치 또는 이들의 조합일 수 있다. 또한, '모듈'이 장치 청구항 부분에서 기재되면, '모듈'은 장치 청구항의 목적 및 범위에 따라 하드웨어 회로를 포함하는 것으로 여겨진다.
후술되는 실시 예들에서, 모듈은 설명되는 바와 같이 또는 도시되는 바와 같이 다른 장치와 결합될 수 있다. 결합은 결합된 장치들 사이에 개입하는 장치를 통해 간접적 또는 개입하는 장치 없이 직접적일 수 있다. 결합은 물리적 접촉 또는 장치들 사이의 통신일 수 있다.
도 1을 참조하면, 본 발명의 제1 실시 예에 따른 프로세싱 메커니즘을 구비한 컴퓨팅 시스템(100)의 구조도가 도시된다. 도 1은 ISC (In-Storage Computing) 모델이 사용되는 컴퓨팅 시스템(100)의 예를 보여준다. ISC는 프로세서, 메모리 저장소, 또는 이들의 조합을 포함하는 스토리지 장치를 나타낼 수 있다.
예를 들어, 스토리지 장치(102)는 스토리지 프로세서(104), 스토리지 메모리 블록(106) 또는 이들의 조합을 포함할 수 있다. 스토리지 장치(102)는 ISC 모델의 예를 나타낼 수 있다. 스토리지 장치(102)는 데이터를 처리하기 위한 컴퓨팅 및 저장 용량(capacity)을 제공한다. 스토리지 프로세서(104)는 스토리지 장치(102)의 컴퓨팅 엔진을 제공할 수 있다. 스토리지 메모리 블록(106)은 데이터에 대한 액세스 및 저장을 제공할 수 있다.
예를 들어, 스토리지 메모리 블록(106)은 랜덤 액세스 메모리(RAM) 장치 또는 코어를 나타낼 수 있다. 코어로서, 스토리지 메모리 블록(106)은 집적 회로 장치, 프로세서, 응용 특화 표준 제품, 응용 특화 집적 회로, 시스템 온 칩 또는 이들의 조합과 같은 더 큰 장치에 집적될 수 있다. 스토리지 메모리 블록(106)은 동적 RAM (DRAM) 또는 정적 RAM (SRAM)과 같은 휘발성 메모리를 포함할 수 있다. 스토리지 메모리 블록(106)은 솔리드 스테이트 플래시 메모리와 같은 불휘발성 메모리를 포함할 수 있다.
스토리지 장치(102)는 SATA (serial advanced technology attachment) 인터페이스, SAS (serial attached small computer system interface) 인터페이스, PCI-E (peripheral component interconnect express) 인터페이스, 및 다양한 다른 인터페이스들 또는 이들의 조합과 같은 다수의 인터페이스들과 함께 동작할 수 있다. 호스트 장치(108)는 맵리듀스(MapReduce) 기능과 같은 기능들을 스토리지 장치(102)에 전가할 수 있다. 맵리듀스는 큰 데이터 세트들을 클러스터에서 병렬 및 분선 알고리즘으로 처리 및 생성하는 프로그램 모델을 나타낼 수 있다.
호스트 장치(108)는 게이트웨이 블록(110), 스토리지 장치(102) 또는 이들의 조합과 함께 동작할 수 있다. 호스트 장치(108)는 스토리지 장치(102)로부터 데이터를 액세스하기 위해 요청 동작(112)을 이슈할 수 있다. 요청 동작(112)은 커맨드를 나타낼 수 있다. 상세한 것은 후술된다.
호스트 장치(108)는 분산된 파일/스토리지 시스템으로부터의 이름 노드 블록(114), 데이터 노드 블록(116), 또는 이들의 조합을 포함할 수 있다. 이름 노드 블록(114)은 직업(job), 작업(task) 또는 이들의 조합을 조정한다. 예를 들어, 클라이언트는 데이터를 저장하기 위하여 복수의 데이터 노드 블록들(116)의 리스트를 이름 노드 블록(114)에서 검색할 수 있다. 이름 노드 블록(114)은 소프트웨어, 논리 게이트 또는 회로(아날로그 또는 디지털)와 같은 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 예를 들어, 이름 노드 블록(114)은 유한 상태 기계, 조합 논리, 또는 이들의 조합과 같은 하드웨어로 구현될 수 있다.
데이터 노드 블록(116)은 게이트웨이 블록(110)과 함께 동작하여 데이터를 스토리지 장치(102)에 저장할 수있다. 복수의 데이터 노드 블록들(116)은 클러스터를 형성할 수 있다. 데이터 노드 블록(116)은 소프트웨어, 논리 게이트 또는 회로(아날로그 또는 디지털)와 같은 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 예를 들어, 데이터 노드 블록(116)은 유한 상태 기계, 조합 논리, 또는 이들의 조합과 같은 하드웨어로 구현될 수 있다.
게이트웨이 블록(110)은 호스트 장치(108) 및 스토리지 장치(102) 사이에서 인터페이스할 수 있다. 게이트웨이 블록(110)은 호스트 장치(108) 및 스토리지 장치(102) 사이의 상호 작용 인터페이스(118)의 차이를 가교로 연결할 수 있다. 상호 작용 인터페이스(118)는 프로그래밍 언어, 프로토콜, 또는 이들의 조합을 나타낼 수 있다. 예를 들어, 호스트 장치(108)는 자바(TM)의 프로그래밍 언어로 대표되는상호 작용 인터페이스(118)를 사용하고,. 스토리지 장치(102)는 C++의 프로그래밍 언어로 대표되는 상호 작용 인터페이스를 사용할 수 있다. 예를 들어, 게이트웨이 블록(110)은 자바(TM) 기반의 요청 동작(112)이 C++를 사용하는 스토리지 장치(102)에 의해 해석되도록 수정된 동작(120)을 생성할 수 있다.
수정된 동작(120)은 요청 동작(112)의 수정된 버전이다. 게이트웨이 블록(110)은 소프트웨어, 논리 게이트 또는 회로(아날로그 또는 디지털)와 같은 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 예를 들어, 게이트웨이 블록(110)은 유한 상태 기계, 조합 논리, 또는 이들의 조합과 같은 하드웨어로 구현될 수 있다. 상세한 것은 후술된다.
게이트웨이 블록(110)은 변환 블록(122), 번역 블록(124) 또는 이들의 조합을 포함할 수 있다. 변환 블록(122)은 소프트웨어, 논리 게이트 또는 회로(아날로그 또는 디지털)와 같은 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 예를 들어, 변환 블록(122)은 유한 상태 기계, 조합 논리, 또는 이들의 조합과 같은 하드웨어로 구현될 수 있다. 번역 블록(124)은 소프트웨어, 논리 게이트 또는 회로(아날로그 또는 디지털)와 같은 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 예를 들어, 번역 블록(124)은 유한 상태 기계, 조합 논리, 또는 이들의 조합과 같은 하드웨어로 구현될 수 있다.
변환 블록(122)은 상호 작용 인터페이스(118)에 기반하여 변환된 인터페이스(126)를 생성한다. 상호 작용 인터페이스(118)는 장치에 의해 사용되는 프로그래밍 언어, 프로토콜 또는 이들의 조합을 나타낼 수 있다. 예를 들어, 호스트 장치(108)에 의해 사용되는 상호 작용 인터페이스(118)는 스토리지 장치(102)에 의해 사용되는 상호 작용 인터페이스(118)와 다를 수 있다.
상호 작용 인터페이스(118)는 언어 인터페이스(128), 통신 프로토콜(130) 또는 이들의 조합을 포함할 수 있다. 언어 인터페이스(128)는 고레벨 언어 그리고/또는 장치에 의해 실행 가능한 스크립트 언어와 같은 프로그래밍 언어를 나타낼 수 있다. 고레벨 언어는 자바(TM), C/C++, 또는 C#을 포함할 수 있다. 스크립트 언어는 파이톤(phyton), 펄(perl), 또는 루비(ruby)를 포함할 수 있다. 예를 들어, 호스트 장치(108)는 자바(TM)로 나타나는 언어 인터페이스(128)를 실행할 수 있고, 스토리지 장치(102)는 C/C++로 나타나는 언어 인터페이스(128)를 실행할 수 있다. 따라서, 언어 인터페이스(128)에서 미스매치가 생성된다.
통신 프로토콜(130)은 다중 장치들이 서로 통신하기 위한 방법을 나타낼 수 있다. 통신 프로토콜(130)은 SCSI (small computer system interface), ATA (advanced attachment technology), NVMe (non-volatile memory express), FC (fibre channel), HTTP (hypertext transfer protocol), HTTPS (HTTP Secure), RESTful, SOAP (simple object access protocol), 키-값과 같은 사유 프로토콜, 또는 이들의 조합을 포함할 수 있다. 예를 들어, 호스트 장치(108)는 HTTP로 나타나는 통신 프로토콜(130)을 사용할 수 있고, 스토리지 장치(102)는 SCSI로 나타나는 통신 프로토콜(130)을 사용할 수 있다. 따라서, 통신 프로토콜(130)에서 미스매치가 생성된다. 변환된 인터페이스(126)를 생성하는 변환 블록(122)의 상세는 후술된다.
번역 블록(124)은 객체 표현(134)에 기반하여 번역된 표현(132)을 생성한다. 객체 표현(134)은 데이터를 저장하기 위한 포맷을 나타낼 수 있다. 번역된 표현(132)은 객체 표현(134)의 수정된 버전일 수 있다. 더 상세한 예로서, 호스트 장치(108)에서 사용되는 객체 표현(134)은 스토리지 장치(102)에서 사용되는 객체 표현(134)과 다를 수 있다. 따라서, 미스 매치가 생성된다. 결과적으로, 호스트 장치(108)에 의해 이슈된 요청 동작(112)에서 요청된 객체 표현(134)을 해석하기 위하여, 스토리지 장치(102)에서 번역된 표현(132)이 요구된다.
객체 표현(134)은 논리 블록 주소(LBA), 페이지, URI (uniform resource identifier), 객체 식별 키, 다른 식별자들 또는 이들의 조합과 같은 하나 또는 그 이상의 식별자들을 포함할 수 있다. 번역된 표현(132)을 생성하는 번역 블록(124)의 상세는 후술된다.
게이트웨이 블록(110)은 변환된 인터페이스(126), 번역된 표현(132) 또는 이들의 조합을 포함하는 수정된 동작(120)을 통신할 수 있다. 스토리지 장치(102)는 수정된 동작(120)에 기반하여 스토리지 장치(102) 내부에 배치된 응용(136)을 실행하여 동작 결과(138)를 반환할 수 있다. 동작 결과(138)는 수정된 동작(120)을 처리함에 따른 결과이다. 스토리지 장치(102)는 동작 결과(138)를 게이트웨이 블록(110)과 통신할 수 있다. 게이트웨이 블록(110)은 동작 결과(138)를 호스트 장치(108)와 통신할 수 있다.
호스트 장치(108) 내에서, 데이터 노드 블록(116)은 게이트 웨이 블록(110)으로부터 동작 결과(138)를 수신할 수 있다. 데이터 노드 블록(116)은 동작 결과(138)를 이름 노드 블록(114)과 통신할 수 있다. 호스트 장치(108)는 요청 동작(112)을 요청한 클라이언트와 동작 결과(138)를 통신할 수 있다.
본 발명의 제1 실시 예는 복수의 스토리지 장치들(102)과 통신하는 게이트웨이 블록(110)을 보여준다. 예를 들어, 복수의 스토리지 장치들(102)은 이종의 다양한 스토리지 장치들(102)로 나타날 수 있다. 이종의 스토리지 장치들(102)은 서로 다른 상호 작용 인터페이스들(118)을 포함할 수 있다.
구체적인 예로서, 스토리지 장치들(102)의 한 종류는 C++로 나타나는 언어 인터페이스(128)를 포함하고, 스토리지 장치들(102)의 다른 종류는 루비(Ruby)로 나타나는 언어 인터페이스(128)를 포함할 수 있다. 예를 들어, 스토리지 장치들(102)의 한 종류는 SOAP의 통신 프로토콜(130)을 사용할 수 있고, 스토리지 장치들(102)의 다른 종류는 HTTPs의 통신 프로토콜을 사용할 수 있다.
예를 들어, 게이트웨이 블록(110)은 데이터 노드 블록(116)의 외부에 위치할 수 있으며, 한정되지는 않는다. 더 상세한 예로서, 게이트웨이 블록(110) 및 데이터 노드 블록(116)은 후술되는 바와 같이 일대일 또는 다대일 관계를 가질 수 있다.
도 2를 참조하면,본 발명의 제2 실시 예에 따른 프로세싱 메커니즘을 구비한 컴퓨팅 시스템(100)의 구조고다 도시된다. 본 발명의 제2 실시 예는 게이트웨이 블록(110), 변환 블록(122), 번역 블록(124) 또는 이들의 조합을 포함하는 데이터 노드 블록(116)을 포함한다.
더 상세한 예로서, 데이터 노드 블록(116)은 요청 동작(112)을 수신할 수 있다. 데이터 노드 블록(116)은 게이트웨이 블록(110)에 의해 생성된 수정된 동작(120)을 통신할 수 있다. 예를 들어, 데이터 노드 블록(116)은 수정된 동작(120)을 이종의 스토리지 장치들(102)과 통신할 수 있다. 스토리지 장치들(102) 각각은 동작 결과(138)를 데이터 노드 블록(116)과 통신할 수 있다.
도 3을 참조하면, 본 발명의 제3 실시 예에 따른 프로세싱 메커니즘을 구비한 컴퓨팅 시스템(100)의 구조도가 도시된다. 본 발명의 제3 실시 예는 복수의 데이터 노드들(116)과 통신하며 변환 블록(122), 번역 블록(124) 또는 이들의 조합을 포함하는 게이트웨이 블록(110)을 보여준다. 게이트웨이 블록(110)은 데이터 노드 블록(116)으로부터 독립적으로 존재할 수 있다.
더 상세한 예로서, 게이트웨이 블록(110)은 데이터 노드 블록(116) 각각으로부터 다양한 요청 동작(112)을 수신할 수 있다. 게이트웨이 블록(110)은 도 1의 스토리지 장치(102)와 통신하기 위하여, 요청 동작(112) 각각에 대해 수정된 동작(120)을 생성할 수 있다. 예를 들어, 게이트웨이 블록(110)은 스토리지 장치(102)로부터의 동작 결과(138)를 각 데이터 노드 블록(116)과 통신할 수 있다.
예를 들어, 본 발명의 제3 실시 예는 복수의 게이트웨이 블록들(110)을 포함할 수 있다. 상술된 바와 같이, 각 게이트웨이 블록(1100은 하나 또는 그 이상의 데이터 노드 블록(116)과 통신할 수 있다.
도 4를 참조하면, 본 발명의 제4 실시 에에 따른 프로세싱 메커니즘을 구비한 컴퓨팅 시스템(100)의 구조도가 도시된다. 본 발명의 제4 실시 예는 게이트웨이 블록(110), 변환 블록(122), 번역 블록(124) 또는 이들의 조합을 포함하는 스토리지 장치(102)를 보여준다.
더 상세한 예로서, 데이터 노드 블록(116)은 요청 동작(112)을 복수의 스토리지 장치들(102)과 직접 통신할 수 있다. 게이트웨이 블록(110)은 요청 동작(112)에 기반하여 스토리지 장치(102) 내에서 도 1의 수정된 동작(120)을 생성할 수 있다. 스토리지 장치(102)는 수정된 동작(120)에 기반하여 동작 결과(138)를 데이터 노드 블록(116)과 통신할 수 있다.
도 5를 참조하면, 컴퓨팅 시스템(100)의 제어 흐름의 예가 도시된다. 예를 들어, 제어 흐름은 맵리듀스 기능에 적용될 수 있다. 그러나, 제어 흐름은 다른 기능들에 적용하여 설명될 수 있다.
상술된 바와 같이, 호스트 장치(108)는 클라이언트로부터 도 1의 요청 동작(112)을 수신할 수 있다. 호스트 장치(108) 내에서 도 1의 네임 노드 블록(114), 도 1의 데이터 노드 블록(116) 또는 이들의 조합은 맵리듀스 기능과 같은 기능을 통해 요청 동작(112)을 처리할 수 있다.
게이트웨이 블록(110)은 요청 동작(112)을 수신하여 도 1의 수정된 동작(120)을 생성한다. 수정된 동작(120)은 스토리지 장치(102)가 요청 동작(112)을 해석할 수 있도록 도 1의 변환된 인터페이스(126), 도 1의 번역된 표현(132) 또는 이들의 조합을 포함할 수 있다.
스토리지 장치(102)는 스토리지 장치(102) 내에 배치된 도 1의 응용(136) 내에서 수정된 동작(120)을 실행할 수 있다. 스토리지 장치(102)는 게이트웨이 블록(110), 호스트 장치(108) 또는 이들의 조합으로 통신되는 도 1의 동작 결과(138)를 생성할 수 있다.
컴퓨팅 시스템(100)은 게이트웨이 모듈(502)을 포함할 수 있다. 게이트웨이 모듈(502)은 도 1의 수정된 동작(120)을 생성한다. 예를 들어, 게이트웨이 모듈(502)은 도 1의 요청 동작(112)에 기반하여 수정된 동작(120)을 생성할 수 있다. 게이트웨이 모듈(502)은 도 1의 호스트 장치(108), 도 1의 게이트웨이 블록(110), 도 1의 스토리지 장치(102) 또는 이들의 조합에 의해 실행될 수 있다.
게이트웨이 모듈(502)은 다양한 방법으로 수정된 동작(120)을 생성할 수 있다. 예를 들어, 게이트웨이 모듈(502)은 변환 모듈(504)을 포함할 수 있다. 변환 모듈(504)은 도 1의 변환된 인터페이스(126)를 생성할 수 있다. 예를 들어, 변환 모듈(504)은 도 1의 상호 작용 인터페이스(118)에 기반하여 변환된 인터페이스(126)를 생성할 수 있다. 변환 모듈(504)은 도 1의 변환 블록(122)에 의해 실행될 수 있다.
변환 모듈(504)은 다양한 방법으로 변환된 인터페이스(126)를 생성할 수 있다. 예를 들어, 변환 모듈(504)은 호스트 장치(108)에 의한 데이터 액세스에 대한 도 1의 인터페이스 언어(128)를 스토리지 장치(102)로 변환함으로써 변환된 인터페이스(126)를 생성할 수 있다. 더 상세한 예로서, 변환 모듈(504)은 호스트 장치(128)의 언어 인터페이스(128)를 스토리지 장치(102)의 언어 인터페이스(128)로 변환함으로써, 언어 바인딩(language binding)에 기반하여 변환된 인터페이스(126)를 생성할 수 있다.
더 상세한 예로서, 호스트 장치(108)의 언어 인터페이스(128)는 자바(TM)로 나타날 수 있다. 스토리지 장치(102)의 언어 인터페이스(128)는 C/C++로 나타날 수 있다. 변환 모듈(504)은 자바(TM)와 C/C++ 사이의 JNI (JAVA Native Interface)를 구현하여 자바(TM)를 C/C++로 변환함으로써, 변환된 인터페이스(126)를 생성할 수 있다. 결과적으로, 변환 모듈(504)은 호스트 장치(108)에 의해 통신되며 자바(TM)로 기재된 요청 동작(112)이 스토리지 장치(102)에 의해 해석될 수 있도록 변환된 인터페이스(126)를 생성할 수 있다.]
다른 예로서, 변환 모듈(504)은 도 1의 통신 프로토콜(130)을 변환함으로써 변환 인터페이스(126)를 생성할 수 있다. 더 상세한 예로서, 변환 모듈(504)은 HTTP 또는 HTTPs로 나타나는 호스트 장치(108)의 통신 프로토콜(130)을 ATA, SCSI, NVMe 또는 FC로 나타나는 스토리지 장치(102)의 통신 프로토콜(130)로 변환함으로써 변환된 인터페이스(126)를 생성할 수 있다. 다른 예로서, 변환 모듈(504)은 호스트 장치(108)의 통신 프로토콜(130)을 스토리지 장치(102)가 지원하는 OSD (open source definition) 또는 사유 프로토콜과 같은 인터페이스들, HTTP, HTTPS, RESTful, SOAP 또는 이들의 조합을 포함하는 웹 인터페이스로 나타나는 통신 프로토콜로 변환함으로써 변환된 인터페이스(126)를 생성할 수 있다.
예를 들어, 변환 모듈(504)은 HTTP 또는 HTTPS로 나타나는 호스트 장치(108)의 통신 프로토콜(130)을 체크할 수 있다. 변환 모듈(504)은 PUT, GET, DELETE 또는 이들의 조합과 같은 HTTP 또는 HTTPS 프로토콜의 요청 동작(112)을 스토리지 장치(108)에서 사용되는 WRITE, READ, ERASE 또는 이들의 조합을 포함하는 SCSI의 명령으로 변환할 수 있다.
더 상세한 예로서, 변환 모듈(504)은 호스트 장치(108)에서 사용되는 통신 프로토콜을 스토리지 장치(102)에서 사용되는 통신 프로토콜(130)로 사상(mapping)함으로써 변환된 인터페이스(126)를 생성할 수 있다. 더 상세한 예로서, 변환 모듈(504)은 데이터, 커맨드, 데이터/커맨드의 표현, 인코딩, 프레이밍(framing) 또는 이들의 조합을 변환함으로써 통신 프로토콜(130)을 사상할 수 있다.
게이트웨이 모듈(502)은 번역 모듈(506)을 포함할 수 있다. 번역 모듈(506)은 도 1의 번역된 표현(132)을 생성할 수 있다. 예를 들어, 번역 모듈(506)은 도 1의 객체 표현(134)에 기반하여 번역된 표현(132)을 생성할 수 있다. 번역 모듈(506)은 번역 블록(124)에 의해 실행될 수 있다.
더 상세한 예로서, 호스트 장치(108)에서 사용되는 객체 표현(134)은 URI, 파일이름, 키, 다른 식별자 또는 이들의 조합으로 나타날 수 있다. 스토리지 장치(102)에서 사용되는 객체 표현(134)은 LBA, 객체 식별자, 다른 식별자 또는 이들의 조합으로 나타날 수 있다. 더 상세한 예로서, 번역 모듈(506)은 파일이름을 대응하는 LBA 범위 리스트로 변환함으로써 번역된 표현(132)을 생성할 수 있다.
예를 들어, 번역 모듈(506)은 파일이름으로 나타나는 데이터 노드 블록(116)의 객체 표현(134)을 체크할 수 있다. 번역 모듈(506)은 파일이름을 스토리지 장치(102)에서 사용되는 객체 표현(134)으로 변환함으로써 번역된 표현(132)을 생성할 수 있다. 예를 들어, 스토리지 장치(102)의 객체 표현(134)은 LBA 범위로 나타날 수 있다.
번역 모듈(506)은 'fibmap', 'fiemap' 또는 이들의 조합을 포함하는 API (Application Program Interface)를 이용하여 번역된 표현(132)을 생성하여, 스토리지 장치(102)의 파일의 블록 레이아웃을 획득할 수 있다. API는 스토리지 장치(102)에 저장된 파일에 대한 시작 LAB 및 끝 LBA와 같은 블록 범위 정보를 반환할 수 있다. 블록 범위 정보들의 수는 파일 사이즈에 따른 다중 세트들일 수 있다.
모든 블록 범위 정보를 수집한 후에, 번역 모듈(506)은 호스트 장치(102)의 파일이름으로 나타나는 객체 표현(134)을 블록 범위 정보의 리스트로 나타나는 번역된 표현(132)으로 변환할 수 있다. 예를 들어, 블록 범위 정보의 리스트는 시작 LBA 및 끝 LBA의 집단을 포함할 수 있다. 결과적으로, 게이트웨이 모듈(502)은 번역된 표현(132)을 포함하는 수정된 동작(120)을 생성할 수 있다. 게이트웨이 모듈(502)은 변환된 인터페이스(126), 번역된 표현(132) 또는 이들의 조합을 포함하는 수정된 동작(120)을 실행 모듈(508)과 통신할 수 있다.
변환된 인터페이스(126), 번역된 표현(132) 또는 이들의 조합을 생성함으로써 수정된 동작(120)을 생성하는 컴퓨팅 시스템(100)은 스토리지 장치(102)와 통신하는 호스트 장치(108)의 효율성을 향상시킬 수 있음이 발견되었다. 수정된 동작(120)을 생성함으로써, 호스트 장치(108)는 호스트 장치(108)와 다른 언어 인터페이스(128), 통신 프로토콜(130), 객체 표현(132) 또는 이들의 조합을 이용하여 스토리지 장치(102)와 통신할 수 있다. 결과적으로, 호스트 장치(108)는 요청 동작(112)을 끊김없이 통신하여 클라이언트에 의해 요청된 도 1의 동작 결과(138)를 획득할 수 있다.
컴퓨팅 시스템(100)은 게이트웨이 모듈(502)과 결합된 길행 모듈(5080을 포함할 수 있다. 실행 모듈(508)은 수정된 동작(120)을 실행할 수 있다. 예를 들어, 실행 모듈(508)은 변환된 인터페이스(126), 번역된 표현(132) 또는 이들의 조합을 포함하는 수정된 동작(120)을 실행할 수 있다. 실행 모듈(508)은 스토리지 장치(102)에 의해 실행될 수 있다.
더 상세한 예로서, 실행 모듈(508)은 스토리지 장치(102) 내에 배치된 도 1의 응용(136)에서 수정된 동작(120)을 실행할 수 있다. 수정된 동작(120)에 기반하여, 응용(136)은 요청 동작(112)을 해석하고 호스트 장치(108)에 의해 요청된 동작 결과(138)를 획득할 수 있다. 실행 모듈(508)은 동작 결과(138)를 호스트 장치(108), 게이트웨이 블록(110) 또는 이들의 조합과 통신할 수 있다.
요청 동작(112)에 포함된 상호 작용 인터페이스(118)를 스토리지 장치(102)에 의해 실행 가능한 상호 작용 인터페이스(118)로 변환하기 위한 게이트웨이 블록(110)으로 변환된 인터페이스(126)를 생성하는 컴퓨팅 시스템(100)은 스토리지 장치(102)와 통신하는 호스트 장치(108)의 효율성을 향상시킴이 발견되었다. 또한, 요청 동작(112)에 포함된 객체 표현(134)을 스토리지 장치(102)에서 사용되는 객체 표현(134)으로 번역하기 위한 번역된 표현(132)을 생성하는 컴퓨팅 시스템(00)에 의해, 호스트 장치(108)는 호스트 장치(108)와 다른 상호 작용 인터페이스(118), 객체 표현(134) 또는 이들의 조합을 사용하는 스토리지 장치(102)와 통신할 수 있다. 또한, 스토리지 장치(102)를 액세스하기 위해 호스트 장치(102)에 의해 이슈된 요청 동작(112)을 통신하기 위한 변환된 인터페이스(126), 번역된 표현(132) 또는 이들의 조합을 포함하는 수정된 동작(120)을 생성하는 컴퓨팅 시스템(100)에 의해, 컴퓨팅 시스템(100)은 다른 언어 인터페이스(128), 통신 프로토콜(120) 또는 이들의 조합을 지원하는 장치를 지원할 수 있다. 결과적으로, 컴퓨팅 시스템(100)은 요청된 동작 결과(138)를 획득하기 위하여 스토리지 장치(102)와 통신하는 호스트 장치(108)의 효율성을 향상시킬 수 있다.
상술된 바와 같이, 도 5는 게이트웨이 모듈(502)을 포함하는 게이트웨이 블록(110)을 보여준다. 다른 예로서, 호스트 장치(108)는 게이트웨이 모듈(502)을 포함할 수 있다. 또다른 예로서, 스토리지 장치(102)는 게이트웨이 모듈(502)을 포함할 수 있다.
간결한 설명을 위하여, 도 5는 시작으로부터 종료로의 프로세스 흐름을 보여주는 블록들을 포함한다. 예를 들어, 프로세스 흐름은 510 블록에서 클라이언트가 호스트 장치(108)로 직업(job)을 보냄으로써 시작될 수 있다. 512 블록에서, 호스트 장치(108)는 맵리듀스 기능을 수행하여 직업을 복수의 작업들로 분할할 수 있다. 514 블록에서, 호스트 장치(108)는 분산된 작업들을 데이터 노드 블록들(116)에 사상할 수 있다. 516 블록에서, 데이터 노드 블록(116)은 스토리지 장치(102)를 호출하여 작업들을 처리할 수 있다.
518 블록에서, 게이트웨이 블록(110)은 호스트 장치(102)로부터 작업과 함께 전송된 객체 표현(134)을 번역하기 위해 스토리지 장치(102)에 저장된 객체 표현(134)을 요청할 수 있다. 520 판별 블록에서, 게이트웨이 블록(110)은 호스트 장치(102)에서 사용되는 객체 표현(510)을 검색할 수 있다. 더 상세한 예로서, 블록(522)에서 객체 표현들(134)의 리스트가 검색될 수 있다.
520 판별 블록에서, 스토리지 장치(102)에서 사용되는 객체 표현(134)이 검색되지 않으면, 프로세스는 종료된다. 객체 표현(134)이 검색되면, 게이트웨이 블록(110)이 수정된 동작(120)을 스토리지 장치(102)로 전송함으로써 프로세스 흐름이 지속된다. 게이트웨이 블록(502)은 518 블록, 520 판별 블록, 522 블록 또는 이들의 조합에서 설명된 기능들을 수행할 수 있다.
524 블록에서, 스토리지 장치(108)는 사상기를 구동하여, 호스트 장치(108)로부터의 객체 표현(134)의 번역된 표현(132)을 스토리지 장치(102)에 저장된 객체 표현(134)과 사상한다. 526 블록에서, 스토리지 장치(102)는 번역된 표현(132)을 사상하는 것의 결과로서 중간 데이터를 생성할 수 있다. 528 블록에서, 스토리지 장치(102)는 리듀서(reducer)를 실행하여 동작 결과(138)를 생성할 수 있다. 실행 모듈(508)은 524 블록, 526 블록, 528 블록 또는 이들의 조합에서 설명된 기능들을 수행할 수 있다.
도 6을 참조하면, 본 발명의 실시 예에 따른 컴퓨팅 시스템(100)의 응용 예가 도시되어 있다. 도 6은 컴퓨팅 시스템(100)의 예로서, 컴퓨터 서버, 자동차의 대시보드, 스마트폰, 모바일 장치, 그리고 노트북 컴퓨타와 같은 다양한 에들을 보여준다.
이러한 응용 예들은, 이동 구조 내의 데이터 프로세싱의 효율성을 향상시키는 본 발명의 다양한 실시 예들의 중요성을 보여준다. 도 1의 게이트웨이 블록(110)이 도 1의 수정 동작(120)을 생성함으로써, 도 1의 스토리지 장치(102)는 도 1의 호스트 장치(108)에 의해 이슈된 도 1의 요청 동작(112)을 해석할 수 있다. 도 1의 변환된 인터페이스(126), 도 1의 번역된 표현(132) 또는 이들의 조합을 생성하여 호스트 장치(108) 및 스토리지 장치(102)가 서로 통신하도록 함으로써, 게이트웨이 블록(110)은 이종 장치들 사이의 데이터 통신의 효율을 향상시킬 수 있다.
컴퓨터 서버, 대시보드, 그리고 노트북 컴퓨터와 같은 컴퓨팅 시스템(100)은 본 발명의 다양한 실시 예들을 구비한 인쇄 회로 기판 또는 본 발명의 다양한 실시 예들을 구비한 전자 어셈블리와 같은 하나 또는 그 이상의 서브시스템(미도시)을 포함할 수 있다. 컴퓨팅 시스템(100)은 어댑터 카드로도 구현될 수 있다.
도 7을 참조하면, 본 발명의 실시 예에 따른 컴퓨팅 시스템(100)의 동작의 방법(700)의 흐름도가 도시되어 있다. 방법(700)은, 702 블록에서 요청 동작에 포함된 상호 작용 인터페이스를 스토리지 장치에 의해 실행 가능한 상호 작용 인터페이스로 변환하기 위한 변환된 인터페이스를 생성하는 단계, 704 블록에서 요청 동작에 포함된 객체 표현을 스토리지 장치에서 사용되는 객체 표현으로 변환하기 위한 번역된 표현을 생성하는 단계, 그리고 706 블록에서 스토리지 장치를 액세스하기 위해 호스트 장치에 의해 이슈된 요청 동작을 통신하기 위하여, 변환된 인터페이스, 번역된 표현 또는 이들의 조합을 포함하는 수정 동작을 생성하는 단계를 포함한다.
702 블록은 스토리지 장치에 의해 실행 가능한 언어 인터페이스로 변환하기 위한 변환된 인터페이스를 생성하는 단계를 더 포함할 수 있고, 변환된 인터페이스를 생성하는 단계는 스토리지 장치와 통신 가능한 통신 프로토콜로 변환하기 위한 변환된 인터페이스를 생성하는 단계를 포함할 수 있다. 방법(700)은 동작 결과를 통신하기 위해, 스토리지 장치 내에 배치된 응용에 의해 수정 동작을 실행하는 것에 기반하여 생성되는 동작 결과를 전송하는 단계를 더 포함할 수 있다.
결과적인 방법, 프로세스, 장치, 제품, 그리고/또는 시스템은 간단하고, 비용 효율적이고, 복잡하지 않고, 다용도로 사용 가능하고, 정확하고, 민감하고, 그리고 효율적이며, 준비된, 효율적인 그리고 경제적인 생산, 응용 그리고 설비와 같은 알려진 구성 요소들을 채용함으로써 구현될 수 있다. 본 발명의 또 다른 주요한 측면은, 비용 절감, 시스템의 단순화, 그리고 성능의 향상이라는 전통적인 트렌드를 가치있게 지원 및 서비스한다는 점이다. 이러한 본 발명의 가치있는 측면들은 결과적으로 과학 기술의 상태가 다음 레벨로 진보하도록 한다.
본 발명이 구체적인 실시 예를 참조하여 설명되었으나, 다양한 대체들, 수정들, 그리고 변경들이 가능함은 이 분야에 숙련된 자들에게 상술된 설명을 참조하여 자명함이 이해될 것이다. 따라서, 이러한 대체들, 수정들, 그리고 변경들은 청구범위 내에 포함된다. 여기에 개시된 또는 첨부된 도면에 도시된 물체들은 예시적인 것이로 해석되며, 본 발명을 한정하지 않는다.
102; 스토리지 장치 104; 스토리지 프로세서
106; 스토리지 메모리 블록 108; 호스트 장치
110; 게이트웨이 블록 112; 요청 동작
114; 이름 노드 블록 116; 데이터 노드 블록
118; 상호 작용 인터페이스 120; 수정 동작
122; 변환 블록 124; 번역 블록
126; 변환된 인터페이스 128; 언어 인터페이스
130; 통신 프로토콜 132; 번역된 표현
134; 객체 표현 136; 응용
138; 동작 결과 502; 게이트웨이 모듈
504; 변환 모듈 506; 번역 모듈
508; 실행 모듈

Claims (20)

  1. 컴퓨팅 시스템에 있어서:
    호스트 장치가 맵리듀스 기능을 수행하여 클라이언트로부터 수신되는 직업을 작업들로 분할하고, 상기 작업들이 스토리지 장치를 액세스하는 요청 동작으로 실행되도록 사상한 후에, 상기 호스트 장치에 의해 이슈된 상기 요청 동작을 통신하기 위해 수정된 동작을 생성하여 상기 스토리지 장치를 액세스하도록 구성되는 게이트웨이 블록을 포함하고,
    상기 게이트웨이 블록은:
    고레벨 프로그래밍 언어를 포함하는 언어 인터페이스를 나타내는 상호 작용 인터페이스를 상기 고레벨 프로그래밍 언어로부터, 스토리지 프로세서를 포함하는 상기 스토리지 장치에 의해 실행 가능한 상호 작용 인터페이스에 대한 상기 요청 동작에 포함되는 다른 고레벨 프로그래밍 언어로 변환하기 위해 변환된 인터페이스를 생성하도록 구성되는 변환 블록; 그리고
    상기 변환 블록에 결합되고, 파일이름을 대응하는 논리 블록 주소 범위 리스트로 변환함으로써, 상기 호스트 장치에 의해 이슈된 상기 요청 동작에 포함된 상기 작업들과 함께 전송되는 객체 표현을 상기 스토리지 장치에서 사용되는 객체 표현으로 변환하기 위해 번역된 표현을 생성하도록 구성되는 번역 블록을 포함하는 컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 변환 블록은, 상기 호스트 장치로부터의 상기 요청 동작의 언어 인터페이스를 상기 스토리지 장치에 의해 실행 가능한 언어 인터페이스로 변환하기 위해 상기 변환된 인터페이스를 생성하도록 구성되는 컴퓨팅 시스템.
  3. 제1항에 있어서,
    상기 변환 블록은, 상기 호스트 장치의 언어 인터페이스를 상기 스토리지 장치의 언어 인터페이스로 변환함으로써 상기 변환된 인터페이스를 생성하도록 구성되는 컴퓨팅 시스템.
  4. 제1항에 있어서,
    상기 게이트웨이 블록은, 상기 스토리지 장치 내에 배치된 응용에 의해 상기 수정된 동작을 실행하는 것에 기반하여 생성되는 동작 결과를 통신하기 위해 상기 동작 결과를 수신하도록 구성되는 컴퓨팅 시스템.
  5. 제1항에 있어서,
    상기 호스트 장치에 의해 이슈된 상기 요청 동작을 통신하기 위해 상기 수정된 동작을 생성하여 상기 스토리지 장치를 액세스하도록 구성되는 상기 게이트웨이 블록을 포함하는 데이터 노드 블록을 더 포함하는 컴퓨팅 시스템.
  6. 제1항에 있어서,
    상기 호스트 장치에 의해 이슈된 상기 요청 동작을 수신하여 상기 스토리지 장치를 액세스하도록 구성되는 상기 게이트웨이 블록을 포함하는 스토리지 장치를 더 포함하는 컴퓨팅 시스템.
  7. 제1항에 있어서,
    상기 변환 블록은, 상기 호스트 장치로부터의 상기 요청 동작을 상기 스토리지 장치에서 사용되는 명령으로 변환하기 위해 통신 프로토콜을 체크하도록 구성되는 컴퓨팅 시스템.
  8. 제1항에 있어서,
    상기 변환 블록은, 데이터 노드 블록의 상기 객체 표현을 상기 스토리지 장치의 상기 객체 표현으로 매핑하기 위해 상기 객체 표현을 체크하여 상기 번역된 표현을 변환하도록 구성되는 컴퓨팅 시스템.
  9. 컴퓨팅 시스템의 동작 방법에 있어서:
    고레벨 프로그래밍 언어를 포함하는 언어 인터페이스를 나타내는 상호 작용 인터페이스를 상기 고레벨 프로그래밍 언어로부터, 스토리지 프로세서를 포함하는 스토리지 장치에 의해 실행 가능한 상호 작용 인터페이스에 대한 요청 동작에 포함되는 다른 고레벨 프로그래밍 언어로 변환하기 위해 변환된 인터페이스를 생성하는 단계;
    파일이름을 대응하는 논리 블록 주소 범위 리스트로 변환함으로써, 호스트 장치에 의해 이슈된 상기 요청 동작에 포함된 작업들과 함께 전송되는 객체 표현을 상기 스토리지 장치에서 사용되는 객체 표현으로 변환하기 위해 번역된 표현을 생성하는 단계; 그리고
    상기 호스트 장치가 맵리듀스 기능을 수행하여 클라이언트로부터 수신되는 직업을 상기 작업들로 분할하고, 상기 작업들이 스토리지 장치를 액세스하는 요청 동작으로 실행되도록 사상한 후에, 상기 호스트 장치에 의해 이슈된 상기 요청 동작을 통신하기 위해 상기 변환된 인터페이스, 상기 번역된 표현 또는 이들의 조합을 포함하는 수정된 동작을 생성하여 상기 스토리지 장치를 액세스하는 단계를 포함하는 동작 방법.
  10. 제9항에 있어서,
    상기 변환된 인터페이스를 생성하는 단계는, 상기 호스트 장치로부터의 상기 요청 동작의 상기 언어 인터페이스를 상기 스토리지 장치에 의해 실행 가능한 언어 인터페이스로 변환하기 위해 상기 변환된 인터페이스를 생성하는 단계를 포함하는 동작 방법.
  11. 제9항에 있어서,
    상기 변환된 인터페이스를 생성하는 단계는, 상기 호스트 장치의 언어 인터페이스를 상기 스토리지 장치의 언어 인터페이스로 변환함으로써 상기 변환된 인터페이스를 생성하는 단계를 포함하는 동작 방법.
  12. 제9항에 있어서,
    상기 스토리지 장치 내에 배치된 응용에 의해 상기 수정된 동작을 실행하는 것에 기반하여 생성되는 동작 결과를 통신하기 위해 상기 동작 결과를 전송하는 단계를 더 포함하는 동작 방법.
  13. 제9항에 있어서,
    상기 호스트 장치로부터의 상기 요청 동작을 상기 스토리지 장치에서 사용되는 명령으로 변환하기 위해 통신 프로토콜을 체크하는 단계를 더 포함하는 동작 방법.
  14. 제9항에 있어서,
    데이터 노드 블록의 상기 객체 표현을 상기 스토리지 장치의 상기 객체 표현으로 매핑하기 위해 상기 객체 표현을 체크하여 상기 번역된 표현을 변환하는 단계를 더 포함하는 동작 방법.
  15. 게이트웨이 블록에 의해 실행되는 명령들을 포함하는 컴퓨터로 독출되는 비일시적인 저장 매체에 있어서:
    고레벨 프로그래밍 언어를 포함하는 언어 인터페이스를 나타내는 상호 작용 인터페이스를 상기 고레벨 프로그래밍 언어로부터, 스토리지 프로세서를 포함하는 스토리지 장치에 의해 실행 가능한 상호 작용 인터페이스인터페이스에 대한 요청 동작에 포함되는 다른 고레벨 프로그래밍 언어로 변환하기 위해 변환된 인터페이스를 생성하고;
    파일이름을 대응하는 논리 블록 주소 범위 리스트로 변환함으로써, 호스트 장치에 의해 이슈된 상기 요청 동작에 포함된 작업들과 함께 전송되는 객체 표현을 상기 스토리지 장치에서 사용되는 객체 표현으로 변환하기 위해 번역된 표현을 생성하고; 그리고
    상기 호스트 장치가 맵리듀스 기능을 수행하여 클라이언트로부터 수신되는 직업을 상기 작업들로 분할하고, 상기 작업들이 스토리지 장치를 액세스하는 요청 동작으로 실행되도록 사상한 후에, 상기 호스트 장치에 의해 이슈된 상기 요청 동작을 통신하기 위해, 상기 변환된 인터페이스, 상기 번역된 표현 또는 이들의 조합을 포함하는 수정된 동작을 생성하여 상기 스토리지 장치를 액세스하는 것을 포함하는 저장 매체.
  16. 제15항에 있어서,
    상기 변환된 인터페이스를 생성하는 것은, 상기 호스트 장치로부터의 상기 요청 동작의 상기 언어 인터페이스를 상기 스토리지 장치에 의해 실행 가능한 언어 인터페이스로 변환하기 위해 상기 변환된 인터페이스를 생성하는 것을 포함하는 저장 매체.
  17. 제15항에 있어서,
    상기 변환된 인터페이스를 생성하는 것은, 상기 호스트 장치의 언어 인터페이스를 상기 스토리지 장치의 언어 인터페이스로 변환함으로써 상기 변환된 인터페이스를 생성하는 것을 포함하는 저장 매체.
  18. 제15항에 있어서,
    상기 스토리지 장치 내에 배치된 응용에 의해 상기 수정된 동작을 실행하는 것에 기반하여 생성되는 동작 결과를 통신하기 위해 상기 동작 결과를 전송하는 것을 더 포함하는 저장 매체.
  19. 제15항에 있어서,
    상기 호스트 장치로부터의 상기 요청 동작을 상기 스토리지 장치에서 사용되는 명령으로 변환하기 위해 통신 프로토콜을 체크하는 것을 더 포함하는 저장 매체.
  20. 제15항에 있어서,
    데이터 노드 블록의 상기 객체 표현을 상기 스토리지 장치의 상기 객체 표현으로 매핑하기 위해 상기 객체 표현을 체크하여 상기 번역된 표현을 변환하는 것을 더 포함하는 저장 매체.
KR1020150170102A 2014-12-31 2015-12-01 프로세싱을 수행하는 컴퓨팅 시스템 및 그것의 동작 방법 KR102478633B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462099060P 2014-12-31 2014-12-31
US62/099,060 2014-12-31
US14/749,298 US10198185B2 (en) 2014-12-31 2015-06-24 Computing system with processing and method of operation thereof
US14/749,298 2015-06-24

Publications (2)

Publication Number Publication Date
KR20160082229A KR20160082229A (ko) 2016-07-08
KR102478633B1 true KR102478633B1 (ko) 2022-12-19

Family

ID=56164223

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150170102A KR102478633B1 (ko) 2014-12-31 2015-12-01 프로세싱을 수행하는 컴퓨팅 시스템 및 그것의 동작 방법

Country Status (4)

Country Link
US (2) US10198185B2 (ko)
JP (1) JP6637763B2 (ko)
KR (1) KR102478633B1 (ko)
CN (1) CN105739916B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301422B2 (en) * 2016-02-23 2022-04-12 Samsung Electronics Co., Ltd. System and methods for providing fast cacheable access to a key-value device through a filesystem interface
US10762030B2 (en) * 2016-05-25 2020-09-01 Samsung Electronics Co., Ltd. Storage system, method, and apparatus for fast IO on PCIE devices
US20190220204A1 (en) * 2018-01-16 2019-07-18 Government Of The United States As Represented By The Secretary Of The Air Force Mobile large file transfer

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735683B2 (en) * 1994-09-14 2004-05-11 Hitachi, Ltd. Single-chip microcomputer with hierarchical internal bus structure having data and address signal lines coupling CPU with other processing elements
US6484235B1 (en) 1999-05-03 2002-11-19 3Ware, Inc. Methods and systems for dynamically distributing disk array data accesses
US20020026473A1 (en) * 2000-08-31 2002-02-28 Telefonaktiebolaget Lm Ericsson (Publ) Application-programming-interface-based method and system including triggers
US7861252B2 (en) * 2001-03-21 2010-12-28 Andrzej Uszok Intelligent software agent system architecture
WO2003017055A2 (en) * 2001-08-15 2003-02-27 Visa International Service Association Method and system for delivering multiple services electronically to customers via a centralized portal architecture
JP2004171209A (ja) * 2002-11-19 2004-06-17 Matsushita Electric Ind Co Ltd 共有メモリデータ転送装置
JP2006235960A (ja) 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
US7756154B2 (en) * 2005-03-22 2010-07-13 Netapp, Inc. Shared implementation for multiple system interfaces
US8489817B2 (en) * 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US20090055157A1 (en) * 2007-08-23 2009-02-26 Beyond Blades Ltd. Server Having Remotely Manageable Emulated Functions
US8296743B2 (en) * 2007-12-17 2012-10-23 Intel Corporation Compiler and runtime for heterogeneous multiprocessor systems
US7730244B1 (en) * 2008-03-27 2010-06-01 Xilinx, Inc. Translation of commands in an interconnection of an embedded processor block core in an integrated circuit
US8825708B1 (en) * 2008-04-30 2014-09-02 Netapp, Inc. Program language binding generation for system interfaces
US8682998B2 (en) * 2008-10-31 2014-03-25 Software Ag Method and server cluster for map reducing flow services and large documents
KR101021678B1 (ko) * 2009-12-07 2011-03-17 엘아이지넥스원 주식회사 데이터 연동 장치와 그 방법 및 데이터 연동 시스템
JPWO2011090032A1 (ja) * 2010-01-20 2013-05-23 株式会社日立製作所 並列処理プログラム生成方法、並列処理プログラム生成プログラム、及び並列処理プログラム生成装置
US8737941B2 (en) 2010-03-30 2014-05-27 Skyworks Solutions, Inc. Gain control systems and methods for controlling an adjustable power level
US9323775B2 (en) * 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
JPWO2012020544A1 (ja) 2010-08-11 2013-10-28 日本電気株式会社 データ処理システム、データ処理方法、およびプログラム
WO2012106362A2 (en) * 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
US9141527B2 (en) * 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8209274B1 (en) * 2011-05-09 2012-06-26 Google Inc. Predictive model importation
DE202012013469U1 (de) * 2011-11-14 2017-01-30 Google Inc. Datenverarbeitungsdienst
JP5937695B2 (ja) * 2011-12-14 2016-06-22 エンパイア テクノロジー ディベロップメント エルエルシー 接続装置へのセマンティックキャッシュクラウドサービス
JP5936118B2 (ja) * 2012-04-16 2016-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コード変換方法、プログラム及びシステム
US8996781B2 (en) 2012-11-06 2015-03-31 OCZ Storage Solutions Inc. Integrated storage/processing devices, systems and methods for performing big data analytics
US9031925B2 (en) 2012-12-13 2015-05-12 Sap Se Hadoop access via hadoop interface services based on function conversion
CN103902632B (zh) * 2012-12-31 2018-01-02 华为技术有限公司 键值存储系统中构建文件系统的方法、装置及电子设备
US9342557B2 (en) 2013-03-13 2016-05-17 Cloudera, Inc. Low latency query engine for Apache Hadoop
US9756128B2 (en) 2013-04-17 2017-09-05 Apeiron Data Systems Switched direct attached shared storage architecture
US8819335B1 (en) 2013-08-30 2014-08-26 NXGN Data, Inc. System and method for executing map-reduce tasks in a storage device
CN104008066B (zh) * 2014-05-26 2017-06-13 武汉光忆科技有限公司 一种光盘存储系统中文件存取方法及装置
CN104077084B (zh) * 2014-07-22 2017-07-21 中国科学院上海微系统与信息技术研究所 分布式随机访问文件系统及其访问控制方法
US10372770B1 (en) * 2016-09-26 2019-08-06 EMC IP Holding Company LLC Cloud-based platform for semantic indexing of web objects

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
미국공개특허 제2004-0205772호(2004.10.14.) 1부.*
미국등록특허 제7730244호(2010.06.01.) 1부.*
한국등록특허 제10-1021678호(2011.03.17.) 1부.*

Also Published As

Publication number Publication date
US20160188256A1 (en) 2016-06-30
US10198185B2 (en) 2019-02-05
CN105739916A (zh) 2016-07-06
US20190114084A1 (en) 2019-04-18
JP6637763B2 (ja) 2020-01-29
US10732842B2 (en) 2020-08-04
KR20160082229A (ko) 2016-07-08
JP2016126799A (ja) 2016-07-11
CN105739916B (zh) 2021-08-03

Similar Documents

Publication Publication Date Title
US10026041B2 (en) Interoperable machine learning platform
TWI400652B (zh) Dual operating system parallel processing methods, recording media and computer program products
US10860380B1 (en) Peripheral device for accelerating virtual computing resource deployment
JP6040101B2 (ja) ストレージ装置の制御方法、ストレージ装置及び情報処理装置
US10732842B2 (en) Computing system with processing and method of operation thereof
CN111194437B (zh) 使用存储中代码执行的数据处理卸载
CN105474177B (zh) 分布式处理系统、设备、方法和记录介质
JP6250842B2 (ja) Usbオーバーipを用いた、別のデバイスとの非usbセンサの共有
WO2023082944A1 (zh) 服务器系统启动的方法、装置、电子设备及存储介质
CN103440111A (zh) 虚拟机磁盘空间的扩展方法、宿主机和平台
CN111371851B (zh) 一种连接方法、装置及电子设备和存储介质
CN114218278A (zh) http接口的数据表字段查询方法及系统
JP6418419B2 (ja) ハードディスクがアプリケーションコードを実行するための方法および装置
US9684525B2 (en) Apparatus for configuring operating system and method therefor
WO2023116859A1 (zh) 传感器设备虚拟化的方法、装置、电子设备和存储介质
WO2022199331A1 (zh) 用于获取调用栈中栈帧信息的方法、装置、设备和介质
JP2016126799A5 (ko)
US8643861B2 (en) Image processing apparatus, data processing method of image processing apparatus, and storage medium for performing multitask processing and single task processing while interpreting PDL data
KR20210085674A (ko) 다중-스트림을 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법
US20220261188A1 (en) Pass-through command queues for unmodified storage drivers
CN117093158B (zh) 分布式存储系统的存储节点、系统、数据处理方法及装置
US9317440B2 (en) Computing device and virtual device control method for controlling virtual device by computing system
US20240160501A1 (en) Interoperability between actor frameworks and asynchronous frameworks
US20240291890A1 (en) System and method for managing end point presenting devices
US20230007080A1 (en) Computing device and storage card

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