KR102198617B1 - 부분 데이터 컴퓨팅을 갖는 컴퓨팅 시스템 및 그것의 동작 방법 - Google Patents
부분 데이터 컴퓨팅을 갖는 컴퓨팅 시스템 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR102198617B1 KR102198617B1 KR1020150040719A KR20150040719A KR102198617B1 KR 102198617 B1 KR102198617 B1 KR 102198617B1 KR 1020150040719 A KR1020150040719 A KR 1020150040719A KR 20150040719 A KR20150040719 A KR 20150040719A KR 102198617 B1 KR102198617 B1 KR 102198617B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- block
- hardware
- memory
- computing
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- 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/0608—Saving storage space on storage systems
-
- 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/061—Improving I/O performance
-
- 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
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1042—Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/109—Control signal input circuits
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)
- Read Only Memory (AREA)
- Advance Control (AREA)
Abstract
본 발명은 컴퓨팅 시스템에 관한 것이다. 본 발명의 컴퓨팅 시스템은 디코딩한 데이터 패킷에 근거하여 부분 데이터 컴퓨팅(PDC: Partial Data Computing) 커맨드, 데이터 마스크, 부분 데이터, 또는 그것들의 조합을 식별하고, PDC 커맨드, 데이터 마스크, 부분 데이터, 또는 그것들의 조합에 따라 수정되는 읽기 데이터의 부분을 식별하기 위한 계산 결과를 계산하고, 계산 결과에 따라 읽기 데이터의 부분의 식별에 근거한 병합 결과를 생성하는 메모리 컴퓨팅 블록, 및 메모리 컴퓨팅 블록에 연결되고, 병합 결과를 전송하는 메모리 인터페이스를 포함하는 컴퓨팅 시스템.
Description
본 발명은 컴퓨터 시스템에 관련된 것으로, 특히 부분 데이터 컴퓨팅을 갖는 컴퓨터 시스템에 관한 것이다.
서버들, 어플라이언스(appliance)들, 텔레비전들, 셀룰러 폰들, 자동차들,, 위성들, 및 결합 기기들과 같은, 현대 소비자와 산업 기기들은 현대 삶을 지원하기 위한 기능적인 수준들을 증가시키는 것을 제공한다. 성능 요구들은 소비자 제품들과 기업 또는 상업적 제품들 사이에 다를 수 있는 반면에 그것들은 데이터 계산의 효율을 위한 공통적인 필요가 있다.
존재하는 기술들 내에서의 연구와 개발은 무수히 많은 다른 방향들로 수행될 수 있다. 일부는 동작 성능을 위해 메모리 계층 접근(memory hierarchy approach)으로 나아간다. 다른 것들은 읽기와 쓰기의 전체 라인의 프로세스만을 위한 프로세서들 내의 부분 컴퓨팅으로 동작한다.
따라서, 부분적인 데이터의 컴퓨팅 효율을 위한 부분 데이터 컴퓨팅 메커니즘을 갖는 컴퓨팅 시스템을 위한 필요가 여전히 남아 있었다. 소비자 기대의 증가와 시장 내 상징적인 제품의 차별화를 위한 기회의 감소에 따라 계속 증가하는 상업적인 경쟁 압박들의 관점에서, 이러한 문제들의 해결책들을 찾는 것이 점점 중요하다. 또한, 비용의 감소에 대한 수요, 효율과 성능의 개선, 및 경쟁적인 압박의 직면은 이러한 문제들의 해결책을 찾기 위해 더 긴급하게 추가되고 있다. 이러한 문제들의 해결책들은 오랫동안 찾고 있으나, 이전에 개발들이 어느 해결책들을 교시하거나 제안하지 않고, 따라서, 이러한 문제들은 해당 기술 분야에서 오랫동안 이룰 수 없었다.
본 발명의 목적은 컴퓨팅 시스템의 성능을 개선하는 부분 데이터 컴퓨팅을 갖는 컴퓨팅 시스템 및 그것의 동작 방법을 제공함에 있다.
본 발명의 다른 목적은 읽기 데이터의 업데이트 효율을 개선하는 부분 데이터 컴퓨팅을 갖는 컴퓨팅 시스템 및 그것의 동작 방법을 제공함에 있다.
본 발명의 다른 목적은 전원 소비의 개선에 의한 효율을 개선하는 부분 데이터 컴퓨팅을 갖는 컴퓨팅 시스템 및 그것의 동작 방법을 제공함에 있다.
본 발명에 따른 컴퓨팅 시스템은 디코딩한 데이터 패킷에 근거하여 부분 데이터 컴퓨팅(PDC: Partial Data Computing) 커맨드, 데이터 마스크, 부분 데이터, 또는 그것들의 조합을 식별하고, 상기 PDC 커맨드, 상기 데이터 마스크, 상기 부분 데이터, 또는 그것들의 조합에 따라 수정되는 읽기 데이터의 부분을 식별하기 위한 계산 결과를 계산하고, 상기 계산 결과에 따라 상기 읽기 데이터의 부분의 식별에 근거한 병합 결과를 생성하는 메모리 컴퓨팅 블록, 및 상기 메모리 컴퓨팅 블록에 연결되고, 상기 병합 결과를 전송하는 메모리 인터페이스를 포함한다.
이 실시예에 있어서, 상기 메모리 컴퓨팅 블록은 상기 읽기 데이터의 제 1 인스턴스를 수신하고, 상기 읽기 데이터의 제 2 인스턴스를 수신하고, 상기 읽기 데이터의 제 2 인스턴스로 상기 읽기 데이터의 상기 제 1 인스턴스의 일부의 수정에 근거한 상기 병합 결과를 생성한다.
이 실시예에 있어서, 상기 메모리 컴퓨팅 블록은 상기 부분 데이터로 수정되는 상기 읽기 데이터의 부분을 좁게하기 위해 상기 데이터 마스크에 근거하여 상기 계산 결과를 계산한다.
이 실시예에 있어서, 상기 메모리 컴퓨팅 블록은 상기 데이터 패킷의 데이터 청크(data chunk)의 다른 인스턴스들 내 복수의 PDC 커맨드를 식별하기 위한 데이터 패킷을 디코드한다.
이 실시예에 있어서, 상기 메모리 인터페이스는 상기 병합 결과 내 호스트 기기, 저장 블록, 또는 그것들의 조합의 업데이트를 위한 동작 데이터를 전송한다.
이 실시예에 있어서, 상기 메모리 인터페이스는 호스트 프로세서에 의해 생성된 상기 PDC 커맨드, 상기 데이터 마스크, 상기 부분 데이터, 또는 조합 데이터를 포함하는 상기 데이터 패킷을 프로세싱하기 위한 데이터 패킷을 수신한다.
이 실시예에 있어서, 상기 메모리 인터페이스에 연결되고, 상기 병합 결과에 근거하여 저장된 데이터를 업데이트하는 저장 블록을 더 포함한다.
이 실시예에 있어서, 상기 메모리 컴퓨팅 블록은 업데이트되는 상기 읽기 데이터의 부분을 식별하기 위해 데이터 청크(data chunk)의 디코딩에 근거하여 데이터 마스크를 식별한다.
이 실시예에 있어서, 상기 메모리 컴퓨팅 블록은 상기 읽기 데이터의 일부를 수정하기 위한 상기 PDC 커맨드를 수행한다.
이 실시예에 있어서, 상기 메모리 컴퓨팅 블록은 상기 읽기 데이터의 일부를 업데이트하기 위해 상기 읽기 데이터에 대한 상기 계산 결과의 병합에 근거하여 상기 병합 결과를 생성한다.
본 발명에 따른 컴퓨팅 시스템의 동작 방법은 데이터 패킷에 근거하여 부분 데이터 컴퓨팅(PDC: Partial Data Computing) 커맨드, 데이터 마스크, 부분 데이터, 또는 그것들의 조합을 식별하는 단계, 상기 PDC 커맨드, 상기 데이터 마스크, 상기 부분 데이터, 또는 그것들의 조합에 따라 수정되는 읽기 데이터의 부분을 식별하기 위한 메모리 컴퓨팅 블록에 대한 계산 결과를 계산하는 단계, 상기 계산 결과에 따라 상기 읽기 데이터의 부분의 식별에 근거한 병합 결과를 생성하는 단계, 및 상기 병합 결과를 전송하는 단계를 포함한다.
이 실시예에 있어서, 상기 읽기 데이터의 제 1 인스턴스를 수신하는 단계, 상기 읽기 데이터의 제 2 인스턴스를 수신하는 단계, 상기 읽기 데이터의 제 2 인스턴스로 상기 읽기 데이터의 상기 제 1 인스턴스의 일부의 수정에 근거한 상기 병합 결과를 생성하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 계산 결과를 계산하는 단계는 상기 부분 데이터로 수정되는 상기 읽기 데이터의 부분을 좁게하기 위해 상기 데이터 마스크에 근거하여 상기 계산 결과를 계산하는 단계를 포함한다.
이 실시예에 있어서, 상기 데이터 패킷의 데이터 청크(data chunk)의 다른 인스턴스들 내 복수의 PDC 커맨드를 식별하기 위한 데이터 패킷을 디코딩하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 병합 결과 내 호스트 기기, 저장 블록, 또는 그것들의 조합의 업데이트를 위한 동작 데이터를 전송한다.
본 발명에 따른 컴퓨팅 시스템의 동작 방법은 부분 데이터 컴퓨팅(PDC: Partial Data Computing) 커맨드, 데이터 마스크, 부분 데이터, 또는 그것들의 조합에 따라 수정되는 읽기 데이터의 부분을 식별하기 위한 메모리 블록 내 계산 결과를 계산하기 위한 호스트 프로세서에 대한 데이터 패킷을 생성하는 단계, 및 상기 PDC 커맨드, 상기 데이터 마스크, 상기 부분 데이터, 또는 그것들의 조합을 포함하는 데이터 패킷을 전송하는 단계를 포함한다.
이 실시예에 있어서, 상기 데이터 패킷을 생성하는 단계는 상기 읽기 데이터의 다른 인스턴스로 상기 읽기 데이터의 부분으로 수정하기 위해 복수의 PDC 커맨드를 포함하는 상기 데이터 패킷을 생성하는 단계를 포함한다.
이 실시예에 있어서, 상기 데이터 패킷을 생성하는 단계는 상기 부분 데이터로 수정되는 상기 읽기 데이터의 부분을 좁게하기 위해 상기 데이터 마스크를 포함하는 상기 데이터 패킷을 생성하는 단계를 포함한다.
이 실시예에 있어서, 상기 데이터 패킷을 생성하는 단계는 상기 부분 데이터로 상기 읽기 데이터의 부분을 식별하기 위해 상기 PDC 커맨드를 포함하는 상기 데이터 패킷을 생성하는 단계를 포함한다.
이 실시예에 있어서, 상기 계산 결과에 대한 상기 읽기 데이터의 일부의 수정에 근거하여 병합 결과를 수신하는 단계를 더 포함한다.
본 발명에 따른 컴퓨팅 시스템은 부분 데이터 계산을 수행하는 메모리 블록을 이용함으로써, 컴퓨팅 시스템의 성능을 향상시킬 수 있다. 컴퓨팅 시스템은 메모리 블록 내 부분 데이터 컴퓨팅을 통해 읽기 데이터의 업데이트 효율을 개선할 수 있다. 또한, 컴퓨팅 시스템은 부분 데이터 컴퓨팅을 위한 PDC 커맨드를 포함함으로써, 컴퓨팅 시스템의 전원 소비에 따른 효율을 개선할 수 있다.
도 1은 본 발명의 실시예에 따른 부분 데이터 컴퓨팅 매커니즘을 갖는 컴퓨팅 시스템을 도시한 도면,
도 2는 본 발명의 실시예에 따른 메모리 컴퓨팅 블록을 도시한 블록도,
도 3은 본 발명의 추가적인 실시예에 따른 쓰기 커맨드를 나타내는 PDC 커맨드를 위한 부분 데이터 컴퓨팅의 타이밍도,
도 4는 컴퓨팅 시스템의 제어 흐름을 도시한 도면,
도 5는 본 발명의 실시예에 따른 컴퓨팅 시스템의 응용예를 도시한 도면, 및
도 6은 본 발명의 실시예에 따른 컴퓨팅 시스템의 동작 방법을 도시한 순서도이다.
도 2는 본 발명의 실시예에 따른 메모리 컴퓨팅 블록을 도시한 블록도,
도 3은 본 발명의 추가적인 실시예에 따른 쓰기 커맨드를 나타내는 PDC 커맨드를 위한 부분 데이터 컴퓨팅의 타이밍도,
도 4는 컴퓨팅 시스템의 제어 흐름을 도시한 도면,
도 5는 본 발명의 실시예에 따른 컴퓨팅 시스템의 응용예를 도시한 도면, 및
도 6은 본 발명의 실시예에 따른 컴퓨팅 시스템의 동작 방법을 도시한 순서도이다.
본 발명에 따른 다양한 예들은 컴퓨팅 효율 개선을 위한 메모리 블록 내부의 임베디드된 메모리 컴퓨팅 블록을 포함한다. 메모리 블록 내부의 메모리 컴퓨팅 블록의 임베디드에 의해, 실시예들은 상기 메모리 블록의 레벨에서 자동적으로 부분 데이터 컴퓨팅을 수행할 수 있다. 더 상세한 예로서, 메모리 블록의 내부에 메모리 컴퓨팅 블록을 갖는 것에 의해, 읽기 데이터의 전체 라인 보다 더 좁은 폭의 데이터로 동작할 수 있다. 그 결과, 메모리 블록은 데이터 컴퓨팅을 위한 효율을 개선하기 위한 새로운 기능을 포함할 수 있다.
다양한 예시적인 실시예들은 컴퓨팅 시스템의 성능을 개선하는 부분 데이터 컴퓨팅(PDC: partial data computing)을 위한 부분 데이터 컴퓨팅(PDC) 커맨드들을 포함한다. 더 상세한 예로서, 부분 데이터 계산의 수행을 위한 메모리 블록의 허용에 의해, 컴퓨팅 시스템은 전체 시스템 성능을 개선하기 위한 부가적인 계산들을 수행하는 호스트 기기를 위해 더 많은 자원을 할당할 수 있다.
다양한 예시적인 실시예들은 컴퓨팅 시스템의 전원 소비의 개선에 의한 효율을 개선하는 부분 데이터 컴퓨팅을 위한 PDC 커맨드들을 포함한다. 더 상세한 예로서, 내부의 부분 데이터 계산의 수행을 위한 메모리 블록의 허용에 의해, 컴퓨팅 시스템은 컴퓨팅 동작을 위해 필요로 하는 외부 입력/출력의 양을 최소화할 수 있다. 더욱이, 중앙 처리 장치(CPU: Central Processing Unit)로 전송되는 데이터를 더 이상 필요로 하지 않음으로 전원 소비는 감소된다. 그 결과, 컴퓨팅 시스템은 여기에 기재된 부분 데이터 컴퓨팅의 사용에 의해 대역폭(bandwidth)과 전원 소비의 개선에 의해 효율이 개선될 수 있다.
다음 실시예들은 본 발명이 만들어지고 사용되는 기술 분야에서 실행되기에 충분히 상세히 기술된다. 현재 기재된 것들에 근거한 다른 실시예들과, 그러한 시스템, 프로세서, 아키텍쳐, 또는 기술적 변형들이 본 발명의 실시예들의 범위를 벗어나지 않도록 만들어질 수 있는 것으로 이해될 수 있다.
다음에 기술되는 많은 특정 상세들이 본 발명의 다양한 실시예들의 이해를 돕기 위해 제공될 것이다. 그러나, 그러한 다양한 실시예들은 여기에 기재된 특정 상세들 없이 실행될 수 있다. 모호한 다양한 실시예들을 회피하기 위해, 일부 잘 알려진 회로들, 시스템 구성들, 및 프로세스 단계들은 상세히 설명되지 않는다.
시스템의 실시예들을 보여주는 도면들은 제한적으로 도식되고, 비율로 한정되지 않고, 특히, 차원들 중 일부는 보여주는 것을 명확히 하기 위해 도시된 도면들 내 과장되도록 도시될 수 있다. 마찬가지로, 비록 설명의 편의를 위한 도면들 내 시점들이 유사한 방향을 일반적으로 보여주더라도, 이 도면들 내의 묘사는 대부분의 부분에서 임의로 설정된다. 일반적으로 본 발명은 임의의 방향에서 동작할 수 있다.
여기에 나타난 "모듈" 의 용어는 그 용어가 사용된 문맥에 따른 본 발명의 실시예에서 소프트웨어, 하드웨어 또는 그것들의 조합을 포함할 수 있다. 예를 들면, 소프트웨어 모듈은 기계 코드, 펌웨어, 임베디드 코드, 및/또는 응용 소프트웨어를 포함할 수 있다. 또 예를 들면, 하드웨어는 회로, 프로세서(들), 컴퓨터(들), 집적 회로(들), 집적 회로 코어들, 압력 센서(들), 관성 센서(들), 마이크로전자기계시스템(MEMS: microelectromechanical system)(들), 수동 장치들, 또는 그것들의 조합을 포함할 수 있다. 더욱이, 모듈은 하기에서 장치 청구항들의 영역으로 기술될 수 있고, 모듈들은 장치 청구항들의 범위와 목적을 위한 하드웨어 회로를 포함한 것으로 간주될 수 있다.
실시예들의 다음과 같은 기재 내 모듈들은 묘사되거나 보여지는 바와 같은 다른 하나에 연결될 수 있다. 연결은 연결된 아이템들 사이의 중간의 아이템들에 각각과 함께 또는 없이 직접 또는 간접일 수 있다. 연결은 아이템들 사이의 물리적 접촉 또는 통신에 의한 것일 수 있다.
도 1은 본 발명의 실시예에 따른 부분 데이터 컴퓨팅 매커니즘을 갖는 컴퓨팅 시스템을 도시한 도면이다.
도 1을 참조하면, 자동적으로 계산되는 부분 데이터의 컴퓨팅 시스템의 일 실시예를 도시한다. 자동적으로 계산되는 부분 데이터의 용어는 연산의 적어도 하나의 피연산자(operand)들을 위한 데이터 계산을 나타낸다. 그 연산은 프로세서 내 발견되는 산술논리연산장치(ALU: arithmetic logic unit) 내 발견되는 기능일 수 있다. 그러한 연산들의 예들은 산술 연산(arithmetic operation), 불리언 연산(Boolean operation), 쉬프트 연산(shift operation), 유한 필드 매스 연산(finite field math operation), 또는 그것들의 조합을 포함할 수 있다. 원자적 연산(atomic operation)의 용어는 다른 연산에 의한 중간을 차단할 수 없는 연산을 나타낸다. 더 상세한 예로서, 차후 연산(subsequent operation)은 이전 연산이 완료된 이후에 초기화될 수 있다.
컴퓨팅 시스템(100)은 호스트 기기(104), 통신 버스(106), 및 메모리 블록(102)을 포함한다. 호스트 기기(104)는 메모리 블록(102)과 상호 작용한다. 예를 들면, 호스트 기기(104)는 메모리 블록(102) 내 저장을 위한 데이터 패킷(108)을 제공할 수 있다. 호스트 기기(104)는 메모리 블록(102)을 위해 일부 계산을 없앨 수 있다. 예를 들면, 호스트 기기(104)는 메모리 블록(102)으로부터의 데이터로 부분 데이터 계산 또는 데이터 계산을 수행하는 메모리 블록(102)을 위한 커맨드가 메모리 블록(102)으로 발행될 수 있다.
호스트 기기(104)는 호스트 프로세서(122)를 포함할 수 있다. 호스트 프로세서(122)는 호스트 기기(104)를 위한 계산 엔진을 제공할 수 있다. 예를 들면, 호스트 프로세서(122)는 데이터 패킷(108)을 생성할 수 있다. 더 예를 들면, 호스트 프로세서(122)는 메모리 블록(102)으로부터의 데이터로 부분 데이터 계산 또는 데이터 계산을 수행하는 메모리 블록(102)을 위한 커맨드를 포함하는 데이터 패킷(108)을 생성할 수 있다.
호스트 기기(104)는 호스트 인터페이스(124)를 포함할 수 있다. 호스트 인터페이스(124)는 메모리 블록(102)과 함께 통신할 수 있다. 예를 들면, 호스트 인터페이스(124)는 통신 버스(106)를 통해 메모리 블록(102)으로 데이터 패킷(108)을 전송한다. 호스트 인터페이스(124)는 호스트 기기(104)를 위한 메모리 블록(102)에 의해 생성된 리턴 값(return value)을 수신할 수도 있다.
통신 버스(106)는 호스트 기기(104)와 메모리 블록(102) 사이의 통신을 제공한다. 예를 들면, 통신 버스(106)는 어드레스 버스, 데이터 버스, 제어 버스, 또는 그것들의 조합을 나타낼 수 있다. 다른 예로서, 통신 버스(106)는 랜덤 액세스 메모리(RAM: Random Access Memory) 버스, 피씨아이(PCI: Peripheral component interconnect) 버스, 에이지피(AGP: Accelerated graphics port) 버스, 또는 그것들의 조합을 나타낼 수 있다. 또 다른 예로서, 통신 버스(106)는 아이에스에이(ISA: Industry Standard Architecture) 버스, 엠씨에이(MCA: Micro Channel Architecture) 버스, 이에스에이 버스(ESA: Extended Industry Standard Architecture), 또는 그것들의 조합을 포함할 수 있다.
메모리 블록(102)은 메모리 블록(102)에 저장된 데이터로 액세스를 제공한다. 메모리 블록(102)은 컴퓨팅 시스템(100) 등으로 계산 자원(computational resource)을 제공할 수도 있다. 메모리 블록(102)은 논리 게이트들 또는 회로(아날로그 또는 디지털)와 같은 하드웨어들과 함께 구현될 수 있다. 또 예를 들면, 메모리 블록(102)은 하드웨어 유한 상태 머신(hardware finite state machine), 결합 로직(combinatorial logic), 또는 그것들의 조합과 함께 구현될 수 있다.
메모리 블록(102)은 랜덤 액세스 메모리(RAM) 기기 또는 코어를 포함할 수 있다. 코어로서, 메모리 블록(102)은 더 큰 기기(집적 회로 기기, 프로세서, 에이에스에스피(ASSP: application specific standard product), 주문형 반도체(ASIC: application specific integrated circuit), 시스템 온 칩(System on a Chip), 또는 그것들의 조합) 내 집적될 수 있다. 메모리 블록(102)은 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 또는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory)와 같은 휘발성 메모리를 포함할 수 있다. 메모리 블록(102)은 솔리드 스테이트 플래시 메모리(solid state flash memory)와 같은 비휘발성 메모리를 포함할 수도 있다.
메모리 블록(102)은 메모리 인터페이스(110), 메모리 컴퓨팅 블록(112), 및 저장 블록(114)을 포함할 수 있다. 메모리 인터페이스(110)는 메모리 블록(102)을 위한 입력/출력 기능을 제공한다. 메모리 컴퓨팅 블록(112)은 메모리 블록(102)을 위한 계산 엔진을 제공한다. 메모리 컴퓨팅 블록(112)은 프로세서, 임베디드 프로세서, 마이크로프로세서, 하드웨어 제어 로직, 하드웨어 유한 상태 머신(FSM: Finite State Machine), 디지털 신호 프로세서(DSP: Digital Signal Processor), 또는 그것들의 조합일 수 있다. 저장 블록(114)은 메모리 블록(102)을 위한 정보 또는 데이터의 저장을 제공한다.
메모리 인터페이스(110)는 호스트 기기(104)로부터 통신 버스(106)를 통해 데이터 패킷(108)을 수신할 수 있다. 메모리 인터페이스(110)는 호스트 기기(104)로 통신 버스(106)를 통한 출력으로 데이터 패킷(108)을 전송할 수 있다.
메모리 인터페이스(110)는 메모리 컴퓨팅 블록(112)으로부터의 또는 메모리 컴퓨팅 블록(112)으로 데이터 패킷(108)을 통신할 수 있다. 메모리 인터페이스(110)는 저장 블록(114)으로부터의 읽기 또는 메모리 저장 블록(114)에 쓰기를 수행할 수 있다. 더 상세한 예로서, 메모리 인터페이스(110)는 저장 블록(114)으로 동작 데이터(116)의 전송에 의해 데이터 패킷(108)을 쓰기할 수 있다. 메모리 인터페이스(110)는 저장 블록(114)으로부터 읽기 데이터(118)의 수신에 의해 읽기를 수행할 수 있다. 메모리 인터페이스(110)는 읽기 데이터(118)로서 저장 블록(114)으로부터 저장된 데이터(120)를 리드아웃할 수 있다.
메모리 인터페이스(110)는 다수의 방법들로 구현될 수 있다. 예를 들면, 메모리 인터페이스(110)는 물리 계층(전기적 레벨(electrical level)들, 또는 광 파장(optical wavelength)들 또는 음향적(acoustic) 레벨들) 지원을 제공할 수 있다. 메모리 인터페이스(110)는 프로토콜 지원(전기적, 광, 또는 음향적 타이밍)을 제공할 수도 있다. 메모리 인터페이스(110)는 수신된 정보의 일부를 프로세싱, 또는 출력으로서의 전송된 정보를 포맷을 더 제공할 수 있고, 이는 도 2에서 상세히 기술하기로 한다.
메모리 컴퓨팅 블록(112)은 메모리 블록 내(102)에 임베디드될 수 있다. 예를 들면, 메모리 컴퓨팅 블록(112)은 메모리 인터페이스(110)를 통해 통신 버스(106)로부터 데이터 패킷(108)을 수신할 수 있다. 메모리 컴퓨팅 블록(112)은 저장 블록(114)으로부터 읽기 데이터(118)를 수신할 수 있다. 메모리 컴퓨팅 블록(112)은 데이터 패킷(108)과 읽기 데이터(118)에 근거하여 부분 데이터 컴퓨팅 동작들을 수행할 수 있다. 부분 데이터 컴퓨팅 동작을 수행하는 메모리 컴퓨팅 블록(112)에 대한 상세한 설명은 하기에서 기술하기로 한다.
메모리 블록(102) 내에 임베디드된 메모리 컴퓨팅 블록(112)을 포함하는 컴퓨팅 시스템(100)은 시스템 효율을 개선할 수 있다. 임베디드된 메모리 컴퓨팅 블록(112)에 의해, 메모리 컴퓨팅 블록(112)은 부분 데이터 컴퓨팅을 자동적으로 수행하거나 호스트 기기(104)가 아닌 메모리 블록(102)에서 데이터 계산을 수행할 수 있다. 더 상세한 예로서, 메모리 컴퓨팅 블록(112)은 다른 동작에 의한 차단없이 자동적으로 부분 데이터 컴퓨팅을 수행할 수 있다. 메모리 블록(102)의 내부에 메모리 컴퓨팅 블록(112)을 갖는 것에 의해, 컴퓨팅 시스템(100)은 읽기 데이터(118)의 전체 라인보다 더 좁은 폭(narrower width)의 데이터 상에 동작할 수 있다. 그 결과, 메모리 블록(102)은 데이터 컴퓨팅을 위한 효율의 개선을 위해 새로운 기능을 포함할 수 있다.
도 2는 본 발명의 실시예에 따른 메모리 컴퓨팅 블록을 도시한 블록도이다.
도 2를 참조하면, 메모리 컴퓨팅 블록(112)은 본 발명의 실시예의 마스크 디코딩 블록(202), 커맨드 디코딩 블록(204), 데이터 디코딩 블록(206), 메모리 컴퓨팅 서브 블록(208), 및 병합 블록(210)을 포함할 수 있다. 다른 실시예를 위해, 메모리 컴퓨팅 서브 블록(208)과 병합 블록(210)은 하나의 기능 블록으로 결합될 수 있다.
마스크 디코딩 블록(202)은 도 1의 호스트 기기(104)로부터의 데이터 패킷(108)을 디코드한다. 마스크 디코딩 블록(202)은 프로세싱 회로, 하드웨어 제어 로직, 하드웨어 유한 상태 머신(FSM), 조합 로직, 또는 그것들의 조합일 수 있다. 예를 들면, 마스크 디코딩 블록(202)은 데이터 마스크(212)를 식별하기 위해 데이터 패킷(108)을 디코드할 수 있다. 데이터 마스크(212)는 잠재적으로 수정될 필요가 있는 읽기 데이터(118)의 부분을 나타낸다. 마스크 디코딩 블록(202)은 메모리 컴퓨팅 서브 블록(208), 병합 블록(210), 또는 그것들의 조합을 위한 데이터 마스크(212)를 제공할 수 있다.
커맨드 디코딩 블록(204)은 호스트 기기(104)로부터 데이터 패킷(108)을 디코드한다. 커맨드 디코딩 블록(204)은 프로세싱 회로, 하드웨어 제어 로직, 하드웨어 유한 상태 머신(FSM), 조합 로직, 또는 그것들의 조합일 수 있다. 예를 들면, 커맨드 디코딩 블록(204)은 부분 데이터 컴퓨팅(PDC: Partial Data Computing) 커맨드(214)를 식별하기 위해 데이터 패킷(108)을 디코드할 수 있다. PDC 커맨드(214)는 메모리 컴퓨팅 블록(112)에 의한 실행을 위해 동작 코드(opcode: operation code)를 제공할 수 있다. 예를 들면, PDC 커맨드(214)는 산술논리연산장치(ALU) 지시 셋으로부터의 동작 코드(opcode)들을 나타낼 수 있다. 구체적인 예로서, PDC 커맨드(214)는 덧셈, 뺄셈, 곱셈, 나눗셈, 좌 쉬프트(shift left), 우 쉬프트(shift right), 또는 유한 필드 연산(finite field operation)들, 또는 그것들의 조합을 포함할 수 있다. PDC 커맨드(214)는 저장된 데이터(120)를 위한 도 1의 저장 블록(114)을 위한 어드레스를 포함할 수 있다. 상세한 설명은 하기에서 논의될 것이다. 커맨드 디코딩 블록(204)은 메모리 컴퓨팅 서브 블록(208)을 위한 PDC 커맨드(214)를 전송할 수 있다.
데이터 디코딩 블록(206)은 호스트 기기(104)로부터 데이터 패킷(108)을 디코드할 수 있다. 데이터 디코딩 블록(206)은 프로세싱 회로, 하드웨어 제어 로직, 하드웨어 유한 상태 머신(FSM), 조합 로직, 또는 그것들의 조합일 수 있다. 예를 들면, 데이터 디코딩 블록(206)은 부분 데이터(216)의 식별을 위한 데이터 패킷(108)을 디코드한다. 부분 데이터(216)는 읽기 데이터(118)의 적어도 일부에서 잠재적으로 업데이트하기 위해 사용되는 정보이다. 추가적인 예로서, 부분 데이터(216)를 위한 계산은 읽기 데이터(118)에 근거할 수 있다. 데이터 디코딩 블록(206)은 메모리 컴퓨팅 서브 블록(208)으로 부분 데이터(216)를 전송할 수 있다.
메모리 컴퓨팅 서브 블록(208)은 계산 결과(218)를 계산한다. 메모리 컴퓨팅 서브 블록(208)은 프로세싱 회로, 하드웨어 제어 로직, 하드웨어 유한 상태 머신(FSM), 조합 로직, 또는 그것들의 조합일 수 있다. 메모리 컴퓨팅 서브 블록(208)은 읽기 데이터(118)의 특정 부분을 업데이트하기 위해 데이터 마스크(212), PDC 커맨드(214), 부분 데이터(216), 또는 그것들의 조합에 근거하여 계산 결과(218)를 계산할 수 있다. 더 상세한 예로서, 계산 결과(218)는 부분 데이터(216)와 함께, 데이터 마스크(212)에 의해, 허용된 읽기 데이터의 특정 부분의 수정을 위한 컴퓨팅 시스템(100)을 나타낸다.
더 상세한 예로서, 메모리 컴퓨팅 서브 블록(208)은 데이터 마스크(212)에 근거하여 읽기 데이터(118)의 부분 상에 동작할 수 있다. 더욱이, 메모리 컴퓨팅 서브 블록(208)은 부분 데이터(216), 읽기 데이터(218), 또는 그것들의 조합과 함께 읽기 데이터(118) 상에 수행되는 업데이트의 타입을 위한 계산 결과(218) 내 PDC 커맨드(214)를 포함할 수 있다.
더 상세한 예로서, 메모리 컴퓨팅 서브 블록(208)은 호스트 기기(104)로부터 부분 데이터(216)의 업데이트에 근거하여 읽기 데이터(118)의 부분 상에서 동작할 수 있다. 다른 예로서, 메모리 컴퓨팅 서브 블록(208)은 읽기 데이터(118)에 근거하여 읽기 데이터(118)의 부분 상에서 동작할 수 있다. 더 상세한 예로서, 메모리 컴퓨팅 서브 블록(208)은 읽기 데이터(118)의 두 개의 다른 인스턴스(instance)들을 수신할 수 있다. PDC 커맨드(214)에 근거하여, 메모리 컴퓨팅 서브 블록(208)은 읽기 데이터(118)의 또 다른 인스턴스와 함께 읽기 데이터(118)의 부분 상에서 동작할 수 있다.
추가적인 예로서, 읽기 데이터(118)는 512비트 라인을 나타낼 수 있다. 읽기 데이터(118)의 전체 라인을 업데이트하는 대신에, 메모리 컴퓨팅 서브 블록(208)은 업데이트되기 위한 읽기 데이터(118)의 전체 라인의 일부를 위해 계산할 수 있다. 전체 라인은 512비트들을 나타낼 수 있다. 더 상세한 예로서, 메모리 컴퓨팅 서브 블록(208)은 부분 데이터(218)와 함께 읽기 데이터(118)를 업데이트하기 위해 데이터 마스크(212)를 사용한 읽기 데이터(118)의 부분을 나타내는 계산 결과(218)를 계산할 수 있다. 상세한 설명은 하기에서 기술하기로 한다. 메모리 컴퓨팅 서브 블록(208)은 병합 블록(210)으로 컴퓨팅 결과(214)를 제공할 수 있다.
병합 블록(210)은 저장 블록(114) 내에 쓰기 위한 병합 결과(220)를 생성한다. 병합 블록(210)은 프로세싱 회로, 하드웨어 제어 로직, 하드웨어 유한 상태 머신(FSM), 조합 로직, 또는 그것들의 조합일 수 있다.
호스트 기기(104)로부터 부분 데이터(216)의 업데이트에 근거한 읽기 데이터(118)로 병합한 계산 결과(218)에 근거하여 병합 결과(220)를 생성할 수 있다. 더 상세한 예로서, 병합 블록(210)은 PDC 커맨드(214)에 따른 데이터 마스크(212, 병렬 데이터(216), 읽기 데이터(118), 또는 그것들의 조합에 근거하여 업데이트한 읽기 데이터(118)의 일부에 의해 병합 결과(220)를 생성할 수 있다. 상세한 설명은 하기에서 기술하기로 한다.
병합 블록(210)은 호스트 기기(104), 저장 블록(114), 또는 그것들의 조합으로 병합 결과(220)를 전송할 수 있다. 더 상세한 예로서, 병합 블록(210)은 호스트 기기(104), 저장 블록(114), 또는 그것들의 조합으로 PDC 커맨드(214)에 근거하여 병합 결과(220)를 전송할 수 있다.
데이터 컴퓨팅을 위한 메모리 블록(102) 내 PDC 커맨드(214)를 실행하는 컴퓨팅 시스템(110)은 읽기 데이터(118)의 업데이트의 효율을 개선하는 것으로 발견된다. PDC 커맨드(214)의 실행에 의해, 컴퓨팅 시스템(100)은 읽기 데이터(118)의 전체 라인보다 읽기 데이터(118)의 특정 일부를 업데이트할 수 있다. 그 결과, 컴퓨팅 시스템들의 더 효율적인 디자인이 수행될 수 있다.
부분 데이터 컴퓨팅을 위한 PDC 커맨드(214)를 포함하는 컴퓨팅 시스템은 컴퓨팅 시스템(100)의 성능을 개선하는 것으로 더 발견된다. 더 상세한 예로서, 부분 데이터 계산을 수행하기 위한 메모리 블록(102)의 허용에 의해, 컴퓨팅 시스템(100)은 부가적인 계산들을 수행하는 호스트 기기(104)를 위해 추가적인 자원들을 내주거나 할당할 수 있고, 그로 인해, 성능이 개선될 수 있다.
부분 데이터 컴퓨팅을 위한 PDC 커맨드(214)를 포함하는 컴퓨팅 시스템(100)은 컴퓨팅 시스템(100)의 전원 소비의 개선에 의한 효율을 개선하는 것으로 더 발견된다. 더 상세한 예로서, 메모리 블록(102) 내 부분 데이터 계산의 수행을 위한 메모리 블록(102)의 허용에 의해, 컴퓨팅 시스템(100)은 컴퓨팅 동작을 위해 필요로하는 외부 입력/출력의 양을 최소화할 수 있다. 그 결과, 컴퓨팅 시스템(100)은 부분 데이터 컴퓨팅의 이용에 의해 전원 소비를 개선할 수 있다.
도 3은 본 발명의 추가적인 실시예에 따른 쓰기 커맨드를 나타내는 PDC 커맨드를 위한 부분 데이터 컴퓨팅의 타이밍도이다.
도 3을 참조하면, 본 발명의 예로서, 하기와 같은 팩터들이 고려될 수 있다.
쓰기 데이터와 같은 동작 데이터(116)의 도착과 커맨드 필드(302) 사이의 지연은 tWL(동작 데이터의 지연(304)으로 나타냄)로 나타낸다. 버스트 길이는 tBURST(버스트 구간(306)으로 나타냄)로 나타낸다. 쓰기 동작과 같은 완료 동작의 구간은 tWR(동작 완료 구간(308)으로 나타냄)로 나타낸다. 커맨드 필드(302)와 준비되는 읽기 데이터(118) 사이의 지연은 tAA(읽기 데이터 지연으로 나타냄)로 나타낸다. 쓰기 버스트와 같은 동작 버스트의 끝(end)과 리턴 버스트의 시작(start) 사이의 지연은 tOD(동작 리턴 지연(312)으로 나타냄)로 나타낸다. 또한, 컴퓨팅을 위한 시간은 tCP(컴퓨팅 구간(314)으로 나타냄)로 나타낸다.
커맨드 필드(302)는 도 1의 메모리 블록(102)에 의해 수행되는 명령(instruction)의 타입을 제공한다. 예를 들면, 커맨드 필드(302)는 PDC 커맨드(214)를 위한 동작 코드(opcode)를 제공할 수 있다. 동작 데이터 지연(304)은 PDC 커맨드(214)와 준비되는 읽기 데이터(118) 사이의 타이밍을 나타낼 수 있다.
도시된 목적들을 위해, 이전에 언급된 팩터들은 도 3의 "QCLK"으로 클록 라벨의 상승 에지(rising edge)에서 트리거 오프(triggered off)되거나 측정되는 것을 도시한다. 팩터들이 다르게 측정되거나 트리거될 수 있는 것으로 이해될 수도 있다. 예를 들면, 팩터들은 QCLK의 하강 에지(falling edge)의 트리거 오프에 근거할 수 있다. 추가적인 예로서, 팩터들은 QCLK의 상승 에지와 하강 에지 모두에서 측정되거나 트리거 오프될 수 있다.
위에서 나타난 바와 같이, 도 1의 호스트 기기(104)로부터의 도 1의 데이터 패킷(108)은 W0와 W1으로 각각 나타나는 데이터 청크들(316)의 첫 번째 두 인스턴스들로 부호화되는 PDC 커맨드(214), 데이터 마스크(212), 또는 그것들의 조합을 포함할 수 있다. 데이터 청크들(316)은 데이터 패킷(108)으로부터 디코드된 데이터이다. 데이터 패킷(108)을 위한 데이터 청크들(316)은 W2, W3, W4, W5, W6, W7로서 도시되는 부분 데이터(216)로 나타낼 수 있다.
다른 예로서, 데이터 청크들(316)은 다르게 정렬될 수 있다. 더 상세한 예로서, 데이터 패킷(108)은 부분 데이터(216) 없이 다수의 PDC 커맨드(214), 데이터 마스크(212), 또는 그것들의 조합을 포함할 수 있다. 또 다른 예로서, 도 1의 읽기 데이터(118)의 수정은 읽기 데이터(118)의 또 하나의 다른 인스턴스에 근거할 수 있다.
이러한 예로서, 데이터 패킷(108)은 도 1의 저장된 데이터(120)의 하나의 인스턴스를 위한 도 1의 저장 블록(114)에 대한 어드레스를 갖는 PDC 커맨드(214)를 포함하기 위해 W0로 나타낸 데이터 청크들(316)의 하나의 인스턴스를 포함한다. 그리고, 데이터 패킷(108)은 저장된 데이터(120)의 또 하나의 다른 인스턴스를 위한 저장 블록(114)에 대한 어드레스를 갖는 PDC 커맨드(214)를 포함하기 위해 W2, W3, W4, W5, W6, W7로 나타나는 데이터 청크들(316)을 포함할 수도 있다. 다른 예로서, 데이터 패킷(108)은 데이터 청크들(316)의 하나의 인스턴스 내 PDC 커맨드(214)와 데이터 청크들(316)의 다른 인스턴스 내 저장 블록(114)에 대한 어드레스를 포함할 수 있다.
도 3의 계산 결과(218)를 위한 계산은 동작 데이터 지연(304)과 버스트 구간(306) 이후에 트리거될 수 있다. 또한, 계산 결과(218)를 위한 계산은 읽기 데이터 지연(310) 이후에 트리거될 수 있다. 계산 결과(218)는 계산 구간(314) 내에서 계산될 수 있다. 더욱이, 도 3의 병합 결과(220)는 동작 리턴 지연(312) 이후에 준비될 수 있는 호스트 기기(104), 도 2의 저장 블록(114), 또는 그것들의 조합으로 리턴될 수 있다.
도 4는 컴퓨팅 시스템의 제어 흐름을 도시한 도면이다.
도 4를 참조하면, 컴퓨팅 시스템(100)은 커맨드 모듈(402)을 포함할 수 있다. 커맨드 모듈(402)은 도 2의 PDC 커맨드(214)를 식별한다. 예를 들면, 커맨드 모듈(402)은 도 1의 호스트 기기(104)로부터 도 1의 데이터 패킷(108)의 디코딩에 의해 도 3의 커맨드 필드(302)의 식별에 근거하여 PDC 커맨드(214)를 결정한다.
더 상세한 예로서, 커맨드 모듈(402)은 도 2의 커맨드 디코딩 블록(204)을 이용할 수 있다. 데이터 패킷(108)은 도 3의 데이터 청크들(316)을 포함할 수 있다. 커맨드 모듈(402)은 메모리 블록(102) 내 메모리 컴퓨팅 블록(112)으로 실행되는 동작 코드(opcode)의 타입의 식별을 위해 디코딩한 데이터 청크들(316)에 근거하여 PDC 커맨드(214)를 결정할 수 있다. 동작은 메모리 블록(102)으로부터 도 1의 읽기 데이터(118)의 잠재적인 변화들을 포함할 수 있다.
커맨드 모듈(402)은 도 3의 동작 데이터 지연(304)을 위해 부착될 수 있다. 예를 들면, 커맨드 모듈(402)은 커맨드 필드(302)가 디코드된 이후에 PDC 커맨드(214)를 결정할 수 있다. 특정 예로서, 커맨드 모듈(402)은 동작 데이터 지연(304) 이후에 PDC 커맨드(214)를 위한 데이터 청크들(316)에 대한 데이터 패킷(108)을 디코드할 수 있다. 커맨드 모듈(402)은 PDC 커맨드(214)를 마스크 모듈(406)로 전송할 수 있다.
컴퓨팅 시스템(100)은 커맨드 모듈(402)에 연결될 수 있는 마스크 모듈(406)을 포함할 수 있다. 마스크 모듈(406)은 도 2의 데이터 마스크(212)를 결정한다. 예를 들면, 마스크 모듈(406)은 호스트 기기(104)로부터 수신된 데이터 패킷(108)의 디코딩에 근거하여 데이터 마스크(212)를 결정할 수 있다.
더 상세한 예로서, 마스크 모듈(406)은 도 2의 마스크 디코딩 블록(202)을 이용할 수 있다. 마스크 모듈(406)은 도 3의 W1로 알려진 디코딩한 데이터 청크들(316)에 근거하여 데이터 패킷(108)으로부터 데이터 마스크(212)를 식별할 수 있다. 데이터 마스크(212)는 수정이 잠재적으로 필요한 읽기 데이터(118)의 부분을 식별한다.
마스크 모듈(406)은 동작 데이터 지연(304)을 위해 부착될 수 있다. 예를 들면, 커맨드 모듈(402)은 PDC 커맨드(214)를 위한 데이터 청크들(316)의 결정 이후에 데이터 마스크(212)를 결정할 수 있다. 구체적인 예로서, 마스크 모듈(406)은 동작 데이터의 지연(304) 이후 또는 도 3의 버스트 구간(306) 동안 데이터 패킷을 디코드할 수 있다. 마스크 모듈(406)은 데이터 모듈(410)로 데이터 마스크(212)를 전송할 수 있다.
컴퓨팅 시스템(100)은 마스크 모듈(406)에 연결될 수 있는 데이터 모듈(410)을 포함할 수 있다. 데이터 모듈(410)은 도 2의 부분 데이터(216)를 식별한다. 예를 들면, 데이터 모듈(410)은 호스트 기기(104)로부터 수신된 데이터 패킷(108)의 디코딩에 근거하여 부분 데이터(216)를 식별할 수 있다.
더 구체적인 예로서, 데이터 모듈(410)은 도 2의 데이터 디코딩 블록(206)을 이용할 수 있다. 데이터 모듈(410)은 이러한 예로서, PDC 커맨드(214)와 데이터 마스크(212)를 위한 데이터 청크들(316) 다음의 데이터 청크들(316)의 디코딩에 근거하여 부분 데이터(216)를 식별한다. 데이터 모듈(410)은 동작 데이터 지연(304) 이후에 데이터 패킷(108)을 디코드할 수 있다. 데이터 모듈(410)은 컴퓨팅 모듈(404)로 부분 데이터(216)를 전송할 수 있다.
컴퓨팅 시스템(100)은 데이터 모듈(410)에 연결될 수 있는 읽기 모듈(412)을 포함할 수 있다. 읽기 모듈(412)은 도 1의 읽기 데이터(118)를 획득한다. 예를 들면, 읽기 모듈(412)은 도 1의 저장 블록(114)로부터 도 1의 저장된 데이터(120)의 읽기에 근거하여 읽기 데이터(118)를 획득할 수 있다.
더 상세한 예로서, 읽기 모듈(412)은 도 1의 메모리 인터페이스(110)를 이용할 수 있다. 읽기 모듈(412)은 전체 라인(512비트) 내 읽기 데이터(118)을 획득할 수 있다. 더욱이, 읽기 모듈(412)은 도 3의 읽기 데이터 지연(310)에 부착될 수 있다. 구체적인 예로서, 읽기 모듈(412)은 데이터 마스크(212), PDC 커맨드(214), 또는 그것들의 조합이 디코드된 이후에 읽기 데이터(118)를 획득할 수 있다. 추가적인 예로서, 읽기 모듈(412)은 버스트 구간(306) 동안 읽기 데이터(118)를 획득할 수 있다. 읽기 모듈(412)은 컴퓨팅 모듈(404)로 읽기 데이터(118)를 전송할 수 있다.
컴퓨팅 시스템(100)은 읽기 모듈(412)(및 데이터 모듈(410), 상술한 바와 같음)에 연결될 수 있는 컴퓨팅 모듈(404)을 포함할 수 있다. 컴퓨팅 모듈(404)은 도 2의 계산 결과(218)를 계산한다.
컴퓨팅 모듈(404)은 다수의 방법들로 계산 결과(218)를 계산할 수 있다. 컴퓨팅 모듈(404)은 데이터 마스크(212), PDC 커맨드(214), 부분 데이터(216), 읽기 데이터(118), 또는 그것들의 조합에 근거하여 계산 결과(218)를 계산할 수 있다. 더 상세한 예로서, 컴퓨팅 모듈(404)은 데이터 마스크(212), PDC 커맨드(214), 또는 그것들의 조합에 근거하여 읽기 데이터(118)의 특정 부분을 동작할 수 있다.
구체적인 예로서, 컴퓨팅 모듈(404)은 데이터 마스크(212)에 근거하여 잠재적인 수정을 위해 읽기 데이터(118)의 부분 상에 동작할 수 있다. 더욱이, 컴퓨팅 모듈(404)은 부분 데이터(216)와 함께 읽기 데이터(118) 상에 수행되는 업데이트의 타입을 위해 계산한 결과(218) 내 PDC 커맨드(214)를 사용할 수 있다. 더 특벌한 예로서, 컴퓨팅 모듈(404)은 호스트 기기(104)로부터 부분 데이터(216)에 근거하여 읽기 데이터(118)의 부분 상에서 동작할 수 있다.
다른 예로서, 컴퓨팅 모듈(404)은 읽기 데이터(118)가 부분 데이터(216)에 근거하여 어떻게 업데이트되었는지와 유사하게 스토리지 블록(114)으로부터 읽기 데이터(118)의 또 하나의 다른 인스턴스에 근거한 읽기 데이터(118)의 부분 상에 동작할 수 있다. 더 상세한 예로서, 컴퓨팅 모듈(404)은 읽기 데이터(118)의 다른 인스턴스에 근거하여 계산 결과(218)를 계산할 수 있다. 예를 들면, 읽기 데이터(118)의 하나의 다른 인스턴스는 읽기 데이터(118)의 또 하나의 인스턴스의 업데이트를 위한 연산 내의 입력으로 나타낼 수 있다. 컴퓨팅 모듈(404)은 읽기 데이터(118)의 또 다른 인스턴스에 근거하여 읽기 데이터(118)의 하나의 인스턴스의 특정 부분으로 업데이트를 위해 PDC 커맨드(214)를 사용하여 컴퓨팅 결과(218)를 위해 계산할 수 있다.
컴퓨팅 결과(218)를 계산하는 컴퓨팅 시스템(100)은 읽기 데이터(118)의 업데이트를 위한 효율을 개선하는 것으로 발견된다. 계산 결과(218)의 계산에 의해, 컴퓨팅 시스템(100)은 읽기 데이터(118)의 전체 라인 대신에 읽기 데이터(118)의 부분을 업데이트할 수 있다. 그 결과, 컴퓨팅 시스템의 디자인의 추가적인 효율이 달성할 수 있다.
컴퓨팅 모듈(404)은 도 3의 컴퓨팅 구간(314)을 고수할 수 있다. 더 구체적인 예로서, 컴퓨팅 모듈(404)은 동작 데이터 지연(304), 읽기 데이터 지연(310), 또는 그것들의 조합 이후에 계산 결과(218)를 위해 계산될 수 있다.
또 하나의 예로서, 컴퓨팅 모듈(404)은 데이터 청크들(316), 데이터 마스크(212), 또는 그것들의 조합의 정렬에 근거하여 버스트 구간(306) 동안 계산 결과(218)를 위해 계산할 수 있다. 더 구체적인 예로서, 데이터 마스크(212)와 부분 데이터(216)의 위치가 동작되는 데이터 청크들(316)은 다를 수 있다. 그 결과, 컴퓨팅 모듈(404)은 버스트 구간(306) 동안 계산 결과(218)를 위한 계산에 의해 이전에 계산 구간(314)이 시작될 수 있다. 계산 모듈(404)은 병합 모듈(408)로 계산 결과(218)를 전송할 수 있다.
컴퓨팅 시스템(100)은 컴퓨팅 모듈(404)에 연결될 수 있는 병합 모듈(408)을 포함할 수 있다. 예를 들면, 병합 모듈(408)은 계산 결과(218), 읽기 데이터(118), 또는 그것들의 조합에 근거하여 병합 결과(220)를 생성한다.
병합 모듈(408)은 저장 블록(114)을 위한 업데이트를 위한 병합 결과(220)를 생성할 수 있다. 예를 들면, 병합 모듈(408)은 읽기 데이터(118)와 함께 계산 결과(218)의 병합에 근거하여 병합 결과(220)를 생성할 수 있다. 더 상세한 예로서, 병합 모듈(408)은 PDC 커맨드(214)에 따른 부분 데이터(216), 읽기 데이터(118), 계산 결과(218), 또는 그것들의 조합과 함께 데이터 마스크(212)에 의해 결정된 읽기 데이터(118)의 일부 업데이트에 의해 병합 결과(220)를 생성할 수 있다.
병합 모듈(408)은 도 3의 컴퓨팅 구간(314)을 준수할 수 있다. 더 상세한 예로서, 병합 모듈(408)은 동작 데이터 지연(304), 버스트 구간(306), 읽기 데이터 지연(310), 또는 그것들의 조합 이후에 병합 결과(220)를 생성할 수 있다. 병합 모듈(408)은 동작 모듈(414)로 병합 결과(220)를 전송할 수 있다.
컴퓨팅 시스템(100)은 병합 모듈(408)에 연결될 수 있는 동작 모듈(414)을 포함할 수 있다. 동작 모듈(414)은 병합 결과(220)를 이용하여 동작한다. 예를 들면, 동작 모듈(414)은 도 1의 동작 데이터(116)로서 병합 결과(220)를 쓰기할 수 있다.
더 상세한 예로서, 동작 모듈(414)은 메모리 인터페이스(110)를 이용할 수 있다. 동작 모듈(414)은 저장 블록(114)의 저장된 데이터(120)의 업데이트를 위해 병합 결과(220), PDC 커맨드(214), 또는 그것들의 조합에 근거하여 동작 데이터(116)를 이용하여 동작할 수 있다. 또 하나의 예로서, 동작 모듈(414)은 결과 데이터로서 호스트 기기(104)로 PDC 커맨드(214)에 근거하여 병합 결과(220)를 전송할 수 있다. 동작 모듈(414)은 도 3의 동작 리턴 지연(312), 도 3의 동작 완료 구간(308), 또는 그것들의 조합을 준수할 수 있다.
도 5는 본 발명의 실시예에 따른 컴퓨팅 시스템의 응용예를 도시한 도면이다.
도 5를 참조하면, 도 5는 컴퓨터 서버, 자동차 대쉬 보드, 스마트폰, 모바일 기기, 및 노트북과 같은 컴퓨팅 시스템을 위한 다양한 실시예들을 도시한다.
이러한 응용 예들은 도 1의 저장된 데이터(120)의 업데이트를 위한 개선된 효율을 제공하기 위해 본 발명의 다양한 실시예들의 중요성을 도시한다. 부분 데이터 컴퓨팅은 도 1의 메모리 블록(102) 내 저장된 데이터(120)의 업데이트를 할 수 있다. 이것은 도 2의 데이터 마스크(212), 도 2의 PDC 커맨드(214), 도 1의 읽기 데이터(118), 도 2의 부분 데이터(216), 또는 그것들의 조합에 근거하여 도 2의 계산 결과(218)의 계산을 완료할 수 있다. 부분 컴퓨팅은 읽기 데이터(118)의 전체 라인의 업데이트를 회피하는 것이 아니라 업데이트되는 읽기 데이터(118)의 부분에 집중하는 것에 의해 효율을 개선할 수 있다.
컴퓨터 서버, 대쉬 보드, 및 노트북 컴퓨터와 같은 컴퓨팅 시스템(100)은 본 발명의 다양한 실시예들을 갖는 인쇄 회로 기판(PCB: Printed Circuit Board) 또는 본 발명의 다양한 실시예들을 갖는 전자식 어셈블리(EC: Electronic Assembly)와 같은 하나 이상의 서브 시스템(미도시)을 포함할 수 있다. 컴퓨팅 시스템(100)은 어댑터 카드(adapter card)로 구현될 수도 있다.
도 6은 본 발명의 실시예에 따른 컴퓨팅 시스템의 동작 방법을 도시한 순서도이다.
도 6을 참조하면, 방법(600)은 PDC 커맨드, 데이터 마스크, 부분 데이터, 또는 그것들의 조합에 따라 수정될 수 있는 읽기 데이터의 부분을 식별하기 위한 메모리 블록 내 계산 결과를 계산하기 위한 호스트 프로세서와 함께 데이터 패킷을 생성하는 단계(602단계), 데이터 패킷의 디코딩에 근거하여 부분 데이터 컴퓨팅(PDC) 커맨드, 데이터 마스크, 부분 데이터, 또는 그것들의 조합을 포함하는 데이터 패킷을 전송하는 단계(604단계), PDC 커맨드, 데이터 마스크, 부분 데이터, 또는 그것들의 조합에 따라 수정된 읽기 데이터의 부분을 사용하여 메모리 컴퓨팅 블록을 이용하여 계산 결과를 계산하는 단계(608단계), 계산 결과에 따라 수정한 읽기 데이터의 부분에 근거한 병합 결과를 생성하는 단계(610단계), 병합 결과를 전송하는 단계(612단계)를 포함한다.
방법, 프로세스, 장치, 기기, 제품, 및/또는 시스템은 간단하고, 비용 효율이 높고, 효용 가치가 높고, 정확하고, 민감하고, 효율적이며, 준비, 효율, 및 경제적인 제조, 응용, 및 이용을 위해 알려진 구성성분들의 채택에 의해 구현될 수 있다. 본 발명의 다른 중요한 관점은 비용 감소, 시스템 간소화, 및 성능 증가의 역사적 트랜드의 중요한 지원과 서비스이다. 이것과, 본 발명의 실시예에 따른 다른 가치의 결과로서 기술 상태를 적어도 다음 수준으로 이끌 수 있다.
한편, 본 발명은 구체적인 최적 실시예에 따른 결합이 기술되고 있으나, 많은 대안들, 수정들, 변화들이 상술한 것에 비추어 당업자에 의해 수행될 수 있는 것으로 이해될 것이다. 따라서, 본 발명의 특허청구범위에 포함된 범위 내에서 모든 대안들, 수정들, 및 변화들이 수용될 수 있다. 여기에 기술된 모든 구성요소와 수반하는 도면들에서 도시된 것들은 보여지거나 한정되지 않는 것으로 해석될 수 있다.
100: 컴퓨팅 시스템 102: 메모리 블록
104: 호스트 기기 106: 통신 버스
110: 메모리 인터페이스 112: 메모리 컴퓨팅 블록
114: 저장 블록 122: 호스트 프로세서
124: 호스트 인터페이스 202: 마스크 디코딩 블록
204: 커맨드 디코딩 블록 206: 데이터 디코딩 블록
208: 메모리 컴퓨팅 서브 블록 210: 병합 블록
104: 호스트 기기 106: 통신 버스
110: 메모리 인터페이스 112: 메모리 컴퓨팅 블록
114: 저장 블록 122: 호스트 프로세서
124: 호스트 인터페이스 202: 마스크 디코딩 블록
204: 커맨드 디코딩 블록 206: 데이터 디코딩 블록
208: 메모리 컴퓨팅 서브 블록 210: 병합 블록
Claims (20)
- 컴퓨팅 시스템에 있어서:
휘발성 메모리를 나타내는 메모리 블록을 포함하되, 상기 메모리 블록은:
데이터 패킷을 호스트 프로세서로부터 수신하는 메모리 인터페이스; 및
상기 메모리 인터페이스에 연결되고, 그리고 상기 호스트 프로세서와 분리된 하드웨어 메모리 컴퓨팅 블록을 포함하되, 상기 하드웨어 메모리 컴퓨팅 블록은:
상기 데이터 패킷의 디코딩에 근거하여 부분 데이터 컴퓨팅(PDC: Partial Data Computing) 커맨드를 식별하는 하드웨어 커맨드 디코딩 블록;
상기 하드웨어 커맨드 디코딩 블록에 연결되고, 그리고 상기 데이터 패킷의 디코딩에 근거하여 데이터 마스크를 식별하는 하드웨어 마스크 디코딩 블록;
상기 하드웨어 마스크 디코딩 블록에 연결되고, 그리고 상기 데이터 패킷의 디코딩에 근거하여 부분 데이터를 식별하는 하드웨어 데이터 디코딩 블록;
상기 하드웨어 커맨드 디코딩 블록, 상기 하드웨어 마스크 디코딩 블록, 및 상기 하드웨어 데이터 디코딩 블록에 연결되고, 그리고 상기 PDC 커맨드, 상기 데이터 마스크, 그리고 상기 부분 데이터에 따라 수정되는 읽기 데이터의 부분을 식별하기 위한 계산 결과를 계산하는 하드웨어 메모리 컴퓨팅 서브 블록; 및
상기 하드웨어 메모리 컴퓨팅 서브 블록에 연결되고, 상기 계산 결과에 따라 상기 읽기 데이터의 상기 부분의 수정에 근거한 병합 결과를 생성하되, 상기 읽기 데이터는 하나 이상의 데이터의 풀 비트 라인들이고 그리고 상기 부분 데이터는 상기 읽기 데이터의 부분 상에 동작하는 하드웨어 병합 블록을 포함하고, 그리고
상기 메모리 인터페이스는 상기 병합 결과를 전송하는 컴퓨팅 시스템. - 제 1 항에 있어서,
상기 하드웨어 메모리 컴퓨팅 블록은:
상기 하드웨어 메모리 컴퓨팅 서브 블록 및 상기 하드웨어 병합 블록을 포함하되, 상기 하드웨어 메모리 컴퓨팅 서브 블록은:
상기 읽기 데이터의 제 1 인스턴스를 수신하고, 그리고 상기 읽기 데이터의 상이한 제 2 인스턴스를 수신하고, 그리고
상기 하드웨어 병합 블록은 상기 하드웨어 메모리 컴퓨팅 서브 블록에 연결되고, 그리고 상기 읽기 데이터의 상기 제 1 인스턴스의 일부를 상기 읽기 데이터의 상기 제 2 인스턴스로 수정하는 것에 근거하여 상기 병합 결과를 생성하는 컴퓨팅 시스템. - 제 1 항에 있어서,
상기 하드웨어 메모리 컴퓨팅 블록은 동작 데이터의 지연, 버스트 지속 시간, 및 읽기 데이터 지연 이후에 상기 부분 데이터로 수정되는 상기 읽기 데이터의 상기 부분을 좁게 하기 위해 상기 데이터 마스크에 근거하여 상기 계산 결과를 계산하는 상기 하드웨어 메모리 컴퓨팅 서브 블록을 포함하는 컴퓨팅 시스템. - 제 1 항에 있어서,
상기 하드웨어 메모리 컴퓨팅 블록은 상기 데이터 패킷의 데이터 청크(data chunk)의 다른 인스턴스들 내 복수의 PDC 커맨드를 식별하기 위해 상기 데이터 패킷을 디코드하는 상기 하드웨어 커맨드 디코딩 블록을 포함하는 컴퓨팅 시스템. - 제 1 항에 있어서,
상기 메모리 인터페이스는 상기 병합 결과로 호스트 기기, 저장 블록, 또는 그것들의 조합의 업데이트를 하기 위한 동작 데이터를 전송하는 컴퓨팅 시스템. - 제 1 항에 있어서,
상기 메모리 인터페이스는 상기 호스트 프로세서에 의해 생성된 상기 PDC 커맨드, 상기 데이터 마스크, 상기 부분 데이터, 또는 그것들의 조합을 포함하는 상기 데이터 패킷을 프로세싱하기 위한 데이터 패킷을 수신하는 컴퓨팅 시스템. - 제 1 항에 있어서,
상기 메모리 인터페이스에 연결되고, 상기 병합 결과에 근거하여 저장된 데이터를 업데이트하는 저장 블록을 더 포함하는 컴퓨팅 시스템. - 제 1 항에 있어서,
상기 하드웨어 메모리 컴퓨팅 블록은 업데이트되는 상기 읽기 데이터의 상기 부분을 식별하기 위해 데이터 청크(data chunk)의 디코딩에 근거하여 상기 데이터 마스크를 식별하는 상기 하드웨어 마스크 디코딩 블록을 포함하는 컴퓨팅 시스템. - 제 1 항에 있어서,
상기 하드웨어 메모리 컴퓨팅 블록은 상기 읽기 데이터의 상기 부분을 수정하기 위한 상기 PDC 커맨드를 실행하는 상기 하드웨어 메모리 컴퓨팅 서브 블록을 포함하는 컴퓨팅 시스템. - 제 1 항에 있어서,
상기 하드웨어 메모리 컴퓨팅 블록은 상기 읽기 데이터의 상기 부분을 업데이트하기 위해 상기 계산 결과를 상기 읽기 데이터와 병합하는 것에 근거하여 상기 병합 결과를 생성하는 상기 하드웨어 병합 블록을 포함하는 컴퓨팅 시스템. - 컴퓨팅 시스템의 동작 방법에 있어서:
휘발성 메모리를 포함하는 메모리 블록에 포함된 하드웨어 메모리 컴퓨팅 블록과 분리된 호스트 프로세서로부터 데이터 패킷을 수신하는 단계;
상기 데이터 패킷의 디코딩에 근거하여, 하드웨어 커맨드 디코딩 블록에 의해 부분 데이터 컴퓨팅(PDC: Partial Data Computing) 커맨드를, 하드웨어 마스크 디코딩 블록에 의해 데이터 마스크를, 그리고 하드웨어 데이터 디코딩 블록에 의해 부분 데이터를 식별하는 단계;
상기 PDC 커맨드, 상기 데이터 마스크, 그리고 상기 부분 데이터에 따라 수정되는 읽기 데이터의 부분을 식별하기 위해 메모리 컴퓨팅 서브 블록으로 계산 결과를 계산하는 단계;
상기 메모리 컴퓨팅 서브 블록에 의한 상기 계산 결과에 따라 상기 읽기 데이터의 상기 부분의 식별에 근거한 병합 결과를 생성하는 단계; 및
상기 병합 결과를 전송하는 단계를 포함하되,
상기 하드웨어 커맨드 디코딩 블록, 상기 하드웨어 마스크 디코딩 블록, 그리고 상기 하드웨어 데이터 디코딩 블록은 각각 서로 독립적이나 직접적으로 상기 하드웨어 메모리 컴퓨팅 블록의 상기 메모리 컴퓨팅 서브 블록에 연결되고, 그리고
상기 읽기 데이터는 하나 이상의 데이터의 풀 비트 라인들이고 그리고 상기 부분 데이터는 상기 읽기 데이터의 상기 부분 상에서 동작하는 동작 방법. - 제 11 항에 있어서,
상기 읽기 데이터의 제 1 인스턴스를 수신하는 단계;
상기 읽기 데이터의 다른 제 2 인스턴스를 수신하는 단계; 및
상기 병합 결과를 생성하는 단계는:
상기 읽기 데이터의 상기 제 1 인스턴스의 일부를 상기 읽기 데이터의 상기 제 2 인스턴스로 수정하는 것에 근거하여 상기 병합 결과를 생성하는 단계를 더 포함하는 동작 방법. - 제 11 항에 있어서,
상기 계산 결과를 계산하는 단계는
동작 데이터의 지연, 버스트 지속 시간, 및 읽기 데이터 지연 이후에 상기 부분 데이터로 수정되는 상기 읽기 데이터의 상기 부분을 좁게 하기 위해 상기 데이터 마스크에 근거하여 상기 계산 결과를 계산하는 단계를 포함하는 동작 방법. - 제 11 항에 있어서,
상기 데이터 패킷의 데이터 청크(data chunk)의 다른 인스턴스들 내 복수의 PDC 커맨드를 식별하기 위한 상기 데이터 패킷을 디코딩하는 단계를 더 포함하는 동작 방법. - 제 11 항에 있어서,
상기 병합 결과로 호스트 기기, 저장 블록, 또는 그것들의 조합의 업데이트를 하기 위한 동작 데이터를 전송하는 동작 방법. - 컴퓨팅 시스템의 동작 방법에 있어서:
하드웨어 커맨드 디코딩 블록에 의해 식별되는 부분 데이터 컴퓨팅(PDC: Partial Data Computing) 커맨드, 하드웨어 마스크 디코딩 블록에 의해 식별되는 데이터 마스크, 그리고 하드웨어 데이터 디코딩 블록에 의해 식별되는 부분 데이터에 따라 수정되는 읽기 데이터의 부분을 식별하기 위한 휘발성 메모리를 포함하는 메모리 블록 내 하드웨어 메모리 컴퓨팅 서브 블록에 의해 계산 결과를 계산하기 위해 호스트 프로세서로 데이터 패킷을 생성하는 단계; 및
상기 PDC 커맨드, 상기 데이터 마스크, 및 상기 부분 데이터를 포함하는 상기 데이터 패킷을 하드웨어 메모리 컴퓨팅 블록으로 전송하는 단계를 포함하되,
상기 읽기 데이터는 하나 이상의 데이터의 풀 비트 라인들이고, 상기 부분 데이터는 상기 읽기 데이터의 부분 상에서 동작하고, 그리고 상기 하드웨어 커맨드 디코딩 블록, 상기 하드웨어 마스크 디코딩 블록, 그리고 상기 하드웨어 데이터 디코딩 블록은 각각 서로 독립적이나 상기 호스트 프로세서와 분리된 상기 메모리 블록에 포함된 상기 하드웨어 메모리 컴퓨팅 블록의 상기 하드웨어 메모리 컴퓨팅 서브 블록에 직접적으로 연결되는 동작 방법. - 제 16 항에 있어서,
상기 데이터 패킷을 생성하는 단계는
상기 읽기 데이터의 다른 인스턴스로 상기 읽기 데이터의 상기 부분을 수정하기 위한 복수의 상기 PDC 커맨드를 포함하는 상기 데이터 패킷을 생성하는 단계를 포함하는 동작 방법. - 제 16 항에 있어서,
상기 데이터 패킷을 생성하는 단계는
상기 부분 데이터로 수정되는 상기 읽기 데이터의 상기 부분을 좁게 하기 위해 상기 데이터 마스크를 포함하는 상기 데이터 패킷을 생성하는 단계를 포함하는 동작 방법. - 제 16 항에 있어서,
상기 데이터 패킷을 생성하는 단계는
상기 부분 데이터로 상기 읽기 데이터의 상기 부분을 수정하기 위한 상기 PDC 커맨드를 포함하는 상기 데이터 패킷을 생성하는 단계를 포함하는 동작 방법. - 제 16 항에 있어서,
상기 계산 결과로 상기 읽기 데이터의 상기 부분을 수정하는 것에 근거하여 병합 결과를 수신하는 단계를 더 포함하는 동작 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462023149P | 2014-07-10 | 2014-07-10 | |
US62/023,149 | 2014-07-10 | ||
US14/569,017 | 2014-12-12 | ||
US14/569,017 US9710185B2 (en) | 2014-07-10 | 2014-12-12 | Computing system with partial data computing and method of operation thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160007340A KR20160007340A (ko) | 2016-01-20 |
KR102198617B1 true KR102198617B1 (ko) | 2021-01-05 |
Family
ID=55067605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150040719A KR102198617B1 (ko) | 2014-07-10 | 2015-03-24 | 부분 데이터 컴퓨팅을 갖는 컴퓨팅 시스템 및 그것의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9710185B2 (ko) |
KR (1) | KR102198617B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI741391B (zh) * | 2019-10-17 | 2021-10-01 | 美律實業股份有限公司 | 電子裝置與控制方法 |
TWI735399B (zh) * | 2020-12-24 | 2021-08-01 | 神煜電子股份有限公司 | 具消除暗電流的光感測裝置 |
CN114546260B (zh) * | 2022-01-07 | 2024-03-12 | 华中师范大学 | 数据读写方法、装置、电子设备及存储介质 |
CN116361346B (zh) * | 2023-06-02 | 2023-08-08 | 山东浪潮科学研究院有限公司 | 基于掩码计算的数据表解析方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040123039A1 (en) | 2002-12-23 | 2004-06-24 | International Business Machines Corporation | System and method for adatipvely loading input data into a multi-dimensional clustering table |
US20050108573A1 (en) | 2003-09-11 | 2005-05-19 | Detica Limited | Real-time network monitoring and security |
US20070033322A1 (en) | 2003-06-16 | 2007-02-08 | Vincent Zimmer | Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan |
US20120102275A1 (en) | 2010-10-21 | 2012-04-26 | Micron Technology, Inc. | Memories and methods for performing atomic memory operations in accordance with configuration information |
US20150089316A1 (en) | 2013-06-24 | 2015-03-26 | Micron Technology, Inc. | Circuits, apparatuses, and methods for correcting data errors |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6799293B2 (en) | 2001-06-19 | 2004-09-28 | Adaptec, Inc. | Sparse byte enable indicator for high speed memory access arbitration method and apparatus |
JP2008305350A (ja) | 2007-06-11 | 2008-12-18 | Spansion Llc | メモリシステム、メモリ装置、およびメモリ装置の制御方法 |
JP2009289170A (ja) | 2008-05-30 | 2009-12-10 | Nec Electronics Corp | データ処理装置、メモリコントローラ及びそのアクセス制御方法 |
US8688913B2 (en) | 2011-11-01 | 2014-04-01 | International Business Machines Corporation | Management of partial data segments in dual cache systems |
US8688914B2 (en) | 2011-11-01 | 2014-04-01 | International Business Machines Corporation | Promotion of partial data segments in flash cache |
-
2014
- 2014-12-12 US US14/569,017 patent/US9710185B2/en not_active Expired - Fee Related
-
2015
- 2015-03-24 KR KR1020150040719A patent/KR102198617B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040123039A1 (en) | 2002-12-23 | 2004-06-24 | International Business Machines Corporation | System and method for adatipvely loading input data into a multi-dimensional clustering table |
US20070033322A1 (en) | 2003-06-16 | 2007-02-08 | Vincent Zimmer | Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan |
US20050108573A1 (en) | 2003-09-11 | 2005-05-19 | Detica Limited | Real-time network monitoring and security |
US20120102275A1 (en) | 2010-10-21 | 2012-04-26 | Micron Technology, Inc. | Memories and methods for performing atomic memory operations in accordance with configuration information |
US20150089316A1 (en) | 2013-06-24 | 2015-03-26 | Micron Technology, Inc. | Circuits, apparatuses, and methods for correcting data errors |
Also Published As
Publication number | Publication date |
---|---|
US20160011817A1 (en) | 2016-01-14 |
KR20160007340A (ko) | 2016-01-20 |
US9710185B2 (en) | 2017-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102198617B1 (ko) | 부분 데이터 컴퓨팅을 갖는 컴퓨팅 시스템 및 그것의 동작 방법 | |
JP6251806B2 (ja) | 装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体 | |
CN101290565B (zh) | 执行乘法函数的方法和设备 | |
US9336004B2 (en) | Checkpointing registers for transactional memory | |
EP3649556A1 (en) | Techniques to support mulitple interconnect protocols for an interconnect | |
CN107851532B (zh) | 带有有源元件的键帽 | |
CN102968291A (zh) | 包括可变写命令调度的内存系统 | |
US10102159B2 (en) | Method of achieving low write latency in a data storage system | |
US9405547B2 (en) | Register allocation for rotation based alias protection register | |
KR101834896B1 (ko) | 고레벨 합성을 사용함으로써 효율적인 엔트로피 디코더를 구현하기 위한 방법 | |
WO2018075532A1 (en) | Dynamic variable precision computation | |
KR20200083479A (ko) | 저장 융합 시스템 및 방법 | |
US10007589B2 (en) | System and method for universal serial bus (USB) protocol debugging | |
CN110825435B (zh) | 用于处理数据的方法和装置 | |
CN110825436A (zh) | 应用于人工智能芯片的计算方法和人工智能芯片 | |
US20150149836A1 (en) | Recoverable and fault-tolerant cpu core and control method thereof | |
CN107870780B (zh) | 数据处理装置和方法 | |
JP7229305B2 (ja) | 命令実行結果をライトバックするための装置及び方法、処理装置 | |
US10024911B2 (en) | Debug circuit, semiconductor device, and debug method | |
KR102225249B1 (ko) | 전자 디바이스용 센서 버스 인터페이스 | |
US20230393851A1 (en) | Processing system with integrated domain specific accelerators | |
US10962593B2 (en) | System on chip and operating method thereof | |
JP2016045721A (ja) | データ格納方法、三値内積演算回路、それを備えた半導体装置、及び、三値内積演算処理プログラム | |
CN115269011A (zh) | 指令执行单元、处理单元及相关装置和方法 | |
TW200519609A (en) | Reconfigurable radio processor architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |