KR20210134048A - 확장 메모리 연산 - Google Patents
확장 메모리 연산 Download PDFInfo
- Publication number
- KR20210134048A KR20210134048A KR1020217033925A KR20217033925A KR20210134048A KR 20210134048 A KR20210134048 A KR 20210134048A KR 1020217033925 A KR1020217033925 A KR 1020217033925A KR 20217033925 A KR20217033925 A KR 20217033925A KR 20210134048 A KR20210134048 A KR 20210134048A
- Authority
- KR
- South Korea
- Prior art keywords
- computing device
- memory
- computing
- data
- controller
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 306
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 39
- 238000003860 storage Methods 0.000 claims description 52
- 238000004891 communication Methods 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 25
- 238000012937 correction Methods 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 32
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 12
- 238000013459 approach Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 238000012546 transfer Methods 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 6
- 230000000977 initiatory effect Effects 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
확장 메모리 연산과 관련된 시스템, 장치 및 방법이 설명된다. 확장 메모리 연산은 단일 어드레스 및 피연산자에 의해 지정된 연산을 포함할 수 있으며 처리 디바이스 및 메모리 자원을 포함하는 컴퓨팅 디바이스에 의해 수행될 수 있다. 컴퓨팅 디바이스는 개입 명령을 수신하지 않고 컴퓨팅 타일을 통해 스트리밍되는 데이터에 대해 확장 메모리 연산을 수행할 수 있다. 일 예에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 처리 유닛을 이용하여 데이터에 대한 연산을 수행하는 것을 포함하는 연산을 수행하기 위한 명령을 수신하고 연산에 대응하는 피연산자가 메모리 자원에 저장되어 있는 것을 결정하도록 구성된다. 컴퓨팅 디바이스는 메모리 자원에 저장된 피연산자를 사용하여 연산을 추가로 수행할 수 있다.
Description
본 개시는 전반적으로 반도체 메모리 및 방법에 관한 것으로, 보다 상세하게는 확장 메모리 연산(extended memory operation)을 위한 장치, 시스템 및 방법에 관한 것이다.
메모리 디바이스는 전형적으로 컴퓨터 또는 다른 전자 시스템의 내부, 반도체, 집적 회로로 제공된다. 휘발성 메모리와 비휘발성 메모리를 포함한 다양한 유형의 메모리가 있다. 휘발성 메모리는 데이터(예를 들어, 호스트 데이터, 에러 데이터 등)를 유지하기 위해 전원이 필요할 수 있고, 다른 것 중에서 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은 본 개시의 다수의 실시예에 따른 확장 메모리 연산을 위한 예시적인 방법을 나타내는 흐름도이다.
도 2는 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 기능 블록도이다.
도 3은 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 다른 기능 블록도이다.
도 4a는 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 또 다른 기능 블록도이다.
도 4b는 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 또 다른 기능 블록도이다.
도 4c는 본 개시의 다수의 실시예에 따른 저장 제어기를 포함하는 장치 형태의 또 다른 기능 블록도이다.
도 5는 본 개시의 다수의 실시예에 따른 컴퓨팅 타일 형태의 블록도이다.
도 6은 본 개시의 다수의 실시예에 따른 컴퓨팅 타일 형태의 다른 블록도이다.
도 7은 본 개시의 다수의 실시예에 따른 확장 메모리 연산을 위한 예시적인 방법을 나타내는 흐름도이다.
확장 메모리 연산과 관련된 시스템, 장치 및 방법이 설명된다. 확장 메모리 연산은 단일 어드레스 및 피연산자에 의해 지정된 동작을 포함할 수 있으며 처리 유닛 및 메모리 자원을 포함하는 컴퓨팅 디바이스에 의해 수행될 수 있다. 컴퓨팅 디바이스는 개입 명령의 수신 없이 컴퓨팅 타일을 통해 스트리밍되는 데이터에 대해 확장 메모리 연산을 수행할 수 있다. 일 예에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 처리 유닛으로 데이터에 대한 연산을 수행하는 것을 포함하는 연산을 수행하기 위한 명령을 수신하고 연산에 대응하는 피연산자가 메모리 자원에 저장되어 있는 것을 결정하도록 구성된다. 컴퓨팅 디바이스는 메모리 자원에 저장된 피연산자를 사용하여 동작을 추가로 수행할 수 있다.
본 출원에 사용된, "확장 메모리 연산(extended memory operation)” 은 단일 어드레스(예를 들어, 메모리 어드레스) 및 64비트 피연산자와 같은 피연산자에 의해 지정될 수 있는 메모리 연산을 지칭한다. 피연산자는 복수의 비트(예를 들어, 비트 스트링 또는 비트들의 스트링)로 표현될 수 있다. 실시예는 64비트 피연산자에 의해 지정된 연산에 한정되지 않으며, 64비트보다 크거나(예를 들어, 128비트 등) 또는 더 작은(예를 들어, 32비트) 피연산자에 의해 연산이 지정될 수 있다. 본 출원에 설명된, 확장 메모리 연산을 수행하기 위해 액세스 가능한 유효 어드레스 공간은 호스트 컴퓨팅 시스템 또는 저장 제어기에 액세스 가능한 메모리 디바이스 또는 파일 시스템의 크기이다.
확장 메모리 연산은 컴퓨팅 타일(예를 들어, 본 출원에서 도 d1-6에 예시된 컴퓨팅 타일(들) (110/210/310/410/510/610))의 처리 디바이스(예를 들어, 본 출원의 도 5 및 6에 예시된 축소된 명령 세트 컴퓨팅 디바이스(536/636)와 같은 처리 디바이스에 의해)에 의해 수행될 수 있는 명령 및/또는 동작을 포함한다. 일부 실시예에서, 확장 메모리 연산을 수행하는 단계는 메모리 자원(예를 들어, 본 출원의 도 5 및 6에 예시된 컴퓨팅 타일 메모리(538/638))에 저장된 데이터 및/또는 명령을 검색하는 단계, 컴퓨팅 타일 내에서 동작을 수행하는 단계 (예를 들어, 데이터 또는 명령을 컴퓨팅 타일 외부의 회로부로 전송하지 않고), 확장 메모리 연산의 결과를 컴퓨팅 타일의 메모리 자원 또는 보조 저장소(storage)(예를 들어, 본 출원에 도 1에 예시된 메모리 디바이스(116)와 같은 메모리 디바이스)에 저장하는 단계를 포함한다.
확장 메모리 연산의 비제한적인 예는 부동 소수점 가산 누적, 32비트 복소수 연산, 제곱근 어드레스(SQRT(addr)) 연산, 변환 연산(예를 들어, 부동 소수점과 정수 형식 사이의 변환 및 /또는 부동 소수점 형식과 양수 형식 간의 변환), 데이터를 고정 포맷으로 정규화, 절대값 연산 등을 포함할 수 있다. 일부 실시예에서, 확장 메모리 연산은 제자리에서 업데이트되는 컴퓨팅 타일에 의해 수행되는 연산 (예를 들어, 확장 메모리 연산의 결과는 확장 메모리 연산의 수행 이전에 확장 메모리 연산의 수행에 사용된 피연산자가 저장된 어드레스에 저장되며), 뿐만 아니라 이전에 저장된 데이터를 사용하여 새로운 데이터를 결정하는 연산(예를 들어, 특정 어드레스에 저장된 피연산자가 피연산자가 저장된 특정 어드레스를 덮어쓰는 새로운 데이터를 생성하는데 사용되는 연산)을 포함할 수 있다.
그 결과, 일부 실시예에서, 확장 메모리 연산(들)이 다수의 스레드 실행 사이의 경합을 감소시킬 수 있는 컴퓨팅 타일 내에서 수행될 수 있기 때문에, 확장 메모리 연산의 수행은 잠금 또는 뮤텍스(mutex) 동작을 완화하거나 제거할 수 있다. 확장 메모리 연산을 수행하는 동안 스레드에서 잠금 또는 뮤텍스 동작의 성능을 줄이거나 제거하면 컴퓨팅 시스템의 성능이 향상될 수 있는데, 예를 들어, 확장 메모리 연산이 동일한 컴퓨팅 타일 내에서 또는 서로 통신하는 둘 이상의 컴퓨팅 타일에 걸쳐 병렬로 수행될 수 있기 때문이다. 또한, 일부 실시예에서, 본 출원에 설명된 확장 메모리 연산은 확장 메모리 연산의 결과가 연산을 수행한 컴퓨팅 타일로부터 호스트로 전송될 때 잠금 또는 뮤텍스 동작을 완화하거나 제거할 수 있다.
메모리 디바이스는 컴퓨팅 디바이스에 중요하거나 대단히 중요한 데이터를 저장하는데 사용될 수 있으며 컴퓨팅 디바이스와 관련된 호스트 간에 이러한 데이터를 전송할 수 있다. 그러나, 메모리 디바이스에 의해 저장되는 데이터의 크기와 수량이 증가함에 따라 호스트와 데이터를 주고 받는데 시간 소모적이고 자원 집약적일 수 있다. 예를 들어, 호스트가 큰 데이터 블록을 사용하여 메모리 연산의 수행을 요청할 때, 요청을 수행하는데 소요되는 시간 및/또는 자원의 양은 데이터 블록과 관련된 데이터의 크기 및/또는 수량에 비례하여 증가할 수 있다.
메모리 디바이스의 저장 용량이 증가함에 따라, 메모리 디바이스에 의해 저장될 수 있는 데이터가 점점 더 많아지고 따라서, 메모리 연산의 사용에 이용 가능함에 따라 이러한 효과는 더욱 두드러질 수 있다. 또한, 데이터가 처리될 수 있기 때문에(예를 들어, 데이터에 메모리 연산이 수행될 수 있음), 메모리 디바이스에 저장될 수 있는 데이터의 양이 증가함에 따라 처리될 수 있는 데이터의 양도 증가할 수 있다. 이는 처리 시간 증가 및/또는 처리 자원 소비 증가로 이어질 수 있으며, 이는 특정 유형의 메모리 연산 수행을 악화시킬 수 있다. 이들 및 다른 문제를 완화하기 위해, 본 출원의 실시예는 확장 메모리 연산이 메모리 디바이스, 하나 이상의 컴퓨팅 타일, 및/또는 메모리 어레이(들)를 사용하여 수행되는 것을 허용할 수 있다.
일부 접근법에서, 메모리 연산을 수행하는 것은 메모리 디바이스 및/또는 메모리 어레이와 같은 컴퓨팅 시스템의 메모리에 대한 다수의 클록 사이클 및/또는 다수의 함수 호출을 요구할 수 있다. 대조적으로, 본 출원의 실시예는 메모리 연산이 단일 함수 호출 또는 명령으로 수행되는 확장 메모리 연산의 수행을 허용할 수 있다. 예를 들어, 적어도 하나의 명령 및/또는 함수 호출을 사용하여 연산될 데이터를 로드한 다음, 연산된 데이터를 저장하기 위해 하나 이상의 후속 함수 호출 또는 명령을 사용하는 접근 방식과 대조적으로, 실시예는 본 출원에서 적어도 하나의 함수 호출 또는 명령이 없이 메모리 연산의 수행을 허용할 수 있다.
메모리 연산의 수행에 사용되는 함수 호출 및/또는 명령의 수를 줄임으로써, 이러한 연산을 수행하는데 소비되는 시간 및/또는 이러한 연산을 수행하는데 소비되는 컴퓨팅 자원의 양이 메모리 연산 수행을 위해 여러 함수 호출 및/또는 명령이 필요한 접근 방식과 비교하여 감소될 수 있다. 또한, 본 출원의 실시예는 데이터가 메모리 연산을 수행하기 전에 특정 위치에 로드될 필요가 없기 때문에 메모리 디바이스 및/또는 메모리 어레이 내에서 데이터의 이동을 줄일 수 있다. 이는 특히 많은 양의 데이터가 메모리 연산의 대상이 되는 시나리오에서 일부 접근 방식과 비교하여 처리 시간을 줄일 수 있다.
또한, 본 출원에 설명된 확장 메모리 연산은 일부 접근 방식과 비교하여 훨씬 더 큰 세트의 유형 필드를 허용할 수 있다. 예를 들어, 메모리 디바이스(예를 들어, 메모리 서브 시스템)의 데이터를 사용하여 연산의 수행을 요청하기 위해 호스트에 의해 실행되는 명령은 유형(type), 어드레스 및 데이터 필드를 포함할 수 있다. 유형은 요청되는 특정 연산에 해당할 수 있고, 어드레스는 연산 수행에 사용할 데이터가 저장되는 어드레스에 해당할 수 있으며, 데이터 필드는 연산을 수행하는 데 사용되는 데이터(예를 들어, 피연산자)에 해당할 수 있다. 일부 접근 방식에서, 유형 필드는 다른 크기의 판독 및/또는 기록과 일부 간단한 정수 누적 연산으로 제한될 수 있다. 대조적으로, 본 출원의 실시예는 확장 메모리 연산을 수행할 때 사용될 수 있는 유효 어드레스 공간이 메모리 디바이스의 크기에 대응할 수 있기 때문에 더 넓은 스펙트럼의 유형 필드가 활용되는 것을 허용할 수 있다. 연산을 수행하기 위해 이용 가능한 어드레스 공간을 확장함으로써, 본 출원의 실시예는 따라서, 더 넓은 범위의 유형 필드를 허용할 수 있으며, 따라서, 메모리 디바이스의 점유인 유효 어드레스 공간을 허용하지 않는 접근 방식에서보다 더 넓은 스펙트럼의 메모리 연산이 수행될 수 있다.
본 개시의 다음의 상세한 설명에서, 본 개시의 일부를 형성하고 본 개시의 하나 이상의 실시예가 실시될 수 있는 방법이 예시로서 도시된 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 개시의 실시예를 실시할 수 있도록 충분히 상세하게 설명되며, 다른 실시예가 이용될 수 있고 프로세스, 전기적 및 구조적 변경이 본 개시의 범위를 벗어나지 않고 이루어질 수 있음을 이해해야 한다.
본 출원에 사용된, 지정자 예컨대, "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에서, 오케스트레이션 제어기(106)을 포함하는 저장 제어기(104)는 채널(103)을 통해 호스트(102)에 결합되고 오케스트레이션 제어기(106)는 채널(105)을 통해 호스트(102)에 결합된다. 호스트(102)는 호스트 시스템 예컨대, 다양한 다른 유형의 호스트 중에서 개인용 랩톱 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 스마트폰, 메모리 카드 판독기 및/또는 사물 인터넷 가능 디바이스일 수 있고, 메모리 액세스 디바이스 예를 들어, 프로세서(또는 처리 디바이스)를 포함할 수 있다. 당업자는 "프로세서"가 병렬 처리 시스템, 다수의 코프로세서 등과 같은 하나 이상의 프로세서를 의도할 수 있음을 이해할 것이다.
호스트(102)는 시스템 마더 보드 및/또는 백플레인을 포함할 수 있고, 다수의 처리 자원(예를 들어, 하나 이상의 프로세서, 마이크로프로세서, 또는 일부 다른 유형의 제어 회로부)를 포함할 수 있다. 일부 실시예에서, 호스트(102)는 호스트 제어기(101)를 포함할 수 있고, 이는 예를 들어, 확장 메모리 연산과 같은 동작의 수행을 야기 하기 위해 명령을 생성, 저장 제어기로 전달함으로써 호스트(102) 및/또는 저장 제어기(104)의 적어도 일부 동작을 제어하도록 구성될 수 있다. 호스트 제어기(101)는 호스트(102) 및/또는 저장 제어기(104)의 적어도 일부 동작을 제어하도록 구성될 수 있는 회로부(예를 들어, 하드웨어)를 포함할 수 있다. 예를 들어, 호스트 제어기(101)는 호스트(102) 및/또는 저장 제어기(104)의 적어도 일부 동작을 제어하도록 구성된 ASIC(application specific integrated circuit), FPGA(field programmable gate array), 또는 회로부 및/또는 로직의 다른 조합일 수 있다.
시스템(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)에 자원을 할당 및 할당 해제할 수 있다. 일부 실시예에서, 오케스트레이션 제어기(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)이 데이터 블록에 연산(예를 들어, 확장된 메모리 연산)을 수행하도록 구성될 수 있다. 동작은 데이터 블록과 연관된 단일 어드레스 및 하나 이상의 피연산자에 의해 특정될 수 있는 함수를 평가하기 위해 수행될 수 있다. 오케스트레이션 제어기(106)는 하나 이상의 컴퓨팅 타일(110-1,…, 110-N)에 저장될 확장 메모리 연산의 결과를 호스트(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)의 밀도 및 아키텍처에 의존할 수 있다는 것이 당업자에 의해 이해될 것이다.
일부 실시예에서, 확장 메모리 연산은 데이터(예를 들어, 파일)를 컴퓨팅 타일(110)에 선택적으로 저장하거나 매핑함으로써 도 1에 도시된 컴퓨팅 시스템(100)을 사용하여 수행될 수 있다. 데이터는 컴퓨팅 타일 메모리 (예를 들어, 본 출원에서 도 5에 예시된 컴퓨팅 타일 메모리(538)의 블록(543-1)과 같은 부분에서)의 어드레스 공간에 선택적으로 저장될 수 있다. 일부 실시예에서, 데이터는 호스트(102) 및/또는 오케스트레이션 제어기(106)로부터 수신된 명령에 응답하여 컴퓨팅 타일(110)에 선택적으로 저장되거나 매핑될 수 있다. 명령이 호스트(102)로부터 수신된 실시예에서, 명령은 인터페이스(예를 들어, 통신 경로(103 및/또는 105))를 통해 컴퓨팅 타일(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)은 연접한 어드레스 공간에 걸쳐 개별적으로 어드레스 지정될 수 있으며, 이는 본 출원에 설명된 확장 메모리 연산의 수행을 가능하게 할 수 있다. 즉, 데이터가 저장되거나 데이터가 매핑되는 어드레스는 모든 컴퓨팅 타일(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)에서 데이터의 유효한 매핑은 베이스 어드레스(base address), 세그먼트 크기, 및/또는 길이를 포함할 수 있다. 베이스 어드레스는 데이터 매핑이 저장된 컴퓨팅 타일(110)의 어드레스에 대응할 수 있다. 세그먼트 크기는 컴퓨팅 시스템(100)이 처리할 수 있는 데이터의 양(예를 들어, 바이트 단위)에 대응할 수 있고, 길이는 데이터에 대응하는 비트의 양에 대응할 수 있다. 일부 실시예에서, 컴퓨팅 타일(들)(110)에 저장된 데이터는 호스트(102) 상에서 캐시 불가능(uncacheable)할 수 있다는 점에 유의한다. 예를 들어, 확장 메모리 연산은 확장 메모리 연산의 수행 동안 호스트(102)로 또는 호스트(102)로부터 데이터를 방해하거나 다른 식으로 전송하지 않고 컴퓨팅 타일(110)내에서 완전히 수행될 수 있다.
베이스 어드레스가 4096이고, 세그먼트 크기가 1024이고, 길이가 16,386인 비제한적인 예에서, 매핑된 어드레스, 7234,는 복수의 컴퓨팅 타일(110) 중 제 3 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(110-3))에 대응할 수 있는 제 3 세그먼트에 있을 수 있다. 이 예에서, 호스트(102), 오케스트레이션 제어기(106), 및/또는 NoC(108)는 확장 메모리 연산을 수행하기 위한 명령(예를 들어, 요청)을 제 3 컴퓨팅 타일(110-3)로 포워딩할 수 있다. 제 3 컴퓨팅 타일(110-3)은 데이터가 제 3 컴퓨팅 타일(110-3)의 메모리(예를 들어, 본 출원의 도 5 및 도 6에 예시된 컴퓨팅 타일 메모리(538/638))의 매핑된 어드레스에 저장되어 있는지 여부를 결정할 수 있다. 매핑된 어드레스(예를 들어, 제 3 컴퓨팅 타일(110-3)의 어드레스)에 데이터가 저장되어 있는 경우, 제 3 컴퓨팅 타일(110-3)은 해당 데이터를 사용하여 요청된 확장 메모리 연산을 수행하고, 확장 메모리 연산의 결과를 데이터가 원래 저장된 어드레스로 다시 저장할 수 있다.
일부 실시예에서, 확장 메모리 연산의 수행을 위해 요청된 데이터를 포함하는 컴퓨팅 타일(110)은 호스트 제어기(101), 오케스트레이션 제어기(106), 및/또는 NoC(108)에 의해 결정될 수 있다. 예를 들어, 모든 컴퓨팅 타일(110)에 이용 가능한 전체 어드레스 공간의 부분이 각각의 컴퓨팅 타일에 할당될 수 있다. 따라서, 호스트 제어기(101), 오케스트레이션 제어기(106), 및/또는 NoC(108)는 전체 어드레스 공간의 어느 부분이 어떤 컴퓨팅 타일(110)에 대응하는지에 대응하는 정보를 제공받을 수 있고 따라서, 관련 컴퓨팅 타일(110)이 확장 메모리 연사을 수행하도록 지시할 수 있다. 일부 실시예에서, 호스트 제어기(101), 오케스트레이션 제어기(106), 및/또는 NoC(108)는 테이블과 같은 데이터 구조의 개별 컴퓨팅 타일(110)에 대응하는 어드레스(또는 어드레스 범위)를 저장할 수 있고, 데이터 구조에 저장된 어드레스에 기초하여 컴퓨팅 타일(110)에 확장 메모리 연산의 수행을 지시할 수 있다.
그러나 실시예는 이에 제한되지 않으며 일부 실시예에서 호스트 제어기(101), 오케스트레이션 제어기(106), 및/또는 NoC(108)는 메모리 자원(들) (예를 들어, 본 출원의 도 5 및 6에 예시된 각각의 컴퓨팅 타일 메모리(538/638)) 의 크기(예를 들어, 데이터의 양)를 결정할 수 있고, 각각의 컴퓨팅 타일(110)과 연관된 메모리 자원(들)의 크기 및 모든 컴퓨팅 타일(110)에 이용 가능한 총 어드레스 공간에 기초하여, 어떤 컴퓨팅 타일(110)이 확장 메모리 연산의 수행에 사용될 데이터를 저장하는지를 결정할 수 있다. 호스트 제어기(101), 오케스트레이션 제어기(106), 및/또는 NoC(108)가 모든 컴퓨팅 타일(110)에 사용 가능한 총 어드레스 공간 및 각각의 컴퓨팅 타일(110)에 사용 가능한 메모리 자원(들)의 양에 기초하여 확장 메모리 연산의 수행에 사용될 데이터를 저장하는 컴퓨팅 타일(110)을 결정하는 실시예에서, 컴퓨팅 타일 메모리 자원(들)의 중첩하지 않는 다수의 부분에 걸쳐 확장 메모리 연산을 수행하는 것이 가능할 수 있다.
위의 예를 계속하면, 요청된 어드레스에 데이터가 없으면, 제 3 컴퓨팅 타일(110-3)은 본 출원에서 도 2, 3, 4a-4c, 5, 및 도 6와 관련하여 더 상세히 설명된 데이터를 요청할 수 있고, 데이터가 제 3 컴퓨팅 타일(110-3)의 어드레스에 로딩되면 확장 메모리 연산을 수행할 수 있다. 일부 실시예에서, 확장 메모리 연산이 컴퓨팅 타일(예를 들어, 이 예에서 제 3 컴퓨팅 타일(110-3))에 의해 완료되면, 오케스트레이션 제어기(106) 및/또는 호스트(102)에 통지될 수 있고, 및/또는 확장 메모리 연산의 결과는 오케스트레이션 제어기(106) 및/또는 호스트(102)로 전송될 수 있다.
도 2는 본 개시의 다수의 실시예에 따른 저장 제어기(204)를 포함하는 장치 형태의 기능 블록도이다. 저장 제어기(204)는 도 1에 도시된 저장 제어기(104)와 유사할 수 있다. 도 2에 도시된 바와 같이, 저장 제어기(204)는 미디어 제어기(212), 복수의 컴퓨팅 타일(210-1,…, 210-N), 네트워크 온 칩(NoC)(208) 및 오케스트레이션 제어기(206)를 포함할 수 있다.
미디어 제어기(212)는 오케스트레이션 제어기(206) 또는 호스트 예컨대, 도 1에 예시된 호스트(102)로부터의 요청에 응답하여 저장 제어기(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)에 의해 스트리밍 방식으로 처리될 수 있다. 일부 실시예에서, 데이터 블록(211)은 32비트, 64비트, 128비트 등의 워드 또는 데이터 청크(chunk)일 수 있고 및/또는 데이터 블록(211)은 확장 메모리 연산의 수행에 사용될 피연산자에 대응할 수 있다.
예를 들어, 도 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)을 사용할 수 있다.
데이터(예를 들어, 확장 메모리 연산의 수행에 사용될 데이터)가 컴퓨팅 타일(210) 중 하나 이상에 매핑되는 비제한적인 예에서, 오케스트레이션 제어기(206)는 컴퓨팅 타일(들)(210)에 매핑된 데이터를 사용하여 확장 메모리 연산의 수행을 개시하기 위해 컴퓨팅 타일(206)에 명령을 전송할 수 있다. 일부 실시예에서, 오케스트레이션 제어기(206)는 컴퓨팅 타일(들)(210)에 매핑된 데이터에 대응하는 어드레스(예를 들어, 물리적 어드레스)를 룩업할 수 있고, 해당 어드레스에 기초하여 어느 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(210-1))이 어드레스(및 이에 따라 데이터)에 매핑되는지를 결정할 수 있다. 그런 다음 명령은 어드레스(및 그에 따른 데이터)를 포함하는 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(210-1))로 전송될 수 있다. 일부 실시예에서, 명령은 NoC(208)를 통해 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(210-1))로 전송될 수 있다.
오케스트레이션 제어기(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)에 의해 수행된 동작 예컨대, 확장 메모리 연산의 수행을 동기화하기 위한 명령을 발송하도록 추가로 구성될 수 있다. 예를 들어, 오케스트레이션 제어기(206)(및/또는 호스트)은 제 1 컴퓨팅 타일이 제 1 확장 메모리 연산을 수행하게 하기 위해 명령을 제 1 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(210-1))로 명령을 발송할 수 있고, 오케스트레이션 제어기(206)(또는 호스트)는 제 2 컴퓨팅 타일을 사용하여 제 2 확장 메모리 연산을 수행하게 하기 위해 제 2 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(210-2))에 명령을 발송할 수 있다. 오케스트레이션 제어기(206)에 의한 컴퓨팅 타일(210)에 의해 수행되는 동작, 예컨대, 확장 메모리 연산의 수행의 동기화는 컴퓨팅 타일(210)이 특정 시간에 또는 특정 순서로 특정 동작을 수행하게 하는 것을 더 포함할 수 있다.
위에서 설명된 바와 같이, 확장 메모리 연산의 수행으로 인한 데이터는 확장 메모리 연산의 수행 이전에 데이터가 저장된 컴퓨팅 타일(210)의 원래 어드레스에 저장될 수 있지만, 일부 실시예에서, 확장 메모리 연산의 수행으로 인한 데이터 블록은 확장 메모리 연산 수행에 이어 로직 레코드(213-1, …, 213-N)로 변환될 수 있다. 로직 레코드(213)는 물리적 위치에 독립적인 데이터 레코드를 포함할 수 있다. 예를 들어, 로직 레코드(213)는 확장 메모리 연산의 수행에 대응하는 물리적 데이터가 저장되는 컴퓨팅 타일(210) 중 적어도 하나의 어드레스(예를 들어, 위치)를 가리키는 데이터 레코드일 수 있다.
도 5 및 도 6과 관련하여 더 상세히 설명된 바와 같이, 본 출원에서 확장 메모리 연산의 결과는 확장 메모리 연산의 수행 이전에 데이터가 저장되는 어드레스와 동일한 컴퓨팅 타일 메모리(예를 들어, 도 5에 예시된 컴퓨팅 타일 메모리(538) 또는 도 6에 도시된 컴퓨팅 타일 메모리(638))의 어드레스에 저장될 수 있다. 그러나 실시예는 이에 한정되지 않으며, 확장 메모리 연산의 결과는 확장 메모리 연산의 수행 이전에 데이터가 저장된 어드레스와 동일한 컴퓨팅 타일 메모리의 어드레스에 저장될 수 있다. 일부 실시예에서, 로직 레코드(213)는 이러한 어드레스 위치를 가리킬 수 있어서, 확장 메모리 연산의 결과(들)가 컴퓨팅 타일(210)로부터 액세스될 수 있고 컴퓨팅 타일(210) 외부의 회로부(예를 들어, 호스트)로 전송될 수 있다.
일부 실시예에서, 오케스트레이션 제어기(206)는 데이터 블록(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)은 32비트, 64비트, 128비트 등의 워드 또는 데이터 청크일 수 있고 및/또는 데이터 블록(311)은 확장 메모리 연산의 수행에 사용되는 피연산자에 대응할 수 있다. 일부 실시예에서, 데이터 블록(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) 개별 컴퓨팅 타일(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 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-1))의 이벤트 큐(예를 들어, 도 5 및 도 6에 예시된 이벤트 큐(532 및 632))에 의해 수신하는 단계, 요청된 데이터를 제 1 컴퓨팅 타일의 메모리 자원(예를 들어, 본 출원의 도 5 및 6에 예시된 컴퓨팅 타일 메모리(538 및 638))에 로딩하는 단계, 요청된 데이터를 전송 데이터를 메시지 버퍼(예를 들어, 본 출원에서 도 5 및 도 6에 예시된 메시지 버퍼(534 및 634))로 전송하는 단계를 포함할 수 있다. 데이터가 메시지 버퍼에 의해 버퍼링되면 데이터는 NoC(408)를 통해 제 2 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-2))로 전송될 수 있다.
예를 들어, 확장 메모리 연산의 수행 동안, 오케스트레이션 제어기(406) 및/또는 제 1 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-1))은 호스트 명령(예를 들어, 도 1에 예시된 호스트(102)와 같은 호스트에 의해 생성된 확장 메모리 연산의 성능을 개시하기 위한 명령)에 의해 지정된 어드레스가 복수의 컴퓨팅 타일(410) 중 제 2 컴퓨팅 타일(예를 들어, 컴퓨팅 타일(410-2))의 메모리 자원 내의 위치에 대응하는지를 결정할 수 있다. 이 경우, 컴퓨팅 타일 명령이 생성되어 오케스트레이션 제어기(406) 및/또는 제 1 컴퓨팅 타일(410-1)로부터 제 2 컴퓨팅 타일(410-2)로 발송되어 컴퓨팅 타일 명령에 의해 지정된 어드레스에서 제 2 컴퓨팅 타일(410-2)의 메모리 자원에 저장된 피연산자를 사용하여 확장 메모리 연산의 성능을 개시할 수 있다.
컴퓨팅 타일 명령의 수신에 응답하여, 제 2 컴퓨팅 타일(410-2)은 컴퓨팅 타일 명령에 의해 지정된 어드레스에서 제 2 컴퓨팅 타일(410-2)의 메모리 자원에 저장된 피연산자를 사용하여 확장 메모리 연산을 수행할 수 있다. 이것은 호스트와 저장 제어기 및/또는 컴퓨팅 타일(410) 사이의 명령 트래픽을 감소시킬 수 있는데, 이는 호스트가 확장 메모리 연산의 수행을 유발하기 위해 추가 명령을 생성할 필요가 없기 때문이며, 이는 예를 들어, 호스트와의 명령 전송과 관련된 시간을 줄임으로써 컴퓨팅 시스템의 전체 성능을 증가시킬 수 있다.
일부 실시예에서, 오케스트레이션 제어기(406)는 확장 메모리 연산을 수행하는 것이 다수의 서브 연산을 수행하는 것을 포함할 수 있는 것을 결정할 수 있다. 예를 들어, 확장 메모리 연산은 전체 확장 메모리 연산을 수행하는 일부로 수행될 수 있는 2개 이상의 서브 연산으로 파싱되거나 분열될 수 있다. 이 경우, 오케스트레이션 제어기(406) 및/또는 NoC(408)는 다양한 컴퓨팅 타일(410)에 의한 서브 연산의 수행을 가능하게 하기 위해 위에서 설명된 어드레스 가시성(address visibility)을 활용할 수 있다. 서브 연산의 완료에 응답하여, 오케스트레이션 제어기(406)는 확장 메모리 연산의 결과에 대응하는 단일 결과로 서브 연산의 결과를 통합되게 할 수 있다.
다른 실시예에서, 컴퓨팅 타일(410)에 저장된 데이터를 요청하는 애플리케이션은 어떤 컴퓨팅 타일(410)이 요청된 데이터를 포함하는지 알 수 있다. 이 예에서, 애플리케이션은 관련 컴퓨팅 타일(410)로부터 데이터를 요청할 수 있고/있거나 어드레스는 다수의 컴퓨팅 타일(410)에 로드될 수 있고 NoC(408)를 통해 데이터를 요청하는 애플리케이션에 의해 액세스될 수 있다.
도 4a에 도시된 바와 같이, 오케스트레이션 제어기(406)는 NoC(408)와 물리적으로 분리된 개별 회로부를 포함한다. NoC(408)는 컴퓨팅 타일(410), 미디어 제어기(412), 및/또는 오케스트레이션 제어기(406) 간의 통신을 허용하는 하나 이상의 집적 회로로서 제공되는 통신 서브 시스템일 수 있다. NoC(408)의 비제한적인 예는 오케스트레이션 제어기(406), 컴퓨팅 타일(410) 및/또는 미디어 제어기(412)의 상호 연결 및/또는 상호 운용성을 허용하는 XBAR 또는 다른 통신 서브 시스템을 포함할 수 있다.
전술한 바와 같이, 오케스트레이션 제어기(406), NoC(408) 및/또는 호스트 (예를 들어, 도 1에 예시된 호스트(102))에 의해 생성된 명령의 수신에 응답하여, 컴퓨팅 타일(410)을 통해 스트리밍되는 데이터 블록으로부터 및/또는 컴퓨팅 타일(410)에 저장된 데이터를 이용한 확장 메모리 연산의 수행이 실현될 수 있다.
도 4b에 도시된 바와 같이, 오케스트레이션 제어기(406)는 복수의 컴퓨팅 타일(410-1,…, 410-8) 중 하나의 컴퓨팅 타일(410-1)에 상주한다. 본 출원에 사용된 용어 "에 상주(resident on)"는 특정 컴포넌트에 물리적으로 위치한 것을 말한다. 예를 들어, 오케스트레이션 제어기(406)가 컴퓨팅 타일(410) 중 하나에 "상주"한다는 것은 오케스트레이션 제어기(406)가 특정 컴퓨팅 타일에 물리적으로 결합되는 조건을 지칭한다. "상주"라는 용어는 본 출원에서”배치된" 또는 "위치한"과 같은 다른 용어와 상호 교환적으로 사용될 수 있다.
전술한 바와 같이, 컴퓨팅 타일(410-1)/오케스트레이션 제어기(406), NoC(408) 및/또는 호스트에 의해 생성된 명령의 수신에 응답하여, 컴퓨팅 타일(410)을 통해 스트리밍되는 데이터 블록으로부터 및/또는 컴퓨팅 타일(410)에 저장된 데이터를 이용한 확장 메모리 연산의 수행이 실현될 수 있다.
도 4c에 도시된 바와 같이, 오케스트레이션 제어기(406)는 NoC(408)에 상주한다. 일부 실시예에서, 오케스트레이션 제어기(406)를 NoC(408)의 일부로서 제공하는 것은 오케스트레이션 제어기(406)와 NoC(408)의 긴밀한 결합을 초래하고, 이는 오케스트레이션 제어기(406)를 사용하여 확장 메모리 연산을 수행하는데 소요되는 시간을 줄일 수 있다.
전술한 바와 같이, 오케스트레이션 제어기(406), NoC(408) 및/또는 호스트에 의해 생성된 명령의 수신에 응답하여, 컴퓨팅 타일(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-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)이 컴퓨팅 타일 메모리(538)에 저장된 데이터를 이용하여 확장 메모리 연산을 수행하게 할 수 있다. 비제한적인 예에서, 시스템 이벤트 큐(530), 이벤트 큐(532) 및 메시지 버퍼(534)는 오케스트레이션 제어기 및/또는 호스트로부터 수신된 명령 및/또는 메시지를 처리하여 컴퓨팅 타일(510)이 데이터가 저장된 컴퓨팅 타일 메모리(538) 내의 물리적 어드레스에 대응하는 어드레스 및/또는 저장된 데이터에 대해 확장 메모리 연산을 수행하게 한다. 이것은 데이터가 오케스트레이션 제어기, 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-3 및 4a-4c에 예시된 오케스트레이션 제어기(106/206/306/406)와 유사할 수 있다. 컴퓨팅 디바이스는 본 출원에서 도 1-, 4a-4c, 및 5-6에 예시된 컴퓨팅 타일(110/210/310/410/510/610)과 유사할 수 있다.
일부 실시예에서, 연산의 수행을 개시하기 위한 명령을 수신하는 것은 연산의 수행에 대응하는 피연산자가 저장되는 특정 컴퓨팅 디바이스의 메모리 위치에 대응하는 어드레스를 수신하는 것을 포함할 수 있다. 예를 들어, 위에서 설명된 바와 같이, 어드레스는 연산 수행시 피연산자로 사용될 데이터가 저장된 메모리 부분(예를 들어, 본 출원에서 도 5 및 도 6에 예시된 컴퓨팅 타일 메모리(538/638)과 같은 컴퓨팅 타일 메모리)의 어드레스일 수 있다.
블록(754)에서, 방법(750)은 제어기에 의해, 복수의 컴퓨팅 디바이스 중 특정 컴퓨팅 디바이스가 명령에 의해 지시된 연산에 대응하는 피연산자를 저장하는지 여부를 결정하는 단계를 포함할 수 있다. 특정 컴퓨팅 디바이스는 본 출원에서 도 1-6에 도시된 컴퓨팅 타일(110/210/310/410/510/610) 중 하나와 유사할 수 있다.
블록(756)에서, 방법(750)은 특정 컴퓨팅 디바이스가 피연산자를 저장한다는 결정에 응답하여, 특정 컴퓨팅 디바이스에 의해 데이터에 대한 연산을 수행하는 단계를 포함할 수 있다. 일부 실시예에서, 연산을 수행하는 것은 본 출원에 설명된 확장 메모리 연산을 수행하는 것을 포함할 수 있다. 연산은 특정 컴퓨팅 디바이스에 의해 제어기에 결합 가능한 호스트로부터 호스트 명령의 수신 없이 연산을 수행하는 것을 더 포함할 수 있다. 동작 수행의 완료에 응답하여, 방법(750)은 제어기에 결합 가능한 호스트에 통지를 발송하는 단계를 포함할 수 있다.
일부 실시예에서, 연산의 수행을 개시하기 위한 명령은 특정 컴퓨팅 디바이스의 메모리 어레이 내의 위치에 대응하는 어드레스를 포함할 수 있고, 방법(750)은 연산의 결과를 특정 컴퓨팅 디바이스의 위치에 대응하는 어드레스에 저장하는 단계를 포함할 수 있다. 예를 들어, 방법(750)은 확장 메모리 연산의 수행 이전에 연산의 수행에 대응하는 피연산자가 저장된 특정 컴퓨팅 디바이스의 메모리 위치에 대응하는 어드레스에 연산의 결과를 저장하는 단계를 포함할 수 있다. 즉, 일부 실시예에서, 연산의 결과는 연산의 수행 전에 연산에 대한 피연산자로서 사용된 데이터가 저장된 컴퓨팅 디바이스의 동일한 어드레스 위치에 저장될 수 있다.
일부 실시예에서, 방법(750)은 제어기에 의해 연산의 수행에 대응하는 피연산자가 특정 컴퓨팅 타일에 의해 저장되지 않는다는 것을 결정하는 단계를 포함할 수 있다. 이러한 결정에 응답하여, 방법(750)은 연산의 수행에 대응하는 피연산자가 복수의 컴퓨팅 디바이스에 결합된 메모리 디바이스에 저장된다는 것을 제어기에 의해 결정하는 단계를 더 포함할 수 있다. 방법(750)은 메모리 디바이스로부터 연산의 수행에 대응하는 피연산자를 검색하는 단계, 연산의 수행에 대응하는 피연산자가 복수의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스에 저장되게 하고, 및/또는 적어도 하나의 컴퓨팅 디바이스를 사용하여 연산을 수행하게 하는 단계를 더 포함할 수 있다. 메모리 디바이스는 도 1에 도시된 메모리 디바이스(116)와 유사할 수 있다.
방법(750)은 일부 실시예들에서, 적어도 하나의 서브 연산이 연산의 일부로서 수행되어야 하는 것을 결정하는 단계, 특정 컴퓨팅 디바이스와 상이한 컴퓨팅 디바이스에 명령을 발송하여 서브 연산을 수행하는 단계 및/또는 특정 컴퓨팅 디바이스와 상이한 컴퓨팅 디바이스를 사용하여, 연산의 수행의 일부로서 서브 연산을 수행하는 단계를 더 포함한다. 예를 들어, 일부 실시예에서, 연산이 다수의 서브 연산으로 분할되어야 한다는 결정이 이루어질 수 있고, 제어기는 연산을 수행하는 일부로서 상이한 컴퓨팅 디바이스가 상이한 서브 연산을 수행하게 할 수 있다. 일부 실시예에서, 오케스트레이션 제어기는 본 출원에서 도 1-4에 예시된 NoC (108/208/308/408)과 같은 통신 서브 시스템과 협력하여 연산 수행의 일부로서 2개 이상의 컴퓨팅 디바이스에 서브 연산을 할당할 수 있다.
특정 실시예가 본 출원에서 예시되고 설명되었지만, 당업자는 동일한 결과를 달성하도록 계산된 배열이 도시된 특정 실시예를 대체할 수 있음을 이해할 것이다. 본 개시는 본 개시의 하나 이상의 실시예의 적응 또는 변형을 포함하도록 의도된다. 상기 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어진 것임을 이해해야 한다. 상기 실시예의 조합, 및 본 출원에 구체적으로 설명되지 않은 다른 실시예는 상기 설명을 검토할 때 당업자에게 명백할 것이다. 본 개시의 하나 이상의 실시예의 범위는 상기 구조 및 프로세스가 사용되는 다른 애플리케이션을 포함한다. 따라서, 본 개시의 하나 이상의 실시예의 범위는 첨부된 청구범위를 참조하여 결정되어야 하며, 이러한 청구범위가 부여되는 등가물의 전체 범위와 함께 결정되어야 한다.
전술한 상세한 설명에서, 일부 특징은 본 개시를 간소화할 목적으로 단일 실시예에서 함께 그룹화된다. 이러한 개시 방법은 본 개시의 개시된 실시예가 각각의 청구항에서 명시적으로 인용된 것보다 더 많은 특징을 사용해야 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음 청구범위가 반영하는 바와 같이, 독창적인 주제는 단일의 개시된 실시예의 모든 특징보다 적다. 따라서, 다음 청구범위는 이에 의해 상세한 설명에 통합되며, 각 청구범위는 그 자체로 별도의 실시예로 서 있다.
Claims (25)
- 장치에 있어서,
처리 디바이스 및 상기 처리 디바이스에 대한 캐시로서 구성된 메모리 자원을 포함하는 컴퓨팅 디바이스를 포함하되, 상기 컴퓨팅 디바이스는,
상기 컴퓨팅 디바이스의 상기 처리 유닛으로 데이터에 대한 연산을 수행하는 것을 포함하는 연산을 수행하기 위한 명령을 수신하고;
상기 연산에 대응하는 피연산자(operand)가 상기 메모리 자원에 저장되어 있는지 여부를 결정하고; 및
상기 결정에 응답하여, 상기 메모리 자원에 저장된 피연산자를 사용하여 상기 연산을 수행하도록 구성된, 장치. - 청구항 1에 있어서, 상기 연산을 수행하는 명령은 어드레스 부분, 세그먼트 크기 부분 및 길이 부분 중 적어도 하나를 포함하는, 장치.
- 청구항 1에 있어서, 상기 컴퓨팅 디바이스는 상기 피연산자를 로딩하거나 저장하기 위한 개입 동작없이 상기 연산을 수행하도록 추가로 구성된, 장치.
- 청구항 1에 있어서, 상기 컴퓨팅 디바이스는 상기 컴퓨팅 디바이스 외부의 회로부로부터 개입 명령의 수신 없이 상기 연산을 수행하도록 추가로 구성된, 장치.
- 청구항 1에 있어서, 상기 피연산자는 길이가 32비트 이상인 비트 스트링(bit string)을 포함하는, 장치.
- 청구항 1 내지 청구항 5 중 어느 한 항에 있어서, 상기 컴퓨팅 디바이스는 제 1 컴퓨팅 디바이스이고, 상기 제 1 컴퓨팅 디바이스는 제 2 컴퓨팅 디바이스에 결합되고, 상기 제 1 컴퓨팅 디바이스는,
상기 확장 메모리 연산에 대응하는 피연산자가 상기 제 1 컴퓨팅 디바이스의 메모리 자원에 저장되지 않은 것을 결정하고;
상기 피연산자가 상기 제 1 컴퓨팅 디바이스의 상기 메모리 자원에 저장되지 않는다는 결정에 응답하여, 상기 피연산자가 상기 제 2 컴퓨팅 디바이스에 대응하는 메모리 자원에 저장된 것을 결정하고;
상기 제 2 컴퓨팅 디바이스의 메모리 자원에 저장된 피연산자를 사용하여 상기 연산의 수행을 개시하기 위한 명령을 상기 제 2 디바이스에 발송하고; 및
상기 제 2 컴퓨팅 디바이스에 의해, 상기 제 2 컴퓨팅 디바이스의 메모리 자원에 저장된 피연산자를 사용하여 상기 연산을 수행하도록 구성된, 장치. - 청구항 6에 있어서, 상기 제 1 컴퓨팅 디바이스는, 상기 피연산자가 상기 제 2 컴퓨팅 디바이스에 대응하는 메모리 자원에 저장되어 있는 것을 결정하고, 상기 컴퓨팅 디바이스 외부 회로부로부터 개입 명령의 수신 없이 상기 연산의 수행을 개시하기 위한 명령을 상기 제 2 컴퓨팅 디바이스로 발송하도록 구성되고, 및
상기 제 2 컴퓨팅 디바이스는 상기 제 2 컴퓨팅 디바이스의 메모리 자원에 저장된 피연산자를 사용하여 상기 연산의 수행을 개시하기 위한 명령에 후속하는 명령없이 상기 제 2 컴퓨팅 디바이스의 메모리 자원에 저장된 피연산자를 사용하여 상기 연산을 수행하도록 구성된, 장치. - 청구항 1 내지 청구항 5 중 어느 한 항에 있어서, 상기 컴퓨팅 디바이스는 상기 연산의 수행 이전에 상기 피연산자가 저장된 메모리 자원의 어드레스 위치에 상기 연산의 결과를 저장하도록 구성된, 장치.
- 방법에 있어서,
각각이 서로 결합되고 각각이 처리 유닛 및 상기 처리 유닛에 대한 캐시로서 구성된 메모리 어레이를 포함하는, 복수의 컴퓨팅 디바이스에 결합된 제어기에 의해, 상기 복수의 컴퓨팅 디바이스 중 특정 컴퓨팅 디바이스의 처리 유닛을 이용하여 데이터에 대해 연산을 수행하는 것을 포함하는 연산의 수행을 개시하기 위한 명령을 수신하는 단계;
상기 제어기에 의해, 상기 복수의 컴퓨팅 디바이스 중 특정 컴퓨팅 디바이스가 상기 명령에 의해 지시된 연산에 대응하는 피연산자를 저장하는지 여부를 결정하는 단계;
상기 특정 컴퓨팅 디바이스에 의해, 상기 특정 컴퓨팅 디바이스가 상기 피연산자를 저장한다는 결정에 응답하여 상기 데이터에 대한 연산을 수행하는 단계를 포함하는, 방법. - 청구항 9에 있어서, 상기 명령은 상기 특정 컴퓨팅 디바이스의 메모리 어레이 내의 위치에 대응하는 어드레스를 포함하는, 방법.
- 청구항 10에 있어서, 상기 특정 컴퓨팅 디바이스의 위치에 대응하는 어드레스에 상기 연산의 결과를 저장하는 단계를 더 포함하는, 방법.
- 청구항 9에 있어서,
상기 제어기에 의해, 상기 연산의 수행에 대응하는 피연산자가 상기 특정 컴퓨팅 디바이스에 의해 저장되지 않는 것을 결정하는 단계;
상기 제어기에 의해, 상기 연산의 수행에 대응하는 피연산자가 상기 복수의 컴퓨팅 디바이스에 결합된 메모리 디바이스에 저장되어 있는 것을 결정하는 단계;
상기 메모리 디바이스로부터 상기 연산의 수행에 대응하는 피연산자를 검색하는 단계;
상기 연산의 수행에 대응하는 피연산자가 상기 복수의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스에 저장되게 하는 단계; 및
상기 적어도 하나의 컴퓨팅 디바이스를 사용하여 상기 연산을 수행하게 하는 단계를 더 포함하는, 방법. - 청구항 9에 있어서, 상기 확장 메모리 연산을 수행하는 단계는, 상기 특정 컴퓨팅 디바이스에 의해, 상기 복수의 컴퓨팅 디바이스에 결합 가능한 호스트로부터 호스트 명령의 수신 없이 상기 확장 메모리 연산을 수행하는 단계를 더 포함하는, 방법.
- 청구항 9에 있어서,
적어도 하나의 서브 연산(sub-operation)이 상기 연산의 일부로서 수행되어야 하는 것을 결정하는 단계;
상기 특정 컴퓨팅 디바이스와 상이한 컴퓨팅 디바이스에 명령을 발송하여 상기 서브 연산의 수행을 유발하는 단계; 및
상기 특정 컴퓨팅 디바이스와 상이한 컴퓨팅 디바이스를 사용하여 상기 연산의 수행의 일부로서 상기 서브 연산을 수행하는 단계를 포함하는, 방법. - 청구항 9 내지 청구항 14 중 어느 한 항에 있어서, 상기 확장 메모리 연산의 완료에 응답하여 상기 복수의 컴퓨팅 디바이스에 결합 가능한 호스트에 통지를 발송하는 단계를 더 포함하는, 방법.
- 시스템에 있어서,
호스트;
상기 호스트 및 적어도 하나의 메모리 디바이스에 결합된 제어기를 포함하고, 상기 저장 제어기(storage controller)는,
서브 제어기;
통신 서브 시스템; 및
상기 서브 제어기 및 상기 통신 서브 시스템에 결합된 복수의 컴퓨팅 디바이스를 포함하되, 각각의 컴퓨팅 디바이스는 개별 메모리 자원 및 처리 유닛을 포함하고, 상기 복수의 컴퓨팅 디바이스 중 제 1 컴퓨팅 디바이스는,
상기 제 1 컴퓨팅 디바이스의 처리 유닛을 이용하여 데이터에 대한 연산을 수행하는 것을 포함하는 연산을 수행하기 위한 호스트 명령을 수신하고, 상기 호스트 명령은 상기 복수의 컴퓨팅 디바이스 중 특정 컴퓨팅 디바이스에 대응하는 메모리 자원과 연관된 어드레스를 포함하고;
상기 호스트 명령에 의해 지정된 어드레스가 상기 제 1 컴퓨팅 디바이스의 메모리 자원 내의 위치에 대응하는 것을 결정하고; 및
상기 명령에 의해 지정된 어드레스가 상기 제 1 컴퓨팅 디바이스의 메모리 자원 내의 위치에 대응한다는 결정에 응답하여, 상기 호스트 명령에 의해 지정된 어드레스에서 상기 제 1 컴퓨팅 디바이스의 메모리 자원에 저장된 피연산자를 사용하여 상기 연산을 수행하도록 구성된, 시스템. - 청구항 16에 있어서, 상기 제 1 컴퓨팅 디바이스는 상기 호스트 명령에 후속하는 명령 없이 상기 연산을 수행하도록 추가로 구성된, 시스템.
- 청구항 16에 있어서, 상기 복수의 컴퓨팅 디바이스 중 상기 제 1 컴퓨팅 디바이스는,
상기 호스트 명령에 의해 지정된 어드레스가 상기 복수의 컴퓨팅 디바이스 중 제 2 컴퓨팅 디바이스의 메모리 자원 내의 위치에 대응하는 것을 결정하고;
상기 명령에 의해 지정된 어드레스에서 상기 제 2 컴퓨팅 디바이스의 메모리 자원에 저장된 피연산자를 사용하여 상기 확장 메모리 연산의 수행을 개시하기 위한 명령을 상기 제 2 컴퓨팅 디바이스로 발송하고; 및
상기 제 2 컴퓨팅 디바이스를 사용하여 상기 명령에 의해 지정된 어드레스에서 상기 제 2 컴퓨팅 디바이스의 메모리 자원에 저장된 피연산자를 사용하여 상기 연산을 수행하도록 추가로 구성된, 시스템. - 청구항 18에 있어서, 상기 복수의 컴퓨팅 디바이스 중 상기 제 1 컴퓨팅 디바이스는 상기 통신 서브 시스템을 통해 상기 명령을 상기 제 2 컴퓨팅 디바이스로 발송하도록 추가로 구성된, 시스템.
- 청구항 18에 있어서, 상기 제 2 컴퓨팅 디바이스는 상기 명령에 후속하는 명령 없이 상기 연산을 수행하도록 추가로 구성된, 시스템.
- 청구항 16에 있어서, 상기 제 1 컴퓨팅 디바이스는,
적어도 하나의 서브 연산이 상기 연산의 일부로서 수행되어야 하는 것을 결정하고;
상기 서브 연산의 수행을 유발하는 명령을 상기 복수의 컴퓨팅 디바이스 중에서 제 2 컴퓨팅 디바이스로 발송하고; 및
상기 제 2 컴퓨팅 디바이스를 사용하여, 상기 연산의 수행의 일부로서 상기 서브 연산을 수행하도록 추가로 구성된, 시스템. - 청구항 21에 있어서, 상기 제 2 컴퓨팅 디바이스는 상기 호스트로부터 명령을 수신하지 않고 상기 서브 연산을 수행하도록 더 구성된, 시스템.
- 청구항 21에 있어서, 상기 제 2 컴퓨팅 디바이스는 상기 제 1 컴퓨팅 디바이스에 상기 서브 연산의 결과를 발송하도록 추가로 구성되고, 상기 제 1 컴퓨팅 디바이스는 상기 연산의 수행시 상기 서브 연산의 결과를 사용하도록 추가로 구성된, 시스템.
- 청구항 16에 있어서, 상기 제어기에 결합된 메모리 디바이스를 더 포함하고, 상기 서브 제어기는 상기 메모리 디바이스에 의해 저장된 데이터에 대해 판독, 기록, 복사, 소거 및 오류 정정 동작을 수행하도록 구성된, 시스템.
- 청구항 16 내지 청구항 24 중 어느 한 항에 있어서, 상기 제 1 컴퓨팅 디바이스는 상기 호스트 명령에 의해 지정된 어드레스에 대응하는 상기 제 1 컴퓨팅 디바이스의 메모리 자원의 위치에 상기 연산의 결과를 저장하도록 추가로 구성된, 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/366,774 US10983795B2 (en) | 2019-03-27 | 2019-03-27 | Extended memory operations |
US16/366,774 | 2019-03-27 | ||
PCT/US2020/015293 WO2020197620A1 (en) | 2019-03-27 | 2020-01-28 | Extended memory operations |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210134048A true KR20210134048A (ko) | 2021-11-08 |
Family
ID=72607740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217033925A KR20210134048A (ko) | 2019-03-27 | 2020-01-28 | 확장 메모리 연산 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10983795B2 (ko) |
EP (1) | EP3948526A4 (ko) |
KR (1) | KR20210134048A (ko) |
CN (1) | CN113490915A (ko) |
WO (1) | WO2020197620A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11327802B2 (en) * | 2019-07-31 | 2022-05-10 | Microsoft Technology Licensing, Llc | System and method for exporting logical object metadata |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2644780B2 (ja) * | 1987-11-18 | 1997-08-25 | 株式会社日立製作所 | 処理依頼機能を持つ並列計算機 |
US7254696B2 (en) | 2002-12-12 | 2007-08-07 | Alacritech, Inc. | Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests |
US8332580B2 (en) * | 2008-04-02 | 2012-12-11 | Zikbit Ltd. | System, method and apparatus for memory with embedded associative section for computations |
US20100017649A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation | Data storage system with wear-leveling algorithm |
US8060724B2 (en) * | 2008-08-15 | 2011-11-15 | Freescale Semiconductor, Inc. | Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor |
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 |
US8683135B2 (en) | 2010-10-31 | 2014-03-25 | Apple Inc. | Prefetch instruction that ignores a cache hit |
US8922243B2 (en) * | 2012-12-23 | 2014-12-30 | Advanced Micro Devices, Inc. | Die-stacked memory device with reconfigurable logic |
US9104532B2 (en) * | 2012-12-14 | 2015-08-11 | International Business Machines Corporation | Sequential location accesses in an active memory device |
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 |
US9003109B1 (en) | 2014-05-29 | 2015-04-07 | SanDisk Technologies, Inc. | System and method for distributed computing in non-volatile memory |
US9696920B2 (en) * | 2014-06-02 | 2017-07-04 | Micron Technology, Inc. | Systems and methods for improving efficiencies of a memory system |
US20150371684A1 (en) | 2014-06-18 | 2015-12-24 | NXGN Data, Inc. | Ultra high capacity ssd |
CN107408404B (zh) * | 2015-02-06 | 2021-02-12 | 美光科技公司 | 用于存储器装置的设备及方法以作为程序指令的存储 |
US10372358B2 (en) | 2015-11-16 | 2019-08-06 | International Business Machines Corporation | Access processor |
US10114795B2 (en) * | 2016-12-30 | 2018-10-30 | Western Digital Technologies, Inc. | Processor in non-volatile storage memory |
US10909037B2 (en) | 2017-04-21 | 2021-02-02 | Intel Corpor Ation | Optimizing memory address compression |
-
2019
- 2019-03-27 US US16/366,774 patent/US10983795B2/en active Active
-
2020
- 2020-01-28 EP EP20777539.6A patent/EP3948526A4/en not_active Withdrawn
- 2020-01-28 WO PCT/US2020/015293 patent/WO2020197620A1/en unknown
- 2020-01-28 CN CN202080016964.9A patent/CN113490915A/zh not_active Withdrawn
- 2020-01-28 KR KR1020217033925A patent/KR20210134048A/ko not_active Application Discontinuation
-
2021
- 2021-03-25 US US17/212,330 patent/US11579882B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2020197620A1 (en) | 2020-10-01 |
US20210208890A1 (en) | 2021-07-08 |
EP3948526A4 (en) | 2022-12-14 |
EP3948526A1 (en) | 2022-02-09 |
US20200310810A1 (en) | 2020-10-01 |
US10983795B2 (en) | 2021-04-20 |
US11579882B2 (en) | 2023-02-14 |
CN113490915A (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240105260A1 (en) | Extended memory communication | |
US11650941B2 (en) | Computing tile | |
CN113994314B (zh) | 扩展存储器接口 | |
US11579882B2 (en) | Extended memory operations | |
KR102722832B1 (ko) | 저장 디바이스 동작 오케스트레이션 | |
KR20220039808A (ko) | 확장 메모리 인터페이스 | |
CN114258528A (zh) | 阶层式存储器设备 | |
CN113454612B (zh) | 存储装置操作编排 | |
KR20240157127A (ko) | 저장 디바이스 동작 오케스트레이션 | |
CN114258534B (zh) | 阶层式存储器系统 | |
KR20220034939A (ko) | 메모리에서 추론 | |
EP4018325A1 (en) | Hierarchical memory apparatus | |
CN114270311A (zh) | 分级存储器系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |