KR102602695B1 - 고대역폭 메모리 및 시스템 - Google Patents

고대역폭 메모리 및 시스템 Download PDF

Info

Publication number
KR102602695B1
KR102602695B1 KR1020200014622A KR20200014622A KR102602695B1 KR 102602695 B1 KR102602695 B1 KR 102602695B1 KR 1020200014622 A KR1020200014622 A KR 1020200014622A KR 20200014622 A KR20200014622 A KR 20200014622A KR 102602695 B1 KR102602695 B1 KR 102602695B1
Authority
KR
South Korea
Prior art keywords
data
write request
memory
controller
entry
Prior art date
Application number
KR1020200014622A
Other languages
English (en)
Other versions
KR20200127848A (ko
Inventor
크리슈나 테자 말라디
디민 니우
홍종 정
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20200127848A publication Critical patent/KR20200127848A/ko
Application granted granted Critical
Publication of KR102602695B1 publication Critical patent/KR102602695B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details of memory controller using bus width
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Memory System (AREA)

Abstract

고대역폭 메모리는 메모리 및 제어기를 포함한다. 제어기는 데이터 라이트 요청의 데이터의 적어도 하나의 어드레스를 지시하는 메모리 내 엔트리를 저장하고, 데이터 버스가 희소 데이터 또는 데이터-값 유사성을 포함하는 데이터 라이트 요청에 기초하여 데이터 라이트 요청의 사이클 타임 동안 동작을 위하여 이용가능하다는 지시를 발생한다. 희소 데이터는 0과 동일한 데이터 값들의 소정의 백분율을 포함하고, 데이터-값 유사성은 데이터 값들의 소정 양의 공간 값 위치를 포함한다. 희소 데이터의 0과 동일한 데이터 값들의 소정의 백분율 및 데이터-값 유사성의 데이터 값들의 소정 양의 공간 값 위치는 소정의 데이터 입도에 기초한다.

Description

고대역폭 메모리 및 시스템{HIGH BANDWIDTH MEMORY AND SYSTEM}
본 개시의 실시예들은 고대역폭 메모리(HBM: High Bandwidth Memory)에 관한 것으로, 특히, 데이터 특성에 기초하여 내부 및 외부 HBM 억세스를 감소하여 HBM의 전반적인 성능을 개선하는 시스템 및 방법에 관한 것이다.
심층 신경망과 같은 기계-학습 응용은 정확한 추론을 제공하기 위해 계산 및 메모리를 사용하여 상이한 데이터 세트를 학습한다. 고성능 컴퓨팅(HPC: high-performance computing) 및 그래픽 알고리즘이 추가 데이터가 되고 계산 집약적이 되므로, 고대역폭 메모리 요구 사항은 특히 메모리 핀이 제한된 그래픽 처리 장치(GPU: graphics processing unit)와 같은 가속기의 경우 특히 더 중요하게 될 것이다.
본 개시의 실시예들에 따른 과제는 데이터 특성에 기초하여 내부 및 외부 고대역폭 메모리 억세스를 감소하여 고대역폭 메모리의 전반적인 성능을 개선하는 시스템 및 방법을 제공하는데 있다.
본 개시의 일 실시예에 따르면, 고대역폭 메모리(HBM: high bandwidth memory)는 메모리; 및 고대역폭 메모리(HBM: high bandwidth memory) 외부의 프로세서로부터 데이터 라이트 요청을 수신하는 제어기를 포함하고, 상기 제어기는 상기 데이터 라이트 요청의 데이터의 적어도 하나의 어드레스를 지시하는 메모리 내 엔트리를 저장하고, 상기 엔트리를 저장하는 것은 상기 데이터 라이트 요청의 데이터의 희소 데이터 또는 데이터-값 유사성을 포함하는 상기 데이터 라이트 요청의 데이터에 기초하고, 상기 희소 데이터는 0과 동일한 상기 데이터 라이트 요청의 데이터의 데이터 값들의 소정의 백분율을 포함하고, 상기 데이터-값 유사성은 상기 데이터 라이트 요청의 데이터의 데이터 값들의 소정 양의 공간 값 위치를 포함하고, 데이터 버스가 상기 희소 데이터 또는 상기 데이터-값 유사성을 포함하는 상기 데이터 라이트 요청에 기초하여 상기 데이터 라이트 요청의 사이클 타임 동안 동작을 위하여 이용가능하다는 지시를 발생할 수 있다.
본 개시의 일 실시예에 따르면, 시스템은 프로세서; 고대역폭 메모리(HBM: high bandwidth memory); 및 메모리를 포함하는 제어기를 포함하고, 상기 제어기는 상기 프로세서로부터 데이터 라이트 요청을 수신하고, 희소 데이터를 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여 상기 데이터 라이트 요청의 데이터의 적어도 하나의 어드레스를 지시하는 상기 제어기의 상기 메모리 내 엔트리를 저장하고, 상기 희소 데이터는 0과 동일한 상기 데이터 라이트 요청의 데이터의 데이터 값들의 소정의 백분율을 포함하고, 데이터 버스가 상기 희소 데이터를 포함하는 상기 데이터 라이트 요청에 기초하여 상기 데이터 라이트 요청의 사이클 타임 동안 동작을 위하여 이용가능하다는 지시를 발생할 수 있다.
본 개시의 일 실시예에 따르면, 고대역폭 메모리(HBM: high bandwidth memory)의 제어기에서, 상기 고대역폭 메모리 외부의 프로세서로부터 데이터 라이트 요청을 수신하고, 상기 제어기에 의해서, 상기 데이터 라이트 요청의 데이터의 희소 데이터 또는 데이터-값 유사성에 기초하여 상기 데이터 라이트 요청의 데이터의 적어도 하나의 어드레스를 지시하는 상기 제어기의 메모리 내 엔트리를 저장하고, 상기 제어기에 의해서 데이터 버스가 상기 데이터-값 유사성을 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여 상기 데이터 라이트 요청의 사이클 타임 동안 동작을 위하여 이용가능하다는 지시를 발생하고, 상기 희소 데이터는 0과 동일한 상기 데이터 라이트 요청의 데이터의 데이터 값들의 소정의 백분율을 포함하고, 상기 데이터-값 유사성은 상기 데이터 라이트 요청의 데이터의 소정 양의 공간 값 위치를 포함할 수 있다.
본 개시의 실시예들에 따르면, 데이터 특성에 기초하여 내부 및 외부 고대역폭 메모리 억세스를 감소하여 고대역폭 메모리의 전반적인 성능을 개선할 수 있다.
실시예들이 첨부된 도면을 참조하여 아래의 간단한 설명으로부터 명확하게 이해될 것이다. 첨부된 도면은 본 명세서에 기술된 바와 같은 비 제한적인 예들을 나타낸다. 아래 단락에서, 본 명세서에 기재된 주제의 양태는 동일한 참조 번호가 동일하거나 유사한 참조 번호를 나타내는 도면에 도시된 예시적인 실시예들을 참조하여 설명될 것이다.
도 1a은 본 개시의 실시예에 따른 전형적인 고대역폭 메모리(HBM: high bandwidth memory) 시스템의 실시예의 평면도를 나타낸다.
도 1b는 본 개시의 실시예에 따른 전형적인 HBM 시스템의 실시예의 측면도를 나타낸다.
도 2a 및 도 2b는 본 개시의 실시예에 따른 2개의 일반적으로 사용되는 신경망들의 상이한 층들에서 활성화 밀도의 그래프들 각각을 나타낸다.
도 3는 본 개시의 실시예에 따른 예를 들면, HBM의 출력 드라이버 및 예를 들면, GPU의 입력 버퍼 사이의 32비트 데이터 버스의 예를 나타낸다.
도 4a는 본 개시의 실시예에 따른 HBM 시스템의 블록도를 나타낸다.
도 4b는 본 개시의 실시예에 따른 HBM 시스템의 블록도를 나타낸다.
도 5는 본 개시의 실시예에 따른 데이터 라이트 요청에 관련되는 데이터가 희소 데이터인 경우 데이터 라이트 요청 동작을 나타내는 타이밍도이다.
도 6은 본 개시의 실시예에 따른 연속적인 데이터 라이트 요청들에 관련되는 데이터가 데이터-값 유사성을 가지는 경우 데이터 라이트 요청 동작들을 나타내는 타이밍도이다.
도 7은 본 개시의 실시예에 따른 라이트 요청에 관련되는 데이터가 희소 데이터 또는 데이터-값 유사성을 가지는 경우 데이터 라이트 요청 동작에 응답하여 HBM의 전반적인 성능을 상승하는 방법을 설명하기 위한 플로우차트이다.
다음의 상세한 설명에서, 본 개시의 철저한 이해를 제공하기 위해 다수의 특정 세부 사항이 설명된다. 그러나, 당업자는 개시된 특정 양태가 이러한 특정 세부 사항 없이도 실시될 수 있음을 이해할 것이다. 다른 경우들에서, 잘 알려진 방법들, 절차들, 컴포넌트들 및 회로들은 여기에 개시된 주제를 모호하게 하지 않기 위해 상세히 설명되지 않았다.
본 명세서 전체에서 "일 실시예" 또는 "실시예"에 대한 언급은 실시예와 관련하여 설명된 특정 특징, 구조 또는 특성이 본 명세서에 개시된 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 따라서, 본 명세서 전체의 다양한 장소에서 "일 실시예에서" 또는 "실시예에서" 또는 "일 실시예에 따라" (또는 유사한 다른 문구)의 어구가 모두 동일한 실시예를 지칭하는 것은 아니다. 또한, 특정 특징, 구조 또는 특성은 하나 이상의 실시예에서 임의의 적절한 방식으로 결합될 수 있다. 이와 관련하여, 본 명세서에서 사용된 바와 같이, "예시적인"이라는 단어는 "예, 실례 또는 예시로서 제공하는"을 의미한다. 본 명세서에서 "예시적인"것으로 설명 된 임의의 실시예는 다른 실시예보다 반드시 바람직하거나 유리한 것으로 해석되어서는 안된다. 또한, 특정 특징, 구조 또는 특성은 하나 이상의 실시예에서 임의의 적절한 방식으로 결합될 수 있다. 또한, 본원의 논의의 맥락에 따라, 단수형은 대응하는 복수형을 포함할 수 있고, 복수형은 대응하는 단수형을 포함할 수 있다. 유사하게, 하이픈으로 표시된 용어 (예를 들어, "2-차원", "미리-결정된", "픽셀-특정" 등)는 때때로 대응하는 하이픈이 없는 버전(예를 들어, "2 차원", "미리 결정된", "픽셀 특정" 등)과 상호 사용될 수 있고, 대문자로 된 항목(예를 들면, "카운터 클럭", "행 선택", "PIXOUT" 등)은 대응하는 대문자가 아닌 버전(예를 들면, "카운터 클럭", "행 선택", "pixout" 등)과 상호 사용될 수 있다. 이러한 간헐적인 상호 사용은 서로 일치하지 않는 것으로 간주되지 않는다.
또한, 본 명세서의 논의의 맥락에 따라, 단수형은 대응하는 복수형을 포함할 수 있고 복수형은 대응하는 단수형을 포함할 수 있다. 본 명세서에 도시되고 논의된 다양한 도면들(구성 요소 도면 포함)은 단지 설명을 위한 것이며, 실제 크기로 도시되지 않았다는 것이 주목된다. 유사하게, 다양한 파형 및 타이밍도가 단지 예시의 목적으로 도시되어 있다. 예를 들어, 일부 구성 요소의 치수는 명확성을 위해 다른 구성 요소에 비해 과장될 수 있다. 또한, 적절하다고 간주되면, 대응하는 및/또는 유사한 요소를 나타내기 위해 도면들에서 참조 번호가 반복된다.
본 명세서에서 사용된 용어는 단지 예시적인 실시예들을 설명하기 위한 것이며 청구된 주제를 제한하려는 것이 아니다. 단수의 표현은 문맥 상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서 사용될 때 용어 "포함하다" 및/또는 "포함하는"은 언급된 특징, 정수, 단계, 연산, 요소 및/또는 구성 요소의 존재를 명시하지만, 하나 이상의 다른 특징, 정수, 단계, 연산, 요소, 구성 요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지는 않는다는 것을 이해할 것이다. 본 명세서에서 사용되는 용어 "제 1", "제 2" 등은 명사에 대한 레이블로서 사용되며, 명시적으로 정의되지 않는 한 임의의 유형의 순서(예를 들면, 공간적, 시간적, 논리적 등)를 의미하지는 않는다. 따라서. 또한, 동일하거나 유사한 기능을 갖는 부품, 구성 요소, 블록, 회로, 유닛 또는 모듈을 지칭하기 위해 동일한 참조 번호가 둘 이상의 도면에 걸쳐 사용될 수 있다. 그러나, 이러한 사용은 설명의 단순성 및 논의의 용이성만을 위한 것이다. 그러한 구성 요소 또는 유닛의 구성 또는 구조적 세부 사항이 모든 실시예에 걸쳐 동일하거나 그러한 공통 참조 부품/모듈이 본 명세서에 개시된 예시적인 실시예 중 일부를 구현하는 유일한 방법이라는 것을 의미하지는 않는다.
구성 요소 또는 층이 다른 구성 요소 또는 층 상에 존재하거나, "연결된" 또는 "연결된" 것으로 언급 될 때, 이는 다른 구성 요소에 직접 연결되거나 연결될 수 있음을 이해할 것이다. 또는 층 또는 개재 요소 또는 층이 존재할 수 있다. 반대로, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어"있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 동일한 참조 번호는 전체에 걸쳐 동일한 요소를 지칭한다. 본원에 사용된 용어 "및/또는"은 하나 이상의 관련된 열거된 항목의 임의의 및 모든 조합을 포함한다.
본 명세서에서 사용되는 용어 "제 1", "제 2" 등은 이들이 앞에 나오는 명사에 대한 레이블로서 사용되며, 명시적으로 정의되지 않는 한 임의의 유형의 순서(예를 들어, 공간적, 시간적, 논리적, 등)를 암시하지 않는다. 또한, 동일하거나 유사한 기능을 갖는 부품, 구성 요소, 블록, 회로, 유닛 또는 모듈을 지칭하기 위해 동일한 참조 번호가 둘 이상의 도면에 걸쳐 사용될 수 있다. 그러나, 이러한 사용은 설명의 단순성 및 논의의 용이성만을 위한 것이다. 그러한 구성 요소 또는 유닛의 구성 또는 구조적 세부 사항이 모든 실시예에 걸쳐 동일하거나 이러한 공통 참조 부품/모듈이 본 명세서에 개시된 예시적인 실시예 중 일부를 구현하는 유일한 방법이라는 것을 의미하지는 않는다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 또한, 일반적으로 사용되는 사전에 정의된 용어와 같은 용어는 관련 기술의 맥락에서 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며 여기에서 명확하게 정의되지 않는 한 이상적이지 않거나 지나치게 공식적인 의미로 해석되지 않는다는 것이 이해될 것이다.
본원에 사용된 용어 "모듈"은 모듈과 관련하여 본원에 기술된 기능을 제공하도록 구성된 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드 및/또는 명령어 세트 또는 명령어로서 구현 될 수 있으며, 본 명세서에 설명된 임의의 구현에서 사용되는 용어 "하드웨어"는 예를 들어, 단독으로 또는 임의의 조합으로, 하드 와이어드 회로, 프로그래밍 가능을 포함할 수 있다. 프로그래머블 회로에 의해 실행되는 명령을 저장하는 회로, 상태 머신 회로 및/또는 펌웨어. 모듈은 집합적으로 또는 개별적으로, 더 큰 시스템의 일부를 형성하는 회로로서, 예를 들어 집적 회로(IC), 시스템 온 칩(SoC) 등을 형성하는 회로로서 구현될 수 있다. 본 명세서에 개시된 다양한 구성 요소 및/또는 기능 블록은 다양한 구성 요소 및/또는 기능 블록과 관련하여 본 명세서에 설명된 기능을 제공하는 소프트웨어, 펌웨어 및/또는 하드웨어를 포함 할 수 있는 모듈로서 구현될 수 있다.
도 1a는 전형적인 HBM 시스템(100)의 예시적인 실시예의 평면도를 도시한다. 도 1b는 전형적인 HBM 시스템(100)의 예시적인 실시예의 측면도를 도시한다. HBM 시스템(100)은 마더 보드(101), 인쇄 회로 기판(PCB: printed circuit board)(102), 인터포저(interposer)(103), 버퍼 다이(104), 동적 랜덤 액세스 메모리(DRAM) 칩들(105a ~ 105d)이 도시된 하나 이상의 DRAM 칩들, 및 중앙 처리 장치(CPU: central processing unit), 그래픽 처리 장치(GPU: graphic processing unit), 또는 텐서 처리 장치(TPU: tensor processing unit)와 같은 호스트 처리 장치(즉, 로직 프로세서)를 포함할 수 있다. 버퍼 다이(104), 및 동적 랜덤 액세스 메모리(DRAM) 칩들(105a ~ 105d)이 HBM을 구성할 수 있다.
PCB(102)는 솔더 볼들(107)의 어레이를 통하여 마더 보드(101)에 전기적으로 연결될 수 있다. 인터포저(103)는 PCB(102) 상에 배치될 수 있다. 버퍼 다이(104)는 인터포저(103) 상에 배치될 수 있다. DRAM 칩들(105)은 버퍼 다이(104) 상에 적층되어 배치될 수 있다. 버퍼 다이(104)는 인터포저(103)를 통과하는 I/O 버스(108)를 통하여 호스트 처리 장치(106)에 전기적으로 연결될 수 있다. 일실시예에서, I/O 버스(108)는 1024개의 데이터 라인들 및 하나 이상의 제어 및 어드레스(CA) 라인들을 포함할 수 있다.
일실시예에서, HBM은 1024비트 폭의 데이터 버스(즉, I/O 버스(108)의 일부)를 포함할 수 있고, 레거시(legacy) 모드 및 의사-채널(pseuto-channel) 모드를 제공할 수 있는 HBM 구조를 가질 수 있다. 레거시 모드에서, I/O 버스(108)는 버스트 길이(BL)가 2인 채널 당 128비트의 8개의 채널들(CH0 - CH7)을 가지도록 구성될 수 있다. 레거시 모드에서 각 채널은 전용 CA 버스를 가질 수 있다. 의사 채널 모드에서, I/O 버스(108)는 버스트 길이(BL)가 4인 채널 당 64비트의 16 채널들을 가지도록 구성될 수 있다. 2개의 의사 채널들은 의사 채널 모드에서 동일한 CA 버스를 공유할 수 있다.
심층 학습 응용은 반복적인 부동 소수점/고정 소수점 연산으로 인한 데이터 희소성 특성 및/또는 데이터 유사성 특성을 나타낼 수 있다. 데이터 희소성은 일반적으로 음의 값을 자르는 정류 선형 단위(ReLU: rectified linear unit)를 사용하거나 추론 단계 동안 낮은 정밀도 가중치를 사용하여 발생할 수 있다. 가중치 값들을 줄일 수 있는 ReLU 또는 파라메트릭 ReLU(PReLU)는 랭킹 및 권장 모델들 뿐만 아니라 컨볼루션 신경망(CNN: convolution neural network)에서 널리 사용된다. 그러나, 전체적인 모델 크기를 줄이기 위하여 가중치의 일부를 제거함에 의해서 훈련된 신경망을 정리하면 가장 큰 제로(0)의 소스가 발생한다. 데이터 유사성은 이미지들에서 픽셀 값들의 공간적 위치(spatial locality)로 인해 CNN에서 더 일반적일 수 있다. 심층 학습 응용과 관련된 데이터 희소성은 예를 들면, ReLU 활성화 함수 및/또는 제로 가중치에 기초하여 평균 약 40% 내지 50%로 증가할 수 있다.
도 2a 및 도 2b는 각각 2개의 일반적으로 사용되는 예시적인 신경망에 대한 상이한 층들에서의 활성화 밀도들의 예시적인 그래프들 각각 나타낸다. 각 그래프에서, 가로 좌표는 예시적인 신경망 내 주어진 층들을 나타내고, 세로 좌표는 활성화 밀도(즉, 1-희소성)를 나타낸다. 2개의 일반적으로 사용되는 각 층의 특정 활성화 밀도는 신경망이 훈련될 때 특정 활성화 밀도가 어떻게 변경되는지를 나타낸다. 예를 들면, 40% 밀도의 특정 활성화 밀도는 활성화 값들의 평균 60%가 제로임을 의미한다.
희소 데이터와 관련될 수 있는 어드레스-맵 메타데이터는 수 메가바이트 정도까지 커질 수 있고, 어드레스-맵 데이터에서 제로(0) 값들의 위치들은 기계 학습 모델들의 훈련 동안 빠르게 변할 수 있고, 추적하기 어려울 수 있다. 로직 프로세서로부터 칩 외부에 있는 HBM(100) 내에 이러한 메타데이터를 저장하는 것은 룩업 대기 시간을 증가하고, HBM 메모리 대역폭을 저하할 수 있다. 여기에 개시된 주제는 예를 들면, 탈락되거나 제거될 수 있는 희소 데이터 메모리 라이트들을 검출하기 위하여 사용되고 다른 버스 동작들을 위하여 사용될 수 있는 제로-위치 비트맵을 정적 랜덤 억세스 메모리(SRAM: static random access memory) 내에 컴팩트하게 저장하기 위해 HBM의 DRAM 칩들(105a ~ 105d) 아래에 적층된 버퍼 다이(104) 내에 기능을 제공할 수 있다.
데이터는 영역의 구조(SOA: structure of area) 배열 또는 구조의 영역(AOS: area of structure) 배열로 구성될 수 있다. 예를 들면, 레드(R), 그린(G), 및 블루(B)와 같은 픽셀 데이터는 각각의 픽셀에 대한 RGB 데이터가 메모리의 구성 영역 내에 SOA 배열로 구성될 수 있다. 각각의 픽셀에 대한 동일한 RGB 데이터는 모든 R 데이터가 함께 배열되고, 모든 G 데이터가 함께 배열되고, 모든 B 데이터가 함께 배열되도록 AOS 배열로 구성될 수 있다. 어느 배열에서나, 데이터의 공간적 위치는 유사한 패턴들 또는 값들을 갖는 데이터를 포함할 수 있다. 추가적으로, 심층 학습 응용에서 많은 부동 소수점 데이터는 부동 소수점 값들의 지수 부분에서 데이터 위치를 나타낸다. 즉, 심층 학습 응용에서 사용되는 많은 값들이 -1과 + 1 사이일 수 있다. 데이터의 위치는 HBM 버스 대역폭을 절약하고, HBM의 토글-레이트 동적 전력을 줄이기 위하여 사용될 수 있다.
도 3은 예를 들면, HBM의 출력 드라이버(302)와 예를 들면, GPU의 입력 버퍼(303) 사이의 32비트 데이터 버스(301)의 예를 나타낸다. 제1 전송(304)과 제2 전송(305)은 출력 드라이버(302)로부터 입력 버퍼(303)로 데이터 버스(301)를 통하여 전송되는 것으로서 도시된다. 제1 전송(304)의 내용의 예가 306에 도시된다. 307로 지시된 제1 전송(304)의 비트들은 유사성을 가진다. 이러한 특정 경우에서, 307로 지시된 비트들의 유사성은 모두 동일하다. 다른 실시예에서, 비트들의 유사성은 비트들이 모두 동일하지 않을 수 있고, 소정 범위의 값들 내의 값들을 가지는 것일 수 있다. 또 다른 실시예에서, 유사하다고 판단될 수 있는 비트들의 특정 위치는 307에 의해서 지시된 위치와 다를 수 있다. 제1 전송(304)의 비트들에서 유사성은 HBM 버스 대역폭을 절약하고, HBM의 토글-레이트 동적 전력을 줄이기 위하여 사용될 수 있다.
여기에 개시된 주제는 HBM의 버퍼 다이(104) 내에 여기에 개시된 것처럼 기능을 구현함에 의해서 HBM의 전반적인 성능을 올리기 위하여 데이터 희소성 또는 데이터 유사성의 데이터 특성 모두를 사용하는 HBM 시스템 구조를 제공한다. 여기에 개시된 구조의 하나의 실시예는 희소 데이터의 제로 값들의 위치들을 저장하기 위하여 비트 맵을 사용하고, 특정 희소 라이트가 탈락되거나 제거될 수 있는 호스트 처리 장치의 메모리 제어기로 해당 통신을 전송하여, 다른 동작들을 위하여 사용될 수 있는 버스 사이클들을 절약할 수 있다. 여기에 개시된 구조의 또 다른 실시예는 응용 및 HBM 성능을 상승하기 위하여 연속적인 데이터 라이트들에서 데이터에 나타내는 유사성을 검출하고 데이터 압축 기술 및/또는 로깅(logging)을 사용할 수 있다. 데이터 압축이 사용될 때, 압축된 데이터는 HBM 시스템 구조의 메모리 내에 일련의 블록들로서 압축될 수 있다.
여기에 개시된 HBM 시스템 구조의 일실시예는 데이터 희소성 또는 데이터-값 유사성을 사용하기 위하여 HBM에 물리적으로 가까운 기능들을 구현하며, 이에 따라 명령 및/또는 어드레스 버스 프로토콜에 어떠한 변경없이 메모리-시스템 성능을 상승할 수 있다. 여기에 사용된 용어들 "근접하다" 또는 "근접성"은 여기에 개시된 주제에 따라 HBM의 버퍼 다이(104) 상에 구현된 기능 및/또는 기능성을 지칭한다. 이러한 기능 및/또는 기능성은 또한 코어 어레이들에 영향을 미치지 않고 DRAM 칩 내부 입력/출력(I/O) 주변 회로에 구현될 수 있다. HBM의 버퍼 다이(104)는 GPU와 같은 가속기들 내부에서 달리 구현될 수 없는 SRAM에서 비트맵을 구현할 수 있는 큰 가용 영역을 가질 수 있기 때문에 HBM에 대한 기능의 근접성은 유용성을 제공할 수 있다. 가속기의 SRAM은 매트릭스/텐서 동작들을 가속하기 위하여 사용될 수 있는 귀한 자원일 수 있고, 반면에 예를 들면, HBM의 버퍼 다이(104)의 SRAM은 여기에 설명된 예와 마찬가지로 근접-메모리 가속 기능을 위하여 사용될 수 있다. 여기에 개시된 또 다른 실시예에서, 제로 값 데이터의 어드레스 위치들(메타데이터)은 HBM의 버퍼 다이(104) 상에 위치될 수 있는 큰 어드레스 공간 내에 저장될 수 있다. 데이터 희소성을 검출하고 HBM의 버퍼 다이(104)에 의해서 실행될 수 있는 여기에 개시된 기능 로직은 예를 들면, SRAM 내에 제로 값들의 위치들을 포함하는 비트맵을 콤팩트하게 저장하기 위하여 사용될 수 있고, 이에 따라 희소 메모리 라이트들이 검출되고, 탈락되거나 또는 제거되도록 할 수 있다. 유사하게, 여기에 개시된 기능성은 연속적인 데이터 라이트들 중에 데이터 유사성을 검출하고, 유사한 값들을 압축하기 위하여 구성될 수 있다. 이는 메모리 버스 사이클을 절약할 수 있고, 전체적으로 더 많은 수의 메모리 전송을 제공하기 위하여 사용될 수 있고, 이에 따라, 데이터 대역폭에 민감할 수 있는 GPU에 대한 데이터 대역폭을 증가할 수 있다.
도 4a는 여기에 개시된 주제에 따른 HBM 시스템(400)의 실시예의 블록도를 나타낸다. HBM 시스템(400)은 희소-조밀 제어 엔진(401) 및 메모리(402)를 포함할 수 있다. 일실시예에서, HBM 시스템(400)은 큰 버퍼 다이 영역을 사용할 수 있고, 로직 및 SRAM을 포함할 수 있다. 희소-조밀 제어 엔진(401)는 제로 값들에 대한 데이터의 희소성 및 밀도를 판단하는 기능을 제공할 수 있다. 희소-조밀 제어 엔진(401)은 하드웨어와 소프트웨어의 결합으로서 구현될 수 있고, 모듈로서 언급될 수 있다. 일실시예에서, 메모리(402)는 SRAM일 수 있다. HBM 시스템(400)은 CPU, GPU, 또는 TPU와 같은 호스트 처리 장치(420)과 HBM(430) 사이에 있는 버퍼 다이(410) 상에 위치할 수 있다.
일실시예에서, HBM 시스템(400)은 데이터 라이트 요청에 관련되는 데이터가 희소 데이터 특성을 가지는지를 검출하고, 메시지를 통하여 및/또는 예비 사용(RFU: reserved for future use) 핀을 통하여 호스트 처리 장치(420)의 메모리 제어기(421)로 희소 데이터 특성의 검출에 관련되는 정보를 시그널링 또는 전송하기 위하여 명령/디코드 회로(403)를 사용할 수 있다. 희소 데이터 특성은 데이터가 0과 동일한 소정의 백분율의 값을 포함하는지에 기초할 수 있다.
대안적으로, HBM 시스템(400)은 데이터 라이트 요청과 관련된 데이터가 데이터 유사성 특성을 가지는지 여부를 검출하고, 메시지를 통하여 및/또는 RFU 핀을 통하여 호스트 처리 장치(420)의 메모리 제어기(421)로 데이터 유사성 특성의 검출에 관련되는 정보를 시그널링 또는 전송하기 위하여 명령/디코더 회로(403)를 사용할 수 있다. 데이터-값 유사성의 식별은 자동적으로 결정될 수 있고/있거나 사용자 선택 가능한 공간 값 위치로서 여기에서 지칭되는 데이터 입도(granularity)에 기초할 수 있다. 데이터-값 유사성은 또한 두 데이터 값 사이의 해밍 거리를 측정하고 대응하는 유사성 점수를 할당하는 코딩 기술에 기초할 수 있다.
동작에서, 희소-조밀 제어 엔진(401)은 호스트 처리 장치(420)로부터 데이터 라이트 요청을 수신하고, 라이트 요청에 관련되는 데이터가 희소 데이터 특성을 가지는지를 판단할 수 있다. 즉, 희소-조밀 제어 엔진(401)은 라이트 요청에 관련되는 데이터의 값들의 소정의 백분율 이상이 0과 동일한지를 판단한다. 일실시예에서, 라이트 요청의 데이터가 만일 예를 들면, 데이터의 약 40% 이상이 0과 동일하다면, 희소한 것으로 간주된다. 라이트 요청의 데이터가 희소 데이터로 간주되는 다른 백분율들이 가능할 수 있다. 추가적으로, 데이터 폭의 입도는 희소 엔트리들을 추적하기 위한 메타데이터 오버헤드도 관리하면서 희소한 것으로 간주될 수 있는 엔트리들의 수를 변경하기 위하여 더 미세하게(즉, 4kB 내지 1kB, 1kB 내지 128B, 또는 128B 내지 32B) 또는 더 거칠게 만들어질 수 있다. 입도 변화는 RFU 핀 또는 에러 정정 코드(ECC: error correction code) 핀을 통하여 시그널링될 수 있다.
만일 희소-조밀 제어 엔진(401)이 라이트 데이터가 희소하다고 판단하면, 희소-조밀 제어 엔진(401)은 0과 동일한 데이터의 어드레스들에 관련되는 메타데이터를 메모리(402)에 저장할 수 있다. 희소-조밀 제어 엔진(401)은 HBM(430)으로 데이터 라이트들이 0과 동일한 희소 데이터로 탈락될 수 있는지 또는 제거될 수 있는지를 메모리 제어기(421) 및/또는 HBM(430)과 통신할 수 있다. 데이터 라이트들이 탈락될 수 있다는 통신은 명령/디코드 회로(403)을 통하여 호스트 처리 장치(420)의 메모리 제어기(421)로 전송되어 HBM(430)으로 제로(0) 값 데이터를 라이트하기 위하여 호스트 처리 장치(120)에 의해서 사용될 사이클이 다른 작업들을 위하여 이용될 수 있다. 대안적인 실시예에서, 메모리 제어기(421)는 버퍼 다이(410)와 호스트 처리 장치(420) 사이에서 이용 가능할 수 있는 RFU 핀을 통해 호스트 처리 장치(420)로 시그널링될 수 있다. 부가적으로 또는 대안적으로, HBM(430)은 제로(0) 값 데이터를 HBM(430)에 라이트하는데 사용될 사이클이 다른 작업에 사용될 수 있다는 것을 희소-조밀 제어 엔진(401)에 의해서 시그널링될 수 있다.
각 제로(0) 값의 어드레스는 메모리(402) 내에 직접적으로 로깅될 수 있다. 일부 예들에서, 로깅된 어드레스는 32비트일 수 있다. 다른 예들에서, 어드레스는 32비트 보다 크거나 작을 수 있다. 일실시예에서, 메모리(402)는 로깅된 어드레스들을 저장하는 캐쉬로서 구성될 수 있다. 일실시예에서, 메모리(402)는 로우-버퍼 캐쉬로서 구성될 수 있다. 일실시예에서, 로킹된 어드레스들은 각 비트가 억세스 블록을 나타내는 비트맵을 형성할 수 있다. 이 실시예를 위한 비트맵은 크기를 감소하기 위하여 압축될 수 있다. 압축되면, 비트맵은 호스트 처리 장치(420)의 캐쉬 크기에 기초한 크기를 가지는 캐쉬 라인을 형성할 수 있다. 프리셋 비트들은 정확한 값들을 선택하기 위하여 사용되고 엔코딩은 정확한 크기들로 감소될 수 있다. 예를 들면, 만일 호스트 처리 장치(420)가 8기가바이트(GB)의 메모리 용량 및 128바이트(bytes)의 캐쉬 라인을 가진다면, 비트맵은 64밀리언(M) 엔트리들을 가질 수 있다. 64 메가비트(Mb) 맵은 64M 엔트리들이 8MB 크기임을 나타내는데 사용될 수 있고, 압축 기술에 따라 8MB 크기가 2MB 크기로 압축될 수 있다. 대안적으로, 메타데이터가 억세스 블록 당 2 내지 3 비트와 같은 메모리(402)에 저장될 수 있다. 메모리(201)의 크기는 얼마나 많은 메타데이터 엔트리들이 메모리(201)에 저장될 수 있는지를 설정할 수 있다.
데이터 리드 요청 동안, 비트맵은 비트맵에 저장된 어드레스에 대한 히트 또는 매치가 있는 경우 복원될 수 있다. 복원은 특정 행에 대해 호스트 처리 장치(420)에 의해 ACTIVATE 명령이 전송되자마자 DRAM 행 내부의 모든 열에 대해 추론적으로 진행될 수 있으며, 이에 의해 복원에 대한 최소 대기 시간 오버헤드를 보장한다. 본 명세서에서 사용되는 용어 "추정적으로"는 활성화된 DRAM 행 내의 모든 열의 대응하는 압축 엔트리들이 호스트에 의해 요청된 것으로 가정될 수 있으며, 그에 따라 프로세스를 일찍 시작함으로써 복원 대기 시간을 부분적으로 숨기는 것을 돕고 ACTIVATE 명령 후 tRCD 사이클을 가지고 하나의 특정 열 명령이 발행 될 때까지 대기하지 않을 수 있다. 메타데이터 사용에 기초하여, 리드 액세스는 O(1)의 계산 복잡성을 가질 수 있다.
일실시예에서, 특수-목적 명령어-세트 구조(450)는 여기에 개시된 주제에 따라 HBM 시스템(400)에서 동작을 인스턴트화하고 실행하기 위해 사용될 수 있다. 소프트웨어 드라이버(451) 및 라이브러리(452)를 포함할 수 있는 응용 프로그래밍 인터페이스(API: application programming interface)는 여기에 개시된 기능성을 기존 기계 학습 프레임워크에 투명하게 통합하기 위하여 HBM 시스템(400)에 억세스하는 특수-목적 명령어-세트 구조(450)의 일부로서 제공될 수 있다.
도 5는 여기에 개시된 주제에 따라 라이트 요청과 연관된 데이터가 희소 데이터를 포함하는 경우 데이터 라이트 요청 동작을 도시하는 상대적인 타이밍도(500)이다. 타이밍도(500)는 데이터 라이트 요청 동작 동안 클록 신호(501), CA 버스(502) 및 데이터(DQ) 버스(503)의 상대적인 타이밍을 포함한다. 도 5에 도시 된 CA 버스(502)의 일부는 호스트 처리 장치(420)와 희소 데이터 제어 엔진(401) 사이에 연장되고, 반면에, 도시된 DQ 버스(503)의 일부는 희소 데이터 제어 엔진(401)과 HBM(430) 사이에 연장될 수 있다.
초기에, 호스트 처리 장치(420)는 액티브(ACT) 명령(504)에 이어 라이트 요청(WR) 명령(505)을 전송한다. 이 예에서, 희소-조밀 제어 엔진 (401)은 라이트 데이터가 희박하다고 결정하고, 희소-조밀 제어 엔진 (401)은 비동작(NOP: no-operation)(506)에 의해 표현된 바와 같이 0과 동일한 데이터에 대해 HBM(430)에 데이터 라이트를 탈락하거나 제거할 수 있다. 호스트 처리 장치(420)는 프리차지(PRE) 명령(207)을 전송함으로써 라이트 요청을 계속한다. 일실시예에서, 프리차지는 DRAM 뱅크를 가로지르는 열린 행을 닫고 다음 행 활성화를 위해 뱅크를 준비시킬 수 있다. 보다 구체적으로, 프리차지는 다음 활성화 후에 행 값들을 감지 할 수 있도록 내부 비트 라인 전압들을 Vdd/2로 다시 상승시킬 수 있다. NOP가 실행되는 동안 클럭 사이클과 DQ 버스는 다른 동작에 사용할 수 있습니다. 본 명세서에서 사용되는 바와 같이, "다른 동작"이라는 용어는 자유로운 또는 이용 가능한 사이클을 사용할 수 있는 다른 정규 DRAM 리드, 라이트 및 액티브 명령들을 지칭한다.
도 4b는 여기에 개시된 주제에 따른 HBM 시스템(400')의 다른 예시적인 실시예의 블록도를 도시한다. 도 4A에 도시된 HBM 시스템(400)과 유사하게, HBM 시스템(400')은 CPU, GPU, 또는 TPU와 같은 호스트 처리 장치(420)와 HBM(430) 사이의 버퍼 다이(410) 상에 위치될 수 있다. HBM 시스템(400')는 희소-조밀 제어 엔진(401) 및 메모리(402)를 포함할 수 있다. 일실시예에서, 메모리(402)는 SRAM일 수 있다. 일실시예에서, HBM 시스템(400')은 ECC 엔진(404)을 사용하여 희소 데이터 특성의 검출 또는 데이터 유사성 특성의 검출과 관련된 정보를 호스트 처리 장치(420)의 메모리 제어기(421)로 시그널링하거나 통신할 수 있다. ECC 기능은 전형적으로 심층 신경망의 훈련 동안 사용되지 않을 수 있으므로, ECC 엔진(404)과 관련된 통신 경로는 데이터 라이트 동작이 탈락되거나 제거될 수 있고, 메모리 사이클이 다른 동작을 위해 사용될 수 있도록 시그널링하거나 또는 통신하도록 재구성될 수 있다.
HBM 시스템(401')의 동작은 도 4A에 도시된 HBM 시스템(400)의 동작과 유사하다. 희소-조밀 제어 엔진(401)은 호스트 처리 장치(420)로부터 데이터 라이트 요청을 수신하고, 라이트 요청과 관련되는 데이터가 희소 데이터인지를 판단한다. 즉, 희소-조밀 제어 엔진(401)은 라이트 요청과 관련되는 데이터의 값들의 소정 백분율 이상이 0인지를 판단한다. 일실시예에서, 라이트 요청의 데이터는 예를 들면, 만일 데이터의 약 40% 이상이 0이면 희소한 것으로 간주된다. 만일 희소-조밀 제어 엔진(401)이 라이트 데이터가 희소한 것으로 판단하면, 희소-조밀 제어 엔진(401)은 0과 동일한 데이터의 어드레스들에 관련되는 메모리(402)에 메타데이터를 저장할 수 있다. 희소-조밀 제어 엔진(401)은 이 후 0과 동일한 데이터에 대해 HBM(430)에 데이터 라이트들을 탈락하거나 제거하고, HBM(430)으로 제로(0) 값 데이터를 라이트하기 위하여 사용되는 사이클이 다른 동작을 위하여 사용되도록 하는 것이 가능하다는 것을 ECC 회로(404)를 통하여 호스트 처리 장치(420)의 메모리 제어기(421)로 신호를 전송할 수 있다. 대안적인 실시예에서, 메모리 제어기(421)는 버퍼 다이(410)와 호스트 처리 장치(420) 사이에 이용할 수 있는 RFU 핀을 통하여 시그널링할 수 있다.
HBM 시스템(400)과 HBM 시스템(401') 모두를 위해, 데이터 리드 요청은 HBM(430) 및 메모리(402)에 대한 병렬 또는 측 대역 룩업을 포함할 수 있다. 데이터 리드와 관련된 작은 대기 시간이 있을 수 있으나, 이러한 대기 시간은 호스트 처리 장치(420)에 악영향을 미치지 않을 수 있다. 전체 행에 대응하는 맵 엔트리들은 HBM 레지스터로 페치될 수 있다. 열 액세스가 먼저 메모리(402)에서 조회될 수 있고, 일치하는 것이 있으면, 희소 데이터는 메모리(402)와 희소-조밀 제어 엔진(401) 사이의 희소 데이터 버스를 통해 리턴될 수 있다. 일치하는 것이 없으면, 요청된 데이터는 HBM(430)과 희소-조밀 제어 엔진(401) 사이의 DQ 버스를 통해 메모리(402)에 저장된 데이터와 일치하는 경우 추가 대기 시간을 가지고 리턴된다. 측 대역 룩업은 어드레스에 대한 해당하는 메타데이터를 요청한다. 메타데이터는 억세스가 "희소(sparse)"또는 "조밀 (dense)" 억세스인지를 결정하기 위해 병렬로 사용될 수 있으며, 여기서 주요 동기는 HBM(430)에서 0 값을 리드하는 것을 제거하는 것일 수 있다. 억세스가 희소 억세스로 판단되면 리드 명령이 발행되지 않고 사이클이 해제(freed)됩니다. 억세스가 조밀 억세스로 판단되면 리드 명령이 발생되고 "조밀" 데이터가 HBM(430)으로부터 리드된다. ECC/DQ 버스의 리턴 경로는 희소/조밀 억세스에 따라 달라질 수 있습니다. ECC 경로는 값이 0이라는 제어 정보를 제공할 수 있다. ECC 경로에 대한 제어 정보가 값이 0이 아님을 나타내는 경우, 규칙적인 리드 명령이 발행되고 리드 데이터가 DQ 버스로 리턴될 수 있다. ECC 경로가 희소/조밀 억세스를 위하여 사용되는 경우, HBM은 ECC 기능을 구현할 수 있으므로 리드 값들이 버퍼 다이까지 에러로부터 보호 될 수 있습니다. 그러나, DRAM으로부터 호스트로의 데이터 전송에는 에러가 있을 수 있다. 예를 들어 호스트에서 구현되는 CRC (Cyclic Redundancy Check)는 이러한 종류의 에러를 수정하고 검출할 수 있다. 해제된(freed) ECC 핀은 리드 데이터가 희소한지 (DRAM 액티브 명령 동안) 탐지하기 위해 전술한 메커니즘에서 사용될 수 있다. 데이터가 희소한 경우, 리드 명령이 발행되지 않고 프리차지 명령으로 행이 닫힐 수 있다.
HBM 시스템의 대안적인 예시적인 실시예는 도 4A 또는 도 4B에 도시된 구성을 가질 수 있고, 연속적인 데이터 라이트 요청들 사이에 데이터-값 유사성을 검출할 수 있다. 이 대안적인 예시적인 실시예는 데이터 라이트 억세스들의 폭을 감소시키고 HBM(430)의 내부 및 외부의 다른 동작을 위해 이용가능한 버스폭을 만들어 어플리케이션 성능을 향상시키기 위해 유사성 데이터를 압축 및/또는 기록할 수 있다. 데이터-값 유사성 및 공간 값 위치는 버퍼 다이(410)에서 메모리 대역폭 압축이 수행되는 것을 도울 수 있다. 검출된 데이터 유사성을 기록하는데 사용될 수 있는 메타데이터가 생성될 수 있다. 데이터-값 유사성의 식별은 데이터 입도에 기초할 수 있으며, 이는 자동적으로 결정 및/또는 사용자 선택 가능할 수 있다. 데이터-값 유사성은 또한 두 데이터 값 사이의 해밍 거리를 측정하고 대응하는 유사성 점수를 할당하는 코딩 기술에 기초할 수 있다. ECC 핀 및/또는 RFU 핀과 같은 여분의 핀은 이용가능한 버스폭을 외부 호스트 처리 장치(420) 및/또는 HBM(430) 모두에 시그널링하기 위해 사용될 수 있다.
희소-조밀 제어 엔진(401)은 연속적인 데이터 기록 요청의 데이터를 추적하고 임의의 적절한 엔코딩 기술을 사용하여 데이터-값 유사성을 나타내는 데이터를 엔코딩하도록 구성될 수 있다. 엔코딩된 데이터 및/또는 엔코딩된 데이터와 연관된 메타데이터는 메모리(402)에 저장될 수 있다. 데이터 리드 요청들은 메모리(402) 및 HBM(430) 모두에 대한 병렬 룩업을 이용할 수 있다. 메모리(402)에 저장된 메타데이터에서 일치가 발생하면 엔코딩된 데이터는 디코딩되어 호스트 처리 장치(420)로 리턴될 수 있다. 메타데이터의 크기는 사용된 엔코딩 기술에 따라 엔트리 마다 변할 수 있고 메모리(402)의 캐쉬 크기에 맞도록 변경될 수 있다. 또한, 메타데이터의 크기는 호스트 처리 장치(420)의 캐시 크기/섹터의 함수일 수 있다. 일실시예에서, 메모리 제어기 (421)는 이전 값들을 추적하고 데이터 폭을 감소시키기 위해 엔코딩 방식을 선택할 수 있다. 일실시예에서, 메타 데이터의 크기는 백그라운드 프로세스로서 및/또는 HBM(430)의 리프레시 동작 동안 상이한 엔코딩 방식으로 동적으로 변경될 수 있다. 디코딩 프로세스는 엔코딩 프로세스에서 사용되는 코딩 방식, 특수 최적화 비트, 유사한 값들의 수 등을 산출할 수 있다.
도 6은 본 명세서에 개시된 주제에 따라 연속적인 라이트 요청들과 연관된 데이터가 데이터-값 유사성을 갖는 경우 데이터 라이트 요청 동작을 도시하는 상대적인 타이밍도(600)이다. 타이밍도(600)은 클럭 신호(601), CA 버스(602) 및 DQ 버스(603)의 상대적인 타이밍을 포함한다.
2 개의 연속적인 데이터 라이트 요청들(604 및 605) 중 첫 번째에 대해, 호스트 처리 장치(420)는 제1 액티브(ACT1) 명령(606), 제1 라이트 요청(WR1) 명령(607) 및 프리차지(PRE) 명령을 전송한다. 608에 이어, 제2 액티브(ACT2) 명령(609), 제2 라이트 요청(WR2) 명령(610) 및 프리차지(PRE) 명령(611)이 뒤 따른다. 이 예에서, 희소-조밀 제어 엔진(401)은 두 개의 라이트 요청들(604 및 605)의 데이터 (612 및 613)가 데이터-값 유사성 특징들을 가지면, 희소-밀도 제어 엔진(401)은 유사한 데이터를 엔코딩하고, 엔코딩된 데이터 및 엔코딩된 데이터에 대한 메타데이터를 메모리(402)에 저장하고, 일반적인 DRAM 억세스에 사용되는 리드, 라이트 및 액티브 명령들과 같은 다른 동작들에 사용될 수 있는 버스폭 가용성이 있는지를 시그널링한다(미도시). 이들 동작들이 해제된 슬롯에서 스케줄링됨에 따라, 전체 대역폭 효율이 개선될 수 있고 처리량이 개선될 수 있다.
도 7은 본 명세서에 개시된 주제에 따른 쓰기 요청과 연관된 데이터가 희소 데이터 또는 데이터-값 유사성인 경우 데이터 라이트 요청 동작에 응답하여 HBM의 전체 성능을 향상시키는 방법의 예시적인 실시예의 흐름도(700)이다. 701에서, 데이터 라이트 요청은 HBM(430) 외부에 있는 도 4A의 호스트 처리 장치(420)와 같은 프로세서로부터 도 4A의 희소-조밀 제어 엔진(401)과 같은 HBM(430)의 제어기에 의해 수신된다. 702에서, 엔트리는 도 4A의 메모리(402)와 같은 메모리에 저장되고, 희소 데이터 또는 데이터-값 유사성을 포함하는 데이터 라이트 요청의 데이터에 기초하여 데이터 라이트 요청의 데이터의 적어도 하나의 어드레스를 나타낸다. 703에서, 희소 데이터 또는 데이터-값 유사성을 포함하는 데이터 라이트 요청의 데이터에 기초하여 데이터 라이트 요청의 사이클 시간 동안 데이터 버스가 동작을 위해 이용가능하다는 표시가 생성된다.
당업자에 의해 인식 될 바와 같이, 본 명세서에 설명 된 혁신적인 개념은 광범위한 응용에 걸쳐 수정 및 변경될 수 있다. 따라서, 청구된 주제의 범위는 상기 논의된 특정 예시적인 교시 중 하나로 제한되지 않아야 하며, 대신에 다음의 청구 범위에 의해 정의된다.
100, 200: 시스템 110: 호스트
120: 코-프로세서 130: 저장 장치
131: 제어기 132: 호스트 인터페이스 로직
135: 메모리 장치

Claims (20)

  1. 메모리;
    프로세서로부터 고대역폭 메모리(HBM: high bandwidth memory)로 데이터를 전송하도록 구성된 데이터 버스; 및
    상기 프로세서로부터 데이터 라이트 요청을 수신하는 제어기를 포함하고,
    상기 제어기는,
    상기 데이터 라이트 요청의 데이터가 희소 데이터(sparse data)를 포함한다고 결정하고,
    상기 희소 데이터를 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여, 상기 메모리에 상기 데이터 라이트 요청의 데이터에 대한 메타데이터를 포함하는 엔트리를 저장하고,
    상기 희소 데이터를 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여, 상기 데이터 버스가 상기 프로세서에 의한 동작에 이용가능하다는 지시(indication)를 생성하고,
    상기 지시를 상기 프로세서에 전달하는 것을 특징으로 하는 장치.
  2. 제1항에 있어서,
    상기 희소 데이터는 상기 데이터 라이트 요청의 0과 동일한 데이터 값들에 대한 백분율을 포함하고,
    상기 0과 동일한 데이터 값들에 대한 백분율은 데이터 입도(granularity)에 기초하는 것을 특징으로 하는 장치.
  3. 제1항에 있어서,
    상기 엔트리는 제1 엔트리이고,
    상기 메타데이터는 제1 메타데이터이고,
    데이터 입도의 크기에 기초한 유사성의 양인 데이터-값 유사성을 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여, 상기 제어기는 상기 메모리에 제2 엔트리를 더 저장하고,
    상기 제2 엔트리는 상기 데이터 라이트 요청의 데이터에 대한 제2 메타데이터를 포함하는 것을 특징으로 하는 장치.
  4. 제1항에 있어서,
    상기 제어기는 상기 HBM에 대한 리드 액세스를 위해 상기 프로세서로부터 데이터 리드 요청을 추가로 수신하고,
    상기 제어기는 상기 데이터 리드 요청에 대응하는 어드레스가 상기 메모리에 엔트리로서 저장되도록 결정하는 것을 특징으로 하는 장치.
  5. 제4항에 있어서,
    상기 제어기는 측대역(sideband) 액세스, 병렬 메모리 룩업 및 HBM 룩업을 더 수행하는 것을 특징으로 하는 장치.
  6. 제3항에 있어서,
    상기 제2 엔트리는 상기 데이터 라이트 요청의 데이터의 상기 데이터-값 유사성에 관한 정보를 포함하고,
    상기 제어기는 데이터 폭(data width)을 줄이기 위해 상기 제2 엔트리를 추가로 압축하는 것을 특징으로 하는 장치.
  7. 제1항에 있어서,
    상기 제어기는 상기 메모리 내의 일련의 블록들로서 상기 메타데이터를 추가로 압축하는 것을 특징으로 하는 장치.
  8. 프로세서;
    고대역폭 메모리(HBM: high bandwidth memory);
    상기 프로세서로부터 상기 HBM으로 데이터를 전송하도록 구성된 데이터 버스; 및
    메모리를 포함하는 제어기를 포함하고,
    상기 제어기는,
    상기 프로세서로부터 데이터 라이트 요청을 수신하고,
    상기 데이터 라이트 요청의 데이터가 희소 데이터(sparse data)를 포함한다고 결정하고,
    상기 희소 데이터를 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여, 상기 제어기의 상기 메모리에 상기 데이터 라이트 요청의 데이터에 대한 메타데이터를 포함하는 엔트리를 저장하고,
    상기 희소 데이터를 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여, 상기 데이터 버스가 상기 프로세서에 의한 연산에 이용가능하다는 지시(indication)를 생성하고,
    상기 지시를 상기 프로세서에 전달하는 것을 특징으로 하는 시스템.
  9. 제8항에 있어서,
    상기 희소 데이터는 상기 데이터 라이트 요청의 데이터에서 0과 동일한 데이터 값에 대한 백분율을 포함하고,
    상기 희소 데이터의 상기 0과 동일한 데이터 값의 백분율은 데이터 입도(granularity)에 기초하는 것을 특징으로 하는 시스템.
  10. 제8항에 있어서,
    상기 엔트리는 제1 엔트리이고,
    상기 메타데이터는 제1 메타데이터이며,
    상기 제어기는,
    데이터-값 유사성을 더 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여, 상기 제어기의 상기 메모리에 상기 데이터 라이트 요청의 데이터에 대한 제2 메타 데이터를 포함하는 제2 엔트리를 저장하고,
    상기 데이터-값 유사성을 더 포함하는 상기 데이터 라이트 요청에 기초하여, 상기 데이터 버스가 동작에 이용 가능하다는 지시(indication)를 생성하고,
    상기 데이터 라이트 요청의 데이터는 공간 값 위치(spatial value locality)의 양을 포함하고,
    상기 데이터-값 유사성의 상기 공간 값 위치의 양은 데이터 입도에 기초하는 것을 특징으로 하는 시스템.
  11. 제8항에 있어서,
    상기 제어기는 상기 HBM에 대한 리드 액세스를 위해 상기 프로세서로부터 데이터 리드 요청을 추가로 수신하고,
    상기 제어기는 상기 데이터 리드 요청에 대응하는 어드레스가 상기 메모리에 엔트리로서 저장되도록 결정하는 것을 특징으로 하는 시스템.
  12. 제11항에 있어서,
    상기 제어기는 측대역(sideband) 액세스, 병렬 메모리 룩업 및 HBM 룩업을 더 수행하는 것을 특징으로 하는 시스템.
  13. 제8항에 있어서,
    상기 엔트리는 상기 데이터 라이트 요청의 데이터의 데이터-값 유사성에 관한 정보를 더 포함하고,
    상기 제어기는 데이터 폭(data width)을 줄이기 위해 상기 엔트리를 추가로 압축하는 것을 특징으로 하는 시스템.
  14. 제8항에 있어서,
    상기 제어기는 상기 메모리 내의 일련의 블록들로서 상기 메타데이터를 추가로 압축하는 것을 특징으로 하는 시스템.
  15. 고대역폭 메모리(HBM: high bandwidth memory)의 제어기에서, 프로세서로부터 데이터 라이트 요청을 수신하는 단계;
    상기 제어기가 상기 데이터 라이트 요청의 데이터가 희소 데이터(sparse data)를 포함한다고 결정하는 단계;
    상기 제어기가 상기 희소 데이터를 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여, 상기 제어기의 메모리에 상기 데이터 라이트 요청의 데이터에 대한 메타데이터를 포함하는 엔트리를 저장하는 단계;
    상기 제어기가 상기 희소 데이터를 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여, 데이터 버스가 상기 프로세서에 의한 동작을 위해 이용가능하다는 지시(indication)를 생성하는 단계; 및
    상기 지시를 상기 프로세서에 전달하는 단계를 포함하고,
    상기 HBM은 상기 프로세서로부터 상기 HBM으로 데이터를 전송하도록 구성된 상기 데이터 버스를 포함하는 것을 특징으로 하는 방법.
  16. 제15항에 있어서,
    상기 엔트리는 제1 엔트리이고,
    상기 메타데이터는 제1 메타데이터이고,
    상기 희소 데이터는 상기 데이터 라이트 요청의 데이터에서 0과 동일한 데이터 값들에 대한 백분율을 포함하고,
    상기 데이터 라이트 요청의 데이터는 공간 값 위치(spatial value locality)의 양을 포함하고,
    상기 지시는 공간 값 위치의 양을 포함하는 상기 데이터 라이트 요청의 데이터에 기초하고,
    상기 방법은,
    상기 제어기가 상기 공간 값 위치의 양을 더 포함하는 상기 데이터 라이트 요청에 기초하여, 상기 데이터 버스가 이용 가능하다는 상기 지시를 생성하는 단계;
    상기 제어기가 데이터-값 유사성을 더 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여, 상기 제어기의 상기 메모리에 상기 데이터 라이트 요청의 데이터에 대한 제2 메타데이터를 포함하는 제2 엔트리를 저장하는 단계; 및
    상기 제어기가 상기 데이터-값 유사성을 더 포함하는 상기 데이터 라이트 요청의 데이터에 기초하여, 상기 데이터 버스가 동작을 위해 이용가능하다는 지시를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 제15항에 있어서,
    상기 데이터 라이트 요청의 데이터는 상기 데이터 라이트 요청의 데이터에서 0과 동일한 데이터 값에 대한 백분율을 포함하고,
    상기 지시는 상기 데이터 라이트 요청의 데이터에서 0과 동일한 데이터 값에 대한 백분율을 포함하는 상기 데이터 라이트 요청의 데이터에 기초하고,
    상기 방법은,
    상기 희소 데이터를 더 포함하는 상기 데이터 라이트 요청에 기초하여, 상기 데이터 버스가 동작을 위해 이용 가능하다는 지시를 생성하는 단계를 더 포함하고,
    상기 희소 데이터의 상기 0과 동일한 데이터 값에 대한 백분율은 데이터 입도(granularity)를 기초로 하는 것을 특징으로 하는 방법.
  18. 제15항에 있어서,
    상기 HBM에 대한 리드 액세스를 위해 상기 프로세서로부터 데이터 리드 요청을 수신하는 단계;
    상기 데이터 리드 요청에 대응하는 어드레스가 상기 메모리에 엔트리로서 저장되도록 결정하는 단계; 및
    상기 메모리에 엔트리로서 저장되는 상기 데이터 리드 요청에 대응되는 어드레스를 기초로 측대역(sideband) 액세스, 병렬 메모리 룩업 및 HBM 룩업을 수행하는 단계를 포함하는 방법.
  19. 제16항에 있어서,
    상기 제2 엔트리는 상기 데이터 라이트 요청의 데이터의 상기 데이터-값 유사성에 관한 정보를 포함하고,
    상기 방법은 데이터 폭(data width)을 줄이기 위해 상기 제2 엔트리를 압축하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  20. 제15항에 있어서,
    상기 메모리 내의 일련의 블록들로서 상기 메타데이터를 추가로 압축하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1020200014622A 2019-05-01 2020-02-07 고대역폭 메모리 및 시스템 KR102602695B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962841815P 2019-05-01 2019-05-01
US62/841,815 2019-05-01
US16/569,657 2019-09-12
US16/569,657 US11436165B2 (en) 2019-05-01 2019-09-12 High bandwidth memory system

Publications (2)

Publication Number Publication Date
KR20200127848A KR20200127848A (ko) 2020-11-11
KR102602695B1 true KR102602695B1 (ko) 2023-11-16

Family

ID=73016494

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200014622A KR102602695B1 (ko) 2019-05-01 2020-02-07 고대역폭 메모리 및 시스템

Country Status (4)

Country Link
US (2) US11436165B2 (ko)
KR (1) KR102602695B1 (ko)
CN (1) CN111881071A (ko)
TW (1) TWI833945B (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050141501A1 (en) 1999-03-17 2005-06-30 Broadcom Corporation Network switch having a programmable counter
US20180101742A1 (en) 2016-10-07 2018-04-12 Noblis, Inc. Face recognition and image search system using sparse feature vectors, compact binary vectors, and sub-linear search
US20180189234A1 (en) 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data
US20190065902A1 (en) 2017-08-31 2019-02-28 Fujitsu Limited Information processing device, information processing method, and program
US20190095339A1 (en) 2017-09-27 2019-03-28 Apple Inc. System control using sparse data
US10387384B1 (en) 2015-09-30 2019-08-20 EMC IP Holding Company LLC Method and system for semantic metadata compression in a two-tier storage system using copy-on-write

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4757396A (en) * 1985-07-12 1988-07-12 Fujitsu Limited Magnetic tape system with command prefetch means
KR950014862B1 (ko) * 1992-02-08 1995-12-16 삼성전자주식회사 움직임추정방법 및 그 장치
US5793992A (en) * 1996-06-13 1998-08-11 Vlsi Technology, Inc. Method and apparatus for arbitrating access to main memory of a computer system
JPH10340128A (ja) * 1997-06-10 1998-12-22 Hitachi Ltd データ処理装置及び移動体通信端末装置
CN100435123C (zh) * 2005-07-19 2008-11-19 威盛电子股份有限公司 用于稀疏线写操作的装置和方法
US8402203B2 (en) * 2009-12-31 2013-03-19 Seagate Technology Llc Systems and methods for storing data in a multi-level cell solid state storage device
US9223511B2 (en) * 2011-04-08 2015-12-29 Micron Technology, Inc. Data deduplication
US20130174176A1 (en) * 2012-01-04 2013-07-04 Infinidat Ltd. Workload management in a data storage system
US9575661B2 (en) * 2014-08-19 2017-02-21 Samsung Electronics Co., Ltd. Nonvolatile memory systems configured to use deduplication and methods of controlling the same
US9870157B2 (en) * 2015-03-31 2018-01-16 Toshiba Memory Corporation Command balancing and interleaving for write and reads between front end and back end of solid state drive
CN105912476A (zh) * 2016-04-06 2016-08-31 中国科学院计算技术研究所 片上重复寻址的方法及装置
CN105843775B (zh) * 2016-04-06 2018-12-04 中国科学院计算技术研究所 片上数据划分读写方法、系统及其装置
US10162554B2 (en) * 2016-08-03 2018-12-25 Samsung Electronics Co., Ltd. System and method for controlling a programmable deduplication ratio for a memory system
US10387037B2 (en) * 2016-12-31 2019-08-20 Intel Corporation Microarchitecture enabling enhanced parallelism for sparse linear algebra operations having write-to-read dependencies
US10186011B2 (en) 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050141501A1 (en) 1999-03-17 2005-06-30 Broadcom Corporation Network switch having a programmable counter
US10387384B1 (en) 2015-09-30 2019-08-20 EMC IP Holding Company LLC Method and system for semantic metadata compression in a two-tier storage system using copy-on-write
US20180101742A1 (en) 2016-10-07 2018-04-12 Noblis, Inc. Face recognition and image search system using sparse feature vectors, compact binary vectors, and sub-linear search
US20180189234A1 (en) 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data
US20190065902A1 (en) 2017-08-31 2019-02-28 Fujitsu Limited Information processing device, information processing method, and program
US20190095339A1 (en) 2017-09-27 2019-03-28 Apple Inc. System control using sparse data

Also Published As

Publication number Publication date
TWI833945B (zh) 2024-03-01
TW202046125A (zh) 2020-12-16
CN111881071A (zh) 2020-11-03
KR20200127848A (ko) 2020-11-11
US20220414030A1 (en) 2022-12-29
JP2020184338A (ja) 2020-11-12
US11436165B2 (en) 2022-09-06
US20200349093A1 (en) 2020-11-05

Similar Documents

Publication Publication Date Title
KR102435181B1 (ko) 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US11043259B2 (en) System and method for in-memory compute
KR102273153B1 (ko) 우선순위 기반의 ecc에 기초하여 데이터를 근사적 메모리 장치에 저장하는 메모리 컨트롤러, 프로그램 코드를 저장하는 비일시적 컴퓨터 판독 가능한 매체, 그리고 근사적 메모리 장치와 메모리 컨트롤러를 포함하는 전자 장치
US8873329B1 (en) Patterned memory page activation
US10838653B2 (en) Electronic device and operating method thereof
JP2021086611A (ja) エネルギー効率の良いコンピュートニアメモリバイナリニューラルネットワーク回路
US20200073804A1 (en) Nonvolatile memory device, data storage device including the same and operating method thereof
KR20180119584A (ko) 메모리 시스템들을 위한 전력 절약 기법들
EP3843099A1 (en) Energy efficient memory array with optimized burst read and write data access, and scheme for reading and writing data from/to rearranged memory subarray where unused metadata is stored in a sparsity map
US11688453B2 (en) Memory device, memory system and operating method
KR20210122942A (ko) 메모리 장치 및 그것의 테스트 방법
TW202125521A (zh) 記憶體裝置、記憶體裝置的操作方法以及記憶體系統
EP3506121A1 (en) Method and apparatus to efficiently perform filtering operations in an in-memory relational database
KR102602695B1 (ko) 고대역폭 메모리 및 시스템
CN115428079A (zh) 用于介接存储器上型式匹配的设备和方法
WO2022155798A1 (en) Memory priming and initialization systems and methods
US11194512B2 (en) Data storage device which selectively performs a cache read or a normal read operation depending on work load and operating method thereof
US11907064B2 (en) Memory controller and memory system including the same
US20230195327A1 (en) Memory system and method of operating the same
US20240144988A1 (en) Memory device, memory system including memory device, and method of operating memory device
US20230251935A1 (en) Storage device for storing model checkpoints of recommendation deep-learning models
US20240096391A1 (en) Memory devices and methods thereof for managing row hammer events therein
CN116089943A (zh) 存储器控制器和包括该存储器控制器的存储器系统
KR20240074701A (ko) 메모리 시스템 제어기, 메모리 및 그 동작 방법, 및 전자 디바이스
KR20230115012A (ko) 메모리 장치

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right