KR20210108487A - 저장 디바이스 동작 오케스트레이션 - Google Patents

저장 디바이스 동작 오케스트레이션 Download PDF

Info

Publication number
KR20210108487A
KR20210108487A KR1020217025861A KR20217025861A KR20210108487A KR 20210108487 A KR20210108487 A KR 20210108487A KR 1020217025861 A KR1020217025861 A KR 1020217025861A KR 20217025861 A KR20217025861 A KR 20217025861A KR 20210108487 A KR20210108487 A KR 20210108487A
Authority
KR
South Korea
Prior art keywords
data
controller
computing
block
data block
Prior art date
Application number
KR1020217025861A
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 KR20210108487A publication Critical patent/KR20210108487A/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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/0626Reducing size or complexity of 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0656Data buffering 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/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/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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

저장 디바이스 동작 오케스트레이션과 관련된 시스템, 장치 및 방법이 설명된다. 복수의 컴퓨팅 디바이스(또는 "타일")가 제어기(예를 들어, "오케스트레이션 제어기") 및 인터페이스에 결합될 수 있다. 제어기는 컴퓨팅 디바이스의 동작을 제어할 수 있다. 예를 들어, 제어기는 장치에 결합된 메모리 디바이스로부터 데이터 블록을 요청하고, 복수의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스의 처리 유닛이 데이터의 적어도 일부가 정렬, 재정렬, 제거 또는 폐기되는 데이터 블록에 대한 동작을 수행하도록 하고, 데이터의 일부가 정렬, 재정렬, 제거 또는 폐기된 후 데이터 블록이 복수의 컴퓨팅 디바이스에 결합된 인터페이스로 전송되도록 하는 회로부를 포함할 수 있다.

Description

저장 디바이스 동작 오케스트레이션
본 개시는 전반적으로 반도체 메모리 및 방법에 관한 것으로, 보다 상세하게는 저장 디바이스 동작 오케스트레이션(orchestration)을 위한 장치, 시스템 및 방법에 관한 것이다.
메모리 디바이스는 전형적으로 컴퓨터 또는 다른 전자 시스템의 내부, 반도체, 집적 회로로 제공된다. 휘발성 메모리와 비휘발성 메모리를 포함한 다양한 유형의 메모리가 있다. 휘발성 메모리는 데이터(예를 들어, 호스트 데이터, 에러 데이터 등)를 유지하기 위해 전원이 필요할 수 있고, 다른 것 중에서 RAM(Random Access Memory), DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), SDRAM(synchronous dynamic random access memory) 및 TRAM(thyristor random access memory)를 포함한다. 비휘발성 메모리는 전원이 공급되지 않을 때 저장된 데이터를 유지하여 영구 데이터를 제공할 수 있으며 다른 것 중에서 NAND 플래시 메모리, NOR 플래시 메모리 및 저항 가변 메모리 예컨대, PCRAM(phase change random access memory), RRAM(resistive random access memory) 및 MRAM(magnetoresistive random access memory) 예컨대, STT RAM(Spin Torque Transfer Random Access Memory)를 포함한다.
메모리 디바이스는 컴퓨터 또는 전자 시스템이 동작하는 동안 호스트에 의해 사용하기 위한 데이터, 명령 및/또는 지침을 저장하기 위해 호스트(예를 들어, 호스트 컴퓨팅 디바이스)에 결합될 수 있다. 예를 들어, 데이터, 명령, 및/또는 지침은 컴퓨팅 또는 다른 전자 시스템의 동작 동안 호스트와 메모리 디바이스(들) 사이에서 전송될 수 있다.
도 1은 본 개시의 다수의 실시예에 따른 다수의 메모리 디바이스 및 저장 제어기를 포함하는 장치를 포함하는 컴퓨팅 시스템 형태의 기능 블록도이다.
도 2는 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 기능 블록도이다.
도 3은 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 다른 기능 블록도이다.
도 4a는 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 또 다른 기능 블록도이다.
도 4b는 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 또 다른 기능 블록도이다.
도 4c는 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 또 다른 기능 블록도이다.
도 5는 본 개시의 다수의 실시예에 따른 컴퓨팅 타일 형태의 블록도이다.
도 6은 본 개시의 다수의 실시예에 따른 컴퓨팅 타일 형태의 다른 블록도이다.
도 7은 본 개시의 다수의 실시예에 따른 저장 디바이스 동작 오케스트레이션을 위한 예시적인 방법을 나타내는 흐름도이다.
본 개시는 저장 디바이스 동작 오케스트레이션을 위한 장치, 시스템 및 방법을 포함한다. 예시적인 장치는 제어기(예를 들어, "오케스트레이션 제어기(orchestration controller)") 및 인터페이스에 결합된 복수의 컴퓨팅 디바이스(또는 "타일(tile)")를 포함한다. 제어기는 디바이스에 결합된 메모리 디바이스로부터 데이터 블록을 요청하고, 복수의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스의 처리 유닛이 데이터 블록에 대한 동작을 수행하도록 하는 회로부를 포함할 수 있으며, 여기서 데이터의 적어도 일부는 정렬, 재정렬, 제거 또는 폐기되고, 데이터의 일부가 정렬, 재정렬, 제거 또는 폐기된 후 데이터 블록이 복수의 컴퓨팅 디바이스에 결합된 인터페이스로 전송되도록 한다.
메모리 디바이스는 컴퓨팅 디바이스에 중요하거나 대단히 중요한 데이터를 저장하는데 사용될 수 있으며 컴퓨팅 디바이스와 관련된 호스트 간에 이러한 데이터를 전송할 수 있다. 그러나, 메모리 디바이스에 의해 저장되는 데이터의 크기와 수량이 증가함에 따라 호스트와 데이터를 주고 받는데 시간 소모적이고 자원 집약적일 수 있다. 예를 들어, 호스트가 메모리 디바이스에서 큰 데이터 블록을 요청할 때, 요청을 수행하는데 소요되는 시간 및/또는 자원의 양은 데이터 블록과 관련된 데이터의 크기 및/또는 수량에 비례하여 증가할 수 있다.
메모리 디바이스의 저장 용량이 증가함에 따라, 메모리 디바이스에 의해 저장될 수 있는 데이터가 점점 더 많아지고 따라서, 호스트로 또는 호스트로부터 전송될 수 있게 됨에 따라 이러한 효과는 더욱 두드러질 수 있다. 또한, 요청된 데이터의 블록은 호스트와 관련이 없거나 호스트에 의해 필요하지 않은 데이터를 포함할 수 있다. 예를 들어, 일부 접근 방식에서, 관련 데이터를 포함하는 데이터 블록과 관련 없는 데이터가 호스트로 전송될 수 있다. 이로 인해 데이터 블록에서 관련 데이터를 추출하기 위해 호스트 측에서 추가 처리가 필요할 수 있으며, 이로 인해 추가 처리 시간이 발생하거나 및/또는 추가 처리 자원이 소모될 수 있다.
예를 들어, 일부 접근 방식에서, 정보의 다수의 열을 포함하는 데이터 블록과 같이 많은 양의 정보를 포함하는 데이터 블록이 있을 때, 데이터 블록에 포함된 모든 정보는 호스트가 데이터 블록에 포함된 특정 데이터 열(column)만 원함에도 불구하고 호스트로 전송될 수 있다. 큰 데이터 블록의 경우, 관련 정보를 추출하기 위해 데이터 블록을 처리하는 것과 관련된 처리 시간 및/또는 자원 소비가 과도해져서 호스트 또는 컴퓨팅 디바이스의 효율성이 감소할 수 있다.
비제한적인 예로서, 호스트는 메모리 디바이스에 의해 데이터베이스에 저장된 특정 데이터를 요청할 수 있다. 호스트는 데이터베이스에서 데이터의 처음 2개의 열에만 관심이 있을 수 있지만 데이터의 제 3 열에는 관심이 없을 수 있다. 일부 접근 방식에서, 메모리 디바이스는 3개의 데이터 열 모두를 호스트에 전송할 수 있고, 호스트는 관련된 처음 2개의 열만을 획득하기 위해 데이터에 대한 추가 처리를 수행할 수 있다. 이러한 예에서, 호스트가 사용하지 않을 호스트로 전체 데이터 열을 전송하는데 뿐만 아니라 관련 없는 데이터(예를 들어, 이 예의 제 3 열)를 제거하기 위한 호스트 동작에 추가 시간, 대역폭 및/또는 처리 자원이 소비될 수 있다.
대조적으로, 본 출원의 실시예는 데이터를 호스트로 전송하기 전에 (예를 들어, 메모리 디바이스에 결합되거나 제공되는 회로부에 의해) 저장 제어기에 의해 데이터 블록으로부터 관련 데이터가 추출되는 것을 허용한다. 예를 들어, 본 출원의 실시예는, 데이터의 적어도 일부가 정렬, 재정렬, 제거 또는 폐기되는 동작이 데이터가 호스트로 전송되기 전에 데이터 블록에 대해 수행되는 것을 허용할 수 있다.
비제한적인 예에서, 본 출원의 실시예는 호스트로 전송될 데이터의 양이 호스트로의 데이터의 전송 전에 감소되는 필터링 동작이 데이터가 호스트로 전송되기 전에 데이터 블록에 대해 수행되는 것을 허용할 수 있다. 호스트로 전송되는 데이터에 위의 비제한적인 예와 관련하여, 이것은 호스트가 관련 데이터 및 관련 없는 데이터 대신에 데이터의 처음 2개의 열(예를 들어, 관련 데이터)만을 수신하는 것을 허용할 수 있다. 이는 관련 없는 데이터를 호스트로 전송하는데 소비되는 시간, 대역폭 및/또는 처리 자원을 줄일 수 있을 뿐만 아니라 일부 접근 방식과의 비교하여 관련 없는 데이터를 제거하기 위해 호스트 동작에 의해 소비되는 시간, 대역폭 및/또는 처리 자원을 줄일 수 있다.
유사하게, 본 출원의 실시예는 저장 제어기에 결합된 메모리 디바이스에 데이터를 전송하기 전에 관련 데이터가 저장 제어기에 의해 (예를 들어, 메모리 디바이스에 결합되거나 제공되는 회로부에 의해) 데이터 블록으로부터 추출되는 것을 허용한다. 예를 들어, 본 출원의 실시예는 메모리 디바이스(들)로 전송될 데이터의 양이 메모리 디바이스(들)로 데이터를 전송하기 전에 감소되는 필터링 동작과 같은 동작이 데이터가 메모리 디바이스(들)로 전송되기 전에 데이터 블록에 수행되는 것을 허용할 수 있다.
실시예는 이러한 특정 예에 제한되지 않으며, 일부 실시예에서는 데이터 또는 데이터 블록에 대해 다른 동작이 수행될 수 있다. 일부 실시예에서, 데이터가 호스트로 전송되기 전에 데이터에 대해 다양한 산술 및/또는 로직 연산이 수행될 수 있다. 예를 들어, 산술 연산 예컨대, 덧셈, 뺄셈, 곱셈, 나눗셈, 융합 곱셈 덧셈, 곱셈-누적, 내적 단위(dot product units), 크거나 작음, 절대값(예를 들어, FABS()), 고속 푸리에 변환, 역 고속 푸리에 변환, 시그모이드 함수(sigmoid function), 컨볼루션, 제곱근, 지수 및/또는 로그 연산 및/또는 로직 연산 예컨대, AND, OR, XOR, NOT, 삼각 연산 예컨대, 사인, 코사인, 탄젠트 등, 뿐만 아니라, 벡터화된 I/O(예를 들어, 수집-분산) 연산이 데이터가 메모리 디바이스(들) 및/또는 호스트로 전송되기 전에 데이터 또는 데이터 블록에 대해 수행될 수 있다.
본 개시의 다음의 상세한 설명에서, 본 개시의 일부를 형성하고 본 개시의 하나 이상의 실시예가 실시될 수 있는 방법이 예시로서 도시된 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 개시의 실시예를 실시할 수 있도록 충분히 상세하게 설명되며, 다른 실시예가 이용될 수 있고 프로세스, 전기적 및 구조적 변경이 본 개시의 범위를 벗어나지 않고 이루어질 수 있음을 이해해야 한다.
본 출원에 사용된, 지정자 예컨대, "X", "Y", "N", "M", "A", "B", "C", "D" 등은 특별히 도면에서 도면 번호와 관련하여, 그렇게 지정된 다수의 특정 피처가 포함될 수 있음을 나타낸다. 또한, 본 출원에서 사용된 용어는 단지 특정한 실시예를 설명하기 위한 것이며, 한정하려는 의도가 아님을 이해해야 한다. 본 출원에 사용된, 단수 형태 "a", "an" 및 "the"는 문맥이 명백하게 달리 지시하지 않는 한 단수 및 복수 지시어 모두를 포함할 수 있다. 또한, "다수의", "적어도 하나" 및 "하나 이상"(예를 들어, 다수의 메모리 뱅크)은 하나 이상의 메모리 뱅크를 나타낼 수 있는 반면, "복수"는 하나 초과의 그러한 것을 나타내도록 의도된다. 또한, "할 수 있다(can)" 및 "할 수 있다(may)"라는 단어는 본 출원 전반에 걸쳐 강제적인 의미(즉, 반드시 해야 함)가 아니라 허용적인 의미(즉, 잠재적인 의미, 할 수 있는)로 사용된다. 용어 "포함하다"와 그 파생어는 "포함하지만 이에 한정되지 않는"을 의미한다. "결합된" 및 "결합" 이라는 용어는 물리적으로 직접 또는 간접적으로 연결되거나 문맥에 따라 명령 및/또는 데이터에 대한 액세스 및 이동(송신)을 의미한다. "데이터" 및 "데이터 값" 이라는 용어는 본 출원에서 상호 교환가능하게 사용되며 문맥에 적절하게 동일한 의미를 가질 수 있다.
본 출원의 도면은 제 1 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자가 도면의 엘리먼트 또는 컴포넌트를 식별하는 넘버링 규칙을 따른다. 다른 도면 사이의 유사한 엘리먼트 또는 컴포넌트는 유사한 숫자를 사용하여 식별할 수 있다. 예를 들어, 104는 도 1의 엘리먼트 "04"를 참조할 수 있고, 유사한 엘리먼트는 도 2의 204로 참조될 수 있다. 그룹 또는 복수의 유사한 엘리먼트 또는 컴포넌트는 전체적으로 단일 엘리먼트 번호로 본 출원에서 참조될 수 있다. 예를 들어, 복수의 참조 엘리먼트(110-1, 110-2,…, 110-N)은 전체적으로 (110)으로 지칭될 수 있다. 이해될 바와 같이, 본 출원의 다양한 실시예에 도시된 엘리먼트는 본 개시의 다수의 추가적인 실시예를 제공하기 위해 추가, 교환 및/또는 제거될 수 있다. 또한, 도면에 제공된 엘리먼트의 비율 및/또는 상대적인 스케일은 본 개시의 특정 실시예를 예시하기 위한 것이며 제한적인 의미로 취해져서는 안 된다.
도 1은 본 개시의 다수의 실시예에 따른 저장 제어기(storage controller)(104) 및 다수의 메모리 디바이스들(116-1,…, 116-N)을 포함하는 장치를 포함하는 컴퓨팅 시스템(100) 형태의 기능 블록도이다. 본 출원에서 사용되는, "장치"는 다양한 구조 또는 구조의 조합 중 임의의 것 예컨대, 예를 들어, 회로 또는 회로부, 다이 또는 다이스(dice), 모듈 또는 모듈들, 디바이스 또는 디바이스들, 또는 시스템 또는 시스템들을 지칭하지만, 이에 한정되지 않는다. 도 1에 도시된 실시예에서, 메모리 디바이스(116-1,…, 116-N)는 하나 이상의 메모리 모듈(예를 들어, 단일 인라인(in-line) 메모리 모듈, 이중 인라인 메모리 모듈 등)을 포함할 수 있다. 메모리 디바이스(116-1,…, 116-N)은 휘발성 메모리 및/또는 비휘발성 메모리를 포함할 수 있다. 다수의 실시예들에서, 메모리 디바이스들(116-1,…, 116-N)은 멀티-칩 디바이스를 포함할 수 있다. 멀티-칩 디바이스는 다양한 메모리 유형 및/또는 메모리 모듈을 포함할 수 있다. 예를 들어, 메모리 시스템은 임의의 유형의 모듈에 비휘발성 또는 휘발성 메모리를 포함할 수 있다.
메모리 디바이스(116-1,…, 116-N)은 컴퓨팅 시스템(100)을 위한 메인 메모리를 제공할 수 있거나 컴퓨팅 시스템(100) 전체에 걸쳐 추가 메모리 또는 스토리지(storage)로서 사용될 수 있다. 각각의 메모리 디바이스(116-1,…, 116-N)은 메모리 셀, 예를 들어, 휘발성 및/또는 비휘발성 메모리 셀의 하나 이상의 어레이를 포함할 수 있다. 어레이는 예를 들어, NAND 아키텍처가 있는 플래시 어레이일 수 있다. 실시예는 특정 유형의 메모리 디바이스로 한정되지 않는다. 예를 들어, 메모리 디바이스는 특히 RAM, ROM, DRAM, SDRAM, PCRAM, RRAM 및 플래시 메모리를 포함할 수 있다.
메모리 디바이스(116-1,…, 116-N)가 비휘발성 메모리를 포함하는 실시예에서, 메모리 디바이스들(116-1,…, 116-N)은 NAND 또는 NOR 플래시 메모리 디바이스와 같은 플래시 메모리 디바이스일 수 있다. 그러나 실시예는 이에 제한되지 않으며 메모리 디바이스(116-1,…, 116-N)은 다른 비휘발성 메모리 디바이스 예컨대, 비휘발성 랜덤 액세스 메모리 디바이스(예를 들어, NVRAM, ReRAM, FeRAM, MRAM, PCM), “신생(emerging)”메모리 디바이스 예컨대, 3-D Crosspoint(3D XP) 메모리 디바이스 등, 또는 이들의 조합을 포함할 수 있다. 비휘발성 메모리의 3D XP 어레이는 스택 가능한 크로스 그리드 데이터 액세스 어레이와 함께 벌크 저항의 변화를 기반으로 비트 저장을 수행할 수 있다. 또한, 많은 플래시 기반 메모리와 달리 3D XP 비휘발성 메모리는 비휘발성 메모리 셀을 미리 소거하지 않고도 비휘발성 메모리 셀을 프로그래밍할 수 있는 제자리 기록 동작(write in-place operation)을 수행할 수 있다.
도 1에 도시된 바와 같이, 호스트(102)는 저장 제어기(104)에 결합될 수 있고, 이는 결국 메모리 디바이스(116-1,…, 116-N)에 결합될 수 있다. 다수의 실시예에서, 각각의 메모리 디바이스(116-1,…, 116-N)는 채널(예를 들어, 채널(107-1,… 107-N))을 통해 저장 제어기(104)에 결합될 수 있다. 도 1에서, 네트워크 온 칩(108)을 포함하는 저장 제어기(104)는 채널(103)을 통해 호스트(102)에 결합되고 오케스트레이션 제어기(106)는 채널(105)을 통해 호스트(102)에 결합된다. 호스트(102)는 호스트 시스템 예컨대, 다양한 다른 유형의 호스트 중에서 개인용 랩톱 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 스마트폰, 메모리 카드 판독기 및/또는 사물 인터넷 가능 디바이스일 수 있고, 메모리 액세스 디바이스 예를 들어, 프로세서(또는 처리 디바이스)를 포함할 수 있다. 당업자는 "프로세서"가 병렬 처리 시스템, 다수의 코프로세서 등과 같은 하나 이상의 프로세서를 의도할 수 있음을 이해할 것이다.
호스트(102)는 시스템 마더 보드 및/또는 백플레인을 포함할 수 있고, 다수의 처리 자원(예를 들어, 하나 이상의 프로세서, 마이크로프로세서, 또는 일부 다른 유형의 제어 회로부)를 포함할 수 있다. 시스템(100)은 별도의 집적 회로 또는 호스트(102), 저장 제어기(104), 오케스트레이션 제어기(106), 네트워크 온 칩(NoC)(108)를 포함할 수 있고 및/또는 메모리 디바이스(116-1,…, 116-N)는 동일한 집적 회로상에 있을 수 있다. 시스템(100)은 예를 들어, 서버 시스템 및/또는 고성능 컴퓨팅(HPC) 시스템 및/또는 그 일부일 수 있다. 도 1에 도시된 예가 폰 노이만 아키텍처를 갖는 시스템을 예시하지만, 본 개시의 실시예는 종종 폰 노이만 아키텍처로와 연관된 하나 이상의 컴포넌트(예를 들어, CPU, ALU 등)를 포함하지 않을 수 있는 비-폰 노이만 아키텍처에서 구현될 수 있다.
저장 제어기(104)는 오케스트레이션 제어기(106), NoC(네트워크 온 칩)(108), 본 출원의 도 5 및 6과 관련하여 보다 상세하게 설명되는 복수의 컴퓨팅 타일(110-1,…, 110-N), 미디어 제어기(112)를 포함할 수 있다. 컴퓨팅 타일(110)은 본 출원에서 대안으로 "컴퓨팅 디바이스"로 지칭될 수 있다. 오케스트레이션 제어기(106)는 본 출원에 설명된 동작을 수행하는 동안 컴퓨팅 타일(110-1,…, 110-N)에 자원을 할당 및 할당 해제(de-allocate)하도록 구성된 회로부 및/또는 로직을 포함한다. 일부 실시예에서, 오케스트레이션 제어기(106)는 컴퓨팅 타일(110-1,…, 110-N)에 의해 수행되는 동작을 오케스트레이션하도록 구성된 ASIC(application specific integrated circuit), FPGA(field programmable gate array), 또는 회로부 및/또는 로직의 다른 조합일 수 있다. 예를 들어, 오케스트레이션 제어기(106)는 데이터 블록에 포함된 데이터의 양을 줄이기 위해 수신된 데이터 블록에 대한 동작을 수행하는 컴퓨팅 타일(110-1,…, 110-N)을 제어하기 위한 회로부 및/또는 로직을 포함할 수 있다.
오케스트레이션 제어기(106)는 메모리 디바이스(116-1,…, 116-N) 중 하나 이상으로부터 데이터 블록을 요청하고 컴퓨팅 타일(110-1,…, 110-N)이 데이터 블록에 동작(예를 들어, 데이터의 적어도 일부가 정렬, 재정렬, 제거 또는 폐기되는 동작, 필터링 동작, 산술 연산, 로직 연산 등)을 수행하도록 구성될 수 있다. 동작은 데이터 블록과 연관된 데이터의 총량(예를 들어, 데이터의 비트 수)을 줄이기 위해 수행될 수 있다. 오케스트레이션 제어기(104)는 (예를 들어, 데이터의 필터링된 블록)에 대해 동작된 데이터 블록이 호스트(102) 및/또는 인터페이스(예를 들어, 통신 경로(103 및/또는 105))로 전송되도록 추가로 구성될 수 있다.
일부 실시예에서, 오케스트레이션 제어기(106)는 복수의 컴퓨팅 타일(110) 중 하나일 수 있다. 예를 들어, 오케스트레이션 제어기(106)는 도 4b와 관련하여 더 자세히 설명된 컴퓨팅 타일(110-1,…, 110-N)이 포함하는 동일하거나 유사한 회로부를 포함할 수 있다. 그러나, 일부 실시예에서, 오케스트레이션 제어기(106)는 컴퓨팅 타일(110-1,…, 110-N)과 별개의 또는 별도의 컴포넌트일 수 있고, 따라서, 도 1에 도시된 컴퓨팅 타일(110)과 다른 회로부를 포함할 수 있다.
NoC(108)는 오케스트레이션 제어기(106)와 컴퓨팅 타일(110-1,…, 110-N) 간의 통신을 허용하는 통신 서브시스템일 수 있다. NoC(108)는 오케스트레이션 제어기(106)와 컴퓨팅 타일(110-1,…, 110-N) 간의 통신을 가능하게 하는 회로부 및/또는 로직을 포함할 수 있다. 일부 실시예에서, 도 2와 관련하여 더 상세하게 설명된 바와 같이, 본 출원에서 NoC(108)는 컴퓨팅 타일(110-1,…, 110-N) 로부터 출력을 수신할 수 있고, 컴퓨팅 타일(110-1,…, 110-N)로부터의 출력을 오케스트레이션 제어기(106) 및/또는 호스트(102)로 전송할 수 있고, 그리고 그 반대로 전송할 수 있다. 예를 들어, NoC(108)는 컴퓨팅 타일(110-1,…, 110-N)에 의한 필터링 동작 (또는 산술 연산, 논리 연산 등과 같은 다른 연산)을 받은 데이터를 수신하고 필터링된 데이터를 오케스트레이션 제어기(106) 및/또는 호스트(102)로 전송하도록 구성된다. 일부 실시예에서, 도 4b와 관련하여 더 상세하게 설명된 바와 같이, 본 출원에서 NoC(108)는 오케스트레이션 제어기(106)의 적어도 일부를 포함할 수 있다. 예를 들어, NoC(108)는 오케스트레이션 제어기(106) 또는 그 일부를 포함하는 회로부를 포함할 수 있다.
NoC(108)가 도 1에 도시되어 있지만, 실시예는 오케스트레이션 제어기(106)와 컴퓨팅 타일(110-1,…, 110-N) 간의 통신 경로를 제공하기 위한 NoC(108)의 활용으로 제한되지 않는다. 예를 들어, 저장 제어기 크로스바(XBAR)와 같은 다른 통신 경로는 컴퓨팅 타일(110-1,…, 110-N) 및 오케스트레이션 제어기(106) 간의 통신을 가능하게 할 수 있다.
미디어 제어기(112)는 "표준" 또는 "덤(dumb)" 미디어 제어기일 수 있다. 예를 들어, 미디어 제어기(112)는 메모리 디바이스들(116-1,…, 116-N) 에 대한 복사, 기록, 판독, 에러 정정 등과 같은 간단한 동작을 수행하도록 구성될 수 있다. 그러나, 일부 실시예에서, 미디어 제어기(112)는 메모리 디바이스(116-1,…, 116-N)와 연관된 데이터에 대한 처리(예를 들어, 데이터를 조작하기 위한 동작)를 수행하지 않는다. 예를 들어, 미디어 제어기(112)는 통신 경로(107-1,…, 107-N)를 통해 메모리 디바이스들(116-1,…, 116-N)로부터 데이터를 판독하거나 또는 메모리 디바이스로 데이터를 기록하기 위해 판독 및/또는 기록 동작이 수행되게 할 수 있지만, 그러나 미디어 제어기(112)는 메모리 디바이스들(116-1,…, 116-N)로부터 판독되거나 또는 기록된 데이터에 처리를 수행하지 않을 수 있다. 일부 실시예에서, 미디어 제어기(112)는 비휘발성 미디어 제어기일 수 있지만, 실시예는 이에 한정되지 않는다.
도 1의 실시예는 본 개시의 실시예를 모호하게 하지 않도록 도시되지 않은 추가 회로부를 포함할 수 있다. 예를 들어, 저장 제어기(104)는 I/O 회로부를 통해 I/O 연결을 통해 제공된 어드레스 신호를 래치하기 위한 어드레스 회로부를 포함할 수 있다. 어드레스 신호는 메모리 디바이스(116-1,…, 116-N)에 액세스하기 위해 행 디코더 및 열 디코더에 의해 수신 및 디코딩될 수 있다. 어드레스 입력 접속의 수가 메모리 디바이스(116-1,…, 116-N)의 밀도 및 아키텍처에 의존할 수 있다는 것이 당업자에 의해 이해될 것이다.
도 2는 본 개시의 다수의 실시예에 따른 저장 제어기(204)를 포함하는 장치 형태의 기능 블록도이다. 저장 제어기(204)는 도 1에 도시된 저장 제어기(104)와 유사할 수 있다. 도 2에 도시된 바와 같이, 저장 제어기(204)는 미디어 제어기(212), 복수의 컴퓨팅 타일(210-1,…, 210-N), 네트워크 온 칩(NoC)(208) 및 오케스트레이션 제어기(206)를 포함할 수 있다.
미디어 제어기(212)는 오케스트레이션 제어기(206)로부터의 요청에 응답하여 저장 제어기(204)에 결합된 메모리 디바이스(예를 들어, 도 1에 예시된 메모리 디바이스(들)(116-1,…, 116-N))로부터 데이터 블록(211A-1,…, 211A-N, 211B-1,…,211B-N, 211C-1,…,211C-N, 211D-1,…,211D-N, 211E-1,…,211E-N)을 검색하도록 구성될 수 있다. 미디어 제어기는 후속하여 데이터 블록(211A-1,…, 211A-N, 211B-1,…,211B-N, 211C-1,…,211C-N, 211D-1,…,211D-N, 211E-1,…,211E-N)이 컴퓨팅 타일(210-1,…, 210-N) 및/또는 오케스트레이션 제어기(206)로 전송되게 할 수 있다.
유사하게, 미디어 제어기(212)는 컴퓨팅 타일(210) 및/또는 오케스트레이션 제어기(206)로부터 데이터 블록(211A-1,…, 211A-N, 211B-1,…,211B-N, 211C-1,…,211C-N, 211D-1,…,211D-N, 211E-1,…,211E-N)을 수신하도록 구성될 수 있다. 미디어 제어기는 후속하여 데이터 블록(211A-1,…, 211A-N, 211B-1,…,211B-N, 211C-1,…,211C-N, 211D-1,…,211D-N, 211E-1,…,211E-N)은 저장 제어기(204)에 결합된 메모리 디바이스로 전송되게 할 수 있다.
데이터 블록(211)은 크기가 대략 4 킬로바이트일 수 있고(실시예는 이 특정 크기로 제한되지 않음) 오케스트레이션 제어기(206)에 의해 생성된 하나 이상의 명령에 응답하여 컴퓨팅 타일(210-1,…, 210-N)에 의해 스트리밍 방식으로 처리될 수 있다. 예를 들어, 도 5 및 도 6과 관련하여 더 자세히 설명된 바와 같이, 컴퓨팅 타일(210)은 데이터의 선행 블록(211)에 대한 처리의 완료에 응답하여 데이터의 제 2 블록(211)을 처리할 수 있기 때문에, 데이터 블록(211)은 컴퓨팅 타일(210)을 통해 연속적으로 스트리밍될 수 있고 동시에 데이터 블록(211)은 컴퓨팅 타일(210)에 의해 처리된다. 일부 실시예에서, 데이터 블록(211)은 오케스트레이션 제어기(206)로부터의 개입 명령이 없을 때 컴퓨팅 타일(210)을 통해 스트리밍 방식으로 처리될 수 있다. 즉, 일부 실시예에서, 오케스트레이션 제어기(206)는 컴퓨팅 타일(210)이 거기에 수신된 데이터 블록(211)을 처리하게 하는 명령을 발행할 수 있고 컴퓨팅 타일(210)에 의해 후속하여 수신된 데이터 블록(211)은 오케스트레이션 제어기 (206)으로부터의 추가 명령 없이 처리될 수 있다.
일부 실시예에서, 데이터 블록(211)을 처리하는 것은 데이터 블록(211)과 연관된 데이터의 크기 및/또는 양을 감소시키는 것을 포함할 수 있다. 예를 들어, 컴퓨팅 타일(210-1,…, 211-N)은 오케스트레이션 제어기(206)로부터의 명령에 응답하여, 데이터 블록(211)에 대한 동작을 수행할 수 있으며, 여기서 데이터의 적어도 일부는 정렬, 재정렬, 제거 또는 폐기되어 원치 않는 데이터를 제거하고 관련 데이터를 추출할 수 있거나 또는 다른 식으로 이와 관련된 데이터의 크기 또는 양을 줄이기 위해 데이터 블록(211)을 파싱할 수 있다.
비제한적인 예에서, 데이터 블록(211)은 하나 이상의 CSV(comma-separated value) 파일을 포함할 수 있다. 특정 스트링 또는 특정 데이터가 CSV 파일(들)로부터 요구되는 경우, 오케스트레이션 제어기(206)는 컴퓨팅 타일(210)로 명령을 발송하여 컴퓨팅 타일(210)이 예를 들어, 저장 제어기(204)에 결합된 메모리 디바이스로부터 CSV 파일을 포함하는 데이터 블록(211)을 수신하게 할 수 있다. 컴퓨팅 타일(210)은 본 출원에서 도 5와 관련하여 더 상세히 설명된 바와 같이 CSV 파일(들)에 동작을 수행하여 관련 데이터를 추출할 수 있고 후속하여 관련 데이터를 컴퓨팅 타일(210)로부터 컴퓨팅 타일(210) 외부의 회로부 (예를 들어, 오케스트레이션 제어기(204), NoC(208), 및/또는 도 1에 예시된 호스트(102)와 같은 호스트)로 전송할 수 있다.
데이터 A 및 B의 2개의 열이 데이터 A, B 및 C의 3개 열을 포함하는 데이터 블록(예를 들어, 데이터 블록 (211A-1))으로부터 요청되는 다른 비제한적인 예에서, 3개의 열 모두를 포함하는 데이터 블록은 오케스트레이션 제어기(206)로부터의 명령에 응답하여 컴퓨팅 타일(210)로 전송될 수 있다. 컴퓨팅 타일(210)은 데이터 블록을 선택적으로 처리하여 데이터 블록으로부터 관련 열(예를 들어, 열 A 및 열 B)을 추출할 수 있고, 후속하여 필터링된 데이터를 컴퓨팅 타일(210)로부터 컴퓨팅 타일(210) 외부의 회로(예를 들어, 오케스트레이션 제어기(206), NoC(208), 및/또는 본 출원의 도 1에 예시된 호스트(102)와 같은 호스트)로 전송할 수 있다.
오케스트레이션 제어기(206)는 데이터 블록(211)을 처리하는 데 사용하기 위해 컴퓨팅 타일(210-1,…, 210-N)에 이용 가능한 자원을 할당 및/또는 할당 해제하기 위해 컴퓨팅 타일(210-1,…, 210-N)에 명령을 발송하도록 추가로 구성될 수 있다. 일부 실시예에서, 컴퓨팅 타일(210-1,…, 210-N)에 이용 가능한 리소스를 할당 및/또는 할당 해제하는 것은 컴퓨팅 타일(210)의 일부를 선택적으로 활성화하면서 반면에 컴퓨팅 타일(210) 중 일부를 선택적으로 비활성화하는 것을 포함할 수 있다. 예를 들어, 데이터 블록(211)을 처리하는 데 필요한 컴퓨팅 타일(210)의 총 수 미만인 경우, 오케스트레이션 제어기(206)는 원하는 컴퓨팅 타일(210)만이 데이터 블록(211)을 처리할 수 있도록 하기 위해 데이터 블록(211)을 처리하는 데 사용되는 컴퓨팅 타일(210)에 명령을 발송할 수 있다.
오케스트레이션 제어기(206)는 일부 실시예에서, 컴퓨팅 타일(210)에 의해 수행된 동작의 수행을 동기화하기 위한 명령을 발송하도록 추가로 구성될 수 있다. 예를 들어, 오케스트레이션은 제 1 컴퓨팅 타일이 제 1 동작을 수행하게 하기 위해 명령을 제 1 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(210-1))로 명령을 발송할 수 있고, 오케스트레이션 제어기(206)는 제 2 컴퓨팅 타일을 사용하여 제 2 동작을 수행하게 하기 위해 제 2 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(210-2))에 명령을 발송할 수 있다. 오케스트레이션 제어기(206)에 의한 컴퓨팅 타일(210)에 의해 수행되는 동작의 수행의 동기화는 컴퓨팅 타일(210)이 특정 시간에 또는 특정 순서로 특정 동작을 수행하게 하는 것을 더 포함할 수 있다.
일부 실시예에서, 처리된 (예를 들어, 동작된 데이터 블록) 데이터 블록은 컴퓨팅 타일(210)에 의한 데이터 블록(211)의 처리에 후속하여 로직 레코드(logic record) (213-1,…, 213-N)로 변환될 수 있다. 로직 레코드(213)는 물리적 위치와 무관한 데이터 레코드를 포함할 수 있다. 예를 들어, 로직 레코드(213)는 처리된 데이터 블록(예를 들어, 데이터의 적어도 일부가 정렬, 재정렬, 제거 또는 폐기된 데이터 블록)에 대응하는 물리적 데이터가 저장되는 컴퓨팅 타일(210) 중 적어도 하나의 위치를 가리키는 데이터 레코드(data record)일 수 있다.
도 5 및 도 6과 관련하여 더 상세하게 설명된 바와 같이, 본 출원에서 처리되거나 필터링된 데이터 블록(211)은 관련 데이터를 추출하거나 그렇지 않으면 데이터 블록과 관련된 비트의 크기 또는 양을 줄이기 위해 데이터 블록을 처리 또는 필터링하는 동작의 일부로 처리하기 전에 데이터 블록이 저장되는 파티션과 상이한 컴퓨팅 타일 메모리 (예를 들어, 도 5에 예시된 컴퓨팅 타일 메모리(538) 또는 도 6에 예시된 컴퓨팅 타일 메모리(638))의 파티션에 저장될 수 있다. 일부 실시예에서, 로직 레코드(213)는 처리되거나 필터링된 데이터가 컴퓨팅 타일(210)로부터 액세스될 수 있고 컴퓨팅 타일(210) 외부의 회로부로 전송될 수 있도록 해당 위치를 가리킬 수 있다.
일부 실시예에서, 오케스트레이션 제어기(2026)는 데이터 블록(211E-1,…, 211E-N)을 미디어 제어기(212)로부터 직접 수신하고 및/또는 미디어 제어기로 직접 발송할 수 있다. 이것은 오케스트레이션 제어기(206)가 미디어 제어기(212)로 및 미디어 제어기로부터 컴퓨팅 타일(210)에 의해 처리되지 않은 데이터 블록(211E-1,…, 211E-N)을 전송하는 것을 허용할 수 있다.
예를 들어, 오케스트레이션 제어기(206)가 저장 제어기(204)에 결합된 메모리 디바이스(들)(예를 들어, 도 1에 도시된 메모리 디바이스(116))에 의해 저장될 저장 제어기(204)에 결합된 호스트(예를 들어, 도 1에 도시된 호스트(102))로부터 처리되지 않은 데이터 블록(211E-1,…,211E-N)을 수신하면, 오케스트레이션 제어기(206)는 처리되지 않은 데이터 블록(211E-1,…, 211E-N)가 미디어 제어기(212)로 전송되게 하고, 이는 결국 데이터(211E-1,…, 211E-N)의 처리되지 않은 블록이 저장 제어기(204)에 결합된 메모리 디바이스(들)로 전송되게 한다.
유사하게, 호스트가 처리되지 않은(예를 들어, 전체) 데이터 블록(예를 들어, 컴퓨팅 타일(210)에 의해 처리되지 않은 데이터 블록)을 요청하는 경우, 미디어 제어기(212)는 처리되지 않은 데이터 블록(211E- 1,…,211E-N)을 오케스트레이션 제어기(206)로 전송되게 하고, 이는 후속하여 데이터(211E-1,…, 211E-N)의 처리되지 않은 블록을 호스트로 전송할 수 있다.
도 3은 본 개시의 다수의 실시예에 따른 저장 제어기(304)를 포함하는 장치 형태의 다른 기능 블록도이다. 저장 제어기(304)는 본 출원에 도 1에 예시된 저장 제어기(104) 또는 도 2에 예시된 저장 제어기(204)와 유사할 수 있다. 도 3에 도시된, 저장 제어기(304)는 미디어 제어기(312), 복수의 컴퓨팅 타일(310-1,…, 310-N), 네트워크 온 칩(NoC)(308) 및 오케스트레이션 제어기(306)를 포함할 수 있다.
미디어 제어기(312)는 오케스트레이션 제어기(306)로부터의 요청에 응답하여 저장 제어기(304)에 결합된 메모리 디바이스(예를 들어, 도 1에 예시된 메모리 디바이스(들)(116-1,…, 116-N))로부터 데이터 블록(311A-1,…, 311A-N, 311B-1,…,311B-N, 311C-1,…,311C-N, 311D-1,…,311D-N, 311E-1,…,311E-N) 및/또는 로직 레코드 (313A-1,…,313A-N, 313B-1,…,313B-N, 313C-1,…,313C-N, 313D-1,…,313D-N, 313E-1,…,313E-N)을 검색하도록 구성될 수 있다. 미디어 제어기는 후속하여 데이터 블록(311A-1,…, 311A-N, 311B-1,…,311B-N, 311C-1,…,311C-N, 311D-1,…,311D-N, 311E-1,…,311E-N) 및/또는 로직 레코드(313A-1,…,313A-N, 313B-1,…,313B-N, 313C-1,…,313C-N, 313D-1,…,313D-N, 313E-1,…,313E-N)을 컴퓨팅 타일(310-1,…, 310-N) 및/또는 오케스트레이션 제어기(306)로 전송되게 할 수 있다.
유사하게, 미디어 제어기(312)는 컴퓨팅 타일(310) 및/또는 오케스트레이션 제어기(306)로부터 데이터 블록(311A-1,…, 311A-N, 311B-1,…,311B-N, 311C-1,…,311C-N, 311D-1,…,311D-N, 311E-1,…,311E-N) 및/또는 로직 레코드 (313A-1,…,313A-N, 313B-1,…,313B-N, 313C-1,…,313C-N, 313D-1,…,313D-N, 313E-1,…,313E-N)을 수신하도록 구성될 수 있다. 미디어 제어기는 후속하여 데이터 블록(311A-1,…, 311A-N, 311B-1,…,311B-N, 311C-1,…,311C-N, 311D-1,…,311D-N, 311E-1,…,311E-N) 및/또는 로직 레코드 (313A-1,…,313A-N, 313B-1,…,313B-N, 313C-1,…,313C-N, 313D-1,…,313D-N, 313E-1,…,313E-N)을 저장 제어기(304)에 결합된 메모리 디바이스로 전송되게 할 수 있다.
데이터 블록(311)은 크기가 대략 4킬로바이트일 수 있고 오케스트레이션 제어기(306)에 의해 생성된 하나 이상의 명령에 응답하여 컴퓨팅 타일(310-1,…, 310-N)에 의해 스트리밍 방식으로 처리될 수 있다. 일부 실시예에서, 데이터 블록(311)을 처리하는 것은 데이터 블록(311)과 연관된 데이터의 크기 및/또는 양을 줄이는 것을 포함할 수 있다. 예를 들어, 컴퓨팅 타일(310-1,…,310-N)은 오케스트레이션 제어기(306)로부터의 명령에 응답하여, 데이터 블록(311)에 대한 동작을 수행하여 원하지 않는 데이터를 제거하거나 관련 데이터를 추출하거나 그렇지 않으면 그와 관련된 데이터의 크기 또는 양을 줄이기 위해 데이터 블록(311)을 파싱할 수 있다. 그러나 실시예는 이에 제한되지 않으며, 일부 실시예에서는 컴퓨팅 타일(310-1,…, 310-N)은 오케스트레이션 제어기(306)로부터의 명령에 응답하여, 데이터 블록(311)에 산술, 로직, 또는 다른 동작을 수행할 수 있다. 예를 들어, 컴퓨팅 타일(310-1,…, 310-N)은 오케스트레이션 제어기(306)로부터의 명령에 응답하여, 데이터 블록(311)을 처리하고, 로직 레코드(313)를 생성하고, 및/또는 로직 레코드를 컴퓨팅 타일(310) 외부의 위치로 전송할 수 있다.
도 4a 내지 도 4c는 본 개시의 다수의 실시예에 따른 저장 제어기(404)를 포함하는 장치 형태의 기능 블록도의 다양한 예를 도시한다. 도 4a 내지 도 4c에서, 미디어 제어기(412)는 복수의 컴퓨팅 타일(410), NoC(408), 및 입력/출력(I/O) 버퍼(422)와 통신하는 오케스트레이션 제어기(406)와 통신한다. 비록 8(8) 개별 컴퓨팅 타일(410)이 도 4a 내지 도 4c에 도시되어 있지만, 실시예는 8개의 개별 컴퓨팅 타일(410)을 포함하는 저장 제어기(404)로 한정되지 않는다는 것을 이해할 것이다. 예를 들어, 저장 제어기(404)는 저장 제어기(404) 및/또는 저장 제어기(404)가 배치되는 전체 시스템의 특성에 따라 하나 이상의 컴퓨팅 타일(410)을 포함할 수 있다.
도 4a 내지 도 4c에 도시된 바와 같이, 미디어 제어기(412)는 직접 메모리 액세스(DMA) 컴포넌트(418) 및 DMA 통신 서브시스템(419)을 포함할 수 있다. DMA(418)는 미디어 제어기(418)와 도 1에 도시된 호스트(102)와 같은 호스트의 중앙 처리 유닛과 무관하게 저장 제어기(404)에 결합된 메모리 디바이스(들) 예를 들어, 도 1에 도시된 메모리 디바이스(116-1,…, 116-N) 사이의 통신을 가능하게 할 수 있다. DMA 통신 서브시스템(419)은 크로스바(crossbar) ("XBAR"), 네트워크 온 칩, 또는 미디어 제어기(412), 저장 제어기(404)에 결합된 저장 디바이스(들), 및/또는 컴퓨팅 타일(410) 사이의 상호 연결 및 상호 운용성을 허용하는 다른 통신 서브시스템와 같은 통신 서브시스템일 수 있다.
일부 실시예에서, NoC(408)는 컴퓨팅 타일(410)의 개별 어드레스 공간 사이의 가시성을 가능하게 할 수 있다. 예를 들어, 각각의 컴퓨팅 타일(410-1,…, 410-8)은 데이터(예를 들어, 파일)의 수신에 응답하여 데이터를 컴퓨팅 타일(410)의 메모리 자원(예를 들어, 본 출원에서 도 5 및 6에 예시된 컴퓨팅 타일 메모리(548) 또는 컴퓨팅 타일 메모리(638))에 저장할 수 있다. 컴퓨팅 타일(410)은 데이터가 저장된 컴퓨팅 타일(410) 메모리 자원의 위치에 대응하는 어드레스(예를 들어, 물리적 어드레스)를 연관시킬 수 있다. 추가하여, 컴퓨팅 타일(410)은 데이터와 연관된 어드레스를 로직 블록으로 파싱(예를 들어, 분열(break))할 수 있다.
일부 실시예에서, 데이터와 연관된 0번째 로직 블록은 처리 디바이스 또는 "처리 유닛"(예를 들어, 본 출원에서 도 5 및 도 6에 예시된 RISC(Reduced Instruction Set Computing) 디바이스(536) 또는 RISC 디바이스(636))로 전송될 수 있다. 특정 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-2))은 로직 어드레스의 특정 세트가 해당 컴퓨팅 타일(410-2)에 액세스 가능하다는 것을 인식하도록 구성될 수 있는 반면, 다른 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-3, 410-4),등)은 로직 어드레스의 상이한 세트가 해당 컴퓨팅 타일(410)에 액세스 가능하다는 것을 인식하도록 구성될 수 있다. 대안적으로 말하면, 제 1 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-2))은 컴퓨팅 타일(410-2)과 연관된 로직 어드레스의 제 1 세트를 액세스할 수 있고, 및 제 2 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-3))은 이와 연관된 로직 어드레스의 제 2 세트에 액세스할 수 있다.
로직 어드레스의 제 2 세트(예를 들어, 제 2 컴퓨팅 타일(410-3)에 의해 액세스 가능한 로직 어드레스)에 대응하는 데이터가 제 1 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-2))에서 요청되면, NoC(408)는 제 1 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-2))과 제 2 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-3)) 사이의 통신을 가능하게 하여 제 1 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-2))이 제 2 로직 어드레스 세트(예를 들어, 제 2 컴퓨팅 타일(410-3)에 의해 액세스 가능한 로직 어드레스 세트)에 대응하는 데이터에 액세스하는 것을 허용한다. 즉, NoC(408)는 컴퓨팅 타일(410)의 어드레스 공간이 서로에게 가시적이도록 하기 위해 컴퓨팅 타일(410) 사이의 통신을 가능하게 할 수 있다.
일부 실시예에서, 어드레스 가시성을 가능하게 하기 위한 컴퓨팅 타일(410) 간의 통신은 제 2 로직 어드레스 세트에 대응하는 데이터에 대한 액세스를 요청하는 메시지를 제 1 컴퓨팅 타일의 이벤트 큐(예를 들어, 도 5 및 도 6에 예시된 이벤트 큐(532 및 632))에 의해 수신하는 단계, 요청된 데이터를 제 1 컴퓨팅 타일의 메모리 자원(예를 들어, 본 출원의 도 5 및 6에 예시된 컴퓨팅 타일 메모리(538 및 638))에 로딩하는 단계, 요청된 데이터를 전송 데이터를 메시지 버퍼(예를 들어, 본 출원에서 도 5 및 도 6에 예시된 메시지 버퍼(534 및 634))로 전송하는 단계를 포함할 수 있다. 데이터가 메시지 버퍼에 의해 버퍼링되면 데이터는 NoC(408)를 통해 제 2 컴퓨팅 타일로 전송될 수 있다.
다른 실시예에서, 컴퓨팅 타일(410)에 저장된 데이터를 요청하는 애플리케이션은 어떤 컴퓨팅 타일(410)이 요청된 데이터를 포함하는지 알 수 있다. 이 예에서, 애플리케이션은 관련 컴퓨팅 타일(410)로부터 데이터를 요청할 수 있고/있거나 어드레스는 다수의 컴퓨팅 타일(410)에 로드될 수 있고 NoC(408)를 통해 데이터를 요청하는 애플리케이션에 의해 액세스될 수 있다.
도 4a에 도시된 바와 같이, 오케스트레이션 제어기(406)는 NoC(408)와 물리적으로 분리된 개별 회로부를 포함한다. NoC(408)는 컴퓨팅 타일(410), 미디어 제어기(412), 및/또는 오케스트레이션 제어기(406) 간의 통신을 허용하는 하나 이상의 집적 회로로서 제공되는 통신 서브시스템일 수 있다. NoC(408)의 비제한적인 예는 오케스트레이션 제어기(406), 컴퓨팅 타일(410) 및/또는 미디어 제어기(412)의 상호 연결 및/또는 상호 운용성을 허용하는 XBAR 또는 다른 통신 서브시스템을 포함할 수 있다.
전술한 바와 같이, 오케스트레이션 제어기(406) 및/또는 NoC(408)에 의해 생성된 명령의 수신에 응답하여, 컴퓨팅 타일(410)을 통해 스트리밍되는 데이터 블록으로부터 관련 데이터를 추출하는 동작의 수행이 실현될 수 있다.
도 4b에 도시된 바와 같이, 오케스트레이션 제어기(406)는 복수의 컴퓨팅 타일(410-1,…, 410-8) 중 하나의 컴퓨팅 타일(410-1)에 상주한다. 본 출원에 사용된 용어 "에 상주(resident on)"는 특정 컴포넌트에 물리적으로 위치한 것을 말한다. 예를 들어, 오케스트레이션 제어기(406)가 컴퓨팅 타일(410) 중 하나에 "상주"한다는 것은 오케스트레이션 제어기(406)가 특정 컴퓨팅 타일에 물리적으로 결합되는 조건을 지칭한다. "상주"라는 용어는 본 출원에서 "배치된" 또는 "위치한"과 같은 다른 용어와 상호 교환적으로 사용될 수 있다.
전술한 바와 같이, 컴퓨팅 타일(410-1)/오케스트레이션 제어기(406) 및/또는 NoC(408)에 의해 생성된 명령의 수신에 응답하여, 컴퓨팅 타일(410)을 통해 스트리밍되는 데이터 블록으로부터 관련 데이터를 추출하기 위한 동작의 수행은 실현된다.
도 4c에 도시된 바와 같이, 오케스트레이션 제어기(406)는 NoC(408)에 상주한다. 일부 실시예에서, 오케스트레이션 제어기(406)를 NoC(408)의 일부로서 제공하는 것은 오케스트레이션 제어기(406)와 NoC(408)의 긴밀한 결합을 초래하고, 이는 오케스트레이션 제어기(406)를 사용하여 동작을 수행하는데 소요되는 시간을 줄일 수 있다.
전술한 바와 같이, 오케스트레이션 제어기(406) 및/또는 NoC(408)에 의해 생성된 명령의 수신에 응답하여, 컴퓨팅 타일(410)을 통해 스트리밍되는 데이터 블록으로부터 관련 데이터를 추출하는 동작의 수행이 실현될 수 있다.
도 5는 본 개시의 다수의 실시예에 따른 컴퓨팅 타일(510) 형태의 블록도이다. 도 5에 도시된 바와 같이, 컴퓨팅 타일(510)은 시스템 이벤트 큐(530), 이벤트 큐(532), 및 메시지 버퍼(534)를 포함할 수 있다. 컴퓨팅 타일(510)은 RISC(Reduced Instruction Set Computing) 디바이스(536), 컴퓨팅 타일 메모리(538) 부분, 및 직접 메모리 액세스 버퍼(539)와 같은 처리 디바이스를 더 포함할 수 있다. RISC 디바이스(536)는 RISC-V ISA와 같은 축소된 명령 세트 아키텍처(ISA)를 사용할 수 있는 처리 자원일 수 있지만, 실시예는 RISC-V ISA에 한정되지 않고, 다른 처리 디바이스 및/또는 ISA가 사용될 수 있다.
시스템 이벤트 큐(530), 이벤트 큐(532), 및 메시지 버퍼(534)는 각각 도 1-4에 예시된 오케스트레이션 제어기(106, 206, 306, 406)와 같은 오케스트레이션 제어기와 통신할 수 있다. 일부 실시예에서, 시스템 이벤트 큐(530), 이벤트 큐(532), 및 메시지 버퍼(534)는 오케스트레이션 제어기와 직접 통신할 수 있거나, 시스템 이벤트 큐(530), 이벤트 큐(532), 및 메시지 버퍼(534)는 오케스트레이션 제어기와 추가로 통신할 수 있는 도 1-3에 각각 도시된 NoC(108, 208, 308)와 같은 네트워크 온 칩과 통신할 수 있다.
시스템 이벤트 큐(530), 이벤트 큐(532), 및 메시지 버퍼(534)는 컴퓨팅 타일(510)의 동작을 제어하여 컴퓨팅 타일(510)에 의해 처리되는 데이터 블록(예를 들어, 본 출원의 도 2 및 3에 예시된 데이터 블록(211 및 311))에 대한 동작을 수행하기 위해 오케스트레이션 제어기로부터 메시지 및/또는 명령을 수신할 수 있고 및/또는 오케스트레이션 제어기에 메시지 및/또는 명령을 발송할 수 있다. 일부 실시예에서, 명령 및/또는 메시지는 동작의 수행 동안 컴퓨팅 타일(510)에 이용가능한 자원을 할당 또는 할당 해제하기 위한 메시지 및/또는 명령을 포함할 수 있다. 또한, 명령 및/또는 메시지는 컴퓨팅 타일(510)의 동작을 저장 제어기(예를 들어, 개별적으로 도 1-4에 예시된 저장 제어기(104, 204, 304, 404))에 배치된 다른 컴퓨팅 타일과 동기화하기 위한 명령 및/또는 메시지를 포함할 수 있다.
예를 들어, 시스템 이벤트 큐(530), 이벤트 큐(532), 및 메시지 버퍼(534)는 컴퓨팅 타일(510)이 데이터 블록을 처리하여 데이터 블록과 관련된 데이터의 크기 및 /또는 양을 줄이도록 하기 위해 컴퓨팅 타일(510)과 오케스트레이션 제어기 사이의 통신을 가능하게 할 수 있다. 비제한적인 예에서, 시스템 이벤트 큐(530), 이벤트 큐(532), 및 메시지 버퍼(534)는 오케스트레이션 제어기로부터 수신된 명령 및/또는 메시지를 처리하여 컴퓨팅 타일(510) 밖으로 축소된 데이터 객체를 전송하기 전에 데이터의 적어도 일부가 데이터의 일부를 선택적으로 제거하거나 변경하기 위해 정렬, 재정렬, 제거 또는 폐기된 데이터 블록에 대한 동작을 컴퓨팅 타일(510)이 수행하게 할 수 있다. 이는 오케스트레이션 제어기, NoC, 또는 호스트(예를 들어, 본 출원에서 도 1에 예시된 호스트(102))와 같은 컴퓨팅 타일(510) 외부의 회로부로 데이터가 전송되기 전에 데이터 블록으로부터 관련 데이터가 추출되는 것을 허용할 수 있다.
시스템 이벤트 큐(530)는 오케스트레이션 제어기 또는 NoC로부터 인터럽트 메시지(interrupt message)를 수신할 수 있다. 인터럽트 메시지는 시스템 이벤트 큐(532)에 의해 처리되어 오케스트레이션 제어기 또는 NoC로부터 발송된 명령 또는 메시지가 즉시 실행되도록 할 수 있다. 예를 들어, 인터럽트 메시지(들)는 시스템 이벤트 큐(532)에 명령하여 컴퓨팅 타일(510)이 계류 중인 명령 또는 메시지의 동작을 중단하고 대신 오케스트레이션 제어기 또는 NoC로부터 수신된 새로운 명령 또는 메시지를 실행하게 할 수 있다. 일부 실시예에서, 새로운 명령 또는 메시지는 컴퓨팅 타일(510)을 사용하여 하나 이상의 데이터 블록을 처리하여 그로부터 관련 정보를 추출하거나 그렇지 않으면 데이터 블록과 관련된 데이터의 크기 또는 양을 감소시키는 동작을 개시하기 위한 명령 또는 메시지를 포함할 수 있다.
이벤트 큐(532)는 직렬로(serially) 처리될 수 있는 메시지를 수신할 수 있다. 예를 들어, 이벤트 큐(532)는 오케스트레이션 제어기 또는 NoC로부터 메시지 및/또는 명령을 수신할 수 있고, 수신된 메시지가 수신된 순서대로 처리되도록 직렬 방식으로 수신된 메시지를 처리할 수 있다. 이벤트 큐에 의해 수신 및 처리될 수 있는 메시지의 비제한적인 예는 데이터 블록의 처리를 시작하기 위한 오케스트레이션 제어기 및/또는 NoC로부터의 요청 메시지(예를 들어, 컴퓨팅 타일(510)에 대한 원격 절차 호출(remote procedure call)), 메시지 요청을 수신하는 컴퓨팅 타일의 컴퓨팅 타일 메모리(538) 내의 특정 메모리 위치의 콘텐츠를 제공하거나 변경하기 위해 다른 컴퓨팅 타일로부터 요청 메시지(예를 들어, 컴퓨팅 타일 사이에서 원격 판독 또는 기록 동작을 개시하기 위한 메시지), 컴퓨팅 타일 간의 데이터 블록 처리를 동기화하기 위한 다른 컴퓨팅 타일로부터의 동기화 메시지 요청 등을 포함할 수 있다.
메시지 버퍼(534)는 컴퓨팅 타일(510) 밖으로 오케스트레이션 제어기, NoC, 및/또는 호스트와 같은 컴퓨팅 타일(510) 외부의 회로부로 전송될 데이터를 버퍼링하기 위한 버퍼 영역을 포함할 수 있다. 일부 실시예에서, 메시지 버퍼(534)는 데이터가 메시지 버퍼(534)에 의해 수신된 순서대로 버퍼로부터 컴퓨팅 타일(510) 밖으로 전송되도록 직렬 방식으로 동작할 수 있다. 메시지 버퍼(534)는 데이터가 메시지 버퍼(534) 밖으로 전송되는 레이트(rate)를 제어함으로써 라우팅 제어 및/또는 병목 제어를 추가로 제공할 수 있다. 예를 들어, 메시지 버퍼(534)는 오케스트레이션 제어기, NoC 및/또는 호스트에 대한 데이터 병목 현상 또는 라우팅 문제를 생성하지 않고 데이터가 컴퓨팅 타일(510) 외부로 전송되는 것을 허용하는 레이트로 컴퓨팅 타일(510) 외부로 데이터를 전송하도록 구성될 수 있다.
RISC 디바이스(536)는 시스템 이벤트 큐(530), 이벤트 큐(532), 및 메시지 버퍼(534)와 통신할 수 있고, 시스템 이벤트 큐(530), 이벤트 큐(532), 및 메시지 버퍼(534)에 의해 수신된 명령 및/또는 메시지를 처리하여 컴퓨팅 타일(510)에 의해 수신된 데이터 블록에 대한 동작의 수행을 가능하게 한다. 예를 들어, RISC 디바이스(536)는 컴퓨팅 타일(510)에 의해 수신된 데이터 블록과 연관된 데이터의 크기 또는 양이 감소되도록 하기 위해 명령 및/또는 메시지를 처리하도록 구성된 회로부를 포함할 수 있다. RISC 디바이스(536)는 단일 코어를 포함할 수 있거나 멀티 코어 프로세서일 수 있다.
컴퓨팅 타일 메모리(538)는 일부 실시예에서 랜덤 액세스 메모리(예를 들어, RAM, SRAM 등)와 같은 메모리 자원일 수 있다. 그러나, 실시예는 이에 한정되지 않으며, 컴퓨팅 타일 메모리(538)는 다양한 레지스터, 캐시, 버퍼, 및/또는 메모리 어레이(예를 들어, 1T1C, 2T2C, 3T 등의 DRAM 어레이)를 포함할 수 있다. 컴퓨팅 타일 메모리(538)는 예를 들어, 본 출원에서 도 1에 도시된 메모리 디바이스(116-1, …, 116-N)와 같은 메모리 디바이스로부터 데이터 블록을 수신하도록 구성될 수 있다. 일부 실시예에서, 컴퓨팅 타일 메모리(538)는 대략 256킬로바이트(KB)의 크기를 가질 수 있지만, 그러나 실시예는 이 특정 크기로 한정되지 않고 컴퓨팅 타일 메모리(538)는 256KB보다 크거나 작은 크기를 가질 수 있다.
컴퓨팅 타일 메모리(538)는 하나 이상의 어드레스 지정 가능한 메모리 영역으로 파티션될 수 있다. 도 5에 도시된 바와 같이, 컴퓨팅 타일 메모리(538)는 다양한 유형의 데이터가 그 안에 저장될 수 있도록 어드레스 지정 가능한 메모리 영역으로 파티션될 수 있다. 예를 들어, 하나 이상의 메모리 영역은 컴퓨팅 타일 메모리(538)에 의해 사용되는 명령("INSTR")(541)를 저장할 수 있고, 하나 이상의 메모리 영역은 데이터 블록(543-1,…, 543-N)(예를 들어, 메모리 디바이스(들)로부터 검색된 데이터 블록)을 저장할 수 있고, 및/또는 하나 이상의 메모리 영역은 컴퓨팅 타일 메모리(538)의 로컬 메모리("LOCAL MEM")(545) 부분의 역할을 할 수 있다. 스물 (20)개의 별개의 메모리 영역이 도 5에 도시되어 있지만, 컴퓨팅 타일 메모리(538)는 임의의 수의 별개의 메모리 영역으로 파티션될 수 있다는 것이 이해될 것이다.
위에서 논의된 바와 같이, 데이터 블록은 오케스트레이션 제어기(예를 들어, 본 출원에서 도 1 내지 도 4에 예시된 오케스트레이션 제어기(106, 206, 306, 406))에 의해 생성된 메시지 및/또는 명령에 응답하여 메모리 디바이스(들)로부터 검색될 수 있다. 일부 실시예에서, 명령 및/또는 메시지는 개별적으로 도 1-4에 도시된 미디어 제어기(112, 212, 312, 412)와 같은 미디어 제어기에 의해 처리될 수 있다. 데이터 블록이 컴퓨팅 타일(510)에 의해 수신되면, 이들은 DMA 버퍼(539)에 의해 버퍼링되고 후속하여 컴퓨팅 타일 메모리(538)에 저장될 수 있다.
그 결과, 일부 실시예에서, 컴퓨팅 타일(510)은 메모리 디바이스(들)로부터 수신된 데이터 블록에 대한 동작의 데이터 기반 수행(data driven performance)을 제공할 수 있다. 예를 들어, 컴퓨팅 타일(510)은 데이터 블록의 수신에 대한 응답으로 메모리 디바이스(들)로부터 수신된 데이터 블록에 대한 동작(예를 들어, 데이터 블록의 크기를 줄이기 위한 동작, 데이터 블록에서 관련 정보를 추출하는 동작, 데이터 블록에서 관련 없는 정보를 제거하는 동작 등)을 수행하기 시작할 수 있다.
예를 들어, 메모리 디바이스(들)에서 컴퓨팅 타일(510)로의 데이터 전송의 비결정적 특성 때문에(예를 들어, 데이터 블록을 컴퓨팅 타일(510)로 전송하기 전에 데이터의 일부 블록이 미디어 제어기에 의해 수행되는 에러 정정 동작 등 에러 수정을 위해 컴퓨팅 타일(510)에 도달하는데 더 오래 걸릴 수 있기 때문에), 데이터 블록에 대한 동작의 데이터 기반 수행은 데이터 기반 방식에서 기능하지 않는 접근 방식과 비교하여 컴퓨팅 성능을 향상시킬 수 있다.
일부 실시예에서, 오케스트레이션 제어기는 컴퓨팅 타일(510)의 시스템 이벤트 큐(530)에 의해 수신된 명령 또는 메시지를 발송할 수 있다. 상기에서 설명된 바와 같이, 명령 또는 메시지는 데이터 블록을 요청하고 데이터 블록과 관련된 데이터의 크기 또는 양을 줄이기 위해 데이터 블록에 대한 동작을 수행하도록 컴퓨팅 타일(510)에 지시하는 인터럽트일 수 있다. 그러나 데이터 블록은 메모리 디바이스(들)에서 컴퓨팅 타일(510)로의 데이터 전송의 비결정적 특성으로 인해 메모리 디바이스에서 컴퓨팅 타일(510)로 즉시 발송될 준비가 되지 않을 수 있다. 그러나, 데이터 블록이 컴퓨팅 타일(510)에 의해 수신되면, 컴퓨팅 타일(510)은 데이터 블록과 연관된 데이터의 크기 또는 양을 줄이기 위한 동작을 즉시 수행하기 시작할 수 있다. 다르게 말하면, 컴퓨팅 타일(510)은 데이터 블록에 대한 동작의 수행을 야기하기 위한 추가 명령 또는 메시지를 요구하지 않고 데이터 블록의 수신에 응답하여 데이터 블록에 대한 동작을 수행을 시작할 수 있다.
일부 실시예에서, 동작은 데이터 블록으로부터 관련 데이터를 추출하거나 데이터 블록으로부터 관련 없는 데이터를 제거하기 위해 컴퓨팅 타일 메모리(538)에서 데이터를 선택적으로 이동시킴으로써 수행될 수 있다. 데이터 A, B 및 C의 3개 열을 포함하는 데이터 블록에서 데이터 A 및 B의 2개 열이 요청되는 비제한적인 예에서, 3개 열 모두를 포함하는 데이터 블록은 컴퓨팅 타일 메모리(538)의 제 1 블록(예를 들어, 블록 (543-1))으로 전송될 수 있다.
RISC 디바이스(536)는 3개의 열을 포함하는 데이터 블록의 처음 2개의 열 A 및 B(예를 들어, 요청된 데이터 또는 관련 데이터)가 컴퓨팅 타일 메모리의 다른 파티션으로 (예를 들어, 블록 543-N)으로 선택적으로 이동되도록 하는 명령을 실행할 수 있다. 이 단계에서, 관련되거나 요청된 열 A 및 B만을 포함하는 데이터의 "필터링된(filtered)" 블록(예를 들어, 블록 (543-N))은 컴퓨팅 타일(510) 외부의 회로부로 전송될 메시지 버퍼(534)로 전송될 수 있다.
필터링된 데이터 블록이 메시지 버퍼(534)로 전송될 때, 데이터의 후속 블록은 DMA 버퍼(539)에서 컴퓨팅 타일 메모리(538)로 전송될 수 있고, 후속 데이터 블록과 연관된 데이터의 크기 또는 양을 줄이기 위한 동작이 컴퓨팅 타일 메모리(538)에서 개시될 수 있다. 선행 데이터 블록에 대한 동작이 완료되기 전에 컴퓨팅 타일(510)에 버퍼링된 후속 데이터 블록을 가짐으로써, 후속 데이터 블록에 대한 동작을 시작하기 위해 오케스트레이션 제어기의 추가 명령이나 메시지가 없는 경우 데이터 블록은 컴퓨팅 타일을 통해 연속적으로 스트리밍될 수 있다. 또한, 데이터의 후속 블록을 DMA 버퍼(539)에 선제적으로 버퍼링함으로써, 메모리 디바이스(들)에서 컴퓨팅 타일(510)로의 데이터 전송의 비결정적 특성으로 인한 지연은 컴퓨팅 타일(510)을 통해 스트리밍되는 동안 데이터 블록이 동작될 때 완화될 수 있다.
다른 비제한적인 예에서, 데이터 블록은 하나 이상의 CSV(comma-separated value) 파일을 포함할 수 있다. 특정 스트링 또는 특정 데이터가 CSV 파일로부터 요구된다면, 전체 CSV 파일을 포함하는 데이터 블록은 컴퓨팅 타일 메모리(538)의 특정 파티션(예를 들어, 블록 (543-1))에 저장될 수 있다. RISC 디바이스(536)는 특정 스트링 또는 특정 데이터(예를 들어, 요청된 데이터 또는 관련 데이터)가 컴퓨팅 타일 메모리(538)의 다른 파티션(예를 들어, 블록 (543-N))으로 이동되게 하는 명령을 실행할 수 있다. 이 단계에서, 관련되거나 요청된 스트링 또는 데이터만을 포함하는 데이터의 “필터링된” 블록 (예를 들어, 블록 (543-N))는 컴퓨팅 타일(510) 외부의 회로로 전송될 메시지 버퍼(534)로 전송될 수 있다.
필터링된 데이터 블록이 메시지 버퍼(534)로 전송될 때, 데이터의 후속 블록은 DMA 버퍼(539)에서 컴퓨팅 타일 메모리(538)로 전송될 수 있고, 데이터의 후속 블록과 연관된 데이터의 크기 또는 양을 감소시키는 동작이 컴퓨팅 타일 메모리(538)에서 개시될 수 있다. 데이터의 "필터링된" 블록과 관련하여 위에서 설명되었지만, 실시예는 이에 한정되지 않고 컴퓨팅 타일(510)은 다른 동작 예컨대, 데이터의 적어도 일부가 유사한 방식으로 데이터 블록(들)에 대한 정렬, 재정렬, 제거 또는 폐기, 산술 연산 및/또는 로직 연산과 같은 동작을 수행할 수 있다.
데이터(예를 들어, 동작된 데이터)가 컴퓨팅 타일(510) 외부의 컴퓨팅 타일(510) 외부의 회로부(예를 들어, NoC, 오케스트레이션 제어기, 및/또는 호스트)로 이동될 때, RISC 디바이스(536)는 오케스트레이션 제어기에 명령 및/또는 메시지를 발송할 수 있으며, 이는 결국 컴퓨팅 타일 메모리(538)로부터 데이터를 요청하기 위해 명령 및/또는 메시지를 발송할 수 있다.
데이터를 요청하는 명령 및/또는 메시지에 응답하여, 컴퓨팅 타일 메모리(538)는 원하는 위치(예를 들어, NoC, 오케스트레이션 타일, 및/또는 호스트)로 데이터를 전송할 수 있다. 예를 들어, 동작된 데이터를 요청하는 명령에 응답하여, 동작된 데이터는 메시지 버퍼(534)로 전송되고 후속하여 컴퓨팅 타일(510) 외부로 전송될 수 있다. 일부 실시예에서, 컴퓨팅 타일 메모리(538)에서 NoC, 오케스트레이션 제어기, 및/또는 호스트로 전송된 데이터는 데이터 블록으로부터 관련 없는 데이터를 제거함으로써 및/또는 데이터 블록으로부터 관련 데이터를 추출함으로써 데이터의 원래 크기를 줄이기 위해 (예를 들어, 메모리 디바이스(들)로부터 컴퓨팅 타일(510)에 의해 수신된 데이터 블록의 크기를 줄이기 위해) 동작이 수행된 데이터일 수 있다.
도 6은 본 개시의 다수의 실시예에 따른 컴퓨팅 타일(610) 형태의 다른 블록도이다. 도 6에 도시된 바와 같이, 컴퓨팅 타일(610)은 시스템 이벤트 큐(630), 이벤트 큐(632), 및 메시지 버퍼(634)를 포함할 수 있다. 컴퓨팅 타일(610)은 명령 캐시(635), 데이터 캐시(637), 처리 디바이스 또는 "처리 유닛" 예컨대, RISC(Reduced Instruction Set Computing) 디바이스(636), 컴퓨팅 타일 메모리(638) 부분 및 직접 메모리 액세스 버퍼(639)을 더 포함할 수 있다. 도 6에 도시된 컴퓨팅 타일(610)은 도 5에 도시된 컴퓨팅 타일(510)과 유사할 수 있지만 그러나, 도 6에 도시된 컴퓨팅 타일(610)은 명령 캐시(635) 및/또는 데이터 캐시(637)를 더 포함한다.
명령 캐시(635) 및/또는 데이터 캐시(637)는 컴퓨팅 타일 메모리(638)보다 크기가 더 작을 수 있다. 예를 들어, 컴퓨팅 타일 메모리는 약 256KB일 수 있는 반면, 명령 캐시(635) 및/또는 데이터 캐시(637)는 크기가 약 32KB일 수 있다. 그러나 명령 캐시(635) 및/또는 데이터 캐시(637)가 컴퓨팅 타일 메모리(638)보다 크기가 작은 한 실시예는 이러한 특정 크기로 한정되지 않는다.
일부 실시예에서, 명령 캐시(635)는 RISC 디바이스(636) 사이에서 컴퓨팅 타일 메모리(638)로 전달된 메시지 및/또는 명령을 저장 및/또는 버퍼링할 수 있는 반면, 데이터 캐시(637)는 컴퓨팅 타일 메모리(638)와 RISC 디바이스(636) 사이에서 전송되는 데이터를 저장 및/또는 버퍼링할 수 있다.
도 7은 본 개시의 다수의 실시예에 따른 저장 디바이스 동작 오케스트레이션을 위한 예시적인 방법(750)을 나타내는 흐름도이다. 블록(752)에서, 방법(750)은 제 1 제어기와 연관된 복수의 컴퓨팅 디바이스에 의해, 컴퓨팅 디바이스에 결합된 메모리 디바이스로부터의 데이터 블록을 수신하는 단계를 포함할 수 있다. 컴퓨팅 디바이스는 본 출원에서 도 1-6에 도시된 컴퓨팅 타일(110, 210, 310, 410, 510, 610)과 유사할 수 있다. 제 1 제어기는 본 출원에서 도 1-4에 도시된 저장 제어기(104, 204, 304, 404)와 유사할 수 있다. 메모리 디바이스는 본 출원에서 도 1에 예시된 메모리 디바이스(들)(116-1, …, 116-N)와 유사할 수 있다. 일부 실시예에서, 데이터 블록은 제 3 제어기(예를 들어, 본 출원에서 도 1-4에 도시된 미디어 제어기(112, 212, 312 또는 412)와 같은 미디어 제어기)을 이용하여 메모리 디바이스로부터 저장 제어기로 전송될 수 있다.
블록(754)에서, 방법(750)은 복수의 컴퓨팅 디바이스에 결합된 제 2 제어기에 의해, 데이터 블록의 크기를 제 1 크기에서 제 2 크기로 감소시키기 위해 데이터 블록에 대한 동작의 수행을 야기하는 단계를 포함할 수 있다. 제 2 제어기는 본 출원의 도 1-4에 예시된 오케스트레이션 제어기(106, 206, 306, 406)와 유사할 수 있다. 일부 실시예에서, 동작은 도 1-6과 관련하여 위에서 설명된 필터링 동작을 포함할 수 있다. 그러나, 실시예는 이에 한정되지 않으며, 동작은 블록의 적어도 일부 데이터가 정렬, 재정렬, 제거 또는 폐기되는 동작을 포함할 수 있다. 동작은 또한 도 2 및 3과 관련하여 위에서 설명한 바와 같이 데이터 블록을 로직 레코드 워드로 변환하는 단계를 포함할 수 있다.
블록(756)에서, 방법(750)은 감소된 크기의 데이터 블록을 제 1 제어기에 결합 가능한 호스트에 전송하는 단계를 포함할 수 있다. 호스트는 본 출원에서 도 1에 예시된 호스트(102)와 유사할 수 있다. 일부 실시예에서, 방법(750)은 도 1-4와 관련하여 위에서 설명된 바와 같이 데이터 블록에 대한 동작을 수행하기 위해 복수의 컴퓨팅 디바이스 중에서 개별 컴퓨팅 디바이스에 대응하는 자원을 제 2 제어기에 의해 할당하는 단계 및/또는 제 2 제어기를 사용하여, 제 1 제어기와 연관된 컴퓨팅 자원을 관리하는 단계를 더 포함할 수 있다.
특정 실시예가 본 출원에서 예시되고 설명되었지만, 당업자는 동일한 결과를 달성하도록 계산된 배열이 도시된 특정 실시예를 대체할 수 있음을 이해할 것이다. 본 개시는 본 개시의 하나 이상의 실시예의 적응 또는 변형을 포함하도록 의도된다. 상기 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어진 것임을 이해해야 한다. 상기 실시예의 조합, 및 본 출원에 구체적으로 설명되지 않은 다른 실시예는 상기 설명을 검토할 때 당업자에게 명백할 것이다. 본 개시의 하나 이상의 실시예의 범위는 상기 구조 및 프로세스가 사용되는 다른 애플리케이션을 포함한다. 따라서, 본 개시의 하나 이상의 실시예의 범위는 첨부된 청구범위를 참조하여 결정되어야 하며, 이러한 청구범위가 부여되는 등가물의 전체 범위와 함께 결정되어야 한다.
전술한 상세한 설명에서, 일부 특징은 본 개시를 간소화할 목적으로 단일 실시예에서 함께 그룹화된다. 이러한 개시 방법은 본 개시의 개시된 실시예가 각각의 청구항에서 명시적으로 인용된 것보다 더 많은 특징을 사용해야 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음 청구범위가 반영하는 바와 같이, 독창적인 주제는 단일의 개시된 실시예의 모든 특징보다 적다. 따라서, 다음 청구범위는 이에 의해 상세한 설명에 통합되며, 각 청구범위는 그 자체로 별도의 실시예로 서 있다.

Claims (23)

  1. 장치에 있어서,
    서로 결합된 복수의 컴퓨팅 디바이스로서, 각각은 처리 유닛 및 상기 처리 유닛에 대한 캐시로서 구성된 메모리 어레이를 포함하는, 상기 복수의 컴퓨팅 디바이스;
    상기 복수의 컴퓨팅 디바이스에 결합되고 호스트 디바이스에 결합 가능한 인터페이스; 및
    상기 복수의 컴퓨팅 디바이스에 결합된 제어기로서,
    상기 장치에 결합된 메모리 디바이스로부터 데이터 블록을 요청하고;
    상기 복수의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스의 처리 유닛이 상기 데이터의 적어도 일부가 정렬, 재정렬, 제거 또는 폐기되는 데이터 블록에 대한 동작을 수행하게 하고; 및
    상기 데이터의 일부가 정렬, 재정렬, 제거 또는 폐기된 후, 상기 데이터 블록이 상기 복수의 컴퓨팅 디바이스에 결합된 인터페이스로 전송되게 하도록 구성된 회로부(circuitry)를 포함하는, 상기 제어기를 포함하는, 장치.
  2. 청구항 1에 있어서, 상기 제어기에 결합되고 상기 컴퓨팅 디바이스들 중 하나에 의해 수행되는 동작 이전에 상기 데이터 블록에 대해 하나 이상의 추가 동작을 수행하도록 구성된 로직을 더 포함하는, 장치.
  3. 청구항 1에 있어서, 상기 복수의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스는 상기 제어기를 포함하는, 장치.
  4. 청구항 1 내지 청구항 3 중 어느 한 항에 있어서, 각각의 컴퓨팅 디바이스의 처리 유닛은 감소된 명령 세트 아키텍처(reduced instruction set architecture)로 구성된, 장치.
  5. 청구항 1 내지 청구항 3 중 어느 한 항에 있어서, 상기 메모리 디바이스는 NAND 메모리 디바이스 또는 3D Xpoint 메모리 디바이스, 또는 이들의 조합을 포함하는, 장치.
  6. 청구항 1 내지 청구항 3 중 어느 한 항에 있어서, 상기 메모리 디바이스와 관련된 판독 동작, 상기 메모리 디바이스와 관련된 복사 동작, 상기 메모리 디바이스와 관련된 에러 정정 동작, 또는 이들의 조합을 수행하도록 구성된 또 다른 제어기를 더 포함하는, 장치.
  7. 청구항 1 내지 청구항 3 중 어느 한 항에 있어서, 상기 데이터 블록에 대한 동작은 CSV(comma-separated value) 파싱 동작을 포함하는, 장치.
  8. 장치에 있어서,
    제 1 처리 유닛 및 상기 제 1 처리 유닛에 대한 캐시로서 구성된 제 1 메모리 어레이를 포함하는 제 1 컴퓨팅 디바이스;
    제 2 처리 유닛 및 상기 제 2 처리 유닛에 대한 캐시로서 구성된 제 2 메모리 어레이를 포함하는 제 2 컴퓨팅 디바이스로서, 상기 제 2 컴퓨팅 디바이스는 상기 제 1 컴퓨팅 디바이스에 결합된, 상기 제 2 컴퓨팅 디바이스; 및
    상기 제 1 컴퓨팅 디바이스 및 상기 제 2 컴퓨팅 디바이스에 결합된 제어기를 포함하되, 상기 제어기는,
    적어도 일부 데이터가 정렬, 재정렬, 제거 또는 폐기되는 데이터 블록에 대한 동작을 수행하기 위해 상기 제 1 컴퓨팅 디바이스 및 상기 제 2 컴퓨팅 디바이스 중 적어도 하나를 할당하고; 및
    상기 제 1 컴퓨팅 디바이스 및 상기 제 2 컴퓨팅 디바이스 중 적어도 하나로 하여금 적어도 일부 데이터가 상기 데이터 블록에 대해 정렬, 재정렬, 제거 또는 폐기되는 동작을 수행하게 하도록 구성된, 장치.
  9. 청구항 8에 있어서, 상기 장치에 결합된 메모리 디바이스에 대한 복사, 판독, 기록 및 에러 정정 동작을 수행하도록 구성된 다른 제어기를 더 포함하는, 장치.
  10. 청구항 8에 있어서, 상기 제 1 컴퓨팅 디바이스 및 상기 제 2 컴퓨팅 디바이스는,
    상기 제 1 컴퓨팅 디바이스는 상기 제 2 컴퓨팅 디바이스와 연관된 어드레스 공간에 액세스할 수 있고; 및
    상기 제 2 컴퓨팅 디바이스는 상기 제 1 컴퓨팅 디바이스와 연관된 어드레스 공간에 액세스할 수 있도록 구성된, 장치.
  11. 청구항 8 내지 청구항 10 중 어느 한 항에 있어서, 상기 제 1 처리 유닛 및 상기 제 2 처리 유닛은 개개의 감소된 명령 세트 컴퓨팅 아키텍처로 구성된, 장치.
  12. 청구항 8 내지 청구항 10 중 어느 한 항에 있어서, 적어도 일부 데이터가 정렬, 재정렬, 제거 또는 폐기되는 동작은 제 1 데이터 양으로부터 제 2 데이터 양으로 상기 데이터 블록에 대응하는 데이터 양을 감소시키는 동작을 포함하는, 장치.
  13. 청구항 8 내지 청구항 10 중 어느 한 항에 있어서, 상기 오케스트레이션 제어기(orchestration controller)는 상기 동작의 수행의 일부로서 상기 데이터 블록을 로직 레코드(logical record)로 변환하도록 추가로 구성된, 장치.
  14. 시스템에 있어서,
    호스트;
    메모리 디바이스; 및
    상기 호스트 및 상기 메모리 디바이스에 결합된 제어기를 포함하되, 상기 저장 제어기는,
    상기 메모리 디바이스로부터 데이터 블록을 수신하고;
    상기 데이터 블록에 대한 동작을 수행하여 상기 데이터 블록의 크기를 제 1 크기에서 제 2 크기로 감소시키고; 및
    연관된 감소된 크기를 갖는 데이터 블록을 상기 호스트로 전송하도록 구성된, 시스템.
  15. 청구항 14에 있어서, 상기 제어기는 상기 데이터 블록의 크기를 감소시키기 위해 상기 데이터 블록에 대한 동작의 수행의 일부로서 상기 데이터 블록을 로직 레코드로 변환하도록 구성된, 시스템.
  16. 청구항 14에 있어서, 상기 제어기는,
    상기 메모리 디바이스로부터 데이터 블록을 요청하는 제 1 제어기 부분;
    복수의 컴퓨팅 디바이스로서, 각각의 컴퓨팅 디바이스는 상기 데이터 블록에 대한 동작을 수행하기 위한 처리 유닛 및 캐시를 포함하는, 상기 복수의 컴퓨팅 디바이스; 및
    상기 데이터 블록에 대한 동작을 수행하기 위해 상기 복수의 컴퓨팅 디바이스를 제어하는 제 2 제어기 부분을 포함하는, 시스템.
  17. 청구항 16에 있어서, 상기 제 2 제어기 부분은 상기 복수의 컴퓨팅 디바이스 중 하나인 컴퓨팅 디바이스를 포함하는, 시스템.
  18. 청구항 16에 있어서, 상기 제 2 제어기 부분은 상기 데이터 블록에 대한 동작을 수행하기 위해 상기 복수의 컴퓨팅 디바이스에 컴퓨팅 자원을 할당 및 할당 해제하도록 구성된, 시스템.
  19. 청구항 14 내지 청구항 18 중 어느 한 항에 있어서, 상기 데이터 블록에 대한 동작은,
    필터 동작; 및
    수집-분산 동작(gather-scatter operation)을 포함하는 그룹으로부터 선택된 동작을 포함하는, 시스템.
  20. 방법에 있어서,
    제 1 제어기에 결합된 복수의 컴퓨팅 디바이스에 의해, 상기 컴퓨팅 디바이스에 결합된 메모리 디바이스로부터 데이터 블록을 수신하는 단계;
    상기 복수의 컴퓨팅 디바이스에 결합된 제 2 제어기에 의해, 상기 데이터 블록에 대한 동작의 수행이 데이터 블록의 크기를 제 1 크기에서 제 2 크기로 감소시키도록 하는 단계; 및
    감소된 크기의 데이터 블록을 상기 제 1 제어기에 결합 가능한 호스트로 전송하는 단계를 포함하는, 방법.
  21. 청구항 20에 있어서, 제 3 제어기를 사용하여 상기 데이터 블록이 상기 메모리 디바이스로부터 상기 제 1 제어기로 전송되게 하는 단계를 더 포함하는, 방법.
  22. 청구항 20 내지 청구항 21 중 어느 한 항에 있어서, 상기 데이터 블록에 대한 동작의 수행은 상기 데이터 블록에 대한 필터링 동작을 수행하는 단계를 더 포함하는, 방법.
  23. 청구항 20 내지 청구항 21 중 어느 한 항에 있어서,
    상기 데이터 블록에 대한 동작 수행의 일부로서 상기 데이터 블록을 로직 레코드로 변환하는 단계;
    상기 제 2 제어기에 의해, 상기 데이터 블록에 대한 동작을 수행하기 위해 상기 복수의 컴퓨팅 디바이스 중 개별 컴퓨팅 디바이스에 대응하는 자원을 할당하는 단계; 및
    상기 제 2 제어기를 사용하여, 상기 제 1 제어기와 연관된 컴퓨팅 자원을 관리하는 단계를 포함하는, 방법.
KR1020217025861A 2019-02-25 2020-01-28 저장 디바이스 동작 오케스트레이션 KR20210108487A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/284,273 US10949101B2 (en) 2019-02-25 2019-02-25 Storage device operation orchestration
US16/284,273 2019-02-25
PCT/US2020/015290 WO2020176183A1 (en) 2019-02-25 2020-01-28 Storage device operation orchestration

Publications (1)

Publication Number Publication Date
KR20210108487A true KR20210108487A (ko) 2021-09-02

Family

ID=72141890

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217025861A KR20210108487A (ko) 2019-02-25 2020-01-28 저장 디바이스 동작 오케스트레이션

Country Status (5)

Country Link
US (2) US10949101B2 (ko)
EP (1) EP3931707A4 (ko)
KR (1) KR20210108487A (ko)
CN (1) CN113454612A (ko)
WO (1) WO2020176183A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230135864A (ko) 2022-03-17 2023-09-26 한국과학기술정보연구원 복수의 클러스터 컴퓨팅 플랫폼 간의 페더레이션을 통한 자원 공유를 위한 분산 컴퓨팅 오케스트레이션 방법 및 시스템

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591355B2 (en) * 1998-09-28 2003-07-08 Technion Research And Development Foundation Ltd. Distributed shared memory system with variable granularity
US7089391B2 (en) * 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US8811431B2 (en) 2008-11-20 2014-08-19 Silver Peak Systems, Inc. Systems and methods for compressing packet data
US8176167B2 (en) 2006-12-05 2012-05-08 Qualcomm Incorporated Methods and apparaus for requesting wireless communication device performance data and providing the data in optimal file size
US20100017649A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm
KR20100050072A (ko) 2008-11-05 2010-05-13 삼성전자주식회사 데이터 압축 방법 및 이를 이용한 데이터 통신 시스템
US8438455B2 (en) 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US9098303B2 (en) 2013-09-04 2015-08-04 Red Hat, Inc. Portable computing device providing operating system for host devices
US9009171B1 (en) 2014-05-02 2015-04-14 Palantir Technologies Inc. Systems and methods for active column filtering
US9477295B2 (en) 2014-05-15 2016-10-25 Dell Products, L.P. Non-volatile memory express (NVMe) device power management
US20150371684A1 (en) 2014-06-18 2015-12-24 NXGN Data, Inc. Ultra high capacity ssd
WO2016126478A1 (en) * 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for memory device as a store for program instructions
US9996436B2 (en) 2015-10-22 2018-06-12 Netapp Inc. Service processor traps for communicating storage controller failure
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
WO2019000368A1 (en) * 2017-06-30 2019-01-03 Intel Corporation DETERMINING THE OPTIMUM DATA SIZE FOR DATA DEDUPLICATION OPERATION
US20190068466A1 (en) * 2017-08-30 2019-02-28 Intel Corporation Technologies for auto-discovery of fault domains
KR20190059053A (ko) * 2017-11-22 2019-05-30 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10708135B1 (en) * 2019-01-31 2020-07-07 EMC IP Holding Company LLC Unified and automated installation, deployment, configuration, and management of software-defined storage assets

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230135864A (ko) 2022-03-17 2023-09-26 한국과학기술정보연구원 복수의 클러스터 컴퓨팅 플랫폼 간의 페더레이션을 통한 자원 공유를 위한 분산 컴퓨팅 오케스트레이션 방법 및 시스템

Also Published As

Publication number Publication date
US11768614B2 (en) 2023-09-26
US10949101B2 (en) 2021-03-16
EP3931707A4 (en) 2022-11-02
US20200272344A1 (en) 2020-08-27
US20210157491A1 (en) 2021-05-27
EP3931707A1 (en) 2022-01-05
CN113454612A (zh) 2021-09-28
WO2020176183A1 (en) 2020-09-03

Similar Documents

Publication Publication Date Title
US11604594B2 (en) Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator
US11586355B2 (en) Selectively operable memory device
KR20210151250A (ko) 확장 메모리 인터페이스
US11650941B2 (en) Computing tile
US11768614B2 (en) Storage device operation orchestration
KR20220050177A (ko) 3단의 계층적 메모리 시스템
US11579882B2 (en) Extended memory operations
US20240134541A1 (en) Storage device operation orchestration
US11550736B1 (en) Tensorized direct memory access descriptors
US20210055882A1 (en) Hierarchical memory apparatus
WO2021034654A1 (en) Hierarchical memory systems
EP4018328A1 (en) Hierarchical memory apparatus

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal