KR20210151250A - 확장 메모리 인터페이스 - Google Patents

확장 메모리 인터페이스 Download PDF

Info

Publication number
KR20210151250A
KR20210151250A KR1020217039428A KR20217039428A KR20210151250A KR 20210151250 A KR20210151250 A KR 20210151250A KR 1020217039428 A KR1020217039428 A KR 1020217039428A KR 20217039428 A KR20217039428 A KR 20217039428A KR 20210151250 A KR20210151250 A KR 20210151250A
Authority
KR
South Korea
Prior art keywords
data
computing
controller
memory
communication subsystem
Prior art date
Application number
KR1020217039428A
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 KR20210151250A publication Critical patent/KR20210151250A/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/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
    • 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
    • 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
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • 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/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • 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
    • 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/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/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/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/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
    • 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
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 확장 메모리 연산을 수행하기 위한 확장 메모리 통신 서브시스템과 관련된 시스템, 장치 및 방법에 관한 것이다. 예시적인 장치는 서로 결합된 복수의 컴퓨팅 디바이스를 포함할 수 있다. 복수의 컴퓨팅 디바이스 각각은 데이터 블록의 수신에 응답하여 데이터 블록에 대한 연산을 수행하도록 구성된 프로세싱 유닛을 포함할 수 있다. 복수의 컴퓨팅 디바이스 각각은 프로세싱 유닛에 대한 캐시로 구성된 메모리 어레이를 더 포함할 수 있다. 예시적인 장치는 장치 내에서 복수의 컴퓨팅 디바이스 및 제어기와 결합되는 제1 통신 서브시스템을 포함하며, 제1 통신 서브시스템은 데이터 블록을 요청하도록 구성된다. 예시적인 장치는 장치 내에서 복수의 컴퓨팅 디바이스와 제어기에 결합되는 제2 통신 서브시스템을 더 포함할 수 있다. 제2 통신 서브시스템은 데이터 블록을 제1 제어기로부터 복수의 컴퓨팅 디바이스 중 적어도 하나로 전송하도록 구성될 수 있다.

Description

확장 메모리 인터페이스
본 개시는 전반적으로 반도체 메모리 및 방법에 관한 것으로, 보다 상세하게는 확장 메모리 인터페이스를 위한 장치, 시스템 및 방법에 관한 것이다.
메모리 디바이스는 전형적으로 컴퓨터 또는 다른 전자 시스템에서 내부의 반도체 집적 회로로 제공된다. 휘발성 및 비휘발성 메모리를 포함하는 많은 상이한 유형의 메모리가 존재한다. 휘발성 메모리는 데이터(예: 호스트 데이터, 에러 데이터 등)를 유지하기 위해 전력이 필요할 수 있고, 랜덤 액세스 메모리(random access memory, RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 사이리스터 랜덤 액세스 메모리(TRAM) 등을 포함할 수 있다. 비휘발성 메모리는 전원이 공급되지 않을 때 저장된 데이터를 유지함으로써 지속 데이터(persistent data)를 제공할 수 있고, NAND 플래시 메모리, NOR 플래시 메모리 및 상 변화 랜덤 액세스 메모리(PCRAM), 저항성 랜덤 액세스 메모리(RRAM)와 같은 저항 가변 메모리 및 스핀 토크 전송 랜덤 액세스 메모리(STT RAM)와 같은 자기저항 랜덤 액세스 메모리(MRAM) 및 다른 것들을 포함할 수 있다.
메모리 디바이스는 컴퓨터 또는 전자시스템이 작동하는 동안 호스트에서 사용하기 위한 데이터, 명령 및/또는 지침을 저장하기 위해 호스트(예: 호스트 컴퓨팅 디바이스)에 연결될 수 있다. 예를 들면, 데이터, 명령 및/또는 지침은 컴퓨팅 또는 다른 전자 시스템의 연산 동안 호스트와 메모리 디바이스(들) 사이에서 전송될 수 있다.
도 1은 본 개시의 다수의 실시예에 따른 다수의 메모리 디바이스 및 저장 제어기를 포함하는 장치를 포함하는 컴퓨팅 시스템 형태의 기능 블록도이다.
도 2는 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 또 다른 기능 블록도이다.
도 3은 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 또 다른 기능 블록도이다.
도 4는 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 또 다른 기능 블록도이다.
도 5는 본 개시의 다수의 실시예에 따른 컴퓨팅 타일 형태의 블록도이다.
도 6은 본 개시의 다수의 실시예에 따른 컴퓨팅 타일 형태의 다른 블록도이다.
도 7은 본 개시의 다수의 실시예에 따라 확장 메모리 인터페이스를 위한 예시적인 방법을 나타내는 흐름도이다.
확장 메모리 인터페이스와 관련된 시스템, 장치 및 방법이 설명된다. 확장 메모리 인터페이스와 관련된 장치는 서로 연결된 복수의 컴퓨팅 디바이스를 포함할 수 있다. 복수의 컴퓨팅 디바이스 각각은 데이터 블록의 수신에 응답하여 데이터 블록에 대해 연산을 수행하도록 구성된 프로세싱 유닛을 포함할 수 있다. 복수의 컴퓨팅 디바이스 각각은 프로세싱 유닛에 대한 캐시로 구성된 메모리 어레이를 더 포함할 수 있다. 예시적인 장치는 복수의 컴퓨팅 디바이스 및 제어기에 결합된 제1 인터페이스를 더 포함할 수 있고, 제1 인터페이스는 데이터 블록을 요청하도록 구성된다. 예시적인 장치는 복수의 컴퓨팅 디바이스 및 제어기에 결합된 제2 인터페이스를 더 포함할 수 있다. 제2 인터페이스는 데이터 블록을 제1 제어기로부터 복수의 컴퓨팅 디바이스 중 적어도 하나로 전송하도록 구성될 수 있다.
확장 메모리 인터페이스는 단일 어드레스와 피연산자에 의해 지정된 연산을 수행하기 위한 명령을 전달할 수 있고, 프로세싱 유닛과 메모리 자원을 포함하는 컴퓨팅 디바이스에 의해 수행될 수 있다. 컴퓨팅 디바이스는 개입 명령의 수신 없이 컴퓨팅 타일을 통해 스트리밍 되는 데이터에 대해 확장 메모리 연산을 수행할 수 있다. 일 예에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 프로세싱 유닛으로 데이터에 대해 연산을 수행하는 것을 포함하는 연산을 수행하기 위한 명령을 수신하고 연산에 대응하는 피연산자가 메모리 자원에 저장되는 것을 결정하도록 구성된다. 컴퓨팅 디바이스는 메모리 자원에 저장된 피연산자를 사용하여 연산을 추가로 수행할 수 있다.
본 출원에 사용된, "확장 메모리 연산(extended memory operation)"은 단일 어드레스(예: 메모리 어드레스) 및 64비트 피연산자와 같은 피연산자에 의해 지정될 수 있는 메모리 연산을 지칭한다. 피연산자는 복수의 비트(예: 비트 스트링 또는 비트들의 스트링)로 표현될 수 있다. 실시예는 64비트 피연산자에 의해 지정된 연산에 한정되지 않으며, 64비트보다 크거나(예: 128비트 등) 또는 더 작은(예: 32비트) 피연산자에 의해 연산이 지정될 수 있다. 본 출원에 설명된, 확장 메모리 연산을 수행하기 위해 액세스 가능한 유효 어드레스 공간은 호스트 컴퓨팅 시스템 또는 저장 제어기에 액세스 가능한 메모리 디바이스 또는 파일 시스템의 크기이다.
확장 메모리 연산은 컴퓨팅 타일(예: 본 출원의 도 1~6에 도시된 컴퓨팅 타일(들)(110, 210, 310, 410, 510, 610))의 프로세싱 디바이스(예: 본 출원의 도 5와 도 6에 도시된 축소된 명령 세트 컴퓨팅 디바이스(536, 636)와 같은 프로세싱 디바이스에 의해)에 의해 수행될 수 있는 명령 및/또는 연산을 포함한다. 일부 실시예에서, 확장 메모리 연산을 수행하는 단계는 메모리 자원(예: 본 출원의 도 5와 6에 도시된 컴퓨팅 타일 메모리(538, 638))에 저장된 데이터 및/또는 명령을 검색하는 단계, 컴퓨팅 타일 내에서 연산을 수행하는 단계(예: 데이터 또는 명령을 컴퓨팅 타일 외부의 회로부로 전송하지 않고), 확장 메모리 연산의 결과를 컴퓨팅 타일의 메모리 자원 또는 보조 저장소(storage)(예: 본 출원의 도 1에 도시된 메모리 디바이스(116)와 같은 메모리 디바이스)에 저장하는 단계를 포함한다.
확장 메모리 연산의 비제한적인 예는 부동 소수점 가산 누적, 32비트 복소수 연산, 제곱근 어드레스(SQRT(addr))연산, 변환 연산(예: 부동 소수점과 정수 형식 사이의 변환 및 /또는 부동 소수점 형식과 양수 형식 간의 변환), 데이터를 고정 포맷으로 정규화, 절댓값 연산 등을 포함할 수 있다. 일부 실시예에서, 확장 메모리 연산은 제자리에서 업데이트되는 컴퓨팅 타일에 의해 수행되는 연산(예: 확장 메모리 연산의 결과는 확장 메모리 연산의 수행 이전에 확장 메모리 연산의 수행에 사용된 피연산자가 저장된 어드레스에 저장되며) 뿐만 아니라 이전에 저장된 데이터를 사용하여 새로운 데이터를 결정하는 연산(예: 특정 어드레스에 저장된 피연산자가 피연산자가 저장된 특정 어드레스를 덮어쓰는 새로운 데이터를 생성하는데 사용되는 연산)을 포함할 수 있다.
그 결과, 일부 실시예에서, 확장 메모리 연산(들)이 다수의 스레드 실행 사이의 경합을 감소시킬 수 있는 컴퓨팅 타일 내에서 수행될 수 있기 때문에, 확장 메모리 연산의 수행은 잠금 또는 뮤텍스(mutex) 연산을 완화하거나 제거할 수 있다. 확장 메모리 연산을 수행하는 동안 스레드에서 잠금 또는 뮤텍스 연산의 성능을 줄이거나 제거하면 컴퓨팅 시스템의 성능이 향상될 수 있는데, 예를 들면, 확장 메모리 연산이 동일한 컴퓨팅 타일 내에서 또는 서로 통신하는 둘 이상의 컴퓨팅 타일에 걸쳐 병렬로 수행될 수 있기 때문이다. 또한, 일부 실시예에서, 본 출원에 설명된 확장 메모리 연산은 확장 메모리 연산의 결과가 연산을 수행한 컴퓨팅 타일로부터 호스트로 전송될 때 잠금 또는 뮤텍스 연산을 완화하거나 제거할 수 있다.
메모리 디바이스는 컴퓨팅 디바이스에 중요하거나 대단히 중요한 데이터를 저장하는데 사용될 수 있으며 컴퓨팅 디바이스와 관련된 호스트 간에 이러한 데이터를 적어도 하나의 확장 메모리 연산을 통해 전송할 수 있다. 그러나 메모리 디바이스에 의해 저장되는 데이터의 크기와 수량이 증가함에 따라 호스트와 데이터를 주고받는데 시간 소모적이고 자원 집약적일 수 있다. 예를 들면, 호스트가 큰 데이터 블록을 사용하여 메모리 연산의 수행을 요청할 때, 요청을 수행하는데 소요되는 시간 및/또는 자원의 양은 데이터 블록과 관련된 데이터의 크기 및/또는 수량에 비례하여 증가할 수 있다.
메모리 디바이스의 저장 용량이 증가함에 따라, 메모리 디바이스에 의해 저장될 수 있는 데이터가 점점 더 많아지고 따라서, 메모리 연산의 사용에 이용 가능함에 따라 이러한 효과는 더욱 두드러질 수 있다. 또한, 데이터가 처리될 수 있기 때문에(예: 데이터에 메모리 연산이 수행될 수 있음), 메모리 디바이스에 저장될 수 있는 데이터의 양이 증가함에 따라 처리될 수 있는 데이터의 양도 증가할 수 있다. 이는 처리 시간 증가 및/또는 처리 자원 소비 증가로 이어질 수 있으며, 이는 특정 유형의 메모리 연산 수행을 악화시킬 수 있다. 이들 및 다른 문제를 완화하기 위해, 본 출원의 실시예는 확장 메모리 연산이 메모리 디바이스, 하나 이상의 컴퓨팅 타일 및/또는 메모리 어레이(들)를 사용하여 수행되는 것을 허용할 수 있다.
일부 접근법에서, 메모리 연산을 수행하는 것은 메모리 디바이스 및/또는 메모리 어레이와 같은 컴퓨팅 시스템의 메모리에 대한 다수의 클록 사이클 및/또는 다수의 함수 호출을 요구할 수 있다. 대조적으로, 본 출원의 실시예는 메모리 연산이 단일 함수 호출 또는 명령으로 수행되는 확장 메모리 연산의 수행을 허용할 수 있다. 예를 들면, 적어도 하나의 명령 및/또는 함수 호출을 사용하여 연산될 데이터를 로드한 다음, 연산된 데이터를 저장하기 위해 하나 이상의 후속 함수 호출 또는 명령을 사용하는 접근 방식과 대조적으로, 본 출원의 실시예는 다른 접근 방식과 비교하여 더 적은 함수 호출 또는 명령을 사용하여 메모리 연산의 수행을 허용할 수 있다. 또한, 컴퓨팅 시스템의 컴퓨팅 디바이스는 제1 인터페이스(예: 제어 네트워크-온-칩(NOC), 통신 서브시스템 등)를 통해 메모리 연산을 수행하라는 요청을 수신할 수 있고 제2 인터페이스를 통해 메모리 디바이스로부터 요청된 메모리 연산을 실행하기 위한 데이터 블록을 수신할 수 있다.
메모리 연산의 수행에 사용되는 함수 호출 및/또는 명령의 수를 줄임으로써, 이러한 연산을 수행하는데 소비되는 시간 및/또는 이러한 연산을 수행하는데 소비되는 컴퓨팅 자원의 양이 메모리 연산 수행을 위해 여러 함수 호출 및/또는 명령이 필요한 접근 방식과 비교하여 감소될 수 있다. 또한, 본 출원의 실시예는 데이터가 메모리 연산을 수행하기 전에 특정 위치에 로드될 필요가 없기 때문에 메모리 디바이스 및/또는 메모리 어레이 내에서 데이터의 이동을 줄일 수 있다. 이는 특히 많은 양의 데이터가 메모리 연산의 대상이 되는 시나리오에서 일부 접근 방식과 비교하여 처리 시간을 줄일 수 있다.
또한, 본 출원에 설명된 확장 메모리 연산은 일부 접근 방식과 비교하여 훨씬 더 큰 세트의 유형 필드를 허용할 수 있다. 예를 들면, 메모리 디바이스(예: 메모리 서브 시스템)의 데이터를 사용하여 연산의 수행을 요청하기 위해 호스트에 의해 실행되는 명령은 유형, 어드레스 및 데이터 필드를 포함할 수 있다. 명령은 제1 인터페이스(예: 제어 네트워크-온-칩(NOC))를 통해 복수의 컴퓨팅 디바이스 중 적어도 하나로 전송될 수 있고 데이터는 제2 인터페이스(예: 데이터 네트워크-온-칩(NOC))를 통해 메모리 디바이스로부터 전송될 수 있다. 유형 필드는 요청되는 특정 연산에 해당할 수 있고, 어드레스는 연산 수행에 사용할 데이터가 저장되는 어드레스에 해당할 수 있으며, 데이터 필드는 연산을 수행하는 데 사용되는 데이터(예: 피연산자)에 해당할 수 있다. 일부 접근 방식에서, 유형 필드는 다른 크기의 판독 및/또는 기록과 일부 간단한 정수 누적 연산으로 제한될 수 있다. 대조적으로, 본 출원의 실시예는 확장 메모리 연산을 수행할 때 사용될 수 있는 유효 어드레스 공간이 메모리 디바이스의 크기에 대응할 수 있기 때문에 더 넓은 스펙트럼의 유형 필드가 활용되는 것을 허용할 수 있다. 연산을 수행하기 위해 이용 가능한 어드레스 공간을 확장함으로써, 본 출원의 실시예는 따라서, 더 넓은 범위의 유형 필드를 허용할 수 있으며, 따라서, 메모리 디바이스의 점유인 유효 어드레스 공간을 허용하지 않는 접근 방식에서보다 더 넓은 스펙트럼의 메모리 연산이 수행될 수 있다.
다음의 본 발명의 상세한 설명에서, 본 명세서의 일부를 형성하고 본 발명의 하나 이상의 실시예들이 어떻게 실시될 수 있는지를 예시적으로 나타낸 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 개시의 실시예를 실시할 수 있도록 충분히 상세하게 설명되며, 다른 실시예가 이용될 수 있고 본 개시의 범위를 벗어나지 않고 공정, 전기적 및 구조적 변경이 이루어질 수 있음을 이해해야 한다.
본 출원에 사용된, 지정자 예컨대, "X", "Y", "N", "M", "A", "B", "C", "D" 등은 특별히 도면에서 도면 번호와 관련하여, 그렇게 지정된 다수의 구체적인 특징이 포함될 수 있음을 나타낸다. 또한, 본 출원에서 사용된 용어는 특정 실시예들을 설명하기 위한 것이며 한정하려는 것이 아님을 이해해야 한다. 본 출원에서 사용될 때, 단수 형태의 표현들은 문맥상 명확히 다르게 지시하지 않는 한, 단수와 복수 대상들을 모두 포함할 수 있다. 추가로 "많은(a number of)", "적어도 하나(at least one)" 및 "하나 이상(one or more)"(예: 많은 메모리 뱅크)은 하나 이상의 메모리 뱅크를 지칭할 수 있는 반면, "복수의"는 이러한 것들 중 하나 이상을 지칭하는 것으로 의도된다. 또한, 단어 "할 수 있다" 및 "일 수 있다"는 필수 의미(즉, 해야 함)가 아닌 관용적인 의미(즉, ~에 대한 잠재력을 가짐, ~ 를 할 수 있음)로 본 명세서 전체에 걸쳐 사용된다. 용어 "포함하다", 및 그 파생어는 "~를 포함하지만 이들로 제한되지 않음"을 의미한다. 용어 "~에 결합된" 및 "결합한"은 물리적으로 또는 맥락에 대해 적절한 경우 명령 및/또는 데이터로의 액세스 및 그의 움직임(송신)을 위해 직접 또는 간접적으로 연결되는 것으로 의도된다. "데이터" 및 "데이터 값들"이라는 용어들은 본 출원에서 서로 바꿔 사용할 수 있으며 상황에 적절하게, 동일한 의미를 가질 수 있다.
본 출원에서의 도면들은 제1 숫자 또는 숫자들이 도면 번호에 상응하고 나머지 숫자들이 도면에서의 요소 또는 구성요소를 식별하는 번호부여 규칙을 따른다. 상이한 도면들 사이의 유사한 요소 또는 컴포넌트는 유사한 숫자를 사용함으로써 식별될 수 있다. 예를 들면, 104는 도 1의 요소 "04"를 참조할 수 있고, 유사한 요소는 도 2의 204로 참조될 수 있다. 그룹 또는 복수의 유사한 요소 또는 컴포넌트는 전체적으로 단일 요소 번호로 본 출원에서 참조될 수 있다. 예를 들면, 복수의 참조 요소(110-1, 110-2, ... , 110-N)은 전체적으로(110) 지칭될 수 있다. 이해될 바와 같이, 본 출원에서의 다양한 실시예들에서 도시된 요소들은 본 개시의 다수의 부가적인 실시예들을 제공하도록 부가되고, 교환되고/교환되거나 제거될 수 있다. 또한, 도면들에 제공된 요소들의 비율 및 상대적인 축척은 본 발명의 특정 실시예들을 예시하려는 것이고 제한적인 의미로 취해져서는 안 된다.
도 1은 본 개시의 다수의 실시예에 따른 저장 제어기(storage controller)(104) 및 다수의 메모리 디바이스들(116-1,..., 116-N)을 포함하는 장치를 포함하는 컴퓨팅 시스템(100) 형태의 기능 블록도이다. 여기서 사용될 때, "장치"는 예를 들면 회로 또는 회로들, 다이 또는 다이들, 모듈 또는 모듈들, 소자 또는 소자들 또는 시스템 또는 시스템들과 같은 다양한 구조 또는 구조들의 조합 중 임의의 구조를 지칭할 수 있으나, 이에 제한되지는 않는다. 도 1에 도시된 실시예에서, 메모리 디바이스(116-1,..., 116-N)는 하나 이상의 메모리 모듈 (예: 단일 인라인(in-line) 메모리 모듈, 이중 인라인 메모리 모듈 등)을 포함할 수 있다. 메모리 디바이스(116-1,..., 116-N)는 휘발성 메모리 및/또는 비휘발성 메모리를 포함할 수 있다. 다수의 실시예들에서, 메모리 디바이스들(116-1,..., 116-N)은 멀티-칩 디바이스를 포함할 수 있다. 다중-칩 디바이스는 다수의 상이한 메모리 유형들 및/또는 메모리 모듈들을 포함할 수 있다. 예를 들면, 메모리 시스템은 임의의 유형의 모듈 상에 비-휘발성 또는 휘발성 메모리를 포함할 수 있다.
메모리 디바이스(116-1,..., 116-N)은 컴퓨팅 시스템(100)을 위한 메인 메모리를 제공할 수 있거나 컴퓨팅 시스템(100) 전체에 걸쳐 추가 메모리 또는 스토리지로 사용될 수 있다. 각각의 메모리 디바이스(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)" 메모리 디바이스 예컨대, 3D 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에서, 오케스트레이션 제어기(106)을 포함하는 저장 제어기(104)는 채널(103)을 통해 호스트(102)에 결합되고 오케스트레이션 제어기(106)는 채널(105)을 통해 호스트(102)에 결합된다. 호스트(102)는 호스트 시스템 예컨대, 다양한 다른 유형의 호스트 중에서 개인용 랩톱 컴퓨터, 데스크톱 컴퓨터, 디지털 카메라, 스마트폰, 메모리 카드 판독기 및/또는 사물 인터넷 가능 디바이스일 수 있고, 메모리액세스 디바이스 예를 들면, 프로세서(또는 프로세싱 디바이스)를 포함할 수 있다. 당업자는 "프로세서"가 병렬 처리 시스템, 다수의 코프로세서 등과 같은 하나 이상의 프로세서를 의도할 수 있음을 이해할 것이다.
호스트(102)는 시스템 마더 보드 및/또는 백플레인을 포함할 수 있고, 다수의 처리 자원(예: 하나 이상의 프로세서, 마이크로프로세서, 또는 일부 다른 유형의 제어 회로부)를 포함할 수 있다. 일부 실시예에서, 호스트는 호스트 제어기(101)를 포함할 수 있고, 이는 예를 들면, 확장 메모리 인터페이스와 같은 연산의 수행을 야기하기 위해 명령을 생성하여 저장 제어기로 전달함으로써 호스트(102) 및/또는 저장 제어기(104)의 적어도 일부 연산을 제어하도록 구성될 수 있다. 호스트 제어기(101)는 호스트(102) 및/또는 저장 제어기(104)의 적어도 일부 연산을 제어하도록 구성될 수 있는 회로부(예: 하드웨어)를 포함할 수 있다. 예를 들면, 호스트 제어기(101)는 호스트(102) 및/또는 저장 제어기(104)의 적어도 일부 연산을 제어하도록 구성된 ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 회로부 및/또는 로직의 다른 조합일 수 있다.
저장 제어기(104)는 오케스트레이션 제어기(106), NoC(네트워크 온 칩)(108-1), 데이터 NoC(108-2), 복수의 컴퓨팅 타일(110-1, ..., 110-N)을 포함할 수 있고, 이는 본 출원의 도 5 및 6과 관련하여 보다 상세하게 설명된다. 제어 NoC(108-1) 및 데이터 NoC(108-2)는 본 출원에서 통신 서브시스템으로 지칭될 수 있다. 복수의 컴퓨팅 타일(110)은 본 출원에서 "컴퓨팅 디바이스"로 지칭될 수 있다. 오케스트레이션 제어기(106)(또는 간단하게 "제어기")는 본 출원에 설명된 연산을 수행하는 동안 컴퓨팅 타일(110-1,..., 110-N)에 자원을 할당 및 할당 해제(de-allocate)하도록 구성된 회로부 및/또는 로직을 포함한다. 예를 들면, 오케스트레이션 제어기(106)는 본 출원에 설명된 확장 메모리 연산을 수행하는 동안 컴퓨팅 타일(110-1,..., 110-N)에 자원을 할당 및 할당 해제할 수 있다. 일부 실시예에서, 오케스트레이션 제어기(106)는 컴퓨팅 타일(110-1,..., 110-N)에 의해 수행되는 연산(예: 확장 메모리 연산)을 오케스트레이션하도록 구성된 ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 회로부 및/또는 로직의 다른 조합일 수 있다. 예를 들면, 오케스트레이션 제어기(106)는 데이터(예: 데이터 블록)에 확장된 메모리 연산을 수행하기 위해 수신된 데이터 블록에 대한 연산을 수행하는 컴퓨팅 타일(110-1,..., 110-N)을 제어하기 위한 회로부 및/또는 로직을 포함할 수 있다.
시스템(100)은 별도의 집적 회로 또는 호스트(102), 저장 제어기 (104), 오케스트레이션 제어기(106), 네트워크-온-칩(NoC)(108)을 포함할 수 있고, 및/또는 메모리 디바이스(116-1,..., 116-N)는 동일한 집적 회로 상에 있을 수 있다. 시스템(100)은, 예를 들면, 서버 시스템 및/또는 고성능 컴퓨팅(HPC) 시스템 및/또는 이의 일부분일 수 있다. 도 1에 도시된 예가 폰 노이만 아키텍처를 갖는 시스템을 예시하지만, 본 개시의 실시예는 종종 폰 노이만 아키텍처로와 관련된 하나 이상의 컴포넌트(예: CPU, ALU 등)를 포함하지 않을 수 있는 비-폰 노이만 아키텍처에서 구현될 수 있다.
오케스트레이션 제어기(106)는 메모리 디바이스(116-1,..., 116-N) 중 하나 이상으로부터 데이터 블록을 요청하고 컴퓨팅 타일(110-1,..., 110-N)이 데이터 블록에 연산(예: 확장된 메모리 연산)을 수행하도록 구성될 수 있다. 연산은 데이터 블록과 관련된 단일 어드레스 및 하나 이상의 피연산자에 의해 특정될 수 있는 함수를 평가하기 위해 수행될 수 있다. 오케스트레이션 제어기(106)는 하나 이상의 컴퓨팅 타일(110-1,..., 110-N)에 저장될 확장 메모리 연산의 결과를 호스트(102)로 및/또는 인터페이스(예: 통신 경로(103 및/또는 105))로 전송되게 하도록 추가로 구성될 수 있다.
일부 실시예에서, 오케스트레이션 제어기(106)는 복수의 컴퓨팅 타일(110) 중 하나일 수 있다. 예를 들면, 본 출원에서 오케스트레이션 제어기(106)는 도3과 관련하여 더 자세히 설명된 컴퓨팅 타일(110-1,..., 110-N)이 포함하는 동일하거나 유사한 회로부를 포함할 수 있다. 그러나 일부 실시예에서, 오케스트레이션 제어기(106)는 컴퓨팅 타일(110-1,..., 110-N)과 별개의 또는 별도의 컴포넌트일 수 있고, 따라서, 도 1에 도시된 컴퓨팅 타일(110)과 다른 회로부를 포함할 수 있다.
제어 NoC(108-1)는 오케스트레이션 제어기(106)와 컴퓨팅 타일(110-1,..., 110-N) 간의 통신을 허용하는 통신 서브시스템일 수 있다. 제어NoC(108)는 오케스트레이션 제어기(106)와 컴퓨팅 타일(110-1,..., 110-N) 간의 통신을 가능하게 하는 회로부 및/또는 로직을 포함할 수 있다. 일부 실시예에서, 제어 NoC(108-1)는 오케스트레이션 제어기(106)로부터 명령을 수신하여 메모리 디바이스(116)에 저장된 데이터 블록에 대해 연산을 수행할 수 있다.
일부 실시예에서, 제어 NoC(108-1)는 원격 명령을 요청하고, DMA 명령을 시작하고, 읽기/쓰기 위치를 전송하고/전송하거나 시작 기능 실행 명령을 오케스트레이션 제어기(106) 및/또는 복수의 컴퓨팅 디바이스(110) 중 하나로 전송할 수 있다. 일부 실시예에서, 제어 NoC(108-1)는 데이터 블록이 컴퓨팅 디바이스(110)의 버퍼로부터 메모리 제어기(112) 또는 메모리 디바이스(116)의 버퍼로 복사되도록 요청할 수 있다. 반대로 제어 NoC(108-1)는 데이터 블록이 미디어 제어기(112) 또는 메모리 디바이스(116)의 버퍼로부터 컴퓨팅 디바이스(110)의 버퍼로 복사되도록 요청할 수 있다. 제어 NoC(108-1)는 데이터 블록이 호스트(102)의 버퍼로부터 컴퓨팅 디바이스(110)로 복사되도록 요청할 수 있고, 그 반대로 데이터 블록이 컴퓨팅 디바이스(110)로부터 호스트(102)로 복사되도록 요청할 수 있다. 제어 NoC(108-1)는 데이터 블록이 메모리 제어기(112) 또는 메모리 디바이스(116)의 버퍼로부터 호스트(102)의 버퍼로 복사되도록 요청할 수 있다. 반대로 제어 NoC(108-1)는 데이터 블록이 호스트(102)의 버퍼로부터 메모리 제어기(112) 또는 메모리 장치(116)의 버퍼로 복사되도록 요청할 수 있다. 또한, 일부 실시예에서, 제어 NoC(108-1)는 호스트로부터의 명령이 컴퓨팅 타일(110)에서 실행되도록 요청할 수 있다. 제어 NoC(108-1)는 컴퓨팅 타일(110)로부터의 명령이 추가 컴퓨팅 타일(110)에서 실행되도록 요청할 수 있다. 제어 NoC(108-1)는 미디어 제어기(112)로부터의 명령이 컴퓨팅 타일(110)에서 실행되도록 요청할 수 있다. 일부 실시예에서, 도 3과 관련하여 더 상세하게 설명된 바와 같이, 본 출원에서 제어 NoC(108-1)는 오케스트레이션 제어기(106)의 적어도 일부를 포함할 수 있다. 예를 들면, 제어 NoC(108-1)는 오케스트레이션 제어기(106) 또는 그 일부를 포함하는 회로부를 포함할 수 있다.
일부 실시예에서, 데이터 NoC(108-2)는 컴퓨팅 타일(110)로부터 미디어 디바이스(116)로(미디어 제어기(112)를 통해) 데이터 블록(예: 데이터의 직접 메모리 액세스(DMA) 블록)을 전송할 수 있다. 또는, 그 반대로, 미디어 디바이스(116) 로부터 컴퓨팅 타일(110)로 데이터 블록을 전송할 수 있다. 데이터 NoC(108-2)는 데이터 블록(예: DMA 블록)을 컴퓨팅 타일(110)에서 호스트(102)로 또는 그 반대인 호스트(102)에서 컴퓨팅 타일(110)로 전송할 수 있다. 또한, 데이터 NoC(108-2)는 호스트(102)로부터 미디어 디바이스(116)로 또는 그 반대인 미디어 디바이스(116)로부터 호스트(102)로 데이터 블록(예: DMA 블록)을 전송할 수 있다. 일부 실시예에서, NoC(108-2)는 컴퓨팅 타일(110-1,..., 110-N)로부터 출력(예: 확장 메모리 연산이 수행된 데이터)을 수신할 수 있고, 컴퓨팅 타일(110-1,..., 110-N)로부터의 출력을 오케스트레이션 제어기(106) 및/또는 호스트(102)로 전송할 수 있고, 그리고 그 반대로 전송할 수 있다. 예를 들면, NoC(108-2)는 컴퓨팅 타일(110-1,..., 110-N)에 의한 확장 메모리 연산을 받은 데이터를 수신하고 확장 메모리 연산의 결과에 대응하는 데이터를 오케스트레이션 제어기(106) 및/또는 호스트(102)로 전송하도록 구성될 수 있다. 일부 실시예에서, 도 3과 관련하여 더 상세하게 설명된 바와 같이, 본 출원에서 NoC(108-2)는 오케스트레이션 제어기(106)의 적어도 일부를 포함할 수 있다. 예를 들면, NoC(108)는 오케스트레이션 제어기(106) 또는 그 일부를 포함하는 회로부를 포함할 수 있다.
제어 NoC(108-1)와 데이터 NoC(108-2)가 도 1에 도시되어 있지만, 실시예는 오케스트레이션 제어기(106)와 컴퓨팅 타일(110-1,..., 110-N) 간의 통신 경로를 제공하기 위한 제어 NoC(108-1)와 데이터 NoC(108-2)의 활용으로 제한되지 않는다. 예를 들면, 저장 제어기 크로스바(XBAR)와 같은 다른 통신 경로는 컴퓨팅 타일(110-1,..., 110-N) 및 오케스트레이션 제어기(106) 간의 통신을 가능하게 할 수 있다.
미디어 제어기(112)는 "표준" 또는 "덤(dumb)" 미디어 제어기일 수 있다. 예를 들면, 미디어 제어기(112)는 메모리 디바이스들(116-1,..., 116-N)에 대한 복사, 기록, 판독, 에러 정정 등과 같은 간단한 연산을 수행하도록 구성될 수 있다. 그러나 일부 실시예에서, 미디어 제어기(112)는 메모리 디바이스(1161,..., 116-N)와 관련된 데이터에 대한 처리(예: 데이터를 조작하기 위한 연산)를 수행하지 않는다. 예를 들면, 미디어 제어기(112)는 통신 경로(107-1,..., 107-N)를 통해 메모리 디바이스들(116-1,..., 116-N)로부터 데이터를 판독하거나 또는 메모리 디바이스로 데이터를 기록하기 위해 판독 및/또는 기록 연산이 수행되게 할 수 있지만, 미디어 제어기(112)는 메모리 디바이스들(116-1,..., 110-N)로부터 판독되거나 또는 기록된 데이터에 처리를 수행하지 않을 수 있다. 일부 실시예에서, 미디어 제어기(112)는 비휘발성 미디어 제어기일 수 있지만, 실시예는 이에 한정되지 않는다.
도 1의 실시예는 본 개시의 실시예들을 모호하게 하지 않기 위해 예시되지 않은 부가적인 회로부를 포함할 수 있다. 예를 들면, 저장 제어기(104)는 I/O 회로부를 통해 I/O 연결을 통해 제공된 어드레스 신호를 래치하기 위한 어드레스 회로부를 포함할 수 있다. 어드레스 신호는 메모리 디바이스(116-1,..., 116-N)에 액세스하기 위해 행 디코더 및 열 디코더에 의해 수신 및 디코딩될 수 있다. 어드레스 입력 접속의 수가 메모리 디바이스(116-1,..., 116-N)의 밀도 및 아키텍처에 의존할 수 있다는 것이 당업자에 의해 이해될 것이다.
일부 실시예에서, 확장 메모리 연산은 데이터(예: 파일)를 컴퓨팅 타일(110)에 선택적으로 저장하거나 매핑함으로써 도 1에 도시된 컴퓨팅 시스템(100)을 사용하여 수행될 수 있다. 데이터는 컴퓨팅 타일 메모리(예: 본 출원에서 도 5에 도시된 컴퓨팅 타일 메모리(538)의 블록(543-1)과 같은 부분에서)의 어드레스 공간에 선택적으로 저장될 수 있다. 일부 실시예에서, 데이터는 호스트(102) 및/또는 오케스트레이션 제어기(106)로부터 수신된 명령에 응답하여 컴퓨팅 타일(110)에 선택적으로 저장되거나 매핑될 수 있다. 명령이 호스트(102)로부터 수신된 실시예에서, 명령은 호스트(102)와 관련된 인터페이스(예: 통신 경로(103 및/또는 105))를 통해 그리고 제어 NoC(108-1)를 통해 컴퓨팅 타일(110)로 전송될 수 있다. 인터페이스(들) (103/105)는 PCIe(Peripheral Component Interconnect Express) 버스, DDR(Double Data Rate) 인터페이스 또는 다른 적절한 인터페이스나 버스일 수 있다. 그러나 실시예는 이에 한정되지 않고, 명령이 오케스트레이션 제어기(106)로부터 컴퓨팅 타일에 의해 수신되는 실시예에서, 명령은 오케스트레이션 제어기(106)로부터 직접 또는 제어 NoC(108)를 통해 전송될 수 있다.
데이터(예: 확장 메모리 연산의 수행에 사용될 데이터)가 컴퓨팅 타일(110)에 매핑되는 비제한적인 예에서, 컴퓨팅 타일(110)에 매핑된 데이터를 사용하여 확장 메모리 연산의 수행을 개시하기 위해 호스트 제어기(101)는 명령을 컴퓨팅 타일(110)로 전송할 수 있다. 일부 실시예에서, 호스트 제어기(101)는 컴퓨팅 타일(110)에 매핑된 데이터에 대응하는 어드레스(예: 물리적 어드레스)를 룩업하고, 해당 어드레스에 기초하여, 어느 컴퓨팅 타일(예: 컴퓨팅 타일(110-1))이 해당 어드레스(및 이에 따라 데이터)에 매핑되는지를 결정할 수 있다. 그런 다음 명령은 어드레스(및 그에 따른 데이터)를 포함하는 컴퓨팅 타일(예: 컴퓨팅 타일(110-1))로 전송될 수 있다.
일부 실시예에서, 데이터는 64비트 피연산자일 수 있지만, 실시예는 특정 크기 또는 길이를 갖는 피연산자로 한정되지 않는다. 데이터가 64비트 피연산자인 실시예에서, 일단 호스트 제어기(101)가 확장 메모리 연산의 수행을 개시하기 위한 명령을 데이터가 저장된 어드레스에 기초하여 정확한 컴퓨팅 타일(예: 컴퓨팅 타일(110-1))로 전송하면, 컴퓨팅 타일(예: 컴퓨팅 타일(110-1))은 데이터를 이용하여 확장 메모리 연산을 수행할 수 있다.
일부 실시예에서, 컴퓨팅 타일(110-1)은 연접한어드레스 공간에 걸쳐 개별적으로 어드레스 지정될 수 있으며, 이는 본 출원에 설명된 확장 메모리 연산의 수행을 가능하게 할 수 있다. 즉, 데이터가 저장되거나 데이터가 매핑되는 어드레스는 모든 컴퓨팅 타일(110)에 대해 고유하여 호스트 제어기(101)가 어드레스를 룩업할 때 특정 컴퓨팅 타일의 위치(예: 컴퓨팅 타일(110-1))에 대응할 수 있다.
예를 들면, 제1 컴퓨팅 타일(예: 컴퓨팅 타일(110-1))은 그와 관련된 제1 세트의 어드레스를 가질 수 있고, 제2 컴퓨팅 타일(예: 컴퓨팅 타일(110-2))은 그와 관련된 어드레스를 가질 수 있고, 제3 컴퓨팅 타일(예: 컴퓨팅 타일(110-3))은 그와 관련된 제3 세트의 어드레스를 가질 수 있으며 n번째 컴퓨팅 타일(예: 컴퓨팅 타일(110-N))을 통해, 이는 그와 관련된 n번째 세트의 어드레스를 가질 수 있다. 즉, 제1 컴퓨팅 타일(110-1)은 0000000 내지 0999999의 어드레스 세트를 가질 수 있고, 제2 컴퓨팅 타일(110-2)은 1000000 내지 1999999의 어드레스 세트를 가질 수 있고, 제3 컴퓨팅 타일(110-3)은 2000000 내지 2999999의 어드레스 세트를 가질 수 있다. 이들 어드레스 번호는 단지 예시적이며 비제한적이며 컴퓨팅 타일(110)의 아키텍처 및/또는 크기(예: 저장 용량)에 의존할 수 있다는 것을 이해할 것이다.
확장 메모리 연산이 부동 소수점 가산 누적 연산 (FLOATINGPOINT_ADD_ACCUMULATE)을 포함하는 비제한적인 예로서, 컴퓨팅 타일(110)은 목적지 어드레스를 부동 소수점 숫자로 취급할 수 있고, 부동 소수점 숫자를 컴퓨팅 타일(110)의 어드레스에 저장된인수에 추가하고 그 결과를 원래 어드레스에 다시 저장한다. 예를 들면, 호스트 제어기(101)(또는 오케스트레이션 제어기(106))가 부동 소수점 가산 누적 확장 메모리 연산의 수행을 개시할 때, 호스트가 룩업하는 컴퓨팅 타일(110)의 어드레스(예: 데이터가 매핑되는 컴퓨팅 타일의 어드레스)는 부동 소수점 숫자로 처리될 수 있고 어드레스에 저장된 데이터는 확장 메모리 연산 수행을 위한 피연산자로 처리될 수 있다. 확장 메모리 연산을 개시하기 위한 명령의 수신에 응답하여, 데이터(예: 이 예에서 피연산자)가 매핑된 컴퓨팅 타일(110)은 데이터를 어드레스(예: 어드레스의 숫자 값)에 추가하기 위해 추가 연산을 수행할 수 있고 추가 결과를 컴퓨팅 타일(110)의 원래 어드레스에 다시 저장한다.
위에서 설명된 바와 같이, 이러한 확장 메모리 연산의 수행은 일부 실시예에서 호스트(102)로부터(예: 호스트 제어기(101)로부터) 메모리 디바이스(104)로 또는 오케스트레이션 제어기(106)에서 컴퓨팅 타일(들)(110)로 전송될 단일 명령(예: 요청 명령)만을 필요로 할 수 있다. 일부 이전 접근 방식과 대조적으로, 이는 예를 들면, 다수의 명령이 인터페이스(들)(103, 105)를 횡단하고/횡단하거나 데이터가 예컨대, 피연산자가 컴퓨팅 타일(들)(110) 내의 한 어드레스에서 다른 어드레스로 이동되어 연산의 수행에 소모되는 시간의 양을 줄일 수 있다.
또한, 본 개시에 따른 확장 메모리 연산의 수행은 처리 파워의 양 또는 처리시간을 더욱 감소시킬 수 있는데 이는 연산 수행 전에 다른 위치에서 피연산자를 검색하고 로드해야 하는 접근 방식과 달리 확장 메모리 연산이 수행되는 컴퓨팅 타일(110)에 매핑된 데이터가 확장 메모리 연산을 위한 피연산자로 활용할 수 있고/있거나 데이터가 매핑되는 어드레스가 확장 메모리 연산에 대한 피연산자로 사용될 수 있기 때문이다. 즉, 적어도 본 출원의 실시예는 피연산자의 로딩이 스킵되는 것을 허용하기 때문에, 컴퓨팅 시스템 (100)의 성능은 피연산자를 로드하고 후속하여 피연산자 사이에서 수행된 연산의 결과를 저장하는 접근법과 비교하여 개선될 수 있다.
또한, 일부 실시예에서, 확장 메모리 연산이 어드레스와 그 어드레스에 저장된 데이터를 사용하여 컴퓨팅 타일(110) 내에서 수행될 수 있기 때문에, 그리고 일부 실시예에서, 확장 메모리 연산의 결과가 다시 원래 어드레스에 저장될 수 있기 때문에, 잠금 또는 뮤텍스(mutex) 연산은 확장 메모리 연산을 수행하는 동안 완화되거나 필요하지 않을 수 있다. 확장 메모리 연산의 수행 동안 스레드에 대한 잠금 또는 뮤텍스 연산의 수행을 감소 또는 제거하는 것은 컴퓨팅 시스템(100)의 성능을 향상시킬 수 있는데, 이는 확장 메모리 연산이 동일한 컴퓨팅 타일(110) 내에서 또는 둘 이상의 컴퓨팅 타일(110)에 걸쳐 병렬로 수행될 수 있기 때문이다.
일부 실시예에서, 컴퓨팅 타일(110)에서 데이터의 유효한 매핑은 베이스 어드레스, 세그먼트 크기 및/또는 길이를 포함할 수 있다. 베이스 어드레스는 데이터 매핑이 저장된 컴퓨팅 타일(110)의 어드레스에 대응할 수 있다. 세그먼트 크기는 컴퓨팅 시스템(100)이 처리할 수 있는 데이터의 양(예: 바이트 단위)에 대응할 수 있고, 길이는 데이터에 대응하는 비트의 양에 대응할 수 있다. 일부 실시예에서, 컴퓨팅 타일(들)(110)에 저장된 데이터는 호스트(102) 상에서 캐시 불가능(uncacheable)할 수 있다는 점에 유의한다. 예를 들면, 확장 메모리 연산은 확장 메모리 연산의 수행 동안 호스트(102)로 또는 호스트(102)로부터 데이터를 방해하거나 다른 식으로 전송하지 않고 컴퓨팅 타일(110)내에서 완전히 수행될 수 있다.
베이스 어드레스가 4096이고, 세그먼트 크기가 1024이고, 길이가 16,386인 비제한적인 예에서, 매핑된 어드레스(7234)는 복수의 컴퓨팅 타일(110) 중 제3 컴퓨팅 타일(예: 컴퓨팅 타일(110-3))에 대응할 수 있는 제3 세그먼트에 있을 수 있다. 이 예에서, 호스트(102), 오케스트레이션 제어기(106) 및/또는 제어 NoC(108-1)는 확장 메모리 연산을 수행하기 위한 명령(예: 요청)을 제3 컴퓨팅 타일(110-3)로 포워딩할 수 있다. 제3 컴퓨팅 타일(110-3)은 데이터가 제3 컴퓨팅 타일(110-3)의 메모리(예: 본 출원의 도 5 및 도 6에 도시된 컴퓨팅 타일 메모리(538, 638))의 매핑된 어드레스에 저장되어 있는지 여부를 결정할 수 있다. 매핑된 어드레스(예: 제3 컴퓨팅 타일(110-3)의 어드레스)에 데이터가 저장되어 있는 경우, 제3 컴퓨팅 타일(110-3)은 해당 데이터를 사용하여 요청된 확장 메모리 연산을 수행하고, 확장 메모리 연산의 결과를 데이터가 원래 저장된 어드레스로 다시 저장할 수 있다.
일부 실시예에서, 확장 메모리 연산의 수행을 위해 요청된 데이터를 포함하는 컴퓨팅 타일(110)은 호스트 제어기(101), 오케스트레이션 제어기(106) 및/또는 데이터 NoC(108-2)에 의해 결정될 수 있다. 예를 들면, 모든 컴퓨팅 타일(110)에 이용 가능한 전체 어드레스 공간의 부분이 각각의 컴퓨팅 타일(110)에 할당될 수 있다. 따라서, 호스트 제어기(101), 오케스트레이션 제어기(106) 및/또는 제어 NoC(108-1)와 데이터 NoC(108-2)는 전체 어드레스 공간의 어느 부분이 어떤 컴퓨팅 타일(110)에 대응하는지에 대응하는 정보를 제공받을 수 있고, 따라서 관련 컴퓨팅 타일(110)이 확장 메모리 연산을 수행하도록 지시할 수 있다. 일부 실시예에서, 호스트 제어기(101), 오케스트레이션 제어기(106) 및/또는 제어 NoC(108-1)와 데이터 NoC(108-2)는 테이블과 같은 데이터 구조의 개별 컴퓨팅 타일(110)에 대응하는 어드레스(또는 어드레스 범위)를 저장할 수 있고, 데이터 구조에 저장된 어드레스에 기초하여 컴퓨팅 타일(110)에 확장 메모리 연산의 수행을 지시할 수 있다.
그러나 실시예는 이에 제한되지 않으며 일부 실시예에서 호스트 제어기(101), 오케스트레이션 제어기(106) 및/또는 NoC(108)는 메모리 자원(들)(예: 본 출원의 도 5와 6에 도시된 각각의 컴퓨팅 타일 메모리(538, 638)의 크기(예: 데이터의 양)를 결정할 수 있고, 각각의 컴퓨팅 타일(110)과 관련된 메모리 자원(들)의 크기 및 모든 컴퓨팅 타일(110)에 이용 가능한 총 어드레스 공간에 기초하여, 어떤 컴퓨팅 타일(110)이 확장 메모리 연산의 수행에 사용될 데이터를 저장하는지를 결정할 수 있다. 호스트 제어기(101), 오케스트레이션 제어기(106) 및/또는 제어 NoC(108-1)와 데이터 NoC(108-2)가 모든 컴퓨팅 타일(110)에 사용 가능한 총 어드레스 공간 및 각각의 컴퓨팅 타일(110)에 사용 가능한 메모리 자원(들)의 양에 기초하여 확장메모리연산의 수행에 사용될 데이터를 저장하는 컴퓨팅 타일(110)을 결정하는 실시예에서, 컴퓨팅 타일 메모리 자원(들)의 중첩하지 않는 다수의 부분에 걸쳐 확장 메모리 연산을 수행하는 것이 가능할 수 있다.
위의 예를 계속하면, 요청된 어드레스에 데이터가 없으면, 제3 컴퓨팅 타일(110-3)은 본 출원에서 도 2~6과 관련하여 더 상세히 설명된 데이터를 요청할 수 있고, 데이터가 제3 컴퓨팅 타일(110-3)의 어드레스에 로딩되면 확장 메모리 연산을 수행할 수 있다. 일부 실시예에서, 확장 메모리 연산이 컴퓨팅 타일(예: 이 예에서 제3 컴퓨팅 타일(110-3))에 의해 완료되면, 오케스트레이션 제어기(106) 및/또는 호스트(102)에 통지될 수 있고/있거나 확장 메모리 연산의 결과는 오케스트레이션 제어기(106) 및/또는 호스트(102)로 전송될 수 있다.
일부 실시예에서, 미디어 제어기(112)는 오케스트레이션 제어기 (106) 또는 호스트(102)로부터의 요청에 응답하여 저장 제어기(104)에 결합된 메모리 디바이스(들)(116-1, ..., 116-N)에서 데이터 블록을 검색하도록 구성될 수 있다. 미디어 제어기는 후속하여 데이터 블록이 컴퓨팅 타일(110-1,..., 110-N) 및/또는 오케스트레이션 제어기(106)로 전송되게 할 수 있다.
유사하게, 미디어 제어기(112)는 컴퓨팅 타일(110) 및/또는 오케스트레이션 제어기(106)로부터 데이터 블록을 수신하도록 구성될 수 있다. 미디어제어기(112)는 후속하여 데이터 블록은 저장 제어기(104)에 결합된 메모리 디바이스(116)로 전송되게 할 수 있다.
데이터 블록은 크기가 대략 4킬로바이트일 수 있고(실시예는 이 특정 크기로 제한되지 않음), 오케스트레이션 제어기(106) 및/또는 호스트에 의해 생성된 하나 이상의 명령에 응답하여 컴퓨팅 타일(110-1,..., 110-N)에 의해 스트리밍 방식으로 처리되고 제어 NoC(108-1)를 통해 전송될 수 있다. 일부 실시예에서, 데이터 블록은 32비트, 64비트, 128비트 등의 워드 또는 데이터 청크일 수 있고/있거나 데이터 블록은 확장 메모리 연산의 수행에 사용되는 피연산자에 대응할 수 있다.
예를 들면, 도 5 및 도 6과 관련하여 더 자세히 설명된 바와 같이, 본 출원에서 컴퓨팅 타일(110)은 선행 데이터 블록에 대한 확장 메모리 연산의 수행 완료에 응답하여 제2 데이터 블록에 대한 확장 메모리 연산(예: 처리)을 수행할 수 있기 때문에, 데이터 블록은 컴퓨팅 타일(110)을 통해 연속적으로 스트리밍 될 수 있고 동시에 데이터 블록은 컴퓨팅 타일(110)에 의해 처리된다. 일부 실시예에서, 데이터 블록은 오케스트레이션 제어기(106) 및/또는 호스트(102)로부터의 개입 명령 없이 컴퓨팅 타일(110)을 통해 스트리밍 방식으로 처리될 수 있다. 즉, 일부 실시예에서, 오케스트레이션 제어기(106)(또는 호스트)는 컴퓨팅 타일(110)이 거기에 수신된 데이터 블록을 처리하게 하는 명령을 발행할 수 있고 컴퓨팅 타일(110)에 의해 후속하여 수신된 데이터 블록은 오케스트레이션 제어기(106)로부터 추가 명령 없이 처리될 수 있다.
일부 실시예에서, 데이터 블록을 처리하는 것은 데이터 블록을 사용하여 확장 메모리 연산을 수행하는 것을 포함할 수 있다. 예를 들면, 컴퓨팅 타일(110-1, ..., 116-N)은 오케스트레이션 제어기(106)로부터의 명령에 응답하여 데이터 블록에 확장 메모리 연산을 수행하여 하나 이상의 기능을 평가하여, 원치 않는 데이터를 제거하거나, 관련 데이터를 추출하거나, 다른 식으로 확장 메모리 연산의 수행과 관련하여 데이터 블록을 사용할 수 있다.
데이터(예: 확장 메모리 연산의 수행에 사용될 데이터)가 컴퓨팅 타일(110) 중 하나 이상에 매핑되는 비제한적인 예에서, 오케스트레이션 제어기(106)는 컴퓨팅 타일(들)(110) 내에 매핑된 데이터를 사용하여 확장 메모리 연산의 수행을 개시하기 위해 컴퓨팅 타일(106)에 명령을 전송할 수 있다. 일부 실시예에서, 오케스트레이션 제어기(106)는 컴퓨팅 타일(들)(110)에 매핑된 데이터에 대응하는 어드레스(예: 물리적 어드레스)를 룩업할 수 있고, 해당 어드레스에 기초하여 어느 컴퓨팅 타일(예: 컴퓨팅 타일(110-1))이 어드레스(및 이에 따라 데이터)에 매핑되는지를 결정할 수 있다. 그런 다음, 명령은 어드레스(및 그에 따른 데이터)를 포함하는 컴퓨팅 타일(예: 컴퓨팅 타일(110-1))로 전송될 수 있다. 일부 실시예에서, 명령은 제어 NoC(208-1)를 통해 컴퓨팅 타일(예: 컴퓨팅 타일(110-1))로 전송될 수 있다.
오케스트레이션 제어기(106) 또는 호스트는 데이터 블록을 사용하여 확장 메모리 연산을 수행하는 데 사용하기 위해 컴퓨팅 타일(110)에 이용 가능한 자원을 할당 및/또는 할당 해제하기 위해 컴퓨팅 타일(110)에 명령을 전송하도록 추가로 구성될 수 있다. 일부 실시예에서, 컴퓨팅 타일(110)에 이용 가능한 리소스를 할당 및/또는 할당 해제하는 것은 컴퓨팅 타일(110)의 일부를 선택적으로 활성화하면서 컴퓨팅 타일(110) 중 일부를 선택적으로 비활성화하는 것을 포함할 수 있다. 예를 들면, 데이터 블록을 처리하는 데 필요한 컴퓨팅 타일(110)의 총 수 미만인 경우, 오케스트레이션 제어기(106)는 원하는 컴퓨팅 타일(110)만이 데이터 블록을 처리할 수 있도록 하기 위해 데이터 블록을 처리하는 데 사용되는 컴퓨팅 타일(110)에 명령을 송신할 수 있다.
오케스트레이션 제어기(106)는, 일부 실시예에서, 컴퓨팅 타일(110)에 의해 수행된 연산 예컨대, 확장 메모리 연산의 수행을 동기화하기 위한 명령을 송신하도록 추가로 구성될 수 있다. 예를 들면, 오케스트레이션 제어기(106)(및/또는 호스트)는 제1 컴퓨팅 타일(110-1)이 제1 확장 메모리 연산을 수행하게 하기 위해 명령을 제1 컴퓨팅 타일(110-1)로 송신할 수 있고, 오케스트레이션 제어기(106)(또는 호스트)는 제2 컴퓨팅 타일을 사용하여 제2 확장 메모리 연산을 수행하게 하기 위해 제2 컴퓨팅 타일(110-2)에 명령을 송신할 수 있다. 오케스트레이션 제어기(106)에 의한 컴퓨팅 타일(110)에 의해 수행되는 연산, 예컨대, 확장 메모리 연산 수행의 동기화는 컴퓨팅 타일(110)이 특정 시간에 또는 특정 순서로 특정 연산을 수행하게 하는 것을 더 포함할 수 있다.
위에서 설명된 바와 같이, 확장 메모리 연산의 수행으로 인한 데이터는 확장 메모리 연산 수행 이전에 데이터가 저장된 컴퓨팅 타일(110)의 원래 어드레스에 저장될 수 있지만, 일부 실시예에서, 확장 메모리 연산의 수행으로 인한 데이터 블록은 확장 메모리 연산 수행에 이어 로직 레코드로 변환될 수 있다. 로직 레코드는 물리적 위치에 독립적인 데이터 레코드를 포함할 수 있다. 예를 들면, 로직 레코드는 확장 메모리 연산의 수행에 대응하는 물리적 데이터가 저장되는 컴퓨팅 타일(110) 중 적어도 하나의 어드레스(예: 위치)를 가리키는 데이터 레코드일 수 있다.
도 5 및 도 6과 관련하여 더 상세히 설명된 바와 같이, 본 출원에서 확장 메모리 연산의 결과는 확장 메모리 연산의 수행 이전에 데이터가 저장되는 어드레스와 동일한 컴퓨팅 타일 메모리(예: 도 5에 도시된 컴퓨팅 타일 메모리(538) 또는 도 6에 도시된 컴퓨팅 타일 메모리(638))의 어드레스에 저장될 수 있다. 그러나 실시예는 이에 제한되지 않으며, 확장 메모리 연산의 결과는 확장 메모리 연산의 수행 이전에 데이터가 저장된 어드레스와 동일한 컴퓨팅 타일 메모리의 어드레스에 저장될 수 있다. 일부 실시예에서, 로직 레코드는 확장 메모리 연산의 결과(들)가 컴퓨팅 타일(110)로부터 액세스될 수 있고 컴퓨팅 타일(110) 외부의 회로부로(예: 호스트로) 전송될 수 있도록 이러한 어드레스 위치를 가리킬 수 있다.
일부 실시예에서, 오케스트레이션 제어기(106)는 데이터 블록을 미디어 제어기(112)로부터 직접 수신하고/수신하거나 미디어 제어기로 직접 송신할 수 있다. 이것은 오케스트레이션 제어기(106)가 미디어 제어기(112)로 및 미디어 제어기로부터 컴퓨팅 타일(110)에 의해 처리되지 않은(예: 확장 메모리 연산의수행에 사용되지 않은 데이터 블록) 데이터 블록을 전송하는 것을 허용할 수 있다.
예를 들면, 오케스트레이션 제어기(106)가 저장 제어기(104)에 결합된 메모리 디바이스(들)에 의해 저장될 저장 제어기(104)에 결합된 호스트(102)) 로부터 처리되지 않은 데이터 블록을 수신하면, 오케스트레이션 제어기(106)는 처리되지 않은 데이터 블록이 미디어 제어기(112)로 전송되게 하고, 이는 결국 처리되지 않은 데이터 블록이 저장 제어기(204)에 결합된 메모리 디바이스(들)로 전송되게 한다.
유사하게, 호스트가 처리되지 않은(예: 전체) 데이터 블록(예: 컴퓨팅 타일(110)에 의해 처리되지 않은 데이터 블록)을 요청하는 경우, 미디어 제어기(112)는 처리되지 않은 데이터 블록을 오케스트레이션 제어기(106)로 전송되게 하고, 이는 후속하여 처리되지 않은 데이터 블록을 호스트로 전송할 수 있다.
도 2 내지 도 4는 본 개시의 다수 실시예에 따른 저장 제어기(204, 304, 404)를 포함하는 장치 형태의 기능 블록도의 다양한 예를 도시한다. 도 2 내지 도 4에서, 미디어 제어기(212, 312, 412)는 복수의 컴퓨팅 타일(210, 310, 410), 제어 NoC (208-1, 308-1, 408-1) 및 입력/출력(I/O) 버퍼(222, 322, 422)와 통신하는 오케스트레이션 제어기(206, 306, 406)와 통신한다. 비록 여덟(8) 개별 컴퓨팅 타일(210, 310, 410)이 도 2 내지 도 4에 도시되어 있지만, 실시예는 여덟 개별 컴퓨팅 타일(210, 310, 410)을 포함하는 저장 제어기(404)로 한정되지 않는다는 것을 이해할 것이다. 예를 들면, 저장 제어기(204, 304, 404)는 저장 제어기(204, 304, 404) 및/또는 저장 제어기(204, 304, 404)가 배치되는 전체 시스템의 특성에 따라 하나 이상의 컴퓨팅 타일(210, 310, 410)을 포함할 수 있다.
도 2 내지 도 4에 도시된 바와 같이, 미디어 제어기(212, 312, 412)는 직접 메모리 액세스(DMA) 컴포넌트(218, 318, 418) 및 DMA 통신 서브시스템(219. 319, 419)을 포함할 수 있다. DMA(218, 318, 418)는 미디어 제어기(418)와 도 1에 도시된 호스트(102)와 같은 호스트의 중앙 프로세싱 유닛과 무관하게 저장 제어기(204, 304, 404)에 결합된 메모리 디바이스(들)(예: 도 1에 도시된 메모리 디바이스(116-1,..., 116-N) 사이의 통신을 용이하게 할 수 있다. DMA 통신 서브시스템(219, 319, 419)은 크로스바(crossbar)("XBAR"), 네트워크 온 칩 또는 미디어 제어기(212, 312, 412), 저장 제어기(204, 304, 404)에 결합된 저장 장치(들) 및/또는 컴퓨팅 타일(210, 310, 410) 사이의 상호 연결 및 상호 운용성을 허용하는 다른 통신 서브시스템과 같은 통신 서브시스템일 수 있다.
일부 실시예에서, 제어 NoC(208-1, 308-1, 408-1)는 컴퓨팅 타일 (210, 310, 410)의 개별 어드레스 공간 사이의 가시성을 용이하게 할 수 있다. 예를 들면, 각각의 컴퓨팅 타일(210, 310, 410)은 데이터 및/또는 파일의 수신에 응답하여 데이터를 컴퓨팅 타일(210, 310, 410)의 메모리 자원(예: 본 출원의 도 5 및 도 6에 도시된 컴퓨팅 타일 메모리(548) 또는 컴퓨팅 타일 메모리(638))에 저장할 수 있다. 컴퓨팅 타일(210, 310, 410)은 데이터가 저장된 컴퓨팅 타일(210, 310, 410) 메모리 자원의 위치에 대응하는 어드레스(예: 물리적 어드레스)를 연관시킬 수 있다. 추가하여, 컴퓨팅 타일(210, 310, 410)은 데이터와 관련된 어드레스를 로직 블록 내로 파싱(예: 분열(break))할 수 있다.
일부 실시예에서, 데이터와 관련된 0(제로)번째 로직 블록은 프로세싱 디바이스(예: 본 출원에서 도 5 및 도 6에 도시된 RISC(Reduced Instruction Set Computing) 디바이스(536) 또는 RISC 디바이스(636))로 전송될 수 있다. 특정 컴퓨팅 타일(예: 컴퓨팅 타일(210-2, 310-2, 410-2))은 로직 어드레스의 특정 세트가 해당 컴퓨팅 타일(210-2, 310-2, 410-2)에 액세스 가능하다는 것을 인식하도록 구성될 수 있는 반면, 다른 컴퓨팅 타일(예: 컴퓨팅 타일(210-3, 210-4, 310-3, 310-4, 410-3, 410-4) 각각 등)은 로직 어드레스의 상이한 세트가 해당 컴퓨팅 타일(210, 310, 410)에 액세스 가능하다는 것을 인식하도록 구성될 수 있다. 대안으로 말하면, 제1 컴퓨팅 타일(예: 컴퓨팅 타일(210-2, 310-2, 410-2))은 컴퓨팅 타일(210-2, 310-2, 410-2)과 관련된 로직 어드레스의 제1 세트에 액세스할 수 있고, 제2 컴퓨팅 타일(예: 컴퓨팅 타일(2103, 310-3, 410-3))은 이와 관련된 로직 어드레스의 제2 세트 등에 액세스할 수 있다.
로직 어드레스의 제2 세트(예: 제2 컴퓨팅 타일(210-3, 310-3, 410-3)에 의해 액세스 가능한 로직 어드레스)에 대응하는 데이터가 제1 컴퓨팅 타일(예: 컴퓨팅 타일(210-2, 310-2, 410-2))에서 요청되면, 제어 NoC(208-1, 308-1, 408-1)는 제1 컴퓨팅 타일(예: 컴퓨팅 타일(210-2, 310-2, 410-2))과 제2 컴퓨팅 타일(예: 컴퓨팅 타일(210-3, 310-3, 410-3)) 사이의 통신을 가능하게 하여 제1 컴퓨팅 타일(예: 컴퓨팅 타일(210-2, 310-2, 410-2))이 제2 로직 어드레스 세트(예: 제2 컴퓨팅 타일(210-3, 310-3, 410-3)에 의해 액세스 가능한 로직 어드레스 세트)에 대응하는 데이터에 액세스하는 것을 허용한다. 즉, 제어 NoC(208-1, 308-1, 408-1)는 컴퓨팅 타일(210, 310, 410)의 어드레스 공간이 서로에게 가시적이도록 하기 위해 컴퓨팅 타일(210, 310, 410) 사이의 통신을 각각 용이하게 할 수 있다.
일부 실시예에서, 어드레스 가시성을 가능하게 하기 위한 컴퓨팅 타일(210, 310, 410) 간의 통신은 제2 로직 어드레스 세트에 대응하는 데이터에 대해 액세스를 요청하는 메시지를 제1 컴퓨팅 타일(예: 컴퓨팅 타일(210-1, 310-1, 410-1))의 이벤트 큐(예: 도 5 및 도 6에 도시된 이벤트 큐(532 및 632))에 의해 수신하는 단계, 요청된 데이터를 제1 컴퓨팅 타일의 메모리 자원(예: 본 출원의 도 5 및 6에 도시된 컴퓨팅 타일 메모리(538 및 638))에 로딩하는 단계, 요청된 데이터를 전송 데이터를 메시지 버퍼(예: 본 출원에서 도 5 및 도 6에 도시된 메시지 버퍼(534 및 634))로 전송하는 단계를 포함할 수 있다. 데이터가 메시지 버퍼에 의해 버퍼링되면 데이터는 데이터 NoC(208-2, 308-2, 408-2)를 통해 제2 컴퓨팅 타일(예: 컴퓨팅 타일(210-2, 310-2, 410-2))로 전송될 수 있다.
예를 들면, 확장 메모리 연산의 수행 동안, 오케스트레이션 제어기(206, 306, 406) 및/또는 제1 컴퓨팅 타일(예: 컴퓨팅 타일(210-1, 310-1, 410-1))은 호스트 명령(예: 도 1에 도시된 호스트(102)와 같은 호스트에 의해 생성된 확장 메모리 연산의 성능을 개시하기 위한 명령)에 의해 지정된 어드레스가 복수의 컴퓨팅 타일(210, 310, 410) 중 제2 컴퓨팅 타일(예: 컴퓨팅 타일(210-2, 310-2, 410-2))의 메모리 자원 내의 위치에 대응하는지를 결정할 수 있다. 이 경우, 컴퓨팅 타일 명령이 생성되어 오케스트레이션 제어기(206, 306, 406) 및/또는 제1 컴퓨팅 타일(210-1, 310-1, 410-1)로부터 제2 컴퓨팅 타일(210-2, 310-2, 410-2)로 송신되어 컴퓨팅 타일 명령에 의해 지정된 어드레스에서 제2 컴퓨팅 타일(210-2, 310-2, 410-2)의 메모리 자원에 저장된 피연산자를 사용하여 확장 메모리 연산의 성능을 개시할 수 있다.
컴퓨팅 타일 명령의 수신에 응답하여, 제2 컴퓨팅 타일(210-2, 310-2, 410-2)은 컴퓨팅 타일 명령에 의해 지정된 어드레스에서 제2 컴퓨팅 타일 (210-2, 310-2, 410-2)의 메모리 자원에 저장된 피연산자를 사용하여 확장 메모리 연산을 수행할 수 있다. 이것은 호스트와 저장 제어기 및/또는 컴퓨팅 타일(210, 310, 410) 사이의 명령 트래픽을 감소시킬 수 있는데, 이는 호스트가 확장 메모리 연산의 수행을 유발하기 위해 추가 명령을 생성할 필요가 없기 때문이며, 이는 예를 들면 호스트와의 명령 전송과 관련된 시간을 줄임으로써 컴퓨팅 시스템의 전체 성능을 증가시킬 수 있다.
일부 실시예에서, 오케스트레이션 제어기(206, 306, 406)는 확장 메모리 연산을 수행하는 것이 다수의 서브 연산을 수행하는 것을 포함할 수 있는 것을 결정할 수 있다. 예를 들면, 확장 메모리 연산은 전체 확장 메모리 연산을 수행하는 일부로 수행될 수 있는 2개 이상의 서브 연산으로 파싱되거나 분열될 수 있다. 이 경우, 오케스트레이션 제어기(206, 306, 406 및/또는 제어 NoC(208-1, 308-1, 408-1)는 다양한 컴퓨팅 타일(210, 310, 410)에 의한 서브 연산의 수행을 가능하게 하기 위해 위에서 설명된 어드레스 가시성(address visibility)을 활용할 수 있다. 서브 연산의 완료에 응답하여, 오케스트레이션 제어기(206, 306, 406)는 확장 메모리 연산의 결과에 대응하는 단일 결과로 서브 연산의 결과를 통합되게 할 수 있다.
다른 실시예에서, 컴퓨팅 타일(210, 310, 410)에 저장된 데이터를 요청하는 애플리케이션은 어떤 컴퓨팅 타일(210, 310, 410)이 요청된 데이터를 포함하는지 알 수 있다(예: 대응하는 정보가 제공될 수 있다). 이 예에서, 애플리케이션은 관련 컴퓨팅 타일(210, 310, 410)로부터 데이터를 요청할 수 있고/있거나 어드레스는 다수의 컴퓨팅 타일(210, 310, 410)에 로드될 수 있고 데이터 NoC(208-2, 308-2, 408-2)를 통해 데이터를 요청하는 애플리케이션에 의해 액세스될 수 있다.
도 2에 도시된 바와 같이, 오케스트레이션 제어기(206)는 제어 NoC(208-1)와 데이터 NoC(208-2)로부터 물리적으로 분리된 개별 회로부를 포함한다. 제어 및 데이터 NoC(208-1, 208-2)는 각각 컴퓨팅 타일(210), 미디어 제어기(212) 및/또는 오케스트레이션 제어기(206) 간의 통신을 허용하는 하나 이상의 집적 회로로서 제공되는 통신 서브시스템일 수 있다. 제어 NoC(208-1) 및/또는 데이터 NoC(208-2)의 비제한적인 예는 오케스트레이션 제어기(206), 컴퓨팅 타일(210) 및/또는 미디어 제어기(212)의 상호 연결 및/또는 상호 운용성을 허용하는 XBAR 또는 다른 통신 서브시스템을 포함할 수 있다.
전술한 바와 같이, 오케스트레이션 제어기(206), 제어 NoC(208-1), 데이터 NoC(208-2) 및/또는 호스트(예: 도 1에 도시된 호스트(102))에 의해 생성된 명령의 수신에 응답하여, 컴퓨팅 타일(210)을 통해 스트리밍되는 데이터 블록으로부터 및/또는 컴퓨팅 타일(210)에 저장된 데이터를 이용한 확장 메모리 연산의 수행이 실현될 수 있다.
도 3에 도시된 바와 같이, 오케스트레이션 제어기(406)는 복수의 컴퓨팅 타일(410-1,..., 410-8) 중 하나의 컴퓨팅 타일(410-1)에 상주한다. 본 출원에 사용된 용어 "에 상주(resident on)"는 특정 컴포넌트에 물리적으로 위치한 것을 말한다. 예를 들면, 오케스트레이션 제어기(306)가 컴퓨팅 타일(310) 중 하나에 "상주"한다는 것은 오케스트레이션 제어기(306)가 특정 컴퓨팅 타일에 물리적으로 결합되는 조건을 지칭한다. "상주"라는 용어는 본 출원에서 "배치된" 또는 "위치한"과 같은 다른 용어와 상호 교환적으로 사용될 수 있다.
전술한 바와 같이, 컴퓨팅 타일(310-1)/오케스트레이션 제어기(306), 제어 NoC(308-1), 데이터 NoC(308-2) 및/또는 호스트에 의해 생성된 명령의 수신에 응답하여, 컴퓨팅 타일(310)을 통해 스트리밍되는 데이터 블록으로부터 및/또는 컴퓨팅 타일(310)에 저장된 데이터를 이용한 확장 메모리 연산의 수행이 실현될 수 있다.
도 4에 도시된 바와 같이, 오케스트레이션 제어기(406)는 제어 NoC(408-1)와 데이터 NoC(408-2)에 상주한다. 일부 실시예에서, 오케스트레이션 제어기(406)를 제어 NoC(408-1) 및/또는 데이터 NoC(408-2) 모두의 일부로서 제공하는 것은 오케스트레이션 제어기(406)와 제어 및 데이터 NoC(408-1, 408-2) 각각의 긴밀한 결합을 초래하고, 이는 오케스트레이션 제어기(406)를 사용하여 확장 메모리 연산을 수행하는데 소요되는 시간을 줄일 수 있다. 제어 NoC(408-1) 및 데이터 NoC(408-2) 각각에 오케스트레이션 제어기(406-1, 406-2)를 갖는 것으로 도시되어 있지만, 실시예는 이에 제한되지 않는다. 예로서, 오케스트레이션 제어기(406-1)는 제어 NoC(408-1)에만 있고 데이터 NoC(408-2)에는 없을 수 있다. 반대로 오케스트레이션 제어기(406-2)는 데이터 NoC(408-2)에만 있고 제어 NoC(408-1)에는 없을 수 있다. 또한, 제어 NoC(408-1) 상의 오케스트레이션 제어기(406-1) 및 데이터 NoC(408-2) 상의 오케스트레이션 제어기(406-2)가 있을 수 있다.
전술한 바와 같이, 오케스트레이션 제어기(406), 제어 NoC(408-1), 데이터 NoC(408-2) 및/또는 호스트에 의해 생성된 명령의 수신에 응답하여, 컴퓨팅 타일(410)을 통해 스트리밍되는 데이터 블록으로부터 및/또는 컴퓨팅 타일(410)에 저장된 데이터를 이용하여 확장 메모리 연산의 수행이 실현될 수 있다.
도 5는 본 개시의 다수의 실시예에 따른 컴퓨팅 타일(510) 형태의 블록도이다. 도 5에 도시된 바와 같이, 컴퓨팅 타일(510)은 큐잉 회로부(queueing circuitry)를 포함할 수 있고, 이는 시스템 이벤트 큐(530) 및/또는 이벤트 큐(532) 및 메시지 버퍼(534)(예: 아웃바운드 버퍼링 회로부(outbound buffering circuitry))를 포함할 수 있다. 컴퓨팅 타일(510)은 RISC(Reduced Instruction Set Computing) 디바이스(536), 컴퓨팅 타일 메모리(538) 부분 및 직접 메모리 액세스 버퍼(539)(예: 인바운드 버퍼링 회로부(inbound buffering circuitry))와 같은 프로세싱 디바이스(예: 프로세싱 유닛)를 더 포함할 수 있다. RISC 디바이스(536)는 RISC-V ISA와 같은 축소된 명령 세트 아키텍처(ISA)를 사용할 수 있는 처리 자원일 수 있지만, 실시예는 RISC-V ISA에 한정되지 않고, 다른 프로세싱 디바이스 및/또는 ISA가 사용될 수 있다. RISC 디바이스(536)는 단순화를 위해 "프로세싱 유닛"으로 지칭될 수 있다. 일부 실시예에서, 도 5에 도시된 컴퓨팅 타일(510)은 오케스트레이션 제어기(예: 본 출원에서 도 1~4에 도시된 오케스트레이션 제어기(106, 206, 306, 406))로서 기능할 수 있다.
시스템 이벤트 큐(530), 이벤트 큐(532) 및 메시지 버퍼(534)는 각각 도 1~4에 도시된 오케스트레이션 제어기(106, 206, 306, 406)와 같은 오케스트레이션 제어기와 통신할 수 있다. 일부 실시예에서, 시스템 이벤트 큐(530), 이벤트 큐(532) 및 메시지 버퍼(534)는 오케스트레이션 제어기와 직접 통신할 수 있거나, 시스템 이벤트 큐(530), 이벤트 큐(532) 및 메시지 버퍼(534)는 오케스트레이션 제어기 및/또는 호스트 예컨대, 도 1에 도시된 호스트(102)와 추가로 통신할 수 있는 도 1~4에 각각 도시된 제어 NoC(108-1, 208-1, 308-1, 408-1) 및/또는 데이터 NoC(108-2, 208-2, 308-2, 408-2)와 같은 네트워크 온 칩과 통신할 수 있다.
시스템 이벤트 큐(530), 이벤트 큐(532) 및 메시지 버퍼(534)는 오케스트레이션 제어기 및/또는 호스트로부터 메시지 및/또는 명령을 수신할 수 있고/있거나 메시지 및/또는 명령을 오케스트레이션 제어기 및/또는 호스트로 제어 NoC 및/또는 데이터 NoC를 통해 송신하여, 컴퓨팅 타일(510)의 연산을 제어하여 컴퓨팅 타일(510)에 의해 저장된 데이터에 대해 확장 메모리 연산을 수행할 수 있다. 일부 실시예에서, 명령 및/또는 메시지는 확장 메모리 연산의 수행 동안 컴퓨팅 타일(510)에 이용 가능한 자원을 할당 또는 할당 해제하기 위한 메시지 및/또는 명령을 포함할 수 있다. 또한, 명령 및/또는 메시지는 컴퓨팅 타일(510)의 연산을 저장 제어기(예: 개별적으로 도 1~4에 도시된 저장 제어기(104, 204, 304, 404)에 배치된 다른 컴퓨팅 타일과 동기화하기 위한 명령 및/또는 메시지를 포함할 수 있다.
예를 들면, 시스템 이벤트 큐(530), 이벤트 큐(532) 및 메시지 버퍼(534)는 컴퓨팅 타일(510), 오케스트레이션 제어기 및/또는 호스트 사이의 통신을 가능하게 하여 컴퓨팅 타일(510)이 컴퓨팅 타일(538)에 저장된 데이터를 이용하여 확장 메모리 연산을 수행하게 할 수 있다. 비제한적인 예에서, 시스템 이벤트 큐(530), 이벤트 큐(532) 및 메시지 버퍼(534)는 오케스트레이션 제어기 및/또는 호스트로부터 수신된 명령 및/또는 메시지를 처리하여 컴퓨팅 타일(510)이 데이터가 저장된 컴퓨팅 타일 메모리(538) 내의 물리적 어드레스에 대응하는 어드레스 및/또는 저장된 데이터에 대해 확장 메모리 연산을 수행하게 한다. 이것은 데이터가 오케스트레이션 제어기, 제어 NoC, 데이터 NoC 또는 호스트(예: 본 출원의 도 1에 도시된 호스트(102)와 같은 컴퓨팅 타일(510) 외부의 회로부로 전송되기 전에 컴퓨팅 타일 메모리(538)에 저장된 데이터를 사용하여 확장 메모리 연산을 수행되는 것을 허용할 수 있다.
시스템 이벤트 큐(530)는 오케스트레이션 제어기 또는 제어 NoC로부터 인터럽트 메시지(interrupt message)를 수신할 수 있다. 인터럽트 메시지는 시스템 이벤트 큐(532)에 의해 처리되어 오케스트레이션 제어기, 호스트 또는 제어 NoC로부터 송신된 명령 또는 메시지가 즉시 실행되도록 할 수 있다. 예를 들면, 인터럽트 메시지(들)는 시스템 이벤트 큐(532)에 명령하여 컴퓨팅 타일(510)이 계류 중인 명령 또는 메시지의 연산을 중단하고 대신 오케스트레이션 제어기, 호스트 또는 제어 NoC로부터 수신된 새로운 명령 또는 메시지를 실행하게 할 수 있다. 일부 실시예에서, 새로운 명령 또는 메시지는 컴퓨팅 타일 메모리(538)에 저장된 데이터를 사용하여 확장 메모리 연산을 개시하기 위한 명령 또는 메시지를 포함할 수 있다.
이벤트 큐(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에 도시된 호스트(102))에 의해 생성된 메시지 및/또는 명령에 응답하여, 메모리 디바이스(들)로부터 검색될 수 있고, 컴퓨팅 타일 메모리(538)에 저장될 수 있다. 일부 실시예에서, 명령 및/또는 메시지는 개별적으로 도 1~4에 도시된 미디어 제어기(112, 212, 312, 412)와 같은 미디어 제어기에 의해 처리될 수 있다. 데이터가 컴퓨팅 타일(510)에 의해 수신되면, 이들은 DMA 버퍼(539)에 의해 버퍼링되고 후속하여 컴퓨팅 타일 메모리(538)에 저장될 수 있다.
그 결과, 일부 실시예에서, 컴퓨팅 타일(510)은 메모리 디바이스(들)로부터 수신된 데이터에 대해 연산의 데이터 구동 수행을 제공할 수 있다. 예를 들면, 컴퓨팅 타일(510)은 데이터의 수신에 대한 응답으로 메모리 디바이스(들)로부터 수신된 데이터에 대한 연산(예: 확장 메모리 연산 등)을 수행하기 시작할 수 있다.
예를 들면, 메모리 디바이스(들)에서 컴퓨팅 타일(510)로의 데이터 전송의 비결정적 특성 때문에(예: 데이터를 컴퓨팅 타일(510)로 전송하기 전에 일부 데이터가 미디어 제어기에 의해 수행되는 에러 정정 연산 등 에러 정정을 위해 컴퓨팅 타일(510)에 도달하는데 더 오래 걸릴 수 있기 때문에), 데이터에 대한 연산의 데이터 구동 수행은 데이터 구동 방식에서 기능하지 않는 접근 방식과 비교하여 컴퓨팅 성능을 향상시킬 수 있다.
일부 실시예에서, 오케스트레이션 제어기는 컴퓨팅 타일(510)의 시스템 이벤트 큐(530)에 의해 수신된 명령 또는 메시지를 송신할 수 있다. 상기에서 설명된 바와 같이, 명령 또는 메시지는 데이터를 요청하고 데이터에 대해 확장된 메모리 연산을 수행하도록 컴퓨팅 타일(510)에 지시하는 인터럽트일 수 있다. 그러나 데이터는 메모리 디바이스(들)에서 컴퓨팅 타일(510)로의 데이터 전송의 비결정적 특성으로 인해 메모리 디바이스에서 컴퓨팅 타일(510)로 즉시 송신될 준비가 되지 않을 수 있다. 그러나 데이터가 컴퓨팅 타일(510)에 의해 수신되면, 컴퓨팅 타일(510)은 데이터를 사용하여 확장 메모리 연산을 즉시 수행하기 시작할 수 있다. 다르게 말하면, 컴퓨팅 타일(510)은 외부 회로부, 예컨대 호스트로부터의 확장 메모리 연산의 수행을 야기하기 위한 추가 명령 또는 메시지를 요구하지 않고 데이터의 수신에 응답하여 데이터에 대해 확장된 메모리 연산을 수행을 시작할 수 있다.
일부 실시예에서, 확장 메모리 연산은 요청된 확장 메모리 연산을 수행하기 위해 컴퓨팅 타일 메모리(538)에서 데이터를 선택적으로 이동시킴으로써 수행될 수 있다. 부동 소수점 가산 누적 확장 메모리 연산의 수행이 요청되는 비제한적인 예에서, 확장 메모리 연산의 수행에서 피연산자로서 사용될 데이터가 해당 데이터에 추가될 수 있는 컴퓨팅 타일 메모리(538)의 어드레스 및 부동 소수점 가산 누적 연산의 결과는 부동 소수점 가산 누적 확장 메모리 연산의 수행 전에 데이터가 저장된 컴퓨팅 타일 메모리(538)의 어드레스에 저장될 수 있다. 일부 실시예에서, RISC 디바이스(536)는 확장 메모리 연산의 수행을 야기하는 명령을 실행할 수 있다.
확장 메모리 연산의 결과가 메시지 버퍼(534)로 전송될 때, 후속 데이터는 DMA 버퍼(539)로부터 컴퓨팅 타일 메모리(538)로 전송될 수 있고, 후속 데이터를 사용하는 확장 메모리 연산은 컴퓨팅 타일 메모리(538)에서 개시될 수 있다. 선행 데이터를 사용하여 확장 메모리 연산이 완료되기 전에 컴퓨팅 타일(510)에 버퍼링된 후속 데이터를 가짐으로써, 데이터는 오케스트레이션 제어기 또는 호스트로부터의 추가 명령이나 메시지가 없을 때 컴퓨팅 타일을 통해 계속 스트리밍되어 후속 데이터에 대한 확장 메모리 연산을 개시할 수 있다. 또한, 후속 데이터를 DMA 버퍼(539)에 선제적으로 버퍼링함으로써, 메모리 디바이스(들)에서 컴퓨팅 타일(510)로의 데이터 전송의 비결정적 특성으로 인한 지연은 확장 메모리 연산이 컴퓨팅 타일(510)을 통해 스트리밍되는 동안 데이터에 대해 수행될 때 완화될 수 있다.
확장 메모리 연산의 결과가 컴퓨팅 타일(510)에서 컴퓨팅 타일(510) 외부의 회로부(예: 데이터 NoC, 오케스트레이션 제어기 및/또는 호스트)로 이동되어야 할 때, RISC 장치(536)는 오케스트레이션 제어기 및/또는 호스트에 명령 및/또는 메시지를 송신할 수 있으며, 이는 결국 컴퓨팅 타일 메모리(538)로부터 확장 메모리 연산의 결과를 요청하는 명령 및/또는 메시지를 송신할 수 있다.
확장 메모리 연산의 결과를 요청하는 명령 및/또는 메시지에 응답하여, 컴퓨팅 타일 메모리(538)는 확장 메모리 연산의 결과를 원하는 위치(예: 데이터 NoC, 오케스트레이션 타일 및/또는 호스트)로 전송할 수 있다. 예를 들면, 확장 메모리 연산의 결과를 요청하는 명령에 응답하여, 확장 메모리 연산의 결과는 메시지 버퍼(534)로 전송되고 이어서 컴퓨팅 타일(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)를 더 포함한다. 일부 실시예에서, 도 6에 도시된 컴퓨팅 타일(610)은 오케스트레이션 제어기(예: 본 출원에서 도 1~4에 도시된 오케스트레이션 제어기(106, 206, 306, 406)로서 기능할 수 있다.
명령 캐시(635) 및/또는 데이터 캐시(637)는 컴퓨팅 타일 메모리(638)보다 크기가 더 작을 수 있다. 예를 들면, 컴퓨팅 타일 메모리는 약 256KB일 수 있는 반면, 명령 캐시(635) 및/또는 데이터 캐시(637)는 크기가 약 32KB일 수 있다. 그러나 명령 캐시(635) 및/또는 데이터 캐시(637)가 컴퓨팅 타일 메모리(638)보다 크기가 작은 한 실시예는 이러한 특정 크기로 한정되지 않는다.
일부 실시예에서, 명령 캐시(635)는 RISC 디바이스(636) 사이에서 컴퓨팅 타일 메모리(638)로 전달된 메시지 및/또는 명령을 저장 및/또는 버퍼링할 수 있는 반면, 데이터 캐시(637)는 컴퓨팅 타일 메모리(638)와 RISC 디바이스(636) 사이에서 전송되는 데이터를 저장 및/또는 버퍼링할 수 있다.
도 7은 본 개시의 다수의 실시예에 따른 확장 메모리 연산을 위한 예시적인 방법(750)을 나타내는 흐름도이다. 블록(752)에서, 방법(750)은 복수의 컴퓨팅 디바이스(예: 컴퓨팅 타일)에 연결된 제1 인터페이스(예: 데이터 NoC)를 통해 메모리 디바이스로부터 메모리 디바이스에 결합된 복수의 컴퓨팅 디바이스(예: 컴퓨팅 타일)로 데이터 블록을 전송하는 단계를 포함할 수 있다. 서로 결합된 복수의 컴퓨팅 디바이스는 각각 서로 결합될 수 있고 프로세싱 유닛 및 프로세싱 유닛에 대한 캐시로 구성된 메모리 어레이를 각각 포함할 수 있다. 컴퓨팅 디바이스는 본 출원에서 도 1~6에 도시된 컴퓨팅 타일(110, 210, 310, 410, 510, 610)과 유사할 수 있다. 데이터 블록의 전송은 연산을 수행하기 위해 데이터 블록을 전송하라는 요청을 수신한 것에 대한 응답일 수 있다. 일부 실시예에서, 연산의 수행을 개시하기 위한 명령을 수신하는 것은 연산의 수행에 대응하는 피연산자가 저장되는 특정 컴퓨팅 디바이스의 메모리 위치에 대응하는 어드레스를 수신하는 것을 포함할 수 있다. 예를 들면, 위에서 설명된 바와 같이, 어드레스는 연산 수행시 피연산자로 사용될 데이터가 저장된 메모리 부분(예: 본 출원의 도 5 및 도 6에 도시된 컴퓨팅 타일 메모리(538, 638)와 같은 컴퓨팅 타일 메모리)의 어드레스일 수 있다.
블록(754)에서, 방법(750)은 복수의 컴퓨팅 디바이스에 연결된 제2 인터페이스(예: 제어 NoC)를 통해 데이터 블록이 복수의 컴퓨팅 디바이스 중 적어도 하나로 전송되게 하는 단계를 포함할 수 있다. 데이터 블록은 메모리 제어기를 통해 메모리 디바이스로부터 전송될 수 있고 제2 인터페이스에 의해 적어도 하나의 컴퓨팅 디바이스로 전송될 수 있다.
블록(756)에서, 방법(750)은 복수의 컴퓨팅 디바이스들 중 적어도 하나에 의해, 데이터 블록의 수신에 응답하여 데이터 블록을 사용하여 데이터의 크기를 복수의 컴퓨팅 디바이스 중 적어도 하나에 의해 제1 크기로부터 제2 크기로 감소시키는 연산을 수행하는 단계를 포함할 수 있다. 연산의 성능은 제어기 타일(예: 복수의 컴퓨팅 디바이스 중 하나인 오케스트레이션 제어기)에 의해 야기될 수 있다. 제어기 타일은 본 출원에서 도 1~4에 도시된 오케스트레이션 제어기(106, 206, 306, 406)와 유사할 수 있다. 일부 실시예에서, 연산을 수행하는 것은 본 출원에 설명된 확장 메모리 연산을 수행하는 것을 포함할 수 있다. 연산은 특정 컴퓨팅 디바이스에 의해 제어기에 결합 가능한 호스트로부터 호스트 명령의 수신 없이 연산을 수행하는 것을 더 포함할 수 있다. 연산 수행의 완료에 응답하여, 방법(750)은 제어기에 결합 가능한 호스트에 통지를 송신하는 단계를 포함할 수 있다.
블록(756)에서, 방법(750)은 감소된 크기의 데이터 블록을 제1 제어기(예: 저장 제어기)에 결합 가능한 호스트로 전송하는 단계를 포함할 수 있다. 제1 제어기는 제1 인터페이스(예: 제어 NoC), 제2 인터페이스(예: 데이터 NoC) 및 복수의 컴퓨팅 디바이스(예: 컴퓨팅 타일)를 포함할 수 있다. 방법(750)은 제3 제어기를 사용하여 데이터 블록이 메모리 디바이스로부터 제1 인터페이스로 전송되게 하는 단계를 더 포함할 수 있다. 방법(750)은 제2 인터페이스를 통해 데이터 블록에 대해 연산을 수행하기 위해 복수의 컴퓨팅 디바이스 중 개별 컴퓨팅 디바이스에 대응하는 자원을 할당하는 단계를 더 포함할 수 있다.
일부 실시예에서, 연산의 수행을 개시하기 위한 명령은 특정 컴퓨팅 디바이스의 메모리 어레이 내의 위치에 대응하는 어드레스를 포함할 수 있고, 방법(750)은 연산의 결과를 특정 컴퓨팅 디바이스의 위치에 대응하는 어드레스에 저장하는 단계를 포함할 수 있다. 예를 들면, 방법(750)은 확장 메모리 연산의 수행 이전에 연산의 수행에 대응하는 피연산자가 저장된 특정 컴퓨팅 디바이스의 메모리 위치에 대응하는 어드레스에 연산의 결과를 저장하는 단계를 포함할 수 있다. 즉, 일부 실시예에서, 연산의 결과는 연산의 수행 전에 연산에 대한 피연산자로서 사용된 데이터가 저장된 컴퓨팅 디바이스의 동일한 어드레스 위치에 저장될 수 있다.
일부 실시예에서, 방법(750)은 오케스트레이션 제어기에 의해 연산의 수행에 대응하는 피연산자가 특정 컴퓨팅 타일에 의해 저장되지 않는다는 것을 결정하는 단계를 포함할 수 있다. 이러한 결정에 응답하여, 방법(750)은 연산의 수행에 대응하는 피연산자가 복수의 컴퓨팅 디바이스에 결합된 메모리 디바이스에 저장된다는 것을 오케스트레이션 제어기에 의해 결정하는 단계를 더 포함할 수 있다. 방법(750)은 메모리 디바이스로부터 연산의 수행에 대응하는 피연산자를 검색하는 단계, 연산의 수행에 대응하는 피연산자가 복수의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스에 저장되게 하고/하거나 적어도 하나의 컴퓨팅 디바이스를 사용하여 연산을 수행하게 하는 단계를 더 포함할 수 있다. 메모리 디바이스는 도 1에 도시된 메모리 디바이스(116)와 유사할 수 있다.
방법(750)은 일부 실시예들에서, 적어도 하나의 서브 연산이 연산의 일부로서 수행되어야 하는 것을 결정하는 단계, 특정 컴퓨팅 디바이스와 상이한 컴퓨팅 디바이스에 명령을 송신하여 서브 연산을 수행하는 단계 및/또는 특정 컴퓨팅디바이스와 상이한 컴퓨팅 디바이스를 사용하여, 연산의 수행의 일부로서 서브 연산을 수행하는 단계를 더 포함한다. 예를 들면, 일부 실시예에서, 연산이 다수의 서브 연산으로 분할되어야 한다는 결정이 이루어질 수 있고, 제어기는 연산을 수행하는 일부로서 상이한 컴퓨팅 디바이스가 상이한 서브 연산을 수행하게 할 수 있다. 일부 실시예에서, 오케스트레이션 제어기는 본 출원에서 도 1~4에 도시된 제어 및/또는 데이터 NoC(108-1, 208-1, 308-1, 408-1, 108-2, 208-2, 308-2, 408-2)와 같은 통신 서브시스템과 협력하여 연산 수행의 일부로서 2개 이상의 컴퓨팅 디바이스에 서브 연산을 할당할 수 있다.
비록 특정 실시 형태가 본 명세서에서 예시되고 설명되었지만, 당업자는 동일한 결과를 달성하기 위해 계산된 배열이 도시된 특정 실시 형태를 대체할 수 있다는 것을 이해할 것이다. 본 개시 내용은 본 개시 내용의 하나 이상의 실시 형태의 적응 또는 변형을 포함하도록 의도된다. 상기한 설명은 제한적인 방식이 아니라 예시적인 방식으로 이루어진 것으로 이해되어야 한다. 상기 실시예의 조합 및 본원에서 구체적으로 기술되지 않은 다른 실시예는 상기 설명을 검토하면 당업자에게 명백할 것이다. 본 발명의 하나 이상의 실시예의 범위는 상기한 구조들 및 프로세스들이 사용되는 다른 적용 예들을 포함한다. 따라서, 본 개시 물의 하나 이상의 실시예의 범위는 청구 범위가 부여되는 등가물의 전체 범위와 함께, 첨부된 청구 범위를 참조하여 결정되어야 한다.
전술한 상세한 설명에서, 일부 특징들은 본 발명을 능률화할 목적으로 단일 실시예에서 함께 그룹화된다. 이 개시 방법은 개시된 본 발명의 실시예가 각 청구항에 명시적으로 언급된 것보다 많은 특징을 이용해야 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 이하의 청구 범위가 반영하는 바와 같이, 발명의 주제는 단일 개시된 실시예의 모든 특징보다 적다. 따라서, 이하의 청구 범위는 발명의 상세한 설명에 포함되며, 각 청구항은 별개의 실시예로서 독자적으로 기재된다.

Claims (22)

  1. 장치에 있어서,
    서로 결합되고 각각이 다음을 포함하는 복수의 컴퓨팅 디바이스:
    데이터 블록의 수신에 응답하여 상기 데이터 블록에 대한 연산을 수행하도록 구성된 프로세싱 유닛; 및
    상기 프로세싱 유닛에 대한 캐시로 구성된 메모리 어레이;
    상기 장치 이내에서 그리고 상기 복수의 컴퓨팅 디바이스와 제어기에 결합되고, 상기 데이터 블록을 요청하도록 구성된 제1 통신 시스템; 및
    상기 장치 이내에서 그리고 상기 복수의 컴퓨팅 디바이스와 상기 제어기에 결합되고, 상기 제어기로부터 상기 복수의 컴퓨팅 디바이스 중 적어도 하나로 상기 데이터 블록을 전송하도록 구성된 제2 통신 서브시스템을 포함하는 장치.
  2. 제1항에 있어서,
    추가 제어기를 더 포함하고,
    상기 컴퓨팅 타일, 상기 제1 통신 서브시스템 및 상기 제2 통신 서브시스템은 상기 추가 제어기와 결합되는 장치.
  3. 제1항에 있어서,
    상기 제1 통신 서브시스템 및 상기 제2 통신 서브시스템에 결합된 상기 제어기를 더 포함하고, 상기 제1 통신 서브시스템으로 상기 데이터 블록을 송신하도록 구성된 회로부를 포함하는 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 데이터 블록과 관련된 명령을 호스트로부터 상기 제1 통신 서브시스템과 상기 제2 통신 서브시스템으로 전송하도록 구성된 추가 제어기를 더 포함하는 장치.
  5. 제4항에 있어서,
    상기 추가 제어기에 결합되고 상기 컴퓨팅 디바이스 중 하나에 의해 수행되는 연산 이전에 상기 데이터 블록에 대해 하나 이상의 추가 연산을 수행하도록 구성된 로직을 더 포함하는 장치.
  6. 제4항에 있어서,
    상기 복수의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스는 상기 추가 제어기를 포함하는 장치.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 통신 서브시스템은 네트워크 온 칩(NoC) 또는 크로스바(XBAR), 또는 둘 모두를 포함하는 장치.
  8. 제1항 내지 제3항 중 어느 한 항에 있어서,
    각각의 컴퓨팅 디바이스의 상기 프로세싱 유닛은 감소된 명령 세트 아키텍처(reduced instruction set architecture)로 구성되는 장치.
  9. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 데이터 블록에 대해 수행되는 연산은 적어도 일부 데이터가 정렬, 재정렬, 제거 또는 폐기되는 연산 또는 쉼표로 구분된 값의 파싱 연산, 또는 둘 모두를 포함하는 장치.
  10. 장치에 있어서,
    제1 프로세싱 유닛 및 상기 제1 프로세싱 유닛에 대한 캐시로 구성된 제1 메모리 어레이를 포함하는 제1 컴퓨팅 디바이스;
    제2 프로세싱 유닛 및 상기 제2 프로세싱 유닛에 대한 캐시로 구성된 제2 메모리 어레이를 포함하는 제2 컴퓨팅 디바이스;
    상기 장치 이내에서 그리고 상기 제1 컴퓨팅 디바이스와 상기 제2 컴퓨팅 디바이스에 결합되고, 상기 장치 내에서 데이터 블록을 요청하도록 구성되는 제1 통신 서브시스템;
    상기 장치 이내에서 그리고 상기 제1 컴퓨팅 디바이스와 상기 제2 컴퓨팅 디바이스에 결합되고, 상기 장치 이내에서 상기 데이터 블록을 미디어 디바이스로부터 제1 제어기를 통해 상기 제1 및 상기 제2 컴퓨팅 디바이스 중 적어도 하나로 전송하도록 구성되는 제2 통신 서브시스템; 및
    상기 제1 통신 서브시스템과 상기 제2 통신 서브시스템에 결합되고, 상기 데이터 블록에 대한 연산을 수행하기 위해 상기 제1 컴퓨팅 디바이스와 상기 제2 컴퓨팅 디바이스 중 적어도 하나를 할당하도록 구성된 제2 제어기를 포함하는 장치.
  11. 제10항에 있어서,
    상기 제1 통신 서브시스템은 상기 제1 컴퓨팅 디바이스와 상기 제2 컴퓨팅 디바이스 중 하나에서 실행될 명령을 상기 제1 컴퓨팅 디바이스와 상기 제2 컴퓨팅 디바이스 중 하나로 송신하고;
    상기 명령은 호스트, 다른 컴퓨팅 디바이스 및 미디어 제어기 중 하나에서 온 것인 장치.
  12. 제10항에 있어서,
    상기 제1 통신 서브시스템은 상기 데이터 블록에 대한 요청을 송신하여,
    상기 제1 제어기로부터 상기 제1 및 상기 제2 컴퓨팅 디바이스 중 하나로 전송되거나,
    상기 제1 및 상기 제2 컴퓨팅 디바이스 중 하나로부터 상기 제1 제어기로 전송되도록 하는 장치.
  13. 제10항에 있어서,
    상기 제1 통신 서브시스템은 상기 데이터 블록에 대한 요청을 송신하여,
    호스트로부터 상기 제1 및 상기 제2 컴퓨팅 디바이스 중 하나로 전송되거나,
    상기 제1 및 상기 제2 컴퓨팅 디바이스 중 하나로부터 호스트로 전송되도록하는 장치.
  14. 제10항에 있어서,
    상기 제1 제어기는 상기 장치에 결합된 메모리 디바이스에 대한 복사, 판독, 기록 및 에러 정정 연산을 수행하도록 구성되는 장치.
  15. 제10항 내지 제14항 중 어느 한 항에 있어서,
    상기 제1 컴퓨팅 디바이스와 상기 제2 컴퓨팅 디바이스는,
    상기 제1 컴퓨팅 디바이스가 상기 제1 통신 서브시스템을 통해 상기 제2 컴퓨팅 디바이스와 관련된 어드레스 공간에 액세스할 수 있고,
    상기 제2 컴퓨팅 디바이스가 상기 제1 통신 서브시스템을 통해 상기 제1 컴퓨팅 디바이스와 관련된 어드레스 공간에 액세스할 수 있도록
    구성되는 장치.
  16. 제10항 내지 제14항 중 어느 한 항에 있어서,
    상기 제1 프로세싱 유닛과 상기 제2 프로세싱 유닛은 개개의 감소된 명령 세트 컴퓨팅 아키텍처로 구성되는 장치.
  17. 제10항 내지 제14항 중 어느 한 항에 있어서,
    상기 연산은 적어도 일부 데이터가 정렬, 재정렬, 제거 또는 폐기되는 연산을 포함하는 장치.
  18. 시스템에 있어서,
    호스트;
    메모리 디바이스; 및
    상기 호스트와 상기 메모리 디바이스에 결합된 제1 제어기를 포함하며,
    상기 제1 제어기는,
    상기 제1 제어기 이내에서, 실행될 명령을 송신 및 수신하도록 구성된 제1 통신 서브시스템;
    상기 제1 제어기 이내에서, 데이터를 전송하도록 구성된 제2 통신 서브시스템; 및
    복수의 컴퓨팅 디바이스를 포함하며,
    상기 저장 제어기는,
    상기 제1 통신 서브시스템을 통해, 데이터 블록에 대한 연산을 수행하기 위해 상기 호스트로부터 상기 복수의 컴퓨팅 디바이스 중 적어도 하나로 명령을 송신하고,
    상기 제2 통신 서브시스템을 통해, 상기 데이터 블록을 상기 메모리 디바이스로부터 상기 복수의 컴퓨팅 디바이스 중 적어도 하나로 전송하도록 구성되는 시스템.
  19. 방법에 있어서,
    복수의 컴퓨팅 디바이스에 결합된 제1 통신 서브시스템을 통해 데이터 블록을 메모리 디바이스로부터 상기 메모리 디바이스에 결합된 상기 복수의 컴퓨팅 디바이스로 전송하는 단계;
    상기 복수의 컴퓨팅 디바이스에 결합된 제2 통신 서브시스템을 통해 상기 데이터 블록이 상기 복수의 컴퓨팅 디바이스 중 적어도 하나로 전송되게 하는 단계;
    상기 복수의 컴퓨팅 디바이스 중 적어도 하나에 의해, 상기 데이터 블록의 수신에 응답하여 상기 데이터 블록을 사용하여 데이터의 크기를 상기 복수의 컴퓨팅 디바이스 중 적어도 하나에 의해 제1 크기로부터 제2 크기로 감소시키는 연산을 수행하는 단계; 및
    상기 감소된 크기의 데이터 블록을 상기 제1 통신 서브시스템, 상기 제2 통신 서브시스템 및 상기 복수의 컴퓨팅 디바이스를 포함하는 제1 제어기에 결합 가능한 호스트로 전송하는 단계를 포함하며,
    상기 감소된 크기의 데이터 블록은 상기 제2 통신 서브시스템에 결합된 제2 제어기를 통해 전송되는 방법.
  20. 제19항에 있어서,
    제3 제어기를 사용하여 상기 데이터 블록은 상기 메모리 디바이스로부터 상기 제1 통신 서브시스템으로 전송되게 하는 단계를 더 포함하는 방법.
  21. 제20항에 있어서,
    상기 제3 제어기를 통해,
    상기 메모리 디바이스와 관련된 읽기 연산;
    상기 메모리 디바이스와 관련된 복사 연산; 및
    상기 메모리 디바이스와 관련된 에러 정정 연산; 또는
    이들의 조합을 수행하는 단계를 더 포함하는 방법.
  22. 제19항 내지 제21항 중 어느 한 항에 있어서,
    상기 제2 통신 서브시스템을 통해, 상기 데이터 블록에 대한 연산을 수행하기 위해 상기 복수의 컴퓨팅 디바이스 중 개별 컴퓨팅 디바이스에 대응하는 자원을 할당하는 단계를 더 포함하는 방법.
KR1020217039428A 2019-06-06 2020-05-28 확장 메모리 인터페이스 KR20210151250A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/433,698 US20200387444A1 (en) 2019-06-06 2019-06-06 Extended memory interface
US16/433,698 2019-06-06
PCT/US2020/034937 WO2020247240A1 (en) 2019-06-06 2020-05-28 Extended memory interface

Publications (1)

Publication Number Publication Date
KR20210151250A true KR20210151250A (ko) 2021-12-13

Family

ID=73650636

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217039428A KR20210151250A (ko) 2019-06-06 2020-05-28 확장 메모리 인터페이스

Country Status (5)

Country Link
US (1) US20200387444A1 (ko)
KR (1) KR20210151250A (ko)
CN (1) CN113994314A (ko)
DE (1) DE112020002707T5 (ko)
WO (1) WO2020247240A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606775B1 (en) 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
US11941742B2 (en) * 2022-06-23 2024-03-26 Apple Inc. Tiled processor communication fabric

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0727494B2 (ja) * 1992-01-02 1995-03-29 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ・スヌープ/データ無効化機能を有するコンピュータ・システム
US6599147B1 (en) * 1999-05-11 2003-07-29 Socket Communications, Inc. High-density removable expansion module having I/O and second-level-removable expansion memory
TW428755U (en) * 1999-06-03 2001-04-01 Shen Ming Shiang Fingerprint identification IC card
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
KR101175495B1 (ko) * 2010-12-24 2012-08-20 한양대학교 산학협력단 멀티 코어 프로세서의 상호 연결을 위한 정보 분석 방법 및 이를 수행하는 장치
US9239806B2 (en) * 2011-03-11 2016-01-19 Micron Technology, Inc. Systems, devices, memory controllers, and methods for controlling memory
US9104473B2 (en) * 2012-03-30 2015-08-11 Altera Corporation Conversion and compression of floating-point and integer data
US9244629B2 (en) * 2013-06-25 2016-01-26 Advanced Micro Devices, Inc. Method and system for asymmetrical processing with managed data affinity
US10318473B2 (en) * 2013-09-24 2019-06-11 Facebook, Inc. Inter-device data-transport via memory channels
WO2016075765A1 (ja) * 2014-11-12 2016-05-19 株式会社日立製作所 計算機システム及びその制御方法
CN104598404B (zh) * 2015-02-03 2018-09-04 杭州士兰控股有限公司 计算设备扩展方法和装置、以及可扩展的计算系统
KR102417182B1 (ko) * 2015-06-22 2022-07-05 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR102367982B1 (ko) * 2015-06-22 2022-02-25 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10664942B2 (en) * 2016-10-21 2020-05-26 Advanced Micro Devices, Inc. Reconfigurable virtual graphics and compute processor pipeline
US10152822B2 (en) * 2017-04-01 2018-12-11 Intel Corporation Motion biased foveated renderer

Also Published As

Publication number Publication date
DE112020002707T5 (de) 2022-03-17
US20200387444A1 (en) 2020-12-10
WO2020247240A1 (en) 2020-12-10
CN113994314A (zh) 2022-01-28

Similar Documents

Publication Publication Date Title
KR20210151250A (ko) 확장 메모리 인터페이스
US11810618B2 (en) Extended memory communication
US20240134541A1 (en) Storage device operation orchestration
US11579882B2 (en) Extended memory operations
KR20220050177A (ko) 3단의 계층적 메모리 시스템
US11650941B2 (en) Computing tile
CN114258534B (zh) 阶层式存储器系统
CN114127852B (zh) 扩展存储器接口
CN114303124B (zh) 分级存储器设备
CN114270311A (zh) 分级存储器系统
KR20220034939A (ko) 메모리에서 추론
CN114341818A (zh) 分级存储器设备

Legal Events

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